:root{--bg: #f3f1eb;--ink: #1a1c1e;--muted: #5c636a;--line: #d6d1c7;--accent: #0c54a0;--card: #fffcf7;--ok: #1f7a4c;font-family:IBM Plex Sans,Segoe UI,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse 80% 50% at 10% -10%,#d9e6f5 0%,transparent 55%),radial-gradient(ellipse 60% 40% at 100% 0%,#efe6d4 0%,transparent 50%),var(--bg)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.layout{max-width:1100px;margin:0 auto;padding:1.5rem 1.25rem 3rem}.header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.75rem 1.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--line);padding-bottom:1rem}.header-right{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.25rem}.mock-toggle{display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none}.mock-toggle input{width:1rem;height:1rem;accent-color:var(--accent);cursor:pointer}.header h1{margin:0;font-size:1.45rem;font-weight:650;letter-spacing:-.02em}.nav{display:flex;gap:1rem;font-size:.95rem}.status{color:var(--muted);font-size:.85rem;margin-bottom:1rem}.health-banner{border:1px solid var(--line);border-radius:10px;padding:.85rem 1rem;margin-bottom:1.25rem;background:var(--card)}.health-title{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.05rem;margin-bottom:.25rem}.health-dot{width:.7rem;height:.7rem;border-radius:50%;background:var(--muted);flex-shrink:0}.health-ok{border-color:#9ecbb0;background:#eef7f1}.health-ok .health-dot{background:var(--ok)}.health-ok .health-title{color:#1a5c38}.health-fail{border-color:#e0a8a8;background:#fbf0f0}.health-fail .health-dot{background:#c0392b}.health-fail .health-title{color:#8e241c}.health-unknown{border-color:var(--line)}.health-warn{border-color:#e0c48a;background:#fbf6eb}.health-warn .health-dot{background:#c48a1a}.health-warn .health-title{color:#7a5a10}.section-title{margin:1.5rem 0 .75rem;font-size:1.1rem;font-weight:650}.alert-list{list-style:none;margin:0;padding:0;display:grid;gap:.65rem}.alert-item{border:1px solid var(--line);border-radius:10px;padding:.85rem 1rem;background:var(--card)}.alert-critical{border-color:#e0a8a8;background:#fbf0f0}.alert-warning{border-color:#e0c48a;background:#fbf6eb}.alert-head{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-bottom:.25rem}.alert-level{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.alert-critical .alert-level{color:#8e241c}.alert-warning .alert-level{color:#7a5a10}.alert-msg{margin:0;color:var(--muted);font-size:.9rem}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem}.metric-card{border:1px solid var(--line);border-radius:10px;background:var(--card);padding:.85rem .9rem}.metric-link{text-decoration:none;color:inherit;transition:border-color .15s ease}.metric-link:hover{border-color:var(--accent);text-decoration:none}.metric-label{font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.35rem}.metric-value{font-size:1.15rem;font-weight:650;word-break:break-word}.qty-warn{color:#c0392b;font-weight:600}.health-msg{color:var(--muted);font-size:.9rem}.health-details{margin:.6rem 0 0;padding-left:1.2rem;color:#8e241c;font-size:.85rem;word-break:break-word}.toolbar{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem;align-items:center}input,select,button{font:inherit;border:1px solid var(--line);border-radius:6px;padding:.45rem .7rem;background:var(--card);color:var(--ink)}button{cursor:pointer;background:var(--accent);color:#fff;border-color:var(--accent)}button.secondary{background:var(--card);color:var(--ink)}button:disabled{opacity:.55;cursor:not-allowed}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px;background:var(--card)}table{width:100%;border-collapse:collapse;font-size:.92rem}th,td{text-align:left;padding:.65rem .75rem;border-bottom:1px solid var(--line);white-space:nowrap}th{font-weight:600;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}tr:last-child td{border-bottom:none}.qty-ok{color:var(--ok);font-weight:600}.badge-mock,.badge-live{display:inline-block;font-size:.72rem;font-weight:650;letter-spacing:.03em;text-transform:uppercase;padding:.15rem .45rem;border-radius:4px}.badge-mock{background:#f0e2c8;color:#6b4e16}.badge-live{background:#d8ebe0;color:#1f7a4c}.charts{display:grid;gap:1.25rem}.chart-card{border:1px solid var(--line);border-radius:10px;background:var(--card);padding:1rem .75rem .5rem}.chart-card h2{margin:0 0 .75rem .5rem;font-size:1rem}.empty{color:var(--muted);padding:2rem 0}.sources-panel{border:1px solid var(--line);border-radius:10px;background:var(--card);padding:1rem 1rem .85rem;margin-bottom:1.25rem}.sources-title{margin:0 0 .35rem;font-size:1.05rem;font-weight:650}.sources-hint{margin:0 0 .85rem;color:var(--muted);font-size:.88rem}.sources-hint code{font-size:.85em}.sources-form{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:.5rem}.sources-form input{flex:1;min-width:220px}.sources-list{list-style:none;margin:.5rem 0 0;padding:0;border-top:1px solid var(--line)}.sources-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding:.65rem 0;border-bottom:1px solid var(--line);font-size:.88rem;word-break:break-all}.sources-list li:last-child{border-bottom:none}.sources-remove{flex-shrink:0;font-size:.85rem;padding:.3rem .55rem}.sources-empty{padding:.5rem 0 .25rem}.sources-form-stack{flex-direction:column;align-items:stretch}.sources-form-actions{display:flex;flex-wrap:wrap;gap:.6rem}.source-item{display:flex;flex-direction:column;gap:.2rem;min-width:0}.source-item a{font-size:.82rem;word-break:break-all}.catalog-title-cell{white-space:normal;max-width:220px;font-weight:550}.city-slug{font-size:.8em;color:var(--muted)}.expand-btn{min-width:2rem;padding:.2rem .45rem;font-weight:700}.city-detail-row td{background:#f7f4ee;font-size:.88rem}.city-detail-wh{color:var(--muted);padding-left:1.25rem!important}@media (max-width: 640px){.header h1{font-size:1.2rem}}
