:root{color-scheme:light;--bg:#f4f6f8;--panel:#ffffff;--panel-alt:#fafbfc;--input-bg:#ffffff;--hover:#fafbfc;--border:#d8dee5;--border-soft:#e7ebf0;--text:#1d2530;--text-dim:#5a6675;--text-faint:#8b95a3;--accent:#1f5fbf;--accent-hover:#1a4fa5;--accent-soft:#e8f0fb;--pass:#1a7f37;--pass-bg:#e4f3e8;--warn:#9a6700;--warn-bg:#fbf0d7;--fail:#c62828;--fail-bg:#fbe4e4;--formula-bg:#eef1f5;--gov-warn-bg:#fdf7e7;--gov-fail-bg:#fdefef;--chip-border:#e8d9a8;--shadow:rgba(0,0,0,0.05);--chart-pos:#1f5fbf;--chart-vel:#1a7f37;--chart-acc:#b45309;--mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace}:root[data-theme=dark]{color-scheme:dark;--bg:#14181d;--panel:#1c2128;--panel-alt:#191e24;--input-bg:#14181d;--hover:#232a33;--border:#39414c;--border-soft:#2b323b;--text:#e2e7ed;--text-dim:#a6b0bc;--text-faint:#798490;--accent:#5c9ae6;--accent-hover:#7cb0ef;--accent-soft:#1d2d44;--pass:#52c274;--pass-bg:#16301e;--warn:#ddb04b;--warn-bg:#322a12;--fail:#e57373;--fail-bg:#3a1c1c;--formula-bg:#14181d;--gov-warn-bg:#2d2612;--gov-fail-bg:#331717;--chip-border:#55482a;--shadow:rgba(0,0,0,0.4);--chart-pos:#6aa5ea;--chart-vel:#57c67a;--chart-acc:#dfa050}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#14181d;--panel:#1c2128;--panel-alt:#191e24;--input-bg:#14181d;--hover:#232a33;--border:#39414c;--border-soft:#2b323b;--text:#e2e7ed;--text-dim:#a6b0bc;--text-faint:#798490;--accent:#5c9ae6;--accent-hover:#7cb0ef;--accent-soft:#1d2d44;--pass:#52c274;--pass-bg:#16301e;--warn:#ddb04b;--warn-bg:#322a12;--fail:#e57373;--fail-bg:#3a1c1c;--formula-bg:#14181d;--gov-warn-bg:#2d2612;--gov-fail-bg:#331717;--chip-border:#55482a;--shadow:rgba(0,0,0,0.4);--chart-pos:#6aa5ea;--chart-vel:#57c67a;--chart-acc:#dfa050}}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--text);font:13px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}.shell{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;gap:10px;padding:8px 16px;background:var(--panel);border-bottom:1px solid var(--border)}.topbar-title{display:flex;align-items:baseline;gap:10px;min-width:0}.topbar h1{margin:0;font-size:15px;font-weight:650;letter-spacing:.01em;white-space:nowrap}.topbar .sub{color:var(--text-faint);font-size:12px;white-space:nowrap}.topbar button,.topbar input[type=text],.topbar select{height:28px;font-size:12px;border-radius:5px}.topbar-nav{display:flex;gap:2px;margin-left:6px}.nav-link{display:inline-flex;align-items:center;height:28px;padding:0 12px;border-radius:5px;font-size:12px;font-weight:600;color:var(--text-dim);text-decoration:none;border:1px solid transparent}.nav-link:hover{background:var(--hover);color:var(--text)}.nav-link.active{background:var(--accent-soft);color:var(--accent)}.topbar-spacer{flex:1 1}.topbar-controls{display:flex;align-items:center;gap:8px;min-width:0}.topbar-sep{width:1px;height:20px;background:var(--border);flex:none}.theme-btn{font:inherit;font-size:14px;line-height:1;padding:0 9px;border:1px solid var(--border);border-radius:5px;background:var(--bg);color:var(--text);cursor:pointer;flex:none}.theme-btn:hover{border-color:var(--text-faint)}.ghost-btn{background:none!important;border:1px solid transparent!important;color:var(--text-dim)!important}.ghost-btn:hover{border-color:var(--border)!important;color:var(--text)!important}.auth-form{display:flex;align-items:center;gap:8px;font-size:12px;min-width:0}.auth-form input{padding:0 8px;width:150px}.auth-form button,.auth-form input{font:inherit;font-size:12px;border:1px solid var(--border);border-radius:5px;background:var(--bg);color:var(--text)}.auth-form button{padding:0 12px;cursor:pointer;white-space:nowrap}.auth-form button:hover:not(:disabled){border-color:var(--text-faint)}.auth-form button:disabled{opacity:.5;cursor:not-allowed}.auth-form .save-btn{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.auth-status{color:var(--text-faint);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.auth-err{color:var(--fail);font-size:12px}.loading{color:var(--text-faint);font-size:13px;padding:16px 4px}.workbench{display:grid;grid-template-columns:minmax(380px,480px) minmax(360px,460px) 1fr;grid-gap:12px;gap:12px;padding:12px;flex:1 1;min-height:0}@media (max-width:1180px){.shell{height:auto}.workbench{grid-template-columns:1fr}.col{max-height:none}}.col{border:1px solid var(--border);border-radius:6px;overflow-y:auto;min-height:0;display:flex;flex-direction:column}.col,.col-head{background:var(--panel)}.col-head{position:-webkit-sticky;position:sticky;top:0;z-index:2;padding:10px 12px 8px;border-bottom:1px solid var(--border-soft);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.col-body{padding:10px 12px 16px}.lib-group{margin-bottom:12px}.lib-group-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin:8px 0 4px}.lib-row{display:block;width:100%;text-align:left;padding:6px 8px;margin-bottom:3px;border:1px solid var(--border-soft);border-radius:4px;background:var(--panel);cursor:pointer;font:inherit;color:inherit}.lib-row.selected,.lib-row:hover{border-color:var(--accent)}.lib-row.selected{background:var(--accent-soft)}.lib-row .pn{font-family:var(--mono);font-size:12px;font-weight:650}.lib-row .nm{color:var(--text-dim);font-size:12px}.lib-row .meta{display:flex;justify-content:space-between;gap:8px;margin-top:1px;font-size:11px;color:var(--text-faint)}.lib-row .ratings{font-family:var(--mono)}.lib-empty{color:var(--text-faint);font-size:12px;padding:4px 0 8px}.assembly{border:1px solid var(--border);border-radius:6px;margin-bottom:14px;overflow:hidden}.assembly-head{display:flex;align-items:baseline;gap:8px;padding:8px 10px;background:var(--panel-alt);border-bottom:1px solid var(--border-soft);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.assembly-head .asm-name{text-transform:none;letter-spacing:0;font-family:var(--mono);font-weight:600;color:var(--text)}.asm-sec{border-bottom:1px solid var(--border-soft)}.asm-sec:last-child{border-bottom:none}.asm-sec>summary{display:flex;align-items:baseline;gap:8px;padding:7px 10px 7px 24px;cursor:pointer;list-style:none;position:relative}.asm-sec>summary::-webkit-details-marker{display:none}.asm-sec>summary:before{content:"▸";position:absolute;left:9px;top:8px;color:var(--text-faint);font-size:10px}.asm-sec[open]>summary:before{content:"▾"}.asm-sec>summary:hover{background:var(--hover)}.asm-cat{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);min-width:84px}.asm-sel{font-family:var(--mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asm-sel.none{color:var(--text-faint);font-family:inherit}.asm-body{padding:6px 10px 10px 24px;border-top:1px dashed var(--border-soft);background:var(--panel-alt)}.section{margin-bottom:14px}.section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);border-bottom:1px solid var(--border-soft);padding-bottom:3px;margin:0 0 8px}.selected-part{font-family:var(--mono);font-size:12px;background:var(--accent-soft);border:1px solid var(--border-soft);border-radius:4px;padding:4px 8px;margin-bottom:8px}.selected-part .dim{color:var(--text-dim);font-family:inherit}.field{display:grid;grid-template-columns:128px 1fr;grid-gap:6px;gap:6px;align-items:center;margin-bottom:6px}.field>label:first-child{font-size:12px;color:var(--text-dim)}.field .ctl{display:flex;gap:4px;align-items:center}input[type=number],input[type=text],select{font:inherit;color:inherit;background:var(--input-bg);border:1px solid var(--border);border-radius:4px;padding:3px 6px;min-width:0}input[type=number]{width:82px;font-family:var(--mono);font-size:12px;text-align:right}input[type=number]:focus,select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}select.unit{width:66px;font-size:11px}select.unit-system{font-size:12px;align-self:center}.inline-form{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0}.inline-form input[type=number],.inline-form input[type=text]{width:130px;font-size:12px}.inline-form button{font:inherit;font-size:12px;padding:3px 10px;border:1px solid var(--border);border-radius:4px;background:var(--input-bg);color:var(--text);cursor:pointer}.inline-form button:disabled{opacity:.5;cursor:not-allowed}.link-btn{background:none;border:none;color:var(--accent);font-size:12px;padding:2px 0;cursor:pointer;text-align:left}.link-btn:hover{text-decoration:underline}.mount-warn{font-size:12px;color:var(--warn)}.std-list{margin-bottom:10px}.deviation-chip{font-size:12px;background:var(--accent-soft);border:1px solid var(--accent);border-radius:4px;padding:6px 8px;margin-bottom:8px}.motion-section .section-title{margin-bottom:6px}.phase-builder{display:flex;flex-direction:column;gap:8px}.phase-summary{font-size:11px;color:var(--text-faint);font-family:var(--mono)}.phase-row{border:1px solid var(--border);border-radius:4px;padding:6px 8px}.phase-row-head{display:flex;align-items:center;gap:6px;margin-bottom:4px}.phase-row-head .phase-idx{font-family:var(--mono);font-size:11px;color:var(--text-faint);min-width:14px}.phase-row-head .spacer{flex:1 1}.phase-row-head button{font-size:11px;padding:1px 6px;background:var(--input-bg);color:var(--text);border:1px solid var(--border);border-radius:3px;cursor:pointer}.phase-row-head button:disabled{opacity:.4;cursor:default}.charts{display:flex;flex-direction:column;gap:10px;margin:8px 0 10px}.chart{border:1px solid var(--border);border-radius:5px;background:var(--panel);padding:6px 8px 2px}.chart-title{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);margin-bottom:2px}.chart-title .peak{font-family:var(--mono);font-weight:400;text-transform:none;letter-spacing:0;color:var(--text-faint)}.chart svg{width:100%;height:auto;display:block}.chart .axis{stroke:var(--border);stroke-width:1}.chart .grid{stroke:var(--border-soft);stroke-width:.75}.chart .phase-tick{stroke:var(--text-faint);stroke-width:.75;stroke-dasharray:3 3;opacity:.6}.chart .tick-label{font-family:var(--mono);font-size:8.5px;fill:var(--text-faint)}.chart .series{fill:none;stroke-width:1.8;stroke-linejoin:round}.chart .series.pos{stroke:var(--chart-pos)}.chart .series.vel{stroke:var(--chart-vel)}.chart .series.acc{stroke:var(--chart-acc)}.chart .fill.pos{fill:var(--chart-pos);opacity:.08}.chart .fill.vel{fill:var(--chart-vel);opacity:.08}.chart .fill.acc{fill:var(--chart-acc);opacity:.08}.layout-viz{padding:8px 10px 6px;border-bottom:1px solid var(--border-soft);background:var(--panel)}.layout-viz svg{width:100%;height:auto;display:block}.layout-viz .lv-note{font-size:11px;color:var(--text-faint);padding:2px 0 4px}.lv-rail{fill:var(--border-soft);stroke:var(--text-faint);stroke-width:.75}.lv-block{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1}.lv-block-ghost{fill:none;stroke:var(--accent);stroke-width:.75;stroke-dasharray:3 2;opacity:.55}.lv-drive{stroke:var(--chart-acc);stroke-width:2}.lv-drive-hatch{stroke:var(--chart-acc);stroke-width:.75;opacity:.7}.lv-head{fill:var(--panel-alt);stroke:var(--text-dim);stroke-width:1}.lv-dim{stroke:var(--text-faint);stroke-width:.75}.lv-label{font-family:var(--mono);font-size:8.5px;fill:var(--text-faint)}.lv-label.strong{fill:var(--text-dim);font-weight:600}.radio-row{display:flex;gap:12px;margin-bottom:6px;font-size:12px;color:var(--text-dim)}.radio-row label{gap:4px}.assumed-toggle,.radio-row label{display:inline-flex;align-items:center;cursor:pointer}.assumed-toggle{gap:3px;font-size:10px;color:var(--text-faint);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.assumed-toggle input{margin:0;accent-color:var(--accent)}.banner{display:flex;align-items:baseline;gap:10px;padding:10px 12px;border-radius:5px;margin-bottom:10px;border:1px solid}.banner .verdict{font-size:15px;font-weight:750;letter-spacing:.04em}.banner .engine{margin-left:auto;font-family:var(--mono);font-size:11px;opacity:.8}.banner.pass{background:var(--pass-bg);border-color:var(--pass);color:var(--pass)}.banner.warn{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}.banner.error,.banner.fail{background:var(--fail-bg);border-color:var(--fail);color:var(--fail)}.banner.error{display:block}.motion-summary{display:flex;flex-wrap:wrap;gap:6px 18px;padding:8px 10px;background:var(--bg);border:1px solid var(--border-soft);border-radius:5px;margin-bottom:10px;font-size:12px}.motion-summary .k{color:var(--text-faint);margin-right:4px}.motion-summary .v{font-family:var(--mono)}.assumed-list{margin-bottom:12px}.assumed-list .chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.chip{font-family:var(--mono);font-size:11px;background:var(--warn-bg);color:var(--warn);border:1px solid var(--chip-border);border-radius:10px;padding:1px 8px}.crit-grid{--cols:86px minmax(160px,1fr) 130px 120px 64px;border:1px solid var(--border);border-radius:5px;overflow:hidden}.crit-head{display:grid;grid-template-columns:var(--cols);grid-gap:8px;gap:8px;padding:6px 10px 6px 26px;background:var(--bg);border-bottom:1px solid var(--border);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint)}.crit{border-bottom:1px solid var(--border-soft)}.crit:last-child{border-bottom:none}.crit>summary{display:grid;grid-template-columns:var(--cols);grid-gap:8px;gap:8px;align-items:baseline;padding:6px 10px 6px 26px;cursor:pointer;list-style:none;position:relative}.crit>summary::-webkit-details-marker{display:none}.crit>summary:before{content:"▸";position:absolute;left:10px;top:7px;color:var(--text-faint);font-size:10px}.crit[open]>summary:before{content:"▾"}.crit>summary:hover{background:var(--hover)}.crit.governing>summary{background:var(--gov-warn-bg);box-shadow:inset 3px 0 0 var(--warn)}.crit.governing.fail-row>summary{background:var(--gov-fail-bg);box-shadow:inset 3px 0 0 var(--fail)}.status-cell{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.status-cell.pass{color:var(--pass)}.status-cell.warn{color:var(--warn)}.status-cell.fail{color:var(--fail)}.dot{width:8px;height:8px;border-radius:50%;flex:none}.dot.pass{background:var(--pass)}.dot.warn{background:var(--warn)}.dot.fail{background:var(--fail)}.crit .label{font-size:12.5px}.crit .label .gov-badge{margin-left:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--warn);border:1px solid var(--warn);border-radius:3px;padding:0 4px}.crit .num{font-family:var(--mono);font-size:12px;text-align:right;white-space:nowrap}.crit-detail{padding:8px 12px 12px 26px;background:var(--panel-alt);border-top:1px dashed var(--border-soft);font-size:12px}.crit-detail .ref{color:var(--text-faint);margin-bottom:6px}.crit-detail .formula{font-family:var(--mono);font-size:12px;background:var(--formula-bg);border:1px solid var(--border-soft);border-radius:4px;padding:4px 8px;display:inline-block;margin-bottom:8px}table.inputs{border-collapse:collapse;width:100%;max-width:560px;margin-bottom:6px}table.inputs td,table.inputs th{text-align:left;padding:2px 10px 2px 0;border-bottom:1px solid var(--border-soft);font-size:11.5px}table.inputs th{color:var(--text-faint);font-weight:600;text-transform:uppercase;font-size:10px;letter-spacing:.05em}table.inputs td.val{font-family:var(--mono);text-align:right}table.inputs td.prov{color:var(--text-faint)}table.inputs td.prov.assumed{color:var(--warn);font-weight:600}.crit-detail .notes{margin:6px 0 0;padding-left:16px;color:var(--text-dim)}.report-meta{margin-top:10px;color:var(--text-faint);font-size:11px}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg)}.login-box{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:40px;max-width:360px;width:100%;box-shadow:0 2px 8px var(--shadow)}.login-header{text-align:center;margin-bottom:32px}.login-header h1{margin:0 0 8px;font-size:20px;font-weight:700;color:var(--text)}.login-header .subtitle{margin:0;font-size:13px;color:var(--text-dim)}.login-form{gap:14px;margin-bottom:24px}.form-group,.login-form{display:flex;flex-direction:column}.form-group{gap:4px}.form-group label{font-size:12px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.form-group input{font:inherit;font-size:13px;padding:8px 12px;border:1px solid var(--border);border-radius:5px;background:var(--input-bg);color:var(--text)}.form-group input:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.submit-btn{font:inherit;font-size:13px;font-weight:600;padding:10px 16px;border:none;border-radius:5px;background:var(--accent);color:#fff;cursor:pointer;transition:background .2s}.submit-btn:hover:not(:disabled){background:var(--accent-hover)}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.error-msg{color:var(--fail);font-size:12px;padding:8px;background:var(--fail-bg);border:1px solid var(--fail);border-radius:4px;text-align:center}.login-footer{text-align:center;padding-top:16px;border-top:1px solid var(--border-soft)}.login-footer p{margin:0;font-size:12px;color:var(--text-faint)}.info-msg{color:var(--pass);font-size:12px;padding:8px;background:var(--pass-bg);border:1px solid var(--pass);border-radius:4px;text-align:center}.audit-main{flex:1 1;min-height:0;overflow-y:auto;padding:14px 16px 24px;max-width:1100px;width:100%;margin:0 auto}.audit-progress{display:flex;flex-direction:column;gap:4px;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:10px 12px;margin-bottom:12px}.audit-progress-row{display:grid;grid-template-columns:140px 1fr 70px;grid-gap:10px;gap:10px;align-items:center;font-size:12px}.audit-progress-row .nm{color:var(--text-dim)}.audit-progress-row.overall .nm{font-weight:700;color:var(--text)}.audit-progress-row .cnt{font-family:var(--mono);font-size:11px;color:var(--text-faint);text-align:right}.prog-track{height:8px;background:var(--border-soft);border-radius:4px;overflow:hidden}.prog-fill{height:100%;background:var(--pass);border-radius:4px;transition:width .3s}.audit-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}.audit-filters input[type=text]{flex:1 1;min-width:180px;font-size:12px;padding:4px 8px}.audit-count{font-family:var(--mono);font-size:11px;color:var(--text-faint);white-space:nowrap}.audit-grid{background:var(--panel)}.audit-row .label .dim{color:var(--text-faint);font-size:11.5px}.audit-detail-row{display:grid;grid-template-columns:120px 1fr;grid-gap:8px;gap:8px;padding:2px 0;font-size:12px}.audit-detail-row .k{color:var(--text-faint)}.audit-actions{display:flex;gap:6px;align-items:center;margin-top:10px}.audit-actions input[type=text]{flex:1 1;font-size:12px;padding:4px 8px}.audit-actions button{font:inherit;font-size:12px;padding:4px 12px;border:1px solid var(--border);border-radius:4px;background:var(--input-bg);color:var(--text);cursor:pointer;white-space:nowrap}.audit-actions button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.audit-actions button:disabled{opacity:.5;cursor:not-allowed}.saved-row .nm{font-weight:600}.sv-overall{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:1px 6px;border-radius:8px;margin-left:4px}.sv-overall.pass{color:var(--pass);background:var(--pass-bg)}.sv-overall.warn{color:var(--warn);background:var(--warn-bg)}.sv-overall.fail{color:var(--fail);background:var(--fail-bg)}