/* procraststop · fonts are self-hosted, nothing is requested from third parties */
@font-face{font-family:'Fredoka';font-style:normal;font-weight:500 600;font-display:swap;src:url(fonts/fredoka.woff2) format('woff2')}
@font-face{font-family:'Nunito';font-style:normal;font-weight:500 800;font-display:swap;src:url(fonts/nunito.woff2) format('woff2')}

html{scroll-behavior:smooth}
body{margin:0;background:#1C2A86}
.skip{position:absolute;left:-9999px;top:8px;z-index:50;padding:10px 16px;border-radius:12px;background:#fff;color:#141E66;font-family:'Nunito',system-ui,sans-serif;font-weight:800}
.skip:focus{left:8px}
.ps [hidden]{display:none !important}
.ps button{font:inherit}
.ps .rungs{margin:0;padding:0;list-style:none;display:flex;align-items:center;gap:6px}
.ps .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ps .msg:empty{display:none}
.ps .msg{min-height:20px;font-size:15px;font-weight:700;color:var(--cardmuted)}
.confirm{width:min(400px,calc(100vw - 40px));padding:28px;border:0;border-radius:28px;background:var(--card);color:var(--cardink);box-shadow:0 24px 60px -16px rgba(10,16,70,.6)}
.confirm::backdrop{background:rgba(10,16,70,.55)}
.toast{position:fixed;left:50%;bottom:24px;z-index:60;transform:translate(-50%,20px);padding:12px 18px;border-radius:16px;background:#fff;color:#141E66;font-family:'Nunito',system-ui,sans-serif;font-weight:800;font-size:15px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ───── winter themes (from the design) ───── */
.ps{
  --sky:#1C2A86;--ink:#FFFFFF;--muted:#D3DCFF;--line:rgba(255,255,255,.42);--tint:rgba(255,255,255,.12);
  --far:#2B3FA6;--mid:#3852C4;--snow:#F4F8FF;--shade:#D5E1F6;--tree:#14206B;--tree2:#2F4BB8;
  --card:#FFFFFF;--cardink:#141E66;--cardmuted:#465290;--field:#EEF3FC;
  --accent:#FF7D6B;--smoke:#7C8AC6;--accentink:#1B1550;--orb:#FFF3C9;--cut:#1C2A86;--stars:1;
  position:relative;width:100%;min-height:calc(100vh / var(--z,1));box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;
  background:var(--sky);color:var(--ink);font-family:'Nunito',ui-rounded,system-ui,sans-serif;font-weight:600;
  transition:background .5s,color .5s;-webkit-font-smoothing:antialiased;
}
.ps[data-theme="day"]{
  --sky:#BFE3F7;--ink:#10306B;--muted:#27477F;--line:rgba(16,48,107,.4);--tint:rgba(16,48,107,.09);
  --far:#A0D0EC;--mid:#83BCE2;--snow:#FBFDFF;--shade:#D8E9F6;--tree:#1D6476;--tree2:#3A8E9C;
  --cardink:#10306B;--cardmuted:#3F5A8A;--field:#EDF5FB;
  --accent:#F0714F;--accentink:#10306B;--orb:#FFD86B;--cut:transparent;--stars:0;
}
.ps[data-theme="dawn"]{
  --sky:#F9D5CF;--ink:#46184F;--muted:#642F6B;--line:rgba(70,24,79,.4);--tint:rgba(70,24,79,.08);
  --far:#F2B3BA;--mid:#DE93B4;--snow:#FFF7F4;--shade:#F5DDE0;--tree:#60337E;--tree2:#9358A3;
  --cardink:#46184F;--cardmuted:#6D4574;--field:#FBEFEE;
  --accent:#6E2F93;--accentink:#FFFFFF;--orb:#FFBE7A;--cut:transparent;--stars:0;
}

.ps[data-theme="midnight"]{
  --sky:#0A0F26;--ink:#E8ECFF;--muted:#A3ADD6;--line:rgba(232,236,255,.34);--tint:rgba(232,236,255,.09);
  --far:#121A3D;--mid:#1A2552;--snow:#8E9CCB;--shade:#6C7BB0;--tree:#070B1D;--tree2:#16204A;
  --card:#EEF1FF;--cardink:#0F1536;--cardmuted:#4A5485;--field:#E3E8FA;
  --accent:#7DE3D2;--smoke:#4A5688;--accentink:#07142A;--orb:#DDE4FF;--cut:#0A0F26;--stars:1;
}

/* midnight: the cabin is asleep, unlit window and just a wisp of smoke */
.ps[data-theme="midnight"] .win-bloom{display:none}
.ps[data-theme="midnight"] .win-pane{animation:none;fill:#1A2247}
.ps[data-theme="midnight"] .chimney-smoke{fill-opacity:.45}
.ps[data-theme="midnight"] .chimney-smoke:nth-of-type(n+2){display:none}

.ps *{box-sizing:border-box}
.ps h1,.ps h2,.ps h3,.ps .disp{font-family:'Fredoka',ui-rounded,system-ui,sans-serif;font-weight:600}
.ps a{color:inherit}
.ps a:hover{opacity:.78}
.ps :focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.ps .only-phone{display:none}
.ps.is-phone .only-phone{display:flex}
.ps.is-phone .only-desk{display:none}
.on{display:inline}
.off{display:none}

/* Controls */
.btn{min-height:54px;padding:0 24px;border:2px solid transparent;border-radius:18px;background:transparent;color:inherit;
  font-family:'Nunito',ui-rounded,system-ui,sans-serif;font-weight:800;font-size:17px;display:inline-flex;align-items:center;justify-content:center;gap:10px;
  cursor:pointer;transition:transform .16s,background .16s,box-shadow .16s}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--accent);color:var(--accentink);box-shadow:0 5px 0 rgba(10,10,50,.2)}
.btn-primary:hover{box-shadow:0 7px 0 rgba(10,10,50,.2)}
.btn-primary:active{box-shadow:0 2px 0 rgba(10,10,50,.2)}
.btn-danger{background:#D63B3B;color:#FFFFFF;box-shadow:0 3px 0 rgba(10,10,50,.2)}
.btn-danger:hover{background:#C42F2F}
.btn-danger:active{box-shadow:0 1px 0 rgba(10,10,50,.2)}
.btn-ghost{border-color:var(--line);background:color-mix(in srgb,var(--sky) 60%,transparent)}
.btn-ghost:hover{background:var(--tint)}
.btn-quiet{min-height:44px;padding:0 12px;font-weight:700;font-size:16px;text-decoration:underline;text-underline-offset:4px}
.btn-park{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:var(--field);color:var(--cardink)}
.btn-park:hover{background:var(--tint)}
.btn-small{white-space:nowrap;min-height:44px;padding:0 16px;font-size:15px;border-radius:14px}
.field{width:100%;height:56px;padding:0 16px;border:2px solid transparent;border-radius:16px;background:var(--field);color:var(--cardink);
  font-family:'Nunito',ui-rounded,system-ui,sans-serif;font-weight:700;font-size:17px;outline:0;transition:border-color .16s,background .16s}
.field::placeholder{color:var(--cardmuted);font-weight:600;opacity:1}
.field:focus{border-color:var(--cardink);background:#FFFFFF}
.chip{min-height:44px;padding:0 14px;border:0;border-radius:22px;background:var(--field);color:var(--cardink);
  font-family:'Nunito',ui-rounded,system-ui,sans-serif;font-weight:700;font-size:14px;cursor:pointer;transition:transform .16s}
.chip:hover{transform:translateY(-2px)}
.theme-trigger{white-space:nowrap;display:flex;align-items:center;gap:8px;min-height:40px;padding:0 12px 0 8px;border:0;border-radius:20px;background:var(--tint);color:inherit;
  font-family:'Nunito',ui-rounded,system-ui,sans-serif;font-weight:700;font-size:15px;cursor:pointer;transition:background-image .16s}
.theme-trigger:hover{background-image:linear-gradient(var(--tint),var(--tint))}
.theme-chip{flex:none;width:22px;height:22px;border-radius:11px;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 2px var(--line)}
.theme-chip span{width:8px;height:8px;border-radius:4px}
.theme-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:20;min-width:100%;padding:6px;border-radius:18px;background:var(--card);color:var(--cardink);box-shadow:0 18px 40px -16px rgba(10,16,70,.55)}
.theme-menu[hidden]{display:none}
.theme-opt{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 12px 0 8px;border:0;border-radius:12px;background:transparent;color:inherit;white-space:nowrap;
  font-family:'Nunito',ui-rounded,system-ui,sans-serif;font-weight:700;font-size:15px;text-align:left;cursor:pointer}
.theme-opt:hover{background:var(--field)}
.theme-opt.is-on{font-weight:800;background:var(--field)}
.theme-sep{height:1px;margin:6px 8px;background:rgba(20,30,102,.12)}
.theme-switch{justify-content:space-between;padding-left:12px}
.switch{flex:none;position:relative;width:38px;height:22px;border-radius:11px;background:rgba(20,30,102,.22);transition:background .16s}
.switch span{position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:8px;background:#FFFFFF;transition:transform .16s}
.switch.is-on{background:var(--cardink)}
.switch.is-on span{transform:translateX(16px)}
.theme-opt .theme-chip{box-shadow:inset 0 0 0 2px rgba(20,30,102,.25)}

/* Round ladder */
.ps .home-tight{padding-top:12px !important}
.ps .home-tight>section{align-self:start}
.tl{overflow-y:auto;overscroll-behavior:contain;padding-right:10px}
.tl::-webkit-scrollbar{width:6px}
.tl::-webkit-scrollbar-track{border-radius:3px;background:color-mix(in srgb,var(--cardink) 8%,transparent)}
.tl::-webkit-scrollbar-thumb{border-radius:3px;background:color-mix(in srgb,var(--cardink) 38%,transparent)}
@supports not selector(::-webkit-scrollbar){.tl{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--cardink) 38%,transparent) color-mix(in srgb,var(--cardink) 8%,transparent)}}
.tl.is-scroll::after{content:"";display:block;position:sticky;bottom:0;height:var(--fade,46px);margin-top:calc(-1 * var(--fade,46px));pointer-events:none;background:linear-gradient(to bottom,transparent,var(--card));transition:opacity .15s}
.tl.is-scroll.at-end::after{opacity:0}
.tl-in{position:relative;display:flex;flex-direction:column}
.tl-line{position:absolute;left:21px;top:28px;bottom:28px;border-left:2px solid color-mix(in srgb,var(--cardink) 22%,transparent)}
.tl-row{position:relative;display:flex;align-items:center;gap:16px;min-height:60px}
.tl-row.is-brk{min-height:40px}
.tl-col{flex:none;width:44px;display:flex;justify-content:center}
.tl-dot{display:block;border-radius:50%;background:var(--cardink);box-shadow:0 0 0 5px var(--card)}
.tl-dot.is-last{background:var(--accent)}
.tl-t{font-size:17px;font-weight:800;color:var(--cardink);overflow-wrap:anywhere}
.tl-s{font-size:14px;font-weight:700;color:var(--cardmuted)}
.tl-mug{width:24px;height:24px;border-radius:50%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:var(--field);border:2px solid color-mix(in srgb,var(--cardink) 45%,transparent);color:var(--cardink);box-shadow:0 0 0 5px var(--card)}
.rung{position:relative;display:block;border-radius:50%;background:var(--tint);border:2px solid var(--line)}
.rung.is-done{background:#FFFFFF;border-color:#FFFFFF}
.rung.is-now{background:var(--accent);border-color:var(--accent)}
.rung-badge{position:absolute;right:-8px;top:-10px;width:19px;height:19px;border-radius:50%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:var(--sky);border:1.5px solid var(--line);color:var(--ink)}
.rung-badge.is-soon{background:var(--card);border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 28%,transparent)}
.rung-badge.is-taken{background:var(--ink);border-color:var(--ink);color:var(--sky)}
.rung-lap{position:absolute;left:50%;bottom:-9px;transform:translateX(-50%);padding:0 6px;border-radius:999px;box-sizing:border-box;background:var(--ink);color:var(--sky);border:2px solid var(--sky);font-size:12px;font-weight:800;line-height:15px;white-space:nowrap}
.ps[data-theme="day"] .rung.is-done,.ps[data-theme="dawn"] .rung.is-done{background:var(--ink);border-color:var(--ink)}

/* Timer */
.digit{display:inline-block;width:.6em;text-align:center}
.colon{display:inline-block;width:.32em;text-align:center}

/* Sky */
.sky #flakes{position:absolute;inset:0}
.sky{position:absolute;left:0;right:0;top:0;height:940px;overflow:hidden;pointer-events:none}
.stars{position:absolute;inset:0;opacity:var(--stars);transition:opacity .5s}
.star{position:absolute;border-radius:50%;animation:ps-twinkle 5s ease-in-out infinite}
.shoot{position:absolute;width:110px;height:2px;border-radius:2px;background:linear-gradient(90deg,rgba(255,255,255,0),#FFFFFF);transform-origin:100% 50%;opacity:0;animation:ps-shoot 1.1s ease-out forwards}
.shoot::after{content:'';position:absolute;right:-1px;top:-2px;width:6px;height:6px;border-radius:50%;background:#FFFFFF;box-shadow:0 0 8px 2px rgba(255,255,255,.8)}
.orb{position:absolute;left:8%;top:124px;width:92px;height:92px}
.orb.on-home{left:48%;top:92px}
.ps.is-phone .orb{left:auto;right:18px;top:84px;width:54px;height:54px}

/* Scene */
.scene{position:fixed;left:0;bottom:0;z-index:1;display:block;width:100%;height:auto;overflow:visible;pointer-events:none}
.f-far{fill:var(--far);transition:fill .5s}
.f-mid{fill:var(--mid);transition:fill .5s}
.f-capshade{fill:var(--shade);stroke:var(--shade);stroke-width:9.5;transition:fill .5s,stroke .5s}
.f-snow{fill:var(--snow);transition:fill .5s}
.f-shade{fill:var(--shade);transition:fill .5s}
.f-tree{fill:var(--tree);stroke:var(--tree);transition:fill .5s,stroke .5s}
.f-tree2{fill:var(--tree2);stroke:var(--tree2);transition:fill .5s,stroke .5s}
.f-ball{fill:#FFFFFF}
.f-ballshade{fill:#CFDCF4}
.f-accent{fill:var(--accent)}
.f-shadow{fill:rgba(40,60,130,.14)}
.lip{fill:none;stroke:var(--shade);stroke-width:12;stroke-linecap:round}
.trail{fill:none;stroke:var(--shade);stroke-width:7;stroke-linecap:round;transition:stroke-dasharray .4s linear}
.ball-wrap{transition:transform .4s linear}
.ball-spin{transition:transform .4s linear}
.ball-wrap.is-jump{animation:none}
.eye{transform-box:fill-box;transform-origin:center;animation:ps-blink 5.5s ease-in-out infinite}
.sparkle{filter:drop-shadow(0 0 4px var(--orb));transform-box:fill-box;transform-origin:center;animation:ps-sparkle 2.2s ease-in-out infinite}
.steam{animation:ps-steam 3.6s ease-out infinite}
.chimney-smoke{transform-box:fill-box;transform-origin:center;animation:ps-chimney 4.5s ease-out infinite}
.man-wobble{transform-box:fill-box;transform-origin:50% 100%;animation:ps-wobble 4.5s ease-in-out -1.125s infinite}

.win-flicker{animation:ps-flicker 4.3s linear infinite}
.win-bloom{transform-box:fill-box;transform-origin:center;animation:ps-bloom 4.3s linear infinite}
@keyframes ps-flicker{0%,100%{opacity:1}8%{opacity:.86}14%{opacity:.98}27%{opacity:.9}33%{opacity:1}52%{opacity:.84}57%{opacity:.96}73%{opacity:.9}80%{opacity:1}91%{opacity:.88}}
@keyframes ps-bloom{0%,100%{transform:scale(1);opacity:.95}8%{transform:scale(.9);opacity:.7}14%{transform:scale(1.04);opacity:1}27%{transform:scale(.93);opacity:.78}33%{transform:scale(1.02);opacity:.95}52%{transform:scale(.88);opacity:.68}57%{transform:scale(1.03);opacity:1}73%{transform:scale(.94);opacity:.8}80%{transform:scale(1);opacity:.95}91%{transform:scale(.91);opacity:.72}}
@keyframes ps-twinkle{0%,100%{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1.25)}}
@keyframes ps-shoot{0%{opacity:0;transform:rotate(var(--ang)) translateX(0)}12%{opacity:1}100%{opacity:0;transform:rotate(var(--ang)) translateX(320px)}}
@keyframes ps-blink{0%,92%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}
@keyframes ps-sparkle{0%,100%{opacity:0;transform:scale(.4)}50%{opacity:1;transform:scale(1)}}
@keyframes ps-chimney{0%{opacity:0;transform:translate(0,4px) scale(.6)}20%{opacity:.9}100%{opacity:0;transform:translate(10px,-48px) scale(1.7)}}
@keyframes ps-steam{0%{opacity:0;transform:translateY(6px)}30%{opacity:.75}100%{opacity:0;transform:translateY(-22px)}}
@keyframes ps-wobble{0%,100%{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}

/* Break: lumberjack and log fire */
.fire-grow{transform-box:fill-box;transform-origin:50% 100%;transition:transform .9s ease-out;animation:ps-fire-flick 3.4s ease-in-out infinite}
.flame{transform-box:fill-box;transform-origin:50% 100%;animation:ps-flame 2.6s ease-in-out infinite alternate}
.flame.f2{animation-duration:2.1s;animation-delay:-.9s}
.flame.f3{animation-duration:1.7s;animation-delay:-.5s}
.glow{transform-box:fill-box;transform-origin:center;animation:ps-glow 3s ease-in-out infinite alternate}
.ember{animation:ps-ember 2.4s ease-out infinite}
.jack-wrap{transition:transform .25s linear}
.leg{transform-box:fill-box;transform-origin:50% 0}
.is-walk .leg{animation:ps-step .25s ease-in-out infinite alternate}
.is-walk .leg.back{animation-delay:-.25s}
.is-walk .jack-body{animation:ps-bob .25s ease-in-out infinite alternate}
.arm{transform-box:fill-box;transform-origin:50% 0;transition:transform .5s}
.is-warm .arm{transform:rotate(-68deg)}
@keyframes ps-flame{0%{transform:rotate(-1.6deg) scale(1,1) skewX(-2deg)}35%{transform:rotate(1deg) scale(.96,1.07) skewX(1.5deg)}70%{transform:rotate(-.8deg) scale(1.03,.94) skewX(-1.5deg)}100%{transform:rotate(1.6deg) scale(.98,1.05) skewX(2deg)}}
@keyframes ps-fire-flick{0%,100%{opacity:1}30%{opacity:.94}55%{opacity:.98}78%{opacity:.92}}
@keyframes ps-glow{from{opacity:.7;transform:scale(.97,.94)}to{opacity:1;transform:scale(1.04,1.06)}}
@keyframes ps-ember{0%{opacity:0;transform:translate(0,0)}20%{opacity:1}100%{opacity:0;transform:translate(8px,-60px)}}
@keyframes ps-step{from{transform:rotate(-24deg)}to{transform:rotate(24deg)}}
@keyframes ps-bob{from{transform:translateY(0)}to{transform:translateY(-2px)}}

/* Homepage: the snowball ladder */
.lad-stage{position:relative;height:190px}
.lad-ball{position:absolute;bottom:0;transform:translateX(-50%);opacity:0}
.lad-o5{left:8.33%;animation:ps-o5 14s linear infinite}
.lad-o10{left:25%;animation:ps-o10 14s linear infinite}
.lad-o15{left:41.67%;animation:ps-o15 14s linear infinite}
.lad-rep{left:91.67%;animation:ps-orep 14s linear infinite}
.lad-mover{position:absolute;left:8.33%;bottom:0;width:0;height:0;animation:ps-ladder-move 14s ease-in-out infinite}
.lad-grow{position:absolute;left:-64px;bottom:0;width:128px;height:128px;transform-origin:50% 100%;animation:ps-ladder-grow 14s ease-in-out infinite}
.lad-spin{animation:ps-ladder-spin 14s ease-in-out infinite}
.lad-mug{position:absolute;left:58.33%;bottom:0;transform:translateX(-50%);color:var(--ink);animation:ps-mug 14s ease-in-out infinite}
.lad-p{position:absolute;left:58.33%;bottom:150px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:#FFFFFF;opacity:0;animation-duration:14s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
.lad-p1{animation-name:ps-p1}.lad-p2{animation-name:ps-p2}.lad-p3{animation-name:ps-p3}.lad-p4{animation-name:ps-p4}
.lad-p5{animation-name:ps-p5}.lad-p6{animation-name:ps-p6}.lad-p7{animation-name:ps-p7}
.ps.is-phone .lad-stage{width:200%;margin-top:-95px;transform:scale(.5);transform-origin:0 100%}
.ps.is-phone .lad-labels{font-size:12px !important}
@keyframes ps-ladder-move{0%{left:8.33%;opacity:0}2%{opacity:1}14%{left:25%}28%{left:41.67%}40%{left:58.33%}52%{left:58.33%}70%{left:75%}92%{left:75%;opacity:1}97%{left:75%;opacity:0}100%{left:75%;opacity:0}}
@keyframes ps-ladder-grow{0%{transform:scale(.34)}14%{transform:scale(.55)}28%{transform:scale(.77)}48%{transform:scale(.77)}53%{transform:scale(.86)}70%{transform:scale(1)}100%{transform:scale(1)}}
@keyframes ps-ladder-spin{0%{transform:rotate(0deg)}14%{transform:rotate(200deg)}28%{transform:rotate(380deg)}40%{transform:rotate(520deg)}52%{transform:rotate(520deg)}70%{transform:rotate(680deg)}100%{transform:rotate(680deg)}}
@keyframes ps-o5{0%,1%{opacity:0}2%,92%{opacity:1}97%,100%{opacity:0}}
@keyframes ps-o10{0%,13.5%{opacity:0}14.5%,92%{opacity:1}97%,100%{opacity:0}}
@keyframes ps-o15{0%,27.5%{opacity:0}28.5%,92%{opacity:1}97%,100%{opacity:0}}
@keyframes ps-orep{0%,72%{opacity:0}77%,92%{opacity:1}97%,100%{opacity:0}}
@keyframes ps-mug{0%{transform:translate(-50%,0) scale(1);opacity:1}30%{transform:translate(-50%,0) scale(1)}37%{transform:translate(-50%,-120px) scale(1)}44%{transform:translate(-50%,-120px) scale(1);opacity:1}46%{transform:translate(-50%,-120px) scale(1.3);opacity:0}96%{transform:translate(-50%,0) scale(1);opacity:0}100%{transform:translate(-50%,0) scale(1);opacity:1}}
@keyframes ps-p1{0%,44%{transform:translate(0,0);opacity:0}45%{transform:translate(0,0);opacity:1}48%{transform:translate(-34px,-24px);opacity:1}53%{transform:translate(-8px,56px);opacity:1}55%,100%{transform:translate(-8px,56px);opacity:0}}
@keyframes ps-p2{0%,44%{transform:translate(0,0);opacity:0}45%{transform:translate(0,0);opacity:1}48%{transform:translate(-16px,-38px);opacity:1}53%{transform:translate(-4px,56px);opacity:1}55%,100%{transform:translate(-4px,56px);opacity:0}}
@keyframes ps-p3{0%,44%{transform:translate(0,0);opacity:0}45%{transform:translate(0,0);opacity:1}48%{transform:translate(2px,-44px);opacity:1}53%{transform:translate(0,56px);opacity:1}55%,100%{transform:translate(0,56px);opacity:0}}
@keyframes ps-p4{0%,44%{transform:translate(0,0);opacity:0}45%{transform:translate(0,0);opacity:1}48%{transform:translate(20px,-36px);opacity:1}53%{transform:translate(5px,56px);opacity:1}55%,100%{transform:translate(5px,56px);opacity:0}}
@keyframes ps-p5{0%,44%{transform:translate(0,0);opacity:0}45%{transform:translate(0,0);opacity:1}48%{transform:translate(36px,-22px);opacity:1}53%{transform:translate(9px,56px);opacity:1}55%,100%{transform:translate(9px,56px);opacity:0}}
@keyframes ps-p6{0%,44%{transform:translate(0,0);opacity:0}45%{transform:translate(0,0);opacity:1}48%{transform:translate(-26px,-6px);opacity:1}53%{transform:translate(-6px,56px);opacity:1}55%,100%{transform:translate(-6px,56px);opacity:0}}
@keyframes ps-p7{0%,44%{transform:translate(0,0);opacity:0}45%{transform:translate(0,0);opacity:1}48%{transform:translate(28px,-8px);opacity:1}53%{transform:translate(7px,56px);opacity:1}55%,100%{transform:translate(7px,56px);opacity:0}}

/* Phone sizing */
.ps.is-phone .t-hero{font-size:52px !important;letter-spacing:-1px !important}
.ps.is-phone .t-h1{font-size:34px !important}
.ps.is-phone .t-h2{font-size:38px !important}
.ps.is-phone .t-time{font-size:104px !important}
.ps.is-phone .t-step{font-size:28px !important}
.ps.is-phone .pad-x{padding-left:20px !important;padding-right:20px !important}
.ps.is-phone .stack{flex-direction:column !important;align-items:stretch !important}
.ps.is-phone .one-col{grid-template-columns:minmax(0,1fr) !important}
.ps.is-narrow .one-col{grid-template-columns:minmax(0,1fr) !important;justify-items:center;gap:36px !important;text-align:center}
.ps.is-narrow .one-col>*{width:100%;max-width:520px}
.ps.is-narrow .one-col>section{align-items:center}
.ps.is-narrow .one-col>:not(section){text-align:left}
.ps.is-phone .ladder-loop{display:none !important}
.ps.is-phone .ladder{grid-template-columns:repeat(3,minmax(0,1fr)) !important;row-gap:28px !important}
.ps.is-phone .btn{width:100%}
.ps.is-phone .btn-small,.ps.is-phone .btn-quiet{width:auto}

@media (prefers-reduced-motion:reduce){
  .ps *,.ps *::before,.ps *::after{animation:none !important;transition:none !important}
  .chimney-smoke,.shoot{display:none}
  .lad-ball{opacity:1}
  .lad-rep,.lad-mover,.lad-p{display:none}
}
.ps [tabindex="-1"]:focus,.ps [tabindex="-1"]:focus-visible{outline:none}

.etabs{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:6px}
.etab{display:inline-flex;align-items:center;gap:8px;min-height:50px;padding:0 22px;line-height:1;border-radius:999px;border:2px solid color-mix(in srgb,var(--ink) 28%,transparent);background:var(--tint);color:var(--muted);font-family:inherit;font-size:17px;font-weight:700;cursor:pointer}
.etab strong{font-size:22px;font-weight:800;line-height:1;color:var(--ink)}
.etab.on{background:var(--accent);border-color:var(--accent);color:var(--accentink);box-shadow:0 8px 20px -10px rgba(10,10,50,.5)}
.etab.on strong{color:var(--accentink)}
.etab:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.ehead{display:flex;align-items:center;justify-content:space-between;gap:12px}
.emeta{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.emeta span{padding:4px 11px;border-radius:999px;background:color-mix(in srgb,var(--cardink) 8%,transparent);font-size:13px;font-weight:800;color:var(--cardmuted)}

.ps .etab{font-size:17px;font-weight:700}
.seg{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:6px;border-radius:999px;background:var(--field)}
.ps .seg-btn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 12px;border:0;border-radius:999px;background:transparent;color:var(--cardmuted);font-family:inherit;font-size:16px;font-weight:800;cursor:pointer;transition:background .16s,color .16s}
.ps .seg-btn.on{background:var(--cardink);color:var(--card);box-shadow:0 6px 14px -8px rgba(10,16,70,.7)}
.ps .seg-btn:focus-visible{outline:3px solid var(--cardink);outline-offset:2px}
.stackcards{display:grid;width:100%;justify-items:center;align-items:start}
.stackcards>*{grid-area:1/1}
.stackcards>[data-off]{visibility:hidden;pointer-events:none}
.ps.is-home-page .scene{position:absolute;bottom:auto}

.ps .ease-pill{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);display:inline-flex;align-items:center;gap:8px;padding:4px 14px;border-radius:999px;white-space:nowrap;font-size:14px;font-weight:800;letter-spacing:.02em;color:var(--ink);animation:ps-ease-glow 3.4s ease-in-out infinite}
.ps .ease-pill[hidden]{display:none}
.ease-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:ps-ease-dot 3.4s ease-in-out infinite}
@keyframes ps-ease-glow{0%,100%{background:color-mix(in srgb,var(--accent) 14%,transparent);box-shadow:0 0 0 0 transparent,0 0 8px color-mix(in srgb,var(--accent) 25%,transparent)}50%{background:color-mix(in srgb,var(--accent) 28%,transparent);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 14%,transparent),0 0 22px color-mix(in srgb,var(--accent) 50%,transparent)}}
@keyframes ps-ease-dot{0%,100%{transform:scale(.8);opacity:.7}50%{transform:scale(1.25);opacity:1}}
