: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:18px;flex-wrap:wrap}.brand-mark{flex:none;width:152px;height:152px;border-radius:22%;box-shadow:0 0 0 1px var(--line),0 6px 18px #00000073}.brand-text{display:flex;flex-direction:column;gap:6px;line-height:1.15}.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{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}.warn.tight{margin:10px 0 0;font-size:.86rem}.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)}}.panel-toggle{display:flex;align-items:center;gap:10px;width:100%;padding:0;background:none;border:none;color:inherit;cursor:pointer;text-align:left}.panel-toggle h2{flex:1 1 auto}.panel-summary{color:var(--muted);font-size:.82rem}.caret{width:9px;height:9px;flex:none;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg) translate(-2px,-2px)}.caret.up{transform:rotate(-135deg) translate(-2px,-2px)}.cross-option{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:10px}.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)}.stage{position:relative}.stage-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:64px;display:flex;align-items:center;justify-content:center;font-size:1.9rem;line-height:1;color:var(--text);background:#0d1017c7;border:1px solid var(--line);border-radius:12px;cursor:pointer}.stage-nav:hover{border-color:var(--accent);color:var(--accent)}.stage-nav.prev{left:8px}.stage-nav.next{right:8px}.stage-count{position:absolute;right:12px;bottom:10px;padding:3px 9px;border-radius:999px;background:#0d1017c7;border:1px solid var(--line);color:var(--muted);font-size:.78rem}.start-line polygon{stroke:none}.share{margin-top:14px;padding:14px 16px;border:1px solid rgba(56,211,159,.45);border-radius:14px;background:#38d39f12}.share-label{display:block;color:var(--ok);font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin-bottom:8px}.share-row{display:flex;gap:8px;align-items:stretch}.share-link{flex:1 1 auto;min-width:0;padding:11px 12px;font-size:.85rem;border-radius:10px;border:1px solid var(--line);background:#0d1017;color:var(--text)}.share-link:focus{outline:none;border-color:var(--ok)}.copy{flex:none;width:48px;display:flex;align-items:center;justify-content:center;border-radius:10px;border:1px solid rgba(56,211,159,.6);background:#38d39f24;color:var(--ok);cursor:pointer}.copy:hover{background:var(--ok);color:#06231a}.copy svg{width:20px;height:20px}.ok-note{margin:8px 0 0;color:var(--ok);font-size:.84rem}.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 .version{margin-top:8px;letter-spacing:.04em;opacity:.85}.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}}@media(max-width:560px){.brand-mark{width:120px;height:120px}.stage-nav{width:38px;height:54px;font-size:1.6rem}}.modes{display:flex;gap:10px;flex-wrap:wrap;max-width:1180px;margin:18px auto 0;padding:0 18px}.mode{flex:1 1 240px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:3px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:.95rem;font-weight:600}.mode small{font-weight:400;font-size:.78rem;color:var(--muted)}.mode:hover{color:var(--text);border-color:#3a4356}.mode.active{color:#fff;border-color:var(--accent);background:linear-gradient(180deg,#ff2e3f29,#ff2e3f0d)}.palette{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}.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{width:100%;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;cursor:pointer;border:1px solid var(--line);background:var(--bg-2);color:var(--text);font-size:.88rem;text-align:left}.palette-item:hover:not(:disabled){border-color:var(--accent)}.palette-item:disabled{opacity:.42;cursor:not-allowed}.palette-name{display:flex;flex-direction:column;flex:1}.palette-name small{color:var(--muted);font-size:.72rem}.palette-count{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15}.palette-count strong{font-size:1.05rem}.palette-count small{color:var(--muted);font-size:.72rem}.editor-canvas{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;touch-action:none}.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{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}.editor-tools{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.editor-tools .btn{padding:8px 12px;font-size:.85rem}@media(max-width:560px){.modes{padding:0 12px}.mode{flex:1 1 100%}}
