/* Siam Booking · landing page styles (v2.1, B2B finishing pass).
   Light, one accent (lagoon teal), Geist, a 12-column grid and a lot of air.
   One design system for the page and for every product mockup:
   radii  --r-xl 20 (big frames) · --r-lg 14 (cards, app windows) · --r-md 10 (inner cards, buttons, inputs) · --r-sm 6 (badges, cells)
   shadow --sh-1 (resting card) · --sh-2 (panel) · --sh-3 (hero / pinned window)
   motion transform and opacity only. */

:root {
  --gut: clamp(1rem, 4vw, 2.5rem);
  --max: 1200px;
  --nav-h: 64px;
  --sec: clamp(4.5rem, 9vw, 7.5rem);

  --sc-canvas: var(--bg);
  --sc-ink: var(--ink);
  --sc-ink-soft: var(--ink-2);
  --sc-font-text: var(--font);
  --sc-font-display: var(--font);
}

body { background: var(--bg); color: var(--ink); font-size: 1rem; line-height: 1.55; -webkit-font-smoothing: antialiased; }
a { color: inherit; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--r-sm); }
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: 1rem; top: 0.75rem; z-index: 300; background: var(--ink); color: var(--bg); padding: 0.55rem 0.9rem; border-radius: var(--r-md); transform: translateY(-200%); }
.skip:focus { transform: none; }

.ic { width: 1.25rem; height: 1.25rem; flex: none; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.ic--sm { width: 1rem; height: 1rem; }
.ic--xs { width: 0.85rem; height: 0.85rem; stroke-width: 2; }

.wrap { width: 100%; max-width: calc(var(--max) + 2 * var(--gut)); margin: 0 auto; padding: 0 var(--gut); }

/* ------------------------------------------------------------- type -- */
.eyebrow { margin: 0 0 0.9rem; font-size: 0.8125rem; font-weight: 500; letter-spacing: 0.02em; color: var(--accent); }
.h1 { margin: 0; font-size: clamp(2.1rem, 1.3rem + 2.4vw, 3.3rem); line-height: 1.04; letter-spacing: -0.038em; font-weight: 600; text-wrap: balance; }
.h2 { margin: 0; font-size: clamp(1.875rem, 1.2rem + 2.1vw, 3rem); line-height: 1.06; letter-spacing: -0.034em; font-weight: 600; text-wrap: balance; }
.h2--sm { font-size: clamp(1.5rem, 1.15rem + 1vw, 2rem); }
.h3 { margin: 0; font-size: 1.1875rem; line-height: 1.3; letter-spacing: -0.015em; font-weight: 600; }
.lede { margin: 1.1rem 0 0; font-size: clamp(1.0625rem, 1rem + 0.25vw, 1.1875rem); line-height: 1.55; color: var(--ink-2); max-width: 34rem; text-wrap: pretty; }
.lede--sm { font-size: 1.0625rem; }
.link { color: var(--accent); font-weight: 500; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.link:hover { color: var(--accent-deep); }
.tag { display: inline-flex; align-items: center; font-style: normal; font-family: var(--mono); font-size: 0.6875rem; font-weight: 400; letter-spacing: 0.02em; text-transform: uppercase; color: var(--muted); background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 0 0.4rem; line-height: 1.25rem; white-space: nowrap; }

.h1, .h2, .h3 { font-kerning: normal; font-feature-settings: "kern"; text-rendering: optimizeLegibility; }
.kicker { margin: 0 0 1.25rem; max-width: 30rem; font-size: 0.9375rem; line-height: 1.45; font-weight: 500; color: var(--ink-2); text-wrap: balance; }
.h1--hero { font-size: clamp(2.5rem, 1rem + 4.3vw, 4.75rem); line-height: 0.98; letter-spacing: -0.04em; }
.h1--hero span { display: block; color: var(--accent); }

/* ---------------------------------------------------------- buttons -- */
.btn { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 0.45rem; height: 2.5rem; padding: 0 1rem; border-radius: var(--r-md); font: 500 0.9375rem/1 var(--sc-font-text); text-decoration: none; border: 1px solid transparent; white-space: nowrap; cursor: pointer; transition: transform 160ms var(--ease); }
.btn:active { transform: translateY(1px); }
.btn .ic { transition: transform 200ms var(--ease); }
.btn:hover .ic { transform: translateX(2px); }
.btn--lg { height: 3rem; padding: 0 1.3rem; font-size: 1rem; }
.btn--block { width: 100%; }
.btn--primary { background: var(--accent); color: var(--accent-ink); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), 0 1px 2px rgba(7, 80, 76, 0.3); }
.btn--primary:hover { background: var(--accent-deep); }
.btn--ghost { background: var(--surface); color: var(--ink); border-color: var(--line-2); box-shadow: var(--sh-1); }
.btn--ghost:hover { border-color: var(--ink-2); }
.btn--quiet { background: transparent; color: var(--ink-2); }
.btn--quiet:hover { color: var(--ink); background: var(--surface-2); }
.btn--light { background: #fff; color: #0E1715; }
.btn--light:hover { background: var(--accent-soft); }
.btn--outline-light { background: transparent; color: #fff; border-color: rgba(255, 255, 255, 0.4); }
.btn--outline-light:hover { border-color: #fff; }
.cta-row { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 2rem; }

/* -------------------------------------------------------------- nav -- */
.nav { position: fixed; inset: 0 0 auto 0; z-index: 100; height: var(--nav-h); background: var(--nav-bg); backdrop-filter: saturate(1.4) blur(14px); -webkit-backdrop-filter: saturate(1.4) blur(14px); border-bottom: 1px solid var(--line); }
.nav__in { height: 100%; display: flex; align-items: center; gap: 2.25rem; }
.brand { display: inline-flex; align-items: center; gap: 0.55rem; text-decoration: none; font-weight: 600; letter-spacing: -0.02em; font-size: 1.0625rem; }
.brand__mark { width: 26px; height: 26px; flex: none; }
.brand__mark rect { fill: var(--accent); }
.brand__mark path { fill: none; stroke: var(--accent-ink); stroke-width: 2.2; stroke-linecap: round; }
.nav__links { display: flex; align-items: center; gap: 0.25rem; margin-right: auto; }
.nav__links > a { text-decoration: none; font-size: 0.9375rem; color: var(--ink-2); padding: 0.45rem 0.7rem; border-radius: var(--r-md); }
.nav__links > a:hover { color: var(--ink); background: var(--surface-2); }
.nav__links > a[aria-current="page"] { color: var(--ink); font-weight: 500; }
.nav__menu-cta { display: none; }
.nav__cta { display: flex; gap: 0.35rem; }
.nav__burger { display: none; width: 2.75rem; height: 2.75rem; align-items: center; justify-content: center; margin-right: -0.5rem; border: 0; border-radius: var(--r-md); background: transparent; color: var(--ink); cursor: pointer; }
.nav__burger:hover { background: var(--surface-2); }

/* ------------------------------------------------------------- hero -- */
.hero__stage { display: flex; align-items: center; padding-top: var(--nav-h); }
.hero__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 2rem; align-items: center; }
.hero__copy { grid-column: 1 / span 6; position: relative; z-index: 2; }
/* The visual: the photo as a tall framed panel, the dashboard tilted in front
   of it, two floating layers. The tilt settles flat as the hero plays
   (--sc-p is the act progress the engine writes on .hero). */
.hero__visual { --p: var(--sc-p, 0); grid-column: 7 / span 6; position: relative; height: min(68vh, 600px); perspective: 1800px; perspective-origin: 30% 60%; }
.hero__photo { position: absolute; inset: 0 calc(-1 * min(var(--gut), 3rem)) 16% 20%; margin: 0; border-radius: var(--r-xl); overflow: hidden; background: var(--surface-2); box-shadow: 0 1px 0 rgba(var(--shade), 0.04), 0 40px 80px -40px rgba(var(--shade), 0.45); }
.hero__photo :is(video, img) { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero__photo::after { content: ""; position: absolute; inset: 0; border-radius: inherit; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14); background: linear-gradient(180deg, rgba(0, 0, 0, 0) 55%, rgba(0, 0, 0, 0.35)); pointer-events: none; }
.hero__cap { position: absolute; z-index: 2; right: 1rem; top: 0.9rem; font: 500 0.75rem/1 var(--mono); letter-spacing: 0.02em; color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); }
.app--hero { position: absolute; left: -2.5rem; bottom: 0; width: 90%; transform-origin: 0% 70%; transform: rotateY(calc(-11deg * (1 - var(--p)))) rotateX(calc(4deg * (1 - var(--p)))) translateZ(0); box-shadow: 0 1px 2px rgba(var(--shade), 0.06), 0 8px 16px -6px rgba(var(--shade), 0.10), 0 28px 48px -18px rgba(var(--shade), 0.22), 0 70px 110px -40px rgba(var(--shade), 0.35); will-change: transform; }
.float { position: absolute; z-index: 3; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: 0 1px 2px rgba(var(--shade), 0.06), 0 18px 40px -16px rgba(var(--shade), 0.30); font-size: 0.8125rem; line-height: 1.4; will-change: transform; }
.float--msg { top: 3%; left: 4%; width: 15.5rem; padding: 0.7rem 0.85rem 0.8rem; transform: translate3d(0, calc(-28px * var(--p)), 0); }
.float--msg p { margin: 0.35rem 0 0; color: var(--ink); }
.float__who { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.75rem; font-weight: 500; color: var(--accent-deep); }
.float--paid { right: -1.5rem; bottom: 5%; display: flex; align-items: center; gap: 0.65rem; padding: 0.6rem 0.9rem 0.6rem 0.6rem; font-variant-numeric: tabular-nums; transform: translate3d(0, calc(-44px * var(--p)), 0); }
.float__ic { display: grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: var(--r-md); background: var(--accent-soft); color: var(--accent-deep); }
.float--paid > span:nth-child(2) { display: grid; }
.float--paid b { font-weight: 600; }
.float--paid small { color: var(--muted); font-size: 0.75rem; }
.float--paid strong { margin-left: 0.4rem; font: 500 1rem/1 var(--mono); }
.proof { list-style: none; margin: 1.5rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; font-size: 0.875rem; color: var(--ink-2); }
.proof li { display: inline-flex; align-items: center; gap: 0.4rem; }
.proof .ic { color: var(--accent); }

/* ------------------------------------------------ app design system -- */
.app { font-variant-numeric: tabular-nums; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--sh-3); overflow: hidden; font-size: 0.8125rem; line-height: 1.45; color: var(--ink); }
.app__bar { display: flex; align-items: center; gap: 0.4rem; height: 2.5rem; padding: 0 0.9rem; border-bottom: 1px solid var(--line); background: var(--surface); }
.app__bar > i { width: 9px; height: 9px; border-radius: 50%; background: var(--line); border: 1px solid var(--line-2); }
.app__bar > span { margin-left: 0.6rem; font-weight: 500; color: var(--ink-2); white-space: nowrap; }
.app__bar > .tag { margin-left: auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.app__body { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); }
.app__side { display: flex; flex-direction: column; gap: 2px; padding: 0.75rem 0.55rem; border-right: 1px solid var(--line); background: var(--surface-2); }
.app__org { display: flex; align-items: center; gap: 0.45rem; margin: 0 0 0.6rem; padding: 0 0.25rem; font-size: 0.8125rem; }
.app__side > b { display: flex; align-items: center; gap: 0.5rem; font-weight: 500; color: var(--muted); padding: 0.4rem 0.5rem; border-radius: var(--r-sm); }
.app__side > b.is-on { color: var(--ink); background: var(--surface); box-shadow: 0 0 0 1px var(--line), var(--sh-1); }
.app__main { padding: 0.95rem 1.05rem 0.6rem; min-width: 0; }
.app__head { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; margin-bottom: 0.8rem; }
.app__head strong { font-size: 1rem; letter-spacing: -0.01em; margin-right: 0.5rem; }
.app__head div span { color: var(--muted); }

/* avatars (initials) */
.av { display: inline-grid; place-items: center; flex: none; width: 1.75rem; height: 1.75rem; border-radius: 50%; background: var(--surface-2); color: var(--ink-2); border: 1px solid var(--line); font: 600 0.6875rem/1 var(--sc-font-text); letter-spacing: 0.02em; }
.av--a { background: var(--accent-soft); color: var(--accent-deep); border-color: var(--accent-line); }
.av--b { background: var(--warm-soft); color: var(--warm-ink); border-color: var(--warm-line); }
.av--org { border-radius: var(--r-sm); background: var(--accent); color: var(--accent-ink); border-color: var(--accent); }
.who { display: flex; align-items: center; gap: 0.6rem; min-width: 0; }
.who > div { display: grid; min-width: 0; }
.who b { font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.who > div > span { color: var(--muted); font-size: 0.75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.who--lg .av { width: 2.1rem; height: 2.1rem; font-size: 0.75rem; }
.who--lg b { font-size: 0.9375rem; }

/* status badges */
.badge { display: inline-flex; align-items: center; gap: 0.35rem; height: 1.35rem; padding: 0 0.5rem; border-radius: var(--r-sm); font: 500 0.71875rem/1 var(--sc-font-text); font-style: normal; white-space: nowrap; background: var(--surface-2); color: var(--ink-2); border: 1px solid var(--line); }
.badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: 0.8; }
.badge--ok { background: var(--accent-soft); color: var(--accent-deep); border-color: var(--accent-line); }
.badge--warn { background: var(--warm-soft); color: var(--warm-ink); border-color: var(--warm-line); }
.badge--muted { color: var(--muted); }
.badge--info { background: var(--info-soft); color: var(--info-ink); border-color: var(--info-line); }

/* mock buttons (not real controls) */
.ui-btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem; height: 2.1rem; padding: 0 0.85rem; border-radius: var(--r-md); background: var(--accent); color: var(--accent-ink); font-weight: 500; white-space: nowrap; }
.ui-btn--sm { height: 1.75rem; padding: 0 0.6rem; font-size: 0.75rem; border-radius: var(--r-sm); }
.ui-btn--ghost { background: var(--surface); color: var(--ink); border: 1px solid var(--line-2); }
.ui-btn--block { width: 100%; }

.kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.6rem; margin-bottom: 0.8rem; }
.kpi { border: 1px solid var(--line); border-radius: var(--r-md); padding: 0.55rem 0.7rem; }
.kpi span { display: block; color: var(--muted); font-size: 0.75rem; }
.kpi b { display: block; font-family: var(--mono); font-size: 1.25rem; font-weight: 500; line-height: 1.3; }

