.server-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:20px;transition:all .3s;animation:.3s fadeIn}.metrics-block{margin-bottom:16px}.metrics-head{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:10px;display:flex}.metrics-head h4{font-size:.9em}.metrics-host{color:var(--text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72em}.metrics-row{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.metric-top{justify-content:space-between;align-items:baseline;margin-bottom:5px;display:flex}.metric-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em;font-size:.75em}.metric-value{font-size:.85em;font-weight:600}.metric-bar{background:var(--bg-tertiary);border-radius:999px;height:6px;overflow:hidden}.metric-fill{border-radius:999px;height:100%;transition:width .3s;display:block}.metric-fill.lvl-ok{background:var(--ok-fg)}.metric-fill.lvl-warn{background:#f59e0b}.metric-fill.lvl-crit{background:#ef4444}.metric-fill.lvl-na{background:var(--border)}.metric-value.lvl-ok{color:var(--ok-fg)}.metric-value.lvl-warn{color:var(--warn-fg)}.metric-value.lvl-crit{color:var(--bad-fg)}.metric-value.lvl-na{color:var(--text-secondary)}.server-card:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 4px 20px #3b82f61a}.card-header{cursor:pointer;text-align:left;width:100%;color:inherit;background:0 0;border:none;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;padding:0;display:flex}.card-clickable{cursor:pointer;border-radius:6px;outline:none}.card-clickable:focus-visible{box-shadow:0 0 0 2px var(--primary)}.server-name-text{flex-direction:column;gap:2px;min-width:0;display:flex}.server-desc{color:var(--text-secondary);overflow-wrap:anywhere;text-transform:none;letter-spacing:0;font-size:.78em;font-weight:400}.chevron{color:var(--text-secondary);flex-shrink:0;font-size:1.1em;transition:transform .2s}.chevron.open{transform:rotate(90deg)}.flag-muted{background:var(--bg-tertiary);color:var(--text-secondary)}.expand-hint{background:var(--bg-tertiary);width:100%;color:var(--text-secondary);border-radius:6px;padding:8px;font-size:.82em;font-weight:500;transition:all .2s}.expand-hint:hover{color:var(--text);border-color:var(--primary)}.server-expanded{border-top:1px solid var(--border);margin-top:18px;padding-top:18px;animation:.2s fadeIn}.app-main{flex-direction:column;gap:2px;min-width:0;display:flex}.app-headline{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.app-domain{color:var(--text-secondary);overflow-wrap:anywhere;font-size:.78em}.app-last-online{color:var(--text-secondary);opacity:.8;font-size:.72em}.health-badge{text-transform:uppercase;letter-spacing:.3px;background:var(--bg-tertiary);color:var(--text-secondary);border-radius:999px;flex-shrink:0;padding:3px 8px;font-size:.72em;font-weight:600}.health-healthy{background:var(--ok-bg);color:var(--ok-fg)}.health-running{background:var(--info-bg);color:var(--info-fg)}.health-unhealthy,.health-exited,.health-stopped{background:var(--bad-bg);color:var(--bad-fg)}.health-degraded,.health-restarting{background:var(--warn-bg);color:var(--warn-fg)}.status-badge{text-transform:lowercase;background:var(--bg-tertiary);color:var(--text-secondary);border-radius:999px;flex-shrink:0;padding:3px 8px;font-size:.72em;font-weight:600}.status-badge.status-online{background:var(--ok-bg);color:var(--ok-fg)}.status-badge.status-offline{background:var(--bad-bg);color:var(--bad-fg)}.status-badge.status-warning{background:var(--warn-bg);color:var(--warn-fg)}.server-name{flex:1;align-items:center;gap:12px;display:flex}.server-name h3{margin:0;font-size:1.1em}.status-indicator{opacity:.8;border-radius:50%;flex-shrink:0;width:12px;height:12px;box-shadow:0 0 8px}.last-seen{color:var(--text-secondary);white-space:nowrap;font-size:.8em}.server-details{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:20px;display:grid}.server-details div{background:var(--bg-tertiary);border-radius:6px;padding:10px}.server-details span{color:var(--text-secondary);text-transform:uppercase;margin-bottom:5px;font-size:.75em;display:block}.server-details strong{color:var(--text);overflow-wrap:anywhere;font-size:.9em;display:block}.server-flags{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.flag{background:var(--bg-tertiary);color:var(--text-secondary);text-transform:uppercase;border-radius:999px;padding:5px 9px;font-size:.75em;font-weight:600}.flag-success{background:var(--ok-bg);color:var(--ok-fg)}.flag-danger{background:var(--bad-bg);color:var(--bad-fg)}.monitoring-section{margin-bottom:20px}.monitoring-section h4{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;font-size:.9em}.monitoring-grid{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:16px;display:grid}.monitoring-item{background:var(--bg-tertiary);border-radius:6px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.monitoring-item span{color:var(--text-secondary);text-transform:uppercase;font-size:.75em}.monitoring-item strong{color:var(--text);font-size:.9em;font-weight:600}.mono-live{color:var(--ok-fg)}.mono-stale{color:#f59e0b}.mono-off{color:var(--bad-fg)}.monitoring-note{color:var(--text-secondary);margin-top:10px;font-size:.75em;font-style:italic}.apps-section{margin-bottom:20px}.apps-section h4,.resources-section h4,.domains-section h4{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;font-size:.9em}.apps-list{flex-direction:column;gap:8px;display:flex}.app-item{background:var(--bg);border-radius:4px;justify-content:space-between;align-items:center;padding:8px 12px;font-size:.85em;display:flex}.app-name{color:var(--text);font-weight:500}.resources-section,.domains-section{margin-bottom:20px}.resource-summary,.domain-list{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.resource-summary span,.domain-list span{background:var(--bg-tertiary);color:var(--text-secondary);overflow-wrap:anywhere;border-radius:4px;padding:5px 8px;font-size:.8em}.resource-list{flex-direction:column;gap:8px;display:flex}.resource-item{background:var(--bg);border-radius:4px;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;font-size:.85em;display:flex}.resource-item span{color:var(--text);overflow-wrap:anywhere}.resource-item strong{color:var(--text-secondary);flex-shrink:0;font-size:.8em;font-weight:600}@media (width<=768px){.server-card{padding:15px}.monitoring-grid{grid-template-columns:1fr}.card-header{flex-direction:column}}.gl-list{border:1px solid var(--border);background:var(--bg-secondary);border-radius:8px;flex-direction:column;display:flex;overflow:hidden}.gl-item{border-bottom:1px solid var(--border)}.gl-item:last-child{border-bottom:none}.gl-item.open{background:var(--info-bg)}.gl-row{cursor:pointer;align-items:center;gap:14px;padding:12px 16px;display:flex}.gl-row:hover{background:var(--bg-tertiary)}.gl-chevron{color:var(--text-secondary);flex-shrink:0;transition:transform .15s}.gl-chevron.open{transform:rotate(90deg)}.gl-status{text-align:center;text-transform:uppercase;letter-spacing:.03em;background:var(--bg-tertiary);min-width:78px;color:var(--text-secondary);border-radius:999px;flex-shrink:0;padding:4px 9px;font-size:.72em;font-weight:600}.gl-ok{background:var(--ok-bg);color:var(--ok-fg)}.gl-ko{background:var(--bad-bg);color:var(--bad-fg)}.gl-run{background:var(--info-bg);color:var(--info-fg)}.gl-wait{background:var(--warn-bg);color:var(--warn-fg)}.gl-idle{background:var(--bg-tertiary);color:var(--text-secondary)}.gl-main{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.gl-title{overflow-wrap:anywhere;font-size:.95em;font-weight:600}.gl-group{color:var(--text-secondary);font-weight:400}.gl-title a{color:var(--text);text-decoration:none}.gl-title a:hover{color:var(--link);text-decoration:underline}.gl-commit{min-width:0;color:var(--text-secondary);align-items:center;gap:6px;font-size:.82em;display:flex}.gl-commit-title{text-overflow:ellipsis;white-space:nowrap;max-width:46ch;overflow:hidden}.gl-commit-meta{opacity:.75;white-space:nowrap;flex-shrink:0}.gl-side{color:var(--text-secondary);flex-shrink:0;align-items:center;gap:12px;font-size:.8em;display:flex}.gl-ref{background:var(--bg-tertiary);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;max-width:16ch;padding:2px 7px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow:hidden}.gl-when{white-space:nowrap}.gl-link{color:var(--text-secondary);display:inline-flex}.gl-link:hover{color:var(--link)}@media (width<=760px){.gl-row{flex-wrap:wrap;gap:8px}.gl-main{flex-basis:100%;order:2}.gl-commit-title{max-width:100%}}.gl-detail{flex-direction:column;gap:14px;padding:4px 16px 16px 45px;display:flex}.gl-detail-loading,.gl-detail-empty{color:var(--text-secondary);font-size:.85em}.gl-detail-meta{color:var(--text-secondary);border-bottom:1px solid var(--border);flex-wrap:wrap;gap:18px;padding-bottom:12px;font-size:.82em;display:flex}.gl-detail-meta strong{color:var(--text);font-weight:600}.gl-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.gl-detail-block h5{text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:8px;font-size:.78em}.gl-jobs{flex-wrap:wrap;gap:8px;display:flex}.gl-job{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text);border-radius:6px;align-items:center;gap:8px;padding:6px 10px;font-size:.8em;text-decoration:none;display:inline-flex}.gl-job:hover{border-color:var(--primary)}.gl-job-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.gl-bg-ok{background:var(--ok-fg)}.gl-bg-ko{background:#ef4444}.gl-bg-run{background:#3b82f6}.gl-bg-wait{background:#f59e0b}.gl-bg-idle{background:var(--text-secondary)}.gl-job-stage{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em;font-size:.9em}.gl-job-name{text-overflow:ellipsis;white-space:nowrap;max-width:34ch;font-weight:600;overflow:hidden}.gl-job-time{color:var(--text-secondary);font-variant-numeric:tabular-nums}.gl-history{flex-wrap:wrap;gap:8px;display:flex}.gl-hist{border-radius:6px;flex-direction:column;gap:1px;min-width:74px;padding:5px 10px;font-size:.75em;text-decoration:none;display:inline-flex}.gl-hist-sha{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600}.gl-hist-when{opacity:.75;white-space:nowrap;font-size:.92em}.glb-chip{background:var(--bg-tertiary);border:1px solid var(--border);max-width:100%;color:var(--text-secondary);border-radius:6px;align-items:center;gap:6px;padding:4px 8px;font-size:.78em;text-decoration:none;display:inline-flex}.glb-chip:hover{border-color:var(--primary);color:var(--text)}.glb-path{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow:hidden}.glb-block{border:1px solid var(--border);background:var(--bg-tertiary);border-radius:8px;flex-direction:column;gap:7px;padding:10px 12px;display:flex}.glb-head{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:9px;display:flex}.glb-title{color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;font-weight:600;text-decoration:none}.glb-title:hover{color:var(--link);text-decoration:underline}.glb-status{text-transform:uppercase;letter-spacing:.03em;border-radius:999px;padding:2px 8px;font-size:.72em;font-weight:600;text-decoration:none}.glb-via{opacity:.7;margin-left:auto;font-size:.72em}.glb-commit,.glb-meta{color:var(--text-secondary);align-items:center;gap:6px;min-width:0;font-size:.8em;display:flex}.glb-commit-title{text-overflow:ellipsis;white-space:nowrap;max-width:44ch;color:var(--text);overflow:hidden}.glb-commit-meta{opacity:.75;white-space:nowrap}.glb-meta strong{color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.glb-link{color:var(--text-secondary);display:inline-flex}.glb-link:hover{color:var(--link)}.gl-detail-block h5 svg{vertical-align:-2px;margin-right:4px}.sq-chip{text-transform:uppercase;letter-spacing:.04em;border-radius:999px;flex-shrink:0;padding:3px 7px;font-size:.68em;font-weight:700}.sq-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.sq-when{color:var(--text-secondary);font-size:.78em}.sq-rating{text-transform:uppercase;letter-spacing:.03em;border-radius:4px;padding:3px 7px;font-size:.7em;font-weight:700}.sq-link{color:var(--link);align-items:center;gap:4px;margin-left:auto;font-size:.78em;text-decoration:none;display:inline-flex}.sq-link:hover{text-decoration:underline}.sq-grid{grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px;display:grid}.sq-tile{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;flex-direction:column;gap:3px;padding:8px 10px;display:flex}.sq-tile-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);font-size:.7em}.sq-tile-value{font-variant-numeric:tabular-nums;font-size:1.05em;font-weight:600}.sq-tile-value.bad{color:var(--warn-fg)}.sq-failed{color:var(--bad-fg);margin-top:10px;padding-left:18px;font-size:.82em}.sq-failed li{margin-bottom:3px}.sq-failed strong{font-variant-numeric:tabular-nums}.dep-critical{background:var(--bad-bg);color:var(--bad-fg)}.dep-high,.dep-moderate{background:var(--warn-bg);color:var(--warn-fg)}.dep-low,.dep-muted{background:var(--bg-tertiary);color:var(--text-secondary)}.dep-none{background:var(--ok-bg);color:var(--ok-fg)}.dep-chip{text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-radius:999px;flex-shrink:0;padding:3px 7px;font-size:.68em;font-weight:700}.dep-head{flex-direction:column;gap:5px;margin-bottom:10px;display:flex}.dep-line{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:8px;font-size:.82em;display:flex}.dep-line strong{color:var(--text)}.dep-hint{opacity:.6;font-size:.9em;font-style:italic}.dep-when{color:var(--text-secondary);opacity:.7;font-size:.76em}.dep-counts{flex-wrap:wrap;gap:6px;display:inline-flex}.dep-count{border-radius:4px;padding:2px 7px;font-size:.9em;font-weight:600}.dep-list{border:1px solid var(--border);border-radius:6px;flex-direction:column;display:flex;overflow:hidden}.dep-item{border-bottom:1px solid var(--border);align-items:center;gap:10px;min-width:0;padding:6px 10px;font-size:.8em;display:flex}.dep-item:last-child{border-bottom:none}.dep-sev{text-align:center;text-transform:uppercase;border-radius:4px;flex-shrink:0;min-width:62px;padding:2px 6px;font-size:.9em;font-weight:700}.dep-name{flex-shrink:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600}.dep-version{color:var(--text-secondary);font-weight:400}.dep-title{min-width:0;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.dep-more{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-secondary);border-radius:6px;align-self:flex-start;margin-top:8px;padding:5px 10px;font-size:.78em}.dep-more:hover{color:var(--text);border-color:var(--primary)}.dep-src{color:var(--text-secondary);opacity:.7;margin-top:8px;font-size:.75em}.dep-advisories{background:var(--bg-tertiary);color:var(--text-secondary);border-radius:4px;margin-left:7px;padding:1px 6px;font-family:system-ui,sans-serif;font-size:.88em;font-weight:500}.external-links{display:flex}.links-container{flex-wrap:wrap;gap:10px;display:flex}.link-btn{white-space:nowrap;border-radius:6px;align-items:center;gap:7px;padding:8px 14px;font-size:.9em;font-weight:500;transition:all .2s;display:inline-flex}.link-btn svg{display:block}.elk-btn{color:#fff;background:linear-gradient(135deg,#f97316 0%,#ea580c 100%)}.elk-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #f973164d}.coolify-btn{background:linear-gradient(135deg, var(--ok-fg) 0%, #059669 100%);color:#fff}.coolify-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #10b9814d}.coolify-btn.disabled{opacity:.6;cursor:not-allowed;background:linear-gradient(135deg,#6b7280 0%,#4b5563 100%)}.coolify-btn.disabled:hover{box-shadow:none;transform:none}@media (width<=768px){.links-container{width:100%}.link-btn{flex:1;min-width:100px}}.set-overlay{width:100%;max-width:none;height:100%;max-height:none;color:var(--text);z-index:100;background:#02061799;border:0;justify-content:center;align-items:flex-start;margin:0;padding:40px 20px;display:none;position:fixed;inset:0;overflow-y:auto}.set-overlay[open]{display:flex}.set-overlay::backdrop{background:0 0}.set-backdrop{cursor:default;background:0 0;border:0;position:fixed;inset:0}.set-backdrop:hover{box-shadow:none;background:0 0;transform:none}.set-modal{z-index:1;background:var(--bg-secondary);border:1px solid var(--border);width:100%;max-width:760px;box-shadow:0 20px 50px var(--shadow);border-radius:10px;flex-direction:column;max-height:100%;display:flex;position:relative}.set-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.set-head h2{font-size:1.1em}.set-close{width:30px;height:30px;color:var(--text-secondary);background:0 0;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.set-close:hover{background:var(--bg-tertiary);color:var(--text);transform:none}.set-tabs{border-bottom:1px solid var(--border);gap:4px;padding:10px 20px 0;display:flex}.set-tabs button{color:var(--text-secondary);background:0 0;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;padding:8px 14px;font-size:.9em;font-weight:600}.set-tabs button:hover{color:var(--text);transform:none}.set-tabs button.active{color:var(--text);border-bottom-color:var(--primary)}.set-body{flex-direction:column;gap:24px;padding:18px 20px 22px;display:flex;overflow-y:auto}.set-section h3{text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);align-items:center;gap:7px;margin-bottom:10px;font-size:.8em;display:flex}.set-note{color:var(--text-secondary);margin-top:9px;font-size:.8em;line-height:1.5}.set-note code,.set-baseurl code{background:var(--bg-tertiary);border-radius:4px;padding:1px 5px;font-size:.94em}.set-themes{flex-wrap:wrap;gap:8px;display:flex}.set-theme{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-secondary);border-radius:7px;align-items:center;gap:7px;padding:9px 15px;font-size:.88em;font-weight:600;display:inline-flex}.set-theme:hover{color:var(--text);border-color:var(--primary);transform:none}.set-theme.active{background:var(--info-bg);border-color:var(--primary);color:var(--text)}.set-toggles{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px;display:grid}.set-toggle{background:var(--bg-tertiary);border:1px solid var(--border);cursor:pointer;border-radius:7px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.set-toggle input{accent-color:var(--primary);width:15px;height:15px;margin-top:3px}.set-toggle-text{flex-direction:column;gap:2px;font-size:.85em;display:flex}.set-toggle-text span{color:var(--text-secondary);font-size:.9em}.set-baseurl{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:7px;align-items:center;gap:10px;padding:10px 12px;display:flex}.set-baseurl code{overflow-wrap:anywhere;background:0 0;flex:1;padding:0;font-size:.9em}.set-copy{background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-secondary);border-radius:6px;flex-shrink:0;align-items:center;gap:5px;padding:5px 10px;font-size:.78em;font-weight:600;display:inline-flex}.set-copy:hover{color:var(--text);border-color:var(--primary);transform:none}.set-integrations{flex-direction:column;gap:6px;display:flex}.set-int-row{background:var(--bg-tertiary);border-radius:6px;align-items:center;gap:10px;min-width:0;padding:8px 12px;font-size:.85em;display:flex}.set-int-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.set-int-dot.on{background:var(--ok-fg)}.set-int-dot.off{background:var(--bad-fg)}.set-int-dot.unknown{background:var(--text-secondary)}.set-int-name{min-width:108px;font-weight:600}.set-int-state{color:var(--text-secondary);font-size:.9em}.set-int-url{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;max-width:40%;margin-left:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;overflow:hidden}.set-ep-group{margin-bottom:14px}.set-ep-group h4{color:var(--text-secondary);opacity:.8;margin-bottom:6px;font-size:.78em}.set-ep{border-bottom:1px solid var(--border);align-items:baseline;gap:10px;min-width:0;padding:5px 0;font-size:.82em;display:flex}.set-ep:last-child{border-bottom:none}.set-method{text-align:center;border-radius:4px;flex-shrink:0;min-width:42px;padding:2px 6px;font-size:.82em;font-weight:700}.set-method.get{background:var(--ok-bg);color:var(--ok-fg)}.set-method.post{background:var(--info-bg);color:var(--info-fg)}.set-method.put{background:var(--warn-bg);color:var(--warn-fg)}.set-path{color:var(--text);flex-shrink:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.set-ep-desc{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}@media (width<=700px){.set-ep{flex-wrap:wrap;gap:5px}.set-ep-desc{white-space:normal;flex-basis:100%}.set-int-url{display:none}}.settings-btn{background:var(--bg-secondary);border:1px solid var(--border);width:34px;height:34px;color:var(--text-secondary);border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.settings-btn:hover{color:var(--text);border-color:var(--primary)}.dashboard{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:20px}.dashboard-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-bottom:30px;display:flex}.dashboard-header h1{background:linear-gradient(135deg,#3b82f6 0%,#8b5cf6 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:2em}.dashboard-subtitle{color:var(--text-secondary);word-break:break-word;margin-top:6px;font-size:.9em}.header-right{align-items:center;gap:15px;display:flex}.refresh-btn{background:var(--primary);color:#fff;border-radius:6px;padding:8px 16px;font-size:.9em;font-weight:500}.user-box{border-left:1px solid var(--border);align-items:center;gap:8px;margin-left:6px;padding-left:16px;display:inline-flex}.user-name{background:var(--bg-tertiary);color:var(--text);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:.85em;font-weight:500;display:inline-flex}.user-name svg{color:var(--text-secondary);display:block}.logout-btn{background:var(--bg-secondary);border:1px solid var(--border);width:34px;height:34px;color:var(--text-secondary);border-radius:6px;justify-content:center;align-items:center;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.logout-btn:hover{color:var(--bad-fg);background:#ef444414;border-color:#ef4444}.logout-btn svg{display:block}@media (width<=768px){.user-box{border-left:none;margin-left:0;padding-left:0}}.refresh-btn:hover{background:var(--primary-dark)}.error-banner{color:#7f1d1d;background:linear-gradient(135deg,#fee2e2 0%,#fecaca 100%);border-left:4px solid #ef4444;border-radius:6px;margin-bottom:20px;padding:12px 16px}.servers-grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px;margin-bottom:40px;display:grid}.dashboard-section{margin-bottom:36px}.section-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.section-header h2{font-size:1.2em}.section-header span{background:var(--bg-tertiary);min-width:32px;color:var(--text-secondary);text-align:center;border-radius:999px;padding:4px 10px;font-size:.85em}.empty-state{text-align:center;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:60px 20px}.empty-state h2{color:var(--text);margin-bottom:10px;font-size:1.5em}.empty-state p{color:var(--text-secondary);margin:10px 0}.empty-state .hint{background:var(--bg-tertiary);border-radius:6px;margin-top:20px;padding:15px;font-size:.9em}.setup-state{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:24px}.setup-state h2{margin-bottom:18px}.setup-state p{color:var(--text-secondary);margin-top:18px}.setup-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.setup-grid div{background:var(--bg-tertiary);border-radius:6px;padding:14px}.setup-label{color:var(--text-secondary);text-transform:uppercase;margin-bottom:8px;font-size:.8em;display:block}.setup-grid strong{word-break:break-word;display:block}.applications-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.application-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:18px}.application-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.application-title{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.application-header h3{overflow-wrap:anywhere;font-size:1em}.status-badge{background:var(--bg-tertiary);color:var(--text-secondary);white-space:nowrap;border-radius:999px;padding:4px 8px;font-size:.75em;font-weight:600}.status-online{background:var(--ok-bg);color:var(--ok-fg)}.status-offline{background:var(--bad-bg);color:var(--bad-fg)}.status-warning{background:var(--warn-bg);color:var(--warn-fg)}.application-meta{color:var(--text-secondary);flex-direction:column;gap:8px;font-size:.86em;display:flex}.application-meta a{color:var(--link);overflow-wrap:anywhere;text-decoration:none}.application-meta span{overflow-wrap:anywhere}.versions-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.version-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:18px}.version-top{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.type-chip{background:var(--bg-tertiary);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:3px 9px;font-size:.72em;font-weight:600}.metric-cell{align-items:center;gap:8px;min-width:92px;display:inline-flex}.metric-cell-bar{background:var(--bg-tertiary);border-radius:999px;flex:1;min-width:40px;height:5px;overflow:hidden}.metric-cell-fill{border-radius:999px;height:100%;display:block}.metric-cell-val{white-space:nowrap;font-size:.8em;font-weight:600}.metric-cell-fill.lvl-ok{background:var(--ok-fg)}.metric-cell-fill.lvl-warn{background:#f59e0b}.metric-cell-fill.lvl-crit{background:#ef4444}.metric-cell-fill.lvl-na{background:var(--border)}.metric-cell-val.lvl-ok{color:var(--ok-fg)}.metric-cell-val.lvl-warn{color:var(--warn-fg)}.metric-cell-val.lvl-crit{color:var(--bad-fg)}.metric-cell-val.lvl-na{color:var(--text-secondary)}.version-badge{white-space:nowrap;border-radius:999px;padding:4px 9px;font-size:.75em;font-weight:600}.version-badge.up-to-date{background:var(--ok-bg);color:var(--ok-fg)}.version-badge.minor{color:#facc15;background:#eab30829}.version-badge.major{color:#fb923c;background:#f9731633}.version-dates{color:var(--text-secondary);margin-top:6px;font-size:.78em;display:block}.version-gap{color:#facc15;font-weight:600}.version-server{color:var(--text-secondary);overflow-wrap:anywhere;margin-top:4px;font-size:.78em;display:block}.version-name{overflow-wrap:anywhere;margin-bottom:8px;font-size:.95em}.version-image{color:var(--text-secondary);overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82em;display:block}.section-actions{align-items:center;gap:12px;display:flex}.scan-note{color:var(--text-secondary);margin:-8px 0 16px;font-size:.8em}.cve-row{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.cve-chip{letter-spacing:.02em;border-radius:6px;padding:3px 7px;font-size:.74em;font-weight:700}.cve-chip.none{color:var(--ok-fg);background:#10b98124;font-weight:600}.cve-chip.sev-critical{color:var(--bad-fg);background:#dc262638}.cve-chip.sev-high{color:#fb923c;background:#ea580c33}.cve-chip.sev-medium{background:var(--warn-bg);color:var(--warn-fg)}.cve-chip.sev-low{background:var(--bg-tertiary);color:var(--text-secondary)}.loading{flex-direction:column;justify-content:center;align-items:center;gap:20px;min-height:400px;display:flex}.loading p{color:var(--text-secondary)}.dashboard-footer{text-align:center;color:var(--text-secondary);border-top:1px solid var(--border);margin-top:40px;padding:20px;font-size:.9em}.tab-bar{border-bottom:1px solid var(--border);gap:4px;margin-bottom:20px;display:flex;overflow-x:auto}.tab{color:var(--text-secondary);white-space:nowrap;background:0 0;border-bottom:2px solid #0000;align-items:center;gap:8px;padding:10px 16px;font-size:.92em;font-weight:500;display:inline-flex}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--primary)}.tab-count{background:var(--bg-tertiary);min-width:20px;color:var(--text-secondary);text-align:center;border-radius:999px;padding:1px 8px;font-size:.8em}.tab.active .tab-count{background:var(--info-bg);color:var(--link)}.tab-panel{animation:.15s fadein}@keyframes fadein{0%{opacity:0}to{opacity:1}}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.toolbar-left,.toolbar-right{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.tb-field{color:var(--text-secondary);align-items:center;gap:8px;font-size:.85em;display:inline-flex}.tb-field select,.tb-search{background:var(--bg-secondary);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:7px 10px;font-size:.9em}.tb-search{min-width:180px}.tb-dir{background:var(--bg-secondary);border:1px solid var(--border);color:var(--text);border-radius:6px;width:34px;height:34px;font-size:1em}.tb-dir:hover{border-color:var(--primary)}.tb-view{border:1px solid var(--border);border-radius:6px;display:inline-flex;overflow:hidden}.tb-view button{background:var(--bg-secondary);color:var(--text-secondary);padding:6px 12px;font-size:1em}.tb-view button.active{background:var(--primary);color:#fff}.table-wrap{border:1px solid var(--border);background:var(--bg-secondary);border-radius:8px;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:.88em}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px}.data-table thead th{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em;background:var(--bg-tertiary);font-size:.82em;font-weight:600;position:sticky;top:0}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.data-table th.sortable:hover{color:var(--text)}.data-table th.active{color:var(--link)}.data-table tbody tr:hover{background:var(--bg-tertiary)}.data-table tbody tr:last-child td{border-bottom:none}.data-table .td-num{text-align:right;font-variant-numeric:tabular-nums}.data-table .td-mono{white-space:normal;overflow-wrap:anywhere;max-width:320px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}.data-table .td-muted{color:var(--text-secondary)}.data-table a{color:var(--link);text-decoration:none}.td-name{align-items:center;gap:8px;display:inline-flex}.td-name-text{flex-direction:column;gap:1px;min-width:0;display:inline-flex}.td-desc{color:var(--text-secondary);white-space:normal;overflow-wrap:anywhere;font-size:.82em}.data-table tr.row-clickable{cursor:pointer}.td-caret{text-align:center;width:28px;color:var(--text-secondary)}.data-table tr.row-clickable[aria-expanded=true]>td{background:var(--bg-tertiary);border-bottom:none}.data-table tr.row-expanded>td{background:var(--bg);border-bottom:2px solid var(--border);box-shadow:inset 3px 0 0 var(--primary);padding:12px 14px 16px}.data-table tr.row-expanded .server-expanded{border-top:none;margin-top:0}.dot{background:#6b7280;border-radius:50%;flex-shrink:0;width:9px;height:9px}.dot-online{background:var(--ok-fg)}.dot-offline{background:#ef4444}.dot-warning{background:#f59e0b}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:28px;display:grid}.stat-tile{text-align:left;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;flex-direction:column;align-items:flex-start;gap:4px;padding:18px;transition:border-color .15s,transform .15s;display:flex}.stat-tile:hover{border-color:var(--primary);transform:translateY(-2px)}.stat-value{color:var(--text);font-size:2em;font-weight:700;line-height:1}.stat-label{color:var(--text-secondary);font-size:.9em}.stat-sub{color:var(--text-secondary);margin-top:6px;font-size:.8em}.stat-sub em{font-style:normal}.stat-sub .ok{color:var(--ok-fg)}.stat-sub .ko{color:var(--bad-fg)}.stat-sub .warn{color:#fb923c}.mini-stats{flex-wrap:wrap;gap:12px;margin-bottom:18px;display:flex}.mini-stat{text-align:left;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-width:130px;padding:12px 14px;transition:border-color .15s,background .15s;display:flex}.mini-stat:hover:not(:disabled){border-color:var(--primary)}.mini-stat.active{border-color:var(--primary);background:#3b82f614}.mini-stat:disabled{opacity:.55;cursor:not-allowed}.mini-stat .v{color:var(--text);font-size:1.6em;font-weight:700;line-height:1.1}.mini-stat .v.ok{color:var(--ok-fg)}.mini-stat .v.warn{color:#fb923c}.mini-stat .v.crit{color:var(--bad-fg)}.mini-stat .l{color:var(--text-secondary);font-size:.78em}.overview-block{margin-bottom:24px}.overview-block h3{margin-bottom:12px;font-size:1em}.alert-list{flex-direction:column;gap:8px;display:flex}.alert-row{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;align-items:center;gap:12px;padding:10px 14px;display:flex}.alert-name{font-weight:500}.alert-meta{color:var(--text-secondary);overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82em}@media (width<=768px){.dashboard{padding:15px}.dashboard-header{flex-direction:column;align-items:flex-start}.header-right{justify-content:space-between;width:100%}.dashboard-header h1{font-size:1.5em}.servers-grid{grid-template-columns:1fr}.toolbar{flex-direction:column;align-items:stretch}.tb-search{flex:1}}.app-expanded{flex-direction:column;gap:14px;padding:4px 0 6px;display:flex}.app-nogit{color:var(--text-secondary);font-size:.84em}.version-badge.unknown{background:var(--bg-tertiary);color:var(--text-secondary)}.img-cell{align-items:center;gap:8px;display:inline-flex}.img-count{text-align:center;background:var(--bg-tertiary);min-width:20px;color:var(--text-secondary);border-radius:4px;padding:2px 6px;font-size:.8em;font-weight:600}.card-images{align-items:center;gap:8px;display:inline-flex}.card-images-label{opacity:.7;font-size:.9em}.app-images h4{text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);margin-bottom:8px;font-size:.85em}.img-list{border:1px solid var(--border);border-radius:6px;flex-direction:column;display:flex;overflow:hidden}.img-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;min-width:0;padding:7px 10px;font-size:.84em;display:flex}.img-row:last-child{border-bottom:none}.img-name{text-overflow:ellipsis;flex-direction:column;flex:1;gap:2px;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;display:flex;overflow:hidden}.img-row .version-dates{color:var(--text-secondary);font-family:system-ui,sans-serif;font-size:.88em}.cve-detail h4{text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);align-items:center;gap:8px;margin-bottom:8px;font-size:.85em;display:flex}.cve-detail h4 svg{color:var(--bad-fg)}.cve-detail-list{border:1px solid var(--border);border-radius:6px;flex-direction:column;display:flex;overflow:hidden}.cve-detail-row{border-bottom:1px solid var(--border);align-items:center;gap:10px;min-width:0;padding:6px 10px;font-size:.8em;display:flex}.cve-detail-row:last-child{border-bottom:none}.cve-detail-row:hover{background:var(--bg-tertiary)}.cve-id{min-width:132px;color:var(--link);flex-shrink:0;align-items:center;gap:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600;text-decoration:none;display:inline-flex}.cve-id:hover{text-decoration:underline}.cve-type{background:var(--bg-tertiary);min-width:118px;color:var(--text);white-space:nowrap;text-overflow:ellipsis;border-radius:4px;flex-shrink:0;padding:2px 7px;font-size:.92em;font-weight:600;overflow:hidden}.cve-summary{min-width:0;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.cve-images{max-width:20ch;color:var(--text-secondary);opacity:.7;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;overflow:hidden}.application-card.is-expanded{border-color:var(--primary);grid-column:1/-1}.application-card .application-header{align-items:center}.application-card .application-title{flex:1}.application-card .app-expanded{border-top:1px solid var(--border);margin-top:14px;padding-top:14px}.application-card .chevron{background:0 0;padding:0 2px;line-height:1}.application-card .chevron:hover:not(:disabled){color:var(--text);transform:none}.application-card .chevron.open,.application-card .chevron.open:hover:not(:disabled){transform:rotate(90deg)}.resources-grid{grid-template-columns:repeat(auto-fill,minmax(330px,1fr));align-items:stretch;gap:16px;display:grid}.resource-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;flex-direction:column;padding:16px;transition:border-color .15s;display:flex}.resource-card:hover{border-color:#64748b}.resource-card.is-expanded{border-color:var(--primary);grid-column:1/-1}.rc-head{align-items:center;gap:8px;margin-bottom:10px;display:flex}.rc-kind{background:var(--bg-tertiary);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font-size:.72em;font-weight:600;display:inline-flex}.rc-head .chevron{background:0 0;margin-left:auto;padding:0 2px;line-height:1}.rc-head .chevron:hover:not(:disabled){color:var(--text);transform:none}.rc-head .chevron.open,.rc-head .chevron.open:hover:not(:disabled){transform:rotate(90deg)}.rc-name{overflow-wrap:anywhere;font-size:1.02em;line-height:1.3}.rc-repo{color:var(--text-secondary);overflow-wrap:anywhere;margin-top:3px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76em;display:block}.rc-foot{color:var(--text-secondary);flex-wrap:wrap;gap:4px 14px;margin-top:auto;padding-top:12px;font-size:.78em;display:flex}.rc-foot a{color:var(--link);overflow-wrap:anywhere;text-decoration:none}.rc-updates{color:var(--warn-fg);font-style:normal}.signal-strip{background:var(--border);border:1px solid var(--border);border-radius:6px;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:1px;margin-top:14px;display:grid;overflow:hidden}.signal{background:var(--bg-secondary);flex-direction:column;gap:3px;min-width:0;padding:7px 8px;display:flex}.signal-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);white-space:nowrap;font-size:.64em}.signal-value{white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:5px;font-size:.78em;font-weight:600;display:flex;overflow:hidden}.signal-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:7px;height:7px}.signal.lvl-ok .signal-value{color:var(--ok-fg)}.signal.lvl-warn .signal-value{color:var(--warn-fg)}.signal.lvl-bad .signal-value{color:var(--bad-fg)}.signal.lvl-none .signal-value{color:var(--text-secondary);opacity:.75}.signal-strip.compact{background:0 0;border:none;border-radius:0;gap:12px;min-width:340px;margin-top:0}.signal-strip.compact .signal{background:0 0;padding:0}.tag-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:999px;align-items:center;gap:4px;padding:3px 9px;font-size:.7em;font-weight:700;display:inline-flex}.tag-internal{background:var(--info-bg);color:var(--link)}.tag-external{background:var(--info-bg);color:var(--info-fg)}.tag-control{flex-direction:column;gap:7px;display:flex}.tag-control-head{align-items:baseline;gap:10px;display:flex}.tag-control-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);font-size:.72em}.tag-control-meta{color:var(--text-secondary);opacity:.7;font-size:.72em}.tag-options{border:0;gap:6px;min-inline-size:0;margin:0;padding:0;display:inline-flex}.tag-option{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-secondary);border-radius:6px;align-items:center;gap:6px;padding:6px 12px;font-size:.82em;font-weight:600;display:inline-flex}.tag-option:hover:not(:disabled){color:var(--text);border-color:#64748b;transform:none}.tag-option.active{background:var(--info-bg);border-color:var(--primary);color:var(--link)}.tag-hint{color:var(--text-secondary);opacity:.75;font-size:.76em}.resource-detail{border-top:1px solid var(--border);flex-direction:column;gap:16px;margin-top:14px;padding-top:14px;display:flex}.resource-detail-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.rd-gitlab{flex-direction:column;gap:4px;min-width:0;font-size:.82em;display:flex}.rd-gitlab-head{color:var(--text-secondary);align-items:center;gap:7px;display:flex}.rd-gitlab-head a{color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600;text-decoration:none}.rd-gitlab-head a:hover{color:var(--link);text-decoration:underline}.rd-via{opacity:.65;font-size:.85em}.rd-commit{color:var(--text);align-items:center;gap:6px;min-width:0;display:flex}.rd-commit-meta{color:var(--text-secondary);opacity:.8}@media (width<=720px){.signal-strip{grid-template-columns:repeat(2,1fr)}}.card-clickable{position:relative}.card-toggle{color:inherit;font:inherit;text-align:inherit;background:0 0;border:0;padding:0}.card-toggle:hover{color:inherit;box-shadow:none;background:0 0;transform:none}.card-toggle:after{content:"";position:absolute;inset:0}.card-toggle:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.card-clickable a,.card-clickable .chevron{z-index:1;position:relative}.resource-card .card-clickable{flex-direction:column;flex:1;display:flex}.rc-desc{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-secondary);-webkit-line-clamp:2;border-radius:6px;-webkit-box-orient:vertical;margin-top:10px;padding:7px 10px;font-size:.8em;line-height:1.45;display:-webkit-box;overflow:hidden}.rd-description{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;padding:10px 12px}.rd-description-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin-bottom:5px;font-size:.7em;display:block}.rd-description p{overflow-wrap:anywhere;font-size:.88em;line-height:1.5}.alert-why{flex-wrap:wrap;gap:6px;margin-left:auto;display:inline-flex}.alert-signal{background:var(--bad-bg);color:var(--bad-fg);white-space:nowrap;border-radius:4px;padding:2px 8px;font-size:.82em;font-weight:600}.overview-caveat{color:var(--text-secondary);background:var(--warn-bg);border-radius:6px;margin:-4px 0 12px;padding:8px 11px;font-size:.82em;line-height:1.5}.overview-caveat strong{color:var(--warn-fg)}.todo-list{flex-direction:column;gap:8px;display:flex}.todo-row{text-align:left;background:var(--bg-secondary);border:1px solid var(--border);border-left:3px solid var(--border);width:100%;color:inherit;border-radius:8px;flex-wrap:wrap;align-items:center;gap:16px;padding:11px 14px;display:flex}.todo-row:hover{border-color:var(--primary);border-left-color:var(--primary);transform:none}.todo-main{flex:1;align-items:baseline;gap:10px;min-width:0;display:flex}.todo-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:.95em;font-weight:600;overflow:hidden}.todo-kind{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;max-width:34ch;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76em;overflow:hidden}.todo-reasons{flex-wrap:wrap;flex-shrink:0;gap:8px;display:flex}.todo-reason{background:var(--bad-bg);color:var(--bad-fg);white-space:nowrap;border-radius:6px;flex-direction:column;gap:1px;padding:4px 10px;font-size:.8em;font-weight:600;display:inline-flex}.todo-reason-label{text-transform:uppercase;letter-spacing:.04em;opacity:.75;font-size:.76em;font-weight:500}.todo-reason.lvl-warn{background:var(--warn-bg);color:var(--warn-fg)}.todo-reason.lvl-none{background:var(--bg-tertiary);color:var(--text-secondary)}.overview-hint{color:var(--text-secondary);margin:-4px 0 12px;font-size:.82em}@media (width<=700px){.todo-main{flex-basis:100%}}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:14px;width:100%;max-width:360px;padding:32px 28px;display:flex}.login-card h1{background:linear-gradient(135deg,#3b82f6 0%,#8b5cf6 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.4em}.login-sub{color:var(--text-secondary);margin-top:-8px;font-size:.9em}.login-error{color:var(--bad-fg);background:#ef444426;border-left:3px solid #ef4444;border-radius:6px;padding:10px 12px;font-size:.88em}.login-field{color:var(--text-secondary);flex-direction:column;gap:6px;font-size:.85em;display:flex}.login-field input{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:10px 12px;font-size:1em}.login-field input:focus{border-color:var(--primary);outline:none}.login-submit{background:var(--primary);color:#fff;border-radius:6px;justify-content:center;align-items:center;gap:8px;margin-top:6px;padding:11px 16px;font-size:.95em;font-weight:600;display:inline-flex}.login-submit:hover:not(:disabled){background:var(--primary-dark)}.login-submit:disabled{opacity:.6;cursor:not-allowed}.app{background:linear-gradient(135deg,#0f172a 0%,#1a1f3a 100%);flex-direction:column;min-height:100vh;display:flex}*{box-sizing:border-box;margin:0;padding:0}:root,:root[data-theme=dark]{--primary:#3b82f6;--primary-dark:#1e40af;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--bg:#0f172a;--bg-secondary:#1e293b;--bg-tertiary:#334155;--text:#f1f5f9;--text-secondary:#cbd5e1;--border:#475569;--ok-fg:#34d399;--ok-bg:#14372f;--warn-fg:#fbbf24;--warn-bg:#3d3320;--bad-fg:#f87171;--bad-bg:#3f2426;--info-fg:#60a5fa;--info-bg:#1e2f4d;--link:#93c5fd;--shadow:#00000073}:root[data-theme=light]{--primary:#2563eb;--primary-dark:#1d4ed8;--success:#059669;--warning:#d97706;--danger:#dc2626;--bg:#f1f5f9;--bg-secondary:#fff;--bg-tertiary:#eef2f7;--text:#0f172a;--text-secondary:#52627a;--border:#cbd5e1;--ok-fg:#046c4e;--ok-bg:#d5f3e6;--warn-fg:#9a5b06;--warn-bg:#fdefd2;--bad-fg:#b3261e;--bad-bg:#fde3e1;--info-fg:#1d4ed8;--info-bg:#dceafd;--link:#1d4ed8;--shadow:#0f172a1f}html,body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:100%;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}body{background:var(--bg);color:var(--text)}#root{width:100%;height:100%}.app{background:var(--bg);width:100%;min-height:100vh}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3}button{cursor:pointer;border:none;font-family:inherit;transition:all .2s}button:hover:not(:disabled){transform:translateY(-1px)}button:disabled{opacity:.5;cursor:not-allowed}code{background:var(--bg-tertiary);border-radius:4px;padding:2px 6px;font-family:Courier New,monospace;font-size:.9em}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.spinner{border:4px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:40px;height:40px;animation:1s linear infinite spin}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}@media (width<=768px){:root{font-size:14px}}
