/* Olladay console and booking pages. See DESIGN.md. */
@font-face{font-family:"Plus Jakarta Sans";src:url(/saunas/_assets/fonts/plus-jakarta-sans.153fc85b7029.woff2) format("woff2");font-weight:200 800;font-display:swap}
@font-face{font-family:Fraunces;src:url(/saunas/_assets/fonts/fraunces.7f9d191d9993.woff2) format("woff2");font-weight:100 900;font-display:swap}

:root{
  /* Sauna OS palette (DESIGN.md). Cedar #d96b27 is a fill colour; text and white-on-cedar buttons use --rust (#b3531a, 5:1). */
  --paper:#faf6f0;--surface:#fff;--sidebar:#f2ece1;--sunk:#f5efe5;
  --line:#e6dec8;--line-strong:#d3c8ae;--line-control:#7d8790;
  --ink:#0d1b22;--ink-2:#4a5560;--ink-3:#5b6770;
  --rust:#b3531a;--rust-hover:#9a4210;--rust-ink:#9a4210;--rust-wash:#fbe9dc;--rust-line:#f2c9a8;--ember:#d96b27;--cedar:#d96b27;
  --sage:#15803d;--sage-ink:#166534;--sage-wash:#dcfce7;--amber:#8a5a00;--amber-wash:#fbf0d9;--red:#a12a1c;--red-wash:#fbe7e3;
  --tide:#0369a1;--tide-wash:#e0f2fe;--focus:#f59e0b;--card-shadow:0 4px 20px -2px rgba(13,27,34,.05);
  --sans:"Plus Jakarta Sans",ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --serif:Fraunces,ui-serif,Georgia,serif;
  --radius:16px;--radius-sm:10px;
  --shadow-pop:0 12px 32px -8px rgb(13 27 34 / .18),0 2px 6px rgb(13 27 34 / .06);
  --ease:cubic-bezier(.2,.8,.2,1);
  color-scheme:light;
  font-family:var(--sans);font-size:15px;line-height:1.5;color:var(--ink);background:var(--paper);
  font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  accent-color:var(--rust);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scrollbar-color:var(--line-strong) transparent}
body{margin:0;min-height:100dvh;background:var(--paper)}
::selection{background:var(--rust-wash);color:var(--rust-ink)}
img,svg{display:block;max-width:100%}
.icon{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* Type */
h1,h2,h3,h4{margin:0;color:var(--ink);text-wrap:balance}
h1{font-family:var(--serif);font-weight:600;font-size:2.125rem;line-height:1.12;letter-spacing:-.02em}
h2{font-size:1.125rem;font-weight:620;line-height:1.3;letter-spacing:-.005em}
h3{font-size:1rem;font-weight:620;line-height:1.35}
p{margin:0}
p+p{margin-top:.6em}
.lead{font-size:1.0625rem;color:var(--ink-2);max-width:62ch;margin-top:.5rem}
.hint,.fine{font-size:.875rem;color:var(--ink-2)}
/* A help line belongs to the field above it and keeps clear of whatever comes next. */
label+.hint,label+.fine{margin-top:-.75rem}
p.hint:not(:last-child),p.fine:not(:last-child){margin-bottom:1.125rem}
.button-row+p.hint,.button-row+p.fine{margin-top:.75rem}
.sub-head{font-size:1rem;color:var(--ink);margin:1.75rem 0 .75rem;padding-top:1.5rem;border-top:1px solid var(--line)}
.fine{margin-top:.75rem}
/* Inline links in small print get a 24px-tall hit area (WCAG 2.5.8) without moving the text around them. */
.hint a:not([class]),.fine a:not([class]){padding-block:.3rem}
strong{font-weight:620}
a{color:var(--rust-ink);text-decoration-thickness:1px;text-underline-offset:.2em;text-decoration-color:var(--rust-line);transition:color .15s,text-decoration-color .15s}
a:hover{color:var(--rust);text-decoration-color:currentColor}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink);border-radius:4px}
.eyebrow{font-size:.875rem;color:var(--ink-2);margin:0 0 .25rem}
.badge{display:inline-flex;align-items:center;gap:.35rem;height:24px;padding:0 .55rem;border-radius:999px;background:var(--sunk);color:var(--ink-2);font-size:.8125rem;font-weight:560;white-space:nowrap}
.badge.is-confirmed,.badge.confirmed{background:var(--sage-wash);color:var(--sage-ink)}
.badge.error{background:var(--red-wash);color:var(--red)}
td{font-variant-numeric:tabular-nums}

/* Skip link */
.skip{position:absolute;left:1rem;top:-4rem;z-index:50;background:var(--ink);color:#fff;padding:.6rem .9rem;border-radius:var(--radius-sm);text-decoration:none}
.skip:focus{top:1rem;color:#fff}

/* Wordmark */
.wordmark{font-family:var(--serif);font-weight:600;font-size:20px;letter-spacing:-.02em;color:var(--ink);text-decoration:none;line-height:1.2}
.wordmark span{display:inline-block;width:.32em;height:.32em;margin-left:.06em;border-radius:50%;background:radial-gradient(circle at 36% 30%,#ffb574,#ff6a3d 55%,#e5432a);box-shadow:0 0 .35em rgb(255 106 61 / .55);text-indent:-9em;overflow:hidden;vertical-align:baseline}
.wordmark:hover{color:var(--ink)}

/* Controls */
label{display:grid;gap:.375rem;margin:0 0 1.125rem;font-size:.9375rem;font-weight:560;color:var(--ink)}
input,select,textarea{font:inherit;font-size:1rem;font-weight:400;color:var(--ink);background:var(--surface);border:1px solid var(--line-control);border-radius:var(--radius-sm);min-height:44px;padding:.55rem .75rem;width:100%;transition:border-color .15s,box-shadow .15s}
textarea{min-height:6.5rem;resize:vertical;line-height:1.5}
input::placeholder,textarea::placeholder{color:var(--ink-3)}
input:hover,select:hover,textarea:hover{border-color:var(--ink-3)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--rust)}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink);border-radius:var(--radius-sm)}
input:user-invalid,select:user-invalid,textarea:user-invalid{border-color:var(--red)}
input[readonly]{background:var(--sunk);color:var(--ink-2)}
input:disabled,select:disabled,textarea:disabled{background:var(--sunk);color:var(--ink-3);cursor:not-allowed}
select{appearance:none;padding-right:2.25rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%235f544b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m1 1.5 5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .8rem center}
input[type=checkbox],input[type=radio]{width:24px;height:24px;min-height:0;margin:0;padding:0;flex:none;cursor:pointer}
label:has(>input[type=checkbox]),label:has(>input[type=radio]){display:flex;align-items:flex-start;min-height:44px;padding-block:.625rem;gap:.625rem;font-weight:400;font-size:.9375rem;color:var(--ink);cursor:pointer;line-height:1.45}
/* A run of checkboxes or radios stacks as 44px rows without the gap a text field gets. */
:not(.checks)>label:has(>input[type=checkbox],>input[type=radio])+label:has(>input[type=checkbox],>input[type=radio]){margin-top:-1.125rem}
fieldset{border:0;margin:0;padding:0;min-width:0}
legend{padding:0;font-weight:620}

button,.button{font:inherit;font-size:.9375rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;padding:0 1.25rem;border-radius:999px;border:1px solid var(--rust);background:var(--rust);color:#fff;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s var(--ease),border-color .15s,color .15s,transform .1s}
button:hover,.button:hover{background:var(--rust-hover);border-color:var(--rust-hover);color:#fff}
button:active,.button:active{transform:translateY(1px)}
button:disabled{opacity:.5;cursor:not-allowed;transform:none}
button.secondary,.button.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-control)}
button.secondary:hover,.button.secondary:hover{background:var(--sunk);border-color:var(--ink-3);color:var(--ink)}
.button.wallet-button,.button.wallet-button:hover{background:#000;border-color:#000;color:#fff}
form{margin:0}
form+form{margin-top:.75rem}

details>summary{cursor:pointer;list-style:none}
details>summary::-webkit-details-marker{display:none}
details.advanced{margin:.25rem 0 0}
details.advanced>summary,.more-tools-toggle{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;font-size:.875rem;font-weight:560;color:var(--ink-2)}
details.advanced>summary::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s var(--ease)}
details.advanced[open]>summary::before{transform:rotate(45deg)}
details.advanced>summary:hover{color:var(--ink)}
details.advanced[open]{padding-bottom:.25rem}
details.advanced[open]>summary{margin-bottom:.75rem}

.columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:0 1rem;align-items:end}
.columns.length-pair{grid-template-columns:1fr 1fr}
.wide{grid-column:1/-1}

/* Notices */
/* Block, not flex: a flex notice turns every text run and inline link into its own column. */
.notice{position:relative;display:block;margin:1.25rem 0;padding:.8rem 1rem .8rem 2.1rem;border-radius:var(--radius-sm);background:var(--sage-wash);color:#1f4a36;font-size:.9375rem}
.notice::before{content:"";position:absolute;left:1rem;top:1.3rem;width:8px;height:8px;border-radius:50%;background:var(--sage)}
.notice.error{background:var(--red-wash);color:#7a1f14}
.pending-changes p{margin:0 0 .6rem}.pending-changes form{margin:0}
.notice.error::before{background:var(--red)}
/* Weather warnings on the diary (src/weather-warnings.js) */
.weather-warnings{display:grid;gap:.75rem;margin:1rem 0}
.weather-warning{border-left:6px solid #e2b600;border-radius:var(--radius-sm);background:#fff8d6;color:var(--ink);padding:.8rem 1rem}
.weather-warning.is-orange{border-color:#e07000;background:#ffeedd}
.weather-warning.is-red{border-color:var(--red);background:var(--red-wash)}
.weather-warning p{margin:0 0 .4rem}.weather-warning p:last-child{margin:0}
.weather-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}

/* Panels */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.75rem}
.card+.card{margin-top:1rem}
.card ul{list-style:none;padding:0;margin:0}
.card>h1:first-child,.card>.eyebrow+h1{margin-bottom:.5rem}
.card h2{margin:2rem 0 .5rem}
.card>h2:first-child,.card h1+h2{margin-top:0}
.card h3{margin:1.25rem 0 .35rem}
.card>p,.card>form>p{max-width:68ch}
.card>p+form,.card>p+button,.card>form+p{margin-top:1rem}
.card>a{display:inline-flex;margin-top:1rem}
.card table{width:100%;border-collapse:collapse;font-size:.9375rem;margin:1rem 0}
.card th{text-align:left;font-size:.8125rem;font-weight:560;color:var(--ink-2);padding:.6rem .75rem;border-bottom:1px solid var(--line)}
.card td{padding:.75rem;border-bottom:1px solid var(--line);vertical-align:top}
.card li{padding:.875rem 0;border-bottom:1px solid var(--line)}
.card li:last-child{border-bottom:0}
.card li>form{display:inline-flex;margin:.5rem .5rem 0 0}
.empty-state{padding:2.5rem 1.5rem;border:1px dashed var(--line-strong);border-radius:var(--radius);text-align:center;color:var(--ink-2);background:var(--sunk)}
.empty-state h3{margin:0 0 .25rem;color:var(--ink)}
.empty-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:1rem}
.empty-actions a{display:inline-flex;align-items:center;min-height:44px}
dl{margin:0}
.quote{background:var(--sunk);border-radius:var(--radius);padding:1rem 1.125rem;margin:1.25rem 0 .5rem}
.quote div{display:flex;justify-content:space-between;gap:1rem;padding:.35rem 0}
.quote div:last-child{border-top:1px solid var(--line);margin-top:.4rem;padding-top:.75rem;font-size:1.0625rem}
.quote dt{color:var(--ink-2)}
.quote div:last-child dt{color:var(--ink);font-weight:600}
.quote dd{margin:0;text-align:right}

/* Console shell */
.shell{display:grid;grid-template-columns:264px minmax(0,1fr);min-height:100dvh}
.sidebar{position:sticky;top:0;height:100dvh;overflow:auto;background:var(--sidebar);border-right:1px solid var(--line);padding:1.25rem .75rem 1rem;display:flex;flex-direction:column;gap:1rem}
.sidebar-head{padding:.25rem .625rem}
.venue{display:flex;align-items:center;gap:.625rem;padding:.625rem;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--line)}
.venue-mark{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:8px;background:var(--rust);color:#fff;font-family:var(--sans);font-weight:800;font-size:1.25rem;line-height:1}
.venue-text{display:grid;min-width:0}
.venue-text strong{font-size:.9375rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.state{display:inline-flex;align-items:center;gap:.35rem;font-size:.8125rem;color:var(--ink-2)}
.state::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ink-3)}
.state.is-live{color:var(--sage-ink)}.state.is-live::before{background:var(--sage)}
.state.is-alert{color:var(--red)}.state.is-alert::before{background:var(--red)}
.nav{display:flex;flex-direction:column;gap:1rem;flex:1}
.nav-group{display:grid;gap:1px}
.nav-heading{font-size:.875rem;font-weight:560;color:var(--ink-3);padding:.25rem .625rem .3rem}
.nav a,.nav-button{display:flex;align-items:center;gap:.625rem;min-height:44px;padding:0 .625rem;border-radius:var(--radius-sm);color:var(--ink-2);font-size:.9375rem;font-weight:500;text-decoration:none;background:none;border:0;width:100%;justify-content:flex-start;transition:background .15s,color .15s}
.nav a:hover,.nav-button:hover{background:rgb(31 26 23 / .05);color:var(--ink)}
.nav a[aria-current=page]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgb(31 26 23 / .06),inset 0 0 0 1px var(--line)}
.nav a[aria-current=page] .icon{color:var(--rust)}
.nav-account{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--line);display:grid;gap:1px}
.nav-account form{margin:0}
.menu{display:none}
.nav-label{margin:0}
.area-bar{display:none}
.nav-fold>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.4rem;border-radius:var(--radius-sm);min-height:44px;padding:0 .625rem;user-select:none;font-size:.875rem;color:var(--ink-2);font-weight:600}
.nav-fold[open]>summary{color:var(--ink)}
.nav-fold>summary::-webkit-details-marker{display:none}
.nav-fold>summary::after{content:"";width:6px;height:6px;margin-left:auto;margin-right:.25rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s;opacity:.7}
.nav-fold[open]>summary::after{transform:rotate(45deg)}
.nav-fold>summary:hover{color:var(--ink);background:rgb(31 26 23 / .04)}
.nav-fold-body{display:grid;gap:1px;padding-top:2px}
.nav-tag{margin-left:auto;font-size:.6875rem;font-weight:600;line-height:1;padding:.25rem .4rem;border-radius:999px;background:var(--rust-wash);color:var(--rust-ink);font-variant-numeric:tabular-nums}
.nav-tag.is-on{background:#e3efe8;color:var(--sage-ink)}
.nav-heading .nav-tag{margin-left:.25rem}
.venue-text strong .nav-tag{margin-left:.25rem;vertical-align:.1em}
.nav a.is-within{color:var(--ink);font-weight:600}
.nav a.is-within .icon{color:var(--rust)}
.nav-help a{min-height:52px;padding-block:.375rem}
.nav-help a>span{display:flex;flex-direction:column;line-height:1.25}
.nav-note{display:block;color:var(--ink-3,var(--ink-2));font-size:.8125rem;font-weight:400}
.nav-settings{margin-bottom:.25rem}
.nav-pro{display:grid;gap:.2rem;margin:0 0 .75rem;padding:.75rem .875rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink-2);font-size:.8125rem;line-height:1.4;text-decoration:none}
.nav .nav-pro{display:grid;min-height:0;padding:.75rem .875rem;font-weight:400}
.nav-pro strong{color:var(--ink);font-size:.875rem}
.nav-pro-cta{color:var(--rust-ink);font-weight:600;margin-top:.15rem}
.nav .nav-pro:hover{border-color:var(--rust);background:var(--surface)}
.nav-pro.is-on strong{color:var(--sage-ink)}
.settings-grid{display:grid;gap:2rem;max-width:760px}
.settings-group h2{font-size:1rem;font-weight:600;margin:0 0 .625rem;color:var(--ink-2)}
.settings-list{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden}
.settings-list li+li{border-top:1px solid var(--line)}
.settings-list a{display:flex;align-items:center;gap:.875rem;padding:.875rem 1.125rem;color:var(--ink);text-decoration:none;min-height:44px}
.settings-list a:hover{background:var(--sunk)}
.settings-list a>.icon{flex:none;color:var(--ink-2)}
.settings-list a>span:not(.arrow){display:grid;gap:.125rem;flex:1;min-width:0}
.settings-list small{color:var(--ink-2);font-size:.875rem}
.settings-list .arrow{color:var(--ink-3)}
.workspace{min-width:0;padding:2.5rem clamp(1.25rem,4vw,3.5rem) 4rem;max-width:1180px;width:100%}
.workspace>.card,.workspace>section{max-width:none}
.owner-app .workspace>.card:first-child{border:0;background:none;padding:0}
.owner-app .workspace>.card:first-child>h1:first-child,.owner-app .workspace>.card:first-child>.eyebrow:first-child+h1{margin-bottom:.375rem}
.owner-app .workspace>.card+.card{margin-top:2rem}
.no-shell .topbar{background:none;border:0}
.no-shell main{max-width:640px;margin:0 auto;padding:3rem 1.25rem}

/* Business list */
.business-list{display:grid;gap:.5rem;margin:1.5rem 0 2.5rem}
.business-list a{display:flex;align-items:center;gap:.875rem;padding:.875rem 1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);text-decoration:none;color:var(--ink);transition:border-color .15s,box-shadow .15s}
.business-list a:hover{border-color:var(--line-strong);box-shadow:var(--shadow-pop);color:var(--ink)}
.business-list .venue-text{flex:1}
.business-list .arrow{color:var(--ink-3)}
.create-business{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.5rem}
.create-business h2{margin:0 0 .25rem}
.create-business>p{color:var(--ink-2);margin-bottom:1.25rem}
.create-business .hint{margin:-.6rem 0 1.25rem}
.create-business button{margin-top:.5rem}

/* Page header inside the workspace */
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;margin-bottom:2rem;flex-wrap:wrap}
.page-head .lead{margin-top:.375rem}
.page-actions{display:flex;gap:.625rem;flex-wrap:wrap}

/* Go-live checklist */
.launch{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin:0 0 2rem;overflow:hidden}
.launch-step{display:grid;grid-template-columns:auto 1fr;gap:.25rem .75rem;padding:1.125rem 1.25rem;align-content:start}
.launch-step+.launch-step{border-left:1px solid var(--line)}
.launch-step .tick{grid-row:span 2;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;border:1.5px solid var(--line-strong);color:transparent;margin-top:.05rem}
.launch-step .tick .icon{width:14px;height:14px;stroke-width:2.4}
.launch-step.is-done .tick{background:var(--sage);border-color:var(--sage);color:#fff}
.launch-step.is-next .tick{border-color:var(--rust);box-shadow:0 0 0 3px var(--rust-wash)}
.launch-step strong{font-size:.9375rem}
.launch-step span{font-size:.875rem;color:var(--ink-2)}
.launch-step form,.launch-step .button{grid-column:2;margin-top:.625rem;justify-self:start}
.launch-step button{min-height:44px;padding:0 .875rem;font-size:.875rem}

/* Setup form */
.setup-section{display:grid;grid-template-columns:minmax(0,15rem) minmax(0,1fr);gap:1.5rem 3rem;padding:2rem 0;border-top:1px solid var(--line)}
.setup-section:first-of-type{border-top:0;padding-top:0}
.setup-section>header h2{margin:0 0 .375rem}
.setup-section>header p{font-size:.875rem;color:var(--ink-2)}
.setup-fields{min-width:0}
.setup-row{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.125rem 1.25rem .625rem;margin:0 0 .75rem}
.setup-row legend{float:left;width:100%;font-size:.8125rem;font-weight:560;color:var(--ink-3);margin-bottom:.625rem}
.setup-row legend+*{clear:both}
.setup-row legend.visually-hidden{float:none;width:1px;margin:-1px}
.setup-row{position:relative}
.setup-row>button[data-remove-row]{min-height:44px;padding:0 .625rem;font-size:.8125rem;border-color:transparent;background:none;color:var(--ink-2);margin:.25rem 0 .5rem -.625rem}
.setup-row>button[data-remove-row]:hover{color:var(--red);background:var(--red-wash)}
button[data-add-row]{border-style:dashed;width:100%;color:var(--ink-2);background:transparent}
button[data-add-row]:hover{color:var(--ink);background:var(--surface)}
.save-bar{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;gap:1rem;margin:1.5rem calc(-1 * clamp(1.25rem,4vw,3.5rem)) 0;padding:.875rem clamp(1.25rem,4vw,3.5rem);background:rgb(251 247 241 / .92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line)}
.save-bar span{font-size:.875rem;color:var(--ink-2)}
.settings-list{display:grid;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden}
.setting{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.25rem}
.setting+.setting{border-top:1px solid var(--line)}
.setting p{font-size:.875rem;color:var(--ink-2);margin-top:.15rem}
.setting strong{font-size:.9375rem}
.setting form{margin:0}
.setting button{min-height:44px;font-size:.875rem;padding:0 .875rem}
.payments-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:1.25rem}
.payments-panel h2{display:none}
.payments-panel p{color:var(--ink-2);max-width:62ch}
.payments-panel p+form,.payments-panel form+p{margin-top:1rem}
.payments-panel .notice{margin-top:0}

/* Legacy setup bits still rendered by older pages */
.setup-status{display:none}
.form-section-heading{margin:2rem 0 1rem}
.step-number{display:none}
.workspace-nav,.more-tools{display:none}
.back-link{display:none}

/* Section headings on public pages */
.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1rem}
.section-heading p:last-child{font-size:.875rem;color:var(--ink-2)}

/* Public booking pages */
.topbar{border-bottom:1px solid var(--line);background:var(--paper)}
.topbar-inner{max-width:760px;margin:0 auto;padding:0 1.25rem;min-height:60px;display:flex;align-items:center;justify-content:space-between}
.topbar-context{display:none}
.public-app{font-size:16px}
.public-app main{max-width:760px;margin:0 auto;padding:0 1.25rem 3rem}
.public-hero{padding:3.5rem 0 2.25rem;border-bottom:1px solid var(--line)}
.public-hero .eyebrow{font-size:.9375rem;color:var(--ink-2);display:flex;align-items:center;gap:.4rem;margin-bottom:.75rem}
.public-hero .eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--rust)}
.public-hero h1{font-size:clamp(2.5rem,7vw,3.75rem);line-height:1.02;letter-spacing:-.025em}
.public-hero-inner>p:not(.eyebrow){font-size:1.125rem;color:var(--ink-2);margin-top:1rem;max-width:44ch}
.hero-jump{display:none}
.hero-art{display:none}
.public-schedule{background:none;border:0;border-radius:0;padding:2rem 0 0}
.public-schedule .section-heading h2{font-family:var(--sans);font-weight:800;font-size:1.5rem;letter-spacing:-.015em;margin:0}
.public-schedule .section-heading .eyebrow{display:none}
.slot-day{position:sticky;top:0;z-index:2;background:var(--paper);font-size:.9375rem;font-weight:620;color:var(--ink);margin:1.75rem 0 0;padding:.625rem 0;border-bottom:1px solid var(--line)}
.slots{list-style:none;padding:0;margin:0}
.slots li{border-bottom:1px solid var(--line)}
.slot{display:grid;grid-template-columns:4rem minmax(0,1fr) auto;align-items:center;gap:1rem;padding:1rem .75rem;margin:0 -.75rem;border-radius:var(--radius-sm);min-height:76px;text-decoration:none;color:var(--ink);transition:background .15s}
.slot:hover{background:var(--surface);color:var(--ink)}
.slot-time{font-size:1.0625rem;font-weight:600}
.slot-body{display:grid;gap:.15rem;min-width:0}
.slot-body strong{font-family:var(--sans);font-weight:800;font-size:1.1875rem;line-height:1.2;letter-spacing:-.01em}
.slot-body span{font-size:.875rem;color:var(--ink-2)}
.slot-book{display:inline-flex;align-items:center;min-height:36px;padding:0 1rem;border-radius:999px;background:var(--ink);color:#fff;font-size:.875rem;font-weight:600;transition:background .15s}
.slot:hover .slot-book{background:var(--rust)}
.slot-full{font-size:.875rem;color:var(--ink-3);font-weight:560}
.option-picker{margin:1.25rem 0 .5rem}
.option-picker h2{font-size:1rem;font-weight:620;margin:0 0 .5rem}
.options{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.card .options li{padding:0;border:0}
.option{display:grid;gap:.15rem;min-height:44px;padding:.625rem .875rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);text-decoration:none}
a.option:hover{border-color:var(--rust)}
.option strong{font-weight:600}
.option span{font-size:.875rem;color:var(--ink-2)}
.option.is-chosen{border-color:var(--rust);background:var(--rust-wash);box-shadow:inset 0 0 0 1px var(--rust)}
.option.is-full:not(.is-chosen){color:var(--ink-3);background:transparent}
.slot.is-full{color:var(--ink-3)}
.slot.is-full .slot-body strong{color:var(--ink-3)}
.shop-links{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0 0}
.service-filter{display:flex;gap:.5rem;overflow-x:auto;margin:.75rem -1.25rem 0;padding:0 1.25rem .25rem;scrollbar-width:none}
.service-filter a{flex:none;display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:0 1rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);text-decoration:none;font-size:.9375rem;font-weight:560;white-space:nowrap}
.service-filter a span{font-weight:400;color:var(--ink-2)}
.service-filter a:hover{border-color:var(--line-strong);color:var(--ink)}
.service-filter a[aria-current]{background:var(--ink);border-color:var(--ink);color:#fff}
.service-filter a[aria-current] span{color:#e8e1d8}
@media(min-width:761px){.service-filter{flex-wrap:wrap;overflow:visible;margin:.75rem 0 0;padding:0}}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.shop-links a{display:inline-flex;align-items:center;gap:.375rem;min-height:44px;padding:0 .8rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);text-decoration:none;color:var(--rust-ink);font-size:.9375rem;font-weight:560}
.shop-links a:hover{border-color:var(--line-strong);color:var(--ink)}
.policy-note{margin-top:2.5rem;padding-top:1.25rem;border-top:1px solid var(--line);display:grid;grid-template-columns:10rem 1fr;gap:.5rem 1.5rem;font-size:.9375rem}
.policy-note span{font-weight:600}
.policy-note p{color:var(--ink-2)}
.site-footer{max-width:760px;margin:0 auto;padding:2rem 1.25rem 3rem;font-size:.875rem;color:var(--ink-3)}
.site-footer strong{font-weight:700;letter-spacing:-.04em;color:var(--ink-2)}
.site-footer strong span{color:var(--rust)}

/* Booking, order and receipt pages */
.public-app .card{background:none;border:0;padding:2.25rem 0 0;border-radius:0}
.public-app .card>a:first-child,.public-app .card>p:first-child>a:only-child{display:inline-flex;align-items:center;gap:.35rem;margin:0 0 1.25rem;font-size:.9375rem;text-decoration:none;color:var(--ink-2)}
.public-app .card>a:first-child::before{content:"←"}
.public-app .card h1{font-size:clamp(2rem,6vw,2.75rem);margin-bottom:.75rem}
.public-app .card>p strong,.when{font-size:1.0625rem}
.public-app .card form{margin-top:1.5rem;max-width:520px}
.public-app .card form button.wide{width:100%;min-height:52px;font-size:1rem;margin-top:.5rem}
.public-app .card .fine{max-width:520px}
.status-mark{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--sage);color:#fff;font-size:1.5rem;margin-bottom:1.25rem}
.status-progress{display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--amber);background:var(--amber-wash);padding:.35rem .75rem;border-radius:999px;margin-bottom:1rem}
.status-progress::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;animation:pulse 1.4s var(--ease) infinite}
@keyframes pulse{50%{opacity:.3}}
.status.is-confirmed h1{color:var(--ink)}
.public-app .quote{max-width:520px}
.pass-redeem,.share,.voucher-redeem,.code-entry,.waiver{margin-top:2rem;border-top:1px solid var(--line);padding-top:1.25rem;max-width:520px}
.share summary,.pass-redeem summary,.voucher-redeem summary{display:flex;align-items:center;justify-content:space-between;min-height:48px;font-weight:600;color:var(--ink)}
.share summary::after,.pass-redeem summary::after,.voucher-redeem summary::after{content:"+";font-size:1.25rem;color:var(--ink-3);font-weight:400}
.share[open]>summary::after,.pass-redeem[open]>summary::after,.voucher-redeem[open]>summary::after{content:"−"}
.share-content{padding:.5rem 0}
.share-preview{width:100%;height:auto;border-radius:var(--radius);border:1px solid var(--line)}
.share input[readonly]{font-size:.875rem}
.share a{display:inline-flex;align-items:center;min-height:44px}
.waiver{font-size:.9375rem}
.waiver p{color:var(--ink-2)}
.qr{padding:1rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);display:inline-block}
.qr svg{width:min(100%,14rem);height:auto}
.attendance-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin:1rem 0}

