:root{
  --bg:#EEF2F5; --surface:#FFFFFF; --ink:#17262E; --muted:#5A6B75; --line:#D3DCE2;
  --accent:#2C5B87; --accent-ink:#FFFFFF; --soft:#E3ECF4; --danger:#A33A3A; --ok:#2B6B4F;
  --radius:10px;
  --font:Vazirmatn,"Vazir","IRANSans",Tahoma,"Segoe UI",system-ui,sans-serif;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#0F181D; --surface:#17232A; --ink:#E4ECF0; --muted:#97A8B2; --line:#2A3B44;
    --accent:#7FB0DC; --accent-ink:#0F181D; --soft:#1E3140; --danger:#E08585; --ok:#7CC9A3;
  }
}
:root[data-theme="dark"]{
  --bg:#0F181D; --surface:#17232A; --ink:#E4ECF0; --muted:#97A8B2; --line:#2A3B44;
  --accent:#7FB0DC; --accent-ink:#0F181D; --soft:#1E3140; --danger:#E08585; --ok:#7CC9A3;
}
*{box-sizing:border-box}
html{font-size:16px}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);line-height:1.8}
a{color:var(--accent)}
h1{font-size:1.6rem;margin:.2em 0 .6em}
h2{font-size:1.2rem;margin:1.4em 0 .4em}
h3{font-size:1rem;margin:0}
main{max-width:1100px;margin:0 auto;padding:1.2rem}
.muted{color:var(--muted)} .small{font-size:.85rem}

.top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;
  background:var(--surface);border-bottom:1px solid var(--line);padding:.6rem 1.2rem}
.brand{font-weight:700;text-decoration:none;color:var(--ink);font-size:1.05rem}
.top nav{display:flex;flex-wrap:wrap;align-items:center;gap:.9rem}
.top nav a{text-decoration:none;color:var(--ink)} .top nav a:hover{color:var(--accent)}
form.inline{display:inline;margin:0}

button,.btn{font:inherit;cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink);
  padding:.45rem 1rem;border-radius:var(--radius);text-decoration:none;display:inline-block}
button:hover,.btn:hover{border-color:var(--accent)}
button.primary,.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
button.danger{color:var(--danger);border-color:var(--danger);background:transparent}
button.ghost{border-color:transparent;background:transparent;padding:.2rem .5rem}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

input,select,textarea{font:inherit;width:100%;padding:.5rem .7rem;border:1px solid var(--line);
  border-radius:var(--radius);background:var(--surface);color:var(--ink)}
textarea{resize:vertical}
label{display:block;font-size:.92rem;color:var(--muted)}
label input,label select,label textarea{margin-top:.25rem;color:var(--ink)}
label.check{display:flex;gap:.5rem;align-items:center;color:var(--ink);padding:.2rem 0}
label.check input{width:auto;margin:0}
fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:.8rem 1rem}
legend{padding:0 .4rem;color:var(--ink)}

.flash{padding:.7rem 1rem;border-radius:var(--radius);border:1px solid var(--line);background:var(--soft);margin-bottom:1rem}
.flash.ok{border-color:var(--ok)} .flash.err{border-color:var(--danger);color:var(--danger)}
.flash ul{margin:0;padding-inline-start:1.2rem}
.notice{background:var(--soft);border-inline-start:4px solid var(--accent);padding:.7rem 1rem;border-radius:var(--radius);margin-bottom:1rem;font-size:.92rem}

.auth{max-width:420px;margin:8vh auto 0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.6rem}
.auth form,.stack{display:grid;gap:.9rem}
.narrow{max-width:420px}
.row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:flex-end}
.row label{flex:1;min-width:220px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.9rem}

.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.2rem;margin-bottom:1rem}
.panel h2{margin-top:0}
.secret{font-size:1.15rem;letter-spacing:.08em;background:var(--soft);padding:.4rem .8rem;border-radius:6px;display:inline-block;user-select:all}

.layout{display:grid;grid-template-columns:260px 1fr;gap:1.4rem;align-items:start}
.filters{position:sticky;top:1rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1rem}
.filters form{display:grid;gap:.8rem}
.count{font-size:.9rem;font-weight:400;color:var(--muted);margin-inline-start:.4rem}

h2.country{font-size:1.25rem;border-bottom:2px solid var(--accent);padding-bottom:.2rem;margin-top:1.8rem}
h3.city{color:var(--muted);font-weight:600;margin:1rem 0 .4rem}
.person{display:flex;align-items:center;gap:.8rem;padding:.55rem .8rem;border:1px solid var(--line);
  border-radius:var(--radius);background:var(--surface);text-decoration:none;color:var(--ink);margin-bottom:.4rem}
.person:hover{border-color:var(--accent)}
.person .info{display:flex;flex-direction:column;line-height:1.5}
.person em{font-style:normal;color:var(--accent)}
.avatar{width:42px;height:42px;border-radius:50%;background:var(--soft);color:var(--accent);
  display:grid;place-items:center;font-weight:700;flex:none}
