:root{--bg: #0b0e14;--bg-2: #11151d;--panel: #161b25;--panel-2: #1c2230;--line: #29303f;--text: #e7ebf2;--muted: #98a3b6;--accent: #ff2e3f;--accent-2: #ffb020;--ok: #38d39f;--radius: 14px;--shadow: 0 10px 30px rgba(0, 0, 0, .45)}*{box-sizing:border-box}html,body{margin:0;background:var(--bg)}body{color:var(--text);font-family:Segoe UI,system-ui,-apple-system,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3{font-weight:800;letter-spacing:.06em;text-transform:uppercase;margin:0 0 8px}h2{font-size:.95rem;color:var(--text)}h3{font-size:.78rem;color:var(--muted);margin-top:18px}.app{min-height:100vh;display:flex;flex-direction:column}.masthead{background:radial-gradient(1100px 320px at 12% -30%,rgba(255,46,63,.28),transparent 65%),linear-gradient(180deg,#131926 0%,var(--bg) 100%);border-bottom:1px solid var(--line)}.masthead-inner{max-width:1440px;margin:0 auto;padding:26px 22px 20px}.brand{display:flex;align-items:center;gap:14px}.brand-mark{flex:none;border-radius:12px;box-shadow:0 0 0 1px var(--line),0 6px 18px #00000073}.brand-text{display:flex;flex-direction:column;line-height:1.15}.brand-text strong{font-size:1.7rem;letter-spacing:.12em;text-transform:uppercase}.brand-text small{color:var(--muted);letter-spacing:.04em}.tagline{color:var(--muted);max-width:62ch;margin:12px 0 0}.stripe{height:8px;background:repeating-linear-gradient(90deg,#e9edf5 0 14px,#0b0e14 14px 28px),var(--accent);opacity:.75}.layout{flex:1;width:100%;max-width:1440px;margin:0 auto;padding:22px;display:grid;grid-template-columns:minmax(320px,380px) 1fr;gap:18px;align-items:start}.column{display:flex;flex-direction:column;gap:18px;min-width:0}.panel{background:linear-gradient(180deg,var(--panel) 0%,var(--panel-2) 100%);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.hint{color:var(--muted);font-size:.86rem;margin:0 0 12px}.warn{margin:12px 0 0;padding:10px 12px;border-left:3px solid var(--accent-2);background:#ffb02017;border-radius:0 8px 8px 0;font-size:.88rem}.set-list,.part-list,.variants,.plan-note{margin-top:10px}.legend{list-style:none;margin:0;padding:0}.set{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px;background:#0000002e}.set.owned{border-color:#ff2e3f8c;background:#ff2e3f12}.set-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.set-name{font-weight:700}.set-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:.8rem;margin-top:4px}.set-note{color:var(--muted);font-size:.76rem;margin:6px 0 0}.badge{border:1px solid var(--line);border-radius:999px;padding:1px 8px;font-size:.72rem;letter-spacing:.04em}.part-list li{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line)}.part-list li:last-child{border-bottom:none}.part-name{flex:1;display:flex;flex-direction:column;line-height:1.2}.part-name small{color:var(--muted);font-size:.74rem}.swatch{width:16px;height:16px;flex:none;border-radius:4px;border:1px solid rgba(0,0,0,.55)}.stepper{display:flex;align-items:center;gap:4px}.stepper button{width:28px;height:28px;border-radius:8px;cursor:pointer;border:1px solid var(--line);background:var(--bg-2);color:var(--text);font-size:1rem;line-height:1}.stepper button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.stepper button:disabled{opacity:.35;cursor:default}.stepper input{width:46px;text-align:center;height:28px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--text)}.inventory-total{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--line);color:var(--muted);font-size:.85rem}.inventory-total strong{color:var(--text);font-size:1rem}.link{margin-left:auto;background:none;border:none;cursor:pointer;color:var(--muted);text-decoration:underline;font-size:.82rem}.link:hover{color:var(--accent)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid var(--line);border-radius:999px;background:var(--bg-2);color:var(--muted);padding:6px 12px;cursor:pointer;font-size:.83rem}.chip:hover{color:var(--text)}.chip.active{border-color:var(--accent);color:#fff;background:#ff2e3f29}.field-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:12px}.field-row label{flex:1 1 140px;display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:.8rem}.field-row input[type=number]{height:32px;padding:0 8px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--text)}.field-row input[type=range]{accent-color:var(--accent)}.area-custom{margin-top:12px;display:flex;flex-direction:column;gap:12px}.area-field{display:flex;align-items:flex-end;gap:12px}.area-field label{flex:0 0 110px;display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:.8rem}.area-field input[type=text]{height:34px;padding:0 10px;border-radius:8px;font-variant-numeric:tabular-nums;border:1px solid var(--line);background:var(--bg);color:var(--text)}.area-field input[type=text]:focus{outline:none;border-color:var(--accent)}.area-field input[type=range]{flex:1 1 auto;accent-color:var(--accent);min-width:120px}.hint.tight{margin:0}.run-actions{display:flex;gap:10px;flex-wrap:wrap}.btn{border-radius:10px;padding:11px 18px;cursor:pointer;font-weight:800;letter-spacing:.07em;text-transform:uppercase;font-size:.82rem;border:1px solid transparent}.btn.primary{background:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:#ff4757}.btn.primary:disabled{opacity:.4;cursor:default}.btn.ghost{background:transparent;border-color:var(--line);color:var(--text)}.btn.ghost:hover{border-color:var(--accent);color:var(--accent)}.progress{display:flex;align-items:center;gap:10px;color:var(--muted);margin-bottom:12px}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.plan-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.toggles{display:flex;gap:12px;color:var(--muted);font-size:.82rem}.toggles label{display:flex;align-items:center;gap:5px;cursor:pointer}.toggles input{accent-color:var(--accent)}.track-view{width:100%;aspect-ratio:4 / 3;margin-top:12px;background:radial-gradient(70% 70% at 50% 40%,#171d29,#0c1017);border:1px solid var(--line);border-radius:10px}.track-area{fill:#38d39f0d;stroke:var(--ok)}.start-line{stroke:#f4f7fc}.piece-label{fill:#eef2f8;font-weight:700;font-family:inherit}.piece-deck polygon{filter:drop-shadow(0 0 5px rgba(46,230,168,.35))}.legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;color:var(--muted);font-size:.78rem}.legend li{display:flex;align-items:center;gap:7px}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:14px 0 0}.metrics>div{background:#00000040;border:1px solid var(--line);border-radius:10px;padding:9px 11px}.metrics dt{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em}.metrics dd{margin:3px 0 0;font-size:1.02rem;font-weight:700}.variants{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}.variant{width:100%;display:flex;align-items:center;gap:10px;cursor:pointer;border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:#00000038;color:var(--text);text-align:left}.variant:hover{border-color:var(--accent)}.variant.active{border-color:var(--accent);background:#ff2e3f1f}.variant-no{width:24px;height:24px;flex:none;border-radius:6px;background:var(--bg);display:grid;place-items:center;font-weight:800;font-size:.78rem}.variant-main{display:flex;flex-direction:column;line-height:1.2;flex:1}.variant-main small{color:var(--muted);font-size:.74rem}.variant-area{color:var(--muted);font-size:.74rem;white-space:nowrap}.empty p{color:var(--muted);max-width:60ch}.footer{border-top:1px solid var(--line);background:var(--bg-2);margin-top:8px}.footer p{max-width:1440px;margin:0 auto;padding:18px 22px;color:var(--muted);font-size:.78rem;line-height:1.6}@media(max-width:1020px){.layout{grid-template-columns:1fr}}