/* tables */
.tbl { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.tbl th { text-align: left; font-weight: 500; color: var(--muted); font-size: 0.75rem; padding: 0.5rem 0.5rem; border-bottom: 1px solid var(--line); white-space: nowrap; }
.tbl td { padding: 0.5rem; height: 2.75rem; border-bottom: 1px solid var(--line); vertical-align: middle; }
.tbl tr:last-child td { border-bottom: 0; }
.tbl .num { text-align: right; font-family: var(--mono); white-space: nowrap; }
.tbl :is(th, td):first-child { padding-left: 0; }
.tbl :is(th, td):last-child { padding-right: 0; }

.tbl--today { table-layout: fixed; }
.tbl--today .c-status { width: 6rem; }
.tbl--today .c-chan { width: 5.6rem; }
.tbl--today .c-amt { width: 4.6rem; }
.tbl--today td:nth-child(3) { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tbl--today td { position: relative; }
.tbl--today td > * , .tbl--today td > .cell { transition: opacity 360ms var(--ease); }
.tbl--today tr.is-pending td > * { opacity: 0; }
.tbl--today tr.is-pending td::after { content: ""; position: absolute; left: 0; right: 0.75rem; top: 50%; height: 0.55rem; margin-top: -0.275rem; border-radius: 4px; background: var(--surface-2); }
.tbl--today tr.is-pending td:first-child::after { right: 30%; }
.tbl--today tr.is-pending td:last-child::after { left: 20%; right: 0; }

/* --------------------------------------------------------- segments -- */
.band { padding-block: var(--sec); background: var(--surface); border-block: 1px solid var(--line); }
.sec-head { max-width: 42rem; margin-bottom: 3rem; }
.seg__tabs { position: relative; display: inline-grid; grid-template-columns: 1fr 1fr; padding: 4px; border-radius: var(--r-md); background: var(--surface-2); border: 1px solid var(--line); margin-bottom: 3rem; }
.seg__ind { position: absolute; top: 4px; bottom: 4px; left: 4px; width: calc(50% - 4px); border-radius: 7px; background: var(--surface); box-shadow: 0 1px 2px rgba(var(--shade), 0.1), 0 0 0 1px var(--line); transition: transform 280ms var(--ease); }
.seg[data-active="hostels"] .seg__ind { transform: translateX(100%); }
.seg__tabs button { position: relative; z-index: 1; display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; font: 500 0.9375rem/1 var(--sc-font-text); color: var(--ink-2); background: transparent; border: 0; height: 2.75rem; padding: 0 1.25rem; border-radius: 7px; cursor: pointer; white-space: nowrap; }
.seg__tabs button[aria-selected="true"] { color: var(--ink); }
.seg__tabs button[aria-selected="true"] .ic { color: var(--accent); }
.seg__short { display: none; }
.seg__panel { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 2rem; align-items: start; border-radius: var(--r-lg); }
.seg__panel[hidden] { display: none; }
.seg__panel:not([hidden]) { animation: seg-in 360ms var(--ease); }
@keyframes seg-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.feats { grid-column: 1 / span 5; list-style: none; margin: 0; padding: 0; display: grid; gap: 1.5rem; }
.feats li { display: flex; gap: 0.9rem; align-items: flex-start; }
.feats li > .ic { width: 2.25rem; height: 2.25rem; padding: 0.5rem; border-radius: var(--r-md); background: var(--accent-soft); color: var(--accent-deep); stroke-width: 1.6; }
.feats li > div { display: grid; gap: 0.2rem; }
.feats b { font-weight: 600; letter-spacing: -0.01em; }
.feats span { color: var(--ink-2); font-size: 0.9375rem; }
.app--panel { grid-column: 6 / span 7; box-shadow: var(--sh-2); }

.rates { padding: 1rem 1.1rem 1.1rem; }
.rates__top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 1rem; margin-bottom: 0.75rem; }
.rates__legend { display: flex; flex-wrap: wrap; gap: 0.4rem 1rem; color: var(--ink-2); }
.rates__legend span { display: inline-flex; align-items: center; gap: 0.4rem; }
.hint { color: var(--muted); font-size: 0.75rem; }
.sw { display: inline-block; width: 0.7rem; height: 0.7rem; border-radius: 3px; border: 1px solid rgba(var(--shade), 0.08); }
.sw--low { background: var(--accent-soft); }
.sw--high { background: var(--warm-soft); }
.sw--closed { background: var(--danger-soft); }
.rates__scroller { overflow-x: auto; border-radius: var(--r-sm); }
.tbl--rates { min-width: 34rem; }
.tbl--rates th, .tbl--rates td { padding: 0.2rem; height: auto; }
.tbl--rates thead th { text-align: center; }
.tbl--rates thead th:first-child { text-align: left; }
.tbl--rates thead th.is-high { color: var(--warm); }
.tbl--rates tbody th { position: sticky; left: 0; z-index: 1; background: var(--surface); font-weight: 500; color: var(--ink); font-size: 0.8125rem; white-space: nowrap; padding-right: 0.75rem; border-bottom: 1px solid var(--line); }
.tbl--rates tbody tr:last-child th { border-bottom: 0; }
.night { width: 100%; min-width: 3.3rem; height: 2.1rem; border: 0; border-radius: var(--r-sm); font: 500 0.75rem/1 var(--mono); color: var(--ink); cursor: pointer; transition: transform 120ms var(--ease); }
.night:hover { transform: translateY(-1px); box-shadow: inset 0 0 0 1px rgba(var(--shade), 0.18); }
.night--low { background: var(--accent-soft); }
.night--high { background: var(--warm-soft); }
.night[aria-pressed="true"] { background: var(--danger-soft); color: var(--danger); font-family: var(--sc-font-text); }
.minstay td { color: var(--muted); font-size: 0.75rem; text-align: center; }
.dorm { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.dorm__head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.25rem 1rem; margin-bottom: 0.6rem; }
.dorm__head b { font-weight: 500; }
.dorm__head span { color: var(--muted); }
.dorm__beds { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0.45rem; }
.bed { display: grid; place-items: center; gap: 0.1rem; height: 3rem; border-radius: var(--r-md); border: 1px dashed var(--line-2); background: var(--surface); font: 500 0.75rem/1.1 var(--sc-font-text); color: var(--muted); cursor: pointer; transition: transform 120ms var(--ease); }
.bed:hover { transform: translateY(-1px); }
.bed small { font-size: 0.6875rem; font-weight: 400; }
.bed[aria-pressed="true"] { border: 1px solid var(--accent-line); background: var(--accent-soft); color: var(--accent-deep); }

.deps { padding: 1rem 1.1rem 1.1rem; }
.deps__head { margin-bottom: 0.5rem; }
.tbl--deps td:first-child { font-family: var(--mono); font-weight: 500; }
.tbl--deps td.num { color: var(--ink-2); }
.seats { display: flex; align-items: center; gap: 0.5rem; }
.seats__bar { width: 4.5rem; height: 6px; border-radius: 3px; background: var(--surface-2); overflow: hidden; box-shadow: inset 0 0 0 1px var(--line); }
.seats__bar i { display: block; height: 100%; background: var(--accent); border-radius: 3px; }
.seats b { font-family: var(--mono); font-weight: 500; }
.chans { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.6rem; margin-top: 1rem; }
.chan { display: grid; gap: 0.3rem; align-content: start; justify-items: start; border: 1px solid var(--line); border-radius: var(--r-md); padding: 0.7rem 0.8rem; }
.chan b { font-weight: 500; }
.chan span { color: var(--muted); font-size: 0.75rem; }

/* ------------------------------------------------------ feature pin -- */
.feat__stage { display: flex; align-items: center; padding-top: var(--nav-h); }
.feat__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 2rem; align-items: center; }
.feat__rail { grid-column: 1 / span 4; }
.steps { list-style: none; margin: 1.75rem 0 0; padding: 0; display: grid; gap: 2px; }
.steps button { position: relative; display: grid; grid-template-columns: 1.25rem 1fr; column-gap: 0.75rem; row-gap: 0.3rem; width: 100%; text-align: left; font: inherit; color: inherit; background: transparent; border: 0; border-radius: var(--r-md); padding: 0.75rem 0.9rem; cursor: pointer; }
.steps button::before { content: ""; position: absolute; inset: 0; border-radius: inherit; background: var(--surface); box-shadow: 0 0 0 1px var(--line), var(--sh-1); opacity: 0; transition: opacity 240ms var(--ease); }
.steps button > * { position: relative; }
.steps button:hover::before { opacity: 0.6; }
.steps .ic { color: var(--muted); margin-top: 0.05rem; }
.steps b { font-weight: 500; color: var(--ink-2); }
.steps span { grid-column: 2; display: none; color: var(--ink-2); font-size: 0.9375rem; line-height: 1.5; }
.steps button.is-on::before { opacity: 1; }
.steps button.is-on .ic { color: var(--accent); }
.steps button.is-on b { color: var(--ink); font-weight: 600; }
.steps button.is-on span { display: block; }
.step-count { display: none; }
.app--feat { grid-column: 5 / span 8; height: min(530px, calc(100svh - var(--nav-h) - 4rem)); display: flex; flex-direction: column; }
.screens { position: relative; flex: 1; min-height: 0; }
.screen { position: absolute; inset: 0; padding: 1.1rem; overflow: hidden; background: var(--surface); opacity: 0; visibility: hidden; transform: translate3d(0, 8px, 0); transition: opacity 300ms var(--ease), transform 300ms var(--ease), visibility 0s 300ms; }
.screen.is-on { opacity: 1; visibility: visible; transform: none; transition: opacity 300ms var(--ease), transform 300ms var(--ease), visibility 0s; }