/* Diary */
.diary{padding:0}
.owner-app .workspace>.card.diary:first-child{padding:0}
.diary-top{display:flex;justify-content:flex-end;align-items:center;gap:1rem;color:var(--ink-2);font-size:.875rem}
.diary-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:.25rem 0 1.25rem}
.diary-heading h1{margin:0 auto 0 0}
.diary-today{display:inline-flex;align-items:center;min-height:44px;padding:0 1.125rem;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);text-decoration:none;font-weight:600;font-size:.875rem;color:var(--ink)}
.diary-today:hover{background:var(--sunk);color:var(--ink)}
.diary-view{display:inline-flex;gap:2px;padding:3px;border-radius:10px;background:var(--sidebar);margin-bottom:1rem}
.diary-view a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 1rem;border-radius:7px;text-decoration:none;font-weight:560;font-size:.875rem;color:var(--ink-2)}
.diary-view a:hover{color:var(--ink)}
.diary-view a[aria-current=page]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgb(31 26 23 / .1)}
.diary-nav{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:.5rem;margin:0 0 .75rem}
.diary-nav a{display:grid;place-items:center;width:44px;height:44px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);text-decoration:none;font-size:1.05rem;color:var(--ink)}
.diary-nav a:hover{background:var(--sunk);color:var(--ink)}
.diary-nav strong{text-align:center;font-size:1rem}
.date-jump{margin:0 0 1rem}
.date-jump summary{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;font-size:.875rem;font-weight:560;color:var(--rust-ink)}
.date-jump summary::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s var(--ease)}
.date-jump[open] summary::before{transform:rotate(45deg)}
.date-jump summary:hover{color:var(--ink)}
.diary-controls{display:grid;grid-template-columns:minmax(150px,1fr) minmax(150px,1fr) auto;align-items:end;gap:.75rem;padding:1rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-top:.5rem}
.diary-controls label{margin:0}
.date-field label{margin:0}
.date-hint{display:block;font-size:.75rem;color:var(--ink-3);margin-top:.25rem}
.diary-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
.diary-list{min-width:0}
.diary-grid{display:grid;grid-template-columns:3.5rem repeat(var(--day-count),minmax(0,1fr));border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.diary-grid.days-1{grid-template-columns:3.5rem minmax(0,1fr)}
.diary-grid.days-7{grid-template-columns:3.5rem repeat(7,minmax(0,1fr))}
.grid-hours{position:relative;border-right:1px solid var(--line);color:var(--ink-3);font-size:.6875rem}
.grid-heading,.grid-day h3{display:block;min-height:44px;margin:0;padding:.75rem .4rem;border-bottom:1px solid var(--line);font-size:.8125rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--surface)}
.grid-hours>span:not(.grid-heading){position:absolute;left:.4rem;transform:translateY(36px)}
.grid-day{min-width:0;border-right:1px solid var(--line)}
.grid-day:last-child{border-right:0}
.grid-day h3{text-align:center}
.grid-track{position:relative;overflow:hidden;background-image:linear-gradient(to bottom,transparent 59px,#efe7dc 59px);background-size:100% 60px}
.grid-event{position:absolute;display:flex;flex-direction:column;gap:.05rem;overflow:hidden;padding:.3rem .45rem;border-radius:6px;background:var(--rust-wash);box-shadow:inset 0 0 0 1px var(--rust-line);color:var(--ink);text-decoration:none;font-size:.75rem;line-height:1.25;min-width:0;z-index:1;transition:background .15s}
.grid-event strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.grid-event span{font-size:.6875rem;color:var(--ink-2)}
.grid-event:hover{background:#f3d9cc;color:var(--ink);z-index:2}
.grid-event[aria-current=true]{background:var(--rust);color:#fff}
.grid-event[aria-current=true] span{color:#fbe2d8}
.view-day .diary-day,.view-week .diary-day{display:none}
.view-agenda .diary-grid{display:none}
.diary-day{padding:.25rem 0}
.diary-day h2{font-size:.9375rem;margin:1rem 0 .5rem}
.diary-day ul,.diary-detail ul{list-style:none;padding:0;margin:0}
.diary-slot{border:1px solid var(--line);border-radius:var(--radius-sm);margin:.375rem 0;padding:0;background:var(--surface)}
.diary-slot a{display:grid;grid-template-columns:3.5rem 1fr auto auto;gap:1rem;align-items:center;padding:.75rem .875rem;text-decoration:none;min-height:58px;color:var(--ink);border-radius:inherit}
.diary-slot a:hover,.diary-slot a[aria-current=true]{background:var(--rust-wash);color:var(--ink)}
.diary-time{font-size:1rem;font-weight:600}
.diary-slot-title{display:grid;gap:.1rem}
.diary-slot-title span{font-size:.8125rem;color:var(--ink-2)}
.diary-slot-arrow{color:var(--ink-3)}
.diary-slot small{display:block;padding:0 .875rem .7rem;color:var(--amber)}
.diary-empty{display:grid;gap:.35rem;padding:1.5rem;background:var(--sunk);border:1px dashed var(--line-strong);border-radius:var(--radius);text-align:center}
.diary-empty span{font-size:.875rem;color:var(--ink-2)}
.diary-detail{border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem;background:var(--surface);box-shadow:var(--shadow-pop);margin-top:1rem}
.diary-detail h2{margin:0 0 .5rem;font-family:var(--sans);font-weight:800;font-size:1.3125rem}
.diary-detail h3{margin:1.25rem 0 .4rem}
.diary-detail dl{display:grid;gap:.35rem;margin:.75rem 0 0;font-size:.9375rem}
.diary-detail .attendance-counts{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem 1rem}
.diary-detail dl div{display:flex;justify-content:space-between;gap:1rem}
.diary-detail dt{color:var(--ink-2)}
.diary-detail dd{margin:0;text-align:right;min-width:0;overflow-wrap:anywhere}
.diary-detail dt{flex-shrink:0}
.diary-detail li{padding:.625rem 0;border-bottom:1px solid var(--line)}
.diary-detail form label{margin:1rem 0}
.diary-detail button{min-height:44px;font-size:.875rem;max-width:100%;white-space:normal;overflow-wrap:anywhere;padding:.5rem 1rem}
.detail-top{display:flex;justify-content:space-between;align-items:center;gap:1rem}
.detail-top .eyebrow{margin:0}
.detail-top a{font-size:.875rem;font-weight:560;text-decoration:none;color:var(--ink-2)}
.change-time{margin-top:1rem}
.change-time summary{font-weight:560;font-size:.875rem;color:var(--rust-ink);min-height:44px;display:inline-flex;align-items:center}
.diary-footnote{font-size:.8125rem;color:var(--ink-3);margin-top:1rem}

@media(min-width:900px){
  .diary-layout:has(.diary-detail){grid-template-columns:minmax(0,1fr) 320px;gap:1rem}
  .diary-detail{position:sticky;top:1.5rem;margin:0;max-height:calc(100dvh - 3rem);overflow:auto}
  .view-agenda .diary-list{max-width:860px}
}

/* Tablet and phone */
@media(max-width:1023px){
  .shell{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .sidebar{position:sticky;top:0;z-index:30;height:auto;overflow:visible;flex-direction:row;align-items:center;flex-wrap:wrap;gap:.625rem;padding:.625rem 1rem;border-right:0;border-bottom:1px solid var(--line);background:rgb(243 236 226 / .94);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
  .sidebar-head{padding:0}
  .venue{flex:1;min-width:0;padding:0;background:none;border:0}
  .venue-mark{width:30px;height:30px;font-size:1.1rem}
  .nav-wide{display:none}
  .menu{display:block;order:3;margin-left:auto}
  .menu>summary{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:0 .75rem;border:1px solid var(--line-control);border-radius:var(--radius-sm);background:var(--surface);font-weight:560;font-size:.875rem}
  .menu[open]>summary{background:var(--ink);color:#fff;border-color:var(--ink)}
  .menu>.nav{position:absolute;left:.75rem;right:.75rem;top:calc(100% + .375rem);max-height:calc(100dvh - 5rem - 64px - env(safe-area-inset-bottom));overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-pop);padding:.75rem;animation:drop .18s var(--ease)}
  .no-shell .menu{display:none}
  .workspace{padding:1.75rem 1.25rem 3rem}
  .save-bar{margin:1.5rem -1.25rem 0;padding:.75rem 1.25rem}
  .diary-grid{display:none}
  .view-day .diary-day,.view-week .diary-day{display:block}
  .diary-detail{position:fixed;z-index:40;inset:auto 0 0;max-height:min(82dvh,780px);overflow:auto;margin:0;border-radius:16px 16px 0 0;box-shadow:0 -16px 48px -8px rgb(31 26 23 / .3);animation:rise .22s var(--ease)}
  .diary .date-jump .diary-controls{grid-template-columns:1fr 1fr}
  .diary .date-jump .diary-controls button{grid-column:1/-1}
}

@media (max-width:759px) and (scripting:none){
  .diary-detail{position:static;max-height:none;margin-top:1rem;border-radius:var(--radius);animation:none}
}
/* Phones: the main areas along the bottom, the full list stays under Menu */
@media(max-width:760px){
  .area-bar{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;position:fixed;z-index:35;left:0;right:0;bottom:0;padding:.25rem .25rem calc(.25rem + env(safe-area-inset-bottom));background:var(--sidebar);border-top:1px solid var(--line)}
  .area-bar a{display:grid;justify-items:center;align-content:center;gap:.15rem;min-height:56px;padding:.25rem 0;border-radius:var(--radius-sm);color:var(--ink-2);font-size:.8125rem;font-weight:560;text-decoration:none}
  .area-bar a[aria-current]{color:var(--ink);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line)}
  .area-bar a[aria-current] .icon{color:var(--rust)}
  .area-bar a:focus-visible{outline-offset:-2px}
  .owner-app .workspace{padding-bottom:calc(5.5rem + env(safe-area-inset-bottom))}
  .owner-app :focus{scroll-margin-bottom:5rem}
  /* The selected-time sheet sits on the bar (56px links, padding and border), not over it, so the main areas stay in reach. */
  body:has(.area-bar) .diary-detail{bottom:calc(56px + .5rem + 1px + env(safe-area-inset-bottom));max-height:min(calc(82dvh - 64px),780px);border-bottom:1px solid var(--line)}
}
@keyframes drop{from{opacity:0;transform:translateY(-4px)}}
@keyframes rise{from{transform:translateY(24px);opacity:.6}}
@media(max-width:760px){
  h1{font-size:1.875rem}
  .card{padding:1.25rem}
  .launch{grid-template-columns:1fr}
  .launch-step+.launch-step{border-left:0;border-top:1px solid var(--line)}
  .setup-section{grid-template-columns:1fr;gap:1rem}
  .policy-note{grid-template-columns:1fr}
  .section-heading{display:block}
  .section-heading p:last-child{margin-top:.25rem}
  .setting{flex-wrap:wrap}
  .page-head{align-items:flex-start}
  .diary-controls{grid-template-columns:1fr 1fr}
  .diary-controls button{grid-column:1/-1}
}
@media(max-width:480px){
  .public-hero{padding:2.25rem 0 1.75rem}
  .slot{grid-template-columns:3.25rem minmax(0,1fr) auto;gap:.75rem;padding:.875rem .5rem;margin:0 -.5rem}
  .slot-body strong{font-size:1.0625rem}
  .slot-book{padding:0 .875rem}
  .diary-view{display:flex}
  .diary-view a{flex:1;padding:0 .5rem}
  .diary-slot a{grid-template-columns:3.25rem 1fr auto auto;gap:.625rem}
  .diary-detail{padding:1rem}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
@media print{.sidebar,.save-bar,.skip{display:none}.shell{display:block}}

/* Bare status pages (errors, not found) */
.workspace>h1:first-child,.no-shell main>h1:first-child{margin-bottom:.75rem}
.public-app main>h1:first-child{margin:2.5rem 0 .75rem}
.workspace>h1+p,.workspace>h1~a,.public-app main>h1~p,.public-app main>h1~a{display:block;max-width:60ch;color:var(--ink-2);margin-top:.5rem}
.business-list,.create-business{max-width:720px}
.diary-top{display:none}

/* Console pages: header, panels, rows, pills */
.page{max-width:1040px}
.page>.notice{margin-top:0}
.crumb{display:inline-flex;align-items:center;gap:.35rem;margin-bottom:1rem;font-size:.875rem;color:var(--ink-2);text-decoration:none}
.crumb:hover{color:var(--ink)}
.page-head h1{margin:0}
.page-head .lead{max-width:68ch}
.page-head .lead strong{color:var(--ink)}
.button .icon{width:18px;height:18px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0 0 1.25rem;min-width:0}
.panel-head{padding:1.125rem 1.375rem 0}
.panel-head h2{margin:0;display:flex;align-items:center;gap:.625rem;flex-wrap:wrap}
.panel-head p{margin-top:.3rem;font-size:.875rem;color:var(--ink-2);max-width:72ch}
.panel-body{padding:1rem 1.375rem 1.375rem}
.panel-body>form,.panel-body>p,.panel-body>label{max-width:640px}
.panel-body>form>button[type=submit],.panel-body>form>.button-row{margin-top:.25rem}
.panel-body h3{margin:1rem 0 .5rem;font-size:.875rem;color:var(--ink-2);font-weight:560}
.panel-pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:0 1.25rem;align-items:start}
.rows{list-style:none;margin:0 -1.375rem;padding:0;border-top:1px solid var(--line)}
.panel-head+.panel-body>.rows:first-child{margin-top:-.25rem}
.panel-body>.rows:last-child{margin-bottom:-1.375rem}
.row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main side" "actions actions";align-items:center;gap:.25rem 1rem;padding:.875rem 1.375rem;border-bottom:1px solid var(--line)}
.row:last-child{border-bottom:0}
.row:hover{background:#fdfbf8}
.row-main{grid-area:main;display:grid;gap:.15rem;min-width:0}
.row-main strong{font-size:.9375rem;font-weight:600;overflow-wrap:anywhere}
.row-meta{font-size:.8125rem;color:var(--ink-2);line-height:1.5;overflow-wrap:anywhere}
.row-side{grid-area:side;display:flex;gap:.5rem;align-items:center;justify-self:end}
.row-actions{grid-area:actions;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.row-actions:empty{display:none}
.row-actions form{margin:0}
.row-actions button,.row-actions .button{min-height:44px;padding:0 .75rem;font-size:.8125rem}
.row-actions .role-change{display:flex;gap:.375rem;align-items:center}.row-actions .role-change label{display:flex;gap:.375rem;align-items:center;margin:0;font-size:.8125rem}.row-actions .role-change select{min-height:44px;width:auto;padding:0 .5rem;font-size:.8125rem}
.row-note{font-size:.8125rem;color:var(--ink-3)}
.row-error{display:block;color:var(--red);margin-top:.15rem}
@media(min-width:900px){
  .row{grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"main side actions"}
  .row-actions{justify-content:flex-end}
}
.rows-empty{max-width:none !important;padding:1.5rem;text-align:center;color:var(--ink-2);background:var(--sunk);border-radius:var(--radius-sm);font-size:.9375rem}
.rows-empty:empty{display:none}
.pill{display:inline-flex;align-items:center;gap:.35rem;height:22px;padding:0 .5rem;border-radius:999px;background:var(--sunk);color:var(--ink-2);font-size:.75rem;font-weight:560;white-space:nowrap;letter-spacing:0}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.7}
.pill.is-good{background:var(--sage-wash);color:var(--sage-ink)}
.pill.is-wait{background:var(--amber-wash);color:var(--amber)}
.pill.is-bad{background:var(--red-wash);color:var(--red)}
.panel-head h2 .pill{font-size:.75rem;font-weight:560}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;letter-spacing:0}
textarea.mono{font-size:.8125rem}
.notes{display:grid;gap:.5rem;max-width:72ch;font-size:.875rem;color:var(--ink-2);margin-top:.5rem}
.notes p+p{margin-top:0}
.button-row{display:flex;flex-wrap:wrap;gap:.625rem;align-items:center;margin-top:1rem}
.button-row form{margin:0}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-sm);margin:.5rem 0 1rem}
.table-wrap table{margin:0;width:100%;border-collapse:collapse;font-size:.875rem}
.table-wrap th{text-align:left;font-size:.75rem;font-weight:560;color:var(--ink-2);padding:.625rem .875rem;background:var(--sunk);border-bottom:1px solid var(--line)}
.table-wrap td{padding:.75rem .875rem;border-bottom:1px solid var(--line);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8125rem;overflow-wrap:anywhere}
.table-wrap tr:last-child td{border-bottom:0}
.filters{display:flex;flex-wrap:wrap;gap:.375rem;margin:0 0 1.25rem}
.filters a{display:inline-flex;align-items:center;min-height:44px;padding:0 .875rem;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-2);font-size:.875rem;font-weight:500;text-decoration:none}
.filters a:hover{color:var(--ink);border-color:var(--ink-3)}
.filters a[aria-current=page]{background:var(--ink);border-color:var(--ink);color:#fff}
.checks{display:grid;gap:0;margin:0 0 1.125rem;padding:.875rem 1rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--sunk)}
.checks legend{float:left;width:100%;font-size:.8125rem;font-weight:560;color:var(--ink-2);margin-bottom:.375rem}
.checks label{margin:0}
.mapping{list-style:none;display:flex;flex-wrap:wrap;gap:.375rem;padding:0;margin:0 0 1rem}
.mapping li{display:inline-flex;gap:.375rem;align-items:center;padding:.25rem .625rem;border-radius:var(--radius-sm);background:var(--sunk);font-size:.8125rem}
.mapping code{font-family:ui-monospace,Menlo,monospace;color:var(--ink-2)}
.mapping li{max-width:100%;min-width:0}.mapping a,.mapping code{overflow-wrap:anywhere;min-width:0}
.change{display:grid;gap:.5rem;margin:0 0 1rem;max-width:640px}
.change div{display:grid;grid-template-columns:4rem 1fr;gap:1rem}
.change dt{color:var(--ink-2)}
.change dd{margin:0}
.qr-block{display:flex;gap:1.25rem;align-items:flex-start;flex-wrap:wrap}
.qr-block p{color:var(--ink-2);font-size:.875rem;margin-bottom:.75rem;max-width:36ch}
.qr-block .button{white-space:normal;text-align:left;min-height:44px;padding:.5rem .875rem;font-size:.8125rem}
.qr{padding:.75rem}
.qr svg{width:9rem}
.checklist{counter-reset:item}
.checklist .row{grid-template-columns:2rem minmax(0,1fr);grid-template-areas:"num main"}
.checklist .row::before{content:counter(item);counter-increment:item;grid-area:num;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--sunk);font-size:.75rem;font-weight:600;color:var(--ink-2)}
@media(max-width:760px){
  .panel-head{padding:1rem 1rem 0}
  .panel-body{padding:.875rem 1rem 1rem}
  .rows{margin:0 -1rem}
  .panel-body>.rows:last-child{margin-bottom:-1rem}
  .row{padding:.875rem 1rem}
  .page-head .page-actions{width:100%}
}

.notice.info{background:var(--sunk);color:var(--ink-2)}
.notice.info::before{background:var(--ink-3)}

/* Console polish (docs/brand-standard.md, October 2026). One product: the same page head, buttons, notices, empty states, pills
   and focus ring on every owner page, /setup, /try and crew mode. Scoped to those apps; booking pages keep their own rules. */
.owner-app h1{font-size:2.25rem}
@media(max-width:760px){.owner-app h1{font-size:1.875rem}}
/* A page that opens on a .card (the diary, review pages) reads like every other page: no box around the page itself. */
.owner-app .workspace>.owner-links+.card:not(.narrow),.owner-app .workspace>.owner-links+.notice+.card:not(.narrow),.owner-app .workspace>.card.diary{border:0;background:none;padding:0;box-shadow:none}
.owner-app .workspace>.owner-links+.card:not(.narrow)>h1:first-child{margin-bottom:.375rem}
/* Secondary buttons and chips need a 3:1 boundary (WCAG 1.4.11): --line-control, not the sand rule. */
:is(.owner-app,.wz-app,.try-app) :is(button.secondary,.button.secondary),.owner-app .diary-today,.owner-app .diary-nav a,.owner-app .filters a{border-color:var(--line-control)}
/* Focus: the amber ring with an ink core, on every control (brand standard 3.13). */
:is(.owner-app,.wz-app,.try-app) :focus-visible{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
:is(.owner-app,.wz-app,.try-app) :is(input,select,textarea):focus-visible{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink);border-color:var(--ink)}
.owner-app .area-bar a:focus-visible{outline-offset:-3px;box-shadow:inset 0 0 0 5px var(--ink)}
/* The wordmark is a link home: a 44px tap height without moving it. */
.owner-app .sidebar-head .wordmark,.owner-app .topbar .wordmark{display:inline-flex;align-items:center;min-height:44px}
/* Your pages: quiet links with icons above every page, not two big buttons. */
.owner-app .owner-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:0 .25rem;margin:-1rem 0 1rem}
.owner-app .owner-links a{gap:.4rem;padding:0 .625rem;border:0;border-radius:var(--radius-sm);background:none;color:var(--rust-ink);font-size:.875rem;font-weight:600}
.owner-app .owner-links a .icon{width:18px;height:18px}
.owner-app .owner-links a:hover{background:var(--sunk);color:var(--rust-ink)}
@media (max-width:560px){.owner-app .owner-links{justify-content:flex-start;margin:-.75rem -.625rem .5rem}.owner-app .owner-links a{flex:0 0 auto;justify-content:flex-start}}
/* Notices (brand standard 3.12): info is a white card with a tide rule; success sage; error red. No decorative dot. */
:is(.owner-app,.wz-app) .notice{padding:.875rem 1rem;border-radius:var(--radius);font-size:.9375rem;line-height:1.5}
:is(.owner-app,.wz-app) .notice::before{content:none}
:is(.owner-app,.wz-app) .notice:not(.error):not(.info){background:var(--sage-wash);color:var(--sage-ink)}
:is(.owner-app,.wz-app) .notice:not(.error):not(.info) a{color:var(--sage-ink)}
:is(.owner-app,.wz-app) .notice.info{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-left:4px solid var(--tide)}
:is(.owner-app,.wz-app) .notice.error{background:var(--red-wash);color:var(--red)}
:is(.owner-app,.wz-app) .notice.error a{color:var(--red)}
/* Empty states (brand standard 3.11): one look for lists, the diary and whole pages. */
.owner-app :is(.rows-empty,.diary-empty,.empty-state){display:grid;justify-items:center;gap:.375rem;padding:1.5rem;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--sunk);color:var(--ink-2);font-size:.9375rem;text-align:center}
.owner-app :is(.rows-empty,.diary-empty,.empty-state) :is(h2,h3,strong){margin:0;font-size:1rem;font-weight:620;color:var(--ink)}
.owner-app .panel-body>.rows-empty{margin:0}
/* Badges: 24px, 13px, words carry the meaning (brand standard 3.9). */
.owner-app .pill{height:24px;padding:0 .625rem;font-size:.8125rem;font-weight:600}
.owner-app .pill:not(.is-good):not(.is-wait):not(.is-bad){background:var(--sidebar);color:var(--ink-2)}
/* Icons that point the way: the same SVG set as the menu, never a text arrow. */
.settings-list a>.icon:last-child{color:var(--ink-3)}
.business-list a>.icon:last-child{color:var(--ink-3)}
.owner-app .crumb .icon,.owner-app .back-link .icon{width:18px;height:18px}
.owner-app .diary-nav a .icon,.owner-app .diary-slot-arrow .icon{width:18px;height:18px}
.owner-app .diary-slot-arrow{display:inline-flex;color:var(--ink-3)}
.owner-app .button-row .button .icon{width:18px;height:18px}
/* The diary uses the shared page head; its view switch and dates sit under it. */
.owner-app .diary-heading{margin:0 0 1.25rem}
.owner-app .diary-heading .page-actions{align-self:center}
.owner-app .diary-view{border-radius:var(--radius-sm)}
.owner-app .diary-view a{border-radius:8px}
.owner-app .venue-mark,.owner-app .photo-row img,.owner-app .photo-thumb{border-radius:var(--radius-sm)}
.owner-app .grid-event{border-radius:var(--radius-sm)}
.owner-app .diary-detail h2{font-family:var(--sans);font-weight:700;font-size:1.25rem}
/* Upgrade pages (a Pro feature that isn't on yet): the price line and actions inside the shared panel. */
.owner-app .panel .pro-price{margin:0 0 .75rem}
.owner-app .panel .notice{margin:0 0 1rem}
.owner-app label.choice input{inset:0;width:100%;height:100%;z-index:1;cursor:pointer}
.owner-app label.choice span{border-color:var(--line-control)}
.owner-app label.choice input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
input[type=file]{padding:.375rem;cursor:pointer;color:var(--ink-2);font-size:.875rem}
input[type=file]::file-selector-button{font:inherit;font-weight:600;font-size:.875rem;margin-right:.75rem;min-height:32px;padding:0 .875rem;border:1px solid var(--line-strong);border-radius:6px;background:var(--sunk);color:var(--ink);cursor:pointer}
input[type=file]::file-selector-button:hover{background:var(--sidebar)}

