:root{--bg: #eceee9;--stage: #e3e6e0;--panel: #fafaf7;--field: #ffffff;--ink: #1b201d;--muted: #646c66;--line: #d6dad3;--accent: #2f55d4;--accent-soft: rgba(47, 85, 212, .1);--good: #2c7a4b;--warn: #a8660b;--bad: #b3261e;--ui: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono: ui-monospace, "SF Mono", Menlo, monospace;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #121513;--stage: #0f1211;--panel: #181c1a;--field: #111412;--ink: #e5e9e4;--muted: #99a29b;--line: #2b312d;--accent: #8fa2ff;--accent-soft: rgba(143, 162, 255, .14);--good: #6cc48f;--warn: #e3a74c;--bad: #ff8a80;color-scheme:dark}}:root[data-theme=dark]{--bg: #121513;--stage: #0f1211;--panel: #181c1a;--field: #111412;--ink: #e5e9e4;--muted: #99a29b;--line: #2b312d;--accent: #8fa2ff;--accent-soft: rgba(143, 162, 255, .14);--good: #6cc48f;--warn: #e3a74c;--bad: #ff8a80;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font:14px/1.45 var(--ui);overflow:hidden}[hidden]{display:none!important}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}#app{height:100%;display:grid;grid-template-columns:minmax(0,1fr) 380px}.stage{position:relative;min-width:0;min-height:0;background:var(--stage);overflow:hidden}.stage canvas{display:block;touch-action:none}.toolbar{position:absolute;left:12px;top:12px;right:12px;display:flex;flex-wrap:wrap;gap:8px;pointer-events:none}.toolbar>*{pointer-events:auto}.group{display:flex;align-items:center;gap:2px;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--line);border-radius:8px;padding:3px}.group label.slider input{width:96px}.group label.slider{display:flex;align-items:center;gap:8px;padding:0 8px;font-size:12.5px;color:var(--muted)}.chip{border:0;background:transparent;padding:5px 9px;border-radius:6px;cursor:pointer;font-size:12.5px;font-weight:600;white-space:nowrap}.chip:hover{background:var(--accent-soft)}.chip[aria-pressed=true]{background:var(--ink);color:var(--panel)}.hint{pointer-events:none;position:absolute;left:12px;bottom:12px;font-size:12px;color:var(--muted);background:color-mix(in srgb,var(--panel) 85%,transparent);padding:5px 9px;border-radius:6px}.tip{position:absolute;pointer-events:none;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:6px 9px;font-size:12px;line-height:1.35;box-shadow:0 2px 10px #00000024;white-space:nowrap}.tip b{display:block}.tip span{font-family:var(--mono);color:var(--muted)}.panel{min-width:0;min-height:0;display:flex;flex-direction:column;background:var(--panel);border-left:1px solid var(--line)}.head{padding:16px 18px 10px;display:flex;flex-direction:column;gap:4px;border-bottom:1px solid var(--line)}.head .row{display:flex;align-items:center;justify-content:space-between;gap:8px}.brand{font-weight:800;letter-spacing:.02em;font-size:18px}.brand small{font-weight:500;color:var(--muted);font-size:12px;margin-left:6px}.project{font-size:13px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.save-state{margin-left:auto;font-size:11.5px;color:var(--muted);white-space:nowrap}.save-state.bad{color:var(--bad)}.head .row #bProjects{border:1px solid var(--line)}.banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;padding:8px 10px;border-radius:8px;background:var(--accent-soft);font-size:12.5px}.projects{margin-top:8px;display:flex;flex-direction:column;gap:8px;max-height:50vh;overflow:auto}.projects .who{font-size:12px;color:var(--muted)}.projects .who a{color:var(--accent)}.projects .share{display:flex;flex-wrap:wrap;gap:6px}.projects .share input{flex:1 1 200px;min-width:0;font:12px var(--mono);padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--field);color:var(--ink)}.projects .list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.projects .pick{display:flex;justify-content:space-between;gap:8px;width:100%;text-align:left;padding:8px 4px;border:0;border-bottom:1px solid var(--line);background:transparent;cursor:pointer;font-size:13px}.projects .pick small{color:var(--muted);font-size:11px}.projects .pick[aria-current=true]{font-weight:700;background:var(--accent-soft)}.projects .pick:hover{background:var(--accent-soft)}.tabs{display:flex;gap:2px;padding:8px 12px 0;border-bottom:1px solid var(--line)}.tab{border:0;background:transparent;padding:8px 10px;cursor:pointer;font-weight:600;font-size:13px;color:var(--muted);border-bottom:2px solid transparent}.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent)}.badge{display:inline-block;min-width:18px;padding:0 5px;margin-left:4px;border-radius:9px;font-size:11px;line-height:18px;text-align:center;background:var(--line);color:var(--ink)}.badge.bad{background:var(--bad);color:#fff}.badge.warn{background:var(--warn);color:#fff}.body{flex:1;overflow:auto;padding:14px 18px 24px;display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:5px}.field>span{display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted)}.field>span b{font:600 12.5px var(--mono);color:var(--ink)}.field input[type=range]{width:100%;accent-color:var(--accent)}.field select{padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--field)}.check{display:flex;align-items:center;gap:8px;font-size:13px}.check input{width:16px;height:16px;accent-color:var(--accent)}.section{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:4px}.facts{margin:0;display:grid;gap:4px}.facts div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding-bottom:4px;font-size:12.5px}.facts dt{color:var(--muted)}.facts dd{margin:0;font-family:var(--mono)}.buttons{display:flex;flex-wrap:wrap;gap:6px}.btn{border:1px solid var(--line);background:var(--field);border-radius:6px;padding:6px 10px;cursor:pointer;font-weight:600;font-size:12.5px}.btn:hover{border-color:var(--ink)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}table{border-collapse:collapse;width:100%;font-size:12px}th,td{text-align:left;padding:5px 6px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:650}td.num{font-family:var(--mono);white-space:nowrap;text-align:right}td.nos{white-space:normal}tr.sel td{background:var(--accent-soft)}tr.hover:hover td{background:var(--accent-soft);cursor:pointer}.issue{border:1px solid var(--line);border-left:3px solid var(--muted);border-radius:6px;padding:8px 10px;font-size:13px}.issue.error{border-left-color:var(--bad)}.issue.warning{border-left-color:var(--warn)}.ok{color:var(--good);font-weight:600}.note{font-size:12px;color:var(--muted);margin:0}.total{display:flex;justify-content:space-between;font-size:16px;font-weight:700;padding:8px 0;border-bottom:2px solid var(--ink)}.more,.handle{display:none}@media(max-width:820px){#app{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) var(--sheet, 50%)}.panel{border-left:0;border-top:1px solid var(--line);border-radius:14px 14px 0 0;margin-top:-14px;position:relative;z-index:1;box-shadow:0 -4px 16px #0000001f}.handle{display:flex;justify-content:center;align-items:center;flex:none;height:28px;border:0;background:transparent;cursor:grab;touch-action:none}.handle span{width:44px;height:5px;border-radius:3px;background:var(--line)}.head{padding-top:2px}.toolbar{left:8px;right:8px;top:8px;gap:6px}.group{flex-wrap:wrap;max-width:100%}.more{display:flex}.toolbar:not(.open) .extra{display:none}.toolbar.open~.hint,#app[data-sheet=full] .hint{display:none}.toolbar.open .more .chip{background:var(--ink);color:var(--panel)}.chip,.tab,.btn,.field select{min-height:44px}.chip{min-width:44px;padding:6px 11px;font-size:14px}.group label.slider{min-height:44px;font-size:14px}.group label.slider input{width:140px;height:32px}.check{min-height:44px;display:flex;align-items:center}th,td{padding:5px 3px}td.num.size{white-space:normal}.hint{left:8px;right:8px;bottom:22px;font-size:11.5px}}
