:root{--bg-base:#f8fafc;--bg-accent:#e2e8f0;--surface:#fff;--surface-raised:#fcfcff;--surface-subtle:#f8fafc;--text-strong:#0f172a;--text-muted:#475569;--text-subtle:#64748b;--border:#dbe3ef;--border-strong:#cbd5e1;--brand:#0f766e;--brand-weak:#ccfbf1;--brand-hover:#115e59;--health-ok:#16a34a;--health-ok-bg:#f0fdf4;--health-ok-border:#86efac;--health-checking:#d97706;--health-checking-bg:#fffbeb;--health-checking-border:#fcd34d;--health-error:#dc2626;--health-error-bg:#fef2f2;--health-error-border:#fca5a5;--safe:#15803d;--warn:#b45309;--hot:#b91c1c;--nav-active-bg:#ecfeff;--topbar-bg:linear-gradient(180deg,hsla(0,0%,100%,.96),rgba(247,250,255,.95));--topbar-shadow:0 10px 28px rgba(15,23,42,.08)}.dark{--bg-base:#020617;--bg-accent:#0f172a;--surface:#0f172a;--surface-raised:#1e293b;--surface-subtle:#0f172a;--text-strong:#f8fafc;--text-muted:#94a3b8;--text-subtle:#64748b;--border:#334155;--border-strong:#475569;--brand:#14b8a6;--brand-weak:#042f2e;--brand-hover:#2dd4bf;--health-ok:#4ade80;--health-ok-bg:#052e16;--health-ok-border:#14532d;--health-checking:#fbbf24;--health-checking-bg:#451a03;--health-checking-border:#78350f;--health-error:#f87171;--health-error-bg:#450a0a;--health-error-border:#7f1d1d;--safe:#22c55e;--warn:#f59e0b;--hot:#ef4444;--nav-active-bg:#134e4a;--topbar-bg:linear-gradient(180deg,rgba(15,23,42,.96),rgba(2,6,23,.95));--topbar-shadow:0 10px 28px rgba(0,0,0,.4)}*{box-sizing:border-box}body{margin:0;font-family:Avenir Next,Segoe UI,Noto Sans KR,sans-serif;color:var(--text-strong);background:radial-gradient(circle at top right,var(--bg-accent),var(--bg-base))}.shell{min-height:100vh}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:1200;display:grid;grid-gap:12px;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--topbar-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--topbar-shadow)}.brand{font-size:24px;font-weight:800;color:var(--text-strong);letter-spacing:-.02em}.topbar-main{display:grid;grid-gap:12px;gap:12px}.topbar-lower{display:grid;grid-gap:10px;gap:10px}.topbar-brand-wrap{display:flex;align-items:center;gap:10px;min-height:40px}.brand-logo{width:34px;height:34px;object-fit:contain;border-radius:8px;background:#0f172a;padding:4px}.blog-kicker{margin:0;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--brand);font-weight:700}.blog-sub{margin:0;font-size:13px;color:var(--text-subtle)}.nav-tabs{display:flex;gap:8px;overflow-x:auto}.nav-tabs a{border:1px solid var(--border);background:var(--surface);color:var(--text-strong);text-decoration:none;border-radius:999px;padding:8px 12px;white-space:nowrap;font-weight:700;cursor:pointer}.nav-tabs a.active{border-color:var(--brand);background:var(--nav-active-bg);color:var(--brand)}.clock-stack{display:grid;grid-gap:2px;gap:2px;font-size:12px;color:var(--text-muted)}.time-strip{flex-wrap:wrap;justify-content:flex-end;margin-left:auto}.time-card,.time-strip{display:flex;align-items:center;gap:6px}.time-card{border:1px solid var(--border);border-radius:999px;background:var(--surface);padding:4px 10px;white-space:nowrap}.time-card span{font-size:12px;font-weight:600;color:var(--text-normal);display:flex;align-items:center;gap:4px}.time-card strong{font-size:13px;color:var(--text-strong);letter-spacing:.02em}.topbar-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.topbar-right-row{display:flex;align-items:center;justify-content:flex-end;gap:8px}.sync-label{font-size:11px;color:var(--text-subtle);white-space:nowrap}.refresh-btn{border:1px solid var(--border-strong);border-radius:999px;color:var(--text-strong);font-weight:700;padding:6px 10px;cursor:pointer}.auto-refresh-toggle,.refresh-btn{background:var(--surface);font-size:12px}.auto-refresh-toggle{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:999px;padding:5px 9px;color:var(--text-muted);font-weight:600}.quick-links-inline{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.quick-link-chip{text-decoration:none;border:1px solid var(--border);background:var(--surface);color:var(--text-strong);border-radius:999px;font-size:12px;padding:6px 10px;white-space:nowrap;font-weight:600}.refresh-btn:disabled{opacity:.6;cursor:wait}.app{padding:20px 16px;display:grid;grid-gap:16px;gap:16px;max-width:1680px;margin:0 auto;align-content:start;overflow-x:hidden}.panel{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:20px;box-shadow:0 12px 30px rgba(15,23,42,.07);min-width:0;overflow:hidden}.panel-hero{background:linear-gradient(145deg,var(--surface) 0,var(--nav-active-bg) 100%);border-color:var(--brand-hover)}.view-grid,.view-stack{display:grid;grid-gap:16px;gap:16px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.deadline-week-list{display:grid;grid-gap:10px;gap:10px}.week-row{border:1px solid var(--border);border-radius:12px;background:var(--surface-raised);padding:10px;display:grid;grid-gap:8px;gap:8px}.week-row-head{font-size:13px;font-weight:700;color:var(--text-strong)}.week-days{display:grid;grid-gap:7px;gap:7px;grid-template-columns:repeat(7,minmax(112px,1fr));overflow-x:auto}.week-day-cell{border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:8px;display:grid;grid-gap:6px;gap:6px}.week-day-label{margin:0;font-size:11px;color:var(--text-muted);font-weight:700}.week-day-empty{font-size:12px;color:var(--text-subtle)}.deadline-chip{display:grid;grid-gap:2px;gap:2px;border:1px solid var(--brand-hover);border-radius:8px;padding:6px;text-decoration:none;background:var(--brand-weak);color:var(--brand-hover)}.deadline-chip span{font-size:12px;font-weight:700}.deadline-chip small{font-size:11px}.future-deadline-block{margin-top:8px;display:grid;grid-gap:8px;gap:8px}.future-deadline-block h3{margin:0;font-size:14px}.future-deadline-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fill,minmax(150px,210px));align-items:start}.future-deadline-card{border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:8px;display:grid;grid-gap:3px;gap:3px}.future-deadline-card a{color:var(--text-strong);text-decoration:none;font-weight:700}.future-deadline-card p{margin:0;font-size:12px;color:var(--text-muted)}.future-deadline-card small{color:var(--text-subtle);font-size:11px}.notice-card-grid{display:grid;grid-gap:10px;gap:10px}.notice-card{border:1px solid var(--border);border-radius:12px;background:var(--surface-raised);padding:12px}.notice-card-button{width:100%;text-align:left;cursor:pointer}.notice-card-button:hover{border-color:var(--brand-weak);background:var(--surface-subtle)}.notice-card header{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin-bottom:8px}.notice-card header strong{font-size:16px}.notice-card header span{font-size:12px;color:var(--text-subtle)}.notice-card-content{display:grid;grid-gap:6px;gap:6px}.notice-card-content p{margin:0;color:var(--text-muted);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notice-detail-body{display:grid;grid-gap:6px;gap:6px;margin-bottom:12px}.notice-detail-body p{margin:0;color:var(--text-muted);font-size:14px}.quick-link-card-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.quick-link-card{text-decoration:none;border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:8px;display:grid;grid-gap:3px;gap:3px}.quick-link-card strong{font-size:13px;color:var(--text-strong)}.quick-link-card p{margin:0;font-size:12px;color:var(--text-subtle)}.quick-link-login-card{border-style:dashed;background:var(--surface-subtle)}.muted-empty{margin:0;color:var(--text-subtle);font-size:14px}.eyebrow{margin:0;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--brand);font-weight:700}h1{margin:8px 0 12px;font-size:clamp(28px,4vw,40px);line-height:1.1}h2{margin:0 0 10px;font-size:clamp(20px,2.8vw,24px)}.subtitle{margin:0 0 6px;color:var(--text-muted)}.status{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;font-weight:700;font-size:13px;border:1px solid}.status-dot{width:9px;height:9px;border-radius:50%;background:currentColor;flex-shrink:0}.status-kpi{display:grid;grid-gap:16px;gap:16px;grid-template-columns:130px 1fr;align-items:center;margin-bottom:16px}.status-donut{width:112px;height:112px;border-radius:999px;display:grid;place-items:center;margin:0 auto;transition:transform .35s ease}.status-donut:hover{transform:scale(1.03)}.status-donut>div{width:78px;height:78px;border-radius:999px;background:var(--surface);display:grid;align-content:center;justify-items:center}.status-donut strong{font-size:18px}.status-donut span{font-size:11px;color:var(--text-muted)}.status-bars{display:grid;grid-gap:8px;gap:8px}.unified-grid{display:grid;grid-gap:12px;gap:12px}.unified-card{border:1px solid var(--border);border-radius:12px;background:var(--surface-raised);padding:12px}.unified-card header{display:flex;justify-content:space-between;gap:8px}.unified-card header p{margin:2px 0 8px;font-size:12px;color:var(--text-muted)}.unified-bars{display:grid;grid-gap:8px;gap:8px}.unified-gpu-rows{margin-top:8px;display:grid;grid-gap:6px;gap:6px}.gpu-mini-row{display:grid;grid-template-columns:52px 1fr auto auto;grid-gap:8px;gap:8px;align-items:center;font-size:12px;white-space:nowrap}.mini-track{height:8px;border-radius:999px;background:var(--border);overflow:hidden}.mini-fill{height:100%;background:linear-gradient(90deg,#0ea5e9,var(--brand));transition:width .45s ease;animation:loadWidth .8s cubic-bezier(.2,.8,.2,1) forwards}.gpu-process-fold{margin-bottom:2px;padding:4px;margin-left:-4px;margin-right:-4px;border-radius:6px;transition:background .15s ease}.gpu-process-fold:hover{background:var(--surface-subtle)}.gpu-process-fold:hover .gpu-detail-icon{color:var(--text-strong)!important}.gpu-process-fold summary{cursor:pointer;list-style:none}.gpu-process-fold summary::-webkit-details-marker{display:none}.gpu-process-list{margin-top:4px;background:var(--surface-subtle);border:1px solid var(--border);border-radius:6px;padding:6px 8px}.gpu-process-list pre{margin:0;font-size:13px;font-weight:500;line-height:1.5;color:var(--text-strong);white-space:pre-wrap;word-break:break-all;font-family:inherit}.docker-fold{margin-top:10px}.docker-fold summary{cursor:pointer;font-size:12px;color:var(--brand);font-weight:700}.docker-fold-list{display:grid;grid-gap:6px;gap:6px;margin-top:8px}.docker-fold-item{display:grid;grid-template-columns:1.2fr repeat(3,1fr);grid-gap:8px;gap:8px;border:1px solid var(--border);border-radius:8px;padding:8px;font-size:12px;color:var(--text-muted)}.status-ok{color:var(--health-ok);background:var(--health-ok-bg)}.status-checking{color:var(--health-checking);background:var(--health-checking-bg)}.status-error{color:var(--health-error);background:var(--health-error-bg)}.status-degraded{color:var(--health-checking);background:var(--health-checking-bg)}.status-unknown{color:var(--text-muted);background:var(--surface-subtle)}.direction-tags{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 12px}.direction-tags span{border:1px solid var(--brand-hover);background:var(--brand-weak);border-radius:999px;font-size:12px;padding:4px 10px;color:var(--brand)}.kpi-grid{display:grid;grid-gap:10px;gap:10px}.kpi-card{border:1px solid var(--border);border-radius:12px;padding:12px;background:var(--surface-subtle)}.kpi-label{display:block;font-size:12px;color:var(--text-muted)}.kpi-card strong{display:block;margin-top:4px;font-size:24px}.kpi-card small{font-size:12px;color:var(--text-muted)}.fleet-list{display:grid;grid-gap:12px;gap:12px}.fleet-row{border:1px solid var(--border);border-radius:12px;padding:12px;background:var(--surface-raised)}.fleet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}.fleet-head p{margin:2px 0 0;font-size:12px;color:var(--text-muted)}.fleet-badges{display:flex;gap:6px;flex-wrap:wrap}.badge{border:1px solid var(--border);border-radius:999px;font-size:11px;padding:3px 8px;color:var(--text-strong);background:var(--surface-subtle)}.badge-safe{color:var(--safe);background:var(--health-ok-bg);border-color:var(--health-ok-border)}.badge-hot{color:var(--hot);background:var(--health-error-bg);border-color:var(--health-error-border)}.fleet-meters{display:grid;grid-gap:8px;gap:8px}.link-grid{display:grid;grid-gap:10px;gap:10px}.link-card{display:block;text-decoration:none;border:1px solid var(--border);border-radius:12px;padding:12px;background:var(--surface-raised)}.link-card h3{margin:0 0 6px;font-size:16px;color:var(--text-strong)}.link-card p{margin:0;font-size:13px;color:var(--text-muted)}.toolbar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.toolbar button{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:6px 10px;cursor:pointer}.danger-btn{border:1px solid var(--health-error-border);color:var(--hot);background:#fff5f5;border-radius:8px;padding:8px 12px;font-weight:700;cursor:pointer}.danger-btn:disabled{opacity:.55;cursor:not-allowed}.primary-btn{border:none;background:linear-gradient(135deg,var(--brand),#0ea5e9);color:var(--surface);border-radius:8px;padding:8px 12px;font-weight:700;cursor:pointer;transition:transform .2s ease}.primary-btn:hover{transform:translateY(-1px)}.reservation-form{margin-bottom:12px}.gpu-check-panel,.reservation-form{border:1px solid var(--border);border-radius:12px;padding:12px;background:var(--surface-subtle)}.gpu-check-panel{margin-bottom:10px}.gpu-check-panel h3{margin:0 0 10px;font-size:15px}.gpu-check-grid{display:grid;grid-gap:10px;gap:10px}.gpu-check-server{border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:10px}.gpu-check-server strong{font-size:13px}.gpu-check-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.gpu-check-list label{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:999px;background:var(--surface-subtle);padding:4px 9px;font-size:12px;cursor:pointer}.inline-message{margin:0 0 10px;color:var(--warn);font-size:13px}.form-row{display:grid;grid-gap:10px;gap:10px;margin-bottom:10px}.form-row-time{grid-template-columns:repeat(2,minmax(0,1fr))}.form-row label{display:grid;grid-gap:4px;gap:4px;font-size:12px;color:var(--text-muted)}.form-row input,.form-row select,.form-row textarea{border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:8px;font-size:13px}.form-actions{display:flex;gap:8px}.form-error{margin:0 0 10px;color:var(--hot);font-size:12px}.reservation-actions{display:flex;gap:8px;align-items:center}.action-btn{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:4px 8px;font-size:12px;cursor:pointer}.action-btn.delete-btn{border-color:var(--health-error-border);color:var(--hot);background:#fff5f5}.reservation-panel{padding-bottom:80px;overflow:visible}.reservation-filter-panel{border:1px solid var(--border);border-radius:12px;background:var(--surface-subtle);padding:12px;margin-bottom:10px}.reservation-filter-grid{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.reservation-filter-grid label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-muted);width:180px}.reservation-filter-grid select{border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-strong);padding:8px;font-size:13px;width:100%}.action-dock{position:fixed;right:22px;bottom:22px;z-index:1000;display:grid;grid-gap:8px;gap:8px}.dock-btn{border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text-strong);font-weight:700;font-size:13px;padding:10px 14px;box-shadow:0 8px 18px rgba(15,23,42,.12);cursor:pointer}.dock-btn-primary{background:linear-gradient(135deg,var(--brand),#0ea5e9);color:var(--surface);border:none}.dock-btn-danger{border-color:var(--health-error-border);color:var(--hot);background:#fff5f5}.server-switch{display:flex;gap:8px;overflow-x:auto;margin-bottom:10px}.server-switch button{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:7px 12px;white-space:nowrap;cursor:pointer}.server-switch button.active{background:var(--nav-active-bg);color:var(--brand);border-color:var(--brand)}.timeline-scroll{overflow-x:auto;overflow-y:hidden}.timeline-host{position:relative;z-index:1;border:1px solid var(--border);border-radius:12px;overflow-x:hidden;overflow-y:auto;max-height:calc(100vh - 260px);background:var(--surface);margin-bottom:10px;width:100%;max-width:100%}.reservation-rct .rct-sidebar,.reservation-rct .rct-sidebar-row{background:var(--surface-subtle)}.reservation-rct .rct-sidebar-row{border-bottom:1px solid var(--border)}.tree-group-label{display:grid;grid-gap:2px;gap:2px;line-height:1.2;min-width:0}.group-check{display:flex;align-items:center;gap:8px;padding:1px 0;cursor:pointer}.group-check input{margin-top:0;width:14px;height:14px;flex:0 0 auto}.tree-group-server{font-size:13px;color:var(--brand);font-weight:700}.tree-group-server.empty{visibility:hidden}.tree-group-branch{font-size:12px;color:var(--text-muted);font-family:SFMono-Regular,Menlo,Consolas,monospace;white-space:normal;overflow-wrap:anywhere}.reservation-rct .rct-item.item-regular{background:#007196;border-color:#005a78;color:#fff}.reservation-rct .rct-item.item-irregular{background:#ff8c00;border-color:#cc7000;color:#fff}.reservation-rct .rct-item.item-urgent{background:darkred;border-color:#600;color:#fff}.reservation-rct .rct-item.rct-item-selected{box-shadow:0 0 0 2px #0ea5e9}.reservation-rct .rct-item{overflow:hidden}.reservation-item-label{position:absolute;top:50%;transform:translateY(-50%);font-size:14px;line-height:1.2;font-weight:800;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.reservation-rct .rct-item-content{font-size:11px;line-height:1;font-weight:700;height:100%!important;display:flex!important;align-items:center!important;padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reservation-rct .rct-calendar{min-height:420px}.modal-backdrop{inset:0;background:rgba(15,23,42,.45);display:grid;place-items:center;padding:16px;z-index:80}.modal-panel{width:min(900px,100%);max-height:calc(100vh - 40px);overflow:auto;border:1px solid var(--border);border-radius:16px;background:var(--surface);padding:16px;box-shadow:0 18px 45px rgba(15,23,42,.25);position:relative}.modal-close-btn{position:absolute;top:16px;right:16px;background:transparent;border:none;cursor:pointer;color:var(--text-muted);padding:4px;display:grid;place-items:center;border-radius:6px;transition:background-color .2s,color .2s}.modal-close-btn:hover{background:var(--bg-accent);color:var(--text-strong)}.modal-hint{margin:0 0 12px;font-size:13px;color:var(--text-muted)}.selected-targets{margin-bottom:12px;display:grid;grid-gap:8px;gap:8px}.selected-target-card{border:1px solid var(--border);border-radius:10px;background:var(--surface-subtle);padding:8px;display:grid;grid-gap:6px;gap:6px}.selected-target-card strong{font-size:13px}.selected-target-tags{display:flex;flex-wrap:wrap;gap:6px}.selected-target-tags span{border:1px solid var(--brand-hover);border-radius:999px;background:var(--brand-weak);color:var(--brand-hover);font-size:12px;padding:3px 8px}.status-inline{padding:6px 10px;background:transparent;border:1px solid var(--border);box-shadow:none;font-size:13px}@keyframes breathe{0%{opacity:.4}50%{opacity:1;box-shadow:0 0 8px currentColor}to{opacity:.4}}@keyframes loadWidth{0%{width:0}}.status-breathe{animation:breathe 2s ease-in-out infinite}.modal-list{display:grid;grid-gap:8px;gap:8px;margin-bottom:12px;max-height:220px;overflow:auto}.modal-list-item{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:8px;background:var(--surface-subtle);padding:8px;font-size:13px}.modal-panel h3{margin:0 0 12px;font-size:20px}.timeline-shell{min-width:1200px;width:max-content}.time-axis{grid-template-columns:repeat(9,minmax(0,1fr));grid-gap:8px;color:var(--text-muted);font-size:12px}.lane-row,.time-axis{display:grid;gap:8px;margin-bottom:10px}.lane-row{grid-template-columns:76px 1fr;grid-gap:8px;align-items:center}.lane-label{font-size:12px;font-weight:700;color:var(--text-strong)}.lane-track{position:relative;height:42px;background:var(--surface-subtle);border:1px solid var(--border);border-radius:10px}.reservation-bar{position:absolute;top:5px;height:30px;border-radius:8px;padding:2px 6px;font-size:11px;display:grid;align-content:center;overflow:hidden;white-space:nowrap}.reservation-bar span{font-weight:700}.reservation-bar small{opacity:.8}.reservation-bar.regular{background:#0369a1;color:var(--surface)}.reservation-bar.irregular{background:var(--health-checking);color:var(--surface)}.reservation-bar.urgent{background:var(--hot);color:var(--surface)}.legend-row{display:flex;gap:10px;align-items:center;font-size:12px;color:var(--text-muted);margin:8px 0 12px}.dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:4px}.dot.regular{background:#0369a1}.dot.irregular{background:var(--health-checking)}.dot.urgent{background:var(--hot)}.reservation-list{display:grid;grid-gap:8px;gap:8px}.reservation-item{border:1px solid var(--border);border-radius:10px;padding:10px;background:var(--surface);display:flex;align-items:center;justify-content:space-between;gap:8px}.reservation-item p{margin:2px 0 0;font-size:12px;color:var(--text-muted)}.priority-regular{color:#0369a1;background:#e0f2fe;border-color:#7dd3fc}.priority-irregular{color:var(--warn);background:var(--health-checking-bg);border-color:var(--health-checking-border)}.priority-urgent{color:var(--hot);background:var(--health-error-bg);border-color:var(--health-error-border)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:560px}td,th{text-align:left;border-bottom:1px solid var(--border);padding:10px;font-size:14px}.resource-board,.resource-grid{display:grid;grid-gap:10px;gap:10px}.resource-card{border:1px solid var(--border);border-radius:10px;padding:12px}.resource-card h3{margin:0 0 8px;font-size:15px}.resource-card h3 small{display:block;margin-top:2px;color:var(--text-muted);font-weight:500;font-size:12px}.resource-card p{margin:0;font-size:13px;color:var(--text-muted)}.meter{height:10px;border-radius:999px;background:var(--border);margin-bottom:8px;overflow:hidden}.meter-fill{height:100%;background:var(--brand);transition:width .45s ease;animation:loadWidth .8s cubic-bezier(.2,.8,.2,1) forwards}.meter-fill.safe{background:var(--safe)}.meter-fill.warn{background:var(--warn)}.meter-fill.hot{background:var(--hot)}.disk-fold,.meter-block{margin-bottom:8px}.disk-summary{cursor:pointer;list-style:none;display:flex;align-items:center;position:relative}.disk-summary::-webkit-details-marker{display:none}.disk-fold[open] .disk-chevron{transform:rotate(90deg)}.disk-summary-content{flex:1 1;pointer-events:none}.disk-chevron{margin-left:8px;color:var(--text-muted);transition:transform .2s ease,color .15s}.disk-summary:hover .disk-chevron{color:var(--text-strong)}.disk-details{padding-left:12px;margin-top:4px;display:grid;grid-gap:4px;gap:4px;border-left:2px solid var(--surface-subtle);margin-left:4px}.meter-head{display:flex;justify-content:space-between;font-size:12px;margin-bottom:4px}.meter-detail{margin:3px 0 0;font-size:11px;color:var(--text-muted)}.server-block{border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:10px;background:var(--surface-raised)}.server-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:10px}.server-head p{margin:2px 0 0;font-size:12px;color:var(--text-muted)}.gpu-grid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.gpu-card{border:1px solid var(--border);border-radius:10px;padding:10px;background:var(--surface)}.gpu-head{display:flex;justify-content:space-between;margin-bottom:8px;font-size:12px}.gpu-ring{--ring-color:var(--safe);position:relative;width:72px;height:72px;border-radius:50%;display:grid;place-items:center;margin:0 auto 6px}.gpu-ring:before{content:"";width:54px;height:54px;border-radius:50%;background:var(--surface);position:absolute}.gpu-ring span{position:relative;z-index:1;font-size:12px;font-weight:700}.gpu-ring.safe{--ring-color:var(--safe)}.gpu-ring.warn{--ring-color:var(--warn)}.gpu-ring.hot{--ring-color:var(--hot)}.gpu-meta{margin:2px 0;font-size:12px;color:var(--text-muted)}.docker-stack{display:grid;grid-gap:10px;gap:10px}.docker-server{border:1px solid var(--border);border-radius:12px;padding:12px;background:var(--surface-raised)}.docker-server header{display:flex;justify-content:space-between;margin-bottom:10px}.docker-server header span{font-size:12px;color:var(--text-muted)}.docker-grid{display:grid;grid-gap:10px;gap:10px}.docker-card{border:1px solid var(--border);border-radius:10px;padding:10px;background:var(--surface)}.docker-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.docker-head h3{margin:0;font-size:14px}.status-chip{border-radius:999px;padding:2px 8px;font-size:11px;text-transform:uppercase}.status-chip.running{color:var(--health-ok-border);background:var(--health-ok-bg)}.status-chip.degraded{color:var(--warn);background:var(--health-checking-bg)}@media (min-width:768px){.topbar{gap:14px;padding:12px 24px}.topbar-main{display:flex;justify-content:space-between;align-items:center;gap:14px}.topbar-lower{grid-template-columns:auto 1fr;align-items:end;gap:12px}.topbar-right{justify-self:end}.quick-links-inline{justify-content:center}.app{grid-template-columns:1fr;padding:32px 24px;gap:20px}.unified-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-row{grid-template-columns:repeat(3,minmax(0,1fr))}.reservation-filter-grid{grid-template-columns:repeat(3,minmax(180px,260px));justify-content:start}.notice-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.future-deadline-grid{grid-template-columns:repeat(auto-fill,minmax(160px,210px))}.gpu-check-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.form-row-time,.view-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.fleet-meters{grid-template-columns:repeat(3,minmax(0,1fr))}.resource-board{grid-template-columns:repeat(2,minmax(0,1fr))}.docker-grid,.resource-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.link-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:767px){.time-strip{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.time-card{min-width:92px;flex:0 0 auto}.topbar-lower{gap:8px}.topbar-row-lower,.topbar-row-upper{justify-content:flex-end}.quick-links-inline{justify-content:flex-start}.reservation-panel{padding-bottom:92px}.reservation-rct .rct-calendar{min-height:480px}.tree-group-server{font-size:12px}.tree-group-branch{font-size:11px}.action-dock{left:12px;right:12px;bottom:12px;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.dock-btn{font-size:12px;border-radius:12px;padding:10px 8px;width:100%;display:inline-flex;justify-content:center}}@media (min-width:1280px){.app{padding:32px 28px}.topbar{padding:12px 28px}.unified-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.theme-toggle-group{background:var(--bg-accent);padding:3px;gap:2px}.theme-toggle-group,.theme-toggle-group button{display:flex;align-items:center;border-radius:999px}.theme-toggle-group button{justify-content:center;padding:5px 8px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;transition:all .2s ease}.theme-toggle-group button:hover:not(.active){color:var(--text-strong)}.theme-toggle-group button.active{background:var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.1);color:var(--brand)}.reservation-rct .rct-header-root{position:-webkit-sticky;position:sticky;top:0;z-index:60;background:var(--surface)}.reservation-rct .rct-calendar-header{border-bottom:1px solid var(--border)}.reservation-rct .rct-dateHeader{color:var(--text-strong)!important;background:var(--surface)!important}.reservation-rct .rct-dateHeader-primary{background:var(--surface-subtle)!important;color:var(--text-strong)!important}.reservation-item-sticky-wrap{position:relative;width:100%;height:100%!important;display:flex!important;align-items:center!important;overflow:hidden;padding:0!important}.reservation-item-sticky-label{position:-webkit-sticky;position:sticky;left:4px;font-size:11px;line-height:1;font-weight:700;white-space:nowrap;padding:0 4px;pointer-events:none}.server-panel{padding:24px}.server-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.server-header h2{font-size:18px;font-weight:700;color:var(--text-strong);margin:0}.server-add-btn{padding:6px 14px;border-radius:8px;border:1px solid var(--accent);background:var(--accent);color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .15s}.server-add-btn:hover{opacity:.85}.server-form-row{display:flex;gap:8px;align-items:center;margin-bottom:16px;padding:12px;background:var(--surface-subtle);border-radius:10px;border:1px solid var(--border)}.server-input{padding:6px 10px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text-strong);font-size:13px;flex:1 1;min-width:0}.server-input:focus{outline:none;border-color:var(--accent)}.server-input-sm{max-width:70px;flex:0 0 70px}.server-table-wrap{overflow-x:auto;border-radius:10px;border:1px solid var(--border)}.server-table{width:100%;border-collapse:collapse;font-size:13px}.server-table th{text-align:left;font-weight:700;color:var(--text-muted);background:var(--surface-subtle);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.server-table td,.server-table th{padding:10px 14px;border-bottom:1px solid var(--border)}.server-table td{color:var(--text-strong)}.server-table tr:last-child td{border-bottom:none}.server-table code{font-size:12px;background:var(--surface-subtle);padding:2px 6px;border-radius:4px;color:var(--text-muted)}.server-actions{display:flex;gap:6px}.server-cancel-btn,.server-delete-btn,.server-edit-btn,.server-save-btn{padding:4px 10px;border-radius:6px;border:1px solid var(--border);font-size:12px;font-weight:600;cursor:pointer;transition:all .15s}.server-save-btn{background:var(--accent);color:#fff;border-color:var(--accent)}.server-cancel-btn{background:var(--surface-subtle);color:var(--text-muted)}.server-edit-btn{background:var(--surface);color:var(--text-strong)}.server-delete-btn{background:var(--surface);color:#ef4444;border-color:#ef444433}.server-delete-btn:hover{background:#ef444415}.server-empty,.server-loading{text-align:center;color:var(--text-muted);padding:32px 0;font-size:14px}.tab-btn{padding:6px 12px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:13px;font-weight:500;cursor:pointer;transition:all .1s ease}.tab-btn:hover{background:var(--surface-hover);color:var(--text)}.tab-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.modal-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center}.modal-content{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 20px 40px rgba(0,0,0,.4);overflow:hidden}.modal-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--surface-subtle)}.history-section{background:var(--surface);padding:20px;border-radius:12px;border:1px solid var(--border)}.icon-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:6px;transition:all .2s}.icon-btn:hover{background:var(--bg);color:var(--text)}.weather-raindrop{position:absolute;top:-20px;width:2px;height:18px;background:linear-gradient(180deg,rgba(174,197,255,0),rgba(174,197,255,.7));border-radius:0 0 2px 2px;animation:weather-rain-fall linear infinite}@keyframes weather-rain-fall{0%{transform:translateY(-20px)}to{transform:translateY(calc(100% + 120px))}}.react-calendar-timeline *{box-sizing:border-box}.react-calendar-timeline .rct-outer{display:block;overflow:hidden;white-space:nowrap}.react-calendar-timeline .rct-scroll{display:inline-block;white-space:normal;vertical-align:top;overflow-x:scroll;overflow-y:hidden;touch-action:none}.react-calendar-timeline .rct-item:hover{z-index:88}.react-calendar-timeline .rct-item .rct-item-content{position:sticky;position:-webkit-sticky;left:0;overflow:hidden;display:inline-block;border-radius:2px;padding:0 6px;height:100%}.react-calendar-timeline .rct-sidebar{overflow:hidden;white-space:normal;display:inline-block;vertical-align:top;position:relative;box-sizing:border-box;border-right:1px solid #bbb}.react-calendar-timeline .rct-sidebar.rct-sidebar-right{border-right:0;border-left:1px solid #bbb}.react-calendar-timeline .rct-sidebar .rct-sidebar-row{padding:0 4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;margin:0;border-bottom:1px solid #bbb}.react-calendar-timeline .rct-sidebar .rct-sidebar-row.rct-sidebar-row-odd{background:#0000000d}.react-calendar-timeline .rct-sidebar .rct-sidebar-row.rct-sidebar-row-even{background:transparent}.react-calendar-timeline .rct-vertical-lines .rct-vl{position:absolute;border-left:1px solid #bbb;z-index:30}.react-calendar-timeline .rct-vertical-lines .rct-vl.rct-vl-first{border-left-width:2px}.react-calendar-timeline .rct-vertical-lines .rct-vl.rct-day-0,.react-calendar-timeline .rct-vertical-lines .rct-vl.rct-day-6{background:#faf6e180}.react-calendar-timeline .rct-horizontal-lines{-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none}.react-calendar-timeline .rct-horizontal-lines .rct-hl-even,.react-calendar-timeline .rct-horizontal-lines .rct-hl-odd{border-bottom:1px solid #bbb;box-sizing:border-box;z-index:40}.react-calendar-timeline .rct-horizontal-lines .rct-hl-odd{background:#0000000d}.react-calendar-timeline .rct-horizontal-lines .rct-hl-even{background:transparent}.react-calendar-timeline .rct-cursor-line{position:absolute;width:2px;background:#2196f3;z-index:51}.react-calendar-timeline .rct-dateHeader{display:flex;align-items:center;justify-content:center;height:100%;border-bottom:1px solid #bbb;cursor:pointer;font-size:14px;background-color:#f0f0f0;border-left:2px solid #bbb}.react-calendar-timeline .rct-dateHeader-primary{background-color:initial;border-left:1px solid #bbb;border-right:1px solid #bbb;color:#fff}.react-calendar-timeline .rct-header-root{background:#c52020;border-bottom:1px solid #bbb}.react-calendar-timeline .rct-calendar-header{border:1px solid #bbb}