/* inbox */
.chatwrap { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 1.1rem; height: 100%; }
.chat { display: flex; flex-direction: column; min-height: 0; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface-2); overflow: hidden; }
.chat__who { display: flex; align-items: center; gap: 0.6rem; padding: 0.6rem 0.75rem; background: var(--surface); border-bottom: 1px solid var(--line); }
.chat__who > div { display: grid; margin-right: auto; min-width: 0; }
.chat__who b { font-weight: 500; }
.chat__who > div > span { color: var(--muted); font-size: 0.75rem; }
/* The thread is anchored to its newest message (page.js keeps it scrolled to
   the bottom). The spacer pushes a short thread down; a long one scrolls
   inside, with a fade at the top instead of a hard cut. */
.chat__thread { flex: 1; min-height: 0; display: flex; flex-direction: column; gap: 0.45rem; padding: 0.75rem; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: none; }
.chat__thread::-webkit-scrollbar { display: none; }
.chat__thread::before { content: ""; flex: 1 0 0; margin-bottom: -0.45rem; }
.chat__thread > * { flex: none; }
.chat__thread.is-clipped { -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 2.25rem); mask-image: linear-gradient(to bottom, transparent 0, #000 2.25rem); }
.msg { margin: 0; max-width: 86%; padding: 0.45rem 0.65rem 0.35rem; border-radius: var(--r-md); line-height: 1.4; }
.msg small { display: block; text-align: right; font-size: 0.6875rem; color: var(--muted); margin-top: 0.1rem; }
.msg--in { background: var(--surface); align-self: flex-start; border: 1px solid var(--line); border-bottom-left-radius: 3px; }
.msg--out { background: var(--accent-soft); align-self: flex-end; border: 1px solid var(--accent-line); border-bottom-right-radius: 3px; }
.msg__link { display: flex; align-items: center; gap: 0.35rem; margin-top: 0.4rem; padding: 0.35rem 0.55rem; background: var(--surface); border: 1px solid var(--accent-line); border-radius: var(--r-sm); font-weight: 500; color: var(--accent-deep); }
.msg--sys { display: inline-flex; align-items: center; gap: 0.35rem; align-self: center; background: var(--surface); border: 1px solid var(--line); color: var(--accent-deep); font-weight: 500; font-size: 0.75rem; padding: 0.25rem 0.65rem; border-radius: 99px; }
.log { display: flex; flex-direction: column; min-height: 0; }
.log__top { display: flex; flex-direction: column; gap: 0.6rem; padding-bottom: 0.8rem; margin-bottom: 0.9rem; border-bottom: 1px solid var(--line); }
.log__h { margin: 0; font-weight: 600; }
.log ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.7rem; counter-reset: s; }
.log li { display: grid; gap: 0.1rem; padding-left: 1.75rem; position: relative; counter-increment: s; }
.log li::before { content: counter(s); position: absolute; left: 0; top: 0; width: 1.2rem; height: 1.2rem; border-radius: 50%; background: var(--accent-soft); color: var(--accent-deep); font: 500 0.6875rem/1.2rem var(--mono); text-align: center; }
.log li:not(:last-child)::after { content: ""; position: absolute; left: 0.575rem; top: 1.35rem; bottom: -0.6rem; width: 1px; background: var(--line); }
.log li b { font-weight: 500; }
.log li span { color: var(--muted); font-size: 0.75rem; }
.switch { display: inline-flex; align-items: center; gap: 0.55rem; cursor: pointer; }
.switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.switch span { width: 2.2rem; height: 1.25rem; border-radius: 99px; background: var(--accent); position: relative; flex: none; }
.switch span::after { content: ""; position: absolute; top: 2px; left: 2px; width: calc(1.25rem - 4px); height: calc(1.25rem - 4px); border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(var(--shade), 0.25); transform: translateX(0.95rem); transition: transform 180ms var(--ease); }
.switch input:checked + span { background: var(--line-2); }
.switch input:checked + span::after { transform: none; }
.switch input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.switch em { font-style: normal; font-weight: 500; }

/* checkout */
.cart { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 1.25rem; height: 100%; }
.cart__items .who { padding-bottom: 0.8rem; border-bottom: 1px solid var(--line); }
.cart ul { list-style: none; margin: 0; padding: 0; }
.cart li { display: flex; align-items: center; gap: 0.7rem; padding: 0.7rem 0; border-bottom: 1px solid var(--line); }
.cart li:last-child { border-bottom: 0; }
.cart li .ic { width: 2rem; height: 2rem; padding: 0.45rem; border-radius: var(--r-md); background: var(--surface-2); color: var(--ink-2); border: 1px solid var(--line); }
.cart li > div { display: grid; margin-right: auto; min-width: 0; }
.cart li b { font-weight: 500; }
.cart li span { color: var(--muted); font-size: 0.75rem; }
.cart li strong { font-family: var(--mono); font-weight: 500; }
.cart__sum { border: 1px solid var(--line); border-radius: var(--r-md); padding: 1rem; background: var(--surface-2); align-self: start; }
.cart__total { display: flex; justify-content: space-between; align-items: baseline; }
.cart__total span { color: var(--ink-2); }
.cart__total b { font: 500 1.5rem/1 var(--mono); }
.cart__pay { margin: 0.35rem 0 0.8rem; color: var(--muted); font-size: 0.75rem; }
.cart__methods { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem; margin-bottom: 0.6rem; }
.cart__methods span { display: flex; align-items: center; justify-content: center; gap: 0.35rem; height: 2rem; border-radius: var(--r-sm); border: 1px solid var(--line-2); background: var(--surface); font-weight: 500; color: var(--ink-2); }
.cart__methods span.is-on { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); color: var(--ink); }
.split { margin-top: 0.9rem; padding-top: 0.8rem; border-top: 1px solid var(--line); }
.split__h { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.3rem; margin: 0 0 0.55rem; font-weight: 500; }
.split__bar { display: flex; gap: 3px; height: 8px; margin-bottom: 0.65rem; }
.split__bar i { flex: 1 1 0; border-radius: 3px; background: var(--accent); }
.split__bar i + i { background: var(--accent-2); }
.split__rows { margin: 0; display: grid; gap: 0.35rem; }
.split__row { display: flex; justify-content: space-between; gap: 1rem; }
.split__row dt { display: flex; align-items: center; gap: 0.45rem; min-width: 0; }
.split__row dt::before { content: ""; flex: none; width: 0.6rem; height: 0.6rem; border-radius: 2px; background: var(--accent); }
.split__row--1 dt::before { background: var(--accent-2); }
.split__row dd { margin: 0; font-family: var(--mono); }

/* payments */
.stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.6rem; margin-bottom: 0.8rem; }
.stat { border: 1px solid var(--line); border-radius: var(--r-md); padding: 0.55rem 0.75rem; }
.stat span { display: block; color: var(--muted); font-size: 0.75rem; }
.stat b { font: 500 1.125rem/1.35 var(--mono); }
.pay__methods { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.6rem; margin-bottom: 0.4rem; }
.method { display: flex; gap: 0.5rem; align-items: flex-start; border: 1px solid var(--line); border-radius: var(--r-md); padding: 0.55rem 0.65rem; background: var(--surface-2); }
.method .ic { color: var(--accent); margin-top: 0.1rem; }
.method div { display: grid; }
.method b { font-weight: 500; }
.method span { color: var(--muted); font-size: 0.71875rem; line-height: 1.35; }

/* booking page */
.bp { display: grid; gap: 0.9rem; height: 100%; grid-template-rows: auto 1fr; }
.bp__top { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; }
.bp__url { font-family: var(--mono); font-size: 0.75rem; color: var(--muted); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 0.25rem 0.5rem; background: var(--surface-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bp__tabs { display: inline-flex; gap: 2px; padding: 3px; background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--r-md); }
.bp__tabs button { font: 500 0.8125rem/1 var(--sc-font-text); height: 2rem; min-width: 2.6rem; padding: 0 0.6rem; border: 0; border-radius: 7px; background: transparent; color: var(--ink-2); cursor: pointer; }
.bp__tabs button:hover { color: var(--ink); }
.bp__tabs button[aria-pressed="true"] { background: var(--surface); color: var(--ink); box-shadow: 0 0 0 1px var(--line), var(--sh-1); }
.bp__card { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); min-height: 0; border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; }
.bp__card img { width: 100%; height: 100%; object-fit: cover; }
.bp__body { display: flex; flex-direction: column; gap: 0.55rem; padding: 1.1rem 1.2rem; }
.bp__by { margin: 0; color: var(--muted); font-size: 0.75rem; }
.bp__title { font-size: 1.25rem; line-height: 1.25; letter-spacing: -0.02em; font-weight: 600; }
.bp__price { margin: 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35rem; color: var(--ink-2); }
.bp__price b { font: 500 1.125rem/1 var(--mono); color: var(--ink); }
.bp__left { display: flex; align-items: center; gap: 0.35rem; margin: 0; color: var(--warm-ink); font-weight: 500; }
.bp__body .ui-btn { margin-top: auto; align-self: flex-start; height: 2.4rem; padding: 0 1.1rem; }

/* team */
.team__top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 0.4rem; }
.team__top p { margin: 0; display: flex; gap: 0.5rem; align-items: baseline; }
.team__top p b { font-size: 0.9375rem; }
.team__top p span { color: var(--muted); }
.tbl--team select { font: 500 0.8125rem/1 var(--sc-font-text); height: 1.9rem; padding: 0 1.6rem 0 0.55rem; border: 1px solid var(--line-2); border-radius: var(--r-sm); background: var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2356625F' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E") no-repeat right 0.35rem center / 0.9rem; color: var(--ink); -webkit-appearance: none; appearance: none; cursor: pointer; }
.tbl--team .perm { text-align: center; width: 4.2rem; }
.tick { display: inline-grid; place-items: center; width: 1.35rem; height: 1.35rem; border-radius: 50%; }
.tick--on { background: var(--accent-soft); color: var(--accent-deep); }
.tick--off { color: var(--line-2); }
.tick--off::before { content: ""; width: 0.6rem; height: 2px; border-radius: 1px; background: currentColor; }
.team__note { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; color: var(--muted); margin: 0.9rem 0 0; }

/* ------------------------------------------------------------- rest -- */
.block { padding-top: var(--sec); }
.block--last { padding-bottom: var(--sec); }

.card { position: relative; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--sh-1); transition: transform 240ms var(--ease); }
.card::after { content: ""; position: absolute; inset: -1px; border-radius: inherit; box-shadow: var(--sh-2); opacity: 0; transition: opacity 240ms var(--ease); pointer-events: none; }
@media (hover: hover) {
  .card:hover { transform: translateY(-3px); }
  .card:hover::after { opacity: 1; }
}

