: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 #00000073}*{box-sizing:border-box}html,body{background:var(--bg);margin:0}body{color:var(--text);-webkit-font-smoothing:antialiased;font-family:Segoe UI,system-ui,-apple-system,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.5}h1,h2,h3{letter-spacing:.06em;text-transform:uppercase;margin:0 0 8px;font-weight:800}h2{color:var(--text);font-size:.95rem}h3{color:var(--muted);margin-top:18px;font-size:.78rem}.app{flex-direction:column;min-height:100vh;display:flex}.masthead{background:radial-gradient(1100px 320px at 12% -30%, #ff2e3f47, 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{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.brand-mark{width:152px;height:152px;box-shadow:0 0 0 1px var(--line), 0 6px 18px #00000073;border-radius:22%;flex:none}.brand-text{flex-direction:column;gap:6px;line-height:1.15;display:flex}.brand-text small{color:var(--muted);letter-spacing:.04em;font-size:.95rem}.tagline{color:var(--muted);max-width:52ch;margin:0;line-height:1.45}.stripe{background:repeating-linear-gradient(90deg, #e9edf5 0 14px, #0b0e14 14px 28px), var(--accent);opacity:.75;height:8px}.layout{flex:1;grid-template-columns:minmax(320px,380px) 1fr;align-items:start;gap:18px;width:100%;max-width:1440px;margin:0 auto;padding:22px;display:grid}.column{flex-direction:column;gap:18px;min-width:0;display:flex}.panel{background:linear-gradient(180deg, var(--panel) 0%, var(--panel-2) 100%);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.hint{color:var(--muted);margin:0 0 12px;font-size:.86rem}.warn{border-left:3px solid var(--accent-2);background:#ffb02017;border-radius:0 8px 8px 0;margin:12px 0 0;padding:10px 12px;font-size:.88rem}.set-list,.part-list,.variants,.plan-note{margin-top:10px}.legend{margin:0;padding:0;list-style:none}.set{border:1px solid var(--line);background:#0000002e;border-radius:10px;margin-bottom:8px;padding:10px 12px}.set.owned{background:#ff2e3f12;border-color:#ff2e3f8c}.set-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.set-name{font-weight:700}.set-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;font-size:.8rem;display:flex}.set-note{color:var(--muted);margin:6px 0 0;font-size:.76rem}.badge{border:1px solid var(--line);letter-spacing:.04em;border-radius:999px;padding:1px 8px;font-size:.72rem}.part-list li{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:7px 0;display:flex}.part-list li:last-child{border-bottom:none}.part-name{flex-direction:column;flex:1;line-height:1.2;display:flex}.part-name small{color:var(--muted);font-size:.74rem}.swatch{border:1px solid #0000008c;border-radius:4px;flex:none;width:16px;height:16px}.stepper{align-items:center;gap:4px;display:flex}.stepper button{cursor:pointer;border:1px solid var(--line);background:var(--bg-2);width:28px;height:28px;color:var(--text);border-radius:8px;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{text-align:center;border:1px solid var(--line);background:var(--bg);width:46px;height:28px;color:var(--text);border-radius:8px}.inventory-total{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;padding-top:12px;font-size:.85rem;display:flex}.inventory-total strong{color:var(--text);font-size:1rem}.link{cursor:pointer;color:var(--muted);background:0 0;border:none;margin-left:auto;font-size:.82rem;text-decoration:underline}.link:hover{color:var(--accent)}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--line);background:var(--bg-2);color:var(--muted);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:.83rem}.chip:hover{color:var(--text)}.chip.active{border-color:var(--accent);color:#fff;background:#ff2e3f29}.field-row{flex-wrap:wrap;gap:12px;margin-top:12px;display:flex}.field-row label{color:var(--muted);flex-direction:column;flex:140px;gap:5px;font-size:.8rem;display:flex}.field-row input[type=number]{border:1px solid var(--line);background:var(--bg);height:32px;color:var(--text);border-radius:8px;padding:0 8px}.field-row input[type=range]{accent-color:var(--accent)}.area-custom{flex-direction:column;gap:12px;margin-top:12px;display:flex}.area-field{align-items:flex-end;gap:12px;display:flex}.area-field label{color:var(--muted);flex-direction:column;flex:0 0 110px;gap:5px;font-size:.8rem;display:flex}.area-field input[type=text]{font-variant-numeric:tabular-nums;border:1px solid var(--line);background:var(--bg);height:34px;color:var(--text);border-radius:8px;padding:0 10px}.area-field input[type=text]:focus{border-color:var(--accent);outline:none}.area-field input[type=range]{accent-color:var(--accent);flex:auto;min-width:120px}.hint.tight{margin:0}.warn.tight{margin:10px 0 0;font-size:.86rem}.run-actions{flex-wrap:wrap;gap:10px;display:flex}.btn{cursor:pointer;letter-spacing:.07em;text-transform:uppercase;border:1px solid #0000;border-radius:10px;padding:11px 18px;font-size:.82rem;font-weight:800}.btn.primary{background:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:#ff4757}.btn.primary:disabled{opacity:.4;cursor:default}.btn.ghost{border-color:var(--line);color:var(--text);background:0 0}.btn.ghost:hover{border-color:var(--accent);color:var(--accent)}.progress{color:var(--muted);align-items:center;gap:10px;margin-bottom:12px;display:flex}.spinner{border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.panel-toggle{width:100%;color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:0;display:flex}.panel-toggle h2{flex:auto}.panel-summary{color:var(--muted);font-size:.82rem}.caret{border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);flex:none;width:9px;height:9px;transform:rotate(45deg)translate(-2px,-2px)}.caret.up{transform:rotate(-135deg)translate(-2px,-2px)}.cross-option{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:10px;display:flex}.plan-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.toggles{color:var(--muted);gap:12px;font-size:.82rem;display:flex}.toggles label{cursor:pointer;align-items:center;gap:5px;display:flex}.toggles input{accent-color:var(--accent)}.track-view{aspect-ratio:4/3;border:1px solid var(--line);background:radial-gradient(70% 70% at 50% 40%,#171d29 0%,#0c1017 100%);border-radius:10px;width:100%;margin-top:12px}.track-area{fill:#38d39f0d;stroke:var(--ok)}.stage{position:relative}.stage-nav{width:44px;height:64px;color:var(--text);border:1px solid var(--line);cursor:pointer;background:#0d1017c7;border-radius:12px;justify-content:center;align-items:center;font-size:1.9rem;line-height:1;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.stage-nav:hover{border-color:var(--accent);color:var(--accent)}.stage-nav.prev{left:8px}.stage-nav.next{right:8px}.stage-count{border:1px solid var(--line);color:var(--muted);background:#0d1017c7;border-radius:999px;padding:3px 9px;font-size:.78rem;position:absolute;bottom:10px;right:12px}.start-line polygon{stroke:none}.share{background:#38d39f12;border:1px solid #38d39f73;border-radius:14px;margin-top:14px;padding:14px 16px}.share-label{color:var(--ok);letter-spacing:.04em;text-transform:uppercase;margin-bottom:8px;font-size:.8rem;font-weight:700;display:block}.share-row{align-items:stretch;gap:8px;display:flex}.share-link{border:1px solid var(--line);min-width:0;color:var(--text);background:#0d1017;border-radius:10px;flex:auto;padding:11px 12px;font-size:.85rem}.share-link:focus{border-color:var(--ok);outline:none}.copy{width:48px;color:var(--ok);cursor:pointer;background:#38d39f24;border:1px solid #38d39f99;border-radius:10px;flex:none;justify-content:center;align-items:center;display:flex}.copy:hover{background:var(--ok);color:#06231a}.copy svg{width:20px;height:20px}.ok-note{color:var(--ok);margin:8px 0 0;font-size:.84rem}.piece-label{fill:#eef2f8;font-family:inherit;font-weight:700}.piece-deck polygon{filter:drop-shadow(0 0 5px #2ee6a859)}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:.78rem;display:flex}.legend li{align-items:center;gap:7px;display:flex}.metrics{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:14px 0 0;display:grid}.metrics>div{border:1px solid var(--line);background:#00000040;border-radius:10px;padding:9px 11px}.metrics dt{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.72rem}.metrics dd{margin:3px 0 0;font-size:1.02rem;font-weight:700}.variants{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;display:grid}.variant{cursor:pointer;border:1px solid var(--line);width:100%;color:var(--text);text-align:left;background:#00000038;border-radius:10px;align-items:center;gap:10px;padding:9px 11px;display:flex}.variant:hover{border-color:var(--accent)}.variant.active{border-color:var(--accent);background:#ff2e3f1f}.variant-no{background:var(--bg);border-radius:6px;flex:none;place-items:center;width:24px;height:24px;font-size:.78rem;font-weight:800;display:grid}.variant-main{flex-direction:column;flex:1;line-height:1.2;display:flex}.variant-main small{color:var(--muted);font-size:.74rem}.variant-area{color:var(--muted);white-space:nowrap;font-size:.74rem}.empty p{color:var(--muted);max-width:60ch}.footer{border-top:1px solid var(--line);background:var(--bg-2);margin-top:8px}.footer .version{letter-spacing:.04em;opacity:.85;margin-top:8px}.footer p{max-width:1440px;color:var(--muted);margin:0 auto;padding:18px 22px;font-size:.78rem;line-height:1.6}@media (max-width:1020px){.layout{grid-template-columns:1fr}}@media (max-width:560px){.brand-mark{width:120px;height:120px}.stage-nav{width:38px;height:54px;font-size:1.6rem}}.modes{flex-wrap:wrap;gap:10px;max-width:1180px;margin:18px auto 0;padding:0 18px;display:flex}.mode{text-align:left;cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:12px;flex-direction:column;flex:240px;gap:3px;padding:12px 14px;font-size:.95rem;font-weight:600;display:flex}.mode small{color:var(--muted);font-size:.78rem;font-weight:400}.mode:hover{color:var(--text);border-color:#3a4356}.mode.active{color:#fff;border-color:var(--accent);background:linear-gradient(#ff2e3f29,#ff2e3f0d)}.palette{gap:6px;margin:10px 0 0;padding:0;list-style:none;display:grid}.palette-bar{margin-top:14px}.palette-bar h3{margin-top:0}.palette-bar .palette{grid-template-columns:repeat(auto-fit,minmax(215px,1fr))}.palette-item{cursor:pointer;border:1px solid var(--line);background:var(--bg-2);width:100%;color:var(--text);text-align:left;border-radius:10px;align-items:center;gap:10px;padding:8px 10px;font-size:.88rem;display:flex}.palette-item:hover:not(:disabled){border-color:var(--accent)}.palette-item:disabled{opacity:.42;cursor:not-allowed}.palette-name{flex-direction:column;flex:1;display:flex}.palette-name small{color:var(--muted);font-size:.72rem}.palette-count{flex-direction:column;align-items:flex-end;line-height:1.15;display:flex}.palette-count strong{font-size:1.05rem}.palette-count small{color:var(--muted);font-size:.72rem}.editor-canvas{aspect-ratio:4/3;border:1px solid var(--line);touch-action:none;background:radial-gradient(70% 70% at 50% 40%,#171d29 0%,#0c1017 100%);border-radius:10px;width:100%;margin-top:12px}.editor-canvas.closed{border-color:var(--ok)}.editor-canvas .piece{cursor:grab}.editor-canvas .piece.dragging{cursor:grabbing;opacity:.9}.open-end{fill:#0d1017;stroke:#8b95a5}.open-end.target{fill:var(--ok);stroke:#f4f7fc}.plan-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;display:flex}.editor-tools{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.editor-tools .btn{padding:8px 12px;font-size:.85rem}@media (max-width:560px){.modes{padding:0 12px}.mode{flex:100%}}
