:root{--bg:#eef3f5;--panel:#fff;--ink:#15303d;--muted:#5c7280;--line:#d5dee3;--accent:#1d6fa3;--accent-ink:#fff;--warn:#b8322a;--warn-bg:#fbeae8;--sky:#cfe6f2;--field:#f4f7f8;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e1b22;--panel:#13252e;--ink:#e6eef2;--muted:#93a8b4;--line:#25404c;--accent:#5db2e6;--accent-ink:#0e1b22;--warn:#f08a80;--warn-bg:#3a1e1c;--sky:#2a4a5e;--field:#0f1f27}}:root[data-theme=dark]{--bg:#0e1b22;--panel:#13252e;--ink:#e6eef2;--muted:#93a8b4;--line:#25404c;--accent:#5db2e6;--accent-ink:#0e1b22;--warn:#f08a80;--warn-bg:#3a1e1c;--sky:#2a4a5e;--field:#0f1f27}html{height:100%;scroll-padding-top:env(safe-area-inset-top,0px)}*,:before,:after{box-sizing:border-box}body{background:var(--bg);height:100%;color:var(--ink);margin:0;font-family:Archivo,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45}#root{height:100%}.app{grid-template-columns:minmax(0,1fr) 380px;height:100%;display:grid}.stage{background:var(--sky);min-width:0;min-height:0;position:relative}.stage canvas{touch-action:none;width:100%;height:100%;display:block}.readout{pointer-events:none;color:var(--ink);position:absolute;bottom:16px;left:20px}.dims{letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:clamp(40px,7vw,88px);font-weight:800;font-stretch:68%;line-height:.9}.readout .sub{opacity:.8;margin-top:6px;font-size:14px}.stage-tools{z-index:2;pointer-events:none;flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute;top:14px;right:16px}.stage-tools>*{pointer-events:auto}.hint{color:var(--ink);opacity:.7;font-size:13px;pointer-events:none!important}.person-card{flex-direction:column;align-items:flex-end;gap:6px;max-width:240px;display:flex}.person-card .chip{background:var(--panel);box-shadow:0 1px 3px #0000001f}.person-card .chip[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.person-card .field,.person-card .note{background:var(--panel);border:1px solid var(--line);width:230px;margin:0;padding:8px 10px}.person-card .field{border-bottom:0;border-radius:8px 8px 0 0}.person-card .note{border-top:0;border-radius:0 0 8px 8px;margin-top:-6px;padding-top:0}.link{color:var(--accent);font-size:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.person-tag{font-variant-numeric:tabular-nums;background:var(--panel);color:var(--ink);border:1px solid var(--line);white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:999px;padding:2px 8px;font:600 12px Archivo,system-ui,sans-serif}.panel{background:var(--panel);border-left:1px solid var(--line);padding:22px 20px 48px;overflow-y:auto}h1{margin:0 0 4px;font-size:21px;font-weight:750;font-stretch:90%}.lede{color:var(--muted);max-width:60ch;margin:0 0 18px;font-size:14px}section{border-top:1px solid var(--line);padding:16px 0}h2{margin:0 0 10px;font-size:15px;font-weight:700}.seg{flex-wrap:wrap;gap:6px;display:flex}button{font:inherit;color:inherit;cursor:pointer}.seg button,.chip{border:1px solid var(--line);background:var(--field);border-radius:999px;padding:7px 12px;font-size:14px}.seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.field{margin-bottom:12px}.field .lbl{justify-content:space-between;margin-bottom:2px;font-size:14px;display:flex}.field output{font-variant-numeric:tabular-nums;font-weight:600}input[type=range]{width:100%;accent-color:var(--accent);margin:4px 0}.field.warn output{color:var(--warn)}.field.warn input[type=range]{accent-color:var(--warn)}.field-warning{background:var(--warn-bg);color:var(--warn);border-radius:6px;margin:2px 0 0;padding:6px 8px;font-size:13px}.toggle{cursor:pointer;align-items:center;gap:10px;margin:6px 0;font-size:14px;display:flex}.toggle input{width:18px;height:18px;accent-color:var(--accent)}.swatches{grid-template-columns:1fr 1fr;gap:6px;display:grid}.swatch{border:1px solid var(--line);background:var(--field);text-align:left;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:14px;display:flex}.swatch i{border:1px solid #00000026;border-radius:50%;flex:none;width:22px;height:22px}.swatch[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.opening{border:1px solid var(--line);border-radius:8px;grid-template-columns:1fr 1fr auto;align-items:center;gap:6px;margin-bottom:8px;padding:10px;display:grid}.opening.bad{border-color:var(--warn);background:var(--warn-bg)}.opening .full{grid-column:1/-1}.opening .field{margin:4px 0 0}select{font:inherit;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:6px;width:100%;padding:6px 8px;font-size:14px}.icon{border:1px solid var(--line);background:var(--field);border-radius:6px;width:32px;height:32px;font-size:18px;line-height:1}.add{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.msgs{color:var(--warn);margin:10px 0 0;padding:0;font-size:13px;list-style:none}.msgs li{margin-bottom:6px}.stats{grid-template-columns:1fr auto;gap:6px 12px;margin:0;font-size:14px;display:grid}.stats dt{color:var(--muted)}.stats dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-weight:600}details summary{cursor:pointer;font-size:15px;font-weight:700}pre{background:var(--field);border:1px solid var(--line);border-radius:8px;max-height:280px;padding:10px;font-size:12px;overflow-x:auto}.copy{border:1px solid var(--line);background:var(--field);border-radius:6px;margin-top:6px;padding:7px 12px;font-size:14px}.primary{background:var(--accent);width:100%;color:var(--accent-ink);border:0;border-radius:8px;padding:11px 16px;font-size:15px;font-weight:650}.primary:disabled{opacity:.6;cursor:progress}.note{color:var(--muted);margin:8px 0 0;font-size:13px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (width<=820px){.app{grid-template-columns:1fr;height:auto}.stage{height:46vh;top:env(safe-area-inset-top,0px);z-index:2;position:sticky}.panel{border-left:0;border-top:1px solid var(--line)}.dims{font-size:44px}.hint{display:none}.stage-tools{top:10px;right:10px}}.seg.spaced{margin-bottom:12px}
