:root{--dm-bg: #0a0a0b;--dm-surface: #141416;--dm-border: rgba(255, 255, 255, .08);--dm-text: rgba(255, 255, 255, .92);--dm-muted: rgba(255, 255, 255, .55);--dm-accent: #4d65ff;--dm-accent-hover: #5d75ff;--dm-ok: #22c55e;--dm-warn: #eab308;--dm-error: #ef4444;--dm-font: "Outfit", -apple-system, sans-serif;--dm-mono: "JetBrains Mono", monospace}*{box-sizing:border-box}body{margin:0;font-family:var(--dm-font);background:var(--dm-bg);color:var(--dm-text);min-height:100vh;line-height:1.5}.dashboard{max-width:720px;margin:0 auto;padding:2rem 1.5rem}.dashboard-header{margin-bottom:2rem}.dashboard-title{font-size:1.5rem;font-weight:700;margin:0 0 .25rem;letter-spacing:-.02em}.dashboard-subtitle{margin:0;color:var(--dm-muted);font-size:.95rem}.card{background:var(--dm-surface);border:1px solid var(--dm-border);border-radius:12px;padding:1.25rem 1.5rem;margin-bottom:1.25rem}.card h2{font-size:1rem;font-weight:600;margin:0 0 1rem;color:var(--dm-text)}.config-section .config-row{margin-bottom:.75rem}.config-section label{display:block;font-size:.8rem;color:var(--dm-muted);margin-bottom:.25rem}.config-section input{width:100%;padding:.6rem .75rem;font-family:var(--dm-mono);font-size:.9rem;background:var(--dm-bg);border:1px solid var(--dm-border);border-radius:8px;color:var(--dm-text)}.config-section input::placeholder{color:var(--dm-muted)}.config-hint{font-size:.8rem;color:var(--dm-muted);margin:.75rem 0 0}.config-hint code{font-family:var(--dm-mono);font-size:.85em;padding:.1em .35em;background:#ffffff0f;border-radius:4px}.actions-section{display:flex;gap:.75rem;margin-bottom:1.25rem}.btn{padding:.6rem 1.1rem;font-family:var(--dm-font);font-size:.9rem;font-weight:500;border:none;border-radius:8px;cursor:pointer;transition:background .15s ease}.btn-primary{background:var(--dm-accent);color:#fff}.btn-primary:hover{background:var(--dm-accent-hover)}.btn-secondary{background:#ffffff14;color:var(--dm-text);border:1px solid var(--dm-border)}.btn-secondary:hover{background:#ffffff1f}.btn:disabled{opacity:.6;cursor:not-allowed}.status-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}.status-header h2{margin:0}.last-check{font-size:.8rem;color:var(--dm-muted);font-family:var(--dm-mono)}.status-loading,.status-error{padding:.75rem 0}.status-error{color:var(--dm-error)}.status-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem;margin-bottom:1.25rem}.status-item{display:flex;flex-direction:column;gap:.25rem}.status-label{font-size:.8rem;color:var(--dm-muted)}.status-badge{font-size:.95rem;font-weight:500;padding:.25rem .5rem;border-radius:6px;display:inline-block;width:fit-content}.status-badge.ok{background:#22c55e33;color:var(--dm-ok)}.status-badge.error{background:#ef444433;color:var(--dm-error)}.status-badge.warn{background:#eab30833;color:var(--dm-warn)}.apps-heading{font-size:.9rem;font-weight:600;margin:0 0 .5rem;color:var(--dm-muted)}.status-apps{display:flex;flex-wrap:wrap;gap:.5rem}.status-app-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .6rem;border-radius:8px;font-size:.85rem;font-family:var(--dm-mono)}.status-app-chip.ok{background:#22c55e26;color:var(--dm-ok)}.status-app-chip.error{background:#ef444426;color:var(--dm-error)}.status-app-chip.warn{background:#eab30826;color:var(--dm-warn)}.keepalive-content{font-size:.9rem;font-family:var(--dm-mono)}.keepalive-content pre{margin:0;white-space:pre-wrap;word-break:break-all}.pages-hint{font-size:.8rem;color:var(--dm-muted);margin:0 0 .75rem}.pages-grid{display:flex;flex-wrap:wrap;gap:.5rem}.page-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .6rem;border-radius:8px;font-size:.85rem}.page-chip.ok{background:#22c55e26;color:var(--dm-ok)}.page-chip.error{background:#ef444426;color:var(--dm-error)}.page-chip.pending{background:#ffffff0f;color:var(--dm-muted)}.dashboard-footer{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--dm-border)}.dashboard-footer a{color:var(--dm-muted);font-size:.9rem;text-decoration:none}.dashboard-footer a:hover{color:var(--dm-text)}.hidden{display:none!important}