/* Public pages: venue header, booking layout, offers, receipts */
.venue-brand{display:inline-flex;align-items:center;gap:.625rem;text-decoration:none;color:var(--ink);font-family:var(--sans);font-weight:800;font-size:1.125rem;letter-spacing:-.01em;line-height:1.1}
.venue-brand:hover{color:var(--ink)}
.venue-brand .venue-mark{width:30px;height:30px;font-size:1rem;border-radius:7px}
.public-app .topbar-inner{max-width:1040px}
.public-app main{max-width:1040px}
.public-app .public-hero,.public-app .public-schedule{max-width:760px}
.site-footer{max-width:1040px}
.public-app .card.narrow{max-width:620px}
.public-app .card.narrow .lead{margin:0 0 1.25rem}
.public-app .crumb{margin:0 0 1.25rem}
.public-app .crumb::before{content:"←";margin-right:.15rem}
.public-app .card>a.crumb:first-child::before{content:"←"}
.booking{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,26rem);gap:2.5rem 3.5rem;align-items:start}
.booking-summary h1{margin-bottom:.75rem}
.booking-summary .when{display:none}
.facts{display:grid;gap:0;margin:0 0 1.25rem;border-top:1px solid var(--line)}
.facts div{display:grid;grid-template-columns:5.5rem 1fr;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--line);font-size:.9375rem}
.facts dt{color:var(--ink-2)}
.facts dd{margin:0}
.places{display:inline-flex;align-items:center;gap:.4rem;font-size:.9375rem;font-weight:560;color:var(--sage-ink);margin:0 0 .25rem}
.places::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.places.few{color:var(--amber)}
.places.is-full{color:var(--ink-3)}
.booking-summary .quote{max-width:none}
.cart{margin:1.25rem 0 0;scroll-margin-top:1rem}
.cart h2{font-size:1.0625rem;margin:0 0 .15rem}
.cart h3{font-size:.9375rem;margin:1rem 0 .25rem}
.cart .fine{margin:0 0 .5rem}
.cart-lines{list-style:none;margin:0;padding:0}
.cart-lines li{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem 0;border-top:1px solid var(--line)}
.cart-item{display:grid;gap:.1rem;min-width:0}
.cart-item span{font-size:.875rem;color:var(--ink-2)}
.stepper{display:inline-flex;align-items:center;gap:.25rem;flex:none}
.stepper .step{min-width:44px;padding:0;font-size:1.25rem;line-height:1;background:var(--surface);color:var(--ink);border-color:var(--line-strong)}
.stepper .step:hover{background:var(--sunk);border-color:var(--ink-3);color:var(--ink)}
.stepper output{min-width:2ch;text-align:center;font-weight:600;font-variant-numeric:tabular-nums}
.booking-summary .code-entry{display:flex;gap:.5rem;align-items:flex-end;margin:1rem 0 0;padding:0;border:0;max-width:none}
.booking-summary .code-entry label{flex:1;margin:0}
.booking-summary .code-entry button{min-height:44px}
.booking-summary .policy-note{margin-top:1.5rem;grid-template-columns:1fr;gap:.25rem}
.booking-summary .policy-note .fine{margin:0}
.booking-form{position:sticky;top:1.5rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.5rem}
.booking-form>h2{font-family:var(--sans);font-weight:800;font-size:1.375rem;letter-spacing:-.01em;margin:0 0 1rem}
.public-app .booking-form form{margin-top:0;max-width:none}
.opt-ins{display:grid;gap:.5rem;margin:.25rem 0 1.25rem}
.opt-ins label{margin:0;font-size:.875rem;color:var(--ink-2)}
.closed{padding:1rem;border-radius:var(--radius-sm);background:var(--sunk);color:var(--ink-2)}
.other-ways{margin:0 0 1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--line)}
.other-ways>h2{font-size:1.25rem;margin:0 0 .75rem}
.other-ways>.button{margin-bottom:.75rem}
.code-recovery{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--line)}
.code-recovery form{margin-top:0!important}
.code-recovery summary{min-height:44px;display:flex;align-items:center;cursor:pointer}
.booking-form .share{border-top:0;margin-top:.5rem;padding-top:0}
.other-ways .pass-redeem{margin:0;padding:1.25rem 0 0;border:0;max-width:none}
.other-ways .pass-redeem+.pass-redeem{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--line)}
.pass-redeem h2{font-size:1rem;margin:0 0 .25rem}
.pass-redeem>p{font-size:.875rem;color:var(--ink-2);margin-bottom:.875rem}
.public-app .pass-redeem form{margin-top:0}
.public-app .pass-redeem form button[type=submit]{min-height:44px;font-size:.9375rem;background:var(--surface);color:var(--ink);border-color:var(--line-strong)}
.public-app .pass-redeem form button[type=submit]:hover{background:var(--sunk)}
.booking-form .share{max-width:none}
.waiver{margin:0 0 .75rem;padding:.75rem 1rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--sunk);max-width:none}
.waiver summary{font-weight:560;font-size:.875rem;min-height:32px;display:flex;align-items:center}
.waiver p{margin-top:.5rem;font-size:.875rem}
.offers{list-style:none;padding:0;margin:0;display:grid;gap:.75rem}
.offers .offer{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem 1.375rem}
.offer-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}
.offer-head h2{font-family:var(--sans);font-weight:800;font-size:1.375rem;letter-spacing:-.01em;margin:0 0 .25rem}
.offer-head p{font-size:.875rem;color:var(--ink-2)}
.offer-price{text-align:right;white-space:nowrap}
.offer-price strong{font-size:1.125rem;color:var(--ink)}
.offer-buy{margin-top:1rem}
.offer-buy>summary.button{display:inline-flex}
.offer-buy[open]>summary.button{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}
.offer-buy[open]>summary.button::after{content:"Close";margin-left:.25rem;font-weight:400;color:var(--ink-3);display:none}
.public-app .offer form{margin-top:1rem;max-width:none}
.public-app .offer form button[type=submit]{width:auto;min-height:44px}
.choices{margin:0 0 1.25rem}
.choices legend,.gift legend{font-size:.875rem;font-weight:560;margin-bottom:.5rem}
.choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:.5rem;margin-bottom:1rem}
label.choice{display:block;margin:0;position:relative;cursor:pointer}
label.choice input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
label.choice span{display:flex;align-items:center;justify-content:center;min-height:56px;padding:0 .75rem;border:1px solid var(--line-control);border-radius:var(--radius-sm);background:var(--surface);font-weight:600;font-size:1rem;transition:border-color .15s,background .15s,box-shadow .15s}
label.choice:hover span{border-color:var(--ink-3)}
label.choice input:checked+span{border-color:var(--rust);background:var(--rust-wash);color:var(--rust-ink);box-shadow:inset 0 0 0 1px var(--rust)}
label.choice input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
label.choice.card{background:none;border:0;padding:0;border-radius:0}
label.choice.card span{display:block;text-align:left;padding:.875rem 1rem;font-weight:400;font-size:.9375rem;line-height:1.45}
label.choice.card span strong{font-weight:620}
label.choice.card input:checked+span{color:var(--ink)}
label.choice.card+label.choice.card{margin-top:.5rem}
.gift{margin:.5rem 0 1.25rem;padding:1rem 1rem .25rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.code-input{font-size:1.5rem;letter-spacing:.3em;font-variant-numeric:tabular-nums;text-align:center;max-width:14rem}
.public-app .card.status{max-width:560px}
.status-mark{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--sage);color:#fff;margin-bottom:1.25rem;animation:pop .45s var(--ease) both}
.status-mark svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:24;stroke-dashoffset:24;animation:draw .4s .15s var(--ease) forwards}
@keyframes pop{from{transform:scale(.6);opacity:0}}
@keyframes draw{to{stroke-dashoffset:0}}
.status .lead{margin:.5rem 0 1.25rem}
.quote.receipt{background:var(--surface);border:1px solid var(--line);max-width:none}
.quote.receipt div:last-child{font-size:1rem;margin-top:0;padding-top:.6rem}
.quote.receipt div:last-child dt{font-weight:400;color:var(--ink-2)}
.quote.receipt div+div{border-top:1px solid var(--line)}
.quote.receipt div{padding:.6rem 0}
.status .button-row{margin-top:1.5rem}
@media(max-width:900px){
  .booking{grid-template-columns:1fr;gap:1.5rem}
  .booking-form{position:static;padding:1.25rem}
}
@media(max-width:480px){
  .booking-form{margin:0 -.25rem}
  .offer-head{flex-direction:column;gap:.25rem}
  .offer-price{text-align:left}
}

.other-way{border-bottom:1px solid var(--line)}
.other-way>summary{display:flex;align-items:center;justify-content:space-between;min-height:52px;font-weight:600;font-size:.9375rem;color:var(--ink)}
.other-way>summary::after{content:"+";font-size:1.25rem;font-weight:400;color:var(--ink-3)}
.other-way[open]>summary::after{content:"−"}
.other-way .pass-redeem{padding:0 0 1.25rem!important}
.other-way .pass-redeem h2{display:none}
.other-ways{margin-top:1.25rem}
.public-app .pass-redeem form button[type=submit]{width:100%}
/* Diary positioning, generated: event top (at-*), duration (dur-*), track height (h-*) and lanes. */
.at-0{top:0px}
.at-5{top:5px}
.at-10{top:10px}
.at-15{top:15px}
.at-20{top:20px}
.at-25{top:25px}
.at-30{top:30px}
.at-35{top:35px}
.at-40{top:40px}
.at-45{top:45px}
.at-50{top:50px}
.at-55{top:55px}
.at-60{top:60px}
.at-65{top:65px}
.at-70{top:70px}
.at-75{top:75px}
.at-80{top:80px}
.at-85{top:85px}
.at-90{top:90px}
.at-95{top:95px}
.at-100{top:100px}
.at-105{top:105px}
.at-110{top:110px}
.at-115{top:115px}
.at-120{top:120px}
.at-125{top:125px}
.at-130{top:130px}
.at-135{top:135px}
.at-140{top:140px}
.at-145{top:145px}
.at-150{top:150px}
.at-155{top:155px}
.at-160{top:160px}
.at-165{top:165px}
.at-170{top:170px}
.at-175{top:175px}
.at-180{top:180px}
.at-185{top:185px}
.at-190{top:190px}
.at-195{top:195px}
.at-200{top:200px}
.at-205{top:205px}
.at-210{top:210px}
.at-215{top:215px}
.at-220{top:220px}
.at-225{top:225px}
.at-230{top:230px}
.at-235{top:235px}
.at-240{top:240px}
.at-245{top:245px}
.at-250{top:250px}
.at-255{top:255px}
.at-260{top:260px}
.at-265{top:265px}
.at-270{top:270px}
.at-275{top:275px}
.at-280{top:280px}
.at-285{top:285px}
.at-290{top:290px}
.at-295{top:295px}
.at-300{top:300px}
.at-305{top:305px}
.at-310{top:310px}
.at-315{top:315px}
.at-320{top:320px}
.at-325{top:325px}
.at-330{top:330px}
.at-335{top:335px}
.at-340{top:340px}
.at-345{top:345px}
.at-350{top:350px}
.at-355{top:355px}
.at-360{top:360px}
.at-365{top:365px}
.at-370{top:370px}
.at-375{top:375px}
.at-380{top:380px}
.at-385{top:385px}
.at-390{top:390px}
.at-395{top:395px}
.at-400{top:400px}
.at-405{top:405px}
.at-410{top:410px}
.at-415{top:415px}
.at-420{top:420px}
.at-425{top:425px}
.at-430{top:430px}
.at-435{top:435px}
.at-440{top:440px}
.at-445{top:445px}
.at-450{top:450px}
.at-455{top:455px}
.at-460{top:460px}
.at-465{top:465px}
.at-470{top:470px}
.at-475{top:475px}
.at-480{top:480px}
.at-485{top:485px}
.at-490{top:490px}
.at-495{top:495px}
.at-500{top:500px}
.at-505{top:505px}
.at-510{top:510px}
.at-515{top:515px}
.at-520{top:520px}
.at-525{top:525px}
.at-530{top:530px}
.at-535{top:535px}
.at-540{top:540px}
.at-545{top:545px}
.at-550{top:550px}
.at-555{top:555px}
.at-560{top:560px}
.at-565{top:565px}
.at-570{top:570px}
.at-575{top:575px}
.at-580{top:580px}
.at-585{top:585px}
.at-590{top:590px}
.at-595{top:595px}
.at-600{top:600px}
.at-605{top:605px}
.at-610{top:610px}
.at-615{top:615px}
.at-620{top:620px}
.at-625{top:625px}
.at-630{top:630px}
.at-635{top:635px}
.at-640{top:640px}
.at-645{top:645px}
.at-650{top:650px}
.at-655{top:655px}
.at-660{top:660px}
.at-665{top:665px}
.at-670{top:670px}
.at-675{top:675px}
.at-680{top:680px}
.at-685{top:685px}
.at-690{top:690px}
.at-695{top:695px}
.at-700{top:700px}
.at-705{top:705px}
.at-710{top:710px}
.at-715{top:715px}
.at-720{top:720px}
.at-725{top:725px}
.at-730{top:730px}
.at-735{top:735px}
.at-740{top:740px}
.at-745{top:745px}
.at-750{top:750px}
.at-755{top:755px}
.at-760{top:760px}
.at-765{top:765px}
.at-770{top:770px}
.at-775{top:775px}
.at-780{top:780px}
.at-785{top:785px}
.at-790{top:790px}
.at-795{top:795px}
.at-800{top:800px}
.at-805{top:805px}
.at-810{top:810px}
.at-815{top:815px}
.at-820{top:820px}
.at-825{top:825px}
.at-830{top:830px}
.at-835{top:835px}
.at-840{top:840px}
.at-845{top:845px}
.at-850{top:850px}
.at-855{top:855px}
.at-860{top:860px}
.at-865{top:865px}
.at-870{top:870px}
.at-875{top:875px}
.at-880{top:880px}
.at-885{top:885px}
.at-890{top:890px}
.at-895{top:895px}
.at-900{top:900px}
.at-905{top:905px}
.at-910{top:910px}
.at-915{top:915px}
.at-920{top:920px}
.at-925{top:925px}
.at-930{top:930px}
.at-935{top:935px}
.at-940{top:940px}
.at-945{top:945px}
.at-950{top:950px}
.at-955{top:955px}
.at-960{top:960px}
.at-965{top:965px}
.at-970{top:970px}
.at-975{top:975px}
.at-980{top:980px}
.at-985{top:985px}
.at-990{top:990px}
.at-995{top:995px}
.at-1000{top:1000px}
.at-1005{top:1005px}
.at-1010{top:1010px}
.at-1015{top:1015px}
.at-1020{top:1020px}
.at-1025{top:1025px}
.at-1030{top:1030px}
.at-1035{top:1035px}
.at-1040{top:1040px}
.at-1045{top:1045px}
.at-1050{top:1050px}
.at-1055{top:1055px}
.at-1060{top:1060px}
.at-1065{top:1065px}
.at-1070{top:1070px}
.at-1075{top:1075px}
.at-1080{top:1080px}
.at-1085{top:1085px}
.at-1090{top:1090px}
.at-1095{top:1095px}
.at-1100{top:1100px}
.at-1105{top:1105px}
.at-1110{top:1110px}
.at-1115{top:1115px}
.at-1120{top:1120px}
.at-1125{top:1125px}
.at-1130{top:1130px}
.at-1135{top:1135px}
.at-1140{top:1140px}
.at-1145{top:1145px}
.at-1150{top:1150px}
.at-1155{top:1155px}
.at-1160{top:1160px}
.at-1165{top:1165px}
.at-1170{top:1170px}
.at-1175{top:1175px}
.at-1180{top:1180px}
.at-1185{top:1185px}
.at-1190{top:1190px}
.at-1195{top:1195px}
.at-1200{top:1200px}
.at-1205{top:1205px}
.at-1210{top:1210px}
.at-1215{top:1215px}
.at-1220{top:1220px}
.at-1225{top:1225px}
.at-1230{top:1230px}
.at-1235{top:1235px}
.at-1240{top:1240px}
.at-1245{top:1245px}
.at-1250{top:1250px}
.at-1255{top:1255px}
.at-1260{top:1260px}
.at-1265{top:1265px}
.at-1270{top:1270px}
.at-1275{top:1275px}
.at-1280{top:1280px}
.at-1285{top:1285px}
.at-1290{top:1290px}
.at-1295{top:1295px}
.at-1300{top:1300px}
.at-1305{top:1305px}
.at-1310{top:1310px}
.at-1315{top:1315px}
.at-1320{top:1320px}
.at-1325{top:1325px}
.at-1330{top:1330px}
.at-1335{top:1335px}
.at-1340{top:1340px}
.at-1345{top:1345px}
.at-1350{top:1350px}
.at-1355{top:1355px}
.at-1360{top:1360px}
.at-1365{top:1365px}
.at-1370{top:1370px}
.at-1375{top:1375px}
.at-1380{top:1380px}
.at-1385{top:1385px}
.at-1390{top:1390px}
.at-1395{top:1395px}
.at-1400{top:1400px}
.at-1405{top:1405px}
.at-1410{top:1410px}
.at-1415{top:1415px}
.at-1420{top:1420px}
.at-1425{top:1425px}
.at-1430{top:1430px}
.at-1435{top:1435px}
.at-1440{top:1440px}
.h-40{height:40px}
.dur-40{height:40px}
.h-45{height:45px}
.dur-45{height:45px}
.h-50{height:50px}
.dur-50{height:50px}
.h-55{height:55px}
.dur-55{height:55px}
.h-60{height:60px}
.dur-60{height:60px}
.h-65{height:65px}
.dur-65{height:65px}
.h-70{height:70px}
.dur-70{height:70px}
.h-75{height:75px}
.dur-75{height:75px}
.h-80{height:80px}
.dur-80{height:80px}
.h-85{height:85px}
.dur-85{height:85px}
.h-90{height:90px}
.dur-90{height:90px}
.h-95{height:95px}
.dur-95{height:95px}
.h-100{height:100px}
.dur-100{height:100px}
.h-105{height:105px}
.dur-105{height:105px}
.h-110{height:110px}
.dur-110{height:110px}
.h-115{height:115px}
.dur-115{height:115px}
.h-120{height:120px}
.dur-120{height:120px}
.h-125{height:125px}
.dur-125{height:125px}
.h-130{height:130px}
.dur-130{height:130px}
.h-135{height:135px}
.dur-135{height:135px}
.h-140{height:140px}
.dur-140{height:140px}
.h-145{height:145px}
.dur-145{height:145px}
.h-150{height:150px}
.dur-150{height:150px}
.h-155{height:155px}
.dur-155{height:155px}
.h-160{height:160px}
.dur-160{height:160px}
.h-165{height:165px}
.dur-165{height:165px}
.h-170{height:170px}
.dur-170{height:170px}
.h-175{height:175px}
.dur-175{height:175px}
.h-180{height:180px}
.dur-180{height:180px}
.h-185{height:185px}
.dur-185{height:185px}
.h-190{height:190px}
.dur-190{height:190px}
.h-195{height:195px}
.dur-195{height:195px}
.h-200{height:200px}
.dur-200{height:200px}
.h-205{height:205px}
.dur-205{height:205px}
.h-210{height:210px}
.dur-210{height:210px}
.h-215{height:215px}
.dur-215{height:215px}
.h-220{height:220px}
.dur-220{height:220px}
.h-225{height:225px}
.dur-225{height:225px}
.h-230{height:230px}
.dur-230{height:230px}
.h-235{height:235px}
.dur-235{height:235px}
.h-240{height:240px}
.dur-240{height:240px}
.h-245{height:245px}
.dur-245{height:245px}
.h-250{height:250px}
.dur-250{height:250px}
.h-255{height:255px}
.dur-255{height:255px}
.h-260{height:260px}
.dur-260{height:260px}
.h-265{height:265px}
.dur-265{height:265px}
.h-270{height:270px}
.dur-270{height:270px}
.h-275{height:275px}
.dur-275{height:275px}
.h-280{height:280px}
.dur-280{height:280px}
.h-285{height:285px}
.dur-285{height:285px}
.h-290{height:290px}
.dur-290{height:290px}
.h-295{height:295px}
.dur-295{height:295px}
.h-300{height:300px}
.dur-300{height:300px}
.h-305{height:305px}
.dur-305{height:305px}
.h-310{height:310px}
.dur-310{height:310px}
.h-315{height:315px}
.dur-315{height:315px}
.h-320{height:320px}
.dur-320{height:320px}
.h-325{height:325px}
.dur-325{height:325px}
.h-330{height:330px}
.dur-330{height:330px}
.h-335{height:335px}
.dur-335{height:335px}
.h-340{height:340px}
.dur-340{height:340px}
.h-345{height:345px}
.dur-345{height:345px}
.h-350{height:350px}
.dur-350{height:350px}
.h-355{height:355px}
.dur-355{height:355px}
.h-360{height:360px}
.dur-360{height:360px}
.h-365{height:365px}
.dur-365{height:365px}
.h-370{height:370px}
.dur-370{height:370px}
.h-375{height:375px}
.dur-375{height:375px}
.h-380{height:380px}
.dur-380{height:380px}
.h-385{height:385px}
.dur-385{height:385px}
.h-390{height:390px}
.dur-390{height:390px}
.h-395{height:395px}
.dur-395{height:395px}
.h-400{height:400px}
.dur-400{height:400px}
.h-405{height:405px}
.dur-405{height:405px}
.h-410{height:410px}
.dur-410{height:410px}
.h-415{height:415px}
.dur-415{height:415px}
.h-420{height:420px}
.dur-420{height:420px}
.h-425{height:425px}
.dur-425{height:425px}
.h-430{height:430px}
.dur-430{height:430px}
.h-435{height:435px}
.dur-435{height:435px}
.h-440{height:440px}
.dur-440{height:440px}
.h-445{height:445px}
.dur-445{height:445px}
.h-450{height:450px}
.dur-450{height:450px}
.h-455{height:455px}
.dur-455{height:455px}
.h-460{height:460px}
.dur-460{height:460px}
.h-465{height:465px}
.dur-465{height:465px}
.h-470{height:470px}
.dur-470{height:470px}
.h-475{height:475px}
.dur-475{height:475px}
.h-480{height:480px}
.dur-480{height:480px}
.h-485{height:485px}
.dur-485{height:485px}
.h-490{height:490px}
.dur-490{height:490px}
.h-495{height:495px}
.dur-495{height:495px}
.h-500{height:500px}
.dur-500{height:500px}
.h-505{height:505px}
.dur-505{height:505px}
.h-510{height:510px}
.dur-510{height:510px}
.h-515{height:515px}
.dur-515{height:515px}
.h-520{height:520px}
.dur-520{height:520px}
.h-525{height:525px}
.dur-525{height:525px}
.h-530{height:530px}
.dur-530{height:530px}
.h-535{height:535px}
.dur-535{height:535px}
.h-540{height:540px}
.dur-540{height:540px}
.h-545{height:545px}
.dur-545{height:545px}
.h-550{height:550px}
.dur-550{height:550px}
.h-555{height:555px}
.dur-555{height:555px}
.h-560{height:560px}
.dur-560{height:560px}
.h-565{height:565px}
.dur-565{height:565px}
.h-570{height:570px}
.dur-570{height:570px}
.h-575{height:575px}
.dur-575{height:575px}
.h-580{height:580px}
.dur-580{height:580px}
.h-585{height:585px}
.dur-585{height:585px}
.h-590{height:590px}
.dur-590{height:590px}
.h-595{height:595px}
.dur-595{height:595px}
.h-600{height:600px}
.dur-600{height:600px}
.h-605{height:605px}
.dur-605{height:605px}
.h-610{height:610px}
.dur-610{height:610px}
.h-615{height:615px}
.dur-615{height:615px}
.h-620{height:620px}
.dur-620{height:620px}
.h-625{height:625px}
.dur-625{height:625px}
.h-630{height:630px}
.dur-630{height:630px}
.h-635{height:635px}
.dur-635{height:635px}
.h-640{height:640px}
.dur-640{height:640px}
.h-645{height:645px}
.dur-645{height:645px}
.h-650{height:650px}
.dur-650{height:650px}
.h-655{height:655px}
.dur-655{height:655px}
.h-660{height:660px}
.dur-660{height:660px}
.h-665{height:665px}
.dur-665{height:665px}
.h-670{height:670px}
.dur-670{height:670px}
.h-675{height:675px}
.dur-675{height:675px}
.h-680{height:680px}
.dur-680{height:680px}
.h-685{height:685px}
.dur-685{height:685px}
.h-690{height:690px}
.dur-690{height:690px}
.h-695{height:695px}
.dur-695{height:695px}
.h-700{height:700px}
.dur-700{height:700px}
.h-705{height:705px}
.dur-705{height:705px}
.h-710{height:710px}
.dur-710{height:710px}
.h-715{height:715px}
.dur-715{height:715px}
.h-720{height:720px}
.dur-720{height:720px}
.h-725{height:725px}
.dur-725{height:725px}
.h-730{height:730px}
.dur-730{height:730px}
.h-735{height:735px}
.dur-735{height:735px}
.h-740{height:740px}
.dur-740{height:740px}
.h-745{height:745px}
.dur-745{height:745px}
.h-750{height:750px}
.dur-750{height:750px}
.h-755{height:755px}
.dur-755{height:755px}
.h-760{height:760px}
.dur-760{height:760px}
.h-765{height:765px}
.dur-765{height:765px}
.h-770{height:770px}
.dur-770{height:770px}
.h-775{height:775px}
.dur-775{height:775px}
.h-780{height:780px}
.dur-780{height:780px}
.h-785{height:785px}
.dur-785{height:785px}
.h-790{height:790px}
.dur-790{height:790px}
.h-795{height:795px}
.dur-795{height:795px}
.h-800{height:800px}
.dur-800{height:800px}
.h-805{height:805px}
.dur-805{height:805px}
.h-810{height:810px}
.dur-810{height:810px}
.h-815{height:815px}
.dur-815{height:815px}
.h-820{height:820px}
.dur-820{height:820px}
.h-825{height:825px}
.dur-825{height:825px}
.h-830{height:830px}
.dur-830{height:830px}
.h-835{height:835px}
.dur-835{height:835px}
.h-840{height:840px}
.dur-840{height:840px}
.h-845{height:845px}
.dur-845{height:845px}
.h-850{height:850px}
.dur-850{height:850px}
.h-855{height:855px}
.dur-855{height:855px}
.h-860{height:860px}
.dur-860{height:860px}
.h-865{height:865px}
.dur-865{height:865px}
.h-870{height:870px}
.dur-870{height:870px}
.h-875{height:875px}
.dur-875{height:875px}
.h-880{height:880px}
.dur-880{height:880px}
.h-885{height:885px}
.dur-885{height:885px}
.h-890{height:890px}
.dur-890{height:890px}
.h-895{height:895px}
.dur-895{height:895px}
.h-900{height:900px}
.dur-900{height:900px}
.h-905{height:905px}
.dur-905{height:905px}
.h-910{height:910px}
.dur-910{height:910px}
.h-915{height:915px}
.dur-915{height:915px}
.h-920{height:920px}
.dur-920{height:920px}
.h-925{height:925px}
.dur-925{height:925px}
.h-930{height:930px}
.dur-930{height:930px}
.h-935{height:935px}
.dur-935{height:935px}
.h-940{height:940px}
.dur-940{height:940px}
.h-945{height:945px}
.dur-945{height:945px}
.h-950{height:950px}
.dur-950{height:950px}
.h-955{height:955px}
.dur-955{height:955px}
.h-960{height:960px}
.dur-960{height:960px}
.h-965{height:965px}
.dur-965{height:965px}
.h-970{height:970px}
.dur-970{height:970px}
.h-975{height:975px}
.dur-975{height:975px}
.h-980{height:980px}
.dur-980{height:980px}
.h-985{height:985px}
.dur-985{height:985px}
.h-990{height:990px}
.dur-990{height:990px}
.h-995{height:995px}
.dur-995{height:995px}
.h-1000{height:1000px}
.dur-1000{height:1000px}
.h-1005{height:1005px}
.dur-1005{height:1005px}
.h-1010{height:1010px}
.dur-1010{height:1010px}
.h-1015{height:1015px}
.dur-1015{height:1015px}
.h-1020{height:1020px}
.dur-1020{height:1020px}
.h-1025{height:1025px}
.dur-1025{height:1025px}
.h-1030{height:1030px}
.dur-1030{height:1030px}
.h-1035{height:1035px}
.dur-1035{height:1035px}
.h-1040{height:1040px}
.dur-1040{height:1040px}
.h-1045{height:1045px}
.dur-1045{height:1045px}
.h-1050{height:1050px}
.dur-1050{height:1050px}
.h-1055{height:1055px}
.dur-1055{height:1055px}
.h-1060{height:1060px}
.dur-1060{height:1060px}
.h-1065{height:1065px}
.dur-1065{height:1065px}
.h-1070{height:1070px}
.dur-1070{height:1070px}
.h-1075{height:1075px}
.dur-1075{height:1075px}
.h-1080{height:1080px}
.dur-1080{height:1080px}
.h-1085{height:1085px}
.dur-1085{height:1085px}
.h-1090{height:1090px}
.dur-1090{height:1090px}
.h-1095{height:1095px}
.dur-1095{height:1095px}
.h-1100{height:1100px}
.dur-1100{height:1100px}
.h-1105{height:1105px}
.dur-1105{height:1105px}
.h-1110{height:1110px}
.dur-1110{height:1110px}
.h-1115{height:1115px}
.dur-1115{height:1115px}
.h-1120{height:1120px}
.dur-1120{height:1120px}
.h-1125{height:1125px}
.dur-1125{height:1125px}
.h-1130{height:1130px}
.dur-1130{height:1130px}
.h-1135{height:1135px}
.dur-1135{height:1135px}
.h-1140{height:1140px}
.dur-1140{height:1140px}
.h-1145{height:1145px}
.dur-1145{height:1145px}
.h-1150{height:1150px}
.dur-1150{height:1150px}
.h-1155{height:1155px}
.dur-1155{height:1155px}
.h-1160{height:1160px}
.dur-1160{height:1160px}
.h-1165{height:1165px}
.dur-1165{height:1165px}
.h-1170{height:1170px}
.dur-1170{height:1170px}
.h-1175{height:1175px}
.dur-1175{height:1175px}
.h-1180{height:1180px}
.dur-1180{height:1180px}
.h-1185{height:1185px}
.dur-1185{height:1185px}
.h-1190{height:1190px}
.dur-1190{height:1190px}
.h-1195{height:1195px}
.dur-1195{height:1195px}
.h-1200{height:1200px}
.dur-1200{height:1200px}
.h-1205{height:1205px}
.dur-1205{height:1205px}
.h-1210{height:1210px}
.dur-1210{height:1210px}
.h-1215{height:1215px}
.dur-1215{height:1215px}
.h-1220{height:1220px}
.dur-1220{height:1220px}
.h-1225{height:1225px}
.dur-1225{height:1225px}
.h-1230{height:1230px}
.dur-1230{height:1230px}
.h-1235{height:1235px}
.dur-1235{height:1235px}
.h-1240{height:1240px}
.dur-1240{height:1240px}
.h-1245{height:1245px}
.dur-1245{height:1245px}
.h-1250{height:1250px}
.dur-1250{height:1250px}
.h-1255{height:1255px}
.dur-1255{height:1255px}
.h-1260{height:1260px}
.dur-1260{height:1260px}
.h-1265{height:1265px}
.dur-1265{height:1265px}
.h-1270{height:1270px}
.dur-1270{height:1270px}
.h-1275{height:1275px}
.dur-1275{height:1275px}
.h-1280{height:1280px}
.dur-1280{height:1280px}
.h-1285{height:1285px}
.dur-1285{height:1285px}
.h-1290{height:1290px}
.dur-1290{height:1290px}
.h-1295{height:1295px}
.dur-1295{height:1295px}
.h-1300{height:1300px}
.dur-1300{height:1300px}
.h-1305{height:1305px}
.dur-1305{height:1305px}
.h-1310{height:1310px}
.dur-1310{height:1310px}
.h-1315{height:1315px}
.dur-1315{height:1315px}
.h-1320{height:1320px}
.dur-1320{height:1320px}
.h-1325{height:1325px}
.dur-1325{height:1325px}
.h-1330{height:1330px}
.dur-1330{height:1330px}
.h-1335{height:1335px}
.dur-1335{height:1335px}
.h-1340{height:1340px}
.dur-1340{height:1340px}
.h-1345{height:1345px}
.dur-1345{height:1345px}
.h-1350{height:1350px}
.dur-1350{height:1350px}
.h-1355{height:1355px}
.dur-1355{height:1355px}
.h-1360{height:1360px}
.dur-1360{height:1360px}
.h-1365{height:1365px}
.dur-1365{height:1365px}
.h-1370{height:1370px}
.dur-1370{height:1370px}
.h-1375{height:1375px}
.dur-1375{height:1375px}
.h-1380{height:1380px}
.dur-1380{height:1380px}
.h-1385{height:1385px}
.dur-1385{height:1385px}
.h-1390{height:1390px}
.dur-1390{height:1390px}
.h-1395{height:1395px}
.dur-1395{height:1395px}
.h-1400{height:1400px}
.dur-1400{height:1400px}
.h-1405{height:1405px}
.dur-1405{height:1405px}
.h-1410{height:1410px}
.dur-1410{height:1410px}
.h-1415{height:1415px}
.dur-1415{height:1415px}
.h-1420{height:1420px}
.dur-1420{height:1420px}
.h-1425{height:1425px}
.dur-1425{height:1425px}
.h-1430{height:1430px}
.dur-1430{height:1430px}
.h-1435{height:1435px}
.dur-1435{height:1435px}
.h-1440{height:1440px}
.dur-1440{height:1440px}
.lane-0-of-1{left:0.0%;width:100.0%}
.lane-0-of-2{left:0.0%;width:50.0%}
.lane-1-of-2{left:50.0%;width:50.0%}
.lane-0-of-3{left:0.0%;width:33.333333333333336%}
.lane-1-of-3{left:33.33333333333333%;width:33.333333333333336%}
.lane-2-of-3{left:66.66666666666666%;width:33.333333333333336%}
.lane-0-of-4{left:0.0%;width:25.0%}
.lane-1-of-4{left:25.0%;width:25.0%}
.lane-2-of-4{left:50.0%;width:25.0%}
.lane-3-of-4{left:75.0%;width:25.0%}
.lane-0-of-5{left:0.0%;width:20.0%}
.lane-1-of-5{left:20.0%;width:20.0%}
.lane-2-of-5{left:40.0%;width:20.0%}
.lane-3-of-5{left:60.0%;width:20.0%}
.lane-4-of-5{left:80.0%;width:20.0%}
.lane-0-of-6{left:0.0%;width:16.666666666666668%}
.lane-1-of-6{left:16.666666666666664%;width:16.666666666666668%}
.lane-2-of-6{left:33.33333333333333%;width:16.666666666666668%}
.lane-3-of-6{left:50.0%;width:16.666666666666668%}
.lane-4-of-6{left:66.66666666666666%;width:16.666666666666668%}
.lane-5-of-6{left:83.33333333333334%;width:16.666666666666668%}
.lane-0-of-7{left:0.0%;width:14.285714285714286%}
.lane-1-of-7{left:14.285714285714285%;width:14.285714285714286%}
.lane-2-of-7{left:28.57142857142857%;width:14.285714285714286%}
.lane-3-of-7{left:42.857142857142854%;width:14.285714285714286%}
.lane-4-of-7{left:57.14285714285714%;width:14.285714285714286%}
.lane-5-of-7{left:71.42857142857143%;width:14.285714285714286%}
.lane-6-of-7{left:85.71428571428571%;width:14.285714285714286%}
.lane-0-of-8{left:0.0%;width:12.5%}
.lane-1-of-8{left:12.5%;width:12.5%}
.lane-2-of-8{left:25.0%;width:12.5%}
.lane-3-of-8{left:37.5%;width:12.5%}
.lane-4-of-8{left:50.0%;width:12.5%}
.lane-5-of-8{left:62.5%;width:12.5%}
.lane-6-of-8{left:75.0%;width:12.5%}
.lane-7-of-8{left:87.5%;width:12.5%}
.lane-0-of-9{left:0.0%;width:11.11111111111111%}
.lane-1-of-9{left:11.11111111111111%;width:11.11111111111111%}
.lane-2-of-9{left:22.22222222222222%;width:11.11111111111111%}
.lane-3-of-9{left:33.33333333333333%;width:11.11111111111111%}
.lane-4-of-9{left:44.44444444444444%;width:11.11111111111111%}
.lane-5-of-9{left:55.55555555555556%;width:11.11111111111111%}
.lane-6-of-9{left:66.66666666666666%;width:11.11111111111111%}
.lane-7-of-9{left:77.77777777777779%;width:11.11111111111111%}
.lane-8-of-9{left:88.88888888888889%;width:11.11111111111111%}
.lane-0-of-10{left:0.0%;width:10.0%}
.lane-1-of-10{left:10.0%;width:10.0%}
.lane-2-of-10{left:20.0%;width:10.0%}
.lane-3-of-10{left:30.0%;width:10.0%}
.lane-4-of-10{left:40.0%;width:10.0%}
.lane-5-of-10{left:50.0%;width:10.0%}
.lane-6-of-10{left:60.0%;width:10.0%}
.lane-7-of-10{left:70.0%;width:10.0%}
.lane-8-of-10{left:80.0%;width:10.0%}
.lane-9-of-10{left:90.0%;width:10.0%}
.confirm-step>summary{list-style:none;cursor:pointer}
.confirm-step>summary::-webkit-details-marker{display:none}
.confirm-step[open]>summary{display:none}
.confirm-step form{display:grid;gap:.5rem;max-width:22rem}
.confirm-step p{margin:0}
button.danger{background:var(--red);border-color:var(--red);color:#fff}
.confirm-step .button-row{margin-top:.25rem}
.row-actions .confirm-step,.button-row .confirm-step{display:inline-block}
.venue-contact{margin:1rem 0 0;color:var(--ink-2,inherit)}
.venue-contact a{overflow-wrap:anywhere}
.venue-contact{margin:1rem 0 0;color:var(--ink-2)}
.venue-contact a{overflow-wrap:anywhere}
.day-picks{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1.125rem;padding:0;border:0}
.day-picks legend{margin:0 0 .375rem;padding:0;font-size:.875rem;font-weight:560}
.day-picks .day-pick{align-items:center;min-height:44px;margin:0;padding:0 .875rem;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface)}
.day-picks .day-pick:has(input:checked){border-color:var(--rust);background:var(--rust-wash)}
.day-picks .day-pick input{margin:0}
.closed-notes{display:grid;gap:.5rem;margin:0 0 1.25rem;padding:0;list-style:none}
.closed-notes li{display:grid;gap:.125rem;padding:.75rem 1rem;border-radius:8px;background:var(--amber-wash);color:var(--ink)}
.closed-notes span{color:var(--ink-2);font-size:.9375rem}

