:root{--bg:#f7f7f8;--surface:#fff;--border:#e2e2e6;--text:#1c1c1f;--text-muted:#6b6b73;--accent:#2f6fed;--accent-contrast:#fff;--danger:#d33;--warn:#b8860b;--ok:#1a7f37;--radius:8px;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#16171a;--surface:#1e1f23;--border:#2e2f34;--text:#f0f0f2;--text-muted:#9a9aa2;--accent:#5b8def;--accent-contrast:#0b0c0e}}*{box-sizing:border-box}body{font:15px/1.5 var(--sans);color:var(--text);background:var(--bg);margin:0}#root{min-height:100vh}button,input,select{font:inherit;color:inherit}input,select,textarea{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;padding:6px 8px}@media (prefers-color-scheme:dark){input,select,textarea{--lightningcss-light: ;--lightningcss-dark:initial}}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 12px}th{color:var(--text-muted);font-size:13px;font-weight:500}a{color:var(--accent)}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:var(--radius);cursor:pointer;align-items:center;gap:6px;padding:8px 14px;display:inline-flex}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.badge{border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:12px;display:inline-block}.badge-ok{color:var(--ok);border-color:var(--ok)}.badge-warn{color:var(--warn);border-color:var(--warn)}.badge-danger{color:var(--danger);border-color:var(--danger)}.stack{flex-direction:column;gap:16px;display:flex}.card{padding:16px}table+table,.card table{width:calc(100% + 32px);margin:-16px}.inline-form{gap:8px;display:flex}.inline-form input{flex:1}.form-grid{flex-direction:column;gap:12px;max-width:420px;display:flex}.form-grid h3{margin:0;font-size:15px}.form-grid label{color:var(--text-muted);flex-direction:column;gap:6px;font-size:13px;display:flex}.form-grid input,.form-grid select{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);padding:8px 10px}.assembly-row{cursor:pointer;align-items:center;gap:16px;display:flex}.assembly-detail{border-top:1px solid var(--border);flex-direction:column;gap:12px;margin-top:16px;padding-top:16px;display:flex}.assembly-detail table{width:100%;margin:0}.scan-controls{align-items:center;gap:6px;display:flex}.scan-controls select,.scan-controls input{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);padding:6px 8px}.stat-row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.stat{flex-direction:column;gap:4px;display:flex}.stat-value{font-size:28px;font-weight:600}h3{color:var(--text-muted);margin:0;font-size:15px}.app-shell{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.app-sidebar{background:var(--surface);border-right:1px solid var(--border);padding:20px 12px}.app-logo{padding:8px 12px 20px;font-weight:600}.app-sidebar nav{flex-direction:column;gap:2px;display:flex}.app-sidebar nav a{border-radius:var(--radius);color:var(--text);padding:8px 12px;text-decoration:none;display:block}.app-sidebar nav a:hover{background:var(--bg)}.app-sidebar nav a.active{background:var(--accent);color:var(--accent-contrast)}.app-main{flex-direction:column;min-width:0;display:flex}.app-header{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;padding:12px 24px;display:flex}.app-user{align-items:center;gap:10px;display:flex}.app-content{padding:24px;overflow:auto}.login-page{justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{flex-direction:column;gap:16px;width:320px;padding:32px;display:flex}.login-card h1{margin:0 0 8px;font-size:20px}.login-card label{color:var(--text-muted);flex-direction:column;gap:6px;font-size:13px;display:flex}.login-card input{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);padding:8px 10px}.login-error{color:var(--danger);margin:0;font-size:13px}
