/* ============================================================
   Custom booking widget — Sherlock (Wien) only.
   Loaded ONLY on /wien/sherlock/. Shares :root tokens from styles.css.
   ============================================================ */
.bk{ font-family:var(--font-body); }
.bk-promos{ display:flex; flex-wrap:wrap; gap:.7rem; margin-bottom:1.2rem; }
.bk-promo{ display:inline-flex; align-items:center; gap:.55rem; font-weight:600; font-size:.9rem;
  padding:.65rem 1rem; border-radius:var(--r-md); }
.bk-promo.early{ background:linear-gradient(90deg, rgba(255,153,0,.18), rgba(255,153,0,.03));
  border:1px solid rgba(255,153,0,.4); color:var(--accent); }
.bk-promo.mon{ background:rgba(63,167,160,.12); border:1px solid rgba(63,167,160,.4); color:#7fd3cc; }

.bk-cols{ display:grid; grid-template-columns:1.55fr .95fr; gap:1.3rem; align-items:start; }
.bk-cal{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:1.3rem; }
.bk-side{ display:flex; flex-direction:column; gap:1rem; position:sticky; top:calc(var(--header-h) + 1rem); }
.bk-card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:1.2rem; }

.bk-weeknav{ display:flex; align-items:center; justify-content:space-between; margin-bottom:1rem; position:relative; }
.bk-wklabel{ display:inline-flex; align-items:center; gap:.45rem; background:transparent; border:none; cursor:pointer;
  font-family:var(--font-display); font-weight:700; text-transform:uppercase; letter-spacing:.04em; font-size:1.05rem; color:var(--fg); }
.bk-wklabel:hover{ color:var(--accent); }
.bk-wklabel svg{ opacity:.7; }
.bk-monthpop{ position:absolute; z-index:40; top:48px; left:50%; transform:translateX(-50%); width:300px;
  background:var(--ink-800); border:1px solid var(--line-strong); border-radius:var(--r-lg); padding:1rem; box-shadow:var(--shadow-2); }
