@font-face{font-family:JetBrains Mono;src:url(https://satteliet.graviteit.be/fonts/JetBrainsMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(https://satteliet.graviteit.be/fonts/JetBrainsMono-Medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(https://satteliet.graviteit.be/fonts/JetBrainsMono-SemiBold.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(https://satteliet.graviteit.be/fonts/JetBrainsMono-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{font-family:JetBrains Mono,monospace;font-size:13px;color:#e2e8f0;background:linear-gradient(135deg,#1a1a2e,#1e1e36 40%,#1a1a2e,#1c1c30);min-height:100vh}.app-wrap{max-width:1200px;margin:0 auto;padding:40px 32px}.app-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.app-header h1{color:#f8fafc;font-size:18px;font-weight:600;letter-spacing:.5px}.app-header .version{display:inline-block;font-size:10px;color:#888;border:1px solid #2a2a38;border-radius:4px;padding:2px 8px;letter-spacing:.5px;margin-left:10px}.sat-card{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:20px 24px}.summary-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.summary-card{text-align:center;padding:20px 16px}.summary-card .summary-value{font-size:28px;font-weight:700;color:#f8fafc;line-height:1;margin-bottom:8px}.summary-card .summary-label{font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:1.5px;color:#888}.search-bar{margin-bottom:20px}.search-bar input{width:100%;background:#ffffff0d;border:1px solid #2a2a38;border-radius:6px;color:#e2e8f0;font-family:JetBrains Mono,monospace;font-size:13px;padding:10px 14px;outline:none;transition:border-color .15s}.search-bar input::placeholder{color:#555}.search-bar input:focus{border-color:#a78bfa;box-shadow:0 0 0 1px #a78bfa4d;background:#ffffff12}.sites-table{width:100%;border-collapse:collapse;font-size:12px}.sites-table th{color:#888;font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:1.5px;text-align:left;padding:10px 12px;border-bottom:1px solid #2a2a38}.sites-table td{padding:12px;border-bottom:1px solid rgba(255,255,255,.04);color:#e2e8f0;vertical-align:middle}.sites-table tbody tr{cursor:pointer;transition:background .15s}.sites-table tbody tr:hover{background:#ffffff08}.sites-table .site-url{color:#f8fafc;font-weight:500}.badge{display:inline-block;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:1px;padding:2px 6px;border-radius:3px;vertical-align:middle;margin-left:6px}.badge:first-child{margin-left:0}.badge-live{background:#4ade8026;color:#4ade80}.badge-warning{background:#fbbf2426;color:#fbbf24}.badge-error{background:#f8717126;color:#f87171}.badge-purple{background:#a78bfa26;color:#a78bfa}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;vertical-align:middle}.status-dot.ok{background:#4ade80;box-shadow:0 0 6px #4ade8066}.status-dot.stale{background:#f87171;box-shadow:0 0 6px #f8717166}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;padding:40px}.modal-card{background:#1e1e36;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:32px;width:100%;max-width:720px;max-height:calc(100vh - 80px);overflow-y:auto;position:relative}.modal-card h2{color:#f8fafc;font-size:16px;font-weight:600;margin-bottom:24px}.modal-close{position:absolute;top:16px;right:20px;background:none;border:none;color:#888;font-size:18px;cursor:pointer;font-family:JetBrains Mono,monospace;transition:color .15s}.modal-close:hover{color:#f8fafc}.info-table{width:100%;border-collapse:collapse;font-size:12px}.info-table td{padding:8px 12px;border-bottom:1px solid rgba(255,255,255,.04);color:#e2e8f0;vertical-align:top}.info-table tr:last-child td{border-bottom:none}.info-table .info-label{color:#888;font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:1.5px;width:160px;white-space:nowrap;padding-top:10px}.info-table .info-slugs{word-break:break-word;line-height:1.8}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{width:360px;text-align:center}.login-card h1{color:#f8fafc;font-size:18px;font-weight:600;margin-bottom:6px}.login-card .login-sub{color:#888;font-size:11px;margin-bottom:24px}.login-card input{width:100%;background:#ffffff0d;border:1px solid #2a2a38;border-radius:6px;color:#e2e8f0;font-family:JetBrains Mono,monospace;font-size:13px;padding:10px 14px;outline:none;margin-bottom:16px;transition:border-color .15s}.login-card input:focus{border-color:#a78bfa;box-shadow:0 0 0 1px #a78bfa4d;background:#ffffff12}.login-card button{width:100%;background:#8b5cf6;border:1px solid #8b5cf6;border-radius:6px;color:#f8fafc;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:1px;padding:10px 18px;cursor:pointer;transition:all .15s}.login-card button:hover{background:#a78bfa;border-color:#a78bfa}.login-card .login-error{color:#f87171;font-size:11px;margin-bottom:12px}.muted{color:#888}.loading{text-align:center;padding:40px;color:#888;font-size:12px}.empty-state{text-align:center;padding:40px;color:#555;font-size:12px}
