/* UP2U Booking — テーマのCSS変数があれば継承、なければフォールバック */
.up2u-bk{
  --bk-ink:var(--c-ink,#2b2a28);
  --bk-sub:var(--c-sub,#6f6b64);
  --bk-line:var(--c-line,#dedad2);
  --bk-accent:var(--c-accent,#a9885a);
  --bk-bg:var(--c-bg,#faf9f6);
  --bk-blue:#3f6fb5; /* △（一部空き）の色 */
  max-width:760px;margin:0 auto;color:var(--bk-ink);
}

/* 740px以上：本文カラムの制限を抜けて、ゆったりした幅で表示 */
@media (min-width:740px){
  .up2u-bk{
    width:min(920px,88vw);
    max-width:none;
    margin-left:50%;
    transform:translateX(-50%);
  }
  /* カレンダーは最大700px・文字16px */
  .up2u-bk__cal,
  .up2u-bk__legend{max-width:700px;margin-left:auto;margin-right:auto}
  .up2u-bk__table .num{font-size:16px}
  .up2u-bk__table .mk{font-size:16px}
  .up2u-bk__table th{font-size:13px}
  .up2u-bk__table td{height:72px}
}

/* legend */
.up2u-bk__legend{
  display:flex;flex-wrap:wrap;gap:8px 22px;
  font-size:12.5px;color:var(--bk-sub);margin-bottom:22px;
}
.up2u-bk__legend .mk{
  display:inline-block;width:1.4em;text-align:center;margin-right:4px;
  font-style:normal;color:var(--bk-accent);
}
.up2u-bk__legend .mk-o::before{content:"〇"}
.up2u-bk__legend .mk-d::before{content:"△";color:var(--bk-blue)}
.up2u-bk__legend .mk-x::before{content:"×";color:var(--bk-sub)}
.up2u-bk__legend .mk-c::before{content:"休";color:var(--bk-sub)}
.up2u-bk__legend .mk-s::before{content:"🍪"}
.up2u-bk__adminnote{flex-basis:100%;color:var(--bk-accent);font-size:12px}

/* nav */
.up2u-bk__nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.up2u-bk__ym{font-family:var(--f-serif,serif);font-size:20px;letter-spacing:.12em}
.up2u-bk__prev,.up2u-bk__next{
  width:42px;height:42px;border:1px solid var(--bk-line);border-radius:999px;
  background:none;cursor:pointer;font-size:16px;color:var(--bk-ink);
  transition:all .3s ease;
}
.up2u-bk__prev:hover:not(:disabled),.up2u-bk__next:hover:not(:disabled){
  background:var(--bk-ink);border-color:var(--bk-ink);color:#fff;
}
.up2u-bk__prev:disabled,.up2u-bk__next:disabled{opacity:.3;cursor:default}

/* calendar */
.up2u-bk__table{width:100%;border-collapse:collapse;table-layout:fixed}
.up2u-bk__table th{
  font-weight:400;font-size:12px;letter-spacing:.14em;color:var(--bk-sub);
  padding:8px 0;border-bottom:1px solid var(--bk-line);
}
.up2u-bk__table th:first-child{color:#c0665a}
.up2u-bk__table th:last-child{color:#5a7ec0}
.up2u-bk__table td{border-bottom:1px solid var(--bk-line);padding:0;height:64px;vertical-align:top}
.up2u-bk__table td.empty{background:transparent}
.up2u-bk__table .cell,
.up2u-bk__table button{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  width:100%;height:100%;padding:6px 0;
}
.up2u-bk__table button{
  background:none;border:0;cursor:pointer;color:inherit;font:inherit;
  transition:background .25s ease;
}
.up2u-bk__table button:hover{background:#f3f1ec}
.up2u-bk__table .num{font-family:var(--f-en,sans-serif);font-size:13px;letter-spacing:.06em}
.up2u-bk__table .mk{font-size:15px;line-height:1}
.up2u-bk__table td.mk-o .mk{color:var(--bk-accent)}
.up2u-bk__table td.mk-d .mk{color:var(--bk-blue)}
.up2u-bk__table td.mk-x .mk,
.up2u-bk__table td.mk-closed .mk{color:var(--bk-sub);opacity:.7}
.up2u-bk__table td.mk-past{opacity:.3}
.up2u-bk__table td.mk-closed .num,
.up2u-bk__table td.mk-x .num{color:var(--bk-sub)}
/* 焼き菓子販売日 */
/* 記号を横に並べられるように */
.up2u-bk__table .mk{display:inline-flex;align-items:center;gap:4px}
.up2u-bk__table .mk-sub{font-size:12px;line-height:1}
/* 管理者向け：予約できる焼き菓子日 */
.up2u-bk__table td.is-sweetsday{background:#fdf8ef}
.up2u-bk__table td.mk-sweets{background:#fdf8ef}
.up2u-bk__table td.mk-sweets .mk{font-size:16px;opacity:1}
.up2u-bk__table td.mk-sweets .num{color:var(--bk-sub)}
.up2u-bk__loading{margin-top:14px;font-size:13px;color:var(--bk-sub)}

/* panel */
.up2u-bk__panel{
  margin-top:44px;padding:34px 30px;background:#f3f1ec;border-radius:2px;
}
.up2u-bk__date{
  font-family:var(--f-serif,serif);font-weight:500;font-size:19px;
  letter-spacing:.12em;margin-bottom:20px;
}
.up2u-bk__times{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}
.up2u-bk__times label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--bk-sub)}
.up2u-bk__times select{
  min-width:110px;padding:10px 12px;font-size:15px;
  border:1px solid var(--bk-line);border-radius:2px;background:#fff;color:var(--bk-ink);
}
/* セレクトの矢印（右側に余白をとるため、独自の矢印に置き換え） */
.up2u-bk__times select,
.up2u-ct__form select{
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  padding-right:44px;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 L6 6.5 L11 1.5' fill='none' stroke='%236f6b64' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 18px center;
  background-size:12px 8px;
}
.up2u-bk__times select::-ms-expand,
.up2u-ct__form select::-ms-expand{display:none}

.up2u-bk__times .tilde{padding-bottom:12px;color:var(--bk-sub)}
.up2u-bk__note{font-size:12px;color:var(--bk-sub);margin-top:10px}

/* plans */
.up2u-bk__plans{border:0;padding:0;margin:0 0 26px}
.up2u-bk__plans legend{padding:0;margin-bottom:12px;font-size:12.5px;color:var(--bk-sub)}

.up2u-bk__taxnote{margin-left:10px;font-size:11px;color:var(--bk-sub)}
.up2u-bk__plan{display:block;margin-bottom:8px;cursor:pointer}
.up2u-bk__plan input{position:absolute;opacity:0;width:0;height:0}
.up2u-bk__plan-body{
  display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;
  padding:14px 18px;background:#fff;border:1px solid var(--bk-line);border-radius:2px;
  transition:border-color .3s ease,box-shadow .3s ease;
}
.up2u-bk__plan-body .en{
  font-family:var(--f-en,sans-serif);font-size:14px;font-weight:500;letter-spacing:.14em;
  min-width:106px;
}
.up2u-bk__plan-body .ja{flex:1;font-size:12.5px;color:var(--bk-sub)}
.up2u-bk__plan-body .cap{
  display:inline-block;margin-left:8px;padding:1px 8px;
  font-size:10.5px;letter-spacing:.02em;color:var(--bk-sub);
  border:1px solid var(--bk-line);border-radius:999px;white-space:nowrap;
}
.up2u-bk__plan-body .rate{
  font-family:var(--f-en,sans-serif);font-size:14px;letter-spacing:.04em;white-space:nowrap;
}
.up2u-bk__plan input:checked + .up2u-bk__plan-body{
  border-color:var(--bk-accent);box-shadow:inset 0 0 0 1px var(--bk-accent);
}
.up2u-bk__plan input:focus-visible + .up2u-bk__plan-body{outline:2px solid var(--bk-accent);outline-offset:2px}

/* student discount */
.up2u-bk__student{
  display:flex;gap:12px;align-items:flex-start;cursor:pointer;
  margin-top:18px;padding:16px 18px;
  background:#fff;border:1px solid var(--bk-line);border-radius:2px;
  transition:border-color .3s ease,box-shadow .3s ease;
}
.up2u-bk__student input{margin:3px 0 0;flex:none;width:17px;height:17px;accent-color:var(--bk-accent)}
.up2u-bk__student-body{display:flex;flex-direction:column;gap:5px}
.up2u-bk__student-body .ttl{font-size:13.5px;letter-spacing:.04em}
.up2u-bk__student-body .sub{font-size:11.5px;color:var(--bk-sub);line-height:1.8}
.up2u-bk__student:has(input:checked){
  border-color:var(--bk-accent);box-shadow:inset 0 0 0 1px var(--bk-accent);
}

/* 利用人数 */
.up2u-bk__people{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.up2u-bk__people[hidden]{display:none}
.up2u-bk__people label{display:block;font-size:12.5px;color:var(--bk-sub)}
.up2u-bk__people label > select{display:block;margin-top:6px}
.up2u-bk__people select{
  min-width:110px;padding:10px 12px;font-size:15px;
  border:1px solid var(--bk-line);border-radius:2px;background:#fff;color:var(--bk-ink);
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  padding-right:44px;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 L6 6.5 L11 1.5' fill='none' stroke='%236f6b64' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 18px center;background-size:12px 8px;
}
.up2u-bk__people select:focus{outline:none;border-color:var(--bk-accent)}
.up2u-bk__people select.is-error{border:2px solid #b3392c;background-color:#fdf6f5}
.up2u-bk__people-note{padding-bottom:12px;font-size:11.5px;color:var(--bk-sub)}

/* estimate */
.up2u-bk__estimate{
  margin-top:18px;padding:18px;background:#fff;
  border:1px solid var(--bk-line);border-radius:2px;
}
.up2u-bk__breakdown:empty{display:none}
.up2u-bk__row{
  display:flex;align-items:baseline;justify-content:space-between;gap:16px;
  padding:9px 0;border-bottom:1px dotted var(--bk-line);
}
.up2u-bk__row:first-child{padding-top:0}
.up2u-bk__row .nm{display:flex;flex-direction:column;gap:3px;font-size:13px}
.up2u-bk__row .sb{font-size:11px;color:var(--bk-sub);line-height:1.7}
.up2u-bk__row .vl{
  font-family:var(--f-en,sans-serif);font-size:15px;white-space:nowrap;
}
.up2u-bk__row.is-discount .nm,
.up2u-bk__row.is-discount .vl{color:var(--bk-accent)}
.up2u-bk__row.is-surcharge .vl{color:#b3392c}
.up2u-bk__row.is-subtotal,
.up2u-bk__row.is-tax{color:var(--bk-sub)}
.up2u-bk__row.is-subtotal .vl,
.up2u-bk__row.is-tax .vl{font-size:13.5px}
.up2u-bk__total{
  display:flex;align-items:baseline;justify-content:space-between;gap:16px;
  padding-top:14px;
}
.up2u-bk__total .label{font-size:12.5px;color:var(--bk-sub)}
.up2u-bk__total .amount{
  font-family:var(--f-en,sans-serif);font-size:24px;letter-spacing:.04em;color:var(--bk-ink);
}
.up2u-bk__estimate-note{
  margin:6px 0 0;font-size:11.5px;color:var(--bk-sub);line-height:1.8;text-align:right;
}
.up2u-bk__estimate-note:empty{display:none}

/* form */
.up2u-bk__form{margin-top:26px;display:flex;flex-direction:column;gap:16px}
.up2u-bk__form label{display:block;font-size:13px}
.up2u-bk__form label > input:not([type="checkbox"]):not([type="radio"]),
.up2u-bk__form label > textarea{display:block;width:100%;margin-top:7px}
.up2u-bk__form .req,
.up2u-bk__plans .req,
.up2u-bk__people .req{
  color:var(--bk-accent);font-size:15px;line-height:1;margin-left:3px;vertical-align:-1px;
}
.up2u-bk__form input,
.up2u-bk__form textarea{
  padding:12px 14px;font-size:15px;font-family:inherit;
  border:1px solid var(--bk-line);border-radius:2px;background:#fff;color:var(--bk-ink);
}
.up2u-bk__form input:focus,
.up2u-bk__form textarea:focus,
.up2u-bk__times select:focus{outline:none;border-color:var(--bk-accent)}
.up2u-bk__hp{position:absolute!important;left:-9999px!important;height:0;width:0;opacity:0}
/* 未入力の必須項目 */
.up2u-bk__form input.is-error,
.up2u-bk__form textarea.is-error{
  border:2px solid #b3392c;background:#fdf6f5;
}
.up2u-bk__form input.is-error:focus,
.up2u-bk__form textarea.is-error:focus{border-color:#b3392c}
.up2u-bk__plans.is-error .up2u-bk__plan-body{border-color:#b3392c}
.up2u-bk__error{color:#b3392c;font-size:13px}
/* reCAPTCHA v3 の表記（Googleのガイドラインで必要） */
.up2u-rc-note{
  margin:2px 0 0;font-size:11px;line-height:1.8;color:var(--bk-sub,#6f6b64);
}
.up2u-rc-note a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.up2u-ct__form .up2u-rc-note{text-align:center}

/* スパム対策（Cloudflare Turnstile）のウィジェット */
.up2u-ts{margin-top:6px}
.up2u-ts .cf-turnstile{display:flex;justify-content:flex-start}
.up2u-ct__form .up2u-ts .cf-turnstile{justify-content:center}
.up2u-ts iframe{max-width:100%}

/* 利用規約への同意 */
.up2u-bk__form label.up2u-bk__terms,
.up2u-bk__terms{
  display:flex;gap:12px;align-items:flex-start;cursor:pointer;
  margin-top:4px;padding:16px 18px;
  background:#fff;border:1px solid var(--bk-line);border-radius:2px;
  transition:border-color .3s ease,box-shadow .3s ease,background .3s ease;
}
.up2u-bk__form label.up2u-bk__terms > input,
.up2u-bk__terms input{
  margin:2px 0 0;flex:none;width:17px;height:17px;
  accent-color:var(--bk-accent);
}
.up2u-bk__terms-body{font-size:13.5px;letter-spacing:.02em;line-height:1.9}
.up2u-bk__terms-body a{
  display:inline-flex;align-items:center;gap:4px;
  color:var(--bk-accent);text-decoration:underline;text-underline-offset:3px;
}
.up2u-bk__terms-body a:hover{text-decoration-thickness:2px}
.up2u-bk__terms-body svg{flex:none;transform:translateY(-1px)}
.up2u-bk__terms:has(input:checked){
  border-color:var(--bk-accent);box-shadow:inset 0 0 0 1px var(--bk-accent);
}
.up2u-bk__terms.is-error{border:2px solid #b3392c;background:#fdf6f5}

.up2u-bk__submit{
  align-self:flex-start;margin-top:6px;
  border:2px solid var(--bk-ink);border-radius:999px;background:none;
  padding:15px 52px;font-size:13px;letter-spacing:.2em;color:var(--bk-ink);
  cursor:pointer;transition:all .35s ease;font-family:inherit;
}
.up2u-bk__submit:hover:not(:disabled){background:var(--bk-ink);color:#fff}
.up2u-bk__submit:disabled{opacity:.5;cursor:default}
.up2u-bk__small{font-size:11.5px;color:var(--bk-sub);line-height:1.9}

/* done（カレンダー直下に表示） */
.up2u-bk__done{
  margin-top:28px;padding:32px 30px;text-align:center;
  border:1px solid var(--bk-accent);border-radius:2px;background:#fff;
}
.up2u-bk__done-title{
  font-family:var(--f-serif,serif);font-size:19px;letter-spacing:.14em;
  margin-bottom:12px;color:var(--bk-accent);
}
.up2u-bk__done p:last-child{font-size:13.5px;color:var(--bk-sub)}

@media (max-width:600px){
  .up2u-bk__table td{height:56px}
  .up2u-bk__panel{padding:26px 18px}
}

/* ==========================================================
   お問い合わせフォーム [up2u_contact]
   ========================================================== */
.up2u-ct{
  --ct-ink:var(--c-ink,#2b2a28);
  --ct-sub:var(--c-sub,#6f6b64);
  --ct-line:var(--c-line,#dedad2);
  --ct-accent:var(--c-accent,#a9885a);
  max-width:680px;margin:0 auto;color:var(--ct-ink);
}
.up2u-ct__form{display:flex;flex-direction:column;gap:18px}
.up2u-ct__form label{display:block;font-size:13px}
.up2u-ct__form label > input:not([type="checkbox"]):not([type="radio"]),
.up2u-ct__form label > textarea,
.up2u-ct__form label > select{display:block;width:100%;margin-top:7px}
.up2u-ct__form .req{
  color:var(--ct-accent);font-size:15px;line-height:1;margin-left:3px;vertical-align:-1px;
}
.up2u-ct__form input,
.up2u-ct__form textarea,
.up2u-ct__form select{
  padding:13px 14px;font-size:15px;font-family:inherit;color:var(--ct-ink);
  border:1px solid var(--ct-line);border-radius:2px;background:#fff;
}
.up2u-ct__form textarea{line-height:1.9;resize:vertical}
.up2u-ct__form input:focus,
.up2u-ct__form textarea:focus,
.up2u-ct__form select:focus{outline:none;border-color:var(--ct-accent)}
.up2u-ct__hp{position:absolute!important;left:-9999px!important;height:0;width:0;opacity:0}
/* 未入力の必須項目 */
.up2u-ct__form input.is-error,
.up2u-ct__form textarea.is-error{border:2px solid #b3392c;background:#fdf6f5}
.up2u-ct__form input.is-error:focus,
.up2u-ct__form textarea.is-error:focus{border-color:#b3392c}
.up2u-ct__error{color:#b3392c;font-size:13px;margin:0}
.up2u-ct__submit{
  align-self:center;margin-top:10px;
  border:1px solid var(--ct-ink);border-radius:999px;background:none;
  padding:16px 60px;font-size:13px;letter-spacing:.2em;color:var(--ct-ink);
  cursor:pointer;transition:all .35s ease;font-family:inherit;
}
.up2u-ct__submit:hover:not(:disabled){background:var(--ct-ink);color:#fff}
.up2u-ct__submit:disabled{opacity:.5;cursor:default}
.up2u-ct__small{font-size:11.5px;color:var(--ct-sub);line-height:1.9;text-align:center;margin:0}
.up2u-ct__done{padding:50px 30px;text-align:center;border:1px solid var(--ct-line);border-radius:2px}
.up2u-ct__done-title{
  font-family:var(--f-serif,serif);font-size:19px;letter-spacing:.14em;
  margin:0 0 14px;color:var(--ct-accent);
}
.up2u-ct__done p:last-child{font-size:13.5px;color:var(--ct-sub);margin:0;line-height:2}
