/* The homepage: what a person who is not signed in sees at the app's own address (the owner, 2026-11-06).
   A sheet of its own, as board-panel.css is: nothing here is the app's, and site.css is not loaded beside it.
   The tokens are site.css's own values under the same names; a colour changed there is changed here by hand.
   It may ask the window how wide it is: the rule against that is site.css's, for pages that live in the shell. */
@font-face{font-family:"Public Sans";font-weight:400;font-display:swap;src:url("/fonts/public-sans-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"Public Sans";font-weight:500;font-display:swap;src:url("/fonts/public-sans-latin-500-normal.woff2") format("woff2")}
@font-face{font-family:"Public Sans";font-weight:600;font-display:swap;src:url("/fonts/public-sans-latin-600-normal.woff2") format("woff2")}
@font-face{font-family:"Public Sans";font-weight:700;font-display:swap;src:url("/fonts/public-sans-latin-700-normal.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-weight:500;font-display:swap;src:url("/fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-weight:600;font-display:swap;src:url("/fonts/ibm-plex-mono-latin-600-normal.woff2") format("woff2")}

:root{
  --ink:#0F1D3A; --slate:#24406E; --ground:#F3F6FB; --card:#FFFFFF; --on-fill:#FFFFFF;
  --blue:#1F55D6; --blue-deep:#1844B0; --blue-ink:#1A4BC2; --blue-soft:#E8EEFC;
  --accent:#0A8FC7; --accent-ink:#0A6A96; --accent-soft:#E2F3FB;
  --rail-bg:#0F2A5E; --rail-text:#D5DFF3; --rail-muted:#93A6CC;
  --verde:#1D7653; --verde-soft:#E2F3EA; --verde-line:#BFE0CF;
  --flag:#C2382C;
  --line:#C9D3E3; --line-soft:#E4EAF3;
  --muted:#4A5A78; --muted-2:#5E6F8F;
  --amber-ink:#8C4A0B; --amber-soft:#FDF0E0; --amber-line:#F0D3AC;
  --sans:"Public Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --fs-1:12.5px; --fs-2:14px; --fs-3:15px; --fs-4:17px; --fs-5:21px; --fs-6:26px;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px;
  --hit:44px; --r-in:6px; --r-card:10px;
  /* The page's own, beyond the app's scale: a front page reads from further away. */
  --fs-lead:19px; --fs-h2:32px; --fs-h1:clamp(34px,5.2vw,54px);
  --band:clamp(56px,8vw,96px); --gutter:clamp(16px,4vw,32px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:68px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--card);color:var(--ink);font-family:var(--sans);font-size:var(--fs-4);line-height:1.55;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--blue-ink)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-in)}
h1,h2,h3,p,ul,ol{margin:0}
h1,h2,h3{text-wrap:balance}
ul,ol{padding:0;list-style:none}
.wrap{max-width:1120px;margin:0 auto;padding:0 var(--gutter)}
.skip{position:absolute;left:-999px;top:0;background:var(--card);color:var(--ink);padding:var(--sp-3) var(--sp-4);z-index:20}
.skip:focus{left:var(--sp-2);top:var(--sp-2)}

/* buttons: the app's own. One filled blue on a band; the rest ghost. */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--hit);padding:var(--sp-2) 20px;
  border:1px solid var(--blue);border-radius:var(--r-in);background:var(--blue);color:var(--on-fill);
  font:600 var(--fs-3)/1.2 var(--sans);text-decoration:none;cursor:pointer}
.btn:hover{background:var(--blue-deep);border-color:var(--blue-deep)}
.btn.ghost{background:var(--card);color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{background:var(--ground);border-color:var(--muted-2)}
.cluster{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center}

/* the bar */
.bar{position:sticky;top:0;z-index:10;background:var(--rail-bg);color:var(--rail-text)}
.bar .wrap{display:flex;align-items:center;gap:var(--sp-5);min-height:60px}
.brand{font-weight:700;font-size:var(--fs-5);letter-spacing:.01em;color:var(--on-fill);text-decoration:none}
.bar nav{display:flex;gap:var(--sp-5);margin-right:auto}
.bar nav a{color:var(--rail-text);text-decoration:none;font-size:var(--fs-3);font-weight:500;padding:var(--sp-3) 0}
.bar nav a:hover{color:var(--on-fill);text-decoration:underline;text-underline-offset:5px}
.bar .btn.ghost{background:transparent;color:var(--on-fill);border-color:var(--rail-muted)}
.bar .btn.ghost:hover{background:rgba(255,255,255,.1);border-color:var(--on-fill)}
.bar .acts{display:flex;gap:var(--sp-3);margin-left:auto}
.bar nav a,.bar .btn{white-space:nowrap}
@media (max-width:1020px){ .bar nav{display:none} }
@media (max-width:560px){ .bar .demo{display:none} }

/* bands */
.band{padding:var(--band) 0}
.band.tint{background:var(--ground);border-block:1px solid var(--line-soft)}
h2{font-size:var(--fs-h2);font-weight:700;line-height:1.15;letter-spacing:-.01em;max-width:22ch}
.lead{font-size:var(--fs-lead);color:var(--muted);max-width:60ch;margin-top:var(--sp-4)}
.head{margin-bottom:clamp(32px,5vw,56px)}

/* hero */
.hero{background:var(--ground);border-bottom:1px solid var(--line-soft);padding:clamp(48px,7vw,88px) 0 var(--band);
  min-height:calc(100svh - 60px);display:grid;align-items:center}
.hero .wrap{width:100%;display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(32px,5vw,64px);align-items:center}
@media (min-width:980px){ .hero .wrap{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)} }
h1{font-size:var(--fs-h1);font-weight:700;line-height:1.06;letter-spacing:-.022em;max-width:15ch}
.hero .lead{font-size:clamp(18px,1.6vw,21px);max-width:46ch;margin-top:var(--sp-5)}
.hero .cluster{margin-top:32px}
.hero .btn{padding-inline:24px;min-height:48px;font-size:var(--fs-4)}
.notpms{margin-top:var(--sp-5);font-size:16px;color:var(--muted);max-width:52ch}
.notpms strong{color:var(--ink);font-weight:600}

