*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:#0b0b0b;color:#e5e5e5;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Inter,Arial,sans-serif;line-height:1.4}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}#root{min-height:100%;padding:0;margin:0;text-align:left}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:8px 14px;font-weight:600;font-size:14px;transition:transform .12s ease,box-shadow .18s ease,background-color .2s ease,border-color .2s ease,opacity .2s;will-change:transform}.btn-primary{background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff}.btn-ghost{background:transparent;color:#fff;border-color:#3a3a3a}.btn-success{background:#22c55e;color:#0b0b0b;border-color:#ffffff0f}.pressable:hover{transform:translateY(-1px);box-shadow:0 10px 24px #0006}.pressable:active{transform:translateY(0);box-shadow:0 6px 14px #00000059;filter:brightness(.98)}.glow:hover{box-shadow:0 12px 36px #3b82f673}.nav-btn{border-radius:12px}.nav-btn:focus-visible{outline:2px solid #6366f1;outline-offset:2px}.card{transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background .2s ease}.hover-lift:hover{transform:translateY(-2px);border-color:#3a3a3a;box-shadow:0 16px 40px #00000073}.input{width:100%;border-radius:12px;border:1px solid #3a3a3a;background:#111;padding:10px 12px;color:#e5e5e5;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.input:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 4px #6366f133;background:#0f0f12}.status{display:flex;align-items:center;gap:8px;font-size:12px;color:#a3a3a3}.status .dot{width:10px;height:10px;border-radius:9999px}.status.is-up .dot{background:#22c55e;box-shadow:0 0 #22c55e8c;animation:dotPulse 2s infinite}.status.is-down .dot{background:#f43f5e;box-shadow:0 0 #f43f5e8c;animation:dotPulse 2s infinite}.status.is-checking .dot{background:#f59e0b;box-shadow:0 0 #f59e0b8c;animation:dotPulse 2s infinite}@keyframes dotPulse{0%{box-shadow:0 0 #fff0;transform:scale(1)}40%{box-shadow:0 0 0 8px #fff0;transform:scale(1.06)}41%{box-shadow:0 0 #fff0}to{box-shadow:0 0 #fff0;transform:scale(1)}}