.how { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.how__step { padding: 1.5rem; display: flex; flex-direction: column; gap: 0.6rem; }
.how__n { width: 2rem; height: 2rem; border-radius: var(--r-md); background: var(--accent-soft); color: var(--accent-deep); font: 500 0.9375rem/2rem var(--mono); text-align: center; margin-bottom: 0.4rem; }
.how__step > p { margin: 0; color: var(--ink-2); }
.mini { margin-top: auto; padding-top: 1.1rem; display: grid; gap: 0.7rem; font-size: 0.8125rem; }
.mini__f { margin: 0; display: grid; gap: 0.3rem; color: var(--muted); }
.field { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; height: 2.25rem; border: 1px solid var(--line-2); border-radius: var(--r-md); padding: 0 0.7rem; background: var(--surface); color: var(--ink); overflow: hidden; white-space: nowrap; }
.field--link { font-family: var(--mono); font-size: 0.75rem; }
.chips { display: flex; gap: 0.4rem; }
.chips i { display: inline-flex; align-items: center; height: 1.75rem; font-style: normal; font-weight: 500; color: var(--accent-deep); background: var(--accent-soft); border: 1px solid var(--accent-line); border-radius: 99px; padding: 0 0.7rem; }

.plans { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; align-items: stretch; }
.plan { padding: 1.75rem; display: flex; flex-direction: column; }
.plan--main { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent), var(--sh-2); }
.plan__for { display: inline-flex; align-items: center; gap: 0.4rem; margin: 0 0 0.6rem; font-size: 0.8125rem; font-weight: 500; color: var(--accent); }
.plan__price { margin: 1.25rem 0 0; display: flex; align-items: baseline; gap: 0.4rem; }
.plan__price b { font: 500 2.25rem/1 var(--mono); letter-spacing: -0.02em; color: var(--ink-2); }
.plan__price span { color: var(--muted); }
.plan__tbd { margin: 0.75rem 0 0; }
.ticks { list-style: none; margin: 1.5rem 0 1.75rem; padding: 1.5rem 0 0; border-top: 1px solid var(--line); display: grid; gap: 0.65rem; font-size: 0.9375rem; color: var(--ink-2); }
.ticks li { display: flex; gap: 0.6rem; align-items: flex-start; }
.ticks .ic { color: var(--accent); margin-top: 0.2rem; stroke-width: 2.2; }
.plan .btn { margin-top: auto; }

.faq { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 2rem; }
.faq .sec-head { grid-column: 1 / span 4; }
.faq__list { grid-column: 6 / span 7; border-top: 1px solid var(--line); }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary { list-style: none; cursor: pointer; padding: 1.25rem 2.5rem 1.25rem 0; font-weight: 500; font-size: 1.0625rem; letter-spacing: -0.01em; position: relative; border-radius: var(--r-sm); }
.faq summary:hover { color: var(--accent-deep); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: ""; position: absolute; right: 0.5rem; top: 50%; width: 0.55rem; height: 0.55rem; border-right: 2px solid var(--muted); border-bottom: 2px solid var(--muted); transform: translateY(-70%) rotate(45deg); transition: transform 220ms var(--ease); }
.faq details[open] summary::after { transform: translateY(-30%) rotate(-135deg); }
.faq details p { margin: 0 0 1.35rem; color: var(--ink-2); max-width: 42rem; }

.final { text-align: center; background: var(--accent-deep); background-image: radial-gradient(120% 140% at 50% 0%, #0B6B66 0%, #07504C 55%, #053B38 100%); color: #fff; border-radius: var(--r-xl); padding: clamp(3.5rem, 7vw, 5.5rem) var(--gut); display: grid; justify-items: center; }
.final .lede { color: #D3E6E3; margin-inline: auto; }
.final .cta-row { justify-content: center; }
.final :focus-visible { outline-color: #fff; }

.foot { border-top: 1px solid var(--line); background: var(--surface); padding: 4rem 0 2rem; }
.foot__grid { display: grid; grid-template-columns: 2fr repeat(4, minmax(0, 1fr)); gap: 2rem; }
.foot__brand p { color: var(--muted); font-size: 0.875rem; max-width: 22rem; margin: 0.9rem 0 0; }
.foot nav { display: grid; align-content: start; justify-items: start; gap: 0.6rem; font-size: 0.875rem; }
.foot__h { margin: 0 0 0.3rem; font-size: 0.8125rem; font-weight: 600; letter-spacing: 0; }
.foot nav a { text-decoration: none; color: var(--ink-2); }
.foot nav a:hover { color: var(--accent-deep); text-decoration: underline; text-underline-offset: 3px; }
.foot__base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.5rem 2rem; margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid var(--line); font-size: 0.8125rem; color: var(--muted); }

/* ---------------------------------------------------------- tablet -- */
@media (max-width: 1080px) {
  .nav__cta .btn--quiet { display: none; }
  .nav__burger { display: inline-flex; }
  .nav__in { gap: 1rem; }
  .brand { margin-right: auto; }
  .nav__links { position: fixed; top: var(--nav-h); left: 0; right: 0; margin: 0; display: grid; gap: 2px; padding: 0.75rem var(--gut) 1.25rem; background: var(--surface); border-bottom: 1px solid var(--line); box-shadow: 0 24px 40px -24px rgba(var(--shade), 0.25); opacity: 0; visibility: hidden; transform: translateY(-8px); transition: opacity 200ms var(--ease), transform 200ms var(--ease), visibility 0s 200ms; }
  .nav.is-open .nav__links { opacity: 1; visibility: visible; transform: none; transition: opacity 200ms var(--ease), transform 200ms var(--ease), visibility 0s; }
  .nav__links > a { font-size: 1rem; padding: 0.8rem 0.5rem; border-radius: var(--r-md); }
  .nav__menu-cta { display: grid; grid-template-columns: 1fr 1fr; gap: 0.6rem; margin-top: 0.75rem; padding-top: 1rem; border-top: 1px solid var(--line); }
  .nav__menu-cta .btn { height: 2.75rem; }

  .app__body { grid-template-columns: minmax(0, 1fr); }
  .app__side { display: none; }
  .hero__copy { grid-column: 1 / span 6; }
  .hero__visual { grid-column: 7 / span 6; }
  .app--hero { left: 0; width: 94%; }
  .tbl--today colgroup { display: none; }
  .tbl--today tr > :nth-child(2) { width: 6rem; }
  .tbl--today tr > :nth-child(4) { width: 4.8rem; }
  .tbl--today :is(th, td):nth-child(3) { display: none; }
  .feats { grid-column: 1 / span 12; grid-template-columns: 1fr 1fr; margin-bottom: 2.5rem; }
  .app--panel { grid-column: 1 / span 12; }
  .feat__rail { grid-column: 1 / span 5; }
  .app--feat { grid-column: 6 / span 7; }
  .chatwrap, .cart { grid-template-columns: minmax(0, 1fr); }
  .log { display: none; }
  .cart { gap: 0.8rem; align-content: start; }
  .pay__methods { display: none; }
  .tbl--team .perm:nth-child(n+5) { display: none; }
  .faq .sec-head { grid-column: 1 / span 12; }
  .faq__list { grid-column: 1 / span 12; }
  .foot__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .foot__brand { grid-column: 1 / -1; }
}

/* ---------------------------------------------------------- mobile -- */
@media (max-width: 760px) {
  :root { --nav-h: 56px; --sec: 4.5rem; }
  .nav__cta .btn { height: 2.25rem; padding: 0 0.8rem; font-size: 0.875rem; }
  .brand { font-size: 1rem; }

  .hero__stage { align-items: flex-start; padding-top: calc(var(--nav-h) + 1.25rem); }
  .hero__grid { display: block; }
  .h1 { font-size: 1.9rem; }
  .eyebrow { margin-bottom: 0.6rem; font-size: 0.75rem; }
  .lede { margin-top: 0.75rem; font-size: 1rem; }
  .hero .cta-row { margin-top: 1.1rem; }
  .hero .cta-row .btn { flex: 1; }
  .proof { display: none; }
  .hero__visual { margin-top: 1.25rem; padding-top: 4.25rem; height: auto; }
  .hero__photo { inset: 0 0 auto 22%; height: 8.5rem; border-radius: var(--r-lg); }
  .app--hero { position: relative; left: 0; width: 100%; font-size: 0.75rem; box-shadow: var(--sh-2); }
  .tbl--today tbody tr:nth-child(n+4) { display: none; }
  .tbl--today tbody tr:nth-child(3) td { border-bottom: 0; }
  .app--hero .app__bar { height: 2.1rem; }
  .app--hero .app__main { padding: 0.65rem 0.75rem 0.3rem; }
  .app--hero .app__head { margin-bottom: 0.5rem; }
  .app--hero .app__head .ui-btn { display: none; }
  .app--hero .kpis { margin-bottom: 0.3rem; gap: 0.4rem; }
  .app--hero .kpi { padding: 0.3rem 0.5rem; }
  .app--hero .kpi b { font-size: 1rem; }
  .app--hero thead { display: none; }
  .app--hero .tbl td { height: 2.5rem; padding-block: 0.3rem; }
  .tbl--today tr > :nth-child(2) { width: 5.6rem; }
  .tbl--today .av { display: none; }

  .sec-head { margin-bottom: 2rem; }
  .seg__tabs { display: grid; width: 100%; margin-bottom: 2rem; }
  .seg__tabs button { height: 3rem; padding: 0 0.5rem; font-size: 0.9375rem; }
  .seg__long { display: none; }
  .seg__short { display: inline; }
  .seg__panel { display: flex; flex-direction: column; gap: 2rem; }
  .feats { grid-template-columns: 1fr; gap: 1.2rem; margin: 0; }
  .app--panel { width: 100%; }
  .rates { padding: 0.85rem; }
  .rates__scroller { margin-right: -0.85rem; -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent); mask-image: linear-gradient(90deg, #000 85%, transparent); }
  .dorm__beds { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .deps { padding: 0.85rem; }
  .chans { grid-template-columns: 1fr; }
  .tbl--deps :is(th, td):nth-child(n+3):nth-child(-n+6) { display: none; }

  .feat__stage { align-items: flex-start; padding-top: calc(var(--nav-h) + 1rem); }
  .feat__grid { display: flex; flex-direction: column; gap: 0.9rem; height: calc(100svh - var(--nav-h) - 1.75rem); }
  .feat__rail { flex: none; width: 100%; }
  .feat__rail .eyebrow { margin-bottom: 0.3rem; }
  .feat__rail .h2 { font-size: 1.4rem; }
  .steps { margin-top: 0.7rem; }
  .steps li { display: none; }
  .steps li:has(button.is-on) { display: block; }
  .steps button { padding: 0; cursor: default; }
  .steps button::before { display: none; }
  .steps span { font-size: 0.875rem; }
  .step-count { display: flex; align-items: center; gap: 0.3rem; margin: 0.55rem 0 0; font: 500 0.75rem/1 var(--mono); color: var(--muted); }
  .step-count b { color: var(--accent); font-weight: 500; }
  .app--feat { flex: 1; width: 100%; height: auto; min-height: 0; box-shadow: var(--sh-2); }
  .screen { padding: 0.8rem; }
  .cart li { padding: 0.5rem 0; }
  .cart li .ic { display: none; }
  .cart__items .who { padding-bottom: 0.5rem; }
  .cart__sum { padding: 0.8rem; }
  .cart__methods { display: none; }
  .split { margin-top: 0.7rem; padding-top: 0.6rem; }
  .stats { grid-template-columns: 1fr 1fr; }
  .stat:nth-child(3) { display: none; }
  .tbl--pay :is(th, td):nth-child(2) { display: none; }
  .tbl--pay .who > div > span { display: none; }
  .pay__methods { display: grid; grid-template-columns: 1fr 1fr; gap: 0.45rem; margin-bottom: 0.2rem; }
  .method { padding: 0.45rem 0.55rem; }
  .bp__url { display: none; }
  .bp__tabs { display: flex; width: 100%; }
  .bp__tabs button { flex: 1; min-width: 0; padding: 0 0.3rem; }
  .bp { grid-template-rows: auto auto; align-content: start; }
  .bp__card { grid-template-columns: 1fr; grid-template-rows: 11rem auto; }
  .bp__body .ui-btn { margin-top: 0.4rem; }
  .bp__body { padding: 0.8rem 0.9rem; gap: 0.4rem; }
  .bp__title { font-size: 1.0625rem; }
  .tbl--team .perm { display: none; }
  .tbl--team td { height: 2.9rem; }

  .how, .plans { grid-template-columns: 1fr; }
  .faq { display: block; }
  .foot__grid { grid-template-columns: 1fr 1fr; }
  .final { border-radius: var(--r-lg); }
  .final .cta-row .btn { flex: 1 1 100%; }
}

/* ------------------------------------------------- reduced motion -- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: 0s !important; animation: none !important; }
  .screen { transform: none; }
  .card:hover, .night:hover, .bed:hover, .btn:active { transform: none; }
}

/* ------------------------------------------------------ contact page -- */
.page { padding: calc(var(--nav-h) + clamp(3rem, 7vw, 5.5rem)) 0 var(--sec); }
.contact { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 2rem; align-items: start; }
.contact__intro { grid-column: 1 / span 5; }
.contact__points { list-style: none; margin: 2rem 0 0; padding: 0; display: grid; gap: 1.1rem; }
.contact__points li { display: flex; gap: 0.8rem; align-items: flex-start; color: var(--ink-2); }
.contact__points .ic { width: 2.25rem; height: 2.25rem; padding: 0.5rem; border-radius: var(--r-md); background: var(--accent-soft); color: var(--accent-deep); }
.contact__points b { display: block; color: var(--ink); font-weight: 600; }
.form { grid-column: 7 / span 6; padding: clamp(1.25rem, 3vw, 2rem); display: grid; gap: 1.25rem; }
.form:hover { transform: none; }
.form:hover::after { opacity: 0; }
.f { display: grid; gap: 0.4rem; margin: 0; padding: 0; border: 0; min-width: 0; }
.f > label, .f > legend { font-size: 0.875rem; font-weight: 500; color: var(--ink); padding: 0; }
.f input, .f textarea { width: 100%; font: 400 1rem/1.4 var(--sc-font-text); color: var(--ink); background: var(--surface); border: 1px solid var(--line-2); border-radius: var(--r-md); padding: 0.7rem 0.8rem; }
.f input { height: 2.9rem; }
.f textarea { min-height: 8.5rem; resize: vertical; }
.f :is(input, textarea):hover { border-color: var(--muted); }
.f :is(input, textarea):focus-visible { outline: 2px solid var(--accent); outline-offset: 0; border-color: var(--accent); }
.f [aria-invalid="true"] { border-color: var(--danger); }
.f__err { font-size: 0.8125rem; color: var(--danger); margin: 0; }
.f__err:empty { display: none; }
.opts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.5rem; margin-top: 0.4rem; }
.opt { position: relative; }
.opt input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.opt label { display: flex; align-items: center; gap: 0.55rem; height: 3rem; padding: 0 0.85rem; border: 1px solid var(--line-2); border-radius: var(--r-md); background: var(--surface); cursor: pointer; font-weight: 500; }
.opt label .ic { color: var(--muted); }
.opt label:hover { border-color: var(--muted); }
.opt input:checked + label { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); background: var(--accent-soft); color: var(--accent-deep); }
.opt input:checked + label .ic { color: var(--accent); }
.opt input:focus-visible + label { outline: 2px solid var(--accent); outline-offset: 2px; }
.form__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.75rem 1rem; }
.form__foot p { margin: 0; font-size: 0.8125rem; color: var(--muted); max-width: 22rem; }
.notice { display: flex; gap: 0.7rem; align-items: flex-start; padding: 0.9rem 1rem; border-radius: var(--r-md); border: 1px solid var(--warm-line); background: var(--warm-soft); color: var(--warm-ink); font-size: 0.9375rem; }
.notice[hidden] { display: none; }
.notice .ic { margin-top: 0.1rem; }
.notice b { display: block; }
@media (max-width: 1080px) {
  .contact__intro, .form { grid-column: 1 / span 12; }
  .contact__intro { margin-bottom: 2.5rem; }
}
@media (max-width: 760px) {
  .opts { grid-template-columns: 1fr 1fr; }
  .form__foot .btn { width: 100%; }
}

/* No layout shift at load: reserve the pinned act heights the engine sets
   inline (span x 100vh), so nothing below the hero moves when it mounts. */
.hero[data-sc-act="scrub"] { height: 140vh; }
#features[data-sc-act="pin"] { height: 380vh; }
/* The today rows are written by page.js; hold their room before it runs. */
@media (min-width: 761px) { .app--hero .app__body { min-height: 34em; } }

/* ------------------------------------------------ integrations strip -- */
.strip { padding-block: clamp(3rem, 6vw, 4.5rem); border-top: 1px solid var(--line); }
.strip__h { margin: 0 0 1.75rem; font-size: 0.9375rem; font-weight: 500; letter-spacing: -0.005em; color: var(--ink-2); }
.marks { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); border-block: 1px solid var(--line); }
.marks li { display: grid; gap: 0.45rem; align-content: start; padding: 1.25rem 1.1rem 1.3rem; }
.marks li + li { border-left: 1px solid var(--line); }
.marks li:first-child { padding-left: 0; }
.mark { display: inline-flex; align-items: center; gap: 0.5rem; font-size: 1.1875rem; font-weight: 600; letter-spacing: -0.03em; color: var(--ink); white-space: nowrap; }
.mark .ic { width: 1.1rem; height: 1.1rem; color: var(--muted); }
.marks small { font-size: 0.8125rem; line-height: 1.4; color: var(--muted); }
.strip__note { display: flex; align-items: center; gap: 0.5rem; margin: 1.1rem 0 0; font-size: 0.8125rem; color: var(--muted); }
.strip__note .ic { color: var(--accent); }

/* ------------------------------------------------------- comparison -- */
.cmp { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 2rem; align-items: start; }
.cmp__head { grid-column: 1 / span 5; position: sticky; top: calc(var(--nav-h) + 2rem); }
.cmp__fine { margin: 1.25rem 0 0; font-size: 0.8125rem; color: var(--muted); max-width: 26rem; }
.cmp__list { grid-column: 7 / span 6; list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ink); }
.cmp__list li { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); column-gap: 1rem; row-gap: 0.6rem; padding: 1.6rem 0; border-bottom: 1px solid var(--line); }
.cmp__list li > .ic { width: 2.5rem; height: 2.5rem; padding: 0.6rem; border-radius: var(--r-md); background: var(--accent-soft); color: var(--accent-deep); stroke-width: 1.6; }
.cmp__list p { margin: 0.4rem 0 0; color: var(--ink-2); }
.cmp__k { grid-column: 2; justify-self: start; font: 500 0.8125rem/1 var(--mono); color: var(--accent-deep); background: var(--accent-soft); border: 1px solid var(--accent-line); border-radius: var(--r-sm); padding: 0.4rem 0.55rem; }

