:root{--bg: #0b0b0f;--fg: #ecebe6;--dim: #8d8b84;--accent: #e8b04b;--danger: #c0392b;--font: "Helvetica Neue", Inter, system-ui, -apple-system, sans-serif;--gutter: 20px;--door: 1;--pull: 0;--decay: 0;--ease: cubic-bezier(.2, .7, .2, 1)}@property --hold{syntax: "<number>"; inherits: false; initial-value: 0;}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;overflow:hidden}body{font-family:var(--font);background:var(--bg);color:var(--fg);line-height:1.4;transition:background 1.6s var(--ease);overscroll-behavior:none}body[data-mood=neutral]{--bg: #0b0b0f}body[data-mood=p1]{--bg: #101226}body[data-mood=p2]{--bg: #14162b}body[data-mood=p3]{--bg: #1a1730}body[data-mood=p4]{--bg: #221626}body[data-mood=door]{--bg: #181218}body[data-mood=exit]{--bg: #0f1a16}body[data-mood=p5]{--bg: #1e1214}body[data-mood=p6]{--bg: #170d0e}body[data-mood=p7]{--bg: #0a0708}body[data-mood=break]{--bg: #000}body[data-mood=outro]{--bg: #0e0e12}.fx{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(120% 80% at 50% 110%,rgba(232,176,75,.14),transparent 60%);opacity:0;transition:opacity 2s var(--ease)}body[data-mood=door] .fx,body[data-mood=exit] .fx{opacity:1}body[data-mood=p5] .fx{opacity:.4}body[data-mood=p6] .fx{opacity:.15}.app{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;filter:saturate(calc(1 - .6 * var(--decay))) contrast(calc(1 + .14 * var(--decay)));transition:filter 1.6s var(--ease)}.app.jolt{animation:jolt .38s var(--ease)}@keyframes jolt{0%{transform:none}18%{transform:translate(calc(-4px - 6px * var(--decay)),calc(2px + 3px * var(--decay))) scale(calc(1 + .012 * var(--decay)))}40%{transform:translate(calc(3px + 5px * var(--decay)),calc(-2px - 2px * var(--decay)))}62%{transform:translate(calc(-2px - 3px * var(--decay)),1px)}to{transform:none}}.vignette{position:fixed;top:-10%;right:-10%;bottom:-10%;left:-10%;pointer-events:none;z-index:3;background:radial-gradient(75% 65% at 50% 50%,transparent 30%,rgba(0,0,0,.92) 100%);opacity:var(--decay);transition:opacity 1.6s var(--ease)}.grain{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:3;opacity:calc(.55 * var(--decay));mix-blend-mode:overlay;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='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");transition:opacity 1.6s var(--ease)}body.shaky .grain{animation:grain .5s steps(3) infinite}@keyframes grain{0%{transform:translate(0)}33%{transform:translate(-6px,4px)}66%{transform:translate(5px,-7px)}to{transform:translate(0)}}body.flicker .app{animation:flicker 5.5s infinite}@keyframes flicker{0%,91%,93.5%,95%,to{opacity:1}92%{opacity:.55}94%{opacity:.8}97%{opacity:.65}}.scene{flex:1;display:flex;flex-direction:column;justify-content:center;gap:18px;padding:calc(env(safe-area-inset-top,0px) + 64px) var(--gutter) calc(env(safe-area-inset-bottom,0px) + 32px);max-width:560px;width:100%;margin:0 auto;opacity:0;transform:translateY(6px);transition:opacity .7s var(--ease),transform .7s var(--ease);overflow-y:auto}.scene.in{opacity:1;transform:none}.title{font-size:clamp(40px,11vw,64px);font-weight:600;letter-spacing:-.03em;line-height:1;margin:0}.title-sm{font-size:clamp(28px,8vw,40px);font-weight:600;letter-spacing:-.02em;line-height:1.05;margin:0 0 8px}.sub{font-size:18px;color:var(--fg);margin:0;max-width:34ch}.meta,.credit{font-size:13px;color:var(--dim);margin:0}.phase-name{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin:0}.lines{display:flex;flex-direction:column;gap:10px}.line{font-size:clamp(24px,6.4vw,34px);font-weight:500;letter-spacing:-.015em;line-height:1.15;margin:0;opacity:0;transform:translateY(8px);transition:opacity .8s var(--ease),transform .8s var(--ease)}.line.in{opacity:1;transform:none}.line.dim{font-size:18px;color:var(--dim)}.line.smear{filter:blur(.6px);letter-spacing:.01em;transform:skew(-1.5deg)}.line.smear.in{transform:skew(-1.5deg)}.lines.fade .line{opacity:.25;transition:opacity 1.4s}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;font:inherit;cursor:pointer;border-radius:999px;padding:14px 22px;font-size:17px;color:var(--fg);background:#ffffff14;align-self:flex-start;opacity:0;transform:translateY(6px);transition:opacity .6s var(--ease),transform .6s var(--ease),background .3s,font-size 1.2s var(--ease),padding 1.2s var(--ease),box-shadow 1.2s var(--ease);touch-action:manipulation;min-height:44px}.btn.in{opacity:1;transform:none}.btn:active{transform:scale(.97)}.btn.primary{background:var(--fg);color:var(--bg);font-weight:600}.btn.quiet{background:transparent;color:var(--dim);padding-left:0;text-decoration:underline;text-underline-offset:4px}.btn.stay{background:var(--accent);color:#1a1206;font-weight:600;box-shadow:0 0 #e8b04b00}.btn.big{font-size:22px;padding:20px 34px;align-self:center;margin-top:12px}.btn.exit{background:transparent;color:var(--fg);border:1px solid rgba(255,255,255,.35)}body.shaky .btn.stay{animation:tremor .9s infinite}@keyframes tremor{0%,to{transform:translate(0) rotate(0)}20%{transform:translate(calc(1px + 1px * var(--decay)),calc(-1px * var(--decay))) rotate(-.4deg)}45%{transform:translate(calc(-1px - 1px * var(--decay)),1px) rotate(.3deg)}70%{transform:translate(1px,calc(1px + 1px * var(--decay))) rotate(-.2deg)}}.btn.hold{position:relative;overflow:hidden;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none;transition:--hold .45s var(--ease),opacity .6s var(--ease),transform .6s var(--ease),font-size 1.4s var(--ease),border-color .3s}.btn.hold.holding{transition:--hold 0s,opacity .6s var(--ease),transform .6s var(--ease),font-size 1.4s var(--ease);border-color:var(--fg)}.btn.hold:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgba(236,235,230,.32) calc(var(--hold) * 100%),transparent calc(var(--hold) * 100%));pointer-events:none}.btn.hold.flinch{animation:flinch .35s var(--ease);border-color:#c0392bcc}@keyframes flinch{0%{transform:translate(0)}30%{transform:translate(-6px)}60%{transform:translate(4px)}to{transform:translate(0)}}.btn.hold.broke{animation:broke .6s var(--ease);border-color:#c0392bcc}@keyframes broke{0%{transform:translate(0);filter:none}20%{transform:translate(-9px);filter:blur(.5px)}45%{transform:translate(7px)}70%{transform:translate(-4px)}to{transform:translate(0);filter:none}}.btn.hold.done{background:var(--fg);color:var(--bg)}.btn.hold.tap{animation:tap .16s var(--ease)}@keyframes tap{0%{transform:scale(1)}40%{transform:scale(.94)}to{transform:scale(1)}}.hint.urgent{color:var(--accent);opacity:1}.exit-wrap{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.hint{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);opacity:calc(.4 + .6 * var(--door));transition:opacity 1.4s var(--ease)}.receipt{position:fixed;left:var(--gutter);right:var(--gutter);bottom:calc(env(safe-area-inset-bottom,0px) + 18px);z-index:4;display:flex;flex-direction:column;gap:2px;pointer-events:none;opacity:0;transform:translateY(10px);transition:opacity .5s var(--ease),transform .5s var(--ease);--w: 0}.receipt.in{opacity:1;transform:none}.receipt span{display:block;font-weight:500;letter-spacing:-.01em}.receipt .gain{color:var(--accent);font-size:calc(22px - 9px * var(--w));opacity:calc(1 - .55 * var(--w))}.receipt .cost{color:#f0d7d2;font-size:calc(14px + 12px * var(--w));opacity:calc(.6 + .4 * var(--w))}.actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.actions.col{flex-direction:column;align-items:flex-start}.tracker{position:fixed;top:calc(env(safe-area-inset-top,0px) + 18px);left:var(--gutter);right:var(--gutter);display:flex;align-items:center;gap:6px;z-index:2}.tracker .dot{width:8px;height:8px;border-radius:50%;background:#ffffff2e;transition:background .6s,transform .6s}.tracker .dot.done{background:#ffffff73}.tracker .dot.on{background:var(--fg);transform:scale(1.35)}.tracker .gate{width:10px;height:14px;display:grid;place-items:center;margin:0 2px}.tracker .gate i{display:block;width:8px;height:12px;border-radius:4px 4px 1px 1px;border:1px solid rgba(255,255,255,.25);transition:all .8s var(--ease)}.tracker .gate.open i{border-color:var(--accent);background:#e8b04b99;box-shadow:0 0 10px #e8b04b99}.tracker .gate.closing i{border-color:#e8b04b80;background:#e8b04b1f}.tracker .gate.closed i{border-color:#ffffff1f;background:transparent;transform:scaleY(.2)}.tracker-label{margin-left:auto;font-size:12px;color:var(--dim);letter-spacing:.04em}.door{display:grid;place-items:center;width:100%;height:calc(140px * var(--door) + 40px);transition:height 1.4s var(--ease);margin-bottom:4px}.door-frame{width:calc(96px * var(--door) + 10px);height:calc(160px * var(--door) + 16px);border:2px solid rgba(255,255,255,calc(.15 + .55 * var(--door)));border-radius:48px 48px 6px 6px;padding:6px;transition:width 1.4s var(--ease),height 1.4s var(--ease),border-color 1.4s var(--ease);position:relative}.door-light{width:100%;height:100%;border-radius:42px 42px 3px 3px;background:linear-gradient(180deg,#fff2c7,var(--accent) 60%,#b7782a);box-shadow:0 0 calc(60px * var(--door)) rgba(232,176,75,calc(.7 * var(--door)));opacity:calc(.25 + .75 * var(--door));transition:opacity 1.4s var(--ease),box-shadow 1.4s var(--ease)}.door-scene .actions{margin-top:6px}.door-scene .exit-wrap{transform:scale(calc(.28 + .72 * var(--door)));transform-origin:left center;opacity:calc(.25 + .75 * var(--door));transition:transform 1.4s var(--ease),opacity 1.4s var(--ease),filter 1.4s var(--ease)}.door-scene .exit-wrap.dead{opacity:.12;filter:blur(1px);pointer-events:none}.door-scene .btn.exit{font-size:17px}.door-msg{min-height:30px}.door-scene .btn.stay{font-size:calc(17px + 13px * var(--pull));padding:calc(14px + 12px * var(--pull)) calc(22px + 16px * var(--pull));flex-grow:var(--pull);text-align:center;box-shadow:0 0 calc(60px * var(--pull)) rgba(232,176,75,calc(.6 * var(--pull)));transition:font-size 1.4s var(--ease),padding 1.4s var(--ease),box-shadow 1.4s var(--ease),flex-grow 1.4s var(--ease)}.door-scene .actions{align-items:center}.arguments{display:flex;flex-direction:column;gap:6px;max-height:34vh;overflow-y:auto;-webkit-mask-image:linear-gradient(180deg,transparent,#000 25%);mask-image:linear-gradient(180deg,transparent,#000 25%);padding-top:8px}.argument{margin:0;font-size:17px;color:var(--fg);opacity:0;transform:translate(-6px);transition:opacity .6s var(--ease),transform .6s var(--ease)}.argument.in{opacity:.9;transform:none}.arguments .argument:not(:last-child){opacity:.45}.door.mini{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;cursor:pointer;position:absolute;top:calc(env(safe-area-inset-top,0px) + 54px);right:var(--gutter);width:auto;height:auto;margin:0;padding:12px;display:flex;flex-direction:column;align-items:center;gap:6px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none;border-radius:14px;overflow:visible;transition:transform .5s var(--ease)}.door.mini .hint{font-size:9px}.door.mini .door-light{opacity:calc(.25 + .75 * var(--door) + .5 * var(--hold));box-shadow:0 0 calc(60px * var(--door) + 30px * var(--hold)) rgba(232,176,75,calc(.7 * var(--door) + .4 * var(--hold)));transition:opacity .2s,box-shadow .2s}.door.mini:before{content:"";position:absolute;left:8px;right:8px;bottom:4px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--accent) calc(var(--hold) * 100%),rgba(255,255,255,.1) calc(var(--hold) * 100%))}.door.mini.holding{transform:scale(1.06)}.door.mini.broke{animation:broke .6s var(--ease)}.door.mini.flinch{animation:flinch .35s var(--ease)}.late{position:relative}.late-msg{min-height:60px}.chronic{align-items:stretch;--dark: 0}.chronic:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:#000;opacity:calc(.85 * var(--dark));pointer-events:none;transition:opacity .9s var(--ease)}.chronic .btn,.chronic .counter{position:relative;z-index:1}.chronic .btn.stay{box-shadow:0 0 calc(30px + 50px * var(--dark)) rgba(232,176,75,calc(.3 + .5 * var(--dark)))}.counter{font-size:48px;font-weight:600;color:var(--dim);text-align:center;margin:0;opacity:0;transition:opacity .4s}.counter.in{opacity:1}.break .line{color:#fff}.outro{justify-content:flex-start;gap:24px;padding-top:calc(env(safe-area-inset-top,0px) + 40px)}.lead{font-size:18px;margin:0;color:var(--fg)}.path{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:14px}.path li{display:grid;grid-template-columns:28px 1fr;gap:12px;align-items:start}.path .num{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#ffffff1a;font-size:13px;font-weight:600}.path strong{display:block;font-size:16px;margin-bottom:2px}.path p{margin:0;font-size:14px;color:var(--dim)}.path .key .num{background:var(--fg);color:var(--bg)}.path-door{padding:12px;margin:2px 0;border-radius:12px;background:#e8b04b1a;border:1px solid rgba(232,176,75,.35)}.path-door .door-num{background:transparent}.path-door .door-num i{display:block;width:12px;height:18px;border-radius:6px 6px 2px 2px;background:var(--accent);box-shadow:0 0 12px #e8b04bb3}.path-door p{color:var(--fg)}.ledger h3,.ledger h4,.stats h3,.vision h3{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin:0 0 10px}.stats dl{margin:0;display:grid;gap:8px}.stats dl div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:6px;font-size:15px}.stats dd{margin:0;font-weight:600}.vision p{margin:0 0 12px;font-size:16px}.ledger .cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}.ledger h4{margin-bottom:6px}.ledger ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:15px}.ledger li:before{content:"+ ";color:var(--accent)}.ledger .costs li:before{content:"− ";color:var(--danger)}.ledger .costs li{color:#f0d7d2}@media(min-width:700px){:root{--gutter: 32px}.line{font-size:36px}.scene{padding-top:96px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation:none!important}.grain{display:none}}
