:root{
  --brand:#12747C; --brand-2:#2BA88C; --brand-700:#0C5A61; --brand-050:#E6F2F2; --brand-100:#D3E9E9;
  --ink:#23343A; --muted:#6C7E84; --faint:#9AABB0;
  --page:#F5F6F7; --card:#FFFFFF; --line:#EAEDEE; --track:#EEECE6;
  --dark:#22343B; --green:#3AA76D; --red:#C25A43; --grey-bar:#D7D3CC; --amber:#B07d1f;
  --shadow:0 1px 2px rgba(20,50,55,.04),0 1px 3px rgba(20,50,55,.06);
  --font:"SF Arabic",system-ui,"Segoe UI","Noto Naskh Arabic","Geeza Pro",Tahoma,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--font);background:var(--page);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.6}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
::selection{background:var(--brand-100)}
a{color:inherit}

.layout{display:flex;min-height:100vh}

/* ---------- SIDEBAR ---------- */
.sidebar{flex:0 0 236px;background:var(--card);border-inline-end:1px solid var(--line);
  position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow-y:auto}
.brand{padding:20px 20px 14px;border-bottom:1px solid var(--line)}
.brand img{width:128px;height:auto;display:block}
.brand .tagline{margin-top:9px;font-size:.66rem;font-weight:700;letter-spacing:.12em;color:var(--faint)}
.nav{padding:10px 8px;flex:1}
.nav .grp{font-size:.6rem;font-weight:800;letter-spacing:.1em;color:var(--faint);padding:12px 14px 5px}
.nav a{display:flex;align-items:center;gap:10px;padding:10px 13px;margin:2px 6px;border-radius:11px;
  color:var(--muted);font-weight:600;font-size:.9rem;cursor:pointer;position:relative;text-decoration:none;transition:background .15s,color .15s}
.nav a:hover{background:var(--brand-050);color:var(--brand)}
.nav a.active{background:var(--brand-050);color:var(--brand);font-weight:700}
.nav a.active::before{content:"";position:absolute;inset-inline-start:-6px;top:50%;transform:translateY(-50%);
  width:4px;height:22px;border-radius:4px;background:var(--brand)}
.nav a .dot{width:7px;height:7px;border-radius:50%;background:var(--faint);flex:none}
.nav a:hover .dot,.nav a.active .dot{background:var(--brand)}
.powered{padding:14px 20px;border-top:1px solid var(--line);font-size:.7rem;color:var(--faint);line-height:1.7}
.powered b{color:var(--brand);font-weight:800}

/* ---------- MAIN ---------- */
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;gap:14px;padding:12px 22px;background:var(--card);
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;overflow-x:auto}
.topbar .tt{font-size:.82rem;font-weight:700;color:var(--muted)}
.tb-right{margin-inline-start:auto;display:flex;align-items:center;gap:12px;flex:none}
.live{display:inline-flex;align-items:center;gap:7px;font-size:.78rem;font-weight:700;color:var(--green)}
.live .dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(58,167,109,.18)}
.who{font-size:.8rem;font-weight:700;color:var(--ink)}
.btn{font-family:inherit;font-size:.82rem;font-weight:700;color:var(--ink);background:var(--card);
  border:1px solid var(--line);border-radius:9px;padding:8px 14px;cursor:pointer;transition:.15s}
.btn:hover{border-color:var(--brand);color:var(--brand)}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand-700);color:#fff}
.btn.sm{padding:6px 11px;font-size:.76rem}
.btn.danger:hover{border-color:var(--red);color:var(--red)}

.content{padding:24px 26px 60px;flex:1}
.page{display:none;animation:fade .25s ease}
.page.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

.ptitle{font-size:1.7rem;font-weight:800;color:var(--ink);margin:2px 0 0;letter-spacing:-.01em}
.pdesc{color:var(--muted);font-size:.94rem;margin:9px 0 0;max-width:82ch}

