:root{--bg:#1d2126;--panel:#262b31;--line:#3a414a;--text:#e4e7ea;--muted:#9aa3ad;--accent:#4fc3ff;--ok:#3ddc68;--bad:#ff5a5a;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}button{color:var(--text);border:1px solid var(--line);cursor:pointer;font:inherit;background:#343b43;border-radius:4px;padding:4px 8px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button[aria-pressed=true],button.active{border-color:var(--accent);background:#1f4f68}button.danger{border-color:#8a3a3a}button.dev{border-style:dashed}button.linklike{color:inherit;text-align:left;background:0 0;border:none;padding:0}input,select,textarea{color:var(--text);border:1px solid var(--line);font:inherit;background:#15181c;border-radius:4px;padding:3px 6px}input[type=number]{width:90px}input.invalid{border-color:var(--bad)}h3{text-transform:uppercase;color:var(--muted);margin:12px 0 6px;font-size:13px}h4{margin:8px 0 4px}code{color:var(--muted);font-size:12px}.muted{color:var(--muted)}.ok{color:var(--ok)}.error{color:var(--bad)}.row{flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0;display:flex}fieldset{border:1px solid var(--line);border-radius:4px}.app{flex-direction:column;height:100%;display:flex}.app-header{border-bottom:1px solid var(--line);background:#15181c;align-items:center;gap:16px;padding:6px 12px;display:flex}.app-header .brand{font-weight:700}.app-header nav{gap:10px;display:flex}.app-header a{color:var(--muted);text-decoration:none}.app-header a.active{color:var(--text);border-bottom:2px solid var(--accent)}.loading{padding:20px}.editor{flex-direction:column;flex:1;min-height:0;display:flex}.toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 10px;display:flex}.toolbar .sep{background:var(--line);width:1px;height:20px}.toolbar .over{color:var(--bad)}.toolbar .fps{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto}.editor-body{flex:1;min-height:0;display:flex}.editor-body aside{background:var(--panel);width:260px;padding:6px 10px;overflow:auto}.editor-body aside.left{border-right:1px solid var(--line)}.editor-body aside.right{border-left:1px solid var(--line);width:300px}.viewport{flex:1;min-width:0;position:relative}.viewport canvas{display:block}.hint{pointer-events:none;background:#000a;border-radius:4px;padding:6px 10px;position:absolute;bottom:12px;left:12px}.toast{cursor:pointer;background:#000c;border-radius:4px;padding:6px 12px;position:absolute;top:12px;left:50%;transform:translate(-50%)}.palette ul{margin:0 0 4px;padding:0 0 0 8px;list-style:none}.palette li button{text-align:left;background:0 0;border-color:#0000;width:100%;margin:1px 0}.palette li button.active{border-color:var(--accent);background:#1f4f68}.palette-cat{text-align:left;align-items:center;gap:6px;width:100%;margin:2px 0;display:flex}.picon{vertical-align:-3px;opacity:.9;flex:none}.palette li button{align-items:center;gap:6px;display:flex}.materials{flex-direction:column;display:flex}.materials .dim{opacity:.45}.ghost-info{z-index:10;pointer-events:none;border-left:4px solid var(--ok);background:#111c;border-radius:4px;max-width:560px;padding:6px 10px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.ghost-info.bad{border-left-color:var(--bad);pointer-events:auto}.hover-tip{z-index:11;pointer-events:none;background:#111c;border-radius:4px;padding:4px 8px;font-size:12px}.violations{margin:4px 0;padding-left:16px}.violations li{margin:2px 0}.rule-link{color:var(--accent);white-space:nowrap;font-weight:600}.layers label{display:block}.confirm{border:1px solid #8a3a3a;border-radius:4px;margin-top:6px;padding:6px}.props button{margin:6px 6px 0 0}.site-panel textarea{box-sizing:border-box;resize:vertical;white-space:pre-wrap;word-break:break-all;width:100%;min-height:calc(4.05em + 8px);padding:4px 6px;font-size:12px;line-height:1.35;overflow-x:hidden}.site-game{z-index:10;pointer-events:none;background:#111c;border-radius:4px;padding:3px 8px;font-size:12px;position:absolute;bottom:10px;left:10px}.marquee{z-index:20;border:1px solid var(--accent);pointer-events:none;background:#1f4f6833;position:fixed}.sel-summary{border:1px solid var(--line);border-radius:6px;margin:0 0 10px;padding:6px 10px}.sel-summary h3{margin:0 0 4px}.sel-summary ul{margin:4px 0 0;padding-left:16px}.reference{flex-direction:column;flex:1;min-height:0;display:flex}.tabs{background:var(--panel);border-bottom:1px solid var(--line);gap:4px;padding:6px 10px;display:flex}.ref-body{flex:1;min-height:0;display:flex;overflow:hidden}.ref-col{padding:8px 12px;overflow:auto}.ref-col.tree{border-right:1px solid var(--line);width:38%}.ref-col.main{flex:1}.tree ul{margin:0;padding-left:12px;list-style:none}.tree .sec-title{font-weight:600}.tree .sec-text{white-space:pre-wrap;color:#c9ced3;margin:2px 0 8px}.tree .sec.active>.sec-title,.rule-card.active{outline:2px solid var(--accent)}mark{color:inherit;background:#f5d14266}.rule-card,.card{background:var(--panel);border:1px solid var(--line);border-radius:6px;margin:0 0 10px;padding:8px 10px}.rule-card h4{margin-top:0}.chips{flex-wrap:wrap;gap:4px;display:flex}.chip{background:#343b43;border-radius:10px;padding:0 8px;font-size:12px}table.grid{border-collapse:collapse;width:100%}table.grid th,table.grid td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:3px 6px}table.grid tr.selected{background:#1f4f6855}table.grid tr{cursor:default}.preview{background:#11151a;border-radius:6px;width:100%;height:280px}.badge-unverified{color:#f5b142;font-size:12px}.badge-changed{color:var(--accent);font-size:12px}.field{flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0;display:flex}.field>span.label{min-width:230px}.field .err{color:var(--bad);font-size:12px}.diff td{font-family:ui-monospace,monospace;font-size:12px}.legend{flex-wrap:wrap;gap:8px;font-size:12px;display:flex}.legend i{border-radius:50%;width:10px;height:10px;margin-right:3px;display:inline-block}.clearance-tag{-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;gap:1px;display:flex}.clearance-meters{color:#ffe08a;text-shadow:0 1px 3px #000,0 0 6px #000;white-space:nowrap;font-size:12px;font-weight:600}.clearance-icons{-webkit-user-select:none;user-select:none;color:#dfe6ee;gap:2px;font-size:15px;line-height:1;display:flex}.clearance-icon{filter:hue-rotate()saturate(1.4)brightness(1.1);display:inline-block;position:relative}.clearance-icon.blocked{filter:grayscale(.4)brightness(1.05)}.clearance-icon .cross{stroke:#ff2020;stroke-width:3px;stroke-linecap:round;filter:drop-shadow(0 0 2px #400);width:calc(100% + 4px);height:calc(100% + 4px);position:absolute;inset:-2px}.af-label{color:#e8eef6;white-space:nowrap;pointer-events:none;background:#10141acc;border-radius:8px;padding:1px 6px;font-size:12px;display:inline-block}.af-shift{color:#ffb15e;font-weight:600}.af-panel h4{color:#9fb0c2;margin:10px 0 4px;font-size:13px}.af-panel .row{flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0;display:flex}.af-panel button.active{border-color:var(--accent);background:#1f4f6855}.af-note{background:#4a3c1455;border:1px solid #6a5a2a;border-radius:6px;padding:6px 8px;font-size:12px}.af-warn{color:#f5b142;font-size:12px}.af-counts,.af-group ul{margin:4px 0;padding-left:18px;font-size:13px}.af-warnings{color:#f5d142;margin:4px 0;padding-left:18px;font-size:12px}.af-group button{width:100%;margin:4px 0;display:block}.tpl-cat{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin:4px 0 2px;font-size:12px}.palette-group ul li{align-items:center;gap:2px;display:flex}.palette-group ul li button:first-child{flex:1}.tpl-edit{padding:2px 6px;font-size:12px}.lang-toggle{align-items:center;gap:3px;margin-left:auto;display:flex}.lang-toggle button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:3px;padding:0 5px;font-size:11px;line-height:13px}.lang-toggle button.active{color:var(--text);border-color:var(--accent)}.app-version{color:#8fa3b5;margin-left:auto;margin-right:8px;font-size:12px;text-decoration:none}.app-version:hover{color:#cfe3f5}.nav-support{color:#f5d142!important}.whats-new{z-index:50;color:#e6eef5;background:#1f2b38;border:1px solid #3a6b8f;border-radius:6px;align-items:center;gap:8px;padding:6px 10px;font-size:13px;display:flex;position:fixed;top:38px;left:50%;transform:translate(-50%)}.whats-new a{color:#7fc4ff}.whats-new button{color:#9fb3c5;cursor:pointer;background:0 0;border:0;font-size:16px}.news-page,.support-page{box-sizing:border-box;color:#dfe8f0;max-width:820px;height:calc(100vh - 34px);margin:0 auto;padding:24px 20px 64px;overflow-y:auto}.news-entry{border-bottom:1px solid #2c3742;padding:12px 0 18px}.news-entry h2 small{color:#8fa3b5;margin-left:8px;font-size:13px;font-weight:400}.news-entry h3{color:#9fd0ff;margin:12px 0 4px;font-size:14px}.news-entry li{margin:3px 0;line-height:1.4}.support-page section{margin:22px 0}.sp-kicker{color:#f5d142;letter-spacing:.02em;margin:0;font-weight:600}.sp-hero h1{margin:6px 0 0;font-size:26px;line-height:1.3}.sp-bar{background:#26313b;border-radius:14px;height:28px;overflow:hidden}.sp-fill{border-radius:14px;width:0;height:100%;transition:width 1.4s ease-out}.sp-blue .sp-fill{background:linear-gradient(90deg,#2f6fd6,#4fa3ff)}.sp-orange .sp-fill{background:linear-gradient(90deg,#e0a42f,#f5c542)}.sp-green .sp-fill{background:linear-gradient(90deg,#26a65b,#3ddc68)}.sp-numbers{align-items:center;gap:12px;margin:8px 0 0;font-size:18px;font-weight:600;display:flex}.sp-live{color:#9fd0a0;align-items:center;gap:6px;font-size:12px;font-weight:400;display:inline-flex}.sp-dot{background:#3ddc68;border-radius:50%;width:8px;height:8px;animation:1.4s infinite sp-pulse}@keyframes sp-pulse{0%,to{opacity:1}50%{opacity:.25}}.sp-what li{margin:6px 0}.sp-cta{text-align:center}.donate-cta{color:#1b1f24;cursor:pointer;background:#f5d142;border:0;border-radius:10px;padding:14px 32px;font-size:18px;font-weight:700;text-decoration:none;display:inline-block}.donate-cta:disabled{color:#c9d3dc;cursor:default;background:#4a5560}.sp-note{color:#9fb3c5;margin-top:8px;font-size:12px}.sp-why p,.sp-ifnot p{line-height:1.55}@media (width<=640px){.sp-hero h1{font-size:21px}.donate-cta{width:100%}}
