:root{--ink:#2b2118;--parch:#f6ecd9;--parch2:#ead9bb;--brass:#c8963e;--teal:#2f8f8a;--cyan:#5fe3ff}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);background:#0b1119;margin:0;font-family:Nunito,system-ui,sans-serif;overflow:hidden}#app{position:fixed;inset:0}#app canvas{display:block}#ui{pointer-events:none;position:fixed;inset:0}:root{--ink:#2b2118;--ink2:#5a4a3a;--ink3:#8a7660;--parch:#f7eedc;--parch2:#efe1c6;--parch3:#e3cfa9;--brass:#c8963e;--brass2:#a8772a;--brassHi:#f0c878;--teal:#2f8f8a;--teal2:#1f6f6b;--cyan:#5fe3ff;--good:#3f8f4a;--bad:#c0503a;--warn:#d89a2a;--shadow:0 18px 50px #080a1473, 0 3px 10px #080a1459;--r:16px;--fs:1}#ui *{box-sizing:border-box}#ui{font-size:calc(15px * var(--fs))}#ui .pe{pointer-events:auto}.hidden{display:none!important}.panel{color:var(--ink);background:radial-gradient(120% 90% at 20% 0%, #ffffff8c, #fff0 60%), radial-gradient(90% 120% at 100% 100%, #aa783c29, #0000 60%), linear-gradient(180deg, var(--parch), var(--parch2));border-radius:var(--r);box-shadow:var(--shadow), inset 0 0 0 4px #f4ead6, inset 0 0 0 5px #b08a4a;border:2px solid #3b2a1a;position:relative}.panel:after{content:"";border-radius:inherit;pointer-events:none;opacity:.55;mix-blend-mode:multiply;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .55  0 0 0 0 .42  0 0 0 0 .28  0 0 0 .22 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");position:absolute;inset:0}.h-title{letter-spacing:.01em;font-family:Fraunces,Georgia,serif;font-weight:800}.h-kicker{letter-spacing:.16em;text-transform:uppercase;color:var(--brass2);font-family:Nunito,sans-serif;font-size:.7em;font-weight:800}.btn{pointer-events:auto;cursor:pointer;color:#2b1d10;text-shadow:0 1px #ffebb499;background:linear-gradient(#f0c65e,#d9a441 45%,#a8741f);border:2px solid #3b2a1a;border-radius:12px;align-items:center;gap:.55em;padding:.7em 1.3em;font:800 1em Nunito,sans-serif;transition:transform .12s,box-shadow .12s,filter .2s;display:inline-flex;box-shadow:0 4px #3b2a1a,0 8px 18px #3c1e0059,inset 0 1px #fff5d2e6,inset 0 -2px #78460a59}.btn svg{width:1.2em;height:1.2em}.btn:hover{filter:brightness(1.08);transform:translateY(-1px)}.btn:active{transform:translateY(3px);box-shadow:0 1px #3b2a1a,0 3px 8px #3c1e0059,inset 0 1px #fff0c8b3}.btn.ink{color:#f3dfb0;text-shadow:none;background:linear-gradient(#4a3624,#2e2014);box-shadow:0 4px #1a120a,0 8px 18px #00000059,inset 0 1px #ffdc9640}.btn.ghost{color:var(--ink);text-shadow:none;box-shadow:none;background:#5a3c1e0f;border-color:#3b2a1a8c}.btn.ghost:active{transform:translateY(1px)}.btn.big{padding:.85em 1.6em;font-size:1.15em}.btn[disabled]{filter:grayscale(.8)brightness(.9);opacity:.6;cursor:not-allowed;transform:none}#loading{z-index:100;background:radial-gradient(80% 80% at 50% 45%,#1d3044,#0a1018);place-items:center;transition:opacity .9s;display:grid;position:fixed;inset:0}#loading .lw{text-align:center;color:#f3e4c4}#loading .logo{letter-spacing:.01em;text-shadow:0 4px 30px #ffb45a59;font-family:Fraunces,serif;font-size:44px;font-weight:800}#loading .logo small{letter-spacing:.4em;color:#c8a46a;margin-bottom:8px;font:800 12px Nunito;display:block}#loading .bar{background:#ffffff14;border-radius:6px;width:280px;height:6px;margin:26px auto 10px;overflow:hidden}#loading .bar i{background:linear-gradient(90deg,#c8963e,#f0c878);border-radius:6px;width:0;height:100%;transition:width .3s;display:block;box-shadow:0 0 12px #f0c878}#loading .lbl{color:#9fb0c4;letter-spacing:.05em;font:600 13px Nunito}#title{pointer-events:none;background:linear-gradient(90deg,#060a12c7 0%,#060a1259 38%,#060a1200 60%);flex-direction:column;justify-content:center;padding-left:7vw;transition:opacity 1s;display:flex;position:fixed;inset:0}#title .t-kicker{letter-spacing:.45em;color:#e8c27a;text-transform:uppercase;opacity:.9;margin-bottom:10px;font:800 13px Nunito}#title .t-name{color:#fff3dc;text-shadow:0 6px 40px #00000073,0 0 60px #ffaa5040;font-family:Fraunces,serif;font-size:clamp(48px,7vw,96px);font-weight:800;line-height:.92}#title .t-name em{color:#f0c878;font-style:italic;font-weight:500}#title .t-sub{color:#d4dbe6;opacity:.92;max-width:430px;margin:18px 0 30px;font:600 17px/1.5 Nunito}#title .t-btns{pointer-events:auto;gap:14px;display:flex}#title .t-foot{color:#dce6f08c;letter-spacing:.04em;font:600 12px Nunito;position:absolute;bottom:26px;left:7vw}#hud{pointer-events:none;transition:opacity .5s;position:fixed;inset:0}.obj-card{width:330px;padding:14px 18px 12px;transition:transform .5s cubic-bezier(.2,.9,.3,1),opacity .4s;position:absolute;top:18px;left:18px}.obj-card.mini{opacity:0;transform:translate(-360px)}.obj-card .donecount{color:var(--good);align-items:center;gap:6px;margin-top:6px;font:800 12px Nunito;display:flex}.obj-card .donecount svg{stroke-width:3px;width:14px;height:14px}.obj-card .lvl{justify-content:space-between;align-items:baseline;display:flex}.obj-card .lvl .h-title{font-size:1.3em}.obj-card ul{margin:10px 0 0;padding:0;list-style:none}.obj-card li{color:var(--ink2);align-items:flex-start;gap:10px;padding:6px 0;font-weight:700;line-height:1.3;transition:color .3s,opacity .3s;display:flex}.obj-card li .bx{color:#fff;border-radius:6px;flex:none;place-items:center;width:19px;height:19px;margin-top:1px;transition:background .3s;display:grid;box-shadow:inset 0 0 0 2px #5a3c1e73}.obj-card li .bx svg{stroke-width:3px;opacity:0;width:14px;height:14px}.obj-card li.done{display:none}.obj-card li.done.recent{color:var(--ink3);-webkit-text-decoration:line-through #5a3c1e66;text-decoration:line-through #5a3c1e66;display:flex}.obj-card li.done .bx{background:var(--good);box-shadow:none}.obj-card li.done .bx svg{opacity:1}.obj-card li.active{color:var(--ink)}.obj-card li.active .bx{box-shadow:inset 0 0 0 2px var(--brass2);animation:1.6s ease-in-out infinite pulseBx}@keyframes pulseBx{50%{box-shadow:inset 0 0 0 2px var(--brass2), 0 0 0 4px #c8963e40}}.obj-card li.hiddenObj{display:none}.top-right{gap:10px;display:flex;position:absolute;top:18px;right:18px}.chip{align-items:center;gap:8px;padding:9px 14px;font-size:1.05em;font-weight:800;display:flex}.chip svg{width:20px;height:20px;color:var(--brass2)}.chip .stars{gap:2px;display:flex}.chip .stars svg{color:#5a3c1e59;width:18px;height:18px}.chip .stars svg.on{color:#e3a52c;fill:#f3c454}.dock{pointer-events:auto;gap:8px;padding:9px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.tool{cursor:pointer;width:58px;height:58px;color:var(--ink2);background:linear-gradient(#fff9,#e6d2aa66);border:0;border-radius:14px;place-items:center;transition:all .15s;display:grid;position:relative;box-shadow:inset 0 0 0 1.5px #5a3c1e40}.tool svg{width:27px;height:27px}.tool:hover{color:var(--ink);transform:translateY(-2px)}.tool.on{color:#f3c870;background:linear-gradient(#4a3624,#2e2014);box-shadow:0 3px #1a120a,inset 0 0 0 1.5px #b08a4a}.tool .k{opacity:.8;background:#3b2a1a1f;border-radius:4px;padding:0 4px;font:800 10px Nunito;position:absolute;bottom:3px;right:4px}.tool .badge{width:14px;height:14px;box-shadow:0 0 0 2px var(--parch);background:#e0552f;border-radius:50%;position:absolute;top:-4px;right:-4px}.tool[data-tip]:hover:before{content:attr(data-tip);white-space:nowrap;color:#f7eedc;pointer-events:none;background:#1e160eeb;border-radius:8px;padding:6px 10px;font:700 12px Nunito;position:absolute;bottom:70px;left:50%;transform:translate(-50%)}#markers{pointer-events:none;position:fixed;inset:0}.marker{will-change:transform;flex-direction:column;align-items:center;transition:opacity .3s;display:flex;position:absolute;transform:translate(-50%,-100%)}.marker .pin{color:#fff;background:radial-gradient(circle at 35% 30%,#f3c860,#c8862a);border-radius:50%;place-items:center;width:38px;height:38px;animation:1.8s ease-in-out infinite bob;display:grid;box-shadow:0 4px 12px #00000073,0 0 0 3px #fff0c8d9}.marker .pin svg{stroke-width:2.4px;width:21px;height:21px}.marker.teal .pin{background:radial-gradient(circle at 35% 30%,#6fe0d6,#1f8a84)}.marker.peg .pin{background:radial-gradient(circle at 35% 30%,#9ff0ff,#2aa8c8);width:26px;height:26px;animation:none}.marker.peg .pin svg{width:15px;height:15px}.marker .stem{background:linear-gradient(#fff0c8e6,#fff0c800);width:2px;height:14px}.marker .lbl{color:#f7eedc;white-space:nowrap;opacity:0;background:#1e160ed1;border-radius:8px;margin-top:4px;padding:3px 9px;font:800 12px Nunito;transition:all .2s;transform:translateY(-4px)}.marker.show-label .lbl,.marker.hover .lbl{opacity:1;transform:none}@keyframes bob{50%{transform:translateY(-6px)}}.tooltip{pointer-events:none;color:#f7eedc;white-space:nowrap;background:#1e160ee6;border-radius:10px;padding:7px 12px;font:800 13px Nunito;position:fixed;transform:translate(14px,14px);box-shadow:0 6px 16px #0000004d}.tooltip small{color:#cdb894;font-size:11px;font-weight:600;display:block}.dialog{pointer-events:auto;cursor:pointer;width:min(720px,92vw);min-height:104px;padding:18px 22px 18px 110px;position:fixed;bottom:100px;left:50%;transform:translate(-50%)}.dialog .portrait{width:76px;height:76px;box-shadow:0 0 0 3px #fff6e4, 0 0 0 5px var(--brass), 0 6px 14px #0000004d;background:#ccc;border-radius:50%;position:absolute;top:50%;left:18px;overflow:hidden;transform:translateY(-50%)}.dialog .portrait img{object-fit:cover;width:100%;height:100%}.dialog .who{align-items:baseline;gap:10px;margin-bottom:4px;display:flex}.dialog .who b{font:800 1.15em Fraunces,serif}.dialog .who span{letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);font:800 .72em Nunito}.dialog .txt{min-height:2.9em;font-size:1.12em;font-weight:600;line-height:1.45}.dialog .more{color:var(--ink3);letter-spacing:.1em;font:800 11px Nunito;animation:1.2s infinite blink;position:absolute;bottom:12px;right:18px}@keyframes blink{50%{opacity:.35}}#toasts{pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;top:22px;left:50%;transform:translate(-50%)}.toast{align-items:center;gap:10px;padding:10px 18px;font-weight:800;animation:.4s cubic-bezier(.2,1.4,.4,1) toastIn;display:flex}.toast svg{width:20px;height:20px;color:var(--teal)}.toast{font-size:15px}.toast.unlock svg{color:#b8862e}@keyframes toastIn{0%{opacity:0;transform:translateY(-16px)scale(.9)}}.bench{pointer-events:auto;flex-direction:column;width:410px;transition:transform .55s cubic-bezier(.2,.9,.25,1);display:flex;position:fixed;top:16px;bottom:16px;right:16px;transform:translate(450px)}.bench.open{transform:none}.bench .bh{border-bottom:1.5px dashed #5a3c1e40;padding:18px 20px 12px;position:relative}.bench .bh .h-title{margin-top:3px;font-size:1.55em;line-height:1.1}.bench .bh p{color:var(--ink2);margin:6px 0 0;font-size:.95em;font-weight:600;line-height:1.4}.bench .x{cursor:pointer;width:34px;height:34px;color:var(--ink2);background:#5a3c1e14;border:0;border-radius:10px;place-items:center;display:grid;position:absolute;top:14px;right:14px}.bench .x svg{width:18px;height:18px}.bench .bb{scrollbar-width:thin;flex:1;padding:12px 20px 30px;overflow-y:auto;-webkit-mask-image:linear-gradient(#000 88%,#0000);mask-image:linear-gradient(#000 88%,#0000)}.uncal{color:#8a7a60;border:2px dashed #5a3c1e4d;border-radius:12px;grid-column:1/-1;align-items:center;gap:10px;padding:10px 12px;font-weight:800;display:flex}.uncal svg{flex:none;width:20px;height:20px}.uncal small{color:#a89a80;font-weight:700;display:block}.bench .sec{margin:6px 0 14px}.bench .sec>.h-kicker{margin-bottom:8px;display:block}.given{grid-template-columns:1fr 1fr;gap:2px 16px;display:grid}.given div{border-bottom:1px dashed #5a3c1e40;padding:5px 0}.given div small{letter-spacing:.1em;text-transform:uppercase;color:var(--ink3);font:800 10px Nunito;display:block}.given div b{font-size:1.05em}.given div.unknown b{color:var(--bad)}.param .pl{justify-content:space-between;margin-bottom:7px;font-weight:800;display:flex}.param .pl output{color:#6a3f12;font:800 1.08em Fraunces,serif}.slider{appearance:none;cursor:pointer;background:0 0;width:100%;height:26px}.slider::-webkit-slider-runnable-track{background:linear-gradient(90deg, #b8862e var(--p,50%), #5a3c1e2e var(--p,50%));border-radius:8px;height:8px;box-shadow:inset 0 1px 2px #00000040}.slider::-webkit-slider-thumb{-webkit-appearance:none;background:radial-gradient(circle at 35% 30%,#fff6dc,#e2b75f 55%,#a8772a);border-radius:50%;width:24px;height:24px;margin-top:-8px;box-shadow:0 2px 6px #00000059,0 0 0 2px #fff8e6}.slider::-moz-range-track{background:#5a3c1e2e;border-radius:8px;height:8px}.slider::-moz-range-progress{background:var(--teal);border-radius:8px;height:8px}.slider::-moz-range-thumb{background:radial-gradient(circle at 35% 30%,#fff6dc,#e2b75f 55%,#a8772a);border:2px solid #fff8e6;border-radius:50%;width:22px;height:22px}.ticks{color:var(--ink2);justify-content:space-between;padding:0 4px;font:800 12px Nunito;display:flex}.choices{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;display:grid}.choice{cursor:pointer;text-align:left;color:var(--ink);background:#ffffff80;border:0;border-radius:12px;padding:10px 11px;font:700 .9em Nunito;transition:all .15s;position:relative;box-shadow:inset 0 0 0 1.5px #5a3c1e33}.choice b{font-size:1.05em;display:block}.choice small{color:var(--ink3);margin-top:2px;font-weight:700;line-height:1.25;display:block}.choice .cost{color:var(--brass2);background:#c8963e1f;border-radius:10px;margin-top:5px;padding:1px 7px;font:800 11px Nunito;display:inline-block}.choice:hover{background:#fffc}.choice.on{background:linear-gradient(#fff6df,#f3e1b8);box-shadow:inset 0 0 0 2px #3b2a1a,inset 0 0 0 4px #e8c878,0 3px 8px #50320a33}.choice.locked{opacity:.45;cursor:not-allowed}.readouts{grid-template-columns:1fr 1fr;gap:8px;display:grid}.ro{background:#fffaf0;border-radius:12px;padding:9px 11px 8px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1.5px #5a3c1e2e}.ro small{letter-spacing:.1em;text-transform:uppercase;color:var(--ink3);font:800 10px Nunito;display:block}.ro b{font:800 1.3em Fraunces,serif}.ro b i{color:var(--ink2);margin-left:3px;font:700 .62em Nunito}.ro.ok{box-shadow:inset 0 0 0 2px #3f8f4a8c}.ro.ok b{color:var(--good)}.ro.bad{box-shadow:inset 0 0 0 2px #c0503a99}.ro.bad b{color:var(--bad)}.ro.hid b{color:var(--ink3);letter-spacing:.1em}.ro .sub{color:var(--ink3);font:700 11px Nunito}.meter{margin:10px 0}.meter .ml{color:var(--ink2);justify-content:space-between;margin-bottom:5px;font:800 12px Nunito;display:flex}.meter .mt{background:#5a3c1e21;border-radius:8px;height:14px;position:relative;overflow:visible;box-shadow:inset 0 1px 2px #00000026}.meter .mf{background:linear-gradient(90deg,#4fb36a,#3f8f4a);border-radius:8px;height:100%;transition:width .35s cubic-bezier(.2,.9,.3,1),background .3s}.meter .mf.over{background:linear-gradient(90deg,#e07a4a,#c0503a)}.meter .lim{background:var(--ink);border-radius:2px;width:3px;position:absolute;top:-4px;bottom:-4px}.meter .lim:after{content:attr(data-l);white-space:nowrap;color:var(--ink);font:800 10px Nunito;position:absolute;top:-16px;left:50%;transform:translate(-50%)}.budget{align-items:center;gap:10px;font-weight:800;display:flex}.budget .bt{background:#5a3c1e21;border-radius:8px;flex:1;height:10px;overflow:hidden}.budget .bf{background:linear-gradient(90deg,#e2b75f,#c8963e);height:100%;transition:width .3s}.budget.over .bf{background:linear-gradient(90deg,#e07a4a,#c0503a)}.budget.over{color:var(--bad)}.status{background:#ffffff73;border-radius:12px;align-items:flex-start;gap:10px;margin:6px 0 0;padding:10px 12px;font-weight:700;line-height:1.35;display:flex}.status svg{flex:none;width:20px;height:20px;margin-top:1px}.status.bad{color:#8a3020;background:#c0503a1a}.status.ok{color:#2a6a35;background:#3f8f4a1f}.bench .bf2{border-top:1.5px dashed #5a3c1e40;align-items:center;gap:10px;padding:14px 20px 18px;display:flex}.bench .bf2 .btn.test{flex:1;justify-content:center;font-size:1.1em}.formula{border-left:3px solid var(--teal);color:var(--teal2);background:#2f8f8a14;border-radius:10px;padding:9px 12px;font:600 .95em/1.5 Fraunces,serif}.chart{background:#fffaf0;border-radius:12px;width:100%;height:140px;display:block;box-shadow:inset 0 0 0 1.5px #5a3c1e2e}.scrim{-webkit-backdrop-filter:blur(5px);pointer-events:auto;background:radial-gradient(70% 70%,#0a0e1866,#0a0e18b8);place-items:center;animation:.35s fadeIn;display:grid;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}}.modal{width:min(560px,92vw);padding:26px 28px 22px;animation:.5s cubic-bezier(.2,1.3,.4,1) popIn}@keyframes popIn{0%{opacity:0;transform:translateY(18px)scale(.94)}}.modal .h-title{margin:6px 0 8px;font-size:1.75em;line-height:1.15}.modal p{color:var(--ink2);margin:0 0 12px;font-weight:600;line-height:1.5}.modal .row{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.opts{flex-direction:column;gap:8px;display:flex}.opt{text-align:left;cursor:pointer;color:var(--ink);background:#ffffff8c;border:0;border-radius:12px;padding:12px 14px;font:700 1em/1.35 Nunito;transition:all .15s;box-shadow:inset 0 0 0 1.5px #5a3c1e38}.opt:hover{background:#fff}.opt.sel{box-shadow:inset 0 0 0 2px var(--teal);background:#e9f7f5}.opt.right{box-shadow:inset 0 0 0 2px var(--good);background:#e6f4e6}.opt.wrong{box-shadow:inset 0 0 0 2px var(--bad);background:#fbe9e4;animation:.4s shake}@keyframes shake{25%{transform:translate(-5px)}75%{transform:translate(5px)}}.feedback{border-radius:12px;margin-top:12px;padding:11px 13px;font-weight:700;line-height:1.45}.feedback.good{color:#2a6a35;background:#3f8f4a1f}.feedback.bad{color:#8a3020;background:#c0503a1a}.bigval{text-align:center;color:var(--teal2);margin:6px 0 2px;font:800 2.6em Fraunces,serif}.bigval i{color:var(--ink2);font:700 .4em Nunito}.textin{width:100%;color:var(--ink);background:#fffaf0;border:0;border-radius:12px;outline:none;padding:12px 14px;font:800 1.35em Fraunces,serif;box-shadow:inset 0 0 0 2px #5a3c1e40}.textin:focus{box-shadow:inset 0 0 0 2px var(--teal)}.sugg{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.sugg button{cursor:pointer;color:var(--ink2);background:#5a3c1e14;border:0;border-radius:20px;padding:6px 11px;font:700 .85em Nunito}.sugg button:hover{color:var(--teal2);background:#2f8f8a26}.result-head{align-items:center;gap:14px;display:flex}.result-head .seal{color:#fff;border-radius:50%;flex:none;place-items:center;width:64px;height:64px;display:grid;box-shadow:0 0 0 4px #fff6e4,0 0 0 6px,0 6px 16px #00000040}.result-head .seal svg{stroke-width:3px;color:#fff;width:34px;height:34px}.seal.good{color:#3f8f4a;background:radial-gradient(circle at 35% 30%,#6fcf7f,#3f8f4a)}.seal.bad{color:#c0503a;background:radial-gradient(circle at 35% 30%,#f08a6a,#c0503a)}.compare{grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;display:grid}.starrow{flex-direction:column;gap:6px;margin-top:12px;display:flex}.starrow div{color:var(--ink3);align-items:center;gap:10px;font-weight:700;display:flex}.starrow div svg{color:#5a3c1e4d;width:22px;height:22px}.starrow div.on{color:var(--ink)}.starrow div.on svg{color:#e3a52c;fill:#f3c454;animation:.6s cubic-bezier(.2,1.6,.4,1) both starPop}@keyframes starPop{0%{transform:scale(0)rotate(-40deg)}}.lvl-intro{pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}.lvl-intro .li{text-align:center;color:#fff3dc;text-shadow:0 4px 30px #0009}.lvl-intro .li .n{letter-spacing:.5em;color:#f0c878;text-transform:uppercase;font:800 14px Nunito}.lvl-intro .li .t{margin:10px 0 12px;font:800 clamp(44px,6vw,76px)/1 Fraunces,serif}.lvl-intro .li .s{color:#d9e2ee;font:600 18px Nunito}.lvl-intro .li .c{justify-content:center;gap:8px;margin-top:18px;display:flex}.lvl-intro .li .c span{letter-spacing:.08em;color:#f3e4c4;background:#fff0d21f;border-radius:20px;padding:6px 12px;font:800 12px Nunito;box-shadow:inset 0 0 0 1px #fff0d24d}.lvl-intro .rule{background:linear-gradient(90deg,#0000,#f0c878,#0000);width:0;height:2px;margin:0 auto}.summary{width:min(640px,94vw)}.inv-card{background:#ffffff80;border-radius:12px;align-items:center;gap:12px;margin-top:8px;padding:10px 12px;display:flex;box-shadow:inset 0 0 0 1px #5a3c1e2e}.inv-card .ic{width:42px;height:42px;color:var(--cyan);background:linear-gradient(#2d3f55,#1d2a3b);border-radius:10px;flex:none;place-items:center;display:grid}.inv-card .ic svg{width:24px;height:24px}.inv-card b{font:800 1.08em Fraunces,serif;display:block}.inv-card small{color:var(--ink3);font-weight:700}.journal{flex-direction:column;width:min(980px,94vw);height:min(680px,88vh);padding:0;animation:.45s cubic-bezier(.2,1.2,.4,1) popIn;display:flex}.journal .jh{align-items:center;gap:16px;padding:18px 22px 0;display:flex}.journal .tabs{border-bottom:1.5px solid #5a3c1e33;gap:4px;padding:12px 18px 0;display:flex}.journal .tab{cursor:pointer;color:var(--ink3);background:0 0;border:0;border-radius:10px 10px 0 0;padding:9px 14px;font:800 .92em Nunito}.journal .tab.on{color:var(--ink);box-shadow:inset 0 2px 0 var(--brass);background:#fff9}.journal .jb{flex:1;padding:18px 24px;overflow-y:auto}.journal table{border-collapse:collapse;width:100%;font-weight:700}.journal th{text-align:left;letter-spacing:.1em;text-transform:uppercase;color:var(--ink3);border-bottom:1.5px solid #5a3c1e33;padding:6px 8px;font:800 11px Nunito}.journal td{color:var(--ink2);border-bottom:1px dashed #5a3c1e2e;padding:9px 8px}.journal td.ok{color:var(--good)}.journal td.bad{color:var(--bad)}.journal .empty{color:var(--ink3);text-align:center;padding:40px;font-weight:700}.concept{background:#ffffff80;border-radius:14px;margin-bottom:10px;padding:14px 16px;box-shadow:inset 0 0 0 1px #5a3c1e2e}.concept.locked{opacity:.45;filter:grayscale()}.concept h4{margin:0 0 4px;font:800 1.15em Fraunces,serif}.concept p{color:var(--ink2);margin:4px 0;font-weight:600;line-height:1.45}.concept .tb{color:var(--brass2);font:700 12px Nunito}.bp{background:#ffffff80;border-radius:12px;align-items:center;gap:12px;margin-bottom:8px;padding:12px;display:flex;box-shadow:inset 0 0 0 1px #5a3c1e2e}.bp code{background:#5a3c1e14;border-radius:6px;padding:4px 8px;font:700 12px ui-monospace,Menlo,monospace}.grid2{grid-template-columns:1fr 1fr;gap:18px;display:grid}.mlabel{color:#e8f6ff;white-space:nowrap;pointer-events:none;background:#141e2ce6;border-radius:10px;padding:7px 11px;font:800 13px Nunito;position:absolute;transform:translate(-50%,-120%);box-shadow:0 0 0 1.5px #5fe3ff88,0 6px 16px #00000059}.mlabel span{color:#9fe8ff;margin-left:8px;font-weight:700}.mode-hint{color:#e8f6ff;pointer-events:none;background:#141e2ce0;border-radius:12px;padding:9px 16px;font:800 13px Nunito;position:fixed;bottom:96px;left:50%;transform:translate(-50%);box-shadow:0 0 0 1.5px #5fe3ff66}.set-row{grid-template-columns:120px 1fr 44px;align-items:center;gap:12px;margin:10px 0;font-weight:800;display:grid}.seg{gap:6px;display:flex}.seg button{cursor:pointer;color:var(--ink2);background:#5a3c1e14;border:0;border-radius:10px;flex:1;padding:8px;font:800 .9em Nunito}.seg button.on{background:var(--teal);color:#fff}.gauges{pointer-events:none;gap:10px;padding:10px 14px;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}.gauge small{letter-spacing:.08em;text-transform:uppercase;color:var(--ink2);font:800 12px Nunito;display:block}.gauge b{font:800 1.35em Fraunces,serif}.gauge b i{color:var(--ink2);margin-left:3px;font:700 .6em Nunito}.gauge .gb{background:#5a3c1e26;border-radius:5px;height:8px;margin-top:6px;position:relative}.gauge .gb i{background:var(--good);border-radius:5px;height:100%;transition:width .12s,background .2s;display:block}.gauge .gb i.warn{background:var(--warn)}.gauge .gb i.over{background:var(--bad);animation:.5s infinite blink}.gauge .gb .tgt{background:#3b2a1a;border-radius:2px;width:3px;position:absolute;top:-4px;bottom:-4px}.fade-black{pointer-events:none;opacity:0;background:#070a10;transition:opacity .8s;position:fixed;inset:0}.fade-black.on{opacity:1;pointer-events:auto}.skip-hint{color:#f0e6d299;letter-spacing:.08em;font:800 12px Nunito;position:fixed;bottom:18px;right:22px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.stamp{pointer-events:none;letter-spacing:.06em;color:#3f8f4a;text-shadow:none;background:#f6ecd9e0;border:6px solid;border-radius:18px;padding:10px 34px;font:800 64px Fraunces,serif;position:fixed;top:42%;left:50%;transform:translate(-50%,-50%)rotate(-8deg);box-shadow:0 10px 40px #00000059}.stamp.bad{color:#c0503a}#title{background:radial-gradient(70% 90% at 18%,#080e1cd1,#080e1c59 55%,#080e1c00 75%)}#title .t-foot{color:#c9c2b2;font-size:13px}.credits{pointer-events:auto;color:#f3e4c4;text-align:center;background:radial-gradient(80% 80% at 50% 40%,#0a10208c,#050810eb);place-items:center;animation:1.6s fadeIn;display:grid;position:fixed;inset:0;overflow-y:auto}.credits .t-kicker{letter-spacing:.45em;color:#e8c27a;text-transform:uppercase;font:800 13px Nunito}.credits .t-name{color:#fff3dc;text-shadow:0 0 60px #ffaa5059;margin:12px 0;font-family:Fraunces,serif;font-size:clamp(44px,6vw,80px);font-weight:800;line-height:.95}.credits .t-name em{color:#f0c878;font-weight:500}.credits .cr-sub{color:#c9d3e0;font-weight:600}.cr-list{flex-direction:column;gap:10px;max-width:560px;margin:22px auto 0;display:flex}.cr-item{background:#fff0d212;border-radius:12px;padding:10px 16px;animation:.7s both popIn;box-shadow:inset 0 0 0 1px #f0c87840}.cr-item span{letter-spacing:.2em;color:#c8a46a;text-transform:uppercase;font:800 10px Nunito;display:block}.cr-item b{color:#fff3dc;font:800 22px Fraunces,serif}.cr-item i{color:#aab6c6;font-size:13px;font-style:normal;font-weight:700;display:block}.cr-stars{justify-content:center;align-items:center;gap:8px;margin-top:18px;font:800 18px Nunito;display:flex}.cr-stars svg{color:#e3a52c;fill:#f3c454;width:26px;height:26px}details.numbers{margin:4px 0 12px}details.numbers summary{cursor:pointer;letter-spacing:.08em;text-transform:uppercase;color:var(--brass2);padding:6px 0;font:800 .82em Nunito;list-style:none}details.numbers summary:before{content:"▸ "}details.numbers[open] summary:before{content:"▾ "}details.numbers .readouts{margin-top:6px}.bench .meters .meter{margin:6px 0 12px}.bench .meters .mt{height:18px}.suggest{background:linear-gradient(#fff7e2,#f6e6c0);border-radius:14px;margin:4px 0 12px;padding:12px 14px;box-shadow:inset 0 0 0 2px #e0b860}.suggest .sg-tip{color:var(--ink2);gap:8px;font-weight:700;line-height:1.4;display:flex}.suggest .sg-tip svg{width:20px;height:20px;color:var(--brass2);flex:none}.suggest .sg-fix{align-items:center;gap:10px;margin-top:10px;font-weight:700;line-height:1.4;display:flex}.suggest .sg-fix span{flex:1}.suggest .sg-fix .btn{padding:.5em .9em}.guess{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.feedback svg{vertical-align:-3px;width:18px;height:18px;margin-right:4px}.modal{max-height:92vh;overflow-y:auto}.meter .lim:after{color:var(--ink2);top:auto;bottom:-17px}.bench .meters .meter{margin-bottom:20px}.bench .bh p.goal{color:var(--ink);align-items:flex-start;gap:8px;font-size:1em;font-weight:700;display:flex}.bench .bh p.goal svg{width:18px;height:18px;color:var(--brass2);flex:none;margin-top:2px}.facts{flex-direction:column;gap:6px;margin:4px 0 14px;display:flex}.fact{color:var(--ink2);background:#fff6;border-radius:10px;align-items:flex-start;gap:10px;padding:7px 10px;font-weight:700;line-height:1.35;display:flex}.fact .fi{width:22px;height:22px;color:var(--brass2);flex:none;place-items:center;display:grid}.fact b{color:var(--ink)}.fact.warn{color:#8a3020;background:#c0503a1a}.param .pl{justify-content:flex-start;align-items:center;gap:8px}.param .pl output{color:#6a3f12;margin-left:auto;font-family:Nunito;font-size:.92em}.stepn{color:#f3dfb0;background:#3b2a1a;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;font:800 12px Nunito;display:inline-grid}.choices,.choices.many{grid-template-columns:repeat(3,1fr)}.choice{text-align:center;padding:8px 8px 9px}.choice .cpic{place-items:center;height:46px;margin-bottom:4px;display:grid}.choice small{font-size:.78em}.choice .cost{margin-top:4px}.diagram svg{width:100%;height:70px;display:block}.verdict{background:#ffffff73;border-radius:14px;padding:12px 12px 10px;box-shadow:inset 0 0 0 1.5px #5a3c1e2e}.vm .vl{color:var(--ink2);justify-content:space-between;align-items:baseline;gap:10px;font:800 12.5px Nunito;display:flex}.vm .vl span{align-items:center;gap:6px;display:flex}.vm .vl span svg{width:15px;height:15px;color:var(--brass2)}.vm .vl b{color:var(--ink);text-align:right;font:800 14px Fraunces,serif}.vm.ok .vl b{color:#2f7a3c}.vm.bad .vl b{color:#b0422c}.vm.warn .vl b{color:#b0742a}.vm .vsub{color:var(--ink3);margin-top:3px;font:700 11.5px Nunito}.pprow{flex-wrap:wrap;align-items:flex-end;gap:3px;margin-top:6px;display:flex}.pprow .pp svg.person{width:18px;height:25px;display:block}.pprow .pp.extra{opacity:.9}.pprow .more{color:#b0422c;margin-left:4px;font:800 11px Nunito}.vm.bar .vt{background:#5a3c1e21;border-radius:9px;height:16px;margin-top:6px;position:relative;box-shadow:inset 0 1px 2px #00000026}.vm.bar .vf{background:linear-gradient(90deg,#6cbf7a,#3f8f4a);border-radius:9px;height:100%;transition:width .35s cubic-bezier(.2,.9,.3,1),background .3s}.vm.bar.warn .vf{background:linear-gradient(90deg,#f0c060,#d89a2a)}.vm.bar.bad .vf{background:linear-gradient(90deg,#ef8a64,#c0503a)}.vm.bar .vlim{background:#3b2a1a;border-radius:2px;width:3px;position:absolute;top:-4px;bottom:-4px}.vm.bar .vlim i{white-space:nowrap;color:var(--ink2);font:800 10px Nunito;position:absolute;top:22px;left:50%;transform:translate(-50%)}.vm.dial{grid-template-columns:120px 1fr;align-items:center;gap:10px;display:grid}.vm.dial .vl{flex-direction:column;align-items:flex-start}.vm.dial .vl b{text-align:left;font-size:17px}.vm.dial .vsub{grid-column:2}.vm.bulbm{grid-template-columns:64px 1fr;align-items:center;gap:10px;display:grid}.vm.bulbm .vl{flex-direction:column;align-items:flex-start}.vm.bulbm .vsub{grid-column:2}.vm.check{align-items:center;gap:10px;display:flex}.vm.check .ck{color:#fff;border-radius:50%;flex:none;place-items:center;width:26px;height:26px;display:grid}.vm.check.ok .ck{background:#4f9a5a}.vm.check.bad .ck{background:#c0503a}.vm.check .ck svg{stroke-width:3px;width:16px;height:16px}.vm.check .vl{flex:1}.advice{background:#fff9;border-radius:12px;align-items:flex-start;gap:10px;margin-top:2px;padding:10px 12px;font-weight:800;line-height:1.35;display:flex}.advice svg{flex:none;width:20px;height:20px;margin-top:1px}.advice.ok{color:#2a6a35;background:#3f8f4a24}.advice.bad{color:#8a3020;background:#c0503a1a}.costline{color:var(--ink2);flex-wrap:wrap;align-items:center;gap:8px;margin:12px 2px 6px;font-size:.92em;font-weight:700;display:flex}.costline svg{width:16px;height:16px;color:var(--brass2)}.costline .cstar{color:var(--ink3);align-items:center;gap:4px;margin-left:auto;font-size:.9em;display:flex}.costline .cstar svg{color:#5a3c1e59}.costline .cstar.on{color:var(--ink2)}.costline .cstar.on svg{color:#e3a52c;fill:#f3c454}.btn.test.ready{animation:1.6s ease-in-out infinite readyPulse}@keyframes readyPulse{50%{box-shadow:0 4px #3b2a1a,0 0 0 6px #f0c86473,0 8px 18px #3c1e0059}}.obj-card li .how{color:#6a3f12;background:#f0c87838;border-radius:8px;margin-top:4px;padding:6px 8px;font-size:.86em;font-style:normal;font-weight:700;line-height:1.35;display:block}.helpcard{pointer-events:auto;z-index:5;width:min(520px,92vw);padding:14px 18px;position:fixed;top:18px;left:50%;transform:translate(-50%)}.helpcard .hc-h{align-items:center;gap:12px;display:flex}.helpcard .hc-i{color:#f3c870;background:#3b2a1a;border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.helpcard .hc-i svg{width:24px;height:24px}.helpcard .h-title{margin-top:2px;font-size:1.25em}.helpcard .x{cursor:pointer;width:32px;height:32px;color:var(--ink2);background:#5a3c1e14;border:0;border-radius:10px;place-items:center;margin-left:auto;display:grid}.helpcard .x svg{width:16px;height:16px}.helpcard ol{color:var(--ink);margin:10px 0 8px;padding-left:26px;font-size:1.04em;font-weight:700;line-height:1.45}.helpcard ol li{margin:4px 0}.helpcard ol li::marker{color:var(--brass2);font-family:Fraunces,serif;font-weight:800}.helpcard .hc-f{align-items:center;gap:10px;display:flex}.helpcard .hc-f .btn{padding:.55em 1em}.helpcard .hc-k{color:var(--ink3);margin-left:auto;font:700 12px Nunito}.hpointer{pointer-events:none;z-index:6;position:fixed;transform:translate(-50%,-100%)}.hpointer .hp-arrow{color:#ffd36a;filter:drop-shadow(0 0 2px #3b2a1a)drop-shadow(0 3px 6px #00000080);width:56px;height:56px;animation:.9s ease-in-out infinite hpBob}.hpointer .hp-arrow svg{stroke-width:3.4px;width:100%;height:100%}.hpointer .hp-ring{border:4px solid #ffd36a;border-radius:50%;width:70px;height:70px;margin:-35px 0 0 -35px;animation:1.2s ease-out infinite hpRing;position:absolute;top:100%;left:50%}.hpointer .hp-lbl{white-space:nowrap;color:#f7eedc;background:#3b2a1a;border-radius:8px;margin-bottom:4px;padding:5px 10px;font:800 13px Nunito;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.hpointer .hp-lbl:empty{display:none}.hpointer.edge{transform:translate(-50%, -50%) rotate(var(--rot))}.hpointer.edge .hp-ring{display:none}.hpointer.edge .hp-lbl{transform:translateX(-50%) rotate(calc(var(--rot) * -1))}@keyframes hpBob{50%{transform:translateY(10px)}}@keyframes hpRing{0%{opacity:1;transform:scale(.4)}to{opacity:0;transform:scale(1.4)}}.edgearrow{pointer-events:none;z-index:4;flex-direction:column;align-items:center;gap:2px;display:flex;position:fixed;transform:translate(-50%,-50%)}.edgearrow .ea-a{color:#f3c870;background:#3b2a1a;border-radius:50%;place-items:center;width:44px;height:44px;display:grid;box-shadow:0 0 0 3px #f3c87099,0 6px 14px #0006}.edgearrow .ea-a svg{stroke-width:3px;width:26px;height:26px}.edgearrow span{color:#f7eedc;white-space:nowrap;background:#1e160ee0;border-radius:7px;padding:3px 8px;font:800 12px Nunito}.tool.nudge{animation:1.2s ease-in-out infinite nudge}@keyframes nudge{50%{transform:translateY(-5px);box-shadow:0 0 0 4px #f0c8648c}}.bench .verdict{box-shadow:none;background:linear-gradient(#fffaece6,#f6ead0f2);border-top:1.5px dashed #5a3c1e40;border-radius:0;max-height:46vh;margin:0;padding:10px 20px 8px;overflow-y:auto}.bench .verdict .vm{margin:4px 0 10px}.bench .verdict .vm.bar{margin-bottom:18px}.facts{gap:4px;margin-bottom:10px}.fact{padding:5px 9px;font-size:.88em}.bench .bb{padding-bottom:14px;-webkit-mask-image:none;mask-image:none}.bench{width:460px}.bench .bh{padding:14px 18px 10px}.bench .bh .h-title{font-size:1.35em}.bench .bh p.goal{margin-top:4px;font-size:.95em}.bench .bb{padding:10px 18px}.facts{grid-template-columns:1fr;gap:2px;margin:0 0 8px;display:grid}.fact{background:0 0;gap:7px;padding:2px 0;font-size:.85em}.fact .fi{width:18px;height:18px}.fact .fi svg{width:15px;height:15px}.fact.warn{background:#c0503a1a;border-radius:8px;padding:5px 8px}.param{margin:4px 0 10px}.param .pl{margin-bottom:5px;font-size:.95em}.choice{padding:6px 6px 7px}.choice .cpic{height:36px;margin-bottom:2px}.choice b{font-size:.88em}.choice small{font-size:.72em;line-height:1.2}.choice .cost{margin-top:3px;font-size:10px}.diagram svg{height:74px}.bench .verdict{padding:8px 18px 6px}.bench .verdict .h-kicker{margin-bottom:2px;display:block}.vm{margin:2px 0 8px}.vm .vsub{display:none}.vm.bar{margin-bottom:16px}.vm.bar .vt{height:12px}.pprow .pp svg.person{width:15px;height:21px}.vm.dial svg{width:104px;height:60px}.vm.dial{grid-template-columns:104px 1fr}.vm.bulbm svg{width:48px;height:56px}.vm.bulbm{grid-template-columns:52px 1fr}.advice{padding:8px 10px;font-size:.92em}.bench .bf2{padding:10px 18px 14px}.helpcard{z-index:30}.dialog .txt .w{opacity:.18;transition:opacity .18s,color .3s}.dialog .txt .w.on{opacity:1}.gauges{gap:18px;padding:12px 18px}.gauge{min-width:170px}.gauge b{display:none}.gauge small{color:var(--ink);font-size:12.5px}.gauge .gb{height:12px;margin-top:8px}.choices.four{grid-template-columns:repeat(4,1fr);gap:6px}.choices.four .choice .cpic svg.pic{width:58px}.bench .verdict .vis{grid-template-columns:1fr 1fr;column-gap:12px;display:grid}.bench .verdict .vis .vm{grid-column:1/-1}.bench .verdict .vis .vm.dial,.bench .verdict .vis .vm.bulbm{text-align:center;grid-column:auto;grid-template-columns:1fr;justify-items:center}.bench .verdict .vis .vm.dial .vl,.bench .verdict .vis .vm.bulbm .vl{align-items:center}.bench .verdict .vis .vm.dial .vl b,.bench .verdict .vis .vm.bulbm .vl b{text-align:center;font-size:14px}.bench .verdict .vis .vm.dial:only-of-type{grid-column:1/-1}.verdict.panel{pointer-events:auto;width:390px;max-height:calc(100vh - 140px);padding:12px 16px;transition:transform .55s cubic-bezier(.2,.9,.25,1);position:fixed;bottom:18px;left:18px;overflow-y:auto;transform:translate(-440px)}.verdict.panel.open{transform:none}.verdict.panel .h-kicker{margin-bottom:4px;font-size:.78em;display:block}.verdict.panel .vm .vsub{display:block}.verdict.panel .vis{grid-template-columns:1fr 1fr;column-gap:12px;display:grid}.verdict.panel .vis .vm{grid-column:1/-1}.verdict.panel .vis .vm.dial,.verdict.panel .vis .vm.bulbm{text-align:center;grid-column:auto;grid-template-columns:1fr;justify-items:center}.verdict.panel .vis .vm.dial .vl b,.verdict.panel .vis .vm.bulbm .vl b{text-align:center}.verdict.panel .vis .vm.dial:only-of-type{grid-column:1/-1}.choice .cpic{height:42px}.choice .cpic svg.pic{width:80px;height:42px}.fact{font-size:.9em}@media (width<=1000px){.verdict.panel{width:max(260px,100vw - 500px)}}.gauges{bottom:108px}.stamp{border-width:5px;padding:6px 26px;font-size:46px;top:13%}.verdict.panel{background:radial-gradient(120% 90% at 20% 0%, #ffffff8c, #fff0 60%), linear-gradient(180deg, var(--parch), var(--parch2));box-shadow:0 12px 30px #00000059,inset 0 0 0 1.5px #5a3c1e38}.verdict.panel .vis .vm.dial,.verdict.panel .vis .vm.bulbm{text-align:left;grid-column:1/-1;grid-template-columns:112px 1fr;justify-items:start;column-gap:14px}.verdict.panel .vis .vm.dial svg{width:120px;height:80px}.verdict.panel .vis .vm.bulbm svg{justify-self:center;width:56px;height:64px}.verdict.panel .vis .vm.dial .vl,.verdict.panel .vis .vm.bulbm .vl{align-items:flex-start}.verdict.panel .vis .vm.dial .vl b,.verdict.panel .vis .vm.bulbm .vl b{white-space:nowrap;text-align:left;font-size:17px}.verdict.panel .vm .vsub{color:var(--ink2);font-size:12px}.verdict.panel .vm.dial .vsub,.verdict.panel .vm.bulbm .vsub{grid-column:2}.help-open .obj-card em.how{display:none}.verdict.panel .vm.bar .vsub{margin-top:20px}.verdict.panel .vm.bar{margin-bottom:10px}.credits{place-items:unset;display:block}.credits .cr-in{max-width:920px;margin:0 auto;padding:6vh 24px 48px}.credits .t-name{font-size:clamp(40px,5vw,68px)}.cr-list{grid-template-columns:1fr 1fr;gap:10px 14px;max-width:900px;display:grid}.cr-item b{font-size:19px}@media (width<=720px){.cr-list{grid-template-columns:1fr}}