.note-bar{display:flex;gap:11px;align-items:flex-start;margin-top:16px;padding:12px 15px;
  background:#FBF4E2;border:1px solid #EBD9AE;border-radius:11px;font-size:.85rem;color:#6b5a2a}
.note-bar b{color:#A9791C}
.note-bar.verdict-pos{background:#E9F6EF;border-color:#BEE3CE;color:#215c3b}
.note-bar.verdict-neg{background:#FDECEA;border-color:#F0C7BD;color:#8a3527}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));gap:14px;margin-top:20px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:15px 17px;box-shadow:var(--shadow)}
.kpi .r{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:8px}
.kpi .val{font-size:2rem;font-weight:800;color:var(--brand);line-height:1;letter-spacing:-.02em}
.kpi .val small{font-size:.45em;color:var(--muted);font-weight:700}
.kpi .val.fill{color:var(--faint)}
.kpi .cap{margin-top:9px;font-size:.76rem;color:var(--muted);display:flex;align-items:center;gap:7px}
.kpi .cap::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--brand);flex:none}
.kpi .cap.fill::before{background:var(--faint)}

/* CARD */
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 22px;margin-top:16px;box-shadow:var(--shadow)}
.card > .ch{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.card h3{margin:0;font-size:1.06rem;font-weight:800;color:var(--ink)}
.card .cd{color:var(--muted);font-size:.88rem;margin:6px 0 16px;max-width:90ch}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:1050px){.grid2{grid-template-columns:1fr}}

/* badges (status/provenance) */
.badge{font-size:.6rem;font-weight:800;padding:3px 9px;border-radius:20px;white-space:nowrap;letter-spacing:.03em;display:inline-block}
.badge.verified{background:var(--brand-050);color:var(--brand)}
.badge.real{background:#E9F6EF;color:var(--green)}
.badge.estimated{background:#FBF2E1;color:var(--amber);border:1px dashed #E4C97A}
.badge.sample{background:#FBF2E1;color:var(--amber)}
.badge.fill{background:#F0EFEA;color:var(--faint);border:1px dashed #CFCEC6}

/* charts */
.chart{width:100%;direction:ltr}
.chart svg{width:100%;height:auto;display:block}

/* bar list */
.blist{display:flex;flex-direction:column;gap:9px;margin-top:4px}
.bi{display:grid;grid-template-columns:130px 1fr 68px;align-items:center;gap:12px}
.bi .bn{font-size:.86rem;font-weight:600;color:var(--ink)}
.bi .bt{height:17px;background:var(--track);border-radius:6px;overflow:hidden}
.bi .bf{height:100%;background:var(--brand);border-radius:6px}
.bi.on .bf{background:var(--brand-2)}
.bi .bv{font-size:.82rem;font-weight:700;color:var(--ink);text-align:left}
@media(max-width:560px){.bi{grid-template-columns:96px 1fr 56px}}

/* rank / generic table */
.ranktbl{width:100%;border-collapse:collapse}
.ranktbl th{text-align:right;font-size:.68rem;font-weight:800;letter-spacing:.05em;color:var(--faint);padding:8px 10px;border-bottom:1px solid var(--line)}
.ranktbl td{padding:11px 10px;border-bottom:1px solid var(--line);font-size:.9rem}
.ranktbl tr:last-child td{border-bottom:0}
.ranktbl .rk{font-weight:800;color:var(--brand);width:26px}
.ranktbl .rk.bad{color:var(--red)}

/* competitor table + filter */
.ctools{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 14px}
.cf{font-family:inherit;font-size:.82rem;font-weight:700;color:var(--muted);background:var(--card);
  border:1px solid var(--line);border-radius:20px;padding:7px 14px;cursor:pointer}
.cf:hover{border-color:var(--brand);color:var(--brand)}
.cf.active{background:var(--brand);border-color:var(--brand);color:#fff}
.twrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px}
table.ct{width:100%;border-collapse:collapse;min-width:760px;text-align:right}
table.ct thead th{background:#FAFBFB;font-size:.72rem;font-weight:800;color:var(--muted);padding:12px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
table.ct tbody td{padding:12px 14px;border-bottom:1px solid var(--line);font-size:.88rem;white-space:nowrap}
table.ct tbody tr:last-child td{border-bottom:0}
table.ct td.nm{font-weight:700}
table.ct tr.me td{background:var(--brand-050)}
table.ct tr.me td.nm{color:var(--brand)}
table.ct tr.me td.nm::before{content:"★ ";color:var(--brand)}
tr.hide{display:none}
.svc{display:flex;gap:4px;flex-wrap:wrap}
.svc span{font-size:.66rem;font-weight:600;color:var(--muted);background:#F2F4F4;border:1px solid var(--line);padding:2px 7px;border-radius:14px}
.svc span.hit{background:var(--brand);color:#fff;border-color:var(--brand)}
.gmaps{display:inline-flex;align-items:center;gap:5px;font-size:.78rem;font-weight:700;color:var(--brand);text-decoration:none;white-space:nowrap}
.gmaps:hover{text-decoration:underline}

/* daypart bars */
.dp{display:flex;align-items:flex-end;gap:10px;height:150px;margin-top:8px;padding-top:6px}
.dp .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;height:100%;justify-content:flex-end}
.dp .bar{width:100%;max-width:70px;background:var(--grey-bar);border-radius:7px 7px 0 0}
.dp .col.me .bar{background:var(--brand)}
.dp .lbl{font-size:.74rem;color:var(--muted);font-weight:600;text-align:center}

/* sentiment */
.sent{display:flex;flex-direction:column;gap:14px;margin-top:6px}
.sentrow{display:grid;grid-template-columns:120px 1fr 86px;align-items:center;gap:12px}
.sentrow .th{font-size:.88rem;font-weight:700}
.split{display:flex;height:22px;border-radius:6px;overflow:hidden}
.split .neg{background:var(--red);display:grid;place-items:center;color:#fff;font-size:.72rem;font-weight:700}
.split .pos{background:var(--green);display:grid;place-items:center;color:#fff;font-size:.72rem;font-weight:700}
.sentrow .mv{font-size:.8rem;color:var(--muted);text-align:left}
.sentlegend{display:flex;gap:16px;font-size:.76rem;color:var(--muted);margin-top:10px}
.sentlegend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-inline-end:5px;vertical-align:middle}

/* heatmap */
.heat{overflow-x:auto}
.hg{display:grid;grid-template-columns:auto repeat(5,1fr);gap:5px;min-width:520px}
.hg .hh{font-size:.72rem;color:var(--muted);font-weight:700;text-align:center;padding-bottom:2px}
.hg .rl{font-size:.76rem;color:var(--muted);font-weight:700;display:flex;align-items:center;padding-inline-end:8px}
.hc{height:28px;border-radius:6px;display:grid;place-items:center;font-size:.66rem;font-weight:700}

/* map */
.maprow{display:grid;grid-template-columns:1fr 268px;gap:14px}
@media(max-width:820px){.maprow{grid-template-columns:1fr}#map{height:340px !important}}
#map{height:470px;border-radius:12px;border:1px solid var(--line);background:#e9f0f0;z-index:1}
#maplist{height:470px;overflow-y:auto;border:1px solid var(--line);border-radius:12px;padding:6px}
@media(max-width:820px){#maplist{height:auto;max-height:280px}}
.mli{padding:9px 11px;border-radius:9px;cursor:pointer;border:1px solid transparent;transition:background .12s}
.mli:hover{background:var(--brand-050)}
.mli b{font-size:.85rem;color:var(--ink)} .mli.me b{color:var(--brand)}
.mli small{color:var(--muted);font-size:.74rem}
.leaflet-popup-content{font-family:var(--font) !important;direction:rtl;margin:12px 14px}
.maplegend{display:flex;gap:16px;margin-top:12px;font-size:.78rem;color:var(--muted)}
.maplegend i{width:11px;height:11px;border-radius:50%;display:inline-block;margin-inline-end:5px;vertical-align:middle;border:2px solid #fff;box-shadow:0 0 0 1px var(--line)}

/* recommendations */
.recs{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}
@media(max-width:820px){.recs{grid-template-columns:1fr}}
.rec{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 20px;box-shadow:var(--shadow);position:relative}
.rec .rnum{position:absolute;inset-inline-start:18px;top:18px;width:32px;height:32px;border-radius:9px;background:var(--brand-050);color:var(--brand);display:grid;place-items:center;font-weight:800}
.rec h4{margin:0;font-size:1.06rem;color:var(--ink);padding-inline-start:44px;min-height:32px;display:flex;align-items:center}
.rec .why{margin:13px 0 0;font-size:.85rem;color:var(--muted);line-height:1.65}
.rtag{font-size:.66rem;font-weight:800;padding:3px 10px;border-radius:20px}
.rtag.win{background:var(--brand-050);color:var(--brand)}
.rtag.bet{background:#FBF2E1;color:var(--amber)}
.rtag.mid{background:#F1F4F4;color:var(--muted)}

/* ---------- PIPELINE (kanban) ---------- */
.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(240px,1fr);gap:12px;margin-top:18px;overflow-x:auto;padding-bottom:8px;align-items:start}
.col-lead{background:#FAFBFB;border:1px solid var(--line);border-radius:14px;padding:12px;min-height:120px}
.col-lead.dragover{border-color:var(--brand);background:var(--brand-050)}
.col-lead .colh{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.col-lead .colh b{font-size:.86rem;color:var(--ink)}
.col-lead .colh .cnt{font-size:.7rem;font-weight:800;color:var(--muted);background:var(--card);border:1px solid var(--line);border-radius:20px;padding:2px 8px}
.lead{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:11px 12px;margin-bottom:9px;box-shadow:var(--shadow);cursor:grab}
.lead:active{cursor:grabbing}
.lead .lorg{font-size:.9rem;font-weight:700;color:var(--ink);display:flex;justify-content:space-between;gap:6px;align-items:baseline}
.lead .lmeta{font-size:.74rem;color:var(--muted);margin-top:5px;display:flex;flex-wrap:wrap;gap:8px}
.lead .lval{font-size:.78rem;font-weight:800;color:var(--brand)}
.lead .lact{margin-top:8px;display:flex;gap:6px}
.lead .lact button{font-size:.7rem;padding:4px 8px}

/* ---------- forms / modal ---------- */
.modal-bg{position:fixed;inset:0;background:rgba(20,40,45,.42);display:none;align-items:center;justify-content:center;z-index:60;padding:18px}
.modal-bg.on{display:flex}
.modal{background:var(--card);border-radius:16px;max-width:560px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 12px 40px rgba(20,50,55,.22)}
.modal .mh{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}
.modal .mh h3{margin:0;font-size:1.1rem}
.modal .mb{padding:18px 22px}
.modal .mf{padding:14px 22px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-start}
.field{margin-bottom:14px}
.field label{display:block;font-size:.72rem;font-weight:800;color:var(--muted);margin-bottom:6px}
.field input,.field select,.field textarea{font-family:inherit;font-size:.9rem;width:100%;padding:9px 12px;
  border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--ink);outline:none}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand)}
.field textarea{min-height:70px;resize:vertical}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:520px){.frow{grid-template-columns:1fr}}
.x{cursor:pointer;color:var(--faint);font-size:1.3rem;line-height:1;background:none;border:none}
.x:hover{color:var(--ink)}

.foot{margin-top:26px;padding-top:18px;border-top:1px solid var(--line);color:var(--faint);font-size:.76rem;line-height:1.9}
.foot a{color:var(--brand)}
.empty{padding:34px;text-align:center;color:var(--muted);font-size:.9rem}
.spin{padding:40px;text-align:center;color:var(--faint)}

@media(max-width:900px){
  .layout{flex-direction:column}
  .sidebar{flex:none;width:100%;height:auto;position:static;flex-direction:column;border-inline-end:0;border-bottom:1px solid var(--line)}
  .nav{display:flex;flex-wrap:wrap;padding:8px}
  .nav .grp{width:100%}
  .nav a{margin:3px;font-size:.85rem;padding:8px 11px}
  .nav a.active::before{display:none}
  .powered{display:none}
}

/* ---------- LOGIN ---------- */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:22px;
  background:radial-gradient(1200px 500px at 80% -10%,rgba(43,168,140,.14),transparent),var(--page)}
.login-card{background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:0 10px 40px rgba(20,50,55,.10);
  width:100%;max-width:392px;padding:34px 32px}
.login-card img{width:150px;display:block;margin:0 auto 6px}
.login-card .lt{text-align:center;color:var(--muted);font-size:.82rem;font-weight:700;margin-bottom:22px}
.login-card .err{background:#FDECEA;border:1px solid #F0C7BD;color:#8a3527;font-size:.82rem;font-weight:700;
  padding:10px 13px;border-radius:10px;margin-bottom:14px;display:none}
.login-card .err.on{display:block}
.login-card .hint{text-align:center;color:var(--faint);font-size:.72rem;margin-top:16px;line-height:1.8}