/* ---------------------------------------------- pricing · billing -- */
.bill { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem 1.25rem; margin: -1rem 0 2rem; }
.bill__sw { position: relative; display: inline-grid; grid-template-columns: 1fr 1fr; margin: 0; padding: 4px; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface-2); }
.bill__sw input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.bill__sw label { position: relative; z-index: 1; display: grid; place-items: center; height: 2.5rem; padding: 0 1.2rem; min-width: 6.5rem; font-weight: 500; font-size: 0.9375rem; color: var(--ink-2); border-radius: 7px; cursor: pointer; }
.bill__sw input:checked + label { color: var(--ink); }
.bill__sw input:focus-visible + label { outline: 2px solid var(--accent); outline-offset: 1px; }
.bill__ind { position: absolute; top: 4px; bottom: 4px; left: 4px; width: calc(50% - 4px); border-radius: 7px; background: var(--surface); box-shadow: 0 1px 2px rgba(var(--shade), 0.1), 0 0 0 1px var(--line); transition: transform 260ms var(--ease-out); }
.bill__sw[data-period="y"] .bill__ind { transform: translateX(100%); }
.bill__note { margin: 0; font-size: 0.875rem; color: var(--muted); }

/* ---------------------------------------------- pricing · compare -- */
.cmpt { margin-top: 3.5rem; }
.cmpt__h { margin-bottom: 1rem; }
.cmpt__scroll { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface); }
.cmpt__t { width: 100%; border-collapse: collapse; font-size: 0.9375rem; font-variant-numeric: tabular-nums; }
.cmpt__t th, .cmpt__t td { padding: 0.8rem 1.1rem; border-bottom: 1px solid var(--line); text-align: center; }
.cmpt__t tbody tr:last-child > * { border-bottom: 0; }
.cmpt__t thead th { position: sticky; top: 0; font-weight: 600; font-size: 0.9375rem; background: var(--surface); width: 17%; }
.cmpt__t thead th:first-child { width: auto; }
.cmpt__t th[scope="row"] { text-align: left; font-weight: 400; color: var(--ink-2); }
.cmpt__t .grp th { text-align: left; font-size: 0.8125rem; font-weight: 600; color: var(--ink); background: var(--surface-2); padding-block: 0.55rem; }
.cmpt__t .is-main { background: color-mix(in srgb, var(--accent-soft) 55%, transparent); }
.cmpt__t thead .is-main { color: var(--accent-deep); box-shadow: inset 0 3px 0 var(--accent); }
.t-y { color: var(--accent); stroke-width: 2.4; vertical-align: middle; }
.t-n { display: inline-block; width: 0.7rem; height: 2px; border-radius: 1px; background: var(--line-2); vertical-align: middle; }
.t-zero { font: 500 0.9375rem/1 var(--mono); color: var(--accent-deep); }
.cmpt__fine { margin: 0.9rem 0 0; font-size: 0.8125rem; color: var(--muted); }