.bk-monthpop[hidden]{ display:none; }
.mp-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:.6rem; }
.mp-head b{ font-family:var(--font-display); text-transform:uppercase; letter-spacing:.03em; font-size:1rem; }
.mp-dows{ display:grid; grid-template-columns:repeat(7,1fr); gap:.2rem; margin-bottom:.3rem; }
.mp-dow{ text-align:center; font-size:.64rem; color:var(--fg-dim); text-transform:uppercase; }
.mp-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:.2rem; }
.mp-d{ aspect-ratio:1; border-radius:var(--r-sm); background:var(--ink-700); border:1px solid transparent; color:var(--fg); cursor:pointer; font-weight:600; font-size:.85rem; }
.mp-d:hover:not(:disabled){ border-color:var(--accent); }
.mp-d:disabled{ opacity:.25; cursor:not-allowed; }
.mp-d.is-today{ border-color:rgba(255,153,0,.55); }
.mp-d.is-sel{ background:var(--accent); border-color:var(--accent); color:#1a1205; }
.bk-wk{ width:40px; height:40px; border-radius:var(--r-pill); background:var(--ink-800); border:1px solid var(--line);
  color:var(--fg); cursor:pointer; font-size:1.1rem; line-height:1; transition:border-color .15s var(--ease); }
.bk-wk:hover:not(:disabled){ border-color:var(--accent); color:var(--accent); }
.bk-wk:disabled{ opacity:.3; cursor:not-allowed; }

.bk-days{ display:grid; grid-template-columns:repeat(7,1fr); gap:.4rem; margin-bottom:1.3rem; }
.bk-day{ display:flex; flex-direction:column; align-items:center; gap:.15rem; padding:.6rem .15rem; border-radius:var(--r-md);
  background:var(--ink-800); border:1px solid var(--line); color:var(--fg); cursor:pointer; transition:border-color .15s var(--ease); }
.bk-day:hover:not(:disabled){ border-color:var(--accent); }
.bk-day small{ font-size:.64rem; color:var(--fg-muted); text-transform:uppercase; letter-spacing:.03em; }
.bk-day small.rel{ color:var(--accent); font-weight:700; }
.bk-day.is-sel small.rel{ color:#5c4b12; }
.bk-day b{ font-size:1.1rem; line-height:1.1; }
.bk-day .mo{ font-size:.6rem; color:var(--fg-dim); }
.bk-day:disabled{ opacity:.3; cursor:not-allowed; }
.bk-day.is-today{ border-color:rgba(255,153,0,.55); }
.bk-day.is-sel{ background:var(--accent); border-color:var(--accent); color:#1a1205; }
.bk-day.is-sel small,.bk-day.is-sel .mo{ color:#5c4b12; }

.bk-slots-h{ font-size:.78rem; text-transform:uppercase; letter-spacing:.12em; color:var(--fg-muted); margin:0 0 .7rem; font-weight:700; }
.bk-slots{ display:grid; grid-template-columns:repeat(auto-fill,minmax(132px,1fr)); gap:.55rem; }
.bk-slot{ text-align:left; padding:.7rem .8rem .75rem; border-radius:var(--r-md); background:var(--ink-800);
  border:1px solid var(--line); color:var(--fg); cursor:pointer; display:flex; flex-direction:column; gap:.15rem;
  transition:border-color .15s var(--ease), transform .12s var(--ease); }
.bk-slot:hover{ transform:translateY(-2px); border-color:var(--accent); }
.bk-slot .t{ font-weight:700; font-size:1.05rem; }
.bk-slot .p{ font-size:.8rem; color:var(--fg-muted); }
.bk-slot .p s{ color:var(--fg-dim); margin-right:.3rem; }
.bk-slot.is-sel{ border-color:var(--accent); box-shadow:var(--glow); }
.bk-slot.is-shared{ border-color:rgba(63,167,160,.6); }
.bk-slot.is-sold{ opacity:.6; }
.bk-slot.is-sold:hover{ transform:none; border-color:rgba(210,59,78,.5); }
.bk-slot.is-sold .t{ text-decoration:line-through; color:var(--fg-muted); }
.bk-tags{ display:flex; flex-wrap:wrap; gap:.25rem; margin-top:.15rem; }
.bk-tag{ font-size:.6rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; padding:.1rem .38rem; border-radius:var(--r-pill); }
.bk-tag.deal{ background:rgba(255,153,0,.17); color:var(--accent); }
.bk-tag.shared{ background:rgba(63,167,160,.2); color:#84d6cf; }
.bk-tag.prime{ background:rgba(232,146,58,.18); color:#eea65f; }
.bk-tag.few{ background:rgba(210,59,78,.16); color:#e58a94; }
.bk-tag.sold{ background:rgba(210,59,78,.18); color:#e58a94; }

.bk-card h4{ font-family:var(--font-display); text-transform:uppercase; letter-spacing:.03em; margin:0 0 .8rem; font-size:1.05rem; }
.bk-pchips{ display:flex; flex-wrap:wrap; gap:.4rem; }
.bk-pchip{ width:44px; height:44px; border-radius:var(--r-md); background:var(--ink-800); border:1px solid var(--line);
  color:var(--fg); cursor:pointer; font-weight:700; font-size:1rem; transition:border-color .15s var(--ease); }
.bk-pchip:hover:not(.is-locked){ border-color:var(--accent); }
.bk-pchip.is-sel{ background:var(--accent); border-color:var(--accent); color:#1a1205; }
.bk-pchip.is-locked{ opacity:.45; border-style:dashed; }
.bk-kids{ display:block; width:100%; text-align:left; margin-top:.7rem; background:transparent;
  border:1px dashed rgba(255,153,0,.55); color:var(--accent); padding:.6rem .8rem; border-radius:var(--r-md);
  cursor:pointer; font-weight:600; font-size:.84rem; }
.bk-kids[aria-expanded="true"]{ border-style:solid; background:rgba(255,153,0,.06); }
.bk-kidsbox{ margin-top:.6rem; font-size:.82rem; color:var(--fg-muted); line-height:1.5; }
.bk-kidsbox label{ display:flex; gap:.55rem; align-items:flex-start; margin-top:.6rem; color:var(--fg); cursor:pointer; font-weight:600; }
.bk-kidsbox input{ margin-top:.2rem; accent-color:var(--accent); width:18px; height:18px; flex:none; }

.bk-summary .bk-empty{ color:var(--fg-muted); text-align:center; padding:1rem 0; }
.bk-when{ font-weight:700; color:var(--fg); margin-bottom:.7rem; font-size:1.05rem; }
.bk-row{ display:flex; justify-content:space-between; gap:1rem; padding:.28rem 0; color:var(--fg-muted); font-size:.92rem; }
.bk-row .muted{ font-size:.78rem; }
.bk-row.save{ color:var(--accent); }
.bk-row.total{ color:var(--fg); font-weight:800; font-size:1.35rem; border-top:1px solid var(--line); margin-top:.5rem; padding-top:.7rem; }
.bk-cta{ width:100%; margin-top:.9rem; }
.bk-cta:disabled{ opacity:.5; cursor:not-allowed; box-shadow:none; }
.bk-confirm{ text-align:center; padding:.5rem 0; }
.bk-confirm .ok{ color:#84d6cf; font-weight:700; font-size:1.1rem; margin-bottom:.4rem; }

.bk-gift{ background:linear-gradient(160deg, var(--ink-700), var(--surface)); }
.bk-gift p{ color:var(--fg-muted); font-size:.88rem; margin:.2rem 0 .9rem; }

/* alternatives modal */
.bk-modal{ position:fixed; inset:0; z-index:120; display:flex; align-items:center; justify-content:center;
  background:rgba(2,12,16,.74); padding:1.2rem; }
.bk-modal[hidden]{ display:none; }
.bk-modal-card{ background:var(--ink-800); border:1px solid var(--line-strong); border-radius:var(--r-lg);
  width:100%; max-width:560px; max-height:86vh; overflow:auto; padding:1.6rem; }
.bk-modal-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; margin-bottom:1.1rem; }
.bk-modal-head h3{ font-family:var(--font-display); text-transform:uppercase; margin:0; font-size:1.25rem; line-height:1.1; }
.bk-modal-close{ width:38px; height:38px; border-radius:var(--r-pill); background:var(--ink-700); border:1px solid var(--line); color:var(--fg); cursor:pointer; font-size:1.2rem; flex:none; }
.bk-alt-h{ font-size:.74rem; text-transform:uppercase; letter-spacing:.1em; color:var(--fg-muted); font-weight:700; margin:1.1rem 0 .5rem; }
.bk-alt{ display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.7rem .9rem;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r-md); margin-bottom:.5rem; }
.bk-alt-info b{ display:block; }
.bk-alt-info span{ font-size:.82rem; color:var(--fg-muted); }
.bk-alt .btn{ flex:none; }

.bk-promo.sched{ background:var(--surface); border:1px solid var(--line); color:var(--fg); text-decoration:none; }
.bk-promo.sched:hover{ border-color:var(--accent); color:var(--accent); }

/* checkout modal (upsell + complete) */
.bk-co{ max-width:600px; }
.bk-steps{ font-family:var(--font-display); text-transform:uppercase; letter-spacing:.04em; font-size:1.15rem; }
.bk-steps b{ display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:var(--r-pill); background:var(--accent); color:#1a1205; margin-right:.4rem; }
.bk-co-sub{ color:var(--fg-muted); font-size:.9rem; margin:.3rem 0 0; }
.bk-ups{ display:flex; flex-direction:column; gap:.6rem; margin:1.1rem 0; }
.bk-up{ display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.85rem 1rem; border-radius:var(--r-md); background:var(--surface); border:1px solid var(--line); }
.bk-up.is-on{ border-color:var(--accent); background:rgba(255,153,0,.05); }
.bk-up-info b{ display:block; }
.bk-up-info span{ font-size:.78rem; color:var(--fg-muted); }
.bk-up-info .bk-tag{ margin-top:.3rem; display:inline-block; }
.bk-up-buy{ display:flex; align-items:center; gap:.7rem; flex:none; }
.bk-up-price{ font-weight:700; }
.bk-up-when{ display:block; font-size:.78rem; color:var(--accent); font-weight:600; margin:.15rem 0 .35rem; }
/* payment method options */
.bk-pays{ display:flex; flex-direction:column; gap:.5rem; margin:1.1rem 0; }
.bk-pay{ display:flex; align-items:center; gap:.7rem; text-align:left; font:inherit; cursor:pointer; padding:.85rem 1rem; border-radius:var(--r-md); background:var(--surface); border:1px solid var(--line); color:var(--fg); font-weight:600; transition:border-color .15s var(--ease); }
.bk-pay:hover{ border-color:var(--accent); }
.bk-pay.is-on{ border-color:var(--accent); background:rgba(255,153,0,.05); }
.bk-pay-radio{ width:18px; height:18px; border-radius:50%; border:2px solid var(--line-strong); flex:none; }
.bk-pay.is-on .bk-pay-radio{ border-color:var(--accent); background:radial-gradient(circle, var(--accent) 0 42%, transparent 46%); }
.bk-order{ background:var(--ink-900); border:1px solid var(--line); border-radius:var(--r-md); padding:.9rem 1rem; margin-top:.5rem; }
.bk-order h4{ margin:0 0 .5rem; font-size:.95rem; }
.bk-co-actions{ display:flex; gap:.6rem; margin-top:1.1rem; }
.bk-co-actions .btn{ flex:1; }
.bk-paynote{ text-align:center; color:var(--fg-dim); font-size:.76rem; margin:.7rem 0 0; }
/* complete */
.bk-done{ text-align:center; }
.bk-done .bk-modal-head,.bk-done h3{ text-align:center; }
.bk-done h3{ font-family:var(--font-display); text-transform:uppercase; font-size:1.6rem; margin:.3rem 0 0; }
.bk-done-check{ width:64px; height:64px; margin:0 auto .4rem; border-radius:var(--r-pill); background:rgba(70,176,122,.16); color:#5fce98; display:flex; align-items:center; justify-content:center; font-size:2rem; border:1px solid rgba(70,176,122,.5); }
.bk-done .bk-order{ text-align:left; }
.bk-next{ margin-top:1.1rem; padding:1.1rem; border-radius:var(--r-md); background:linear-gradient(135deg, rgba(255,153,0,.16), rgba(255,153,0,.03)); border:1px dashed rgba(255,153,0,.55); }
.bk-next-h{ font-family:var(--font-display); text-transform:uppercase; color:var(--accent); font-size:1.3rem; }
.bk-next p{ color:var(--fg-muted); font-size:.85rem; margin:.3rem 0 .7rem; }
.bk-code{ display:inline-block; font-family:var(--font-display); letter-spacing:.2em; font-size:1.4rem; color:var(--fg); background:var(--ink-900); border:1px solid var(--accent); border-radius:var(--r-md); padding:.5rem 1.4rem; }

@media (max-width:820px){
  .bk-cols{ grid-template-columns:1fr; }
  .bk-side{ position:static; }
  .bk-days{ gap:.3rem; }
  .bk-co-actions{ flex-direction:column; }
}

/* ===== full schedule (all rooms x times) ===== */
.sch-bar{ display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; margin-bottom:1rem; }
.sch-legend{ display:flex; gap:1rem; font-size:.78rem; color:var(--fg-muted); }
.sch-legend .lg{ display:inline-flex; align-items:center; gap:.4rem; }
.sch-legend .lg::before{ content:""; width:12px; height:12px; border-radius:4px; }
.sch-legend .ok::before{ background:rgba(255,153,0,.25); border:1px solid var(--accent); }
.sch-legend .sh::before{ background:rgba(63,167,160,.3); border:1px solid #3fa7a0; }
.sch-legend .so::before{ background:var(--ink-800); border:1px solid var(--line); }
.sch-legend .de::before{ background:rgba(255,153,0,.18); border:1px dashed var(--accent); }
.sch .bk-days{ margin-bottom:1rem; }
.sch-mondaynote{ margin-bottom:1rem; }
.sch-mondaynote:empty{ display:none; }
.sch-scroll{ overflow-x:auto; border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface); }
.sch-grid{ display:grid; grid-template-columns:minmax(220px,1.4fr) repeat(7, minmax(74px,1fr)); min-width:760px; }
.sch-row{ display:contents; }
.sch-th{ padding:.7rem .3rem; text-align:center; font-weight:700; font-family:var(--font-display); letter-spacing:.03em; color:var(--fg-muted); border-bottom:1px solid var(--line-strong); background:var(--ink-800); }
.sch-head .sch-room{ background:var(--ink-800); border-bottom:1px solid var(--line-strong); }
.sch-venue{ padding:.6rem 1rem; font-size:.74rem; font-weight:700; text-transform:uppercase; letter-spacing:.1em; color:var(--accent); background:var(--ink-900); border-bottom:1px solid var(--line); border-top:1px solid var(--line); }
.sch-room{ padding:.5rem .8rem; border-bottom:1px solid var(--line); display:flex; align-items:center; gap:.65rem; color:var(--fg); text-decoration:none; transition:background .12s var(--ease); }
a.sch-room:hover{ background:rgba(255,153,0,.06); }
.sch-room-img{ width:48px; height:48px; border-radius:var(--r-sm); object-fit:cover; flex:none; }
.sch-room-txt{ display:flex; flex-direction:column; gap:1px; min-width:0; }
.sch-room b{ font-size:.92rem; line-height:1.1; }
.sch-room-g{ font-size:.64rem; color:var(--fg-dim); text-transform:uppercase; letter-spacing:.04em; }
.sch-room-meta{ display:inline-flex; align-items:center; gap:.3rem; font-size:.72rem; color:var(--fg-muted); margin-top:.15rem; }
.sch-room-meta svg{ opacity:.85; }
.sch-c{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px; border-bottom:1px solid var(--line); border-left:1px solid var(--line); font-weight:700; font-size:.9rem; min-height:52px; }
.sch-now{ font-weight:700; line-height:1; }
.sch-meta{ display:flex; align-items:center; gap:.28rem; font-size:.6rem; line-height:1; }
.sch-meta s{ color:var(--fg-dim); }
.sch-c.is-deal .sch-meta{ color:var(--accent); }
.sch-c.is-deal{ box-shadow:inset 0 0 0 1px rgba(255,153,0,.4); }
.sch-c.is-shared.is-deal .sch-meta{ color:#84d6cf; }
a.sch-c{ color:var(--accent); text-decoration:none; background:rgba(255,153,0,.06); transition:background .12s var(--ease); }
a.sch-c:hover{ background:rgba(255,153,0,.18); }
.sch-c.is-shared{ color:#84d6cf; background:rgba(63,167,160,.1); }
.sch-c.is-shared:hover{ background:rgba(63,167,160,.22); }
.sch-c.is-sold{ color:var(--fg-dim); }
.sch-c.is-past{ background:repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(255,255,255,.025) 6px, rgba(255,255,255,.025) 12px); }
