:root{--bg:oklch(16% .012 250);--bg2:oklch(19% .014 250);--bg3:oklch(22% .016 250);--bg-hover:oklch(24% .018 250);--bg-elev:oklch(21% .014 250);--text:oklch(96% .005 250);--text2:oklch(78% .012 250);--text3:oklch(58% .012 250);--text4:oklch(42% .012 250);--border:oklch(28% .012 250);--border2:oklch(34% .014 250);--border3:oklch(42% .018 250);--accent:oklch(78% .13 200);--accent-dim:oklch(55% .1 200);--green:oklch(78% .16 145);--green-bg:oklch(32% .08 145/.25);--yellow:oklch(82% .14 88);--yellow-bg:oklch(38% .08 88/.25);--red:oklch(72% .18 25);--red-bg:oklch(36% .1 25/.3);--frontend:oklch(72% .16 305);--backend:oklch(74% .13 195);--db:oklch(80% .13 80);--hosting:oklch(72% .14 245);--auth:oklch(72% .16 350);--tool:oklch(65% .02 250);--radius:6px;--radius-lg:10px;--radius-xl:14px;--font-sans:"Inter", -apple-system, system-ui, sans-serif;--font-mono:"JetBrains Mono", "Menlo", "Monaco", monospace;--shadow-card:0 1px 2px #0006, 0 0 0 1px var(--border) inset;--shadow-card-hover:0 4px 12px #0006, 0 0 0 1px var(--border2) inset}.status-good{color:var(--green)}.status-warning{color:var(--yellow)}.status-critical{color:var(--red)}.status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.status-dot.good{background:var(--green);box-shadow:0 0 6px var(--green)}.status-dot.warning{background:var(--yellow);box-shadow:0 0 6px var(--yellow)}.status-dot.critical{background:var(--red);box-shadow:0 0 6px var(--red)}.status-dot.critical.pulse{animation:2s ease-in-out infinite pulse}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11", "ss01", "ss03";min-height:100vh;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer;color:inherit;background:0 0;border:0;padding:0;font-family:inherit}input,textarea{font-family:inherit}::selection{background:var(--accent-dim);color:var(--text)}.app{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--bg2);border-right:1px solid var(--border);flex-direction:column;gap:4px;height:100vh;padding:18px 14px;display:flex;position:sticky;top:0}.sidebar-brand{border-bottom:1px dashed var(--border);align-items:center;gap:10px;margin-bottom:12px;padding:6px 8px 18px;display:flex}.brand-logo{background:var(--bg3);border:1px solid var(--border2);border-radius:var(--radius);justify-content:center;align-items:center;width:32px;height:32px;display:flex;position:relative;overflow:hidden}.brand-logo svg{display:block}.brand-name{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:600}.brand-sub{font-family:var(--font-mono);color:var(--text3);letter-spacing:.06em;font-size:10px}.nav-section-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text4);padding:12px 8px 6px;font-size:10px}.nav-item{border-radius:var(--radius);color:var(--text2);cursor:pointer;border:1px solid #0000;align-items:center;gap:10px;padding:8px 10px;font-size:13px;display:flex}.nav-item:hover{background:var(--bg3);color:var(--text)}.nav-item.active{background:var(--bg3);color:var(--text);border-color:var(--border2)}.nav-item .nav-dot{background:var(--text4);border-radius:50%;width:6px;height:6px}.nav-item.active .nav-dot{background:var(--accent);box-shadow:0 0 8px var(--accent)}.nav-project{border-radius:var(--radius);color:var(--text2);cursor:pointer;font-size:12px;font-family:var(--font-mono);align-items:center;gap:8px;padding:5px 10px 5px 8px;display:flex}.nav-project:hover,.nav-project.active{background:var(--bg3);color:var(--text)}.nav-project-vital{border-radius:50%;flex-shrink:0;width:8px;height:8px}.vital-good{background:var(--green);box-shadow:0 0 6px var(--green)}.vital-warning{background:var(--yellow);box-shadow:0 0 6px var(--yellow)}.vital-critical{background:var(--red);box-shadow:0 0 6px var(--red)}.vital-pulse{animation:2s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.sidebar-footer{border-top:1px dashed var(--border);font-family:var(--font-mono);color:var(--text3);flex-direction:column;gap:6px;margin-top:auto;padding-top:14px;font-size:10px;display:flex}.main{width:100%;max-width:1400px;padding:28px 36px 80px}.page-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-end;margin-bottom:28px;padding-bottom:18px;display:flex}.page-title{letter-spacing:-.015em;margin:0 0 4px;font-size:24px;font-weight:600}.page-subtitle{font-family:var(--font-mono);color:var(--text3);letter-spacing:.04em;align-items:center;gap:10px;margin:0;font-size:11px;display:flex}.page-subtitle .live-dot{background:var(--green);width:6px;height:6px;box-shadow:0 0 6px var(--green);border-radius:50%;animation:2s ease-in-out infinite pulse}.page-actions{align-items:center;gap:8px;display:flex}.btn{border-radius:var(--radius);background:var(--bg3);border:1px solid var(--border2);color:var(--text);cursor:pointer;align-items:center;gap:6px;padding:7px 12px;font-size:12px;font-weight:500;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover{background:var(--bg-hover);border-color:var(--border3)}.btn-primary{background:var(--accent);color:oklch(16% .012 250);border-color:var(--accent);font-weight:600}.btn-primary:hover{background:oklch(83% .13 200)}.btn-ghost{border-color:var(--border);background:0 0}.btn-ghost:hover{background:var(--bg3)}.btn-sm{padding:5px 9px;font-size:11px}.spinner{border:1.5px solid;border-top-color:#0000;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}.card-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.card-title{font-size:13px;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text3);margin:0}.metrics-row{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px;display:grid}.metric{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;position:relative;overflow:hidden}.metric-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--text3);align-items:center;gap:6px;margin-bottom:8px;font-size:10px;display:flex}.metric-value{letter-spacing:-.03em;font-feature-settings:"tnum";font-size:36px;font-weight:600;line-height:1}.metric-unit{color:var(--text3);margin-left:4px;font-size:16px;font-weight:400}.metric-sub{font-family:var(--font-mono);color:var(--text3);margin-top:6px;font-size:11px}.metric-ekg{opacity:.5;width:90px;height:32px;position:absolute;bottom:8px;right:-8px}.health-good{color:var(--green)}.health-warning{color:var(--yellow)}.health-critical{color:var(--red)}.diagnosis{background:linear-gradient(180deg, var(--bg2), var(--bg));border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;position:relative}.diagnosis:before{content:"";background:var(--accent);border-radius:var(--radius-lg) 0 0 var(--radius-lg);width:3px;position:absolute;top:0;bottom:0;left:0}.diagnosis-header{border-bottom:1px dashed var(--border2);justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;display:flex}.diagnosis-title{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--accent);margin:0;font-size:11px}.diagnosis-date{font-family:var(--font-mono);color:var(--text3);font-size:11px}.diagnosis-status{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;margin:0 0 12px;font-size:14px;font-weight:600}.diagnosis-body{font-family:var(--font-mono);color:var(--text2);white-space:pre-wrap;font-size:13px;line-height:1.7}.diagnosis-body strong{color:var(--text);font-weight:600}.diagnosis-section-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text3);margin:16px 0 6px;font-size:11px}.diagnosis-body ul{margin:6px 0 0;padding:0;list-style:none}.diagnosis-body li{font-family:var(--font-mono);color:var(--text2);padding:4px 0 4px 18px;font-size:12px;position:relative}.diagnosis-body li:before{content:"▸";color:var(--accent);position:absolute;left:0}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px;display:grid}.project-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;flex-direction:column;gap:12px;padding:18px;transition:border-color .15s,transform .15s;display:flex;position:relative}.project-card:hover{border-color:var(--border2);transform:translateY(-1px)}.project-card-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.project-name{letter-spacing:-.01em;margin:0 0 2px;font-size:16px;font-weight:600}.project-repo{font-family:var(--font-mono);color:var(--text3);font-size:11px}.health-ring{flex-shrink:0;width:56px;height:56px;position:relative}.health-ring svg{transform:rotate(-90deg)}.health-ring-value{font-feature-settings:"tnum";font-size:16px;font-weight:600;font-family:var(--font-mono);letter-spacing:-.02em;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.health-ring-sub{color:var(--text3);letter-spacing:.04em;text-transform:uppercase;margin-top:-2px;font-size:8px;font-weight:400}.project-desc{color:var(--text2);text-wrap:pretty;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:1.55;display:-webkit-box;overflow:hidden}.stack-tags{flex-wrap:wrap;gap:5px;display:flex}.stack-tag{font-family:var(--font-mono);letter-spacing:.02em;background:var(--bg3);border:1px solid var(--border);color:var(--text2);border-radius:4px;align-items:center;gap:5px;padding:3px 8px;font-size:10.5px;font-weight:500;display:inline-flex}.stack-tag .stack-dot{border-radius:50%;width:6px;height:6px}.stack-tag-overflow{color:var(--text3);font-family:var(--font-mono);padding:3px 8px;font-size:10.5px}.stack-dot-frontend{background:var(--frontend)}.stack-dot-backend{background:var(--backend)}.stack-dot-db{background:var(--db)}.stack-dot-hosting{background:var(--hosting)}.stack-dot-auth{background:var(--auth)}.stack-dot-tool{background:var(--tool)}.project-card-foot{border-top:1px dashed var(--border);justify-content:space-between;align-items:center;padding-top:12px;display:flex}.project-stats{font-family:var(--font-mono);color:var(--text3);gap:14px;font-size:11px;display:flex}.project-stats .stat-strong{color:var(--text2);font-weight:500}.status-badge{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border-radius:3px;align-items:center;gap:5px;padding:3px 7px;font-size:9.5px;font-weight:600;display:inline-flex}.status-active{color:var(--green);background:oklch(32% .08 145/.4)}.status-planned{color:var(--hosting);background:oklch(32% .08 245/.4)}.status-maintenance{color:var(--red);background:oklch(36% .1 25/.35)}.status-paused{background:var(--bg3);color:var(--text3)}.severity-badge{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border-radius:3px;padding:2px 6px;font-size:9.5px;font-weight:600}.sev-high,.sev-major{background:var(--red-bg);color:var(--red)}.sev-medium,.sev-minor{background:var(--yellow-bg);color:var(--yellow)}.sev-low,.sev-patch{background:var(--bg3);color:var(--text3);border:1px solid var(--border2)}.effort-badge{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--border2);color:var(--text2);border-radius:3px;padding:2px 6px;font-size:9.5px;font-weight:600}.section-h{border-bottom:1px dashed var(--border);justify-content:space-between;align-items:baseline;margin:32px 0 14px;padding-bottom:8px;display:flex}.section-h-title{font-size:12px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--text3);align-items:center;gap:10px;margin:0;display:flex}.section-h-count{font-family:var(--font-mono);color:var(--text4);font-size:10px}.two-col{grid-template-columns:340px 1fr;gap:24px;display:grid}.tabs{border-bottom:1px solid var(--border);gap:2px;margin-bottom:16px;display:flex}.tab{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text3);cursor:pointer;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 14px;font-size:11px}.tab:hover{color:var(--text2)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.row-list{flex-direction:column;gap:0;display:flex}.row{border-bottom:1px dashed var(--border);justify-content:space-between;align-items:center;gap:16px;padding:12px 0;display:flex}.row:last-child{border-bottom:0}.row-mono{font-family:var(--font-mono);color:var(--text2);font-size:12px}.row-strong{color:var(--text);font-weight:500}.dep-row{font-family:var(--font-mono);font-size:12px}.dep-versions{color:var(--text3)}.dep-versions .v-cur{color:var(--text)}.dep-versions .v-arrow{color:var(--text4);margin:0 6px}.dep-versions .v-new{color:var(--accent)}.rec-item{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);align-items:flex-start;gap:14px;margin-bottom:8px;padding:14px 16px;display:flex}.rec-priority{font-family:var(--font-mono);color:var(--accent);text-align:center;letter-spacing:-.02em;width:28px;font-size:18px;font-weight:600}.rec-body{flex:1}.rec-title{margin:0 0 4px;font-size:13px;font-weight:600}.rec-desc{color:var(--text2);margin:0 0 8px;font-size:12px}.rec-meta{gap:6px;display:flex}.topic{border-bottom:1px dashed var(--border);align-items:center;gap:10px;padding:8px 0;font-size:13px;display:flex}.topic:last-of-type{border-bottom:0}.topic-check{border:1.5px solid var(--border3);cursor:pointer;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:flex}.topic-check.done{background:var(--green);border-color:var(--green)}.topic-text{flex:1}.topic.done .topic-text{color:var(--text3);text-decoration:line-through}.topic-delete{opacity:0;color:var(--text4);padding:4px;font-size:14px;transition:opacity .12s,color .12s}.topic:hover .topic-delete{opacity:1}.topic-delete:hover{color:var(--red)}.topic-input{gap:8px;margin-top:12px;display:flex}.topic-input input{background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius);color:var(--text);outline:none;flex:1;padding:7px 10px;font-size:12px}.topic-input input:focus{border-color:var(--accent)}.dist-row{gap:8px;margin-top:14px;display:flex}.dist-cell{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-mono);color:var(--text3);text-transform:uppercase;letter-spacing:.06em;flex:1;padding:10px 12px;font-size:11px}.dist-cell-value{color:var(--text);font-size:22px;font-weight:600;font-family:var(--font-mono);letter-spacing:-.02em;margin-bottom:2px;display:block}.dist-cell.good .dist-cell-value{color:var(--green)}.dist-cell.warning .dist-cell-value{color:var(--yellow)}.dist-cell.critical .dist-cell-value{color:var(--red)}.login-screen{background:radial-gradient(circle at 50% 30%, var(--bg2), var(--bg) 70%);justify-content:center;align-items:center;min-height:100vh;padding:40px;display:flex}.login-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:380px;padding:32px}.login-brand{border-bottom:1px dashed var(--border);flex-direction:column;align-items:center;gap:12px;margin-bottom:28px;padding-bottom:24px;display:flex}.login-brand-name{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;font-size:13px}.login-brand-sub{font-family:var(--font-mono);color:var(--text3);letter-spacing:.1em;font-size:10px}.login-form{flex-direction:column;gap:14px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--text3);font-size:10px}.field input{background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius);color:var(--text);font-size:13px;font-family:var(--font-mono);outline:none;padding:10px 12px}.field input:focus{border-color:var(--accent)}.login-form .btn-primary{justify-content:center;width:100%;margin-top:6px;padding:11px;font-size:13px}.login-hint{font-family:var(--font-mono);color:var(--text4);text-align:center;border-top:1px dashed var(--border);margin-top:18px;padding-top:14px;font-size:10px;line-height:1.7}.kbd{font-family:var(--font-mono);background:var(--bg3);border:1px solid var(--border2);color:var(--text2);border-bottom-width:2px;border-radius:3px;padding:1px 5px;font-size:10px}.divider-dashed{border-top:1px dashed var(--border);margin:18px 0}.breadcrumb{font-family:var(--font-mono);color:var(--text3);align-items:center;gap:6px;margin-bottom:10px;font-size:11px;display:flex}.breadcrumb a{color:var(--text3)}.breadcrumb a:hover{color:var(--text)}.breadcrumb-sep{color:var(--text4)}.empty{font-family:var(--font-mono);color:var(--text4);text-align:center;border:1px dashed var(--border);border-radius:var(--radius);padding:18px;font-size:11px}.dashboard-grid{grid-template-columns:1.4fr 1fr;gap:14px;margin-bottom:18px;display:grid}@media (width<=1100px){.dashboard-grid,.two-col{grid-template-columns:1fr}.metrics-row{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.app{grid-template-columns:1fr}.sidebar{height:auto;position:relative}.main{padding:20px}}.modal-backdrop{z-index:100;background:#0009;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-lg);width:100%;max-width:480px;max-height:90vh;padding:24px;overflow-y:auto}.modal-header{border-bottom:1px dashed var(--border);justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;display:flex}.modal-title{margin:0;font-size:16px;font-weight:600}.modal-close{color:var(--text3);padding:4px 8px;font-size:18px}.modal-close:hover{color:var(--text)}.modal-actions{border-top:1px dashed var(--border);justify-content:flex-end;gap:8px;margin-top:20px;padding-top:16px;display:flex}