@media (max-width: 1080px) {
  .marks { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .marks li:nth-child(4) { border-left: 0; padding-left: 0; }
  .marks li:nth-child(n+4) { border-top: 1px solid var(--line); }
  .cmp__head { grid-column: 1 / span 12; position: static; margin-bottom: 2rem; }
  .cmp__list { grid-column: 1 / span 12; }
  .float--msg { left: 0; width: 13.5rem; }
  .float--paid { right: 0; }
}
@media (max-width: 760px) {
  .kicker { font-size: 0.8125rem; margin-bottom: 0.7rem; }
  .h1--hero { font-size: 2.3rem; line-height: 1; }
  .hero__visual { perspective: none; }
  .hero__photo { inset: 0 0 auto 0; height: 9rem; }
  .app--hero { transform: none; }
  .float--msg { display: none; }
  .float--paid { top: 0.6rem; bottom: auto; left: 0.6rem; right: auto; transform: none; padding: 0.4rem 0.7rem 0.4rem 0.4rem; gap: 0.5rem; }
  .float__ic { width: 1.7rem; height: 1.7rem; }
  .float--paid small { display: none; }
  .float--paid strong { font-size: 0.875rem; margin-left: 0.2rem; }
  .marks { grid-template-columns: 1fr 1fr; }
  .marks li { padding: 1rem 0.9rem 1.05rem; }
  .marks li:nth-child(odd) { border-left: 0; padding-left: 0; }
  .marks li:nth-child(4) { border-left: 1px solid var(--line); padding-left: 0.9rem; }
  .marks li:nth-child(n+3) { border-top: 1px solid var(--line); }
  .mark { font-size: 1.0625rem; }
  .strip__note { align-items: flex-start; }
  .cmp__list li { grid-template-columns: 2.25rem minmax(0, 1fr); column-gap: 0.85rem; padding: 1.3rem 0; }
  .cmp__list li > .ic { width: 2.25rem; height: 2.25rem; padding: 0.5rem; }
  .bill { margin-top: -0.5rem; }
  .bill__sw { width: 100%; }
  .cmpt__t { font-size: 0.8125rem; }
  .cmpt__t th, .cmpt__t td { padding: 0.65rem 0.4rem; }
  .cmpt__t th[scope="row"], .cmpt__t .grp th { padding-left: 0.8rem; }
  .cmpt__t thead th { font-size: 0.75rem; width: 19%; }
  .cmpt__t thead th span { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .app--hero, .float--msg, .float--paid { transform: none; }
}

/* ------------------------------------------- channel connectivity (strip) */
.conn { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 2rem; border-bottom: 1px solid var(--line); }
.conn__row { display: grid; gap: 0.4rem; align-content: start; padding: 1.25rem 0 1.3rem; min-width: 0; }
.conn__h { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.conn__h b { font-size: 0.9375rem; font-weight: 600; letter-spacing: -0.01em; color: var(--ink); }
.conn__st { font: 500 0.6875rem/1 var(--mono); font-style: normal; letter-spacing: 0.02em; text-transform: uppercase; color: var(--warm-ink, var(--ink-2)); background: var(--warm-soft, var(--surface-2)); border: 1px solid var(--warm-line, var(--line)); border-radius: var(--r-sm); padding: 0.3rem 0.45rem; }
.conn__names { margin: 0; font-size: 1rem; font-weight: 500; letter-spacing: -0.015em; color: var(--ink); }
.conn__how { margin: 0; font-size: 0.8125rem; line-height: 1.45; color: var(--muted); }
.cmp__k--soon { color: var(--ink-2); background: var(--surface-2, transparent); border-color: var(--line); }
@media (max-width: 760px) {
  .conn { grid-template-columns: minmax(0, 1fr); }
  .conn__row + .conn__row { border-top: 1px solid var(--line); }
}

/* ------------------------------------------------- v3 · hotel & hostel */
.conn__st--live { color: var(--accent-deep); background: var(--accent-soft); border-color: var(--accent-line); }
.plans--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 52rem; margin-inline: auto; }
@media (max-width: 760px) { .plans--2 { grid-template-columns: 1fr; } }
.cmpt__t--2 thead th { width: 22%; }
.cmpt__t--2 thead th:first-child { width: auto; }
.t-soon { display: inline-block; font: 500 0.6875rem/1 var(--mono); letter-spacing: 0.02em; text-transform: uppercase; color: var(--warm-ink, var(--ink-2)); background: var(--warm-soft, var(--surface-2)); border: 1px solid var(--warm-line, var(--line)); border-radius: var(--r-sm); padding: 0.25rem 0.4rem; vertical-align: middle; }
.dorm + .dorm { margin-top: 0.9rem; }
.chx { display: grid; align-content: start; }
.tbl--chx td:nth-child(2) { color: var(--ink-2); }
.tbl--chx td b { font-weight: 500; }
@media (max-width: 760px) {
  .cmpt__t--2 thead th { width: 26%; }
  .tbl--chx :is(th, td):nth-child(2) { display: none; }
  .tbl--chx td { height: 2.4rem; }
}

/* ======================================================== v3 · motion ==
   Only transform (incl. translate/scale/rotate), opacity and clip-path move.
   Scenes are driven by act progress in page.js; the engine owns the pin,
   the pan, the counters, the tilt and the reading bar. */
:root { --sc-accent: var(--accent); }
.readbar { z-index: 101; }
.badge--danger { background: var(--danger-soft); color: var(--danger); border-color: var(--danger-line); }

/* scene tones: flat tint layers behind the page, crossfaded by page.js */
.tones { position: fixed; inset: 0; z-index: -1; pointer-events: none; }
.tone { position: absolute; inset: 0; opacity: 0; }
.tone--accent { background: color-mix(in srgb, var(--accent-soft) 70%, var(--bg)); }
.tone--warm { background: color-mix(in srgb, var(--warm-soft) 70%, var(--bg)); }

/* word-by-word headings (page.js splits only when motion is allowed) */
.kw-ready .kw { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: 0.14em; margin-bottom: -0.14em; color: inherit; }
.kw-ready .kw__i { display: inline-block; color: inherit; translate: 0 108%; transition: translate 760ms var(--ease-out) calc(var(--i, 0) * 42ms); }
.kw-ready.kw-on .kw__i { translate: 0 0; }

/* buttons: lift on hover (translate, so the engine's magnet transform stays) */
.btn { transition: transform 160ms var(--ease), translate 200ms var(--ease), background-color 160ms var(--ease); }

/* ------------------------------------------------------- hero depth -- */
@media (min-width: 761px) and (prefers-reduced-motion: no-preference) {
  /* flat stacking: the tilted visual must not let the rotated window cut
     through the bubbles in 3D; depth comes from parallax and perspective. */
  .hero__visual { transform-style: flat !important; }
  .float--msg { transform: translate3d(0, calc(-64px * var(--p)), 40px) rotate(calc(-2.5deg * (1 - var(--p)))); animation: float-in 900ms var(--ease-out) 380ms both; }
  .float--paid { transform: translate3d(0, calc(-110px * var(--p)), 60px) rotate(calc(2deg * (1 - var(--p)))); animation: float-in 900ms var(--ease-out) 620ms both; }
  .hero__photo :is(img, video) { scale: calc(1.1 - 0.1 * var(--p)); }
  .app--hero { animation: rise-in 1000ms var(--ease-out) 120ms both; }
}
@keyframes float-in { from { opacity: 0; translate: 0 24px; } to { opacity: 1; translate: 0 0; } }
@keyframes rise-in { from { opacity: 0; translate: 0 36px; } to { opacity: 1; translate: 0 0; } }

/* ---------------------------------------------------- tape chart pin -- */
.tape__stage, .ops__stage, .kit__stage { display: flex; align-items: center; padding-top: var(--nav-h); }
.tape__grid, .ops__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 2rem; align-items: center; }
.tape__copy { grid-column: 1 / span 4; }
.app--tape { grid-column: 5 / span 8; }
.feed { margin-top: 1.5rem; border-top: 1px solid var(--line); }
.feed__h { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; margin: 0; padding: 0.8rem 0 0.5rem; font-size: 0.8125rem; color: var(--muted); }
.feed__h > b { font: 500 0.6875rem/1 var(--mono); letter-spacing: 0.04em; text-transform: uppercase; color: var(--ink-2); }
.feed__h [data-tape-n] { color: var(--accent); font: 500 0.875rem/1 var(--mono); }
.feed__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.3rem; }
.fi { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); align-items: center; gap: 0.7rem; padding: 0.35rem 0; font-size: 0.8125rem; opacity: 0; translate: 0 10px; transition: opacity 360ms var(--ease), translate 460ms var(--ease-out); }
.fi.is-in { opacity: 1; translate: 0 0; }
.fi .badge { justify-self: start; }
.fi div { display: grid; min-width: 0; }
.fi b { font-weight: 600; color: var(--ink); }
.fi span { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tc { padding: 0.7rem 0.9rem 0.4rem; display: grid; gap: 4px; }
.tc__row { display: grid; grid-template-columns: 6.5rem repeat(7, minmax(0, 1fr)); gap: 0 3px; align-items: center; min-height: 2.25rem; }
.tc__row > * { grid-row: 1; }
.tc__row--head { min-height: 1.6rem; }
.tc__room { grid-column: 1; font-weight: 500; color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tc__night { font: 500 0.6875rem/1 var(--mono); color: var(--muted); text-align: center; white-space: nowrap; }
.tc__night.is-today { color: var(--accent); }
.tc__row--head .tc__night:nth-child(n+2) { grid-column: auto; }
.tc__cell { align-self: stretch; border-radius: var(--r-sm); background: var(--surface-2); }
.tc__cell.is-today { box-shadow: inset 0 0 0 1px var(--accent-line); }
.tc__bar { position: relative; z-index: 1; align-self: stretch; margin: 3px 0; display: flex; align-items: center; min-width: 0; padding: 0 0.5rem; border-radius: var(--r-sm); border: 1px solid transparent; clip-path: inset(0 100% 0 0 round 6px); }
.tc__bar--direct { background: var(--info-soft); color: var(--info-ink); border-color: var(--info-line); }
.tc__bar--wa { background: var(--accent-soft); color: var(--accent-deep); border-color: var(--accent-line); }
.tc__bar--ical { background: var(--warm-soft); color: var(--warm-ink); border-color: var(--warm-line); }
.tc__lbl { font-size: 0.75rem; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tc__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 1rem; padding: 0.6rem 0.9rem 0.8rem; border-top: 1px solid var(--line); font-size: 0.75rem; color: var(--muted); }
.tc__foot > span { display: inline-flex; align-items: center; gap: 0.4rem; }
.tc__sw { width: 10px; height: 10px; border-radius: 3px; border: 1px solid; }
.tc__sw--direct { background: var(--info-soft); border-color: var(--info-line); }
.tc__sw--wa { background: var(--accent-soft); border-color: var(--accent-line); }
.tc__sw--ical { background: var(--warm-soft); border-color: var(--warm-line); }
.tc__occ { margin-left: auto; }
.tc__occ b { font: 500 0.875rem/1 var(--mono); color: var(--ink); }

/* ------------------------------------------------ toolkit pan (text) -- */
/* Header and foot stay put inside the pinned stage; only the rail travels.
   page.js sizes the act to the rail's overflow and adds a hold at both ends
   (a `translate` that composes with the engine's pan transform). */
.kit__stage { flex-direction: column; align-items: stretch; justify-content: center; gap: clamp(1.1rem, 3vh, 2rem); }
.kit__head, .kit__foot { width: 100%; max-width: calc(var(--max) + 2 * var(--gut)); margin: 0 auto; padding: 0 var(--gut); }
.kit__head .lede { margin-top: 0.6rem; max-width: 36rem; }
.kit__rail { list-style: none; margin: 0; padding: 0 max(var(--gut), calc((100% - var(--max)) / 2)); gap: 1rem; align-items: stretch; width: max-content; }
.kit__rail > li { flex: none; }
.kit__item { position: relative; width: 19rem; min-height: 15rem; display: flex; flex-direction: column; gap: 0.6rem; padding: 1.6rem 1.5rem 1.7rem; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--sh-1); transition: opacity 280ms var(--ease), translate 240ms var(--ease), border-color 240ms var(--ease), box-shadow 240ms var(--ease); }
.kit__item b { font-size: 1.3125rem; font-weight: 600; letter-spacing: -0.02em; color: var(--ink); }
.kit__item span { font-size: 0.9375rem; line-height: 1.5; color: var(--ink-2); }
.kit__st { align-self: flex-start; margin-bottom: 0.6rem; font: 500 0.6875rem/1 var(--mono); font-style: normal; letter-spacing: 0.02em; text-transform: uppercase; color: var(--warm-ink); background: var(--warm-soft); border: 1px solid var(--warm-line); border-radius: var(--r-sm); padding: 0.3rem 0.45rem; }
.kit__st--live { color: var(--accent-deep); background: var(--accent-soft); border-color: var(--accent-line); }
.kit__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 1.5rem; }
.kit__prog { display: flex; align-items: center; gap: 0.35rem; margin: 0; font: 500 0.8125rem/1 var(--mono); color: var(--muted); }
.kit__prog b { font-weight: 500; color: var(--accent); min-width: 1.3ch; text-align: right; }
.kit__bar { position: relative; width: 7rem; height: 2px; margin-left: 0.6rem; border-radius: 2px; background: var(--line-2); overflow: hidden; }
.kit__bar i { position: absolute; inset: 0; background: var(--accent); transform-origin: 0 50%; scale: var(--kit-f, 0) 1; }
.kit__note { margin: 0; font-size: 0.8125rem; color: var(--muted); }
@media (prefers-reduced-motion: no-preference) {
  .kit__item:not(.is-seen) { opacity: 0.45; }
}
@media (prefers-reduced-motion: reduce) {
  /* the stage is the native scroller here: keep header and foot in place */
  .kit__head, .kit__foot { position: sticky; left: 0; width: 100vw; max-width: none; margin: 0; }
  .kit__prog { display: none; }
}

