/* Bright, friendly theme in the NOVA family: warm cream paper, navy ink, turquoise for the brand
   and "free", sun yellow for "requested", coral for "booked", and a clear blue for "selected". */

@font-face { font-family: "Inter"; src: url("/assets/fonts/inter-latin-wght-normal.woff2") format("woff2");
  font-weight: 100 900; font-display: swap; }
@font-face { font-family: "Jakarta"; src: url("/assets/fonts/plus-jakarta-sans-latin-wght-normal.woff2") format("woff2");
  font-weight: 200 800; font-display: swap; }

:root {
  --bg: #faf9f4;
  --surface: #ffffff;
  --sunk: #f2f0e8;
  --ink: #13294b;            /* navy: text and main buttons, 13.8:1 */
  --ink-soft: #3d4b63;       /* small labels: 8.4:1 */
  --muted: #5b6476;          /* secondary text: 5.6:1 */
  --line: #e7e2d4;
  --line-strong: #d6cfbd;
  --brand: #17b2ae;          /* turquoise – fills only; text on it is navy */
  --brand-soft: #d8f2f0;
  --brand-text: #086b68;     /* turquoise for text: 5.6:1 on cream, 5.0:1 on --brand-soft */
  --sun: #f9b121;
  --sun-soft: #fdebc0;
  --coral: #f0643c;
  --coral-soft: #fde4dc;
  --select: #2f5bd3;         /* "selected" */
  --select-soft: #e1e8fb;
  --ok: #086b68;   --ok-soft: #d8f2f0;
  --wait: #8a5a00; --wait-soft: #fdebc0;
  --bad: #b4480f;  --bad-soft: #fde4dc;
  --radius: 22px;
  --radius-sm: 14px;
  --radius-xs: 10px;
  --shadow: 0 1px 2px rgba(19, 41, 75, .04), 0 10px 30px -14px rgba(19, 41, 75, .16);
  --shadow-lift: 0 2px 4px rgba(19, 41, 75, .05), 0 18px 40px -18px rgba(19, 41, 75, .3);
  --display: "Jakarta", "Inter", system-ui, sans-serif;
  --sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  color-scheme: light;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--bg); color: var(--ink); font: 15px/1.6 var(--sans);
  font-feature-settings: "cv11", "ss01"; -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration-color: var(--select); text-underline-offset: 3px; }
h1, h2, h3 { font-family: var(--display); font-weight: 700; letter-spacing: -.025em; line-height: 1.12; margin: 0 0 .5rem; }
h1 { font-size: clamp(2.2rem, 5vw, 3rem); }
h2 { font-size: 1.75rem; }
h3 { font-size: 1.35rem; }
em.accent { font-style: normal; color: var(--brand-text); }
.muted { color: var(--muted); }
.small { font-size: .85rem; }
[hidden] { display: none !important; }

/* ---------- Layout ---------- */
.top { display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  max-width: 1120px; margin: 0 auto; padding: 1.4rem 1.25rem; }
.logo { font-family: var(--display); font-size: 1.45rem; font-weight: 800; text-decoration: none; letter-spacing: -.03em; }
.logo::after { content: "."; color: var(--brand); }
.wrap { max-width: 1120px; margin: 0 auto; padding: 1rem 1.25rem 4rem; }
.narrow { max-width: 440px; }
.eyebrow { font-size: .72rem; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-soft); font-weight: 600; margin: 0 0 1rem; }
.rule { height: 1px; background: linear-gradient(90deg, transparent, var(--line-strong), transparent); border: 0; margin: 3rem 0; }

/* ---------- Landing ---------- */
.brand-text { color: var(--brand-text); }
.nav { display: flex; align-items: center; gap: 1.6rem; }
.nav a:not(.btn) { text-decoration: none; color: var(--ink-soft); font-size: .92rem; }
.nav a:not(.btn):hover { color: var(--ink); }
@media (max-width: 640px) { .nav a:not(.btn) { display: none; } }

.hero2 { display: grid; grid-template-columns: minmax(0, 4.4fr) minmax(0, 7.6fr); gap: 3rem; align-items: center; padding-top: 3rem; padding-bottom: 4rem; }
.hero2 h1 { font-size: clamp(2.6rem, 5.5vw, 4.4rem); margin-bottom: 1.2rem; }
.lead { font-size: 1.12rem; color: var(--ink-soft); max-width: 32rem; margin: 0 0 2rem; }
.hero-copy .actions { margin-bottom: 1.2rem; }
.hero-demo { position: relative; margin: 0; background: #fdfbf7; border: 1px solid var(--line); border-radius: 32px;
  box-shadow: 0 2px 6px rgba(19, 41, 75, .04), 0 40px 80px -40px rgba(19, 41, 75, .35); padding: 1rem 1rem .9rem; }
.hero-demo svg { display: block; }
/* The demo building: one layer per floor, stacked or one in front (landing.js sets data-pos). */
.hero-stage { position: relative; aspect-ratio: 1.6; overflow: hidden; border-radius: 22px; }
.hero-level { position: absolute; inset: 0; transition: transform .9s cubic-bezier(.2, .75, .2, 1), opacity .7s ease; transform-origin: 50% 50%; }
.hero-level > svg { width: 100%; height: 100%; }
.hero-level[data-pos="stack"] { transform: translate(7%, calc((1 - var(--i)) * 23%)) scale(.6); pointer-events: none; }
.hero-level[data-pos="above"] { transform: translateY(-75%) scale(.6); opacity: 0; pointer-events: none; }
.hero-level[data-pos="below"] { transform: translateY(75%) scale(.6); opacity: 0; pointer-events: none; }
.hero-level-tag { position: absolute; left: 2%; top: 42%; transform: translateX(-100%); display: grid; text-align: right; font-size: 1.5rem; line-height: 1.25;
  color: var(--ink); opacity: 0; transition: opacity .5s ease; white-space: nowrap; }
.hero-level-tag strong { font-family: var(--display); }
.hero-level-tag span { color: var(--brand-text); font-size: 1.15rem; font-weight: 600; }
.hero-level[data-pos="stack"] .hero-level-tag { opacity: 1; transition-delay: .4s; }
.hero-cursor { position: absolute; left: -4px; top: -3px; z-index: 20; pointer-events: none; transition: transform .9s cubic-bezier(.45, 0, .2, 1);
  filter: drop-shadow(0 3px 4px rgba(19, 41, 75, .3)); }
.hero-cursor svg { position: relative; z-index: 1; }
.hero-cursor::after { content: ""; position: absolute; left: -14px; top: -14px; width: 36px; height: 36px; border-radius: 50%; border: 3px solid var(--select); opacity: 0; }
.hero-cursor.click::after { animation: hero-click .45s ease-out; }
@keyframes hero-click { from { transform: scale(.3); opacity: .9; } to { transform: scale(1.3); opacity: 0; } }
.hero-card { position: absolute; right: .8rem; bottom: .8rem; z-index: 10; width: min(250px, 58%); display: grid; gap: .45rem; background: var(--surface);
  border: 1px solid var(--line); border-top: 5px solid var(--select); border-radius: var(--radius-sm); padding: .85rem .95rem; box-shadow: var(--shadow-lift); font-size: .9rem; }
