:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}body{margin:0;background:#f7f7f8;color:#111}a{color:inherit;text-decoration:none}.container{width:100%;box-sizing:border-box;padding:24px 32px}.card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px}.row{display:flex;gap:16px;flex-wrap:wrap}.row>*{flex:1 1 220px;min-width:0}.btn{background:#111;color:#fff;border:0;padding:10px 14px;border-radius:10px;cursor:pointer;font-size:14px}.btn.secondary{background:#fff;color:#111;border:1px solid #d1d5db}.btn.danger{background:#b91c1c;color:#fff;border:0}.btn.primary{background:#111;color:#fff;border:0}.input{width:100%;padding:10px 12px;border-radius:10px;border:1px solid #d1d5db;background:#fff;box-sizing:border-box;font-size:14px}.table{width:100%;border-collapse:collapse}.table th,.table td{border-bottom:1px solid #eee;padding:10px 12px;text-align:left;font-size:14px}.table th{font-weight:600;background:#fafafa}.badge{display:inline-block;padding:2px 8px;border-radius:999px;background:#eef2ff;border:1px solid #c7d2fe;font-size:12px}.tr-hover{background:#e2e7f0}.tr-hover:hover{background:#d0d8e8}.tr-hover:hover td{color:#111}.app-layout{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:#111;color:#fff;display:flex;flex-direction:column;position:fixed;top:36px;left:0;height:calc(100vh - 36px);z-index:200;transition:transform .22s ease}.sidebar-logo{padding:16px;display:flex;align-items:center;justify-content:center;min-height:64px;border-bottom:1px solid rgba(255,255,255,.1);font-size:16px;font-weight:800;letter-spacing:-.5px;color:#fff}.sidebar-nav{flex:1;display:flex;flex-direction:column;padding:12px 8px;gap:2px;overflow-y:auto}.sidebar-link{display:block;padding:9px 12px;border-radius:8px;font-size:14px;color:#ffffffb8;transition:background .15s,color .15s}.sidebar-link:hover{background:#ffffff14;color:#fff}.sidebar-link--active{background:#ffffff26;color:#fff;font-weight:600}.sidebar-footer{padding:12px 12px 16px;border-top:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;gap:8px}.sidebar-user{font-size:12px;color:#ffffff8c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-logout{background:#ffffff14;color:#fff;border:1px solid rgba(255,255,255,.15);font-size:13px;padding:7px 12px;width:100%;text-align:center}.sidebar-logout:hover{background:#ffffff26}.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:190}.sidebar-toggle{display:none;padding:7px 10px;font-size:18px;line-height:1;flex-shrink:0}.app-content{flex:1;margin-left:220px;display:flex;flex-direction:column;min-height:100vh;padding-top:36px}.app-topstrip{display:none;align-items:center;gap:12px;background:#f7f7f8f2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid #e5e7eb;padding:0 16px;position:sticky;top:0;z-index:100;min-height:48px}.service-status-bar{position:fixed;top:0;left:0;right:0;z-index:300;background:#111111f7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;gap:0;padding:0 16px;height:36px;border-bottom:1px solid rgba(255,255,255,.1);box-shadow:0 2px 12px #00000038;white-space:nowrap;overflow:hidden}.status-section{display:flex;align-items:center;gap:18px}.status-divider{display:block;width:1px;height:20px;background:#ffffff26;margin:0 18px;flex-shrink:0}.service-status-item{display:flex;align-items:center;gap:7px;position:relative;cursor:default}.service-status-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;transition:transform .15s}.service-status-dot.ok{background:#22c55e;box-shadow:0 0 6px #22c55e99}.service-status-dot.error{background:#ef4444;box-shadow:0 0 6px #ef444499}.service-status-dot.unconfigured{background:#6b7280}.service-status-dot.loading{background:#f59e0b;animation:pulse-dot 1.2s ease-in-out infinite}.service-status-dot.stripe_test{background:#f59e0b;box-shadow:0 0 6px #f59e0b99}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.45}}.service-status-label{font-size:11px;font-weight:600;color:#ffffffa6;text-transform:uppercase;letter-spacing:.5px}.service-status-item .status-tooltip{display:none;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);background:#1e1e1ef7;color:#fff;font-size:11px;white-space:nowrap;padding:5px 10px;border-radius:6px;border:1px solid rgba(255,255,255,.12);pointer-events:none}.service-status-item:hover .status-tooltip{display:block}@media (max-width: 768px){.sidebar{transform:translate(-100%)}.sidebar--open{transform:translate(0)}.sidebar-toggle{display:inline-flex;align-items:center;justify-content:center}.app-topstrip{display:flex}.app-content{margin-left:0}.container{padding:16px}.row{gap:12px}.row>*{flex:1 1 100%}.card{padding:14px}.table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.service-status-bar{gap:0;padding:0 10px;height:36px;overflow-x:auto}.status-section{gap:12px}.status-divider{margin:0 10px}.service-status-label{font-size:10px}h2{font-size:20px}}.radar-view{--radar-ring: rgba(100, 116, 139, .35);--radar-ray: rgba(100, 116, 139, .18);--radar-text: #64748b;--radar-fg: #0f172a;--radar-surface: #ffffff;--radar-sensor-stroke: #94a3b8;--radar-tile-bg: #f8fafc;--radar-tile-border: #e2e8f0;--radar-track: #e2e8f0;--radar-yes-bg: var(--bg-success, #dcfce7);--radar-yes-fg: var(--text-success, #166534);--radar-no-bg: var(--bg-neutral, #f1f5f9);--radar-no-fg: var(--text-neutral, #475569);display:flex;flex-direction:column;gap:8px;color:var(--radar-fg);min-width:0}:root[data-theme=dark] .radar-view,.dark .radar-view{--radar-ring: rgba(148, 163, 184, .35);--radar-ray: rgba(148, 163, 184, .16);--radar-text: #94a3b8;--radar-fg: #e2e8f0;--radar-surface: #1e293b;--radar-sensor-stroke: #64748b;--radar-tile-bg: #1e293b;--radar-tile-border: #334155;--radar-track: #334155;--radar-yes-bg: var(--bg-success, rgba(34, 197, 94, .18));--radar-yes-fg: var(--text-success, #86efac);--radar-no-bg: var(--bg-neutral, #1e293b);--radar-no-fg: var(--text-neutral, #cbd5e1)}.radar-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.radar-pill{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:13px;font-weight:600;line-height:1.3;white-space:nowrap}.radar-pill--yes{background:var(--radar-yes-bg);color:var(--radar-yes-fg)}.radar-pill--no{background:var(--radar-no-bg);color:var(--radar-no-fg)}.radar-offline{font-size:12px;color:var(--radar-text)}.radar-legend{margin:0;font-size:12px;color:var(--radar-text)}.radar-canvas{display:block;width:100%;height:300px}.radar-view--offline .radar-canvas{filter:grayscale(1);opacity:.6}.radar-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.radar-tile{display:flex;flex-direction:column;gap:3px;min-width:0;padding:8px 10px;border-radius:8px;background:var(--radar-tile-bg);border:1px solid var(--radar-tile-border)}.radar-tile-label{font-size:11px;color:var(--radar-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.radar-tile-value{font-size:16px;font-weight:700;color:var(--radar-fg);white-space:nowrap}.radar-gauge{display:block;height:4px;border-radius:2px;background:var(--radar-track);overflow:hidden}.radar-gauge>span{display:block;height:100%;border-radius:2px;transition:width .6s ease}.radar-note{margin:0;font-size:11px;color:var(--radar-text)}.radar-view--compact{gap:4px}.radar-view--compact .radar-pill{font-size:11px;padding:2px 8px}.radar-view--compact .radar-offline{font-size:10px}.radar-view--compact .radar-canvas{width:132px;height:70px;margin:0 auto}.radar-view--compact .radar-tiles{gap:4px}.radar-view--compact .radar-tile{padding:4px 6px;gap:2px;border-radius:6px}.radar-view--compact .radar-tile-label{font-size:10px}.radar-view--compact .radar-tile-value{font-size:12px}.radar-view--compact .radar-gauge{height:3px}.radar-view--dense{gap:2px}.radar-view--dense .radar-head{gap:4px}.radar-view--dense .radar-pill{font-size:9px;padding:1px 6px;white-space:normal}.radar-view--dense .radar-offline{font-size:9px}.radar-view--dense .radar-canvas{width:120px;height:64px}.radar-view--dense .radar-tiles{gap:2px}.radar-view--dense .radar-tile{padding:2px 3px;gap:1px;border-radius:4px}.radar-view--dense .radar-tile-label{font-size:8px}.radar-view--dense .radar-tile-value{font-size:10px}.radar-view--dense .radar-gauge{height:2px}@media (prefers-reduced-motion: reduce){.radar-gauge>span{transition:none}}