.avatar.big{width:72px;height:72px;font-size:1.8rem}
.empty{background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius);padding:2rem;text-align:center}

.profile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.2rem 1.5rem}
.phead{display:flex;gap:1rem;align-items:center}
.phead h1{margin:0}.alias{margin:0;color:var(--accent)}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.8rem;margin:1rem 0}
.facts div{background:var(--soft);border-radius:var(--radius);padding:.5rem .8rem}
.facts dt{font-size:.8rem;color:var(--muted)} .facts dd{margin:0;font-weight:600}
.bio{max-width:70ch}
.orgs,.sources{padding-inline-start:1.2rem}
.sources a{word-break:break-all}

.orgrow{display:grid;grid-template-columns:1fr 1fr auto;gap:.5rem;margin-bottom:.5rem}
.tablewrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;background:var(--surface);font-size:.9rem}
th,td{padding:.45rem .7rem;border-bottom:1px solid var(--line);text-align:start}

@media (max-width:800px){
  .layout{grid-template-columns:1fr}
  .filters{position:static}
  .orgrow{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- عمومی ---------- */
.hidden{display:none!important}
.gap{gap:1rem}
.acts{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.acts input{width:auto;min-width:150px}

/* ---------- داشبورد ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem;margin-bottom:1rem}
.stats div{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.7rem 1rem;display:flex;flex-direction:column}
.stats b{font-size:1.8rem;line-height:1.2;color:var(--accent)}
.stats span{color:var(--muted);font-size:.85rem}
.bars{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}
.bars li{display:grid;grid-template-columns:minmax(80px,1fr) 2fr auto;gap:.6rem;align-items:center}
.bars meter,.li meter{width:100%;height:.8rem}
.checks{margin:0 0 .6rem;padding-inline-start:1.2rem}

/* ---------- نقشه ---------- */
.maphead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.8rem;margin-bottom:.8rem}
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem;font-size:1.05rem}
.crumbs button.ghost{color:var(--accent);padding:.1rem .3rem}
.fieldpick{min-width:220px}
.mapgrid{display:grid;grid-template-columns:1fr 300px;gap:1rem;align-items:start}
.mapbox{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
#mapSvg{display:block;width:100%;height:min(68vh,640px);touch-action:none;cursor:grab}
#mapSvg:active{cursor:grabbing}
.zoom{position:absolute;inset-block-start:.6rem;inset-inline-start:.6rem;display:grid;gap:.3rem;z-index:2}
.zoom button{width:2.1rem;height:2.1rem;padding:0;line-height:1;font-size:1.1rem}

.region{stroke:var(--surface);stroke-width:.8;fill:var(--line);transition:fill-opacity .15s}
.region.lv0{fill:var(--line);fill-opacity:.6}
.region.lv1{fill:var(--accent);fill-opacity:.22}
.region.lv2{fill:var(--accent);fill-opacity:.4}
.region.lv3{fill:var(--accent);fill-opacity:.58}
.region.lv4{fill:var(--accent);fill-opacity:.78}
.region.lv5{fill:var(--accent);fill-opacity:1}
.region.sup{fill:var(--accent);fill-opacity:.12;stroke:var(--accent);stroke-dasharray:3 2}
.region.click{cursor:pointer}
.region.click:hover,.region.click:focus-visible{stroke:var(--ink);stroke-width:1.6;outline:none}
.region.dim{fill-opacity:.12}
.region.sel{stroke:var(--ink);stroke-width:2}
.lbl{fill:var(--ink);font-family:var(--font);paint-order:stroke;stroke:var(--surface);stroke-width:2.5px;stroke-linejoin:round;pointer-events:none}
.lbl .num,.lbl.num{font-weight:700}

.sidelist{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.8rem 1rem;max-height:70vh;overflow:auto}
.sidelist h2{margin-top:0}
.li{display:grid;grid-template-columns:minmax(70px,1fr) 1fr auto;gap:.5rem;align-items:center;width:100%;
  padding:.3rem .4rem;border:0;border-radius:6px;background:transparent;text-align:start;font:inherit;color:var(--ink)}
.li.click{cursor:pointer}
.li.click:hover{background:var(--soft)}
.legend{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;margin-top:.8rem;font-size:.85rem;color:var(--muted)}
.sw{display:inline-block;width:1.4rem;height:.8rem;border-radius:3px;background:var(--accent);margin-inline:.1rem}
.sw.lv1{opacity:.22}.sw.lv2{opacity:.4}.sw.lv3{opacity:.58}.sw.lv4{opacity:.78}.sw.lv5{opacity:1}
.sw.sup{background:transparent;border:1px dashed var(--accent);margin-inline-start:1rem}
@media (max-width:900px){.mapgrid{grid-template-columns:1fr}.sidelist{max-height:none}}
