:root { --ink:#13231f; --muted:#66736f; --paper:#f5f5ef; --card:#fff; --line:#dfe4dd; --accent:#e85d3f; --accent-dark:#c94329; --green:#1f7a5a; --unit-height:32px; }
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:var(--paper); font:15px/1.5 Inter, ui-sans-serif, system-ui, -apple-system, sans-serif; }
.demo-banner { min-height:52px; padding:8px max(24px, calc((100vw - 1180px)/2)); display:flex; align-items:center; justify-content:space-between; gap:20px; color:#fff; background:#8a4b16; }
.demo-banner > div:first-child { display:flex; align-items:baseline; gap:12px; }
.demo-banner strong { font-size:13px; letter-spacing:.08em; text-transform:uppercase; }
.demo-banner span { color:#ffe5cf; font-size:12px; }
.demo-banner-actions { display:flex; align-items:center; gap:8px; }
.demo-banner form,.demo-nav-form { display:flex; margin:0; }
.demo-banner form p,.demo-nav-form p { display:none; }
.demo-banner button,.demo-nav-form button { padding:6px 9px; border:1px solid #ffffff55; color:#fff; background:transparent; cursor:pointer; font-size:11px; font-weight:750; }
.demo-banner button:hover,.demo-nav-form button:hover { border-color:#fff; background:#ffffff18; }
.demo-mode [disabled] { cursor:not-allowed; }
.demo-mode [data-api-form] [disabled] { opacity:.58; }
.topbar nav[data-mobile-nav] .demo-nav-form { padding:14px 2px; border-bottom:1px solid #ffffff14; }
.topbar nav[data-mobile-nav] .demo-nav-form button { width:100%; padding:9px; }
@media(max-width:600px) {
  .demo-banner { align-items:flex-start; padding-block:10px; }
  .demo-banner > div:first-child { display:grid; gap:1px; }
  .demo-banner-actions { flex:0 0 auto; }
  .demo-banner button { padding:6px 7px; font-size:10px; }
}
@media(max-width:420px) {
  .demo-banner { display:grid; }
  .demo-banner-actions { justify-content:flex-end; }
}
a { color:inherit; text-decoration:none; }
button,input,select,textarea { font:inherit; }
.topbar { height:72px; padding:0 max(24px, calc((100vw - 1180px)/2)); display:flex; align-items:center; justify-content:space-between; background:#13231f; color:#fff; }
.topbar-primary { display:flex; align-items:center; gap:16px; }
.brand { display:flex; gap:11px; align-items:center; font-size:19px; font-weight:750; letter-spacing:-.02em; }
.brand-mark { display:grid; place-items:center; width:34px; height:34px; border:1px solid #ffffff55; color:#ff9b7e; font-size:11px; letter-spacing:.08em; }
.topbar nav { display:flex; align-items:center; gap:clamp(10px,1.4vw,28px); color:#d7dfdc; font-size:clamp(11px,.75vw,13px); }
.mobile-menu-toggle,.mobile-nav-head,.mobile-nav-backdrop { display:none; }
.user-label { padding-left:18px; border-left:1px solid #ffffff25; color:#fff; font-weight:700; }
.room-context { max-width:150px; padding:5px 8px; overflow:hidden; border:1px solid #ffffff25; color:#ffb59f; font-size:10px; font-weight:800; text-overflow:ellipsis; white-space:nowrap; }
.logout { padding:0; border:0; color:#b9c5c1; background:transparent; cursor:pointer; }.logout:hover{color:#fff}
.status { padding:7px 12px; border:1px solid #ffffff22; border-radius:99px; }
.status i { display:inline-block; width:7px; height:7px; margin-right:6px; border-radius:50%; background:#5bd3a2; }
main { width:min(1180px, calc(100% - 40px)); margin:0 auto; padding:64px 0 90px; }
.hero,.rack-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:46px; }
.eyebrow { margin:0 0 8px; color:var(--accent); font-size:11px; font-weight:800; letter-spacing:.15em; text-transform:uppercase; }
h1 { max-width:720px; margin:0; font:700 clamp(37px,6vw,66px)/1.02 Georgia,serif; letter-spacing:-.045em; }
h2 { margin:0; font:700 28px/1.15 Georgia,serif; letter-spacing:-.025em; }
.lede { max-width:650px; margin:16px 0 0; color:var(--muted); font-size:17px; }
.button { border:0; border-radius:4px; padding:12px 18px; cursor:pointer; font-weight:700; white-space:nowrap; }
.button.primary { color:white; background:var(--accent); box-shadow:0 8px 22px #e85d3f29; }
.button.primary:hover { background:var(--accent-dark); }
.button.secondary { border:1px solid var(--line); background:white; }
.button.danger { color:#a83524; }
.button.full { width:100%; }
.readonly-badge { padding:8px 12px; border:1px solid #cbd2cd; border-radius:99px; color:var(--muted); background:#ffffff80; font-size:12px; font-weight:750; }
.metrics { display:grid; grid-template-columns:repeat(3,1fr); border:1px solid var(--line); background:var(--card); margin-bottom:64px; }
.dashboard-metrics { grid-template-columns:repeat(5,1fr); }
.metrics article { padding:22px 26px; border-right:1px solid var(--line); }
.metrics article:last-child { border:0; }
.metrics span { display:block; color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.08em; }
.metrics strong { display:block; margin-top:4px; font:700 27px Georgia,serif; }
.continuity-card { margin:-16px 0 38px; padding:22px 24px; border:1px solid var(--line); border-left:5px solid var(--green); background:#edf6f1; }
.continuity-card > header { display:flex; justify-content:space-between; gap:25px; align-items:start; }
.continuity-card h2 { font-size:24px; }
.continuity-card .eyebrow { color:var(--green); }
.continuity-badge { flex:0 0 auto; padding:5px 9px; border-radius:3px; color:#176448; background:#d7eee4; font-size:10px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.continuity-warning { border-left-color:#c88b2f; background:#fbf5e8; }
.continuity-warning .eyebrow { color:#9a691e; }
.continuity-warning .continuity-badge { color:#735018; background:#f2e2bb; }
.continuity-critical { border-left-color:#b44938; background:#fbefec; }
.continuity-critical .eyebrow { color:#a13d2d; }
.continuity-critical .continuity-badge { color:#963626; background:#f1d4ce; }
.continuity-ok { margin:14px 0 0; color:#356552; }
.continuity-issues { display:grid; gap:7px; margin:17px 0 0; padding:0; list-style:none; }
.continuity-issues li { display:flex; gap:10px; align-items:start; padding:9px 11px; background:#ffffff9c; }
.continuity-issues li i { flex:0 0 auto; width:8px; height:8px; margin-top:6px; border-radius:50%; background:#c88b2f; }
.continuity-issues li.issue-critical i { background:#b44938; }
.continuity-issues strong,.continuity-issues small { display:block; }
.continuity-issues small { margin-top:1px; color:var(--muted); font-size:11px; }
.continuity-facts { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; margin:18px 0 0; background:#d9e2dc; }
.continuity-facts div { padding:10px 12px; background:#ffffffb8; }
.continuity-facts dt { color:var(--muted); font-size:9px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.continuity-facts dd { margin:2px 0 0; font:700 12px ui-monospace,SFMono-Regular,Consolas,monospace; }
.continuity-card footer { min-height:18px; margin-top:13px; color:var(--muted); font-size:11px; }
.continuity-card footer a { color:var(--green); font-weight:800; }
.section-head { display:flex; align-items:end; justify-content:space-between; margin-bottom:22px; }
.dashboard-interventions { margin-bottom:48px; border:1px solid var(--line); background:var(--card); }
.dashboard-interventions > header { display:flex; justify-content:space-between; gap:24px; align-items:center; padding:22px 24px 17px; }
.dashboard-interventions > header h2 { font-size:25px; }
.dashboard-intervention-counts { display:flex; gap:8px; padding:0 24px 18px; border-bottom:1px solid var(--line); }
.dashboard-intervention-counts span { padding:5px 9px; border-radius:99px; color:#53615d; background:#e8ebe5; font-size:11px; }
.dashboard-intervention-counts span.has-alert { color:#963626; background:#f7dfda; }
.dashboard-intervention-counts strong { margin-right:2px; }
.dashboard-intervention-list { display:grid; }
.dashboard-intervention-row { display:grid; grid-template-columns:135px minmax(0,1fr) 24px; gap:18px; align-items:center; min-width:0; padding:17px 24px; border-bottom:1px solid var(--line); transition:.15s ease; }
.dashboard-intervention-row:last-child { border-bottom:0; }
.dashboard-intervention-row:hover { background:#f8faf7; }
.dashboard-intervention-row time { padding-left:12px; border-left:3px solid var(--green); }
.dashboard-intervention-row.timing-overdue time { border-left-color:#b44938; }
.dashboard-intervention-row.timing-today time { border-left-color:#c88b2f; }
.dashboard-intervention-row time span,.dashboard-intervention-row time strong { display:block; }
.dashboard-intervention-row time span { color:var(--muted); font-size:10px; font-weight:800; text-transform:uppercase; }
.dashboard-intervention-row.timing-overdue time span { color:#a13d2d; }
.dashboard-intervention-row.timing-today time span { color:#9a691e; }
.dashboard-intervention-row time strong { margin-top:1px; font:700 13px ui-monospace,SFMono-Regular,Consolas,monospace; }
.dashboard-intervention-main { display:block; min-width:0; }
.dashboard-intervention-main > span { display:flex; flex-wrap:wrap; gap:5px; margin-bottom:5px; }
.dashboard-intervention-main > strong,.dashboard-intervention-main > small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dashboard-intervention-main > small { margin-top:2px; color:var(--muted); font-size:11px; }
.dashboard-intervention-arrow { color:#9aa6a2; font-size:19px; transition:.15s ease; }
.dashboard-intervention-row:hover .dashboard-intervention-arrow { color:var(--accent); transform:translateX(3px); }
.dashboard-intervention-empty { display:flex; gap:12px; align-items:center; margin:0; padding:22px 24px; border-top:1px solid var(--line); color:#356552; }
.dashboard-intervention-empty i { display:grid; place-items:center; flex:0 0 auto; width:28px; height:28px; border-radius:50%; color:white; background:var(--green); font-style:normal; }
.dashboard-intervention-empty strong,.dashboard-intervention-empty small { display:block; }
.dashboard-intervention-empty small { color:var(--muted); }
.dashboard-inventory-actions { margin:-22px 0 28px; border:1px solid #d8c8a9; border-left:5px solid #c88b2f; background:#fffdf7; }
.dashboard-inventory-actions > header { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:20px 22px 15px; }
.dashboard-inventory-actions > header h2 { font-size:24px; }
.dashboard-inventory-action-counts { display:flex; flex-wrap:wrap; gap:8px; padding:0 22px 16px; border-bottom:1px solid #e6dcc9; }
.dashboard-inventory-action-counts span { padding:5px 9px; border-radius:99px; color:#665b46; background:#f1eadc; font-size:10px; }
.dashboard-inventory-action-counts span.has-alert { color:#963626; background:#f7dfda; }
.dashboard-inventory-action-list { display:grid; }
.dashboard-inventory-action-row { display:grid; grid-template-columns:150px minmax(0,1fr) 22px; gap:14px; align-items:center; padding:13px 22px; border-bottom:1px solid #e6dcc9; }
.dashboard-inventory-action-row:last-child { border-bottom:0; }
.dashboard-inventory-action-row:hover { background:#fffaf0; }
.dashboard-inventory-action-row > span:nth-child(2) { min-width:0; }
.dashboard-inventory-action-row > span:nth-child(2) strong,.dashboard-inventory-action-row > span:nth-child(2) small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dashboard-inventory-action-row > span:nth-child(2) small { margin-top:2px; color:var(--muted); font-size:10px; }
.dashboard-inventory-action-row > i { color:#9a8d76; font-size:17px; font-style:normal; }
.count,.unit-badge { padding:4px 9px; border-radius:99px; background:#e8ebe5; color:#53615d; font-size:12px; font-weight:700; }
.rack-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.rack-card { padding:24px; border:1px solid var(--line); background:var(--card); transition:.2s ease; }
.rack-card:hover { transform:translateY(-3px); border-color:#bac7c0; box-shadow:0 14px 35px #233d3512; }
.rack-card-top { display:flex; justify-content:space-between; color:var(--green); font-size:25px; }.arrow{color:#9aa6a2;font-size:18px}
.rack-card h3 { margin:24px 0 4px; font-size:20px; }.rack-card p{margin:0;color:var(--muted);min-height:44px}
.capacity { height:5px; margin:24px 0 12px; overflow:hidden; background:#e8ebe5; border-radius:5px; }.capacity span{display:block;height:100%;background:var(--accent)}
.rack-card footer { display:flex; justify-content:space-between; color:var(--muted); font-size:12px; }
.rack-card-power-head,.rack-card-power-foot { display:flex; justify-content:space-between; gap:12px; color:var(--muted); font-size:11px; }
.rack-card-power-head { margin-top:18px; }
.rack-card-power-head strong { color:var(--ink); font-size:11px; }
.rack-card-power-unconfigured { margin-top:18px; padding-top:12px; border-top:1px solid var(--line); color:var(--muted); font-size:11px; }
.rack-card-physical { display:grid; gap:2px; margin-top:12px; padding:9px 10px; border-left:3px solid var(--green); background:#eef5f1; font-size:10px; }
.rack-card-physical span,.rack-card-physical small { color:var(--muted); }
.rack-card-physical.state-warning { border-left-color:#c88b2f; background:#fbf5e8; }
.rack-card-physical.state-critical { border-left-color:#b44938; background:#fbefec; }
.power-capacity { height:5px; margin:8px 0; overflow:hidden; border-radius:5px; background:#e8ebe5; }
.power-capacity span { display:block; height:100%; background:var(--green); }
.power-capacity.power-warning span { background:#c88b2f; }
.power-capacity.power-critical span { background:#b44938; }
.rack-card.rack-power-warning { border-top:3px solid #c88b2f; }
.rack-card.rack-power-critical { border-top:3px solid #b44938; }
.rack-card-circuits { display:grid; grid-template-columns:1fr 1fr; gap:7px; margin-top:14px; }
.rack-card-circuit { min-width:0; padding:9px 10px; border-left:3px solid var(--green); background:#f1f5f1; }
.rack-card-circuit.circuit-warning { border-left-color:#c88b2f; background:#fbf5e8; }
.rack-card-circuit.circuit-critical { border-left-color:#b44938; background:#fbefec; }
.rack-card-circuit strong,.rack-card-circuit span,.rack-card-circuit small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rack-card-circuit strong { font-size:10px; }
.rack-card-circuit span,.rack-card-circuit small { color:var(--muted); font-size:9px; }
.failover-warning,.failover-critical { color:#9a691e !important; font-weight:800; }
.empty { padding:70px 20px; border:1px dashed #c9d0ca; text-align:center; background:#ffffff70; }.empty-icon{font-size:45px;color:#91a099}.empty p{color:var(--muted);margin:8px 0 22px}.empty.small{padding:35px 10px}
.login-shell { display:grid; grid-template-columns:1.1fr .9fr; gap:90px; align-items:center; min-height:calc(100vh - 226px); }.login-card{padding:38px;border:1px solid var(--line);background:#fff;box-shadow:0 18px 55px #233d3512}.login-card .dialog-head{margin-bottom:28px}.login-card .form-error{margin-block:8px}.login-intro h1{font-size:62px}
.audit-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:46px; }
.audit-heading h1 { font-size:54px; }
.audit-list { display:grid; gap:14px; }
.audit-entry { padding:23px 25px; border:1px solid var(--line); background:var(--card); }
.audit-entry-head { display:flex; justify-content:space-between; gap:24px; align-items:center; }
.audit-entry-head > div { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.audit-entry time,.audit-entry footer { color:var(--muted); font-size:12px; }
.audit-name { color:var(--muted); }
.audit-badge { padding:4px 8px; border-radius:3px; font-size:10px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.action-create { color:#176448; background:#dff2e9; }
.action-update { color:#735018; background:#f7ebce; }
.action-delete { color:#963626; background:#f7dfda; }
.audit-changes,.audit-details { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin:18px 0; }
.audit-changes div,.audit-details div { min-width:0; padding:10px 12px; background:#f5f6f2; }
.audit-changes dt,.audit-details dt { color:var(--muted); font-size:10px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.audit-changes dd,.audit-details dd { margin:3px 0 0; overflow-wrap:anywhere; }
.audit-changes dd span[aria-label="devient"] { padding:0 5px; color:var(--accent); }
.audit-empty { color:#98a19e; font-style:italic; }
.audit-entry footer { padding-top:11px; border-top:1px solid var(--line); }
.inventory-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:38px; }
.inventory-heading h1 { font-size:54px; }
.inventory-heading-actions { display:flex; gap:9px; }
.inventory-filters { display:grid; grid-template-columns:2fr repeat(5,1fr) auto; gap:12px; align-items:end; padding:20px 22px; margin-bottom:46px; border:1px solid var(--line); background:var(--card); }
.hub-inventory-filters { grid-template-columns:2fr repeat(6,1fr) auto; }
.inventory-filters label { margin:0; font-size:10px; letter-spacing:.07em; text-transform:uppercase; }
.inventory-filters input,.inventory-filters select { margin-top:4px; text-transform:none; letter-spacing:normal; }
.filter-actions { display:flex; gap:8px; }
.inventory-summary { display:flex; justify-content:space-between; gap:30px; align-items:end; margin-bottom:18px; }
.inventory-summary p:last-child { margin:0; color:var(--muted); font-size:12px; }
.inventory-table-wrap { overflow-x:auto; border:1px solid var(--line); background:var(--card); }
.inventory-table { width:100%; min-width:1760px; border-collapse:collapse; }
.inventory-room-link { white-space:nowrap; }
.inventory-table th { padding:12px 16px; color:var(--muted); background:#f0f2ed; font-size:10px; letter-spacing:.08em; text-align:left; text-transform:uppercase; }
.inventory-table td { padding:16px; border-top:1px solid var(--line); vertical-align:middle; }
.inventory-table td strong,.inventory-table td small { display:block; }
.inventory-table td small { margin-top:2px; color:var(--muted); }
.inventory-table td a { color:var(--green); font-weight:750; }
.inventory-table td a:hover { color:var(--accent); }
.lifecycle-state { display:inline-block; padding:4px 7px; border-radius:3px; color:#176448; background:#dff2e9; font-size:9px; font-weight:800; }
.lifecycle-state.lifecycle-due_soon { color:#795319; background:#f5e6c1; }
.lifecycle-state.lifecycle-expired { color:#963626; background:#f7dfda; }
.lifecycle-state.lifecycle-undocumented { color:#59635f; background:#e5e8e4; }
.lifecycle-fields { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.device-lifecycle { display:flex; flex-wrap:wrap; gap:5px 9px; align-items:center; margin-top:7px; }
.device-lifecycle small { color:var(--muted); font-size:9px; }
.power-feed { display:inline-block; padding:4px 7px; border-radius:3px; color:#53615d; background:#e8ebe5; font-size:10px; font-weight:750; white-space:nowrap; }
.power-feed-a { color:#355f83; background:#e1ebf3; }
.power-feed-b { color:#735018; background:#f7ebce; }
.power-feed-redundant { color:#176448; background:#dff2e9; }
.device-history-link { display:inline-block; margin-top:6px; color:var(--green); font-size:10px; font-weight:800; }
.device-history-link:hover { color:var(--accent); }
.technical-value { font:600 12px ui-monospace,SFMono-Regular,Consolas,monospace; }
.type-badge { display:inline-block; padding:4px 8px; border-radius:3px; color:#355f83; background:#e1ebf3; font-size:11px; font-weight:750; }
.device-status { display:inline-block; padding:3px 7px; border-radius:99px; font-size:9px; font-weight:800; line-height:1.35; white-space:nowrap; }
.device-status-active { color:#176448; background:#dff2e9; }
.device-status-maintenance { color:#735018; background:#f7ebce; }
.device-status-standby { color:#355f83; background:#e1ebf3; }
.device-status-offline { color:#963626; background:#f7dfda; }
.device-status-decommissioned { color:#59635f; background:#e2e6e3; }
.unassigned-badge { display:inline-block; padding:4px 8px; border-radius:3px; color:#735018; background:#f7ebce; font-size:10px; font-weight:800; }
.inventory-row-actions { display:flex; gap:5px; align-items:center; }
.install-button { padding:6px 9px; color:white; background:var(--green); font-size:10px; }
.install-button:hover { background:#176448; }
.install-button:disabled { opacity:.45; cursor:not-allowed; }
.decommission-button { padding:6px 9px; color:#963626!important; border:1px solid #e0b2a9; background:#fff7f5; font-size:10px; }
.decommission-button:hover { color:white!important; background:#b44938; }
.inventory-archived-label { color:var(--muted)!important; font-size:9px; font-weight:800; text-transform:uppercase; }
.inventory-transfer-label { color:#3f657b!important; font-weight:800; }
.decommission-heading { display:flex; justify-content:space-between; gap:35px; align-items:end; margin-bottom:35px; }
.decommission-heading h1 { font-size:52px; }
.decommission-metrics { grid-template-columns:repeat(4,1fr); margin-bottom:30px; }
.decommission-blockers { margin-bottom:24px; border:1px solid #e1b4aa; background:#fff8f6; }
.decommission-blockers > header { display:flex; justify-content:space-between; gap:20px; padding:20px 22px; border-bottom:1px solid #eed1ca; }
.decommission-blockers > header h2 { font-size:25px; }
.decommission-blockers > header > span { color:#963626; font-size:11px; font-weight:800; }
.decommission-blockers article { display:grid; grid-template-columns:28px minmax(0,1fr) auto; gap:13px; align-items:center; padding:16px 22px; border-bottom:1px solid #f0dcd7; }
.decommission-blockers article:last-child { border:0; }
.decommission-blockers article > i { display:grid; place-items:center; width:24px; height:24px; border-radius:50%; color:white; background:#b44938; font-style:normal; font-weight:900; }
.decommission-blockers article p { margin:3px 0 0; color:var(--muted); font-size:11px; }
.decommission-ready,.decommission-closed { margin-bottom:24px; padding:17px 20px; border-left:5px solid var(--green); background:#edf6f1; }
.decommission-ready p,.decommission-closed p { margin:4px 0 0; color:var(--muted); font-size:12px; }
.decommission-closed.warning { border-left-color:#c88b2f; background:#fbf2df; }
.decommission-impact { display:grid; grid-template-columns:minmax(220px,.8fr) 1.4fr; gap:35px; margin-bottom:24px; padding:24px; border:1px solid var(--line); background:var(--card); }
.decommission-impact h2 { font-size:27px; }
.decommission-impact ul { margin:0; padding-left:18px; color:#44514d; }
.decommission-impact li { margin:0 0 8px; }
.decommission-form { padding:26px; border:1px solid var(--line); border-top:5px solid #b44938; background:var(--card); }
.decommission-form > header h2 { font-size:29px; }
.decommission-form > header > p:last-child { margin:6px 0 0; color:var(--muted); }
.decommission-checks { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:20px 0; }
.decommission-checks label { display:flex; gap:11px; align-items:start; margin:0; padding:14px; border:1px solid var(--line); background:#f7f8f4; }
.decommission-checks input { flex:0 0 auto; width:17px; height:17px; margin:1px 0 0; }
.decommission-checks strong,.decommission-checks small { display:block; }
.decommission-checks small { margin-top:3px; color:var(--muted); font-weight:500; }
.decommission-form .button.danger { color:white; background:#b44938; }
.decommission-form .button.danger:hover { background:#963626; }
.reactivation-impact { border-left:5px solid var(--green); }
.reactivation-form { border-top-color:var(--green); }
.transfer-heading { display:flex; justify-content:space-between; gap:35px; align-items:end; margin-bottom:35px; }
.transfer-heading h1 { font-size:52px; }
.transfer-metrics { grid-template-columns:repeat(4,1fr); margin-bottom:30px; }
.transfer-impact { display:grid; grid-template-columns:minmax(220px,.8fr) 1.4fr; gap:35px; margin-bottom:24px; padding:24px; border:1px solid var(--line); border-left:5px solid #557f9d; background:var(--card); }
.transfer-impact h2 { font-size:27px; }
.transfer-impact ul { margin:0; padding-left:18px; color:#44514d; }
.transfer-impact li { margin:0 0 8px; }
.transfer-form { padding:26px; border:1px solid var(--line); border-top:5px solid #557f9d; background:var(--card); }
.transfer-form > header h2 { font-size:29px; }
.transfer-form > header > p:last-child { margin:6px 0 0; color:var(--muted); }
.transfer-confirmations { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:20px 0; }
.transfer-confirmations label { display:flex; gap:11px; align-items:start; margin:0; padding:14px; border:1px solid var(--line); background:#f7f8f4; }
.transfer-confirmations input { flex:0 0 auto; width:17px; height:17px; margin:1px 0 0; }
.transfer-confirmations strong,.transfer-confirmations small { display:block; }
.transfer-confirmations small { margin-top:3px; color:var(--muted); font-weight:500; }
.import-dialog { width:min(720px,calc(100% - 30px)); }
.import-help { margin:-5px 0 22px; color:var(--muted); }
.import-preview { max-height:320px; margin:18px 0; padding:17px; overflow:auto; border:1px solid var(--line); background:#f5f6f2; }
.import-preview h3 { margin:0 0 5px; font-size:17px; }
.import-preview p { margin:0; color:var(--muted); font-size:12px; }
.import-errors,.import-rows { margin:13px 0 0; padding:0; list-style:none; }
.import-errors li { margin-top:6px; padding:8px 10px; color:#963626; background:#f7dfda; font-size:12px; }
.import-rows li { display:flex; justify-content:space-between; gap:15px; padding:8px 0; border-bottom:1px solid var(--line); font-size:12px; }
.import-rows li:last-child { border:0; }
.import-row-state { flex:0 0 auto; font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.import-create .import-row-state { color:var(--green); }
.import-update .import-row-state { color:#735018; }
.import-unchanged .import-row-state { color:var(--muted); }
.intervention-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:38px; }
.intervention-heading h1 { font-size:54px; }
.intervention-heading .lede a { color:var(--green); font-weight:750; }
.intervention-metrics { grid-template-columns:repeat(4,1fr); margin-bottom:42px; }
.hub-intervention-metrics { grid-template-columns:repeat(5,1fr); }
.intervention-filters { display:grid; grid-template-columns:minmax(200px,1.7fr) repeat(4,minmax(115px,1fr)) auto; gap:10px; align-items:end; margin-bottom:38px; padding:18px; border:1px solid var(--line); background:var(--card); }
.intervention-filters label { margin:0; font-size:10px; letter-spacing:.06em; text-transform:uppercase; }
.intervention-filters input,.intervention-filters select { margin-top:4px; text-transform:none; letter-spacing:normal; }
.intervention-results-head { display:flex; justify-content:space-between; gap:20px; align-items:end; margin-bottom:18px; }
.intervention-results-head h2 { font-size:27px; }
.intervention-list { display:grid; gap:13px; }
.intervention-card { display:grid; grid-template-columns:74px minmax(0,1fr) auto; gap:20px; padding:22px 24px; border:1px solid var(--line); border-left:4px solid #557f9d; background:var(--card); }
.intervention-card.status-in_progress { border-left-color:#c88b2f; }
.intervention-card.status-completed { border-left-color:var(--green); }
.intervention-card.status-cancelled { border-left-color:#9aa6a2; opacity:.78; }
.intervention-card.target-power_source { border-left-color:#8a641f; }
.intervention-card.target-power_source.status-in_progress { border-left-color:#c0652b; }
.intervention-card.target-power_source.status-completed { border-left-color:#1f7a5a; }
.intervention-card > time { align-self:start; padding:8px 6px; color:var(--muted); background:#f0f2ed; text-align:center; }
.intervention-card > time strong,.intervention-card > time span { display:block; }
.intervention-card > time strong { color:var(--ink); font:700 25px Georgia,serif; }
.intervention-card > time span { font-size:10px; }
.intervention-content { min-width:0; }
.intervention-content header > div { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:8px; }
.intervention-device-link { display:inline-block; margin-bottom:7px; color:var(--green); font-size:11px; font-weight:800; }
.intervention-content h2 { font:750 19px/1.25 Inter,ui-sans-serif,system-ui,sans-serif; letter-spacing:-.015em; }
.intervention-category,.intervention-status,.intervention-priority,.intervention-recurrence { padding:4px 7px; border-radius:3px; font-size:9px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.intervention-room-badge { padding:4px 7px; border-radius:3px; color:#176448; background:#dff2e9; font-size:9px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.intervention-category { color:#355f83; background:#e1ebf3; }
.category-incident { color:#963626; background:#f7dfda; }
.category-maintenance { color:#735018; background:#f7ebce; }
.category-installation { color:#176448; background:#dff2e9; }
.category-note { color:#584d80; background:#ebe7f5; }
.intervention-status { color:#53615d; background:#e8ebe5; }
.intervention-status-in_progress { color:#735018; background:#f7ebce; }
.intervention-status-completed { color:#176448; background:#dff2e9; }
.intervention-status-cancelled { color:#59635f; background:#e2e6e3; }
.intervention-priority { color:#53615d; background:#e8ebe5; }
.intervention-priority-high { color:#735018; background:#f7ebce; }
.intervention-priority-critical { color:#963626; background:#f7dfda; }
.intervention-priority-low { color:#53615d; background:#edf0ec; }
.intervention-recurrence { color:#355f83; background:#e8f0f5; }
.intervention-overdue { padding:4px 7px; border-radius:3px; color:#963626; background:#f7dfda; font-size:9px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.intervention-description { margin:12px 0; color:#42504c; white-space:pre-line; overflow-wrap:anywhere; }
.intervention-content footer { margin-top:14px; padding-top:11px; border-top:1px solid var(--line); color:var(--muted); font-size:11px; }
.intervention-actions { display:flex; gap:5px; align-self:start; }
.intervention-dialog { width:min(650px,calc(100% - 30px)); max-height:calc(100vh - 30px); overflow:auto; }
.calendar-heading { margin-bottom:28px; }
.calendar-filters { display:flex; flex-wrap:wrap; gap:10px; align-items:end; margin-bottom:28px; padding:16px 18px; border:1px solid var(--line); background:var(--card); }
.calendar-filters label { min-width:190px; margin:0; font-size:10px; letter-spacing:.06em; text-transform:uppercase; }
.calendar-filters select { margin-top:4px; text-transform:none; letter-spacing:normal; }
.calendar-toolbar { display:flex; justify-content:space-between; gap:24px; align-items:center; margin-bottom:16px; }
.calendar-month-navigation { display:flex; gap:14px; align-items:center; }
.calendar-month-navigation h2 { min-width:225px; font-size:28px; text-align:center; }
.calendar-month-navigation .eyebrow { text-align:center; }
.calendar-arrow { display:grid; place-items:center; width:42px; height:42px; padding:0; font-size:20px; }
.calendar-arrow.disabled { opacity:.4; cursor:not-allowed; }
.calendar-toolbar-summary { display:flex; gap:16px; align-items:center; color:var(--muted); font-size:11px; }
.calendar-toolbar-summary a { color:var(--green); font-weight:800; }
.calendar-toolbar-summary strong { padding:7px 9px; color:var(--ink); background:#e8ebe5; }
.intervention-calendar-shell { border:1px solid var(--line); background:var(--card); }
.calendar-weekdays,.calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }
.calendar-weekdays { border-bottom:1px solid var(--line); background:#f0f2ed; }
.calendar-weekdays span { padding:10px 12px; border-right:1px solid var(--line); color:var(--muted); font-size:9px; font-weight:850; letter-spacing:.07em; text-transform:uppercase; }
.calendar-weekdays span:last-child { border-right:0; }
.calendar-day { min-width:0; min-height:145px; padding:9px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); background:white; }
.calendar-day:nth-child(7n) { border-right:0; }
.calendar-day:nth-last-child(-n+7) { border-bottom:0; }
.calendar-day.outside-month { background:#f6f7f4; }
.calendar-day.today { box-shadow:inset 0 0 0 2px var(--green); }
.calendar-day-label { display:flex; gap:6px; align-items:center; min-height:22px; color:#66736f; font:750 11px/1 Inter,ui-sans-serif,system-ui,sans-serif; }
.calendar-day-label strong { display:none; }
.calendar-day-label em { margin-left:auto; color:var(--green); font-size:7px; font-style:normal; letter-spacing:.05em; text-transform:uppercase; }
.outside-month .calendar-day-label { color:#aab3b0; }
.calendar-events { display:grid; gap:5px; margin-top:5px; }
.calendar-event { display:block; min-width:0; padding:7px 8px; border-left:3px solid #557f9d; color:var(--ink); background:#edf3f7; }
.calendar-event:hover { color:var(--accent); transform:translateY(-1px); }
.calendar-event.target-power_source { border-left-color:#8a641f; background:#f7f0df; }
.calendar-event.priority-critical { border-left-color:#b44938; background:#fbefec; }
.calendar-event.status-completed { opacity:.72; }
.calendar-event.status-cancelled { opacity:.55; text-decoration:line-through; }
.calendar-event > span,.calendar-event > strong,.calendar-event > small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.calendar-event > span { margin-bottom:3px; color:var(--muted); font-size:7px; font-weight:850; letter-spacing:.05em; text-transform:uppercase; }
.calendar-event > span i { display:inline-block; width:5px; height:5px; margin-right:4px; border-radius:50%; background:#557f9d; }
.calendar-event.target-power_source > span i { background:#8a641f; }
.calendar-event > strong { font-size:10px; }
.calendar-event > small { margin-top:2px; color:var(--muted); font-size:8px; }
.calendar-empty { margin-top:18px; }
.calendar-legend { display:flex; flex-wrap:wrap; gap:18px; margin-top:14px; color:var(--muted); font-size:9px; font-weight:750; text-transform:uppercase; }
.calendar-legend span { display:flex; gap:6px; align-items:center; }
.calendar-legend i { width:9px; height:9px; border-radius:50%; background:#557f9d; }
.calendar-legend i.power-source { background:#8a641f; }
.calendar-legend i.critical { background:#b44938; }
.installation-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:38px; }
.installation-heading h1 { font-size:54px; }
.installation-detail-heading { align-items:center; }
.installation-detail-heading .installation-status { flex:0 0 auto; padding:8px 11px; }
.installation-metrics { grid-template-columns:repeat(5,1fr); margin-bottom:42px; }
.hub-installation-metrics { grid-template-columns:repeat(6,1fr); }
.installation-filters { display:grid; grid-template-columns:minmax(240px,2fr) repeat(2,minmax(150px,1fr)) auto; gap:12px; align-items:end; padding:20px 22px; margin-bottom:42px; border:1px solid var(--line); background:var(--card); }
.installation-filters label { margin:0; font-size:10px; letter-spacing:.07em; text-transform:uppercase; }
.installation-filters input,.installation-filters select { margin-top:4px; text-transform:none; letter-spacing:normal; }
.installation-plan-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.installation-plan-card { display:block; min-width:0; border:1px solid var(--line); border-top:4px solid #557f9d; color:var(--ink); background:var(--card); }
.installation-plan-card.status-applied { border-top-color:var(--green); }
.installation-plan-card.status-cancelled { border-top-color:#9aa6a2; opacity:.78; }
.installation-plan-card > header { display:flex; justify-content:space-between; gap:18px; align-items:start; padding:20px 22px 10px; }
.installation-plan-card h3 { margin-top:8px; font-size:22px; }
.installation-plan-card > p { min-height:37px; margin:0; padding:0 22px 14px; color:var(--muted); font-size:11px; }
.installation-plan-arrow { color:#9aa6a2; font-size:22px; transition:.15s ease; }
.installation-plan-card:hover .installation-plan-arrow { color:var(--accent); transform:translateX(3px); }
.installation-status { display:inline-block; padding:4px 7px; border-radius:3px; color:#355f83; background:#e1ebf3; font-size:9px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.installation-status.status-applied { color:#176448; background:#dff2e9; }
.installation-status.status-cancelled { color:#59635f; background:#e2e6e3; }
.installation-room-badge { display:inline-block; margin-right:6px; padding:4px 7px; border-radius:3px; color:#176448; background:#dff2e9; font-size:9px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.installation-plan-card dl { display:grid; grid-template-columns:repeat(3,1fr); margin:0; border-block:1px solid var(--line); }
.installation-plan-card dl div { min-width:0; padding:12px 14px; border-right:1px solid var(--line); }
.installation-plan-card dl div:last-child { border-right:0; }
.installation-plan-card dt { color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.installation-plan-card dd { margin:4px 0 0; font-size:10px; font-weight:750; }
.installation-plan-card footer { padding:11px 22px; color:var(--muted); font-size:9px; }
.plan-ready { color:#176448 !important; }
.plan-blocked { color:#963626 !important; }
.installation-dialog { width:min(760px,calc(100% - 30px)); max-height:calc(100vh - 30px); overflow:auto; }
.placement-advisor { margin:20px 0 12px; padding:16px; border:1px solid var(--line); border-left:4px solid #557f9d; background:#f5f8fa; }
.placement-advisor > header { display:flex; align-items:start; justify-content:space-between; gap:18px; }
.placement-advisor h3 { margin-top:4px; font-size:17px; }
.placement-advisor > header > span { color:#355f83; font-size:9px; font-weight:850; letter-spacing:.05em; text-transform:uppercase; }
.placement-advisor-state { margin:8px 0 0; color:var(--muted); font-size:10px; line-height:1.45; }
.placement-recommendation-list { display:grid; gap:9px; margin-top:13px; }
.placement-recommendation { padding:12px 13px; border:1px solid #cbd8e1; border-left:4px solid var(--green); background:#fff; }
.placement-recommendation.status-acceptable { border-left-color:#557f9d; }
.placement-recommendation.status-attention { border-left-color:#c88b2f; background:#fffaf0; }
.placement-recommendation.selected { outline:2px solid #e85d3f55; border-left-color:var(--accent); }
.placement-recommendation > header { display:flex; justify-content:space-between; gap:16px; align-items:start; }
.placement-recommendation > header strong,.placement-recommendation > header small { display:block; }
.placement-recommendation > header small { margin-top:3px; color:var(--muted); font-size:9px; }
.placement-score { flex:0 0 auto; padding:4px 6px; border-radius:3px; color:#176448; background:#dff2e9; font-size:8px; font-weight:850; letter-spacing:.04em; text-transform:uppercase; }
.status-acceptable .placement-score { color:#355f83; background:#e1ebf3; }
.status-attention .placement-score { color:#80561d; background:#f5e8c8; }
.placement-recommendation > p { margin:8px 0 0; color:var(--muted); font-size:9px; }
.placement-recommendation ul { display:grid; gap:3px; margin:8px 0 0; padding-left:17px; font-size:9px; }
.placement-reasons { color:#345f50; }
.placement-warnings { color:#8a641f; }
.placement-use { margin-top:10px; padding:7px 10px; font-size:9px; }
.placement-rejected { margin-top:12px; border-top:1px solid var(--line); padding-top:10px; }
.placement-rejected summary { cursor:pointer; color:#8a4c40; font-size:9px; font-weight:800; }
.placement-rejected article { margin-top:8px; padding:8px 10px; background:#fbefec; font-size:9px; }
.placement-rejected article ul { margin:4px 0 0; padding-left:16px; color:#963626; }
.auto-placement-dialog { width:min(980px,calc(100% - 30px)); }
.auto-placement-toolbar { display:flex; justify-content:space-between; gap:18px; align-items:center; margin-top:18px; padding:10px 12px; background:#f0f2ed; font-size:10px; }
.auto-placement-toolbar > div { display:flex; flex-wrap:wrap; gap:12px; }
.auto-placement-devices { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; max-height:260px; margin-top:9px; padding:8px; overflow:auto; border:1px solid var(--line); background:#f8faf7; }
.auto-placement-devices label { display:flex; gap:10px; align-items:center; min-width:0; margin:0; padding:10px 11px; border:1px solid #dce3df; background:#fff; cursor:pointer; text-transform:none; letter-spacing:normal; }
.auto-placement-devices label:has(input:checked) { border-color:#8bb9a8; box-shadow:inset 3px 0 var(--green); background:#f2f8f5; }
.auto-placement-devices input { flex:0 0 auto; width:auto; margin:0; }
.auto-placement-devices span { min-width:0; }
.auto-placement-devices strong,.auto-placement-devices small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.auto-placement-devices strong { font-size:10px; }
.auto-placement-devices small { margin-top:3px; color:var(--muted); font-size:8px; }
.auto-placement-preview { margin-top:18px; padding:16px; border:1px solid #cbd8e1; border-left:5px solid #557f9d; background:#f5f8fa; }
.auto-placement-preview.ready { border-color:#afd2c4; border-left-color:var(--green); background:#f2f8f5; }
.auto-placement-preview.blocked { border-color:#e0b5ad; border-left-color:#b44938; background:#fbefec; }
.auto-placement-preview > header { display:flex; justify-content:space-between; gap:20px; align-items:start; }
.auto-placement-preview h3 { margin-top:4px; font-size:18px; }
.auto-placement-preview > header > span { flex:0 0 auto; padding:5px 7px; border-radius:3px; color:#355f83; background:#e1ebf3; font-size:8px; font-weight:850; text-transform:uppercase; }
.auto-placement-metrics { display:grid; grid-template-columns:repeat(3,1fr); margin-top:14px; border:1px solid var(--line); background:#fff; }
.auto-placement-metrics article { padding:10px 12px; border-right:1px solid var(--line); }
.auto-placement-metrics article:last-child { border-right:0; }
.auto-placement-metrics span,.auto-placement-metrics strong { display:block; }
.auto-placement-metrics span { color:var(--muted); font-size:8px; text-transform:uppercase; }
.auto-placement-metrics strong { margin-top:3px; font-size:10px; }
.auto-placement-results { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-top:12px; }
.auto-placement-result { min-width:0; padding:11px 12px; border:1px solid #c9d9d2; border-left:4px solid var(--green); background:#fff; }
.auto-placement-result.status-acceptable { border-left-color:#557f9d; }
.auto-placement-result.status-attention { border-left-color:#c88b2f; background:#fffaf0; }
.auto-placement-result > header { display:flex; justify-content:space-between; gap:12px; align-items:start; }
.auto-placement-result > header strong,.auto-placement-result > header small { display:block; }
.auto-placement-result > header strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:10px; }
.auto-placement-result > header small { margin-top:3px; color:var(--muted); font-size:8px; }
.auto-placement-result > header > span { flex:0 0 auto; color:#176448; font-size:9px; font-weight:850; }
.auto-placement-result ul { margin:8px 0 0; padding-left:16px; font-size:8px; }
.auto-placement-unplaced { margin-top:12px; padding:12px; border:1px solid #e0b5ad; background:#fff; }
.auto-placement-unplaced h4 { color:#963626; font-size:11px; }
.auto-placement-unplaced > div { display:grid; gap:7px; margin-top:8px; }
.auto-placement-unplaced article { padding:9px 10px; background:#fbefec; font-size:9px; }
.auto-placement-unplaced article ul { margin:5px 0 0; padding-left:16px; color:#963626; }
@media(max-width:700px) {
  .auto-placement-toolbar,.auto-placement-preview > header { align-items:flex-start; flex-direction:column; }
  .auto-placement-devices,.auto-placement-results { grid-template-columns:1fr; }
  .auto-placement-devices { max-height:230px; }
  .auto-placement-metrics { grid-template-columns:1fr; }
  .auto-placement-metrics article { border-right:0; border-bottom:1px solid var(--line); }
  .auto-placement-metrics article:last-child { border-bottom:0; }
  .auto-placement-dialog .actions { align-items:stretch; flex-direction:column-reverse; }
  .auto-placement-dialog .actions .button { width:100%; }
}
.installation-validation { margin-bottom:34px; padding:20px 22px; border:1px solid #e8c987; border-left:5px solid #c88b2f; background:#fbf5e8; }
.installation-validation.blocked { border-color:#e0b5ad; border-left-color:#b44938; background:#fbefec; }
.installation-validation > header { display:flex; justify-content:space-between; gap:20px; align-items:start; }
.installation-validation h2 { font-size:22px; }
.installation-validation > header > strong { color:var(--muted); font-size:9px; text-transform:uppercase; }
.installation-validation ul { display:grid; gap:6px; margin:14px 0 0; padding:0; list-style:none; }
.installation-validation li { display:flex; gap:8px; align-items:start; font-size:11px; }
.installation-validation li i { flex:0 0 auto; width:7px; height:7px; margin-top:4px; border-radius:50%; background:#b44938; }
.installation-validation .warnings li i { background:#c88b2f; }
.installation-checklist-progress { margin:-17px 0 34px; padding:18px 21px; border:1px solid #c8d8e2; border-left:5px solid #557f9d; background:#f4f8fa; }
.installation-checklist-progress.complete { border-color:#bcdccc; border-left-color:var(--green); background:#edf6f1; }
.installation-checklist-progress > header { display:flex; justify-content:space-between; gap:20px; align-items:start; }
.installation-checklist-progress h2 { font-size:21px; }
.installation-checklist-progress > header > strong { font:700 22px Georgia,serif; }
.installation-checklist-progress > div { height:7px; margin-top:13px; overflow:hidden; background:#dce5e8; }
.installation-checklist-progress > div span { display:block; height:100%; background:#557f9d; transition:width .2s ease; }
.installation-checklist-progress.complete > div span { background:var(--green); }
.installation-checklist-progress > p { margin:8px 0 0; color:var(--muted); font-size:10px; }
.installation-projections { margin-bottom:38px; }
.installation-projection-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.installation-projection-grid article { padding:18px 20px; border:1px solid var(--line); border-top:4px solid var(--green); background:var(--card); }
.installation-projection-grid article.projection-warning { border-top-color:#c88b2f; }
.installation-projection-grid article.projection-critical { border-top-color:#b44938; }
.installation-projection-grid article > header { display:flex; justify-content:space-between; gap:18px; align-items:start; }
.installation-projection-grid article > header span { color:var(--muted); font-size:9px; }
.installation-projection-grid article > header > strong { font:700 24px Georgia,serif; }
.projection-bar { height:6px; margin:14px 0; overflow:hidden; border-radius:99px; background:#e7eeeb; }
.projection-bar span { display:block; height:100%; background:var(--green); }
.projection-warning .projection-bar span { background:#c88b2f; }
.projection-critical .projection-bar span { background:#b44938; }
.installation-projection-grid dl { display:grid; grid-template-columns:repeat(3,1fr); margin:0; }
.installation-projection-grid dl div { padding-right:9px; }
.installation-projection-grid dt { color:var(--muted); font-size:8px; text-transform:uppercase; }
.installation-projection-grid dd { margin:3px 0 0; font-size:10px; font-weight:750; }
.installation-items-heading { margin-top:42px; }
.installation-item-list { display:grid; gap:10px; }
.installation-item-card { display:grid; grid-template-columns:80px minmax(0,1fr) auto; gap:18px; align-items:start; padding:18px 20px; border:1px solid var(--line); border-left:4px solid #557f9d; background:var(--card); }
.installation-item-card.has-error { border-left-color:#b44938; background:#fbefec; }
.installation-item-card.released { border-left-color:#9aa6a2; opacity:.75; }
.installation-unit { padding:8px; background:#f0f2ed; text-align:center; }
.installation-unit strong,.installation-unit span { display:block; }
.installation-unit strong { font:700 18px Georgia,serif; }
.installation-unit span { margin-top:3px; color:var(--muted); font-size:8px; }
.installation-item-card > div:nth-child(2) > header { display:flex; justify-content:space-between; gap:16px; align-items:start; }
.installation-item-card h3 { margin-top:5px; font:750 16px Inter,ui-sans-serif,system-ui,sans-serif; }
.installation-item-card p { margin:7px 0 0; color:var(--muted); font-size:10px; }
.installation-item-card ul { margin:8px 0 0; padding-left:16px; color:#963626; font-size:10px; }
.installation-item-card small { display:block; margin-top:8px; color:var(--muted); }
.installation-item-checklist { margin-top:13px; padding:12px 13px; border:1px solid #d6e0e5; border-left:4px solid #557f9d; background:#f7fafb; }
.installation-item-checklist.complete { border-color:#c9e1d5; border-left-color:var(--green); background:#f2f8f5; }
.installation-item-checklist > header { display:flex; justify-content:space-between; gap:12px; align-items:center; }
.installation-item-checklist > header strong { font-size:10px; letter-spacing:.05em; text-transform:uppercase; }
.installation-item-checklist > header span { color:#45697d; font-size:9px; font-weight:800; }
.installation-checklist-fields { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-top:10px; }
.installation-checklist-fields label { display:flex; gap:7px; align-items:center; min-width:0; margin:0; padding:7px 8px; border:1px solid #dbe3e6; background:white; font-size:9px; cursor:pointer; }
.installation-checklist-fields input { flex:0 0 auto; width:auto; margin:0; accent-color:var(--green); }
.installation-checklist-note { margin:10px 0 0; font-size:9px; }
.installation-checklist-note textarea { margin-top:4px; padding:8px 9px; font-size:10px; }
.installation-checklist-actions { display:flex; justify-content:space-between; gap:15px; align-items:end; margin-top:8px; }
.installation-checklist-actions small { margin:0; font-size:8px; }
.installation-checklist-actions .button { flex:0 0 auto; padding:8px 10px; font-size:9px; }
.installation-item-checklist .form-error { min-height:0; margin:6px 0 0; font-size:9px; }
.installation-checklist-readonly { display:flex; flex-wrap:wrap; gap:6px 12px; margin-top:9px; }
.installation-checklist-readonly span { display:flex; gap:5px; align-items:center; color:#8b9692; font-size:9px; }
.installation-checklist-readonly span.checked { color:#176448; font-weight:750; }
.installation-checklist-readonly i { display:grid; place-items:center; width:12px; height:12px; border:1px solid #aab5b1; background:white; font-size:8px; font-style:normal; }
.installation-checklist-readonly .checked i { color:white; border-color:var(--green); background:var(--green); }
.installation-checklist-readonly-note { padding:7px 9px; white-space:pre-line; background:white; }
.installation-help { margin:18px 0 0; padding:12px 14px; border-left:4px solid #c88b2f; background:#fbf5e8; font-size:11px; }
.installation-help a { color:var(--green); font-weight:800; }
.installation-final-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:28px; padding-top:20px; border-top:1px solid var(--line); }
.installation-final-actions form { margin:0; }
.installation-final-actions .form-error { max-width:360px; margin:0 0 5px; text-align:right; }
.installation-closed { display:flex; gap:10px; margin-top:28px; padding:15px 18px; border-left:5px solid var(--green); background:#edf6f1; }
.installation-closed.status-cancelled { border-left-color:#9aa6a2; background:#f0f2ed; }
.installation-closed span { color:var(--muted); }
.alert-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:38px; }
.alert-heading h1 { font-size:54px; }
.alert-metrics { grid-template-columns:repeat(6,1fr); margin-bottom:42px; }
.hub-alert-metrics { grid-template-columns:repeat(7,1fr); }
.alert-metrics .metric-critical strong { color:#a13d2d; }
.alert-metrics .metric-warning strong { color:#9a691e; }
.hub-alert-rooms { display:grid; gap:28px; }
.hub-alert-room { border-top:4px solid #557f9d; }
.hub-alert-room-critical { border-top-color:#b44938; }
.hub-alert-room-warning { border-top-color:#c88b2f; }
.hub-alert-room > header { display:flex; justify-content:space-between; gap:24px; align-items:center; padding:18px 22px; border:1px solid var(--line); border-top:0; background:#f8faf7; }
.hub-alert-room > header h2 { font-size:25px; }
.hub-alert-room-summary { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:7px; align-items:center; }
.hub-alert-room-summary span { padding:4px 7px; border-radius:3px; color:#355f83; background:#e1ebf3; font-size:9px; font-weight:850; text-transform:uppercase; }
.hub-alert-room-summary .warning { color:#735018; background:#f7ebce; }
.hub-alert-room-summary .critical { color:#963626; background:#f7dfda; }
.hub-alert-room-summary a { margin-left:6px; color:var(--green); font-size:10px; font-weight:850; text-transform:uppercase; }
.hub-alert-room .alert-list { border-top:0; }
.alert-filters { display:grid; grid-template-columns:minmax(250px,2fr) repeat(3,minmax(145px,1fr)) auto; gap:12px; align-items:end; margin-bottom:38px; padding:20px 22px; border:1px solid var(--line); background:var(--card); }
.hub-alert-filters { grid-template-columns:minmax(250px,2fr) repeat(4,minmax(135px,1fr)) auto; }
.alert-filters label { margin:0; color:var(--ink); font-size:10px; letter-spacing:.07em; text-transform:uppercase; }
.alert-filters input,.alert-filters select { margin-top:4px; text-transform:none; letter-spacing:normal; }
.alert-results-head { margin-bottom:18px; }
.alert-list { display:grid; border:1px solid var(--line); background:var(--card); }
.alert-managed-card + .alert-managed-card { border-top:1px solid var(--line); }
.alert-managed-card .alert-row { border-bottom:0; }
.alert-managed-card.management-acknowledged,.alert-managed-card.management-snoozed { background:#f8faf7; }
.alert-managed-card.management-snoozed { box-shadow:inset 4px 0 #557f9d; }
.alert-managed-card.management-acknowledged { box-shadow:inset 4px 0 var(--green); }
.management-badge.management-acknowledged { color:#176448; background:#dff2e9; }
.management-badge.management-snoozed { color:#355f83; background:#e1ebf3; }
.alert-management-actions { display:flex; justify-content:space-between; gap:18px; align-items:center; padding:10px 22px; border-top:1px dashed var(--line); color:var(--muted); background:#f8faf7; font-size:10px; }
.alert-management-actions > span strong { color:var(--ink); }
.alert-management-actions > span small { display:block; margin-top:3px; color:var(--muted); }
.alert-management-actions > div { display:flex; flex-wrap:wrap; gap:7px; }
.alert-management-actions .button { padding:7px 10px; font-size:9px; }
.alert-management-actions form { display:flex; gap:8px; align-items:center; margin:0; }
.alert-management-actions .form-error { margin:0; }
.alert-management-dialog { width:min(620px,calc(100vw - 2rem)); }
.notification-heading { display:flex; justify-content:space-between; gap:30px; align-items:flex-end; margin-bottom:34px; }
.notification-heading h1 { font-size:54px; }
.notification-heading .heading-actions { display:flex; gap:9px; align-items:flex-start; }
.notification-heading .heading-actions form { margin:0; }
.notification-heading .heading-actions .form-error { max-width:260px; }
.notification-metrics { grid-template-columns:repeat(5,1fr); margin-bottom:34px; }
.notification-layout { display:grid; grid-template-columns:minmax(0,2fr) minmax(260px,.8fr); gap:28px; align-items:start; }
.notification-form { display:grid; gap:18px; }
.notification-actions { display:flex; justify-content:flex-end; }
.notification-error { margin:0; }
.notification-guide { position:sticky; top:24px; padding:26px; border:1px solid var(--line); background:var(--card); }
.notification-guide h2 { margin:5px 0 18px; }
.notification-guide ul { display:grid; gap:15px; margin:0 0 20px; padding:0; list-style:none; }
.notification-guide li { display:grid; grid-template-columns:12px minmax(0,1fr); gap:10px; }
.notification-guide li i { width:10px; height:10px; margin-top:4px; border-radius:50%; background:var(--green); }
.notification-guide li strong,.notification-guide li small { display:block; }
.notification-guide li small,.notification-guide > p:last-child { margin-top:3px; color:var(--muted); font-size:11px; line-height:1.5; }
.notification-history { margin-top:42px; }
.notification-table-wrap { overflow:auto; border:1px solid var(--line); background:var(--card); }
.notification-table { width:100%; border-collapse:collapse; }
.notification-table th,.notification-table td { padding:13px 16px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; }
.notification-table th { color:var(--muted); font-size:9px; letter-spacing:.08em; text-transform:uppercase; }
.notification-table td { font-size:11px; }
.notification-table td strong,.notification-table td small { display:block; }
.notification-table td small { margin-top:3px; color:var(--muted); }
.notification-table .notification-error-detail { max-width:620px; color:#a13d2d; }
.notification-state { display:inline-block; padding:4px 7px; border-radius:12px; font-size:9px; font-weight:800; text-transform:uppercase; }
.notification-state.sent { color:#176448; background:#dff2e9; }
.notification-state.failed { color:#963626; background:#f7dfda; }
.notification-state.pending { color:#72520e; background:#f8edca; }
.notification-state.resolved { color:var(--muted); background:#edf0ec; }
.alert-row { display:grid; grid-template-columns:12px minmax(0,1fr) minmax(160px,260px) 22px; gap:16px; align-items:center; min-width:0; padding:18px 22px; border-bottom:1px solid var(--line); }
.alert-row:last-child { border-bottom:0; }
.alert-row:hover { background:#f8faf7; }
.alert-row > i { width:10px; height:10px; border-radius:50%; background:#557f9d; }
.alert-row.alert-warning > i { background:#c88b2f; }
.alert-row.alert-critical > i { background:#b44938; }
.alert-main { display:block; min-width:0; }
.alert-main > span { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:5px; }
.alert-main b,.alert-main em { padding:3px 6px; border-radius:3px; font-size:9px; font-style:normal; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.alert-main b { color:#355f83; background:#e1ebf3; }
.alert-main em { color:#53615d; background:#e8ebe5; }
.alert-critical .alert-main em { color:#963626; background:#f7dfda; }
.alert-warning .alert-main em { color:#735018; background:#f7ebce; }
.alert-main > strong,.alert-main > small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.alert-main > small,.alert-context { color:var(--muted); font-size:11px; }
.alert-context { text-align:right; }
.alert-arrow { color:#9aa6a2; font-size:19px; transition:.15s ease; }
.alert-row:hover .alert-arrow { color:var(--accent); transform:translateX(3px); }
.alert-empty .empty-icon { display:grid; place-items:center; width:48px; height:48px; margin:0 auto 10px; border-radius:50%; color:white; background:var(--green); font-size:24px; }
.capacity-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:38px; }
.capacity-heading h1 { font-size:54px; }
.capacity-heading-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }
.capacity-metrics { grid-template-columns:repeat(6,1fr); margin-bottom:30px; }
.capacity-metrics article { padding:18px 20px; }
.capacity-metrics .metric-critical strong { color:#a13d2d; }
.capacity-metrics .metric-warning strong { color:#9a691e; }
.room-capacity-overview { margin-bottom:22px; padding:20px 22px; border:1px solid var(--line); border-left:5px solid var(--green); background:var(--card); }
.room-capacity-overview > header { display:flex; justify-content:space-between; gap:24px; align-items:center; }
.room-capacity-overview h2 { font-size:23px; }
.room-capacity-overview > header > strong { font:700 22px Georgia,serif; }
.forecast-bar { display:flex; height:8px; margin:14px 0 9px; overflow:hidden; border-radius:99px; background:#e7ebe7; }
.forecast-bar span { display:block; flex:0 0 auto; height:100%; }
.forecast-bar .installed { background:var(--green); }
.forecast-bar .reserved { background:var(--accent); }
.forecast-bar.state-warning .installed { background:#a97a30; }
.forecast-bar.state-critical .installed { background:#a33f30; }
.room-capacity-overview footer { display:flex; flex-wrap:wrap; gap:18px; color:var(--muted); font-size:9px; font-weight:750; text-transform:uppercase; }
.room-capacity-overview footer span { display:flex; gap:5px; align-items:center; }
.room-capacity-overview footer i { width:8px; height:8px; border-radius:2px; background:#e7ebe7; }
.room-capacity-overview footer .legend-installed { background:var(--green); }
.room-capacity-overview footer .legend-reserved { background:var(--accent); }
.capacity-history { margin-bottom:30px; border:1px solid var(--line); background:var(--card); }
.capacity-history > header { display:flex; justify-content:space-between; gap:24px; align-items:end; padding:20px 22px 16px; border-bottom:1px solid var(--line); }
.capacity-history > header h2 { font-size:24px; }
.capacity-history-metrics { display:grid; grid-template-columns:repeat(4,1fr); border-bottom:1px solid var(--line); }
.capacity-history-metrics article { min-width:0; padding:14px 18px; border-right:1px solid var(--line); }
.capacity-history-metrics article:last-child { border-right:0; }
.capacity-history-metrics span,.capacity-history-metrics strong,.capacity-history-metrics small { display:block; }
.capacity-history-metrics span { color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.capacity-history-metrics strong { margin-top:4px; font:700 17px Georgia,serif; }
.capacity-history-metrics small { margin-top:3px; color:var(--muted); font-size:8px; }
.capacity-history-metrics .trend-growing strong,.capacity-history-metrics .trend-saturated strong { color:#a13d2d; }
.capacity-history-metrics .trend-decreasing strong { color:#176448; }
.capacity-chart-shell { padding:20px 22px 15px; }
.capacity-chart { display:block; width:100%; height:240px; overflow:visible; background:linear-gradient(to bottom,#f8faf7,#fff); }
.capacity-chart line,.capacity-chart polyline { vector-effect:non-scaling-stroke; }
.chart-grid { stroke:#dbe2dd; stroke-width:1; }
.chart-threshold { stroke-width:1; stroke-dasharray:7 7; }
.chart-threshold.warning { stroke:#c88b2f; }
.chart-threshold.critical { stroke:#b44938; }
.chart-installed,.chart-projected { fill:none; stroke-linejoin:round; stroke-linecap:round; }
.chart-installed { stroke:#1f7a5a; stroke-width:3; }
.chart-projected { stroke:#e85d3f; stroke-width:4; }
.capacity-chart-axis { display:flex; justify-content:space-between; margin-top:6px; color:var(--muted); font-size:8px; }
.capacity-chart-shell footer { display:flex; flex-wrap:wrap; gap:16px; margin-top:12px; color:var(--muted); font-size:8px; font-weight:800; text-transform:uppercase; }
.capacity-chart-shell footer span { display:flex; gap:5px; align-items:center; }
.capacity-chart-shell footer i { width:14px; height:3px; background:#1f7a5a; }
.capacity-chart-shell footer i.projected { background:#e85d3f; }
.capacity-chart-shell footer i.warning { height:1px; background:#c88b2f; }
.capacity-chart-shell footer i.critical { height:1px; background:#b44938; }
.capacity-history-learning { display:flex; gap:13px; align-items:center; padding:24px 22px; color:#355f4e; background:#f7faf8; }
.capacity-history-learning > i { display:grid; place-items:center; flex:0 0 auto; width:34px; height:34px; border-radius:50%; color:white; background:var(--green); font-size:17px; font-style:normal; }
.capacity-history-learning strong,.capacity-history-learning small { display:block; }
.capacity-history-learning small { margin-top:2px; color:var(--muted); }
.capacity-demand { display:flex; justify-content:space-between; gap:24px; align-items:center; margin-bottom:38px; padding:18px 22px; border:1px solid #e8c987; border-left:5px solid #c88b2f; background:#fbf5e8; }
.capacity-demand h2 { font-size:22px; }
.capacity-demand h2 + p { margin:6px 0 0; color:#745b36; font-size:11px; }
.capacity-demand ul { display:flex; flex-wrap:wrap; gap:6px; margin:12px 0 0; padding:0; list-style:none; }
.capacity-demand li { display:flex; gap:7px; padding:5px 7px; border-radius:3px; color:#5f471f; background:#fff9ed; font-size:9px; }
.capacity-demand li span { color:#8a7046; }
.capacity-rack-list { display:grid; gap:16px; }
.capacity-rack-card { border:1px solid var(--line); border-top:4px solid var(--green); background:var(--card); }
.capacity-rack-card.forecast-warning { border-top-color:#c88b2f; }
.capacity-rack-card.forecast-critical { border-top-color:#b44938; }
.capacity-rack-card > header { display:flex; justify-content:space-between; gap:20px; align-items:start; padding:20px 22px 14px; }
.capacity-rack-card > header h2 { font-size:25px; }
.capacity-rack-card > header h2 a:hover { color:var(--accent); }
.capacity-state { padding:5px 8px; border-radius:3px; color:#176448; background:#dff2e9; font-size:9px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.capacity-state.state-warning { color:#735018; background:#f7ebce; }
.capacity-state.state-critical { color:#963626; background:#f7dfda; }
.capacity-rack-columns { display:grid; grid-template-columns:1fr 1fr; border-block:1px solid var(--line); }
.capacity-rack-columns > section { min-width:0; padding:18px 22px; }
.capacity-rack-columns > section + section { border-left:1px solid var(--line); }
.capacity-block-head { display:flex; justify-content:space-between; gap:16px; align-items:center; }
.capacity-block-head span,.capacity-block-head strong { display:block; }
.capacity-block-head span { color:var(--muted); font-size:9px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.capacity-block-head strong { margin-top:3px; font-size:13px; }
.capacity-block-head > b { font:700 24px Georgia,serif; }
.capacity-facts { display:grid; grid-template-columns:repeat(4,1fr); margin:14px 0 0; }
.capacity-facts div { min-width:0; }
.capacity-facts dt { color:var(--muted); font-size:8px; text-transform:uppercase; }
.capacity-facts dd { margin:3px 0 0; font-size:10px; font-weight:800; }
.capacity-facts.power-facts { grid-template-columns:repeat(3,1fr); }
.capacity-unconfigured { display:grid; min-height:105px; align-content:center; padding:12px 14px; border-left:4px solid #9aa6a2; background:#f0f2ed; }
.capacity-unconfigured strong,.capacity-unconfigured span,.capacity-unconfigured a { display:block; }
.capacity-unconfigured span { margin-top:4px; color:var(--muted); font-size:10px; }
.capacity-unconfigured a { margin-top:8px; color:var(--green); font-size:9px; font-weight:800; }
.capacity-circuits { display:grid; grid-template-columns:1fr 1fr; gap:10px; padding:12px 22px; border-bottom:1px solid var(--line); background:#f7f8f5; }
.capacity-circuits section { padding:8px 10px; border-left:3px solid var(--green); background:white; }
.capacity-circuits section.circuit-warning { border-left-color:#c88b2f; }
.capacity-circuits section.circuit-critical { border-left-color:#b44938; }
.capacity-circuits header { display:flex; justify-content:space-between; gap:12px; font-size:9px; }
.capacity-circuits header span { color:var(--muted); }
.capacity-circuits p { margin:4px 0 0; color:var(--muted); font-size:9px; }
.capacity-rack-card > footer { display:flex; justify-content:space-between; gap:20px; align-items:center; padding:12px 22px; color:var(--muted); font-size:9px; }
.capacity-rack-card > footer > span:last-child { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:5px; align-items:center; }
.capacity-rack-card > footer b { padding:3px 6px; border-radius:3px; color:#355f83; background:#e1ebf3; font-size:8px; }
.capacity-rack-card > footer time { margin-left:4px; }
.dashboard-capacity { display:flex; justify-content:space-between; gap:24px; align-items:center; margin:-34px 0 42px; padding:19px 22px; border:1px solid var(--line); border-left:5px solid var(--green); background:#edf6f1; }
.dashboard-capacity.forecast-information { border-left-color:#557f99; background:#edf4f7; }
.dashboard-capacity.forecast-warning { border-left-color:#c88b2f; background:#fbf5e8; }
.dashboard-capacity.forecast-critical { border-left-color:#b44938; background:#fbefec; }
.dashboard-capacity h2 { font-size:22px; }
.dashboard-capacity h2 + p { margin:6px 0 0; color:var(--muted); font-size:10px; }
.dashboard-capacity .dashboard-capacity-trend { margin:9px 0 0; padding-top:8px; border-top:1px solid rgba(23,100,72,.14); color:var(--muted); font-size:9px; }
.dashboard-capacity-trend b { color:var(--ink); }
.dashboard-capacity > span { flex:0 0 auto; color:var(--muted); font-size:10px; font-weight:750; }
.dashboard-capacity > span strong { margin-right:3px; color:var(--ink); font:700 24px Georgia,serif; }
.dashboard-capacity > span i { margin-left:8px; color:var(--accent); font-size:16px; font-style:normal; }
.rack-forecast-bar { display:flex; }
.rack-forecast-bar span { flex:0 0 auto; }
.rack-forecast-bar .installed { background:var(--accent); }
.rack-forecast-bar .reserved { background:#c88b2f; }
.rack-card.rack-forecast-warning:not(.rack-power-critical) { border-top:3px solid #c88b2f; }
.rack-card.rack-forecast-critical { border-top:3px solid #b44938; }
@media(max-width:900px){.capacity-metrics{grid-template-columns:repeat(3,1fr)}.capacity-metrics article:nth-child(3){border-right:0}.capacity-rack-columns{grid-template-columns:1fr}.capacity-rack-columns > section + section{border-left:0;border-top:1px solid var(--line)}}
@media(max-width:700px){.capacity-heading{display:block}.capacity-heading-actions{margin-top:22px}.capacity-demand,.dashboard-capacity{display:block}.capacity-demand .button{display:inline-block;margin-top:14px}.dashboard-capacity > span{display:block;margin-top:12px}.capacity-rack-card > footer{display:block}.capacity-rack-card > footer > span:last-child{justify-content:flex-start;margin-top:7px}.capacity-history-metrics{grid-template-columns:1fr 1fr}.capacity-history-metrics article:nth-child(2){border-right:0}.capacity-history-metrics article:nth-child(-n+2){border-bottom:1px solid var(--line)}.capacity-chart{height:190px}}
@media(max-width:520px){.capacity-heading-actions{display:grid}.capacity-metrics{grid-template-columns:1fr 1fr}.capacity-metrics article:nth-child(3){border-right:1px solid var(--line)}.capacity-metrics article:nth-child(2n){border-right:0}.room-capacity-overview > header,.capacity-rack-card > header{display:block}.room-capacity-overview > header > strong,.capacity-state{display:inline-block;margin-top:10px}.capacity-facts{grid-template-columns:1fr 1fr;gap:10px}.capacity-circuits{grid-template-columns:1fr}.capacity-block-head > b{font-size:20px}}
@media(max-width:800px){.intervention-filters{grid-template-columns:1fr 1fr}.intervention-filters label:first-child,.intervention-filters .filter-actions{grid-column:1/-1}.intervention-results-head{align-items:start}}
@media(max-width:480px){.intervention-filters{grid-template-columns:1fr}.intervention-filters label,.intervention-filters label:first-child,.intervention-filters .filter-actions{grid-column:1}.intervention-results-head{display:block}.intervention-results-head .count{display:inline-block;margin-top:8px}}
@media(max-width:700px){.calendar-filters{display:grid;grid-template-columns:1fr 1fr}.calendar-filters label{min-width:0}.calendar-toolbar{align-items:flex-end}.calendar-toolbar-summary{display:grid;gap:5px;text-align:right}.calendar-weekdays{display:none}.calendar-grid{display:block}.calendar-day{display:none;min-height:0;padding:13px 14px;border:0;border-bottom:1px solid var(--line)}.calendar-day.has-events{display:grid;grid-template-columns:120px minmax(0,1fr);gap:14px}.calendar-day.has-events:last-child{border-bottom:0}.calendar-day-label{display:block;padding-top:4px}.calendar-day-label > span{display:none}.calendar-day-label strong{display:block;font-size:11px}.calendar-day-label em{display:block;margin:5px 0 0}.calendar-events{margin:0}.calendar-event{padding:9px 10px}.calendar-event > strong{font-size:11px}.calendar-event > small{font-size:9px}}
@media(max-width:480px){.calendar-filters{grid-template-columns:1fr}.calendar-filters .filter-actions{grid-column:1}.calendar-toolbar{display:block}.calendar-month-navigation{justify-content:space-between}.calendar-month-navigation h2{min-width:0;font-size:24px}.calendar-toolbar-summary{display:flex;justify-content:space-between;margin-top:13px;text-align:left}.calendar-day.has-events{grid-template-columns:1fr}.calendar-day-label{padding:0}.calendar-events{margin-top:3px}.calendar-legend{display:grid;gap:8px}}
@media(max-width:800px){.installation-heading{display:block}.installation-heading .button,.installation-detail-heading .installation-status{display:inline-block;margin-top:22px}.installation-filters{grid-template-columns:1fr 1fr}.installation-filters label:first-child,.installation-filters .filter-actions{grid-column:1/-1}.installation-plan-grid,.installation-projection-grid{grid-template-columns:1fr}.installation-validation > header{display:block}.installation-validation > header > strong{display:block;margin-top:8px}}
@media(max-width:480px){.installation-filters{grid-template-columns:1fr}.installation-filters label,.installation-filters label:first-child,.installation-filters .filter-actions{grid-column:1}.installation-filters .filter-actions .button{flex:1}}
@media(max-width:540px){.installation-plan-card dl,.installation-projection-grid dl{grid-template-columns:1fr}.installation-plan-card dl div{border-right:0;border-bottom:1px solid var(--line)}.installation-plan-card dl div:last-child{border-bottom:0}.installation-item-card{grid-template-columns:60px minmax(0,1fr)}.installation-item-card > .icon-button{grid-column:2}.installation-item-card > div:nth-child(2) > header{display:block}.installation-item-card > div:nth-child(2) > header > a{display:inline-block;margin-top:7px}.installation-final-actions{display:grid}.installation-final-actions form,.installation-final-actions .button{width:100%}.installation-closed{display:block}.installation-closed span{display:block;margin-top:5px}}
@media(max-width:700px){.installation-checklist-fields{grid-template-columns:1fr 1fr}.installation-checklist-actions{display:block}.installation-checklist-actions .button{margin-top:9px}}
@media(max-width:430px){.installation-checklist-fields{grid-template-columns:1fr}.installation-checklist-progress > header{display:block}.installation-checklist-progress > header > strong{display:block;margin-top:7px}}
@media(max-width:540px){.placement-advisor > header,.placement-recommendation > header{display:block}.placement-advisor > header > span,.placement-score{display:inline-block;margin-top:7px}.placement-use{width:100%}}
.room-hub-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:46px; }
.room-hub-metrics { grid-template-columns:repeat(5,1fr); margin-bottom:48px; }
.room-hub-metrics .metric-warning strong { color:#9a691e; }
.room-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.room-card { border:1px solid var(--line); background:var(--card); }
.room-card.room-capacity-information { border-top:4px solid #557f99; }
.room-card.room-capacity-warning { border-top:4px solid #c88b2f; }
.room-card.room-capacity-critical { border-top:4px solid #b44938; }
.room-card-main { display:grid; grid-template-columns:48px minmax(0,1fr) auto; gap:16px; align-items:start; padding:24px; }
.room-card-main:hover h2 { color:var(--accent); }
.room-card-icon { display:grid; place-items:center; width:46px; height:46px; color:white; background:var(--green); font-size:22px; }
.room-card h2 { font-size:25px; transition:.15s; }
.room-card-main p:last-child { margin:6px 0 0; color:var(--muted); font-size:12px; }
.room-card dl { display:grid; grid-template-columns:repeat(4,1fr); margin:0; border-block:1px solid var(--line); }
.room-card dl div { padding:12px 16px; border-right:1px solid var(--line); }
.room-card dl div:last-child { border:0; }
.room-card dt { color:var(--muted); font-size:9px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.room-card dd { margin:2px 0 0; font:700 20px Georgia,serif; }
.room-card-capacity { padding:15px 16px; border-bottom:1px solid var(--line); background:#f8faf7; }
.room-card-capacity header { display:flex; justify-content:space-between; gap:16px; color:var(--muted); font-size:9px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.room-card-capacity header strong { color:var(--ink); font-size:10px; }
.room-capacity-bar { display:flex; height:6px; margin:9px 0; overflow:hidden; border-radius:6px; background:#e4e9e4; }
.room-capacity-bar span { flex:0 0 auto; }
.room-capacity-bar .installed { background:var(--green); }
.room-capacity-bar .reserved { background:var(--accent); }
.room-card-capacity p { display:flex; justify-content:space-between; gap:12px; align-items:center; margin:0; color:var(--muted); font-size:9px; }
.room-capacity-state { flex:0 0 auto; padding:3px 6px; border-radius:3px; color:#176448; background:#dff2e9; font-size:8px; text-transform:uppercase; }
.room-capacity-state.state-information { color:#355f83; background:#e1ebf3; }
.room-capacity-state.state-warning { color:#735018; background:#f7ebce; }
.room-capacity-state.state-critical { color:#963626; background:#f7dfda; }
.room-card footer { display:flex; justify-content:flex-end; gap:8px; padding:14px 16px; }
.room-card footer .button { padding:8px 11px; font-size:10px; }
.cabling-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:38px; }
.cabling-heading h1 { font-size:54px; }
.cabling-metrics { display:grid; grid-template-columns:repeat(3,1fr); margin-bottom:46px; border:1px solid var(--line); background:var(--card); }
.cabling-metrics article { padding:18px 22px; border-right:1px solid var(--line); }
.cabling-metrics article:last-child { border:0; }
.cabling-metrics span { display:block; color:var(--muted); font-size:10px; font-weight:750; letter-spacing:.08em; text-transform:uppercase; }
.cabling-metrics strong { font:700 25px Georgia,serif; }
.cabling-layout { display:grid; grid-template-columns:minmax(420px,1.05fr) minmax(380px,.95fr); gap:28px; align-items:start; }
.port-device-list,.cable-list { display:grid; gap:12px; }
.port-device-card,.cable-card { border:1px solid var(--line); background:var(--card); }
.port-device-card > header,.cable-card > header { display:flex; justify-content:space-between; gap:18px; align-items:center; padding:16px 18px; border-bottom:1px solid var(--line); }
.port-device-card header a { color:var(--green); font-size:16px; font-weight:800; }
.port-device-card header p { margin:1px 0 0; color:var(--muted); font-size:11px; }
.port-list { padding:4px 18px; }
.port-row { display:grid; grid-template-columns:9px minmax(0,1fr) 28px 28px; gap:8px; align-items:center; padding:11px 0; border-bottom:1px solid var(--line); }
.port-row.readonly { grid-template-columns:9px minmax(0,1fr); }
.port-row:last-child { border:0; }
.port-status { width:8px; height:8px; border-radius:50%; background:#b7c0bd; }
.port-status.connected { background:var(--green); box-shadow:0 0 0 3px #1f7a5a18; }
.port-identity strong,.port-identity small,.port-identity a { display:block; overflow-wrap:anywhere; }
.port-identity small { color:var(--muted); font-size:10px; }
.port-identity a { margin-top:2px; color:var(--green); font-size:10px; font-weight:700; }
.port-empty { margin:14px 0; color:var(--muted); font-size:12px; }
.cable-card > header h3 { margin:0; font-size:17px; }
.cable-card > header .eyebrow { margin-bottom:2px; }
.cable-card > header > div:last-child { display:flex; }
.label-button { display:inline-grid; place-items:center; font-size:16px; }
.cable-path { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:12px; align-items:center; padding:18px; }
.cable-path div:last-child { text-align:right; }
.cable-path strong,.cable-path span,.cable-path small { display:block; overflow-wrap:anywhere; }
.cable-path span { color:var(--green); font:750 12px ui-monospace,SFMono-Regular,Consolas,monospace; }
.cable-path small { color:var(--muted); font-size:10px; }
.cable-path i { color:var(--accent); font-style:normal; }
.cable-notes { margin:0; padding:0 18px 17px; color:var(--muted); font-size:11px; white-space:pre-line; }
.cable-dialog { width:min(620px,calc(100% - 30px)); max-height:calc(100vh - 30px); overflow:auto; }
.bulk-preview { margin:17px 0 8px; padding:11px 13px; color:#176448; background:#dff2e9; font:700 12px ui-monospace,SFMono-Regular,Consolas,monospace; overflow-wrap:anywhere; }
.form-help.inline { display:block; margin:4px 0 0; font-weight:400; }
.topology-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:38px; }
.topology-heading h1 { font-size:54px; }
.topology-metrics { display:grid; grid-template-columns:repeat(4,1fr); margin-bottom:28px; border:1px solid var(--line); background:var(--card); }
.topology-metrics article { padding:18px 22px; border-right:1px solid var(--line); }
.topology-metrics article:last-child { border:0; }
.topology-metrics span { display:block; color:var(--muted); font-size:10px; font-weight:750; letter-spacing:.08em; text-transform:uppercase; }
.topology-metrics strong { font:700 25px Georgia,serif; }
.topology-controls { display:grid; grid-template-columns:minmax(240px,420px) auto 1fr; gap:10px; align-items:end; margin-bottom:22px; }
.topology-controls label { margin:0; color:var(--muted); font-size:10px; letter-spacing:.08em; text-transform:uppercase; }
.topology-controls input { margin-top:4px; text-transform:none; letter-spacing:normal; }
.topology-controls p { justify-self:end; margin:0 0 10px; color:var(--muted); font-size:11px; }
.topology-layout { display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:22px; align-items:start; }
.topology-viewport { min-height:560px; overflow:auto; border:1px solid var(--line); background-color:#eef1ec; background-image:linear-gradient(#d8ded8 1px,transparent 1px),linear-gradient(90deg,#d8ded8 1px,transparent 1px); background-size:22px 22px; }
.topology-board { position:relative; display:grid; grid-template-columns:repeat(var(--topology-rack-count),280px); gap:72px; align-items:start; width:max-content; min-width:100%; min-height:558px; padding:42px; }
.topology-links { position:absolute; z-index:3; inset:0; width:100%; height:100%; overflow:visible; pointer-events:none; }
.topology-link-group { opacity:.72; transition:opacity .16s ease; }
.topology-link { fill:none; stroke:hsl(var(--cable-hue) 58% 42%); stroke-width:3; stroke-linecap:round; filter:drop-shadow(0 1px 0 #fff); transition:stroke-width .16s ease,opacity .16s ease; }
.topology-link-group.is-highlighted { opacity:1; }
.topology-link-group.is-highlighted .topology-link { stroke-width:6; }
.topology-link-group.is-hover-muted,.topology-link-group.is-search-muted { opacity:.07; }
.topology-rack { position:relative; z-index:2; overflow:hidden; border:2px solid #263a35; border-radius:5px; background:#f7f8f4; box-shadow:0 13px 30px #13231f17; }
.topology-rack > header { display:flex; justify-content:space-between; gap:15px; min-height:92px; padding:16px 18px; color:white; background:#13231f; }
.topology-rack > header p { margin:0; color:#8fd9bf; font-size:9px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.topology-rack > header h2 { margin:2px 0; overflow-wrap:anywhere; font:700 20px/1.15 ui-sans-serif,system-ui,sans-serif; }
.topology-rack > header span { display:block; color:#b8c6c1; font-size:10px; overflow-wrap:anywhere; }
.topology-rack > header a { color:#8fd9bf; font-size:18px; }
.topology-external-rack { border-style:dashed; border-color:#7b8b85; background:#eef1ec; }
.topology-external-rack > header { background:#344943; }
.topology-device-list { display:grid; gap:8px; padding:13px; }
.topology-device { display:block; min-width:0; padding:11px 12px; border:1px solid #b8cbc3; border-left:5px solid var(--green); border-radius:3px; background:white; box-shadow:0 4px 12px #13231f0d; transition:opacity .16s ease,transform .16s ease,border-color .16s ease; }
.topology-device:hover,.topology-device.is-highlighted { transform:translateX(3px); border-color:var(--accent); }
.topology-device.unconnected { border-left-color:#aeb7b3; opacity:.72; }
.topology-device.device-operational-maintenance { border-left-color:#b17b24; }
.topology-device.device-operational-standby { border-left-color:#557f9d; }
.topology-device.device-operational-offline { border-left-color:#b44938; }
.topology-device.device-operational-decommissioned { border-left-color:#7d8783; filter:grayscale(.75); }
.topology-device-external { border-left-color:#70857d; background:#f8faf7; cursor:not-allowed; }
.topology-device.is-hover-muted,.topology-device.is-search-muted { opacity:.16; }
.topology-device > header,.topology-device > footer { display:flex; justify-content:space-between; gap:12px; align-items:center; }
.topology-device > header strong { min-width:0; overflow-wrap:anywhere; font-size:13px; }
.topology-device > header span { flex:0 0 auto; color:var(--green); font:750 10px ui-monospace,SFMono-Regular,Consolas,monospace; }
.topology-device p { margin:2px 0 7px; color:var(--muted); font-size:9px; overflow-wrap:anywhere; }
.topology-device > footer { padding-top:6px; border-top:1px solid #edf0ec; color:var(--muted); font-size:9px; }
.topology-device > footer small { font-size:inherit; }
.topology-rack-empty { margin:8px; color:var(--muted); font-size:11px; text-align:center; }
.topology-cable-panel { position:sticky; top:20px; }
.topology-cable-list { display:grid; gap:8px; max-height:650px; overflow:auto; padding-right:2px; }
.topology-cable-item { display:grid; grid-template-columns:6px minmax(0,1fr) auto; gap:11px; align-items:start; padding:13px; border:1px solid var(--line); background:white; transition:opacity .16s ease,border-color .16s ease,transform .16s ease; }
.topology-cable-item > i { width:6px; height:100%; min-height:48px; border-radius:5px; background:hsl(var(--cable-hue) 58% 42%); }
.topology-cable-item strong,.topology-cable-item span,.topology-cable-item small { display:block; overflow-wrap:anywhere; }
.topology-cable-item strong { font-size:12px; }
.topology-cable-item span { color:var(--green); font-size:9px; font-weight:750; }
.topology-cable-item small { margin-top:5px; color:var(--muted); font-size:8px; line-height:1.35; }
.topology-cable-item b { padding:3px 5px; color:#735018; background:#f7ebce; font-size:7px; letter-spacing:.05em; text-transform:uppercase; }
.topology-cable-item:hover,.topology-cable-item.is-highlighted { transform:translateX(-3px); border-color:hsl(var(--cable-hue) 58% 42%); }
.topology-cable-item.is-hover-muted,.topology-cable-item.is-search-muted { opacity:.18; }
.print-page { background:#e9ece7; }
.print-toolbar { display:flex; justify-content:space-between; align-items:center; gap:25px; padding:18px max(24px,calc((100vw - 1180px)/2)); background:#13231f; color:white; }
.print-toolbar > div { display:flex; gap:24px; align-items:center; }
.print-toolbar .back { margin:0; color:#d7dfdc; }
.print-main { width:min(1180px,calc(100% - 40px)); padding:35px 0 70px; overflow-x:auto; }
.installation-work-order { overflow:visible; }
.work-order-header { display:flex; justify-content:space-between; gap:28px; align-items:start; padding:28px 30px; border-top:7px solid var(--accent); background:white; }
.work-order-header h1 { max-width:760px; font-size:42px; }
.work-order-header > div:first-child > p:last-child { margin:10px 0 0; color:var(--muted); font-weight:700; }
.work-order-status { flex:0 0 190px; padding:14px 16px; border-left:4px solid #557f9d; background:#edf3f6; }
.work-order-status.status-applied { border-color:var(--green); background:#edf6f1; }
.work-order-status.status-cancelled { border-color:#8b9692; background:#f0f2ed; }
.work-order-status span,.work-order-status strong,.work-order-status small { display:block; }
.work-order-status span { color:var(--muted); font-size:8px; font-weight:850; letter-spacing:.08em; text-transform:uppercase; }
.work-order-status strong { margin-top:3px; font-size:15px; }
.work-order-status small { margin-top:4px; color:var(--muted); font-size:9px; line-height:1.35; }
.work-order-meta { display:grid; grid-template-columns:repeat(4,1fr); margin:0; border:1px solid var(--line); background:white; }
.work-order-meta div { padding:11px 14px; border-right:1px solid var(--line); }
.work-order-meta div:last-child { border-right:0; }
.work-order-meta dt,.work-order-device dt { color:var(--muted); font-size:8px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.work-order-meta dd { margin:3px 0 0; font-size:10px; font-weight:750; overflow-wrap:anywhere; }
.work-order-notes { padding:14px 18px; border:1px solid #e8c987; border-top:0; background:#fbf5e8; }
.work-order-notes strong { color:#80561d; font-size:9px; letter-spacing:.06em; text-transform:uppercase; }
.work-order-notes p { margin:4px 0 0; white-space:pre-line; font-size:11px; }
.work-order-summary { display:grid; grid-template-columns:repeat(4,1fr); margin:20px 0; border:1px solid var(--line); background:white; }
.work-order-summary article { padding:13px 16px; border-right:1px solid var(--line); }
.work-order-summary article:last-child { border-right:0; }
.work-order-summary span,.work-order-summary strong,.work-order-summary small { display:block; }
.work-order-summary span { color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.work-order-summary strong { margin-top:3px; font:700 20px Georgia,serif; }
.work-order-summary small { color:#8a641f; font-size:8px; }
.work-order-alerts { margin:20px 0; padding:17px 19px; border:1px solid var(--line); background:white; }
.work-order-alerts h2 { margin-bottom:10px; font-size:18px; }
.work-order-alerts > div { padding:9px 11px; border-left:4px solid #c88b2f; background:#fbf5e8; }
.work-order-alerts > div + div { margin-top:7px; }
.work-order-alerts > div.critical { border-color:#b44938; background:#fbefec; }
.work-order-alerts strong { font-size:9px; letter-spacing:.06em; text-transform:uppercase; }
.work-order-alerts ul,.work-order-rack-issues,.work-order-device-issues { margin:5px 0 0; padding-left:17px; font-size:9px; }
.work-order-rack { margin:25px 0 0; break-before:auto; }
.work-order-rack > header { display:flex; justify-content:space-between; gap:20px; align-items:end; padding:13px 16px; color:white; background:#13231f; }
.work-order-rack > header h2 { font-size:23px; }
.work-order-rack > header .eyebrow { margin-bottom:3px; color:#ff9b7e; font-size:8px; }
.work-order-rack > header span { color:#c7d1ce; font-size:9px; }
.work-order-rack > header > strong { font-size:10px; }
.work-order-rack-issues { margin:0; padding:10px 15px 10px 30px; color:#963626; border:1px solid #e0b5ad; border-top:0; background:#fbefec; }
.work-order-device-list { display:grid; gap:8px; margin-top:8px; }
.work-order-device { padding:12px 14px; border:1px solid var(--line); border-left:4px solid #557f9d; background:white; break-inside:avoid; page-break-inside:avoid; }
.work-order-device.has-issues { border-left-color:#b44938; }
.work-order-device.released { border-left-color:#8b9692; }
.work-order-device > header { display:grid; grid-template-columns:28px minmax(0,1fr) auto; gap:10px; align-items:center; }
.work-order-sequence { display:grid; place-items:center; width:28px; height:28px; color:white; background:var(--accent); font:800 12px Georgia,serif; }
.work-order-device > header > div:nth-child(2) > span { color:var(--green); font-size:9px; font-weight:850; }
.work-order-device h3 { margin:0; font:800 15px Inter,ui-sans-serif,system-ui,sans-serif; }
.work-order-device dl { display:grid; grid-template-columns:repeat(4,1fr); margin:9px 0 0; border:1px solid var(--line); }
.work-order-device dl div { min-width:0; padding:7px 8px; border-right:1px solid var(--line); }
.work-order-device dl div:last-child { border-right:0; }
.work-order-device dd { margin:2px 0 0; overflow-wrap:anywhere; font-size:8px; font-weight:700; }
.work-order-device-notes { margin:7px 0 0; color:var(--muted); white-space:pre-line; font-size:8px; }
.work-order-device-issues { color:#963626; }
.work-order-checks,.work-order-final-checks { display:flex; flex-wrap:wrap; gap:7px 14px; margin-top:9px; color:#475550; font-size:8px; }
.work-order-checks span,.work-order-final-checks span { display:flex; gap:5px; align-items:center; }
.work-order-checks i,.work-order-final-checks i { display:inline-block; flex:0 0 auto; width:10px; height:10px; border:1px solid #7d8985; background:white; }
.work-order-checks span.checked { color:#176448; font-weight:800; }
.work-order-checks span.checked i { display:grid; place-items:center; color:white; border-color:var(--green); background:var(--green); font-size:7px; font-style:normal; }
.work-order-checklist-note { margin:7px 0 0; padding:6px 8px; color:#475550; white-space:pre-line; background:#f3f5f1; font-size:8px; }
.work-order-empty { padding:35px; text-align:center; background:white; }
.work-order-empty p { color:var(--muted); }
.work-order-signoff { margin-top:25px; padding:18px 20px; border:2px solid #13231f; background:white; break-inside:avoid; page-break-inside:avoid; }
.work-order-signoff h2 { font-size:21px; }
.work-order-final-checks { justify-content:space-between; margin-top:12px; }
.work-order-comment { margin-top:16px; font-size:9px; }
.work-order-comment > div { height:18px; border-bottom:1px dotted #98a39f; }
.work-order-signatures { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:18px; }
.work-order-signatures > div { min-height:72px; padding:9px 10px; border:1px solid var(--line); }
.work-order-signatures span,.work-order-signatures strong { display:block; }
.work-order-signatures span { margin-bottom:8px; color:var(--muted); font-size:8px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.work-order-signatures strong { margin-top:8px; font-size:8px; font-weight:600; }
.work-order-footer { margin-top:12px; color:var(--muted); font-size:8px; text-align:center; }
.label-settings { display:grid; grid-template-columns:2fr repeat(7,1fr) auto; gap:9px; align-items:end; min-width:1080px; margin-bottom:30px; padding:16px 18px; border:1px solid var(--line); background:white; }
.label-settings label { margin:0; font-size:9px; letter-spacing:.05em; text-transform:uppercase; }
.label-settings input,.label-settings select { margin-top:3px; padding:8px; font-size:11px; text-transform:none; }
.label-settings .button { padding:9px 12px; }
.label-settings > p { grid-column:1/-1; margin:2px 0 0; color:var(--muted); font-size:10px; }
.inventory-label-settings { grid-template-columns:1.3fr 2fr repeat(7,1fr) auto; min-width:1190px; }
.label-grid { display:grid; grid-template-columns:repeat(var(--label-columns),var(--label-width)); gap:var(--label-gap); align-items:start; justify-content:start; }
.cable-label { position:relative; display:flex; flex-direction:column; width:var(--label-width); height:var(--label-height); overflow:hidden; border:.25mm solid #9ba7a2; background:white; break-inside:avoid; }
.label-print-zone { display:flex; flex:0 0 var(--print-height); flex-direction:column; min-height:0; overflow:hidden; background:white; }
.label-content { flex:0 0 auto; width:100%; min-width:0; line-height:1.15; overflow-wrap:anywhere; }
.inventory-label-content { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.65em; align-items:center; min-height:100%; padding:.65em .75em; font-size:16px; }
.inventory-label-copy { grid-column:1; grid-row:1; min-width:0; }
.inventory-label-copy header { margin-bottom:.45em; padding-bottom:.35em; border-bottom:.08em solid #d9dfdb; }
.inventory-label-copy header span,.inventory-label-copy header strong,.inventory-label-copy section b,.inventory-label-copy section span,.inventory-label-copy section small { display:block; }
.inventory-label-copy header span { color:var(--accent); font-size:.52em; font-weight:850; letter-spacing:.09em; text-transform:uppercase; }
.inventory-label-copy header strong { margin-top:.08em; font:800 1.2em Georgia,serif; }
.inventory-label-copy section b { color:var(--green); font-size:.69em; }
.inventory-label-copy section span { margin-top:.12em; font-size:.61em; }
.inventory-label-copy section small { margin-top:.08em; color:var(--muted); font-size:.53em; }
.inventory-label-qr { grid-column:2; grid-row:1; width:min(19mm,calc(var(--print-height) - 4mm),calc(var(--label-width) * .38)); height:auto; max-height:calc(var(--print-height) - 3mm); object-fit:contain; }
.compact-inventory-label { gap:.35em; padding:.3em .38em; font-size:12px; }
.compact-inventory-label .inventory-label-copy header { margin-bottom:.18em; padding-bottom:.12em; }
.compact-inventory-label .inventory-label-copy header strong { font-family:inherit; font-size:1em; }
.compact-inventory-label .inventory-label-copy section b { font-size:.65em; }
.compact-inventory-label .inventory-label-copy section span { font-size:.55em; }
.compact-inventory-label .inventory-label-copy section small { font-size:.48em; }
.rich-label-content { font-size:16px; }
.network-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:34px; }
.network-heading h1 { font-size:54px; }
.network-heading .lede { max-width:760px; }
.network-filters { display:grid; grid-template-columns:minmax(260px,1fr) 240px auto; gap:12px; align-items:end; margin-bottom:24px; padding:15px 17px; border:1px solid var(--line); background:var(--card); }
.network-filters label { margin:0; }
.network-metrics { display:grid; grid-template-columns:repeat(5,1fr); margin-bottom:28px; border:1px solid var(--line); background:var(--line); gap:1px; }
.network-metrics article { min-width:0; padding:17px 19px; background:var(--card); }
.network-metrics span,.network-metrics strong,.network-metrics small { display:block; }
.network-metrics span { color:var(--muted); font-size:8px; font-weight:850; letter-spacing:.08em; text-transform:uppercase; }
.network-metrics strong { margin:4px 0; font:700 25px Georgia,serif; }
.network-metrics small { color:var(--muted); font-size:9px; }
.network-metrics .metric-alert { color:#a13d2d; background:#fbefec; }
.network-warning { display:grid; grid-template-columns:minmax(230px,.45fr) 1fr; gap:28px; margin-bottom:28px; padding:20px 22px; border:1px solid #dfb4ac; border-left:5px solid #b44938; background:#fbefec; }
.network-warning h2 { font-size:22px; }
.network-warning ul { display:grid; gap:7px; margin:0; padding:0; list-style:none; }
.network-warning li { display:grid; grid-template-columns:150px minmax(0,1fr); gap:12px; padding:8px 10px; background:#fff8f6; font-size:11px; }
.network-warning li strong { font-family:ui-monospace,SFMono-Regular,Consolas,monospace; }
.network-warning li span { color:var(--muted); }
.network-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; align-items:start; }
.network-card { min-width:0; border:1px solid var(--line); border-top:5px solid var(--green); background:var(--card); }
.network-card.network-state-warning { border-top-color:#c88b2f; }
.network-card.network-state-critical { border-top-color:#b44938; }
.network-card > header { display:flex; justify-content:space-between; gap:18px; padding:21px 22px 14px; }
.network-card h2 { margin:0 0 5px; font-size:24px; }
.network-card > header code { color:var(--green); font:800 13px ui-monospace,SFMono-Regular,Consolas,monospace; }
.network-version { flex:0 0 auto; height:max-content; padding:5px 7px; color:#155b78; background:#dceff7; font-size:9px; font-weight:850; }
.network-capacity-head { display:flex; justify-content:space-between; gap:15px; padding:0 22px 6px; color:var(--muted); font-size:9px; }
.network-capacity { height:6px; margin:0 22px 16px; overflow:hidden; background:#e2e6e2; }
.network-capacity span { display:block; height:100%; background:var(--green); }
.network-state-warning .network-capacity span { background:#c88b2f; }
.network-state-critical .network-capacity span { background:#b44938; }
.network-facts { display:grid; grid-template-columns:repeat(2,1fr); gap:1px; margin:0; background:var(--line); }
.network-facts div { min-width:0; padding:10px 13px; background:#f7f8f5; }
.network-facts dt { color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.network-facts dd { margin:3px 0 0; font:700 10px ui-monospace,SFMono-Regular,Consolas,monospace; overflow-wrap:anywhere; }
.network-notes { margin:0; padding:13px 22px; color:var(--muted); background:#f7f8f5; font-size:11px; white-space:pre-line; }
.network-addresses { padding:17px 22px; border-top:1px solid var(--line); }
.network-addresses > header { display:flex; justify-content:space-between; gap:15px; margin-bottom:8px; font-size:10px; letter-spacing:.06em; text-transform:uppercase; }
.network-addresses > header span { color:var(--muted); }
.network-address-row,.network-reservation-row { position:relative; display:grid; grid-template-columns:minmax(105px,.36fr) minmax(0,1fr) auto; gap:10px; align-items:center; min-width:0; padding:8px 0; border-top:1px solid #e8ebe7; }
.network-address-row code,.network-reservation-row code { font:700 9px ui-monospace,SFMono-Regular,Consolas,monospace; overflow-wrap:anywhere; }
.network-address-row strong,.network-address-row small,.network-reservation-row strong,.network-reservation-row small { display:block; overflow-wrap:anywhere; }
.network-address-row strong,.network-reservation-row strong { font-size:11px; }
.network-address-row small,.network-reservation-row small { color:var(--muted); font-size:8px; }
.network-address-row > a { font-size:9px; }
.network-empty-row { margin:0; padding:9px 0 2px; color:var(--muted); font-size:10px; }
.network-reservation-row { grid-template-columns:minmax(105px,.36fr) minmax(0,1fr) auto auto; }
.network-reservation-row > details { position:relative; }
.network-reservation-row > details > summary { color:var(--accent); cursor:pointer; list-style:none; }
.network-reservation-row > details > form { position:absolute; z-index:5; right:0; top:25px; width:300px; padding:16px; border:1px solid var(--line); background:white; box-shadow:0 12px 35px #10201c30; }
.network-reservation-row form label { margin:8px 0; font-size:10px; }
.network-reservation-row form input,.network-reservation-row form textarea { padding:7px 8px; }
.network-range-row { position:relative; display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; gap:10px; align-items:center; min-width:0; padding:9px 0; border-top:1px solid #e8ebe7; }
.network-range-row > div > strong,.network-range-row > div > code,.network-range-row > div > small { display:block; overflow-wrap:anywhere; }
.network-range-row > div > strong { font-size:11px; }
.network-range-row > div > code { margin-top:2px; font:700 9px ui-monospace,SFMono-Regular,Consolas,monospace; }
.network-range-row > div > small { margin-top:2px; color:var(--muted); font-size:8px; }
.network-range-kind { min-width:54px; padding:4px 6px; color:#176448; background:#dcefe6; font-size:8px; font-weight:850; text-align:center; text-transform:uppercase; }
.network-range-dhcp .network-range-kind { color:#155b78; background:#dceff7; }
.network-range-excluded .network-range-kind { color:#9f3d2f; background:#f7dfda; }
.network-range-row > details { position:relative; }
.network-range-row > details > summary { color:var(--accent); cursor:pointer; list-style:none; }
.network-range-row > details > form { position:absolute; z-index:5; right:0; top:25px; width:330px; padding:16px; border:1px solid var(--line); background:white; box-shadow:0 12px 35px #10201c30; }
.network-range-row form label { margin:8px 0; font-size:10px; }
.network-suggest-row { display:flex; gap:9px; align-items:center; margin:7px 0; }
.network-suggest-row small { color:var(--muted); font-size:9px; }
.network-add-reservation { margin-top:10px; padding-top:10px; border-top:1px solid var(--line); }
.network-add-reservation > summary { color:var(--accent); font-size:10px; font-weight:800; cursor:pointer; }
.network-add-reservation form { margin-top:10px; padding:13px; background:#f4f6f2; }
.network-add-reservation form label { margin:5px 0; font-size:10px; }
.network-card > footer { display:flex; justify-content:flex-end; gap:8px; padding:14px 22px; border-top:1px solid var(--line); background:#fafbf8; }
.network-edit > summary { list-style:none; cursor:pointer; }
.network-edit[open] { width:100%; }
.network-edit[open] > summary { margin-bottom:12px; }
.network-edit form { padding:15px; background:white; border:1px solid var(--line); }
.network-edit form label { margin:8px 0; font-size:10px; }
.network-unmanaged { margin-top:30px; border:1px solid var(--line); background:var(--card); }
.network-unmanaged > header { display:flex; justify-content:space-between; gap:20px; align-items:center; padding:18px 21px; border-bottom:1px solid var(--line); }
.network-unmanaged h2 { font-size:22px; }
.network-unmanaged > header > span { display:grid; place-items:center; width:34px; height:34px; color:#9a691e; background:#f7ebce; font-weight:850; }
.network-unmanaged > div { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); }
.network-unmanaged article { display:flex; flex-direction:column; min-width:0; padding:14px 16px; background:white; }
.network-unmanaged code { color:#9a691e; font-size:10px; }
.network-unmanaged strong { margin-top:5px; font-size:12px; }
.network-unmanaged small { color:var(--muted); font-size:9px; }
.network-unmanaged a { margin-top:8px; font-size:9px; }
.network-dialog { width:min(660px,calc(100% - 30px)); }
.discovery-heading { align-items:flex-start; }
.discovery-safety { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px; margin-bottom:24px; border:1px solid var(--line); background:var(--line); }
.discovery-safety article { min-width:0; padding:15px 17px; background:#f6f8f4; }
.discovery-safety strong,.discovery-safety span { display:block; }
.discovery-safety strong { color:var(--green); font-size:10px; letter-spacing:.04em; text-transform:uppercase; }
.discovery-safety span { margin-top:5px; color:var(--muted); font-size:9px; line-height:1.55; }
.ping-schedules-card { margin-bottom:24px; border:1px solid var(--line); background:var(--card); }
.ping-schedules-card > header { padding:17px 19px; border-bottom:1px solid var(--line); }
.ping-schedules-card > header h2 { font-size:19px; }
.ping-schedules-card > header p:last-child { margin-top:5px; color:var(--muted); font-size:9px; }
.ping-schedule-list { display:grid; }
.ping-schedule-row { display:grid; grid-template-columns:minmax(150px,1.1fr) minmax(100px,.7fr) minmax(170px,1.3fr) minmax(105px,.75fr) minmax(80px,.55fr) minmax(145px,1fr) auto; align-items:end; gap:12px; padding:15px 18px; border-bottom:1px solid var(--line); }
.ping-schedule-row:last-child { border-bottom:0; }
.ping-schedule-row label { margin:0; font-size:8px; }
.ping-schedule-row input,.ping-schedule-row select { min-width:0; }
.ping-schedule-identity strong,.ping-schedule-identity code,.ping-schedule-identity small,.ping-schedule-state strong,.ping-schedule-state span,.ping-schedule-state small { display:block; }
.ping-schedule-identity code { margin-top:4px; color:var(--green); }
.ping-schedule-identity small,.ping-schedule-state small { margin-top:3px; color:var(--muted); font-size:7px; }
.ping-schedule-state strong { color:var(--muted); font-size:7px; letter-spacing:.05em; text-transform:uppercase; }
.ping-schedule-state span { margin-top:4px; font-size:9px; font-weight:750; }
.ping-schedule-state.failed strong,.ping-schedule-state.failed span { color:var(--danger); }
.ping-network-identity strong,.ping-network-identity code,.ping-network-identity small,.ping-network-identity span { display:block; }
.ping-network-identity code,.ping-network-identity small { margin-top:3px; }
.ping-network-identity span,.ping-network-identity small { color:var(--muted); font-size:8px; }
.ping-schedule-action .form-error { max-width:150px; margin-top:4px; font-size:7px; }
.discovery-room-filter { grid-template-columns:minmax(240px,1fr) auto; }
.discovery-layout { display:grid; grid-template-columns:270px minmax(0,1fr); gap:22px; align-items:start; }
.discovery-history { position:sticky; top:88px; border:1px solid var(--line); background:var(--card); }
.discovery-history > header { padding:17px 18px; border-bottom:1px solid var(--line); }
.discovery-history h2 { font-size:23px; }
.discovery-history > div { display:grid; max-height:calc(100vh - 210px); overflow:auto; }
.discovery-history-card { display:flex; flex-direction:column; min-width:0; padding:13px 15px; border-left:4px solid transparent; border-bottom:1px solid var(--line); color:inherit; text-decoration:none; }
.discovery-history-card:hover,.discovery-history-card.selected { background:#f3f6f1; }
.discovery-history-card.selected { border-left-color:var(--accent); }
.discovery-history-card > span { color:var(--green); font-size:8px; font-weight:850; letter-spacing:.07em; text-transform:uppercase; }
.discovery-history-card.discovery-status-partial > span { color:#9a691e; }
.discovery-history-card.discovery-status-failed > span { color:#a13d2d; }
.discovery-history-card > strong { margin-top:4px; font-size:12px; overflow-wrap:anywhere; }
.discovery-history-card > small { margin-top:3px; color:var(--muted); font-size:8px; }
.discovery-history-card > b { margin-top:7px; font-size:8px; font-weight:750; }
.discovery-report { min-width:0; }
.discovery-report-head { display:flex; justify-content:space-between; gap:22px; align-items:flex-start; margin-bottom:18px; padding:21px 23px; border:1px solid var(--line); background:var(--card); }
.discovery-report-head h2 { font-size:30px; }
.discovery-report-head p:not(.eyebrow) { margin-top:6px; color:var(--muted); font-size:10px; }
.discovery-report-head > div:last-child { display:flex; flex-direction:column; gap:10px; align-items:flex-end; }
.discovery-status { display:inline-flex; padding:5px 8px; color:#176448; background:#dff2e9; font-size:8px; font-weight:850; letter-spacing:.08em; text-transform:uppercase; }
.discovery-status-partial.discovery-status { color:#795319; background:#f5e6c1; }
.discovery-status-failed.discovery-status { color:#963626; background:#f7dfda; }
.discovery-metrics { margin-bottom:18px; }
.discovery-targets { display:grid; gap:18px; }
.discovery-target { min-width:0; border:1px solid var(--line); border-top:5px solid var(--green); background:var(--card); }
.discovery-target.target-status-unreachable,.discovery-target.target-status-error { border-top-color:#b44938; }
.discovery-target > header { display:flex; justify-content:space-between; gap:20px; align-items:flex-start; padding:19px 21px; }
.discovery-target > header span { color:var(--green); font-size:8px; font-weight:850; letter-spacing:.07em; text-transform:uppercase; }
.discovery-target.target-status-unreachable > header span,.discovery-target.target-status-error > header span { color:#a13d2d; }
.discovery-target h3 { margin:4px 0 3px; font-size:23px; }
.discovery-target code { color:var(--muted); font:700 10px ui-monospace,SFMono-Regular,Consolas,monospace; }
.discovery-identity { min-width:145px; padding:9px 11px; background:#edf5f1; text-align:right; }
.discovery-identity small,.discovery-identity strong,.discovery-identity span { display:block; }
.discovery-identity small { color:var(--muted); font-size:7px; font-weight:800; text-transform:uppercase; }
.discovery-identity strong { margin-top:3px; color:#176448; font-size:10px; }
.discovery-identity span { margin-top:2px; font-size:8px; overflow-wrap:anywhere; }
.discovery-identity.identity-mismatch { background:#fbefec; }
.discovery-identity.identity-mismatch strong { color:#a13d2d; }
.discovery-identity.identity-unknown { background:#f2f3ef; }
.discovery-identity.identity-unknown strong { color:#6b756f; }
.discovery-error { margin:0; padding:15px 21px; border-top:1px solid #e7c4bd; color:#963626; background:#fbefec; font-size:10px; }
.discovery-system-facts { display:grid; grid-template-columns:.8fr .8fr 2fr; gap:1px; margin:0; background:var(--line); }
.discovery-system-facts div { min-width:0; padding:11px 13px; background:#f7f8f5; }
.discovery-system-facts dt { color:var(--muted); font-size:7px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.discovery-system-facts dd { margin:4px 0 0; font-size:9px; overflow-wrap:anywhere; }
.discovery-result-block { border-top:1px solid var(--line); }
.discovery-result-block > summary { display:flex; justify-content:space-between; gap:12px; padding:13px 21px; font-size:10px; font-weight:850; cursor:pointer; list-style:none; text-transform:uppercase; }
.discovery-result-block > summary::-webkit-details-marker { display:none; }
.discovery-result-block > summary span { color:var(--muted); }
.discovery-result-block .responsive-table { border-top:1px solid var(--line); overflow-x:auto; }
.discovery-result-block table { width:100%; min-width:650px; border-collapse:collapse; }
.discovery-result-block th { padding:8px 11px; color:var(--muted); background:#f2f4f0; font-size:7px; letter-spacing:.05em; text-align:left; text-transform:uppercase; }
.discovery-result-block td { padding:9px 11px; border-top:1px solid #e8ebe7; font-size:9px; vertical-align:top; }
.discovery-result-block td strong,.discovery-result-block td small { display:block; }
.discovery-result-block td small { margin-top:2px; color:var(--muted); font-size:7px; }
.match-state,.interface-state { display:inline-flex; padding:3px 6px; color:#176448; background:#dff2e9; font-size:7px; font-weight:800; text-transform:uppercase; }
.match-state.match-missing,.match-state.match-name_conflict,.match-state.match-missing_cable,.match-state.match-unknown_port,.interface-state.interface-down { color:#795319; background:#f5e6c1; }
.match-state.match-cable_conflict,.match-state.match-unknown_device,.match-state.match-unknown_local_port { color:#963626; background:#f7dfda; }
.interface-state.interface-testing,.interface-state.interface-unknown { color:#56635d; background:#e7eae6; }
.discovery-empty-result { margin:0; padding:12px 21px; border-top:1px solid var(--line); color:var(--muted); font-size:9px; }
.discovery-dialog { width:min(720px,calc(100% - 30px)); }
.discovery-target-picker { max-height:310px; margin:15px 0 0; padding:0; overflow:auto; border:1px solid var(--line); }
.discovery-target-picker legend { display:flex; justify-content:space-between; width:100%; padding:10px 12px; color:var(--muted); background:#f2f4f0; font-size:9px; font-weight:850; letter-spacing:.05em; text-transform:uppercase; }
.discovery-target-picker label { display:grid; grid-template-columns:18px minmax(0,1fr); gap:10px; align-items:center; margin:0; padding:10px 12px; border-top:1px solid var(--line); cursor:pointer; }
.discovery-target-picker label:hover { background:#f7f8f5; }
.discovery-target-picker input { width:auto; margin:0; }
.discovery-target-picker span strong,.discovery-target-picker span small { display:block; }
.discovery-target-picker span strong { font-size:10px; }
.discovery-target-picker span small { margin-top:2px; color:var(--muted); font-size:8px; }
.discovery-secret-note { margin:11px 0 0; padding:10px 12px; color:#176448; background:#edf5f1; font-size:9px; }
.discovery-running { display:flex; gap:12px; align-items:center; margin:11px 0 0; padding:12px; border:1px solid #b8dacb; color:#176448; background:#edf7f2; }
.discovery-running[hidden] { display:none; }
.discovery-running strong,.discovery-running small { display:block; }
.discovery-running strong { font-size:10px; }
.discovery-running small { margin-top:3px; color:#53665e; font-size:8px; line-height:1.45; }
.discovery-spinner { width:20px; height:20px; flex:0 0 20px; border:3px solid #b8dacb; border-top-color:var(--green); border-radius:50%; animation:discovery-spin .8s linear infinite; }
@keyframes discovery-spin { to { transform:rotate(360deg); } }
.ping-results-card { border:1px solid var(--line); background:var(--card); }
.ping-results-card > header { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:18px 21px; border-bottom:1px solid var(--line); }
.ping-results-card > header h2 { font-size:22px; }
.ping-results-card table { width:100%; min-width:680px; border-collapse:collapse; }
.ping-results-card th { padding:9px 12px; color:var(--muted); background:#f2f4f0; font-size:7px; letter-spacing:.06em; text-align:left; text-transform:uppercase; }
.ping-results-card td { padding:11px 12px; border-top:1px solid #e8ebe7; font-size:9px; vertical-align:middle; }
.ping-results-card td code { color:var(--ink); font-size:10px; font-weight:800; }
.ping-results-card td strong,.ping-results-card td small { display:block; }
.ping-results-card td small { margin-top:2px; color:var(--muted); font-size:7px; }
.ping-live-note { margin:0; padding:9px 12px; color:var(--muted); background:#f8faf7; border-bottom:1px solid var(--line); font-size:8px; }
.ping-host-actions { display:flex; flex-wrap:wrap; gap:6px; }
.ping-host-actions .button { min-height:30px; padding:6px 9px; font-size:8px; white-space:nowrap; }
.ping-resolved-label { color:var(--muted); font-size:8px; font-weight:750; }
.ping-reservation-dialog { width:min(580px,calc(100% - 30px)); }
.ping-comparison-card,.ping-missing-card { margin:14px 0; border:1px solid var(--line); background:var(--card); }
.ping-comparison-card.has-changes { border-left:4px solid var(--orange); }
.ping-comparison-card > header,.ping-missing-card > header { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:15px 18px; }
.ping-comparison-card > header h2,.ping-missing-card > header h2 { font-size:18px; }
.ping-comparison-card > header p,.ping-missing-card > header p { margin-top:4px; color:var(--muted); font-size:8px; }
.ping-comparison-card > header a { color:var(--green); font-size:8px; font-weight:800; }
.ping-comparison-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-top:1px solid var(--line); }
.ping-comparison-metrics article { padding:13px 16px; border-right:1px solid var(--line); }
.ping-comparison-metrics article:last-child { border-right:0; }
.ping-comparison-metrics span,.ping-comparison-metrics strong,.ping-comparison-metrics small { display:block; }
.ping-comparison-metrics span { color:var(--muted); font-size:7px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.ping-comparison-metrics strong { margin-top:3px; font-size:22px; }
.ping-comparison-metrics small { color:var(--muted); font-size:7px; }
.ping-comparison-metrics .changed strong { color:var(--orange); }
.ping-change-state { display:inline-flex; padding:4px 6px; color:#52605b; background:#e9ece8; font-size:7px; font-weight:800; }
.ping-change-state.ping-change-new,.ping-change-state.ping-change-missing { color:#963626; background:#f7dfda; }
.ping-missing-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); border-top:1px solid var(--line); }
.ping-missing-list article { display:grid; grid-template-columns:auto 1fr; gap:3px 10px; align-items:center; padding:11px 16px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.ping-missing-list code { color:var(--ink); font-weight:800; }
.ping-missing-list span { min-width:0; color:var(--muted); font-size:8px; overflow-wrap:anywhere; }
.ping-missing-list b { grid-column:1/-1; color:#963626; font-size:7px; text-transform:uppercase; }
@media (max-width:700px) { .ping-comparison-metrics { grid-template-columns:1fr; } .ping-comparison-metrics article { border-right:0; border-bottom:1px solid var(--line); } }
.ping-match-state { display:inline-flex; padding:5px 7px; color:#176448; background:#e4f2ec; font-size:8px; font-weight:800; }
.ping-match-state.ping-match-reservation { color:#66521c; background:#f4edcf; }
.ping-match-state.ping-match-mac_match { color:#7a4a08; background:#fff0cf; }
.ping-match-state.ping-match-untracked,.ping-match-state.ping-match-conflict { color:#963626; background:#f7dfda; }
.rich-label-content > header { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.35em .9em; padding:.6em .85em; color:white; background:#13231f; }
.rich-label-content > header span { min-width:0; font-size:.58em; letter-spacing:.06em; text-transform:uppercase; }
.rich-label-content > header strong { min-width:0; font-size:.68em; overflow-wrap:anywhere; }
.label-endpoint { padding:.9em 1.05em .6em; }
.label-endpoint small,.label-endpoint strong,.label-endpoint b,.label-endpoint span { display:block; }
.label-endpoint small { color:var(--muted); font-size:.5em; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.label-endpoint strong { margin-top:.1em; font-size:1.25em; }
.label-endpoint b { color:var(--green); font:800 1.12em ui-monospace,SFMono-Regular,Consolas,monospace; }
.label-endpoint span { color:var(--muted); font-size:.56em; }
.label-destination { margin:0 1.05em; padding:.55em .7em; border-left:.25em solid var(--accent); background:#f0f2ed; }
.label-destination span,.label-destination strong,.label-destination small { display:block; }
.label-destination span { color:var(--accent); font-size:.5em; font-weight:850; letter-spacing:.12em; }
.label-destination strong { font-size:.75em; }
.label-destination small { color:var(--muted); font-size:.56em; }
.rich-label-content > footer { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.25em .75em; padding:.62em 1.05em; color:var(--muted); font-size:.5em; }
.rich-label-content > footer span { max-width:100%; white-space:pre-wrap; }
.compact-label-content { font-size:11px; line-height:1.06; }
.compact-label-head { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.18em .5em; padding:.3em .45em .12em; font-size:.72em; }
.compact-label-head span { flex:0 0 auto; color:var(--muted); }
.compact-label-head strong { min-width:0; }
.compact-endpoints { min-width:0; padding:.12em .45em .3em; }
.compact-endpoints strong,.compact-endpoints span,.compact-endpoints small { display:block; }
.compact-endpoints strong { font-size:.9em; }
.compact-endpoints span { color:var(--green); font-weight:800; }
.compact-endpoints small { color:var(--muted); font-size:.7em; }
.compact-cable-meta { margin-top:.15em; color:#42504c; font-size:.7em; }
.compact-cable-meta b { display:block; font-weight:500; white-space:pre-wrap; }
.fit-indicator { position:absolute; z-index:2; right:2px; bottom:2px; padding:2px 4px; border-radius:3px; color:#42504c; background:#ffffffe6; box-shadow:0 0 0 1px #b8c1bd; font:700 7px ui-monospace,SFMono-Regular,Consolas,monospace; pointer-events:none; }
.laminate-zone { display:grid; flex:1; place-items:center; min-height:0; color:#84908c; background:repeating-linear-gradient(135deg,#f7f9f7,#f7f9f7 3mm,#eef1ed 3mm,#eef1ed 6mm); }
.laminate-zone span { padding:1mm; font-size:5pt; letter-spacing:.05em; text-align:center; text-transform:uppercase; }
.users-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:46px; }
.users-heading h1 { font-size:54px; }
.user-list { display:grid; gap:12px; }
.user-card { display:grid; grid-template-columns:minmax(220px,1fr) minmax(390px,auto) auto; gap:22px; align-items:center; padding:20px 22px; border:1px solid var(--line); background:var(--card); }
.user-identity { display:flex; gap:13px; align-items:center; min-width:0; }
.user-avatar { display:grid; flex:0 0 auto; place-items:center; width:42px; height:42px; border-radius:50%; color:#fff; background:var(--green); font:700 18px Georgia,serif; }
.user-identity h3 { margin:0; overflow-wrap:anywhere; font-size:17px; }
.user-identity h3 small { margin-left:5px; color:var(--muted); font-size:10px; font-weight:700; text-transform:uppercase; }
.user-identity p,.dialog-subtitle { margin:2px 0 0; color:var(--muted); font-size:12px; }
.user-settings { display:grid; grid-template-columns:140px 120px auto; gap:9px; align-items:end; }
.user-settings label { margin:0; font-size:10px; letter-spacing:.06em; text-transform:uppercase; }
.user-settings select { margin-top:3px; padding-block:9px; text-transform:none; letter-spacing:normal; }
.user-settings .button { padding-block:10px; }
.user-settings .form-error { grid-column:1/-1; min-height:0; margin:0; }
.user-state { display:flex; gap:8px; align-items:center; justify-content:flex-end; }
.role-badge,.state-active { padding:5px 8px; border-radius:3px; font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.role-admin { color:#735018; background:#f7ebce; }
.role-operator { color:#155b78; background:#dceff7; }
.user-metrics { grid-template-columns:repeat(4,1fr); }
.state-active { color:#176448; background:#dff2e9; }
.user-security-menu { position:relative; justify-self:end; }
.user-security-menu > summary { display:flex; align-items:center; gap:7px; min-width:112px; padding:10px 13px; border:1px solid var(--line); border-radius:4px; background:#fff; color:var(--ink); font-size:12px; font-weight:800; cursor:pointer; list-style:none; }
.user-security-menu > summary::-webkit-details-marker { display:none; }
.user-security-menu > summary::after { content:'⌄'; margin-left:auto; color:var(--muted); }
.user-security-menu[open] > summary { border-color:#9bb5aa; box-shadow:0 0 0 3px #1d76511a; }
.user-security-menu-panel { position:absolute; z-index:20; top:calc(100% + 7px); right:0; width:245px; padding:6px; border:1px solid var(--line); border-radius:5px; background:#fff; box-shadow:0 16px 42px #233d3526; }
.user-security-menu-panel button { display:block; width:100%; padding:11px 12px; border:0; border-radius:3px; background:transparent; color:var(--ink); text-align:left; cursor:pointer; }
.user-security-menu-panel button:hover { background:#eef3ef; }
.user-security-menu-panel button + button { border-top:1px solid var(--line); }
.user-security-menu-panel button strong,.user-security-menu-panel button small { display:block; }
.user-security-menu-panel button strong { font-size:12px; }
.user-security-menu-panel button small { margin-top:3px; color:var(--muted); font-size:10px; }
.user-security-menu-panel button.sensitive strong { color:#a83524; }
.account-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:36px; }
.account-heading h1 { font-size:54px; }
.account-identity { display:flex; flex:0 0 auto; gap:13px; align-items:center; min-width:220px; padding:16px 18px; border:1px solid var(--line); background:var(--card); }
.account-identity strong,.account-identity small { display:block; }
.account-identity small { margin-top:3px; color:var(--muted); font-size:11px; font-weight:700; text-transform:uppercase; }
.account-success { margin:0 0 22px; padding:13px 15px; border-left:4px solid var(--green); color:#176448; background:#edf6f1; }
.account-security-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; align-items:start; }
.mfa-enrollment-grid { display:grid; grid-template-columns:minmax(300px,.8fr) minmax(360px,1.2fr); gap:22px; align-items:start; }
.mfa-qr-card img { display:block; max-width:100%; height:auto; margin:20px auto; border:12px solid #fff; box-shadow:0 8px 30px #233d3517; }
.mfa-manual-secret { display:block; margin-top:14px; padding:14px; overflow-wrap:anywhere; letter-spacing:.12em; background:#eef1ec; }
.mfa-recovery-codes { margin-top:8px; }
.mfa-recovery-codes ul { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 18px; padding:18px 18px 18px 42px; background:#eef1ec; font-family:monospace; font-size:17px; letter-spacing:.08em; }
.login-cancel { display:block; margin-top:18px; text-align:center; color:var(--muted); }
@media(max-width:800px) {
  .mfa-enrollment-grid { grid-template-columns:1fr; }
  .mfa-recovery-codes ul { grid-template-columns:1fr; }
  .user-security-menu { justify-self:stretch; }
  .user-security-menu > summary { width:100%; }
  .user-security-menu-panel { position:static; width:100%; margin-top:7px; }
}
.account-form { display:grid; gap:15px; }
.account-actions { display:flex; justify-content:flex-end; }
.account-revoke-form { margin-top:24px; }
.account-revoke-form .button { width:100%; }
.account-protection { margin-top:22px; padding:24px 26px; border:1px solid var(--line); background:#eef1ec; }
.account-protection h2 { font-size:24px; }
.account-protection p:last-child { max-width:850px; margin-bottom:0; color:var(--muted); }
.backup-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:46px; }
.backup-heading h1 { font-size:54px; }
.backup-metrics { grid-template-columns:repeat(4,1fr); margin-bottom:38px; }
.backup-layout { display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:24px; align-items:start; }
.backup-form { display:grid; gap:16px; }
.settings-card { padding:26px; border:1px solid var(--line); background:var(--card); }
.settings-card-head { display:flex; justify-content:space-between; gap:18px; align-items:start; margin-bottom:22px; }
.settings-card-head h2 { font-size:24px; }
.settings-state { flex:0 0 auto; padding:5px 8px; border-radius:3px; color:#735018; background:#f7ebce; font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.settings-state.ready { color:#176448; background:#dff2e9; }
.toggle-field { display:flex; gap:11px; align-items:flex-start; padding:13px; border:1px solid var(--line); background:#f8f9f6; }
.toggle-field input { flex:0 0 auto; width:18px; height:18px; margin:2px 0 0; accent-color:var(--accent); }
.toggle-field span,.toggle-field strong,.toggle-field small { display:block; }
.toggle-field small { margin-top:2px; color:var(--muted); font-weight:400; }
.toggle-field.compact { align-self:end; min-height:65px; margin-bottom:0; }
.fingerprint { padding:13px; overflow-wrap:anywhere; background:#f0f2ed; }
.fingerprint span,.fingerprint code { display:block; }
.fingerprint span { margin-bottom:4px; color:var(--muted); font-size:10px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.fingerprint code { color:var(--green); font-size:11px; }
.warning-help { padding-left:11px; border-left:3px solid #d5a13d; }
.backup-error { margin:0; }
.backup-actions { display:flex; justify-content:flex-end; gap:10px; }
.backup-guide { position:sticky; top:22px; padding:24px; border:1px solid var(--line); background:#eef1ec; }
.backup-guide h2 { font-size:24px; }
.backup-guide ul { display:grid; gap:3px; margin:20px 0; padding:0; list-style:none; }
.backup-guide li { display:flex; gap:11px; align-items:center; padding:11px 0; border-bottom:1px solid #d7ddd7; }
.backup-guide li:last-child { border:0; }
.backup-guide li i { width:10px; height:10px; border-radius:50%; background:#c88b2f; box-shadow:0 0 0 4px #c88b2f18; }
.backup-guide li.complete i { background:var(--green); box-shadow:0 0 0 4px #1f7a5a18; }
.backup-guide li.failed i { background:#b44938; box-shadow:0 0 0 4px #b4493818; }
.backup-guide li span,.backup-guide li strong,.backup-guide li small { display:block; }
.backup-guide li small,.backup-guide > p:last-child { color:var(--muted); font-size:11px; }
.backup-archives { margin-top:54px; }
.archive-intro { max-width:760px; margin:-10px 0 20px; color:var(--muted); font-size:12px; }
.backup-table-wrap { overflow-x:auto; border:1px solid var(--line); background:var(--card); }
.backup-table { width:100%; min-width:900px; border-collapse:collapse; }
.backup-table th { padding:11px 14px; color:var(--muted); background:#f0f2ed; font-size:10px; letter-spacing:.07em; text-align:left; text-transform:uppercase; }
.backup-table td { padding:14px; border-top:1px solid var(--line); vertical-align:middle; }
.backup-table td:first-child strong,.backup-table td:first-child small { display:block; }
.backup-table td:first-child strong { font:700 12px ui-monospace,SFMono-Regular,Consolas,monospace; }
.backup-table td:first-child small { margin-top:3px; color:var(--muted); font-size:10px; }
.archive-state { display:inline-block; padding:4px 7px; border-radius:3px; color:#735018; background:#f7ebce; font-size:9px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; white-space:nowrap; }
.archive-state.complete { color:#176448; background:#dff2e9; }
.archive-state.error { color:#963626; background:#f7dfda; }
.archive-actions { display:flex; gap:7px; justify-content:flex-end; }
.archive-verify { padding:8px 10px; font-size:11px; }
.instance-heading { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:46px; }
.instance-heading h1 { font-size:54px; }
.instance-metrics { grid-template-columns:repeat(4,1fr); margin-bottom:42px; }
.instance-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.instance-card { overflow:hidden; border:1px solid var(--line); border-left:5px solid #c88b2f; background:var(--card); }
.instance-card.state-online { border-left-color:var(--green); }
.instance-card.state-offline { border-left-color:#b44938; }
.instance-card.state-disabled { border-left-color:#89938f; opacity:.82; }
.instance-card > header { display:flex; justify-content:space-between; gap:18px; align-items:start; padding:22px 22px 17px; }
.instance-identity { display:flex; gap:13px; align-items:center; min-width:0; }
.instance-icon { display:grid; flex:0 0 auto; place-items:center; width:43px; height:43px; color:white; background:#13231f; font:700 23px Georgia,serif; }
.instance-identity h3 { margin:0; overflow-wrap:anywhere; font-size:18px; }
.instance-identity .eyebrow { margin-bottom:2px; }
.instance-state { display:inline-flex; flex:0 0 auto; gap:6px; align-items:center; padding:5px 8px; border-radius:99px; color:#735018; background:#f7ebce; font-size:9px; font-weight:850; letter-spacing:.05em; text-transform:uppercase; }
.instance-state i { width:7px; height:7px; border-radius:50%; background:#c88b2f; }
.instance-state-online { color:#176448; background:#dff2e9; }
.instance-state-online i { background:var(--green); box-shadow:0 0 0 3px #1f7a5a18; }
.instance-state-offline { color:#963626; background:#f7dfda; }
.instance-state-offline i { background:#b44938; }
.instance-state-disabled { color:#59635f; background:#e2e6e3; }
.instance-state-disabled i { background:#89938f; }
.instance-uuid { display:flex; gap:10px; align-items:center; margin:0 22px 18px; padding:9px 11px; overflow:hidden; background:#f0f2ed; }
.instance-uuid code { flex:1; min-width:0; overflow:hidden; color:#41675b; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.instance-uuid button { padding:0; border:0; color:var(--green); background:transparent; font-size:10px; font-weight:800; cursor:pointer; }
.instance-facts { display:grid; grid-template-columns:repeat(3,1fr); margin:0; border-block:1px solid var(--line); }
.instance-facts div { min-width:0; padding:11px 14px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.instance-facts div:nth-child(3n) { border-right:0; }
.instance-facts div:nth-last-child(-n+3) { border-bottom:0; }
.instance-facts dt { color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.instance-facts dd { margin:3px 0 0; overflow-wrap:anywhere; font:700 11px ui-monospace,SFMono-Regular,Consolas,monospace; }
.software-version-state { display:block; margin-top:5px; color:var(--muted); font:800 8px Inter,Arial,sans-serif; letter-spacing:.04em; text-transform:uppercase; }
.software-version-current { color:var(--green); }
.software-version-outdated { color:#a04a34; }
.instance-error,.instance-notice { margin:15px 18px 0; padding:10px 12px; font-size:11px; overflow-wrap:anywhere; }
.instance-error { color:#963626; background:#f7dfda; }
.instance-error strong { display:block; margin-bottom:2px; font-size:9px; letter-spacing:.06em; text-transform:uppercase; }
.instance-notice { color:#735018; background:#f7ebce; }
.instance-health-alerts { display:grid; gap:6px; margin:14px 18px 0; padding:0; list-style:none; }
.instance-health-alerts li { display:flex; gap:9px; align-items:start; padding:9px 11px; color:#735018; background:#f7ebce; font-size:11px; }
.instance-health-alerts li.health-alert-critical { color:#963626; background:#f7dfda; }
.instance-health-alerts i { flex:0 0 auto; width:8px; height:8px; margin-top:5px; border-radius:50%; background:#c88b2f; }
.instance-health-alerts .health-alert-critical i { background:#b44938; }
.management-state { display:inline-block; padding:3px 7px; border-radius:99px; color:#735018; background:#f7ebce; font-size:9px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.management-state-active { color:#176448; background:#dff2e9; }
.management-state-repair { color:#963626; background:#f7dfda; }
.instance-facts dd .management-state + small { display:block; margin-top:4px; color:var(--muted); font:500 9px/1.35 Inter,ui-sans-serif,system-ui,sans-serif; }
.instance-facts dd .automatic-update-summary { display:block; margin-top:4px; color:#176448; font:700 9px/1.35 Inter,ui-sans-serif,system-ui,sans-serif; }
.management-repair-notice { border-left-color:#b44938; color:#963626; }
.managed-deployment-notice { margin:0 0 20px; padding:12px 14px; border-left:4px solid var(--green); color:#356552; background:#edf6f1; font-size:12px; }
.managed-deployment-notice strong { display:block; color:#176448; }
.instance-health-alerts strong { display:block; font-size:9px; letter-spacing:.06em; text-transform:uppercase; }
.instance-settings { display:grid; grid-template-columns:1.2fr 1fr .8fr; gap:9px; padding:18px 22px 22px; }
.instance-settings label { margin:0; font-size:9px; letter-spacing:.06em; text-transform:uppercase; }
.instance-settings input,.instance-settings select { margin-top:3px; padding:9px; font-size:11px; letter-spacing:normal; text-transform:none; }
.instance-actions { display:flex; flex-wrap:wrap; grid-column:1/-1; justify-content:flex-end; gap:7px; }
.instance-actions .button { padding:9px 11px; font-size:10px; }
.instance-settings .form-error { grid-column:1/-1; min-height:0; margin:0; }
.conflict-heading { margin-top:58px; }
.sync-conflict-list { display:grid; gap:12px; }
.sync-conflict-card { padding:20px 22px; border:1px solid var(--line); border-left:4px solid #b44938; background:var(--card); }
.sync-conflict-card > header { display:flex; justify-content:space-between; gap:20px; align-items:start; }
.sync-conflict-card h3 { margin:0; font:750 15px ui-monospace,SFMono-Regular,Consolas,monospace; overflow-wrap:anywhere; }
.sync-conflict-card time,.sync-conflict-card > p { color:var(--muted); font-size:11px; }
.sync-conflict-card > p { margin:12px 0; }
.conflict-differences { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.conflict-differences div { min-width:0; padding:10px; background:#f5f6f2; }
.conflict-differences strong,.conflict-differences span { display:block; overflow-wrap:anywhere; }
.conflict-differences strong { margin-bottom:4px; color:var(--accent); font-size:9px; letter-spacing:.06em; text-transform:uppercase; }
.conflict-differences span { font-size:10px; }
.instance-dialog { width:min(620px,calc(100% - 30px)); max-height:calc(100vh - 30px); overflow:auto; }
.token-dialog { padding:28px; }
.token-warning { padding:12px 14px; color:#735018; background:#f7ebce; font-size:12px; }
.secret-field { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:9px; align-items:center; margin-top:6px; padding:10px; border:1px solid var(--line); background:#f5f6f2; }
.secret-field code { min-width:0; color:#275f4d; font-size:10px; overflow-wrap:anywhere; user-select:all; }
.secret-field .button { padding:7px 9px; font-size:9px; }
.back { display:inline-block; margin-bottom:30px; color:var(--muted); font-weight:650; }.back:hover{color:var(--ink)}
.rack-heading h1{font-size:54px}.heading-actions{display:flex;flex-wrap:wrap;gap:10px}
.rack-power-summary { display:flex; justify-content:space-between; gap:28px; align-items:center; margin:-18px 0 32px; padding:20px 22px; border:1px solid var(--line); border-left:5px solid #aab4b0; background:var(--card); }
.rack-power-summary h2 { font-size:22px; }
.rack-power-summary p:not(.eyebrow) { margin:5px 0 0; color:var(--muted); font-size:12px; }
.rack-power-summary.power-summary-healthy { border-left-color:var(--green); }
.rack-power-summary.power-summary-warning { border-left-color:#c88b2f; background:#fbf5e8; }
.rack-power-summary.power-summary-critical { border-left-color:#b44938; background:#fbefec; }
.power-summary-value { flex:0 0 auto; font:700 28px Georgia,serif; }
.power-summary-warning .power-summary-value { color:#9a691e; }
.power-summary-critical .power-summary-value { color:#a13d2d; }
.rack-physical-summary { margin:-16px 0 32px; padding:20px 22px; border:1px solid var(--line); border-left:5px solid var(--green); background:var(--card); }
.rack-physical-summary > header { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:16px; }
.rack-physical-summary h2 { font-size:22px; }
.physical-state-badge { padding:5px 8px; border-radius:999px; color:#176448; background:#dff2e9; font-size:9px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.rack-physical-summary.physical-state-warning { border-left-color:#c88b2f; background:#fbf5e8; }
.rack-physical-summary.physical-state-critical { border-left-color:#b44938; background:#fbefec; }
.physical-state-warning .physical-state-badge { color:#80561d; background:#f5e8c8; }
.physical-state-critical .physical-state-badge { color:#8c3427; background:#f4dcd7; }
.physical-summary-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.physical-summary-grid article { padding:14px; border:1px solid var(--line); background:#fff; }
.physical-summary-grid article > span,.physical-summary-grid article > strong,.physical-summary-grid article > small { display:block; }
.physical-summary-grid article > span { color:var(--muted); font-size:9px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.physical-summary-grid article > strong { margin-top:4px; font-size:14px; }
.physical-summary-grid article > small { margin-top:5px; color:var(--muted); font-size:10px; line-height:1.45; }
.physical-capacity { height:6px; margin-top:9px; overflow:hidden; background:#dfe5e1; }
.physical-capacity i { display:block; height:100%; background:var(--green); }
.physical-capacity.state-warning i { background:#c88b2f; }
.physical-capacity.state-critical i { background:#b44938; }
.physical-conflict { margin:8px 0 0; color:#a13d2d; font-size:10px; font-weight:750; }
.projection-physical { display:grid; gap:2px; margin-top:12px; padding:9px 10px; border-left:3px solid var(--green); background:#eef5f1; font-size:10px; }
.projection-physical.state-warning { border-left-color:#c88b2f; background:#fbf5e8; }
.projection-physical.state-critical { border-left-color:#b44938; background:#fbefec; }
.projection-physical span,.projection-physical small { color:var(--muted); }
.power-circuit-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:-16px 0 32px; }
.power-circuit-card { padding:20px 22px; border:1px solid var(--line); border-top:4px solid var(--green); background:var(--card); }
.power-circuit-card.circuit-warning { border-top-color:#c88b2f; background:#fbf5e8; }
.power-circuit-card.circuit-critical { border-top-color:#b44938; background:#fbefec; }
.power-circuit-card > header { display:flex; justify-content:space-between; gap:18px; align-items:start; }
.power-circuit-card > header h2 { font-size:20px; }
.power-circuit-card > header > strong { font:700 24px Georgia,serif; }
.power-circuit-card dl { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; margin:14px 0 0; background:var(--line); }
.power-circuit-card dl div { min-width:0; padding:9px 10px; background:#fff; }
.power-circuit-card dt { color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.power-circuit-card dd { margin:3px 0 0; font:700 10px ui-monospace,SFMono-Regular,Consolas,monospace; overflow-wrap:anywhere; }
.circuit-unconfigured { margin:15px 0 0; padding:12px; color:var(--muted); background:#f3f4f0; font-size:12px; }
.rack-plan-banner { margin:0 0 28px; padding:18px 20px; border:1px solid #c8d8e2; border-left:5px solid #557f9d; background:#f4f8fa; }
.rack-plan-banner > header { display:flex; justify-content:space-between; gap:20px; align-items:start; }
.rack-plan-banner h2 { margin-top:4px; font-size:22px; }
.rack-plan-banner > header a { color:#355f83; font-size:10px; font-weight:850; text-transform:uppercase; }
.rack-plan-facts { display:grid; grid-template-columns:repeat(3,1fr); margin-top:14px; border:1px solid #d5e0e6; background:#fff; }
.rack-plan-facts article { padding:10px 12px; border-right:1px solid #d5e0e6; }
.rack-plan-facts article:last-child { border-right:0; }
.rack-plan-facts span,.rack-plan-facts strong,.rack-plan-facts small { display:block; }
.rack-plan-facts span { color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.rack-plan-facts strong { margin-top:3px; font-size:12px; }
.rack-plan-facts small { margin-top:2px; color:#8a641f; font-size:8px; }
.rack-plan-banner > p { display:flex; gap:8px; align-items:center; margin:12px 0 0; color:var(--muted); font-size:10px; }
.rack-plan-banner > p i { flex:0 0 auto; width:14px; height:10px; border:1px dashed #7ca1b7; background:repeating-linear-gradient(135deg,#e4edf2 0,#e4edf2 4px,#f8fbfc 4px,#f8fbfc 8px); }
.rack-layout { display:grid; grid-template-columns:minmax(420px, 1.2fr) minmax(320px,.8fr); gap:32px; align-items:start; }
.rack-frame { position:relative; padding:18px 32px; border:8px solid #263a35; background:#172824; box-shadow:0 20px 50px #11262022; }
.rack-rail{position:absolute;top:12px;bottom:12px;width:12px;border-left:2px dotted #6b7d76}.rack-rail.left{left:10px}.rack-rail.right{right:0}
.rack-unit { position:relative; height:var(--unit-height); border-bottom:1px solid #5b6b6655; background:#eef0eb; }
.rack-unit:nth-child(odd){background:#e8ebe5}.rack-unit.occupied{background:#253c36}
.rack-unit.reserved { background:repeating-linear-gradient(135deg,#dbe7ec 0,#dbe7ec 8px,#edf3f5 8px,#edf3f5 16px); }
.unit-number { position:absolute; z-index:2; left:-26px; top:6px; width:18px; color:#b3c0bc; font-size:10px; text-align:center; }
.device-block { position:absolute; z-index:3; inset:2px 3px auto; border:1px solid #73bba3; border-left:5px solid #54c79d; padding:5px 11px; overflow:hidden; color:white; background:#256a57; text-align:left; cursor:pointer; }
.device-block strong,.device-block small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.device-block small{color:#c9e9df;font-size:11px}.device-block.type-serveur{background:#355f83;border-color:#73a9d3}.device-block.type-switch{background:#765128;border-color:#d4a75f}.device-block.type-stockage{background:#584d80;border-color:#9c8fd0}
.device-block.device-operational-maintenance{border-color:#ffd278;background:#8a641f}.device-block.device-operational-standby{border-color:#9cc8e4;background:#3f657b}.device-block.device-operational-offline{border-color:#e59a8e;background:#783f38}.device-block.device-operational-decommissioned{border-color:#9ea7a3;background:#59635f;filter:grayscale(.8);opacity:.78}
.planned-device-block { border:2px dashed #77a4bb; border-left:6px solid #557f9d; color:#17384b; background:repeating-linear-gradient(135deg,#dbe9f0 0,#dbe9f0 10px,#f4f8fa 10px,#f4f8fa 20px); text-decoration:none; }
.planned-device-block:hover { border-color:var(--accent); color:#17384b; }
.planned-device-block small { color:#45697d; }
.inventory { padding:27px; border:1px solid var(--line); background:white; }.inventory .section-head{margin-bottom:12px}.inventory h2{font-size:24px}
.device-row { display:grid; grid-template-columns:10px minmax(0,1fr) auto 30px 30px; gap:8px; align-items:center; padding:16px 0; border-bottom:1px solid var(--line); }.device-row.readonly{grid-template-columns:10px minmax(0,1fr) auto}.device-row:last-child{border:0}.device-row p{margin:2px 0 0;color:var(--muted);font-size:12px}.device-dot{width:8px;height:8px;border-radius:50%;background:var(--green)}
.device-row-details{min-width:0;overflow-wrap:anywhere}.device-identifiers{display:flex;flex-wrap:wrap;gap:4px 9px;margin-top:6px;color:#53615d;font:600 10px ui-monospace,SFMono-Regular,Consolas,monospace}.device-notes{max-height:3em;overflow:hidden;white-space:pre-line}.device-dialog{width:min(650px,calc(100% - 30px));max-height:calc(100vh - 30px);overflow:auto}
.planned-inventory { margin-top:24px; padding-top:22px; border-top:1px solid var(--line); }
.planned-device-row { display:grid; grid-template-columns:10px minmax(0,1fr) auto; gap:9px; align-items:center; padding:13px 0; border-bottom:1px solid var(--line); color:var(--ink); }
.planned-device-row:last-child { border-bottom:0; }
.planned-device-row > i { width:9px; height:9px; border:2px dashed #557f9d; background:#e4edf2; }
.planned-device-row strong,.planned-device-row p { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.planned-device-row p { margin:3px 0 0; color:var(--muted); font-size:10px; }
.planned-device-row:hover strong { color:var(--accent); }
.device-status-dot-active{background:#1f7a5a}.device-status-dot-maintenance{background:#b17b24}.device-status-dot-standby{background:#557f9d}.device-status-dot-offline{background:#b44938}.device-status-dot-decommissioned{background:#7d8783}
.icon-button,.close { border:0; background:transparent; color:#8b9692; font-size:22px; cursor:pointer; }.icon-button:hover,.close:hover{color:var(--accent)}
.icon-button.edit { font-size:17px; }
dialog { width:min(500px,calc(100% - 30px)); padding:0; border:0; border-radius:7px; box-shadow:0 25px 80px #10201c55; }dialog::backdrop{background:#10201caa;backdrop-filter:blur(2px)}
#rack-dialog,#rack-edit-dialog { width:min(650px,calc(100% - 30px)); max-height:calc(100vh - 30px); overflow:auto; }
dialog form{padding:28px}.dialog-head{display:flex;justify-content:space-between;align-items:start;margin-bottom:24px}.dialog-head h2{font-size:30px}.close{font-size:28px}
label{display:block;margin:15px 0;color:#42504c;font-size:13px;font-weight:700}input,select,textarea{display:block;width:100%;margin-top:6px;padding:11px 12px;border:1px solid #cbd2cd;border-radius:4px;background:#fbfcfa;color:var(--ink)}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid #e85d3f35;border-color:var(--accent)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.input-unit{display:flex}.input-unit input{margin:0}.input-unit b{padding:11px;background:#e8ebe5}.form-subsection{margin:24px 0 -6px;padding-top:17px;border-top:1px solid var(--line)}.form-subsection .form-help{margin-top:0}.form-help{margin:-3px 0 4px;color:var(--muted);font-size:12px}.form-error{min-height:20px;color:#b23d2c;font-size:13px}.actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}.toast{position:fixed;right:25px;bottom:25px;transform:translateY(20px);opacity:0;padding:12px 18px;color:white;background:var(--green);transition:.2s;pointer-events:none}.toast.error{background:#a83524}.toast.visible{transform:none;opacity:1}
@media(max-width:1000px){.topology-layout,.backup-layout{grid-template-columns:1fr}.instance-grid{grid-template-columns:1fr}.topology-cable-panel,.backup-guide{position:static}.topology-cable-list{max-height:none;grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.power-circuit-grid{grid-template-columns:1fr}}
@media(max-width:800px){.decommission-heading{display:block}.decommission-heading .button{display:inline-block;margin-top:22px}.decommission-metrics{grid-template-columns:repeat(2,1fr)}.decommission-impact{grid-template-columns:1fr}.decommission-blockers > header{display:block}.decommission-blockers > header > span{display:inline-block;margin-top:8px}.decommission-checks{grid-template-columns:1fr}}
@media(max-width:560px){.decommission-metrics{grid-template-columns:1fr}.decommission-blockers article{grid-template-columns:28px minmax(0,1fr)}.decommission-blockers article .button{grid-column:2;justify-self:start}.decommission-form .field-row{grid-template-columns:1fr}}
@media(max-width:800px){.transfer-heading{display:block}.transfer-heading .button{display:inline-block;margin-top:22px}.transfer-metrics{grid-template-columns:repeat(2,1fr)}.transfer-impact{grid-template-columns:1fr}.transfer-confirmations{grid-template-columns:1fr}}
@media(max-width:560px){.transfer-metrics{grid-template-columns:1fr}.transfer-form .field-row{grid-template-columns:1fr}}
@media(max-width:800px){.physical-summary-grid{grid-template-columns:1fr}}
@media(max-width:600px){.rack-plan-banner > header{display:block}.rack-plan-banner > header a{display:inline-block;margin-top:9px}.rack-plan-facts{grid-template-columns:1fr}.rack-plan-facts article{border-right:0;border-bottom:1px solid #d5e0e6}.rack-plan-facts article:last-child{border-bottom:0}}
@media(max-width:900px){.network-grid{grid-template-columns:1fr}.network-unmanaged > div{grid-template-columns:repeat(2,1fr)}}
@media(max-width:1000px){.discovery-safety{grid-template-columns:repeat(2,1fr)}.discovery-layout{grid-template-columns:1fr}.discovery-history{position:static}.discovery-history > div{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}.discovery-history-card{border-left:0;border-top:4px solid transparent}.discovery-history-card.selected{border-top-color:var(--accent)}}
@media(max-width:1200px){.ping-schedule-row{grid-template-columns:repeat(3,minmax(0,1fr))}.ping-schedule-action{justify-self:start}}
@media(max-width:700px){.ping-schedule-row{grid-template-columns:1fr 1fr}.ping-schedule-identity,.ping-schedule-state{grid-column:1/-1}}
@media(max-width:800px){.network-heading{display:block}.network-heading .heading-actions{margin-top:22px}.network-metrics{grid-template-columns:repeat(2,1fr)}.network-warning{grid-template-columns:1fr}.network-filters{grid-template-columns:1fr 1fr}.network-filters .filter-actions{grid-column:1/-1}}
@media(max-width:700px){.discovery-report-head{display:block}.discovery-report-head > div:last-child{align-items:flex-start;margin-top:15px}.discovery-system-facts{grid-template-columns:1fr}.discovery-target > header{display:block}.discovery-identity{margin-top:13px;text-align:left}.discovery-dialog .field-row{grid-template-columns:1fr}}
@media(max-width:800px){.room-hub-heading{display:block}.room-hub-heading .button{margin-top:24px}.room-grid{grid-template-columns:1fr}}
@media(max-width:800px){.dashboard-interventions > header{align-items:flex-start}.dashboard-intervention-row{grid-template-columns:115px minmax(0,1fr) 18px;gap:12px}.dashboard-inventory-action-row{grid-template-columns:130px minmax(0,1fr) 18px;gap:11px}}
@media(max-width:800px){main{padding-top:38px}.hero,.rack-heading,.audit-heading,.users-heading,.inventory-heading,.cabling-heading,.topology-heading,.backup-heading,.intervention-heading,.instance-heading,.account-heading{display:block}.hero .button,.heading-actions,.audit-heading .button,.users-heading .button,.inventory-heading .button,.cabling-heading .button,.topology-heading .button,.backup-heading .button,.intervention-heading .button,.instance-heading .button{margin-top:24px}.inventory-heading-actions{flex-wrap:wrap;margin-top:24px}.inventory-heading-actions .button{margin-top:0}.rack-grid{grid-template-columns:1fr}.rack-layout,.cabling-layout,.account-security-grid{grid-template-columns:1fr}.metrics{grid-template-columns:1fr}.metrics article{border-right:0;border-bottom:1px solid var(--line)}.topbar nav a{display:none}.rack-heading h1,.audit-heading h1,.users-heading h1,.inventory-heading h1,.cabling-heading h1,.topology-heading h1,.backup-heading h1,.intervention-heading h1,.instance-heading h1,.account-heading h1{font-size:42px}.account-identity{margin-top:24px}.login-shell{grid-template-columns:1fr;gap:36px}.login-intro h1{font-size:45px}.audit-entry-head{display:block}.audit-entry time{display:block;margin-top:10px}.audit-changes,.audit-details{grid-template-columns:1fr}.user-card{grid-template-columns:1fr}.user-settings{grid-template-columns:1fr 1fr auto}.user-state{justify-content:flex-start}.inventory-filters{grid-template-columns:1fr 1fr}.inventory-filters label:first-child,.filter-actions{grid-column:1/-1}.inventory-summary{display:block}.inventory-summary p:last-child{margin-top:8px}.import-actions{flex-wrap:wrap}.topology-metrics{grid-template-columns:repeat(2,1fr)}.topology-metrics article:nth-child(2){border-right:0}.topology-metrics article:nth-child(-n+2){border-bottom:1px solid var(--line)}.topology-controls{grid-template-columns:1fr auto}.topology-controls p{grid-column:1/-1;justify-self:start;margin-top:2px}.intervention-card{grid-template-columns:62px minmax(0,1fr)}.intervention-actions{grid-column:2}.instance-facts{grid-template-columns:repeat(2,1fr)}.instance-facts div:nth-child(3n){border-right:1px solid var(--line)}.instance-facts div:nth-child(2n){border-right:0}.instance-facts div:nth-last-child(-n+3){border-bottom:1px solid var(--line)}.instance-facts div:nth-last-child(-n+2){border-bottom:0}.conflict-differences{grid-template-columns:1fr 1fr}}
@media(max-width:480px){main{width:min(100% - 24px,1180px)}.rack-layout,.cabling-layout{grid-template-columns:minmax(0,1fr)}.rack-frame{padding-inline:28px}.rack-card footer{display:block}.field-row,.lifecycle-fields,.user-settings,.inventory-filters,.cabling-metrics,.topology-metrics,.topology-cable-list,.continuity-facts,.instance-facts,.instance-settings,.conflict-differences{grid-template-columns:1fr}.continuity-card{margin-top:-5px;padding:19px}.continuity-card > header,.instance-card > header,.sync-conflict-card > header{display:block}.continuity-badge,.instance-state{display:inline-flex;margin-top:10px}.cabling-metrics article,.topology-metrics article,.instance-facts div{border-right:0;border-bottom:1px solid var(--line)}.instance-facts div:last-child{border-bottom:0}.instance-actions{display:grid}.instance-actions .button{width:100%;white-space:normal}.secret-field{grid-template-columns:1fr}.secret-field .button{justify-self:start}.password-button{width:100%}.inventory-filters label,.filter-actions{grid-column:1}.filter-actions .button{flex:1}.topology-board{padding:28px;gap:50px}.settings-card{padding:20px}.settings-card-head{display:block}.settings-state{display:inline-block;margin-top:10px}.backup-actions{display:grid}.backup-actions .button{width:100%}}
@media(max-width:480px){.rack-power-summary{display:block}.power-summary-value{display:block;margin-top:12px}.rack-card-power-foot{display:block}}
@media(max-width:480px){.network-heading h1{font-size:42px}.network-metrics,.network-facts,.network-unmanaged > div,.network-filters{grid-template-columns:1fr}.network-filters .filter-actions{grid-column:1}.network-address-row{grid-template-columns:100px minmax(0,1fr)}.network-address-row > a{grid-column:2}.network-reservation-row{grid-template-columns:100px minmax(0,1fr) auto}.network-reservation-row > .icon-button{grid-column:3}.network-reservation-row > details > form,.network-range-row > details > form{position:fixed;z-index:110;inset:12vh 12px auto;width:auto}.network-range-row{grid-template-columns:auto minmax(0,1fr) auto}.network-range-row > .icon-button{grid-column:3}.network-card > footer{flex-wrap:wrap}.network-edit[open]{order:3}.network-warning li{grid-template-columns:1fr}}
@media(max-width:480px){.discovery-safety,.discovery-history > div{grid-template-columns:1fr}.discovery-report-head,.discovery-target > header{padding:17px}.discovery-result-block > summary{padding-inline:17px}.discovery-heading .heading-actions{display:grid}.discovery-heading .button{width:100%}}
@media(max-width:480px){.power-circuit-card dl,.rack-card-circuits{grid-template-columns:1fr}}
@media(max-width:480px){.dashboard-interventions > header,.dashboard-inventory-actions > header{display:block}.dashboard-interventions > header .button,.dashboard-inventory-actions > header .button{display:inline-block;margin-top:14px}.dashboard-intervention-counts{flex-wrap:wrap}.dashboard-intervention-row,.dashboard-inventory-action-row{grid-template-columns:1fr;padding:17px 18px}.dashboard-intervention-row time{display:flex;justify-content:space-between;gap:12px}.dashboard-intervention-main > strong,.dashboard-intervention-main > small,.dashboard-inventory-action-row > span:nth-child(2) strong,.dashboard-inventory-action-row > span:nth-child(2) small{white-space:normal}.dashboard-intervention-arrow,.dashboard-inventory-action-row > i{display:none}}
body.mobile-menu-open { overflow:hidden; }
.mobile-menu-toggle { display:flex; gap:8px; align-items:center; padding:8px 10px; border:1px solid #ffffff35; border-radius:4px; color:white; background:transparent; font-size:12px; font-weight:750; cursor:pointer; }
.mobile-menu-toggle:hover,.mobile-menu-toggle:focus-visible { border-color:#ffffff70; background:#ffffff0d; }
.mobile-menu-toggle span { font-size:18px; line-height:1; }
.topbar nav[data-mobile-nav] { position:fixed; z-index:102; inset:0 auto 0 0; display:flex; flex-direction:column; align-items:stretch; gap:0; width:min(84vw,340px); height:100dvh; padding:0 22px 28px; overflow-y:auto; overscroll-behavior:contain; color:#d7dfdc; background:#13231f; box-shadow:18px 0 50px #08110e55; transform:translateX(-105%); visibility:hidden; transition:transform .22s ease,visibility .22s; }
.topbar nav[data-mobile-nav].is-open { transform:translateX(0); visibility:visible; }
.mobile-nav-head { display:flex; flex:0 0 auto; justify-content:space-between; align-items:center; min-height:72px; border-bottom:1px solid #ffffff20; color:white; font-size:16px; }
.mobile-nav-head button { width:38px; height:38px; padding:0; border:0; color:#b9c5c1; background:transparent; font-size:28px; cursor:pointer; }
.mobile-nav-head button:hover,.mobile-nav-head button:focus-visible { color:white; }
.topbar nav[data-mobile-nav] a { display:block; padding:15px 2px; border-bottom:1px solid #ffffff14; color:#e3e9e7; font-size:15px; }
.topbar nav[data-mobile-nav] a:hover,.topbar nav[data-mobile-nav] a:focus-visible { color:#ff9b7e; }
.topbar nav[data-mobile-nav] .nav-alert-link { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.nav-alert-count { min-width:23px; padding:2px 6px; border-radius:99px; color:white; background:#c88b2f; font-size:10px; font-weight:850; line-height:19px; text-align:center; }
.nav-alert-link.has-critical-alerts .nav-alert-count { background:#b44938; }
.topbar nav[data-mobile-nav] .room-context { max-width:none; margin-top:16px; padding:8px 10px; }
.topbar nav[data-mobile-nav] .user-label { margin-top:auto; padding:24px 2px 10px; border:0; color:white; }
.topbar nav[data-mobile-nav] .logout { padding:12px 2px; text-align:left; }
.mobile-nav-backdrop { position:fixed; z-index:101; inset:0; display:block; background:#07100dc2; opacity:0; visibility:hidden; transition:opacity .22s ease,visibility .22s; }
.mobile-nav-backdrop.is-open { opacity:1; visibility:visible; }
@media(max-width:800px){.topbar nav[data-mobile-nav]{width:min(84vw,320px)}}
@media(max-width:800px){.alert-heading{display:block}.alert-heading .button{display:inline-block;margin-top:24px}.alert-row{grid-template-columns:12px minmax(0,1fr) 18px}.alert-context{grid-column:2;text-align:left}.alert-arrow{grid-column:3;grid-row:1/3}}
@media(max-width:900px){.alert-filters,.hub-alert-filters{grid-template-columns:1fr 1fr}.alert-filters label:first-child,.alert-filters .filter-actions{grid-column:1/-1}}
@media(max-width:800px){.hub-alert-room > header{display:block}.hub-alert-room-summary{justify-content:flex-start;margin-top:12px}.hub-alert-room-summary a{margin-left:0}}
@media(max-width:600px){.alert-management-actions{display:block}.alert-management-actions > div,.alert-management-actions form{margin-top:9px}.alert-management-actions form{display:block}.alert-management-actions .form-error{margin-top:5px}}
@media(max-width:900px){.notification-layout{grid-template-columns:1fr}.notification-guide{position:static}.notification-metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.notification-heading{display:block}.notification-heading .heading-actions{margin-top:20px;flex-wrap:wrap}.notification-heading h1{font-size:42px}}
@media(max-width:480px){.alert-filters,.hub-alert-filters{grid-template-columns:1fr}.alert-filters label,.alert-filters label:first-child,.alert-filters .filter-actions{grid-column:1}.alert-filters .filter-actions .button{flex:1}.alert-results-head{display:block}.alert-results-head .count{display:inline-block;margin-top:8px}.alert-row{padding:17px 16px}.alert-main > strong,.alert-main > small{white-space:normal}}
@media(max-width:700px){.print-toolbar{align-items:flex-start}.print-toolbar > div{display:block}.print-toolbar strong{display:block;margin-top:5px}}
@media(max-width:700px){.work-order-header{display:block}.work-order-status{margin-top:18px}.work-order-meta,.work-order-summary,.work-order-device dl,.work-order-signatures{grid-template-columns:1fr 1fr}.work-order-meta div:nth-child(2n),.work-order-summary article:nth-child(2n),.work-order-device dl div:nth-child(2n){border-right:0}}
@media(max-width:460px){.work-order-meta,.work-order-summary,.work-order-device dl,.work-order-signatures{grid-template-columns:1fr}.work-order-meta div,.work-order-summary article,.work-order-device dl div{border-right:0;border-bottom:1px solid var(--line)}.work-order-device > header{grid-template-columns:28px minmax(0,1fr)}.work-order-device > header > .type-badge{grid-column:2;justify-self:start}.work-order-rack > header{display:block}.work-order-rack > header > strong{display:block;margin-top:7px}}
@media print{body.print-page{background:white;-webkit-print-color-adjust:exact;print-color-adjust:exact}.print-toolbar,.label-settings,.fit-indicator{display:none}.print-main{width:auto;margin:0;padding:0;overflow:visible}.label-grid{grid-template-columns:repeat(var(--label-columns),var(--label-width));gap:var(--label-gap)}.layout-roll .label-grid{display:block}.layout-roll .cable-label{break-after:page;page-break-after:always}.layout-roll .cable-label:last-child{break-after:auto;page-break-after:auto}.laminate-zone{background:white}.laminate-zone span{display:none}.installation-work-order{font-size:10px}.work-order-header{padding:15px 17px}.work-order-header h1{font-size:30px}.work-order-summary{margin:12px 0}.work-order-rack{margin-top:15px}.work-order-rack > header{padding:9px 12px}.work-order-device-list{gap:5px;margin-top:5px}.work-order-device{padding:8px 10px}.work-order-signoff{margin-top:16px;padding:12px 14px}.work-order-footer{position:relative}}

/* Résolution manuelle des conflits de synchronisation */
.conflict-manual-dialog {
  width: min(760px, calc(100vw - 2rem));
}

.manual-conflict-field {
  display: grid;
  gap: 0.7rem;
  padding: 1rem 0;
  border-bottom: 1px solid var(--border, rgba(127, 127, 127, 0.25));
}

.manual-conflict-field:last-child {
  border-bottom: 0;
}

.manual-conflict-field > strong {
  font-size: 0.95rem;
  overflow-wrap: anywhere;
}

.manual-conflict-sources {
  display: grid;
  gap: 0.4rem;
  font-size: 0.9rem;
}

.manual-conflict-sources span {
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}

.manual-conflict-field select,
.manual-conflict-field input,
.manual-conflict-field textarea {
  width: 100%;
}

.manual-conflict-field textarea {
  resize: vertical;
  min-height: 5rem;
}

.conflict-actions {
  flex-wrap: wrap;
}

/* Aligne les actions de résolution sur une même hauteur */
.conflict-actions {
  align-items: flex-start;
}

.conflict-actions > button {
  align-self: flex-start;
}

/* État présent/supprimé dans les conflits de synchronisation */
.conflict-state-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: 14px 0;
}

.conflict-side-state {
  display: grid;
  gap: 6px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 5px;
  background: #f8faf7;
}

.conflict-state-label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.conflict-state-badge {
  width: fit-content;
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 11px;
  letter-spacing: 0.04em;
}

.conflict-state-badge.present {
  color: #175f49;
  background: #dcefe8;
}

.conflict-state-badge.deleted {
  color: #8d3428;
  background: #f5dfda;
}

.conflict-side-state small {
  color: var(--muted);
}

@media(max-width:480px) {
  .conflict-state-grid {
    grid-template-columns: 1fr;
  }
}

/* Device network identity history -------------------------------------- */
.network-identity-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:28px; margin:18px 0 24px; }
.network-identity-heading .lede { max-width:720px; }
.identity-warning { display:grid; grid-template-columns:minmax(210px,.65fr) minmax(0,1.35fr); gap:25px; align-items:center; margin-bottom:18px; padding:17px 20px; border:1px solid #e9c682; border-left:4px solid #cb8c24; border-radius:9px; color:#684812; background:#fff8e8; }
.identity-warning h2 { margin-top:3px; font-size:18px; }
.identity-warning p { margin:0; font-size:10px; line-height:1.6; }
.identity-warning-critical { border-color:#e2a99e; border-left-color:#c64b35; color:#7e2f21; background:#fff0ed; }
.identity-comparison { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:16px; }
.identity-comparison > article { padding:20px; border:1px solid var(--line); border-top:3px solid var(--green); border-radius:10px; background:#fff; box-shadow:var(--shadow); }
.identity-comparison > article.has-drift { border-top-color:#cc7b25; }
.identity-comparison header > span,.identity-comparison header > strong { display:block; }
.identity-comparison header > span { color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.identity-comparison header > strong { margin-top:3px; font-size:16px; }
.identity-comparison dl { display:grid; grid-template-columns:1fr 1fr; gap:1px; margin:16px 0 0; background:var(--line); }
.identity-comparison dl div { min-width:0; padding:11px 12px; background:#f8faf9; }
.identity-comparison dt { color:var(--muted); font-size:7px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.identity-comparison dd { margin:4px 0 0; overflow-wrap:anywhere; font:700 9px ui-monospace,SFMono-Regular,Consolas,monospace; }
.identity-comparison dd small { display:block; margin-top:3px; color:var(--muted); font:500 7px Inter,sans-serif; }
.identity-comparison form { display:flex; align-items:center; gap:10px; margin-top:14px; }
.identity-comparison form .form-error { flex:1; margin:0; }
.identity-empty { display:grid; gap:4px; margin-top:16px; padding:22px; color:var(--muted); background:#f7f9f8; }
.identity-metrics { margin-bottom:14px; }
.identity-registry-note { display:flex; justify-content:space-between; gap:20px; margin-bottom:25px; padding:11px 14px; border:1px solid #cfe0d9; border-radius:8px; color:#315f50; background:#eff7f3; font-size:9px; }
.identity-registry-note span { color:#60746d; text-align:right; }
.identity-timeline > header { margin-bottom:12px; }
.identity-observation { display:grid; grid-template-columns:125px minmax(0,1fr); margin-bottom:9px; overflow:hidden; border:1px solid var(--line); border-left:4px solid #89ad9f; border-radius:9px; background:#fff; box-shadow:0 5px 16px rgba(20,48,38,.04); }
.identity-observation.identity-status-ip_drift,.identity-observation.identity-status-dns_drift { border-left-color:#cc8b2d; }
.identity-observation.identity-status-mac_replacement { border-left-color:#c64b35; }
.identity-observation > time { display:flex; flex-direction:column; justify-content:center; gap:3px; padding:16px; color:#3f5c52; background:#f2f6f4; }
.identity-observation > time strong { font-size:10px; }
.identity-observation > time span { font:700 8px ui-monospace,SFMono-Regular,Consolas,monospace; }
.identity-observation-body { min-width:0; padding:14px 17px; }
.identity-observation-body > header { display:flex; align-items:center; justify-content:space-between; gap:14px; }
.identity-observation-body > header a { color:var(--green); font-size:8px; font-weight:750; }
.identity-state { display:inline-flex; padding:4px 7px; border-radius:5px; color:#176448; background:#e4f2ec; font-size:8px; font-weight:800; }
.identity-state-ip_drift,.identity-state-dns_drift { color:#78500d; background:#fff0cf; }
.identity-state-mac_replacement { color:#963626; background:#f7dfda; }
.identity-observed-values { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin-top:10px; }
.identity-observed-values > * { min-width:0; overflow-wrap:anywhere; padding:7px 8px; border-radius:5px; color:#40564e; background:#f4f7f5; font-size:8px; }
.identity-observation-body ul { display:flex; flex-wrap:wrap; gap:5px; margin:9px 0 0; padding:0; list-style:none; }
.identity-observation-body li { padding:4px 7px; border-radius:4px; color:#755018; background:#fff4dc; font-size:8px; }
.identity-observation-body > small { display:block; margin-top:9px; color:var(--muted); }
.identity-observation-body footer { margin-top:9px; color:var(--muted); font-size:7px; }
.device-availability-history { margin:0 0 14px; padding:20px; border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:var(--shadow); }
.device-availability-history > header { display:flex; align-items:flex-start; justify-content:space-between; gap:24px; }
.device-availability-history > header h2 { margin:3px 0 5px; font-size:17px; }
.device-availability-history > header p:not(.eyebrow) { max-width:680px; margin:0; color:var(--muted); font-size:8px; line-height:1.6; }
.device-availability-history > header .heading-actions { align-items:flex-end; }
.device-availability-history > header form { display:flex; align-items:flex-end; gap:7px; }
.device-availability-history > header label { display:grid; gap:4px; color:#53645e; font-size:7px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.device-availability-history > header select { min-width:115px; padding:8px 28px 8px 9px; border:1px solid #ccd8d3; border-radius:6px; background:#fff; font-size:8px; }
.availability-retention-note { margin:12px 0 0; padding:8px 11px; border-radius:6px; color:#755018; background:#fff4dc; font-size:8px; }
.device-availability-policy { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin:14px 0 0; padding:11px 13px; border:1px solid #cfe0d9; border-radius:7px; background:#eff7f3; }
.device-availability-policy > div span,.device-availability-policy > div strong,.device-availability-policy > div small { display:block; }
.device-availability-policy > div span { color:#5e746b; font-size:6px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.device-availability-policy > div strong { margin-top:3px; color:#245d49; font-size:10px; }
.device-availability-policy > div small { margin-top:3px; color:#60746d; font-size:7px; }
.device-availability-policy details { position:relative; flex:0 0 auto; }
.device-availability-policy summary { color:var(--green); cursor:pointer; font-size:8px; font-weight:800; }
.device-availability-policy details > form { position:absolute; z-index:5; top:24px; right:0; width:min(620px,80vw); padding:14px; border:1px solid var(--line); border-radius:8px; background:#fff; box-shadow:0 14px 36px rgba(15,40,31,.18); }
.device-availability-policy details > form > label { display:grid; gap:4px; color:#53645e; font-size:7px; font-weight:800; }
.device-availability-policy details select,.device-availability-policy details input { width:100%; padding:8px 9px; border:1px solid #ccd8d3; border-radius:6px; background:#fff; font-size:8px; }
.device-availability-policy fieldset { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:10px 0 0; padding:0; border:0; }
.device-availability-policy fieldset label { display:grid; gap:4px; color:#53645e; font-size:7px; font-weight:750; }
.device-availability-policy fieldset:disabled { opacity:.45; }
.device-availability-policy .form-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; margin-top:11px; }
.device-availability-policy .form-error { flex:1; margin:0; }
.device-availability-kpis { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:7px; margin:15px 0; }
.device-availability-kpis article { min-width:0; padding:10px 11px; border:1px solid var(--line); border-radius:7px; background:#f8faf9; }
.device-availability-kpis article.metric-alert { border-color:#e7c1b8; background:#fff4f1; }
.device-availability-kpis span,.device-availability-kpis strong,.device-availability-kpis small { display:block; }
.device-availability-kpis span { color:var(--muted); font-size:6px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.device-availability-kpis strong { margin-top:4px; overflow-wrap:anywhere; font-size:11px; }
.device-availability-kpis small { margin-top:3px; color:var(--muted); font-size:6px; line-height:1.4; }
.device-availability-chart-scroll { overflow-x:auto; padding:5px 1px 8px; }
.device-availability-chart { display:grid; grid-auto-flow:column; grid-auto-columns:12px; align-items:end; gap:3px; min-width:max-content; }
.device-availability-day { text-align:center; }
.device-availability-day > div { display:flex; align-items:flex-end; height:70px; overflow:hidden; border-radius:2px; background:#eaf1ee; }
.device-availability-day > div i { display:block; width:100%; min-height:2px; background:#318668; }
.device-availability-day.breached > div i { background:#c55741; }
.device-availability-day.insufficient > div i { background:#d29a3f; }
.device-availability-day.no-data > div { background:repeating-linear-gradient(135deg,#f1f4f2,#f1f4f2 3px,#e5eae7 3px,#e5eae7 6px); }
.device-availability-day.no-data > div i { display:none; }
.device-availability-day time { display:block; margin-top:3px; overflow:hidden; color:var(--muted); font-size:5px; writing-mode:vertical-rl; }
.device-availability-legend { display:flex; flex-wrap:wrap; gap:7px 15px; margin:2px 0 14px; color:var(--muted); font-size:7px; }
.device-availability-legend span { display:flex; align-items:center; gap:5px; }
.device-availability-legend i { width:8px; height:8px; border-radius:2px; background:#318668; }
.device-availability-legend i.breached { background:#c55741; }
.device-availability-legend i.insufficient { background:#d29a3f; }
.device-availability-legend i.no-data { border:1px solid #d8dfdc; background:#edf1ef; }
.device-availability-table-wrap { margin-top:0; }
.device-availability-table-wrap td strong,.device-availability-table-wrap td small { display:block; }
.device-availability-table-wrap td small { margin-top:3px; color:var(--muted); font-size:7px; }
.device-availability-more { margin:9px 0 0; color:var(--muted); font-size:7px; text-align:right; }

@media(max-width:800px) {
  .network-identity-heading,.identity-warning { display:block; }
  .network-identity-heading .heading-actions { margin-top:16px; }
  .identity-warning p { margin-top:8px; }
  .identity-comparison { grid-template-columns:1fr; }
  .identity-observed-values { grid-template-columns:1fr 1fr; }
  .device-availability-history > header { display:block; }
  .device-availability-history > header .heading-actions { margin-top:12px; }
  .device-availability-kpis { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

@media(max-width:520px) {
  .identity-comparison dl { grid-template-columns:1fr; }
  .identity-observation { grid-template-columns:1fr; }
  .identity-observation > time { flex-direction:row; justify-content:flex-start; }
  .identity-observation-body > header,.identity-registry-note { display:block; }
  .identity-observation-body > header a { display:block; margin-top:6px; }
  .identity-observed-values { grid-template-columns:1fr; }
  .identity-registry-note span { display:block; margin-top:4px; text-align:left; }
  .device-availability-history > header .heading-actions,.device-availability-history > header form { align-items:stretch; }
  .device-availability-history > header form { display:grid; grid-template-columns:1fr auto; }
  .device-availability-kpis { grid-template-columns:1fr 1fr; }
  .device-availability-policy { display:block; }
  .device-availability-policy details { margin-top:9px; }
  .device-availability-policy details > form { position:static; width:auto; margin-top:8px; }
  .device-availability-policy fieldset { grid-template-columns:1fr; }
}

/* Consolidated ICMP supervision --------------------------------------- */
.supervision-heading { align-items:flex-start; }
.supervision-metrics { grid-template-columns:repeat(5,minmax(0,1fr)); }
.supervision-action-banner { display:grid; grid-template-columns:32px minmax(0,1fr) auto; gap:13px; align-items:center; margin:-18px 0 20px; padding:13px 16px; border:1px solid #e7c47e; border-left:4px solid #c98720; border-radius:9px; color:#704c14; background:#fff8e8; }
.supervision-action-banner > span { display:grid; place-items:center; width:29px; height:29px; border-radius:50%; color:#fff; background:#c98720; font-weight:900; }
.supervision-action-banner strong,.supervision-action-banner small { display:block; }
.supervision-action-banner strong { font-size:10px; }
.supervision-action-banner small { margin-top:3px; color:#7d6846; font-size:8px; }
.supervision-action-banner a { color:#78500d; font-size:8px; font-weight:800; }
.supervision-filters { grid-template-columns:minmax(210px,1.4fr) minmax(175px,.8fr) minmax(175px,.8fr) auto; }
.supervision-method { display:flex; justify-content:space-between; gap:25px; margin:-11px 0 14px; padding:10px 13px; border:1px solid #cfe0d9; border-radius:8px; color:#315f50; background:#eff7f3; font-size:8px; }
.supervision-method span { max-width:760px; color:#60746d; text-align:right; }
.supervision-table-wrap { overflow:auto; border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:var(--shadow); }
.supervision-table { width:100%; min-width:1160px; border-collapse:collapse; }
.supervision-table th { padding:10px 12px; color:#687a73; font-size:7px; letter-spacing:.07em; text-align:left; text-transform:uppercase; }
.supervision-table td { min-width:125px; padding:13px 12px; border-top:1px solid var(--line); font-size:9px; vertical-align:top; }
.supervision-table td:first-child { min-width:175px; }
.supervision-table td strong,.supervision-table td small,.supervision-table td > a { display:block; }
.supervision-table td small { margin-top:3px; color:var(--muted); font-size:7px; }
.supervision-table td > a { margin-top:5px; color:var(--green); font-size:7px; font-weight:750; }
.supervision-table td code { font:750 9px ui-monospace,SFMono-Regular,Consolas,monospace; }
.supervision-row.action-required td:first-child { box-shadow:inset 4px 0 0 #ce8427; }
.supervision-state-badge { display:inline-flex; padding:4px 7px; border-radius:5px; color:#176448; background:#e1f1ea; font-size:7px; font-weight:850; text-transform:uppercase; }
.supervision-state-badge.supervision-state-missed { color:#795319; background:#f9ebc9; }
.supervision-state-badge.supervision-state-suspected_down { color:#963626; background:#f7dfda; }
.supervision-state-badge.supervision-state-stale { color:#655744; background:#eee9df; }
.supervision-state-badge.supervision-state-unmonitored { color:#52615b; background:#e8edeb; }
.supervision-state-badge.supervision-state-maintenance { color:#405a70; background:#e3ebf2; }
.supervision-drift { color:#a44837 !important; font-weight:750; }
.supervision-availability { min-width:105px; }
.supervision-availability > strong { font-size:10px; }
.supervision-availability > span { display:block; width:100%; height:5px; margin-top:6px; overflow:hidden; border-radius:4px; background:#e4eae7; }
.supervision-availability > span i { display:block; height:100%; border-radius:inherit; background:var(--green); }
.supervision-checks { display:flex; flex-direction:row-reverse; justify-content:flex-start; gap:3px; min-width:118px; padding-top:3px; }
.supervision-checks i { width:7px; height:20px; border-radius:2px; background:#dce3df; }
.supervision-checks i.responsive { background:#3a9b77; }
.supervision-checks i.missing { background:#d66a54; }
.supervision-checks span { color:var(--muted); font-size:7px; }
.supervision-checks + .device-history-link { display:inline-flex; margin-top:7px; color:var(--green); font-size:7px; font-weight:750; }

@media(max-width:1100px) {
  .supervision-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .supervision-filters { grid-template-columns:1fr 1fr; }
}

@media(max-width:700px) {
  .supervision-metrics { grid-template-columns:1fr 1fr; }
  .supervision-action-banner { grid-template-columns:30px minmax(0,1fr); }
  .supervision-action-banner a { grid-column:2; }
  .supervision-method { display:block; }
  .supervision-method span { display:block; margin-top:4px; text-align:left; }
}

@media(max-width:520px) {
  .supervision-metrics,.supervision-filters { grid-template-columns:1fr; }
}

/* Historical network availability ----------------------------------- */
.availability-heading { align-items:flex-start; }
.availability-metrics { grid-template-columns:repeat(7,minmax(0,1fr)); }
.availability-filters { grid-template-columns:minmax(120px,.45fr) minmax(200px,1fr) minmax(160px,.7fr) minmax(165px,.7fr) auto; }
.availability-filters.hub-scope { grid-template-columns:minmax(110px,.4fr) minmax(190px,.9fr) minmax(150px,.65fr) minmax(155px,.65fr) minmax(150px,.65fr) auto; }
.availability-method { display:grid; gap:8px; margin:-11px 0 15px; padding:11px 14px; border:1px solid #cfe0d9; border-radius:8px; color:#315f50; background:#eff7f3; font-size:8px; }
.availability-method > div { display:flex; justify-content:space-between; gap:24px; }
.availability-method span { max-width:800px; color:#60746d; text-align:right; }
.availability-method p { margin:0; padding-top:8px; border-top:1px solid #e1c177; color:#825817; }
.availability-method.limited { border-color:#e1c177; background:#fff8e8; }
.availability-trend { margin:0 0 15px; padding:16px; border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:var(--shadow); }
.availability-trend > header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; }
.availability-trend > header h2 { margin:3px 0 4px; font-size:16px; }
.availability-trend > header p:not(.eyebrow) { margin:0; color:var(--muted); font-size:8px; }
.availability-trend-summary { display:flex; gap:20px; margin:13px 0; padding:10px 12px; border-radius:7px; background:#f3f6f4; }
.availability-trend-summary span { color:var(--muted); font-size:7px; }
.availability-trend-summary strong { margin-right:4px; color:var(--ink); font-size:10px; }
.availability-trend-scroll { overflow-x:auto; padding:2px 1px 8px; }
.availability-trend-days { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(46px,1fr); gap:5px; min-width:max-content; }
.availability-trend-day { width:46px; text-align:center; }
.availability-trend-bar { display:flex; align-items:flex-end; height:82px; overflow:hidden; border:1px solid #d9e4df; border-radius:5px 5px 3px 3px; background:repeating-linear-gradient(135deg,#f3f6f4,#f3f6f4 4px,#e9efec 4px,#e9efec 8px); }
.availability-trend-bar i { display:block; width:100%; min-height:2px; background:linear-gradient(180deg,#44a680,#237758); }
.availability-trend-day.below-target .availability-trend-bar i { background:linear-gradient(180deg,#db806d,#b54b36); }
.availability-trend-day.no-data .availability-trend-bar i { display:none; }
.availability-trend-day > strong,.availability-trend-day > time,.availability-trend-day > small { display:block; }
.availability-trend-day > strong { margin-top:4px; font-size:7px; }
.availability-trend-day > time { margin-top:2px; color:#52615b; font-size:7px; font-weight:750; }
.availability-trend-day > small { margin-top:2px; color:var(--muted); font-size:6px; }
.availability-trend > footer { display:flex; gap:14px; margin-top:6px; color:var(--muted); font-size:7px; }
.availability-trend > footer span { display:flex; align-items:center; gap:5px; }
.availability-trend > footer i { width:8px; height:8px; border-radius:2px; background:#237758; }
.availability-trend > footer i.below { background:#b54b36; }
.availability-trend > footer i.empty { border:1px solid #d9e4df; background:#edf2ef; }
.availability-history { margin:0 0 15px; padding:16px; border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:var(--shadow); }
.availability-history > header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; }
.availability-history > header h2 { margin:3px 0 4px; font-size:16px; }
.availability-history > header p:not(.eyebrow) { max-width:760px; margin:0; color:var(--muted); font-size:8px; }
.availability-history-kpis { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin:13px 0; }
.availability-history-kpis article { padding:11px 12px; border:1px solid var(--line); border-radius:7px; background:#f8faf9; }
.availability-history-kpis article.metric-alert { border-color:#e7c1b8; background:#fff4f1; }
.availability-history-kpis span,.availability-history-kpis strong,.availability-history-kpis small { display:block; }
.availability-history-kpis span { color:var(--muted); font-size:7px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.availability-history-kpis strong { margin-top:4px; font-size:13px; }
.availability-history-kpis small { margin-top:3px; color:var(--muted); font-size:7px; }
.availability-history-scroll { overflow-x:auto; padding:4px 1px 8px; }
.availability-history-months { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(70px,1fr); gap:7px; min-width:max-content; }
.availability-history-month { text-align:center; }
.availability-history-bar { display:flex; align-items:flex-end; height:92px; overflow:hidden; border:1px solid #d9e4df; border-radius:5px 5px 3px 3px; background:repeating-linear-gradient(135deg,#f3f6f4,#f3f6f4 4px,#e9efec 4px,#e9efec 8px); }
.availability-history-bar i { display:block; width:100%; min-height:2px; background:linear-gradient(180deg,#44a680,#237758); }
.availability-history-month.breached .availability-history-bar i { background:linear-gradient(180deg,#db806d,#b54b36); }
.availability-history-month.no-data .availability-history-bar i { display:none; }
.availability-history-month > strong,.availability-history-month > time,.availability-history-month > small,.availability-history-month > em { display:block; }
.availability-history-month > strong { margin-top:4px; font-size:8px; }
.availability-history-month > time { margin-top:2px; color:#52615b; font-size:7px; font-weight:750; }
.availability-history-month > small { margin-top:2px; color:var(--muted); font-size:6px; }
.availability-history-month > em { margin-top:2px; color:#a54837; font-size:6px; font-style:normal; font-weight:800; }
.availability-history-empty { margin:10px 0 0; padding:10px 12px; border-radius:7px; color:#60746d; background:#eff7f3; font-size:8px; }
.availability-table-wrap { overflow:auto; border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:var(--shadow); }
.availability-table { width:100%; min-width:1420px; border-collapse:collapse; }
.availability-table th { padding:10px 12px; color:#687a73; font-size:7px; letter-spacing:.07em; text-align:left; text-transform:uppercase; }
.availability-table td { min-width:125px; padding:13px 12px; border-top:1px solid var(--line); font-size:9px; vertical-align:top; }
.availability-table td:first-child { min-width:190px; }
.availability-table td strong,.availability-table td small,.availability-table td code,.availability-table td > a { display:block; }
.availability-table td small { margin-top:3px; color:var(--muted); font-size:7px; }
.availability-table td code { margin-top:4px; font:750 8px ui-monospace,SFMono-Regular,Consolas,monospace; }
.availability-table td > a { margin-top:6px; color:var(--green); font-size:7px; font-weight:750; }
.availability-row.availability-state-unavailable td:first-child { box-shadow:inset 4px 0 0 #c8533e; }
.availability-row.availability-state-degraded td:first-child { box-shadow:inset 4px 0 0 #ce8427; }
.availability-row.availability-state-maintenance td:first-child { box-shadow:inset 4px 0 0 #70859a; }
.availability-state-badge { display:inline-flex; padding:4px 7px; border-radius:5px; color:#176448; background:#e1f1ea; font-size:7px; font-weight:850; text-transform:uppercase; }
.availability-state-badge.availability-state-degraded { color:#795319; background:#f9ebc9; }
.availability-state-badge.availability-state-unavailable { color:#963626; background:#f7dfda; }
.availability-state-badge.availability-state-unmonitored { color:#52615b; background:#e8edeb; }
.availability-state-badge.availability-state-maintenance { color:#405a70; background:#e3ebf2; }
.availability-objective-badge { display:inline-flex; padding:4px 7px; border-radius:5px; color:#52615b; background:#e8edeb; font-size:7px; font-weight:850; text-transform:uppercase; }
.availability-objective-badge.objective-compliant { color:#176448; background:#e1f1ea; }
.availability-objective-badge.objective-breached { color:#963626; background:#f7dfda; }
.availability-objective-badge.objective-insufficient { color:#795319; background:#f9ebc9; }
.availability-objective-badge.objective-excluded { color:#405a70; background:#e3ebf2; }
.availability-table .objective-pass { color:#237758; font-weight:750; }
.availability-table .objective-fail { color:#a54837; font-weight:750; }
.availability-rate { min-width:105px; }
.availability-rate > strong { font-size:10px; }
.availability-rate > span { display:block; width:100%; height:5px; margin-top:6px; overflow:hidden; border-radius:4px; background:#e4eae7; }
.availability-rate > span i { display:block; height:100%; border-radius:inherit; background:var(--green); }
.availability-state-degraded .availability-rate > span i { background:#ce8427; }
.availability-state-unavailable .availability-rate > span i { background:#c8533e; }
.availability-samples { display:flex; align-items:flex-end; gap:2px; width:150px; min-height:25px; overflow:hidden; }
.availability-samples i { flex:1 1 3px; min-width:2px; max-width:7px; height:20px; border-radius:2px; background:#dce3df; }
.availability-samples i.responsive { background:#3a9b77; }
.availability-samples i.missing { height:12px; background:#d66a54; }
.availability-samples span { color:var(--muted); font-size:7px; }
.availability-table td small.maintenance-exclusion { color:#405a70; font-weight:750; }
.availability-incidents { position:relative; margin-top:7px; }
.availability-incidents summary { color:var(--green); cursor:pointer; font-size:7px; font-weight:800; }
.availability-incidents > div { position:absolute; z-index:4; right:0; width:290px; max-height:220px; padding:10px; overflow:auto; border:1px solid var(--line); border-radius:7px; background:#fff; box-shadow:0 12px 30px rgba(15,40,31,.16); }
.availability-incidents p { margin:0; padding:7px 0; border-bottom:1px solid var(--line); }
.availability-incidents p:last-child { border-bottom:0; }
.availability-incidents p span { display:block; margin-top:2px; color:var(--muted); font-size:7px; }

@media(max-width:1200px) {
  .availability-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .availability-filters,.availability-filters.hub-scope { grid-template-columns:1fr 1fr; }
}

.availability-objective-form { margin-top:24px; padding-top:24px; border-top:1px solid var(--line); }

@media(max-width:700px) {
  .availability-metrics { grid-template-columns:1fr 1fr; }
  .availability-method > div { display:block; }
  .availability-method span { display:block; margin-top:4px; text-align:left; }
  .availability-trend > header { display:block; }
  .availability-trend > header .heading-actions { margin-top:10px; }
  .availability-trend-summary { flex-wrap:wrap; gap:8px 16px; }
  .availability-history > header { display:block; }
  .availability-history > header > .button { margin-top:10px; }
  .availability-history-kpis { grid-template-columns:1fr 1fr; }
}

@media(max-width:520px) {
  .availability-metrics,.availability-filters,.availability-filters.hub-scope { grid-template-columns:1fr; }
  .availability-history-kpis { grid-template-columns:1fr; }
}

/* Déploiement automatisé des Satellites */
.deployment-status {
  margin: 0 22px 22px;
  padding: 16px;
  border: 1px solid var(--line);
  border-left: 4px solid #c88b2f;
  border-radius: 4px;
  background: #f8faf7;
}

.deployment-status-successful {
  border-left-color: var(--green);
}

.deployment-status-failed {
  border-left-color: #b44938;
}

.deployment-status > header {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: start;
}

.deployment-status h4 {
  margin: 1px 0 0;
  font-size: 15px;
}

.deployment-status > header > strong {
  color: var(--green);
  font: 750 14px ui-monospace, SFMono-Regular, Consolas, monospace;
}

.deployment-progress {
  height: 7px;
  margin: 12px 0 9px;
  overflow: hidden;
  border-radius: 20px;
  background: #dfe5e1;
}

.deployment-progress i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--green);
  transition: width 0.3s ease;
}

.deployment-status-failed .deployment-progress i {
  background: #b44938;
}

.deployment-status > p {
  margin: 0;
  color: var(--muted);
  font-size: 11px;
}

.deployment-status .deployment-error {
  margin-top: 8px;
  padding: 9px 10px;
  color: #963626;
  background: #f7dfda;
  overflow-wrap: anywhere;
}

.deployment-steps {
  display: grid;
  gap: 0;
  margin: 14px 0 0;
  padding: 0;
  list-style: none;
}

.deployment-steps li {
  display: grid;
  grid-template-columns: 13px minmax(0, 1fr);
  gap: 9px;
  padding: 8px 0;
  border-top: 1px solid #e3e8e4;
}

.deployment-steps li > i {
  width: 10px;
  height: 10px;
  margin-top: 3px;
  border: 2px solid #aab4af;
  border-radius: 50%;
  background: white;
}

.deployment-steps li > span strong,
.deployment-steps li > span small {
  display: block;
}

.deployment-steps li > span strong {
  font-size: 10px;
}

.deployment-steps li > span small {
  margin-top: 2px;
  color: var(--muted);
  font-size: 9px;
  overflow-wrap: anywhere;
}

.deployment-step-running > i {
  border-color: #c88b2f !important;
  background: #c88b2f !important;
  box-shadow: 0 0 0 4px #c88b2f22;
}

.deployment-step-successful > i {
  border-color: var(--green) !important;
  background: var(--green) !important;
}

.deployment-step-failed > i {
  border-color: #b44938 !important;
  background: #b44938 !important;
}

.deployment-step-skipped {
  opacity: 0.58;
}

.deployment-steps details {
  grid-column: 2;
  margin-top: 4px;
}

.deployment-steps summary {
  color: var(--green);
  font-size: 9px;
  font-weight: 750;
  cursor: pointer;
}

.deployment-steps pre {
  max-height: 230px;
  margin: 7px 0 0;
  padding: 9px;
  overflow: auto;
  color: #dbe8e3;
  background: #172824;
  font-size: 8px;
  line-height: 1.45;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.deployment-status > footer {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  margin-top: 11px;
  padding-top: 10px;
  border-top: 1px solid #e3e8e4;
  color: var(--muted);
  font-size: 8px;
}

.deployment-status > footer code {
  overflow-wrap: anywhere;
  text-align: right;
}

.deployment-dialog {
  width: min(760px, calc(100% - 30px));
}

.deployment-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 13px;
}

.deployment-form-grid label {
  min-width: 0;
}

.deployment-form-grid label small {
  color: var(--muted);
  font-weight: 500;
}

.deployment-wide {
  grid-column: 1 / -1;
}

.deployment-dialog fieldset {
  margin: 18px 0 0;
  padding: 5px 14px 12px;
  border: 1px solid var(--line);
  border-radius: 4px;
}

.deployment-dialog fieldset:disabled {
  opacity: 0.5;
}

.deployment-dialog legend {
  padding: 0 7px;
  color: var(--green);
  font-size: 11px;
  font-weight: 800;
}

.deployment-preflight {
  margin-top: 18px;
  padding: 15px;
  border: 1px solid #a8d2c2;
  border-radius: 4px;
  background: #edf8f3;
}

.deployment-preflight > header {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: start;
}

.deployment-preflight h3 {
  margin: 1px 0 0;
  font-size: 16px;
}

.deployment-preflight > header > span {
  padding: 4px 7px;
  border-radius: 3px;
  color: #176448;
  background: #d3ecdf;
  font-size: 9px;
  font-weight: 850;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.deployment-preflight dl {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 13px 0;
}

.deployment-preflight dl div {
  padding: 7px 9px;
  border-left: 1px solid #c8dfd6;
}

.deployment-preflight dl div:first-child {
  border-left: 0;
}

.deployment-preflight dt {
  color: var(--muted);
  font-size: 8px;
  font-weight: 800;
  text-transform: uppercase;
}

.deployment-preflight dd {
  margin: 2px 0 0;
  font: 700 10px ui-monospace, SFMono-Regular, Consolas, monospace;
  overflow-wrap: anywhere;
}

.deployment-preflight ul {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 5px 13px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.deployment-preflight li {
  color: #176448;
  font-size: 10px;
}

.deployment-preflight li::before {
  content: "✓";
  margin-right: 6px;
  font-weight: 900;
}

.fingerprint-confirmation {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 9px;
  align-items: start;
  margin: 13px 0 0;
  padding-top: 12px;
  border-top: 1px solid #c8dfd6;
}

.fingerprint-confirmation input {
  width: auto;
  margin: 2px 0 0;
}

.fingerprint-confirmation code {
  display: block;
  margin-top: 3px;
  font-size: 9px;
  overflow-wrap: anywhere;
}

@media(max-width:600px) {
  .deployment-form-grid,
  .deployment-preflight dl,
  .deployment-preflight ul {
    grid-template-columns: 1fr;
  }

  .deployment-preflight dl div,
  .deployment-preflight dl div:first-child {
    border: 0;
    border-top: 1px solid #c8dfd6;
  }

  .deployment-status {
    margin-inline: 12px;
  }

  .deployment-status > footer {
    display: block;
  }

  .deployment-status > footer code {
    display: block;
    margin-top: 5px;
    text-align: left;
  }
}

.power-safety-fields {
  display: grid;
  gap: 10px;
  margin: 4px 0;
  padding: 13px;
  border: 1px solid #d7e2de;
  border-radius: 8px;
  background: #f7faf8;
}

.power-impact {
  display: grid;
  gap: 4px;
  padding: 10px 12px;
  border-left: 4px solid #19805f;
  border-radius: 5px;
  background: #eaf6f1;
  color: #174c3c;
  font-size: 11px;
  line-height: 1.45;
}

.power-impact span {
  color: var(--muted);
}

.power-impact-warning {
  border-color: #d88a16;
  background: #fff6e7;
  color: #764900;
}

.power-impact-critical {
  border-color: #c83e2b;
  background: #fff0ed;
  color: #8d281a;
}

.power-impact-unconfigured {
  border-color: #596a65;
  background: #f0f3f2;
  color: #394944;
}

.power-impact-loading {
  opacity: .7;
}

.intervention-power-badge {
  display: inline-flex;
  margin: 2px 4px 2px 0;
  padding: 3px 7px;
  border-radius: 999px;
  background: #dff2ea;
  color: #176448;
  font-size: 9px;
  font-weight: 800;
  text-transform: uppercase;
}

.intervention-power-badge.power-pending {
  background: #fff0d9;
  color: #9a5200;
}

.intervention-description + .power-impact,
.intervention-content header + .power-impact {
  margin-top: 9px;
}

.power-heading {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: end;
  margin-bottom: 22px;
}

.hub-power-heading { margin-bottom:38px; }
.hub-power-metrics { grid-template-columns:repeat(6,1fr); margin-bottom:38px; }
.hub-power-metrics article { min-width:0; padding:18px 20px; }
.hub-power-metrics small { display:block; margin-top:4px; color:#a34837; font-size:9px; font-weight:800; }
.hub-power-filters { display:grid; grid-template-columns:minmax(240px,2fr) repeat(2,minmax(150px,1fr)) auto; gap:12px; align-items:end; padding:20px 22px; margin-bottom:42px; border:1px solid var(--line); background:var(--card); }
.hub-power-filters label { margin:0; font-size:10px; letter-spacing:.07em; text-transform:uppercase; }
.hub-power-filters input,.hub-power-filters select { margin-top:4px; text-transform:none; letter-spacing:normal; }
.hub-power-results-head { margin-bottom:18px; }
.hub-power-room-grid { display:grid; gap:17px; }
.hub-power-room-card { overflow:hidden; border:1px solid var(--line); border-top:5px solid var(--green); background:var(--card); }
.hub-power-room-card.state-critical { border-top-color:#b44938; }
.hub-power-room-card.state-warning { border-top-color:#c88b2f; }
.hub-power-room-card.state-unconfigured { border-top-color:#91a099; }
.hub-power-room-card > header { display:flex; justify-content:space-between; gap:24px; align-items:center; padding:22px 24px; }
.hub-power-room-card > header h2 { margin-top:3px; }
.hub-power-room-card > header p:last-child { margin:5px 0 0; color:var(--muted); font-size:10px; }
.hub-power-room-facts { display:grid; grid-template-columns:repeat(4,1fr); margin:0; border-block:1px solid var(--line); }
.hub-power-room-facts div { padding:13px 18px; border-right:1px solid var(--line); }
.hub-power-room-facts div:last-child { border-right:0; }
.hub-power-room-facts dt { color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.hub-power-room-facts dd { margin:4px 0 0; font:700 20px Georgia,serif; }
.hub-power-risk-list { display:flex; flex-wrap:wrap; gap:6px; padding:14px 20px 0; }
.hub-power-risk-list span { padding:5px 8px; border-radius:999px; color:#53615d; background:#e8ebe5; font-size:8px; font-weight:850; text-transform:uppercase; }
.hub-power-risk-list span.warning { color:#8a5b13; background:#f7ebce; }
.hub-power-risk-list span.critical { color:#963827; background:#f5dfda; }
.hub-power-source-list { display:grid; gap:7px; padding:15px 20px 20px; }
.hub-power-source-row { display:grid; grid-template-columns:minmax(180px,1.4fr) minmax(125px,.7fr) minmax(160px,.9fr); gap:18px; padding:11px 13px; border-left:4px solid var(--green); background:#f5f7f4; }
.hub-power-source-row.source-offline,.hub-power-source-row.load-critical { border-left-color:#b44938; background:#fbefec; }
.hub-power-source-row.source-maintenance,.hub-power-source-row.load-warning { border-left-color:#c88b2f; background:#fbf5e8; }
.hub-power-source-row > div { display:grid; align-content:center; min-width:0; }
.hub-power-source-row strong { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.hub-power-source-row span { margin-top:2px; overflow:hidden; color:var(--muted); font-size:8px; text-overflow:ellipsis; white-space:nowrap; }
.hub-power-unconfigured { margin:0; padding:20px 24px; color:var(--muted); font-size:11px; }
.hub-power-room-card > footer { display:flex; justify-content:space-between; gap:20px; padding:12px 20px; border-top:1px solid var(--line); color:var(--muted); font-size:9px; }
.hub-power-room-card > footer strong { color:#9a691e; }
.hub-power-room-card > footer a { color:var(--green); font-weight:800; }

@media(max-width:900px) {
  .hub-power-metrics { grid-template-columns:repeat(3,1fr); }
  .hub-power-metrics article:nth-child(-n+3) { border-bottom:1px solid var(--line); }
  .hub-power-metrics article:nth-child(3n) { border-right:0; }
}

.power-metrics article:nth-child(-n+3) {
  border-bottom: 1px solid var(--line);
}

.power-metrics article:nth-child(3n) {
  border-right: 0;
}

.power-source-heading {
  display: flex;
  justify-content: space-between;
  gap: 28px;
  align-items: end;
  margin: -30px 0 16px;
}

.power-source-heading h2 {
  margin-top: 3px;
}

.power-source-heading > p {
  max-width: 620px;
  margin: 0;
  color: var(--muted);
  font-size: 11px;
}

.power-source-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(330px, 1fr));
  gap: 14px;
  margin-bottom: 36px;
}

.power-source-card {
  padding: 17px;
  border: 1px solid #d7e0dc;
  border-top: 4px solid #1e8061;
  border-radius: 8px;
  background: #fff;
}

.power-source-card.source-maintenance,
.power-source-card.load-warning {
  border-top-color: #c88b2f;
}

.power-source-card.source-offline,
.power-source-card.load-critical {
  border-top-color: #b44938;
}

.power-source-card > header,
.power-source-card > footer {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
}

.power-source-card h3 {
  margin: 2px 0 0;
  font-size: 20px;
}

.source-status {
  padding: 5px 8px;
  border-radius: 999px;
  color: #176448;
  background: #dff2e9;
  font-size: 9px;
  font-weight: 800;
  text-transform: uppercase;
}

.source-status.status-maintenance {
  color: #8a5b13;
  background: #f7ebce;
}

.source-status.status-offline {
  color: #963827;
  background: #f5dfda;
}

.power-source-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin: 14px 0 0;
  background: var(--line);
}

.power-source-stats div {
  min-width: 0;
  padding: 9px;
  background: #f8faf9;
}

.power-source-stats dt {
  color: var(--muted);
  font-size: 8px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.power-source-stats dd {
  margin: 3px 0 0;
  font: 700 10px ui-monospace, SFMono-Regular, Consolas, monospace;
}

.source-load {
  height: 5px;
  margin-top: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7eeeb;
}

.source-load span {
  display: block;
  height: 100%;
  background: #1e8061;
}

.load-warning .source-load span { background: #c88b2f; }
.load-critical .source-load span { background: #b44938; }

.source-chain {
  display: grid;
  gap: 9px;
  margin: 14px 0;
}

.source-chain > div {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}

.source-chain > div > strong {
  min-width: 76px;
  color: var(--muted);
  font-size: 9px;
  text-transform: uppercase;
}

.source-link-pill {
  display: inline-flex;
  gap: 5px;
  align-items: center;
  padding: 4px 7px;
  border-radius: 4px;
  color: #265448;
  background: #e8f1ed;
  font-size: 9px;
  font-weight: 750;
}

.source-link-pill button {
  padding: 0;
  border: 0;
  color: #9d3d2c;
  background: transparent;
  cursor: pointer;
  font-weight: 900;
}

.source-chain-empty {
  color: var(--muted);
  font-size: 9px;
}

.outage-impact {
  display: grid;
  gap: 3px;
  padding: 9px 10px;
  border-left: 3px solid #1e8061;
  background: #eef7f3;
  font-size: 9px;
}

.outage-impact.warning {
  border-left-color: #c88b2f;
  background: #fbf5e8;
}

.outage-impact.critical {
  border-left-color: #b44938;
  background: #fbefec;
}

.source-impact-details {
  margin-top: 8px;
  border: 1px solid #dce5e1;
  border-radius: 5px;
  background: #fbfcfb;
}

.source-impact-details summary {
  padding: 8px 10px;
  cursor: pointer;
  color: #275b4d;
  font-size: 9px;
  font-weight: 800;
  text-transform: uppercase;
}

.source-impact-groups {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  border-top: 1px solid var(--line);
  background: var(--line);
}

.source-impact-groups > div {
  min-width: 0;
  padding: 9px 10px;
  background: #fff;
}

.source-impact-groups > div > strong {
  color: var(--muted);
  font-size: 8px;
  text-transform: uppercase;
}

.source-impact-groups ul {
  display: grid;
  gap: 4px;
  margin: 7px 0 0;
  padding: 0;
  list-style: none;
}

.source-impact-groups li {
  display: grid;
  font-size: 9px;
  font-weight: 750;
}

.source-impact-groups li span,
.source-impact-groups p {
  margin: 2px 0 0;
  color: var(--muted);
  font-size: 8px;
  font-weight: 500;
}

.redundancy-risks {
  margin: 0 0 36px;
  padding: 18px;
  border: 1px solid #e3c9a0;
  border-left: 5px solid #c88b2f;
  background: #fbf5e8;
}

.redundancy-risks > header {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: center;
}

.redundancy-risks > header h2 {
  margin-top: 2px;
  font-size: 23px;
}

.redundancy-risks > header > strong {
  color: #9a691e;
  font: 700 28px Georgia, serif;
}

.redundancy-risks > p {
  max-width: 820px;
  margin: 8px 0 14px;
  color: #745b36;
  font-size: 10px;
}

.redundancy-risk-list {
  display: grid;
  gap: 7px;
}

.redundancy-risk-list article {
  display: grid;
  grid-template-columns: minmax(150px, .7fr) minmax(260px, 1.3fr);
  gap: 18px;
  align-items: center;
  padding: 10px 12px;
  border: 1px solid #ead8bc;
  background: #fff;
}

.redundancy-risk-list article > div:first-child {
  display: grid;
}

.redundancy-risk-list article a {
  color: #7e5312;
  font-size: 11px;
  font-weight: 850;
}

.redundancy-risk-list article > div:first-child span {
  margin-top: 2px;
  color: var(--muted);
  font-size: 9px;
}

.risk-source-list {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  align-items: center;
}

.risk-source-list strong {
  margin-right: 3px;
  color: #795a29;
  font-size: 8px;
  text-transform: uppercase;
}

.risk-source-list span {
  padding: 4px 6px;
  border-radius: 3px;
  color: #74511a;
  background: #f7ebce;
  font-size: 8px;
  font-weight: 750;
}

.source-maintenance {
  margin: 0 0 36px;
  padding: 18px;
  border: 1px solid #cbdad4;
  border-left: 5px solid #28785f;
  background: #f4f8f6;
}

.source-maintenance > header {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: center;
}

.source-maintenance > header h2 {
  margin-top: 2px;
  font-size: 23px;
}

.source-maintenance > header > strong {
  color: #236a54;
  font: 700 28px Georgia, serif;
}

.source-maintenance > p {
  max-width: 850px;
  margin: 8px 0 14px;
  color: var(--muted);
  font-size: 10px;
}

.source-maintenance-list {
  display: grid;
  gap: 8px;
}

.source-maintenance-card {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 12px;
  border: 1px solid #d4e0db;
  border-left: 4px solid #578873;
  background: #fff;
}

.source-maintenance-card.status-in_progress { border-left-color: #c88b2f; }
.source-maintenance-card.status-completed { border-left-color: #1f7a5a; }
.source-maintenance-card.status-cancelled { border-left-color: #8e9995; opacity: .8; }
.source-maintenance-card.priority-critical { border-left-color: #b44938; }

.source-maintenance-date {
  padding: 7px 5px;
  text-align: center;
  background: #edf2ef;
}

.source-maintenance-date strong,
.source-maintenance-date span {
  display: block;
}

.source-maintenance-date strong {
  font: 700 20px Georgia, serif;
}

.source-maintenance-date span {
  color: var(--muted);
  font-size: 8px;
}

.source-maintenance-content { min-width: 0; }

.source-maintenance-content header > div {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.source-maintenance-status,
.source-maintenance-priority {
  padding: 3px 6px;
  border-radius: 999px;
  color: #315c4e;
  background: #e5f0eb;
  font-size: 8px;
  font-weight: 800;
  text-transform: uppercase;
}

.source-maintenance-priority {
  color: #66553a;
  background: #f3eee4;
}

.source-maintenance-content h3 {
  margin: 5px 0 1px;
  font-size: 14px;
}

.source-maintenance-content header p,
.source-maintenance-description {
  margin: 0;
  color: var(--muted);
  font-size: 9px;
}

.source-maintenance-description { margin-top: 6px; }

.source-maintenance-impact,
.source-intervention-preview {
  display: grid;
  gap: 3px;
  margin-top: 8px;
  padding: 8px 10px;
  border-left: 3px solid #1f7a5a;
  background: #eaf6f1;
  font-size: 9px;
}

.source-maintenance-impact.pending {
  border-left-color: #c88b2f;
  background: #fff6e7;
}

.source-maintenance-actions {
  display: flex;
  gap: 6px;
  align-items: center;
}

.source-intervention-preview {
  margin: 4px 0 14px;
  font-size: 10px;
}

.source-intervention-preview small {
  color: var(--muted);
  line-height: 1.5;
}

.source-impact-confirm {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  margin: 7px 0 2px;
  color: #174c3c;
  font-weight: 750;
}

.source-impact-confirm input {
  flex: 0 0 auto;
  margin-top: 1px;
}

.power-source-card > footer {
  justify-content: flex-end;
  margin-top: 13px;
}

.power-source-empty {
  margin-bottom: 36px;
  padding: 18px;
  border: 1px dashed #bfcac5;
  background: #f8faf9;
}

.power-source-empty p {
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 11px;
}

.pdu-upstream {
  margin-top: 5px !important;
}

.pdu-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(430px, 1fr));
  gap: 18px;
}

.pdu-card {
  padding: 18px;
  border: 1px solid #d8e2de;
  border-top: 4px solid #d56e2b;
  border-radius: 8px;
  background: #fff;
}

.pdu-card.circuit-b {
  border-top-color: #2578a8;
}

.pdu-card > header,
.pdu-capacity-label,
.outlet-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
}

.pdu-card > header h2 {
  margin: 2px 0;
}

.pdu-card > header p,
.pdu-notes {
  margin: 0;
  color: var(--muted);
  font-size: 11px;
}

.pdu-actions {
  display: flex;
  gap: 6px;
}

.pdu-capacity {
  height: 5px;
  margin-top: 14px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7eeeb;
}

.pdu-capacity span {
  display: block;
  height: 100%;
  background: #1e8061;
}

.pdu-capacity-label {
  margin: 5px 0 12px;
  color: var(--muted);
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
}

.outlet-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 7px;
  margin-top: 13px;
}

.outlet-row {
  min-height: 48px;
  padding: 8px;
  border: 1px solid #dce5e1;
  border-radius: 6px;
  background: #f8faf9;
}

.outlet-row.occupied {
  border-color: #b8d9cc;
  background: #eef8f4;
}

.outlet-number {
  min-width: 52px;
  font: 700 9px ui-monospace, SFMono-Regular, Consolas, monospace;
}

.outlet-device {
  display: grid;
  flex: 1;
  min-width: 0;
}

.outlet-device a,
.outlet-device span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.outlet-device a {
  color: #0b5d45;
  font-size: 10px;
  font-weight: 800;
}

.outlet-device span,
.outlet-free {
  color: var(--muted);
  font-size: 9px;
}

.outlet-connect {
  padding: 5px 7px;
  font-size: 9px;
}

@media(max-width:700px) {
  .power-heading {
    display: block;
  }

  .hub-power-filters { grid-template-columns:1fr 1fr; }
  .hub-power-metrics { grid-template-columns:1fr; }
  .hub-power-filters label:first-child,.hub-power-filters .filter-actions { grid-column:1/-1; }
  .hub-power-room-card > header { display:block; }
  .hub-power-room-card > header .button { display:inline-block; margin-top:16px; }
  .hub-power-source-row { grid-template-columns:1fr 1fr; }
  .hub-power-source-row > div:last-child { grid-column:1/-1; }

  .power-metrics article:nth-child(-n+3) {
    border-bottom: 1px solid var(--line);
  }

  .power-source-heading {
    display: block;
  }

  .power-source-heading > p {
    margin-top: 7px;
  }

  .redundancy-risk-list article {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .source-maintenance-card {
    grid-template-columns: 48px minmax(0, 1fr);
  }

  .source-maintenance-actions {
    grid-column: 2;
    justify-content: flex-start;
  }

  .power-heading .heading-actions {
    margin-top: 12px;
  }

  .pdu-grid,
  .outlet-grid {
    grid-template-columns: 1fr;
  }
}

@media(max-width:480px) {
  .hub-power-filters { grid-template-columns:1fr; }
  .hub-power-filters label,.hub-power-filters label:first-child,.hub-power-filters .filter-actions { grid-column:1; }
  .hub-power-filters .filter-actions .button { flex:1; }
  .hub-power-room-facts { grid-template-columns:1fr 1fr; }
  .hub-power-room-facts div:nth-child(2) { border-right:0; }
  .hub-power-room-facts div:nth-child(-n+2) { border-bottom:1px solid var(--line); }
  .hub-power-source-row { grid-template-columns:1fr; }
  .hub-power-source-row > div:last-child { grid-column:1; }
  .hub-power-room-card > footer { display:grid; }
}

@media(max-width:480px) {
  .source-impact-groups {
    grid-template-columns: 1fr;
  }
}

.hub-cabling-metrics {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}

.hub-cabling-metrics article:nth-child(3) {
  border-right: 1px solid var(--line);
}

.hub-cabling-metrics small {
  display: inline-block;
  margin-left: 5px;
  color: var(--green);
  font-size: 10px;
  font-weight: 800;
}

.hub-cabling-filters {
  display: grid;
  grid-template-columns: minmax(240px, 2fr) repeat(3, minmax(145px, 1fr)) auto;
  gap: 12px;
  align-items: end;
  margin-bottom: 42px;
  padding: 18px 20px;
  border: 1px solid var(--line);
  background: var(--card);
}

.hub-cabling-filters label {
  margin: 0;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.hub-cabling-filters input,
.hub-cabling-filters select {
  margin-top: 4px;
  color: var(--ink);
  letter-spacing: normal;
  text-transform: none;
}

.hub-cabling-room-head {
  margin-top: 0;
}

.hub-cabling-room-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
  gap: 14px;
  margin-bottom: 48px;
}

.hub-cabling-room-card {
  display: grid;
  align-content: start;
  border: 1px solid var(--line);
  background: var(--card);
}

.hub-cabling-room-card > header {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: start;
  padding: 18px 19px 13px;
}

.hub-cabling-room-card h3 {
  margin: 2px 0 0;
  font-size: 19px;
}

.hub-cabling-room-card > header > strong {
  color: var(--green);
  font: 700 23px Georgia, serif;
}

.hub-cabling-coverage {
  height: 5px;
  margin: 0 19px 15px;
  overflow: hidden;
  border-radius: 99px;
  background: #e7ece8;
}

.hub-cabling-coverage i {
  display: block;
  height: 100%;
  background: var(--green);
}

.hub-cabling-room-card dl {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin: 0;
  border-block: 1px solid var(--line);
}

.hub-cabling-room-card dl div {
  min-width: 0;
  padding: 11px 9px;
  border-right: 1px solid var(--line);
}

.hub-cabling-room-card dl div:last-child {
  border-right: 0;
}

.hub-cabling-room-card dt {
  color: var(--muted);
  font-size: 8px;
  text-transform: uppercase;
}

.hub-cabling-room-card dd {
  margin: 2px 0 0;
  font-size: 13px;
  font-weight: 800;
}

.hub-cabling-room-card footer {
  padding: 14px 19px 17px;
}

.hub-cabling-room-card footer .button {
  width: 100%;
  text-align: center;
}

.hub-cabling-results-head {
  margin-top: 0;
}

.hub-cable-list {
  display: grid;
  gap: 12px;
}

.hub-cable-card {
  border: 1px solid var(--line);
  border-left: 4px solid #8a9a94;
  background: var(--card);
}

.hub-cable-card.scope-inter_rack {
  border-left-color: #557f9d;
}

.hub-cable-card.scope-inter_room {
  border-left-color: var(--accent);
}

.hub-cable-card > header {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: center;
  padding: 15px 18px;
  border-bottom: 1px solid var(--line);
}

.hub-cable-card > header p,
.hub-cable-card > header h3 {
  margin: 0;
}

.hub-cable-card > header p {
  display: inline;
  margin-left: 7px;
  color: var(--muted);
  font-size: 9px;
}

.hub-cable-card > header h3 {
  margin-top: 4px;
  font-size: 17px;
}

.cable-scope {
  display: inline-block;
  padding: 3px 6px;
  color: #53615d;
  background: #e8ebe5;
  font-size: 8px;
  font-weight: 850;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.cable-scope-inter_rack {
  color: #355f83;
  background: #e1ebf3;
}

.cable-scope-inter_room {
  color: #963626;
  background: #f7dfda;
}

.hub-cable-path {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 38px minmax(0, 1fr);
  gap: 8px;
  align-items: stretch;
  padding: 14px 18px;
}

.hub-cable-path > a {
  min-width: 0;
  padding: 11px 13px;
  border: 1px solid var(--line);
  background: #f7f8f5;
}

.hub-cable-path > a:hover {
  border-color: #92b5a8;
  background: #eef6f2;
}

.hub-cable-path span,
.hub-cable-path strong,
.hub-cable-path small {
  display: block;
  overflow-wrap: anywhere;
}

.hub-cable-path span {
  color: var(--green);
  font-size: 8px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.hub-cable-path strong {
  margin-top: 3px;
  font-size: 13px;
}

.hub-cable-path small {
  margin-top: 2px;
  color: var(--muted);
  font-size: 9px;
}

.hub-cable-path > i {
  display: grid;
  place-items: center;
  color: var(--accent);
  font-size: 17px;
  font-style: normal;
}

.hub-cable-card > .cable-notes {
  margin: 0;
  padding: 0 18px 15px;
}

@media(max-width:1000px) {
  .hub-cabling-metrics {
    grid-template-columns: repeat(3, 1fr);
  }

  .hub-cabling-metrics article:nth-child(3) {
    border-right: 0;
  }

  .hub-cabling-metrics article:nth-child(-n+3) {
    border-bottom: 1px solid var(--line);
  }

  .hub-cabling-filters {
    grid-template-columns: 1fr 1fr;
  }

  .hub-cabling-filters label:first-child,
  .hub-cabling-filters .filter-actions {
    grid-column: 1 / -1;
  }
}

@media(max-width:600px) {
  .hub-cabling-metrics,
  .hub-cabling-filters {
    grid-template-columns: 1fr;
  }

  .hub-cabling-metrics article,
  .hub-cabling-metrics article:nth-child(3) {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

  .hub-cabling-metrics article:last-child {
    border-bottom: 0;
  }

  .hub-cabling-filters label,
  .hub-cabling-filters label:first-child,
  .hub-cabling-filters .filter-actions {
    grid-column: 1;
  }

  .hub-cabling-room-card dl {
    grid-template-columns: 1fr 1fr;
  }

  .hub-cabling-room-card dl div:nth-child(2) {
    border-right: 0;
  }

  .hub-cabling-room-card dl div:nth-child(-n+2) {
    border-bottom: 1px solid var(--line);
  }

  .hub-cable-path {
    grid-template-columns: 1fr;
  }

  .hub-cable-path > i {
    transform: rotate(90deg);
  }
}

.hub-topology-metrics {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}

.hub-topology-metrics small {
  display: block;
  margin-top: 3px;
  color: var(--green);
  font-size: 9px;
  font-weight: 800;
}

.hub-topology-filters {
  display: grid;
  grid-template-columns: repeat(3, minmax(165px, 1fr)) auto;
  gap: 12px;
  align-items: end;
  margin-bottom: 25px;
  padding: 18px 20px;
  border: 1px solid var(--line);
  background: var(--card);
}

.hub-topology-filters label {
  margin: 0;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.hub-topology-filters select {
  margin-top: 4px;
  color: var(--ink);
  letter-spacing: normal;
  text-transform: none;
}

.hub-topology-viewport {
  min-height: 720px;
}

.topology-site-board {
  display: flex;
  flex-direction: column;
  gap: 46px;
  align-items: stretch;
  min-height: 718px;
  padding: 34px;
}

.topology-room-zone {
  position: relative;
  z-index: 2;
  min-width: 650px;
  overflow: hidden;
  border: 2px solid #71857e;
  border-radius: 7px;
  background: #e4eae5cc;
  box-shadow: 0 13px 30px #13231f12;
}

.topology-room-zone > header {
  position: relative;
  z-index: 4;
  display: flex;
  justify-content: space-between;
  gap: 30px;
  align-items: center;
  min-height: 82px;
  padding: 15px 19px;
  color: white;
  background: #285e4f;
}

.topology-room-zone > header p,
.topology-room-zone > header h2,
.topology-room-zone > header span {
  margin: 0;
}

.topology-room-zone > header p {
  color: #9fe2cb;
  font-size: 8px;
  font-weight: 850;
  letter-spacing: .11em;
  text-transform: uppercase;
}

.topology-room-zone > header h2 {
  margin: 2px 0;
  font-size: 21px;
}

.topology-room-zone > header span {
  display: block;
  color: #c7d9d3;
  font-size: 9px;
}

.topology-room-zone > header > div:last-child {
  text-align: right;
}

.topology-room-zone > header a {
  display: inline-block;
  margin-top: 5px;
  color: white;
  font-size: 10px;
  font-weight: 800;
}

.topology-room-racks {
  display: grid;
  grid-template-columns: repeat(var(--topology-room-rack-count), 280px);
  gap: 72px;
  align-items: start;
  width: max-content;
  min-width: 100%;
  padding: 32px;
}

.topology-room-empty {
  display: grid;
  gap: 4px;
  width: min(420px, calc(100vw - 130px));
  padding: 24px;
  border: 1px dashed #9daca6;
  background: #f7f8f5;
}

.topology-room-empty strong {
  font-size: 13px;
}

.topology-room-empty span {
  color: var(--muted);
  font-size: 10px;
}

@media(max-width:1000px) {
  .hub-topology-metrics {
    grid-template-columns: repeat(3, 1fr);
  }

  .hub-topology-metrics article:nth-child(-n+3) {
    border-bottom: 1px solid var(--line);
  }

  .hub-topology-metrics article:nth-child(3n) {
    border-right: 0;
  }

  .hub-topology-filters {
    grid-template-columns: 1fr 1fr;
  }

  .hub-topology-filters .filter-actions {
    grid-column: 1 / -1;
  }
}

@media(max-width:600px) {
  .hub-topology-metrics,
  .hub-topology-filters {
    grid-template-columns: 1fr;
  }

  .hub-topology-metrics article,
  .hub-topology-metrics article:nth-child(3n) {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

  .hub-topology-metrics article:last-child {
    border-bottom: 0;
  }

  .hub-topology-filters label,
  .hub-topology-filters .filter-actions {
    grid-column: 1;
  }

  .topology-site-board {
    gap: 34px;
    padding: 24px;
  }

  .topology-room-zone {
    min-width: 310px;
  }

  .topology-room-zone > header {
    display: block;
  }

  .topology-room-zone > header > div:last-child {
    margin-top: 9px;
    text-align: left;
  }

  .topology-room-racks {
    gap: 50px;
    padding: 24px;
  }
}

.audit-metrics {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  margin-bottom: 24px;
  border: 1px solid var(--line);
  background: var(--card);
}

.audit-metrics article {
  min-width: 0;
  padding: 18px 20px;
  border-right: 1px solid var(--line);
}

.audit-metrics article:last-child {
  border-right: 0;
}

.audit-metrics span,
.audit-metrics small {
  display: block;
  color: var(--muted);
  font-size: 9px;
  font-weight: 800;
}

.audit-metrics span {
  letter-spacing: .07em;
  text-transform: uppercase;
}

.audit-metrics strong {
  font: 700 25px Georgia, serif;
}

.audit-metrics small {
  margin-top: 3px;
  color: var(--green);
}

.audit-filters {
  display: grid;
  grid-template-columns: minmax(230px, 2fr) repeat(3, minmax(125px, 1fr)) auto;
  gap: 12px;
  align-items: end;
  margin-bottom: 40px;
  padding: 18px 20px;
  border: 1px solid var(--line);
  background: var(--card);
}

.audit-filters-hub {
  grid-template-columns: minmax(230px, 2fr) repeat(4, minmax(125px, 1fr)) auto;
}

.audit-filters label {
  margin: 0;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.audit-filters input,
.audit-filters select {
  margin-top: 4px;
  color: var(--ink);
  letter-spacing: normal;
  text-transform: none;
}

.audit-results-head {
  margin-top: 0;
}

.audit-scope {
  display: inline-block;
  padding: 4px 7px;
  border-radius: 3px;
  font-size: 9px;
  font-weight: 800;
}

.audit-scope-room {
  color: #176448;
  background: #e3f0ea;
}

.audit-scope-hub {
  color: #355f83;
  background: #e1ebf3;
}

.action-resolve {
  color: #355f83;
  background: #e1ebf3;
}

.action-revoke {
  color: #963626;
  background: #f7dfda;
}

.audit-limit-note {
  margin: 17px 0 0;
  padding: 12px 14px;
  color: var(--muted);
  border-left: 4px solid #557f9d;
  background: #edf4f7;
  font-size: 10px;
}

@media(max-width:1000px) {
  .audit-metrics {
    grid-template-columns: repeat(3, 1fr);
  }

  .audit-metrics article:nth-child(-n+3) {
    border-bottom: 1px solid var(--line);
  }

  .audit-metrics article:nth-child(3n) {
    border-right: 0;
  }

  .audit-filters,
  .audit-filters-hub {
    grid-template-columns: 1fr 1fr;
  }

  .audit-filters .audit-search,
  .audit-filters .filter-actions {
    grid-column: 1 / -1;
  }
}

@media(max-width:600px) {
  .audit-metrics,
  .audit-filters,
  .audit-filters-hub {
    grid-template-columns: 1fr;
  }

  .audit-metrics article,
  .audit-metrics article:nth-child(3n) {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

  .audit-metrics article:last-child {
    border-bottom: 0;
  }

  .audit-filters label,
  .audit-filters .audit-search,
  .audit-filters .filter-actions {
    grid-column: 1;
  }

  .audit-filters .filter-actions .button {
    flex: 1;
  }
}

/* Recherche globale */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.search-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 32px;
  margin-bottom: 34px;
}

.search-scope {
  flex: 0 0 auto;
  max-width: 280px;
  padding: 8px 12px;
  overflow: hidden;
  border: 1px solid #bfd5ca;
  border-radius: 99px;
  color: #176448;
  background: #edf6f1;
  font-size: 11px;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.global-search-form {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto auto auto;
  gap: 10px;
  align-items: center;
  margin-bottom: 42px;
  padding: 12px;
  border: 1px solid var(--line);
  background: var(--card);
  box-shadow: 0 14px 42px #233d350d;
}

.global-search-form > span {
  color: var(--green);
  font-size: 26px;
  text-align: center;
}

.global-search-form input {
  margin: 0;
  padding: 13px 8px;
  border: 0;
  background: transparent;
  font-size: 17px;
}

.global-search-form input:focus {
  outline: 0;
  border: 0;
}

.global-search-form > a {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  color: var(--muted);
  background: #eef1ec;
  font-size: 20px;
}

.global-search-form > a:hover { color: var(--ink); }
.global-search-form kbd {
  padding: 5px 8px;
  border: 1px solid #d5dbd5;
  border-bottom-width: 2px;
  border-radius: 4px;
  color: var(--muted);
  background: #f7f8f5;
  font: 700 10px ui-monospace, SFMono-Regular, Consolas, monospace;
  white-space: nowrap;
}

.search-welcome {
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr);
  gap: 24px;
  align-items: center;
  padding: 34px;
  border: 1px solid var(--line);
  background: linear-gradient(135deg, #fff, #f0f6f2);
}

.search-welcome-mark {
  display: grid;
  place-items: center;
  width: 74px;
  height: 74px;
  border-radius: 50%;
  color: #fff;
  background: var(--green);
  font-size: 36px;
}

.search-welcome h2 { font-size: 26px; }
.search-welcome p { max-width: 760px; margin: 8px 0 0; color: var(--muted); }
.search-metrics { grid-template-columns: repeat(4, 1fr); margin-bottom: 34px; }
.search-groups { display: grid; gap: 22px; }
.search-group { border: 1px solid var(--line); background: var(--card); }
.search-group > header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 20px;
  padding: 21px 24px 17px;
  border-bottom: 1px solid var(--line);
}

.search-group > header h2 { font-size: 23px; }
.search-group > header > span { color: var(--muted); font-size: 10px; }
.search-result-list { display: grid; }
.search-result {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) 24px;
  gap: 15px;
  align-items: center;
  min-width: 0;
  padding: 16px 24px;
  border-bottom: 1px solid var(--line);
  transition: background .15s ease;
}

.search-result:last-child { border-bottom: 0; }
.search-result:hover { background: #f7faf7; }
.search-result-kind {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border: 1px solid #cfdbd4;
  border-radius: 4px;
  color: var(--green);
  background: #edf6f1;
  font: 800 12px ui-monospace, SFMono-Regular, Consolas, monospace;
}

.search-result-body { display: block; min-width: 0; }
.search-result-body > span:first-child { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
.search-result-body strong { overflow-wrap: anywhere; }
.search-result-body small,
.search-result-body p { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.search-result-body small { margin-top: 2px; color: #485b54; font-size: 11px; }
.search-result-body p { margin: 3px 0 0; color: var(--muted); font-size: 11px; }
.search-badge {
  padding: 3px 6px;
  border-radius: 3px;
  color: #52605b;
  background: #e7ebe7;
  font-size: 9px;
  font-style: normal;
  font-weight: 800;
}

.search-badge.tone-active,
.search-badge.tone-completed,
.search-badge.tone-applied,
.search-badge.tone-local { color: #176448; background: #dff2e9; }
.search-badge.tone-warning,
.search-badge.tone-maintenance,
.search-badge.tone-in_progress,
.search-badge.tone-planned { color: #795319; background: #f5e6c1; }
.search-badge.tone-offline,
.search-badge.tone-failed,
.search-badge.tone-cross-room { color: #963626; background: #f7dfda; }
.search-result-arrow { color: #99a49f; font-size: 18px; transition: .15s ease; }
.search-result:hover .search-result-arrow { color: var(--accent); transform: translateX(3px); }
.search-truncated { margin: 18px 0 0; color: var(--muted); font-size: 11px; text-align: center; }

.dns-check-inline { display: flex; align-items: center; gap: 8px; margin: 7px 0 0; }
.dns-check-button { appearance: none; width: max-content; margin-top: 5px; padding: 3px 8px; border: 1px solid #b9c8c1; border-radius: 999px; background: #f8faf9; color: #176448; cursor: pointer; font: inherit; font-size: 9px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.dns-check-button:hover { border-color: #247c5d; background: #edf7f2; }
.dns-check-button:disabled { cursor: wait; opacity: .6; }
.dns-check-result { display: block; margin-top: 4px; max-width: 360px; color: var(--muted); font-size: 9px; line-height: 1.4; }
.dns-check-match { color: #176448; }
.dns-check-mismatch,
.dns-check-unresolved,
.dns-check-timeout,
.dns-check-error { color: #a53a27; }
.dns-check-resolved { color: #795319; }
.inventory-bulk-toolbar { position: sticky; top: 12px; z-index: 8; display: flex; flex-wrap: wrap; align-items: end; gap: 12px; margin: 0 0 12px; padding: 12px 14px; border: 1px solid #a9cbbb; border-radius: 10px; background: #edf7f2; box-shadow: 0 8px 24px rgb(20 65 48 / 12%); }
.inventory-bulk-toolbar[hidden] { display: none; }
.inventory-bulk-toolbar > strong { align-self: center; margin-right: auto; color: #176448; }
.inventory-bulk-toolbar label { min-width: 180px; }
.inventory-select-column { width: 34px; text-align: center; }
.inventory-select-column input { width: 17px; height: 17px; accent-color: #247c5d; cursor: pointer; }
.inventory-bulk-dns-summary { flex-basis: 100%; color: #365d50; }
.inventory-network-quality { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0 0 16px; }
.inventory-network-quality a { display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; padding: 12px 14px; border: 1px solid #d8e2dd; border-radius: 10px; background: #fff; color: #243d35; text-decoration: none; }
.inventory-network-quality a:hover { border-color: #70aa94; box-shadow: 0 5px 16px rgb(20 65 48 / 10%); }
.inventory-network-quality span { font-weight: 700; }
.inventory-network-quality strong { grid-row: span 2; align-self: center; font-size: 1.45rem; color: #176448; }
.inventory-network-quality small { color: #65756f; }
.inventory-pagination { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px; margin: 16px 0; }
.inventory-pagination > :last-child { justify-self: end; }
.inventory-pagination strong { color: #4c625a; font-size: .86rem; text-align: center; }

@media(max-width:700px) {
  .inventory-bulk-toolbar { align-items: stretch; flex-direction: column; }
  .inventory-bulk-toolbar > strong { align-self: auto; }
  .inventory-bulk-toolbar .button { width: 100%; }
  .inventory-network-quality { grid-template-columns: 1fr; }
  .inventory-pagination { grid-template-columns: 1fr; }
  .inventory-pagination > * { justify-self: stretch !important; text-align: center; }
  .inventory-pagination > span:empty { display: none; }
}

@media(max-width:800px) {
  .search-heading { display: block; }
  .search-scope { display: inline-block; margin-top: 20px; }
  .global-search-form { grid-template-columns: 28px minmax(0, 1fr) auto auto; }
  .global-search-form kbd { display: none; }
  .search-metrics { grid-template-columns: 1fr 1fr; }
  .search-metrics article:nth-child(2) { border-right: 0; }
  .search-metrics article:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
}

@media(max-width:480px) {
  .global-search-form { grid-template-columns: 24px minmax(0, 1fr) auto; }
  .global-search-form .button { grid-column: 1 / -1; width: 100%; }
  .search-welcome { grid-template-columns: 1fr; padding: 26px; }
  .search-welcome-mark { width: 58px; height: 58px; font-size: 28px; }
  .search-result { grid-template-columns: 36px minmax(0, 1fr); padding: 15px 16px; }
  .search-result-kind { width: 34px; height: 34px; }
  .search-result-arrow { display: none; }
  .search-group > header { display: block; }
  .search-group > header > span { display: block; margin-top: 7px; }
}

.catalog-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:40px; margin-bottom:42px; }
.catalog-heading h1 { font-size:54px; }
.catalog-heading .heading-actions { justify-content:flex-end; }
.catalog-metrics { grid-template-columns:repeat(4,1fr); margin-bottom:34px; }
.catalog-filters { display:grid; grid-template-columns:2fr 1fr 1fr auto; gap:12px; align-items:end; margin-bottom:34px; padding:18px; border:1px solid var(--line); background:#fff; }
.catalog-results-head { align-items:center; }
.catalog-results-head > p { max-width:460px; color:var(--muted); font-size:11px; text-align:right; }
.catalog-table-wrap { overflow:auto; border:1px solid var(--line); background:#fff; }
.catalog-table { width:100%; min-width:1120px; border-collapse:collapse; }
.catalog-table th { padding:12px 14px; color:var(--muted); background:#f3f5f2; font-size:9px; letter-spacing:.07em; text-align:left; text-transform:uppercase; }
.catalog-table td { padding:14px; border-top:1px solid var(--line); vertical-align:middle; }
.catalog-table td:first-child strong,.catalog-table td:first-child span,.catalog-table td:first-child small { display:block; }
.catalog-table td:first-child span { margin-top:2px; }
.catalog-table td:first-child small { max-width:420px; margin-top:4px; color:var(--muted); white-space:pre-line; }
.catalog-model-specs { display:flex; flex-wrap:wrap; gap:4px; margin-top:7px; }
.catalog-table td:first-child .catalog-model-specs span { display:inline-flex; padding:3px 6px; border-radius:999px; color:#31584a; background:#e8f2ed; font-size:9px; font-weight:700; }
.catalog-unspecified { color:var(--muted); font-size:10px; }
.catalog-origin { display:inline-flex; padding:4px 7px; border-radius:999px; color:#31584a; background:#e4f1eb; font-size:9px; font-weight:800; text-transform:uppercase; }
.catalog-origin.custom { color:#80561d; background:#f5e8c8; }
.catalog-source-links { display:flex; flex-direction:column; align-items:flex-start; gap:6px; white-space:nowrap; font-size:10px; }
.catalog-actions { display:flex; gap:6px; }
.catalog-port-button { min-height:32px; padding:6px 9px; white-space:nowrap; }
.catalog-port-profiles summary { cursor:pointer; color:#176448; font-size:10px; }
.catalog-port-profiles ul { min-width:250px; margin:9px 0 0; padding:0; list-style:none; }
.catalog-port-profiles li { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:7px 0; border-top:1px solid var(--line); }
.catalog-port-profiles li > span:first-child strong,.catalog-port-profiles li > span:first-child small { display:block; }
.catalog-port-profiles li > span:first-child small { margin-top:2px; color:var(--muted); font-size:9px; }
.catalog-profile-actions { display:flex; gap:4px; }
.catalog-dialog { width:min(680px,calc(100% - 30px)); max-height:calc(100vh - 30px); overflow:auto; }
.equipment-model-picker { margin:0 0 18px; padding:14px; border:1px solid #bcd5ca; border-radius:6px; background:#f1f8f4; }
.equipment-model-picker label { margin:0; }
.equipment-model-picker label + label { margin-top:10px; }
.equipment-model-picker small { display:block; margin-top:7px; color:#4d675d; }
.equipment-model-picker > a { display:inline-block; margin-top:5px; color:#176448; font-size:10px; font-weight:750; }
.equipment-model-picker .equipment-model-ports { display:flex; align-items:center; gap:7px; margin-top:9px; color:#176448; font-size:11px; font-weight:750; }
.equipment-model-picker .equipment-model-ports[hidden] { display:none; }
.equipment-model-picker .equipment-model-ports input { width:17px; height:17px; accent-color:#247c5d; }

@media(max-width:900px) {
  .catalog-heading { display:block; }
  .catalog-heading .heading-actions { justify-content:flex-start; margin-top:22px; }
  .catalog-filters { grid-template-columns:1fr 1fr; }
  .catalog-filters label:first-child,.catalog-filters .filter-actions { grid-column:1/-1; }
}

@media(max-width:520px) {
  .catalog-heading h1 { font-size:42px; }
  .catalog-heading .heading-actions { display:grid; }
  .catalog-heading .button { width:100%; margin-top:0; }
  .catalog-filters { grid-template-columns:1fr; }
  .catalog-filters label,.catalog-filters .filter-actions { grid-column:1; }
  .catalog-results-head { display:block; }
  .catalog-results-head > p { margin-top:8px; text-align:left; }
}

.stock-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:40px; margin-bottom:38px; }
.stock-heading h1 { font-size:54px; }
.stock-heading .heading-actions { justify-content:flex-end; }
.stock-metrics { grid-template-columns:repeat(5,minmax(0,1fr)); margin-bottom:34px; }
.stock-metrics article { min-width:0; padding:19px 21px; }
.stock-metrics small { display:block; margin-top:4px; color:var(--muted); font-size:9px; }
.stock-filters { display:grid; grid-template-columns:minmax(220px,2fr) minmax(150px,1fr) minmax(160px,1fr) auto; gap:12px; align-items:end; margin-bottom:38px; padding:18px 20px; border:1px solid var(--line); background:var(--card); }
.stock-filters label { margin:0; font-size:10px; letter-spacing:.07em; text-transform:uppercase; }
.stock-filters input,.stock-filters select { margin-top:4px; text-transform:none; letter-spacing:normal; }
.stock-results-head > p { max-width:510px; margin:0; color:var(--muted); font-size:11px; text-align:right; }
.stock-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.stock-card { display:flex; flex-direction:column; min-width:0; border:1px solid var(--line); border-top:4px solid #73817c; background:var(--card); }
.stock-card.stock-state-available { border-top-color:var(--green); }
.stock-card.stock-state-reserved { border-top-color:#39719a; }
.stock-card.stock-state-blocked { border-top-color:#c88b2f; }
.stock-card.stock-state-archived { border-top-color:#73817c; background:#fafbf9; }
.stock-card > header { display:flex; justify-content:space-between; gap:20px; padding:21px 22px 17px; border-bottom:1px solid var(--line); }
.stock-card > header > div { min-width:0; }
.stock-card h3 { margin:7px 0 1px; overflow-wrap:anywhere; font-size:20px; }
.stock-card header p { min-height:18px; margin:0; overflow:hidden; color:var(--muted); font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.stock-state,.stock-room-badge { display:inline-flex; margin-right:5px; padding:3px 7px; border-radius:3px; color:#4c5b56; background:#e8ebe7; font-size:9px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.stock-state-available .stock-state { color:#176448; background:#dff2e9; }
.stock-state-reserved .stock-state { color:#355f83; background:#e1ebf3; }
.stock-state-blocked .stock-state { color:#795319; background:#f5e6c1; }
.stock-room-badge { color:#176448; background:#edf5f1; }
.stock-room-badge:hover { color:var(--accent); }
.stock-size { display:grid; place-items:center; flex:0 0 auto; width:42px; height:42px; border:1px solid #d8dfda; border-radius:50%; color:#4f625b; font:800 12px ui-monospace,SFMono-Regular,Consolas,monospace; }
.stock-card > dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); margin:0; padding:0 22px; }
.stock-card > dl div { min-width:0; padding:13px 0; border-bottom:1px solid #edf0ec; }
.stock-card > dl div:nth-child(odd) { padding-right:14px; border-right:1px solid #edf0ec; }
.stock-card > dl div:nth-child(even) { padding-left:14px; }
.stock-card dt { color:var(--muted); font-size:9px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.stock-card dd { margin:2px 0 0; overflow:hidden; font-size:11px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.stock-reservation { display:flex; justify-content:space-between; gap:14px; margin:15px 22px 0; padding:11px 12px; border-left:3px solid #39719a; background:#edf3f7; }
.stock-reservation strong,.stock-reservation span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.stock-reservation strong { font-size:11px; }
.stock-reservation span { color:#52656f; font-size:10px; }
.stock-reasons { margin:15px 22px 0; padding:10px 12px; border:1px solid #e3e5df; background:#f7f8f5; font-size:10px; }
.stock-reasons summary { color:#5f6d68; cursor:pointer; font-weight:800; }
.stock-reasons ul { display:grid; gap:5px; margin:9px 0 0; padding-left:18px; color:#5d6965; }
.stock-state-blocked .stock-reasons { border-color:#ead8b9; background:#fcf8ed; }
.stock-ready { margin:15px 22px 0; padding:9px 11px; color:#176448; background:#edf7f2; font-size:10px; font-weight:800; }
.stock-card > footer { display:flex; flex-wrap:wrap; gap:7px; margin-top:auto; padding:18px 22px 21px; }
.stock-card > footer .button { padding:8px 11px; font-size:10px; }
.stock-receipt-dialog { width:min(820px,calc(100% - 30px)); max-height:calc(100vh - 30px); overflow:auto; }
.stock-receipt-dialog > form > .form-help { margin:-8px 0 22px; }
.stock-receipt-section { margin-top:16px; padding:18px; border:1px solid var(--line); background:#fafbf8; }
.stock-receipt-section h3 { margin:0 0 15px; font:700 18px Georgia,serif; }
.stock-receipt-section .equipment-model-picker { background:#eef6f2; }
.stock-receipt-count { margin:9px 0 0; color:#176448; font-size:11px; font-weight:800; }
.stock-receipt-count.invalid { color:#a53a27; }
.stock-receipt-dialog > form > .actions { position:sticky; bottom:-1px; z-index:2; margin:18px -24px -24px; padding:16px 24px; border-top:1px solid var(--line); background:#fff; }

@media(max-width:900px) {
  .stock-heading { display:block; }
  .stock-heading .heading-actions { justify-content:flex-start; margin-top:22px; }
  .stock-metrics { grid-template-columns:repeat(3,1fr); }
  .stock-metrics article:nth-child(3) { border-right:0; }
  .stock-metrics article:nth-child(-n+3) { border-bottom:1px solid var(--line); }
  .stock-filters { grid-template-columns:1fr 1fr; }
  .stock-filters label:first-child,.stock-filters .filter-actions { grid-column:1/-1; }
}

@media(max-width:700px) {
  .stock-grid { grid-template-columns:1fr; }
  .stock-results-head { display:block; }
  .stock-results-head > p { margin-top:8px; text-align:left; }
}

@media(max-width:520px) {
  .stock-heading h1 { font-size:42px; }
  .stock-heading .heading-actions { display:grid; }
  .stock-heading .button { width:100%; }
  .stock-metrics { grid-template-columns:1fr; }
  .stock-metrics article,.stock-metrics article:nth-child(3) { border-right:0; border-bottom:1px solid var(--line); }
  .stock-metrics article:last-child { border-bottom:0; }
  .stock-filters { grid-template-columns:1fr; }
  .stock-filters label,.stock-filters label:first-child,.stock-filters .filter-actions { grid-column:1; }
  .stock-filters .filter-actions { display:grid; }
  .stock-card > dl { grid-template-columns:1fr; }
  .stock-card > dl div:nth-child(odd),.stock-card > dl div:nth-child(even) { padding-inline:0; border-right:0; }
  .stock-receipt-dialog .field-row { grid-template-columns:1fr; }
}

.inventory-schedule-overview { margin-bottom:42px; }
.inventory-schedule-overview > header { display:flex; justify-content:space-between; gap:30px; margin-bottom:18px; }
.inventory-schedule-overview > header h2 { margin:5px 0 4px; font-size:30px; }
.inventory-schedule-overview > header p:last-child { max-width:760px; margin:0; color:var(--muted); font-size:11px; }
.inventory-schedule-metrics { grid-template-columns:repeat(4,minmax(0,1fr)); margin-bottom:18px; }
.inventory-schedule-metrics article { min-width:0; }
.inventory-schedule-metrics small { display:block; margin-top:4px; color:var(--muted); font-size:9px; }
.inventory-schedule-metrics .metric-alert strong { color:#a13d2d; }
.inventory-schedule-metrics .metric-warning strong { color:#9a691e; }
.inventory-schedule-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.inventory-schedule-grid.single { grid-template-columns:1fr; }
.inventory-schedule-card { overflow:hidden; border:1px solid var(--line); border-left:5px solid #89958f; background:#fff; }
.inventory-schedule-card.schedule-scheduled { border-left-color:#247c5d; }
.inventory-schedule-card.schedule-due_soon,.inventory-schedule-card.schedule-due_today { border-left-color:#c4862a; }
.inventory-schedule-card.schedule-overdue { border-left-color:#b84632; }
.inventory-schedule-card > header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding:18px 20px; }
.inventory-schedule-card > header h3 { margin:4px 0 0; font-size:20px; }
.schedule-state { flex:none; padding:4px 8px; border-radius:999px; color:#54615d; background:#e8ece9; font-size:8px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.schedule-scheduled .schedule-state { color:#176448; background:#dcf1e7; }
.schedule-due_soon .schedule-state,.schedule-due_today .schedule-state { color:#795319; background:#f5e6c1; }
.schedule-overdue .schedule-state { color:#fff; background:#a53a27; }
.inventory-schedule-card > dl { display:grid; grid-template-columns:repeat(3,1fr); margin:0; border-top:1px solid var(--line); }
.inventory-schedule-card > dl div { min-width:0; padding:13px 15px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.inventory-schedule-card > dl div:nth-child(3n) { border-right:0; }
.inventory-schedule-card > dl div:nth-last-child(-n+3) { border-bottom:0; }
.inventory-schedule-card dt { color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.inventory-schedule-card dd { margin:4px 0 0; font:800 14px ui-monospace,SFMono-Regular,Consolas,monospace; overflow-wrap:anywhere; }
.inventory-schedule-card dd small { color:var(--muted); font:700 9px Arial,sans-serif; }
.inventory-schedule-card > footer { padding:15px 20px; }
.inventory-schedule-form { padding:18px 20px 20px; border-top:1px solid var(--line); background:#f7f9f7; }
.inventory-schedule-form .checkbox-line { display:flex; align-items:center; gap:9px; margin:0 0 13px; }
.inventory-schedule-form .checkbox-line input { width:auto; margin:0; accent-color:#247c5d; }
.inventory-schedule-form .field-row { grid-template-columns:repeat(3,minmax(0,1fr)); }
.inventory-schedule-form .form-help { margin-top:12px; }

.control-register-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:40px; margin-bottom:36px; }
.control-register-heading h1 { font-size:52px; }
.control-register-heading .heading-actions { justify-content:flex-end; }
.control-register-metrics { grid-template-columns:repeat(6,minmax(0,1fr)); margin-bottom:22px; }
.control-register-metrics article { min-width:0; padding:18px 20px; }
.control-register-metrics small { display:block; margin-top:4px; color:var(--muted); font-size:9px; }
.control-register-metrics .metric-alert strong { color:#a13d2d; }
.control-register-metrics .metric-warning strong { color:#9a691e; }
.control-register-filters { display:grid; grid-template-columns:minmax(230px,1.5fr) repeat(3,minmax(150px,1fr)) auto; gap:10px; align-items:end; margin-bottom:34px; padding:17px; border:1px solid var(--line); background:#fff; }
.control-register-filters label { margin:0; }
.control-register-filters .filter-actions { display:flex; gap:7px; }
.control-register-results-head { margin-bottom:14px; }
.control-register-table-wrap { overflow:auto; border:1px solid var(--line); background:#fff; }
.control-register-table { width:100%; min-width:1080px; border-collapse:collapse; }
.control-register-table th { padding:11px 13px; color:var(--muted); background:#f2f5f2; font-size:8px; letter-spacing:.06em; text-align:left; text-transform:uppercase; }
.control-register-table td { padding:14px 13px; border-top:1px solid var(--line); vertical-align:top; }
.control-register-table td strong,.control-register-table td small,.control-register-table td code { display:block; }
.control-register-table td small { margin-top:4px; color:var(--muted); font-size:9px; }
.control-register-table td code { margin-top:5px; color:#53615d; background:transparent; font-size:8px; }
.control-register-table td:last-child { display:flex; gap:6px; }
.control-register-table .button { padding:7px 9px; font-size:8px; white-space:nowrap; }
.control-register-room { display:inline-flex; margin-bottom:5px; padding:3px 6px; border-radius:999px; color:#355f83; background:#e5edf4; font-size:8px; font-weight:800; text-transform:uppercase; }
.register-result,.register-integrity { display:inline-flex; width:max-content; padding:4px 7px; border-radius:999px; font-size:8px; font-weight:850; text-transform:uppercase; }
.register-result.result-compliant,.register-result.result-resolved,.register-integrity.valid { color:#176448; background:#dcf1e7; }
.register-result.result-action_required,.register-integrity.invalid { color:#fff; background:#a53a27; }
.register-result.result-cancelled,.register-integrity.neutral { color:#53615d; background:#e8ece9; }
.register-integrity.legacy { color:#795319; background:#f5e6c1; }
.register-row-action_required,.integrity-invalid { background:#fff7f4; }
.campaign-attestation { display:grid; grid-template-columns:minmax(0,1fr) minmax(250px,.7fr); gap:22px; margin-bottom:26px; padding:20px 22px; border:1px solid #a9cbbb; border-left:5px solid #247c5d; background:#f0f7f3; }
.campaign-attestation.attestation-legacy { border-color:#dfc8a8; border-left-color:#c4862a; background:#fffaf1; }
.campaign-attestation.attestation-invalid { border-color:#e0aea5; border-left-color:#b84632; background:#fff4f1; }
.campaign-attestation h2 { margin:5px 0; font-size:24px; }
.campaign-attestation p { margin:0; color:var(--muted); font-size:10px; }
.campaign-attestation blockquote { margin:12px 0 0; padding-left:12px; border-left:2px solid #89aa9c; color:#40514b; font-size:10px; }
.campaign-attestation > code { align-self:center; padding:12px; overflow-wrap:anywhere; color:#176448; background:#fff; font-size:9px; }

.inventory-certificate { max-width:900px; }
.inventory-certificate-header { display:flex; align-items:flex-start; justify-content:space-between; gap:28px; padding-bottom:22px; border-bottom:3px solid #152b26; }
.inventory-certificate-header h1 { margin:7px 0; font-size:42px; }
.inventory-certificate-header p { margin:0; color:var(--muted); }
.certificate-state { padding:7px 10px; border-radius:999px; color:#53615d; background:#e8ece9; font-size:9px; font-weight:850; text-transform:uppercase; }
.certificate-state.valid { color:#176448; background:#dcf1e7; }
.certificate-state.legacy { color:#795319; background:#f5e6c1; }
.certificate-state.invalid { color:#fff; background:#a53a27; }
.inventory-certificate-meta { display:grid; grid-template-columns:repeat(4,1fr); margin:22px 0; border:1px solid var(--line); }
.inventory-certificate-meta div { padding:13px; border-right:1px solid var(--line); }
.inventory-certificate-meta div:last-child { border:0; }
.inventory-certificate-meta dt,.inventory-certificate-proof dt { color:var(--muted); font-size:8px; font-weight:850; text-transform:uppercase; }
.inventory-certificate-meta dd,.inventory-certificate-proof dd { margin:4px 0 0; font-size:10px; font-weight:800; overflow-wrap:anywhere; }
.inventory-certificate-result,.inventory-certificate-proof { margin-top:24px; padding:20px; border:1px solid var(--line); }
.inventory-certificate-result h2,.inventory-certificate-proof h2 { margin:0 0 10px; }
.inventory-certificate-result > p,.inventory-certificate-proof > p { color:var(--muted); font-size:10px; }
.inventory-certificate-result > div { margin-top:15px; padding:12px; background:#f3f5f2; }
.inventory-certificate-result > div p { margin:5px 0 0; white-space:pre-line; }
.inventory-certificate-proof code { display:block; padding:15px; overflow-wrap:anywhere; color:#176448; background:#f1f7f4; font-size:10px; }
.inventory-certificate-proof dl { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin:17px 0 0; }

.campaign-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:40px; margin-bottom:38px; }
.campaign-heading h1 { font-size:54px; }
.campaign-heading .heading-actions { justify-content:flex-end; }
.campaign-metrics { grid-template-columns:repeat(4,minmax(0,1fr)); margin-bottom:34px; }
.campaign-overview-metrics { grid-template-columns:repeat(5,minmax(0,1fr)); }
.campaign-metrics article { min-width:0; }
.campaign-metrics small { display:block; margin-top:4px; color:var(--muted); font-size:9px; }
.campaign-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:17px; }
.campaign-card { border:1px solid var(--line); border-top:4px solid #78857f; background:var(--card); }
.campaign-card.campaign-status-in_progress { border-top-color:var(--green); }
.campaign-card > header { display:flex; justify-content:space-between; gap:20px; padding:22px 23px 16px; }
.campaign-card > header > div { min-width:0; }
.campaign-card > header > strong { color:#176448; font:800 20px ui-monospace,SFMono-Regular,Consolas,monospace; }
.campaign-card h2 { margin:8px 0 3px; font-size:22px; overflow-wrap:anywhere; }
.campaign-card header p { margin:0; color:var(--muted); font-size:10px; }
.campaign-status,.campaign-room,.campaign-scope { display:inline-flex; margin-right:5px; padding:3px 7px; border-radius:999px; color:#4e5e58; background:#e8ebe8; font-size:9px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.campaign-status-in_progress .campaign-status { color:#176448; background:#dcf1e7; }
.campaign-room { color:#355f83; background:#e5edf4; }
.campaign-scope { color:#70501c; background:#f5e8c9; }
.campaign-progress { height:7px; margin:0 23px; overflow:hidden; border-radius:999px; background:#e9eeeb; }
.campaign-progress span { display:block; height:100%; border-radius:inherit; background:#247c5d; }
.campaign-card > dl { display:grid; grid-template-columns:repeat(4,1fr); margin:18px 23px 0; border:1px solid var(--line); }
.campaign-card > dl div { padding:11px; border-right:1px solid var(--line); }
.campaign-card > dl div:last-child { border:0; }
.campaign-card dt { color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.campaign-card dd { margin:3px 0 0; font:800 16px ui-monospace,SFMono-Regular,Consolas,monospace; }
.campaign-notes { margin:14px 23px 0; color:var(--muted); font-size:10px; white-space:pre-line; }
.campaign-card footer { display:flex; flex-wrap:wrap; align-items:center; gap:10px; padding:18px 23px 22px; }
.campaign-open-discrepancies { color:#a53a27; font-size:9px; font-weight:800; text-transform:uppercase; }
.campaign-overdue-badge { padding:3px 7px; border-radius:999px; color:#fff; background:#a53a27; font-size:8px; font-weight:800; text-transform:uppercase; }
.campaign-dialog { width:min(620px,calc(100% - 30px)); }
.campaign-scan-panel { display:grid; grid-template-columns:minmax(260px,.8fr) minmax(420px,1.2fr); gap:34px; margin-bottom:28px; padding:25px; border:1px solid #a9cbbb; border-left:5px solid var(--green); background:#f0f7f3; }
.campaign-scan-panel h2,.campaign-close-panel h2 { margin:7px 0; font-size:25px; }
.campaign-scan-panel p,.campaign-close-panel p { margin:0; color:var(--muted); font-size:11px; }
.campaign-scan-panel form { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.campaign-scan-panel form label:first-child,.campaign-scan-panel form label:nth-child(3),.campaign-scan-panel form .form-error { grid-column:1/-1; }
.campaign-scan-panel form label { margin:0; }
.campaign-scan-panel form .button { align-self:end; }
.campaign-instructions { display:grid; grid-template-columns:120px 1fr; gap:20px; margin-bottom:28px; padding:17px 20px; border:1px solid var(--line); background:#fff; }
.campaign-instructions strong { color:#176448; font-size:10px; text-transform:uppercase; }
.campaign-instructions p { margin:0; color:var(--muted); font-size:11px; white-space:pre-line; }
.campaign-results-head { display:flex; align-items:end; justify-content:space-between; gap:30px; margin:32px 0 15px; }
.campaign-results-head h2 { margin:5px 0 0; }
.campaign-results-head > p { max-width:520px; margin:0; color:var(--muted); font-size:10px; text-align:right; }
.campaign-table-wrap { overflow:auto; border:1px solid var(--line); background:#fff; }
.campaign-table { width:100%; min-width:1120px; border-collapse:collapse; }
.campaign-table th { padding:11px 14px; color:var(--muted); background:#f2f5f2; font-size:9px; letter-spacing:.06em; text-align:left; text-transform:uppercase; }
.campaign-table td { padding:14px; border-top:1px solid var(--line); vertical-align:top; }
.campaign-table td strong,.campaign-table td small,.campaign-table td a { display:block; }
.campaign-table td small { margin-top:3px; color:var(--muted); font-size:9px; }
.campaign-table td a { margin-top:6px; color:#176448; font-size:9px; font-weight:800; }
.campaign-row-missing { background:#fff5f2; }
.campaign-row-misplaced { background:#fff9ec; }
.campaign-row-resolved { background:#f4faf7; }
.campaign-result { display:inline-flex; padding:4px 8px; border-radius:999px; font-size:9px; font-weight:800; text-transform:uppercase; }
.result-observed { color:#176448; background:#dcf1e7; }
.result-misplaced { color:#795319; background:#f5e6c1; }
.result-missing { color:#a53a27; background:#f8dfda; }
.result-pending { color:#53645e; background:#e8ece9; }
.campaign-resolution-summary { display:grid; grid-template-columns:repeat(4,minmax(120px,1fr)) minmax(260px,2fr); margin:-14px 0 30px; border:1px solid var(--line); background:#fff; }
.campaign-resolution-summary article { padding:15px 18px; border-right:1px solid var(--line); }
.campaign-resolution-summary article span { display:block; color:var(--muted); font-size:8px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.campaign-resolution-summary article strong { display:block; margin-top:3px; font:800 18px ui-monospace,SFMono-Regular,Consolas,monospace; }
.campaign-resolution-summary > p { align-self:center; margin:0; padding:15px 18px; color:var(--muted); font-size:9px; }
.campaign-resolution { display:inline-flex; margin-bottom:6px; padding:4px 7px; border-radius:999px; font-size:8px; font-weight:800; text-transform:uppercase; }
.resolution-open { color:#a53a27; background:#f8dfda; }
.resolution-investigating { color:#795319; background:#f5e6c1; }
.resolution-resolved { color:#176448; background:#dcf1e7; }
.campaign-resolution-button { display:block; margin-top:8px; padding:5px 7px; border:1px solid #afc7bc; border-radius:4px; color:#176448; background:#fff; cursor:pointer; font:inherit; font-size:8px; font-weight:800; }
.campaign-resolution-button:hover { border-color:#247c5d; background:#eef7f2; }
.campaign-overdue { color:#a53a27 !important; font-weight:800; }
.campaign-intervention-link { margin-top:6px !important; }
.campaign-action-plan { display:grid; gap:10px; margin:4px 0 2px; padding:14px; border:1px solid #dfc8a8; border-radius:6px; background:#fffaf1; }
.campaign-action-plan[hidden] { display:none; }
.campaign-action-plan > strong { color:#795319; }
.campaign-action-plan > p,.campaign-action-plan > small { margin:0; color:var(--muted); }
.campaign-action-plan .field-row { margin:0; }
.campaign-action-plan .checkbox { margin:0; }
.campaign-reconciliation { display:grid; gap:10px; margin:4px 0 2px; padding:14px; border:1px solid #b8d7ca; border-radius:6px; background:#f1f8f4; }
.campaign-reconciliation[hidden] { display:none; }
.campaign-reconciliation > strong { color:#145c43; }
.campaign-reconciliation > p,.campaign-reconciliation > small { margin:0; color:var(--muted); }
.campaign-close-panel { display:grid; grid-template-columns:1fr minmax(430px,1fr); gap:35px; margin-top:24px; padding:24px; border:1px solid #dfc8a8; background:#fffaf1; }
.campaign-close-actions { display:flex; align-items:flex-start; justify-content:flex-end; gap:9px; }
.campaign-close-actions form:first-child { display:grid; grid-template-columns:1fr auto; gap:9px; }
.campaign-close-actions .checkbox,.campaign-close-actions .form-error { grid-column:1/-1; }
.campaign-close-actions .checkbox { margin:0; font-size:10px; }
.campaign-close-actions .checkbox input { width:17px; margin-right:6px; accent-color:#247c5d; }
.inventory-action-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:40px; margin-bottom:34px; }
.inventory-action-heading h1 { font-size:52px; }
.inventory-action-heading .heading-actions { justify-content:flex-end; }
.inventory-action-metrics { grid-template-columns:repeat(5,minmax(0,1fr)); margin-bottom:24px; }
.inventory-action-metrics small { display:block; margin-top:4px; color:var(--muted); font-size:9px; }
.inventory-action-filters { display:grid; grid-template-columns:minmax(210px,1.5fr) repeat(3,minmax(150px,1fr)) auto; gap:10px; align-items:end; margin-bottom:32px; padding:17px; border:1px solid var(--line); background:#fff; }
.inventory-action-filters label { margin:0; }
.inventory-action-filters .filter-actions { display:flex; gap:7px; }
.inventory-action-results-head { display:flex; align-items:end; justify-content:space-between; gap:24px; margin-bottom:14px; }
.inventory-action-results-head h2 { margin:5px 0 0; }
.inventory-action-table-wrap { overflow:auto; border:1px solid var(--line); background:#fff; }
.inventory-action-table { width:100%; min-width:1180px; border-collapse:collapse; }
.inventory-action-table th { padding:11px 13px; color:var(--muted); background:#f2f5f2; font-size:8px; letter-spacing:.06em; text-align:left; text-transform:uppercase; }
.inventory-action-table td { padding:14px 13px; border-top:1px solid var(--line); vertical-align:top; }
.inventory-action-table td strong,.inventory-action-table td small,.inventory-action-table td time,.inventory-action-table td > span,.inventory-action-table td > a { display:block; }
.inventory-action-table td small { margin-top:4px; color:var(--muted); font-size:9px; }
.inventory-action-table td p { max-width:320px; margin:7px 0 0; color:var(--muted); font-size:9px; white-space:pre-line; }
.inventory-action-table td a:not(.button) { color:#176448; font-size:10px; font-weight:800; }
.inventory-action-table .button { padding:7px 10px; font-size:9px; white-space:nowrap; }
.inventory-action-timing { display:inline-flex !important; width:max-content; padding:4px 7px; border-radius:999px; font-size:8px; font-weight:800; text-transform:uppercase; }
.inventory-action-timing.timing-overdue { color:#fff; background:#a53a27; }
.inventory-action-timing.timing-due_soon { color:#795319; background:#f5e6c1; }
.inventory-action-timing.timing-scheduled { color:#176448; background:#dcf1e7; }
.inventory-action-timing.timing-unassigned { color:#a53a27; background:#f8dfda; }
.inventory-action-room { display:inline-flex !important; width:max-content; margin-bottom:6px; padding:3px 6px; border-radius:999px; color:#355f83; background:#e5edf4; font-size:8px; font-weight:800; text-transform:uppercase; }
.inventory-action-table .action-warning { color:#a53a27; font-weight:800; }
.action-row-overdue { background:#fff5f2; }
.action-row-unassigned { background:#fff9f5; }
.action-row-due_soon { background:#fffdf6; }
.inventory-action-empty { margin-top:0; }
.scan-identification { width:min(720px,100%); margin:20px auto; padding:36px; border:1px solid var(--line); background:#fff; text-align:center; }
.scan-identification-mark { display:grid; place-items:center; width:60px; height:60px; margin:0 auto 20px; border-radius:50%; color:#fff; background:#247c5d; font-size:28px; }
.scan-identification h1 { margin:8px 0; font-size:48px; overflow-wrap:anywhere; }
.scan-device-model { color:var(--muted); }
.scan-identification > dl { display:grid; grid-template-columns:repeat(3,1fr); margin:26px 0; border:1px solid var(--line); text-align:left; }
.scan-identification > dl div { min-width:0; padding:14px; border-right:1px solid var(--line); }
.scan-identification > dl div:last-child { border:0; }
.scan-identification dt { color:var(--muted); font-size:9px; font-weight:800; text-transform:uppercase; }
.scan-identification dd { margin:4px 0 0; overflow-wrap:anywhere; font-size:11px; font-weight:800; }
.scan-campaign-card,.scan-message { padding:22px; border:1px solid #acd0c0; background:#eff8f3; text-align:left; }
.scan-campaign-card h2 { margin:7px 0 13px; }
.scan-campaign-card form { display:grid; gap:11px; }
.scan-already-observed { padding:9px; color:#795319; background:#fff4d8; font-size:10px; }
.scan-message-warning { border-color:#e5c58d; background:#fff8ea; }
.scan-links { display:flex; justify-content:center; gap:22px; margin-top:22px; font-size:10px; font-weight:800; }

@media(max-width:850px) {
  .control-register-heading { display:block; }
  .control-register-heading .heading-actions { justify-content:flex-start; margin-top:20px; }
  .control-register-metrics { grid-template-columns:repeat(2,1fr); }
  .control-register-filters { grid-template-columns:1fr 1fr; }
  .control-register-filters .filter-actions { grid-column:1/-1; }
  .campaign-attestation { grid-template-columns:1fr; }
  .inventory-schedule-metrics { grid-template-columns:1fr 1fr; }
  .inventory-schedule-grid { grid-template-columns:1fr; }
  .inventory-schedule-form .field-row { grid-template-columns:1fr; }
  .campaign-heading { display:block; }
  .campaign-heading .heading-actions { justify-content:flex-start; margin-top:20px; }
  .campaign-metrics { grid-template-columns:1fr 1fr; }
  .campaign-grid { grid-template-columns:1fr; }
  .campaign-scan-panel,.campaign-close-panel { grid-template-columns:1fr; }
  .campaign-close-actions { justify-content:flex-start; }
  .campaign-resolution-summary { grid-template-columns:repeat(2,1fr); }
  .campaign-resolution-summary > p { grid-column:1/-1; border-top:1px solid var(--line); }
  .inventory-action-heading { display:block; }
  .inventory-action-heading .heading-actions { justify-content:flex-start; margin-top:20px; }
  .inventory-action-metrics { grid-template-columns:repeat(2,1fr); }
  .inventory-action-filters { grid-template-columns:1fr 1fr; }
  .inventory-action-filters .filter-actions { grid-column:1/-1; }
}

@media(max-width:560px) {
  .control-register-heading h1 { font-size:39px; }
  .control-register-heading .heading-actions { display:grid; }
  .control-register-metrics,.control-register-filters { grid-template-columns:1fr; }
  .control-register-filters .filter-actions { grid-column:1; }
  .inventory-certificate-header { display:block; }
  .certificate-state { display:inline-flex; margin-top:12px; }
  .inventory-certificate-meta,.inventory-certificate-proof dl { grid-template-columns:1fr; }
  .inventory-certificate-meta div { border-right:0; border-bottom:1px solid var(--line); }
  .inventory-schedule-metrics { grid-template-columns:1fr; }
  .inventory-schedule-card > dl { grid-template-columns:1fr 1fr; }
  .inventory-schedule-card > dl div,.inventory-schedule-card > dl div:nth-child(3n) { border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
  .inventory-schedule-card > dl div:nth-child(2n) { border-right:0; }
  .inventory-schedule-card > dl div:nth-last-child(-n+2) { border-bottom:0; }
  .campaign-heading h1,.scan-identification h1 { font-size:39px; }
  .campaign-heading .heading-actions { display:grid; }
  .campaign-metrics { grid-template-columns:1fr; }
  .campaign-card > dl { grid-template-columns:1fr 1fr; }
  .campaign-card > dl div:nth-child(2) { border-right:0; }
  .campaign-card > dl div:nth-child(-n+2) { border-bottom:1px solid var(--line); }
  .campaign-scan-panel form { grid-template-columns:1fr; }
  .campaign-scan-panel form label,.campaign-scan-panel form .form-error { grid-column:1; }
  .campaign-results-head { display:block; }
  .campaign-results-head > p { margin-top:8px; text-align:left; }
  .campaign-resolution-summary { grid-template-columns:1fr; }
  .campaign-resolution-summary article { border-right:0; border-bottom:1px solid var(--line); }
  .campaign-resolution-summary > p { grid-column:1; border-top:0; }
  .campaign-close-actions { display:grid; }
  .campaign-close-actions form:first-child { grid-template-columns:1fr; }
  .inventory-action-heading h1 { font-size:39px; }
  .inventory-action-heading .heading-actions { display:grid; }
  .inventory-action-metrics,.inventory-action-filters { grid-template-columns:1fr; }
  .inventory-action-filters .filter-actions { grid-column:1; display:grid; }
  .inventory-action-results-head { display:block; }
  .inventory-action-results-head .count { display:block; margin-top:8px; }
  .scan-identification { padding:24px 18px; }
  .scan-identification > dl { grid-template-columns:1fr; }
  .scan-identification > dl div { border-right:0; border-bottom:1px solid var(--line); }
  .scan-links { flex-direction:column; gap:10px; }
}

/* Application shell 2026 ------------------------------------------------- */
:root {
  --ink:#17231f;
  --muted:#65736e;
  --paper:#f3f6f4;
  --card:#fff;
  --line:#dce4df;
  --accent:#e45a3c;
  --accent-dark:#c8482e;
  --green:#176c52;
  --nav:#10231d;
  --nav-soft:#19342b;
  --nav-muted:#91a79f;
  --sidebar-width:264px;
  --topbar-height:68px;
  --radius:10px;
  --shadow:0 8px 28px rgba(22,45,36,.07);
}

html { background:var(--paper); scroll-behavior:smooth; }
body { min-height:100vh; color:var(--ink); background:var(--paper); font-size:14px; }
body.app-authenticated::before { position:fixed; z-index:-1; inset:0 0 auto var(--sidebar-width); height:260px; content:""; pointer-events:none; background:linear-gradient(180deg,#edf3ef 0,rgba(243,246,244,0) 100%); }
.demo-banner { position:fixed; z-index:130; right:20px; bottom:18px; left:calc(var(--sidebar-width) + 20px); min-height:48px; padding:8px 14px; border:1px solid #ffffff24; border-radius:10px; box-shadow:0 14px 42px rgba(57,29,6,.28); }

.topbar {
  position:sticky;
  z-index:100;
  top:0;
  height:var(--topbar-height);
  padding:0 24px;
  border-bottom:1px solid #dce4df;
  color:var(--ink);
  background:rgba(255,255,255,.94);
  box-shadow:0 1px 8px rgba(20,43,35,.04);
  backdrop-filter:blur(14px);
}
.topbar-primary,.topbar-tools { display:flex; align-items:center; }
.topbar-primary { gap:13px; }
.topbar-tools { gap:10px; }
.brand { gap:10px; color:var(--ink); font-size:16px; }
.brand-mark { width:36px; height:36px; border:0; border-radius:9px; color:#fff; background:var(--nav); box-shadow:0 5px 14px rgba(16,35,29,.16); font-size:9px; font-weight:900; }
.brand-copy,.brand-copy strong,.brand-copy small { display:block; }
.brand-copy strong { line-height:1.05; }
.brand-copy small { margin-top:3px; color:var(--muted); font-size:8px; font-weight:750; letter-spacing:.11em; text-transform:uppercase; }
.topbar-search { display:flex; align-items:center; gap:8px; min-width:210px; height:38px; padding:0 10px; border:1px solid var(--line); border-radius:8px; color:var(--muted); background:#f7f9f8; }
.topbar-search:hover { border-color:#b8c8c1; color:var(--ink); background:#fff; }
.topbar-search > span { color:#7f918a; font-size:18px; line-height:1; }
.topbar-search b { font-size:11px; font-weight:650; }
.topbar-search kbd { margin-left:auto; padding:2px 6px; border:1px solid #d5ddd9; border-radius:4px; color:#7c8b86; background:#fff; box-shadow:0 1px 1px #17231f0b; font:700 8px ui-monospace,SFMono-Regular,Consolas,monospace; }
.topbar-alerts { position:relative; display:grid; place-items:center; width:38px; height:38px; border:1px solid var(--line); border-radius:8px; color:#84928d; background:#fff; }
.topbar-alerts:hover { color:var(--accent); border-color:#e5b6aa; }
.topbar-alerts > span:first-child { font-size:13px; }
.topbar-alerts .nav-alert-count { position:absolute; top:-5px; right:-5px; min-width:17px; padding:2px 4px; border:2px solid #fff; border-radius:10px; color:#fff; background:#b84231; font-size:7px; text-align:center; }
.topbar .room-context { display:grid; gap:1px; max-width:190px; height:40px; margin:0; padding:5px 11px; border:1px solid #cfe0d9; border-radius:8px; color:var(--green); background:#eff7f3; }
.topbar .room-context small { color:#698179; font-size:7px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.topbar .room-context strong { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.topbar-account { display:flex; gap:9px; align-items:center; min-width:140px; margin-left:2px; padding-left:11px; border-left:1px solid var(--line); }
.topbar-account > span:last-child,.topbar-account strong,.topbar-account small { display:block; }
.topbar-account strong { max-width:130px; overflow:hidden; font-size:10px; line-height:1.2; text-overflow:ellipsis; white-space:nowrap; }
.topbar-account small { margin-top:2px; color:var(--muted); font-size:8px; }
.user-avatar { display:grid; place-items:center; width:32px; height:32px; flex:0 0 32px; border-radius:9px; color:#fff; background:var(--green); font-size:11px; font-weight:850; }
.status { color:var(--muted); background:#fff; }

.app-sidebar {
  position:fixed;
  z-index:90;
  inset:var(--topbar-height) auto 0 0;
  display:flex;
  flex-direction:column;
  width:var(--sidebar-width);
  color:#dce8e3;
  background:var(--nav);
  box-shadow:7px 0 24px rgba(16,35,29,.07);
}
.mobile-nav-head { display:none; }
.sidebar-scroll { flex:1; padding:20px 14px 28px; overflow-y:auto; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:#385248 transparent; }
.nav-section + .nav-section { margin-top:23px; }
.nav-section > p { margin:0 10px 7px; color:var(--nav-muted); font-size:8px; font-weight:850; letter-spacing:.13em; text-transform:uppercase; }
.nav-item { position:relative; display:flex; gap:11px; align-items:center; min-height:39px; margin:2px 0; padding:8px 11px; border-radius:8px; color:#bed0c9; font-size:11px; font-weight:650; transition:background .15s ease,color .15s ease,transform .15s ease; }
.nav-item:hover,.nav-item:focus-visible { color:#fff; background:#ffffff0b; outline:0; transform:translateX(2px); }
.nav-item.active { color:#fff; background:var(--nav-soft); box-shadow:inset 3px 0 0 #ef785e; }
.nav-icon { display:grid; place-items:center; width:22px; height:22px; flex:0 0 22px; color:#91aaa0; font:750 13px/1 ui-sans-serif,system-ui,sans-serif; }
.nav-item.active .nav-icon { color:#ff9e88; }
.nav-icon-alert { border:1px solid currentColor; border-radius:50%; font-size:9px; }
.sidebar-footer { flex:0 0 auto; padding:13px 14px 16px; border-top:1px solid #ffffff12; background:#0d1f19; }
.sidebar-footer .demo-nav-form { padding:0 0 10px; border:0; }
.sidebar-footer .demo-nav-form button { width:100%; padding:9px 10px; border:1px solid #ffffff1e; border-radius:7px; color:#afc3bb; background:#ffffff08; font-size:9px; text-align:left; }
.sidebar-user { display:grid; grid-template-columns:32px minmax(0,1fr) 30px; gap:9px; align-items:center; }
.sidebar-user > span:nth-child(2),.sidebar-user strong,.sidebar-user small { display:block; min-width:0; }
.sidebar-user strong { overflow:hidden; color:#f1f6f4; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.sidebar-user small { margin-top:1px; color:var(--nav-muted); font-size:8px; }
.sidebar-user .logout { display:grid; place-items:center; width:30px; height:30px; border-radius:7px; color:#91a79f; }
.sidebar-user .logout:hover { color:#fff; background:#ffffff0d; }

.mobile-menu-toggle { display:none; }
.mobile-nav-backdrop { display:none; }
main { width:min(1180px,calc(100% - 40px)); max-width:1510px; margin:0 auto; padding:38px 0 80px; }
body.app-authenticated main { width:auto; margin:0 0 0 var(--sidebar-width); padding-inline:clamp(28px,3vw,48px); }

h1,h2 { font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif; }
h1 { max-width:850px; font-size:clamp(34px,4vw,48px); font-weight:760; line-height:1.08; letter-spacing:-.038em; }
h2 { font-size:24px; font-weight:750; line-height:1.18; letter-spacing:-.025em; }
.eyebrow { margin-bottom:7px; color:var(--accent); font-size:8px; letter-spacing:.14em; }
.lede { max-width:720px; margin-top:12px; font-size:14px; line-height:1.65; }
.hero,.rack-heading,.audit-heading,.users-heading,.inventory-heading,.cabling-heading,.topology-heading,.backup-heading,.intervention-heading,.instance-heading,.account-heading,.network-heading,.capacity-heading,.installation-heading,.room-hub-heading,.alert-heading,.notification-heading,.control-register-heading,.campaign-heading,.inventory-action-heading { align-items:flex-start; margin-bottom:30px; }
.heading-actions,.inventory-heading-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }

.button { min-height:38px; padding:9px 14px; border-radius:8px; font-size:10px; font-weight:750; transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease; }
.button:hover:not(:disabled) { transform:translateY(-1px); }
.button.primary { background:var(--green); box-shadow:0 6px 16px rgba(23,108,82,.16); }
.button.primary:hover { background:#125941; box-shadow:0 8px 20px rgba(23,108,82,.22); }
.button.secondary { border-color:#d7e0db; color:#34453f; background:#fff; }
.button.secondary:hover { border-color:#b8c8c1; background:#f9fbfa; }
.button:disabled { opacity:.48; cursor:not-allowed; box-shadow:none; }
.readonly-badge,.count,.unit-badge { border-radius:6px; }

input,select,textarea { border-color:#d5ded9; border-radius:7px; color:var(--ink); background:#fff; transition:border-color .15s ease,box-shadow .15s ease; }
input:focus,select:focus,textarea:focus { border-color:#64a58d; outline:0; box-shadow:0 0 0 3px rgba(39,126,95,.12); }
dialog { border:0; border-radius:14px; box-shadow:0 28px 90px rgba(9,26,20,.25); }
dialog::backdrop { background:rgba(7,21,16,.64); backdrop-filter:blur(3px); }
.dialog-head { padding-bottom:14px; border-bottom:1px solid var(--line); }

.metrics,.network-metrics,.topology-metrics,.cabling-metrics,.capacity-metrics,.instance-card,.rack-card,.room-card,.network-card,.audit-entry,.dashboard-interventions,.dashboard-inventory-actions,.continuity-card,.settings-card,.account-card,.alert-list,.inventory-table-wrap { border-radius:var(--radius); box-shadow:var(--shadow); overflow:hidden; }
.metrics,.network-metrics,.topology-metrics,.cabling-metrics,.capacity-metrics { margin-bottom:36px; }
.metrics article,.network-metrics article { padding:18px 20px; }
.metrics span,.network-metrics span { font-size:8px; font-weight:750; }
.metrics strong,.network-metrics strong { font-family:Inter,ui-sans-serif,system-ui,sans-serif; font-size:23px; }
.rack-card,.room-card,.network-card,.audit-entry { transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease; }
.rack-card:hover,.room-card:hover,.network-card:hover { border-color:#b9c9c1; box-shadow:0 14px 35px rgba(20,48,38,.1); }
.inventory-filters,.network-filters,.intervention-filters,.alert-filters,.hub-alert-filters,.installation-filters,.control-register-filters,.inventory-action-filters { margin-bottom:28px; border-radius:var(--radius); box-shadow:var(--shadow); }
.inventory-table th,.responsive-table th { position:sticky; z-index:1; top:0; background:#eef3f0; }
.inventory-table tr:hover td,.responsive-table tbody tr:hover td { background:#f8fbf9; }
.empty { border-radius:var(--radius); background:rgba(255,255,255,.68); }
.toast { border-radius:9px; box-shadow:0 14px 45px rgba(9,26,20,.2); }

@media(max-width:1100px) {
  body.app-authenticated::before { left:0; }
  .demo-banner { left:20px; }
  .topbar { padding-inline:16px; }
  .mobile-menu-toggle { display:flex; height:38px; padding:0 10px; border-color:var(--line); border-radius:8px; color:var(--ink); background:#fff; }
  .mobile-menu-toggle:hover,.mobile-menu-toggle:focus-visible { border-color:#b8c8c1; color:var(--green); background:#f8faf9; }
  .mobile-menu-toggle span:first-child { font-size:15px; }
  .app-sidebar { z-index:112; inset:0 auto 0 0; width:min(86vw,300px); height:100dvh; box-shadow:18px 0 55px rgba(5,19,14,.38); transform:translateX(-105%); visibility:hidden; transition:transform .22s ease,visibility .22s; }
  .app-sidebar.is-open { transform:translateX(0); visibility:visible; }
  .mobile-nav-head { display:flex; flex:0 0 auto; justify-content:space-between; align-items:center; min-height:var(--topbar-height); padding:0 14px 0 17px; border-bottom:1px solid #ffffff16; }
  .sidebar-brand { display:flex; gap:10px; align-items:center; color:#fff; }
  .sidebar-brand > span:last-child,.sidebar-brand strong,.sidebar-brand small { display:block; }
  .sidebar-brand strong { font-size:13px; }
  .sidebar-brand small { margin-top:2px; color:var(--nav-muted); font-size:7px; letter-spacing:.1em; text-transform:uppercase; }
  .mobile-nav-head button { display:grid; place-items:center; width:38px; height:38px; border-radius:8px; }
  .mobile-nav-head button:hover { background:#ffffff0d; }
  .mobile-nav-backdrop { position:fixed; z-index:111; inset:0; display:block; background:rgba(5,18,13,.7); opacity:0; visibility:hidden; transition:opacity .22s ease,visibility .22s; }
  .mobile-nav-backdrop.is-open { opacity:1; visibility:visible; }
  body.app-authenticated main { width:auto; max-width:none; margin-left:0; padding:34px clamp(20px,4vw,38px) 72px; }
}

@media(max-width:760px) {
  :root { --topbar-height:62px; }
  .topbar { height:var(--topbar-height); }
  .brand-copy small,.topbar-search b,.topbar-search kbd,.topbar-account > span:last-child { display:none; }
  .topbar-search { min-width:0; width:38px; padding:0; justify-content:center; }
  .topbar-search > span { font-size:20px; }
  .topbar-account { min-width:0; padding-left:8px; }
  .topbar .room-context { max-width:130px; }
  body.app-authenticated main { padding:28px 18px 64px; }
  h1 { font-size:34px; }
  .lede { font-size:13px; }
  .hero,.rack-heading,.audit-heading,.users-heading,.inventory-heading,.cabling-heading,.topology-heading,.backup-heading,.intervention-heading,.instance-heading,.account-heading,.network-heading,.capacity-heading,.installation-heading,.room-hub-heading,.alert-heading,.notification-heading,.control-register-heading,.campaign-heading,.inventory-action-heading { margin-bottom:24px; }
}

@media(max-width:520px) {
  .topbar { padding-inline:10px; }
  .topbar-primary { gap:7px; }
  .mobile-menu-toggle > span:last-child,.topbar .room-context small,.brand-copy { display:none; }
  .mobile-menu-toggle { width:38px; padding:0; justify-content:center; }
  .topbar .room-context { max-width:105px; height:36px; padding:8px 9px; }
  .topbar-tools { gap:6px; }
  .topbar-alerts,.topbar-search { width:36px; height:36px; }
  .user-avatar { width:30px; height:30px; flex-basis:30px; }
  body.app-authenticated main { padding-inline:12px; }
  h1 { font-size:30px; }
  .demo-banner { right:10px; bottom:10px; left:10px; }
  .heading-actions,.inventory-heading-actions { display:grid; justify-content:stretch; }
  .heading-actions .button,.inventory-heading-actions .button { width:100%; margin-top:0; text-align:center; }
}

/* Client settings center ------------------------------------------------ */
.settings-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:35px; margin-bottom:25px; }
.settings-product-state { display:flex; gap:10px; align-items:center; flex:0 0 auto; min-width:190px; padding:11px 13px; border:1px solid #cce0d8; border-radius:9px; color:#285d4a; background:#eff7f3; }
.settings-product-state > i { width:9px; height:9px; flex:0 0 9px; border-radius:50%; background:#2b9a70; box-shadow:0 0 0 4px #d5eee4; }
.settings-product-state span,.settings-product-state strong,.settings-product-state small { display:block; }
.settings-product-state strong { font-size:10px; }
.settings-product-state small { margin-top:2px; color:#647a72; font:700 8px ui-monospace,SFMono-Regular,Consolas,monospace; }
.settings-menu { position:sticky; z-index:12; top:calc(var(--topbar-height) + 8px); display:flex; gap:4px; margin:0 0 28px; padding:5px; overflow-x:auto; border:1px solid var(--line); border-radius:10px; background:rgba(255,255,255,.94); box-shadow:0 5px 20px rgba(20,48,38,.06); scrollbar-width:none; backdrop-filter:blur(12px); }
.settings-menu::-webkit-scrollbar { display:none; }
.settings-menu a { flex:0 0 auto; padding:8px 12px; border-radius:6px; color:#64736e; font-size:9px; font-weight:750; white-space:nowrap; }
.settings-menu a:hover { color:var(--ink); background:#f0f4f2; }
.settings-menu a.active { color:#fff; background:var(--green); box-shadow:0 4px 12px rgba(23,108,82,.16); }
.settings-health-warning { margin-bottom:25px; padding:15px 18px; border:1px solid #e4c38d; border-left:4px solid #c88b2f; border-radius:8px; color:#6b4b17; background:#fff8e9; }
.settings-health-warning strong { font-size:11px; }
.settings-health-warning ul { margin:7px 0 0; padding-left:17px; font-size:9px; }
.settings-group { margin-bottom:34px; }
.settings-group > header { display:flex; align-items:flex-end; justify-content:space-between; gap:30px; margin-bottom:14px; }
.settings-group > header h2 { font-size:20px; }
.settings-group > header > p { max-width:460px; margin:0; color:var(--muted); font-size:10px; text-align:right; }
.settings-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.settings-tile { position:relative; display:grid; grid-template-columns:38px minmax(0,1fr) 18px; gap:13px; align-items:start; min-height:145px; padding:18px; border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:0 6px 22px rgba(20,48,38,.05); transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease; }
.settings-tile:hover { border-color:#aebfb7; box-shadow:0 13px 30px rgba(20,48,38,.1); transform:translateY(-2px); }
.settings-tile.featured { border-top:3px solid var(--green); }
.settings-tile-icon { display:grid; place-items:center; width:38px; height:38px; border-radius:9px; color:#176c52; background:#e6f2ed; font-size:13px; font-weight:850; }
.settings-tile > div { min-width:0; }
.settings-tile strong { display:block; font-size:12px; }
.settings-tile p { margin:6px 0 12px; color:var(--muted); font-size:9px; line-height:1.55; }
.settings-tile small { display:inline-block; padding:4px 7px; border-radius:5px; color:#536a61; background:#eff3f1; font-size:8px; font-weight:750; }
.settings-tile > b { color:#9aaba4; font-size:16px; font-weight:500; transition:transform .15s ease,color .15s ease; }
.settings-tile:hover > b { color:var(--accent); transform:translateX(3px); }
.permission-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-bottom:18px; }
.permission-role-card { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:3px 12px; padding:17px 18px; border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:0 6px 22px rgba(20,48,38,.05); }
.permission-role-card .role-badge { grid-row:1 / span 2; justify-self:start; }
.permission-role-card > strong { font-size:22px; line-height:1; text-align:right; }
.permission-role-card > small { color:var(--muted); font-size:8px; font-weight:750; text-align:right; text-transform:uppercase; }
.permission-foundation-note { margin-bottom:25px; }
.permission-foundation-note p { margin:6px 0 0; color:var(--muted); font-size:10px; line-height:1.6; }
.permission-table-wrap { border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:0 6px 22px rgba(20,48,38,.05); }
.permission-table { min-width:760px; margin:0; }
.permission-table th:not(:first-child),.permission-table td:not(:first-child) { width:120px; text-align:center; }
.permission-table td:first-child { min-width:340px; }
.permission-table td:first-child strong,.permission-table td:first-child small,.permission-table td:first-child code { display:block; }
.permission-table td:first-child strong { font-size:10px; }
.permission-table td:first-child small { margin-top:4px; color:var(--muted); font-size:9px; line-height:1.45; }
.permission-table td:first-child code { width:max-content; margin-top:5px; padding:3px 6px; border-radius:4px; color:#52655e; background:#eef3f0; font-size:8px; }
.permission-category th { position:static; padding:9px 16px; color:#176c52; background:#e8f2ee; font-size:8px; letter-spacing:.12em; text-align:left!important; text-transform:uppercase; }
.permission-state { display:inline-grid; place-items:center; width:24px; height:24px; border-radius:50%; font-size:11px; font-weight:850; }
.permission-state.granted { color:#116b4c; background:#dff2e9; }
.permission-state.denied { color:#98a49f; background:#f0f2f1; }
.settings-system { display:grid; grid-template-columns:240px minmax(0,1fr); gap:30px; padding:22px; border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:var(--shadow); }
.settings-system dl { display:grid; grid-template-columns:1fr 1fr; gap:1px; margin:0; background:var(--line); }
.settings-system dl div { min-width:0; padding:11px 13px; background:#f8faf9; }
.settings-system dt { color:var(--muted); font-size:7px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.settings-system dd { margin:3px 0 0; overflow-wrap:anywhere; font-size:9px; font-weight:700; }
.settings-system dd a { color:var(--green); }
.general-settings-form { display:grid; grid-template-columns:1fr 1fr; gap:14px; align-items:start; }
.general-settings-form .settings-card { margin:0; }
.general-settings-form .settings-card:first-child { grid-column:1/-1; }
.general-settings-error,.general-settings-actions { grid-column:1/-1; }
.general-settings-actions { display:flex; justify-content:flex-end; gap:9px; padding-top:4px; }
.login-support { display:inline-flex; margin-top:18px; color:var(--green); font-size:10px; font-weight:750; }
.login-directory-hint { display:flex; gap:9px; align-items:center; margin:4px 0 15px; padding:10px 11px; border:1px solid #d6e4de; border-radius:7px; color:#315e4e; background:#f1f7f4; }
.login-directory-hint > span:first-child { font-size:18px; }
.login-directory-hint span,.login-directory-hint strong,.login-directory-hint small { display:block; }
.login-directory-hint strong { font-size:9px; }
.login-directory-hint small { margin-top:2px; color:#657a72; font-size:8px; }
.login-alternative { display:flex; align-items:center; gap:12px; margin:19px 0 15px; color:var(--muted); font-size:9px; font-weight:800; text-transform:uppercase; }
.login-alternative::before,.login-alternative::after { content:""; flex:1; height:1px; background:var(--line); }
.login-oidc-button { display:block; text-align:center; }
.login-oidc-help { margin:9px 3px 0; color:var(--muted); font-size:9px; line-height:1.5; text-align:center; }
.directory-cache-banner { display:flex; gap:10px; align-items:center; margin:14px max(24px,calc((100vw - 1180px)/2)) -4px; padding:10px 13px; border:1px solid #e4c38d; border-left:4px solid #c88b2f; border-radius:8px; color:#6b4b17; background:#fff8e9; }
.app-authenticated .directory-cache-banner { margin-left:calc(var(--sidebar-width) + 24px); }
.directory-cache-banner > span { display:grid; place-items:center; width:22px; height:22px; flex:0 0 22px; border-radius:50%; color:#fff; background:#c88b2f; font-size:11px; font-weight:900; }
.directory-cache-banner strong,.directory-cache-banner small { display:block; }
.directory-cache-banner strong { font-size:9px; }
.directory-cache-banner small { margin-top:2px; color:#7d6846; font-size:8px; }
.directory-metrics { grid-template-columns:repeat(4,1fr); margin-bottom:22px; }
.directory-settings-form { display:grid; grid-template-columns:1fr 1fr; gap:14px; align-items:start; }
.directory-settings-form .settings-card { margin:0; }
.directory-activation-card,.directory-continuity-card,.directory-settings-error,.directory-settings-form .general-settings-actions { grid-column:1/-1; }
.directory-continuity-card { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(240px,.8fr); column-gap:24px; }
.directory-continuity-card .settings-card-head { grid-column:1/-1; }
.directory-continuity-note { grid-column:2; grid-row:2/span 2; padding:16px; border:1px solid #d9e4df; border-radius:8px; background:#f3f7f5; }
.directory-continuity-note strong { font-size:10px; }
.directory-continuity-note p { margin:7px 0 0; color:var(--muted); font-size:9px; }
.directory-user-badge { display:inline-block; padding:3px 6px; border-radius:4px; color:#355f83; background:#e1ebf3; font-size:8px; font-weight:800; vertical-align:middle; }

.density-compact main { font-size:13px; }
.density-compact .metrics article,.density-compact .network-metrics article { padding-block:13px; }
.density-compact .settings-card,.density-compact .rack-card,.density-compact .audit-entry { padding-top:17px; padding-bottom:17px; }
.density-compact .inventory-table td,.density-compact .responsive-table td { padding-top:10px; padding-bottom:10px; }
.density-compact .nav-item { min-height:34px; padding-block:5px; }
.density-compact .nav-section + .nav-section { margin-top:16px; }

@media(max-width:900px) {
  .settings-grid { grid-template-columns:1fr 1fr; }
  .settings-system { grid-template-columns:1fr; }
}

@media(max-width:700px) {
  .settings-heading,.settings-group > header { display:block; }
  .settings-product-state { display:inline-flex; margin-top:18px; }
  .settings-group > header > p { max-width:none; margin-top:5px; text-align:left; }
  .settings-grid,.general-settings-form { grid-template-columns:1fr; }
  .directory-settings-form { grid-template-columns:1fr; }
  .directory-activation-card,.directory-continuity-card,.directory-settings-error,.directory-settings-form .general-settings-actions { grid-column:1; }
  .directory-continuity-card { display:block; }
  .directory-continuity-note { margin-top:14px; }
  .general-settings-form .settings-card:first-child,.general-settings-error,.general-settings-actions { grid-column:1; }
  .permission-summary { grid-template-columns:1fr; }
}

@media(max-width:760px) {
  .app-authenticated .directory-cache-banner,.directory-cache-banner { margin:10px 12px 0; }
}

@media(max-width:480px) {
  .settings-grid { grid-template-columns:1fr; }
  .settings-tile { min-height:0; }
  .settings-system dl { grid-template-columns:1fr; }
  .general-settings-actions { display:grid; }
}

/* Hub diagnostics ------------------------------------------------------ */
.diagnostic-heading .heading-actions { flex:0 0 auto; }
.diagnostic-summary { display:grid; grid-template-columns:minmax(0,1fr) 330px; gap:30px; align-items:center; margin-bottom:16px; padding:24px 26px; border:1px solid #cddbd5; border-left:5px solid var(--green); border-radius:11px; background:#fff; box-shadow:var(--shadow); }
.diagnostic-summary.state-warning { border-left-color:#c58a30; background:#fffdf8; }
.diagnostic-summary.state-critical { border-left-color:#b54837; background:#fffaf9; }
.diagnostic-summary-main { display:flex; gap:16px; align-items:center; min-width:0; }
.diagnostic-summary-main h2 { font:760 26px/1.12 Inter,ui-sans-serif,system-ui,sans-serif; }
.diagnostic-summary-main p:last-child { margin:6px 0 0; color:var(--muted); font-size:10px; }
.diagnostic-state-dot { width:18px; height:18px; flex:0 0 18px; border:5px solid #d9eee6; border-radius:50%; background:var(--green); box-shadow:0 0 0 5px #eef7f3; }
.state-warning .diagnostic-state-dot { border-color:#f3e3c6; background:#c58a30; box-shadow:0 0 0 5px #fff7e8; }
.state-critical .diagnostic-state-dot { border-color:#f1d4ce; background:#b54837; box-shadow:0 0 0 5px #fff0ed; }
.diagnostic-summary dl { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; margin:0; overflow:hidden; border:1px solid #dfe6e2; border-radius:8px; background:#dfe6e2; }
.diagnostic-summary dl div { padding:11px 12px; background:#f8faf9; text-align:center; }
.diagnostic-summary dt { color:#71807b; font-size:7px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.diagnostic-summary dd { margin:2px 0 0; font:780 20px Inter,ui-sans-serif,system-ui,sans-serif; }
.diagnostic-summary dl div:nth-child(1) dd { color:var(--green); }
.diagnostic-summary dl div:nth-child(2) dd { color:#9b6a20; }
.diagnostic-summary dl div:nth-child(3) dd { color:#a33d2d; }
.diagnostic-privacy { margin:0 0 28px; padding:11px 14px; border:1px solid #d9e4df; border-radius:8px; color:#557068; background:#edf5f1; font-size:9px; }
.diagnostic-groups { display:grid; gap:18px; }
.diagnostic-group { overflow:hidden; border:1px solid var(--line); border-radius:11px; background:#fff; box-shadow:var(--shadow); }
.diagnostic-group > header { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:17px 20px; border-bottom:1px solid var(--line); background:#f8faf9; }
.diagnostic-group > header h2 { font:750 17px/1.2 Inter,ui-sans-serif,system-ui,sans-serif; }
.diagnostic-group > header > span { padding:5px 8px; border-radius:6px; color:#63756e; background:#ebf0ed; font-size:8px; font-weight:750; }
.diagnostic-check-list { display:grid; }
.diagnostic-check { display:grid; grid-template-columns:30px minmax(0,1fr) auto; gap:13px; align-items:start; padding:16px 20px; border-bottom:1px solid #e5eae7; }
.diagnostic-check:last-child { border-bottom:0; }
.diagnostic-check-icon { display:grid; place-items:center; width:27px; height:27px; border-radius:8px; color:#fff; background:var(--green); font-size:12px; font-weight:850; }
.diagnostic-check.state-warning .diagnostic-check-icon { background:#bd8128; }
.diagnostic-check.state-critical .diagnostic-check-icon { background:#b54837; }
.diagnostic-check-main { min-width:0; }
.diagnostic-check-main > div { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.diagnostic-check-main h3 { margin:0; font-size:11px; }
.diagnostic-check-main > div span { padding:3px 6px; border-radius:5px; color:#176448; background:#dff2e9; font-size:7px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.diagnostic-check.state-warning .diagnostic-check-main > div span { color:#76531a; background:#f6e8c8; }
.diagnostic-check.state-critical .diagnostic-check-main > div span { color:#963626; background:#f7dfda; }
.diagnostic-check-main > strong { display:block; margin-top:5px; color:#3e514a; font-size:10px; }
.diagnostic-check-main > p { margin:3px 0 0; color:var(--muted); font-size:9px; }
.diagnostic-check-main > small { display:block; margin-top:8px; padding:7px 9px; border-left:3px solid #c58a30; color:#695022; background:#fff8e9; font-size:8px; }
.diagnostic-check > code { max-width:220px; overflow-wrap:anywhere; color:#899691; font-size:7px; }

@media(max-width:780px) {
  .diagnostic-summary { grid-template-columns:1fr; }
  .diagnostic-check { grid-template-columns:30px minmax(0,1fr); padding-inline:14px; }
  .diagnostic-check > code { grid-column:2; }
}

@media(max-width:520px) {
  .diagnostic-summary { padding:20px 16px; }
  .diagnostic-summary dl { grid-template-columns:1fr; }
  .diagnostic-heading .heading-actions { display:grid; width:100%; margin-top:20px; }
}

/* Local API documentation --------------------------------------------- */
.api-docs-body { min-height:100vh; background:#f1f4f1; }
.api-docs-header { position:sticky; z-index:20; top:0; display:flex; align-items:center; justify-content:space-between; gap:24px; min-height:64px; padding:0 max(24px,calc((100vw - 1180px)/2)); border-bottom:1px solid #294139; color:#fff; background:rgba(16,35,29,.97); box-shadow:0 6px 24px rgba(8,27,20,.12); backdrop-filter:blur(12px); }
.api-docs-brand { display:flex; gap:10px; align-items:center; font-size:15px; letter-spacing:-.01em; }
.api-docs-brand span { display:grid; place-items:center; width:34px; height:34px; border-radius:8px; color:#ff9e88; background:#ffffff0d; font-family:Georgia,serif; font-size:18px; }
.api-docs-header nav { display:flex; gap:8px; }
.api-docs-header nav a { padding:8px 11px; border:1px solid #ffffff1c; border-radius:7px; color:#c8d7d1; font-size:10px; font-weight:750; }
.api-docs-header nav a:hover,.api-docs-header nav a:focus-visible { color:#fff; border-color:#ffffff45; background:#ffffff0a; outline:0; }
.api-docs-shell { width:min(1180px,calc(100% - 40px)); margin:0 auto; padding:48px 0 80px; }
.api-docs-intro { position:relative; padding:34px 36px; overflow:hidden; border:1px solid #d8e1dc; border-radius:14px; background:#fff; box-shadow:0 12px 38px rgba(20,48,38,.07); }
.api-docs-intro::after { position:absolute; top:-75px; right:-55px; width:230px; height:230px; border-radius:50%; content:""; background:radial-gradient(circle,#dceee6 0,rgba(220,238,230,0) 70%); pointer-events:none; }
.api-docs-intro h1 { position:relative; z-index:1; max-width:850px; font:760 clamp(34px,5vw,52px)/1.04 Inter,ui-sans-serif,system-ui,sans-serif; letter-spacing:-.045em; }
.api-docs-intro > p:not(.eyebrow) { position:relative; z-index:1; max-width:720px; margin:13px 0 0; color:var(--muted); font-size:14px; line-height:1.65; }
.api-docs-meta { position:relative; z-index:1; display:flex; flex-wrap:wrap; gap:8px; margin-top:22px; }
.api-docs-meta span { padding:6px 9px; border-radius:6px; color:#426256; background:#edf4f0; font:750 9px ui-monospace,SFMono-Regular,Consolas,monospace; }
.api-docs-toolbar { display:grid; gap:7px; margin:24px 0 16px; }
.api-docs-toolbar label { color:#4f625b; font-size:9px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.api-docs-toolbar input { width:100%; height:48px; padding:0 15px; border:1px solid #ccd9d3; border-radius:9px; background:#fff; box-shadow:0 5px 18px rgba(20,48,38,.04); font-size:13px; }
.api-docs-status { margin:18px 0; padding:14px 16px; border:1px solid #d5dfda; border-radius:8px; color:#53665f; background:#fff; }
.api-docs-status.error { color:#9c3c2c; border-color:#e8c2ba; background:#fff2ef; }
.api-docs-groups { display:grid; gap:18px; }
.api-docs-group { overflow:hidden; border:1px solid #d8e1dc; border-radius:11px; background:#fff; box-shadow:0 7px 24px rgba(20,48,38,.045); }
.api-docs-group > header { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:18px 20px; border-bottom:1px solid #e1e7e3; background:#f8faf8; }
.api-docs-group > header h2 { font:750 17px/1.2 Inter,ui-sans-serif,system-ui,sans-serif; letter-spacing:-.02em; }
.api-docs-group > header span { color:#72817c; font-size:9px; font-weight:750; }
.api-operation { border-bottom:1px solid #e4e9e6; }
.api-operation:last-child { border-bottom:0; }
.api-operation > summary { display:grid; grid-template-columns:62px minmax(180px,.9fr) minmax(200px,1.1fr) 20px; gap:14px; align-items:center; min-height:60px; padding:10px 20px; cursor:pointer; list-style:none; }
.api-operation > summary::-webkit-details-marker { display:none; }
.api-operation > summary:hover { background:#fbfcfb; }
.api-operation[open] > summary { background:#f3f7f5; }
.api-method { display:inline-grid; place-items:center; width:58px; min-height:24px; border-radius:5px; color:#fff; background:#547069; font:850 9px ui-monospace,SFMono-Regular,Consolas,monospace; letter-spacing:.05em; }
.api-method-get .api-method { background:#147458; }
.api-method-post .api-method { background:#2d659f; }
.api-method-put .api-method,.api-method-patch .api-method { background:#9b651e; }
.api-method-delete .api-method { background:#b04433; }
.api-path { min-width:0; overflow-wrap:anywhere; color:#193b30; font-size:11px; font-weight:750; }
.api-summary { min-width:0; color:#4c5b56; font-size:11px; font-weight:650; }
.api-expand { color:#81918b; font-size:18px; text-align:right; transition:transform .16s ease; }
.api-operation[open] .api-expand { transform:rotate(45deg); }
.api-operation-body { padding:5px 20px 22px 96px; color:#344841; }
.api-operation-description { max-width:820px; margin:8px 0 20px; color:#64736e; font-size:11px; line-height:1.65; white-space:pre-line; }
.api-operation-section { margin-top:18px; }
.api-operation-section h4 { margin:0 0 8px; color:#4e625a; font-size:9px; letter-spacing:.08em; text-transform:uppercase; }
.api-parameter-list,.api-response-list { display:grid; grid-template-columns:minmax(100px,190px) minmax(0,1fr); margin:0; border:1px solid #dde5e0; border-radius:7px; overflow:hidden; }
.api-parameter-list dt,.api-parameter-list dd,.api-response-list dt,.api-response-list dd { min-width:0; margin:0; padding:9px 11px; border-bottom:1px solid #e5ebe7; }
.api-parameter-list dt:nth-last-of-type(1),.api-response-list dt:nth-last-of-type(1) { border-bottom:0; }
.api-parameter-list dt,.api-response-list dt { display:flex; flex-wrap:wrap; gap:6px; align-items:center; background:#f5f8f6; font-size:10px; font-weight:750; }
.api-parameter-list dt span { color:#798983; font-size:8px; font-weight:700; }
.api-parameter-list dd,.api-response-list dd { color:#65756f; font-size:10px; overflow-wrap:anywhere; }
.api-schema-name { display:inline-block; padding:7px 9px; border-radius:6px; color:#34594b; background:#edf4f0; font-size:10px; }
.api-security-note { margin:20px 0 0; padding:10px 12px; border-left:3px solid var(--green); color:#416356; background:#eef6f2; font-size:10px; }

@media(max-width:720px) {
  .api-docs-header { min-height:58px; padding-inline:14px; }
  .api-docs-header nav a:first-child { display:none; }
  .api-docs-shell { width:calc(100% - 24px); padding:24px 0 55px; }
  .api-docs-intro { padding:25px 22px; }
  .api-docs-intro h1 { font-size:34px; }
  .api-operation > summary { grid-template-columns:58px minmax(0,1fr) 18px; gap:9px; padding-inline:12px; }
  .api-summary { grid-column:2/3; }
  .api-path { grid-column:2/3; }
  .api-expand { grid-column:3; grid-row:1/3; }
  .api-method { grid-row:1/3; }
  .api-operation-body { padding:5px 12px 18px; }
  .api-parameter-list,.api-response-list { grid-template-columns:1fr; }
  .api-parameter-list dt,.api-response-list dt { border-bottom:0; }
}
