/* RICH LIGHT — TEEDD360 internal tools */
@import url('https://fonts.googleapis.com/css2?family=Prompt:wght@300;400;500;600;700&display=swap');
:root{--net:url("data:image/svg+xml;utf8,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22900%22%20height=%22220%22%20viewBox=%220%200%20900%20220%22%3E%3Cline%20x1=%22341%22%20y1=%2248%22%20x2=%22306%22%20y2=%22117%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22341%22%20y1=%2248%22%20x2=%22416%22%20y2=%2222%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22414%22%20y1=%22176%22%20x2=%22454%22%20y2=%22117%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22414%22%20y1=%22176%22%20x2=%22325%22%20y2=%22153%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%2259%22%20y1=%2228%22%20x2=%2248%22%20y2=%2232%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%2259%22%20y1=%2228%22%20x2=%2281%22%20y2=%2271%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22850%22%20y1=%22147%22%20x2=%22856%22%20y2=%22154%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22850%22%20y1=%22147%22%20x2=%22845%22%20y2=%22184%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22106%22%20y1=%22103%22%20x2=%2281%22%20y2=%2271%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22106%22%20y1=%22103%22%20x2=%22136%22%20y2=%2267%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22606%22%20y1=%2224%22%20x2=%22606%22%20y2=%2225%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22606%22%20y1=%2224%22%20x2=%22580%22%20y2=%2244%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22529%22%20y1=%2264%22%20x2=%22580%22%20y2=%2244%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22529%22%20y1=%2264%22%20x2=%22606%22%20y2=%2225%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%2248%22%20y1=%2232%22%20x2=%2281%22%20y2=%2271%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22454%22%20y1=%22117%22%20x2=%22529%22%20y2=%2264%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22102%22%20y1=%22151%22%20x2=%22130%22%20y2=%22156%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22102%22%20y1=%22151%22%20x2=%22106%22%20y2=%22103%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22444%22%20y1=%2225%22%20x2=%22416%22%20y2=%2222%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22444%22%20y1=%2225%22%20x2=%22454%22%20y2=%22117%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22856%22%20y1=%22154%22%20x2=%22845%22%20y2=%22184%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22136%22%20y1=%2267%22%20x2=%2281%22%20y2=%2271%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22655%22%20y1=%22170%22%20x2=%22605%22%20y2=%22156%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22655%22%20y1=%22170%22%20x2=%22600%22%20y2=%22159%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22606%22%20y1=%2225%22%20x2=%22580%22%20y2=%2244%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22600%22%20y1=%22159%22%20x2=%22605%22%20y2=%22156%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22236%22%20y1=%2221%22%20x2=%22195%22%20y2=%2236%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22236%22%20y1=%2221%22%20x2=%22341%22%20y2=%2248%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22306%22%20y1=%22117%22%20x2=%22325%22%20y2=%22153%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22157%22%20y1=%22148%22%20x2=%22130%22%20y2=%22156%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22157%22%20y1=%22148%22%20x2=%22102%22%20y2=%22151%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22195%22%20y1=%2236%22%20x2=%22136%22%20y2=%2267%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22664%22%20y1=%2258%22%20x2=%22606%22%20y2=%2225%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cline%20x1=%22664%22%20y1=%2258%22%20x2=%22606%22%20y2=%2224%22%20stroke=%22%237aa2ff%22%20stroke-opacity=%220.22%22%20stroke-width=%221%22/%3E%3Cpath%20d=%22M59,28%20L130,156%20L236,21%20L414,176%20L416,22%20L444,25%20L850,147%22%20fill=%22none%22%20stroke=%22%23c9a227%22%20stroke-opacity=%220.55%22%20stroke-width=%221.4%22%20stroke-dasharray=%226%205%22/%3E%3Ccircle%20cx=%2259%22%20cy=%2228%22%20r=%223.2%22%20fill=%22%23c9a227%22%20fill-opacity=%220.85%22/%3E%3Ccircle%20cx=%22130%22%20cy=%22156%22%20r=%223.2%22%20fill=%22%23c9a227%22%20fill-opacity=%220.85%22/%3E%3Ccircle%20cx=%22236%22%20cy=%2221%22%20r=%223.2%22%20fill=%22%23c9a227%22%20fill-opacity=%220.85%22/%3E%3Ccircle%20cx=%22414%22%20cy=%22176%22%20r=%223.2%22%20fill=%22%23c9a227%22%20fill-opacity=%220.85%22/%3E%3Ccircle%20cx=%22416%22%20cy=%2222%22%20r=%223.2%22%20fill=%22%23c9a227%22%20fill-opacity=%220.85%22/%3E%3Ccircle%20cx=%22444%22%20cy=%2225%22%20r=%223.2%22%20fill=%22%23c9a227%22%20fill-opacity=%220.85%22/%3E%3Ccircle%20cx=%22850%22%20cy=%22147%22%20r=%223.2%22%20fill=%22%23c9a227%22%20fill-opacity=%220.85%22/%3E%3Ccircle%20cx=%22341%22%20cy=%2248%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22106%22%20cy=%22103%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22606%22%20cy=%2224%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22529%22%20cy=%2264%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%2248%22%20cy=%2232%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22454%22%20cy=%22117%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%2281%22%20cy=%2271%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22102%22%20cy=%22151%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22856%22%20cy=%22154%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22136%22%20cy=%2267%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22655%22%20cy=%22170%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22606%22%20cy=%2225%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22600%22%20cy=%22159%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22580%22%20cy=%2244%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22306%22%20cy=%22117%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22157%22%20cy=%22148%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22325%22%20cy=%22153%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22845%22%20cy=%22184%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22195%22%20cy=%2236%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22605%22%20cy=%22156%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3Ccircle%20cx=%22664%22%20cy=%2258%22%20r=%222%22%20fill=%22%239cc0ff%22%20fill-opacity=%220.55%22/%3E%3C/svg%3E");--head:#0a1f44;--surface:#ffffff;--surface-2:#f4f7fc;--hover:#e8eef8;--chip:#e3eaf6;--navy:#0a1f44;--navy-2:#14305f;--teal:#1d4ed8;--teal-2:#2563eb;--cyan:#3b82f6;--cyan-soft:#dbe7ff;--gold:#c9a227;--gold-soft:#fbf3d5;--bg:#eef2f9;--card:#ffffff;--line:#d6deeb;--txt:#1b2a4a;--mut:#5b6b8a;--ok:#15803d;--ok-soft:#dcfce7;--warn:#b45309;--warn-soft:#fef3c7;--err:#b91c1c;--err-soft:#fee2e2;--r:12px}
*{box-sizing:border-box}
html,body{min-height:100%}
body{background-image:radial-gradient(rgba(122,162,255,.10) 1px,transparent 1px);background-size:26px 26px;margin:0;font-family:'Prompt',system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--txt);font-size:14px;line-height:1.5}
a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}
[hidden]{display:none!important}
.g-header{position:sticky;top:0;z-index:40;box-shadow:0 2px 12px rgba(2,8,24,.35);background:var(--net) right center/auto 100% no-repeat,linear-gradient(90deg,#071634,#0d2452 60%,#12306b);color:#fff;padding:0 20px;height:56px;display:flex;align-items:center;gap:14px}
.g-header .g-brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:16px;color:#fff;letter-spacing:.2px}
.g-header .g-brand .g-logo-img{height:42px;width:auto;max-width:170px;object-fit:contain}
.g-header .g-brand .g-logo{width:30px;height:30px;border-radius:8px;background:var(--cyan);display:grid;place-items:center;color:var(--head);font-weight:700;font-size:13px}
.g-header .g-brand small{font-weight:300;opacity:.75;margin-left:6px;font-size:13px}
.g-header nav{display:flex;gap:4px;margin-left:12px}
.g-header nav a{color:#cbd5e1;padding:6px 12px;border-radius:8px;font-size:13.5px}
.g-header nav a.on,.g-header nav a:hover{background:rgba(255,255,255,.1);color:#fff;text-decoration:none}
.g-header .g-spacer{flex:1}
.g-header .g-user{font-size:13px;color:#cbd5e1}
.g-main{max-width:1280px;margin:0 auto;padding:22px 20px 60px}
.g-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px}
.g-card+.g-card{margin-top:16px}
h1,h2,h3{margin:0;font-weight:600;color:var(--head)}
h1{font-size:22px}h2{font-size:17px}h3{font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:.06em;font-weight:500;margin-top:14px;margin-bottom:6px}
.g-sub{color:var(--mut);font-size:13px}
button,.g-btn{font:inherit;font-weight:500;border:1px solid var(--line);background:var(--surface);color:var(--head);padding:8px 14px;border-radius:9px;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;text-decoration:none}
button:hover,.g-btn:hover{background:var(--hover);text-decoration:none}
button.g-pri{background:var(--teal);border-color:var(--teal);color:#fff}button.g-pri:hover{background:var(--teal-2)}
button.g-gold{background:var(--gold);border-color:var(--gold);color:var(--head)}
button.g-navy{background:var(--navy);border-color:var(--head);color:#fff}
button.g-danger{color:var(--err);border-color:#f3c9c8}
button.on{background:var(--navy);border-color:var(--head);color:#fff}
button:disabled{opacity:.45;cursor:not-allowed}
button.g-sm,.g-btn.g-sm{padding:4px 10px;font-size:12.5px;border-radius:7px}
input,select,textarea{font:inherit;border:1px solid var(--line);border-radius:8px;padding:7px 10px;width:100%;background:var(--surface);color:var(--txt)}
input:focus,select:focus,textarea:focus{outline:2px solid #bfdbfe;border-color:var(--cyan)}
label{font-size:12px;color:var(--mut);display:block;margin-bottom:3px}
.g-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.g-row.between{justify-content:space-between}
.g-grid{display:grid;gap:12px}
.g-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.g-fields>div{min-width:0}.g-fields .wide{grid-column:span 2}
.g-tag{display:inline-block;padding:2px 9px;border-radius:99px;font-size:11.5px;font-weight:500;background:var(--chip);color:var(--mut);white-space:nowrap}
.g-tag.ok{background:var(--ok-soft);color:var(--ok)}.g-tag.warn{background:var(--warn-soft);color:var(--warn)}.g-tag.err{background:var(--err-soft);color:var(--err)}.g-tag.cyan{background:var(--cyan-soft);color:#1e40af}.g-tag.gold{background:var(--gold-soft);color:#92400e}.g-tag.navy{background:#e2e8f0;color:var(--head)}
table.g-table{width:100%;border-collapse:collapse;font-size:13.5px}
.g-table th,.g-table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.g-table th{color:var(--mut);font-weight:500;font-size:12px}
.g-table tr:hover td{background:var(--surface-2)}
.g-toast{position:fixed;right:18px;bottom:18px;background:var(--navy);color:#fff;padding:10px 14px;border-radius:10px;font-size:13px;z-index:99;max-width:360px}
.g-toast.err{background:var(--err)}
.g-modal{position:fixed;inset:0;background:rgba(11,37,69,.45);display:none;align-items:center;justify-content:center;z-index:50;padding:16px}
.g-modal.on{display:flex}
.g-modal .g-box{background:var(--surface);border-radius:14px;padding:20px 22px;width:min(640px,100%);max-height:92vh;overflow:auto}
.g-help{font-size:13px;color:var(--mut);line-height:1.7}
.g-help code,code{background:var(--chip);padding:1px 6px;border-radius:5px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;color:var(--head)}
.g-stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.g-stat .s{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.g-stat .s b{display:block;font-size:22px;color:var(--head);font-weight:600;line-height:1.1}
.g-stat .s span{font-size:12px;color:var(--mut)}
.g-login{min-height:100%;display:grid;place-items:center;padding:20px}
.g-login .g-card{width:min(400px,100%);padding:28px}
.g-empty{color:var(--mut);text-align:center;padding:30px}

/* ---- DARK theme (neutral near-black) ---- */
[data-theme=dark]{--head:#f4f7ff;--surface:#0c1528;--surface-2:#091120;--hover:#152340;--chip:#172745;--bg:#060b16;--card:#0c1528;--line:#1b2a48;--txt:#e6ebf5;--mut:#91a0bd;--cyan-soft:#14305f;--gold-soft:#3a3115;--ok-soft:#14301f;--warn-soft:#3a2a12;--err-soft:#3a1b1b;--ok:#4ade80;--warn:#fbbf24;--err:#f87171;color-scheme:dark}
[data-theme=dark] .g-header{background:var(--net) right center/auto 100% no-repeat,linear-gradient(90deg,#050c1c,#0a1a3a 60%,#0e2350);border-bottom:1px solid #1b2a48}
[data-theme=dark] .g-header nav a.on,[data-theme=dark] .g-header nav a:hover{background:rgba(255,255,255,.09)}
[data-theme=dark] button,[data-theme=dark] .g-btn{background:#172542;border-color:#2a3a5c;color:#e6ebf5}
[data-theme=dark] button:hover,[data-theme=dark] .g-btn:hover{background:#24344f}
[data-theme=dark] button.on{background:var(--gold);border-color:var(--gold);color:#111}
[data-theme=dark] button.g-pri{background:#2f6df6;border-color:#2f6df6;color:#fff}
[data-theme=dark] button.g-gold{background:var(--gold);border-color:var(--gold);color:#111}
[data-theme=dark] button.g-navy{background:#e6ebf5;border-color:#e6ebf5;color:#111}
[data-theme=dark] button.g-danger{color:#f87171;border-color:#4a2233;background:#172542}
[data-theme=dark] input,[data-theme=dark] select,[data-theme=dark] textarea{background:#0e1a30;border-color:#2a3a5c;color:#e6ebf5}
[data-theme=dark] input:focus,[data-theme=dark] select:focus,[data-theme=dark] textarea:focus{outline-color:#1e3a8a;border-color:var(--teal-2)}
[data-theme=dark] .g-tag{background:#1c2a47;color:#aab7d1}[data-theme=dark] .g-tag.cyan{color:#93c5fd}[data-theme=dark] .g-tag.gold{color:#fde68a}[data-theme=dark] .g-tag.navy{background:#e6ebf5;color:#111}
[data-theme=dark] .g-table tr:hover td{background:#172542}
[data-theme=dark] .g-toast{background:#1a2742;border:1px solid #2f4166}[data-theme=dark] .g-toast.err{background:#4a1f2a}
[data-theme=dark] .g-modal{background:rgba(0,0,0,.7)}
[data-theme=dark] .g-modal .g-box{border:1px solid #24344f}
[data-theme=dark] code,[data-theme=dark] .g-help code{background:#1c2a47;color:#e6ebf5}
[data-theme=dark] img.g-logo-img{background:#fff;border-radius:8px;padding:2px 6px}
[data-theme=dark] .leaflet-container{background:#111}
[data-theme=dark] .leaflet-bar a{background:#111c33;color:#e6ebf5;border-color:#2a3a5c}
[data-theme=dark] .leaflet-control-attribution{background:rgba(20,20,20,.8);color:#91a0bd}
[data-theme=dark] .g-stat .s{background:#0d1729}
.g-theme{background:transparent;border-color:rgba(255,255,255,.25);color:#cbd5e1;padding:4px 9px;border-radius:99px;font-size:14px;line-height:1}

[data-theme=dark] body{background-image:radial-gradient(rgba(122,162,255,.09) 1px,transparent 1px)}
[data-theme=dark] .g-card,[data-theme=dark] .g-box{box-shadow:0 0 0 1px rgba(122,162,255,.06),0 10px 30px rgba(0,0,0,.35)}