/* a product frame: the app's own card, drawn. A real screenshot takes its place in the build. */
.frame{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);font-size:var(--fs-3);line-height:1.45;overflow:hidden}
.frame header{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);align-items:baseline;justify-content:space-between;
  padding:14px 20px;background:var(--rail-bg);color:var(--rail-text);font-size:var(--fs-2)}
.frame header b{color:var(--on-fill);font-size:var(--fs-3);font-weight:600}
.frame .fh{font-size:var(--fs-4);font-weight:700;padding:18px 20px 6px}
.frame li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px var(--sp-4);align-items:center;padding:var(--sp-3) 20px;border-top:1px solid var(--line-soft)}
.frame li:first-child{border-top:0}
.frame .who{grid-column:1;color:var(--muted);font-size:var(--fs-2)}
.frame .st{grid-row:1 / span 2;grid-column:2}
.mono{font-family:var(--mono);font-weight:600;font-size:.93em;font-variant-numeric:tabular-nums}
.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:var(--fs-1);font-weight:600;white-space:nowrap;border:1px solid}
.pill.wait{background:var(--amber-soft);color:var(--amber-ink);border-color:var(--amber-line)}
.pill.done{background:var(--verde-soft);color:var(--verde);border-color:var(--verde-line)}
.plain{color:var(--muted);font-size:var(--fs-2);white-space:nowrap}
.cap{margin-top:var(--sp-3);font-size:var(--fs-1);color:var(--muted-2)}

/* the film: three scenes in one cell, so the page never moves while it plays */
.reel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-3);margin-bottom:var(--sp-3)}
.reel button{text-align:left;white-space:nowrap}
.reel button{position:relative;min-height:var(--hit);padding:var(--sp-2) 0 10px;border:0;background:none;cursor:pointer;
  font:600 var(--fs-2)/1.2 var(--sans);color:var(--muted)}
.reel button .mono{margin-right:var(--sp-1)}
.reel button[aria-selected="true"]{color:var(--ink)}
.reel button::after{content:"";position:absolute;inset:auto 0 0 0;height:3px;border-radius:3px;background:var(--line)}
.reel i{position:absolute;left:0;bottom:0;height:3px;width:100%;border-radius:2px;background:var(--accent);z-index:1;
  transform-origin:left;transform:scaleX(var(--p,0))}
.stage{display:grid}
.scene{grid-area:1 / 1;align-self:start;min-height:100%;transition:opacity .35s ease,transform .45s cubic-bezier(.2,.7,.2,1)}
.scene:not(.cur){opacity:0;transform:translateY(10px);visibility:hidden;transition:opacity .25s ease,transform .25s ease,visibility 0s .25s}
.stage{align-items:stretch}
.reveal{transition:opacity .35s ease,transform .45s cubic-bezier(.2,.7,.2,1)}
.reveal:not(.on){opacity:0;transform:translateY(6px)}
.off{opacity:0;transition:opacity .2s ease}
.swap{display:inline-grid}
.swap>*{grid-area:1 / 1}
.st.swap>*{justify-self:end;align-self:center}
.ck .line{display:flex;gap:var(--sp-3);align-items:center;transition:color .3s ease}
.ck .box{flex:none;width:22px;height:22px;border:1.5px solid var(--muted-2);border-radius:4px;position:relative;
  transition:background .2s ease,border-color .2s ease,transform .25s cubic-bezier(.3,1.6,.5,1)}
.ck .box::after{content:"";position:absolute;left:6.5px;top:2px;width:6px;height:11px;border:solid var(--on-fill);border-width:0 2.5px 2.5px 0;
  transform:rotate(45deg) scale(0);transition:transform .2s ease .05s}
