.login-page{justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.login-card{background:#111827;border:1px solid #1e293b;border-radius:.75rem;width:100%;max-width:24rem;padding:2.5rem}.login-title{color:#22d3ee;text-align:center;margin-bottom:.25rem;font-size:1.5rem;font-weight:700}.login-subtitle{color:#64748b;text-align:center;margin-bottom:1.5rem;font-size:.875rem}.login-error{color:#f87171;text-align:center;background:#ef44441a;border:1px solid #ef4444;border-radius:.375rem;margin-bottom:1rem;padding:.625rem;font-size:.875rem}.login-card form,.setup-section{flex-direction:column;gap:.75rem;display:flex}.login-card input{color:#e2e8f0;background:#1e293b;border:1px solid #334155;border-radius:.375rem;outline:none;padding:.625rem .75rem;font-size:.875rem;transition:border-color .15s}.login-card input:focus{border-color:#22d3ee}.totp-input{text-align:center;letter-spacing:.5em;font-family:monospace;font-size:1.5rem!important}.login-card button[type=submit],.setup-section button{color:#0a0e1a;cursor:pointer;background:#22d3ee;border:none;border-radius:.375rem;padding:.625rem;font-size:.875rem;font-weight:600;transition:background .15s}.login-card button:hover:not(:disabled){background:#06b6d4}.login-card button:disabled{opacity:.5;cursor:not-allowed}.totp-label{color:#94a3b8;text-align:center;font-size:.875rem}.setup-link{cursor:pointer;text-decoration:underline;color:#64748b!important;background:0 0!important;font-size:.8125rem!important}.setup-link:hover{color:#94a3b8!important}.secret-box{text-align:center;word-break:break-all;background:#1e293b;border:1px solid #334155;border-radius:.375rem;padding:.75rem}.secret-box code{color:#22d3ee;font-size:.875rem}.setup-note{color:#64748b;text-align:center;font-size:.8125rem}.overview h2{color:#e2e8f0;margin-bottom:1.5rem;font-size:1.25rem}.loading,.error-msg{text-align:center;color:#94a3b8;padding:3rem}.error-msg{color:#f87171}.empty-state{text-align:center;color:#64748b;padding:3rem}.link-btn{color:#22d3ee;cursor:pointer;font-size:inherit;background:0 0;border:none;text-decoration:underline}.project-grid{grid-template-columns:repeat(auto-fill,minmax(20rem,1fr));gap:1rem;display:grid}.project-card{background:#111827;border:1px solid #1e293b;border-radius:.75rem;padding:1.25rem;transition:border-color .15s}.project-card.status-green{border-left:3px solid #22c55e}.project-card.status-yellow{border-left:3px solid #eab308}.project-card.status-red{border-left:3px solid #ef4444}.card-header{align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.status-dot{border-radius:50%;display:inline-block}.status-dot.status-green{background:#22c55e;box-shadow:0 0 .375rem #22c55e}.status-dot.status-yellow{background:#eab308;box-shadow:0 0 .375rem #eab308}.status-dot.status-red{background:#ef4444;box-shadow:0 0 .375rem #ef4444}.card-header h3{color:#e2e8f0;flex:1;font-size:1rem}.status-label{text-transform:uppercase;color:#64748b;font-size:.75rem}.card-stats{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:1rem;display:grid}.stat{text-align:center}.stat-value{color:#e2e8f0;font-size:1.125rem;font-weight:600;display:block}.stat-label{color:#64748b;font-size:.6875rem}.card-footer{border-top:1px solid #1e293b;justify-content:space-between;align-items:center;padding-top:.75rem;display:flex}.last-check{color:#64748b;font-size:.75rem}.card-actions{gap:.5rem;display:flex}.card-actions button{color:#94a3b8;cursor:pointer;background:#1e293b;border:1px solid #334155;border-radius:.25rem;padding:.25rem .625rem;font-size:.75rem;transition:all .15s}.card-actions button:hover{color:#22d3ee;border-color:#22d3ee}@media (width<=480px){.project-grid{grid-template-columns:1fr}.card-stats{grid-template-columns:repeat(3,1fr)}}.errors-page h2{color:#e2e8f0;font-size:1.25rem}.page-header{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.back-btn{color:#64748b;cursor:pointer;background:0 0;border:none;font-size:.875rem}.back-btn:hover{color:#22d3ee}.filters{gap:.5rem;margin-left:auto;display:flex}.filters select{color:#e2e8f0;background:#1e293b;border:1px solid #334155;border-radius:.25rem;padding:.375rem .5rem;font-size:.8125rem}.errors-table-wrapper{overflow-x:auto}.errors-table{border-collapse:collapse;width:100%;font-size:.875rem}.errors-table th{text-align:left;color:#64748b;white-space:nowrap;border-bottom:1px solid #1e293b;padding:.625rem .75rem;font-weight:500}.errors-table td{color:#cbd5e1;border-bottom:1px solid #111827;padding:.625rem .75rem}.clickable{cursor:pointer;transition:background .1s}.clickable:hover{background:#111827}.error-msg-cell{text-overflow:ellipsis;white-space:nowrap;max-width:30rem;overflow:hidden}.count-cell{color:#f87171;font-weight:600}.date-cell{white-space:nowrap;color:#64748b;font-size:.8125rem}.source-badge{text-transform:uppercase;border-radius:.25rem;padding:.125rem .375rem;font-size:.6875rem;font-weight:600}.source-badge.frontend{color:#22d3ee;background:#22d3ee1a}.source-badge.backend{color:#a855f7;background:#a855f71a}.detail-overlay{z-index:50;background:#0009;justify-content:flex-end;display:flex;position:fixed;inset:0}.detail-panel{background:#111827;border-left:1px solid #1e293b;width:100%;max-width:40rem;overflow-y:auto}.detail-header{border-bottom:1px solid #1e293b;justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.detail-header h3{color:#e2e8f0;font-size:1rem}.close-btn{color:#64748b;cursor:pointer;background:0 0;border:none;font-size:1.5rem;line-height:1}.detail-body{flex-direction:column;gap:1.25rem;padding:1.5rem;display:flex}.detail-field label{color:#64748b;text-transform:uppercase;margin-bottom:.375rem;font-size:.75rem;display:block}.detail-field p{color:#e2e8f0;font-size:.875rem}.detail-field pre{color:#f87171;white-space:pre-wrap;word-break:break-word;background:#0a0e1a;border:1px solid #1e293b;border-radius:.375rem;padding:.75rem;font-size:.75rem;overflow-x:auto}.occurrence-list{flex-direction:column;gap:.25rem;display:flex}.occurrence{color:#94a3b8;border-bottom:1px solid #111827;gap:1rem;padding:.25rem 0;font-size:.75rem;display:flex}.occ-url{text-overflow:ellipsis;white-space:nowrap;color:#64748b;flex:1;overflow:hidden}.occ-ua{color:#475569}@media (width<=768px){.detail-panel{max-width:100%}.page-header{flex-direction:column;align-items:flex-start}.filters{margin-left:0}}.uptime-page h2{color:#e2e8f0;font-size:1.25rem}.uptime-summary{grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:1rem;margin-bottom:2rem;display:grid}.summary-card{text-align:center;background:#111827;border:1px solid #1e293b;border-radius:.5rem;padding:1.25rem}.summary-value{color:#e2e8f0;font-size:1.5rem;font-weight:700;display:block}.summary-label{color:#64748b;text-transform:uppercase;font-size:.75rem}.response-chart{background:#111827;border:1px solid #1e293b;border-radius:.5rem;margin-bottom:2rem;padding:1.25rem}.response-chart h3,.check-history h3{color:#94a3b8;margin-bottom:1rem;font-size:.875rem}.chart-bars{align-items:flex-end;gap:2px;min-height:8rem;display:flex}.chart-bar{border-radius:2px 2px 0 0;flex:1;min-width:4px;transition:opacity .1s}.chart-bar.pass{background:#22c55e}.chart-bar.fail{background:#ef4444}.chart-bar:hover{opacity:.7}.chart-legend{color:#475569;justify-content:space-between;margin-top:.375rem;font-size:.6875rem;display:flex}.endpoint-cell{text-overflow:ellipsis;white-space:nowrap;max-width:20rem;font-size:.8125rem;overflow:hidden}.result-badge{border-radius:.25rem;padding:.125rem .375rem;font-size:.6875rem;font-weight:600}.result-badge.pass{color:#22c55e;background:#22c55e1a}.result-badge.fail{color:#ef4444;background:#ef44441a}.row-fail{background:#ef44440d}@media (width<=480px){.uptime-summary{grid-template-columns:repeat(2,1fr)}}.settings-page h2{color:#e2e8f0;margin-bottom:1.5rem;font-size:1.25rem}.settings-section{background:#111827;border:1px solid #1e293b;border-radius:.5rem;margin-bottom:1.5rem;padding:1.5rem}.settings-section h3{color:#94a3b8;margin-bottom:1rem;font-size:.875rem}.add-form{flex-direction:column;gap:.625rem;max-width:30rem;display:flex}.add-form input{color:#e2e8f0;background:#1e293b;border:1px solid #334155;border-radius:.375rem;outline:none;padding:.5rem .75rem;font-size:.875rem}.add-form input:focus{border-color:#22d3ee}.add-form button{color:#0a0e1a;cursor:pointer;background:#22d3ee;border:none;border-radius:.375rem;align-self:flex-start;padding:.5rem;font-size:.875rem;font-weight:600}.add-form button:disabled{opacity:.5;cursor:not-allowed}.empty-hint{color:#64748b;font-size:.875rem}.project-list{flex-direction:column;gap:.75rem;display:flex}.project-row{background:#0a0e1a;border:1px solid #1e293b;border-radius:.375rem;flex-direction:column;gap:.5rem;padding:1rem;display:flex}.project-info strong{color:#e2e8f0;font-size:.9375rem}.url-text{color:#64748b;font-size:.75rem;display:block}.project-key{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.key-label{color:#64748b;font-size:.75rem}.key-value{color:#22d3ee;background:#1e293b;border-radius:.25rem;padding:.125rem .375rem;font-size:.75rem}.key-hidden{color:#475569}.small-btn{color:#94a3b8;cursor:pointer;background:#1e293b;border:1px solid #334155;border-radius:.25rem;padding:.25rem .5rem;font-size:.6875rem;transition:all .15s}.small-btn:hover{color:#22d3ee;border-color:#22d3ee}.small-btn.warn:hover{color:#eab308;border-color:#eab308}.small-btn.danger{align-self:flex-start}.small-btn.danger:hover{color:#ef4444;border-color:#ef4444}@media (width<=768px){.project-key{flex-direction:column;align-items:flex-start}}.layout{flex-direction:column;min-height:100vh;display:flex}.header{background:#111827;border-bottom:1px solid #1e293b;justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex}.logo{color:#22d3ee;font-size:1.25rem;font-weight:700;text-decoration:none}.nav{align-items:center;gap:1.5rem;display:flex}.nav a{color:#94a3b8;font-size:.875rem;text-decoration:none;transition:color .15s}.nav a:hover,.nav a.active{color:#22d3ee}.logout-btn{color:#94a3b8;cursor:pointer;background:0 0;border:1px solid #374151;border-radius:.375rem;padding:.375rem .75rem;font-size:.875rem;transition:all .15s}.logout-btn:hover{color:#ef4444;border-color:#ef4444}.main{flex:1;width:100%;max-width:80rem;margin:0 auto;padding:2rem}@media (width<=768px){.header{flex-direction:column;gap:.75rem;padding:1rem}.main{padding:1rem}}*{box-sizing:border-box;margin:0;padding:0}body{color:#e0e6ed;background:#0a0e1a;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app{flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}