.hero-card.show { animation: hero-card .45s cubic-bezier(.2, .75, .2, 1); }
.hero-card[data-tone="ok"] { border-top-color: var(--coral); }
@keyframes hero-card { from { transform: translateY(14px) scale(.97); opacity: 0; } }
.hero-times { display: flex; gap: .3rem; }
.hero-times i { flex: 1; text-align: center; font-style: normal; font-size: .74rem; font-variant-numeric: tabular-nums; padding: .3rem 0; border-radius: 8px;
  background: #e4f6f5; color: var(--ink); transition: background .2s, color .2s, transform .15s; }
.hero-times i.busy { background: #fcd6ca; color: #8a3a22; text-decoration: line-through; }
.hero-times i.on { background: var(--select); color: #fff; }
.hero-card .pressed { transform: scale(.94); }
.hero-input { display: block; min-height: 2rem; padding: .35rem .6rem; border: 1px solid var(--line-strong); border-radius: 8px; font-size: .82rem; background: #fff; }
.hero-input:empty::before { content: attr(data-ph); color: var(--muted); }
.hero-input.typing { border-color: var(--select); box-shadow: 0 0 0 3px rgba(47, 91, 211, .15); }
.hero-input.typing::after { content: ""; display: inline-block; width: 1px; height: 1em; background: var(--ink); vertical-align: -2px; margin-left: 1px; animation: hero-caret 1s steps(1) infinite; }
@keyframes hero-caret { 50% { opacity: 0; } }
.hero-btn { display: block; text-align: center; padding: .45rem .6rem; border-radius: 999px; background: var(--ink); color: #fff; font-size: .82rem; transition: opacity .2s, transform .15s; }
.hero-btn[data-off] { opacity: .35; }
.hero-mail { display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: #fcd6ca; color: #8a3a22; font-size: 1rem; }
.hero-foot { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin-top: .55rem; padding: 0 .3rem; color: var(--ink-soft); }
.hero-foot .hero-caption { flex: 1 1 14rem; min-height: 1.4em; }
.hero-floors { display: flex; gap: .25rem; background: var(--sunk, #f1eee8); border-radius: 999px; padding: .2rem; }
.hero-floors button { border: 0; background: transparent; color: var(--ink-soft); font: inherit; font-size: .78rem; padding: .25rem .7rem; border-radius: 999px; cursor: pointer; }
.hero-floors button[aria-pressed="true"] { background: var(--ink); color: #fff; }
.hero-demo-bar { display: flex; flex-wrap: wrap; gap: .5rem 1.2rem; align-items: center; font-size: .82rem; color: var(--ink-soft); padding: .2rem .4rem; }
.hero-demo-bar strong { font-variant-numeric: tabular-nums; color: var(--ink); }
.dot-live { width: .55rem; height: .55rem; border-radius: 50%; background: var(--brand); box-shadow: 0 0 0 4px rgba(23, 178, 174, .2); animation: pulse 2s infinite; }
@keyframes pulse { 50% { box-shadow: 0 0 0 7px rgba(23, 178, 174, 0); } }
@media (prefers-reduced-motion: reduce) { .dot-live { animation: none; } }
.hero-legend { margin-left: auto; display: flex; gap: .7rem; align-items: center; }
.hero-legend i { display: inline-grid; place-items: center; width: 1.05rem; height: 1.05rem; border-radius: 50%; color: #fff; font-style: normal;
  font-size: .62rem; font-weight: 700; margin-right: .25rem; }
.hero-legend .free { background: #0f8a85; } .hero-legend .pending { background: #b07800; } .hero-legend .busy { background: #d9502b; }
.hero-tip { position: absolute; right: 1.5rem; bottom: 3rem; display: grid; gap: .35rem; min-width: 190px; background: var(--surface);
  border: 1px solid var(--line); border-radius: var(--radius-sm); padding: .9rem 1rem; box-shadow: var(--shadow-lift); }
.hero-tip span { font-size: .85rem; color: var(--ink-soft); }
.hero-tip .btn { margin-top: .35rem; justify-self: start; }
.hero-stage .iso-bookable { cursor: pointer; }
@media (max-width: 960px) {
  .hero2 { grid-template-columns: 1fr; gap: 2rem; padding-top: 1.5rem; }
  .hero-legend { margin-left: 0; }
  .hero-tip { position: static; margin-top: .5rem; }
}
@media (max-width: 560px) {
  .hero-level-tag { font-size: 1.9rem; }
  .hero-level-tag span { font-size: 1.5rem; }
  .hero-level[data-pos="stack"] { transform: translate(14%, calc((1 - var(--i)) * 23%)) scale(.6); }
  .hero-card { right: .3rem; bottom: .3rem; width: 54%; padding: .5rem .6rem; gap: .3rem; font-size: .76rem; border-top-width: 4px; }
  .hero-card .muted.small { font-size: .68rem; line-height: 1.3; }
  .hero-card .hero-more { display: none; }
  .hero-times { gap: .2rem; }
  .hero-times i { font-size: .6rem; padding: .2rem 0; border-radius: 6px; }
  .hero-input { min-height: 1.5rem; padding: .2rem .4rem; font-size: .68rem; }
  .hero-btn { padding: .3rem .4rem; font-size: .68rem; }
  .hero-mail { width: 1.5rem; height: 1.5rem; font-size: .8rem; }
}

.band { background: #eef7f5; padding: 4.5rem 0; margin: 2rem 0; }
.section-title { font-size: clamp(1.9rem, 3.6vw, 2.8rem); max-width: 22ch; margin-bottom: 2.2rem; }
.wrap > .section-title:first-of-type { margin-top: 0; }
section.wrap { padding-top: 3rem; padding-bottom: 3rem; }
.steps3 { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.2rem; }
.steps3 li { background: var(--surface); border-radius: var(--radius); padding: 1.8rem 1.6rem; box-shadow: var(--shadow); }
.steps3 h3 { margin: .9rem 0 .4rem; }
.steps3 p, .features6 p { margin: 0; color: var(--ink-soft); }
.step-n { display: grid; place-items: center; width: 2.4rem; height: 2.4rem; border-radius: 50%; background: var(--brand); color: var(--ink);
  font-family: var(--display); font-weight: 800; font-size: 1.1rem; }
.features6 { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 2.2rem 2.5rem; }
.features6 h3 { margin-bottom: .45rem; }
.features6 > div { border-top: 1px solid var(--line-strong); padding-top: 1.2rem; }

.billing { margin-bottom: 1.8rem; }
.plans { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.1rem; align-items: stretch; margin-bottom: 1.2rem; }
.plan { position: relative; display: flex; flex-direction: column; background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius); padding: 1.8rem 1.6rem; box-shadow: var(--shadow); }
.plan h3 { margin: 0; font-size: 1.6rem; }
.plan .price { font-family: var(--display); font-weight: 800; font-size: 2.8rem; line-height: 1; margin: 1.1rem 0 1.2rem; }
.plan .price small { font-family: var(--sans); font-size: .85rem; color: var(--muted); }
.plan ul { list-style: none; padding: 0; margin: 0 0 1.6rem; display: grid; gap: .55rem; font-size: .93rem; flex: 1; }
.plan li::before { content: "✓"; color: var(--brand-text); font-weight: 700; margin-right: .55rem; }
.plan .btn { width: 100%; }
.plan.featured { border: 1.5px solid var(--ink); box-shadow: var(--shadow-lift); }
.plan-badge { position: absolute; top: -.8rem; left: 1.6rem; margin: 0; background: var(--ink); color: #fff; font-size: .72rem;
  letter-spacing: .1em; text-transform: uppercase; padding: .3rem .8rem; border-radius: 999px; }
.center { text-align: center; }
.narrow-wide { max-width: 760px; }
.faq { border-bottom: 1px solid var(--line-strong); padding: 1.1rem 0; }
.faq summary { cursor: pointer; font-weight: 600; list-style: none; display: flex; justify-content: space-between; gap: 1rem; }
.faq summary::after { content: "+"; color: var(--muted); font-weight: 400; font-size: 1.2rem; line-height: 1; }
.faq[open] summary::after { content: "–"; }
.faq p { margin: .7rem 0 0; color: var(--ink-soft); }
.cta-end { text-align: center; padding: 5rem 1.25rem !important; }
.cta-end h2 { font-size: clamp(2.2rem, 5vw, 3.4rem); }
.foot { border-top: 1px solid var(--line); padding-top: 1.5rem; }

/* Older landing pieces, still used by the login card */
.hero { padding: 5rem 0 3.5rem; text-align: center; }

/* ---------- Buttons ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; border: 1px solid var(--ink);
  border-radius: 999px; padding: .7rem 1.4rem; font: 500 .92rem var(--sans); letter-spacing: .01em;
  background: var(--ink); color: #fff; text-decoration: none; cursor: pointer; transition: background .15s, color .15s, border-color .15s; }
.btn:hover { background: #1d3a66; }
.btn:disabled { opacity: .5; cursor: default; }
.btn.brand { background: var(--brand); border-color: var(--brand); color: var(--ink); }
.btn.brand:hover { background: #12a29e; }
.btn.ghost { background: transparent; color: var(--ink); border-color: var(--line-strong); }
.btn.ghost:hover { border-color: var(--ink); }
.btn.sm { padding: .4rem .9rem; font-size: .84rem; }
.btn.ok { background: var(--ok); border-color: var(--ok); }
.btn.bad { background: transparent; color: var(--bad); border-color: #e3c2bd; }
.btn.bad:hover { background: var(--bad-soft); }
.link { background: none; border: 0; padding: 0; font: inherit; color: var(--muted); cursor: pointer; text-decoration: underline;
  text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
.link:hover { color: var(--ink); }

/* ---------- Cards & forms ---------- */
.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem; box-shadow: var(--shadow); }
form { display: grid; gap: 1.1rem; }
label { display: grid; gap: .4rem; font-size: .8rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--ink-soft); }
.hint { font-weight: 400; letter-spacing: 0; text-transform: none; color: var(--muted); font-size: .82rem; }
input, select, textarea { font: 400 .95rem var(--sans); letter-spacing: 0; text-transform: none; color: var(--ink);
  padding: .7rem .95rem; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--surface); width: 100%; }
input[type="range"] { padding: 0; border: 0; accent-color: var(--select); background: none; }
textarea { min-height: 5rem; resize: vertical; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--select); box-shadow: 0 0 0 3px var(--select-soft); }
.grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1.1rem; }
.check { display: flex; gap: .7rem; align-items: flex-start; text-transform: none; letter-spacing: 0; font-size: .95rem; font-weight: 500; color: var(--ink); }
.check input { width: 1.1rem; height: 1.1rem; margin-top: .2rem; accent-color: var(--ink); flex: none; }
.slug { display: flex; align-items: center; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--surface); }
.slug:focus-within { border-color: var(--select); box-shadow: 0 0 0 3px var(--select-soft); }
.slug span { padding-left: .85rem; color: var(--muted); white-space: nowrap; font: 400 .95rem var(--sans); text-transform: none; letter-spacing: 0; }
.slug input { border: 0; padding-left: .1rem; box-shadow: none !important; }
.actions { display: flex; gap: .6rem; flex-wrap: wrap; align-items: center; }

.msg { padding: .8rem 1rem; border-radius: var(--radius-sm); background: var(--select-soft); font-size: .92rem; }
.msg.error { background: var(--bad-soft); color: var(--bad); }
.dev { word-break: break-all; font-size: .88rem; }

/* ---------- Auth page ---------- */
.auth { min-height: calc(100vh - 90px); display: grid; place-items: center; padding: 1rem 1.25rem 4rem; }
.auth .card { width: 100%; max-width: 440px; padding: 2.4rem 2rem; }

/* ---------- App ---------- */
.org-list { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); padding: 0; list-style: none; margin: 1.5rem 0; }
.org-list a.card { display: block; text-decoration: none; transition: border-color .15s, transform .15s; }
.org-list a.card:hover { border-color: var(--select); transform: translateY(-1px); }
.org-list .muted { font-size: .88rem; }

.page-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; flex-wrap: wrap; margin: .5rem 0 1.5rem; }
.page-head h1 { margin: 0; }
.tabs { display: flex; gap: 1.6rem; border-bottom: 1px solid var(--line); margin-bottom: 1.75rem; overflow-x: auto; scrollbar-width: none; }
.tabs button { background: none; border: 0; padding: .8rem 0; font: 500 .92rem var(--sans); color: var(--muted); cursor: pointer;
  border-bottom: 2px solid transparent; margin-bottom: -1px; white-space: nowrap; }
.tabs button[aria-selected="true"] { color: var(--ink); border-color: var(--ink); }
.tabs .count { display: inline-block; min-width: 1.35rem; padding: 0 .4rem; margin-left: .3rem; border-radius: 999px;
  background: var(--select-soft); color: var(--wait); font-size: .75rem; text-align: center; }

.filters { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.chip { border: 1px solid var(--line-strong); background: var(--surface); border-radius: 999px; padding: .35rem .9rem;
  font: 500 .84rem var(--sans); color: var(--muted); cursor: pointer; }
.chip[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: #fff; }

.list { display: grid; gap: .75rem; padding: 0; margin: 0; list-style: none; }
.row { display: grid; grid-template-columns: 7.5rem 1fr auto; gap: 1.25rem; align-items: center; }
.when { font-family: var(--display); line-height: 1.15; }
.when .d { font-size: 1.3rem; font-weight: 700; }
.when .t { font-family: var(--sans); font-size: .82rem; color: var(--muted); }
.row h3 { font-family: var(--sans); font-size: .98rem; font-weight: 600; margin: 0 0 .15rem; }
.row p { margin: 0; color: var(--muted); font-size: .88rem; }
.row .meta { display: flex; gap: .4rem .9rem; flex-wrap: wrap; font-size: .84rem; color: var(--muted); }
@media (max-width: 640px) {
  .row { grid-template-columns: 1fr; gap: .6rem; }
  .when { display: flex; gap: .6rem; align-items: baseline; }
}

.pill { display: inline-block; padding: .15rem .65rem; border-radius: 999px; font-size: .74rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.pill.pending { background: var(--wait-soft); color: var(--wait); }
.pill.approved { background: var(--ok-soft); color: var(--ok); }
.pill.rejected, .pill.cancelled { background: var(--bad-soft); color: var(--bad); }
.pill.off { background: var(--sunk); color: var(--muted); }

.empty { text-align: center; padding: 3.5rem 1rem; color: var(--muted); border: 1px dashed var(--line-strong); border-radius: var(--radius); }
.empty h3 { color: var(--ink); }

.section { display: grid; gap: 1.5rem; grid-template-columns: 240px 1fr; padding: 1.75rem 0; border-top: 1px solid var(--line); }
.section:first-child { border-top: 0; padding-top: 0; }
.section > div:first-child p { color: var(--muted); font-size: .9rem; margin: 0; }
@media (max-width: 760px) { .section { grid-template-columns: 1fr; } }

dialog { border: 1px solid var(--line); border-radius: var(--radius); padding: 2rem; width: min(520px, calc(100vw - 2rem));
  box-shadow: 0 30px 80px -30px rgba(19, 41, 75, .35); color: var(--ink); background: var(--surface); }
dialog::backdrop { background: rgba(250, 248, 244, .75); backdrop-filter: blur(3px); }

.toast { position: fixed; left: 50%; bottom: 1.5rem; transform: translateX(-50%); background: var(--ink); color: #fff;
  padding: .7rem 1.2rem; border-radius: 999px; font-size: .9rem; box-shadow: var(--shadow); z-index: 10; }
.toast.error { background: var(--bad); }

/* ---------- Wide pages (floor plan editor) ---------- */
body.wide .wrap, body.wide .top { max-width: 1680px; }
body.landing .wrap, body.landing .top { max-width: 1280px; }

/* ---------- Floor plan editor ---------- */
.fp-work { display: grid; grid-template-columns: 250px minmax(0, 1fr) 300px; gap: 1rem; align-items: start; }
.fp-col { display: grid; gap: 1rem; position: sticky; top: 1rem; max-height: calc(100vh - 2rem); overflow: auto; padding: 2px; }
.fp-panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 1.1rem; }
.fp-panel > .eyebrow { margin-bottom: .75rem; }
.fp-panel h4 { font: 600 .95rem var(--sans); margin: 0 0 .25rem; }

/* Floor stack */
.fp-floors { display: grid; gap: .1rem; }
.fp-floor { display: grid; grid-template-columns: 74px 1fr; gap: .6rem; align-items: center; width: 100%; padding: .25rem .4rem;
  border: 0; background: none; border-radius: var(--radius-sm); font: inherit; color: var(--ink); text-align: left; cursor: pointer;
  transition: background .15s; }
.fp-floor:hover { background: var(--sunk); }
.fp-floor svg { width: 74px; height: 34px; display: block; overflow: visible; transition: transform .2s; }
.fp-floor:hover svg { transform: translateY(-2px); }
.fp-floor strong { display: block; font-size: .9rem; font-weight: 600; }
.fp-floor span { display: block; font-size: .75rem; color: var(--muted); }
.fp-floor[aria-current="true"] { background: var(--select-soft); }
.fp-floor[aria-current="true"] svg { transform: scale(1.06); }
.fp-floor.add { color: var(--muted); }
.fp-floor.add strong { font-weight: 500; font-size: .84rem; }
.fp-floor.add:hover { color: var(--ink); }

/* Library */
.fp-search { padding: .55rem .9rem; border-radius: 999px; font-size: .88rem; margin-bottom: .9rem; background: var(--bg); }
.fp-lib-group + .fp-lib-group { margin-top: 1rem; }
.fp-lib-group h5 { font: 600 .7rem var(--sans); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin: 0 0 .5rem; }
.fp-tiles { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.fp-tile { display: grid; gap: .2rem; justify-items: center; text-align: center; width: 100%; padding: .6rem .35rem .55rem;
  background: var(--bg); border: 1px solid transparent; border-radius: var(--radius-sm); font: inherit; color: var(--ink);
  cursor: grab; touch-action: none; user-select: none; transition: border-color .15s, background .15s, transform .15s; }
.fp-tile:hover { border-color: var(--select); background: var(--surface); transform: translateY(-1px); box-shadow: var(--shadow); }
.fp-tile:active { cursor: grabbing; }
.fp-tile-art { width: 72px; height: 48px; display: block; pointer-events: none; }
.fp-tile strong { font-size: .8rem; font-weight: 600; line-height: 1.2; }
.fp-tile small { font-size: .7rem; color: var(--muted); line-height: 1.2; }
.fp-tile.wide { grid-column: 1 / -1; grid-template-columns: 72px 1fr; justify-items: start; text-align: left; padding: .45rem .7rem .45rem .35rem; }
.fp-ghost { position: fixed; left: 0; top: 0; width: 84px; height: 58px; z-index: 50; pointer-events: none; opacity: .92;
  background: var(--surface); border: 1px solid var(--select); border-radius: var(--radius-sm); padding: 4px; box-shadow: var(--shadow-lift); }

/* Stage */
.fp-stage { position: relative; height: calc(100vh - 2rem); min-height: 560px; max-height: 900px; background: #fdfbf7;
  border: 1px solid var(--line); border-radius: 28px; box-shadow: var(--shadow); overflow: hidden; }
.fp-stage svg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; touch-action: none; user-select: none; }
.fp-stage-top { position: absolute; left: 1rem; right: 1rem; top: .9rem; display: flex; justify-content: space-between; align-items: center;
  gap: 1rem; pointer-events: none; z-index: 2; }
.fp-stage-top > * { pointer-events: auto; }
.fp-title { display: flex; align-items: baseline; gap: .8rem; background: rgba(253, 251, 247, .85); backdrop-filter: blur(6px);
  padding: .35rem .9rem; border-radius: 999px; }
.fp-title h3 { margin: 0; font-size: 1.45rem; }
.fp-status { font-size: .78rem; color: var(--muted); white-space: nowrap; }
.fp-status.ok::before { content: "✓ "; color: var(--ok); }
.fp-status.error { color: var(--bad); }
.fp-dock { position: absolute; left: 50%; bottom: 1rem; transform: translateX(-50%); display: flex; align-items: center; gap: .25rem;
  background: var(--surface); border: 1px solid var(--line); border-radius: 999px; padding: .3rem; box-shadow: var(--shadow-lift); z-index: 2; }
.fp-dock .sep { width: 1px; height: 22px; background: var(--line); margin: 0 .25rem; }
.icon-btn { display: inline-grid; place-items: center; min-width: 36px; height: 36px; padding: 0 .55rem; border: 0; border-radius: 999px;
  background: none; color: var(--ink); font: 500 .85rem var(--sans); cursor: pointer; }
.icon-btn:hover:not(:disabled) { background: var(--sunk); }
.icon-btn:disabled { color: var(--line-strong); cursor: default; }
.icon-btn svg { width: 18px; height: 18px; position: static; }
.fp-zoom { min-width: 3.4rem; text-align: center; font-size: .8rem; color: var(--muted); }
.seg { display: inline-flex; border-radius: 999px; padding: 3px; background: var(--sunk); }
.seg button { border: 0; background: none; border-radius: 999px; padding: .4rem .95rem; font: 500 .84rem var(--sans); color: var(--muted); cursor: pointer; }
.seg button[aria-pressed="true"] { background: var(--surface); color: var(--ink); box-shadow: 0 1px 3px rgba(19, 41, 75, .12); }
#fp-2d .fp-space, #fp-iso .iso-bookable { cursor: move; }
#fp-2d .fp-handle { cursor: nwse-resize; }
#fp-iso .fp-handle { cursor: ew-resize; }
.fp-stage svg.panning { cursor: grabbing; }

.fp-start { position: absolute; inset: 0; margin: auto; width: min(380px, 88%); height: fit-content; text-align: center; z-index: 3;
  background: rgba(255, 255, 255, .96); border: 1px solid var(--line); border-radius: var(--radius); padding: 2rem 1.6rem;
  box-shadow: var(--shadow-lift); display: grid; gap: .65rem; justify-items: center; }
.fp-start h3, .fp-start p { margin: 0; }
.fp-start .btn { margin-top: .4rem; }

/* Inspector */
.fp-side { display: grid; gap: 1rem; }
.fp-form { display: grid; gap: .95rem; }
.fp-form label { font-size: .7rem; }
.fp-form input, .fp-form select, .fp-form textarea { padding: .55rem .8rem; font-size: .9rem; border-radius: var(--radius-xs); }
.fp-form .hint { font-size: .78rem; margin-top: -.1rem; }
.grid-2.tight { gap: .6rem; grid-template-columns: 1fr 1fr; }
.fp-head { display: grid; grid-template-columns: 64px 1fr; gap: .75rem; align-items: center; }
.fp-head svg { width: 64px; height: 44px; }
.fp-head h4 { font-size: 1.05rem; margin: 0; overflow-wrap: anywhere; }
.fp-kind-note { font-size: .82rem; color: var(--muted); background: var(--bg); border-radius: var(--radius-xs); padding: .6rem .75rem; margin: 0; }
.fp-kinds { display: grid; grid-template-columns: repeat(3, 1fr); }
.fp-kinds button { padding: .4rem .2rem; }
.switch { display: flex; gap: .75rem; align-items: flex-start; text-transform: none; letter-spacing: 0; font-size: .9rem; font-weight: 600; color: var(--ink); cursor: pointer; }
.switch input { appearance: none; width: 38px; height: 22px; border-radius: 999px; background: var(--line-strong); position: relative; flex: none;
  padding: 0; border: 0; cursor: pointer; transition: background .15s; margin-top: .1rem; }
.switch input::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .2); transition: transform .15s; }
.switch input:checked { background: var(--ok); }
.switch input:checked::after { transform: translateX(16px); }
.switch .hint { display: block; font-weight: 400; }
.fp-actions { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.fp-actions .btn { width: 100%; }
.fp-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.fp-steps li { display: grid; grid-template-columns: 26px 1fr; gap: .65rem; align-items: start; font-size: .88rem; }
.fp-steps .dot { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font-size: .75rem; font-weight: 600;
  background: var(--sunk); color: var(--muted); }
.fp-steps .done .dot { background: var(--ok-soft); color: var(--ok); }
.fp-steps .done strong { text-decoration: line-through; text-decoration-color: var(--line-strong); color: var(--muted); }
.fp-steps p { margin: .1rem 0 0; color: var(--muted); font-size: .8rem; }
.fp-steps .link { font-size: .8rem; }
.fp-keys { display: grid; grid-template-columns: auto 1fr; gap: .4rem .7rem; font-size: .8rem; color: var(--muted); margin: 0; }
kbd { font: 600 .7rem var(--sans); background: var(--bg); border: 1px solid var(--line); border-bottom-width: 2px; border-radius: 6px;
  padding: .1rem .4rem; color: var(--ink); white-space: nowrap; }
details.fp-more summary { cursor: pointer; font-weight: 600; font-size: .88rem; list-style: none; display: flex; justify-content: space-between; }
details.fp-more summary::after { content: "+"; color: var(--muted); }
details.fp-more[open] summary::after { content: "–"; }
details.fp-more > div { margin-top: .9rem; }

/* Guides, scale tool, preview */
.fp-guide { stroke: #3d4b63; stroke-width: 1.1; stroke-dasharray: 5 4; opacity: .7; pointer-events: none; }
#fp-iso .fp-guide { stroke-width: 1.5; }
.fp-hint { position: absolute; top: 4.2rem; left: 50%; transform: translateX(-50%); z-index: 2; background: var(--ink); color: #fff;
  padding: .5rem 1rem; border-radius: 999px; font-size: .84rem; white-space: nowrap; box-shadow: var(--shadow-lift); }
.fp-hint kbd { background: rgba(255, 255, 255, .15); border-color: rgba(255, 255, 255, .25); color: #fff; }
.fp-measure { position: absolute; top: 7rem; left: 50%; transform: translateX(-50%); z-index: 3; width: min(320px, 90%); display: grid; gap: .8rem;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.1rem 1.2rem; box-shadow: var(--shadow-lift); }
.fp-measure-row { display: flex; align-items: center; gap: .6rem; font: 400 .9rem var(--sans); text-transform: none; letter-spacing: 0; color: var(--muted); }
.fp-measure-row input { width: 8rem; }
.fp-preview-bar { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; background: rgba(253, 251, 247, .92); backdrop-filter: blur(6px);
  padding: .4rem .5rem .4rem 1rem; border-radius: 999px; border: 1px solid var(--line); box-shadow: var(--shadow); }
.fp-preview-bar input[type="date"] { width: auto; padding: .3rem .7rem; border-radius: 999px; font-size: .85rem; }
.fp-preview-bar input[type="range"] { width: min(260px, 30vw); }
.fp-preview-bar strong { font-variant-numeric: tabular-nums; min-width: 3rem; }
.fp-preview-btn { gap: .35rem; display: inline-flex; align-items: center; padding: 0 .8rem; }
.fp-preview-btn[aria-pressed="true"] { background: var(--ink); color: #fff; }
.fp-preview-btn[aria-pressed="true"]:hover { background: #1d3a66; }
body.fp-previewing .fp-col:first-child .fp-panel:last-child { opacity: .45; pointer-events: none; }
body.fp-previewing #fp-iso .iso-bookable { cursor: pointer; }
#fp-iso .iso-picked .iso-floor { stroke: var(--select); stroke-width: 2.5; }
.fp-legend { display: flex; flex-wrap: wrap; gap: .4rem .9rem; margin-top: .6rem; font-size: .84rem; }
.fp-legend span::before { display: inline-grid; place-items: center; width: 1.15rem; height: 1.15rem; border-radius: 50%; margin-right: .4rem;
  color: #fff; font-size: .68rem; font-weight: 700; vertical-align: 1px; }
.fp-legend .free::before { content: "✓"; background: #0f8a85; }
.fp-legend .pending::before { content: "…"; background: #b07800; }
.fp-legend .busy::before { content: "✕"; background: #d9502b; }
.fp-day { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; font-size: .88rem; }
.fp-day li { display: flex; justify-content: space-between; align-items: center; gap: .5rem; font-variant-numeric: tabular-nums; }
.fp-align-row { display: flex; flex-wrap: wrap; gap: .3rem; }
.fp-align { width: 38px; border: 1px solid var(--line); font-size: 1rem; }

.fp-shape-row { display: grid; grid-template-columns: auto 1fr; gap: .9rem; align-items: center; }
.fp-corners { display: grid; grid-template-columns: repeat(2, 30px); gap: 0; width: 60px; height: 60px; border: 2px solid var(--ink);
  border-radius: 6px; overflow: hidden; background: #fff; }
.fp-corner { border: 0; padding: 0; background: #fff; cursor: pointer; position: relative; }
.fp-corner:hover { background: var(--select-soft); }
.fp-corner[aria-pressed="true"] { background: repeating-linear-gradient(135deg, var(--line) 0 4px, var(--bg) 4px 8px); }
.fp-chips { display: flex; flex-wrap: wrap; gap: .35rem; }
.fp-chips .chip { font-size: .78rem; padding: .3rem .7rem; }
.fp-chip-add { border-style: dashed; color: var(--brand-text); border-color: var(--brand); background: #f0faf9; }
.fp-chip-input { width: 9.5rem; padding: .28rem .7rem !important; border-radius: 999px !important; font-size: .78rem !important; }
.chip[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: #fff; }
.fp-photos { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
.fp-photos figure { margin: 0; display: grid; gap: .25rem; }
.fp-photos img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius-xs); background: var(--sunk); }
.fp-photos figure div { display: flex; justify-content: space-between; gap: .4rem; }

@media (max-width: 1200px) {
  .fp-work { grid-template-columns: 220px minmax(0, 1fr); }
  .fp-side { grid-column: 1 / -1; position: static; max-height: none; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
}
@media (max-width: 800px) {
  .fp-work { grid-template-columns: 1fr; }
  .fp-col { position: static; max-height: none; }
  .fp-stage { height: 70vh; min-height: 420px; }
  .fp-tiles { grid-template-columns: repeat(3, 1fr); }
}

/* ---------- Public booking page ---------- */
body.book .wrap, body.book .top { max-width: 1400px; }
.book-title { font-size: clamp(1.9rem, 4vw, 2.6rem); margin: 0; }
.book-main { padding-top: .25rem; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.book-layout { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 1.2rem; align-items: start; }
.book-form-card { grid-column: 1 / -1; }
.book-card-lg { background: var(--surface); border: 1px solid var(--line); border-radius: 26px; box-shadow: var(--shadow); padding: 1.3rem 1.4rem; min-width: 0; }
.book-where { background: #fdfcf8; }
.book-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: start; gap: .8rem 1rem; margin-bottom: .6rem; }
.book-head p { margin: 0; }
.book-toggles { display: flex; flex-wrap: wrap; gap: .5rem; }
.step-label { display: flex; align-items: center; gap: .5rem; font: 700 .78rem var(--sans); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); margin: 0 0 .35rem; }
.step-label span { display: inline-grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: 50%; background: var(--brand); color: var(--ink);
  font-family: var(--display); font-weight: 800; letter-spacing: 0; }
.book-space-name { font-size: 1.5rem; margin: 0 0 .15rem; }
.book-where svg { width: 100%; height: auto; max-height: 66vh; display: block; }
.book-where .iso-bookable { cursor: pointer; }
.book-legend { display: flex; flex-wrap: wrap; gap: 1rem; font-size: .82rem; color: var(--ink-soft); padding: .1rem 0 .4rem; }
.book-legend i { display: inline-grid; place-items: center; width: 1.05rem; height: 1.05rem; border-radius: 50%; color: #fff; font-style: normal;
  font-size: .62rem; font-weight: 700; margin-right: .3rem; }
.book-legend .free { background: #0f8a85; } .book-legend .pending { background: #b07800; } .book-legend .busy { background: #d9502b; }

/* Week calendar */
.week-nav { display: flex; align-items: center; gap: .3rem; font-size: .9rem; white-space: nowrap; }
.week-nav .icon-btn { border: 1px solid var(--line); font-size: 1.2rem; }
.cal { --days: 7; border: 1px solid var(--line); border-radius: 16px; overflow: hidden; background: var(--surface); }
.cal-head { display: grid; grid-template-columns: 3.2rem repeat(var(--days), 1fr); border-bottom: 1px solid var(--line); background: var(--bg); }
.cal-head > span { display: grid; justify-items: center; padding: .45rem 0 .4rem; font-size: .75rem; color: var(--muted); }
.cal-head strong { font-family: var(--display); font-size: 1.05rem; color: var(--ink); }
.cal-head .today strong { background: var(--brand); color: var(--ink); border-radius: 999px; padding: 0 .45rem; }
.cal-scroll { max-height: 470px; overflow-y: auto; overscroll-behavior: contain; }
.cal-body { position: relative; display: grid; grid-template-columns: 3.2rem repeat(var(--days), 1fr);
  background-image: linear-gradient(to bottom, var(--line) 1px, transparent 1px); background-size: 100% 44px; }
.cal-times { position: relative; }
.cal-times span { position: absolute; right: .45rem; transform: translateY(-50%); font-size: .7rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.cal-times span:first-child { transform: none; }
.cal-col { position: relative; border-left: 1px solid var(--line); cursor: pointer; touch-action: pan-y; }
.cal.cal-empty .cal-col { cursor: default; }
.cal-col:hover { background: rgba(23, 178, 174, .05); }
.cal.cal-empty .cal-col:hover { background: none; }
.cal-past { position: absolute; left: 0; right: 0; background: repeating-linear-gradient(135deg, #f1efe8 0 5px, #f7f6f1 5px 10px); pointer-events: none; }
.cal-block, .cal-sel { position: absolute; left: 3px; right: 3px; border-radius: 8px; padding: .2rem .35rem; overflow: hidden; font-size: .7rem; line-height: 1.25; }
.cal-block strong, .cal-sel strong { display: block; font-size: .72rem; }
.cal-block { cursor: not-allowed; }
.cal-block.approved { background: #fde4dc; border-left: 3px solid #d9502b; color: #8a2f12; }
.cal-block.pending { background: #fdebc0; border-left: 3px solid #b07800; color: #6b4600; }
.cal-sel { background: var(--select); color: #fff; box-shadow: 0 6px 16px -6px rgba(47, 91, 211, .6); pointer-events: none; z-index: 2; }
.cal-help { margin: .6rem 0 0; }

/* Form */
.book-summary { font-size: 1.05rem; margin: 0 0 1rem; }
.book-form fieldset { border: 0; padding: 0; margin: 0; display: grid; gap: 1rem; min-width: 0; }
.book-form fieldset:disabled { opacity: .5; }
.book-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: .9rem 1rem; }
.book-fields .wide { grid-column: 1 / -1; }
.book-form label { font-size: .72rem; }
.book-form input, .book-form textarea { padding: .65rem .85rem; }
.book-submit { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem 1rem; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.book-done { text-align: center; display: grid; justify-items: center; gap: .3rem; padding: 1rem 0; }
.book-done p { margin: .2rem 0; }
.book-done .btn { margin-top: .8rem; }
.book-tick { width: 3.4rem; height: 3.4rem; border-radius: 50%; display: grid; place-items: center; background: var(--brand); color: var(--ink);
  font-size: 1.6rem; font-weight: 800; margin-bottom: .4rem; }

/* List view */
.book-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.book-list-head { font: 700 .72rem var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--ink-soft); margin: .8rem 0 .2rem; }
.book-row { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 1rem; text-align: left; padding: .8rem 1rem;
  border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); font: inherit; color: var(--ink); cursor: pointer; }
.book-row:hover, .book-row[aria-pressed="true"] { border-color: var(--select); box-shadow: 0 0 0 3px var(--select-soft); }
.book-row small { display: block; color: var(--muted); font-size: .8rem; }
.state { font-size: .78rem; font-weight: 600; padding: .2rem .65rem; border-radius: 999px; white-space: nowrap; }
.state.free { background: var(--brand-soft); color: var(--brand-text); }
.state.free::before { content: "✓ "; }
.state.pending { background: var(--wait-soft); color: var(--wait); }
.state.pending::before { content: "… "; }
.state.busy { background: var(--bad-soft); color: var(--bad); }
.state.busy::before { content: "✕ "; }
.state.off { background: var(--sunk); color: var(--muted); }

@media (max-width: 960px) {
  .book-layout { grid-template-columns: 1fr; }
  .book-card-lg { padding: 1rem; border-radius: 22px; }
}

/* Booking page: filters, zoom, photos */
.book-filters { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin: .2rem 0 .6rem; }
.book-filters .chip { font-size: .8rem; padding: .32rem .8rem; }
.book-people { display: flex; align-items: center; gap: .45rem; font-size: .72rem; margin-right: .3rem; }
.book-people input { width: 4.6rem; padding: .32rem .6rem; border-radius: 999px; font-size: .85rem; }
.book-plan { position: relative; }
.book-plan svg { width: 100%; height: auto; max-height: 66vh; display: block; touch-action: pan-y; border-radius: 16px; }
.book-plan svg.zoomed { cursor: grab; }
.book-plan svg.zoomed:active { cursor: grabbing; }
.book-plan .iso-bookable:focus { outline: none; }
.book-plan .iso-bookable:focus-visible .iso-floor, .book-plan .iso-bookable:focus-visible polygon:first-child { stroke: var(--select); stroke-width: 3; }
.zoom-ctrl { position: absolute; right: .4rem; bottom: .4rem; display: grid; gap: .25rem; background: var(--surface); border: 1px solid var(--line);
  border-radius: 14px; padding: .25rem; box-shadow: var(--shadow); }
.zoom-ctrl .icon-btn { font-size: 1.1rem; }
.zoom-hint { position: absolute; left: 50%; top: 45%; transform: translate(-50%, -50%); margin: 0; background: rgba(19, 41, 75, .88); color: #fff;
  padding: .55rem 1rem; border-radius: 999px; font-size: .85rem; pointer-events: none; }
.book-photos { display: flex; gap: .5rem; overflow-x: auto; margin: .2rem 0 .8rem; scrollbar-width: thin; }
.book-photos a { flex: none; }
.book-photos img { height: 112px; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 12px; display: block; background: var(--sunk); }
.book-photos a:first-child img { height: 140px; }
.book-amenities { list-style: none; display: flex; flex-wrap: wrap; gap: .35rem; margin: 0 0 .9rem; padding: 0; }
.book-amenities li { font-size: .78rem; background: var(--brand-soft); color: var(--brand-text); padding: .22rem .65rem; border-radius: 999px; font-weight: 600; }
.book-amenities li::before { content: "✓ "; }


/* ---------- Colour: bold bands and accents ---------- */
.sun-text { color: var(--sun); }
.on-dark-soft { color: #c8d3e6; }
.c-turq { --c: var(--brand); --c-soft: var(--brand-soft); }
.c-sun { --c: var(--sun); --c-soft: var(--sun-soft); }
.c-coral { --c: var(--coral); --c-soft: var(--coral-soft); }
.c-blue { --c: #5b84f0; --c-soft: var(--select-soft); }

/* Full-width navy bands (the content inside keeps to the page column). */
.dark-band { color: #fff; background:
  radial-gradient(38rem 26rem at 78% 18%, rgba(23, 178, 174, .38), transparent 60%),
  radial-gradient(30rem 22rem at 8% 90%, rgba(249, 177, 33, .28), transparent 60%),
  radial-gradient(26rem 20rem at 98% 100%, rgba(240, 100, 60, .32), transparent 60%),
  var(--ink); }
.dark-band h1, .dark-band h2 { color: #fff; }
.dark-band .lead { color: #dbe3f0; }
.dark-band em.accent { color: var(--sun); }
.btn.ghost.on-dark { color: #fff; border-color: rgba(255, 255, 255, .45); }
.btn.ghost.on-dark:hover { border-color: #fff; background: rgba(255, 255, 255, .08); }

/* Navy top bar on every page. */
/* The bar's colour reaches the screen edges with a shadow, which (unlike a wider box) doesn't make the page scroll sideways. */
body.has-dark-top > header.top { color: #fff; background: var(--band, var(--ink)); box-shadow: 0 0 0 100vmax var(--band, var(--ink)); clip-path: inset(0 -100vmax); }
body.has-dark-top > header.top .logo { color: #fff; }
body.has-dark-top > header.top a:not(.btn), body.has-dark-top > header.top .muted, body.has-dark-top > header.top .link { color: #dbe3f0; }
body.has-dark-top > header.top .btn.ghost { color: #fff; border-color: rgba(255, 255, 255, .45); background: transparent; }
body.has-dark-top > header.top .eyebrow { color: var(--sun); }
body.has-dark-top > header.top h1 { color: #fff; }
body.landing .hero2 { padding-top: 2.5rem; padding-bottom: 5rem; }
body.landing .hero-demo { border-color: transparent; box-shadow: 0 30px 80px -30px rgba(0, 0, 0, .55); }
body.book > header.top { padding-bottom: 2rem; }
body.book .book-main { margin-top: 1.2rem; }

/* Landing sections */
.band-turq { background: #eaf7f6; }
.band-sun { background: #fff4db; }
.band-turq::before, .band-sun::before { content: none; }
.band { position: relative; }
.steps3 li { border-top: 6px solid var(--c, var(--brand)); }
.steps3 .step-n { background: var(--c, var(--brand)); color: var(--ink); }
.features6 > div { border-top: 0; padding: 1.4rem 1.3rem; background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow); }
.f-dot { display: block; width: 2.4rem; height: 2.4rem; border-radius: 14px; margin-bottom: .9rem;
  background: linear-gradient(135deg, var(--c), color-mix(in srgb, var(--c) 55%, #fff)); }
.plan.on-dark-card { background: var(--ink); color: #fff; border-color: var(--ink); }
.plan.on-dark-card .muted, .plan.on-dark-card .price small { color: #c8d3e6; }
.plan.on-dark-card li::before { color: var(--sun); }
.plan.on-dark-card .plan-badge { background: var(--sun); color: var(--ink); }
.dark-band .cta-end h2 { color: #fff; }
.dark-band + .foot, main > .dark-band:last-child { margin-bottom: 0; }

/* Booking page: each step has its colour. */
.book-where { --c: var(--brand); }
.book-when-card { --c: var(--sun); }
.book-form-card { --c: var(--coral); }
.book-card-lg { border-top: 6px solid var(--c, var(--brand)); }
.book-card-lg .step-label span { background: var(--c, var(--brand)); color: var(--ink); }
.book-where { background: linear-gradient(180deg, #f0faf9, #fdfcf8 40%); }

/* Admin: turquoise for the active tab, coloured library groups. */
.tabs button[aria-selected="true"] { border-color: var(--brand); border-bottom-width: 3px; }
.fp-lib-group h5::before { content: ""; display: inline-block; width: .6rem; height: .6rem; border-radius: 50%; margin-right: .45rem; background: var(--c, var(--brand)); vertical-align: 0; }
.fp-lib-group[data-group="Rooms"] { --c: var(--brand); --c-soft: #e4f6f5; }
.fp-lib-group[data-group="Desks"] { --c: var(--sun); --c-soft: #fff4db; }
.fp-lib-group[data-group="Areas"] { --c: #b9b29f; --c-soft: var(--sunk); }
.fp-lib-group[data-group="Doors & windows"] { --c: var(--coral); --c-soft: #feeee8; }
.fp-lib-group[data-group="Furniture"] { --c: #5b84f0; --c-soft: #eaf0fd; }
.fp-lib-group[data-group="Not on a plan yet"] { --c: var(--ink-soft); --c-soft: var(--sunk); }
.fp-lib-group .fp-tile { background: var(--c-soft, var(--bg)); }
.fp-lib-group .fp-tile:hover { border-color: var(--c, var(--select)); }
.org-list a.card { border-top: 6px solid var(--brand); }
.org-list li:nth-child(3n+2) a.card { border-top-color: var(--sun); }
.org-list li:nth-child(3n) a.card { border-top-color: var(--coral); }
.dark-band .hero-demo { color: var(--ink); }

/* In-page links (the landing page menu) glide to their section – unless the visitor prefers less motion. */
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}
section[id] { scroll-margin-top: 1.5rem; }

/* Editor: someone else changed the floor */
.fp-conflict { position: absolute; left: 50%; top: 4.2rem; transform: translateX(-50%); z-index: 5; width: min(520px, 92%); display: grid; gap: .45rem;
  background: var(--surface); border: 1px solid var(--coral); border-left: 6px solid var(--coral); border-radius: var(--radius-sm); padding: 1rem 1.1rem;
  box-shadow: var(--shadow-lift); font-size: .9rem; }
.fp-conflict span { color: var(--ink-soft); }
/* Editor: "this space has upcoming bookings" */
.fp-dialog h2 { font-size: 1.35rem; }
.fp-dialog ul { list-style: none; padding: 0; margin: .4rem 0 1rem; display: grid; gap: .35rem; font-size: .88rem; max-height: 12rem; overflow: auto; }
.fp-dialog li { display: flex; justify-content: space-between; gap: .8rem; padding: .45rem .7rem; background: var(--bg); border-radius: var(--radius-xs); }
.fp-dialog .fp-dialog-actions { display: grid; gap: .5rem; margin-top: 1rem; }
.fp-dialog .btn { width: 100%; }

/* Privacy notice and other long text */
.prose { max-width: 760px; padding-top: 2.5rem; padding-bottom: 3rem; }
.prose h1 { font-size: clamp(2.2rem, 5vw, 3rem); }
.prose h2 { font-size: 1.5rem; margin-top: 2.6rem; }
.prose h3 { font-size: 1.1rem; margin-top: 1.4rem; }
.prose p, .prose li { color: var(--ink-soft); line-height: 1.7; }
.prose ul { padding-left: 1.2rem; display: grid; gap: .4rem; }
.prose section { scroll-margin-top: 1.5rem; }
.lead-dark { font-size: 1.15rem; color: var(--ink) !important; }
.toc { display: flex; flex-wrap: wrap; gap: .4rem; margin: 1.5rem 0 .5rem; }
.toc a { font-size: .85rem; text-decoration: none; padding: .35rem .8rem; border-radius: 999px; background: var(--brand-soft); color: var(--brand-text); font-weight: 600; }
mark.todo { background: var(--sun-soft); color: var(--wait); padding: 0 .3rem; border-radius: 4px; font-weight: 600; }

/* Booker's own page */
.booker { padding-top: 2rem; padding-bottom: 3rem; display: grid; gap: 1rem; }
.booker-card { border-top: 6px solid var(--brand); }
.booker-card h2 { margin: .6rem 0 .3rem; font-size: 1.8rem; }
.booker-when { font-size: 1.1rem; margin: 0 0 1rem; }
.booker-facts { display: grid; grid-template-columns: auto 1fr; gap: .4rem 1.2rem; margin: 0; font-size: .95rem; }
.booker-facts dt { color: var(--muted); }
.booker-facts dd { margin: 0; }
.booker-receipts { display: flex; flex-wrap: wrap; gap: .2rem .9rem; }
.booker-confirm { display: grid; gap: .8rem; margin-top: .5rem; }

.pill.unpaid { background: var(--sun-soft); color: var(--wait); }
.pill.expired { background: var(--sunk); color: var(--muted); }
.pay-ok { margin: 0; }
.pay-ok strong { color: var(--brand-text); }
.fp-price { display: grid; grid-template-columns: auto 6.5rem 1fr; gap: .4rem; align-items: center; }
.fp-euro { font-weight: 700; color: var(--ink-soft); }
.cal-sel.monthly { background: linear-gradient(180deg, var(--select), rgba(47, 91, 211, .35)); }
.booker-pay { border-top: 6px solid var(--sun); }
.pay-steps { margin: 0; padding: 0; list-style: none; display: grid; gap: .35rem; font-size: .9rem; }
.pay-steps li::before { content: "✓ "; color: var(--brand-text); font-weight: 700; }
#pay-status { display: grid; gap: .7rem; justify-items: start; }

/* Landing: get paid */
.get-paid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 3rem; align-items: center; padding-top: 4rem !important; padding-bottom: 4rem !important; }
.ticks { list-style: none; padding: 0; margin: 1.4rem 0 0; display: grid; gap: .75rem; }
.ticks li { position: relative; padding-left: 2rem; color: var(--ink-soft); line-height: 1.55; }
.ticks li::before { content: "✓"; position: absolute; left: 0; top: .05rem; width: 1.35rem; height: 1.35rem; border-radius: 50%; display: grid; place-items: center;
  background: var(--brand); color: var(--ink); font-size: .75rem; font-weight: 800; }
.ticks strong { color: var(--ink); }
.price-stack { position: relative; display: grid; gap: .9rem; padding: 1.5rem; border-radius: 30px;
  background: radial-gradient(22rem 16rem at 90% 0%, rgba(23, 178, 174, .25), transparent 70%), radial-gradient(20rem 16rem at 0% 100%, rgba(240, 100, 60, .2), transparent 70%), #fff7e8; }
.price-card { display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto; align-items: baseline; gap: 0 1rem; background: var(--surface);
  border-radius: var(--radius-sm); padding: 1rem 1.2rem; box-shadow: var(--shadow); border-left: 6px solid var(--c); }
.price-card span { font-weight: 600; }
.price-card strong { grid-row: span 2; font-family: var(--display); font-size: 2rem; font-weight: 800; color: var(--ink); }
.price-card small { color: var(--muted); }
.price-card:nth-child(2) { margin-left: 1.5rem; }
.price-card:nth-child(3) { margin-left: .75rem; }
.payout { display: flex; align-items: center; gap: .8rem; background: var(--ink); color: #fff; border-radius: var(--radius-sm); padding: .9rem 1.2rem; box-shadow: var(--shadow-lift); }
.payout strong { display: block; font-family: var(--display); font-size: 1.3rem; color: var(--sun); }
.payout small { color: #c8d3e6; }
.payout-dot { width: 2.2rem; height: 2.2rem; border-radius: 50%; background: var(--brand); flex: none; display: grid; place-items: center; }
.payout-dot::after { content: "€"; color: var(--ink); font-weight: 800; }
@media (max-width: 860px) { .get-paid { grid-template-columns: 1fr; gap: 2rem; } .price-card:nth-child(n) { margin-left: 0; } }

/* Editor: export menu, busy overlay, AI suggestions, share */
.fp-menu { position: relative; }
.fp-menu-list { position: absolute; right: 0; top: calc(100% + .4rem); z-index: 6; display: grid; min-width: 15rem; padding: .35rem;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm); box-shadow: var(--shadow-lift); }
.fp-menu-list button { border: 0; background: none; text-align: left; padding: .55rem .7rem; border-radius: var(--radius-xs); font: inherit; font-size: .88rem; color: var(--ink); cursor: pointer; }
.fp-menu-list button:hover { background: var(--sunk); }
.fp-busy { position: absolute; inset: 0; z-index: 7; display: grid; place-content: center; justify-items: center; gap: .5rem; text-align: center;
  background: rgba(253, 251, 247, .85); backdrop-filter: blur(3px); }
.spinner { width: 2.4rem; height: 2.4rem; border-radius: 50%; border: 4px solid var(--brand-soft); border-top-color: var(--brand); animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .spinner { animation-duration: 3s; } }
.fp-ai-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; max-height: 22rem; overflow: auto; }
.fp-ai-list li { display: grid; grid-template-columns: auto 1fr auto; gap: .5rem; align-items: center; }
.fp-ai-list input[type="text"] { padding: .35rem .55rem; font-size: .85rem; }
.fp-ai-list select { padding: .35rem .4rem; font-size: .8rem; width: auto; }
.fp-ai-list input[type="checkbox"] { width: 1rem; height: 1rem; accent-color: var(--brand); }
.fp-share-link { display: flex; gap: .4rem; }
.fp-share-link input { font-size: .8rem; padding: .45rem .6rem; }
.fp-qr { display: grid; justify-items: center; gap: .4rem; padding: .6rem; background: var(--bg); border-radius: var(--radius-sm); }
.fp-qr svg { width: 140px; height: 140px; }

/* Bookable / not bookable tags, and the "Done" button that ends a selection */
.fp-tag { display: inline-block; margin-left: .45rem; padding: .05rem .45rem; border-radius: 999px; font: 600 .62rem var(--sans); letter-spacing: .04em; text-transform: none; vertical-align: 1px; }
.fp-tag.yes { background: #dff5f4; color: #0b6b67; }
.fp-tag.no { background: var(--sunk); color: var(--muted); }
.fp-kinds button { display: grid; gap: .1rem; line-height: 1.2; }
.fp-kinds button small { font-size: .66rem; font-weight: 500; opacity: .75; }
.fp-panel:has(> .fp-done) { position: relative; }
.fp-done { position: absolute; top: .8rem; right: .8rem; z-index: 1; }
.fp-panel:has(> .fp-done) .fp-head, .fp-panel:has(> .fp-done) > div:nth-child(2) { padding-right: 4.2rem; }
.fp-menu-list button.danger { color: #b8401f; }

/* Booking page with no floors yet */
.plan-empty { display: grid; gap: .3rem; place-content: center; text-align: center; min-height: 14rem; padding: 2rem 1.5rem; color: var(--muted); }
.plan-empty strong { color: var(--ink); font: 600 1.05rem var(--sans); }
.book-plan:has(#plan[hidden]) .zoom-ctrl { display: none; }

/* Bookable rooms on the booking page: their name is a button */
.iso-pill { cursor: pointer; }
.iso-pill .pill-face { transition: fill .12s ease; }
.iso-pill-free:hover .pill-face { fill: #eefaf9; }
.iso-pill-pending:hover .pill-face { fill: #fff8e6; }
.iso-pill-busy:hover .pill-face { fill: #fff1ec; }
.iso-pill-off { opacity: .8; }

/* ---------- Motion: every change glides instead of jumping ---------- */
@media (prefers-reduced-motion: no-preference) {
  /* Page to page (same site): a short cross-fade. */
  @view-transition { navigation: auto; }
  ::view-transition-old(root), ::view-transition-new(root) { animation-duration: .22s; animation-timing-function: ease; }

  /* Hover, focus and pressed states fade rather than snap. */
  :where(a, button, .btn, .chip, .seg button, [role=tab], input, select, textarea, .card, .fp-tile, .fp-floor) {
    transition: background-color .18s ease, color .18s ease, border-color .18s ease, box-shadow .18s ease, opacity .18s ease, transform .18s ease;
  }
  :where(.btn, .chip):active { transform: translateY(1px); }

  /* Things that appear: tabs, menus, messages, dialogs, panels. */
  @keyframes appear { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
  @keyframes appear-soft { from { opacity: 0; } to { opacity: 1; } }
  @keyframes toast-in { from { opacity: 0; transform: translate(-50%, 10px); } to { opacity: 1; transform: translate(-50%, 0); } }
  @keyframes pop { from { opacity: 0; transform: translateY(-4px) scale(.98); } to { opacity: 1; transform: none; } }
  [data-panel], .enter, .booker-confirm, .plan-empty, .fp-start { animation: appear .24s ease both; }
  .fp-menu-list { animation: pop .16s ease both; transform-origin: top right; }
  .fp-conflict { animation: appear-soft .2s ease both; }
  .toast { animation: toast-in .22s ease both; }
  dialog[open] { animation: pop .2s ease both; }
  dialog[open]::backdrop { animation: appear-soft .2s ease both; }
  details[open] > :not(summary) { animation: appear .2s ease both; }
}

.fp-kind-note.fp-linked { background: #eef3ff; color: #1f3f9a; }

.fp-start-guide summary { display: flex; align-items: center; gap: .5rem; }
.fp-progress { margin-left: auto; font: 600 .7rem var(--sans); color: var(--brand-ink, #0b6b67); background: #dff5f4; padding: .1rem .5rem; border-radius: 999px; }

/* Booking page: filter toolbar */
.book-tools { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: .5rem 0 .75rem; }
.stepper { display: inline-flex; align-items: center; gap: .15rem; height: 2.3rem; padding: 0 .3rem 0 .75rem; border: 1px solid var(--line-strong);
  border-radius: 999px; background: var(--surface); color: var(--ink); }
.stepper-icon { display: inline-flex; margin-right: .3rem; color: var(--ink-soft); }
.stepper button { width: 1.75rem; height: 1.75rem; border: 0; border-radius: 50%; background: var(--sunk); color: var(--ink); font: 600 1rem/1 var(--sans); cursor: pointer; }
.stepper button:hover:not(:disabled) { background: var(--line); }
.stepper button:disabled { opacity: .35; cursor: default; }
.stepper-value { min-width: 4.9rem; text-align: center; font-size: .85rem; font-weight: 600; }
.tool-btn { display: inline-flex; align-items: center; gap: .45rem; height: 2.3rem; padding: 0 .95rem; border: 1px solid var(--line-strong); border-radius: 999px;
  background: var(--surface); color: var(--ink); font: 600 .85rem var(--sans); cursor: pointer; }
.tool-btn:hover { border-color: var(--ink); }
.tool-btn.on { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.tool-btn b { display: inline-grid; place-items: center; min-width: 1.25rem; height: 1.25rem; padding: 0 .3rem; border-radius: 999px; background: var(--ink); color: #fff; font-size: .7rem; }
.filter-pop { position: absolute; left: 0; top: calc(100% + .45rem); z-index: 8; width: min(380px, calc(100vw - 2.5rem)); padding: 1rem;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-lift); }
.filter-title { margin: 0 0 .65rem; font: 600 .7rem var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.filter-grid { display: flex; flex-wrap: wrap; gap: .4rem; }
.filter-grid .chip { font-size: .82rem; padding: .38rem .85rem; }
.filter-foot { display: flex; justify-content: space-between; align-items: center; margin-top: .9rem; padding-top: .8rem; border-top: 1px solid var(--line); }
.book-active { display: contents; }
.tag { display: inline-flex; align-items: center; gap: .35rem; height: 2rem; padding: 0 .55rem 0 .8rem; border: 0; border-radius: 999px;
  background: #dff5f4; color: #0b6b67; font: 600 .8rem var(--sans); cursor: pointer; }
.tag span { font-size: 1rem; line-height: 1; opacity: .7; }
.tag:hover span { opacity: 1; }
.book-count { margin: 0 0 0 auto; display: inline-flex; align-items: center; gap: .35rem; font-size: .85rem; color: var(--ink-soft); }
.book-count strong { color: var(--ink); font-size: 1rem; }
.count-dot { width: .55rem; height: .55rem; border-radius: 50%; background: #17b2ae; box-shadow: 0 0 0 3px rgba(23, 178, 174, .18); }
.count-none { color: var(--muted); font-size: .82rem; }
.plan-legend { position: absolute; left: .75rem; bottom: .75rem; z-index: 2; display: flex; gap: .7rem; padding: .35rem .7rem; border-radius: 999px;
  background: rgba(255, 255, 255, .88); backdrop-filter: blur(4px); border: 1px solid var(--line); font-size: .74rem; color: var(--ink-soft); }
.plan-legend span { display: inline-flex; align-items: center; gap: .3rem; }
.plan-legend i { display: inline-grid; place-items: center; width: .95rem; height: .95rem; border-radius: 50%; color: #fff; font-style: normal; font-size: .6rem; font-weight: 700; }
.plan-legend .free { background: #0f8a85; } .plan-legend .pending { background: #b07800; } .plan-legend .busy { background: #d9502b; }
@media (max-width: 560px) { .book-count { margin-left: 0; width: 100%; } }
@media (prefers-reduced-motion: no-preference) { .filter-pop:not([hidden]) { animation: pop .16s ease both; transform-origin: top left; } }
@media (max-width: 560px) { .plan-legend { position: static; width: fit-content; margin: 0 0 .4rem; } }

/* Booking page: find, preview card, turn, time scrubber, desk groups */
.find { position: relative; display: inline-flex; align-items: center; flex: 1 1 13rem; max-width: 17rem; }
.find svg { position: absolute; left: .8rem; color: var(--muted); pointer-events: none; }
.find input { width: 100%; height: 2.3rem; padding: 0 .9rem 0 2.3rem; border-radius: 999px; font-size: .85rem; }
.find-list { position: absolute; left: 0; right: 0; top: calc(100% + .35rem); z-index: 9; margin: 0; padding: .3rem; list-style: none;
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm); box-shadow: var(--shadow-lift); min-width: 15rem; }
.find-list li { display: grid; gap: .05rem; padding: .5rem .7rem; border-radius: var(--radius-xs); cursor: pointer; font-size: .86rem; }
.find-list li span { font-size: .75rem; color: var(--muted); }
.find-list li[aria-selected="true"], .find-list li:hover { background: var(--sunk); }
.find-list .find-none { cursor: default; color: var(--muted); }
.peek-card { position: absolute; z-index: 6; width: 15.5rem; overflow: hidden; pointer-events: none; background: var(--surface);
  border: 1px solid var(--line); border-radius: var(--radius-sm); box-shadow: var(--shadow-lift); border-top: 4px solid #9aa1ad; }
.peek-card.peek-free { border-top-color: #17b2ae; } .peek-card.peek-pending { border-top-color: #f9b121; } .peek-card.peek-busy { border-top-color: #f0643c; }
.peek-card img { display: block; width: 100%; height: 7.5rem; object-fit: cover; }
.peek-body { display: grid; gap: .25rem; padding: .7rem .85rem .8rem; }
.peek-body strong { font: 700 .98rem var(--sans); color: var(--ink); }
.peek-facts { font-size: .78rem; color: var(--ink-soft); }
.peek-state { font-size: .8rem; font-weight: 600; color: #6b7280; }
.peek-free .peek-state { color: #0b6b67; } .peek-pending .peek-state { color: #8a5d00; } .peek-busy .peek-state { color: #b8401f; }
.peek-tags { display: flex; flex-wrap: wrap; gap: .25rem; margin-top: .15rem; }
.peek-tags i { font-style: normal; font-size: .7rem; padding: .1rem .45rem; border-radius: 999px; background: var(--sunk); color: var(--ink-soft); }
.peek-hint { font-size: .7rem; color: var(--muted); margin-top: .2rem; }
@media (prefers-reduced-motion: no-preference) { .peek-card:not([hidden]) { animation: appear-soft .14s ease both; } }
.iso-group { cursor: pointer; }
.iso-group.static { cursor: default; }
.iso-group:hover .pill-face { fill: #1d3a66; }
.scrub { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; margin-top: .6rem; padding: .55rem .8rem; border-radius: 999px;
  background: var(--surface); border: 1px solid var(--line); }
.scrub:has(.scrub-note) { border-radius: var(--radius-sm); }
.scrub-note { font-size: .8rem; color: var(--muted); }
.scrub-day { display: inline-flex; align-items: center; gap: .3rem; }
.scrub-day strong { min-width: 5.6rem; text-align: center; font-size: .84rem; }
.scrub-day .icon-btn { width: 1.8rem; height: 1.8rem; font-size: 1rem; }
.scrub-track { flex: 1 1 10rem; display: grid; gap: .1rem; }
.scrub-track input[type=range] { width: 100%; height: 1.2rem; margin: 0; background: transparent; accent-color: #17b2ae; cursor: pointer; padding: 0; border: 0; }
.scrub-scale { display: flex; justify-content: space-between; font-size: .66rem; color: var(--muted); }
.scrub-time { font: 700 .9rem var(--sans); color: var(--ink); min-width: 6.5rem; text-align: right; }
@media (max-width: 560px) { .scrub { border-radius: var(--radius-sm); } .scrub-track { flex-basis: 100%; order: 3; } .find { max-width: none; flex-basis: 100%; } }
.find svg { width: 16px; height: 16px; top: 50%; transform: translateY(-50%); }
#turn { cursor: ew-resize; touch-action: none; }
#turn:active { cursor: grabbing; background: var(--sunk); }
#turn { user-select: none; -webkit-user-select: none; }

/* Booking page: a room with desks – whole room or a desk */
.focus-card { position: absolute; left: .75rem; right: .75rem; top: .75rem; margin-inline: auto; z-index: 7; width: min(30rem, calc(100% - 1.5rem));
  display: grid; gap: .6rem; padding: .85rem 1rem .9rem; background: var(--surface); border: 1px solid var(--line);
  border-top: 4px solid var(--select, #2f5bd3); border-radius: var(--radius-sm); box-shadow: var(--shadow-lift); }
.focus-title { margin: 0; padding-right: 1.6rem; font-size: .9rem; color: var(--ink-soft); }
.focus-title strong { color: var(--ink); font-size: 1rem; }
.focus-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; }
.focus-actions .btn { display: inline-grid; gap: .05rem; text-align: left; line-height: 1.2; padding-block: .5rem; }
.focus-actions .btn span { font-size: .72rem; font-weight: 500; opacity: .85; }
.focus-or { font-size: .8rem; color: var(--muted); }
.focus-desk { display: inline-grid; gap: .05rem; font-size: .88rem; font-weight: 600; color: var(--ink); }
.focus-desk small { font-size: .72rem; font-weight: 500; color: var(--muted); }
.focus-x { position: absolute; top: .45rem; right: .55rem; width: 1.8rem; height: 1.8rem; border: 0; border-radius: 50%; background: none;
  font-size: 1.2rem; color: var(--muted); cursor: pointer; }
.focus-x:hover { background: var(--sunk); color: var(--ink); }
@media (prefers-reduced-motion: no-preference) { .focus-card:not([hidden]) { animation: appear .2s ease both; } }
@media (max-width: 560px) {
  .focus-card { top: auto; bottom: .6rem; gap: .4rem; padding: .6rem .75rem .7rem; }
  .focus-title { font-size: .8rem; } .focus-title strong { font-size: .88rem; }
  .focus-actions { gap: .45rem; flex-wrap: nowrap; }
  .focus-actions .btn { padding: .4rem .8rem; font-size: .8rem; }
  .focus-desk { font-size: .78rem; }
}

/* ---------- Booking page: the organisation's look ---------- */
.book-top { justify-content: flex-start; }
.book-top .mine-btn { margin-left: auto; }
.org-logo { height: 3.2rem; max-width: 9rem; object-fit: contain; border-radius: 10px; background: #fff; padding: .3rem; }
body.band-light > header.top, body.band-light > header.top h1 { color: var(--ink); }
body.band-light > header.top .eyebrow { color: var(--ink); opacity: .7; }
body.band-light > header.top .btn.ghost { color: var(--ink); border-color: rgba(19, 41, 75, .35); }
/* Inside someone else's website: just the booking, no site chrome. */
body.embedded { background: transparent; }
body.embedded > header.top { box-shadow: none; clip-path: none; border-radius: var(--radius); margin: .5rem; padding: 1rem 1.25rem; }
body.embedded .site-foot { display: none; }
body.embedded .book-main { padding-top: 1rem; }

/* Floors as a stack */
.floor-stack { display: flex; align-items: center; gap: .3rem; }
.floor-grid { display: grid; grid-template-rows: repeat(3, auto); grid-auto-flow: column; grid-auto-columns: max-content; gap: .15rem .3rem; }
.floor-page { width: 1.9rem; height: 1.9rem; flex: none; }
.floor-btn { display: flex; align-items: center; gap: .5rem; padding: .2rem .7rem .2rem .3rem; border: 0; border-radius: 999px; background: none;
  font: 600 .82rem var(--sans); color: var(--ink-soft); cursor: pointer; text-align: left; }
.floor-btn:hover { background: var(--sunk); }
.floor-btn[aria-pressed="true"] { color: var(--ink); background: #e3f6f5; }
.floor-slab { display: inline-flex; }

/* Booking for a team */
.team-add { margin: .2rem 0 .8rem; border-style: dashed; border-color: var(--select, #2f5bd3); color: var(--select, #2f5bd3); }
.team-add:hover { background: #eef3ff; }
.team-card { position: absolute; left: .75rem; right: .75rem; top: .75rem; margin-inline: auto; z-index: 7; width: min(32rem, calc(100% - 1.5rem));
  display: grid; gap: .5rem; padding: .75rem .9rem; background: var(--surface); border: 1px solid var(--line); border-top: 4px solid var(--select, #2f5bd3);
  border-radius: var(--radius-sm); box-shadow: var(--shadow-lift); }
.team-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; }
.team-chips { display: flex; flex-wrap: wrap; gap: .3rem; }
.team-chips .tag { cursor: default; background: #e7edfb; color: #1f3f9a; }
.team-chips .tag button { border: 0; background: none; color: inherit; font-size: 1rem; line-height: 1; cursor: pointer; padding: 0 .1rem; }
.team-note { margin: 0; font-size: .78rem; color: var(--muted); }
.team-note.warn { color: #b8401f; font-weight: 600; }

/* Repeat every week */
.book-repeat { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem 1rem; margin: 0 0 1rem; padding: .7rem .9rem; border-radius: var(--radius-sm); background: var(--bg); }
.book-repeat .check { margin: 0; }
.book-weeks { display: inline-flex; align-items: center; gap: .45rem; margin: 0; font-size: .88rem; text-transform: none; letter-spacing: 0; }
.book-weeks input { width: 4.2rem; padding: .3rem .5rem; }
.book-form .msg.error ul { margin: .4rem 0 .6rem; padding-left: 1.1rem; font-weight: 400; }
.book-form .msg.error .btn { margin-top: .2rem; }

/* Good to know */
.book-rules { margin-top: 1.2rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.book-rules summary { cursor: pointer; font-weight: 600; font-size: .9rem; color: var(--ink); }
.book-rules dl { display: grid; grid-template-columns: max-content 1fr; gap: .45rem 1.2rem; margin: .8rem 0 .6rem; font-size: .85rem; }
.book-rules dt { color: var(--muted); font-weight: 600; }
.book-rules dd { margin: 0; color: var(--ink-soft); }
@media (max-width: 560px) { .book-rules dl { grid-template-columns: 1fr; gap: .1rem; } .book-rules dd { margin-bottom: .5rem; } }

/* My bookings dialog */
.mine-dialog form { display: grid; gap: .8rem; }
.mine-dialog h2 { margin: 0; }
.mine-dialog .muted { margin: 0; }

/* Photo gallery */
.photo-btn { padding: 0; border: 0; background: none; cursor: zoom-in; border-radius: var(--radius-xs); overflow: hidden; }
.photo-btn img { display: block; }
.gallery { width: min(1100px, calc(100vw - 1rem)); max-height: calc(100vh - 1rem); padding: 0; border: 0; background: #0f1724; color: #fff; overflow: hidden; }
.gallery::backdrop { background: rgba(8, 12, 20, .82); backdrop-filter: none; }
.gallery-top { display: flex; align-items: center; gap: 1rem; padding: .7rem 1rem; }
.gallery-count { color: #b9c3d3; font-size: .85rem; }
.gallery-x { margin-left: auto; width: 2.2rem; height: 2.2rem; border: 0; border-radius: 50%; background: rgba(255,255,255,.1); color: #fff; font-size: 1.4rem; cursor: pointer; }
.gallery-stage { position: relative; display: grid; place-items: center; height: min(75vh, 720px); }
.gallery-stage img { max-width: 100%; max-height: 100%; object-fit: contain; touch-action: pan-y; user-select: none; }
.gallery-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 2.8rem; height: 2.8rem; border: 0; border-radius: 50%;
  background: rgba(255,255,255,.14); color: #fff; font-size: 1.8rem; line-height: 1; cursor: pointer; }
.gallery-nav:hover { background: rgba(255,255,255,.26); }
.gallery-nav.prev { left: .8rem; } .gallery-nav.next { right: .8rem; }

/* The plan as a list (screen readers; the toggle appears on keyboard focus) */
.list-toggle { display: inline-block; margin-top: .7rem; }
.space-list { margin-top: .6rem; }
.space-list h3 { font-size: .95rem; margin: 0 0 .5rem; }
.space-list ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .35rem; }
.list-pick { display: grid; gap: .1rem; width: 100%; text-align: left; padding: .55rem .8rem; border: 1px solid var(--line); border-radius: var(--radius-xs);
  background: var(--surface); font: inherit; color: var(--ink); cursor: pointer; }
.list-pick span { font-size: .8rem; color: var(--muted); }
.list-pick[aria-current="true"] { border-color: var(--select, #2f5bd3); box-shadow: inset 0 0 0 1px var(--select, #2f5bd3); }
.list-pick:disabled { opacity: .55; cursor: default; }

/* My bookings page */
.mine-section { margin: 1.6rem 0; }
.mine-section h2 { font-size: 1.2rem; margin: 0 0 .7rem; }
.mine-section ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.mine-single { margin-bottom: .45rem !important; }
.mine-group { padding: .9rem 1rem; margin-bottom: .6rem; }
.mine-group-title { display: flex; flex-wrap: wrap; gap: .2rem .8rem; align-items: baseline; margin: 0 0 .6rem; }
.mine-row { display: grid; grid-template-columns: 1fr auto auto; gap: .8rem; align-items: center; padding: .7rem .9rem; border: 1px solid var(--line);
  border-radius: var(--radius-sm); background: var(--surface); text-decoration: none; color: var(--ink); }
.mine-row:hover { border-color: var(--ink); }
.mine-when { display: grid; gap: .1rem; }
.mine-when span { font-size: .85rem; color: var(--ink-soft); }
@media (max-width: 560px) { .mine-row { grid-template-columns: 1fr auto; } .mine-row > .small { grid-column: 1; } }
.booker-links { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }

/* Settings: your look */
.brand-row { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem 1.2rem; }
.brand-logo-box { display: grid; place-items: center; width: 7.5rem; height: 3.6rem; border: 1px dashed var(--line-strong); border-radius: var(--radius-xs); background: #fff; }
.brand-logo-box img { max-width: 100%; max-height: 100%; object-fit: contain; }
#brand-color { width: 3rem; height: 2.2rem; padding: .15rem; border-radius: var(--radius-xs); cursor: pointer; }
#brand-color:disabled { opacity: .4; cursor: default; }
.brand-preview { padding: .45rem .9rem; border-radius: 999px; font: 700 .85rem var(--sans); }
textarea.code { font-family: ui-monospace, Menlo, monospace; font-size: .8rem; resize: none; }
.batch-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .6rem 1rem; padding: .8rem 1rem; margin-bottom: .6rem;
  border-radius: var(--radius-sm); background: #eef3ff; border: 1px solid #c9d6f6; }
.batch-bar > div:first-child { display: grid; gap: .1rem; }
.embed-locked { display: grid; justify-items: start; gap: .6rem; }
.embed-locked p { margin: 0; }
.plan-lock { display: grid; gap: .25rem; padding: .8rem 1rem; border-radius: var(--radius-sm); background: #fff8e6; border: 1px solid #f3d892; font-size: .88rem; }
.plan-lock strong { color: #8a5d00; }

/* Settings: plan */
.plan-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .6rem 1rem; }
.plan-head h4 { margin: 0; font: 700 1.15rem var(--sans); }
.plan-dev { display: flex; align-items: center; gap: .5rem; margin: 0; font-size: .75rem; text-transform: none; letter-spacing: 0; color: var(--muted); }
.plan-dev select { width: auto; padding: .3rem .6rem; }
.plan-use, .plan-features { list-style: none; margin: .9rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem 1.4rem; font-size: .9rem; }
.plan-features li.no { color: var(--muted); }
.plan-features li.yes { color: var(--ink); }
#plan-card { display: grid; gap: .3rem; }
#plan-card .hint { margin-top: .8rem !important; }

/* Settings: opening hours */
.field-title { margin: 0 0 .6rem; font: 600 .72rem var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.week-hours { display: grid; gap: .35rem; justify-items: start; }
.week-row { display: grid; grid-template-columns: 9rem 7.5rem auto 7.5rem auto; align-items: center; gap: .5rem; }
.week-row .check { margin: 0; text-transform: none; letter-spacing: 0; font-size: .9rem; color: var(--ink); }
.week-row input[type=time] { padding: .35rem .5rem; }
.week-row .week-closed { display: none; }
.week-row.closed input[type=time], .week-row.closed > .muted:not(.week-closed) { opacity: .35; }
.week-row.closed .week-closed { display: inline; }
.closure-add { display: grid; grid-template-columns: 10rem 10rem 1fr auto; gap: .6rem; align-items: end; }
@media (max-width: 700px) { .closure-add { grid-template-columns: 1fr 1fr; } .week-row { grid-template-columns: 7rem 6.5rem auto 6.5rem; } .week-row .week-closed { display: none !important; } }
.cal-closed { position: absolute; left: 0; right: 0; background: repeating-linear-gradient(135deg, #ece9e2 0 5px, #f4f2ed 5px 10px); pointer-events: none; z-index: 1; }
.cal-closed span { position: sticky; top: .5rem; display: block; margin: .5rem .3rem; padding: .2rem .4rem; border-radius: 6px; background: rgba(255,255,255,.9); font-size: .68rem; font-weight: 600; color: var(--muted); text-align: center; }

/* ---------- Admin: schedule ---------- */
.sched-bar { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; margin-bottom: .4rem; }
.sched-day { display: flex; align-items: center; gap: .35rem; }
.sched-day input[type=date] { width: auto; padding: .4rem .6rem; }
.sched-bar .filters { margin: 0; }
.sched-actions { display: flex; gap: .5rem; margin-left: auto; }
section[data-panel="schedule"] { position: relative; }
.sched { overflow: auto; max-height: calc(100vh - 15rem); border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.sched-grid { min-width: max-content; }
.sched-head, .sched-body { display: grid; grid-template-columns: 3.4rem repeat(var(--cols), minmax(8.5rem, 1fr)); }
.sched-head { position: sticky; top: 0; z-index: 3; background: var(--surface); border-bottom: 1px solid var(--line); }
.sched-name { display: grid; gap: .05rem; padding: .55rem .6rem; border-left: 1px solid var(--line); font-size: .82rem; }
.sched-name span { font-size: .7rem; color: var(--muted); }
.sched-times { position: relative; position: sticky; left: 0; z-index: 2; background: var(--surface); }
.sched-times span { position: absolute; right: .4rem; transform: translateY(-50%); font-size: .68rem; color: var(--muted); }
.sched-col { position: relative; border-left: 1px solid var(--line); cursor: crosshair;
  background: repeating-linear-gradient(to bottom, transparent 0 71px, var(--line) 71px 72px); }
.sched-closed { position: absolute; left: 0; right: 0; background: repeating-linear-gradient(135deg, #f1efe9 0 5px, #f7f5f0 5px 10px); pointer-events: none; }
.sched-now { position: absolute; left: 0; right: 0; height: 2px; background: var(--coral, #f0643c); z-index: 1; pointer-events: none; }
.sched-block { position: absolute; left: 3px; right: 3px; z-index: 1; display: grid; align-content: start; gap: .05rem; padding: .25rem .4rem; overflow: hidden;
  border: 0; border-left: 4px solid; border-radius: 6px; text-align: left; font: inherit; font-size: .72rem; cursor: pointer; }
.sched-block strong { font-size: .76rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sched-block.approved { background: #dff5f4; border-color: #17b2ae; color: #0b5754; }
.sched-block.pending { background: #fff3d1; border-color: #f9b121; color: #7a5200; }
.sched-block.unpaid { background: #fff8e6; border-color: #f9b121; border-left-style: dashed; color: #7a5200; }
.sched-block.block { background: repeating-linear-gradient(135deg, #e6e3dc 0 6px, #eeebe5 6px 12px); border-color: #8d8778; color: #4f4a40; }
.sched-block:hover { filter: brightness(.96); }
.sched-ghost { position: absolute; left: 3px; right: 3px; z-index: 2; border-radius: 6px; background: rgba(47, 91, 211, .18); border: 2px dashed #2f5bd3;
  font-size: .72rem; font-weight: 600; color: #1f3f9a; padding: .2rem .4rem; pointer-events: none; }
.sched-pop { position: absolute; z-index: 9; width: 17rem; display: grid; gap: .45rem; padding: .9rem 1rem 1rem; background: var(--surface);
  border: 1px solid var(--line); border-radius: var(--radius-sm); box-shadow: var(--shadow-lift); }
.sched-pop h4 { margin: 0; font-size: 1.05rem; }
.sched-pop-x { position: absolute; top: .4rem; right: .5rem; border: 0; background: none; font-size: 1.2rem; color: var(--muted); cursor: pointer; }
.sched-facts { display: grid; grid-template-columns: auto 1fr; gap: .2rem .8rem; margin: .2rem 0; font-size: .82rem; }
.sched-facts dt { color: var(--muted); }
.sched-facts dd { margin: 0; overflow-wrap: anywhere; }

/* Add a booking */
.add-dialog { width: min(640px, calc(100vw - 2rem)); }
.add-dialog form { display: grid; gap: .9rem; }
.add-dialog h2 { margin: 0; }
.add-spaces { border: 1px solid var(--line); border-radius: var(--radius-sm); padding: .6rem .8rem; max-height: 12rem; overflow: auto; margin: 0; }
.add-spaces legend { font: 600 .72rem var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); padding: 0 .3rem; }
.add-group p { margin: .3rem 0; font-size: .75rem; color: var(--muted); }
.add-checks { display: flex; flex-wrap: wrap; gap: .3rem; }
.chip-check { display: inline-flex; align-items: center; gap: .35rem; margin: 0; padding: .25rem .65rem; border: 1px solid var(--line-strong); border-radius: 999px;
  font-size: .8rem; text-transform: none; letter-spacing: 0; color: var(--ink); cursor: pointer; }
.chip-check input { width: auto; margin: 0; }
.chip-check:has(input:checked) { background: var(--ink); border-color: var(--ink); color: #fff; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: .8rem; }
.inline-num { width: 4rem !important; display: inline-block; padding: .2rem .4rem !important; margin: 0 .2rem; }

/* ---------- Admin: reports ---------- */
.rep-bar { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; margin-bottom: 1rem; }
.rep-bar .filters { margin: 0; }
.rep-custom { display: flex; align-items: center; gap: .35rem; color: var(--muted); }
.rep-custom input { width: auto; padding: .35rem .5rem; }
#rep-csv { margin-left: auto; }
.rep-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: .8rem; margin-bottom: .8rem; }
.rep-card { display: grid; gap: .2rem; padding: 1rem 1.1rem; }
.rep-card span { font-size: .75rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.rep-card strong { font: 700 1.8rem var(--sans); color: var(--ink); }
.rep-card small { color: var(--muted); font-size: .78rem; }
.rep-two { display: grid; grid-template-columns: 2fr 1fr; gap: .8rem; margin-bottom: .8rem; }
.rep-two h3, .rep-table-card h3 { margin: 0 0 .8rem; font-size: 1rem; }
.rep-bars { display: grid; grid-template-columns: repeat(7, 1fr); gap: .6rem; align-items: end; }
.rep-bar-col { display: grid; justify-items: center; gap: .25rem; font-size: .78rem; }
.rep-bar-col small { color: var(--muted); font-size: .7rem; }
.rep-bar-track { width: 100%; max-width: 3rem; height: 8rem; display: flex; align-items: flex-end; border-radius: 8px; background: var(--sunk); overflow: hidden; }
.rep-bar-fill { width: 100%; background: linear-gradient(#17b2ae, #0f8a85); border-radius: 8px 8px 0 0; min-height: 2px; }
.rep-notes { margin: 0; padding-left: 1.1rem; display: grid; gap: .45rem; font-size: .9rem; }
.rep-table { width: 100%; border-collapse: collapse; font-size: .88rem; }
.rep-table th { text-align: left; font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); padding: .4rem .6rem; border-bottom: 1px solid var(--line); }
.rep-table td { padding: .5rem .6rem; border-bottom: 1px solid var(--line); }
.rep-occ { display: flex; align-items: center; gap: .5rem; min-width: 9rem; }
.rep-occ span { display: block; height: .45rem; border-radius: 999px; background: #17b2ae; }
@media (max-width: 800px) { .rep-two { grid-template-columns: 1fr; } .rep-table-card { overflow-x: auto; } }

/* Editor: locations */
.fp-locations { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .4rem; margin: -.3rem 0 .7rem; }
.fp-locations select { flex: 1; min-width: 0; padding: .35rem .6rem; font-size: .85rem; }
.book-locations { margin-top: .7rem; flex-wrap: wrap; }
.loc-row { display: grid !important; grid-template-columns: 1fr 1.4fr auto auto; gap: .6rem; align-items: center; }
.loc-row input { padding: .35rem .6rem; }
@media (max-width: 700px) { .loc-row { grid-template-columns: 1fr 1fr; } }

/* The robot check, when it needs a click */
.human-check { position: fixed; left: 50%; bottom: 1.2rem; transform: translateX(-50%); z-index: 60; }
.human-check:empty { display: none; }
.add-price { margin: 0; padding: .65rem .85rem; border-radius: var(--radius-sm); background: #e3f6f5; color: #0b5754; font-size: .86rem; }
.add-price.warn { background: #fff3d1; color: #7a5200; }

/* ---------- FloorKite brand ---------- */
.logo { display: inline-flex; align-items: center; gap: .55rem; color: var(--ink); }
.logo::after { content: none; }
.logo img { width: 34px; height: 34px; flex: none; }
.logo span { font-family: var(--display); font-weight: 800; letter-spacing: -.03em; }
.logo b { font-weight: 800; color: var(--brand); }
body.has-dark-top > header.top .logo b { color: #5fd3cf; }
/* The hero kite: drifts gently, its string trailing down to the plan */
.hero-copy { position: relative; }
.hero-kite { position: relative; width: 96px; height: 96px; margin-bottom: 1rem; color: rgba(255, 255, 255, .35); }
.hero-kite img { position: relative; z-index: 1; filter: drop-shadow(0 10px 18px rgba(0, 0, 0, .25)); }
.hero-kite-string { position: absolute; left: 60px; top: 38px; width: 420px; height: 60px; pointer-events: none; }
@media (prefers-reduced-motion: no-preference) {
  .hero-kite img { animation: kite-drift 6s ease-in-out infinite; transform-origin: 50% 70%; }
  @keyframes kite-drift { 0%, 100% { transform: translate(0, 0) rotate(-4deg); } 50% { transform: translate(6px, -8px) rotate(5deg); } }
}
.cta-kite { display: block; margin: 0 auto 1rem; filter: drop-shadow(0 10px 18px rgba(0, 0, 0, .25)); }
@media (max-width: 900px) { .hero-kite-string { display: none; } .hero-kite { width: 72px; height: 72px; } .hero-kite img { width: 72px; height: 72px; } }
/* Footer */
.site-footer { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 2rem; padding-top: 2.5rem; padding-bottom: 2rem; border-top: 1px solid var(--line); margin-top: 1rem; }
.site-footer nav { display: grid; gap: .45rem; align-content: start; font-size: .9rem; }
.site-footer nav p { margin: 0 0 .2rem; font: 700 .72rem var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.site-footer nav a { color: var(--ink-soft); text-decoration: none; }
.site-footer nav a:hover { color: var(--ink); text-decoration: underline; }
.site-footer-brand p { margin: .8rem 0 0; }
.site-footer-copy { grid-column: 1 / -1; margin: 0; padding-top: 1rem; border-top: 1px solid var(--line); }
@media (max-width: 700px) { .site-footer { grid-template-columns: 1fr 1fr; } .site-footer-brand { grid-column: 1 / -1; } }

/* Manager demo: earnings, notifications, the price card and the payout. */
.hero-earn { position: absolute; left: .8rem; top: .8rem; z-index: 9; display: grid; background: var(--ink); color: #fff; border-radius: 16px; padding: .5rem .9rem;
  box-shadow: var(--shadow-lift); transition: transform .2s; }
.hero-earn span { font-size: .68rem; letter-spacing: .08em; text-transform: uppercase; color: #c8d3e6; }
.hero-earn strong { font-family: var(--display); font-size: 1.35rem; font-variant-numeric: tabular-nums; color: #7fe0db; }
.hero-earn.bump { transform: scale(1.06); }
.hero-toasts { position: absolute; right: .8rem; top: .8rem; z-index: 9; width: min(260px, 52%); display: grid; gap: .4rem; }
.hero-toast { position: relative; display: grid; gap: .1rem; padding: .55rem .75rem .55rem .9rem; background: var(--surface); border-radius: 12px; box-shadow: var(--shadow-lift);
  font-size: .78rem; border-left: 5px solid var(--brand); animation: hero-toast .45s cubic-bezier(.2, .75, .2, 1); }
.hero-toast[data-tone="pending"] { border-left-color: var(--sun); }
.hero-toast[data-tone="free"] { border-left-color: #b9b29f; }
.hero-toast b { color: var(--ink); }
.hero-toast span { color: var(--ink-soft); }
.hero-toast em { position: absolute; right: .7rem; top: .5rem; font-style: normal; font-weight: 700; color: #0f8a85; font-size: .9rem; }
.hero-toast-actions { display: flex; gap: .35rem; margin-top: .3rem; }
.hero-toast-actions i { font-style: normal; font-size: .72rem; padding: .2rem .7rem; border-radius: 999px; background: var(--sunk); color: var(--ink-soft); transition: transform .15s; }
.hero-toast-actions i.yes { background: var(--ink); color: #fff; }
.hero-toast-actions .pressed { transform: scale(.92); }
@keyframes hero-toast { from { transform: translateX(30px); opacity: 0; } }
.hero-coin { position: absolute; z-index: 8; transform: translate(-50%, -50%); font-weight: 800; color: #0f8a85; background: #e4f6f5; border: 2px solid #0f8a85;
  border-radius: 999px; padding: .15rem .6rem; font-size: .9rem; pointer-events: none; animation: hero-coin 1.6s ease-out forwards; }
@keyframes hero-coin { 0% { opacity: 0; transform: translate(-50%, -20%) scale(.6); } 15% { opacity: 1; transform: translate(-50%, -60%) scale(1.1); }
  100% { opacity: 0; transform: translate(-50%, -260%) scale(1); } }
.hero-label { font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft); }
.hero-row { display: flex; gap: .4rem; align-items: center; }
.hero-money { width: 4.5rem; flex: none; }
.hero-money::before { content: "€ "; color: var(--ink-soft); }
.hero-money:empty::before { content: "€ 0"; }
.hero-seg { display: flex; background: var(--sunk); border-radius: 999px; padding: .15rem; }
.hero-seg i { font-style: normal; font-size: .72rem; padding: .2rem .5rem; border-radius: 999px; color: var(--ink-soft); }
.hero-seg i.on { background: #fff; color: var(--ink); box-shadow: 0 1px 2px rgba(0, 0, 0, .12); }
.hero-switch { display: flex; align-items: center; gap: .5rem; font-size: .8rem; color: var(--ink-soft); }
.hero-switch i { width: 2rem; height: 1.15rem; border-radius: 999px; background: var(--line-strong); position: relative; transition: background .2s; flex: none; }
.hero-switch i::after { content: ""; position: absolute; left: .15rem; top: .15rem; width: .85rem; height: .85rem; border-radius: 50%; background: #fff; transition: transform .2s; }
.hero-switch.on i { background: var(--brand); }
.hero-switch.on i::after { transform: translateX(.85rem); }
.hero-card[data-tone="pay"], .hero-card[data-tone="done"] { border-top-color: var(--brand); left: 50%; right: auto; bottom: 50%; transform: translate(-50%, 50%); width: min(300px, 80%); }
.hero-card[data-tone="pay"].show, .hero-card[data-tone="done"].show { animation: none; }
.hero-big { font-family: var(--display); font-size: 2.2rem; line-height: 1.1; color: var(--ink); font-variant-numeric: tabular-nums; }
.hero-bar { height: .45rem; border-radius: 999px; background: var(--sunk); overflow: hidden; }
.hero-bar i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--brand), #0f8a85); border-radius: inherit; transition: width 1.7s cubic-bezier(.4, 0, .2, 1); }
.hero-card.paying .hero-bar i { width: 100%; }
.hero-payout { font-size: .82rem; color: var(--ink-soft); }
.hero-payout b { color: #0f8a85; }

/* The visitor demo further down the page. */
.visitor-demo { display: grid; grid-template-columns: minmax(0, 4.4fr) minmax(0, 7.6fr); gap: 3rem; align-items: center; padding-top: 4rem; padding-bottom: 4rem; }
@media (max-width: 960px) { .visitor-demo { grid-template-columns: 1fr; gap: 2rem; } }
@media (max-width: 560px) {
  .hero-toasts { right: .3rem; top: .3rem; width: 56%; gap: .25rem; }
  .hero-toast { padding: .3rem .45rem .3rem .55rem; font-size: .62rem; border-left-width: 3px; border-radius: 8px; }
  .hero-toast:nth-child(n+3) { display: none; }
  .hero-toast em { font-size: .66rem; right: .4rem; top: .3rem; }
  .hero-toast-actions i { font-size: .6rem; padding: .1rem .5rem; }
  .hero-earn { left: .3rem; top: .3rem; padding: .25rem .55rem; border-radius: 10px; }
  .hero-earn span { font-size: .55rem; }
  .hero-earn strong { font-size: .95rem; }
  .hero-coin { font-size: .7rem; }
  .hero-label { font-size: .6rem; }
  .hero-money { width: 3.2rem; }
  .hero-seg i { font-size: .6rem; padding: .1rem .35rem; }
  .hero-switch { font-size: .66rem; }
  .hero-big { font-size: 1.5rem; }
  .hero-payout { font-size: .68rem; }
  .hero-card[data-tone="pay"], .hero-card[data-tone="done"] { width: 82%; }
}

/* Features: one side for the people booking, one for the people managing. Each feature has a tiny
   picture of the screen it's about. */
.two-sides { padding-top: 4rem; padding-bottom: 4rem; }
.sides { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.side { border-radius: 28px; padding: 1.8rem 1.8rem 1.2rem; }
.side-guest { background: #eaf7f6; }
.side-admin { background: var(--ink); color: #fff; }
.side-head { display: flex; align-items: center; gap: .7rem; font-size: 1.35rem; margin: 0 0 1rem; }
.side-admin .side-head { color: #fff; }
.side-icon { display: grid; place-items: center; width: 2.3rem; height: 2.3rem; border-radius: 12px; font-size: 1.1rem; background: var(--brand); color: #fff; }
.side-admin .side-icon { background: var(--sun); color: var(--ink); }
.feat-list { list-style: none; margin: 0; padding: 0; }
.feat-list li { display: grid; grid-template-columns: minmax(0, 1fr) 14.5rem; gap: 1.4rem; align-items: center; padding: 1.05rem 0; border-top: 1px solid rgba(19, 41, 75, .1); }
.side-admin .feat-list li { border-top-color: rgba(255, 255, 255, .12); }
.feat-list li:first-child { border-top: 0; }
.feat-list h4 { font-family: var(--display); font-size: 1.08rem; margin: 0 0 .2rem; letter-spacing: -.01em; }
.feat-list p { margin: 0; font-size: .93rem; line-height: 1.5; color: var(--ink-soft); }
.side-admin .feat-list p { color: #c8d3e6; }

/* The little pictures. */
.vig { display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; justify-content: flex-end; font-size: .74rem; }
.vchip { padding: .2rem .55rem; border-radius: 999px; font-weight: 600; }
.vchip.free { background: #c9eeea; color: #0b6b67; } .vchip.pending { background: #feebb8; color: #7a5300; } .vchip.busy { background: #fcd6ca; color: #a33a1c; }
.vfield { width: 100%; padding: .3rem .55rem; border: 1px solid var(--line-strong); border-radius: 8px; background: #fff; color: var(--ink-soft); }
.vbtn { padding: .3rem .8rem; border-radius: 999px; background: var(--ink); color: #fff; font-weight: 600; }
.vweek span { width: 1.95rem; padding: .3rem 0; text-align: center; border-radius: 8px; background: #fff; color: var(--ink-soft); }
.vweek span.on { background: var(--select); color: #fff; }
.vpay span { padding: .2rem .5rem; border-radius: 6px; background: #fff; border: 1px solid var(--line); color: var(--ink); font-weight: 600; }
.vreq { flex-wrap: nowrap; justify-content: space-between; background: #fff; color: var(--ink-soft); border-radius: 10px; padding: .35rem .35rem .35rem .6rem; border-left: 4px solid var(--sun); }
.vreq b { color: var(--ink); }
.vreq > span:first-child { white-space: nowrap; }
.vreq { width: 100%; }
.side-admin .vbtn { background: var(--brand); color: var(--ink); }
.vbtn.sm { padding: .2rem .6rem; }
.vsched { display: grid; grid-template-columns: 1fr; gap: .3rem; width: 100%; }
.vsched i { display: block; height: .55rem; border-radius: 999px; background: linear-gradient(90deg, transparent var(--a), var(--brand) var(--a), var(--brand) var(--b), transparent var(--b)), rgba(255, 255, 255, .12); }
.vsched i.y { background: linear-gradient(90deg, transparent var(--a), var(--sun) var(--a), var(--sun) var(--b), transparent var(--b)), rgba(255, 255, 255, .12); }
.vsched i.c { background: linear-gradient(90deg, transparent var(--a), var(--coral) var(--a), var(--coral) var(--b), transparent var(--b)), rgba(255, 255, 255, .12); }
.vchart { flex-wrap: nowrap; align-items: flex-end; height: 3rem; gap: .25rem; }
.vchart i { width: .7rem; height: var(--h); border-radius: 4px 4px 2px 2px; background: var(--brand); opacity: .85; }
.vchart i:nth-child(4) { background: var(--sun); opacity: 1; }
.vchart b { margin-left: .4rem; align-self: center; font-family: var(--display); font-size: 1.15rem; color: #7fe0db; }
.vcode code { display: block; width: 100%; padding: .4rem .55rem; border-radius: 8px; background: rgba(255, 255, 255, .08); color: #7fe0db; font-size: .72rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.also { list-style: none; padding: 0; margin: 1.6rem 0 0; display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; }
.also li { padding: .45rem .95rem; border-radius: 999px; background: var(--surface); border: 1px solid var(--line); font-size: .88rem; color: var(--ink-soft); }
.also li::before { content: "✓"; color: #0f8a85; font-weight: 700; margin-right: .4rem; }

@media (max-width: 1100px) { .feat-list li { grid-template-columns: 1fr; gap: .6rem; } .vig { justify-content: flex-start; } }
@media (max-width: 860px) { .sides { grid-template-columns: 1fr; } .feat-list li { grid-template-columns: minmax(0, 1fr) 14rem; } .vig { justify-content: flex-end; } }
@media (max-width: 520px) { .side { padding: 1.3rem 1.1rem .8rem; border-radius: 22px; } .feat-list li { grid-template-columns: 1fr; gap: .55rem; } .vig { justify-content: flex-start; } }

/* Pricing: four plans side by side, two by two on tablets, one under the other on phones. */
.pricing-lead { margin: -1.2rem 0 1.6rem; max-width: 38rem; }
.plan .price-custom { font-size: 2.1rem; height: 2.8rem; display: flex; align-items: flex-end; }
.plan li { padding-left: 1.35rem; text-indent: -1.35rem; }
.plan-enterprise { background: linear-gradient(160deg, #fff 55%, #eaf7f6); }
@media (max-width: 1180px) { .plans { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .plans { grid-template-columns: 1fr; } }

/* Platform admin (/app/platform/) */
.pf-badge { background: var(--sun); color: var(--ink); }
.pf-tools { display: flex; flex-wrap: wrap; gap: .8rem; align-items: center; margin-bottom: 1rem; }
.pf-tools input[type=search] { flex: 1 1 18rem; max-width: 26rem; }
.pf-run { display: flex; gap: .5rem; align-items: center; font-size: .88rem; }
.pf-run input { width: auto; }
.pf-table-card { padding: .4rem .6rem; overflow-x: auto; }
.pf-table th.num, .pf-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.pf-table td { vertical-align: top; }
.pf-row { cursor: pointer; }
.pf-row:hover, .pf-row:focus-visible { background: var(--sunk); outline: none; }
.pf-sort { background: none; border: 0; padding: 0; font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; cursor: pointer; }
.pf-warn { color: var(--bad, #c0392b); font-weight: 600; }
.pf-plan { font-weight: 600; }
.pf-plan-starter { background: var(--sunk); color: var(--ink-soft); }
.pf-plan-studio { background: #e4f6f5; color: #0b6b67; }
.pf-plan-business { background: var(--ink); color: #fff; }
.pf-plan-enterprise { background: #fff4db; color: #7a5300; }
.pf-plans { list-style: none; margin: 0; padding: 0; display: grid; gap: .7rem; }
.pf-plans li { display: grid; grid-template-columns: 6.5rem 1fr 2rem; gap: .7rem; align-items: center; }
.pf-plans strong { text-align: right; font-variant-numeric: tabular-nums; }
.pf-plan-bar { height: .55rem; border-radius: 999px; background: var(--sunk); overflow: hidden; }
.pf-plan-bar i { display: block; height: 100%; background: #0f8a85; border-radius: 999px; }
.pf-chart { position: relative; }
.pf-chart svg { width: 100%; height: auto; display: block; }
.pf-bar { fill: #0f8a85; }
.pf-hit { fill: transparent; cursor: default; outline: none; }
.pf-hit:hover, .pf-hit:focus { fill: rgba(19, 41, 75, .05); }
.pf-grid { stroke: var(--line); stroke-width: 1; }
.pf-axis { stroke: var(--line-strong); stroke-width: 1; }
.pf-label { font: 11px var(--sans); fill: var(--muted); }
.pf-tip { position: absolute; top: -.4rem; transform: translate(-50%, -100%); background: var(--ink); color: #fff; font-size: .78rem;
  padding: .3rem .6rem; border-radius: 8px; white-space: nowrap; pointer-events: none; }
.pf-drawer { margin: 0 0 0 auto; height: 100vh; max-height: 100vh; width: min(560px, 100vw); border: 0; border-radius: 24px 0 0 24px; padding: 1.6rem;
  overflow-y: auto; box-shadow: var(--shadow-lift); }
.pf-drawer::backdrop { background: rgba(19, 41, 75, .35); }
.pf-drawer h3 { font-size: 1rem; margin: 1.6rem 0 .6rem; }
.pf-drawer-head { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; }
.pf-mini { margin-top: 1.2rem; grid-template-columns: repeat(3, 1fr); }
.pf-mini strong { font-size: 1.3rem; }
.pf-list li { display: flex; justify-content: space-between; gap: .8rem; flex-wrap: wrap; padding: .45rem 0; border-bottom: 1px solid var(--line); }
@media (max-width: 760px) { .pf-drawer { border-radius: 0; width: 100vw; } .pf-mini { grid-template-columns: 1fr 1fr 1fr; } }
.vat-choice { border: 1px solid var(--line); border-radius: var(--radius-sm); padding: .9rem 1rem 1rem; margin: 0; display: grid; gap: .8rem; }
.vat-choice legend { font-size: .78rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft); padding: 0 .3rem; }
.pf-sub { font-size: .95rem; margin: 0 0 .4rem; }
.paper-row { display: flex; justify-content: space-between; gap: .8rem; flex-wrap: wrap; align-items: center; }
.fp-vat { display: flex; align-items: center; gap: .6rem; font-size: .85rem; } .fp-vat select { flex: 1; }
/* Billing: document kinds */
.pill.doc-receipt { background: #e4f6f5; color: #0b6b67; }
.pill.doc-refund { background: #fcd6ca; color: #a33a1c; }
.pill.doc-plan, .pill.doc-fees { background: #eef1fb; color: var(--ink); }
#bill-month { width: auto; }
.pill.doc-plan, .pill.doc-fees, .pill.doc-receipt, .pill.doc-refund { white-space: nowrap; }
/* Billing on a phone: each document is a small card instead of a table row. */
@media (max-width: 720px) {
  #bill-table thead { display: none; }
  #bill-table, #bill-table tbody { display: block; }
  #bill-table .doc-row { display: grid; grid-template-columns: 1fr auto; gap: .25rem .8rem; padding: .85rem .2rem; border-bottom: 1px solid var(--line); }
  #bill-table .doc-row td { display: block; padding: 0; border: 0; text-align: left; }
  #bill-table .doc-kind { grid-column: 1; grid-row: 1; display: flex !important; gap: .5rem; align-items: center; }
  #bill-table .doc-kind div { margin: 0 !important; }
  #bill-table .doc-amount { grid-column: 2; grid-row: 1; text-align: right; justify-self: end; font-weight: 700; }
  #bill-table .doc-for { grid-column: 1 / -1; grid-row: 2; }
  #bill-table .doc-when { grid-column: 1; grid-row: 3; color: var(--ink-soft); }
  #bill-table .doc-vat { grid-column: 2; grid-row: 3; align-self: center; text-align: right; color: var(--muted); }
  #bill-table .doc-vat::before { content: attr(data-label) " "; }
  #bill-table .doc-who { grid-column: 1; grid-row: 4; color: var(--ink-soft); align-self: center; }
  #bill-table .doc-pdf { grid-column: 2; grid-row: 4; justify-self: end; }
  #bill-month { flex: 1; }
}