.ck.on .box{background:var(--verde);border-color:var(--verde);transform:scale(1.08)}
.ck.on .box::after{transform:rotate(45deg) scale(1)}
.ck.on .line{color:var(--muted)}
.es{display:block;color:var(--muted);font-size:var(--fs-2)}
.frame .foot{display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-4);align-items:center;padding:var(--sp-4) 20px 20px;border-top:1px solid var(--line-soft)}
.frame .after{border-top:1px solid var(--line-soft)}
.btn.sm{min-height:34px;padding:var(--sp-1) 14px;font-size:var(--fs-2)}
.btn.verde{background:var(--verde);border-color:var(--verde)}
.frame .btn{cursor:default;transition:transform .15s ease,background .15s ease,box-shadow .3s ease}
.frame .btn.on{transform:scale(.96);background:var(--blue-deep);border-color:var(--blue-deep);color:var(--on-fill);box-shadow:0 0 0 5px var(--accent-soft)}
.frame .btn.verde.on{background:#165E42;border-color:#165E42}
.filmfoot{display:flex;gap:var(--sp-4);align-items:center;justify-content:space-between;margin-top:var(--sp-2)}
.filmfoot .cap{margin:0}
.pause{flex:none;min-height:var(--hit);padding:0 var(--sp-3);border:0;background:none;font:600 var(--fs-2)/1 var(--sans);color:var(--blue-ink);cursor:pointer;
  text-decoration:underline;text-underline-offset:4px}
@media (prefers-reduced-motion:reduce){ .scene,.reveal,.off,.ck .box,.ck .box::after,.frame .btn{transition:none} .pause{display:none} }

/* who it is for: a ruled form, the seat, its problem, the answer */
.seats{border-bottom:1px solid var(--line)}
.seat{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-2) clamp(24px,4vw,56px);padding:var(--sp-5) 0;border-top:1px solid var(--line)}
@media (min-width:900px){ .seat{grid-template-columns:minmax(0,.7fr) minmax(0,1fr) minmax(0,1.25fr)} }
.seat h3{font-size:var(--fs-5);font-weight:700;line-height:1.25}
.seat p{font-size:16px;max-width:56ch}
.seat .pain{color:var(--muted)}
.seat .pain::before{content:"The problem";display:block;font-size:var(--fs-1);font-weight:600;color:var(--amber-ink);margin-bottom:var(--sp-1)}
.next{display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-4);align-items:center;margin-top:clamp(28px,4vw,40px);font-size:16px;color:var(--muted)}
.seat .ans::before{content:"With HotelOps";display:block;font-size:var(--fs-1);font-weight:600;color:var(--verde);margin-bottom:var(--sp-1)}

/* the record */
.two{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(32px,5vw,64px);align-items:start}
@media (min-width:980px){ .two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)} }
.rules li{padding:20px 0;border-top:1px solid var(--line)}
.rules li:last-child{border-bottom:1px solid var(--line)}
.rules h3{font-size:var(--fs-5);font-weight:700;line-height:1.25}
.rules p{color:var(--muted);margin-top:6px;max-width:52ch;font-size:16px}
.trail li{display:grid;grid-template-columns:52px minmax(0,1fr);gap:var(--sp-3);align-items:baseline}
.trail .t{color:var(--muted)}
.trail b{font-weight:600}

/* a day: a real sequence, so it is numbered */
.day{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:clamp(20px,3vw,32px);counter-reset:step}
.day li{counter-increment:step;border-top:1px solid var(--line);padding-top:var(--sp-4)}
.day li::before{content:counter(step);display:block;font:600 var(--fs-2)/1 var(--mono);color:var(--accent-ink);margin-bottom:var(--sp-3)}
.day h3{font-size:var(--fs-5);font-weight:700;line-height:1.25}
.day p{font-size:16px;color:var(--muted);margin-top:6px}

/* privacy */
.keeps{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:0 clamp(24px,4vw,56px)}
.keeps li{padding:18px 0;border-top:1px solid var(--line)}
.keeps h3{font-size:var(--fs-5);font-weight:700;line-height:1.25}
.keeps p{font-size:16px;color:var(--muted);margin-top:var(--sp-1);max-width:50ch}

/* the ask */
.ask{background:var(--rail-bg);color:var(--rail-text)}
.ask h2{color:var(--on-fill)}
.ask .lead{color:var(--rail-text)}
.ask .wrap{display:flex;flex-wrap:wrap;gap:var(--sp-5) clamp(32px,5vw,64px);align-items:center;justify-content:space-between}
.ask .wrap>div:first-child{flex:1 1 420px;max-width:600px}
.ask .reach{display:grid;gap:var(--sp-3);justify-items:start}
.ask .reach p{font-size:var(--fs-3)}
.ask .reach a:not(.btn){color:var(--on-fill);font-weight:600;text-underline-offset:4px}

footer{padding:32px 0 40px;font-size:var(--fs-2);color:var(--muted)}
footer .wrap{display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-5);align-items:baseline}
footer .brand{color:var(--ink);font-size:var(--fs-4);margin-right:auto}
footer a{color:var(--muted);text-underline-offset:4px;display:inline-flex;align-items:center;min-height:var(--hit)}
footer a:hover{color:var(--ink)}
footer small{flex-basis:100%;font-size:var(--fs-1);color:var(--muted-2)}
