:root{
  --bg:#080d14; --bg2:#0b121b; --panel:#101824; --panel2:#131e2b; --panel3:#172333;
  --text:#e9f1fb; --muted:#94a6bb; --muted2:#65778c; --line:rgba(154,178,205,.14);
  --accent:#8fc7ff; --accent2:#9ef0c4; --good:#9ef0c4; --bad:#ff9b9b; --warn:#ffdc8a;
  --radius:16px; --shadow:0 18px 50px rgba(0,0,0,.28);
}
*{box-sizing:border-box}html{background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}body{margin:0;min-height:100vh;background:radial-gradient(circle at 15% -5%,rgba(143,199,255,.15),transparent 32%),radial-gradient(circle at 90% 5%,rgba(158,240,196,.10),transparent 28%),linear-gradient(180deg,#080d14,#0b1119 45%,#080d14)}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1{font-size:clamp(26px,3vw,42px);letter-spacing:-.045em;line-height:.98}h2{font-size:18px;letter-spacing:-.025em}h3{font-size:16px;letter-spacing:-.02em}.subtle{color:var(--muted);font-size:13px;line-height:1.45}.eyebrow{color:var(--accent2);font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:900;margin-bottom:8px}.layout{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}.side{position:sticky;top:0;height:100vh;padding:16px;border-right:1px solid var(--line);background:rgba(9,14,22,.84);backdrop-filter:blur(20px);display:flex;flex-direction:column;gap:16px}.brand{height:44px;display:flex;align-items:center;gap:10px;font-weight:900;font-size:16px}.brand-mark{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:10px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#07111a;font-size:12px;box-shadow:0 10px 24px rgba(143,199,255,.18)}.side nav{display:grid;gap:5px}.side nav a{height:38px;border-radius:12px;padding:0 12px;display:flex;align-items:center;color:var(--muted);font-weight:750;font-size:14px;border:1px solid transparent}.side nav a:hover{background:rgba(255,255,255,.04);color:var(--text)}.side nav a.active{background:rgba(143,199,255,.12);border-color:rgba(143,199,255,.22);color:#dcecff}.user{margin-top:auto;border:1px solid var(--line);background:rgba(255,255,255,.03);border-radius:14px;padding:11px;display:grid;gap:5px}.user-label{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted2);font-weight:900}.logout{color:var(--accent);font-size:12px;font-weight:800}.main{padding:20px;max-width:1540px;width:100%;margin:0 auto}.top,.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.page-hero{border:1px solid var(--line);border-radius:22px;padding:18px 20px;background:linear-gradient(135deg,rgba(143,199,255,.10),rgba(158,240,196,.045));box-shadow:var(--shadow)}.compact-hero{padding:16px 18px}.hero-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:14px}.card,.panel{background:linear-gradient(180deg,var(--panel),#0d141e);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 34px rgba(0,0,0,.18)}.card{padding:14px;min-height:86px}.metric-card{display:grid;align-content:space-between;gap:10px}.metric-card span{font-size:11px;text-transform:uppercase;letter-spacing:.10em;color:var(--muted2);font-weight:900}.metric-card b{font-size:26px;line-height:.95;letter-spacing:-.045em}.panel{padding:15px;margin-bottom:14px}.panel.compact{padding:13px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.form{display:grid;gap:12px}.form.row,.filter-form,.user-create{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:10px;align-items:end}label{display:grid;gap:6px;color:var(--muted);font-size:12px;font-weight:850}input,textarea,select{width:100%;border:1px solid var(--line);background:#0a1018;color:var(--text);border-radius:12px;padding:10px 12px;outline:none;font:inherit}textarea{min-height:120px;resize:vertical}input:focus,textarea:focus,select:focus{border-color:rgba(143,199,255,.70);box-shadow:0 0 0 3px rgba(143,199,255,.10)}.button,button,.btn{border:1px solid transparent;border-radius:12px;min-height:38px;padding:9px 13px;font-weight:850;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;color:#07111a;background:linear-gradient(135deg,var(--accent),var(--accent2));box-shadow:0 12px 26px rgba(143,199,255,.12)}.button:hover,button:hover,.btn:hover{transform:translateY(-1px)}.secondary{background:rgba(143,199,255,.12);border-color:rgba(143,199,255,.20);color:#bfe0ff;box-shadow:none}.ghost{background:rgba(255,255,255,.035);border-color:var(--line);color:var(--muted);box-shadow:none}.danger,button.danger{background:rgba(255,155,155,.13);border-color:rgba(255,155,155,.26);color:#ffcaca;box-shadow:none}.small-button{min-height:30px;padding:6px 10px;font-size:12px}.periods{display:flex;gap:7px;flex-wrap:wrap}.periods a{min-height:32px;border:1px solid var(--line);border-radius:999px;padding:7px 11px;color:var(--muted);font-size:12px;font-weight:850;background:rgba(255,255,255,.025)}.periods a.active{background:rgba(143,199,255,.15);border-color:rgba(143,199,255,.30);color:#d9ecff}.search{max-width:520px}.toolbar{display:flex;gap:10px;margin-bottom:12px}.pill-row{display:flex;gap:8px;flex-wrap:wrap}.pill,.status{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:5px 8px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;font-weight:900;color:var(--muted)}.ok{color:var(--good);background:rgba(158,240,196,.08);border-color:rgba(158,240,196,.20)}.off,.bad{color:var(--bad)}.warn{color:var(--warn)}.muted{color:var(--muted)}.muted-pill{background:rgba(255,255,255,.035)}.site-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.site-card{background:linear-gradient(180deg,var(--panel2),#101823);border:1px solid var(--line);border-radius:16px;padding:13px;display:grid;gap:11px;min-width:0}.site-card:hover{border-color:rgba(143,199,255,.30);box-shadow:0 16px 36px rgba(0,0,0,.22)}.site-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.site-title{min-width:0}.site-title h3,.site-title p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-title p{margin-top:3px;color:var(--muted);font-size:12px}.site-key{display:grid;gap:5px;background:#0a1018;border:1px solid var(--line);border-radius:12px;padding:9px}.site-key span{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted2);font-weight:900}.site-key code{font-size:11px;color:#dcecff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-actions{display:flex;gap:8px;flex-wrap:wrap}.site-actions .button{flex:1;min-width:96px}.table-wrap{overflow:auto}table{width:100%;border-collapse:separate;border-spacing:0}th,td{padding:10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-size:13px}th{color:var(--muted2);text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:900}td{color:#dce7f5}tr:hover td{background:rgba(255,255,255,.018)}code,pre{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:#cde0f7;word-break:break-word}.auth-card{max-width:430px;margin:9vh auto;padding:22px;border:1px solid var(--line);border-radius:22px;background:linear-gradient(180deg,var(--panel),#0d141e)}.auth-card h1{font-size:30px;margin-bottom:10px}.auth-card p{margin-bottom:16px}.chart-panel{overflow:hidden}.line-chart{width:100%;height:auto;min-height:230px;display:block}.chart-grid{stroke:rgba(148,166,188,.18);stroke-width:1}.chart-axis,.chart-label{fill:var(--muted2);font-size:10px}.chart-label{text-anchor:middle}.chart-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.line-0{stroke:#8fc7ff;fill:#8fc7ff}.line-1{stroke:#9ef0c4;fill:#9ef0c4}.line-2{stroke:#ffdc8a;fill:#ffdc8a}.muted-line{stroke:rgba(143,199,255,.32)}.chart-legend{font-size:11px;font-weight:900}.empty-chart-text{fill:var(--muted);font-size:18px;font-weight:850;text-anchor:middle}.empty{border:1px dashed var(--line);border-radius:14px;padding:18px;color:var(--muted);text-align:center;background:rgba(255,255,255,.018)}.bar-list{display:grid;gap:10px}.bar-row{display:grid;gap:6px}.bar-meta{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:12px}.bar-meta span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-meta b{color:var(--text)}.bar-track{height:8px;border-radius:999px;background:#0a1018;border:1px solid var(--line);overflow:hidden}.bar-track i{height:100%;display:block;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:999px}.route-list,.journey-list{display:grid;gap:10px}.route-card,.journey-card{border:1px solid var(--line);background:linear-gradient(180deg,var(--panel2),#101823);border-radius:15px;padding:12px;display:grid;gap:10px}.route-card-top{display:flex;justify-content:space-between;gap:10px}.route{display:flex;gap:7px;flex-wrap:wrap}.route span{position:relative;border:1px solid var(--line);background:#0a1018;border-radius:999px;padding:6px 10px;font-size:12px}.route span:not(:last-child)::after{content:'→';position:absolute;right:-12px;color:var(--muted2);font-weight:900}.journey-meta,.journey-foot{display:flex;flex-wrap:wrap;gap:8px;color:var(--muted);font-size:12px}.journey-meta b{color:var(--text)}.journey-meta span{border:1px solid var(--line);border-radius:999px;padding:4px 8px;background:rgba(255,255,255,.025)}.funnel{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;align-items:end;min-height:190px}.funnel-step{display:grid;justify-items:center;gap:6px;text-align:center;color:var(--muted);font-size:11px}.funnel-step b{color:var(--text);font-size:20px}.funnel-bar{width:100%;max-width:54px;border-radius:14px 14px 7px 7px;background:linear-gradient(180deg,var(--accent2),var(--accent))}.notice{border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:12px}.good-notice{border-color:rgba(158,240,196,.25);background:rgba(158,240,196,.08);color:#caf7d8}.bad-notice{border-color:rgba(255,155,155,.30);background:rgba(255,155,155,.10);color:#ffd0d0}.warn-notice{border-color:rgba(255,220,138,.30);background:rgba(255,220,138,.10);color:#ffe8ad}.upload-form{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end}.package-list,.backup-list{display:grid;gap:10px}.package-card,.backup-card{border:1px solid var(--line);background:linear-gradient(180deg,var(--panel2),#101823);border-radius:16px;padding:13px;display:grid;gap:10px}.package-main,.backup-card{display:flex;align-items:center;justify-content:space-between;gap:12px}.package-main h3{font-size:22px}.package-meta{display:flex;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:12px}.inline-form{display:flex;justify-content:flex-end}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:#080d14}::-webkit-scrollbar-thumb{background:#34475c;border-radius:999px;border:2px solid #080d14}@media(max-width:1160px){.grid3{grid-template-columns:1fr 1fr}.grid2{grid-template-columns:1fr}.form.row,.filter-form,.user-create{grid-template-columns:1fr 1fr}.funnel{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.layout{display:block}.side{position:relative;height:auto}.main{padding:12px}.top,.section-head{display:grid}.cards,.grid3,.form.row,.filter-form,.user-create,.upload-form{grid-template-columns:1fr}.page-hero{padding:14px}.panel{padding:12px}.funnel{grid-template-columns:repeat(2,1fr)}.metric-card b{font-size:24px}.site-grid{grid-template-columns:1fr}}

/* 0.4.0 chart polish: calm UI, no neon arcade glow */
.chart-card{padding:15px 16px 12px}
.chart-head{align-items:center;margin-bottom:8px}
.chart-legend-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:flex-end}
.legend-item{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:850;color:#9eabba;letter-spacing:.02em}
.legend-item i{width:18px;height:4px;border-radius:999px;background:currentColor;box-shadow:none}
.legend-item.line-0{color:#7fb5e8}.legend-item.line-1{color:#76c99d}.legend-item.line-2{color:#d6b35f}
.traffic-chart{width:100%;height:auto;min-height:260px;display:block}
.chart-plot-bg{fill:rgba(4,9,15,.34);stroke:rgba(148,166,188,.09);stroke-width:1}
.chart-grid{stroke:rgba(148,166,188,.14);stroke-width:1}
.chart-axis{fill:#8392a5;font-size:10px;font-weight:700}
.chart-label{fill:#9aa7b8;font-size:10px;text-anchor:middle;font-weight:700}
.chart-area{opacity:.08}
.chart-line{fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;filter:none}
.chart-dot{stroke:#0b1119;stroke-width:2;filter:none}
.chart-bar{fill:currentColor;opacity:.62;filter:none}
.chart-bar-group.line-0{color:#7fb5e8}.chart-bar-group.line-1{color:#76c99d}.chart-bar-group.line-2{color:#d6b35f}
.chart-value-bg{fill:#0b1119;stroke:rgba(148,166,188,.20);stroke-width:1}
.chart-value{fill:#f0f5fb;font-size:13px;font-weight:900;text-anchor:middle;paint-order:stroke;stroke:#0b1119;stroke-width:2px;stroke-linejoin:round}
.chart-single-label{fill:#9aa7b8;font-weight:800}
.empty-wave{fill:none;stroke:#7fb5e8;stroke-width:3;stroke-linecap:round;opacity:.20;filter:none}
.empty-chart-text{fill:#9aa7b8;font-size:18px;font-weight:800;text-anchor:middle}
.single-point-chart .chart-label{text-transform:none}
.line-0.chart-area{fill:#7fb5e8}.line-1.chart-area{fill:#76c99d}.line-2.chart-area{fill:#d6b35f}
.line-0.chart-line,.line-0.chart-dot{stroke:#7fb5e8}.line-1.chart-line,.line-1.chart-dot{stroke:#76c99d}.line-2.chart-line,.line-2.chart-dot{stroke:#d6b35f}
@media(max-width:760px){.chart-head{display:grid}.chart-legend-row{justify-content:flex-start}.traffic-chart{min-height:230px}}

/* 0.4.0 global calm-down: no glowing arcade UI */
:root{
  --accent:#7fb5e8;
  --accent2:#76c99d;
  --shadow:none;
}
body{
  background:linear-gradient(180deg,#080d14,#0a1018 52%,#080d14) !important;
}
.brand-mark,.button,button,.btn,.page-hero,.card,.panel,.site-card:hover{
  box-shadow:none !important;
}
.brand-mark,.button,button,.btn{
  background:#8ec3f0;
}
.page-hero{
  background:#101824 !important;
}
.secondary,.periods a.active,.side nav a.active{
  background:rgba(127,181,232,.12) !important;
  border-color:rgba(127,181,232,.22) !important;
}
.chart-value-bg{
  fill:#0a1018;
  stroke:rgba(180,195,215,.28);
}
.chart-value{
  fill:#f4f7fb;
  stroke:#0a1018;
  stroke-width:3px;
}
.chart-bar{opacity:.52}
.chart-area{opacity:.045}
.chart-line{stroke-width:2.2}
.chart-dot{r:3}

/* 0.4.1 geo map */
.geo-panel{overflow:hidden}
.geo-map{width:100%;height:auto;min-height:340px;display:block;border:1px solid var(--line);border-radius:24px;background:#07101a}
.map-ocean{fill:#081320}
.map-land{fill:#152334;stroke:rgba(160,180,205,.13);stroke-width:1.2}
.map-land.faint{opacity:.42}
.map-grid line{stroke:rgba(150,170,195,.10);stroke-width:1}
.map-pin path{fill:#8ec3f0;stroke:#06101a;stroke-width:2;filter:none}
.map-pin circle{fill:#06101a;stroke:rgba(255,255,255,.65);stroke-width:1.3}
.map-pin.pin-1 path{fill:#76c99d}.map-pin.pin-2 path{fill:#d6b35f}.map-pin.pin-3 path{fill:#a8b4ff}.map-pin.pin-4 path{fill:#e8a87f}
.map-empty,.map-empty-sub{text-anchor:middle;fill:#a7b5c7;font-weight:850}.map-empty{font-size:22px}.map-empty-sub{font-size:13px;fill:#7f8ea2}
@media(max-width:760px){.geo-map{min-height:260px}.map-empty{font-size:18px}}

/* 0.4.2: readable form funnel, replacing the old glowing vertical bars. */
.funnel-panel{overflow:hidden}.funnel-summary{min-width:128px;text-align:right;border:1px solid var(--line);background:rgba(255,255,255,.025);border-radius:14px;padding:9px 11px}.funnel-summary b{display:block;font-size:22px;letter-spacing:-.04em;color:var(--text);line-height:1}.funnel-summary span{display:block;margin-top:4px;color:var(--muted);font-size:11px;font-weight:800}.funnel-v2{display:grid;gap:9px}.funnel-row{display:grid;grid-template-columns:minmax(190px,.72fr) minmax(180px,1fr) minmax(148px,.42fr);gap:12px;align-items:center;border:1px solid rgba(148,166,188,.14);border-radius:14px;background:rgba(255,255,255,.022);padding:10px 11px}.funnel-row:hover{border-color:rgba(143,199,255,.22);background:rgba(255,255,255,.032)}.funnel-row.is-zero{opacity:.68}.funnel-row.is-zero .funnel-meter i{display:none}.funnel-label{display:flex;align-items:center;gap:10px;min-width:0}.funnel-label span{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:10px;border:1px solid var(--line);background:#0a1018;color:var(--muted2);font-size:11px;font-weight:950}.funnel-label b{font-size:13px;color:#dce7f5;line-height:1.2;min-width:0}.funnel-meter{height:12px;border:1px solid rgba(148,166,188,.16);background:#0a1018;border-radius:999px;overflow:hidden}.funnel-meter i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,rgba(143,199,255,.74),rgba(158,240,196,.74));box-shadow:none}.funnel-numbers{text-align:right;display:grid;gap:3px}.funnel-numbers strong{font-size:21px;line-height:1;color:var(--text);letter-spacing:-.04em}.funnel-numbers small{color:var(--muted2);font-size:10px;font-weight:800;line-height:1.25}.funnel-row.is-zero .funnel-numbers strong,.funnel-row.is-zero .funnel-label b{color:var(--muted)}@media(max-width:860px){.funnel-row{grid-template-columns:1fr;gap:8px}.funnel-numbers{text-align:left}.funnel-summary{text-align:left}}

/* 0.4.3: real built-in world map instead of ellipse placeholders. */
.geo-map{width:100%;height:auto;min-height:380px;display:block;border:1px solid var(--line);border-radius:22px;background:#07101a}
.map-ocean{fill:#07111d}
.map-grid line{stroke:rgba(148,166,188,.13);stroke-width:1}
.map-world .map-land{fill:#15283b;stroke:rgba(174,197,224,.23);stroke-width:1.1;vector-effect:non-scaling-stroke}
.map-world .antarctica{opacity:.55}
.map-world .greenland{opacity:.82}
.map-pin-pulse{fill:rgba(127,181,232,.12);stroke:rgba(127,181,232,.28);stroke-width:1.2;vector-effect:non-scaling-stroke}
.map-pin-dot{fill:#7fb5e8;stroke:#08111d;stroke-width:2.4;vector-effect:non-scaling-stroke}
.map-pin-count{fill:#06101a;font-size:10px;font-weight:950;text-anchor:middle;dominant-baseline:middle;pointer-events:none}
.map-pin.pin-1 .map-pin-dot{fill:#76c99d}.map-pin.pin-1 .map-pin-pulse{fill:rgba(118,201,157,.12);stroke:rgba(118,201,157,.26)}
.map-pin.pin-2 .map-pin-dot{fill:#d6b35f}.map-pin.pin-2 .map-pin-pulse{fill:rgba(214,179,95,.12);stroke:rgba(214,179,95,.26)}
.map-pin.pin-3 .map-pin-dot{fill:#a8b4ff}.map-pin.pin-3 .map-pin-pulse{fill:rgba(168,180,255,.12);stroke:rgba(168,180,255,.26)}
.map-pin.pin-4 .map-pin-dot{fill:#e8a87f}.map-pin.pin-4 .map-pin-pulse{fill:rgba(232,168,127,.12);stroke:rgba(232,168,127,.26)}
.map-empty,.map-empty-sub{text-anchor:middle;fill:#a7b5c7;font-weight:850}.map-empty{font-size:22px}.map-empty-sub{font-size:13px;fill:#7f8ea2}
@media(max-width:760px){.geo-map{min-height:260px}.map-empty{font-size:18px}}

/* 0.4.5: geo dashboard with real local map asset and usable side statistics. */
.geo-panel-v2{overflow:hidden}.geo-metrics{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:10px;margin:14px 0 16px}.geo-metrics>div{border:1px solid rgba(148,166,188,.14);background:rgba(255,255,255,.025);border-radius:14px;padding:10px 12px}.geo-metrics span{display:block;color:var(--muted2);font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.geo-metrics b{display:block;color:var(--text);font-size:22px;line-height:1.1;margin-top:5px;letter-spacing:-.04em}.geo-metrics .small-value{font-size:12px;letter-spacing:0;color:var(--muted)}.geo-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:stretch}.geo-map-wrap{position:relative;border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,#07111d,#08131f);overflow:hidden;min-height:360px}.geo-map-img{display:block;width:100%;height:auto;min-height:360px;object-fit:contain;opacity:.96;filter:drop-shadow(0 18px 34px rgba(0,0,0,.18))}.geo-pins-layer{position:absolute;inset:0}.geo-pin{position:absolute;transform:translate(-50%,-50%);width:var(--pin-size);height:var(--pin-size);min-width:16px;min-height:16px;border-radius:999px;border:2px solid #07111d;background:#8fc7ff;color:#07111d;display:grid;place-items:center;font-size:9px;font-weight:950;box-shadow:0 0 0 4px rgba(143,199,255,.14);cursor:help;padding:0}.geo-pin span{line-height:1;max-width:36px;overflow:hidden;text-overflow:ellipsis}.geo-pin.pin-1{background:#8ee3b0;box-shadow:0 0 0 4px rgba(142,227,176,.12)}.geo-pin.pin-2{background:#e1c36e;box-shadow:0 0 0 4px rgba(225,195,110,.12)}.geo-pin.pin-3{background:#b9c1ff;box-shadow:0 0 0 4px rgba(185,193,255,.12)}.geo-pin.pin-4{background:#e9aa84;box-shadow:0 0 0 4px rgba(233,170,132,.12)}.geo-pin.pin-5{background:#c6f0ff;box-shadow:0 0 0 4px rgba(198,240,255,.12)}.geo-map-empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(520px,80%);text-align:center;border:1px solid rgba(148,166,188,.16);background:rgba(7,17,29,.78);backdrop-filter:blur(8px);border-radius:18px;padding:18px}.geo-map-empty b{display:block;font-size:20px;color:var(--text);margin-bottom:5px}.geo-map-empty span{display:block;color:var(--muted);line-height:1.45}.geo-sidebar{display:grid;gap:12px}.geo-side-block{border:1px solid rgba(148,166,188,.14);background:rgba(255,255,255,.025);border-radius:16px;padding:13px}.geo-side-block h3{font-size:13px;margin:0 0 10px;color:var(--text)}.geo-side-block p{font-size:12px;line-height:1.45;color:var(--muted);margin:0}.geo-mini-list{display:grid;gap:8px}.geo-mini-list>div{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid rgba(148,166,188,.08);padding-bottom:7px}.geo-mini-list>div:last-child{border-bottom:0;padding-bottom:0}.geo-mini-list span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px}.geo-mini-list b,.geo-large{color:var(--text);font-size:18px}.empty-mini{color:var(--muted2)!important}.geo-large{display:block;margin-top:8px;font-size:28px;letter-spacing:-.05em}@media(max-width:1100px){.geo-layout{grid-template-columns:1fr}.geo-sidebar{grid-template-columns:repeat(3,1fr)}.geo-metrics{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.geo-metrics,.geo-sidebar{grid-template-columns:1fr}.geo-map-wrap,.geo-map-img{min-height:260px}.geo-pin{font-size:8px}}

.source-strip {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
  padding: 10px 14px;
  margin: 10px 0 16px;
  border: 1px solid rgba(140, 183, 224, .22);
  border-radius: 14px;
  background: rgba(10, 20, 32, .56);
  color: var(--muted, #9fb6cc);
  font-size: 14px;
}
.source-strip b {
  color: var(--text, #eef6ff);
}
.source-strip span {
  opacity: .85;
}

/* 0.4.7: auth/login page is a centered product screen, not a sidebar grid artifact. */
.auth-page{min-height:100vh;overflow:hidden;background:radial-gradient(circle at 22% 12%,rgba(143,199,255,.16),transparent 30%),radial-gradient(circle at 82% 20%,rgba(158,240,196,.10),transparent 28%),linear-gradient(180deg,#070c13,#0a111a 55%,#070c13)}
.auth-page .layout{display:grid;grid-template-columns:1fr;place-items:center;min-height:100vh;padding:clamp(18px,4vw,56px)}
.auth-page .main{width:100%;max-width:none;margin:0;padding:0;display:grid;place-items:center}
.auth-page .auth-card{width:min(440px,100%);max-width:440px;margin:0;padding:26px;border-radius:24px;background:linear-gradient(180deg,rgba(17,26,38,.96),rgba(12,18,27,.98));box-shadow:0 30px 90px rgba(0,0,0,.36);border-color:rgba(143,199,255,.18)}
.auth-logo{display:flex;align-items:center;gap:10px;margin-bottom:18px;font-weight:950;font-size:18px;color:var(--text)}
.auth-card h1{font-size:clamp(30px,4vw,42px);line-height:.95;margin-bottom:8px;letter-spacing:-.055em}
.auth-copy{margin-bottom:18px;max-width:34em}.auth-form{gap:14px}.auth-form label{font-size:12px;letter-spacing:.02em}.auth-form input{height:46px;border-radius:14px;background:#edf4ff;color:#07111a;border-color:rgba(143,199,255,.45);font-weight:850}.auth-form input:focus{box-shadow:0 0 0 4px rgba(143,199,255,.18);border-color:#9ccfff}.auth-form button{height:46px;border-radius:14px;width:100%;font-size:15px}.auth-card .bad{margin:12px 0 16px;color:#ffd0d0}.auth-card .button{width:100%;height:44px}
@media(max-width:620px){.auth-page .layout{padding:14px}.auth-page .auth-card{padding:20px;border-radius:20px}.auth-card h1{font-size:32px}}
/* 0.4.9: form funnel outcome rows are derived statuses, not sequential steps. */
.funnel-row.is-outcome{background:rgba(255,255,255,.016)}
.funnel-row.is-outcome .funnel-label span{border-style:dashed;color:var(--muted)}
.funnel-row.is-outcome .funnel-meter i{background:linear-gradient(90deg,rgba(148,166,188,.42),rgba(148,166,188,.62))}
.funnel-row.is-outcome:not(.is-zero){border-color:rgba(148,166,188,.18)}

.lead-panel .mini-stats.lead-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
  margin: 14px 0;
}
.lead-panel .mini-stats.lead-stats div {
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(8, 16, 28, .42);
}
.warn-box {
  display: grid;
  gap: 4px;
  margin: 14px 0;
  padding: 14px 16px;
  border-radius: 16px;
  border: 1px solid rgba(232, 191, 107, .34);
  background: rgba(232, 191, 107, .08);
}
.warn-box b { color: var(--text); }
.warn-box span { color: var(--muted); line-height: 1.45; }

/* 0.5.1: CRM delivery panel is a human dashboard, not raw technical counters. */
.lead-panel-v2 .lead-head{align-items:center}
.lead-delivery{min-width:142px;border:1px solid rgba(143,199,255,.18);border-radius:16px;padding:12px 14px;text-align:right;background:rgba(143,199,255,.055)}
.lead-delivery b{display:block;font-size:30px;line-height:.95;color:var(--text);letter-spacing:-.05em}.lead-delivery span{display:block;margin-top:4px;color:var(--muted);font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.lead-health{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid rgba(148,166,188,.16);border-radius:16px;padding:12px 14px;margin:12px 0;background:rgba(255,255,255,.025)}
.lead-health b{display:block;color:var(--text);font-size:15px}.lead-health span{display:block;color:var(--muted);font-size:12px;line-height:1.35;margin-top:3px}.lead-health.ok{border-color:rgba(158,240,196,.22);background:rgba(158,240,196,.055)}.lead-health.warn{border-color:rgba(255,220,138,.30);background:rgba(255,220,138,.065)}
.lead-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:12px 0}.lead-card{border:1px solid var(--line);border-radius:16px;padding:13px 14px;background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.018));min-height:80px}.lead-card span{display:block;color:var(--muted);font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.lead-card b{display:block;margin-top:10px;color:var(--text);font-size:28px;line-height:.9;letter-spacing:-.05em}.lead-card.delivered{border-color:rgba(158,240,196,.24);background:rgba(158,240,196,.045)}.lead-card.crm-error,.lead-card.server-error{border-color:rgba(255,155,155,.22);background:rgba(255,155,155,.04)}.lead-card.bot,.lead-card.validation{border-color:rgba(255,220,138,.20);background:rgba(255,220,138,.035)}
.lead-diagnosis{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin:12px 0}.lead-diagnosis>div{border:1px solid rgba(255,220,138,.28);border-radius:16px;padding:14px;background:rgba(255,220,138,.06)}.lead-diagnosis b{font-size:28px;color:var(--warn);line-height:1}.lead-diagnosis span{display:block;margin-top:4px;color:var(--text);font-weight:900}.lead-diagnosis p{margin-top:6px;color:var(--muted);font-size:12px;line-height:1.45}
.connector-panel .connector-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.connector-steps>div{border:1px solid var(--line);border-radius:16px;padding:13px;background:rgba(255,255,255,.025);display:grid;gap:8px}.connector-steps b{width:28px;height:28px;border-radius:10px;display:grid;place-items:center;background:rgba(143,199,255,.14);color:#cfe8ff}.connector-steps span{font-weight:900;color:var(--text)}.connector-steps code{display:block;background:#07101a;border:1px solid rgba(148,166,188,.14);border-radius:12px;padding:9px;color:#cde0f7;font-size:11px;line-height:1.5;white-space:normal}
@media(max-width:900px){.connector-panel .connector-steps{grid-template-columns:1fr}.lead-head{display:grid}.lead-delivery{text-align:left}}

/* 0.5.2: CRM metrics are one aligned KPI strip, not separate floating cards. */
.lead-panel-v3 .lead-head{align-items:flex-start;gap:18px}
.lead-delivery-inline{min-width:150px;text-align:right;display:flex;flex-direction:column;justify-content:flex-start;gap:5px;padding-top:2px}
.lead-delivery-inline span{font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.lead-delivery-inline b{font-size:34px;line-height:.95;letter-spacing:-.06em;color:var(--text)}
.lead-kpi-strip{display:grid;grid-template-columns:repeat(9,minmax(86px,1fr));gap:0;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:rgba(8,16,28,.36);margin:14px 0}
.lead-kpi{min-height:92px;padding:13px 14px;display:flex;flex-direction:column;justify-content:space-between;border-right:1px solid rgba(148,166,188,.13);background:linear-gradient(180deg,rgba(255,255,255,.026),rgba(255,255,255,.012))}
.lead-kpi:last-child{border-right:0}.lead-kpi span{min-height:30px;display:block;color:var(--muted);font-size:11px;line-height:1.25;font-weight:900;letter-spacing:.055em;text-transform:uppercase}.lead-kpi b{display:block;color:var(--text);font-size:clamp(26px,2.3vw,38px);line-height:.9;letter-spacing:-.065em;font-variant-numeric:tabular-nums}.lead-kpi.delivered b{color:#b9f6d3}.lead-kpi.not-delivered b,.lead-kpi.crm-error b,.lead-kpi.server-error b{color:#ffd1d1}.lead-kpi.bot b,.lead-kpi.validation b{color:#ffe0a1}
.lead-connector-row{display:flex;justify-content:space-between;align-items:center;gap:14px;border:1px solid rgba(148,166,188,.16);border-radius:16px;padding:12px 14px;background:rgba(255,255,255,.022);margin:12px 0}.lead-connector-row b{display:block;color:var(--text);font-size:15px}.lead-connector-row span{display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.35}.lead-connector-row.active{border-color:rgba(158,240,196,.20);background:rgba(158,240,196,.045)}.lead-connector-row.missing{border-color:rgba(255,220,138,.26);background:rgba(255,220,138,.055)}.compact-diagnosis{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.connector-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0}.connector-summary>div{border:1px solid var(--line);border-radius:16px;padding:14px;background:rgba(255,255,255,.02);display:flex;flex-direction:column;justify-content:space-between;min-height:82px}.connector-summary span{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:900}.connector-summary b{font-size:32px;line-height:.95;letter-spacing:-.06em;color:var(--text);font-variant-numeric:tabular-nums}.actions-row{display:flex;gap:10px;flex-wrap:wrap}.actions-row .button{min-width:180px}
@media(max-width:1320px){.lead-kpi-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.lead-kpi{border-bottom:1px solid rgba(148,166,188,.13)}.lead-kpi:nth-child(3n){border-right:0}}
@media(max-width:760px){.lead-kpi-strip,.connector-summary{grid-template-columns:1fr}.lead-kpi{border-right:0}.lead-delivery-inline{text-align:left}.lead-connector-row{display:grid}.actions-row .button{width:100%}}
/* 0.5.3: connector can be installed but still waiting for fresh server-side form events. */
.lead-connector-row.waiting{border-color:rgba(143,199,255,.22);background:rgba(143,199,255,.045)}
