:root{--surface:#fff;--surface-2:#f4f6f8;--line:#e3e8ed;--line-strong:#cdd5dd;--text:#1d2733;--text-muted:#51606f;--accent:#e8532b;--accent-dark:#d1471f;--negative:#c62828;--ok:#1f9d57;--warn:#d98a00;--idle:#9aa6b2;--series-1:#2a78d6;--topbar:52px}html,body,#root{height:100%;margin:0}body{color:var(--text);overscroll-behavior:none;touch-action:manipulation;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;background:#cfe8f5;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;overflow:hidden}button{font:inherit;color:inherit}h1{margin:0;font-size:17px;font-weight:700}h2{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:8px 0 0;font-size:12px;font-weight:600}p{margin:0}.muted{color:var(--text-muted);font-size:13px}.small{font-size:13px}.negative{color:var(--negative)}.app{flex-direction:column;height:100dvh;display:flex}.topbar{height:var(--topbar);background:var(--surface);border-bottom:1px solid var(--line);box-sizing:border-box;-webkit-user-select:none;user-select:none;flex:none;align-items:center;gap:12px;padding:0 16px;display:flex}.brand{letter-spacing:-.025em;align-items:center;gap:8px;font-size:18px;font-weight:750;display:flex}.brand-mark{flex:none;display:block}.brand-wise{color:var(--accent)}.tabs{scrollbar-width:none;align-self:stretch;min-width:0;display:flex;overflow-x:auto}.tabs button{color:var(--text-muted);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:0 8px}.tabs button:hover{color:var(--text)}.tabs button[aria-selected=true]{border-bottom-color:var(--accent);color:var(--text);font-weight:600}.topbar-right{align-items:center;gap:12px;margin-left:auto;display:flex}@media (width<=920px){.brand-name,.cash .muted{display:none}}@media (width>=641px) and (width<=860px){.tabs button{padding:0 6px}.clock .muted{display:none}.topbar{padding:0 max(10px, env(safe-area-inset-right)) 0 max(10px, env(safe-area-inset-left));gap:8px}.topbar-right{gap:8px}}@media (height<=480px){.hint{display:none}}.clock,.cash{white-space:nowrap;align-items:baseline;gap:6px;display:flex}.clock-time,.cash-value{font-variant-numeric:tabular-nums;font-size:17px;font-weight:700}.speeds{border:1px solid var(--line-strong);border-radius:7px;display:flex;overflow:hidden}.speeds button{border:0;border-left:1px solid var(--line-strong);background:var(--surface);cursor:pointer;padding:4px 7px;font-size:13px}.speeds button:first-child{border-left:0}.speeds button:hover{background:var(--surface-2)}.speeds button[aria-pressed=true]{background:var(--accent);color:#fff}.stage{flex:1;min-height:0;position:relative}.scene-area,.viewport{position:absolute;inset:0}.viewport canvas{cursor:grab;display:block}.viewport canvas:active{cursor:grabbing}.panel{box-sizing:border-box;background:#fffffff5;border-radius:12px;padding:12px 14px;position:absolute;box-shadow:0 2px 12px #14283c29}.side{flex-direction:column;gap:10px;width:348px;max-height:calc(100% - 24px);display:flex;top:12px;left:12px;overflow-y:auto}.side-body{flex-direction:column;gap:10px;display:flex}.side-body[hidden]{display:none}.inspector{flex-direction:column;gap:10px;width:270px;display:flex;top:12px;right:12px}.hint{color:var(--text-muted);pointer-events:none;-webkit-user-select:none;user-select:none;padding:6px 10px;font-size:12px;bottom:12px;right:58px}.hint-touch{display:none}@media (pointer:coarse){.hint-mouse{display:none}.hint-touch{display:inline}}.lede{color:var(--text-muted)}.row{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.card{border:1px solid var(--line);background:var(--surface);border-radius:10px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.bar{background:var(--line);border-radius:4px;height:8px;display:block;position:relative;overflow:hidden}.bar-fill{border-radius:4px;position:absolute;inset:0 auto 0 0}.bar-fill.accent{background:var(--accent)}.bar-fill.incoming{background:repeating-linear-gradient(-45deg,#b9c4cf 0 4px,#d3dae1 4px 8px)}.swatch{border-radius:50%;width:10px;height:10px;display:inline-block}.tag-dot{background:var(--idle);border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.tag-dot.warn{background:var(--warn)}.tag-dot.bad{background:var(--negative)}.tag-dot.info{background:var(--series-1)}.tag-dot.ok{background:var(--ok)}.tiles{grid-template-columns:1fr 1fr;gap:8px;margin:0;display:grid}.tile{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:8px 10px}.tile dt{color:var(--text-muted);font-size:12px}.tile dd{margin:2px 0 0;font-size:18px;font-weight:600}.panel button{border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;border-radius:7px;padding:5px 10px;font-size:13px}.panel button:hover:not(:disabled){background:var(--surface-2)}.panel button:disabled{color:#8c98a4;cursor:default}.panel button.wide{width:100%}.panel button.primary{border-color:var(--accent);background:var(--accent);color:#fff;flex:1}.panel button.primary:hover:not(:disabled){background:var(--accent-dark)}.panel button.primary:disabled{border-color:var(--line-strong);background:var(--surface-2);color:#8c98a4}.panel button.link{color:var(--series-1);text-align:left;background:0 0;border:0;padding:0;text-decoration:underline}.panel button.close{color:var(--text-muted);border:0;padding:0 7px;font-size:20px;line-height:1.2}.alerts,.list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.alerts button{text-align:left;align-items:baseline;gap:8px;width:100%;padding:8px 10px;display:flex}.list li{border:1px solid var(--line);background:var(--surface);border-radius:10px;justify-content:space-between;align-items:baseline;gap:10px;padding:8px 10px;display:flex}.panel button.pump{border-color:var(--line);text-align:left;border-radius:10px;padding:10px 12px;font-size:14px}.panel button.pump.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.side-name{width:68px;color:var(--text-muted);flex:none;font-size:12px}.pump-side{align-items:baseline;gap:8px;display:flex}.side-body{flex-direction:column;flex:1;gap:4px;min-width:0;font-size:13px;display:flex}.grade-name{align-items:center;gap:6px;font-size:15px;font-weight:600;display:flex}.stepper{align-items:center;gap:6px;display:flex}.stepper button{width:28px;padding:3px 0;font-size:16px;line-height:1.1}.price{text-align:center;font-variant-numeric:tabular-nums;min-width:58px;font-size:17px;font-weight:700}.facts{font-variant-numeric:tabular-nums;grid-template-columns:auto auto;gap:1px 8px;margin:0;font-size:12px;display:grid}.facts div{display:contents}.facts dt{color:var(--text-muted)}.facts dd{text-align:right;margin:0}.order-form{flex-direction:column;gap:6px;display:flex}.order-form input[type=range]{width:100%;accent-color:var(--accent);margin:0}.order-summary{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;font-weight:600;display:flex}.order-summary .muted{font-size:12px;font-weight:400}.order-actions{gap:6px;display:flex}.warning{color:var(--negative);font-size:12px}.table{border-collapse:collapse;width:100%;font-size:13px}.table th{border-bottom:1px solid var(--line-strong);color:var(--text-muted);text-align:left;padding:4px 0;font-size:12px;font-weight:600}.table td{border-bottom:1px solid var(--line);padding:5px 0}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table tfoot td{border-bottom:0;font-weight:700}details summary{color:var(--text-muted);cursor:pointer;font-size:13px}.hero{flex-direction:column;display:flex}.hero-value{font-size:34px;font-weight:700;line-height:1.1}.chart{position:relative}.chart svg{width:100%;height:auto;display:block;overflow:visible}.chart .grid{stroke:var(--line);stroke-width:1px}.chart .baseline{stroke:var(--line-strong);stroke-width:1px}.chart .axis{fill:var(--text-muted);font-size:10px}.chart .value{fill:var(--text);font-size:10px;font-weight:600}.chart .line{fill:none;stroke:var(--series-1);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart .area{fill:var(--series-1);opacity:.1}.chart .dot{fill:var(--series-1);stroke:var(--surface);stroke-width:2px}.chart .crosshair{stroke:var(--line-strong);stroke-width:1px}.chart .bar{fill:var(--series-1)}.chart .bar.partial{fill-opacity:.45}.tooltip{border:1px solid var(--line);background:var(--surface);white-space:nowrap;pointer-events:none;border-radius:8px;flex-direction:column;gap:1px;padding:6px 8px;font-size:13px;display:flex;position:absolute;top:-6px;transform:translate(-50%,-100%);box-shadow:0 2px 8px #14283c26}.tooltip .muted{font-size:12px}.tags{pointer-events:none;position:absolute;inset:0;overflow:hidden}.tag{white-space:nowrap;cursor:pointer;pointer-events:auto;will-change:transform;background:#fffffff5;border:0;border-radius:999px;align-items:center;gap:6px;padding:3px 9px 3px 7px;font-size:12px;display:flex;position:absolute;top:-8px;left:0;box-shadow:0 1px 6px #14283c40}.tag:hover{background:#fff;box-shadow:0 1px 8px #14283c66}.tag-title{font-weight:600}.tag-detail{color:var(--text-muted)}.tag-meters{align-items:flex-end;gap:2px;height:14px;display:flex}.tag-meters[hidden],.tag-detail[hidden]{display:none}.tag-meter{background:var(--line);border-radius:2px;width:5px;height:100%;position:relative;overflow:hidden}.tag-meter span{position:absolute;inset:auto 0 0}.pump-group,.repair{flex-direction:column;gap:6px;display:flex}.pump-group .card{width:100%}.offer-head{font-size:15px;font-weight:600}.toast{pointer-events:none;align-items:baseline;gap:8px;max-width:min(420px,100% - 24px);font-size:14px;display:flex;top:12px;left:50%;transform:translate(-50%)}.panel.sound-toggle{color:var(--text-muted);border:0;padding:6px 8px;display:flex;bottom:12px;right:12px}.panel.sound-toggle[aria-pressed=true]{color:var(--text)}.tutorial{border:2px solid var(--accent);flex-direction:column;gap:10px;width:min(440px,100% - 396px);display:flex;bottom:56px;left:max(50%,384px + min(220px,50% - 198px));transform:translate(-50%)}.tutorial-actions,.tutorial-nav{justify-content:space-between;align-items:center;gap:8px;display:flex}.tutorial .tutorial-nav button.primary{flex:none;padding:6px 16px}.built{white-space:nowrap;align-items:center;gap:5px;font-size:13px;font-weight:600;display:inline-flex}.built svg{color:var(--ok)}.goal-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.goal{align-items:flex-start;gap:8px;display:flex}.goal-mark{border:1.5px solid var(--line-strong);box-sizing:border-box;width:16px;height:16px;color:var(--ok);border-radius:50%;flex:none;margin-top:1px}.goal.done .goal-mark{border:0}.goal-body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.goal-title{font-size:14px}.goal-body .muted{font-size:12px}.goal-reward{font-variant-numeric:tabular-nums;flex:none}.panel button.primary.claim{flex:none;padding:4px 9px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ending{background:#141e2d73;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.panel.ending-card{border:2px solid var(--accent);text-align:center;flex-direction:column;gap:12px;width:min(420px,100% - 32px);padding:20px 22px;display:flex;position:static}.ending-card h1{font-size:22px}.panel.ending-card button.primary{flex:none;align-self:center;padding:8px 20px;font-size:14px}.card.goals{border-color:var(--line-strong);background:#eceff3;padding:12px 14px}.goals-label{text-transform:uppercase;letter-spacing:.08em;color:var(--accent-dark);font-size:11px;font-weight:700}.goals .goal-mark{background:var(--surface)}.goals .bar{background:#d5dce3}.panel button.coach-target{border-color:var(--accent);animation:1.3s ease-out infinite coach-pulse}@keyframes coach-pulse{0%{box-shadow:0 0 #e8532b99}to{box-shadow:0 0 0 9px #e8532b00}}@media (prefers-reduced-motion:reduce){.panel button.coach-target{animation:none;box-shadow:0 0 0 3px #e8532b73}}.coach-waiting{font-style:italic}@media (pointer:coarse){.panel button{min-height:36px}.panel button.link,.panel button.close{min-height:0}.panel button.link{padding:6px 0}.panel button.close{padding:4px 12px}.stepper button{width:40px}.speeds button{padding:8px 11px}.panel.sound-toggle{padding:9px 11px}.order-form input[type=range]{height:32px}}.app.phone .topbar{height:calc(48px + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(12px, env(safe-area-inset-right)) 0 max(12px, env(safe-area-inset-left));gap:10px}.app.phone .brand-name{display:inline}@media (width<=350px){.app.phone .brand-name{display:none}}.app.phone .stage{flex-direction:column;display:flex}.app.phone .scene-area{flex:1;min-height:0;position:relative;inset:auto}.app.phone .side{background:var(--surface);border-radius:16px 16px 0 0;flex:none;gap:0;width:auto;height:50%;max-height:none;margin-top:-14px;padding:0;position:relative;top:auto;left:auto;overflow:hidden;box-shadow:0 -2px 12px #14283c2e}.app.phone .side.closed{height:auto}.panel button.sheet-handle{background:0 0;border:0;border-radius:0;flex:none;justify-content:center;align-items:center;width:100%;height:26px;min-height:0;padding:0;display:flex}.sheet-handle span{background:var(--line-strong);border-radius:2px;width:40px;height:4px}.app.phone .side-body{overscroll-behavior:contain;flex:1;min-height:0;padding:2px 14px 16px;overflow-y:auto}.tabbar{padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);border-top:1px solid var(--line);background:var(--surface);-webkit-user-select:none;user-select:none;flex:none;grid-template-columns:repeat(7,1fr);display:grid;position:relative}.tabbar button{min-width:0;height:52px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:0;font-size:10px;display:flex}.tabbar svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}@media (width<=350px){.tabbar button{letter-spacing:-.01em;font-size:9px}}.tabbar button[aria-selected=true]{color:var(--accent-dark);font-weight:600}.app.phone .speeds{position:absolute;bottom:24px;left:10px;box-shadow:0 2px 10px #14283c33}.app.phone .sound-toggle{bottom:24px;right:10px}.app.phone .hint{display:none}.app.phone .toast{top:8px}.app.phone .tutorial{z-index:1;width:min(440px,100% - 24px);max-height:calc(100% - 30px);top:8px;bottom:auto;left:50%;overflow-y:auto}.app.phone .inspector{border:1.5px solid var(--accent);width:auto;box-shadow:none;padding:10px 12px;position:static}.app.phone .tag{padding:2px 8px 2px 6px;font-size:11px}.app.phone .tag-detail{display:none}