/* ------------------------------------------ housekeeping + folio pin -- */
.ops__copy { grid-column: 1 / span 4; }
.app--hk { grid-column: 5 / span 4; }
.app--folio { grid-column: 9 / span 4; }
.ops__soon { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin: 1.25rem 0 0; font-size: 0.875rem; color: var(--ink-2); }
.hk { padding: 0.85rem 0.9rem 0.95rem; }
.hk__kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.4rem; margin-bottom: 0.7rem; }
.hk__kpis p { margin: 0; display: grid; gap: 0.15rem; padding: 0.4rem 0.55rem; border: 1px solid var(--line); border-radius: var(--r-md); }
.hk__kpis span { font-size: 0.6875rem; color: var(--muted); }
.hk__kpis b { font: 500 1.125rem/1 var(--mono); color: var(--ink); }
.hk__tiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.45rem; }
.hk__tile { position: relative; isolation: isolate; display: grid; gap: 0.15rem; padding: 0.55rem 0.6rem 0.6rem; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface-2); overflow: hidden; }
.hk__tile::before, .hk__tile::after { content: ""; position: absolute; inset: 0; z-index: -1; transition: clip-path 800ms var(--ease-out); }
.hk__tile::before { background: var(--danger-soft); clip-path: inset(0 0 0 100%); }
.hk__tile::after { background: var(--accent-soft); clip-path: inset(0 100% 0 0); }
.hk__tile[data-state="dirty"]::before { clip-path: inset(0 0 0 0); }
.hk__tile[data-state="clean"]::after { clip-path: inset(0 0 0 0); }
.hk__tile[data-state="occ"] { background: var(--info-soft); }
.hk__top { display: flex; align-items: center; justify-content: space-between; gap: 0.4rem; }
.hk__top b { font: 600 0.9375rem/1.2 var(--mono); }
.hk__type { font-size: 0.75rem; color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hk__note { font-size: 0.6875rem; color: var(--muted); }
.folio { padding: 0.9rem 1rem 1rem; }
.folio__who { display: grid; gap: 0.1rem; margin: 0 0 0.75rem; }
.folio__who span { font-size: 0.75rem; color: var(--muted); }
.folio__lines { list-style: none; margin: 0; padding: 0; }
.folio__lines li, .folio__total { display: flex; justify-content: space-between; gap: 0.75rem; padding: 0.5rem 0; border-bottom: 1px solid var(--line); }
.folio__lines li > span { color: var(--ink-2); }
.folio__lines b, .folio__total b { font-family: var(--mono); font-weight: 500; white-space: nowrap; }
.folio__total { margin: 0; border-bottom: 0; border-top: 1px solid var(--ink); font-weight: 600; font-size: 0.9375rem; }
.folio__st { display: inline-flex; align-items: center; gap: 0.35rem; margin: 0.6rem 0 0; padding: 0.3rem 0.55rem; border-radius: var(--r-sm); background: var(--accent-soft); color: var(--accent-deep); font-size: 0.75rem; font-weight: 500; }
[data-fl] { opacity: 0; translate: 0 8px; transition: opacity 320ms var(--ease), translate 420ms var(--ease-out); }
[data-fl].is-on { opacity: 1; translate: 0 0; }

/* feature rail: a thin bar fills with progress inside the active step */
.steps button::after { content: ""; position: absolute; left: 0; top: 0.8rem; bottom: 0.8rem; width: 2px; border-radius: 2px; background: var(--accent); transform-origin: 50% 0; scale: 1 var(--feat-sub, 0); opacity: 0; }
.steps button.is-on::after { opacity: 1; }

/* ------------------------------------------------ micro-interactions -- */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .btn:hover { translate: 0 -1px; }
  .kit__item:hover { translate: 0 -4px; border-color: var(--line-2); box-shadow: var(--sh-2); }
  .feats li > .ic, .cmp__list li > .ic, .how__n, .mark { transition: translate 260ms var(--ease-out), rotate 260ms var(--ease-out); }
  .feats li:hover > .ic, .cmp__list li:hover > .ic { translate: 0 -3px; rotate: -6deg; }
  .how__step:hover .how__n { translate: 0 -3px; }
  .marks li:hover .mark { translate: 4px 0; }
  .tc__bar { transition: translate 200ms var(--ease); }
  .tc__bar:hover { translate: 0 -1px; }
}

/* layout reserve for the new acts (engine sets span x 100vh inline) */
#tape[data-sc-act="pin"] { height: 210vh; }
#toolkit[data-sc-act="pan"] { height: 290vh; }

@media (max-width: 1080px) {
  .tape__copy, .app--tape { grid-column: 1 / span 12; }
  .tape__copy { margin-bottom: 1.25rem; }
  .tape__lede, .feed__list { display: none; }
  .ops__copy { grid-column: 1 / span 12; margin-bottom: 1.25rem; }
  .ops__lede { display: none; }
  .app--hk { grid-column: 1 / span 6; }
  .app--folio { grid-column: 7 / span 6; }
}
@media (max-width: 760px) {
  .tape__grid, .ops__grid { column-gap: 0.75rem; }
  .tape__copy, .ops__copy { margin-bottom: 0.9rem; }
  .feed { margin-top: 0.8rem; }
  .tc { padding: 0.5rem 0.55rem 0.3rem; gap: 3px; }
  .tc__row { grid-template-columns: 4.1rem repeat(7, minmax(0, 1fr)); gap: 0 2px; min-height: 1.9rem; }
  .tc__room { font-size: 0.6875rem; }
  .tc__night { font-size: 0.5625rem; }
  .tc__bar { padding: 0 0.3rem; }
  .tc__lbl { font-size: 0.625rem; }
  .tc__foot { gap: 0.3rem 0.7rem; padding: 0.5rem 0.6rem 0.6rem; font-size: 0.6875rem; }
  .kit__rail { gap: 0.6rem; }
  .kit__item { width: 78vw; min-height: 13rem; padding: 1.3rem 1.25rem 1.4rem; }
  .kit__item b { font-size: 1.1875rem; }
  .kit__stage { gap: 1rem; }
  .kit__foot { flex-direction: column; align-items: flex-start; }
  .ops__soon { margin-top: 0.6rem; }
  .app--hk, .app--folio { grid-column: 1 / span 12; }
  .app--hk { margin-bottom: 0.6rem; }
  .app--hk .app__bar, .app--folio .app__bar { height: 2rem; }
  .hk { padding: 0.55rem 0.6rem 0.6rem; }
  .hk__kpis { display: none; }
  .hk__tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.35rem; }
  .hk__tile { padding: 0.4rem 0.45rem; }
  .hk__tile .badge { height: 1.15rem; padding: 0 0.3rem; font-size: 0.625rem; }
  .hk__tile .badge::before { display: none; }
  .hk__type, .hk__note { display: none; }
  .folio { padding: 0.55rem 0.8rem 0.65rem; font-size: 0.75rem; }
  .folio__who { margin-bottom: 0.3rem; grid-template-columns: auto 1fr; gap: 0.5rem; align-items: baseline; }
  .folio__lines li, .folio__total { padding: 0.32rem 0; }
  .folio__st { margin-top: 0.35rem; }
}

/* reduced motion: nothing splits, slides or wipes; scenes still step to
   their states at the same scroll positions and end complete. */
@media (prefers-reduced-motion: reduce) {
  .fi, [data-fl] { translate: none; }
  .tc__bar { clip-path: none; }
  .hk__tile::before, .hk__tile::after { transition: none; }
  .steps button::after { display: none; }
}

/* ================================================== v3 · motion 2 ==
   Additive scenes. Only transform / translate / scale, opacity,
   clip-path and stroke-dashoffset move. Every scene is driven by a
   view progress written from page.js; under reduced motion the final
   state is the base state. */

