:root{--paper:#F4EEE3;--surface:#FBF7EF;--ink:#2B2620;--ink-soft:#544B3E;--muted:#7A6F5E;--line:#E7DDC9;--line-2:#D8CDB9;--clay:#BE6239;--clay-deep:#A4502C;--clay-soft:#E0916C;--sage:#5E7058;--sage-deep:#4A5A45;--sage-tint:#E4E9DD;--gold:#C98A2E;--espresso:#211D18;--serif:"Newsreader",Georgia,serif;--sans:"Hanken Grotesk",system-ui,sans-serif;--hud:#F4ECDC;--hud2:rgba(244,236,220,.62);--gn:rgba(255,246,230,.14);--gx:62vw}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{font-family:var(--sans);background:#131628;color:var(--ink);overflow-x:clip;-webkit-font-smoothing:antialiased;touch-action:pan-y pinch-zoom}
.ch{cursor:grab}.sheet{cursor:auto}body.dragging,body.dragging *{cursor:grabbing!important;user-select:none;-webkit-user-select:none}
body.p-dawn,body.p-day{--hud:#2B2620;--hud2:rgba(43,38,32,.72)}
body.p-dawn{--gn:rgba(255,248,236,.34)}body.p-day{--gn:rgba(255,255,255,.4)}body.p-dusk{--gn:rgba(255,232,206,.17)}
a{color:var(--clay-deep);text-decoration:none}a:hover{color:var(--clay)}
::selection{background:var(--clay);color:#FBF7EF}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}

/* ── the stage: sky · the number behind · the world · her line ── */
.stage{position:fixed;inset:0;z-index:0;overflow:hidden}
.sky{position:absolute;inset:0}
.sk{position:absolute;inset:0;opacity:0;transition:opacity 2.4s ease}
.sk.on{opacity:1}
.sk.dawn{background:linear-gradient(180deg,#76688A 0%,#C98474 36%,#F0C9A6 68%,#F6E2C8 100%)}
.sk.day{background:linear-gradient(180deg,#72B2DC 0%,#A6D1E8 36%,#DCEAE5 68%,#F3EEE2 100%)}
.sk.dusk{background:linear-gradient(180deg,#433D57 0%,#9A5852 34%,#DF9468 64%,#F2CB96 100%)}
.sk.night{background:linear-gradient(180deg,#0E1122 0%,#191B33 40%,#2A2645 72%,#3A3356 100%)}
.stars{position:absolute;inset:0 0 30% 0;opacity:0;transition:opacity 2s}
.stars span{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;animation:tw var(--d,4s) ease-in-out infinite;animation-delay:var(--dl,0s)}
.stars span.b{width:3px;height:3px;box-shadow:0 0 8px 2px rgba(255,255,255,.35)}
@keyframes tw{0%,100%{opacity:.25}50%{opacity:1}}
body.p-night .stars{opacity:1}body.p-dusk .stars{opacity:.35}
.fall{position:absolute;top:12%;left:70%;width:140px;height:1.5px;background:linear-gradient(90deg,rgba(255,255,255,0),#fff);opacity:0;transform:rotate(-24deg)}
body.p-night .fall{animation:fall 9s 3s ease-in infinite}
@keyframes fall{0%,86%{opacity:0;transform:translate(0,0) rotate(-24deg)}88%{opacity:1}96%{opacity:0;transform:translate(-340px,150px) rotate(-24deg)}100%{opacity:0}}
.orb{position:absolute;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;left:var(--ox,22%);top:var(--oy,16%);background:var(--ob,radial-gradient(circle at 38% 38%,#FBF7EC 0 50%,#E3DCC6 75%));box-shadow:var(--os,0 0 50px 14px rgba(230,226,255,.22));transition:left 2.2s cubic-bezier(.6,0,.2,1),top 2.2s cubic-bezier(.6,0,.2,1),background 1.6s,box-shadow 1.6s}
.behind{position:absolute;inset:0;pointer-events:none}
.ghostnum{position:absolute;left:var(--gx);top:50%;transform:translate(-50%,-52%);font-family:var(--serif);font-weight:300;font-size:min(68vh,44vw);line-height:1;letter-spacing:-.06em;color:var(--gn);opacity:0;transition:opacity .8s,left 1.2s cubic-bezier(.6,0,.2,1),color 1.4s;font-variant-numeric:tabular-nums;white-space:nowrap}
body.show-num .ghostnum{opacity:1}
.wrap{position:absolute;inset:0;transition:filter .9s ease}
.wrap.blur{filter:blur(12px) saturate(.75) brightness(.8)}
#world{width:100%;height:100%;display:block}
.glow{position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 90% at 50% 50%,rgba(0,0,0,0) 55%,rgba(10,10,24,.38) 100%)}
.grain{position:absolute;inset:-50%;pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-1%)}80%{transform:translate(3%,3%)}100%{transform:translate(0,0)}}
.wrap{opacity:1;transition:filter 1.1s ease,opacity .8s ease}
body.boot .wrap{opacity:0}
.wrap.dip{opacity:0;transition:opacity .45s ease,filter 1.1s ease}

.bubble{position:absolute;left:0;top:0;z-index:4;pointer-events:none;opacity:0;transform:translate(-50%,-100%) translateY(8px) scale(.94);transition:opacity .35s,transform .45s cubic-bezier(.3,1.4,.4,1)}
.bubble.on{opacity:1;transform:translate(-50%,-100%) scale(1)}
.bubble p{position:relative;background:var(--surface);color:var(--ink);font-family:var(--serif);font-size:18px;line-height:1.3;padding:12px 17px 13px;border-radius:18px;max-width:300px;width:max-content;box-shadow:0 18px 40px -18px rgba(20,14,8,.5)}
.bubble p::after{content:"";position:absolute;left:50%;bottom:-7px;width:14px;height:14px;margin-left:-7px;background:var(--surface);transform:rotate(45deg);border-radius:3px}
.bubble .dots{display:none;gap:4px;padding:6px 2px}
.bubble.typing .dots{display:inline-flex}.bubble.typing .tx{display:none}
.dots i{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:dot 1s infinite}
.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
@keyframes dot{0%,100%{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}

/* ── chrome: nav · readout · chapter rail ── */
.nav{position:fixed;top:0;left:0;right:0;z-index:60;display:flex;align-items:center;justify-content:space-between;padding:20px clamp(18px,3vw,40px);pointer-events:none;transition:opacity .5s}
.nav>*{pointer-events:auto}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-size:24px;color:var(--hud);transition:color 1.2s}
.brand:hover{color:var(--hud)}
.readout{position:absolute;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--hud2);transition:color 1.2s;font-variant-numeric:tabular-nums}
.readout b{color:var(--hud);font-weight:700;transition:color 1.2s}
.readout i{width:5px;height:5px;border-radius:50%;background:var(--clay-soft);box-shadow:0 0 10px var(--clay-soft);animation:pulse 2.4s infinite}
@keyframes pulse{50%{opacity:.35}}
.navr{display:flex;align-items:center;gap:22px}
.navr>a:not(.btn){font-size:14px;font-weight:600;color:var(--hud);transition:color 1.2s}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:52px;padding:0 26px;border-radius:999px;background:var(--surface);color:var(--ink);font-family:var(--sans);font-size:15.5px;font-weight:700;letter-spacing:.005em;box-shadow:0 14px 34px -14px rgba(0,0,0,.45);transition:transform .25s cubic-bezier(.3,1.4,.4,1),background .25s,color .25s}
.btn:hover{background:var(--clay);color:#FFF8F0;transform:translateY(-2px)}
.btn.sm{height:40px;padding:0 18px;font-size:13.5px}
body.p-dawn .btn.sm,body.p-day .btn.sm{background:var(--espresso);color:#F4ECDC}
.rail{position:fixed;right:clamp(14px,2vw,28px);top:50%;transform:translateY(-50%);z-index:60;list-style:none;display:flex;flex-direction:column;gap:2px;transition:opacity .5s}
.rail button{display:flex;align-items:center;justify-content:flex-end;gap:10px;height:22px;color:var(--hud);transition:color 1.2s}
.rail button i{width:8px;height:1.5px;background:currentColor;opacity:.3;transition:width .4s cubic-bezier(.3,1.3,.4,1),opacity .3s}
.rail button span{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;opacity:0;transform:translateX(6px);transition:opacity .3s,transform .3s;white-space:nowrap}
.rail button:hover span{opacity:1;transform:none}
.rail li.on i{width:26px;opacity:1}
.rail button:hover i{opacity:1}
body.past .rail,body.past .readout,body[data-ch="hero"] .rail,body[data-ch="close"] .rail{opacity:0;pointer-events:none}
@media (min-width:821px){.hero-copy{width:min(980px,calc(100vw - 2 * clamp(120px,12vw,180px)))}}

/* ── chapters: tall spacers, one fixed scene each ── */
main{position:relative;z-index:10}
.ch{position:relative;height:calc(var(--h) * 1vh)}
.scene{position:fixed;inset:0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .6s ease,visibility 0s .6s}
.ch.on .scene{opacity:1;visibility:visible;transition:opacity .7s ease .1s,visibility 0s}
.scene>*{pointer-events:auto}
/* Local: no blur in the reveal (an animated filter on every word repaints each one, every frame, under a
   backdrop blur), and a quicker one - it ran over a second, so a chapter felt late to arrive. */
.kin{opacity:0;transform:translateY(12px);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--k,0) * 60ms + 120ms)}
.ch.on .kin{opacity:1;transform:none}
.h1.kin,.h2.kin{opacity:1;transform:none}
.w{display:inline-block;opacity:0;transform:translateY(.3em);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.8,.2,1);transition-delay:calc(var(--wi,0) * 30ms + 60ms)}
.ch.on .w{opacity:1;transform:none}

.eyebrow{font-size:11.5px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--clay-deep);margin-bottom:14px}
.eyebrow.light{color:#F2B48E}
.h1{font-family:var(--serif);font-weight:400;font-size:clamp(44px,6.4vw,104px);line-height:.98;letter-spacing:-.035em;color:#F7F0E2;text-wrap:balance}
.h1 em{font-style:italic;color:#F2B48E;font-weight:300}
.h2{font-family:var(--serif);font-weight:400;font-size:clamp(32px,3.1vw,48px);line-height:1.04;letter-spacing:-.025em;color:var(--ink);text-wrap:balance}
.h2 em{font-style:italic;color:var(--clay-deep)}
.lede{font-size:17px;line-height:1.55;color:var(--ink-soft);margin-top:18px;text-wrap:pretty}
.lede.light{color:#EDE4D3;font-size:clamp(17px,1.4vw,21px);max-width:620px;margin-left:auto;margin-right:auto}
.proof{font-size:14px;line-height:1.55;color:var(--muted);margin-top:18px;padding-top:16px;border-top:1px solid var(--line);text-wrap:pretty}

.sheet{position:absolute;left:clamp(20px,5vw,80px);bottom:clamp(20px,8vh,90px);width:min(470px,40vw);background:rgba(251,247,239,.94);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);border-radius:30px;padding:34px 34px 32px;box-shadow:0 40px 90px -40px rgba(10,8,20,.6),0 0 0 1px rgba(255,255,255,.5) inset;transform:translateY(16px);opacity:0;transition:transform 1.1s cubic-bezier(.2,.8,.2,1),opacity .8s}
.ch.on .sheet{transform:none;opacity:1}
.sheet.slim{width:min(420px,36vw)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px;list-style:none}
.chips li{font-size:12.5px;font-weight:700;padding:8px 13px;border-radius:999px;background:var(--sage-tint);color:var(--sage-deep)}
.rules{list-style:none;margin-top:20px;display:flex;flex-direction:column;gap:9px}
.rules li{position:relative;padding-left:20px;font-size:14.5px;color:var(--ink-soft)}
.rules li::before{content:"";position:absolute;left:2px;top:.55em;width:7px;height:7px;border-radius:50%;background:var(--sage)}
.rules b{color:var(--ink);font-weight:700}

/* hero + close */
.hero-copy,.close-copy{position:absolute;left:50%;top:clamp(96px,13vh,150px);transform:translateX(-50%);width:min(1080px,92vw);text-align:center;pointer-events:none}
.hero-copy *,.close-copy *{pointer-events:auto}
.hero-copy .h1{text-shadow:0 2px 40px rgba(8,8,24,.5)}
.acts{display:flex;justify-content:center;align-items:center;gap:22px;margin-top:30px;flex-wrap:wrap}
.ghostbtn{font-size:15px;font-weight:700;color:#F4ECDC;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.ghostbtn::after{content:"";width:18px;height:1.5px;background:currentColor;transition:width .3s}
.ghostbtn:hover{color:#fff}.ghostbtn:hover::after{width:30px}
.hero-acts{position:absolute;left:0;right:0;bottom:clamp(28px,6vh,64px);display:flex;flex-direction:column;align-items:center;gap:18px;pointer-events:none}
.hero-acts>*{pointer-events:auto}
.hero-acts .acts{margin-top:0}
.hint{display:flex;align-items:center;gap:10px;padding:8px 15px 8px 11px;border-radius:999px;background:rgba(24,18,34,.34);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#F4ECDC;font-size:12.5px;font-weight:700;letter-spacing:.03em;pointer-events:none!important}
body.touched .hint{opacity:0!important;transform:translateY(6px)!important}
.hand{position:relative;width:26px;height:14px}
.hand::before{content:"";position:absolute;top:50%;left:0;right:0;height:1.5px;margin-top:-.75px;background:rgba(244,236,220,.4);border-radius:1px}
.hand::after{content:"";position:absolute;top:50%;left:50%;width:10px;height:10px;margin:-5px;border-radius:50%;background:#F4ECDC;box-shadow:0 0 10px rgba(255,230,200,.7);animation:swipe 3s ease-in-out infinite}
@keyframes swipe{0%,100%{transform:translateX(-9px)}50%{transform:translateX(9px)}}

/* talk: the thread over the world, then the call */
.thread{position:absolute;left:0;top:0;width:330px;display:flex;flex-direction:column;gap:8px;pointer-events:none;transition:opacity .5s}
.tb{max-width:290px;font-size:15.5px;line-height:1.38;padding:11px 15px;border-radius:18px;opacity:0;transform:translateY(14px) scale(.96);transition:opacity .45s,transform .55s cubic-bezier(.3,1.4,.4,1)}
.tb.in{opacity:1;transform:none}
.tb.u{align-self:flex-end;background:rgba(33,29,24,.82);color:#F4ECDC;backdrop-filter:blur(10px);border-bottom-right-radius:6px}
.tb.h{align-self:flex-start;background:var(--surface);color:var(--ink);font-family:var(--serif);font-size:17px;border-bottom-left-radius:6px;box-shadow:0 14px 30px -18px rgba(0,0,0,.6)}
.callpill{align-self:flex-start;display:flex;align-items:center;gap:10px;margin-top:4px;padding:10px 18px 10px 10px;border-radius:999px;background:var(--sage);color:#FBF7EF;font-weight:700;font-size:15px;opacity:0;transform:translateY(12px) scale(.94);transition:opacity .5s,transform .6s cubic-bezier(.3,1.3,.4,1),box-shadow .4s;box-shadow:0 14px 30px -14px rgba(0,0,0,.6)}
.callpill i{position:relative;width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.22)}
.callpill i::before{content:"";position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-6px;border-radius:50%;background:#FBF7EF}
.callpill i::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1.5px solid rgba(251,247,239,.7);animation:callr 2s ease-out infinite}
@keyframes callr{from{transform:scale(.8);opacity:1}to{transform:scale(1.5);opacity:0}}
.callpill.in{opacity:1;transform:none}
.callpill.press{transform:scale(.95);box-shadow:0 0 0 7px rgba(94,112,88,.35)}
.scene.calling .thread{opacity:0}
.call{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none;opacity:0;transition:opacity .6s}
.scene.calling .call{opacity:1}
.ring{position:absolute;left:-170px;top:-170px;width:340px;height:340px}
.ring i{position:absolute;left:50%;top:0;width:3px;height:22px;margin-left:-1.5px;border-radius:2px;background:#FFF8EE;transform-origin:50% 170px;opacity:.9}
.disc{position:absolute;left:-90px;top:-90px;width:180px;height:180px;border-radius:50%;background:rgba(255,250,240,.22);backdrop-filter:blur(14px);box-shadow:0 0 0 1px rgba(255,255,255,.35) inset,0 30px 60px -20px rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;transform:scale(calc(1 + var(--amp,0) * .05))}
.callhead{position:absolute;left:-150px;width:300px;top:-268px;text-align:center;color:#FFF8EE}
.cn{font-family:var(--serif);font-size:34px}
.cm{font-size:11.5px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;opacity:.85;margin-top:4px;font-variant-numeric:tabular-nums}
.said{position:absolute;left:-190px;width:380px;top:196px;text-align:center;font-family:var(--serif);font-style:italic;font-size:21px;line-height:1.35;color:#FFF8EE;text-shadow:0 2px 20px rgba(0,0,0,.4)}
.callbtns{position:absolute;left:-150px;width:300px;top:290px;display:flex;justify-content:center;gap:26px}
.callbtns b{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#FFF8EE}
.ic{width:58px;height:58px;border-radius:50%;background:rgba(255,255,255,.22);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;font-style:normal;font-size:13px;font-weight:800;color:#FFF8EE}
.ic.cc{background:#FBF7EF;color:var(--ink)}
.ic.endc{background:#C9443A}
.ic.mic::before{content:"";width:10px;height:16px;border-radius:6px;border:2px solid #FFF8EE}
.ic.endc::before{content:"";width:22px;height:8px;border-radius:5px;background:#FFF8EE}

/* knows: memories orbiting her */
.orbit{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none}
.mem{position:absolute;left:0;top:0;white-space:nowrap;font-size:14px;font-weight:600;padding:9px 14px;border-radius:999px;background:rgba(251,247,239,.9);color:var(--ink);box-shadow:0 10px 30px -14px rgba(0,0,0,.6);will-change:transform,opacity,filter}
.mem::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--clay);margin-right:9px;vertical-align:1px}

/* reach: the lock screen */
.lock{position:absolute;right:clamp(60px,9vw,160px);top:50%;width:310px;height:620px;margin-top:-310px;border-radius:48px;padding:70px 14px 20px;background:linear-gradient(180deg,rgba(20,22,44,.55),rgba(40,34,70,.35));backdrop-filter:blur(22px) saturate(1.3);-webkit-backdrop-filter:blur(22px) saturate(1.3);box-shadow:0 0 0 1px rgba(255,255,255,.2) inset,0 60px 100px -40px rgba(0,0,0,.7);transform:perspective(1400px) rotateY(calc(-14deg + var(--p,0) * 10deg)) rotateX(4deg) translateY(calc(30px - var(--p,0) * 60px));transition:opacity .6s}
.lclock{text-align:center;color:#F7F2EA}
.ldate{font-size:15px;font-weight:600;opacity:.85}
.ltime{font-size:84px;font-weight:600;letter-spacing:-.03em;line-height:1;margin-top:2px;font-variant-numeric:tabular-nums}
.nstack{display:flex;flex-direction:column;gap:8px;margin-top:34px}
.notif{display:flex;gap:11px;padding:13px 14px;border-radius:22px;background:rgba(250,246,238,.84);backdrop-filter:blur(10px);opacity:0;transform:translateY(-22px) scale(.92);transition:opacity .5s,transform .7s cubic-bezier(.3,1.4,.4,1)}
.notif.in{opacity:1;transform:none}
.nico{flex:none;width:36px;height:36px;border-radius:10px;background:#F2E4CF;display:flex;align-items:center;justify-content:center}
.nh{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.04em;color:var(--ink-soft)}
.nh s{text-decoration:none;color:var(--muted)}
.nt{font-size:13.5px;line-height:1.35;color:var(--ink);margin-top:2px}
.lhome{position:absolute;left:50%;bottom:10px;width:120px;height:5px;margin-left:-60px;border-radius:3px;background:rgba(255,255,255,.7)}

/* day one: the rewind ring around the island */
.rewind{position:absolute;left:var(--gx);top:50%;width:min(76vh,52vw);height:min(76vh,52vw);transform:translate(-50%,-50%) rotate(-90deg);pointer-events:none}
.rewind svg{width:100%;height:100%;overflow:visible}
.rt{fill:none;stroke:rgba(255,255,255,.16);stroke-width:.6;stroke-dasharray:.4 1.6}
.rp{fill:none;stroke:#FFE6CC;stroke-width:1.2;stroke-linecap:round;stroke-dasharray:90 90;stroke-dashoffset:var(--rw,0);filter:drop-shadow(0 0 6px rgba(255,200,150,.8))}
.rn{position:absolute;left:50%;top:-8px;transform:translate(-50%,-100%) rotate(90deg);transform-origin:50% 100%;display:none}

/* hold */
.holdbtn{position:relative;margin-top:24px;width:100%;height:78px;border-radius:24px;background:var(--espresso);color:#F4ECDC;display:flex;align-items:center;justify-content:space-between;padding:0 18px 0 24px;text-align:left;user-select:none;-webkit-user-select:none;touch-action:none;overflow:hidden;box-shadow:0 20px 40px -20px rgba(20,14,8,.7);transition:transform .2s,background .4s}
.holdbtn::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(201,138,46,.0),rgba(224,145,108,.32));transform-origin:left;transform:scaleX(var(--hp,0))}
.holdbtn.down{transform:scale(.985)}
.holdbtn.done{background:var(--sage-deep)}
.hl{position:relative;display:flex;flex-direction:column;gap:3px}
.hl b{font-family:var(--serif);font-weight:400;font-size:24px}
.hl s{text-decoration:none;font-size:10.5px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;opacity:.7}
.dial{position:relative;width:46px;height:46px}
.dial svg{width:100%;height:100%;transform:rotate(-90deg)}
.dt{fill:none;stroke:rgba(244,236,220,.3);stroke-width:1.5;stroke-dasharray:2 3}
.dp{fill:none;stroke:#FFE2B8;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:100 100;stroke-dashoffset:calc(100 - var(--hp,0) * 100)}
.dial i{position:absolute;left:50%;top:50%;width:16px;height:16px;margin:-8px;border-radius:50%;background:#F4ECDC;box-shadow:0 0 14px rgba(255,226,184,.8);animation:breath 2.4s ease-in-out infinite}
@keyframes breath{50%{transform:scale(.8);opacity:.75}}
.holdbtn.done .dial i{animation:none;background:#E4E9DD}
.ripple{position:absolute;border-radius:50%;border:2px solid #FFE2B8;pointer-events:none;animation:rip 1.2s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes rip{from{transform:scale(.2);opacity:1}to{transform:scale(8);opacity:0}}
.held{font-size:14px;color:var(--sage-deep);font-weight:600;margin-top:12px;min-height:20px}

/* ninety */
.ticks{display:grid;grid-template-columns:repeat(45,1fr);gap:3px;margin-top:22px}
.ticks i{height:10px;border-radius:2px;background:var(--line);transition:background .25s,transform .3s}
.ticks i.on{background:var(--sage)}
.ticks i.wk{height:14px;margin-top:-2px}
.ticks i.now{background:var(--clay);transform:scaleY(1.3)}
.grew{display:flex;align-items:baseline;gap:10px;margin-top:18px;font-size:15px;color:var(--ink-soft);min-height:24px}
.grew i{width:8px;height:8px;border-radius:50%;background:var(--clay);flex:none;transform:translateY(-1px)}
.grew b{font-weight:800;color:var(--ink);white-space:nowrap}
.grew.pop span{animation:pop .5s cubic-bezier(.3,1.4,.4,1)}
@keyframes pop{from{opacity:0;transform:translateY(6px)}}

/* her step: today's six */
.sounds{display:flex;flex-direction:column;gap:6px;margin-top:22px}
.snd{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:16px;background:var(--surface);box-shadow:0 0 0 1px var(--line) inset}
.snd span{display:flex;flex-direction:column}
.snd span b{font-size:14.5px}
.snd span s{text-decoration:none;font-size:12px;color:var(--muted)}
.eq{flex:none;width:36px;height:36px;border-radius:10px;background:linear-gradient(160deg,#5D6E86,#2E3A4E);display:flex;align-items:flex-end;justify-content:center;gap:3px;padding-bottom:10px}
.eq b{width:3px;height:6px;border-radius:2px;background:#F4ECDC}
.snd.on .eq b{animation:eq .9s ease-in-out infinite}.snd.on .eq b:nth-child(2){animation-delay:.2s}.snd.on .eq b:nth-child(3){animation-delay:.4s}
@keyframes eq{50%{height:16px}}
.deck{position:absolute;right:clamp(60px,6vw,120px);top:clamp(96px,13vh,140px);width:200px;height:270px;perspective:1600px;pointer-events:none}
.card{position:absolute;left:0;top:0;width:200px;height:270px;border-radius:22px;padding:18px;display:flex;flex-direction:column;justify-content:flex-end;color:#FFF8EE;box-shadow:0 30px 60px -24px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.12) inset;overflow:hidden;will-change:transform}
.card s{position:absolute;top:16px;left:18px;right:18px;text-decoration:none;font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;opacity:.9}
.card b{font-family:var(--serif);font-weight:400;font-size:23px;line-height:1.08}
.card em{font-style:normal;font-size:11.5px;font-weight:700;margin-top:8px;opacity:.85}
.c1{background:linear-gradient(180deg,#4F5866,#2F3540)}
.c1::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(105deg,rgba(255,255,255,0) 0 14px,rgba(255,255,255,.14) 14px 15px);animation:rain 1.1s linear infinite;background-size:200% 200%}
@keyframes rain{to{background-position:-40px 120px}}
.c2{background:linear-gradient(180deg,#B9774A,#6E4A35)}
.c3{background:linear-gradient(180deg,#6F8466,#3C4C3A)}
.c4{background:linear-gradient(180deg,#5A4B6E,#2C2540)}
.c5{background:linear-gradient(180deg,#C98A2E,#8A5A22)}
.c6{background:linear-gradient(180deg,#7C9AAE,#465F72)}

/* circles */
.tags{position:absolute;inset:0;pointer-events:none}
.tag{position:absolute;left:0;top:0;display:flex;flex-direction:column;align-items:center;transform:translate(-50%,-100%);opacity:0;transition:opacity .6s}
.tag.in{opacity:1}
.tag p{display:flex;align-items:center;gap:7px;white-space:nowrap;font-size:12.5px;font-weight:700;padding:6px 11px 6px 7px;border-radius:999px;background:rgba(251,247,239,.92);color:var(--ink);box-shadow:0 10px 24px -12px rgba(0,0,0,.6)}
.tag p i{width:18px;height:18px;border-radius:50%;background:var(--c,#8B9D83)}
.tag p s{text-decoration:none;color:var(--muted);font-weight:600}
.tag u{width:1px;height:26px;background:linear-gradient(rgba(251,247,239,.9),rgba(251,247,239,0))}
.tag.fr p{box-shadow:0 0 0 2px var(--clay-soft),0 10px 24px -12px rgba(0,0,0,.6)}
.alias{position:relative;display:inline-flex;gap:6px;font-weight:700;color:var(--ink)}
.alias s{color:var(--muted);font-weight:500;text-decoration-color:var(--clay)}
.post{position:absolute;right:clamp(60px,7vw,130px);bottom:clamp(30px,9vh,110px);width:340px;background:rgba(251,247,239,.95);backdrop-filter:blur(14px);border-radius:24px;padding:20px;box-shadow:0 40px 80px -36px rgba(0,0,0,.6);transform:translateY(calc(40px - var(--p,0) * 50px)) rotate(calc(2deg - var(--p,0) * 3deg))}
.pn{display:flex;align-items:center;gap:8px;font-size:14px}
.pn .av{width:30px;height:30px;border-radius:50%;background:radial-gradient(circle at 50% 38%,#4A5A45 0 28%,transparent 29%),radial-gradient(ellipse at 50% 110%,#4A5A45 0 46%,transparent 47%),#E4E9DD}
.pn i{font-style:normal;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--sage-deep);background:var(--sage-tint);padding:3px 7px;border-radius:6px}
.pn s{text-decoration:none;color:var(--muted);font-size:12.5px;margin-left:auto}
.pt{font-family:var(--serif);font-size:19px;line-height:1.35;margin-top:12px;color:var(--ink)}
.pr{display:flex;gap:8px;margin-top:14px}
.pr b{font-size:12.5px;font-weight:700;padding:7px 12px;border-radius:999px;box-shadow:0 0 0 1px var(--line-2) inset;color:var(--ink-soft);transition:background .3s,color .3s}
.pr b.on{background:var(--clay-tint,#F3E2D6);color:var(--clay-deep);box-shadow:0 0 0 1px var(--clay-soft) inset}
.rep{margin-top:12px;padding:11px 13px;border-radius:14px;background:#EFE8DA;font-size:13.5px;line-height:1.4;color:var(--ink-soft)}
.rep b{color:var(--ink)}

/* jar */
.calc{margin-top:22px;padding:20px;border-radius:20px;background:var(--surface);box-shadow:0 0 0 1px var(--line) inset}
.clabel{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.cweek{display:flex;align-items:baseline;gap:8px;margin-top:6px}
.cweek b{font-family:var(--serif);font-size:40px;font-weight:400;font-variant-numeric:tabular-nums}
.cweek s{text-decoration:none;color:var(--muted)}
.slider{width:100%;margin-top:12px;-webkit-appearance:none;appearance:none;height:6px;border-radius:3px;background:linear-gradient(90deg,var(--clay) var(--f,20%),var(--line-2) var(--f,20%));outline:none}
.slider::-webkit-slider-thumb{-webkit-appearance:none;width:28px;height:28px;border-radius:50%;background:var(--espresso);border:4px solid var(--surface);box-shadow:0 4px 12px rgba(0,0,0,.3);cursor:grab}
.slider::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--espresso);border:4px solid var(--surface);cursor:grab}
.cres{display:flex;align-items:baseline;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);flex-wrap:wrap}
.cres b{font-family:var(--serif);font-size:44px;font-weight:400;color:var(--sage-deep);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.cres s{text-decoration:none;font-size:14px;color:var(--ink-soft)}

/* close */
.close-copy .h1{font-size:clamp(56px,8.4vw,140px)}
.wl{display:flex;gap:10px;justify-content:center;margin:32px auto 0;max-width:520px}
.wl input{flex:1;min-width:0;height:54px;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.1);backdrop-filter:blur(12px);padding:0 22px;font:inherit;font-size:16px;color:#FBF7EF;outline:none}
.wl input::placeholder{color:rgba(244,236,220,.6)}
.wl input:focus{border-color:#F2B48E;background:rgba(255,255,255,.16)}
.wl .btn{height:54px}
.notice{font-size:13px;color:rgba(244,236,220,.72);margin-top:14px}
.notice a{color:#F2B48E}.notice a:hover{color:#fff}
.trust{display:flex;justify-content:center;gap:22px;list-style:none;margin-top:20px;flex-wrap:wrap}
.trust li{font-size:12px;font-weight:700;letter-spacing:.06em;color:rgba(244,236,220,.8);display:flex;align-items:center;gap:8px}
.trust li::before{content:"";width:5px;height:5px;border-radius:50%;background:#8B9D83}

/* day one: hold, then plant */
.stepB{display:none}
.sheet.b .stepA{display:none}
.sheet.b .stepB{display:block;animation:rise .8s cubic-bezier(.2,.7,.2,1)}
@keyframes rise{from{opacity:0;transform:translateY(12px)}}
.h2b{font-family:var(--serif);font-weight:400;font-size:clamp(30px,2.8vw,44px);line-height:1.04;letter-spacing:-.025em;color:var(--ink);text-wrap:balance}
.h2b em{font-style:italic;color:var(--clay-deep)}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:20px}
.opts button{display:flex;align-items:center;gap:12px;min-height:58px;padding:10px 12px;border-radius:16px;background:var(--surface);box-shadow:0 0 0 1px var(--line-2) inset;font-weight:700;font-size:14.5px;text-align:left;color:var(--ink);transition:transform .25s cubic-bezier(.3,1.3,.4,1),box-shadow .25s,background .3s}
.opts i{flex:none;width:32px;height:32px;border-radius:10px;box-shadow:0 0 0 1px rgba(0,0,0,.06) inset}
.opts button:hover{box-shadow:0 0 0 1.5px var(--clay-soft) inset;transform:translateY(-1px)}
.opts button:active{transform:scale(.97)}
.opts button.on{background:var(--sage-tint);box-shadow:0 0 0 1.5px var(--sage) inset;color:var(--sage-deep);cursor:default}
.opts button.on span::after{content:" ✓"}
/* grow: the year bar */
.yr{position:relative;height:6px;border-radius:3px;background:var(--line);margin:26px 0 30px}
.yf{position:absolute;inset:0;border-radius:3px;background:linear-gradient(90deg,var(--sage),var(--gold) 60%,var(--clay));transform-origin:left;transform:scaleX(0)}
.yr s{position:absolute;top:-4px;width:2px;height:14px;margin-left:-1px;background:var(--line-2);text-decoration:none}
.yr s b{position:absolute;top:18px;left:50%;transform:translateX(-50%);font-size:10.5px;font-weight:800;color:var(--muted);letter-spacing:.06em}
.yr s:last-child b{left:auto;right:0;transform:none}
/* circles: your share */
.share{position:absolute;right:clamp(60px,7vw,130px);bottom:clamp(30px,9vh,110px);width:360px;display:flex;flex-direction:column;gap:8px;pointer-events:none;transform-origin:top center}
.share .post{position:relative;right:auto;bottom:auto;width:auto;opacity:0;transform:translateY(18px) scale(.97);transition:opacity .6s,transform .8s cubic-bezier(.2,.8,.2,1)}
.share .post.in{opacity:1;transform:none}
.shared{align-self:flex-start;display:flex;align-items:center;gap:8px;padding:6px 12px 6px 8px;border-radius:999px;background:var(--sage);color:#FBF7EF;font-size:12px;font-weight:800;letter-spacing:.04em;opacity:0;transform:translateY(8px);transition:opacity .5s,transform .6s}
.shared.in{opacity:1;transform:none}
.shared i{width:14px;height:14px;border-radius:50%;background:#FBF7EF;position:relative}
.shared i::after{content:"";position:absolute;left:4px;top:3px;width:4px;height:6px;border:solid var(--sage);border-width:0 2px 2px 0;transform:rotate(45deg)}
.av.you{background:radial-gradient(circle at 50% 38%,#A4502C 0 28%,transparent 29%),radial-gradient(ellipse at 50% 110%,#A4502C 0 46%,transparent 47%),#F3E2D6}
.pn i{white-space:nowrap}
.pr b{transition:background .3s,color .3s,transform .3s}
.pr b em{font-style:normal;font-variant-numeric:tabular-nums}
.pr b.pop{animation:bump .35s cubic-bezier(.3,1.6,.4,1)}
@keyframes bump{50%{transform:scale(1.1)}}
.share .rep{display:flex;gap:10px;align-items:flex-start;margin:0;padding:12px 14px;border-radius:18px;background:rgba(251,247,239,.95);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 20px 40px -24px rgba(0,0,0,.6);font-size:14px;line-height:1.4;color:var(--ink-soft);opacity:0;transform:translateY(14px) translateX(14px);transition:opacity .5s,transform .7s cubic-bezier(.2,.8,.2,1)}
.share .rep.in{opacity:1;transform:none}
.rep .av{flex:none;width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 50% 38%,#4A5A45 0 28%,transparent 29%),radial-gradient(ellipse at 50% 110%,#4A5A45 0 46%,transparent 47%),#E4E9DD}
.rep .av.g{background:radial-gradient(circle at 50% 38%,#5D6E86 0 28%,transparent 29%),radial-gradient(ellipse at 50% 110%,#5D6E86 0 46%,transparent 47%),#E2E7EE}
.rep b{color:var(--ink)}
.rep s{text-decoration:none;color:var(--muted);font-size:12px;margin-left:6px}
.rep em{display:block;font-style:normal;margin-top:2px}
.lant{align-self:flex-start;display:flex;align-items:center;gap:9px;padding:8px 14px 8px 10px;border-radius:999px;background:rgba(33,29,24,.86);backdrop-filter:blur(10px);color:#F4ECDC;font-size:13px;font-weight:700;opacity:0;transform:translateY(10px);transition:opacity .5s,transform .6s}
.lant.in{opacity:1;transform:none}
.lant i{width:12px;height:12px;border-radius:50%;background:#FFD48A;box-shadow:0 0 12px 3px rgba(255,200,120,.7);animation:breath 2.4s ease-in-out infinite}
/* jar */
.spend{margin-top:20px}
.goals{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}
.goals button{display:flex;justify-content:space-between;align-items:center;gap:8px;white-space:nowrap;min-height:46px;padding:0 14px;border-radius:12px;background:var(--surface);box-shadow:0 0 0 1px var(--line-2) inset;font-weight:700;font-size:14px;color:var(--ink);text-align:left;transition:background .25s,color .25s,transform .2s}
.goals button s{text-decoration:none;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.goals button:active{transform:scale(.97)}
.goals button.on{background:var(--espresso);color:#F4ECDC;box-shadow:none}
.goals button.on s{color:#CFC5B3}
.tnum{display:flex;align-items:baseline;gap:10px}
.tnum b{font-weight:400}
.tnum span{font-family:var(--sans);font-size:15px;font-weight:700;color:var(--ink-soft);letter-spacing:0}
.tally.done .tnum span{color:var(--sage-deep)}
.tally.done .tbar i{background:linear-gradient(90deg,var(--sage),var(--gold))}
.seg{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:10px}
.seg button{height:46px;border-radius:12px;background:var(--surface);box-shadow:0 0 0 1px var(--line-2) inset;font-weight:700;font-size:15px;color:var(--ink);font-variant-numeric:tabular-nums;transition:background .25s,color .25s,transform .2s}
.seg button:active{transform:scale(.95)}
.seg button.on{background:var(--espresso);color:#F4ECDC;box-shadow:none}
.tally{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.tnum{font-family:var(--serif);font-size:clamp(52px,4.6vw,68px);font-weight:400;line-height:1;color:var(--sage-deep);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.tsub{display:flex;gap:6px;flex-wrap:wrap;align-items:baseline;margin-top:8px;font-size:14.5px;color:var(--ink-soft)}
.tsub b{color:var(--ink);font-variant-numeric:tabular-nums}
.tsub em{font-family:var(--serif);font-style:italic;font-size:17px;color:var(--clay-deep)}
.tbar{position:relative;height:6px;border-radius:3px;background:var(--line);margin:14px 0 4px}
.tbar i{position:absolute;inset:0;border-radius:2px;background:var(--sage);transform-origin:left;transform:scaleX(0)}
.tbar s{position:absolute;top:10px;transform:translateX(-50%);font-size:10.5px;font-weight:800;letter-spacing:.06em;color:var(--muted);text-decoration:none;white-space:nowrap}
.tbar s:last-of-type{transform:translateX(-100%)}
.prog{position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--clay-soft);transform-origin:left;transform:scaleX(0);display:none}

/* ── after the world: the blog + footer, on paper ── */
.blog,footer{position:relative;z-index:20;background:var(--paper)}
.blog{padding:120px 0 90px;box-shadow:0 -60px 80px -20px rgba(19,22,40,.5)}
.hold{max-width:1180px;margin:0 auto;padding:0 clamp(20px,4vw,40px)}
.b-head{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:40px;align-items:end}
.b-h2{font-family:var(--serif);font-weight:400;font-size:clamp(34px,4vw,56px);line-height:1.02;letter-spacing:-.025em}
.b-h2 em{font-style:italic;color:var(--clay-deep)}
.b-note{font-size:16px;line-height:1.55;color:var(--ink-soft)}
.b-grid{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:48px}
.b-card{border-radius:22px;background:var(--surface);box-shadow:0 0 0 1px var(--line) inset;padding:22px;display:flex;flex-direction:column;gap:10px;min-height:190px}
.b-card a{display:flex;flex-direction:column;gap:10px;height:100%;color:inherit}
.b-card.feat{grid-column:span 2;grid-row:span 2;background:var(--espresso);color:#F4ECDC;box-shadow:none;padding:30px}
.b-card.all{grid-column:span 2;background:var(--sage-tint);box-shadow:none}
.b-tag{font-size:10.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--clay-deep)}
.feat .b-tag{color:#F2B48E}
.b-title{font-family:var(--serif);font-weight:400;font-size:22px;line-height:1.15}
.feat .b-title{font-size:clamp(30px,3vw,44px);margin-top:auto}
.b-dek{font-size:15px;line-height:1.55;color:#CFC5B3}
.b-meta{text-decoration:none;font-size:12.5px;font-weight:700;color:var(--muted);margin-top:auto;display:flex;align-items:center;gap:8px}
.feat .b-meta{color:#F4ECDC}
.b-meta i{width:16px;height:1.5px;background:currentColor;transition:width .3s}
.b-card a:hover .b-meta i{width:28px}
.b-allnum{font-family:var(--serif);font-size:48px;font-weight:300;line-height:1;color:var(--sage-deep)}
.b-alltags{font-size:13px;color:var(--ink-soft);line-height:1.5}
footer{padding:70px 0 40px;border-top:1px solid var(--line)}
.fgrid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:40px}
.wm{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-size:26px;color:var(--ink)}
.crisis{font-size:14.5px;line-height:1.55;color:var(--ink-soft);margin-top:16px;max-width:420px}
.ftalk{font-size:14.5px;color:var(--ink-soft);margin-top:10px}
.fnav{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.fnav div{display:flex;flex-direction:column;gap:9px}
.fk{font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.fnav a{font-size:14.5px;color:var(--ink)}
.fnav a:hover{color:var(--clay)}
.fbot{display:flex;justify-content:space-between;gap:30px;margin-top:50px;padding-top:24px;border-top:1px solid var(--line)}
.legal{font-size:12px;line-height:1.55;color:var(--muted);max-width:760px}
.fcop{font-size:12px;color:var(--muted);white-space:nowrap}

/* ── small screens: the world on top, the sheet below - the app's own shape ── */
@media (max-width:820px){
.nav{padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top))}
.brand{font-size:21px;gap:8px}
.readout,.rail,.navr>a:not(.btn){display:none}
.btn.sm{height:36px;padding:0 15px;font-size:13px}
.prog{display:block}
.hero-copy{top:calc(78px + env(safe-area-inset-top));width:calc(100vw - 36px)}
.hero-copy .h1{font-size:clamp(38px,11vw,54px);line-height:1}
.hero-copy .lede.light{font-size:16px;margin-top:14px;line-height:1.5}
.hero-acts{bottom:calc(18px + env(safe-area-inset-bottom));padding:0 18px;gap:14px}
.acts{flex-direction:column;gap:10px;width:100%}
.acts .btn{width:100%;height:54px;font-size:16px}
.ghostbtn{font-size:14px;padding:6px}
.sheet,.sheet.slim{left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));width:auto;padding:20px 20px 18px;border-radius:24px}
.eyebrow{font-size:10.5px;margin-bottom:8px}
.h2,.h2b{font-size:clamp(25px,7.2vw,30px);line-height:1.06}
.lede{font-size:15px;margin-top:10px;line-height:1.5}
.proof,.chips,.sounds,#jar .lede,#grow .lede{display:none}
.rules{margin-top:12px;gap:5px}.rules li{font-size:13.5px}.rules li:nth-child(n+3){display:none}
.holdbtn{height:68px;margin-top:16px;border-radius:20px}
.opts{margin-top:14px}.opts button{min-height:52px;font-size:14px;gap:10px}.opts i{width:28px;height:28px}
.yr{margin:20px 0 26px}.grew{margin-top:4px;font-size:14px}
.spend{margin-top:14px}.clabel{font-size:10px}.seg button{height:44px;font-size:14px}
.tally{margin-top:14px;padding-top:12px}.tnum{font-size:46px}.tbar{margin:12px 0 18px}
.thread .tb{font-size:14.5px;max-width:84%}.thread .tb.h{font-size:16px}
.lock{left:12px;right:12px;top:calc(66px + env(safe-area-inset-top));width:auto;height:auto;margin:0;padding:0;border-radius:0;background:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;transform:none}
.lclock,.lhome{display:none}
.nstack{margin-top:0}
.notif{background:rgba(250,246,238,.95);box-shadow:0 14px 30px -18px rgba(0,0,0,.6)}
.deck{left:16px;right:16px;top:calc(72px + env(safe-area-inset-top));bottom:auto;width:auto;height:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;perspective:none}
.deck .card{position:relative;width:auto;height:132px;border-radius:16px;padding:10px 11px 11px;z-index:auto!important;box-shadow:0 16px 30px -18px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.12) inset}
.deck .card s{top:10px;left:11px;right:11px;font-size:8px;letter-spacing:.12em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.deck .card b{font-size:15px;line-height:1.1}
.deck .card em{font-size:9.5px;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.share{left:12px;right:12px;top:calc(66px + env(safe-area-inset-top));bottom:auto;width:auto;gap:6px}
.share .pt{font-size:16px;margin-top:8px}.share .post{padding:16px}.share .rep{padding:10px 12px;font-size:13.5px}
.goals button{min-height:42px;font-size:13px;padding:0 11px}
.tnum{font-size:46px}
.orb{width:46px;height:46px;margin:-23px 0 0 -23px}
body[data-ch="talk"] .orb,body[data-ch="reach"] .orb,body[data-ch="close"] .orb,body[data-ch="after"] .orb{opacity:0}
.thread .tb.u{background:rgba(33,29,24,.92)}
#talk .scene.calling .sheet{opacity:0;transform:translateY(40px);pointer-events:none}
.mem{font-size:12.5px;padding:7px 11px}
.bubble p{font-size:16px;max-width:240px;padding:10px 14px 11px}
.ghostnum{left:20px!important;top:calc(74px + env(safe-area-inset-top));transform:none;font-size:clamp(60px,19vw,88px);color:var(--hud);text-shadow:0 2px 24px rgba(0,0,0,.18);letter-spacing:-.04em}
.ghostnum::before{content:"Day";display:block;font-family:var(--sans);font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;margin:0 0 -2px 3px;text-shadow:none}
.close-copy{top:calc(86px + env(safe-area-inset-top));width:calc(100vw - 36px)}
.close-copy .h1{font-size:clamp(46px,13vw,62px)}
.close-copy .lede.light{font-size:16px}
.wl{flex-direction:column}.wl .btn{width:100%}
.trust{gap:8px 16px}
.blog{padding:80px 0 60px}
.b-head,.fgrid{grid-template-columns:1fr;gap:18px}
.b-grid{grid-template-columns:1fr;gap:10px;margin-top:30px}
.b-card.feat,.b-card.all{grid-column:auto;grid-row:auto}
.b-card{min-height:0}
.fbot{flex-direction:column;gap:14px}
}
@media (min-width:821px) and (max-height:820px){
.sheet{padding:26px 28px 24px;bottom:clamp(16px,5vh,60px);border-radius:26px}
.h2{font-size:clamp(28px,2.6vw,38px)}.lede{font-size:15.5px;margin-top:12px}.proof{font-size:13px;margin-top:12px;padding-top:12px}
.rules{gap:6px;margin-top:14px}.rules li{font-size:13.5px}.chips{margin-top:16px}
.lock{transform:perspective(1400px) rotateY(calc(-14deg + var(--p,0) * 10deg)) rotateX(4deg) scale(.78);transform-origin:center}
.holdbtn{height:68px;margin-top:18px}.calc{margin-top:16px;padding:16px}.cres b{font-size:36px}.cweek b{font-size:32px}
.sounds{margin-top:14px}.snd{padding:8px 10px}
.deck{transform:scale(.85);transform-origin:top right}.post{transform:scale(.86);transform-origin:bottom right}
}
@media (min-width:821px) and (max-height:820px){#jar .lede,#circles .proof{display:none}.goals button,.seg button{min-height:40px;height:40px}.spend{margin-top:14px}.tally{margin-top:14px;padding-top:12px}.tnum{font-size:46px}.share{width:330px}.share .rep{padding:10px 12px}.hero-copy .h1{font-size:clamp(40px,5.2vw,72px)}.hero-copy .lede.light{font-size:17px;margin-top:12px}}
@media (min-width:821px) and (max-height:620px){.proof,.rules li:nth-child(n+4),.sounds .snd:nth-child(2){display:none}.sheet .lede{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}}
@media (prefers-reduced-motion:reduce){.w,.kin,.sheet{transition-duration:.01s!important;transition-delay:0s!important}.grain{animation:none}}

/* ── Local to the repo, not in the design export. Keep this block on a re-sync. ── */
/* Visually hidden, still read by screen readers and crawlers: the captions that mark the mockups as illustrations. */
.vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
/* home-blog.js fills the band with live posts as .b-card.live; the export only styles its hand-written cards */
.b-card.live{padding:0}
.b-card.live>a{padding:22px}
.b-card.live .b-meta{color:var(--clay-deep)}
.b-card.live:hover .b-meta i{width:28px}
/* The sun/moon paints at a default spot and site10.js then moves it to the hour's place - a layout shift
   (CLS ~0.2 on a phone). Keep it out of sight until it has been placed once. */
.orb:not([data-placed]){visibility:hidden}
/* The chat header: who the white bubbles are from. Phones only - on desktop the thread floats beside her. */
.thead{display:none}
@media (max-width:820px){
/* Text her: a header over the thread, as in the app */
.thead{display:flex;align-items:center;gap:10px;align-self:stretch;margin-bottom:4px;padding:8px 12px 8px 8px;border-radius:16px;background:rgba(33,29,24,.72);color:#F4ECDC}
.tav{flex:none;width:36px;height:36px;border-radius:50%;background:#F2E4CF;display:flex;align-items:center;justify-content:center}
.thead>span:last-child{display:flex;flex-direction:column;line-height:1.15}
.thead b{font-family:var(--serif);font-weight:400;font-size:17px}
.thead s{text-decoration:none;font-size:11px;font-weight:700;letter-spacing:.06em;color:#A9C29F}
.thread .tb.h{position:relative;margin-left:0}

/* Before it hits: a compact phone in the strip above the sheet, not bare notifications.
   Height comes from site10.js (--lh); no backdrop-filter on phones (see README). */
#lock.lock{left:50%;right:auto;top:calc(62px + env(safe-area-inset-top));width:min(290px,calc(100vw - 64px));height:var(--lh,360px);margin:0;transform:translateX(-50%);padding:20px 9px 0;border-radius:36px;overflow:hidden;background:linear-gradient(180deg,rgba(26,26,50,.94),rgba(46,38,76,.9));box-shadow:0 0 0 1.5px rgba(255,255,255,.22) inset,0 30px 60px -30px rgba(0,0,0,.8);-webkit-mask-image:linear-gradient(#000 calc(100% - 26px),transparent);mask-image:linear-gradient(#000 calc(100% - 26px),transparent)}
#lock .lclock{display:block}
#lock .ldate{font-size:11.5px}
#lock .ltime{font-size:44px;margin-top:0}
#lock .nstack{margin-top:12px;gap:6px}
#lock .notif{padding:9px 10px;border-radius:16px;gap:9px}
#lock .nico{width:28px;height:28px;border-radius:8px}
#lock .nh{font-size:10px}
#lock .nt{font-size:12.5px;line-height:1.3}

/* The jar: a tighter sheet, so the strip above it has room for the 3D jar */
#jar .sheet .h2{font-size:24px}
#jar .spend{margin-top:10px}
#jar .seg{margin-top:6px}#jar .seg button{height:38px;font-size:13.5px}
#jar .goals{margin-top:6px;gap:5px}#jar .goals button{min-height:36px;font-size:12.5px}
#jar .tally{margin-top:10px;padding-top:10px}#jar .tnum{font-size:36px}#jar .tsub{margin-top:4px;font-size:13.5px}#jar .tbar{margin:8px 0 4px}

/* Get yourself back: headline at the top, the island in the middle, the form in a paper card at the bottom */
.close-copy{top:calc(80px + env(safe-area-inset-top));bottom:calc(10px + env(safe-area-inset-bottom));width:auto;left:10px;right:10px;transform:none;display:flex;flex-direction:column}
.close-copy .h1{font-size:clamp(50px,14.5vw,64px)}
.close-copy .lede.light{font-size:16px;margin-top:10px;text-shadow:0 1px 14px rgba(8,8,24,.7)}
.wlcard{margin-top:auto;background:rgba(251,247,239,.97);border-radius:26px;padding:20px 18px 16px;text-align:left;box-shadow:0 30px 70px -30px rgba(0,0,0,.8)}
.wlcard .wl{margin:0;gap:10px;max-width:none}
.wlcard .wl input{flex:none;height:56px;font-size:17px;border:1.5px solid var(--line-2);background:var(--surface);color:var(--ink)}
.wlcard .wl input::placeholder{color:var(--muted)}
.wlcard .wl input:focus{border-color:var(--clay-soft);background:#fff}
.wlcard .wl .btn{height:56px;font-size:16.5px;background:var(--espresso);color:#F4ECDC}
.wlcard .notice{font-size:12.5px;line-height:1.5;color:var(--ink-soft);margin-top:12px}
.wlcard .notice a{color:var(--clay-deep)}
.wlcard .trust{justify-content:flex-start;gap:6px 14px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.wlcard .trust li{color:var(--ink-soft);font-size:11.5px}
.wlcard .trust li::before{background:var(--sage)}
.wlcard .closewrap{align-items:flex-start}
.wlcard .sst{background:#EFE6D4;box-shadow:none;text-align:left}
.wlcard .solsay::after{background:#EFE6D4;left:28px}
}
/* the email field is a fixed-height row everywhere: in the export's column layout flex:1 squashed it to ~24px */
.wl input{flex:1 0 auto}
/* Local: on a short phone the porch cards drop their tag line and shrink, so the house and her still show below them */
@media (max-width:820px) and (max-height:760px){.deck .card{height:88px;padding:9px 10px}.deck .card s{top:9px;left:10px;right:10px}.deck .card b{font-size:13.5px}.deck .card em{display:none}}