/* Reports */
.report-period{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end;margin:0 0 1.25rem}
.report-period label{margin:0;flex:1 1 9rem;max-width:13rem}
.figures{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9.5rem),1fr));gap:.75rem;margin:0 0 1.25rem}
.figure{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.875rem 1rem}
.figure dt{font-size:.8125rem;color:var(--ink-2)}
.figure dd{margin:.25rem 0 0;display:grid;gap:.15rem}
.figure strong{font-size:1.375rem;font-weight:620}
.figure span{font-size:.8125rem;color:var(--ink-2)}
.report-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-sm);margin:.5rem 0 0}
.report-wrap:focus-visible{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
.dir-map a:focus-visible .dot{stroke:var(--ink);stroke-width:3px}
.report{width:100%;border-collapse:collapse;font-size:.875rem;font-variant-numeric:tabular-nums}
.report caption{text-align:left;padding:.65rem .75rem;font-size:.8125rem;font-weight:600;color:var(--ink)}
.report th,.report td{padding:.5rem .75rem;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
.report thead th{font-size:.75rem;font-weight:560;color:var(--ink-2);background:var(--sunk)}
.report tbody th{font-weight:500}
.report .num{text-align:right}
.report tbody tr:last-child>*{border-bottom:0}
.report tfoot>tr>*{font-weight:620;border-top:1px solid var(--line-strong);border-bottom:0}
.heatmap td{text-align:center;min-width:3.5rem}
.heatmap .heat-none{color:var(--ink-3)}
.heatmap .heat-0{background:#fdf6f2}
.heatmap .heat-1{background:var(--rust-wash)}
.heatmap .heat-2{background:var(--rust-line)}
.heatmap .heat-3{background:#d9907a;color:var(--ink)}
.heatmap .heat-4{background:var(--rust-ink);color:#fff}
.report-bars{display:block;width:100%;height:6rem;margin:.25rem 0 .5rem;fill:var(--rust)}
.panel-body .report-wrap+.button-row{margin-top:.625rem}
.report-more{margin:1rem 0 0}
.report-more summary{cursor:pointer;font-size:.875rem;font-weight:560;color:var(--rust-ink);min-height:44px;display:flex;align-items:center}
/* Customer manage page and account credit */
.policy-note>p+p{grid-column:-2/-1}
.manage-part{margin-top:1.75rem;padding-top:1.25rem;border-top:1px solid var(--line)}
.manage-part h2{font-size:1.125rem;margin:0 0 .5rem}
.manage-part form{display:grid;gap:.75rem;max-width:26rem;margin-top:.75rem}
.credit-note{display:inline-block;margin-top:.75rem;padding:.35rem .75rem;border-radius:999px;background:var(--rust-wash);color:var(--rust-ink);font-weight:600;font-size:.9375rem}
.arrival{margin-top:1.25rem;text-align:left}.arrival h2{font-size:1.0625rem;margin:0 0 .5rem}.door-code{font-variant-numeric:tabular-nums;font-size:1.25rem;letter-spacing:.08em}
.arrival-service{border-top:1px solid var(--line);padding-top:1rem;margin-top:1rem;display:grid;gap:.75rem}.arrival-service legend{font-weight:600;padding:0 0 .25rem}
.email-preview{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:.9375rem;background:var(--sunk);border:1px solid var(--line);border-radius:var(--radius-sm);padding:1rem;margin:0}
.arrival .quote div:last-child{border-top:0;margin-top:0;padding-top:0;font-size:inherit}.arrival .quote div:last-child dt{color:var(--ink-2);font-weight:inherit}
.role-picks{display:grid;gap:.75rem;margin:0 0 1.25rem;padding:0;border:0}
.role-picks legend{margin:0 0 .375rem;padding:0;font-size:.875rem;font-weight:560}
.alert-picks{display:grid;gap:.875rem;margin:0 0 1.25rem}
.invites{display:grid;gap:.75rem;margin:0 0 1.25rem}
.invite{padding:1rem 1.25rem;border:1px solid var(--rust);border-radius:12px;background:var(--rust-wash)}
.invite p{margin:0 0 .75rem}
.search{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem 1rem;margin:0 0 1rem}
.search label{flex:1 1 16rem;margin:0}
.search a{display:inline-flex;align-items:center;min-height:44px}
.live-region{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.minimum{margin:12px 0 0;padding:10px 12px;border-left:3px solid #b45a2a;background:#fbf1e7;border-radius:6px;font-size:14px;line-height:1.45}.minimum.is-on{border-left-color:#2f7a4a;background:#ecf6ef}
.guest-signing{margin:1.5rem 0;padding:1rem 1.1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.guest-signing h2{font-size:1.05rem;margin:0 0 .4rem}
.guest-list{list-style:none;margin:.75rem 0 0;padding:0;display:grid;gap:.6rem}
.guest-row{display:grid;gap:.25rem;padding:.6rem 0;border-top:1px solid var(--line)}
.guest-row a{overflow-wrap:anywhere;color:var(--rust-ink)}
.guest-row.is-signed span{color:var(--sage-ink)}
.guest-row summary{display:flex;align-items:center;min-height:44px;cursor:pointer}
.guest-row .button{justify-self:start;color:var(--ink)}
.terms-text{max-height:16rem;overflow:auto;padding:.8rem 1rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);margin:1rem 0}
.health-question{border:0;padding:0;margin:.75rem 0;display:flex;flex-wrap:wrap;gap:.5rem 1.25rem}
.health-question legend{font-weight:600;margin-bottom:.35rem;width:100%}
.signature-pad canvas{display:block;width:100%;max-width:600px;aspect-ratio:3/1;height:auto;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:#fff;touch-action:none}
.signature{display:block;width:100%;max-width:300px;height:auto;color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;margin-top:.5rem}
.check-inline{display:flex;align-items:center;gap:.5rem}
.guest-checks{list-style:none;margin:.5rem 0;padding:0;display:grid;gap:.35rem;font-size:.9rem}
.guest-checks a{overflow-wrap:anywhere}
.invoice-sheet{max-width:46rem;margin:0 auto;padding:2rem 1rem;background:var(--surface)}
.invoice-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1.5rem;margin-bottom:1.5rem}
.invoice-from{text-align:right}
.invoice-lines{width:100%;border-collapse:collapse;margin:1.5rem 0;font-variant-numeric:tabular-nums}
.invoice-lines th,.invoice-lines td{padding:.6rem .4rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.invoice-lines td:last-child,.invoice-lines tfoot th{text-align:right}
@media print{.no-print{display:none}.invoice-sheet{padding:0;max-width:none}}

.pay-page h1{margin-top:.5rem}
.pay-box{min-height:360px;margin-top:1.25rem}
.pay-loading{color:var(--ink-2);font-size:.9375rem;padding:2rem 0;text-align:center}
.pay-fallback{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--line);display:grid;gap:.75rem;justify-items:start}
.pay-box[hidden]{display:none!important}
.clock-state{margin:0 0 1rem}
.clock-button{width:100%;min-height:56px;font-size:1.0625rem}
.row-actions details[open]{flex-basis:100%}
.row-actions details form{margin:.5rem 0 0;max-width:640px}
.row-actions details form button{min-height:44px}

/* Gift campaigns: the timetable banner, the gift page and the printable voucher. Each design sets two colours; the page stays paper and ink. */
.gift-design-frost{--g-bg:#21423a;--g-ink:#fbf4ea;--g-accent:#e8d6aa}
.gift-design-holly{--g-bg:#fbf4ea;--g-ink:#1f1a17;--g-accent:#b2370f}
.gift-design-starlight{--g-bg:#1f1e2e;--g-ink:#fbf4ea;--g-accent:#e8d6aa}
.gift-design-paper{--g-bg:#fbf4ea;--g-ink:#1f1a17;--g-accent:#b2370f}
.gift-design-rose{--g-bg:#962d0c;--g-ink:#fbf4ea;--g-accent:#f8e9e1}
.gift-design-blush{--g-bg:#f8e9e1;--g-ink:#1f1a17;--g-accent:#b2370f}
.gift-design-bloom{--g-bg:#f8e9e1;--g-ink:#1f1a17;--g-accent:#2f6b4f}
.gift-design-sage{--g-bg:#2f6b4f;--g-ink:#fbf4ea;--g-accent:#f3ece2}
.gift-design-linen{--g-bg:#f3ece2;--g-ink:#1f1a17;--g-accent:#962d0c}
.gift-design-ink{--g-bg:#1f1a17;--g-ink:#fbf4ea;--g-accent:#e8785a}
.gift-design-ember{--g-bg:#b2370f;--g-ink:#fbf4ea;--g-accent:#fbf4ea}
.gift-motif{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
.campaign-banner{display:flex;align-items:center;gap:.75rem;margin-top:1.25rem;padding:.875rem 1rem;min-height:44px;border:1px solid var(--rust-line);border-radius:var(--radius);background:var(--rust-wash);color:var(--rust-ink);text-decoration:none;max-width:560px}
.campaign-banner>span:nth-child(2){display:grid;gap:.125rem;flex:1;min-width:0}
.campaign-banner strong{color:var(--ink);font-size:1rem}
.campaign-banner span span{font-size:.875rem}
.campaign-banner:hover{border-color:var(--rust)}
.gift-hero{background:var(--g-bg);color:var(--g-ink);padding:3rem 0 2.25rem}
.gift-hero-inner{max-width:760px;margin:0 auto;padding:0 1rem}
.gift-hero .gift-motif{color:var(--g-accent);width:40px;height:40px;margin-bottom:1rem}
.gift-hero .eyebrow{color:inherit;opacity:.85;font-size:.9375rem;margin-bottom:.5rem}
.gift-hero h1{font-size:clamp(2.25rem,7vw,3.5rem);line-height:1.04;letter-spacing:-.025em;color:inherit}
.gift-hero-inner>p:not(.eyebrow):not(.countdown):not(.credit-note){font-size:1.125rem;margin-top:.875rem;max-width:44ch;opacity:.92}
.countdown{display:inline-block;margin-top:1.25rem;padding:.4rem .8rem;border-radius:999px;background:var(--g-accent);color:var(--g-bg);font-size:.9375rem}
.gift-shop{max-width:760px;margin:1.5rem auto}
.gift-items{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}
.gift-form .gift-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:64px;padding:.75rem 1rem;border:1px solid var(--line-control);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;margin:0}
.gift-item input{position:absolute;opacity:0;width:1px;height:1px}
.gift-item:has(input:checked){border-color:var(--rust);background:var(--rust-wash);box-shadow:inset 0 0 0 1px var(--rust)}
.gift-item:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
.gift-item.is-gone{opacity:.55;cursor:not-allowed}
.gift-item-body{display:grid;gap:.125rem}
.gift-item-body strong{font-family:var(--sans);font-weight:800;font-size:1.125rem}
.gift-item-body span{font-size:.875rem;color:var(--ink-2)}
.gift-item-body .gift-bonus-tag{color:var(--sage-ink);font-weight:560}
.gift-item-price{white-space:nowrap}
.gift-item-price s{color:var(--ink-2);font-size:.875rem}
.design-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(6.5rem,1fr));gap:.5rem}
.gift-form .design-choice{position:relative;display:flex;flex-direction:column;align-items:center;gap:.35rem;margin:0;font-size:.875rem;cursor:pointer;min-width:0}
.design-choice input{position:absolute;opacity:0;width:1px;height:1px}
.gift-swatch{display:grid;place-items:center;width:100%;aspect-ratio:3/2;border-radius:var(--radius-sm);background:var(--g-bg);color:var(--g-accent);border:1px solid var(--line)}
.design-choice input:checked+.gift-swatch{outline:2px solid var(--rust);outline-offset:2px}
.design-choice input:focus-visible+.gift-swatch{outline:3px solid var(--focus);outline-offset:4px;box-shadow:0 0 0 2px var(--ink)}
.gift-bonus{margin:1rem 0;padding:1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--sunk)}
.gift-bonus p{margin-top:.35rem;font-size:.875rem;color:var(--ink-2)}
.gift-form fieldset{min-width:0}
.gift-form label:has(>input[type=radio]):not(.design-choice):not(.gift-item){display:flex;gap:.5rem;align-items:center;min-height:44px;margin:0;font-weight:400;font-size:.9375rem}
.gift-item-body{min-width:0}
.columns.three{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr))}
.gift-print{max-width:760px;margin:1.5rem auto;padding:0 1rem}
.gift-sheet{background:var(--g-bg);color:var(--g-ink);border-radius:var(--radius);padding:2rem;aspect-ratio:148/210;max-width:420px;margin:0 auto;display:flex;flex-direction:column;gap:.75rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.gift-sheet.is-a4{aspect-ratio:210/297;max-width:560px}
.gift-sheet-head{display:flex;align-items:center;gap:.6rem;font-weight:600}
.gift-sheet-head .gift-motif{margin-left:auto;color:var(--g-accent)}
.gift-sheet .venue-mark{background:var(--g-accent);color:var(--g-bg)}
.gift-kind{margin-top:auto;color:var(--g-accent);font-weight:600}
.gift-sheet h1{font-size:clamp(2rem,6vw,2.75rem);line-height:1.05;color:inherit}
.gift-worth,.gift-for{font-size:1.0625rem}
.gift-sheet blockquote{margin:0;padding-left:.75rem;border-left:2px solid var(--g-accent);font-style:italic}
.gift-code{display:flex;gap:1rem;align-items:center;margin-top:auto}
.gift-qr svg{display:block;width:110px;height:110px;border-radius:6px}
.gift-code div:last-child{display:grid;gap:.15rem}
.gift-code span{font-size:.8125rem;opacity:.85}
.gift-code strong{font-size:1.375rem;letter-spacing:.06em}
.gift-how{font-size:.8125rem;opacity:.85}
.gift-tools{margin-top:1.5rem;text-align:center}
.gift-tools .button-row{justify-content:center}
@page a5sheet{size:A5;margin:0}
@page a4sheet{size:A4;margin:0}
@media print{
  .public-app .topbar,.public-app .site-footer,.gift-tools{display:none}
  .gift-print{margin:0;padding:0;max-width:none}
  .gift-sheet{page:a5sheet;border-radius:0;max-width:none;width:148mm;height:210mm;aspect-ratio:auto;padding:14mm}
  .gift-sheet.is-a4{page:a4sheet;width:210mm;height:297mm;padding:20mm}
}
.public-app .gift-items>li{border:0;padding:0}
.gift-form .hint{margin:-.5rem 0 1.25rem}
/* Gift store (src/gift-store-pages.js): four card designs, a 2×2 gift grid, a sticky live card preview, the gift page. */
.gs-theme-coastal{--gs-bg:#0f1e26;--gs-ink:#fbf4ea;--gs-accent:#c86d3b}
.gs-theme-solstice{--gs-bg:#14213d;--gs-ink:#fbf4ea;--gs-accent:#f4a259}
.gs-theme-birthday{--gs-bg:#6b3e26;--gs-ink:#fbf4ea;--gs-accent:#f2c57c}
.gs-theme-cedar{--gs-bg:#f3e8de;--gs-ink:#1a1412;--gs-accent:#7a4a2a}
.gs-motif{width:28px;height:28px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.gs-hero{background:var(--deep);color:var(--deep-ink);padding:2.5rem 0 2rem}
.gs-hero-inner{max-width:1080px;margin:0 auto;padding:0 1rem}
.gs-hero h1{font-size:clamp(2rem,6vw,3.25rem);font-weight:800;letter-spacing:-.045em;line-height:1.02;margin:.25rem 0 .75rem}
.gs-hero .eyebrow,.gs-hero .lead{color:inherit;opacity:.88;max-width:40rem}
.gs-shop{max-width:1080px;margin:1.5rem auto}
.gs-layout{display:grid;gap:1.5rem}
.gs-steps fieldset{border:0;padding:0;margin:0 0 1.75rem;min-width:0}
.gs-steps legend{font-weight:800;font-size:1.25rem;letter-spacing:-.02em;margin-bottom:.75rem}
.gs-grid{list-style:none;margin:0;padding:0;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.gs-cell{display:grid;gap:.5rem;align-content:start}
.gs-pkg{position:relative;display:grid;gap:.25rem;align-content:start;min-height:9.5rem;margin:0;padding:1rem 1rem 1.1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;font-weight:400}
.gs-pkg input{position:absolute;opacity:0;width:1px;height:1px}
.gs-pkg:has(input:checked){border-color:var(--rust);box-shadow:inset 0 0 0 1px var(--rust);background:var(--rust-wash)}
.gs-pkg:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
.gs-badge{justify-self:start;padding:.15rem .6rem;border-radius:999px;background:var(--ink);color:var(--paper);font-size:.8125rem;font-weight:600}
.gs-pkg-title{font-size:1.125rem;font-weight:800;letter-spacing:-.02em;line-height:1.2}
.gs-pkg-what{color:var(--ink-2);font-size:.9375rem}
.gs-pkg-price{margin-top:auto;padding-top:.35rem;font-size:1.375rem;font-weight:800;letter-spacing:-.02em}
.gs-pkg small{color:var(--ink-2)}
.gs-amounts{display:none;border:0;margin:0;padding:0;min-width:0}
.gs-cell:has(.gs-pkg input:checked) .gs-amounts{display:grid;gap:.5rem}
.gs-amount-row{display:flex;flex-wrap:wrap;gap:.5rem}
.gs-chip{position:relative;margin:0;font-weight:600}
.gs-chip input{position:absolute;opacity:0;width:1px;height:1px}
.gs-chip span{display:inline-flex;align-items:center;min-height:44px;padding:0 1rem;border:1px solid var(--line);border-radius:999px;background:var(--surface)}
.gs-chip input:checked+span{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.gs-chip input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
.gs-amounts label:not(.gs-chip){display:none}
.gs-amounts:has(input[value=custom]:checked) label:not(.gs-chip){display:block}
.gs-themes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}
.gs-theme-choice{position:relative;display:grid;gap:.35rem;justify-items:center;margin:0;font-size:.875rem;text-align:center;cursor:pointer;font-weight:400}
.gs-theme-choice input{position:absolute;opacity:0;width:1px;height:1px}
.gs-swatch{display:grid;place-items:center;width:100%;aspect-ratio:3/2;border-radius:var(--radius-sm);background:var(--gs-bg);color:var(--gs-accent);border:1px solid var(--line)}
.gs-theme-choice input:checked+.gs-swatch{outline:2px solid var(--rust);outline-offset:2px}
.gs-theme-choice input:focus-visible+.gs-swatch{outline:3px solid var(--focus);outline-offset:4px;box-shadow:0 0 0 2px var(--ink)}
.gs-suggestions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}
.gs-suggestion{position:relative;margin:0;font-weight:400;font-size:.875rem}
.gs-suggestion input{position:absolute;opacity:0;width:1px;height:1px}
.gs-suggestion span{display:inline-flex;align-items:center;min-height:44px;padding:.4rem .9rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);line-height:1.3}
.gs-suggestion input:checked+span{border-color:var(--rust);background:var(--rust-wash);color:var(--rust-ink)}
.gs-suggestion input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
.gs-email-fields{display:none;margin-top:.5rem}
.gs-delivery:has(input[value=email]:checked) .gs-email-fields{display:block}
.gs-preview{align-self:start}
.gs-card{display:grid;gap:.4rem;padding:1.5rem;border-radius:var(--radius);background:var(--gs-bg);color:var(--gs-ink);aspect-ratio:210/148.5;align-content:start;overflow:hidden;position:relative}
.gs-card-top{display:flex;align-items:center;gap:.5rem;color:var(--gs-accent);font-weight:700;font-size:.875rem}
.gs-card-top span{color:var(--gs-ink)}
.gs-card-occasion{margin:0;color:var(--gs-accent);font-weight:700;font-size:.875rem}
.gs-card-title{margin:0 0 .25rem;font-size:1.625rem;font-weight:800;letter-spacing:-.04em;line-height:1.05;max-width:75%}
.gs-card-line{margin:0;font-size:.9375rem}
.gs-card-message{margin:.35rem 0 0;font-style:italic;font-size:.9375rem;max-width:72%;overflow-wrap:anywhere}
.gs-card-qr{position:absolute;right:1.25rem;bottom:1.25rem;width:64px;height:64px;padding:6px;border-radius:8px;background:#fff}
.gs-card-qr span{display:block;width:100%;height:100%;background:repeating-conic-gradient(#000 0 25%,#fff 0 50%) 0 0/12px 12px}
.gs-preview .fine{margin-top:.75rem}
.gs-form:has(input[name=theme][value=coastal]:checked) .gs-card{--gs-bg:#0f1e26;--gs-ink:#fbf4ea;--gs-accent:#c86d3b}
.gs-form:has(input[name=theme][value=solstice]:checked) .gs-card{--gs-bg:#14213d;--gs-ink:#fbf4ea;--gs-accent:#f4a259}
.gs-form:has(input[name=theme][value=birthday]:checked) .gs-card{--gs-bg:#6b3e26;--gs-ink:#fbf4ea;--gs-accent:#f2c57c}
.gs-form:has(input[name=theme][value=cedar]:checked) .gs-card{--gs-bg:#f3e8de;--gs-ink:#1a1412;--gs-accent:#7a4a2a}
@media (min-width:900px){.gs-layout{grid-template-columns:minmax(0,1fr) 340px}.gs-preview{position:sticky;top:1rem}.gs-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:899px){.gs-preview{order:-1}.gs-card{aspect-ratio:auto;min-height:12rem}}
@media (max-width:520px){.gs-themes{grid-template-columns:repeat(2,minmax(0,1fr))}}
.gs-pill{display:inline-flex;align-items:center;min-height:32px;padding:.2rem .85rem;border-radius:999px;background:var(--rust-wash);color:var(--rust-ink);font-weight:700;margin:.25rem 0 .75rem}
.gs-pill.is-off{background:var(--sidebar);color:var(--ink-2)}
.gs-unwrap{background:var(--gs-bg);color:var(--gs-ink);padding:3rem 1rem}
.gs-unwrap-card{max-width:640px;margin:0 auto;display:grid;gap:.5rem;justify-items:start}
.gs-unwrap .gs-motif{color:var(--gs-accent);width:40px;height:40px}
.gs-unwrap .eyebrow{color:inherit;opacity:.88}
.gs-unwrap h1{font-size:clamp(1.875rem,6vw,2.75rem);font-weight:800;letter-spacing:-.045em;line-height:1.05;margin:0}
.gs-unwrap-message{margin:.5rem 0;padding:0;border:0;font-style:italic;font-size:1.125rem;max-width:36rem}
.gs-unwrap .gs-pill{background:var(--gs-ink);color:var(--gs-bg)}
.gs-unwrap .button.gs-go{background:var(--gs-ink);color:var(--gs-bg);border-color:var(--gs-ink)}
.gs-unwrap .button:focus-visible{outline:2px solid var(--gs-ink);outline-offset:2px}
.gs-unwrap-more{margin-top:1.5rem}
.gs-redeem,.gs-done{margin:0 0 1.5rem;padding:1.25rem;border:1px solid var(--rust-line);border-radius:var(--radius);background:var(--rust-wash)}
.gs-redeem h2,.gs-done h2{margin-top:0}
.gs-redeem button{white-space:normal;height:auto;min-height:44px;line-height:1.3;padding-block:.65rem}
.gs-buy-banner .gs-motif{color:var(--rust)}
.gs-share{margin-top:1.25rem}
.public-app .card form.gs-form{max-width:none}
.gs-hero h1,.gs-unwrap h1{color:inherit}
.card li.gs-cell{padding:0;border:0}
.gs-form label.gs-pkg{display:grid;padding:1rem 1rem 1.1rem;gap:.25rem;align-items:start;font-size:1rem}
.gs-form label.gs-theme-choice{display:grid;align-content:start;padding:0;margin:0;min-height:0;font-size:.875rem}
.gs-themes{align-items:start}
.gs-preview .gs-card{aspect-ratio:auto;min-height:15rem;padding-bottom:5.5rem}
.gs-form label.gs-chip,.gs-form label.gs-suggestion{display:inline-flex;padding:0;min-height:0}
label.gs-radio{display:flex;align-items:center;gap:.5rem;min-height:44px;margin:0;padding-block:.25rem;font-weight:400}
/* Find a sauna: the public sauna directory (/saunas), its owner pages and the free tools (/tools), which share .directory-app.
   Sizes are px on the brand type and spacing scales (docs/brand-standard.md 3.2, 3.3): the shared root is 15px, so rem lands
   between steps here. Display type is Fraunces, everything else Plus Jakarta Sans, the one action colour cedar (--rust). */
.directory-app{font-size:16px;line-height:1.6}
.directory-app main{max-width:1040px;padding:0 16px 48px}
.directory-app .topbar-inner{max-width:1040px;min-height:64px;padding:0 16px}
.directory-app .wordmark,.directory-app .topbar-link{display:inline-flex;align-items:center;min-height:44px}
.directory-app .topbar-link{font-size:16px;color:var(--ink-2);text-decoration:none}
.directory-app .topbar-link:hover{color:var(--ink)}
.directory-app .site-footer{max-width:1040px;display:flex;flex-wrap:wrap;align-items:center;gap:0 16px;padding:32px 16px 48px;font-size:14px}
.directory-app .site-footer a{display:inline-flex;align-items:center;min-height:44px}
@media (min-width:720px){.directory-app main{padding:0 24px 64px}.directory-app .topbar-inner{min-height:72px;padding:0 24px}.directory-app .site-footer{padding:48px 24px 64px}}
.directory-app h1{font-size:36px;line-height:1.15}
.directory-app h2{font-family:var(--serif);font-weight:600;font-size:24px;line-height:1.3;letter-spacing:-.02em}
.directory-app h3{font-size:18px;font-weight:600;line-height:1.4}
.directory-app p+p{margin-top:12px}
.directory-app .lead{font-size:18px;line-height:1.55;max-width:65ch;margin-top:8px}
.directory-app .fine,.directory-app .hint{font-size:14px}
.directory-app label{font-size:14px;font-weight:600}
.directory-app label:has(>input[type=checkbox]),.directory-app label:has(>input[type=radio]){font-size:16px;font-weight:400}
.directory-app button,.directory-app .button{font-size:16px;min-height:44px;padding:0 24px}
.directory-app .button .icon{width:16px;height:16px}
.directory-app button.secondary,.directory-app .button.secondary{border-color:var(--line-control)}
.directory-app .dir-danger{color:var(--red);border-color:var(--red)}
.directory-app :focus-visible{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
.directory-app label.choice input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
.directory-app .card h1{font-size:36px;margin-bottom:12px}
.directory-app .card>a:first-child{min-height:44px;margin:0 0 8px;font-size:14px}
.directory-app .setup-section h2{font-size:24px}
@media (min-width:900px){.directory-app h1,.directory-app .card h1{font-size:48px;line-height:1.1}.directory-app h2{font-size:30px;line-height:1.2}}

.dir{padding-top:16px}
.dir.card{max-width:640px}
.dir.card.dir-badge-page{max-width:760px}
.dir-head{margin-bottom:24px}
.dir-head .pill{margin-top:12px;height:24px;font-size:12px;font-weight:600}
.dir-head .eyebrow{font-size:14px;margin:0 0 4px}
.dir-crumbs{font-size:14px;color:var(--ink-2);margin:16px 0 8px}
.dir-crumbs a{display:inline-block;padding-block:4px;color:var(--ink-2)}
.dir-total{font-family:var(--serif);font-size:24px;font-weight:600;line-height:1.3;letter-spacing:-.02em;margin:8px 0 0;color:var(--rust)}
.dir-summary{max-width:65ch;margin-top:12px;color:var(--ink-2)}
.dir-search{display:grid;gap:16px;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--card-shadow);margin:24px 0}
.dir-search label{display:grid;gap:8px;margin:0;font-size:14px;font-weight:600;color:var(--ink)}
.dir-search input[type=search],.dir-search select{min-height:44px;font:inherit;font-size:16px;padding:0 12px;border:1px solid var(--line-control);border-radius:10px;background-color:var(--surface);color:var(--ink)}
.dir-search label.choice span{min-height:44px;padding:0 16px;border-color:var(--line-control);border-radius:999px;font-size:16px;font-weight:600}
.dir-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:end}
@media (min-width:720px){.dir-search{padding:24px}.dir-filters{grid-template-columns:repeat(4,minmax(0,1fr))}}
.dir-areas{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}
.dir-areas a{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);text-decoration:none;font-size:14px;font-weight:500}
.dir-areas a span{color:var(--ink-2);font-variant-numeric:tabular-nums}
.dir-areas a:hover{border-color:var(--ink-2)}
.dir-areas a[aria-current=page]{border-color:var(--ink)}
.dir-features a[aria-current]{background:var(--ink);border-color:var(--ink);color:var(--on-deep,#faf6f0)}
.dir-features a[aria-current] span{color:inherit}
.dir-body{display:grid;gap:32px;margin-top:24px}
@media (min-width:900px){.dir-body{grid-template-columns:minmax(0,1fr) 360px;align-items:start}.dir-map{position:sticky;top:16px}}
.directory-app .dir-count{font-family:var(--sans);font-size:20px;font-weight:600;line-height:1.4;letter-spacing:0;color:var(--ink);margin:0}
.dir-note{font-size:14px;color:var(--ink-2);margin:4px 0 16px}
.dir-count+.dir-list{margin-top:16px}

/* Listing cards (docs/brand-standard.md 4.11): name and town, a facts line, tags, then one action. */
.dir-list{list-style:none;padding:0;margin:0;display:grid;gap:12px}
.dir-card{display:grid;gap:8px;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--card-shadow)}
.dir-card.is-live{box-shadow:inset 0 3px 0 var(--cedar),var(--card-shadow)}
@media (min-width:720px){.dir-card{padding:24px}}
.dir-card-main{display:block;padding-block:2px;color:var(--ink);text-decoration:none;line-height:1.35}
.dir-card-main strong{font-family:var(--sans);font-size:18px;font-weight:600}
.dir-card-main:hover strong{color:var(--rust);text-decoration:underline;text-underline-offset:.2em}
.dir-where{font-size:16px;font-weight:400;color:var(--ink-2)}
.dir-facts,.dir-tags{font-size:14px;color:var(--ink-2)}
.dir-badge{justify-self:start;display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;background:var(--sidebar);color:var(--ink-2);font-size:12px;font-weight:600;margin:0}
.dir-badge.is-live{background:var(--sage-wash);color:var(--sage-ink)}
.dir-badge.is-live::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--sage)}
.dir-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:4px}
.dir-card .dir-cta{white-space:normal;text-align:center}
.dir-card.is-live .dir-cta:first-child{flex:1 1 100%;min-height:48px}
@media (min-width:720px){.dir-card.is-live .dir-cta:first-child{flex:0 1 auto}}
.dir-hook{display:inline-flex;align-items:center;min-height:44px;font-size:14px;font-weight:600;color:var(--rust-ink)}
.dir-strip{display:grid;gap:8px;margin-top:4px}
.dir-strip-day{font-size:14px;font-weight:600;color:var(--ink)}
.dir-times{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px}
.dir-times a{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:1px solid var(--line-control);border-radius:10px;background:var(--surface);color:var(--ink);font-size:14px;text-decoration:none;font-variant-numeric:tabular-nums}
.dir-times a strong{font-size:16px;font-weight:600}
.dir-times a span{color:var(--sage)}
.dir-times a.is-low span{color:var(--amber)}
.dir-times a:hover{border-color:var(--ink);background:var(--paper)}

.dir-map{margin:0}
.dir-map svg{width:100%;max-width:420px;height:auto;margin:0 auto}
.dir-map .land{fill:var(--sidebar);stroke:var(--line-strong);stroke-width:1}
.dir-map .dot{fill:var(--ink-2);stroke:var(--paper);stroke-width:1.5}
.dir-map .dot.is-live{fill:var(--rust)}
.dir-map a:hover .dot,.dir-map a:focus .dot{fill:var(--rust-ink)}
.dir-map figcaption{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;font-size:14px;color:var(--ink-2);margin-top:8px}
.dir-map .key{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--ink-2);margin-left:12px}
.dir-map .key.is-live{background:var(--rust)}
.dir-pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-top:24px;font-size:14px;color:var(--ink-2)}
.dir-owner{margin:48px 0 16px;padding:24px;border:1px solid var(--line);border-left:4px solid var(--cedar);border-radius:16px;background:var(--surface)}
.dir-owner h2{margin-bottom:8px}
.dir-owner p{color:var(--ink-2);margin:0 0 16px;max-width:65ch}
.dir-faq{margin-top:48px;max-width:65ch}
.dir-faq h2{margin-bottom:12px}
.dir-faq h3{margin:24px 0 4px}
.dir-near{margin-top:48px}
.dir-near h2{margin-bottom:16px}
.dir-subhead{margin:48px 0 12px}

/* The owner banner on listings not taking bookings on Olladay: dark while unclaimed, a quiet card once claimed. */
.dir-claim{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;margin:16px 0 8px;padding:16px;border:1px solid var(--line);border-left:4px solid var(--cedar);border-radius:16px;background:var(--surface)}
.dir-claim p{margin:0;flex:1 1 22rem;max-width:65ch;color:var(--ink)}
.dir-claim p strong{display:inline-flex;align-items:center;gap:8px}
.dir-claim p strong::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--cedar);flex:none}
.dir-claim .button{white-space:normal;text-align:center}
.dir-claim.is-dark{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.dir-claim.is-dark p{color:var(--paper)}
.dir-claim.is-dark .button{background:var(--paper);border-color:var(--paper);color:var(--ink)}
.dir-claim.is-dark .button:hover{background:#fff;border-color:#fff;color:var(--ink)}
.dir-claim.is-dark :focus-visible{box-shadow:none}

/* A listing's own page */
.dir-listing{max-width:1040px}
.dir-photo{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:16px;background:var(--sunk);margin-bottom:24px}
.dir-profile{display:grid;gap:24px}
@media (max-width:899px){.dir-profile.is-live .dir-side{order:-1}}
@media (min-width:900px){.dir-profile{grid-template-columns:minmax(0,1fr) 340px;align-items:start}.dir-side{position:sticky;top:16px}}
.dir-side h2{font-size:24px;line-height:1.3}
.dir-tag-list{list-style:none;padding:0;margin:16px 0 0;display:flex;flex-wrap:wrap;gap:8px}
.dir-tag-list li{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:999px;background:var(--sidebar);color:var(--ink-2);font-size:14px;font-weight:500}
.dir-facts-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:16px;margin:24px 0;padding:16px 0;border-block:1px solid var(--line)}
.dir-facts-list dt{font-size:14px;color:var(--ink-2)}
.dir-facts-list dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums}
.dir-source{margin-top:24px}
.dir-bookbox,.dir-live{padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--card-shadow)}
@media (min-width:720px){.dir-bookbox,.dir-live{padding:24px}}
.dir-bookbox h2,.dir-live h2{margin-bottom:8px}
.dir-bookbox .button,.dir-live .button.wide,.dir-book .button{width:100%;white-space:normal;text-align:center;min-height:48px}
.dir-live .button.wide{margin-top:16px}
.dir-book{display:grid;gap:12px;margin:0}
.dir-status{color:var(--ink-2);margin-bottom:16px}
.dir-or{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--ink-2);font-size:14px}
.dir-or::before,.dir-or::after{content:"";flex:1;border-top:1px solid var(--line)}
.dir-ownerbox{padding:16px;border-radius:10px;background:var(--rust-wash);font-size:14px}
.dir-ownerbox p{margin:0 0 12px}
.dir-ownerbox .fine{margin:8px 0 0;text-align:center}
.dir-ownerbox .fine a{display:inline-flex;align-items:center;min-height:44px}
.dir-fee{margin:0 0 8px}
.dir-slots .slot{grid-template-columns:88px minmax(0,1fr) auto;gap:12px;padding:12px;margin:0 -12px}
.dir-slots .slot-time{display:grid;gap:2px;font-variant-numeric:tabular-nums}
.dir-slots .slot-time strong{font-size:18px;font-weight:600}
.dir-slots .slot-time span{font-size:14px;font-weight:400;color:var(--ink-2)}
.dir-slots .slot-body strong{font-size:16px;font-weight:600}
.dir-slots .slot-body span,.dir-slots .slot-book{font-size:14px}
.dir-slots .slot-body .dir-left{font-size:14px;font-weight:600;color:var(--sage)}
.dir-slots .slot-body .dir-left.is-low{color:var(--amber)}
.dir-dots{display:flex;gap:4px;margin:4px 0 2px}
.dir-dots i{width:8px;height:8px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--line-control)}
.dir-dots i.is-free{background:#16a34a;box-shadow:none}
.dir-links{display:flex;flex-wrap:wrap;gap:0 16px;margin:0}
.dir-links a{display:inline-flex;align-items:center;min-height:44px}
.dir-listing .dir-areas{margin-top:24px}
.dir-token code{display:inline-block;font-size:24px;padding:8px 16px;border:1px dashed var(--rust);border-radius:10px;background:var(--surface);user-select:all}
.dir-edit textarea,.dir-edit select{width:100%}
/* Home screen and no-signal check-ins (docs/pwa.md) */
.home-hint{display:grid;gap:.75rem;margin:0 0 1.25rem;padding:1rem;border:1px solid var(--rust-line);border-radius:var(--radius);background:var(--rust-wash);color:var(--ink);font-size:.9375rem}
.home-hint p{margin:0}
.home-hint p+p{color:var(--ink-2)}
.home-hint-actions{display:flex;flex-wrap:wrap;gap:.5rem}
.home-hint.is-static{margin:1.25rem 0}
@media(min-width:900px){.home-hint.is-static{display:none}}
@media(display-mode:standalone){.home-hint{display:none}}
.offline-banner{position:fixed;left:50%;bottom:max(1rem,env(safe-area-inset-bottom));z-index:50;transform:translateX(-50%);width:min(calc(100% - 2rem),32rem);margin:0;padding:.75rem 1rem;border-radius:var(--radius-sm);background:var(--ink);color:var(--paper);font-size:.9375rem;box-shadow:var(--shadow-pop)}
body:has(.offline-banner:not([hidden])){padding-bottom:6rem}
.offline-banner[hidden]{display:none}
.pending-note{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin:.5rem 0 0;padding:.5rem .75rem;border-radius:var(--radius-sm);background:var(--amber-wash);color:var(--amber);font-size:.875rem;font-weight:600}
.pending-note .text-button{min-height:44px;padding:0 .5rem;border:0;background:none;color:var(--rust-ink);font:inherit;text-decoration:underline;cursor:pointer}
form[data-attendance][hidden]{display:none}

/* Olladay Pro: the plan comparison, the upgrade page that stands in for a Pro feature, and the feature tiles both share. */
.plan-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:1rem;align-items:start;margin-bottom:2.5rem}
.plan-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:1.5rem;display:grid;gap:.75rem}
.plan-card.is-pro{border-color:var(--rust);box-shadow:inset 0 0 0 1px var(--rust)}
.plan-card header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}
.plan-card h2{font-family:var(--sans);font-weight:800;font-size:1.5rem;margin:0;display:flex;align-items:center;gap:.5rem}
.plan-current{font-size:.8125rem;font-weight:600;color:var(--ink-2)}
.plan-price{margin:0;color:var(--ink-2)}
.plan-price strong{font-family:var(--sans);font-weight:800;font-size:2.25rem;color:var(--ink);letter-spacing:-.02em;margin-right:.25rem}
.plan-fee,.plan-status{margin:0;color:var(--ink-2);font-size:.9375rem}
.plan-status{color:var(--ink);font-weight:500}
.plan-card .page-actions{justify-content:flex-start;flex-wrap:wrap;margin:.25rem 0 0}
.plan-card .page-actions form{margin:0}
.plan-card .hint{margin:0}
.plan-includes{margin:.5rem 0 0;font-weight:600;font-size:.875rem}
.plan-checks{list-style:none;margin:0;padding:.75rem 0 0;border-top:1px solid var(--line);display:grid;gap:.5rem;font-size:.9375rem}
.plan-includes+.plan-checks{border-top:0;padding-top:0}
.plan-checks li{display:flex;gap:.6rem;align-items:baseline}
.plan-checks li::before{content:"";flex:none;width:.75rem;height:.4rem;border-left:2px solid var(--sage);border-bottom:2px solid var(--sage);transform:rotate(-45deg) translateY(-.1rem)}
.plan-checks.is-pro li::before{border-color:var(--rust)}
.usage{display:grid;gap:.375rem;padding:.875rem 1rem;border-radius:var(--radius-sm);background:var(--sunk)}
.usage-row{display:flex;justify-content:space-between;font-size:.9375rem}
.usage-row strong{}
.meter{appearance:none;-webkit-appearance:none;width:100%;height:6px;border:0;border-radius:999px;background:var(--line);overflow:hidden;color:var(--sage-ink)}
.meter::-webkit-progress-bar{background:var(--line);border-radius:999px}
.meter::-webkit-progress-value{background:var(--sage);border-radius:999px}
.meter::-moz-progress-bar{background:var(--sage);border-radius:999px}
.pro-price{margin:0 0 1rem;font-weight:600}
.panel-body>.page-actions{justify-content:flex-start;margin-top:1rem}
.pro-also{max-width:1040px}
.pro-also h2{font-size:1.125rem;margin:0 0 1rem}
.pro-tiles{list-style:none;margin:0 0 1rem;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:.75rem}
.pro-tiles li{display:flex;gap:.875rem;padding:1rem 1.125rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.pro-tiles li>.icon{flex:none;width:22px;height:22px;color:var(--rust);margin-top:.1rem}
.pro-tiles strong{display:block;font-size:.9375rem;margin-bottom:.2rem}
.pro-tiles p{margin:0;color:var(--ink-2);font-size:.875rem;line-height:1.45}
.pro-tiles a{display:inline-flex;align-items:center;gap:.3rem;min-height:44px;margin-top:.125rem;font-size:.875rem;font-weight:600}
/* Venue themes (src/venue-brand.js). Each swaps the accent on every public page and sets --deep for dark chapters.
   White on --rust and --rust-ink on paper both stay at 4.5:1 or better. */
.public-app,.theme-choice{--deep:#0d1b22;--deep-ink:#faf6f0;--deep-2:#c3ccd1}
.theme-fjord{--rust:#1f6670;--rust-hover:#17525a;--rust-ink:#164c54;--rust-wash:#e3f0f0;--rust-line:#b9d7d9;--deep:#0f2a2e;--deep-2:#b8cfd1}
.theme-pine{--rust:#2f6248;--rust-hover:#244d38;--rust-ink:#234a36;--rust-wash:#e5efe8;--rust-line:#bfd6c7;--deep:#15241b;--deep-2:#bccbbf}
.theme-peat{--rust:#7a4a2a;--rust-hover:#633b20;--rust-ink:#5e3820;--rust-wash:#f3e8de;--rust-line:#dcc4ae;--deep:#231a14;--deep-2:#d1c0b0}
.theme-tide{--rust:#24507e;--rust-hover:#1c4066;--rust-ink:#1d4168;--rust-wash:#e4ecf5;--rust-line:#bccde2;--deep:#101c2b;--deep-2:#b9c6d6}
.theme-ash{--rust:#2b2926;--rust-hover:#000;--rust-ink:#2b2926;--rust-wash:#eeebe6;--rust-line:#d4cec6;--deep:#1b1a18;--deep-2:#c9c3bb}
.public-app{accent-color:var(--rust)}
.public-app .site-footer strong span,.public-app .wordmark span{display:inline-block;width:.32em;height:.32em;margin-left:.06em;border-radius:50%;background:radial-gradient(circle at 36% 30%,#ffb574,#ff6a3d 55%,#e5432a);box-shadow:0 0 .35em rgb(255 106 61 / .55);text-indent:-9em;overflow:hidden;vertical-align:baseline}

/* Storefront: the venue's home page (/b/<venue>) */
.public-app:has(.sf){overflow-x:clip}
.public-app:has(.sf,.bk) main{max-width:none;padding-inline:0}
.sf{--bleed:0px}
.sf-cover{position:relative;isolation:isolate;margin:0 var(--bleed);min-height:min(78svh,720px);display:flex;align-items:flex-end;background:var(--deep);color:var(--deep-ink);overflow:hidden}
.sf-cover:not(.has-photo){min-height:min(62svh,560px)}
.sf-cover-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;animation:sf-settle 1.6s var(--ease) both}
.sf-cover.has-photo::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgb(10 8 6 / .45) 0,rgb(10 8 6 / .06) 24%,rgb(10 8 6 / .28) 46%,rgb(10 8 6 / .8) 100%)}
.sf-cover.has-photo :is(.sf-place,h1,.sf-lead,.sf-next){text-shadow:0 1px 2px rgb(10 8 6 / .45),0 0 24px rgb(10 8 6 / .35)}
.sf-cover-inner{width:100%;max-width:1040px;margin:0 auto;padding:7rem 1.25rem 3rem;animation:sf-rise .9s .1s var(--ease) both}
.sf-cover .sf-place{color:inherit;opacity:.88;font-size:.9375rem;letter-spacing:.01em;display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}
.sf-cover .sf-place::before{content:"";width:22px;height:1px;background:currentColor;opacity:.7}
.sf-cover h1{font-family:var(--sans);font-weight:800;font-size:clamp(3rem,10vw,7rem);line-height:.96;letter-spacing:-.035em;color:inherit;max-width:14ch}
.sf-lead{font-size:clamp(1.0625rem,2.2vw,1.3125rem);line-height:1.45;max-width:40ch;margin-top:1.25rem;opacity:.94;text-wrap:pretty}
.sf-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2rem}
.sf-actions:empty{display:none}
.sf-cover .sf-primary{min-height:52px;padding:0 1.5rem;font-size:1rem;background:var(--deep-ink);border-color:var(--deep-ink);color:var(--ink)}
.sf-cover .sf-primary:hover{background:#fff;border-color:#fff;color:var(--ink)}
.sf-cover .sf-secondary{min-height:52px;padding:0 1.25rem;background:transparent;border:1px solid rgb(255 255 255 / .55);color:var(--deep-ink)}
.sf-cover .sf-secondary:hover{background:rgb(255 255 255 / .1);border-color:#fff;color:#fff}
.sf-next{display:flex;align-items:baseline;gap:.6rem;margin-top:1.5rem;font-size:.9375rem;opacity:.92}
.sf-next a{color:inherit;text-decoration-color:rgb(255 255 255 / .5)}
.sf-next a:hover{color:#fff;text-decoration-color:#fff}
.sf-dot{flex:none;width:8px;height:8px;align-self:center;border-radius:50%;background:#7fd3a0;box-shadow:0 0 0 4px rgb(127 211 160 / .22)}
.sf-cover .credit-note{background:rgb(255 255 255 / .14);color:inherit;margin-right:.5rem}
.sf-cover .campaign-banner{margin-top:1.5rem;max-width:560px}
@keyframes sf-settle{from{transform:scale(1.06);opacity:.4}to{transform:none;opacity:1}}
@keyframes sf-rise{from{transform:translateY(14px);opacity:0}to{transform:none;opacity:1}}
@media(prefers-reduced-motion:reduce){.sf-cover-photo,.sf-cover-inner{animation:none}}

/* The bar over a photo cover goes clear, so the photo reaches the top of the screen */
.public-app:has(.sf-cover) .topbar{position:absolute;inset:0 0 auto;z-index:5;background:none;border:0}
.public-app:has(.sf-cover) .venue-brand{color:var(--deep-ink)}
.public-app:has(.sf-cover) .venue-brand .venue-mark{background:rgb(255 255 255 / .16);color:#fff;border:1px solid rgb(255 255 255 / .3)}

.sf-facts{list-style:none;display:flex;flex-wrap:wrap;margin:0 var(--bleed);padding:0 max(1.25rem,calc((100% - 1000px)/2));border-bottom:1px solid var(--line);background:var(--surface)}
.sf-facts li{flex:1 1 12rem;padding:1.125rem 1.25rem 1.125rem 0;font-size:.9375rem;font-weight:560;color:var(--ink);display:flex;align-items:center;gap:.6rem}
.sf-facts li::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--rust)}

.sf .sf-book,.sf-chapter{max-width:1040px;margin:0 auto;padding:5.5rem 1.25rem 0;display:grid;grid-template-columns:15rem minmax(0,1fr);gap:1.5rem 4rem;align-items:start}
.sf .sf-book{padding-top:4.5rem;scroll-margin-top:1rem}
.sf-rail{position:sticky;top:1.5rem;display:grid;gap:.75rem}
.sf-rail>p{color:var(--ink-2);font-size:.9375rem;max-width:28ch}
.sf-main{min-width:0}
.sf .sf-book .shop-links,.sf .sf-book .service-filter{margin:.5rem 0 0;padding:0;flex-direction:column;align-items:stretch;flex-wrap:nowrap;overflow:visible}
.sf .sf-book .service-filter a,.sf .sf-book .shop-links a{justify-content:space-between;border-radius:var(--radius-sm)}
.sf .sf-book .slot-day:first-of-type{margin-top:1.25rem}
.sf .sf-book .section-heading h2,.sf-rail h2{font-family:var(--sans);font-weight:800;font-size:clamp(1.75rem,4vw,2.5rem);line-height:1.08;letter-spacing:-.025em}
.sf .sf-book .section-heading p{color:var(--ink-2);margin-top:.35rem;font-size:.9375rem}
.sf-days{display:flex;gap:.5rem;overflow-x:auto;scroll-snap-type:x mandatory;margin:0;padding:.25rem 0 .5rem;scrollbar-width:none;mask-image:linear-gradient(90deg,#000 88%,transparent)}
.sf-days::-webkit-scrollbar{display:none}
.sf-days a{flex:none;scroll-snap-align:start;display:grid;justify-items:center;gap:.1rem;width:4.5rem;padding:.75rem 0 .65rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);text-decoration:none;transition:border-color .16s,transform .16s var(--ease)}
.sf-days a:hover{border-color:var(--ink);transform:translateY(-2px);color:var(--ink)}
.sf-days span{font-size:.75rem;font-weight:600;color:var(--ink-2)}
.sf-days strong{font-family:var(--sans);font-weight:800;font-size:1.5rem;line-height:1.1;font-variant-numeric:tabular-nums}
.sf-days small{font-size:.75rem;color:var(--rust-ink);font-weight:560}
.sf-days a.is-full{background:none}
.sf-days a.is-full small,.sf-days a.is-full strong{color:var(--ink-3)}
.sf .slot-day{scroll-margin-top:.5rem}
.sf .slot{transition:background .16s}
.sf .slot-time{font-family:var(--sans);font-weight:800;font-size:1.375rem;letter-spacing:-.01em}
.sf .slot-book{background:var(--rust);transition:background .16s,transform .16s var(--ease)}
.sf .slot:hover .slot-book{background:var(--rust-hover);transform:translateX(2px)}
.sf .slot:hover{background:var(--surface)}

.sf-cards{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}
.sf-card{display:flex;flex-direction:column;height:100%;padding:1.5rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);text-decoration:none;transition:border-color .2s,transform .2s var(--ease)}
.sf-card:hover{border-color:var(--ink);color:var(--ink);transform:translateY(-3px)}
.sf-card h3{font-family:var(--sans);font-weight:800;font-size:1.5rem;line-height:1.15;letter-spacing:-.015em}
.sf-card dl{margin:1.25rem 0 0;display:grid;gap:.5rem}
.sf-card dl div{display:flex;justify-content:space-between;gap:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--line);font-size:.9375rem}
.sf-card dt{color:var(--ink-2)}
.sf-card dd{margin:0;font-weight:560;text-align:right;font-variant-numeric:tabular-nums}
.sf-card-price{margin-top:auto;padding-top:1.5rem;font-family:var(--sans);font-weight:800;font-size:2rem;letter-spacing:-.02em}
.sf-card-price span{font-family:var(--sans);font-size:.875rem;color:var(--ink-2);letter-spacing:0}
.sf-card-go{margin-top:.75rem;font-size:.9375rem;font-weight:600;color:var(--rust-ink)}

.sf-story-body{display:grid;gap:2.5rem;align-items:start}
.sf-story.has-photo .sf-story-body{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}
.sf-story-text{max-width:58ch}
.sf-story-text p:first-child{font-family:var(--sans);font-weight:800;font-size:1.375rem;line-height:1.45;letter-spacing:-.01em}
.sf-story-text p{font-size:1.125rem;line-height:1.65;color:var(--ink)}
.sf-story-text p+p{margin-top:1em}
.sf-social{margin-top:1.5rem!important;font-size:1rem!important}
.sf-story-photo{margin:0;border-radius:var(--radius);overflow:hidden;aspect-ratio:4/5}
.sf-story-photo img,.sf-gallery img{width:100%;height:100%;object-fit:cover}
.sf-gallery{max-width:1040px;margin:1.5rem auto 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;padding-top:1rem}
.sf-gallery img{aspect-ratio:4/3;border-radius:var(--radius)}

.sf-chapter.sf-dark{max-width:none;margin:5.5rem var(--bleed) 0;padding:5rem max(1.25rem,calc((100% - 1000px)/2));background:var(--deep);color:var(--deep-ink)}
.sf-dark h2{color:inherit}
.sf-dark .sf-rail{position:static}
.sf-shop{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}
.sf-shop a{display:flex;flex-direction:column;gap:.6rem;padding:1.75rem;border:1px solid rgb(255 255 255 / .16);border-radius:var(--radius);color:inherit;text-decoration:none;transition:border-color .2s,background .2s}
.sf-shop a:hover{border-color:rgb(255 255 255 / .5);background:rgb(255 255 255 / .04);color:#fff}
.sf-shop h3{font-family:var(--sans);font-weight:800;font-size:1.625rem;color:inherit}
.sf-shop p{color:var(--deep-2)}
.sf-shop a>span{margin-top:auto;padding-top:.75rem;font-weight:600}
.sf-dark+.sf-visit{padding-top:4.5rem}

.sf-visit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:2rem}
.sf-visit-grid h3,.sf-visit .policy-note>span{display:block;font-size:.875rem;font-weight:620;color:var(--ink-2);margin-bottom:.6rem}
.sf-visit .policy-note{display:block;margin:0;padding:0;border:0}
.sf-visit .policy-note p{color:var(--ink)}
.sf-visit .venue-contact{margin:0}
.sf-visit-grid>div>p:not(.fine){color:var(--ink)}
/* Map, email, phone and social links stand on their own, so each gets a tap target of at least 24px (WCAG 2.5.8), 32px in practice. */
.sf-visit-grid a,.sf-social a{display:inline-flex;align-items:center;min-height:2rem}

.sf-dock{display:none}
@media(max-width:900px){
  .sf .sf-book,.sf-chapter{grid-template-columns:1fr;gap:1.25rem;padding-top:3.5rem}
  .sf-rail{position:static}
  .sf .sf-book .shop-links{flex-direction:row;flex-wrap:wrap}
  .sf .sf-book .service-filter{flex-direction:row;overflow-x:auto;margin:0 -1.25rem;padding:0 1.25rem .25rem}
  .sf .sf-book .service-filter a{flex:none}
  .sf-days{margin:0 -1.25rem;padding:.25rem 1.25rem .5rem}
}
@media(max-width:760px){
  .sf-cover{min-height:86svh}
  .sf-cover:not(.has-photo){min-height:70svh}
  .sf-cover-inner{padding:6rem 1.25rem 2.25rem}
  .sf-actions .button{flex:1 1 auto;justify-content:center}
  .sf-facts{padding:0 1.25rem}
  .sf-facts li{flex:1 1 45%;padding:.875rem .75rem .875rem 0;font-size:.875rem}
  .sf-story.has-photo .sf-story-body{grid-template-columns:1fr}
  .sf-story-photo{aspect-ratio:4/3}
  .sf-chapter.sf-dark{padding:3.5rem 1.25rem;margin-top:3.5rem}
  .sf{padding-bottom:5rem}
  .sf-dock{position:fixed;left:.75rem;right:.75rem;bottom:calc(.75rem + env(safe-area-inset-bottom));z-index:20;display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:56px;padding:0 .5rem 0 1.25rem;border-radius:999px;background:var(--ink);color:#fff;text-decoration:none;box-shadow:0 14px 34px -10px rgb(0 0 0 / .45);animation:sf-rise .5s .6s var(--ease) both}
  .sf-dock span{font-size:.9375rem;color:#e8e1d8}
  .sf-dock strong{display:inline-flex;align-items:center;min-height:44px;padding:0 1.25rem;border-radius:999px;background:var(--rust);color:#fff;font-size:.9375rem}
  .sf-dock:hover{color:#fff}
}

/* Look and photos (console) */
.theme-grid{border:0;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem}
.theme-choice{position:relative;display:flex;align-items:center;gap:.75rem;margin:0;padding:.75rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer}
.theme-choice:has(input:checked){border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.theme-choice input{position:absolute;opacity:0;pointer-events:none}
.theme-choice:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
.theme-choice small{display:block;font-weight:400;color:var(--ink-2)}
.theme-swatch{display:flex;flex:none}
.theme-swatch i{width:18px;height:36px}
.theme-swatch i:first-child{background:var(--deep);border-radius:6px 0 0 6px}
.theme-swatch i:nth-child(2){background:var(--rust)}
.theme-swatch i:last-child{background:var(--rust-wash);border-radius:0 6px 6px 0}
.cover-grid{border:0;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem}
.cover-choice{position:relative;margin:0;gap:.4rem;cursor:pointer;font-weight:500}
.cover-choice input{position:absolute;opacity:0;pointer-events:none}
.cover-choice img,.cover-none{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--line)}
.cover-none{display:grid;place-items:center;background:var(--deep,#241a15);color:#f6efe6;font-family:var(--sans);font-weight:800;font-size:1.75rem}
.cover-choice:has(input:checked) img,.cover-choice:has(input:checked) .cover-none{outline:3px solid var(--ink);outline-offset:2px}
.cover-choice:has(input:focus-visible) img,.cover-choice:has(input:focus-visible) .cover-none{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
.photo-row{display:grid;grid-template-columns:96px 1fr;gap:1rem;align-items:center;margin-top:1rem}
.photo-row img,.photo-thumb{width:96px;aspect-ratio:3/2;object-fit:cover;border-radius:6px}
.photo-row label{margin:0}
.photo-upload input[type=file]{padding:.6rem}
.sf .sf-book .section-heading{display:block;margin:0}
.sf .slot{grid-template-columns:5rem minmax(0,1fr) auto}
.sf-days{scroll-padding-inline:1.25rem}
.sf-cover-photo{object-position:30% 55%}
@media(max-width:760px){
  .sf .slot{grid-template-columns:3.75rem minmax(0,1fr) auto}
  .sf .slot-time{font-size:1.125rem}
}
.try-app .sf-dock{display:none}
.try-app .sf{--bleed:0px}
.try-app .sf-facts,.try-app .sf-chapter.sf-dark{padding-left:1.25rem;padding-right:1.25rem}
.cover-grid .cover-choice{display:grid;align-content:start;grid-template-columns:minmax(0,1fr)}
@media(min-width:761px){.sf-cover.has-photo::after{background:linear-gradient(90deg,rgb(10 8 6 / .55) 0,rgb(10 8 6 / .18) 55%,rgb(10 8 6 / 0) 80%),linear-gradient(180deg,rgb(10 8 6 / .38) 0,rgb(10 8 6 / 0) 26%,rgb(10 8 6 / .1) 55%,rgb(10 8 6 / .7) 100%)}}

/* Session booking page (/b/<venue>/book/<time>): the storefront's cover as a band, the time set large, a raised details panel */
.public-app:has(.bk){overflow-x:clip;container:booking-page / inline-size}
.bk{--bleed:0px}
.bk-head{position:relative;isolation:isolate;margin:0 var(--bleed);display:flex;align-items:flex-end;min-height:min(46svh,440px);background:var(--deep);color:var(--deep-ink);overflow:hidden}
.bk-head-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:30% 55%;z-index:-2;animation:sf-settle 1.4s var(--ease) both}
.bk-head.has-photo::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgb(10 8 6 / .5) 0,rgb(10 8 6 / .25) 35%,rgb(10 8 6 / .78) 100%)}
.bk-head-inner{width:100%;max-width:1040px;margin:0 auto;padding:6rem 1.25rem 2.5rem;animation:sf-rise .7s var(--ease) both}
.public-app .bk-head .crumb{display:inline-flex;align-items:center;gap:.35rem;margin:0 0 1.25rem;padding:.4rem .8rem;border:1px solid rgb(255 255 255 / .28);border-radius:999px;color:var(--deep-ink);font-size:.875rem;text-decoration:none;background:rgb(0 0 0 / .12)}
.public-app .bk-head .crumb:hover{border-color:#fff;color:#fff}
.bk-venue{font-size:.9375rem;opacity:.85}
.public-app .bk-head h1{color:inherit;font-size:clamp(2.25rem,6vw,4.25rem);line-height:1;letter-spacing:-.03em;margin:.5rem 0 0;max-width:18ch}
.bk-when{display:flex;align-items:center;gap:1.25rem;margin-top:1.5rem}
.bk-time{font-family:var(--sans);font-weight:800;font-size:clamp(2.5rem,5vw,3.5rem);line-height:1;letter-spacing:-.02em;padding-right:1.25rem;border-right:1px solid rgb(255 255 255 / .3)}
.bk-day{font-size:1.0625rem;font-weight:560;line-height:1.35}
.bk-day span{font-weight:400;opacity:.8;font-size:.9375rem}
.public-app:has(.bk-head) .topbar{position:absolute;inset:0 0 auto;z-index:5;background:none;border:0}
.public-app:has(.bk-head) .venue-brand{color:var(--deep-ink)}
.public-app:has(.bk-head) .venue-brand .venue-mark{background:rgb(255 255 255 / .16);color:#fff;border:1px solid rgb(255 255 255 / .3)}

.public-app .bk-body{max-width:1040px;margin:0 auto;padding:2.5rem 1.25rem 0}
.bk .booking{grid-template-columns:minmax(0,1fr) minmax(0,27rem);gap:2.5rem 4rem}
.bk .bk-panel{margin-top:-9rem;position:sticky;top:1.25rem;z-index:3;border:0;border-radius:16px;padding:1.75rem;box-shadow:0 30px 60px -24px rgb(20 14 10 / .35),0 2px 8px rgb(20 14 10 / .06)}
.bk .bk-panel>h2{font-size:1.625rem;margin-bottom:1.25rem}
.bk .bk-panel input:not([type=checkbox]):not([type=radio]){min-height:52px;font-size:1.0625rem}
.public-app .bk .booking-form form button.wide{min-height:56px;font-size:1.0625rem;border-radius:12px}
.bk .places{font-size:1rem;margin:0}
.bk-notes{margin:1rem 0 0;display:grid;gap:.5rem}
.bk-notes .minimum{margin:0;padding:.875rem 1rem;border:1px solid var(--line);border-left:0;border-radius:var(--radius-sm);background:var(--surface);font-size:.9375rem;color:var(--ink-2);display:flex;gap:.75rem}
.bk-notes .minimum::before{content:"";flex:none;width:8px;height:8px;margin-top:.45rem;border-radius:50%;background:var(--amber)}
.bk-notes .minimum.is-on::before{background:var(--sage)}
.bk-notes .minimum.is-on{color:var(--ink)}
.bk .option-picker{margin:2rem 0 0}
.bk .option-picker h2,.bk .cart h2{font-family:var(--sans);font-weight:800;font-size:1.5rem;letter-spacing:-.015em;margin:0 0 .75rem}
.bk .options{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));gap:.75rem}
.bk .option{min-height:88px;padding:1rem 1.125rem;border-radius:12px;align-content:center;transition:border-color .16s,transform .16s var(--ease)}
.bk a.option:hover{border-color:var(--ink);transform:translateY(-2px);color:var(--ink)}
.bk .option strong{font-family:var(--sans);font-weight:800;font-size:1.25rem;letter-spacing:-.01em}
.bk .cart{margin-top:2rem}
.bk .cart-lines li{padding:.875rem 0}
.bk .booking-summary .quote{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1.125rem 1.25rem;margin-top:2rem}
.bk .booking-summary .quote div:last-child dd strong{font-family:var(--sans);font-weight:800;font-size:1.5rem}
.bk-policy{margin-top:2rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.bk-policy>summary{display:flex;align-items:center;justify-content:space-between;min-height:56px;font-weight:600;font-size:.9375rem;cursor:pointer;list-style:none}
.bk-policy>summary::-webkit-details-marker{display:none}
.bk-policy>summary::after{content:"+";font-size:1.25rem;font-weight:400;color:var(--ink-3)}
.bk-policy[open]>summary::after{content:"−"}
.bk-policy p{margin:0 0 1rem;max-width:60ch}
.bk-head:not(.has-photo)+.bk-body .bk-panel{margin-top:-5rem}
.bk-head:not(.has-photo){min-height:0}
.bk-head:not(.has-photo) .bk-head-inner{padding-bottom:6.5rem}
@media(max-width:900px){
  .bk-head:not(.has-photo) .bk-head-inner{padding-bottom:1.75rem}
  .bk .booking{grid-template-columns:1fr;gap:1.5rem}
  .bk .bk-panel,.bk-head:not(.has-photo)+.bk-body .bk-panel{margin-top:0;position:static;box-shadow:0 18px 40px -22px rgb(20 14 10 / .3);padding:1.25rem}
  .bk-head{min-height:auto}
  .bk-head-inner{padding:5rem 1.25rem 1.75rem}
  .bk-when{gap:1rem;margin-top:1.125rem}
  .bk-time{padding-right:1rem}
  .public-app .bk-body{padding-top:1.5rem}
}
@media(prefers-reduced-motion:reduce){.bk-head-photo,.bk-head-inner{animation:none}}
/* Use the actual layout width as well as the viewport: CSS zoom can leave media queries at desktop widths. */
@container booking-page (max-width:900px){
  .bk .booking{grid-template-columns:1fr;gap:1.5rem}
  .bk .bk-panel,.bk-head:not(.has-photo)+.bk-body .bk-panel{margin-top:0;position:static;box-shadow:0 18px 40px -22px rgb(20 14 10 / .3);padding:1.25rem}
  .bk-head{min-height:auto}
  .bk-head-inner,.bk-head:not(.has-photo) .bk-head-inner{padding:5rem 1.25rem 1.75rem}
  .bk .bk-body{padding-top:1.5rem}
}
@container booking-page (max-width:480px){
  .public-app:has(.bk-head) .topbar{position:relative;background:var(--deep)}
  .bk-head-inner,.bk-head:not(.has-photo) .bk-head-inner{padding-top:1.75rem}
  .bk-when{display:grid;grid-template-columns:minmax(0,1fr);gap:.75rem}
  .bk-time{padding-right:0;border-right:0}
  .bk-day{max-width:100%}
}
.bk .booking>*{min-width:0}

/* Announcement bar, logo, quick-book times, FAQs (src/venue-brand.js) */
.announce{position:relative;z-index:6;margin:0;min-height:2.5rem;display:flex;align-items:center;justify-content:center;padding:.5rem 1.25rem;background:var(--rust);color:#fff;font-size:.875rem;font-weight:560;text-align:center;line-height:1.35}
.public-app:has(.announce):has(.sf-cover) .topbar,.public-app:has(.announce):has(.bk-head) .topbar{top:var(--announce-h,2.5rem)}
.public-app:has(.announce){--announce-h:2.5rem}
.venue-logo{width:auto;height:36px;max-width:120px;object-fit:contain;border-radius:6px}
.public-app:has(.sf-cover) .venue-logo,.public-app:has(.bk-head) .venue-logo{filter:drop-shadow(0 1px 6px rgb(0 0 0 / .35))}
.sf-quick{list-style:none;margin:1rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.625rem}
.sf-quick a{display:grid;gap:.1rem;min-width:7.5rem;padding:.7rem 1rem;border-radius:12px;background:rgb(255 255 255 / .12);border:1px solid rgb(255 255 255 / .28);color:var(--deep-ink);text-decoration:none;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:background .16s,border-color .16s,transform .16s var(--ease)}
.sf-quick a:hover{background:rgb(255 255 255 / .2);border-color:#fff;color:#fff;transform:translateY(-2px)}
.sf-quick strong{font-family:var(--sans);font-weight:800;font-size:1.375rem;line-height:1.1}
.sf-quick span{font-size:.8125rem;opacity:.85}
.sf-cover .sf-next+.sf-quick{margin-top:.75rem}
.sf-faq details{border-bottom:1px solid var(--line)}
.sf-faq details:first-child{border-top:1px solid var(--line)}
.sf-faq summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:60px;padding:.75rem 0;font-family:var(--sans);font-weight:800;font-size:1.25rem;letter-spacing:-.01em;cursor:pointer;list-style:none}
.sf-faq summary::-webkit-details-marker{display:none}
.sf-faq summary::after{content:"+";flex:none;font-family:var(--sans);font-size:1.375rem;color:var(--ink-3);transition:transform .2s var(--ease)}
.sf-faq details[open] summary::after{transform:rotate(45deg)}
.sf-faq details p{margin:0 0 1.25rem;max-width:62ch;color:var(--ink-2);font-size:1.0625rem;line-height:1.6}
.sf-links{display:flex;flex-wrap:wrap;gap:.5rem 1rem}
.logo-now{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}
.logo-now img{height:64px;width:auto;max-width:200px;object-fit:contain;padding:.5rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--sunk)}
.logo-now form{margin:0}
.faq-row{border:0;padding:0;margin:0 0 .5rem}
.faq-row+.faq-row{padding-top:1rem;border-top:1px solid var(--line)}
@media(max-width:760px){
  .sf-cover{min-height:auto}
  .sf-cover:not(.has-photo){min-height:auto}
  .sf-cover.has-photo .sf-cover-inner{padding-top:9rem}
  .sf-quick{flex-wrap:nowrap;overflow-x:auto;margin-right:-1.25rem;padding-right:1.25rem;scrollbar-width:none}
  .sf-quick li{flex:none}
  .sf-actions{margin-top:1.25rem}
  .sf-lead{margin-top:.875rem}
  .announce{font-size:.8125rem}
}
@media(prefers-reduced-motion:reduce){.sf-quick a{transition:none}}
@media(max-width:760px){.announce{height:2.5rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5rem}}

/* Sign-in (/login): one calm card, the Google button full width on a phone. */
.signin{margin-top:clamp(1.5rem,6vw,4rem)}
.signin h1{margin-bottom:.5rem}
.signin .signin-google{display:flex;align-items:center;justify-content:center;gap:.6rem;width:100%;min-height:48px;margin:1.25rem 0 .75rem}
.signin .signin-google svg{flex:none}
.signin .signin-links a{color:var(--rust-ink)}
/* Find a sauna: the 2026 report (src/sauna-directory-report.js) */
.dir-report{max-width:820px}
.dir-report section{margin-top:2rem}
.dir-report h2{margin-bottom:8px}
.dir-report section>p{max-width:42rem;color:var(--ink-2)}
.dir-table caption{caption-side:top;text-align:left;font-size:14px;color:var(--ink-2);padding:12px}
.dir-table td{font-family:inherit;font-variant-numeric:tabular-nums}
.dir-table th[scope=row]{font-size:14px;font-weight:500;color:var(--ink);background:none;border-bottom:1px solid var(--line);padding:12px}
.dir-table tfoot th,.dir-table tfoot td{font-weight:620}
.dir-cite code{display:block;white-space:normal;padding:12px 16px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:14px;user-select:all}

/* Focus on the dark surfaces of public pages (cover, booking head, dark chapters, the bar over them): the brand's amber ring
   (docs/brand-standard.md 3.13) with a --deep band either side, so it holds whatever the cover photo shows behind it.
   test/booking-ux.test.js checks each theme. */
.sf-cover :focus-visible,.bk-head :focus-visible,.sf-dark :focus-visible,.public-app:has(.sf-cover) .topbar :focus-visible,.public-app:has(.bk-head) .topbar :focus-visible{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--deep),0 0 0 7px var(--deep)}

/* Phones: the next three free times fit side by side in the first screen instead of scrolling off the edge. */
@media(max-width:480px){
  .sf-quick{gap:.5rem;margin-right:0;padding-right:0}
  .sf-quick li{flex:1 1 0;min-width:0}
  .sf-quick a{min-width:0;min-height:56px;padding:.6rem .7rem}
  .sf-quick strong{font-size:1.25rem}
  .sf-quick span{font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}

/* Booking form errors: a summary linked to each field, and a line under each label. */
.error-summary{margin:0 0 1.25rem;padding:1rem 1.125rem;border:2px solid var(--red);border-radius:var(--radius-sm);background:var(--red-wash);color:#7a1f14}
.error-summary:focus{outline:2px solid var(--red);outline-offset:2px}
.error-summary h3{margin:0 0 .5rem;font-size:1rem;font-weight:700;color:#7a1f14}
.error-summary ul{margin:0;padding-left:1.1rem}
.error-summary li+li{margin-top:.25rem}
.error-summary a{color:#7a1f14;font-weight:600}
.field-error{display:block;margin:.25rem 0 .35rem;font-size:.875rem;font-weight:600;color:var(--red)}
input[aria-invalid="true"]{border-color:var(--red);border-width:2px}

/* Phones: the total and Continue stay at the bottom of the screen, so paying never means hunting for the button. */
.bk-paybar{display:none}
@media(max-width:900px){
  .bk:has(.bk-paybar){padding-bottom:5.5rem}
  html:has(.bk-paybar){scroll-padding-bottom:6rem}
  .bk-paybar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line);box-shadow:0 -8px 24px -12px rgb(31 26 23 / .18)}
  .bk-paybar p{margin:0;display:grid;line-height:1.2}
  .bk-paybar span{font-size:.8125rem;color:var(--ink-2)}
  .bk-paybar strong{font-size:1.25rem}
  .bk-paybar button{min-height:48px;padding:0 1.75rem;margin:0}
}
@media print{.bk-paybar{display:none}}

/* The quiet Olladay line at the foot of venue pages (src/growth-link.js). */
.public-app .site-footer .growth-link{display:inline-flex;align-items:center;min-height:44px;font-size:.8125rem;color:var(--ink-3);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px}
.public-app .site-footer .growth-link:hover{color:var(--ink);text-decoration-color:currentColor}
@media(min-width:901px){.sf .sf-book{grid-template-columns:18.5rem minmax(0,1fr)}}
/* Links that stand on their own line get a 44px tap height, like every other control. */
.sf-social a,.sf-visit-grid p>a,.quote dd>a,.launch-step a{display:inline-flex;align-items:center;min-height:44px}
.public-app .bk-head .crumb{min-height:44px}
/* Session booking page refinements: quiet status lines, one price per length card, the fee said once. */
.bk-notes{margin:0;gap:.375rem}
.bk-notes .minimum{padding:0;border:0;background:none;align-items:baseline}
.bk-notes .minimum::before{margin-top:0;transform:translateY(-1px)}
.bk .option{gap:.125rem;align-content:start}
.bk .option .option-price{font-size:1.0625rem;font-weight:650;color:var(--ink);margin-bottom:.125rem}
.bk .option.is-full .option-price{color:var(--ink-3)}
.bk .option-fee{margin:.625rem 0 0}
.bk .cart.is-updating{opacity:.6;transition:opacity .15s}

/* Diary: a small fill bar beside each time, so a full day and a quiet one look different at a glance. */
.diary-fill{width:72px;height:6px}
.diary-fill::-webkit-progress-value{background:var(--rust)}
.diary-fill::-moz-progress-bar{background:var(--rust)}
@media (max-width:480px){.diary-fill{width:44px}}
/* Report figures: with five or more, use even rows of up to four so none is left on its own. */
@media (min-width:900px){.figures:has(> :nth-child(5)){grid-template-columns:repeat(4,minmax(0,1fr))}}
/* Pages without the console (sign in): logo, card and footer share one column. */
.no-shell .topbar-inner,.no-shell .site-footer{max-width:640px}
/* Diary rows sit inside .card, whose list rule pads every li and drops the last one's border. */
.card .diary-slot,.card .diary-slot:last-child{padding:0;border:1px solid var(--line)}
/* Storefront timetable, one day at a time (?day=). A sauna day runs eight to fourteen times, so each is a tile in a grid, split
   into morning, afternoon and evening: the time large, then what's left. Low places are ember ink; a price shows on a tile only
   when it differs from the day's usual one. The day shown takes the venue's dark colour in the strip. */
.sf-days{scroll-margin-top:1rem}
.sf .sf-day .slot-day{position:static;margin-top:1.25rem;padding-bottom:.25rem;border:0;font-size:1.25rem;font-weight:800;letter-spacing:-.015em}
.sf-day-sum{margin:0 0 .25rem;color:var(--ink-2);font-size:.9375rem}
.sf-day{animation:sf-day-in .36s cubic-bezier(.16,1,.3,1)}
.sf-part{margin-top:1.25rem}
.sf-part h3{margin:0 0 .6rem;font-size:.875rem;font-weight:620;color:var(--ink-2)}
.sf .sf-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(7.25rem,1fr));gap:.5rem}
.sf .sf-tiles li{border:0}
.sf .slot.sf-tile{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;min-height:84px;margin:0;padding:.75rem .875rem;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);transition:border-color .16s,transform .2s var(--ease),background .16s}
.sf .slot.sf-tile:hover{border-color:var(--ink);background:var(--surface);transform:translateY(-2px)}
.sf .sf-tile .slot-time{font-family:var(--sans);font-weight:800;font-size:1.375rem;line-height:1.1;letter-spacing:-.02em}
.sf-tile .slot-name{font-size:.8125rem;font-weight:600;line-height:1.25;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sf-tile .slot-left{margin-top:auto;font-size:.875rem;font-weight:600;color:var(--ink-2)}
.sf-tile.is-low .slot-left{color:var(--rust-ink)}
.sf-tile .slot-price{font-size:.875rem;font-weight:700;color:var(--ink)}
.sf-tile.is-deal .slot-price:not(.visually-hidden){display:inline-flex;align-self:flex-start;margin-top:.15rem;padding:.05rem .45rem;border-radius:999px;background:var(--rust-wash);color:var(--rust-ink);font-size:.8125rem}
.sf-tile .slot-note{font-size:.8125rem;color:var(--ink-2)}
.slot-badges{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.25rem}
.slot-badge{display:inline-block;padding:.0625rem .375rem;border-radius:999px;font-size:.75rem;font-weight:600;line-height:1.35;background:var(--rust-wash);color:var(--ink)}
.slot-badge.is-tide{background:color-mix(in oklab,var(--sage) 14%,var(--surface));color:var(--ink)}
.sf-sea{margin:0 0 .5rem;font-size:.875rem;color:var(--ink-2)}
.sf-tide-note{margin:.5rem 0 0;color:var(--ink-2)}
.sf .slot.sf-tile.is-full{background:transparent;border-style:dashed;color:var(--ink-3)}
.sf .slot.sf-tile.is-full .slot-time{color:var(--ink-3);text-decoration:line-through;text-decoration-thickness:2px;text-decoration-color:color-mix(in srgb,var(--ink-3) 60%,transparent)}
.sf .slot.sf-tile.is-full .slot-left,.sf .slot.sf-tile.is-full .slot-note{color:var(--ink-3)}
.sf .slot.sf-tile.is-full:hover{border-color:var(--ink-3)}
.sf-next-day{display:flex;justify-content:space-between;align-items:center;gap:.25rem 1rem;flex-wrap:wrap;margin-top:1.5rem;padding:1rem 1.25rem;min-height:56px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);font-weight:700;text-decoration:none;transition:border-color .16s}
.sf-next-day>span{font-weight:500;color:var(--ink-2)}
.sf-next-day:hover{border-color:var(--ink);color:var(--ink)}
.sf-next-day:hover>span{color:var(--ink)}
.sf-days a[aria-current]{background:var(--deep);border-color:var(--deep);color:var(--deep-ink);transform:none}
.sf-days a[aria-current] span,.sf-days a[aria-current] small,.sf-days a[aria-current] strong{color:var(--deep-ink)}
.sf-days a[aria-current]:focus-visible{outline-color:var(--deep);outline-offset:3px}
@keyframes sf-day-in{from{opacity:.4;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.sf-day{animation:none}.sf .slot.sf-tile:hover{transform:none}}
.sf-card dd{font-variant-numeric:normal}
@media(max-width:760px){
  .sf .sf-tiles{grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem}
  .sf .slot.sf-tile{min-height:76px;padding:.6rem .55rem;border-radius:10px}
  .sf .sf-tile .slot-time{font-size:1.125rem;letter-spacing:-.025em}
  .sf-tile .slot-left,.sf-tile .slot-note{font-size:.8125rem}
  .sf-tile .slot-note{font-size:.75rem;line-height:1.2}
  .sf-tile.is-deal .slot-price:not(.visually-hidden){font-size:.75rem;padding:.05rem .35rem}
  .sf-tile .slot-from{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}
@media(max-width:350px){.sf .sf-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* Your businesses: adding a second business is one quiet button until it’s wanted. */
.add-business{margin-top:1.5rem}
.add-business>summary{width:auto}
.add-business[open]>summary{margin-bottom:1rem}
.highlight-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr))}
/* One block per service inside a form (Minimum to run): a rule between them so each service reads as its own group. */
.panel-body form>fieldset:not(.checks)+fieldset:not(.checks){margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--line)}
.panel-body form>fieldset:not(.checks)>legend{font-size:1rem;margin-bottom:.75rem}
/* A choice that needs no amount hides the amount field that follows it. */
fieldset.choices:has(input[data-hides-next]:checked)+label{display:none}
.detail-top{justify-content:flex-end}
.button-row a.button.secondary[aria-current=page]{background:var(--ink);border-color:var(--ink);color:#fff}
/* New pack or membership: only the fields that apply to the type chosen. */
form:has(select[data-pass-kind] option[value=membership]:checked) label:has(>input[name=sessions]),
form:has(select[name=renews] option:not([value=""]):checked) label:has(>input[name=validDays]){display:none}

/* Sauna-native booking: "Have a sauna pass?" on the cover, one card per time with a shared seat or the whole sauna, and the
   health terms as one tick box right above the pay button. */
.sf-pass{margin:1rem 0 0}
.sf-pass-pill{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:0 1rem;border-radius:999px;border:1px solid rgb(255 255 255 / .55);background:rgb(255 255 255 / .1);color:var(--deep-ink);font-size:.9375rem;font-weight:600;text-decoration:none}
.sf-pass-pill:hover{background:rgb(255 255 255 / .2);border-color:#fff;color:#fff}
.sf-pass-pill[aria-current]{background:var(--deep-ink);color:var(--deep);border-color:var(--deep-ink)}
.sf-pass-note{margin:0 0 1rem}
.sf .sf-tiles li.sf-pair-item{grid-column:span 2}
.sf-pair{display:grid;gap:.5rem;height:100%;padding:.75rem;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.sf-pair-when{display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .5rem;margin:0 0 .125rem}
.sf-pair-when .slot-time{font-family:var(--sans);font-weight:800;font-size:1.375rem;line-height:1.1;letter-spacing:-.02em}
.sf-pair-end{font-weight:600;color:var(--ink-2);margin-left:-.5rem}
.sf-pair-when .slot-name{flex-basis:100%;font-size:.8125rem;font-weight:600}
.sf-pair-when .slot-note{flex-basis:100%;font-size:.8125rem;color:var(--ink-2)}
.sf .sf-pair-act{display:grid;gap:.05rem;min-height:52px;margin:0;padding:.55rem .75rem;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);color:var(--ink);text-decoration:none;transition:border-color .16s,background .16s}
.sf .sf-pair-act strong{font-size:.9375rem;font-weight:700}
.sf .sf-pair-act span:not(.visually-hidden){font-size:.8125rem;color:var(--ink-2)}
.sf a.sf-pair-act:hover{border-color:var(--ink);background:var(--sunk)}
.sf a.sf-pair-whole{border-color:var(--ink);background:var(--ink);color:var(--paper)}
.sf a.sf-pair-whole span:not(.visually-hidden){color:color-mix(in srgb,var(--paper) 82%,transparent)}
.sf a.sf-pair-whole:hover{background:color-mix(in srgb,var(--ink) 88%,var(--paper));border-color:var(--ink)}
.sf .sf-pair-act.is-off,.sf .sf-pair-act.is-full{border-style:dashed;background:transparent;color:var(--ink-3)}
.sf .sf-pair-act.is-off span:not(.visually-hidden){color:var(--ink-3)}
@media(max-width:40rem){.sf .sf-tiles li.sf-pair-item{grid-column:1/-1}}
@media(prefers-reduced-motion:reduce){.sf .sf-pair-act{transition:none}}
.waiver-agree{margin:.25rem 0 1rem;padding:.25rem .875rem;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--sunk)}
.waiver-agree label{margin:0}
.waiver-agree a{color:var(--rust-ink)}
.pass-forget{margin:.5rem 0 0}
.pass-forget .text-button{min-height:44px;padding:0;border:0;background:none;color:var(--rust-ink);font:inherit;font-size:.875rem;text-decoration:underline;cursor:pointer;width:auto!important}
.public-app .pass-redeem .pass-forget button[type=submit]{background:none;border:0;min-height:44px}
.terms-text p{white-space:normal;color:var(--ink)}
.sf .slot.sf-pair-act{grid-template-columns:1fr;align-items:start;justify-items:start;gap:.05rem;transform:none}


/* Flash fill (src/flash-fill.js): the last-minute club below the timetable, the banner on a flash link, and the owner's settings. */
.sf-club .lead{max-width:40ch}
.sf-club .club-form{max-width:32rem;margin-top:1rem}
.flash-banner{margin:0 0 1.25rem;padding:.875rem 1.25rem;border-radius:16px;background:var(--rust-wash);color:var(--ink);display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .875rem;font-size:1rem}
.flash-banner strong{color:var(--rust);font-weight:700}
.flash-banner span{color:var(--ink-2)}
.flash-banner .flash-meta{flex-basis:100%}
.flash-banner time{font-variant-numeric:tabular-nums;color:var(--ink);font-weight:600}
.flash-form:has(input[name=condition][value=started]:checked) .flash-days{display:none}
.flash-form:has(input[name=offer][value=pair]:checked) .flash-percent{display:none}

/* "Add to your session": one-tap add-on cards above the health terms and the pay button. A swipeable row on phones, a wrap on
   wide screens. A card that is added gets the cedar border and a warm tint. */
.addons{margin:.25rem 0 1rem}
.addons h3{margin:0 0 .5rem;font-size:1rem}
.addon-cards{display:flex;gap:.5rem;margin:0;padding:0 0 .25rem;list-style:none;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.addon-card{flex:0 0 min(15rem,78%);scroll-snap-align:start;display:grid;align-content:space-between;gap:.35rem;padding:.75rem;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface)}
.addon-card.is-added{border:2px solid #c86d3b;padding:calc(.75rem - 1px);background:#fff3ea}
.addon-title{display:flex;align-items:baseline;gap:.4rem;font-size:.9375rem;line-height:1.3}
.addon-icon{font-size:1.125rem}
.addon-price{font-size:.8125rem;color:var(--ink-2)}
.addon-act{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.25rem}
.addon-act .addon-toggle{min-height:44px;width:auto;padding:0 .9rem;border-radius:999px;font-size:.875rem;font-weight:700;background:var(--surface);color:var(--ink);border:1px solid var(--line-strong)}
.addon-act .addon-toggle:hover{background:var(--sunk);border-color:var(--ink-3);color:var(--ink)}
.addon-card.is-added .addon-toggle{background:transparent;border-color:#c86d3b;color:var(--rust-ink)}
.addon-out{font-size:.8125rem;color:var(--ink-3)}
@media(min-width:48rem){.addon-cards{flex-wrap:wrap;overflow:visible}.addon-card{flex:1 1 13rem}}
.addon-settings .row-main .addon-icon{margin-right:.25rem}
.addon-price-form{display:flex;align-items:flex-end;gap:.5rem}
.addon-price-form label{margin:0;max-width:7.5rem}
.addon-switch[aria-pressed="true"]{background:var(--sage);border-color:var(--sage);color:#fff}
/* Split-pay private hire: the organiser's choice, the lobby's seats and the share buttons (src/split-pay.js). */
.split-size{display:flex;flex-wrap:wrap;gap:.5rem;align-items:end;margin:.75rem 0 0}
.split-size label{flex:1 1 14rem}
.split-consent{margin:1rem 0 .5rem}
.split-lobby h2{font-size:1.125rem;margin:1.25rem 0 .5rem}
.split-countdown{font-size:1.0625rem}
.split-seats{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.split-seat{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;min-height:44px;padding:.5rem .75rem;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.split-seat.is-paid{background:var(--rust-wash)}
.split-seat-no{font-weight:620;min-width:4.5rem}
.split-tick{color:var(--sage);font-weight:800}
.split-share{display:grid;gap:.5rem;margin:1.25rem 0 0}
.split-receipt,.split-diary{margin:1rem 0}
.public-app .bk>.split-lobby{max-width:720px;margin:0 auto;padding:2rem 1.25rem 0;box-shadow:none}
.public-app .split-lobby h1{font-size:clamp(1.875rem,6vw,2.75rem);line-height:1.1}
.public-app .split-lobby .notice{margin:1rem 0}
.public-app .split-seat,.public-app .split-seat:last-child{padding:.5rem .875rem;border-bottom:1px solid var(--line)}
.public-app .split-seat .fine{margin:0}
.public-app .split-seat-no{min-width:4rem}
.split-share input{min-height:48px}
.split-share label{margin-top:.5rem}
.bk>.split-lobby~.bk-panel{max-width:720px;margin:2rem auto 0;position:static}
@media(min-width:901px){.public-app .bk>.split-lobby~.bk-panel{max-width:calc(720px - 2.5rem)}}
@media(max-width:900px){.bk>.split-lobby~.bk-panel{margin:2rem 0 0}.bk>.split-lobby~.bk-panel::before{content:none}}
/* Directory SEO engine: prices table, swimmer alerts, conditions card (docs/directory-seo.md) */
.dir-prices,.dir-gifts,.dir-conditions{margin-top:48px}
.dir-prices h2,.dir-gifts h2,.dir-conditions h2{margin:0 0 12px}
.dir-table{width:100%;border-collapse:collapse;font-size:16px}
.dir-table th,.dir-table td{padding:12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.dir-table thead th{font-size:14px;font-weight:600;color:var(--ink-2)}
.dir-table th[scope=row]{font-size:14px;font-weight:600;width:40%}
.dir-alert{display:grid;gap:12px;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--card-shadow);max-width:40rem}
@media (min-width:720px){.dir-alert{padding:24px}}
.dir-alert h3{margin:0}
.dir-alert p{margin:0}
.dir-alert label{margin:0}
.dir-alert fieldset{border:0;padding:0;margin:0}
.dir-alert .choice-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin:0}
.dir-alert label.choice span{min-height:44px;padding:0 16px;border-color:var(--line-control);border-radius:999px;font-size:14px;font-weight:600;text-align:center}
.dir-alert button{justify-self:start}
.dir-conditions{padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--card-shadow)}
@media (min-width:720px){.dir-conditions{padding:24px}}
.dir-conditions h2{margin-top:0}
.dir-badge-page textarea{width:100%;font-size:14px}
.dir-badge-form{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:16px 0 24px}
.dir-badge-form label{margin:0}
.dir-badge-page h2{margin:48px 0 12px}

/* Dip card (src/dip-card.js, src/dip-card-image.js): the story PNG itself, phone-sized and centred, with the share buttons under
   it on the first screen of a phone. */
.dip-page { max-width: 440px; margin: 16px auto 40px; padding: 0 16px; display: grid; justify-items: center; gap: 16px; }
.public-app .dip-page h1.dip-heading { margin: 0; font-size: 1.375rem; line-height: 1.2; text-align: center; }
.dip-card { margin: 0; height: clamp(420px, calc(100dvh - 260px), 680px); aspect-ratio: 9 / 16; max-width: 100%; border-radius: 28px; overflow: hidden; background: #0d1b22; box-shadow: 0 0 0 1px rgba(13,27,34,.08), 0 28px 56px -24px rgba(13,27,34,.5); }
.dip-card img { display: block; width: 100%; height: 100%; object-fit: cover; }
@media (prefers-reduced-motion: no-preference) { .dip-card { animation: dip-in .7s cubic-bezier(.32,.72,0,1) both; } @keyframes dip-in { from { opacity: 0; transform: translateY(10px) scale(.985); } } }
.dip-actions { display: grid; gap: 10px; width: 100%; max-width: 380px; }
.dip-actions button, .dip-actions .button { width: 100%; justify-content: center; text-align: center; }
.dip-actions button:active, .dip-actions .button:active { transform: scale(.97); transition: transform .1s ease-out; }
.dip-actions .fine { text-align: center; min-height: 1.4em; margin: 0; }
.standby .standby-auto { border-color: var(--rust); }
/* "Nordic tactile" booking pages (DESIGN.md, booking-page tokens). Warm steam background, white cards with a sand border, deep
   slate headings, cedar for the main action and emerald for live availability. A venue that picked its own theme keeps its accent:
   only the default (ember) theme takes cedar. Text shades are the darker "-ink" ones so every pairing passes WCAG AA. */
.public-app{--steam:#faf6f0;--card-line:#e6dec8;--slate:#0d1b22;--cedar:#d96b27;--cedar-ink:#b3531a;--cedar-hover:#9a4210;--emerald:#16a34a;--emerald-ink:#15803d;--cap-low:#d08a00;--cap-off:#b9b0a5;--action:var(--rust);--action-hover:var(--rust-hover)}
.public-app.theme-ember{--rust:#b3531a;--rust-hover:#9a4210;--rust-ink:#9a4210;--rust-wash:#fbe9dc;--rust-line:#f2c9a8;--action:var(--cedar-ink);--action-hover:var(--cedar-hover)}
body.public-app{background:var(--steam)}
.public-app .sf-book h2,.public-app .slot-day,.public-app .bk-panel>h2,.public-app .sf-rail h2{color:var(--slate)}
.public-app .sf-pair,.public-app .sf-tile,.public-app .bk-panel,.public-app .sf-card{border-color:var(--card-line);background:#fff}
.public-app .sf-primary,.public-app .sf-seat-go,.public-app .bk-paybar button,.public-app .booking-form form button.wide{background:var(--action);border-color:var(--action);color:#fff}
.public-app .sf-primary:hover,.public-app .sf-seat-go:hover,.public-app .bk-paybar button:hover,.public-app .booking-form form button.wide:hover{background:var(--action-hover);border-color:var(--action-hover);color:#fff}

/* The 14-day ribbon: thumb-scrollable, one capacity dot per day with its meaning in words for screen readers. */
.sf-ribbon{margin:0 0 .5rem}
.sf-ribbon ul{position:relative;list-style:none;margin:0;padding:.25rem 0 .5rem;display:flex;gap:.5rem;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;overscroll-behavior-x:contain}
.sf-ribbon ul::-webkit-scrollbar{display:none}
.sf-ribbon li{flex:none;scroll-snap-align:start}
.sf-rday{display:grid;justify-items:center;gap:.15rem;width:4.25rem;min-height:4.75rem;padding:.6rem 0 .55rem;border:1px solid var(--card-line);border-radius:14px;background:#fff;color:var(--slate);text-decoration:none;transition:border-color .16s,transform .16s var(--ease)}
.sf-rday:hover{border-color:var(--slate);color:var(--slate);transform:translateY(-2px)}
.sf-rday-name{font-size:.75rem;font-weight:600;color:var(--ink-2)}
.sf-rday strong{font-weight:800;font-size:1.375rem;line-height:1.1;font-variant-numeric:tabular-nums}
.sf-rday[aria-current=date]{background:var(--slate);border-color:var(--slate);color:#fff}
.sf-rday[aria-current=date] .sf-rday-name{color:#d9e2e6}
.sf-rday.is-off:not([aria-current]){background:transparent}
.sf-rday.is-off:not([aria-current]) strong{color:var(--ink-3)}
.cap-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--cap-off)}
.is-plenty .cap-dot,.cap-dot.is-plenty{background:var(--emerald)}
.is-low .cap-dot,.cap-dot.is-low{background:var(--cap-low)}
.is-full .cap-dot,.cap-dot.is-full{background:var(--cap-off)}
.sf-rday[aria-current=date] .cap-dot{box-shadow:0 0 0 2px var(--slate),0 0 0 3px #fff}
.sf-rlater strong{font-size:1.125rem}
.sf-ribbon-key{display:flex;flex-wrap:wrap;gap:.25rem 1rem;margin:.25rem 0 0;font-size:.75rem;color:var(--ink-2)}
.sf-ribbon-key span{display:inline-flex;align-items:center;gap:.35rem}
.sf-day[aria-busy=true]{opacity:.55;transition:opacity .12s}
.sf-day-empty{margin-top:1rem}
@media(max-width:900px){.sf-ribbon ul{margin:0 -1.25rem;padding:.25rem 1.25rem .5rem;scroll-padding-inline:1.25rem}}

/* Seat dots beside "4 of 6 seats left": filled for free seats, hollow for taken ones. The words carry the meaning. */
.seat-dots{display:inline-flex;flex-wrap:wrap;gap:3px;margin-right:.4rem;vertical-align:middle}
.seat-dots i{width:7px;height:7px;border-radius:50%;border:1.5px solid var(--emerald-ink);box-sizing:border-box}
.seat-dots i.is-free{background:var(--emerald);border-color:var(--emerald)}
.sf-tile .slot-left .seat-dots{display:flex;margin:0 0 .2rem}
.sf-seats{display:inline-flex;align-items:center;flex-wrap:wrap;color:var(--emerald-ink)!important;font-weight:600}

/* The shared-seat half of a slot card: price line, then − 1 + and Book. Without JavaScript the number field does the job. */
.sf .sf-seat-form{display:grid;gap:.5rem;min-height:0}
.sf-pair-what{display:grid;gap:.1rem;margin:0}
.sf-seat-row{display:flex;align-items:center;gap:.5rem}
.seat-stepper{display:inline-flex;align-items:center;border:1px solid var(--card-line);border-radius:999px;background:#fff}
.seat-stepper .step{min-width:44px;min-height:44px;margin:0;padding:0;border:0;border-radius:999px;background:transparent;color:var(--slate);font-size:1.25rem;line-height:1}
.seat-stepper .step:disabled{color:var(--ink-3);opacity:.6}
.seat-stepper input{width:2.5rem;min-height:44px;margin:0;padding:0;border:0;background:transparent;text-align:center;font-weight:700;font-size:1.0625rem;font-variant-numeric:tabular-nums;-moz-appearance:textfield;appearance:textfield}
.seat-stepper input::-webkit-inner-spin-button,.seat-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.sf-seat-go{flex:1;min-height:44px;margin:0;border-radius:999px;font-weight:700}
@media(scripting:none){.seat-stepper .step{display:none}.seat-stepper input{width:3.5rem;-moz-appearance:auto;appearance:auto}}
.sf .is-target>.sf-pair,.sf li.is-target>.sf-tile{border-color:var(--emerald);box-shadow:0 0 0 2px var(--emerald)}
.sf .sf-friend{color:var(--emerald-ink)!important;font-weight:700}
[id^=slot-]{scroll-margin-top:1.5rem}

/* Thumb-zone checkout on phones: the details panel becomes a bottom sheet (rounded top, pulled up over the summary's foot) and the
   extras, the health terms tick and the big pay button sit low, near the thumb, with the sticky pay bar under them. It is a normal
   page: no modal, so it works without JavaScript and with the back button. */
@media(max-width:900px){
  .bk .booking{display:flex;flex-direction:column}
  .bk .bk-panel,.bk-head:not(.has-photo)+.bk-body .bk-panel{order:2;margin:0 -1.25rem;border-radius:22px 22px 0 0;padding:1.25rem 1.25rem 1.5rem;box-shadow:0 -12px 32px -18px rgb(15 30 38 / .35);background:#fff}
  .bk .bk-panel::before{content:"";display:block;width:40px;height:4px;margin:-.5rem auto 1rem;border-radius:4px;background:var(--card-line)}
  .bk .booking-summary{order:1}
  .bk .bk-panel .opt-ins{order:1}
  .bk .bk-panel .waiver-agree,.bk .bk-panel .terms-agreed{margin-top:1rem}
  .public-app .bk .booking-form form button.wide{min-height:60px;font-size:1.125rem}
  .bk-paybar button{min-height:52px}
}

/* "Booking as …" for a returning swimmer, and "✓ Health terms agreed" when this venue's current terms are on file for them. */
.remembered{margin:0 0 1rem;padding:.875rem 1rem;border:1px solid var(--card-line);border-radius:12px;background:var(--steam)}
.remembered>summary{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;min-height:44px;cursor:pointer;list-style:none}
.remembered>summary::-webkit-details-marker{display:none}
.remembered>summary .change{color:var(--rust-ink);text-decoration:underline;font-weight:600}
.remembered[open]>summary .change{display:none}
.remember-me{display:flex;gap:.5rem;align-items:flex-start;margin:.5rem 0}
.terms-agreed{display:flex;gap:.5rem;align-items:center;margin:.25rem 0 1rem;padding:.75rem .875rem;border:1px solid #b7dfc4;border-radius:var(--radius-sm);background:#edf8f0;color:var(--emerald-ink);font-weight:600}
.forget-me{margin:.25rem 0 0}
.forget-me button{min-height:44px;padding:0;border:0;background:none;color:var(--rust-ink);font:inherit;font-size:.875rem;text-decoration:underline;width:auto}

/* After booking: "Going with friends?" with WhatsApp and a link to copy. */
.buddy{margin:1.5rem 0 0;padding:1.125rem 1.25rem;border:1px solid var(--card-line);border-radius:14px;background:#fff;text-align:left}
.buddy h2{margin:0 0 .35rem;font-size:1.25rem;color:var(--slate)}
.buddy p{margin:0 0 .75rem}
.buddy .button-row{margin-top:.5rem}
.buddy .whatsapp{background:#0f7a3a;border-color:#0f7a3a;color:#fff}
.buddy label{display:grid;gap:.25rem;font-size:.875rem;color:var(--ink-2)}
.buddy input{font-size:.875rem}

/* "Have a pass from our old booking system?" pill and its claim pages. */
.sf-claim{margin:.75rem 0 0}
.sf-claim a{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:.45rem 1rem;border-radius:999px;background:rgb(255 255 255 / .14);border:1px solid rgb(255 255 255 / .35);color:var(--deep-ink);text-decoration:none;font-weight:600;font-size:.9375rem}
.sf-claim a:hover{background:rgb(255 255 255 / .24);color:#fff}
.provisional{display:inline-block;padding:.1rem .5rem;border-radius:999px;background:var(--amber-wash);color:var(--amber);font-size:.8125rem;font-weight:700}

/* Guest pages, polish pass (October 2026, docs/brand-standard.md). Display face on the venue name, section, day and session
   headings; the brand seat dots; 44px targets; drawn icons for arrows and ticks; no heading lost on a dark chapter. */
.public-app .sf-cover h1,.public-app .sf .sf-book .section-heading h2,.public-app .sf-rail h2,.public-app .sf .sf-day .slot-day,.public-app .sf-card h3,.public-app .sf-shop h3,.public-app .bk .option-picker h2,.public-app .bk .cart h2,.public-app .bk-panel>h2,.public-app .booking-form>h2,.public-app .offer-head h2,.public-app .standby>h2,.public-app .gs-hero h1,.public-app .gs-unwrap h1,.public-app .split-lobby h2,.public-app .buddy h2,.dip-heading{font-family:var(--serif);font-weight:600;letter-spacing:-.02em}
.public-app .sf-cover h1{font-size:clamp(3rem,7vw,5.5rem);line-height:1;max-width:16ch}
.public-app .sf .sf-book .section-heading h2,.public-app .sf-rail h2{font-size:clamp(1.875rem,3.2vw,2.25rem);line-height:1.15}
.public-app .sf .sf-day .slot-day{font-size:20px;line-height:1.4}
.public-app .sf-card h3{font-size:1.5rem;line-height:1.3}
.public-app .sf-story-text p:first-child{font-weight:600}
.public-app .sf-chapter.sf-dark .sf-rail h2,.public-app .sf-chapter.sf-dark h2{color:var(--deep-ink)}
.public-app .gs-steps legend{font-weight:600}
.public-app .icon-arrow,.public-app .icon-external{display:inline-block;width:16px;height:16px;vertical-align:-.15em}
.public-app .split-tick .icon,.public-app .addon-toggle .icon{display:inline-block;width:16px;height:16px;vertical-align:-.2em}
/* Back links: a drawn chevron (the standard's arrow-left), not a "←" text glyph. */
.public-app .crumb::before,.public-app .card>a:first-child::before,.public-app .card>a.crumb:first-child::before{content:"";flex:none;width:.45em;height:.45em;margin:0 .2rem 0 .15rem;border-left:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg)}
/* Seat dots (4.1): 8px, 4px apart, filled emerald for a free seat, a hollow ring for a taken one. At 2 or fewer the words turn amber. */
.seat-dots{gap:4px}
.seat-dots i{width:8px;height:8px;border:1px solid var(--line-control)}
.seat-dots i.is-free{border-color:var(--emerald)}
.sf-seats.is-last,.public-app .sf-tile.is-low .slot-left{color:var(--amber)!important}
/* The whole sauna once a seat is sold: one quiet line, not a disabled card (4.2). */
.sf-pair-off{margin:.5rem 0 0;font-size:.875rem;color:var(--ink-2)}
/* 44px targets: the venue name, Back to times, the skip link, the terms summary, the 4+ seat field. */
.public-app .venue-brand,.public-app .crumb,.public-app .skip{min-height:44px;display:inline-flex;align-items:center}
.public-app .waiver summary{min-height:44px}
.seat-stepper input{width:3rem}
/* Picture radios on the gift and voucher pages: the hidden input covers its whole tile, so the hit area is the tile. */
.gs-pkg input,.gs-chip input,.gs-theme-choice input,.gs-suggestion input,label.choice input,.gift-item input,.design-choice input{inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.public-app .choice-grid{align-items:start}
.public-app .choice-grid>label.choice{margin:0}
.public-app .gs-hero .crumb{color:var(--deep-ink);margin:0 0 .75rem}
.public-app .gs-hero .crumb:hover{color:#fff}
.gs-themes{row-gap:1.25rem}
.gs-form label.gs-theme-choice{gap:.6rem}
/* Secondary controls are outlined pills with a 3:1 boundary (--line-control), like every other control (3.6, 3.9). */
.public-app .service-filter a,.public-app .shop-links a,.public-app .seat-pill{border-color:var(--line-control)}
.public-app .shop-links a{border-radius:999px}
/* "Going with friends?": WhatsApp is a secondary pill, not a green fill (4.7). */
.buddy .button.whatsapp{background:var(--surface);border:1px solid var(--line-control);color:var(--ink)}
.buddy .button.whatsapp:hover{background:var(--sidebar)}

/* Crew mode (/crew/<slug>, src/crew-pages.js): outdoor phone use. Black on white, big type, 56px buttons, no subtle greys. */
body.crew-app{background:#fff;color:#000;font-size:17px}
.crew{max-width:40rem;margin:0 auto;padding:1rem 1rem 3rem}
.crew h1{font-size:1.875rem;font-weight:600;margin:.5rem 0 1rem;color:var(--ink)}
.crew h2{display:flex;flex-wrap:wrap;gap:.25rem .6rem;align-items:baseline;margin:0;font-size:1.25rem;font-weight:800;color:var(--ink)}
.crew h2 span{font-variant-numeric:tabular-nums}
.crew-card{padding:1.25rem;border:2px solid var(--ink);border-radius:16px}
.crew-venue{margin:0;font-weight:700;color:var(--ink)}
.crew-top{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:-1rem -1rem 1rem;padding:.75rem 1rem;background:var(--ink);color:#fff}
.crew-top .crew-venue{margin:0;font-family:var(--sans);font-size:1.0625rem;font-weight:700;letter-spacing:0;color:#fff}
.crew-big{display:flex;align-items:center;justify-content:center;width:100%;min-height:56px;margin:.75rem 0 0;padding:0 1.25rem;border:2px solid var(--ink);border-radius:999px;background:var(--ink);color:#fff!important;font-size:1.125rem;font-weight:800;text-decoration:none}
.crew-top .crew-walkin{width:auto;margin:0;background:#fff;color:var(--ink)!important;border-color:#fff}
.crew-session{margin:0 0 1rem;padding:1rem;border:2px solid var(--ink);border-radius:16px}
.crew-session.is-ended{border-style:dashed;opacity:.7}
.crew-count{margin:.25rem 0 .5rem;font-weight:600}
.crew-guests{list-style:none;margin:0;padding:0}
.crew-guest{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 0;border-top:1px solid var(--ink)}
.crew-guest.is-marked{background:var(--sage-wash);margin:0 -.5rem;padding:.75rem .5rem}
.crew-seats{font-weight:700;white-space:nowrap}
.crew-badges{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.3rem}
.crew-badge{display:inline-block;padding:.15rem .5rem;border:1.5px solid var(--ink);border-radius:999px;font-size:.875rem;font-weight:700}
.crew-badge.is-ok{border-color:var(--sage-ink);color:var(--sage-ink)}
.crew-badge.is-warn{border-color:var(--amber);background:var(--amber-wash);color:var(--amber)}
.crew-check{min-width:7.5rem;min-height:56px;margin:0;border:2px solid var(--ink);border-radius:999px;background:var(--sage-ink);color:#fff;font-size:1.0625rem;font-weight:800}
.crew-done{font-weight:800;color:var(--sage-ink);white-space:nowrap}
.crew-empty{font-weight:600}
.crew-alert{padding:.75rem 1rem;border:2px solid var(--red);border-radius:10px;background:var(--red-wash);color:var(--red);font-weight:700}
.crew-ok{padding:.75rem 1rem;border:2px solid var(--sage-ink);border-radius:10px;background:var(--sage-wash);color:var(--sage-ink);font-weight:700}
.crew-form{display:grid;gap:1rem}
.crew-form label,.crew-form legend{font-weight:700;color:var(--ink)}
.crew-form input:not([type=radio]),.crew-form select{min-height:56px;font-size:1.125rem;border:2px solid var(--ink);color:var(--ink)}
.crew-pin{letter-spacing:.4em;font-size:1.5rem!important;font-variant-numeric:tabular-nums;text-align:center}
.crew-form fieldset{display:grid;gap:.5rem;margin:0;padding:0;border:0}
.crew-choice{display:flex;gap:.75rem;align-items:center;min-height:56px;padding:.5rem .75rem;border:2px solid var(--ink);border-radius:10px;font-weight:600}
.crew-choice:has(input:checked){background:var(--ink);color:#fff}
.crew-choice input{width:1.25rem;height:1.25rem;accent-color:var(--ink)}
.crew-back{display:inline-flex;align-items:center;min-height:44px;color:var(--ink);font-weight:700}
.crew-lead{font-size:1.125rem}
.crew-qr{display:grid;place-items:center;padding:1rem;border:2px solid var(--ink);border-radius:16px;background:#fff}
.crew-qr svg{width:min(100%,320px);height:auto}
.crew-small{font-size:.875rem;overflow-wrap:anywhere}
.crew-link{min-height:44px;margin:1.5rem 0 0;padding:0;border:0;background:none;color:var(--ink);text-decoration:underline;font-weight:600;width:auto}
.crew :focus-visible{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
.crew-top :focus-visible{box-shadow:none}
.crew .icon{width:22px;height:22px;stroke-width:2}
.crew-big,.crew-done,.crew-back{gap:.5rem}
.crew-done{display:inline-flex;align-items:center}
.crew-badge .icon{display:inline-block;width:16px;height:16px;vertical-align:-3px;margin-right:.2rem}

/* Quick seat pills on a slot card: [1 seat €18] [2 seats €36] [3 seats €54] [4+]. 4+ opens the stepper. */
.seat-pills{display:flex;flex-wrap:wrap;gap:.4rem;align-items:flex-start}
.seat-pills>form{display:contents}
.seat-pill{display:inline-flex;align-items:center;min-height:44px;margin:0;padding:0 .85rem;border:1px solid var(--card-line);border-radius:999px;background:#fff;color:var(--slate);font-size:.9375rem;font-weight:700;cursor:pointer;white-space:nowrap;width:auto;list-style:none}
.seat-pill:hover{border-color:var(--slate);background:var(--steam);color:var(--slate)}
.seat-pills>form .seat-pill:first-child{background:var(--action);border-color:var(--action);color:#fff}
.seat-more{flex-basis:auto}
.seat-more>summary::-webkit-details-marker{display:none}
.seat-more[open]{flex-basis:100%}
.seat-more[open]>summary{background:var(--slate);color:#fff;border-color:var(--slate)}
.seat-more .sf-seat-row{margin-top:.5rem}
.slot-badge.is-sea{background:#e4eff5;color:#1d4168}

/* Today at <Venue> (src/morning-brief.js): the top of the owner's dashboard. Three numbers, the conditions pill, one-tap prompts. */
.today .today-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.75rem;margin:0 0 .75rem}
.today-stat{display:grid;gap:.15rem}
.today-stat strong{font-size:1.75rem;font-weight:800;letter-spacing:-.04em;line-height:1.1}
.today-stat strong small{font-size:1rem;font-weight:600;color:var(--ink-2)}
.today-stat span{font-size:.875rem;color:var(--ink-2)}
.today-conditions{display:inline-block;margin:0 0 .75rem;padding:.3rem .8rem;border-radius:999px;background:var(--sidebar);border:1px solid var(--line);font-size:.875rem}
.today-conditions.is-yellow,.today-conditions.is-orange{color:var(--amber);border-color:currentColor}
.today-conditions.is-red{color:var(--rust);border-color:currentColor}
.today-prompts{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.today-prompt{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}
.today-prompt form{margin:0}
.today-estimate{color:var(--ink-2)}
/* Groups storefront and vouchers-only mode (src/group-store.js). */
.group-packages{list-style:none;margin:0;padding:0;display:grid;gap:1rem}
.group-package{border:1px solid var(--line);border-radius:16px;padding:1rem;background:var(--surface)}
.group-package h3{margin:0 0 .25rem}
.group-package .price{font-weight:700}
.group-package form{margin-top:.75rem}
.group-pay label{display:flex;gap:.5rem;align-items:center}
.vouchers-only-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}

/* Sign in by email link, under "Continue with Google" (src/owner-email-auth.js). */
.signin-or{display:flex;align-items:center;gap:.75rem;color:var(--ink-2);font-size:.875rem;margin:1rem 0 .5rem}
.signin-or::before,.signin-or::after{content:"";flex:1;border-top:1px solid var(--line)}
.signin-email{display:grid;grid-template-columns:minmax(0,1fr);gap:.5rem;margin:0 0 1rem}
.signin-email label{margin:0}
.signin-email input{width:100%;box-sizing:border-box}
.signin-email button{width:100%;min-height:48px;white-space:normal}
.wide{width:100%}
.email-signin-link{margin-top:1.5rem}
.email-signin-link form{margin-top:.5rem}

/* The owner's quick links above every console page: their page, their gift store, their link to their phone. */
.owner-links{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1.25rem}
.owner-links a{display:inline-flex;align-items:center;gap:.3rem;min-height:44px;padding:0 1rem;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);color:var(--ink);font-weight:600;font-size:.9375rem;text-decoration:none}
.owner-links a:hover{border-color:var(--ink)}
@media (max-width:560px){.owner-links a{flex:1 1 auto;justify-content:center}}

/* The import page: the CSV upload and, beside it, "we'll do it for you". */
.import-pair{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:1.25rem;align-items:start}
.import-pair>.panel{margin:0}
.import-pair .button{margin:.25rem .5rem .25rem 0}
@media (max-width:900px){.import-pair{grid-template-columns:1fr}}
/* Sauna OS layer (DESIGN.md): cards with a soft shadow, tabular figures for prices, times, seats and tides, and an amber focus
   ring with a navy core (amber alone is 2:1 on canvas). */
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);box-shadow:0 0 0 2px var(--ink)}
.card{box-shadow:var(--card-shadow)}
.price,.money,.tile time,time,.seats,.seat-count,.tide-badge,.sea-line,td.num,.amount,.total,.addon-price{font-variant-numeric:tabular-nums}