/* ---------------------------------------------- hero · app unfolds -- */
@media (prefers-reduced-motion: no-preference) {
  .app--hero .app__bar { animation: m2-fade 500ms var(--ease) 220ms both; }
  .app--hero .app__side { animation: m2-wipe-x 800ms var(--ease-out) 420ms both; }
  .app--hero .app__head { animation: m2-rise 600ms var(--ease-out) 620ms both; }
  .app--hero .kpi { animation: m2-pop 560ms var(--ease-out) both; }
  .app--hero .kpi:nth-child(1) { animation-delay: 760ms; }
  .app--hero .kpi:nth-child(2) { animation-delay: 840ms; }
  .app--hero .kpi:nth-child(3) { animation-delay: 920ms; }
  .app--hero .tbl { animation: m2-wipe-y 900ms var(--ease-out) 1000ms both; }
}
@keyframes m2-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes m2-rise { from { opacity: 0; translate: 0 10px; } to { opacity: 1; translate: 0 0; } }
@keyframes m2-pop { from { opacity: 0; scale: 0.92; } to { opacity: 1; scale: 1; } }
@keyframes m2-wipe-x { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes m2-wipe-y { from { clip-path: inset(0 0 100% 0); } to { clip-path: inset(0 0 0 0); } }

/* ------------------------------------------- proof · OTA sync map -- */
.sync { margin: clamp(2.5rem, 5vw, 4rem) 0 0; }
.sync__board { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr) minmax(0, 1fr); column-gap: clamp(3rem, 9vw, 9rem); align-items: center; padding: 1.5rem clamp(1rem, 3vw, 2.5rem); border: 1px solid var(--line); border-radius: var(--r-xl); background: var(--surface-2); overflow: hidden; }
.sync__lines { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; }
.sync__lines path { fill: none; stroke-width: 1.5; stroke-linecap: round; stroke-dasharray: 1; }
.sync__lines .l-base { stroke: var(--line-2); stroke-dashoffset: var(--d, 0); }
.sync__lines .l-hot { stroke: var(--accent); stroke-width: 2; stroke-dashoffset: var(--d, 1); }
.sync__col { position: relative; list-style: none; margin: 0; padding: 0; display: grid; gap: 0.7rem; }
.sync__col--r { gap: 1.6rem; }
.sync__node { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; padding: 0.6rem 0.8rem; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-md); box-shadow: var(--sh-1); }
.sync__node b { font-weight: 500; font-size: 0.9375rem; white-space: nowrap; }
.sync__hub { position: relative; display: grid; gap: 0.7rem; padding: 1.1rem 1.1rem 1.2rem; background: var(--surface); border: 1px solid var(--accent-line); border-radius: var(--r-lg); box-shadow: var(--sh-2); }
.sync__hub::before { content: ""; position: absolute; inset: -1px; border-radius: inherit; box-shadow: 0 0 0 6px var(--accent-soft); opacity: 0; transition: opacity 400ms var(--ease); pointer-events: none; }
.sync__hub.is-hit::before { opacity: 1; }
.sync__hub-h { display: flex; align-items: center; gap: 0.45rem; font-weight: 600; }
.sync__hub-h .ic { color: var(--accent); }
.sync__slot { display: grid; gap: 0.4rem; padding: 0.6rem 0.7rem; border-radius: var(--r-md); background: var(--surface-2); border: 1px solid var(--line); }
.sync__slot b { font-weight: 500; font-size: 0.875rem; }
/* two stacked labels cross-fade: <i>before</i><i>after</i> */
.sync__st { display: grid; justify-items: end; font: 500 0.6875rem/1 var(--mono); letter-spacing: 0.02em; text-transform: uppercase; }
.sync__slot .sync__st { justify-items: start; }
.sync__st i { grid-area: 1 / 1; font-style: normal; padding: 0.3rem 0.45rem; border-radius: var(--r-sm); white-space: nowrap; transition: opacity 300ms var(--ease), translate 360ms var(--ease-out); }
.sync__st i:first-child { color: var(--accent-deep); background: var(--accent-soft); }
.sync__st i:last-child { color: var(--ink-2); background: var(--surface-2); border: 1px solid var(--line); opacity: 0; translate: 0 6px; }
.sync__node--src .sync__st i:last-child, .sync__slot .sync__st i:last-child { color: #fff; background: var(--accent); border-color: var(--accent); }
.is-b > .sync__st i:first-child, .is-b .sync__st i:first-child { opacity: 0; translate: 0 -6px; }
.is-b > .sync__st i:last-child, .is-b .sync__st i:last-child { opacity: 1; translate: 0 0; }
.sync__node.is-b:not(.sync__node--src) b { color: var(--muted); }
.sync__cap { display: flex; align-items: baseline; gap: 0.6rem; margin-top: 0.9rem; font-size: 0.8125rem; color: var(--muted); }
.sync__cap .tag { flex: none; }

/* -------------------------------------------- inbox · agent types -- */
.typing { display: inline-flex; gap: 4px; align-self: flex-end; padding: 0.55rem 0.7rem; border-radius: var(--r-md); border-bottom-right-radius: 3px; background: var(--accent-soft); border: 1px solid var(--accent-line); }
.typing i { width: 5px; height: 5px; border-radius: 50%; background: var(--accent-deep); opacity: 0.35; animation: m2-dot 1s var(--ease) infinite; }
.typing i:nth-child(2) { animation-delay: 160ms; }
.typing i:nth-child(3) { animation-delay: 320ms; }
@keyframes m2-dot { 0%, 60%, 100% { opacity: 0.35; translate: 0 0; } 30% { opacity: 1; translate: 0 -3px; } }
.chat--live .msg, .chat--live .typing { animation: m2-rise 380ms var(--ease-out) both; }
.chat--live .is-off { display: none; }
.log--live li { transition: opacity 260ms var(--ease); }
.log--live li.is-off { opacity: 0.32; }
.log--live li::before { transition: background-color 260ms var(--ease), color 260ms var(--ease); }
.log--live li.is-done::before { background: var(--accent); color: #fff; }

/* -------------------------------------------------- fill sentence -- */
.fill-wrap { padding-bottom: 0; }
.fill { margin: 0; max-width: 22ch; font-size: clamp(2rem, 1.1rem + 3.4vw, 4.25rem); line-height: 1.04; letter-spacing: -0.035em; font-weight: 600; text-wrap: balance; }
.fill .fw { opacity: var(--o, 1); }

/* ------------------------------------------ compare · stacked cards -- */
@media (prefers-reduced-motion: no-preference) {
  .cmp__list { border-top: 0; display: grid; gap: 0; padding-bottom: 2rem; }
  .cmp__list li { position: sticky; top: calc(var(--nav-h) + 2rem + var(--i, 0) * 14px); margin-bottom: 9vh; padding: 1.6rem 1.5rem; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--sh-1); transform-origin: 50% 0; }
  .cmp__list li:last-child { margin-bottom: 0; }
  .cmp__list li:nth-child(1) { --i: 0; }
  .cmp__list li:nth-child(2) { --i: 1; }
  .cmp__list li:nth-child(3) { --i: 2; }
  .cmp__list li:nth-child(4) { --i: 3; }
  .cmp__list li::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: var(--bg, #000); opacity: calc(var(--cover, 0) * 0.5); pointer-events: none; }
}

/* ---------------------------------------------------- one marquee -- */
.mq { padding-block: clamp(2rem, 5vw, 4rem) 0; overflow: clip; }
.mq__rows { display: grid; gap: 0.2rem; }
.mq__row { margin: 0; display: flex; gap: 0.5em; width: max-content; white-space: nowrap; font-size: clamp(2.5rem, 1.4rem + 4.5vw, 5.5rem); line-height: 1.12; font-weight: 600; letter-spacing: -0.03em; will-change: transform; }
.mq__row span::after { content: "·"; margin-left: 0.5em; color: var(--accent); }
.mq__row--alt { color: transparent; -webkit-text-stroke: 1px var(--line-2); }
.mq__row--alt span::after { -webkit-text-stroke: 0; }
.mq__cap { margin-top: 1rem; font-size: 0.875rem; color: var(--muted); }

/* ---------------------------------- final · zoom-through + spotlight -- */
.final { position: relative; overflow: hidden; isolation: isolate; }
.final > :not(.final__spot) { position: relative; }
.final__spot { position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: 0; transition: opacity 500ms var(--ease); translate: calc((var(--sc-mx, 0.5) - 0.5) * 100%) calc((var(--sc-my, 0.5) - 0.5) * 100%); }
.final__spot::before { content: ""; position: absolute; left: 50%; top: 50%; width: 34rem; height: 34rem; margin: -17rem 0 0 -17rem; border-radius: 50%; background: radial-gradient(closest-side, rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0)); }
@media (hover: hover) and (pointer: fine) { .final:hover .final__spot { opacity: 1; } }
@media (prefers-reduced-motion: no-preference) {
  .final[data-final] { clip-path: inset(calc(var(--zi, 0) * 14%) calc(var(--zi, 0) * 12%) round var(--r-xl)); }
  .final[data-final] > :not(.final__spot) { scale: calc(1 + var(--zi, 0) * 0.08); opacity: calc(1 - var(--zi, 0) * 0.9); }
}

/* ---------------------------------------------------- micro-motion -- */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .sync__node { transition: translate 240ms var(--ease-out), box-shadow 240ms var(--ease); }
  .sync__node:hover { translate: 0 -2px; }
  .cmp__list li > .ic { transition: scale 240ms var(--ease-out); }
  .cmp__list li:hover > .ic { scale: 1.08; }
}

/* ------------------------------------------------------ small screen -- */
@media (max-width: 760px) {
  .sync__board { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "hub hub" "l r"; row-gap: 2.75rem; column-gap: 0.75rem; padding: 1rem 0.75rem; border-radius: var(--r-lg); }
  .sync__hub { grid-area: hub; justify-self: center; width: min(100%, 17rem); padding: 0.8rem; }
  .sync__col--l { grid-area: l; gap: 0.5rem; }
  .sync__col--r { grid-area: r; gap: 0.5rem; align-self: start; }
  .sync__node { flex-direction: column; align-items: flex-start; gap: 0.35rem; padding: 0.5rem 0.6rem; }
  .sync__node b { font-size: 0.8125rem; }
  .sync__st { justify-items: start; font-size: 0.625rem; }
  .sync__cap { flex-direction: column; gap: 0.4rem; }
  .cmp__list li { margin-bottom: 5vh; padding: 1.2rem 1rem; top: calc(var(--nav-h) + 1rem + var(--i, 0) * 10px); }
  .fill { font-size: 2rem; }
  .final[data-final] { clip-path: inset(calc(var(--zi, 0) * 8%) calc(var(--zi, 0) * 6%) round var(--r-lg)); }
}

/* reduced motion: every scene rests on its final state. */
@media (prefers-reduced-motion: reduce) {
  .sync__lines .l-base { stroke-dashoffset: 0; }
  .sync__lines .l-hot { stroke-dashoffset: 0; }
  .sync__st i { transition: none; }
  .fill .fw { opacity: 1; }
  .mq__row { translate: none !important; }
  .typing { display: none; }
}

/* ============================================ v3 · fix 3 (merge pass) ==
   #ops is now step 6 of the feature pin; the sync map on phones routes its
   lines through side gutters so none runs under a node. */

/* -------------------------------- feature step 6 · housekeeping + folio -- */
.ops { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 1rem; align-items: start; height: 100%; }
.ops__hk, .ops__folio { border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface); }
.folio__who .tag { margin-left: 0.35rem; }
.team__prop { display: inline-flex; align-items: center; gap: 0.35rem; }
.team__prop em { font-style: normal; font-size: 0.75rem; color: var(--accent-deep); background: var(--accent-soft); border: 1px solid var(--accent-line); border-radius: var(--r-sm); padding: 0.1rem 0.35rem; }
@media (max-width: 1080px) {
  .ops { grid-template-columns: minmax(0, 1fr); gap: 0.6rem; }
}
@media (max-width: 760px) {
  .ops { height: auto; }
  .folio__who .tag { display: none; }
}

/* ---------------------------------------------- sync map · layering -- */
.sync__lines { z-index: 0; }
.sync__node, .sync__hub { z-index: 1; }
.sync__col { z-index: 1; }
@media (max-width: 760px) {
  .sync__board { row-gap: 2.25rem; column-gap: 1.6rem; padding: 1rem 1.1rem; }
  .sync__col--l { padding-left: 0.2rem; }
  .sync__col--r { padding-right: 0.2rem; }
}

/* ------------------------------------------ compare plans · folded -- */
.cmpt { margin-top: 2.5rem; border-top: 1px solid var(--line); }
.cmpt__sum { list-style: none; display: flex; align-items: baseline; gap: 1rem; padding: 1.1rem 2.5rem 1.1rem 0; cursor: pointer; position: relative; border-radius: var(--r-sm); }
.cmpt__sum::-webkit-details-marker { display: none; }
.cmpt__sum .cmpt__h { margin: 0; }
.cmpt__hint { font-size: 0.875rem; color: var(--muted); }
.cmpt__sum::after { content: ""; position: absolute; right: 0.5rem; top: 50%; width: 0.55rem; height: 0.55rem; border-right: 2px solid var(--muted); border-bottom: 2px solid var(--muted); transform: translateY(-70%) rotate(45deg); transition: transform 220ms var(--ease); }
.cmpt[open] .cmpt__sum::after { transform: translateY(-30%) rotate(-135deg); }
.cmpt__sum:hover .cmpt__h { color: var(--accent-deep); }
@media (max-width: 760px) { .cmpt__hint { display: none; } }
