:root,[data-theme=light]{--font-sans:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"IBM Plex Mono", monospace;--teal-50:#f1f9f7;--teal-100:#daf1ec;--teal-200:#b4e3d9;--teal-300:#8cd5c7;--teal-400:#68c4b4;--teal-500:#4ab3a2;--teal-600:#359586;--teal-700:#2c7a6e;--teal-800:#215b52;--teal-900:#174039;--teal-950:#0f2d28;--teal-975:#0c211d;--orange-50:#f9f6f4;--orange-100:#f6eae0;--orange-200:#f9d7b9;--orange-300:#fdc28b;--orange-400:#fcb064;--orange-500:#fc9a22;--orange-600:#e28a1d;--orange-700:#c57718;--orange-800:#9c5e11;--orange-900:#76450a;--orange-950:#522e04;--bg-base:#215b52;--bg-top:#4ab3a2;--bg-surface:#101011a6;--bg-surface-hover:#101011cc;--bg-panel:#101011cc;--bg-dot:#ffffff47;--bg-grid-opacity:1;--color-primary:#4ab3a2;--color-primary-hover:#68c4b4;--color-primary-light:#4ab3a226;--color-accent:#fc9a22;--color-accent-hover:#e28a1d;--color-accent-active:#c57718;--color-accent-highlight:#fdc28b;--color-on-accent:#0c211d;--color-warn:#e08a5c;--border-light:#ffffff80;--border-focus:#fff;--glass-fill:#ffffff14;--glass-fill-hover:#ffffff29;--glass-blur:4px;--text-main:#fff;--text-muted:#ffffffd1;--text-dark:#0c211d;--text-on-teal:#fff;--paper:#f1f9f7f5;--paper-text-muted:#0c211db8;--paper-line:#0c211d33;--paper-line-focus:#0c211d73;--paper-card:#0c211d0a;--paper-card-hover:#0c211d14;--paper-teal:#215b52;--paper-orange:#9c5e11;--paper-tabs:#0c211d14;--paper-tab-active:#f1f9f7}[data-theme=dark]{--bg-base:#174039;--bg-top:#2c7a6e;--bg-dot:#ffffff1f;--bg-grid-opacity:.5;--text-dark:#f1f9f7;--paper:#0c211df0;--paper-text-muted:#f1f9f7b8;--paper-line:#f1f9f733;--paper-line-focus:#f1f9f77a;--paper-card:#f1f9f70d;--paper-card-hover:#f1f9f717;--paper-teal:#4ab3a2;--paper-orange:#fc9a22;--paper-tabs:#101011a6;--paper-tab-active:#0c211d}:root,[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:where([data-theme]){color:var(--text-main)}.theme-toggle{border:1px solid var(--border-light);background:var(--glass-fill);width:36px;height:36px;color:var(--text-main);cursor:pointer;transition:border-color var(--transition-fast,.15s), background-color var(--transition-fast,.15s);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-toggle:hover{border-color:var(--border-focus);background:var(--glass-fill-hover)}.theme-toggle:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.theme-toggle-icon{fill:currentColor;width:20px;height:20px}.theme-toggle-moon,:root[data-theme=dark] .theme-toggle-sun{display:none}:root[data-theme=dark] .theme-toggle-moon{display:block}:root{--cs-font-sans:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, sans-serif;--cs-font-mono:"IBM Plex Mono", ui-monospace, monospace;--cs-bg-page:var(--bg-base);--cs-bg-panel:var(--paper);--cs-bg-card:var(--paper);--cs-bg-inset:var(--paper-card);--cs-line:var(--paper-line);--cs-line-strong:color-mix(in srgb, var(--teal-975) 32%, transparent);--cs-viewport-edge:var(--bg-base);--cs-teal:var(--paper-teal);--cs-teal-fill:var(--color-primary);--cs-teal-dim:color-mix(in srgb, var(--teal-500) 18%, transparent);--cs-orange:var(--color-accent);--cs-ok:var(--cs-teal);--cs-fail:#a8231b;--cs-fail-fill:#c8281e29;--cs-text:var(--text-dark);--cs-text-muted:var(--paper-text-muted);--cs-text-dim:color-mix(in srgb, var(--teal-975) 64%, transparent);--cs-fog:var(--bg-base)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--cs-font-sans);background:var(--cs-bg-page);color:var(--cs-text);font-size:13px;overflow:hidden}.app{grid-template-columns:30% 70%;height:100vh;display:grid}.panel{background:var(--cs-bg-panel);border-right:1px solid var(--cs-line);padding:20px 22px 32px;overflow-y:auto}.panel-header{margin-bottom:18px}.eyebrow{font-family:var(--cs-font-mono);letter-spacing:.14em;color:var(--cs-teal);margin-bottom:6px;font-size:11px}.panel-header h1{margin-bottom:8px;font-size:19px;font-weight:600;line-height:1.25}.panel-section{border-top:1px solid var(--cs-line);flex-direction:column;gap:10px;padding:14px 0 16px;display:flex}.panel-section h2{font-family:var(--cs-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cs-text-muted);font-size:11px;font-weight:500}.slider-row,.select-row{flex-direction:column;gap:4px;display:flex}.slider-head{justify-content:space-between;gap:8px;display:flex}.slider-label{color:var(--cs-text)}.slider-value{font-family:var(--cs-font-mono);color:var(--cs-teal);white-space:nowrap}.slider-note{color:var(--cs-text-dim);font-size:11px}.module-row.is-clash .slider-label,.module-row.is-clash .slider-note{color:var(--cs-fail)}input[type=range]{width:100%;accent-color:var(--paper-teal)}select{background:var(--cs-bg-inset);width:100%;color:var(--cs-text);border:1px solid var(--cs-line-strong);font:inherit;border-radius:0;padding:6px 8px}select option{background:var(--cs-bg-panel)}.toggle{color:var(--cs-text-muted);cursor:pointer;align-items:center;gap:8px;display:flex}.toggle input{accent-color:var(--paper-teal)}.btn{border:1px solid var(--cs-line-strong);color:var(--cs-text);font:500 13px var(--cs-font-sans);cursor:pointer;text-align:left;background:0 0;border-radius:0;padding:9px 12px}.btn:hover{border-color:var(--cs-teal-fill)}.btn-primary{background:var(--cs-orange);border-color:var(--cs-orange);color:#1b1206;font-weight:600}.btn-primary:hover{background:var(--orange-400);border-color:var(--orange-400)}.hint{color:var(--cs-text-dim);font-size:12px;line-height:1.45}.mono{font-family:var(--cs-font-mono)}.report{background:var(--cs-bg-inset);border-left:2px solid var(--cs-teal-fill);color:var(--cs-text-muted);flex-direction:column;gap:4px;padding:8px 10px;line-height:1.4;display:flex}.report-fail{border-left-color:var(--cs-fail);color:var(--cs-fail)}.main{flex-direction:column;min-width:0;min-height:0;display:flex}.viewport{background:radial-gradient(ellipse at 50% 40%, var(--bg-top) 0%, var(--bg-base) 55%, var(--cs-viewport-edge) 100%);flex:1;min-height:0;position:relative}.viewport .theme-toggle{z-index:1;position:absolute;top:12px;right:12px}.viewport-canvas{touch-action:none;outline:none;width:100%;height:100%;position:absolute;inset:0}.viewport-legend{color:var(--text-main);pointer-events:none;gap:16px;font-size:11px;display:flex;position:absolute;bottom:12px;left:14px}.dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.dot-cog{background:var(--cs-orange)}.dot-centre{background:#fff}.dashboard{background:var(--cs-line);border-top:1px solid var(--cs-line);flex:none;grid-template-columns:1fr 1.35fr 1.1fr 1.15fr;gap:1px;display:grid}.card{background:var(--cs-bg-card);flex-direction:column;gap:8px;min-width:0;padding:12px 14px 14px;display:flex}.card h3{font-family:var(--cs-font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cs-text-muted);font-size:11px;font-weight:500}.big-number{font-family:var(--cs-font-mono);font-size:28px;font-weight:500;line-height:1}.big-number span{color:var(--cs-text-muted);font-size:14px}.meta{color:var(--cs-text-dim);font-size:11px;line-height:1.4}.meter{background:var(--cs-bg-inset);height:4px}.meter>div{background:var(--cs-teal-fill);height:100%}.meter-fail>div{background:var(--cs-fail)}.kv{border-collapse:collapse;width:100%;font-size:12px}.kv td{vertical-align:top;color:var(--cs-text-muted);padding:2px 0}.kv td:first-child{color:var(--cs-text-dim);white-space:nowrap;padding-right:10px}.kv td+td{font-family:var(--cs-font-mono);font-size:11.5px}.kv thead td{color:var(--cs-text-dim);font-family:var(--cs-font-sans);font-size:11px}.kv-strong td{color:var(--cs-text)}.inline-select{padding:4px 6px;font-size:12px}.axis-row{font-family:var(--cs-font-mono);grid-template-columns:16px 82px 1fr 56px;align-items:center;gap:8px;display:grid}.axis-name{color:var(--cs-text-muted)}.axis-value{font-size:14px}.axis-limit{color:var(--cs-text-dim);text-align:right;font-size:10.5px}.axis-bar{background:var(--cs-bg-inset);height:6px;position:relative}.axis-fill{background:var(--cs-teal-fill);transition:width .2s;position:absolute;top:0;bottom:0;left:0}.axis-target{background:var(--cs-line-strong);width:1px;position:absolute;top:-3px;bottom:-3px}.axis-row.is-over .axis-value{color:var(--cs-fail)}.axis-row.is-over .axis-fill{background:var(--cs-fail)}.badge{border:1px solid;padding:7px 9px;font-size:12px;font-weight:500;line-height:1.4}.badge-ok{color:var(--cs-ok);border-color:color-mix(in srgb, var(--teal-500) 60%, transparent);background:color-mix(in srgb, var(--teal-500) 8%, transparent)}.badge-neutral{color:var(--cs-text-muted);border-color:var(--cs-line-strong)}.badge-fail{color:var(--cs-fail);border-color:var(--cs-fail);background:var(--cs-fail-fill);animation:1s steps(2,jump-none) infinite flash}@keyframes flash{0%{background:#c8281e29}to{background:#c8281e0a}}@media (width<=1100px){.dashboard{grid-template-columns:1fr 1fr}}[data-theme=dark]{--cs-line-strong:color-mix(in srgb, var(--teal-50) 32%, transparent);--cs-viewport-edge:var(--teal-975);--cs-ok:var(--color-primary-hover);--cs-fail:var(--color-warn);--cs-fail-fill:#e08a5c38;--cs-text-dim:color-mix(in srgb, var(--teal-50) 56%, transparent)}[data-theme=dark] .badge-ok{border-color:color-mix(in srgb, var(--teal-400) 45%, transparent);background:color-mix(in srgb, var(--teal-400) 8%, transparent)}[data-theme=dark] .badge-fail{color:#fff;animation-name:flash-dark}@keyframes flash-dark{0%{background:#e08a5c8c}to{background:#e08a5c1f}}
