:root{--bg: #f8fafc;--surface: #ffffff;--surface-soft: #f8fafc;--line: #e2e8f0;--line-strong: #cbd5e1;--ink: #0f172a;--muted: #64748b;--primary: #2563eb;--primary-soft: #dbeafe;--success-soft: #dcfce7;--success-ink: #166534;--warning-soft: #fef3c7;--warning-ink: #a16207;--danger-soft: #fee2e2;--danger-ink: #b91c1c;--mono: "IBM Plex Mono", monospace;--display: Inter, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--display)}a{color:inherit;text-decoration:none}button{font:inherit}.shell{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:100%}.sidebar{padding:24px;border-right:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;gap:24px}.brand h1,.page-header h2,.hero h2{margin:0;font-size:2rem;line-height:1.08;letter-spacing:-.03em}.brand p,.lede,.sidebar-note p{color:var(--muted);line-height:1.55;margin:10px 0 0}.brand-kicker,.eyebrow,.panel-kicker,.sidebar-note span,.topbar-kicker{display:inline-block;margin-bottom:6px;color:var(--primary);font-family:var(--mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}.nav{display:grid;gap:8px}.nav-link{padding:12px 14px;border:1px solid transparent;border-radius:12px;color:var(--muted);transition:background .12s ease,color .12s ease,border-color .12s ease}.nav-link:hover,.nav-link.is-active{background:var(--primary-soft);border-color:#bfdbfe;color:var(--primary)}.sidebar-note{margin-top:auto;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--surface-soft)}.content{padding:24px;overflow:auto}.topbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px;padding:16px 18px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}.topbar strong{font-size:.95rem}.toolbar-selects{display:flex;gap:12px;flex-wrap:wrap;align-items:end}.toolbar-refresh{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.toolbar-select{position:relative;display:grid;gap:6px;min-width:220px}.toolbar-select-label{color:var(--muted);font-size:.78rem;font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em}.toolbar-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);cursor:pointer}.toolbar-select-trigger.is-open{border-color:#bfdbfe;box-shadow:0 0 0 3px #2563eb1f}.toolbar-select-chevron{color:var(--muted);font-size:.8rem}.refresh-button{height:44px;padding:0 16px;border:1px solid #bfdbfe;border-radius:12px;background:linear-gradient(180deg,#eff6ff,#dbeafe);color:var(--primary);font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.refresh-button:hover{transform:translateY(-1px);box-shadow:0 10px 18px #2563eb1f}.refresh-button:active{transform:translateY(0)}.toolbar-select-menu{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:20;display:grid;gap:4px;padding:8px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:0 12px 24px #0f172a1f}.custom-range-form{display:grid;gap:10px;padding-top:8px;border-top:1px solid var(--line)}.custom-range-mode,.custom-range-relative{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.custom-range-field{display:grid;gap:6px;color:var(--muted);font-size:.82rem}.custom-range-field input,.custom-range-field select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink)}.toolbar-select-option{width:100%;padding:10px 12px;border:0;border-radius:10px;background:transparent;color:var(--muted);text-align:left;display:flex;align-items:center;gap:10px;cursor:pointer}.toolbar-select-option:hover,.toolbar-select-option.is-active{background:var(--primary-soft);color:var(--primary)}.toolbar-select-check{width:18px;height:18px;border:1px solid var(--line-strong);border-radius:5px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;font-size:.78rem;color:#fff;background:var(--surface)}.toolbar-select-check.is-checked{background:var(--primary);border-color:var(--primary)}.range-picker{display:flex;gap:8px;flex-wrap:wrap}.range-button{padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--muted);cursor:pointer}.range-button.is-active{border-color:var(--primary);background:var(--primary);color:#fff}.page{display:grid;gap:24px;max-width:1400px}.page-meta{margin:0 0 16px;color:var(--muted);font-family:var(--mono);font-size:.78rem;letter-spacing:.03em}.page-meta.is-refreshing{color:var(--primary)}.hero,.panel,.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:0 1px 2px #0f172a0a}.hero{padding:24px;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.9fr);gap:24px}.hero-panel{display:flex;flex-wrap:wrap;align-content:flex-start;gap:10px;padding:18px;border-radius:14px;background:var(--surface-soft);border:1px solid var(--line)}.hero-chip,.badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:6px 10px;font-size:.75rem;font-weight:700}.hero-chip{background:#fff;border:1px solid var(--line);color:var(--ink)}.stats-grid,.panel-grid,.priority-grid,.environment-grid{display:grid;gap:16px}.hotspot-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.hotspot-column{display:grid;gap:12px}.hotspot-column-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.panel-grid{grid-template-columns:minmax(0,1.45fr) minmax(320px,.95fr)}.panel-grid-single{grid-template-columns:minmax(0,1fr)}.panel-wide{min-height:400px}.priority-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.priority-grid-compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.environment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-card{padding:18px;display:grid;gap:8px}.stat-card span{color:var(--muted)}.stat-card strong{font-size:1.9rem}.tone-warning{border-color:#fde68a}.tone-danger{border-color:#fecaca}.tone-success{border-color:#bbf7d0}.panel{padding:22px}.panel-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px}.panel-header h3,.priority-card h4{margin:0;font-size:1.15rem}.chart-wrap{width:100%;height:320px}.panel-inline-info,.panel-inline-error{margin-bottom:10px;padding:10px 12px;border-radius:10px;font-size:.9rem}.panel-inline-info{background:var(--primary-soft);color:var(--primary)}.panel-inline-error{background:var(--danger-soft);color:var(--danger-ink)}.chart-toolbar{display:grid;gap:10px;margin-bottom:16px}.chart-select-row{display:flex;gap:12px;flex-wrap:wrap}.chart-select{max-width:360px}.chart-select .toolbar-select-menu{max-height:300px;overflow-y:auto;overscroll-behavior:contain}.chart-select-search{position:sticky;top:0;z-index:1;padding-bottom:6px;background:var(--surface)}.chart-select-search input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink)}.chart-select-empty{padding:10px 12px;color:var(--muted);font-size:.9rem}.chart-toolbar-label{color:var(--muted);font-size:.9rem}.service-picker{display:flex;flex-wrap:wrap;gap:8px}.service-chip{padding:7px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--muted);cursor:pointer}.service-chip.is-active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.recommendation-stack{display:grid;gap:10px}.recommendation-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface-soft)}.recommendation-row p,.priority-card p{margin:4px 0 0;color:var(--muted)}.priority-card{padding:18px;border-radius:16px;border:1px solid var(--line);background:var(--surface-soft)}.priority-card-compact{padding:10px;border-radius:10px}.priority-card header{display:flex;justify-content:space-between;gap:8px;align-items:center}.priority-card dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0 0}.priority-card dt{font-size:.8rem;color:var(--muted)}.priority-card dd{margin:4px 0 0;font-family:var(--mono)}.priority-card-compact dl{grid-template-columns:1fr;gap:6px;margin-top:8px}.priority-card-compact header{gap:6px}.priority-card-compact h4{font-size:1rem}.priority-card-compact p{margin-top:2px;font-size:.9rem}.priority-card-compact dt,.priority-card-compact dd{font-size:.82rem}.priority-card-split-values{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:start}.priority-card-split-values>span{display:flex;flex-direction:column;gap:2px}.priority-card-split-values strong{color:var(--muted);font-size:.78rem;font-family:var(--sans);font-weight:600}.badge-healthy{background:var(--success-soft);color:var(--success-ink)}.badge-undersized{background:var(--danger-soft);color:var(--danger-ink)}.badge-oversized{background:var(--warning-soft);color:var(--warning-ink)}.badge-no_docker_limit{background:var(--primary-soft);color:var(--primary)}.recommendation-state-title{width:fit-content;margin:0;padding:6px 12px;border-radius:999px;border:1px solid transparent}.recommendation-state-title-undersized{background:var(--danger-soft);color:var(--danger-ink);border-color:color-mix(in srgb,var(--danger-ink) 14%,transparent)}.recommendation-state-title-oversized{background:var(--warning-soft);color:var(--warning-ink);border-color:color-mix(in srgb,var(--warning-ink) 14%,transparent)}.recommendation-state-title-no_docker_limit{background:var(--primary-soft);color:var(--primary);border-color:color-mix(in srgb,var(--primary) 14%,transparent)}.page-header{display:flex;justify-content:space-between;align-items:end}.data-table{display:grid;gap:1px;background:var(--line);border-radius:16px;overflow:hidden}.table-row{display:grid;grid-template-columns:.9fr 1.5fr 1fr 1fr .7fr .8fr .9fr .9fr 1fr 1fr;gap:12px;align-items:center;background:var(--surface);padding:14px 16px;font-size:.92rem}.services-table-row{grid-template-columns:minmax(220px,1.55fr) minmax(120px,.95fr) minmax(72px,.7fr) minmax(90px,.8fr) minmax(110px,.95fr) minmax(110px,.95fr) minmax(135px,1.1fr);column-gap:18px}.oom-table-row{grid-template-columns:minmax(180px,1.05fr) minmax(220px,1.6fr) minmax(140px,1.05fr) minmax(90px,.7fr) minmax(96px,.6fr);column-gap:18px}.history-table-row{grid-template-columns:minmax(140px,.9fr) minmax(260px,1.55fr) minmax(180px,1.05fr) minmax(160px,1fr) minmax(190px,1.05fr);column-gap:18px}.history-toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:16px}.history-change-badge{display:inline-flex;align-items:center;justify-content:center;width:fit-content;padding:7px 12px;border-radius:999px;border:1px solid transparent;font-size:.78rem;font-weight:700;line-height:1;letter-spacing:.02em;text-transform:none;white-space:nowrap;box-shadow:inset 0 1px #ffffff59}.history-change-badge-danger{background:var(--danger-soft);color:var(--danger-ink)}.history-change-badge-warning{background:color-mix(in srgb,var(--warning-soft) 82%,white 18%);color:var(--warning-ink);border-color:color-mix(in srgb,var(--warning-ink) 16%,transparent)}.history-change-badge-primary{background:color-mix(in srgb,var(--primary-soft) 82%,white 18%);color:var(--primary);border-color:color-mix(in srgb,var(--primary) 16%,transparent)}.table-head{background:var(--surface-soft);font-family:var(--mono);text-transform:uppercase;font-size:.78rem;letter-spacing:.05em}.table-sort{padding:0;border:0;background:transparent;color:inherit;text-align:left;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer}.table-cell-service{padding-right:20px}.table-cell-right{width:100%;text-align:right;justify-self:end}.table-cell-numeric{font-family:var(--mono);font-variant-numeric:tabular-nums}.env-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.env-stats div{padding:16px;border-radius:14px;background:var(--surface-soft);border:1px solid var(--line)}.env-stats span{display:block;color:var(--muted);margin-bottom:8px}.env-stats strong{font-size:1.6rem}.auth-screen{min-height:100vh;display:grid;place-items:center;padding:32px;background:radial-gradient(circle at top left,rgba(37,99,235,.16),transparent 32%),radial-gradient(circle at bottom right,rgba(249,115,22,.12),transparent 28%),linear-gradient(135deg,#f8fafc,#eef4ff 46%,#f8fafc)}.auth-screen-shell{width:min(100%,1120px);display:grid;grid-template-columns:minmax(0,1.25fr) minmax(360px,420px);gap:28px;align-items:stretch}.auth-screen-hero,.auth-screen-card,.auth-modal{border:1px solid var(--line);background:var(--surface);border-radius:18px;box-shadow:0 20px 60px #0f172a24}.auth-screen-hero{padding:36px;background:linear-gradient(180deg,#ffffffe0,#ffffffc2),linear-gradient(135deg,#2563eb1f,#f9731614);display:flex;flex-direction:column;justify-content:space-between;min-height:420px}.auth-screen-card{padding:30px 28px;display:grid;gap:24px}.auth-screen-hero h1{margin:10px 0 12px;font-size:clamp(2.4rem,4vw,4.2rem);line-height:.95;letter-spacing:-.04em}.auth-screen-lede,.auth-screen-card p{margin:0 0 18px;color:var(--muted);max-width:42ch}.auth-screen-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.auth-screen-metrics div{padding:16px 14px;border-radius:16px;background:#ffffffbd;border:1px solid rgba(80,97,111,.14)}.auth-screen-metrics strong,.auth-device-label,.auth-card-kicker{display:block;font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:6px}.auth-screen-metrics span{display:block;color:var(--ink);line-height:1.35}.auth-card-header h2{margin:0 0 10px;font-size:1.9rem;line-height:1.02}.auth-card-header p{margin:0}.auth-steps{margin:0;padding:0;list-style:none;display:grid;gap:10px;counter-reset:auth-step}.auth-steps li{display:grid;grid-template-columns:32px 1fr;gap:12px;align-items:center;color:var(--ink)}.auth-steps li:before{counter-increment:auth-step;content:counter(auth-step);display:grid;place-items:center;width:32px;height:32px;border-radius:999px;background:#dbeafe;color:#1d4ed8;font-weight:700;font-family:var(--mono)}.auth-status-chip{display:inline-flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface-soft);color:var(--ink);font-size:.85rem}.auth-link-button{border:0;background:transparent;color:var(--accent-ink);cursor:pointer;font:inherit;padding:0}.auth-primary-button,.auth-secondary-button,.auth-primary-link{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;border-radius:12px;text-decoration:none;cursor:pointer;font:inherit}.auth-screen-card>.auth-primary-button{width:auto;min-width:0;min-height:38px;padding:0 14px;border-radius:10px;font-size:.92rem;box-shadow:0 10px 22px #2563eb29;align-self:start}.auth-primary-button,.auth-primary-link{border:0;background:linear-gradient(135deg,#1d4ed8,#2563eb);color:#fff;box-shadow:0 14px 30px #2563eb38}.auth-secondary-button{border:1px solid var(--line);background:var(--surface);color:var(--ink)}.auth-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;display:grid;place-items:center;padding:20px;z-index:1000}.auth-modal{width:min(100%,760px);padding:24px;background:linear-gradient(180deg,#fffffff5,#ffffffeb),linear-gradient(135deg,#2563eb0f,#f973160a)}.auth-modal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.auth-modal-header h3{margin:0}.auth-device-flow{display:grid;gap:18px}.auth-device-description{max-width:50ch}.auth-device-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.auth-device-panel{padding:18px;border-radius:16px;border:1px solid var(--line);background:#ffffffd1;display:grid;gap:12px}.auth-device-panel-link{align-content:start}.auth-device-flow p,.auth-error-box p{margin:0;color:var(--muted)}.auth-device-code{font-family:var(--mono);font-size:clamp(1.9rem,4vw,2.6rem);letter-spacing:.16em;text-align:center;padding:18px 16px;border-radius:12px;border:1px solid rgba(37,99,235,.18);background:linear-gradient(135deg,#eff6ff,#fff)}.auth-device-link{color:var(--accent-ink);word-break:break-all;line-height:1.5}.auth-device-status{display:inline-flex;align-items:center;gap:10px;padding:12px 14px;border-radius:999px;width:fit-content;background:#2563eb14;border:1px solid rgba(37,99,235,.12)}.auth-device-pulse{width:10px;height:10px;border-radius:999px;background:#2563eb;box-shadow:0 0 #2563eb5c;animation:auth-pulse 1.8s ease-out infinite}.auth-device-waiting{font-size:.9rem;margin:0}.auth-error-box{display:grid;gap:14px}@keyframes auth-pulse{0%{box-shadow:0 0 #2563eb5c}70%{box-shadow:0 0 0 12px #2563eb00}to{box-shadow:0 0 #2563eb00}}@media(max-width:1100px){.shell,.hero,.panel-grid,.stats-grid,.priority-grid,.environment-grid,.hotspot-columns,.priority-grid-compact,.auth-screen-shell,.auth-device-grid,.auth-screen-metrics{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line)}.topbar{align-items:flex-start;flex-direction:column}.toolbar-selects,.toolbar-select{width:100%}.table-row{grid-template-columns:repeat(2,minmax(0,1fr))}.history-toolbar{grid-template-columns:1fr}}.history-service-field{position:relative}.history-service-menu{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:10;display:grid;gap:4px;max-height:240px;overflow-y:auto;padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 14px 30px #0f172a24}.history-service-option{padding:9px 10px;border:0;border-radius:8px;background:transparent;color:inherit;text-align:left;cursor:pointer}.history-service-option:hover{background:var(--surface-soft)}
