@import "https://fonts.googleapis.com/css2?family=Source+Serif+4:opsz,wght@8..60,500;8..60,600;8..60,700&family=IBM+Plex+Mono:wght@500;600&family=Inter:wght@400;500;600;700&display=swap";:root{--font-body:"Inter", system-ui, "Segoe UI", Roboto, sans-serif;--font-display:"Source Serif 4", Georgia, serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--ink:#10151f;--ink-soft:#3b4256;--text:#171c28;--text-muted:#676f82;--bg:#f4f5f8;--surface:#fff;--surface-alt:#fafbfc;--border:#e2e5ec;--border-strong:#cdd2de;--accent:#1f6f54;--accent-dark:#164f3d;--accent-soft:#e5f2ec;--warn:#a66a11;--warn-soft:#faf0dd;--danger:#b23a2e;--danger-soft:#fbeae7;--shadow-sm:0 1px 2px #10151f0d;--shadow-md:0 4px 16px #10151f12;font:15px/1.55 var(--font-body);color:var(--text);background:var(--bg)}@media (prefers-color-scheme:dark){:root{--ink:#eef0f4;--ink-soft:#c7cbd8;--text:#e7e9ef;--text-muted:#949bb0;--bg:#0c0e14;--surface:#151822;--surface-alt:#11141c;--border:#262b38;--border-strong:#363c4c;--accent:#4bb894;--accent-dark:#7fd4b3;--accent-soft:#4bb89424;--warn:#e0a94a;--warn-soft:#e0a94a24;--danger:#ea7768;--danger-soft:#ea776824;--shadow-sm:0 1px 2px #00000059;--shadow-md:0 8px 24px #0006}}*{box-sizing:border-box}body{margin:0}::selection{background:var(--accent-soft);color:var(--accent-dark)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}h1{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);margin:0 0 22px;font-size:26px;font-weight:600}h2{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);margin:0 0 14px;font-size:13px;font-weight:600}a{color:var(--accent-dark);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);border-radius:7px;padding:9px 16px;font-size:13.5px;font-weight:600;transition:border-color .15s,background .15s,transform 50ms}button:hover:not(:disabled){border-color:var(--accent);color:var(--accent-dark)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}input,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:7px;padding:9px 11px;font-size:13.5px;transition:border-color .15s,box-shadow .15s}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.error-banner{background:var(--danger-soft);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 25%, transparent);border-radius:8px;margin-bottom:18px;padding:11px 15px;font-weight:500}.layout{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--surface);border-bottom:2px solid var(--ink);box-shadow:0 1px 0 var(--border) inset;align-items:center;gap:32px;padding:14px 28px;display:flex}.topbar-brand{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);padding-right:20px;font-size:17px;font-weight:600;position:relative}.topbar-brand:after{content:"";background:var(--border-strong);width:1px;position:absolute;top:2px;bottom:2px;right:0}.topbar-nav{flex:1;gap:22px;display:flex}.topbar-nav a{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid #0000;padding-bottom:3px;font-size:13px;font-weight:600;text-decoration:none;transition:color .15s,border-color .15s}.topbar-nav a:hover{color:var(--ink);border-bottom-color:var(--accent)}.topbar-user{color:var(--text-muted);align-items:center;gap:14px;font-size:13px;display:flex}.topbar-user span{color:var(--ink-soft);font-weight:600}.topbar-user button{padding:7px 13px;font-size:12.5px}.content{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:32px}.login-page{background:radial-gradient(ellipse at top, var(--accent-soft) 0%, transparent 55%), var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-form{background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--accent);width:340px;box-shadow:var(--shadow-md);border-radius:10px;flex-direction:column;gap:16px;padding:36px 34px 30px;display:flex}.login-form h1{margin-bottom:4px;font-size:21px}.login-form label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);flex-direction:column;gap:5px;font-size:12.5px;font-weight:600;display:flex}.login-form button{background:var(--accent);border-color:var(--accent);color:#fff;margin-top:6px;padding:11px 16px}.login-form button:hover:not(:disabled){background:var(--accent-dark);border-color:var(--accent-dark);color:#fff}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:28px;display:grid}.kpi-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);box-shadow:var(--shadow-sm);border-radius:8px;padding:16px 18px}.kpi-value{font-family:var(--font-mono);color:var(--ink);font-variant-numeric:tabular-nums;font-size:26px;font-weight:600}.kpi-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-top:6px;font-size:12px;font-weight:600}.scraping-status{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-bottom:28px;display:grid}.status-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:10px;padding:18px 20px}.status-card ul{color:var(--text);flex-direction:column;gap:6px;margin:0;padding:0;font-size:13.5px;list-style:none;display:flex}.status-card ul li{border-bottom:1px dashed var(--border);justify-content:space-between;gap:12px;padding:4px 0;display:flex}.status-card ul li:last-child{border-bottom:none}.status-card p{color:var(--text-muted);margin:0;font-size:13.5px}.error-text{color:var(--danger);font-size:13.5px}.error-text small{color:var(--text-muted);font-family:var(--font-mono)}.charts-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;display:grid}.chart-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:10px;padding:18px 20px 8px}.filters-form{background:var(--surface-alt);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:end;gap:10px;margin-bottom:22px;padding:14px;display:flex}.filters-form label{text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);flex-direction:column;gap:4px;font-size:11.5px;font-weight:600;display:flex}.filters-form button[type=submit]{background:var(--ink);border-color:var(--ink);color:var(--surface)}.filters-form button[type=submit]:hover:not(:disabled){background:var(--accent-dark);border-color:var(--accent-dark);color:#fff}.tenders-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);width:100%;box-shadow:var(--shadow-sm);border-radius:10px;overflow:hidden}.tenders-table th{text-align:left;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);background:var(--surface-alt);border-bottom:1px solid var(--border-strong);padding:11px 14px;font-size:11px;font-weight:600}.tenders-table td{text-align:left;border-bottom:1px solid var(--border);color:var(--text);padding:12px 14px;font-size:13.5px}.tenders-table tbody tr{transition:background .12s}.tenders-table tbody tr:hover{background:var(--surface-alt)}.tenders-table tbody tr:last-child td{border-bottom:none}.tenders-table .truncate{text-overflow:ellipsis;white-space:nowrap;max-width:320px;overflow:hidden}.pagination{color:var(--text-muted);align-items:center;gap:16px;margin-top:18px;font-size:13px;display:flex}.pagination span{font-family:var(--font-mono);font-size:12.5px}.tender-detail-page>a:first-child,.scraping-detail-page>a:first-child{color:var(--text-muted);margin-bottom:16px;font-size:13px;font-weight:600;display:inline-block}.tender-detail-page>a:first-child:hover,.scraping-detail-page>a:first-child:hover{color:var(--accent-dark)}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:20px 0 28px;display:grid}.detail-field{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:5px;padding:12px 14px;display:flex}.detail-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:11px;font-weight:600}.detail-value{color:var(--ink);font-size:14px}.scraping-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:22px;display:flex}.scraping-header h1{margin:0}.scraping-actions{gap:10px;display:flex}.scraping-actions button:first-child{background:var(--accent);border-color:var(--accent);color:#fff}.scraping-actions button:first-child:hover:not(:disabled){background:var(--accent-dark);border-color:var(--accent-dark);color:#fff}.danger-button{border-color:var(--danger)!important;color:var(--danger)!important;background:var(--surface)!important}.danger-button:hover:not(:disabled){background:var(--danger-soft)!important}.info-banner{background:var(--accent-soft);color:var(--accent-dark);border:1px solid color-mix(in srgb, var(--accent) 25%, transparent);border-radius:8px;margin-bottom:18px;padding:11px 15px;font-weight:500}.status-badge{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.03em;border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:4px 11px 4px 8px;font-size:11px;font-weight:600;display:inline-flex}.status-badge:before{content:"";background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.status-running{background:var(--warn-soft);color:var(--warn);border-color:color-mix(in srgb, var(--warn) 30%, transparent)}.status-running:before{animation:1.4s ease-in-out infinite pulse-dot}.status-success{background:var(--accent-soft);color:var(--accent-dark);border-color:color-mix(in srgb, var(--accent) 30%, transparent)}.status-failed{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb, var(--danger) 30%, transparent)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.status-running:before{animation:none}}.logs-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.logs-list li{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--border-strong);font-size:13px;font-family:var(--font-mono);border-radius:6px;align-items:baseline;gap:12px;padding:9px 13px;display:flex}.log-time{color:var(--text-muted);min-width:74px;font-size:12px}.log-level{letter-spacing:.04em;min-width:60px;font-size:11px;font-weight:700}.log-message{font-family:var(--font-body);color:var(--text)}.log-error{border-left-color:var(--danger)}.log-error .log-level{color:var(--danger)}@media (width<=720px){.topbar{flex-wrap:wrap;gap:12px;padding:12px 16px}.topbar-brand:after{display:none}.topbar-nav{order:3;gap:16px;width:100%}.content{padding:18px}.scraping-header{flex-direction:column;align-items:flex-start}}
