:root{color-scheme:dark;--bg:#07100e;--panel:#0d1916;--panel2:#10201c;--line:#20342e;--text:#eef7f3;--muted:#8da79e;--green:#40e89d;--amber:#ffc857;--red:#ff6b6b;--cyan:#72d8ff;font-family:Inter,"Segoe UI",Arial,sans-serif}
*[hidden]{display:none!important}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 85% 0,#123229 0,transparent 30%),var(--bg);color:var(--text);min-height:100vh}.topbar{height:84px;padding:0 clamp(20px,4vw,64px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:rgba(7,16,14,.9);backdrop-filter:blur(16px);position:sticky;top:0;z-index:5}.brand{display:flex;gap:14px;align-items:center}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border:1px solid #3b705f;background:linear-gradient(145deg,#183f34,#0d211c);color:var(--green);font-weight:900;font-size:24px;clip-path:polygon(20% 0,100% 0,100% 80%,80% 100%,0 100%,0 20%)}h1{font-size:20px;letter-spacing:.19em;margin:0}.brand p,.live-state span{margin:4px 0 0;color:var(--muted);font-size:11px}.live-state{display:flex;align-items:center;gap:10px;text-align:right}.live-state strong{display:block;font-size:11px;letter-spacing:.12em}.pulse{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 6px rgba(64,232,157,.1);animation:pulse 2s infinite}@keyframes pulse{50%{box-shadow:0 0 0 10px rgba(64,232,157,0)}}main{max-width:1540px;margin:auto;padding:42px clamp(20px,4vw,64px) 64px}.hero{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:32px}.eyebrow{color:var(--green);font-size:11px;font-weight:800;letter-spacing:.18em;margin:0 0 10px}.hero h2{font-size:clamp(34px,4vw,58px);letter-spacing:-.045em;line-height:1;margin:0 0 14px}.hero>div>p:last-child{color:var(--muted);max-width:700px;margin:0;font-size:15px}.scan-badge{border:1px solid var(--line);background:var(--panel);padding:16px 20px;min-width:150px}.scan-badge span,.scan-badge strong{display:block}.scan-badge span{font-size:10px;color:var(--green);letter-spacing:.13em}.scan-badge strong{margin-top:7px;font-size:18px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.metrics article{background:linear-gradient(145deg,var(--panel2),var(--panel));border:1px solid var(--line);padding:22px;min-height:130px;position:relative;overflow:hidden}.metrics article:after{content:"";position:absolute;right:-30px;bottom:-50px;width:110px;height:110px;border:1px solid rgba(64,232,157,.14);transform:rotate(45deg)}.metrics span,.metrics small{display:block;color:var(--muted);font-size:11px}.metrics span{text-transform:uppercase;letter-spacing:.1em;font-weight:700}.metrics strong{display:block;margin:12px 0 7px;font-size:32px;letter-spacing:-.04em}.fleet-panel{border:1px solid var(--line);background:rgba(13,25,22,.92)}.panel-heading{display:flex;align-items:end;justify-content:space-between;padding:24px 26px;border-bottom:1px solid var(--line)}.panel-heading h3{font-size:24px;margin:0}.panel-heading>span{color:var(--muted);font-size:12px}.filters{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:10px;padding:16px 18px;border-bottom:1px solid var(--line)}label span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.1em;margin:0 0 6px}input,select{width:100%;height:42px;border:1px solid var(--line);background:#091411;color:var(--text);padding:0 12px;outline:none}input:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 2px rgba(64,232,157,.08)}.table-wrap{overflow:auto;max-height:60vh}table{width:100%;border-collapse:collapse;min-width:1150px}thead{position:sticky;top:0;background:#0b1714;z-index:2}th{padding:13px 16px;text-align:left;border-bottom:1px solid var(--line);font-size:10px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted)}th button{all:unset;cursor:pointer}th button:hover{color:var(--green)}td{padding:13px 16px;border-bottom:1px solid rgba(32,52,46,.7);font-size:12px;white-space:nowrap}tbody tr:hover{background:rgba(64,232,157,.035)}.numeric{text-align:right}.model{font-weight:700}.ip{font-family:"Cascadia Mono",Consolas,monospace;color:var(--cyan)}.worker{color:#c6d9d2}.hash{font-family:"Cascadia Mono",Consolas,monospace}.temp{color:#d1e3dd}.status{display:inline-flex;align-items:center;gap:7px;padding:5px 8px;border:1px solid;border-radius:2px;font-size:10px;text-transform:uppercase;letter-spacing:.07em}.status:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.operando{color:var(--green);background:rgba(64,232,157,.06)}.sin_hash{color:var(--red);background:rgba(255,107,107,.06)}.sin_dato{color:var(--amber);background:rgba(255,200,87,.06)}.hot{color:var(--red);font-weight:700}.empty{padding:50px;text-align:center;color:var(--muted)}footer{max-width:1540px;margin:auto;padding:0 clamp(20px,4vw,64px) 32px;display:flex;justify-content:space-between;color:#60776f;font-size:10px;letter-spacing:.1em;text-transform:uppercase}@media(max-width:900px){.metrics{grid-template-columns:repeat(2,1fr)}.filters{grid-template-columns:1fr 1fr}.hero{align-items:start}.scan-badge{display:none}}@media(max-width:560px){.topbar{height:72px}.brand p{display:none}.live-state strong{font-size:9px}.hero h2{font-size:36px}.metrics{grid-template-columns:1fr 1fr}.metrics article{padding:16px;min-height:112px}.metrics strong{font-size:26px}.filters{grid-template-columns:1fr}.panel-heading{align-items:start;gap:10px;flex-direction:column}footer{gap:12px;flex-direction:column}}

/* Navegacion y vistas */
.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:#081310;border-right:1px solid var(--line);z-index:20;display:flex;flex-direction:column;transition:width .24s ease;overflow:hidden}.sidebar-brand{height:84px;display:flex;align-items:center;gap:13px;padding:0 20px;border-bottom:1px solid var(--line);white-space:nowrap}.sidebar-copy{min-width:150px;transition:opacity .15s ease}.sidebar-copy strong,.sidebar-copy span{display:block}.sidebar-copy strong{font-size:13px;letter-spacing:.15em}.sidebar-copy span{color:var(--muted);font-size:10px;margin-top:4px}.menu-toggle{width:34px;height:34px;border:1px solid var(--line);background:#0c1b17;position:absolute;right:14px;top:98px;display:grid;place-content:center;gap:4px;cursor:pointer}.menu-toggle span{display:block;width:14px;height:1px;background:var(--muted)}.sidebar nav{margin-top:68px;padding:0 10px;display:grid;gap:6px}.nav-item{position:relative;width:100%;height:48px;border:1px solid transparent;background:transparent;color:var(--muted);display:flex;align-items:center;gap:13px;padding:0 14px;cursor:pointer;text-align:left;white-space:nowrap}.nav-item:hover{color:var(--text);background:#0d1d19}.nav-item.active{color:var(--green);border-color:#26483e;background:linear-gradient(90deg,rgba(64,232,157,.1),rgba(64,232,157,.02))}.nav-item.active:before{content:"";position:absolute;left:-11px;width:3px;height:24px;background:var(--green)}.nav-icon{display:grid;place-items:center;width:20px;font-weight:800}.nav-label{font-size:11px;font-weight:800;letter-spacing:.09em}.nav-count{margin-left:auto;border:1px solid var(--line);padding:3px 6px;font-size:9px}.sidebar-status{margin:auto 14px 18px;padding:14px;border:1px solid var(--line);display:flex;align-items:center;gap:12px;white-space:nowrap}.sidebar.collapsed{width:76px}.sidebar.collapsed .sidebar-copy,.sidebar.collapsed .nav-label,.sidebar.collapsed .nav-count{opacity:0;pointer-events:none}.sidebar.collapsed .sidebar-brand{padding-left:17px}.sidebar.collapsed .menu-toggle{right:20px}.sidebar.collapsed .nav-item{justify-content:center;padding:0}.sidebar.collapsed .sidebar-status{padding:14px 18px}.app-shell{min-height:100vh;margin-left:248px;transition:margin-left .24s ease}.app-shell.expanded{margin-left:76px}.page-title strong{display:block;font-size:22px}.page-title .eyebrow{margin-bottom:4px}.view{animation:viewIn .22s ease}.view[hidden]{display:none}@keyframes viewIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.hero h1{font-size:clamp(36px,4.2vw,62px);letter-spacing:-.05em;line-height:.98;margin:0 0 16px}.home-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.overview-card{background:var(--panel);border:1px solid var(--line);padding:25px}.overview-card h3{margin:0 0 22px;font-size:21px}.health-line{display:flex;gap:18px;align-items:center}.health-line>span{font-size:42px;font-weight:800;color:var(--green);letter-spacing:-.05em}.health-line strong,.health-line small{display:block}.health-line small{color:var(--muted);margin-top:5px}.health-track{height:5px;background:#172823;margin-top:20px;overflow:hidden}.health-track span{display:block;height:100%;width:0;background:var(--green);transition:width .4s ease}.segment-pills{display:flex;flex-wrap:wrap;gap:8px}.segment-pills span{border:1px solid var(--line);background:#091511;padding:10px 12px;color:var(--cyan);font:11px "Cascadia Mono",monospace}.section-intro{display:flex;justify-content:space-between;align-items:end;margin-bottom:26px}.section-intro h2,.panel-heading h2{font-size:32px;margin:0}.section-intro>div>p:last-child{color:var(--muted);margin-bottom:0}.map-legend{display:flex;gap:16px;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.06em}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px}.dot.green{background:var(--green)}.dot.red{background:var(--red)}.dot.amber{background:var(--amber)}.site-map{display:grid;grid-template-columns:repeat(3,minmax(250px,1fr));gap:12px}.site-card{border:1px solid var(--line);background:linear-gradient(145deg,var(--panel2),var(--panel));padding:22px;min-height:210px}.site-card-head{display:flex;justify-content:space-between;align-items:start}.site-card h3{font:700 17px "Cascadia Mono",monospace;color:var(--cyan);margin:0}.site-card-head span{color:var(--muted);font-size:10px}.site-total{font-size:38px;font-weight:800;margin:24px 0 4px}.site-total-label{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em}.site-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:22px}.site-stats div{border-top:1px solid var(--line);padding-top:10px}.site-stats strong,.site-stats span{display:block}.site-stats strong{font-size:14px}.site-stats span{color:var(--muted);font-size:9px;text-transform:uppercase;margin-top:4px}.fleet-panel{min-height:70vh}
@media(max-width:1100px){.site-map{grid-template-columns:repeat(2,minmax(250px,1fr))}.sidebar{width:210px}.app-shell{margin-left:210px}.sidebar.collapsed{width:76px}.app-shell.expanded{margin-left:76px}}
@media(max-width:760px){.sidebar{width:76px}.sidebar .sidebar-copy,.sidebar .nav-label,.sidebar .nav-count{display:none}.sidebar .sidebar-brand{padding-left:17px}.sidebar .menu-toggle{display:none}.sidebar .nav-item{justify-content:center;padding:0}.sidebar .sidebar-status{padding:14px 18px}.app-shell,.app-shell.expanded{margin-left:76px}.site-map,.home-grid{grid-template-columns:1fr}.section-intro{align-items:start;gap:20px;flex-direction:column}.map-legend{flex-wrap:wrap}.topbar{padding-left:20px}.hero h1{font-size:38px}}
.market-ticker{min-height:48px;border-bottom:1px solid var(--line);background:linear-gradient(90deg,#0b1714,#10241d,#0b1714);display:flex;align-items:center;justify-content:center;gap:28px;padding:8px clamp(18px,4vw,62px);font-family:"Cascadia Mono",Consolas,monospace}.market-source,.market-price,.market-live{display:flex;align-items:center;gap:9px}.bitcoin-mark{width:27px;height:27px;display:grid;place-items:center;border:1px solid #f3ba2f;color:#f3ba2f;font-weight:900}.market-source strong{font-size:12px;color:var(--text)}.market-source small,.market-live small{font-size:9px;letter-spacing:.12em;color:var(--muted)}.market-price strong{font-size:17px;color:#f3ba2f}.market-price span{font-size:11px;padding:4px 7px;border:1px solid var(--line)}.market-price span.positive{color:var(--green);border-color:rgba(64,232,157,.4)}.market-price span.negative{color:var(--red);border-color:rgba(255,107,107,.4)}#btc-live-dot{width:7px;height:7px;border-radius:50%;background:var(--amber)}#btc-live-dot.connected{background:var(--green);box-shadow:0 0 0 4px rgba(64,232,157,.1)}@media(max-width:620px){.market-ticker{justify-content:space-between;gap:10px}.market-source small,.market-live{display:none}.market-price strong{font-size:14px}}

/* Constructor de sitios */
button{font:inherit}.primary-button,.site-actions button,.dialog-actions button{min-height:42px;border:1px solid var(--line);padding:0 17px;background:#0b1714;color:var(--text);font-size:10px;font-weight:800;letter-spacing:.09em;cursor:pointer}.primary-button{border-color:var(--green);background:var(--green);color:#03100b}.primary-button:hover{background:#78f4bd}.site-intro{align-items:center}.site-workspace{border:1px solid var(--line);background:rgba(9,20,17,.86);min-height:520px}.site-toolbar{display:flex;align-items:end;justify-content:space-between;gap:16px;padding:18px;border-bottom:1px solid var(--line)}.site-toolbar label{width:min(420px,100%)}.site-actions{display:flex;gap:8px}.site-actions button:hover{border-color:var(--green);color:var(--green)}.site-actions .danger-button:hover{border-color:var(--red);color:var(--red)}.site-empty{min-height:430px;display:grid;place-items:center;align-content:center;text-align:center;padding:40px}.site-empty h3{font-size:26px;margin:16px 0 8px}.site-empty p{max-width:500px;color:var(--muted);line-height:1.6;margin:0 0 24px}.empty-grid-icon{font-size:64px;color:var(--green);opacity:.8}.rack-area{padding:24px}.rack-heading{display:flex;align-items:end;justify-content:space-between;gap:20px}.rack-heading h3{font-size:28px;margin:0}.rack-meta{display:flex;gap:8px}.rack-meta span{border:1px solid var(--line);padding:9px 12px;color:var(--cyan);font:11px "Cascadia Mono",monospace}.rack-help{color:var(--muted);font-size:11px;margin:16px 0}.rack-scroll{overflow:auto;border:1px solid var(--line);background:#050d0b;padding:22px;max-height:58vh}.rack-grid{display:grid;gap:5px;width:max-content;min-width:100%}.rack-row{display:grid;grid-auto-flow:column;grid-auto-columns:34px;gap:5px;width:max-content;min-width:100%}.rack-cell{width:34px;height:34px;border:1px solid #2a443b;background:#0e1c18;color:#5f7b72;font:9px "Cascadia Mono",monospace;cursor:pointer;transition:transform .1s,border-color .1s,background .1s}.rack-cell:hover,.rack-cell:focus-visible{border-color:var(--green);transform:scale(1.08);outline:none}.rack-cell.occupied{background:rgba(64,232,157,.28);border-color:var(--green);color:var(--text)}.rack-cell.warning{background:rgba(255,200,87,.22);border-color:var(--amber);color:var(--amber)}.rack-legend{display:flex;gap:18px;color:var(--muted);font-size:10px;text-transform:uppercase;margin-top:14px}.rack-swatch{display:inline-block;width:11px;height:11px;margin-right:6px;border:1px solid #2a443b;background:#0e1c18;vertical-align:-2px}.rack-swatch.occupied{background:rgba(64,232,157,.28);border-color:var(--green)}.rack-swatch.warning{background:rgba(255,200,87,.22);border-color:var(--amber)}.site-dialog{width:min(520px,calc(100vw - 30px));border:1px solid #315346;background:#0b1714;color:var(--text);padding:0;box-shadow:0 25px 80px rgba(0,0,0,.65)}.site-dialog::backdrop{background:rgba(2,8,6,.78);backdrop-filter:blur(4px)}.site-dialog form{padding:26px}.dialog-heading{display:flex;justify-content:space-between;align-items:start;margin-bottom:24px}.dialog-heading h2{margin:0;font-size:28px}.icon-button{width:36px;height:36px;border:1px solid var(--line);background:transparent;color:var(--muted);font-size:25px;cursor:pointer}.dimension-fields{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:12px;margin-top:17px}.dimension-x{font-size:24px;color:var(--muted);padding-bottom:8px}.capacity-preview{color:var(--muted);font-size:12px}.capacity-preview strong{color:var(--green)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:26px;padding-top:18px;border-top:1px solid var(--line)}
@media(max-width:760px){.site-toolbar,.rack-heading{align-items:stretch;flex-direction:column}.site-actions{width:100%}.site-actions button{flex:1}.rack-area{padding:14px}.rack-meta{flex-wrap:wrap}.site-intro .primary-button{width:100%}}

/* Asignacion de mineros a slots */
.rack-cell{background:#f0f5f3;color:#21332d;border-color:#84948f}.rack-cell:hover,.rack-cell:focus-visible{border-color:var(--cyan)}.rack-cell.occupied{background:rgba(64,232,157,.32);border-color:var(--green);color:#dffff0}.rack-cell.warning{background:rgba(255,200,87,.3);border-color:var(--amber);color:#fff0bd}.rack-swatch{background:#f0f5f3;border-color:#84948f}.rack-swatch.occupied{background:rgba(64,232,157,.32);border-color:var(--green)}.rack-swatch.warning{background:rgba(255,200,87,.3);border-color:var(--amber)}.assignment-dialog{width:min(760px,calc(100vw - 30px))}.assignment-panel{padding:26px}.assignment-position{display:block;color:var(--cyan);font:11px "Cascadia Mono",monospace;margin-top:6px}.assignment-list{display:grid;gap:7px;margin-top:14px;max-height:50vh;overflow:auto}.equipment-option{width:100%;border:1px solid var(--line);background:#091411;color:var(--text);padding:12px 14px;display:grid;grid-template-columns:minmax(180px,1.5fr) 120px minmax(150px,1fr) 100px;gap:12px;text-align:left;align-items:center;cursor:pointer}.equipment-option:hover{border-color:var(--green);background:#0f211b}.equipment-option strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.equipment-option span{font-size:11px;color:var(--muted)}.equipment-option .equipment-ip{font-family:"Cascadia Mono",monospace;color:var(--cyan)}.equipment-option .equipment-hash{text-align:right;color:var(--green)}.equipment-option.assigned-elsewhere{opacity:.45;cursor:not-allowed}.assignment-empty{padding:30px;text-align:center;color:var(--muted);border:1px dashed var(--line)}
@media(max-width:680px){.equipment-option{grid-template-columns:1fr 100px}.equipment-option .equipment-model{display:none}}

/* Ubicaciones con multiples mapas */
.site-selectors{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1fr);gap:10px;flex:1;max-width:720px}.site-selectors label{width:100%}.site-actions{flex-wrap:wrap;justify-content:flex-end}
@media(max-width:980px){.site-toolbar{align-items:stretch;flex-direction:column}.site-selectors{max-width:none}.site-actions{justify-content:flex-start}}
@media(max-width:620px){.site-selectors{grid-template-columns:1fr}.site-actions button{flex:1 1 45%}}

/* Vista jerarquica expandible */
.hierarchy-controls{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:15px 18px;border-bottom:1px solid var(--line);background:#091411}.hierarchy-controls strong,.hierarchy-controls span{display:block}.hierarchy-controls strong{font-size:11px;letter-spacing:.12em}.hierarchy-controls span{color:var(--muted);font-size:10px;margin-top:4px}.hierarchy-controls>div:last-child{display:flex;gap:8px}.hierarchy-controls button,.tree-toggle{min-height:36px;border:1px solid var(--line);background:#0c1a16;color:var(--muted);padding:0 13px;font-size:9px;font-weight:800;letter-spacing:.08em;cursor:pointer}.hierarchy-controls button:hover,.tree-toggle:hover{border-color:var(--green);color:var(--green)}.locations-board{display:grid;gap:14px;padding:18px}.location-card{border:1px solid #315046;background:#081310}.location-header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:19px 20px;background:linear-gradient(90deg,#10241e,#0b1815)}.location-title{display:flex;align-items:center;gap:13px}.tree-chevron{display:grid;place-items:center;width:29px;height:29px;border:1px solid var(--line);color:var(--green);font-size:16px;transition:transform .18s}.location-card.expanded>.location-header .tree-chevron,.map-tree-card.expanded>.map-tree-header .tree-chevron{transform:rotate(90deg)}.location-title p,.location-title h3{margin:0}.location-title p{color:var(--green);font-size:9px;font-weight:800;letter-spacing:.15em;margin-bottom:5px}.location-title h3{font-size:23px}.location-summary{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.summary-chip{border:1px solid var(--line);padding:8px 10px;color:var(--cyan);font:10px "Cascadia Mono",monospace}.location-body{display:none;padding:13px}.location-card.expanded>.location-body{display:grid;gap:10px}.map-tree-card{border:1px solid var(--line);background:#0a1613}.map-tree-header{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 15px;cursor:pointer}.map-tree-title{display:flex;align-items:center;gap:11px}.map-tree-title strong,.map-tree-title span{display:block}.map-tree-title strong{font-size:14px}.map-tree-title span{color:var(--muted);font-size:10px;margin-top:3px}.map-tree-stats{display:flex;gap:7px;flex-wrap:wrap}.map-tree-body{display:none;padding:0 15px 16px}.map-tree-card.expanded>.map-tree-body{display:block}.map-tree-body .rack-scroll{max-height:none}.tree-empty{padding:24px;text-align:center;color:var(--muted);border:1px dashed var(--line)}.rack-context{color:var(--muted);font-size:10px;margin:0 0 10px}.rack-context strong{color:var(--text)}
@media(max-width:720px){.hierarchy-controls,.location-header,.map-tree-header{align-items:flex-start;flex-direction:column}.location-summary,.map-tree-stats{justify-content:flex-start}.hierarchy-controls>div:last-child{width:100%}.hierarchy-controls button{flex:1}}

/* El bloque introductorio solo aparece cuando no existen ubicaciones */
.site-empty[hidden]{display:none!important}
.site-dialog form>label+label{display:block;margin-top:16px}
.form-message{min-height:18px;color:var(--red);font-size:12px;margin:14px 0 0}.form-message.success{color:var(--green)}
.map-tree-header:hover{background:rgba(64,232,157,.045)}.map-tree-header:focus-visible{outline:1px solid var(--green);outline-offset:-1px}.map-tree-header .tree-toggle{pointer-events:none}

/* Vista amplia para racks largos */
.map-wide .sidebar{width:76px}.map-wide .sidebar .sidebar-copy,.map-wide .sidebar .nav-label,.map-wide .sidebar .nav-count{opacity:0;pointer-events:none}.map-wide .sidebar .sidebar-brand{padding-left:17px}.map-wide .sidebar .menu-toggle{right:20px}.map-wide .sidebar .nav-item{justify-content:center;padding:0}.map-wide .sidebar .sidebar-status{padding:14px 18px}.map-wide .app-shell{margin-left:76px}.map-wide main,.map-wide footer{max-width:none}.map-wide main{padding-left:18px;padding-right:18px}.map-wide .rack-scroll{overflow-x:hidden;padding:14px}.map-wide .rack-grid{width:100%;min-width:0;gap:3px}.map-wide .rack-row{width:100%;min-width:0;grid-auto-columns:minmax(12px,1fr);gap:3px}.map-wide .rack-cell{width:100%;min-width:0;height:30px;padding:0;font-size:clamp(6px,.48vw,9px)}.map-wide .locations-board{padding:12px}.map-wide .map-tree-body{padding-left:10px;padding-right:10px}
.rack-cell.blocked{background:#18201e;border-color:#34423e;color:#65736e;text-decoration:line-through;opacity:.7}.rack-cell.blocked:hover{border-color:#778780}.rack-swatch.blocked{background:#18201e;border-color:#65736e;position:relative}.rack-swatch.blocked:after{content:"×";position:absolute;inset:-4px 0 0;text-align:center;color:#899791}.blocked-message{padding:24px;border:1px dashed #46544f;color:var(--muted);text-align:center}.blocked-message strong{display:block;color:var(--text);margin-bottom:7px}
.user-form{grid-template-columns:repeat(4,1fr)}
.permissions-empty{margin:0;color:var(--amber);font-size:11px;line-height:1.5}
.restricted-metric.clickable{cursor:pointer;transition:border-color .18s,transform .18s,background .18s}.restricted-metric.clickable:hover,.restricted-metric.clickable:focus-visible{border-color:var(--amber);background:linear-gradient(145deg,rgba(255,200,87,.1),var(--panel));transform:translateY(-2px);outline:none}.offline-dialog{width:min(860px,calc(100vw - 30px))}.offline-panel{padding:26px}.offline-list{display:grid;gap:8px;max-height:55vh;overflow:auto}.offline-item{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(190px,1fr) auto;align-items:center;gap:18px;padding:14px 16px;border:1px solid var(--line);background:#091411}.offline-item div>*{display:block}.offline-item strong{font-size:13px}.offline-item span,.offline-item small{margin-top:5px;color:var(--muted);font-size:10px}.offline-item .equipment-ip{color:var(--cyan);font-family:"Cascadia Mono",monospace}.offline-status{color:var(--red);font-size:10px;text-transform:uppercase;letter-spacing:.08em;border:1px solid rgba(255,107,107,.45);padding:7px 9px}@media(max-width:680px){.offline-item{grid-template-columns:1fr}.offline-status{justify-self:start}}
.temperature-metric{min-height:150px!important;height:auto;overflow:visible!important}.temperature-averages{display:grid;gap:5px;margin-top:11px;max-height:none;overflow:visible;padding-right:3px}.temperature-location{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 9px;align-items:center;padding-bottom:5px;border-bottom:1px solid rgba(64,232,157,.13)}.temperature-location strong{margin:0!important;font-size:10px!important;letter-spacing:.02em!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.temperature-location b{color:var(--green);font:700 13px "Cascadia Mono",monospace}.temperature-location small{grid-column:1/-1;font-size:9px!important}
.restart-overview{grid-column:1/-1}
.metrics{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:1180px){.metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
.auth-screen{position:fixed;inset:0;z-index:100;background:radial-gradient(circle at 75% 20%,#123229,transparent 35%),#06100d;display:grid;place-items:center;padding:20px}.auth-screen[hidden]{display:none}.auth-card{width:min(430px,100%);border:1px solid var(--line);background:#0b1714;padding:34px}.auth-card h1{font-size:30px;letter-spacing:-.03em;margin:20px 0 8px}.auth-card>p{color:var(--muted)}.auth-card label{display:block;margin-top:16px}.auth-card .primary-button{width:100%;margin-top:22px}.auth-error{color:var(--red)!important;min-height:18px;font-size:12px}.logout-button{border:1px solid var(--line);background:transparent;color:var(--muted);padding:8px 11px;font-size:9px;cursor:pointer}.users-panel{padding-bottom:20px}.user-form{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:20px;border-bottom:1px solid var(--line)}.user-form fieldset{grid-column:1/-1;border:1px solid var(--line);padding:14px}.user-form legend{color:var(--muted);font-size:10px}.permission-list{display:flex;gap:10px;flex-wrap:wrap}.permission-list label{display:flex;gap:6px;align-items:center}.permission-list input{width:auto;height:auto}.users-list{display:grid;gap:8px;padding:20px}.user-row{display:flex;justify-content:space-between;border:1px solid var(--line);padding:13px}.user-row span{color:var(--muted);font-size:11px}
