/* v108 — Switzer is self-hosted. The Fontshare API returned
   "Access to the Fontshare API has been temporarily restricted." on 1 Sep 2026,
   which silently dropped the body typeface to the device default (Roboto on
   Android) and changed every line break on the page. The four weights now ship
   with the site, so the body font no longer depends on a third party. */
@font-face{font-family:'Switzer';src:url('../assets/fonts/switzer-300.woff2') format('woff2');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'Switzer';src:url('../assets/fonts/switzer-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Switzer';src:url('../assets/fonts/switzer-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Switzer';src:url('../assets/fonts/switzer-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
:root{--text-xs: clamp(.75rem, .7rem + .25vw, .875rem);--text-sm: clamp(.875rem, .8rem + .35vw, 1rem);--text-base: clamp(1rem, .95rem + .25vw, 1.125rem);--text-lg: clamp(1.125rem, 1rem + .75vw, 1.5rem);--text-xl: clamp(1.5rem, 1.2rem + 1.25vw, 2.25rem);--text-2xl: clamp(2.1rem, 1.2rem + 2.5vw, 3.5rem);--text-3xl: clamp(2.6rem, 1rem + 4vw, 5rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--radius-sm: .375rem;--radius-md: .625rem;--radius-lg: 1rem;--radius-full: 9999px;--transition-interactive: .2s cubic-bezier(.16,1,.3,1);--content: 33rem;--font-display: "Instrument Serif", Georgia, serif;--font-body: "Switzer", "Inter", system-ui, sans-serif}:root,[data-theme=dark]{--color-bg: #080a14;--color-surface: #0d1020;--color-surface-2: #141829;--color-border: #272c42;--color-border-soft: #1a1e2e;--color-text: #f7efe3;--color-text-muted: #a7a397;--color-text-faint: #74716a;--color-accent: #c8452f;--color-accent-soft: #f0a173;--color-coral: #d9663f;--color-wine: #1b1c38;--color-on-accent: #fff3ea;--scrim-1: rgba(8,10,20,.1);--scrim-2: rgba(8,10,20,.96);--glow: rgba(200,69,47,.26);--glow-rose: rgba(240,161,115,.14);--img-bright: 1.02;--grain-opacity: .055;--grain-blend: overlay}[data-theme=light]{--color-bg: #f8f1e6;--color-surface: #fffbf4;--color-surface-2: #f2e8d9;--color-border: #ddcfba;--color-border-soft: #e9dcc9;--color-text: #1d1710;--color-text-muted: #6f6353;--color-text-faint: #9b8f7d;--color-accent: #a25a10;--color-accent-soft: #8a4a0c;--color-coral: #b93f28;--color-wine: #7a2a22;--color-on-accent: #fff8ee;--glow-rose: rgba(185,63,40,.1);--grain-opacity: .035;--grain-blend: multiply;--scrim-1: rgba(248,241,230,0);--scrim-2: rgba(248,241,230,.97);--glow: rgba(162,90,16,.1);--img-bright: .95}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:none;text-size-adjust:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;scroll-padding-top:var(--space-20)}body{min-height:100dvh;line-height:1.6;font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg);overflow-x:hidden}.grain{position:fixed;inset:-50%;z-index:60;pointer-events:none;opacity:var(--grain-opacity);mix-blend-mode:var(--grain-blend);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");animation:grainshift 7s steps(6) infinite}@keyframes grainshift{0%{transform:translate(0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-2%)}80%{transform:translate(3%,1%)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){.grain{animation:none}}img,svg,video{display:block;max-width:100%;height:auto}ul[role=list],ol[role=list]{list-style:none}input,button{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none}h1,h2,h3{text-wrap:balance;line-height:1.05;font-weight:400}p{text-wrap:pretty}a{color:inherit}::selection{background:var(--color-accent);color:var(--color-on-accent)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:var(--radius-sm)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}h1{font-family:var(--font-display);font-size:var(--text-3xl);letter-spacing:-.025em;line-height:.96}h2{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.022em;line-height:.98}h1 em,h2 em{letter-spacing:-.01em}h1 em,h2 em,.closer em{font-style:italic;color:var(--color-accent)}h3{font-family:var(--font-body);font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em}.eyebrow,.kicker,.flabel,.col-title{font-size:var(--text-xs);font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--color-text-muted)}.kicker{margin-bottom:var(--space-5);color:var(--color-accent-soft)}.lede{font-size:var(--text-lg);color:var(--color-text);opacity:.92;margin-top:var(--space-5);max-width:30ch}.body{font-size:var(--text-base);color:var(--color-text-muted);margin-top:var(--space-5);max-width:46ch}.body em{font-family:var(--font-display);font-style:italic;font-size:1.12em;color:var(--color-text)}.body.dim{color:var(--color-text-faint)}.lede-2{font-size:var(--text-sm);color:var(--color-text-dim);margin-top:var(--space-3);max-width:32ch;line-height:1.55}.fineprint{font-size:var(--text-xs);color:var(--color-text-faint);margin-top:var(--space-4);letter-spacing:.01em}.link{color:var(--color-accent);text-decoration:none;border-bottom:1px solid color-mix(in oklab,var(--color-accent) 45%,transparent)}.link:hover{border-bottom-color:var(--color-accent)}.wrap{width:100%;max-width:var(--content);margin-inline:auto;padding-inline:var(--space-5);position:relative;z-index:2}.section{padding-block:clamp(var(--space-16),14vw,var(--space-24));position:relative;overflow:hidden}.site-header{position:fixed;inset-inline:0;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--space-5);transition:background var(--transition-interactive),backdrop-filter var(--transition-interactive),border-color var(--transition-interactive);border-bottom:1px solid transparent}.site-header.is-stuck{background:color-mix(in oklab,var(--color-bg) 82%,transparent);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);border-bottom-color:var(--color-border-soft)}.brand{display:inline-flex;align-items:center;gap:var(--space-2);text-decoration:none;color:var(--color-text);text-shadow:0 1px 3px rgba(6,4,10,.92),0 2px 16px rgba(6,4,10,.75)}.brand-mark{width:26px;height:26px;color:var(--color-accent);flex:none}.brand-word{font-family:var(--font-display);font-size:1.4rem;letter-spacing:-.01em;line-height:1}.brand-word-thin{font-style:italic;color:var(--color-accent);margin-left:.18em}.header-actions{display:flex;align-items:center;gap:var(--space-2)}.theme-toggle{width:38px;height:38px;border-radius:var(--radius-full);display:grid;place-items:center;color:var(--color-text-muted);border:1px solid var(--color-border-soft)}.theme-toggle:hover{color:var(--color-accent);border-color:var(--color-border)}.site-header.is-solid{background:color-mix(in oklab,var(--color-bg) 88%,transparent);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);border-bottom-color:var(--color-border-soft)}.menu-btn{width:38px;height:38px;border-radius:var(--radius-full);display:grid;place-items:center;color:var(--color-text-muted);border:1px solid var(--color-border-soft)}.menu-btn svg{width:18px;height:18px}.menu-btn:hover,.menu-btn[aria-expanded=true]{color:var(--color-accent);border-color:var(--color-border)}.menu-panel{position:absolute;top:calc(100% - var(--space-2));right:var(--space-5);min-width:13rem;display:flex;flex-direction:column;padding:var(--space-2);background:color-mix(in oklab,var(--color-surface) 97%,transparent);-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2);border:1px solid var(--color-border-soft);border-radius:var(--radius-lg);box-shadow:0 24px 70px -20px #0009;opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .22s ease,transform .22s ease}.menu-panel.is-open{opacity:1;transform:translateY(0);pointer-events:auto}.menu-panel a{padding:.42rem var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--color-text-muted);text-decoration:none;transition:color .2s ease,background .2s ease}.menu-panel a:hover{color:var(--color-text);background:color-mix(in oklab,var(--color-accent) 12%,transparent)}.menu-panel a[aria-current=page]{color:var(--color-accent)}.menu-panel .menu-cta{margin-top:var(--space-1, .25rem);padding-top:var(--space-3);border-top:1px solid var(--color-border-soft);border-radius:0;color:var(--color-accent);font-family:var(--font-display);font-size:1.05rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);text-decoration:none;font-size:var(--text-sm);font-weight:500;letter-spacing:.01em;padding:var(--space-4) var(--space-6);border-radius:var(--radius-full);border:1px solid transparent;transition:transform var(--transition-interactive),background var(--transition-interactive),color var(--transition-interactive),border-color var(--transition-interactive),box-shadow var(--transition-interactive)}.btn-sm{padding:var(--space-2) var(--space-4)}.btn-primary{background:var(--color-accent);color:var(--color-on-accent);box-shadow:0 10px 40px var(--glow),0 2px #ffffff2e inset}.btn-primary:hover{background:#a5341f;transform:translateY(-2px);box-shadow:0 16px 54px var(--glow)}.btn-ghost{border-color:var(--color-border);color:var(--color-text);background:color-mix(in oklab,var(--color-surface) 55%,transparent)}.btn-ghost:hover{border-color:var(--color-accent);color:var(--color-accent)}.cta-row{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-8)}@media(min-width:30rem){.cta-row{flex-direction:row}.cta-row .btn{flex:1}}.cta-row-quiet{flex-direction:row;align-items:center;gap:var(--space-5);margin-top:var(--space-6);flex-wrap:wrap}.cta-row-quiet .btn{flex:none}.cta-row-quiet .btn-sm{padding:.6rem 1.15rem;font-size:var(--text-xs);letter-spacing:.04em;box-shadow:0 6px 26px #c8452f42}.cta-row-quiet .btn-sm:hover{transform:translateY(-1px);box-shadow:0 10px 32px #c8452f57}.link-quiet{font-size:var(--text-xs);letter-spacing:.04em;color:#f6efe4c7;text-decoration:none;border-bottom:1px solid rgba(246,239,228,.32);padding-bottom:2px;transition:color .25s ease,border-color .25s ease}.link-quiet:hover{color:var(--color-accent-soft);border-color:var(--color-accent-soft)}.cta-stack{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3);margin-top:var(--space-6)}.hero-code{display:grid;justify-items:start;gap:var(--space-2)}.hero-code input{width:9.25rem;padding:.12rem var(--space-3);background:#0a081075;border:1px solid rgba(246,239,228,.34);border-radius:.5rem;color:#f6efe4;font-size:.8125rem;line-height:1.5;letter-spacing:.12em;text-transform:uppercase;text-align:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);transition:border-color var(--transition-interactive),background var(--transition-interactive)}.hero-code input::placeholder{color:#f6efe46b;letter-spacing:.14em}.hero-code input:focus{outline:none;border-color:var(--color-accent-soft);background:#0a0810a8}.hero-code-label{width:9.25rem;text-align:center;font-size:.625rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:#f6efe4cc;text-shadow:0 1px 16px rgba(20,2,8,.9)}.hero-code-msg{font-size:var(--text-xs);min-height:1.1em;color:var(--color-accent-soft);max-width:26ch}.hero-code-msg.is-err{color:#ffb4a2}.btn-tiny{padding:.48rem .95rem;font-size:.72rem;font-weight:500;letter-spacing:.045em;text-transform:uppercase;box-shadow:0 6px 24px #c8452f47}.btn-tiny:hover{transform:translateY(-1px);box-shadow:0 10px 30px #c8452f5c}.link-arrow{display:inline-flex;align-items:center;gap:.5rem;margin-top:var(--space-8);font-family:var(--font-display);font-size:1.35rem;color:var(--color-accent);text-decoration:none;border-bottom:1px solid color-mix(in oklab,var(--color-accent) 40%,transparent);padding-bottom:3px;transition:gap .25s ease,border-color .25s ease}.link-arrow:hover{gap:.85rem;border-color:var(--color-accent)}.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:clamp(5.5rem,13vh,7.5rem);isolation:isolate}.hero-media{position:absolute;inset:0;z-index:-1;overflow:hidden}.hero-media picture{display:block;width:100%;height:100%}.hero-media img{width:100%;height:100%;object-fit:cover;object-position:50% 50%;filter:brightness(var(--img-bright)) saturate(1.06) contrast(1.02)}.kenburns{animation:kenburns 40s ease-in-out infinite alternate;transform-origin:50% 46%}@keyframes kenburns{0%{transform:scale(1.002)}to{transform:scale(1.022)}}@media(prefers-reduced-motion:reduce){.kenburns{animation:none}}.hero:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(80% 40% at 50% 20%,rgba(226,116,42,.26) 0%,transparent 72%),radial-gradient(70% 40% at 24% 74%,rgba(196,74,44,.2) 0%,transparent 70%);mix-blend-mode:screen}[data-theme=light] .hero:before{mix-blend-mode:normal;opacity:.5}.hero-media:after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,#080a1494,#080a1438 15%,#0a080e33 27%,#0a080e4d 40%,#0a0a1442 56%,#090d1c33,#080b1852 84%,#080a146b)}[data-theme=light] .hero-media:after{background:linear-gradient(to bottom,#f8f1e6c2,#f8f1e608 14%,#0a03061a 32%,#09030552 48%,#0702047a 60%,#06020494,#0602048f 88%,#080a14a3)}@media(min-aspect-ratio:3/5)and (max-aspect-ratio:1/1){.hero{justify-content:center;padding-top:6rem;padding-bottom:clamp(4rem,12vh,7rem)}}@media(min-aspect-ratio:1/1){.hero{padding-bottom:clamp(6rem,14vh,9rem)}.hero-media img{object-position:50% 50%}.hero .hero-body{margin-inline:clamp(2.5rem,7vw,7rem) auto;max-width:30rem}.hero-media:after{background:linear-gradient(to right,#0c050275,#0c05025e 30%,#1007032e 48%,#1208030d 64%,#12080300 76%),linear-gradient(to bottom,#0e06024d,#0e060200 26%,#0a040200 70%,#0805064d)}[data-theme=light] .hero-media:after{background:linear-gradient(to right,#0c0502e0,#0c0502bd 26%,#1007036b 46%,#1208031f 62%,#12080300 74%),linear-gradient(to bottom,#f8f1e685,#f8f1e600 22%,#0a040200 70%,#08050670)}}.hero .eyebrow,.hero h1,.hero .fineprint{color:#f6efe4}.hero .lede-2{color:#f6efe4b8;text-shadow:0 1px 16px rgba(8,10,20,.8)}.hero h1 em,[data-theme=light] .hero h1 em{color:#ffbb90}.hero .eyebrow{color:#fbf3e7;font-weight:600;font-size:clamp(.8125rem,.78rem + .22vw,.9375rem);letter-spacing:.2em;text-shadow:0 1px 3px rgba(6,4,10,.92),0 2px 18px rgba(6,4,10,.78)}.hero .fineprint{color:#f6efe4a8}[data-theme=light] .hero .btn-ghost{border-color:#f6efe466;color:#f6efe4;background:#0a080647}[data-theme=light] .hero .btn-ghost:hover{border-color:#f0bd78;color:#f0bd78}.hero-body{width:100%;max-width:var(--content);margin-inline:auto;padding-inline:var(--space-5)}.hero h1{margin-top:1.75rem;font-size:clamp(2.85rem,1.1rem + 4.4vw,5.5rem);text-shadow:0 2px 40px rgba(8,10,20,.6)}.hero .lede{font-family:var(--font-body);font-size:clamp(.875rem,.85rem + .28vw,1rem);color:#f6efe4cc;line-height:1.5;letter-spacing:.004em;max-width:27ch;opacity:.93;text-shadow:0 1px 22px rgba(20,2,8,.9)}.hero h1{text-shadow:0 2px 44px rgba(20,2,8,.72)}.hero .lede-sub{margin-top:var(--space-3);font-family:var(--font-body);font-size:clamp(.875rem,.85rem + .28vw,1rem);line-height:1.5;letter-spacing:.004em;max-width:27ch;color:#f6efe4cc;text-shadow:0 1px 22px rgba(20,2,8,.9)}[data-theme=light] .hero .lede-2{color:#f6efe4b8}.eyebrow{display:inline-flex;align-items:center;gap:var(--space-2)}.pulse{width:7px;height:7px;border-radius:50%;background:var(--color-accent);box-shadow:0 0 0 0 var(--color-accent);animation:pulse 2.4s infinite;flex:none}@keyframes pulse{0%{box-shadow:0 0 color-mix(in oklab,var(--color-accent) 60%,transparent)}70%{box-shadow:0 0 0 9px transparent}to{box-shadow:0 0 0 0 transparent}}.scroll-cue{position:absolute;bottom:var(--space-5);left:50%;translate:-50% 0;display:grid;place-items:center;width:4.5rem;height:2.5rem;color:var(--color-accent-soft);opacity:.9;transition:opacity .25s ease,color .25s ease}@media(max-width:47.99rem){.hero .cta-stack{margin-top:4.5rem;gap:var(--space-2)}}@media(max-width:47.99rem)and (min-aspect-ratio:1/1){.hero .cta-stack{max-width:30rem}}.scroll-cue svg{width:3.5rem;height:auto;filter:drop-shadow(0 2px 10px rgba(20,2,6,.75));animation:cue 2.4s cubic-bezier(.45,0,.55,1) infinite}.scroll-cue:hover{opacity:1;color:var(--color-accent)}@keyframes cue{0%,to{transform:translateY(-3px)}50%{transform:translateY(5px)}}@media(prefers-reduced-motion:reduce){.scroll-cue svg{animation:none}}.marquee{border-block:1px solid var(--color-border-soft);overflow:hidden;padding-block:var(--space-4);background:linear-gradient(90deg,var(--color-surface) 0%,color-mix(in oklab,var(--color-wine) 55%,var(--color-surface)) 50%,var(--color-surface) 100%)}.marquee-track{display:flex;align-items:center;gap:var(--space-4);width:max-content;animation:slide 34s linear infinite}.marquee-track span{font-family:var(--font-display);font-style:italic;font-size:1.4rem;white-space:nowrap;color:color-mix(in oklab,var(--color-text) 78%,transparent)}.marquee-track i{color:var(--color-accent);font-style:normal}@keyframes slide{to{transform:translate(-50%)}}.section-bg{position:absolute;inset:0;z-index:0}.section-bg img{width:100%;height:100%;object-fit:cover;filter:brightness(.62) saturate(1.1) contrast(1.05)}[data-theme=light] .section-bg img{filter:brightness(1.05) saturate(.7) opacity(.35)}.section-bg:after{content:"";position:absolute;inset:0;background:radial-gradient(60% 40% at 50% 55%,var(--glow) 0%,transparent 72%),linear-gradient(to bottom,var(--color-bg) 0%,color-mix(in oklab,var(--color-bg) 55%,transparent) 42%,var(--color-bg) 100%)}.section-bg-open img{filter:brightness(1.02) saturate(1.06) contrast(1.02)}[data-theme=light] .section-bg-open img{filter:brightness(.95) saturate(1.08) contrast(1.03)}.section-bg-open:after{background:radial-gradient(70% 50% at 50% 60%,rgba(196,74,44,.1) 0%,transparent 74%),linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.42) 22%,rgba(8,10,20,.52) 60%,var(--color-bg) 100%)}.section-bg-dusk img{filter:brightness(.8) saturate(1.14) contrast(1.03)}[data-theme=light] .section-bg-dusk img{filter:brightness(.95) saturate(1.1) contrast(1.03)}.section-bg-dusk:after{background:radial-gradient(70% 50% at 50% 60%,rgba(196,74,44,.06) 0%,transparent 74%),linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.46) 20%,rgba(8,10,20,.5) 62%,var(--color-bg) 100%)}.section-bg-faint img{filter:brightness(.3) saturate(.9)}[data-theme=light] .section-bg-faint img{filter:brightness(1.1) saturate(.6) opacity(.18)}.break{position:relative;height:74svh;min-height:22rem;overflow:hidden;display:grid;place-items:end center;isolation:isolate;background:#080a14}.break-tall{height:56svh;min-height:17rem}.break-tall .break-img{object-position:50% 34%}.break-img{position:absolute;inset:-8% 0;width:100%;height:116%;object-fit:cover;z-index:-2;filter:brightness(.9) saturate(1.1) contrast(1.03);will-change:transform}[data-theme=light] .break-img{filter:brightness(.82) saturate(1.14) contrast(1.06)}.break:after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(65% 45% at 50% 78%,rgba(196,74,44,.22) 0%,transparent 70%),linear-gradient(to bottom,#080a14 0%,transparent 26%,rgba(8,10,20,.55) 62%,rgba(8,10,20,.96) 100%)}.break-plain .break-img{filter:brightness(1.04) saturate(1.06) contrast(1.01)}[data-theme=light] .break-plain .break-img{filter:brightness(.96) saturate(1.1) contrast(1.03)}.break-plain:after{background:radial-gradient(65% 45% at 50% 78%,rgba(196,74,44,.1) 0%,transparent 70%),linear-gradient(to bottom,#080a14 0%,transparent 20%,transparent 74%,rgba(8,10,20,.82) 100%)}.break-quote{font-family:var(--font-display);font-size:var(--text-2xl);line-height:1.02;letter-spacing:-.022em;color:#f7efe3;text-align:center;text-wrap:balance;padding:0 var(--space-6) clamp(var(--space-10),9vw,var(--space-20));max-width:26ch;text-shadow:0 2px 36px rgba(8,10,20,.7);opacity:0;transform:translateY(26px);transition:opacity 1s cubic-bezier(.16,1,.3,1),transform 1s cubic-bezier(.16,1,.3,1)}.break.is-in .break-quote{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.break-quote{opacity:1;transform:none}}.break-quote em{font-style:italic;color:var(--color-accent-soft)}.break-lead:before{content:"";position:absolute;inset:-85% -14%;z-index:-1;-webkit-mask-image:radial-gradient(ellipse at center,#000 26%,rgba(0,0,0,.5) 48%,rgba(0,0,0,.14) 66%,transparent 80%);mask-image:radial-gradient(ellipse at center,#000 26%,rgba(0,0,0,.5) 48%,rgba(0,0,0,.14) 66%,transparent 80%)}@supports (backdrop-filter: brightness(.4)){.break-lead:before{-webkit-backdrop-filter:brightness(.3) saturate(.82);backdrop-filter:brightness(.3) saturate(.82)}}@supports not (backdrop-filter: brightness(.4)){.break-lead:before{background:#060810b8}}.break-lead{position:absolute;top:11%;left:0;right:0;z-index:1;font-size:var(--text-sm);line-height:1.6;text-align:center;text-wrap:balance;max-width:34ch;margin-inline:auto;color:#f7efe3eb;padding:0 var(--space-6);text-shadow:0 1px 3px rgba(8,10,20,.95),0 2px 26px rgba(8,10,20,.9);opacity:0;transform:translateY(26px);transition:opacity 1s cubic-bezier(.16,1,.3,1),transform 1s cubic-bezier(.16,1,.3,1)}.break.is-in .break-lead{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.break-lead{opacity:1;transform:none}}[data-theme=light] .break-quote{color:#fdf6ea}[data-theme=light] .break-quote em{color:#f0a173}.pull{font-family:var(--font-display);font-size:var(--text-xl);font-style:italic;color:var(--color-text);margin-top:var(--space-10);padding-left:var(--space-5);border-left:2px solid var(--color-accent);max-width:26ch}.ticks{margin-top:var(--space-8);display:grid;gap:var(--space-3)}.ticks li{position:relative;padding-left:var(--space-6);font-size:var(--text-sm);color:var(--color-text-muted)}.ticks li:before{content:"";position:absolute;left:0;top:.62em;width:12px;height:1px;background:var(--color-accent)}.section-rules{background:var(--color-surface)}.section-rules:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(80% 50% at 100% 0%,var(--glow-rose) 0%,transparent 65%)}.cols{display:grid;gap:var(--space-10);margin-top:var(--space-10)}.col-title{display:block;padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border-soft);margin-bottom:var(--space-4)}.col ul{display:grid;gap:var(--space-3)}.col li{font-size:var(--text-sm);line-height:1.45}.col-out .col-title{color:var(--color-text-faint)}.col-out li{color:var(--color-text-faint);text-decoration:line-through;text-decoration-color:color-mix(in oklab,var(--color-coral) 70%,transparent);text-decoration-thickness:1px}.col-kept .col-title{color:var(--color-accent)}.col-kept li{color:var(--color-text);position:relative;padding-left:var(--space-5)}.col-kept li:before{content:"";position:absolute;left:0;top:.55em;width:9px;height:9px;border-radius:50%;border:1px solid var(--color-accent);background:color-mix(in oklab,var(--color-accent) 25%,transparent)}.section-rules .body{margin-top:var(--space-10)}@media(min-width:40rem){.cols{grid-template-columns:1fr 1fr;gap:var(--space-8)}}.filter-card{margin-top:var(--space-8);padding:var(--space-6) var(--space-5);background:var(--color-surface);border:1px solid var(--color-border-soft);border-radius:var(--radius-lg);display:grid;gap:var(--space-5)}.fgroup{display:grid;gap:var(--space-3)}.chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.chip{font-size:var(--text-xs);letter-spacing:.04em;padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-full);color:var(--color-text-muted);white-space:nowrap;transition:all var(--transition-interactive)}.chip:hover{color:var(--color-text);border-color:var(--color-text-faint)}.chip.is-on{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent);font-weight:500}.filter-out{display:flex;align-items:center;gap:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--color-border-soft)}.sentence{font-size:var(--text-sm);color:var(--color-text-muted);margin:0}.sentence b{color:var(--color-text);font-weight:500}.radar{position:relative;width:54px;height:54px;flex:none;display:grid;place-items:center}.radar .dot{width:7px;height:7px;border-radius:50%;background:var(--color-accent)}.radar .ring{position:absolute;inset:0;border-radius:50%;border:1px solid var(--color-accent);opacity:0;animation:radar 3s ease-out infinite}.radar .r2{animation-delay:1s}.radar .r3{animation-delay:2s}@keyframes radar{0%{transform:scale(.15);opacity:.7}to{transform:scale(1);opacity:0}}.section-steps{background:var(--color-surface)}.steps{display:grid;gap:var(--space-8);margin-top:var(--space-10);counter-reset:s}.steps li{display:grid;gap:var(--space-2);padding-top:var(--space-5);border-top:1px solid var(--color-border-soft)}.steps .num{font-family:var(--font-display);font-size:1.5rem;color:var(--color-accent);line-height:1}.steps p{font-size:var(--text-sm);color:var(--color-text-muted);max-width:44ch}.section-price{background:linear-gradient(180deg,var(--color-bg) 0%,color-mix(in oklab,var(--color-wine) 32%,var(--color-bg)) 100%)}.price-card{margin-top:var(--space-8);padding:var(--space-8) var(--space-6);border:1px solid color-mix(in oklab,var(--color-accent) 26%,var(--color-border));border-radius:var(--radius-lg);background:radial-gradient(120% 80% at 50% 0%,var(--glow) 0%,transparent 70%),var(--color-surface);box-shadow:0 30px 90px -40px var(--glow);display:grid;gap:var(--space-6)}.price-head{display:flex;align-items:baseline;gap:var(--space-4)}.price-three{display:grid;gap:var(--space-5)}.price-opt{display:flex;align-items:baseline;gap:var(--space-4)}.price-or{display:flex;align-items:center;gap:var(--space-4)}.price-or:before,.price-or:after{content:"";height:1px;flex:1;background:var(--color-border)}.price-or span{font-family:var(--font-display);font-style:italic;font-size:var(--text-base);color:var(--color-accent-soft)}.price{font-family:var(--font-display);font-size:clamp(2.5rem,11vw,3.6rem);line-height:.9;color:var(--color-text)}.price-unit{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.14em;color:var(--color-text-muted);line-height:1.5}.price-card ul{display:grid;gap:var(--space-3)}.price-card li{position:relative;padding-left:var(--space-6);font-size:var(--text-sm);color:var(--color-text)}.price-card li:before{content:"";position:absolute;left:0;top:.45em;width:10px;height:6px;border-left:1.5px solid var(--color-accent);border-bottom:1.5px solid var(--color-accent);transform:rotate(-45deg)}.price-note{font-size:var(--text-xs);color:var(--color-text-faint);padding-top:var(--space-4);border-top:1px solid var(--color-border-soft)}.fig{margin-top:var(--space-8);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--color-border-soft)}.fig img{width:100%;filter:brightness(.92) saturate(1.12)}.renew-demo{margin-top:var(--space-8);padding:var(--space-5);border:1px dashed var(--color-border);border-radius:var(--radius-lg);display:grid;gap:var(--space-4);justify-items:start;background:color-mix(in oklab,var(--color-surface) 60%,transparent)}.renew-label{font-size:var(--text-sm);color:var(--color-text-muted)}.renew-label b{color:var(--color-coral);font-weight:500}.renew-demo.is-done .renew-label b{color:var(--color-accent)}.section-safety{background:var(--color-surface)}.section-enter:before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(70% 45% at 50% 100%,var(--glow) 0%,transparent 70%);mix-blend-mode:screen}[data-theme=light] .section-enter:before{mix-blend-mode:normal;opacity:.45}.ticks.two li{font-size:var(--text-sm)}.section-enter{padding-top:clamp(.375rem,1.5vw,1.25rem);padding-bottom:clamp(3rem,6vw,5rem)}.closer{font-size:var(--text-3xl)}.enter-form{margin-top:8.5rem;display:grid;gap:var(--space-3)}.enter-form .field-row{max-width:17.5rem}.enter-form .field-row input{padding:.5rem .875rem;font-size:var(--text-xs)}.enter-form .field-row .btn{padding:.5rem 1.05rem;font-size:var(--text-xs)}.enter-form label{font-size:var(--text-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--color-text-muted)}.field-row{display:flex;gap:var(--space-2)}.field-row input{flex:1;min-width:0;padding:var(--space-4) var(--space-5);background:color-mix(in oklab,var(--color-surface) 80%,transparent);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--text-sm);letter-spacing:.12em;text-transform:uppercase;transition:border-color var(--transition-interactive),background var(--transition-interactive)}.field-row input::placeholder{color:var(--color-text-faint);letter-spacing:.12em}.field-row input:focus{border-color:var(--color-accent);background:var(--color-surface)}.form-msg{font-size:var(--text-xs);min-height:1.2em;color:var(--color-accent)}.form-msg.is-err{color:var(--color-coral)}.section-enter .body{margin-top:var(--space-8)}.enter-note{text-align:center;color:#f7efe3;font-weight:500;text-shadow:0 1px 3px rgba(8,6,10,.92),0 2px 22px rgba(8,6,10,.85)}.wa-link{display:grid;justify-items:center;gap:var(--space-3);margin:var(--space-6) auto 0;width:max-content;text-decoration:none;color:var(--color-text)}.wa-badge{display:grid;place-items:center;width:3.25rem;height:3.25rem;aspect-ratio:1;flex:none;border-radius:999px;background:#c25c1c;box-shadow:0 6px 22px #c25c1c52;transition:transform var(--transition-interactive),box-shadow var(--transition-interactive)}.wa-badge svg{width:2.05rem;height:2.05rem}.wa-link:hover .wa-badge{transform:translateY(-2px);box-shadow:0 10px 28px #c25c1c75}.wa-words{font-size:var(--text-xs);font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-dim);text-align:center}.wa-link:hover .wa-words{color:var(--color-text)}.site-footer{padding:var(--space-16) var(--space-5) 4.5rem;text-align:center;border-top:1px solid var(--color-border-soft);background:var(--color-bg)}.footer-mark{width:30px;height:30px;margin-inline:auto;color:var(--color-accent)}.footer-word{font-family:var(--font-display);font-size:var(--text-xl);margin-top:var(--space-4);letter-spacing:-.01em}.footer-line{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-2);letter-spacing:.06em}.footer-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-4);margin-top:var(--space-8)}.footer-nav a{font-size:var(--text-xs);color:var(--color-text-muted);text-decoration:none;letter-spacing:.06em}.footer-nav a:hover{color:var(--color-accent)}.footer-fine{font-size:var(--text-xs);color:var(--color-text-faint);margin-top:var(--space-8)}.dock{position:fixed;inset-inline:0;bottom:0;z-index:40;display:flex;gap:var(--space-2);padding:var(--space-3) var(--space-4) calc(var(--space-3) + env(safe-area-inset-bottom));background:color-mix(in oklab,var(--color-bg) 86%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--color-border-soft);transform:translateY(120%);transition:transform .32s cubic-bezier(.16,1,.3,1)}.dock.is-up{transform:translateY(0)}.btn-dock{flex:1;padding:var(--space-3) var(--space-2);white-space:nowrap;font-size:var(--text-xs);letter-spacing:.03em}.reveal>*{opacity:0;transform:translateY(18px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}.reveal.is-in>*{opacity:1;transform:none}.reveal.is-in>*:nth-child(2){transition-delay:80ms}.reveal.is-in>*:nth-child(3){transition-delay:.15s}.reveal.is-in>*:nth-child(4){transition-delay:.21s}.reveal.is-in>*:nth-child(5){transition-delay:.26s}.reveal.is-in>*:nth-child(6){transition-delay:.3s}@media(prefers-reduced-motion:reduce){.reveal>*{opacity:1;transform:none}}.page-head{padding:calc(var(--space-24) + 2rem) 0 var(--space-12);position:relative;overflow:hidden}.page-head:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(80% 60% at 50% 0%,var(--glow) 0%,transparent 70%);mix-blend-mode:screen}[data-theme=light] .page-head:before{mix-blend-mode:normal;opacity:.5}.page-title{font-family:var(--font-display);font-size:var(--text-3xl);line-height:1.02;letter-spacing:-.02em;margin-top:var(--space-4)}.page-title em{color:var(--color-accent)}.page-head .lede{margin-top:var(--space-5)}.jump{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-8)}.jump a{font-size:var(--text-xs);letter-spacing:.04em;text-decoration:none;padding:.4rem .8rem;border-radius:var(--radius-full);border:1px solid var(--color-border-soft);color:var(--color-text-muted);transition:color .2s ease,border-color .2s ease}.jump a:hover{color:var(--color-accent);border-color:var(--color-accent)}.section-short{background:var(--color-surface)}.four{display:grid;gap:var(--space-6);margin-top:var(--space-8)}.four li{display:grid;gap:var(--space-2);padding-left:var(--space-5);border-left:1px solid var(--color-border)}.four-k{font-family:var(--font-display);font-size:1.4rem;line-height:1.15;color:var(--color-text)}.four-v{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.65}.perks{display:grid;gap:0;margin-top:clamp(var(--space-10),8vw,var(--space-12))}.perks li{display:grid;gap:var(--space-1);padding-block:.625rem;border-top:1px solid var(--color-border-soft)}.perks li:last-child{border-bottom:1px solid var(--color-border-soft)}.perk-k{font-family:var(--font-display);font-size:1.125rem;line-height:1.2;color:var(--color-text)}.perk-v{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.45;max-width:44ch}@media(min-width:34rem){.perks li{grid-template-columns:10rem 1fr;gap:var(--space-5);align-items:baseline}}.rule-gold{display:grid;place-items:center;margin-block:clamp(1rem,4.6vw,1.65rem)}.rule-gold .flourish{width:min(20rem,82%);height:auto;overflow:visible;filter:drop-shadow(0 0 8px rgba(214,172,96,.2))}.section-invite{padding-bottom:clamp(var(--space-10),7vw,var(--space-12))}.section-diff{padding-block:clamp(var(--space-8),6vw,var(--space-10))}.section-short{padding-top:clamp(var(--space-10),7vw,var(--space-12))}.break-bare .break-img{filter:brightness(.78) saturate(1.04)}[data-theme=light] .break-bare .break-img{filter:brightness(.84) saturate(1.04)}.break-bare:after{display:none}.break-bare .break-img{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 9%);mask-image:linear-gradient(to bottom,transparent 0,#000 9%)}@media(min-width:60rem){.dock{display:none}.four{grid-template-columns:1fr 1fr;gap:var(--space-8) var(--space-6)}.site-footer{padding-bottom:var(--space-16)}}.page-hiw .section:not(.section-enter){padding-block:clamp(var(--space-8),7vw,var(--space-12))}.page-hiw .page-head{padding:calc(var(--space-16) + 1.5rem) 0 var(--space-8)}.page-hiw .jump,.page-hiw .ticks,.page-hiw .pull{margin-top:var(--space-6)}.page-hiw .cols{margin-top:var(--space-6);gap:var(--space-6)}.page-hiw .section-rules .body,.page-hiw .filter-card{margin-top:var(--space-6)}.page-hiw .steps{margin-top:var(--space-6);gap:var(--space-6)}.page-hiw .renew-demo,.page-hiw .price-card{margin-top:var(--space-6)}.hero .eyebrow{color:#ff9a58;font-weight:600;font-size:clamp(.6875rem,.62rem + .3vw,.875rem);letter-spacing:.2em;text-transform:uppercase;text-shadow:0 1px 3px rgba(6,4,10,.9),0 2px 18px rgba(6,4,10,.7)}.hero h1{margin-top:1.05rem;font-size:clamp(2.5rem,.9rem + 4.15vw,4.65rem);line-height:.93;letter-spacing:-.022em;color:#ededed;text-wrap:nowrap;text-shadow:0 2px 40px rgba(12,4,6,.7)}.hero h1 em{color:#f09050;font-style:italic}.hero .lede{margin-top:1.45rem;font-family:var(--font-body);font-size:clamp(.9375rem,.9rem + .28vw,1.125rem);line-height:1.55;letter-spacing:0;color:#ffffffde;opacity:1;max-width:46ch;text-shadow:0 1px 20px rgba(14,2,6,.85)}.hero-rule{width:min(25.5rem,100%);height:0;border:0;border-top:1px solid rgba(255,255,255,.2);margin-top:1.85rem}.hero-trust{display:flex;align-items:flex-start;gap:clamp(.9rem,2.6vw,1.75rem);margin-top:1.35rem}.hero-trust .trust-item{display:flex;align-items:flex-start;gap:.7rem;font-size:clamp(.8125rem,.78rem + .2vw,.9375rem);line-height:1.42;color:#ffffffe6;max-width:20ch;text-shadow:0 1px 18px rgba(14,2,6,.85)}.hero-trust .trust-item+.trust-item{border-left:1px solid rgba(255,255,255,.18);padding-left:clamp(.9rem,2.6vw,1.75rem)}.hero-trust .trust-icon{width:26px;height:26px;flex:none;margin-top:.05rem;color:#f0894a;filter:drop-shadow(0 1px 10px rgba(14,2,6,.7))}.hero .cta-stack{margin-top:2.1rem}.scroll-cue{color:#f0894a}@media(min-aspect-ratio:1/1){.hero{justify-content:flex-start;padding-top:clamp(3.5rem,18vh,13rem);padding-bottom:1.5rem}.hero .hero-body{margin-inline:clamp(.75rem,1.6vw,1.5rem) auto;max-width:34rem}.hero-media img{object-position:50% 50%}.hero-media:after{background:linear-gradient(to right,#060408c2,#06040899 20%,#08050857 38%,#0a06081f 55%,#0a060800 70%),linear-gradient(to bottom,#08050857,#08050800 22% 74%,#06040857)}}@media(max-aspect-ratio:1/1){.hero{justify-content:center;padding-top:5rem;padding-bottom:clamp(3rem,8vh,5.5rem)}.hero-media img{object-position:60% 50%}.hero-media:after{background:linear-gradient(to bottom,#06060e85,#06060e1a,#08060c29 32%,#08060c66,#07050a99 68%,#06040ab3),linear-gradient(to right,#04040880,#04040838 34%,#04040800 64%)}.hero .cta-stack{margin-top:2.1rem;align-items:stretch}.hero .hero-code{justify-items:center}.hero .hero-body{margin-top:clamp(0px,15vh,150px)}}@media(min-aspect-ratio:1/1){.hero .hero-code input,.hero .hero-code-label{width:11rem}}@media(min-aspect-ratio:1/1)and (max-height:800px){.hero{padding-top:clamp(3rem,12vh,7rem)}.hero h1{font-size:clamp(2.2rem,.8rem + 3.4vw,3.9rem)}.hero .lede{margin-top:1.1rem}.hero-rule{margin-top:1.35rem}.hero-trust{margin-top:1rem}.hero .cta-stack{margin-top:1.5rem}}@media(max-aspect-ratio:1/1){.hero .eyebrow{display:block;line-height:1.55}.hero .eyebrow .eyebrow-dot{display:none}.hero .eyebrow .eyebrow-l2{display:block}}.section-bg-hands img{filter:brightness(.72) saturate(1.08) contrast(1.02);object-position:50% 40%}[data-theme=light] .section-bg-hands img{filter:brightness(.86) saturate(1.04)}.section-bg-hands:after{background:radial-gradient(70% 50% at 50% 55%,rgba(196,74,44,.07) 0%,transparent 74%),linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.42) 18%,rgba(8,10,20,.48) 58%,var(--color-bg) 100%)}.section-enter .break-lead{position:relative;top:auto;left:auto;right:auto;margin:var(--space-5) auto 0;padding:0;max-width:34ch}.section-enter .break-quote{margin:var(--space-6) auto 0;padding:0;max-width:22ch;font-size:var(--text-3xl)}.section-enter .wrap.is-in .break-lead,.section-enter .wrap.is-in .break-quote{opacity:1;transform:none}.section-enter .enter-form{margin-top:clamp(2.25rem,6vw,3.5rem)}@media(max-aspect-ratio:1/1){.hero h1{font-size:clamp(2.25rem,1.2rem + 2.8vw,3.6rem)}}.section-bg-hands img{filter:brightness(.84) saturate(1.05) contrast(1.06);object-position:50% 44%}.section-bg-hands:after{background:radial-gradient(70% 50% at 50% 55%,rgba(196,74,44,.06) 0%,transparent 74%),linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.34) 18%,rgba(8,10,20,.38) 58%,var(--color-bg) 100%)}@media(max-aspect-ratio:1/1){.hero .hero-body{margin-top:clamp(0px,8vh,80px)}}.hero .lede-2{margin-top:.85rem}.hero .hero-rule{margin-top:1.6rem}.hero .hero-media img{filter:brightness(1.12) saturate(1.07) contrast(1.01)}@media(min-aspect-ratio:1/1){.hero .hero-media:after{background:linear-gradient(to right,#060408bd,#0604088f 20%,#08050842 38%,#0a06080f 55%,#0a060800 68%),linear-gradient(to bottom,#08050842,#08050800 22% 76%,#06040842)}}@media(max-aspect-ratio:1/1){.hero .hero-media:after{background:linear-gradient(to bottom,#06060e70,#06060e0f,#08060c1a 32%,#08060c47,#07050a75 68%,#06040a94),linear-gradient(to right,#04040870,#0404082e 34%,#04040800 62%)}}.hero .hero-code input{border-color:#fffcf6b8}.hero .hero-code input::placeholder{color:#faf5ee9e}.section-bg-open img{filter:brightness(1.24) saturate(1.08) contrast(1.04)}.section-bg-open:after{background:radial-gradient(70% 50% at 50% 60%,rgba(196,74,44,.08) 0%,transparent 74%),linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.26) 22%,rgba(8,10,20,.34) 60%,var(--color-bg) 100%)}.section-enter .enter-form{margin-top:clamp(4.5rem,12vw,7rem)}.site-footer{padding:var(--space-8) var(--space-5) var(--space-8)}.site-footer .footer-mark{width:22px;height:22px}.site-footer .footer-word{font-size:var(--text-lg);margin-top:var(--space-2)}.site-footer .footer-line{margin-top:.35rem}.site-footer .footer-nav{margin-top:var(--space-4);gap:var(--space-3)}.site-footer .footer-fine{margin-top:var(--space-3)}@media(max-width:600px){.site-footer{padding:var(--space-6) var(--space-4)}}.section-diff .diff-lede{margin-top:var(--space-4);max-width:40ch;font-size:var(--text-base);line-height:1.6;color:var(--color-text-soft)}@media(min-aspect-ratio:1/1){.hero h1{font-size:clamp(2.4rem,.85rem + 3.4vw,3.9rem)}.hero .lede{max-width:21ch}.hero-media:after{background:linear-gradient(to right,#040306e6,#040306cc,#06040885,#08050833,#0a060800 72%),linear-gradient(to bottom,#0805084d,#08050800 24% 76%,#06040852)}}@media(max-aspect-ratio:1/1){.hero-media img{object-position:58% 42%}}.section-invite .body{color:#fffffff0;text-shadow:0 1px 18px rgba(10,6,8,.9)}.hero .lede,.hero .lede-sub{max-width:21ch}.hero h1{font-size:clamp(2.65rem,1.05rem + 4vw,4.25rem)}.hero .lede{font-size:clamp(.875rem,.85rem + .2vw,.9375rem)}.hero .lede-sub{font-size:clamp(.8125rem,.8rem + .14vw,.875rem)}.hero .lede-sub{margin-top:.5rem}.hero .lede-verified{letter-spacing:.06em;text-transform:uppercase;font-size:clamp(.6875rem,.67rem + .12vw,.75rem);color:var(--color-accent-soft)}.hero .lede-extra{max-width:26ch}.hero .lede-verified{max-width:none;white-space:nowrap}.hero:after{content:"";position:absolute;left:0;right:0;bottom:0;height:38%;background:linear-gradient(to bottom,transparent 0%,rgba(8,10,20,.26) 36%,rgba(8,10,20,.72) 70%,var(--color-bg) 100%);pointer-events:none;z-index:-1}.section-bg-open:after{background:radial-gradient(70% 50% at 50% 60%,rgba(196,74,44,.08) 0%,transparent 74%),linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.86) 9%,rgba(8,10,20,.34) 26%,rgba(8,10,20,.36) 56%,rgba(8,10,20,.88) 90%,var(--color-bg) 100%)}.section-bg-hands:after{background:radial-gradient(70% 50% at 50% 55%,rgba(196,74,44,.06) 0%,transparent 74%),linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.84) 8%,rgba(8,10,20,.34) 24%,rgba(8,10,20,.4) 60%,rgba(8,10,20,.88) 92%,var(--color-bg) 100%)}.section{padding-block:clamp(2.25rem,5.5vw,3.5rem)}.section-invite{padding-block:clamp(2.5rem,6vw,4rem)}.section-diff{padding-block:clamp(2.25rem,5vw,3.25rem)}.section-enter{padding-top:clamp(2rem,5vw,3rem);padding-bottom:clamp(2.5rem,5.5vw,4rem)}.section-bg-hands img{object-position:50% 22%}.section-enter .enter-form{margin-top:clamp(9rem,26vw,14rem)}.section-enter .section-bg{inset:0 0 auto;height:58%}.section-bg-hands img{object-position:50% 30%}.section-bg-hands:after{background:linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.8) 8%,rgba(8,10,20,.3) 26%,rgba(8,10,20,.42) 62%,rgba(8,10,20,.92) 88%,var(--color-bg) 100%)}.section-enter .enter-form{margin-top:clamp(6rem,17vw,9rem)}.section-bg-hands:after{background:linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.8) 8%,rgba(8,10,20,.3) 26%,rgba(8,10,20,.46) 58%,rgba(8,10,20,.86) 78%,var(--color-bg) 96%)}.hero:after{height:26%;background:linear-gradient(to bottom,transparent 0%,rgba(8,10,20,.1) 46%,rgba(8,10,20,.42) 76%,var(--color-bg) 100%)}.section-enter .hands-band{position:relative;inset:auto;width:100vw;margin-left:50%;transform:translate(-50%);height:clamp(260px,40vw,460px);margin-top:clamp(1.75rem,4vw,2.75rem);overflow:hidden}.section-enter .hands-band img{width:100%;height:100%;object-fit:cover;object-position:50% 46%;filter:brightness(1.04) saturate(1.06) contrast(1.03)}.section-enter .hands-band:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.3) 16%,transparent 40%,transparent 62%,rgba(8,10,20,.34) 84%,var(--color-bg) 100%)}[data-theme=light] .section-enter .hands-band img{filter:brightness(1) saturate(1.02)}.section-enter:before{display:none}.section-enter .enter-form{margin-top:clamp(2rem,5vw,3rem)}.section-enter .enter-form{justify-items:center;text-align:center}.section-enter .enter-form label{text-align:center}.section-enter .enter-form .field-row{margin-inline:auto}.section-enter .enter-note{text-align:center;margin-inline:auto}.section-enter .wa-link{margin-inline:auto}.section-enter .hands-band:after{background:linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.55) 10%,rgba(8,10,20,.12) 26%,transparent 42%,transparent 58%,rgba(8,10,20,.14) 74%,rgba(8,10,20,.58) 90%,var(--color-bg) 100%)}.site-footer{background:#2a0d16;border-top-color:#ffd6c424}[data-theme=light] .site-footer{background:#f4e7e6}.swaps{list-style:none;margin:var(--space-8) 0 0;padding:0;display:grid;gap:0}.swaps li{display:grid;gap:.3rem;padding-block:.95rem;border-top:1px solid var(--color-border-soft)}.swaps li:last-child{border-bottom:1px solid var(--color-border-soft)}.swaps .sw-out{font-size:var(--text-sm);line-height:1.45;color:#f7efe36b;text-decoration:line-through;text-decoration-color:#f7efe347;text-decoration-thickness:1px}.swaps .sw-in{font-size:var(--text-base);line-height:1.5;color:var(--color-text)}.swaps .sw-in:before{content:"→";margin-right:.5rem;color:var(--color-accent-soft);font-size:.9em}.menu-btn{width:42px;height:42px;color:var(--color-text);background:color-mix(in oklab,var(--color-surface) 82%,transparent);border-color:#ffd6c44d;box-shadow:0 2px 14px -6px #0000008c;transition:color .2s ease,border-color .2s ease,background .2s ease}.menu-btn svg{width:20px;height:20px}.menu-btn:hover,.menu-btn:focus-visible,.menu-btn[aria-expanded=true]{color:var(--color-accent-soft);border-color:var(--color-accent);background:color-mix(in oklab,var(--color-accent) 14%,var(--color-surface))}.lang-switch{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:var(--radius-full);background:color-mix(in oklab,var(--color-surface) 82%,transparent);border:1px solid rgba(255,214,196,.3);box-shadow:0 2px 14px -6px #0000008c}.lang-switch button{font-family:var(--font-body);font-size:.68rem;font-weight:500;letter-spacing:.09em;line-height:1;padding:.5rem .52rem;border-radius:var(--radius-full);color:var(--color-text-muted);background:none;border:0;cursor:pointer;transition:color .2s ease,background .2s ease}.lang-switch button:hover{color:var(--color-text)}.lang-switch button.is-on{color:var(--color-bg);background:var(--color-accent-soft)}.header-actions{display:flex;align-items:center;gap:var(--space-3)}@media(max-width:24rem){.lang-switch button{padding:.45rem .4rem;font-size:.64rem}.header-actions{gap:var(--space-2)}}.lang-pick{position:absolute;top:calc(100% + .3rem);right:var(--space-5);z-index:2}.site-header:has(.menu-panel.is-open) .lang-pick{opacity:0;pointer-events:none}.lang-pick{transition:opacity .2s ease}.lang-toggle{width:42px;height:42px;border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center;gap:2px;color:var(--color-text);background:color-mix(in oklab,var(--color-surface) 82%,transparent);border:1px solid rgba(255,214,196,.3);box-shadow:0 2px 14px -6px #0000008c;cursor:pointer;transition:color .2s ease,border-color .2s ease,background .2s ease}.lang-toggle .lang-code{font-family:var(--font-body);font-size:.625rem;font-weight:500;letter-spacing:.08em;line-height:1}.lang-toggle svg{width:8px;height:5px;flex:none;opacity:.8;transition:transform .2s ease}.lang-toggle:hover,.lang-toggle:focus-visible,.lang-toggle[aria-expanded=true]{color:var(--color-accent-soft);border-color:var(--color-accent);background:color-mix(in oklab,var(--color-accent) 14%,var(--color-surface))}.lang-toggle[aria-expanded=true] svg{transform:rotate(180deg)}.lang-menu{position:absolute;top:calc(100% + .4rem);right:0;min-width:9.5rem;display:flex;flex-direction:column;padding:var(--space-2);background:color-mix(in oklab,var(--color-surface) 97%,transparent);-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2);border:1px solid var(--color-border-soft);border-radius:var(--radius-lg);box-shadow:0 24px 70px -20px #0009;opacity:0;transform:translateY(-6px);transition:opacity .2s ease,transform .2s ease}.lang-menu.is-open{opacity:1;transform:translateY(0)}.lang-menu button{text-align:left;padding:.42rem var(--space-3);border:0;border-radius:var(--radius-sm);background:none;cursor:pointer;font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-muted);transition:color .2s ease,background .2s ease}.lang-menu button:hover{color:var(--color-text);background:color-mix(in oklab,var(--color-accent) 12%,transparent)}.lang-menu button.is-on{color:var(--color-accent)}@media(min-width:48rem){.hero .hero-body{margin-inline:clamp(3rem,5.5vw,6rem) auto;max-width:44rem}.hero .lede{max-width:38ch}.hero .lede-sub{max-width:34ch}.hero-rule{max-width:30rem}}@media(min-width:48rem){.site-header{padding-left:calc(clamp(3rem,5.5vw,6rem) + var(--space-5))}}@media(min-width:48rem){.section-enter .break-quote{font-size:var(--text-2xl)}}@media(min-width:48rem){.hero .hero-rule{display:none}.hero .enter-form,.hero form{margin-top:2.4rem}.site-footer .footer-fine{color:var(--color-text-muted)}}.hero .hero-rule{display:none}.hero .enter-form,.hero form{margin-top:2.4rem}.section-enter .break-quote{font-size:var(--text-2xl)}.site-footer .footer-fine{color:var(--color-text-muted)}.section-bg-open img{filter:brightness(1.42) saturate(1.1) contrast(1.04)}.section-bg-open:after{background:radial-gradient(70% 50% at 50% 60%,rgba(196,74,44,.08) 0%,transparent 74%),linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.84) 9%,rgba(8,10,20,.24) 26%,rgba(8,10,20,.26) 56%,rgba(8,10,20,.86) 90%,var(--color-bg) 100%)}.section-bg-open{isolation:isolate}.section-bg-open:before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(46% 40% at 88% 26%,rgba(255,226,196,.3) 0%,rgba(255,214,180,.16) 42%,transparent 78%),radial-gradient(22% 16% at 90% 50%,rgba(255,232,206,.2) 0%,transparent 74%)}.section-invite .body{text-shadow:0 1px 3px rgba(8,6,10,.88)}.section-bg-open:after{background:linear-gradient(to right,rgba(6,5,9,.66) 0%,rgba(6,5,9,.58) 38%,rgba(6,5,9,.2) 62%,transparent 78%),radial-gradient(70% 50% at 50% 60%,rgba(196,74,44,.08) 0%,transparent 74%),linear-gradient(to bottom,var(--color-bg) 0%,rgba(8,10,20,.84) 9%,rgba(8,10,20,.24) 26%,rgba(8,10,20,.26) 56%,rgba(8,10,20,.86) 90%,var(--color-bg) 100%)}@media(max-width:47.99rem){.hero .enter-form,.hero form,.hero .cta-stack{margin-top:1.1rem}}@media(max-width:47.99rem){.hero .scroll-cue{bottom:calc(var(--space-5) + 1.4rem)}}.lang-row.lang-pick{display:block}.lang-menu .lang-btn{width:100%}
/* ── User adjustments v2 (Aug 31 2026) ──────────────────────────────
   1. Hero copy block pushed lower on desktop (unchanged).
   2. Section-invite (dance.jpg — man/woman dancing, warm wine tones):
      previous darkening was too aggressive; restore a warm, romantic look.
   3. Section-door / hands-band (table-hands.jpg — hands + two glasses):
      this was the over-saturated one; darken and soften it. */
@media (min-width: 900px){
  .hero .hero-body{margin-top:clamp(90px, 12vh, 150px) !important;}
}

/* Hero sizing pass (v34):
   — leave "Rio de Janeiro" position + font unchanged (same tracked caps)
   — make "Dating by invitation only" a larger second line, same font as
     the rest of the eyebrow (tracked sans caps), warm gold color for contrast
   — grow "Who's in Rio tonight?" one visual step */
.hero .eyebrow .eyebrow-l2{
  display: block;
  margin-top: .5rem;
  font-size: clamp(.95rem, .85rem + .55vw, 1.35rem);
  letter-spacing: .18em;
  color: #ffb56b;
}
.hero h1{
  font-size: clamp(3rem, 1.1rem + 5.4vw, 6.25rem) !important;
  margin-top: 1.15rem !important;
}
@media (max-width: 720px){
  .hero h1{
    font-size: clamp(2.75rem, 1rem + 6.2vw, 4rem) !important;
  }
}
/* By-invitation is now a flat dark section (no photo behind text) */
.section-invite--flat .section-bg,
.section-invite--flat .section-bg-open{ display:none !important; }

/* Warm dance photo as a horizontal separator band between By-invitation
   and What's-different. Full-bleed edge-to-edge, dimmed & filtered so the
   image reads as brand-mood, not raw photography. */
.photo-band{
  position: relative;
  display: block;
  width: 100vw;
  max-width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  height: clamp(280px, 42vw, 520px);
  overflow: hidden;
  isolation: isolate;
}
.photo-band img{
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 32%;
  filter: brightness(.68) saturate(.86) contrast(1.05) sepia(.08);
}
.photo-band:after{
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(80% 60% at 50% 55%, rgba(196,74,44,.06) 0%, transparent 74%),
              linear-gradient(to bottom,
                var(--color-bg) 0%,
                rgba(8,10,20,.72) 12%,
                rgba(8,10,20,.42) 35%,
                rgba(8,10,20,.42) 60%,
                rgba(8,10,20,.72) 88%,
                var(--color-bg) 100%);
}
/* Cheers-band photo: apply a darker moodier filter so it doesn't read as
   raw photography — pushes it toward the brand's moody editorial mood. */
.hands-band img{
  filter: brightness(.62) saturate(.82) contrast(1.05) sepia(.10) !important;
}

/* Enter section sunset background: shift the crop upward so the tops of the
   mountains and more of the skyline are visible on wide viewports. Applies
   to both homepage and how-it-works page (they share this markup). */
.section-enter .section-bg-dusk img{
  object-position: 50% 22% !important;
}

/* Footer: make the crimson/gold band roughly half its previous width —
   centered, rounded, with the surrounding page background showing beside it
   — instead of stretching edge to edge. Also shorten vertically. */
.site-footer{
  max-width: 44rem;
  margin-inline: auto;
  margin-block: var(--space-8);
  padding: var(--space-6) var(--space-6) !important;
  border-radius: var(--radius-lg);
  border-top: 0 !important;
}
@media (max-width: 720px){
  .site-footer{
    max-width: none;
    margin-inline: var(--space-4);
    padding: var(--space-5) var(--space-5) !important;
  }
}

/* Mobile-only: make the sunset door section fade into deep black at the
   bottom so the visible crimson footer is just a small sliver, per user
   feedback (looks better on mobile than a big sunset-to-crimson meeting). */
@media (max-width: 720px){
  .section-enter .section-bg-dusk:after{
    background: radial-gradient(70% 40% at 50% 45%, rgba(196,74,44,.06) 0%, transparent 74%),
                linear-gradient(to bottom,
                  var(--color-bg) 0%,
                  rgba(8,10,20,.35) 22%,
                  rgba(8,10,20,.55) 55%,
                  rgba(8,10,20,.88) 78%,
                  var(--color-bg) 96%) !important;
  }
}
.hands-band:after{
  background: linear-gradient(to bottom,
                var(--color-bg) 0%,
                rgba(8,10,20,.65) 10%,
                rgba(8,10,20,.30) 30%,
                rgba(8,10,20,.30) 60%,
                rgba(8,10,20,.65) 88%,
                var(--color-bg) 100%) !important;
}


/* v35 — compact full-bleed footer + desktop eyebrow stack */
.site-footer{
  padding:1.35rem var(--space-5) 1.45rem!important;
  background:linear-gradient(100deg,#25050d 0%,#3a0b16 50%,#24050d 100%)!important;
  border-top:1px solid rgba(240,161,115,.22)!important;
}
.footer-mark{width:23px!important;height:23px!important}
.footer-word{font-size:1.65rem!important;margin-top:.28rem!important}
.footer-line{margin-top:.18rem!important}
.footer-nav{gap:1rem!important;margin-top:.7rem!important}
.footer-fine{margin-top:.65rem!important}
@media (min-width:721px){
  .hero .eyebrow{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:.45rem!important}
  .hero .eyebrow .eyebrow-dot{display:none!important}
  .hero .eyebrow .eyebrow-l2{display:block!important;margin-top:0!important}
}


/* ============================================================
   v36 — approved edits
   1. Desktop: "Who's in Rio tonight?" one step smaller.
   2. Desktop + mobile: "Dating by invitation only" smaller,
      kept directly beneath "Rio de Janeiro" in warm gold.
   3. Crimson footer: full bleed edge-to-edge (no card, no side
      margins, no rounded corners) and materially shorter.
   Mobile h1 size is intentionally left unchanged.
   ============================================================ */

/* --- Footer: true full bleed, unrounded, compact --- */
.site-footer{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  margin-inline:0!important;
  margin-block:0!important;
  border-radius:0!important;
  padding:1rem var(--space-5) 1.05rem!important;
  border-top:1px solid rgba(240,161,115,.22)!important;
  background:linear-gradient(100deg,#25050d 0%,#3a0b16 50%,#24050d 100%)!important;
}
.site-footer .footer-mark{width:20px!important;height:20px!important;margin-inline:auto!important}
.site-footer .footer-word{font-size:1.4rem!important;margin-top:.16rem!important;line-height:1.1!important}
.site-footer .footer-line{margin-top:.1rem!important}
.site-footer .footer-nav{gap:.85rem!important;margin-top:.5rem!important}
.site-footer .footer-fine{margin-top:.4rem!important}

@media (max-width:720px){
  .site-footer{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    margin-inline:0!important;
    border-radius:0!important;
    padding:.9rem var(--space-4) .95rem!important;
  }
  .site-footer .footer-word{font-size:1.28rem!important}
  .site-footer .footer-nav{gap:.7rem!important;margin-top:.45rem!important}
}

/* --- "Dating by invitation only": smaller on desktop and mobile --- */
.hero .eyebrow .eyebrow-l2{
  font-size:.82em!important;
  letter-spacing:.16em!important;
}

/* --- Desktop only: two-line eyebrow stack + smaller headline --- */
@media (min-width:721px){
  .hero .eyebrow{
    display:flex!important;
    flex-direction:column!important;
    align-items:flex-start!important;
    gap:.3rem!important;
  }
  .hero .eyebrow .eyebrow-dot{display:none!important}
  .hero .eyebrow .eyebrow-l2{display:block!important;margin-top:0!important}
  .hero h1{
    font-size:clamp(2.7rem,1rem + 4.5vw,5.2rem)!important;
    margin-top:1.05rem!important;
  }
}


/* ============================================================
   v37 — approved refinements
   1. "Dating by invitation only" sized two steps LARGER than
      "Rio de Janeiro", desktop and mobile (same font, same gold).
   2. Footer: more air between "Rio Now" and the location line.
   3. More black between "Message us on WhatsApp" and the footer
      (about an inch), on mobile especially, desktop too.
   4. Mobile only: hero lede lines very slightly tighter.
   ============================================================ */

/* 1 — invitation line larger than "Rio de Janeiro" */
.hero .eyebrow .eyebrow-l2{
  font-size:1.24em!important;
  letter-spacing:.13em!important;
  line-height:1.25!important;
}
@media (min-width:721px){
  .hero .eyebrow{gap:.34rem!important}
  .hero .eyebrow .eyebrow-l2{font-size:1.24em!important}
}

/* 2 — footer: separate "Rio Now" from the location line */
.site-footer .footer-word{margin-top:.14rem!important}
.site-footer .footer-line{margin-top:.5rem!important}
@media (max-width:720px){
  .site-footer .footer-line{margin-top:.46rem!important}
}

/* 3 — more black above the footer */
.section-enter{
  padding-bottom:clamp(6.75rem,7vw + 3rem,9.5rem)!important;
}
@media (max-width:720px){
  .section-enter{padding-bottom:9rem!important}
}

/* 4 — mobile only: tighten the hero lede leading a touch */
@media (max-width:720px){
  .hero .lede{line-height:1.44!important}
}


/* ============================================================
   v38 — centre the "No code yet" + WhatsApp block in the black
   band above the footer, desktop and mobile. The block moves
   down; the black above and below it is balanced.
   ============================================================ */
.section-enter .enter-note{
  margin-top:clamp(4.25rem,3vw + 3rem,5.6rem)!important;
}
.section-enter{
  padding-bottom:clamp(4rem,4vw + 1.4rem,5.4rem)!important;
}
@media (max-width:720px){
  .section-enter .enter-note{margin-top:5rem!important}
  .section-enter{padding-bottom:4.25rem!important}
}


/* ============================================================
   v39 — in the "door" section, push ONLY the invitation-code
   group (label, field, Enter) down so more of the sunset photo
   is visible. The "No code yet" line and the WhatsApp link keep
   their exact v38 position: whatever is added to the form's top
   margin is removed from the note's top margin.
   ============================================================ */
@media (min-width:721px){
  .section-enter .enter-form{margin-top:7rem!important}
  .section-enter .enter-note{margin-top:1.6rem!important}
}
@media (max-width:720px){
  .section-enter .enter-form{margin-top:5.5rem!important}
  .section-enter .enter-note{margin-top:1rem!important}
}


/* ============================================================
   v40 — make the invitation-code field in the "door" section as
   bright as the hero's "Enter your code" field: same near-white
   border, same light type and placeholder, same dark blurred
   pane behind it so it reads over the sunset photo.
   ============================================================ */
.section-enter .enter-form label{
  color:#f6efe4e6!important;
  text-shadow:0 1px 16px rgba(20,2,8,.9)!important;
}
.section-enter .enter-form .field-row input{
  background:#0a081075!important;
  border:1px solid #fffcf6b8!important;
  color:#f6efe4!important;
  -webkit-backdrop-filter:blur(3px)!important;
  backdrop-filter:blur(3px)!important;
}
.section-enter .enter-form .field-row input::placeholder{
  color:#faf5ee9e!important;
}
.section-enter .enter-form .field-row input:focus{
  border-color:var(--color-accent-soft)!important;
  background:#0a0810a8!important;
}


/* ============================================================
   v41 — the door is the end of the page.
   1. Drop the two smallest footer lines everywhere, so the
      footer is just the mark, "Rio Now" and the nav row.
   2. On mobile, make the door section tall enough that it plus
      the shortened footer fill exactly one screen. The extra
      height lands as black under "Message us on WhatsApp", and
      there is nothing left to scroll past.
   3. Gentle scroll snap so the door settles at the top.
   ============================================================ */
.site-footer .footer-line,
.site-footer .footer-fine{display:none!important}

.site-footer{
  padding-top:clamp(1.5rem,2vw + .6rem,2.1rem)!important;
  padding-bottom:clamp(1.5rem,2vw + .6rem,2.1rem)!important;
}
.site-footer .footer-nav{margin-top:.85rem!important}

@media (max-width:720px){
  .site-footer{
    padding-top:1.35rem!important;
    padding-bottom:1.5rem!important;
  }
  .site-footer .footer-nav{margin-top:.75rem!important}

  /* One screen: door section + footer. min-height, never fixed, so
     a very small phone can still grow instead of clipping. */
  .section-enter{
    box-sizing:border-box!important;
    /* clear the fixed top bar so "The door" is readable on this last screen */
    padding-top:5rem!important;
    min-height:calc(100vh - 125px)!important;   /* fallback for older engines */
    min-height:calc(100svh - 125px)!important;  /* modern: excludes browser chrome */
  }

}

/* ============================================================
   v42 — remove the v41 scroll snap. The sizing above already
   makes the door the last screen, and the snap was dragging the
   page back to the door whenever you tried to reach the footer.
   ============================================================ */
html{scroll-snap-type:none!important}
.section-enter{scroll-snap-align:none!important}


/* ============================================================
   v43 — lock the door as the last screen (mobile).
   v41/v42 used min-height with a hardcoded 125px footer, so on a
   real phone the door could still be TALLER than the space left
   and you could scroll its heading off the top. v43 instead:
     1. Makes the mobile footer genuinely small (~80px).
     2. Gives the door an EXACT height (JS writes the real number
        from innerHeight - footer height; the calc below is the
        no-JS fallback) and centres its content, so the surplus
        lands as black under "Message us on WhatsApp".
     3. overflow:hidden so nothing can ever push the page past it.
   ============================================================ */
@media (max-width:720px){
  .site-footer{
    padding-top:.8rem!important;
    padding-bottom:.9rem!important;
  }
  .site-footer .footer-mark{width:17px!important;height:17px!important;margin-bottom:.15rem!important}
  .site-footer .footer-word{font-size:.92rem!important;margin:0!important;line-height:1.15!important}
  .site-footer .footer-nav{
    margin-top:.42rem!important;
    gap:.55rem .85rem!important;
    font-size:.72rem!important;
    line-height:1.1!important;
  }

  .section-enter{
    box-sizing:border-box!important;
    display:flex!important;
    flex-direction:column!important;
    justify-content:flex-start!important;
    padding-top:6rem!important;
    padding-bottom:1rem!important;
    /* exact, not min-: nothing may exist below this screen */
    min-height:0!important;
    height:calc(100vh - 84px)!important;   /* fallback engines */
    height:calc(100svh - 84px)!important;  /* excludes browser chrome */
    overflow:hidden!important;
  }
  .section-enter > .wrap{width:100%!important}

  /* the v39 offset now shrinks on short phones instead of overflowing */
  .section-enter .enter-form{margin-top:clamp(1.1rem,6.5vh,5.5rem)!important}
}

/* v43b — very short phones (<=640px tall): tighten so the whole door,
   including the WhatsApp badge, fits inside the locked screen. */
@media (max-width:720px) and (max-height:640px){
  .section-enter{padding-top:4.9rem!important;padding-bottom:.6rem!important}
  .section-enter .kicker{margin-bottom:.35rem!important}
  .section-enter .closer{font-size:2rem!important;line-height:1.12!important}
  .section-enter .enter-form{margin-top:.9rem!important}
  .section-enter .enter-note{margin-top:.7rem!important;font-size:.95rem!important}
  .section-enter .wa-link{margin-top:.7rem!important}
}

/* ============================================================
   v52 — desktop homepage alignment (>=1024px, home page only).
   Before, at 1440: hero copy started at x=99 while "By invitation"
   and "What's different" sat centred at x=476 — three different
   left edges down one page. Now all three share one axis, and the
   "What's different" column is wide enough that its sentences stop
   breaking two words early ("...when your / trip ends").
   The door stays centred on purpose.
   ============================================================ */
@media (min-width:1024px){
  body[data-page="home"]{
    /* one shared left edge for hero copy, By invitation, What's different */
    --axis: clamp(6rem, 22vw, 20rem);
  }
  /* hero copy moves right — past the middle, but well short of where
     "By invitation" used to sit */
  body[data-page="home"] .hero-body{
    margin-inline:calc(var(--axis) - var(--space-5)) auto !important;
    max-width:46rem;
  }
  /* v115: the header rides the same axis, with matching air on the right,
     so the logo lines up with the hero copy and the language pills and
     menu sit the same distance in from the right edge. */
  body[data-page="home"] .site-header{
    padding-left: var(--axis);
    padding-right: var(--axis);
  }
  /* "By invitation" comes left to meet it */
  body[data-page="home"] .section-invite > .wrap{
    margin-inline:calc(var(--axis) - var(--space-5)) auto;
  }
  /* "What's different" lines up with both, and gets room to breathe */
  body[data-page="home"] .section-diff > .wrap{
    margin-inline:calc(var(--axis) - var(--space-5)) auto;
    max-width:47rem;
  }
  body[data-page="home"] .diff-lede{ max-width:54ch; }
  body[data-page="home"] .perks li{ grid-template-columns:11rem 1fr; }
  body[data-page="home"] .perk-v{ max-width:62ch; }

  /* The hero scrim used to fade to nothing by 62% of the width, which was
     fine when the copy hugged the left edge. With the copy further right it
     would have sat on the bright part of the sunset, so the wash now carries
     further across. */
  body[data-page="home"] .hero .hero-media:after{
    background:
      linear-gradient(to bottom,#06060e78,#06060e14,#08060c26 32%,#08060c4d,#07050a7a 68%,#06040a96),
      linear-gradient(to right,#0404087a,#04040866 42%,#0404084a 66%,#0404081f 82%,#04040800 94%);
  }
}

/* v59 — the hero had a code box and the word "Enter your code" under it, and
   nothing to press: on a phone you had to know to hit the keyboard's return
   key. The field and a Go button now sit on one row. The label stays, but it
   now describes the field rather than pretending to be the action. */
.hero-code-row{display:flex;align-items:stretch;gap:.4rem;justify-content:center}
.hero-code .hero-code-row input{width:9.25rem}
.hero-code-go{
  padding:.12rem .95rem;border-radius:.5rem;cursor:pointer;
  background:var(--color-accent);border:1px solid var(--color-accent);
  color:#fff;font-family:inherit;font-size:.75rem;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;line-height:1.5;
  transition:filter var(--transition-interactive),transform var(--transition-interactive);
}
.hero-code-go:hover{filter:brightness(1.1)}
.hero-code-go:active{transform:translateY(1px)}
.hero-code-go:focus-visible{outline:2px solid #fff;outline-offset:2px}
.hero-code-label{width:auto}


/* v65 — Terms fine print. Genuinely fine print: smaller, dimmer, and set
   apart from the body copy around it, but selectable, indexable and legible
   at arm's length. Article 49 is disclosed here rather than beside the pay
   button; the right applies either way, and hiding it would neither remove it
   nor survive a look from anyone enforcing it. */
.fine-h{
  margin:1.6rem 0 .35rem;
  font-family:inherit;
  font-size:.82rem;
  font-weight:600;
  letter-spacing:.04em;
  text-transform:uppercase;
  opacity:.62;
}
.body.fine{
  font-size:.82rem;
  line-height:1.65;
  opacity:.62;
  max-width:46ch;
}
@media (max-width:640px){.hero .lede,.hero .lede-sub{max-width:29ch}}

/* ── v70 ── readability on the phone ──────────────────────────────────────
   Both hero lines were being drawn at #f6efe4cc — 80% alpha — and the first
   one then had opacity:.93 layered on top of that, so it was landing at about
   74% over a photograph. That is why "built for adults" and the line about
   straight or gay read as grey rather than white. Full strength now, shadow
   kept because the words still sit on an image.
   Desktop already set the first line to #ffffffde; this brings the second one
   up to match instead of leaving it dimmer than the line above it. */
.hero .lede{ color:#fffdf9; opacity:1; }
.hero .lede-sub{ color:#fdf8f0; opacity:1; }

/* The dance photograph below "You were invited for a reason" was filtered down
   to brightness(.68), which on a phone screen in daylight is close to a dark
   rectangle. Lifted, with a little of the sepia taken out so skin tones stay
   warm rather than muddy. The gradient fade into the page background is
   untouched, so it still blends at top and bottom. */
.photo-band img{ filter:brightness(1.30) saturate(.92) contrast(1.03) sepia(.04); }

/* ── v73 ── hero spacing on phones, at the right scale ────────────────────
   v72 anchored the layout correctly but the movement was far too small to see.
   On a 672px-tall S22 screen it lifted the text 33px and moved the code box
   one pixel. Two errors behind that:

   1. Scale. An S22 shows 360 CSS px across roughly 2.8 inches of glass, so an
      inch is about 129 CSS px and half an inch is ~64px. I had been treating
      33px as half an inch. It is a quarter.
   2. The anchor works against the lift. .cta-stack{margin-top:auto} pins the
      code box to the end of the hero body, so lifting the text only grows the
      empty middle — the code box does not follow. Moving it down needs the
      hero's own bottom padding reduced, which is a separate lever.

   Space audit at 360×672 showed where the room was: 47px of dead air between
   the header and the eyebrow, 33px between the code label and the arrow, and
   25px beneath the arrow. This spends it.

   Portrait only. Landscape and desktop keep their own rules. */
@media (max-aspect-ratio: 1/1){
  .hero{
    /* v73 used 2.6rem, which lifted the text 60px on a 672px screen — slightly
       too far. 4.6rem gives 32px of that back, a quarter inch at this screen's
       ~129 CSS px per inch, for a net lift of 28px from v70.

       This is the only lever touched in v74. The code box and arrow are
       positioned from the BOTTOM of the hero (padding-bottom, plus the
       margin-top:auto anchor), so padding at the top cannot reach them — it
       spends the slack in the middle instead. Verified rather than assumed:
       both land on the identical pixel at every height from 620 to 915. */
    padding-top: 4.6rem;
    /* Was clamp(4.75rem, 9vh, 6rem) = 76px here. This is the lever that moves
       the code box down: the hero body's content box ends higher, so the
       anchored code box follows it down. */
    padding-bottom: 3rem;
  }
  .hero-body{
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    /* Was clamp(0px, 2vh, 20px). Zeroed — the remaining 13px of lift. */
    margin-top: 0;
  }
  /* The anchor, unchanged from v72 and the reason the geometry is identical on
     every phone height. */
  .hero-body .cta-stack{ margin-top: auto; }
  /* Arrow lower again. 14px of clearance is enough that Android's gesture bar
     does not sit on the chevron, and the chevron is drawn in the middle of a
     4.5x2.5rem box so the visible gap is larger than the number. */
  .hero .scroll-cue{ bottom: .875rem; }
}

/* ── v75 ── a darker left side behind the hero text, homepage only ────────
   The eyebrow lines sit at y≈127 on a 672px screen, which is 19% down — and
   19% is exactly where the existing top-to-bottom scrim is at its weakest
   (rgba(6,6,14,.44) at the very top, falling to .06 by the second stop). So
   "RIO DE JANEIRO" and "DATING BY INVITATION ONLY", both warm orange, were
   landing on undimmed orange sky. Worst possible pairing.

   Three layers. The vertical one is copied unchanged from the rule this
   overrides — it is only restated because the shorthand replaces all layers at
   once. The horizontal scrim is strengthened, and a soft pool is added over the
   upper left, aimed at the two eyebrow lines specifically.

   Scoped tightly on purpose:
     body[data-page="home"]  — homepage only, and .hero exists only in
                               index.html anyway, so this is belt and braces
     max-aspect-ratio: 1/1   — portrait phones only
   Desktop keeps its own left scrim from the min-width:1024px rule, untouched.
   Specificity here is 0,3,2, which clears the 0,2,2 rule it replaces. */
@media (max-aspect-ratio: 1/1){
  body[data-page="home"] .hero .hero-media:after{
    background:
      /* vertical, unchanged */
      linear-gradient(to bottom,#06060e70,#06060e0f,#08060c1a 32%,#08060c47,#07050a75 68%,#06040a94),
      /* left scrim: was 70/2e/00 at 0/34/62%. Deeper, and reaching a little
         further across so the paragraph gets some of the benefit too. */
      linear-gradient(to right,#040408a8,#04040866 30%,#0404082b 48%,#04040800 68%),
      /* the pool behind the eyebrow, anchored to the upper left corner */
      radial-gradient(125% 48% at 0% 15%,#04040857,#04040800 72%);
  }
}

/* ---- v78: hero head, as approved ---------------------------------------
   Built on v75 (the version live on staging). Three things, all homepage.

   1. "Rio de Janeiro" removed in index.html, not hidden in CSS, so the
      i18n walker has no orphan string to translate and nothing renders at
      zero size. The <span class="eyebrow-l2"> survives untouched, keeping
      its own 1.24em size at every breakpoint -- which a font-size:0 trick
      on the parent would have destroyed.
   2. margin-top:8px on that span removed, so "Dating by invitation only"
      lands on the exact pixel "Rio de Janeiro" used to occupy (y=127 at
      360x672). Not near it -- on it.
   3. Space opened between that line and the headline.

   Headline: still Instrument Serif. line-height .93 -> 1.06 and the "?"
   given room after the italic "t" (it was at 0px, italics lean right).
   .18em/.26em compensation on margin-top is how the added leading is paid
   for; the +19px on top is the requested gap. em units so the clamp()
   font-size is tracked at every breakpoint automatically.

   Specificity: body[data-page="home"] .hero X == 0,3,1, clearing the
   0,2,1 !important chain earlier in this minified file. Verified by
   computed style at ten viewports, not assumed.
   ---------------------------------------------------------------------- */
body[data-page="home"] .hero .eyebrow .eyebrow-l2{
  margin-top: 0 !important;
}
body[data-page="home"] .hero h1{
  line-height: 1.06 !important;
  letter-spacing: -.004em !important;
  margin-top: calc(1.05rem - .26em + 34px) !important;
}
@media (max-width: 720px){
  body[data-page="home"] .hero h1{
    margin-top: calc(1.15rem - .26em + 19px) !important;
  }
}
body[data-page="home"] .hero h1 em{
  margin-right: .08em !important;
}

/* v81: the brand name inside the invite paragraph, in the accent red, so it
   reads as a name and not as the phrase "rio now".
   SUPERSEDED v157: the name is now the logo's warm orange everywhere it
   appears in prose, so this was the one place still reading red -- it is the
   only hand-written .brand span left in body copy, and it sits on the busiest
   page. Same colour as .rn-tint, which handles every other paragraph. */
body[data-page="home"] .section-invite .body .brand{
  color: var(--color-accent-soft);
  font-weight: 500;
}

/* v82: "After all…" stands on its own now. Half the normal paragraph gap --
   it is an aside to the sentence above, not a second thought. */
body[data-page="home"] .hero .lede-after{
  margin-top: .55rem;
}

/* The bar photograph under "Who's behind this" reads darker than the
   invitation sunset even at matched average luminance, because it has no
   bright sky to carry the eye. Given its own lift, and the top/bottom
   vignette pulled back so the faces are not swallowed. */
body[data-page="home"] .photo-band.photo-band-bar img{
  filter: brightness(2.05) saturate(.94) contrast(1.0) sepia(.03);
}
body[data-page="home"] .photo-band.photo-band-bar:after{
  opacity: 1;
}


/* More black between the hero arrow and "By invitation only". Added as
   padding on the invitation section so the scroll arrow itself does not move. */


/* v90 — the invitation code has left the hero so the page gets read before it
   asks for anything. Three consequences:
   1. The chevron rises into roughly the space the code box occupied.
   2. It fades the moment the reader starts scrolling.
   3. Less black under it before "By invitation only", since the code box is
      no longer there to fill the gap. */
@media (max-width: 47.99rem){
  .hero .scroll-cue{ bottom: 4rem; }
}
@media (min-width: 48rem){
  .hero .scroll-cue{ bottom: 6.5rem; }
}
body.cue-gone .scroll-cue{
  opacity: 0;
  translate: -50% 10px;
  pointer-events: none;
}
body[data-page="home"] .section-invite#invite{ padding-top: 16px; }
@media (min-width: 900px){
  body[data-page="home"] .section-invite#invite{ padding-top: 32px; }
}

/* v91 — a little more air between the eyebrow and the headline, and the
   chevron up another notch. The eyebrow must not move; only what follows it. */
/* Matches the v78 formula exactly (+34px desktop / +19px mobile) with 20px
   and 18px added, so the eyebrow stays put and only the headline moves down. */
body[data-page="home"] .hero h1{
  margin-top: calc(1.05rem - .26em + 54px) !important;
}
@media (max-width: 720px){
  body[data-page="home"] .hero h1{
    margin-top: calc(1.15rem - .26em + 37px) !important;
  }
}
@media (max-width: 47.99rem){
  .hero .scroll-cue{ bottom: 5.25rem; }
}
@media (min-width: 48rem){
  .hero .scroll-cue{ bottom: 7.75rem; }
}

/* v104 — the section headlines were still at the original line-height:.98
   while the hero was raised to 1.06 in v89. On a two-line headline that read
   as cramped: 13.4px of air between capitals against the hero's 26.4px, only
   35% of cap height against the hero's 49%. Every section headline now uses
   the hero's 1.06 exactly, on all four marketing pages. */
h2, h2.closer, .section h2, .section-diff h2, .section-invite h2, .section-enter h2{
  line-height: 1.06;
}
h3{ line-height: 1.06; }

/* v105 ─────────────────────────────────────────────────────────────────────
   1. The phone menu. The panel carried min-width:13rem, so on a 360px screen
      it opened as a wide slab with "Home" and "How it works" hugging its left
      edge and a hand's width of empty surface to their right. It now shrinks
      to its own content and the labels sit against the right edge, under the
      button that opened them.
   2. The hero paragraph. It was 14.3px on a phone while the body copy under
      "By invitation only" was 16.1px — same typeface, two different sizes.
      The hero now uses the same --text-base and the same 1.6 leading as the
      section body, so the two read as one voice. Width is unchanged: the hero
      column still wraps at 29ch so it clears the photo. */
.menu-panel{
  min-width:0;
  width:max-content;
  max-width:min(78vw,20rem);
  align-items:stretch;
}
.menu-panel a{ text-align:right; }
.menu-panel .menu-cta{ text-align:right; }

.hero .lede,
.hero .lede-sub{
  font-size:var(--text-base);
  line-height:1.6!important;
  letter-spacing:0;
}

/* v106 — the hero paragraph column narrows from 29ch (267px on an S22) to
   28.5ch (262px). That is the widest setting that still breaks the first line
   after "want": "Built for adults who simply want" / "to go out and have a
   good time." Anything past 262px pulls "to" back up onto line one. */
.hero .lede,
.hero .lede-sub{ max-width:26ch; }

/* v108 — retuned to 26ch (234px) now that the real Switzer is loading. Every
   width chosen in v104-v107 was measured against a fallback typeface, because
   the Fontshare API had stopped serving the font. In genuine Switzer at 16.1px
   the line "Built for adults who simply want" is 224px and the same line plus
   "to" is 243px, so the break after "want" holds anywhere from 224px to 242px.
   26ch sits in the middle of that band with ~10px of clearance on each side,
   and the ch unit carries the same proportion up to the 18px desktop size. */

/* v107 — the scroll cue. The old chevron spanned 56px with a 2.2 stroke and
   read as a graphic in its own right. It is now a 24px mark with a 1.8 stroke:
   the same shape, a third of the width. The pulse animation, the tap target
   and the fade-out after the first scroll are unchanged. */
.scroll-cue svg{ width:1.5rem; }

/* v115 — the scroll cue on desktop only. It sat 124px off the bottom of a
   860px-tall hero with nothing under it, and at 24px it read as a speck on a
   1330px screen. On screens 1024px and wider it drops to 44px off the bottom
   and grows to 40px wide. Phones and tablets are untouched. */
@media (min-width:1024px){
  .hero .scroll-cue{ bottom: 2.75rem; width: 5rem; height: 3rem; }
  .hero .scroll-cue svg{ width: 2.5rem; }
}

/* ============================================================
   v116 — four desktop corrections and one that applies to both.
   ============================================================ */
@media (min-width:1024px){
  /* 1. The logo was 26px mark + 22.4px word on a 1330px screen — the same
        size it is on a phone. Scaled up for the desktop header only. */
  .site-header .brand-mark{ width:34px; height:34px; }
  .site-header .brand-word{ font-size:1.85rem; }

  /* 2. The EN / PT / ES pills were 10.9px type in an 8px pill. Bigger type,
        more padding, on desktop only. */
  .site-header .lang-switch{ gap:3px; padding:4px; }
  .site-header .lang-switch button{
    font-size:.8rem;
    letter-spacing:.1em;
    padding:.6rem .78rem;
  }

  /* 3. The hero headline was 76px at 1330 and 83px at 1600 — too big for the
        column it sits in. Down a decisive step: 62px at 1330, 72px ceiling. */
  .hero h1{ font-size:clamp(2.85rem, .9rem + 3.6vw, 4.5rem) !important; }

  /* 4. The bar photograph was cropped so tightly that only the backs of four
        heads were visible — no table, no drinks, no candle. The band is taller
        and the crop drops to 52%, which brings the table and the glasses into
        frame. The top and bottom fades are untouched. */
  body[data-page="home"] .photo-band-bar{ height:clamp(540px, 47vw, 660px); }
  body[data-page="home"] .photo-band-bar img{ object-position:50% 52%; }
}

/* 5. The door. The code box sat on the mountain rather than in the water
      below it. It now drops clear of the sunset into the black, on desktop
      and on the phone. The photograph itself has not moved: it still anchors
      at the top of the section with the ridge line in the same place. */

@media (min-width:1024px){

}

/* The sunset band now ends further up the section, so its lower edge is in
   view instead of hidden behind the code box. The bottom fade is deepened so
   the beach dissolves into the page black instead of stopping at a line.
   The top of the band is untouched — the ridge still anchors where it did. */
body[data-page="home"] .section-enter .section-bg-dusk:after{
  background:
    radial-gradient(70% 40% at 50% 42%, rgba(196,74,44,.06) 0%, transparent 74%),
    linear-gradient(to bottom,
      var(--color-bg) 0%,
      rgba(8,10,20,.34) 20%,
      rgba(8,10,20,.40) 56%,
      rgba(8,10,20,.72) 80%,
      rgba(8,10,20,.94) 93%,
      var(--color-bg) 100%) !important;
}

/* ============================================================
   v117 — the mobile logo, one size up, everywhere it appears.
   Marketing pages only need the base (phone) values raised; the
   desktop block above already sets its own larger pair.
   ============================================================ */
.brand-mark{ width:30px; height:30px; }
.brand-word{ font-size:1.6rem; }

/* ============================================================
   v117 — the door as the last screen, on desktop too, with the
   headline down on the water instead of up on the mountain.
   ============================================================ */
@media (min-width:1024px){
  .site-header{ padding-top:2.4rem; }

  .section-enter{
    box-sizing:border-box;
    display:flex;
    flex-direction:column;
    justify-content:flex-start;
    /* door + footer = one screen; the page cannot scroll past it */
    min-height:calc(100svh - 151px);
    padding-top:clamp(6rem, 21.5vh, 15rem) !important;
    padding-bottom:1.75rem !important;
  }
  .section-enter .enter-form{ margin-top:2.25rem !important; }
}

@media (max-width:720px){
  /* the whole block moves down onto the dark water, and the gap under the
     headline shrinks so the WhatsApp line still lands inside the screen */
  .section-enter{ padding-top:9.5rem !important; }
  .section-enter .enter-form{ margin-top:1.6rem !important; }
  body[data-page="home"] .section-enter .section-bg{ height:52% !important; }
  body[data-page="home"] .section-enter .section-bg-dusk img{ object-position:50% 15% !important; }
}

/* ============================================================
   v118 — the sunset is a photo band again, not a backdrop.
   It runs down past the mountain so the ocean and the beach
   stay visible, and the headline sits on the dark water below
   the ridge instead of up on the peaks.
   ============================================================ */
body[data-page="home"] .section-enter .section-bg{ height:76% !important; }
body[data-page="home"] .section-enter .section-bg-dusk img{
  object-position:50% 16% !important;
  filter:brightness(.94) saturate(1.14) contrast(1.03) !important;
}
body[data-page="home"] .section-enter .section-bg-dusk:after{
  background:
    linear-gradient(to bottom,
      var(--color-bg) 0%,
      rgba(8,10,20,.30) 12%,
      rgba(8,10,20,.22) 40%,
      rgba(8,10,20,.46) 66%,
      rgba(8,10,20,.80) 84%,
      rgba(8,10,20,.96) 94%,
      var(--color-bg) 100%) !important;
}

@media (max-width:720px){
  body[data-page="home"] .section-enter .section-bg{ height:70% !important; }
  body[data-page="home"] .section-enter .section-bg-dusk img{ object-position:50% 12% !important; }
}

/* ============================================================
   v118b — the door composed like every other photo band:
   the whole sunset first (sky, ridge, beach, ocean), then the
   text on the dark water at the foot of it. The one-screen lock
   is released here; the scene needs more height than the text
   was leaving it.
   ============================================================ */
.section-enter{
  min-height:0 !important;
  height:auto !important;
  overflow:visible !important;
  display:block !important;
}
body[data-page="home"] .section-enter .section-bg{
  height:clamp(360px, 46vw, 660px) !important;
}
body[data-page="home"] .section-enter .section-bg-dusk img{
  object-position:50% 34% !important;
  filter:brightness(1.0) saturate(1.14) contrast(1.03) !important;
}
body[data-page="home"] .section-enter .section-bg-dusk:after{
  background:
    linear-gradient(to bottom,
      var(--color-bg) 0%,
      rgba(8,10,20,.26) 10%,
      rgba(8,10,20,.16) 34%,
      rgba(8,10,20,.42) 52%,
      rgba(8,10,20,.80) 74%,
      rgba(8,10,20,.95) 88%,
      var(--color-bg) 100%) !important;
}
@media (min-width:1024px){
  .section-enter{
    padding-top:clamp(20rem, 34vw, 30rem) !important;
    padding-bottom:4rem !important;
  }
  .section-enter .enter-form{ margin-top:2.25rem !important; }
}
@media (max-width:720px){
  .section-enter{
    padding-top:15rem !important;
    padding-bottom:2.5rem !important;
  }
  .section-enter .enter-form{ margin-top:1.6rem !important; }
}

/* ============================================================
   v119 — the hero paragraph is three paragraphs now, so the
   block is retuned to fit above the scroll cue on both sizes:
   the copy starts a little higher, the gaps between paragraphs
   close, and the leading tightens a hair. Type size unchanged.
   ============================================================ */
body[data-page="home"] .hero .hero-body{ margin-top:clamp(38px, 6.5vh, 96px) !important; }
body[data-page="home"] .hero .lede{ margin-top:1.05rem !important; line-height:1.5 !important; }
body[data-page="home"] .hero .lede-after{ margin-top:.9rem !important; }
@media (min-width:1024px){
  body[data-page="home"] .hero .hero-body{ margin-top:clamp(30px, 5vh, 80px) !important; }
  body[data-page="home"] .hero .lede{ margin-top:1.1rem !important; line-height:1.52 !important; }
}

/* v119b — the column widens instead of the type shrinking: 28.5ch was tuned
   for a two-paragraph hero and left 12 lines on the phone. */
body[data-page="home"] .hero .lede{ max-width:33ch !important; line-height:1.55 !important; }
@media (min-width:1024px){
  body[data-page="home"] .hero .lede{ max-width:52ch !important; line-height:1.55 !important; }
}

/* ============================================================
   v120 — phone only. The hero paragraph drops one step in the
   type scale (16.1px -> 14.6px), the headline lifts, and the
   eyebrow stays exactly where v119 put it.
   ============================================================ */
@media (max-width:1023px){
  body[data-page="home"] .hero .lede{ font-size:14.6px !important; line-height:1.58 !important; max-width:34ch !important; }
  body[data-page="home"] .hero h1{ margin-top:.85rem !important; }
  body[data-page="home"] .hero .lede:first-of-type{ margin-top:1.35rem !important; }
}

/* ============================================================
   v122 — desktop only.
   (a) The door: the kicker and headline stay on the text axis;
       everything under them (code label, field, note, WhatsApp)
       is centred on the headline instead of on the page.
   (b) Phone: the hero paragraph narrows so line one ends at
       "alike" -- 220px, between the 204px that phrase measures
       and the 236px it would take to pull "who" up. Desktop
       hero untouched.
   ============================================================ */
@media (min-width:1024px){
  body[data-page="home"] .section-enter .enter-form,
  body[data-page="home"] .section-enter .enter-note,
  body[data-page="home"] .section-enter .wa-link{
    width:21.25rem !important; max-width:21.25rem !important;
    margin-left:0 !important; margin-right:auto !important;
    text-align:center !important;
  }
  body[data-page="home"] .section-enter .enter-form label{ display:block; text-align:center !important; }
  body[data-page="home"] .section-enter .enter-form .field-row{ justify-content:center !important; }
  body[data-page="home"] .section-enter .wa-link{ display:flex !important; flex-direction:column; align-items:center; }
}
@media (max-width:1023px){
  body[data-page="home"] .hero .lede{ max-width:220px !important; }
}

/* ============================================================
   v123
   (a) Phone: the eyebrow stays put; the headline and everything
       under it drop 20px, opening the gap under
       "DATING BY INVITATION ONLY".
   (b) Desktop: the whole door column is centred on the page, on
       the same axis as "Rio Now" in the footer -- kicker,
       headline, code field, note and WhatsApp all share it.
   ============================================================ */
@media (max-width:1023px){
  body[data-page="home"] .hero h1{ margin-top:2.1rem !important; }
}
@media (min-width:1024px){
  body[data-page="home"] .section-enter .wrap{
    margin-inline:auto !important;
    max-width:46rem !important;
    text-align:center !important;
  }
  body[data-page="home"] .section-enter .kicker,
  body[data-page="home"] .section-enter .closer{ text-align:center !important; }
  body[data-page="home"] .section-enter .enter-form,
  body[data-page="home"] .section-enter .enter-note,
  body[data-page="home"] .section-enter .wa-link{
    margin-left:auto !important; margin-right:auto !important;
  }
}

/* ============================================================
   v124
   (a) Desktop hero: line one ends at "who simply" -- 365px sits
       between the 347px that phrase measures and the 393px it
       would take to pull "want" up. Phone untouched.
   (b) How it works, desktop only: every section centred on the
       same page axis as the homepage door and the footer.
   ============================================================ */
@media (min-width:1024px){
  body[data-page="home"] .hero .lede{ max-width:365px !important; }

  body[data-page="hiw"] .page-head .wrap,
  body[data-page="hiw"] .section .wrap{ text-align:center !important; }
  body[data-page="hiw"] .kicker,
  body[data-page="hiw"] h1, body[data-page="hiw"] h2, body[data-page="hiw"] h3,
  body[data-page="hiw"] .lede, body[data-page="hiw"] .body,
  body[data-page="hiw"] .pull, body[data-page="hiw"] .fineprint,
  body[data-page="hiw"] .price-note, body[data-page="hiw"] .steps li p{
    text-align:center !important;
  }
  body[data-page="hiw"] .lede, body[data-page="hiw"] .body,
  body[data-page="hiw"] .pull, body[data-page="hiw"] .steps li p{
    margin-left:auto !important; margin-right:auto !important;
  }
  /* lists: the block is centred, the lines inside stay left-aligned so
     the ticks and the text keep their relationship */
  body[data-page="hiw"] .ticks, body[data-page="hiw"] .swaps,
  body[data-page="hiw"] .steps{
    width:fit-content !important; max-width:100% !important;
    margin-left:auto !important; margin-right:auto !important;
    text-align:left !important;
  }
  body[data-page="hiw"] .ticks li, body[data-page="hiw"] .swaps li,
  body[data-page="hiw"] .steps li{ text-align:left !important; }
  body[data-page="hiw"] .ticks.two{ display:block !important; }
  /* the price card keeps its own internal alignment; only the card
     as a block sits on the centre axis */
  body[data-page="hiw"] .price-card,
  body[data-page="hiw"] .price-card ul,
  body[data-page="hiw"] .price-card li,
  body[data-page="hiw"] .price-unit{ text-align:left !important; }
  body[data-page="hiw"] .price-card ul{
    width:fit-content !important; margin-left:auto !important; margin-right:auto !important;
  }
  body[data-page="hiw"] .price-note{ text-align:center !important; }
}

/* v132 — the "Continue" link a signed-in member sees in the header. */
.member-return{
  align-self:center;
  font-family:var(--font-body);
  font-size:.82rem; letter-spacing:.02em; text-decoration:none;
  color:var(--color-text);
  padding:.42rem .85rem; margin-right:.15rem;
  border:1px solid rgba(247,239,227,.28); border-radius:999px;
  white-space:nowrap; transition:border-color .18s ease, background .18s ease;
}
.member-return:hover,.member-return:focus-visible{
  border-color:rgba(247,239,227,.6); background:rgba(247,239,227,.08);
}
.member-return .mr-word{ display:none; }
.member-return .mr-arrow{ display:block; font-size:1rem; line-height:1; }
@media (min-width:640px){
  .member-return .mr-word{ display:block; }
  .member-return .mr-arrow{ display:none; }
}
@media (min-width:900px){ .member-return{ font-size:.92rem; padding:.5rem 1.05rem; } }

/* v146 — the same logo treatment as the member app: bright soft-accent mark
   and italic, one shadow, so the lockup reads the same on every page. */
.brand-mark{color:var(--color-accent-soft);filter:drop-shadow(0 1px 3px rgba(6,4,10,.9))}
.brand-word-thin{color:var(--color-accent-soft)}
.brand{text-shadow:0 1px 3px rgba(6,4,10,.92),0 2px 16px rgba(6,4,10,.75)}

/* ── v157 · the name, in the logo's orange, wherever it appears in prose ──
   Applied by the tint pass appended to the page bundle. .rn-tail is only a
   carrier for the rest of the sentence and must inherit everything. */
.rn-tint{ color:var(--color-accent-soft); font-weight:500; }
.rn-tail{ color:inherit; font:inherit; letter-spacing:inherit; }
