*{box-sizing:border-box}body{margin:0;background:#f5f7fb;color:#182033;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.topbar{height:76px;padding:0 28px;background:#111827;color:#fff;display:flex;align-items:center;justify-content:space-between}.topbar h1{margin:0;font-size:24px}.brand{font-size:11px;letter-spacing:.2em;font-weight:800;color:#8ea0bf;margin-bottom:3px}.container{max-width:1500px;margin:28px auto;padding:0 24px}.card,.stat,.login-card{background:#fff;border:1px solid #e3e8f1;border-radius:14px;box-shadow:0 2px 8px rgba(17,24,39,.03)}.card{padding:22px;margin-bottom:22px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.section-head h2{font-size:18px;margin:0 0 4px}.muted{color:#718096;margin:0;font-size:13px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}.stat{padding:18px 20px;display:flex;align-items:flex-end;justify-content:space-between}.stat span{font-size:13px;color:#718096}.stat strong{font-size:28px}.stat.good strong{color:#12805c}.stat.bad strong{color:#c33c48}.add-form{display:grid;grid-template-columns:1fr 2fr auto;gap:14px;align-items:end}label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:700;color:#4a5568}input{height:42px;border:1px solid #cfd7e5;border-radius:9px;padding:0 12px;font:inherit;background:#fff;color:#182033}input:focus{outline:2px solid #6d7cff33;border-color:#6677e8}.btn{height:40px;border:1px solid #cfd7e5;border-radius:9px;background:#fff;color:#263247;padding:0 14px;font-weight:700;cursor:pointer}.btn:hover{background:#f7f9fc}.btn.primary{background:#4f5fd7;border-color:#4f5fd7;color:#fff}.btn.primary:hover{background:#4352c4}.btn.ghost{background:transparent;color:#fff;border-color:#4b5563}.btn.small{height:32px;padding:0 10px;font-size:12px}.btn.danger{color:#b42336;border-color:#efcbd0;background:#fff}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:980px}th{text-align:left;color:#718096;font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:10px;border-bottom:1px solid #e6ebf2}td{padding:13px 10px;border-bottom:1px solid #edf1f6;font-size:13px;vertical-align:middle}tbody tr:last-child td{border-bottom:0}.url{display:block;color:#61708a;font-size:12px;margin-top:4px;max-width:520px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-text{display:block;color:#b42336;margin-top:5px;max-width:520px}.pill{display:inline-flex;align-items:center;gap:7px;font-weight:700;font-size:12px;white-space:nowrap}.pill i{width:9px;height:9px;border-radius:50%;background:#a0aec0}.pill.up{color:#12805c}.pill.up i{background:#20a779}.pill.down{color:#b42336}.pill.down i{background:#dd4c5b}.pill.unknown{color:#718096}.actions{display:flex;gap:7px}.empty{padding:32px;text-align:center;color:#718096;background:#fafbfd;border:1px dashed #d8e0eb;border-radius:10px}.alert{padding:12px 14px;border-radius:9px;margin-bottom:18px;font-size:13px;font-weight:600}.alert.ok{background:#eaf8f2;color:#11684d;border:1px solid #c5eadb}.alert.error{background:#fff0f1;color:#a72d3b;border:1px solid #f2cbd0}.login-body{min-height:100vh;background:#111827;display:grid;place-items:center;padding:24px}.login-wrap{width:100%;max-width:420px}.login-card{padding:32px}.login-card h1{font-size:30px;margin:0 0 8px}.login-card .brand{color:#5367dd}.stack{display:grid;gap:16px;margin-top:24px}.stack .btn{width:100%;margin-top:4px}@media(max-width:900px){.stats{grid-template-columns:repeat(2,1fr)}.add-form{grid-template-columns:1fr}.topbar{padding:0 18px}.container{padding:0 14px;margin-top:18px}}@media(max-width:520px){.stats{grid-template-columns:1fr 1fr;gap:9px}.stat{padding:14px}.stat strong{font-size:22px}.card{padding:16px}.section-head{align-items:flex-start;flex-direction:column}.login-card{padding:24px}}
/* Reports */
.top-actions{display:flex;align-items:center;gap:14px}.nav{display:flex;gap:6px;align-items:center}.nav a{display:inline-flex;align-items:center;min-height:38px;padding:0 12px;border-radius:9px;color:#9ca3af;text-decoration:none;font-weight:700}.nav a:hover,.nav a.active{background:rgba(255,255,255,.08);color:#fff}.report-form{display:grid;grid-template-columns:minmax(180px,240px) minmax(180px,240px) auto;gap:14px;align-items:end}.report-form label{display:grid;gap:7px}.report-form input[type=month]{width:100%;box-sizing:border-box}.report-note{margin:12px 0 0}.report-title{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:24px 0 16px}.report-title h2{margin:3px 0 5px;font-size:28px}.report-stats{grid-template-columns:repeat(6,minmax(0,1fr))}@media(max-width:1050px){.report-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.top-actions{align-items:flex-end;flex-direction:column;gap:8px}.nav{flex-wrap:wrap;justify-content:flex-end}.report-form{grid-template-columns:1fr}.report-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.report-title{align-items:flex-start;flex-direction:column}}@media print{body{background:#fff!important;color:#111!important}.topbar,.no-print{display:none!important}.container{max-width:none!important;margin:0!important;padding:0!important}.card,.stat{box-shadow:none!important;border:1px solid #ddd!important;background:#fff!important;color:#111!important}.muted,.url{color:#555!important}table{color:#111!important}.report-title{margin-top:0}}
/* Monitor history */
.monitor-name{display:inline-block;color:#263247;font-weight:800;text-decoration:none}.monitor-name:hover{color:#4f5fd7;text-decoration:underline}.detail-head{display:flex;justify-content:space-between;align-items:flex-start;margin:0 0 20px}.detail-head h2{font-size:28px;margin:8px 0 5px}.back-link{color:#61708a;text-decoration:none;font-size:13px;font-weight:700}.back-link:hover{color:#4f5fd7}.detail-url{color:#61708a;text-decoration:none;font-size:13px}.detail-url:hover{text-decoration:underline}.history-stats{grid-template-columns:repeat(6,minmax(0,1fr))}.history-stats .stat{min-width:0}.history-stats .stat strong{font-size:23px}.history-table{min-width:900px}.history-row.down td{background:#fff7f8}.history-row.up:hover td{background:#fafcfe}.history-row.down:hover td{background:#fff0f2}.nowrap{white-space:nowrap}.log-error{max-width:440px;color:#a72d3b}.pagination{display:flex;align-items:center;justify-content:center;gap:14px;padding:18px 0 2px;color:#718096;font-size:13px}.pagination .btn{display:inline-flex;align-items:center;text-decoration:none}@media(max-width:1050px){.history-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:620px){.history-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-head h2{font-size:23px}}

.pill.cf{color:#b65b00}.pill.cf i{background:#f59e0b}.history-row.cf{background:#fffaf0}

/* Single monitor report */
.single-report-container{max-width:1180px}.single-report-sheet{background:#fff;border:1px solid #e3e8f1;border-radius:18px;overflow:hidden;box-shadow:0 8px 30px rgba(17,24,39,.07);margin-bottom:18px}.single-report-hero{background:linear-gradient(135deg,#1b2230 0%,#252d3c 68%,#3a2a20 100%);color:#fff;padding:34px 38px;display:flex;justify-content:space-between;align-items:center;gap:34px}.single-report-hero h1{font-size:34px;line-height:1.1;margin:6px 0 9px}.single-report-hero a{color:#d5dbea;text-decoration:none;font-size:13px}.report-kicker{font-size:11px;font-weight:800;letter-spacing:.18em;color:#f59a46}.report-period{font-size:15px;font-weight:700;margin-top:18px}.availability-score{min-width:230px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.07);border-radius:16px;padding:20px 22px;text-align:right}.availability-score span,.availability-score small{display:block;color:#c9d1df}.availability-score span{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.availability-score strong{display:block;font-size:40px;line-height:1;margin:8px 0}.availability-score small{font-size:11px}.report-meta{padding:12px 38px;background:#fff8f0;border-bottom:1px solid #f2dfca;color:#7b5a3c;display:flex;justify-content:space-between;gap:16px;font-size:11px}.single-report-metrics{display:grid;grid-template-columns:repeat(6,1fr);padding:24px 30px 10px;gap:10px}.single-report-metrics>div{background:#f8fafc;border:1px solid #e8edf4;border-radius:12px;padding:15px}.single-report-metrics span{display:block;color:#758196;font-size:11px;font-weight:700;margin-bottom:7px}.single-report-metrics strong{font-size:20px;color:#202a3a}.report-section{padding:24px 30px;border-top:1px solid #edf1f6}.report-section-head{margin-bottom:17px}.report-section-head h2{font-size:18px;margin:0 0 4px}.report-section-head p{margin:0;color:#7a8699;font-size:12px}.result-bar{height:15px;border-radius:999px;background:#edf1f5;overflow:hidden;display:flex}.result-bar span{display:block;height:100%}.result-up{background:#20a779}.result-cf{background:#ef8b32}.result-fail{background:#d94b5a}.result-legend{display:flex;gap:22px;flex-wrap:wrap;margin-top:12px;color:#566174;font-size:12px}.result-legend span{display:flex;align-items:center;gap:7px}.result-legend i{width:9px;height:9px;border-radius:50%}.legend-up{background:#20a779}.legend-cf{background:#ef8b32}.legend-fail{background:#d94b5a}.error-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:20px}.error-grid>div{border:1px solid #e7ebf1;border-radius:10px;padding:13px 14px;display:flex;justify-content:space-between;align-items:center}.error-grid span{font-size:11px;color:#768197}.error-grid strong{font-size:16px}.month-report-list{display:grid;gap:12px}.month-report-row{border:1px solid #e5eaf1;border-radius:12px;padding:15px 16px;display:grid;grid-template-columns:minmax(150px,220px) minmax(230px,1fr) auto;gap:18px;align-items:center}.month-name strong{display:block;font-size:13px}.month-name span{display:block;font-size:11px;color:#7b8698;margin-top:4px}.month-availability{display:grid;grid-template-columns:1fr 68px;gap:12px;align-items:center}.month-availability>div{height:9px;border-radius:999px;background:#edf1f5;overflow:hidden}.month-availability>div span{display:block;height:100%;background:#20a779;border-radius:999px}.month-availability>strong{text-align:right;font-size:13px}.month-details{display:flex;gap:12px;flex-wrap:wrap;justify-content:flex-end;color:#788397;font-size:10px}.month-details strong{color:#374151}.single-report-footer{padding:16px 30px;border-top:1px solid #edf1f6;display:flex;justify-content:space-between;gap:20px;color:#8a94a5;font-size:10px}.report-print-actions{text-align:right;margin-bottom:28px}.report-empty{margin:28px}.detail-report-link{margin-left:10px}
@media(max-width:1000px){.single-report-metrics{grid-template-columns:repeat(3,1fr)}.month-report-row{grid-template-columns:1fr}.month-details{justify-content:flex-start}.error-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){.single-report-hero{padding:25px 20px;align-items:stretch;flex-direction:column}.availability-score{text-align:left;min-width:0}.report-meta{padding:12px 20px;flex-direction:column;gap:5px}.single-report-metrics{grid-template-columns:repeat(2,1fr);padding:18px 16px 8px}.report-section{padding:20px 16px}.error-grid{grid-template-columns:1fr}.month-availability{grid-template-columns:1fr 62px}.single-report-footer{padding:14px 16px;flex-direction:column}.single-report-hero h1{font-size:28px}}@media print{.single-report-sheet{box-shadow:none!important;border:0!important;border-radius:0!important}.single-report-container{max-width:none!important}.single-report-hero,.result-bar,.result-bar span,.month-availability>div,.month-availability>div span{-webkit-print-color-adjust:exact;print-color-adjust:exact}.single-report-metrics{grid-template-columns:repeat(6,1fr)}.month-report-row{break-inside:avoid}.report-section{break-inside:avoid}.report-print-actions{display:none!important}}.report-wait{padding:22px 24px;border:1px solid #fed7aa;background:#fff7ed;border-radius:12px;display:grid;gap:6px;color:#9a3412}.report-wait strong{font-size:16px}.report-wait span{font-size:13px;line-height:1.55;color:#7c2d12}

/* Single-month report selector */
.single-month-form{display:grid;grid-template-columns:minmax(240px,420px) minmax(220px,1fr);gap:16px;align-items:end}.single-month-form select{height:54px;border:1px solid #cfd7e5;border-radius:10px;padding:0 14px;font:inherit;font-weight:700;background:#fff;color:#182033}.single-month-form select:focus{outline:2px solid #6d7cff33;border-color:#6677e8}.single-month-form .btn{height:54px}.partial-month-badge{display:inline-flex;vertical-align:middle;margin-left:8px;padding:4px 9px;border-radius:999px;background:#ffedd5;color:#c65c09;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}@media(max-width:760px){.single-month-form{grid-template-columns:1fr}}
/* Row action buttons */
.actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.actions form{margin:0;display:flex;align-items:center}.actions .btn.small{height:36px;min-width:78px;padding:0 14px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;line-height:1;text-decoration:none;font-size:12.5px;font-weight:750;box-shadow:0 1px 2px rgba(17,24,39,.04);transition:background .15s,border-color .15s,color .15s,box-shadow .15s,transform .15s}.actions .btn.small:hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(17,24,39,.08)}.actions .report-action{background:#fff7ed;border-color:#fed7aa;color:#b45309}.actions .report-action:hover{background:#ffedd5;border-color:#fdba74;color:#9a4308}.actions .check-action{background:#eef2ff;border-color:#c7d2fe;color:#3f51c6}.actions .check-action:hover{background:#e0e7ff;border-color:#a5b4fc;color:#3346b3}.actions .delete-action{background:#fff5f5;border-color:#fecdd3;color:#b42336}.actions .delete-action:hover{background:#ffe8ea;border-color:#fda4af;color:#981b2b}
