:root{color-scheme:light;--nav:#075e38;--blue:#087443;--green:#087443;--lime:#76bd22;--lime-dark:#5ca40e;--red:#b42318;--amber:#9a6700;--line:#dce8df;--muted:#607267}
*{box-sizing:border-box}body{margin:0;background:#f4f6f8;color:#1f2937;font:14px/1.45 Arial,sans-serif}.site-header{background:var(--nav);color:#fff;padding:18px max(18px,calc((100vw - 1500px)/2));display:flex;align-items:center;gap:22px;flex-wrap:wrap}.site-header h1{font-size:25px;margin:0}.site-header p{color:#aeb7c5;margin:2px 0 0}.site-header nav{display:flex;gap:7px;flex:1;flex-wrap:wrap}.site-header nav a,.link-button{border:0;border-radius:6px;background:#374151;color:#fff;padding:8px 10px;text-decoration:none;cursor:pointer}.site-header nav a:hover,.link-button:hover{background:#4b5563}.logout{margin:0}.container{max-width:1500px;margin:auto;padding:24px}.card{background:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 9px #10182812;margin-bottom:22px}.card h1,.card h2,.card h3{margin-top:0}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.summary-grid .card{display:flex;flex-direction:column;gap:8px}.summary-grid span{color:var(--muted)}.summary-grid strong{font-size:25px}.good{color:var(--green)}.bad{color:var(--red)}.muted,.empty{color:var(--muted)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap}.section-heading h2{margin-bottom:4px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid var(--line);padding:10px;text-align:left;vertical-align:middle}th{font-size:12px;color:var(--muted);white-space:nowrap}code{font:12px ui-monospace,SFMono-Regular,Consolas,monospace;background:#f2f4f7;border-radius:4px;padding:2px 5px}.badge{display:inline-block;border-radius:999px;background:#eaf0ff;color:#1d4ed8;font-size:11px;font-weight:700;padding:4px 8px;white-space:nowrap}.badge-online{background:#dcfce7;color:#166534}.badge-offline{background:#fee4e2;color:#991b1b}.button{display:inline-block;border:0;border-radius:7px;padding:9px 13px;font-weight:700;text-decoration:none;cursor:pointer;font-size:13px}.primary{background:var(--blue);color:#fff}.secondary{background:#e9edf3;color:#1f2937}.danger{background:#c62828;color:#fff}.warning{background:#f2b203;color:#342a00}.actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.actions form{margin:0}.flash{padding:12px 15px;border-radius:7px;margin-bottom:16px}.flash-success{background:#dcfce7;color:#166534}.flash-error{background:#fee4e2;color:#991b1b}.flash-message{background:#eaf0ff;color:#1d4ed8}.form-card{max-width:650px;margin:24px auto}.form-card form,.login-card form{display:grid;gap:15px}.login-card{max-width:430px;margin:10vh auto}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:14px}label{font-weight:700;display:grid;gap:5px}input,select{width:100%;border:1px solid #cbd5e1;border-radius:6px;background:#fff;padding:9px;font:inherit}input[type=checkbox]{width:auto}.check{display:inline-flex;grid-template-columns:auto 1fr;align-items:center;margin-right:10px;font-weight:400}.coord{min-width:100px}#map{height:480px;border-radius:9px;overflow:hidden}.system-actions{display:grid;grid-template-columns:1fr 1fr;gap:18px}.warning-panel,.danger-panel{border-radius:9px;padding:18px}.warning-panel{background:#fff7d6;border:1px solid #f2cc60}.danger-panel{background:#fff0ee;border:1px solid #f8a8a0}.status-list{list-style:none;padding:0}.status-list li{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:9px}.sticky-actions{position:sticky;bottom:10px;display:flex;gap:10px;z-index:400}
body{background:linear-gradient(180deg,#edf5ef 0,#f7faf7 260px);color:#183126}
.site-header{background:linear-gradient(120deg,#045f38,#087443 62%,#4d9514);border-bottom:4px solid var(--lime);box-shadow:0 4px 16px #034d2c35}
.brand{display:flex;align-items:center;gap:12px}.brand a{display:block;background:#fff;border-radius:9px;padding:5px;box-shadow:0 2px 8px #003c232b}.brand img{display:block;width:235px;max-width:38vw;height:76px;object-fit:contain}.site-header .brand p{color:#e8f4e9;font-weight:700;max-width:100px;line-height:1.25}
.site-header nav a,.link-button{background:#ffffff17;border:1px solid #ffffff38}.site-header nav a:hover,.site-header nav a:focus-visible,.link-button:hover,.link-button:focus-visible{background:var(--lime);color:#123c1d;outline:none}
.card{border:1px solid #deebe1;box-shadow:0 4px 14px #075e3812}.card h1,.card h2,.card h3{color:#075e38}.summary-grid .card{border-top:4px solid var(--lime)}.summary-grid strong{color:#075e38}
.button{transition:background .15s,transform .15s,box-shadow .15s}.button:hover{transform:translateY(-1px);box-shadow:0 3px 8px #075e3830}.primary{background:#087443}.primary:hover{background:#045f38}.secondary{background:#e5f1e7;color:#075e38}.secondary:hover{background:#cae4ce}.badge{background:#e7f4dc;color:#356e0c}.badge-online{background:#dff3d1;color:#246107}
code{background:#edf5ef;color:#075e38}.flash-success{background:#e2f3d7;color:#245f08;border-left:4px solid var(--lime)}.flash-message{background:#e6f2e8;color:#075e38;border-left:4px solid #087443}
input:focus,select:focus{border-color:var(--lime);outline:3px solid #76bd2230}.login-card{border-top:5px solid var(--lime);text-align:center}.login-logo{display:block;width:100%;max-height:155px;object-fit:contain;margin:0 auto 16px}.login-card form{text-align:left}.login-card .button{width:100%}
#map{border:2px solid #cae4ce;box-shadow:inset 0 0 0 1px #fff}
@media(max-width:1000px){.summary-grid,.form-grid{grid-template-columns:repeat(2,1fr)}.site-header{align-items:flex-start}.site-header nav{order:3;width:100%}}
.ntrip-filters{display:flex;flex-wrap:wrap;gap:8px 14px;margin:8px 0 12px}.ntrip-filter{display:inline-flex;align-items:center;gap:6px;margin:0;font-weight:600}.ntrip-filter.is-disabled{opacity:.55}.ntrip-legend{display:flex;flex-wrap:wrap;gap:8px 16px;list-style:none;padding:0;margin:0 0 12px}.ntrip-legend li{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:#075e38}.legend-dot{width:12px;height:12px;border-radius:50%;display:inline-block;box-shadow:0 0 0 2px #fff,0 0 0 3px #075e3830}.provider-badge{display:inline-block;border-radius:999px;color:#fff;background:var(--provider-color,#087443);font-size:11px;font-weight:700;padding:3px 8px;margin:2px 2px 0 0}.popup-meta{margin-top:4px}.popup-mounts{margin:4px 0 0;padding-left:18px}.ntrip-map,.ntrip-map.leaflet-container{height:560px;border-radius:9px;overflow:hidden}#ntrip-refresh-providers li{justify-content:flex-start;gap:8px}
.ntrip-station-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:0 0 14px}
.ntrip-station-group{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#f8fbf8}
.ntrip-station-group h3{margin:0 0 8px;font-size:15px;display:flex;align-items:center;gap:8px}
.ntrip-station-group ul{list-style:none;padding:0;margin:8px 0 0}
.ntrip-station-group li{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid #edf3ee}
.ntrip-station-group li:last-child{border-bottom:0}
.ntrip-station-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.ntrip-station-dot.is-online{background:#16a34a}
.ntrip-station-dot.is-offline{background:#9ca3af}
.ntrip-station-group .check{margin:0 0 6px}
.vrs-pill{display:inline-block;font-size:11px;font-weight:700;border-radius:999px;padding:1px 7px;margin-left:4px;white-space:nowrap}
.vrs-pill.is-active{background:#dcfce7;color:#166534}
.vrs-pill.is-inactive{background:#f3f4f6;color:#4b5563}
.vrs-pill.is-unsuitable{background:#fee2e2;color:#991b1b}
.meter{height:10px;background:#e5f1e7;border-radius:999px;overflow:hidden;margin:8px 0}
.meter i{display:block;height:100%;background:linear-gradient(90deg,#087443,#76bd22);width:0}
.meter-card strong{font-size:28px}
.vrs-form{margin-top:16px}
@media(max-width:650px){.container{padding:12px}.card{padding:14px}.summary-grid{grid-template-columns:repeat(2,1fr);gap:9px}.summary-grid .card{padding:12px}.summary-grid strong{font-size:20px}.form-grid,.system-actions{grid-template-columns:1fr}.site-header{padding:12px}.brand{width:100%;justify-content:center}.brand img{width:220px;max-width:65vw;height:70px}.site-header .brand p{max-width:90px;font-size:12px}.site-header nav{display:grid;grid-template-columns:repeat(2,1fr)}.site-header nav a{text-align:center}#map,.ntrip-map{height:390px}th,td{padding:8px 6px}.sticky-actions{position:static}.meter-card strong{font-size:22px}}


