@import "https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Syne:wght@600;700;800&display=swap";html,body,#root{min-height:100%}:root{--ink:#eef5f2;--muted:#91a2aa;--night:#07101d;--line:#abc7cd29;--lime:#c8ff3e;--blue:#6fbde4;--amber:#f4b45f;--font-display:"Syne", "Bahnschrift", sans-serif;--font-body:"Manrope", "Aptos", sans-serif;color:var(--ink);background:var(--night);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--night);min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid var(--lime);outline-offset:3px}.app-shell{background:radial-gradient(circle at 76% 30%, #2358633d, transparent 32%), linear-gradient(115deg, #0f1e30a6, transparent 42%), var(--night);min-height:100dvh;overflow-x:hidden}.app-shell:before{content:"";pointer-events:none;opacity:.17;mix-blend-mode:soft-light;z-index:20;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.25'/%3E%3C/svg%3E");position:fixed;inset:0}.topbar{border-bottom:1px solid var(--line);z-index:30;justify-content:space-between;align-items:center;height:80px;padding:0 clamp(20px,4vw,68px);display:flex;position:relative}.brand{color:var(--ink);font-family:var(--font-display);letter-spacing:.12em;align-items:center;gap:12px;font-size:12px;font-weight:800;line-height:1;text-decoration:none;display:inline-flex}.brand em{color:var(--lime);margin-top:4px;font-style:normal;display:block}.brand-mark{border:1px solid #c8ff3e8c;border-radius:50%;place-items:center;width:30px;height:30px;display:grid;position:relative}.brand-mark:before,.brand-mark:after,.brand-mark span{content:"";background:var(--lime);border-radius:3px;width:4px;position:absolute;bottom:7px}.brand-mark:before{opacity:.5;height:6px;left:7px}.brand-mark span{height:10px;left:13px}.brand-mark:after{height:15px;right:6px}.top-actions{align-items:center;gap:10px;display:flex}.icon-button{border:1px solid var(--line);cursor:pointer;background:#0c192ac2;min-height:44px;transition:border-color .2s,background .2s,transform .2s}.icon-button:hover{background:#192a36e0;border-color:#c8ff3e8c}.icon-button:active{transform:scale(.96)}.icon-button{border-radius:50%;place-items:center;width:44px;display:grid}.rate-chip{border:1px solid var(--line);min-height:44px;color:var(--lime);background:#0c192ac2;border-radius:24px;align-items:center;gap:8px;padding:0 15px;display:flex}.rate-chip span{color:var(--muted);letter-spacing:.13em;font-size:8px;font-weight:800}.rate-chip strong{color:var(--ink);white-space:nowrap;font-size:11px}.game-layout{grid-template-columns:minmax(330px,37%) 1fr;min-height:calc(100dvh - 126px);display:grid;position:relative}.lesson-panel{border-right:1px solid var(--line);z-index:10;flex-direction:column;justify-content:center;padding:clamp(34px,5vw,84px) clamp(28px,4.2vw,72px);display:flex;position:relative}.mission-tag{letter-spacing:.2em;color:var(--lime);align-items:center;gap:9px;margin-bottom:22px;font-size:10px;font-weight:800;display:flex}.mission-tag span{background:var(--lime);width:24px;height:1px;box-shadow:0 0 8px var(--lime)}h1{font-family:var(--font-display);letter-spacing:-.055em;max-width:570px;margin:0;font-size:clamp(42px,4.8vw,76px);line-height:.95}h1 span{color:var(--lime);display:block}.intro{color:var(--muted);max-width:460px;margin:20px 0 22px;font-size:15px;line-height:1.65}.savings-inputs{grid-template-columns:1fr 1fr;gap:10px;max-width:520px;margin-bottom:20px;display:grid}.savings-inputs label{min-width:0}.savings-inputs label>span{color:var(--ink);margin-bottom:7px;font-size:10px;font-weight:700;display:block}.savings-inputs label>small{color:var(--muted);margin-top:5px;font-size:8px;display:block}.money-input{border:1px solid var(--line);background:#84a6b80f;border-radius:3px;align-items:center;gap:7px;height:48px;padding:0 13px;transition:border-color .2s,background .2s;display:flex}.money-input:focus-within{border-color:var(--lime);background:#c8ff3e0f}.money-input b{color:var(--lime);font-family:var(--font-display);font-size:15px}.money-input input{width:100%;min-width:0;color:var(--ink);font-family:var(--font-display);font-variant-numeric:tabular-nums;background:0 0;border:0;outline:0;font-size:17px;font-weight:700}.money-input input::-webkit-inner-spin-button{opacity:.35}.lesson-card{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:54px 1fr;gap:18px;max-width:520px;padding:18px 0;animation:.45s both enter;display:grid}.lesson-number{font-family:var(--font-display);color:#c8ff3e38;font-size:42px;line-height:1}.eyebrow{color:var(--lime);letter-spacing:.18em;font-size:9px;font-weight:800}.lesson-card h2{font-family:var(--font-display);letter-spacing:-.02em;margin:4px 0 7px;font-size:19px}.lesson-card p{color:var(--muted);margin:0;font-size:13px;line-height:1.55}.formula-strip{grid-template-columns:1fr 28px 1fr;align-items:center;gap:8px;max-width:520px;margin-top:16px;display:grid}.formula-strip>div:not(.formula-arrow){background:#84a6b80f;border:1px solid #97b8c91a;border-radius:4px;padding:11px 13px}.formula-strip span{color:var(--muted);margin-bottom:3px;font-size:9px;display:block}.formula-strip strong{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:14px}.formula-strip>div:last-child strong{color:var(--lime)}.formula-arrow{color:var(--muted);place-items:center;display:grid}.plain-rule{max-width:520px;color:var(--muted);margin:12px 0 0;font-size:11px}.plain-rule strong{color:var(--ink)}.world-panel{background:linear-gradient(#1122343d,#030a1394);grid-template-rows:1fr auto;min-width:0;min-height:640px;display:grid;position:relative}.scene-wrap{min-height:0;position:relative;overflow:hidden}.scene-wrap:before{content:"";pointer-events:none;z-index:2;background:radial-gradient(at 50% 64%,#0000 20%,#040a14bd 100%);position:absolute;inset:0}.three-stage{position:absolute;inset:0}.three-stage canvas{width:100%;height:100%;display:block}.scene-legend{z-index:4;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid;position:absolute;top:6%;left:5%;right:5%}.scene-label{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#060f1bb8;grid-template-columns:8px minmax(0,1fr);gap:10px;min-width:0;padding:12px 14px;display:grid;box-shadow:0 16px 34px #0003}.label-dot{background:var(--blue);width:7px;height:7px;box-shadow:0 0 10px var(--blue);border-radius:50%;margin-top:4px}.contribution-label .label-dot{background:var(--amber);box-shadow:0 0 10px var(--amber)}.compound-label .label-dot{background:var(--lime);box-shadow:0 0 10px var(--lime)}.scene-label small{color:var(--muted);letter-spacing:.14em;font-size:8px;font-weight:800;display:block}.scene-label strong{font-family:var(--font-display);font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.035em;margin-top:3px;font-size:clamp(14px,1.35vw,21px);display:block}.simple-label strong{color:var(--blue)}.contribution-label strong{color:var(--amber)}.compound-label strong{color:var(--lime)}.scene-label b{color:var(--muted);grid-column:2;font-size:8px;font-weight:500}.difference-pill{z-index:5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--lime);white-space:nowrap;background:#111f25d1;border:1px solid #c8ff3e59;border-radius:22px;align-items:center;gap:7px;padding:8px 12px;font-size:9px;animation:.35s both pill-in;display:flex;position:absolute;top:24%;left:50%;transform:translate(-50%)}.difference-pill span{color:var(--muted)}.difference-pill strong{font-size:11px}.drag-hint{z-index:5;color:#c8d7da80;letter-spacing:.04em;white-space:nowrap;align-items:center;gap:8px;font-size:9px;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.mouse-shape{border:1px solid;border-radius:8px;width:13px;height:18px;position:relative}.mouse-shape:after{content:"";background:currentColor;width:1px;height:4px;position:absolute;top:3px;left:5px}.control-deck{border-top:1px solid var(--line);z-index:6;background:#070f1ae0;grid-template-columns:105px 1fr 184px;align-items:center;gap:22px;min-height:124px;padding:18px clamp(20px,3vw,40px);display:grid;position:relative}.year-readout{grid-template-columns:auto 1fr;align-items:end;column-gap:7px;display:grid}.year-readout span{color:var(--lime);letter-spacing:.2em;grid-column:1/-1;font-size:8px;font-weight:800}.year-readout strong{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:44px;line-height:1}.year-readout small{color:var(--muted);padding-bottom:5px;font-size:9px}.range-row{color:var(--muted);justify-content:space-between;margin-bottom:12px;font-size:8px;display:flex}.timeline-control input{appearance:none;background:linear-gradient(90deg, var(--lime) 0 var(--progress), #8ea8ae33 var(--progress));cursor:pointer;border-radius:2px;width:100%;height:4px}.timeline-control input::-webkit-slider-thumb{appearance:none;background:var(--night);border:4px solid var(--lime);border-radius:50%;width:18px;height:18px;box-shadow:0 0 12px #c8ff3e80}.timeline-control input::-moz-range-thumb{background:var(--night);border:4px solid var(--lime);border-radius:50%;width:12px;height:12px}.tick-row{justify-content:space-between;padding:8px 3px 0;display:flex}.tick-row i{background:#97b0b440;width:2px;height:4px}.tick-row i.active{background:var(--lime)}.play-controls{grid-template-columns:46px 1fr;gap:8px;display:grid}.reset-button,.play-button{cursor:pointer;border:1px solid var(--line);border-radius:3px;min-height:46px;transition:filter .2s,transform .2s}.reset-button{background:#ffffff08;place-items:center;display:grid}.play-button{background:var(--lime);color:#101c13;border-color:var(--lime);letter-spacing:.09em;justify-content:center;align-items:center;gap:8px;font-size:10px;font-weight:800;display:flex}.play-button:hover{filter:brightness(1.1)}.reset-button:hover{border-color:var(--lime)}.reset-button:active,.play-button:active{transform:scale(.97)}.lab-drawer{z-index:40;opacity:0;pointer-events:none;background:#111e2d;border:1px solid #c8ff3e42;width:min(390px,100vw - 44px);padding:28px;transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .25s;position:fixed;top:94px;right:22px;transform:translate(calc(100% + 40px));box-shadow:0 30px 80px #0000008c}.lab-drawer.is-open{opacity:1;pointer-events:auto;transform:translate(0)}.lab-drawer h2{font-family:var(--font-display);margin:6px 0;font-size:25px}.lab-drawer p{color:var(--muted);margin:0;font-size:12px;line-height:1.5}.lab-drawer label{margin-top:26px;display:block}.lab-drawer label span{color:var(--muted);justify-content:space-between;font-size:11px;display:flex}.lab-drawer label strong{color:var(--ink);font-variant-numeric:tabular-nums}.lab-drawer input{width:100%;accent-color:var(--lime);cursor:pointer;margin-top:12px}.lab-drawer>button{background:var(--lime);color:#101c13;cursor:pointer;border:0;justify-content:center;align-items:center;gap:10px;width:100%;min-height:48px;margin-top:26px;font-size:11px;font-weight:800;display:flex}footer{border-top:1px solid var(--line);color:#a1b4b86b;letter-spacing:.15em;justify-content:space-between;align-items:center;gap:24px;min-height:46px;padding:0 clamp(20px,4vw,68px);font-size:8px;display:flex}footer p{color:#cad9daa6;letter-spacing:.02em;margin:0;font-size:9px}@keyframes enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pill-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (width<=1050px){.game-layout{grid-template-columns:38% 62%}.lesson-panel{padding-inline:28px}h1{font-size:clamp(38px,5vw,58px)}.control-deck{grid-template-columns:84px 1fr}.play-controls{grid-column:1/-1;grid-template-columns:46px minmax(140px,240px);justify-content:end}.scene-legend{gap:5px;left:2%;right:2%}.scene-label{gap:7px;padding:10px 8px}.scene-label small{letter-spacing:.08em;font-size:7px}}@media (width<=760px){.app-shell{overflow-x:hidden}.topbar{height:68px;padding-inline:18px}.rate-chip{justify-content:center;width:44px;padding:0}.rate-chip span,.rate-chip strong{display:none}.game-layout{flex-direction:column;display:flex}.lesson-panel{border-right:0;order:1;padding:42px 22px 34px}h1{max-width:520px;font-size:clamp(42px,12vw,58px)}.intro{margin-block:18px 26px}.money-input input{font-size:16px}.formula-strip{width:100%}.world-panel{border-top:1px solid var(--line);order:2;grid-template-rows:530px auto;min-height:700px}.scene-legend{gap:4px;top:14px;left:8px;right:8px}.scene-label{text-align:center;padding:8px 5px;display:block}.scene-label .label-dot,.scene-label b{display:none}.scene-label small{letter-spacing:.05em;white-space:nowrap;font-size:6px}.scene-label strong{font-size:clamp(11px,3vw,14px)}.difference-pill{top:82px}.drag-hint{bottom:14px}.control-deck{grid-template-columns:68px 1fr;gap:14px;min-height:168px;padding:18px}.year-readout strong{font-size:36px}.play-controls{grid-template-columns:48px 1fr;justify-content:stretch}footer{display:none}}@media (width<=420px){.savings-inputs,.formula-strip{grid-template-columns:1fr}.formula-arrow{display:none}.world-panel{grid-template-rows:505px auto;min-height:670px}.scene-label{padding-inline:3px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
