@font-face{font-family:"Vazirmatn";src:url("/web/vendor/fonts/Vazirmatn-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Vazirmatn";src:url("/web/vendor/fonts/Vazirmatn-Bold.woff2") format("woff2");font-weight:700;font-display:swap}
:root{
  --navy:#071A2E; --navy2:#0D2740; --navy3:#123152;
  --accent:#00B3C7; --accent2:#0093A5; --gold:#D6B36A;
  --bg:#EDF2F7; --card:#FFFFFF; --line:#DDE6EF;
  --txt:#132639; --muted:#6C8094;
  --ok:#1B9E6A; --warn:#D8890F; --bad:#C7413B;
  --r:14px; --sh:0 1px 2px rgba(9,29,48,.06), 0 10px 30px rgba(9,29,48,.10);
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--bg);color:var(--txt);
  font-family:"Vazirmatn","IRANSans","Segoe UI",Tahoma,sans-serif;
  font-size:13.5px;line-height:1.7;
  display:grid;grid-template-rows:auto auto 1fr auto;height:100vh;overflow:hidden;
}
button,input,select{font-family:inherit}
h2,h3{margin:0}
.muted{color:var(--muted)}
.small{font-size:12px}

/* ══════════════════════════ command bar ══════════════════════════ */
.appbar{
  display:flex;align-items:center;gap:16px;padding:0 18px;height:62px;
  background:linear-gradient(100deg,#061523,#0D2740 55%,#123152);
  color:#fff;box-shadow:0 2px 14px rgba(5,15,26,.35);z-index:30;
}
.brand{display:flex;align-items:center;gap:11px;min-width:250px}
.logo{
  width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-weight:800;
  font-size:13px;letter-spacing:.5px;color:#04222B;
  background:linear-gradient(135deg,#33E0F0,#00A3B5);box-shadow:0 6px 16px rgba(0,179,199,.35);
}
.brand-txt{display:flex;flex-direction:column;line-height:1.25}
.brand-txt b{font-size:12.5px;letter-spacing:2.4px;color:var(--gold)}
.brand-txt span{font-size:10.5px;color:#A9BDD0}
.appbar-center{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
.proj-select{
  background:rgba(255,255,255,.08);color:#E8F1F9;border:1px solid rgba(255,255,255,.16);
  border-radius:10px;padding:7px 11px;font-size:12px;max-width:330px;
}
.proj-select option{color:#0B1B2B;background:#fff}
.pill{
  font-size:11px;padding:4px 10px;border-radius:999px;white-space:nowrap;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.13);color:#D7E4EF;
}
.pill.muted{color:#8FA6BC}
.appbar-right{display:flex;align-items:center;gap:9px}
.health{display:flex;align-items:center;gap:6px;font-size:11.5px;color:#9FE7C6;white-space:nowrap}
.health i{width:7px;height:7px;border-radius:50%;background:#2FD69A;box-shadow:0 0 0 3px rgba(47,214,154,.18)}
.health.off{color:#FFC9C6}.health.off i{background:#E5695F;box-shadow:0 0 0 3px rgba(229,105,95,.18)}
.btn{
  border:0;border-radius:10px;padding:9px 15px;font-size:12.5px;font-weight:700;cursor:pointer;
  transition:.16s;white-space:nowrap;
}
.btn.primary{background:linear-gradient(135deg,#18C8DA,#0095A6);color:#02222A;box-shadow:0 6px 18px rgba(0,179,199,.30)}
.btn.primary:hover{filter:brightness(1.06)}
.btn.ghost{background:rgba(255,255,255,.10);color:#E6EFF7;border:1px solid rgba(255,255,255,.20)}
.btn.ghost:hover{background:rgba(255,255,255,.18)}
.btn:disabled{opacity:.55;cursor:progress}
.sheet .btn.ghost{background:#F1F5F9;color:#20364B;border:1px solid var(--line)}

/* ══════════════════════════ toolbar ══════════════════════════ */
.toolbar{
  display:flex;align-items:center;gap:8px;padding:7px 16px;background:#0A1F35;
  border-bottom:1px solid rgba(255,255,255,.06);overflow-x:auto;z-index:25;
}


.tb-group:first-child{padding-right:0}
.tb-group:last-child{border-left:0}






.tb-sep{width:1px;height:24px;background:rgba(255,255,255,.12);margin:0 4px;flex:0 0 1px}
.tb-spacer{flex:1}
.chip{
  display:inline-flex;align-items:center;gap:6px;border:0;border-radius:9px;padding:7px 12px;
  font-size:12px;font-weight:600;cursor:pointer;transition:.16s;white-space:nowrap;
  color:#fff;background:#17334F;
}
.chip span{font-size:13px;opacity:.85}
.chip:hover{transform:translateY(-1px);filter:brightness(1.12)}
.chip.c-blue{background:linear-gradient(135deg,#2F7FD1,#1D5FA8)}
.chip.c-violet{background:linear-gradient(135deg,#7A5AD6,#5B3EB5)}
.chip.c-teal{background:linear-gradient(135deg,#12A8A0,#0B7E79)}
.chip.c-amber{background:linear-gradient(135deg,#D79A2B,#B47612)}
.chip.c-green{background:linear-gradient(135deg,#29A56B,#1A7C4E)}
.chip.c-rose{background:linear-gradient(135deg,#C95B7B,#A63A5A)}
.chip.c-route{background:linear-gradient(135deg,#8B6BE0,#6A4CC0);box-shadow:0 4px 14px rgba(124,92,214,.35)}
.chip.c-survey{background:linear-gradient(135deg,#2AA7A0,#167F79)}
.chip.c-req{background:linear-gradient(135deg,#D4A22A,#A97C12)}
.chip.off{opacity:.45;filter:grayscale(.4)}
.chip.c-slate{background:#1B3A56}
.chip.c-outline{background:transparent;border:1px solid rgba(255,255,255,.24);color:#CFE0EE}

/* ══════════════════════════ stage / map ══════════════════════════ */
.stage{position:relative;overflow:hidden;background:#DCE6EF}
#map{position:absolute;inset:0;z-index:0}
.leaflet-container{font-family:inherit;background:#DCE6EF}
.leaflet-control-attribution{font-size:10px;background:rgba(255,255,255,.8)}

.map-kpis{
  position:absolute;bottom:16px;right:16px;display:flex;gap:8px;z-index:400;flex-wrap:wrap;
  max-width:calc(100% - 360px);
}
.kpi-mini{
  background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:12px;
  padding:8px 13px;box-shadow:var(--sh);min-width:92px;backdrop-filter:blur(6px);
}
.kpi-mini .l{font-size:10px;color:var(--muted)}
.kpi-mini .v{font-size:16px;font-weight:800;color:#0D2740;line-height:1.3}
.kpi-mini .v small{font-size:10px;font-weight:600;color:var(--muted)}

/* layer panel */
.layer-panel{
  position:absolute;top:14px;right:14px;width:296px;z-index:450;
  background:rgba(13,39,64,.97);color:#DCE9F4;border:1px solid rgba(255,255,255,.10);
  border-radius:14px;box-shadow:0 18px 50px rgba(4,14,24,.45);backdrop-filter:blur(10px);
  transform:translateX(0);transition:.28s;overflow:hidden;
}
.layer-panel.hidden{transform:translateX(330px);opacity:0;pointer-events:none}
.lp-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid rgba(255,255,255,.08)}
.lp-head h3{font-size:13px;color:#fff}
.lp-body{padding:8px 10px;max-height:52vh;overflow:auto}
.lp-row{display:flex;align-items:center;gap:9px;padding:7px 6px;border-radius:9px}
.lp-row:hover{background:rgba(255,255,255,.05)}
.lp-row .sw{width:9px;height:9px;border-radius:3px;flex:0 0 9px}
.lp-row .nm{flex:1;font-size:12px;color:#D6E4F0}
.lp-row .ct{font-size:12.5px;color:#D2E2F0;min-width:30px;text-align:left;font-variant-numeric:tabular-nums}
.lp-row input{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}
.lp-foot{padding:9px 14px;border-top:1px solid rgba(255,255,255,.08)}
.switch{display:flex;align-items:center;gap:8px;font-size:11.5px;color:#A9C0D3;cursor:pointer}
.switch input{display:none}
.switch span{width:34px;height:18px;border-radius:999px;background:#24445F;position:relative;transition:.2s}
.switch span::after{content:"";position:absolute;top:2px;right:2px;width:14px;height:14px;border-radius:50%;background:#93AEC5;transition:.2s}
.switch input:checked + span{background:#0E6E77}
.switch input:checked + span::after{right:18px;background:#39E0F0}

.icon-btn{background:transparent;border:0;color:#9FB6CA;font-size:14px;cursor:pointer;padding:4px 6px;border-radius:6px}
.icon-btn:hover{background:rgba(255,255,255,.10);color:#fff}

.legend{
  position:absolute;bottom:16px;left:16px;z-index:400;background:rgba(255,255,255,.95);
  border:1px solid var(--line);border-radius:11px;padding:8px 11px;box-shadow:var(--sh);
  font-size:11px;display:grid;gap:3px;
}
.legend div{display:flex;align-items:center;gap:6px}
.legend i{width:14px;height:3px;border-radius:2px;display:inline-block}

.map-empty{position:absolute;inset:0;display:grid;place-items:center;z-index:420;pointer-events:none}
.map-empty.hidden{display:none}
.me-card{
  pointer-events:auto;background:rgba(255,255,255,.97);border:1px solid var(--line);
  border-radius:16px;padding:22px 26px;box-shadow:0 20px 50px rgba(9,29,48,.18);max-width:380px;text-align:center;
}
.me-card b{display:block;font-size:15px;color:#0D2740;margin-bottom:6px}
.me-card p{font-size:12.5px;color:var(--muted);margin:0 0 14px}

/* برچسب تعداد واحد روی ساختمان */
.leaflet-tooltip.bld-units{
  background:rgba(255,255,255,.96);border:1px solid #6F8CA8;border-radius:6px;
  color:#0B2540;font-size:var(--bld-fs,12px);font-weight:800;line-height:1.5;padding:0 5px;
  box-shadow:0 1px 4px rgba(9,29,48,.22);pointer-events:none;
}
.leaflet-tooltip.bld-units::before{display:none}
#map.hide-unit-labels .leaflet-tooltip.bld-units{display:none}

/* ══════════════════════════ status bar ══════════════════════════ */
.statusbar{
  display:flex;align-items:center;gap:10px;height:30px;padding:0 14px;font-size:11px;
  background:#061523;color:#8FA9C0;border-top:1px solid rgba(255,255,255,.06);z-index:30;
}
.statusbar .dot{width:3px;height:3px;border-radius:50%;background:#2C4A66}
.statusbar .spacer{flex:1}

/* ══════════════════════════ sheets ══════════════════════════ */
.sheet-wrap{
  position:fixed;inset:0;z-index:900;background:rgba(6,18,30,.55);backdrop-filter:blur(3px);
  display:none;align-items:flex-start;justify-content:flex-start;padding:4vh 3vw;
}
.sheet-wrap.open{display:flex}
.sheet{
  width:min(1120px,94vw);max-height:90vh;background:var(--bg);border-radius:18px;
  box-shadow:0 30px 80px rgba(4,14,24,.45);display:none;flex-direction:column;overflow:hidden;
  animation:pop .18s ease;
}
.sheet.active{display:flex}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:none}}
.sheet header{
  flex:0 0 auto;
  display:flex;align-items:center;justify-content:space-between;padding:14px 18px;
  background:linear-gradient(100deg,#0A1F35,#123152);color:#fff;
}
.sheet header h2{font-size:15px}
.sheet header .icon-btn{color:#B9CCDD}
.sheet-body{flex:1 1 auto;min-height:0;padding:16px 18px 22px;overflow:auto}

/* ══════════════════════════ content ══════════════════════════ */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);margin-bottom:10px;overflow:hidden}
.card-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid var(--line);background:#FAFCFE}
.card-head h3{font-size:13px;color:#123152}
.card-body{padding:14px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:1000px){.grid-2{grid-template-columns:1fr}}
.layer-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:10px}
.ls-item{
  background:#fff;border:1px solid var(--line);border-radius:11px;padding:7px 12px;
  display:flex;align-items:center;justify-content:space-between;gap:8px;box-shadow:var(--sh);min-height:44px;
}
.ls-item b{font-size:10.5px;color:var(--muted);font-weight:700;white-space:nowrap}
.ls-item span{font-size:14px;font-weight:800;color:#0D2740;line-height:1.4;white-space:nowrap}
.ls-item em{font-style:normal;font-size:10.5px;color:var(--muted);white-space:nowrap}
@media(max-width:900px){.layer-strip{grid-template-columns:repeat(2,1fr)}}

/* کنسول درخواست‌ها */
.req-tools{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.req-tools select,.req-tools input{padding:7px 10px;border:1px solid var(--line);border-radius:9px;font-size:12px;background:#fff;color:var(--txt)}
.req-tools input{min-width:170px}
.st{display:inline-block;font-size:10.5px;padding:2px 9px;border-radius:999px;border:1px solid;white-space:nowrap}
.st-quoted{background:#EAF2FB;color:#2F6FB0;border-color:#C6DBF0}
.st-confirmed{background:#E7F7EF;color:#1B9E6A;border-color:#BFE8D3}
.st-scheduled{background:#FFF4E2;color:#C07C0A;border-color:#F2DDB6}
.st-installed{background:#E6F7F6;color:#0E7C79;border-color:#BFE6E3}
.st-activated{background:#E4F6EA;color:#12693F;border-color:#B7E4C8}
.st-rejected{background:#F2F4F7;color:#7A8794;border-color:#DCE1E7}
.act{display:flex;gap:5px;flex-wrap:wrap}
.act button{border:1px solid var(--line);background:#fff;border-radius:7px;padding:3px 8px;font-size:11px;cursor:pointer;color:#26405A}
.act button:hover{background:#EAF6F8;border-color:#B9DCE2;color:#0B2540}
.act button.danger:hover{background:#FBE9E8;border-color:#F0C6C2;color:#C7413B}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px}
#kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){#kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.kpi{background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 12px;box-shadow:var(--sh)}
.kpi .k-label{font-size:10.5px;color:var(--muted)}
.kpi .k-value{font-size:17px;font-weight:800;color:#0D2740;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .k-sub{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpis.small .k-value{font-size:15px}

table{width:100%;border-collapse:collapse;font-size:12.5px}
th,td{padding:6px 9px;text-align:right;border-bottom:1px solid var(--line)}
th{background:#F5F9FC;color:#123152;font-weight:700;font-size:11.5px}
tbody tr:hover{background:#F7FBFD}
tfoot td{font-weight:800;background:#F2F7FA;color:#0D2740}
td.num,th.num{font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl-wrap{overflow:auto;max-height:56vh}
.chip-s{display:inline-block;font-size:10.5px;padding:1px 8px;border-radius:999px;border:1px solid}
.chip-s.critical{background:#FBE9E8;color:var(--bad);border-color:#F0C6C2}
.chip-s.major{background:#FFF4E2;color:var(--warn);border-color:#F2DDB6}
.chip-s.ok{background:#E7F7EF;color:var(--ok);border-color:#BFE8D3}

.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:12px}
.form-grid label{display:flex;flex-direction:column;gap:5px;font-size:11.5px;color:var(--muted)}
input[type=number],select{padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--txt);font-size:12.5px}
input:focus,select:focus{outline:2px solid #BEE7EC;border-color:var(--accent)}
.actions{display:flex;align-items:center;gap:10px;margin-top:12px}

.pipeline{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:12px}
.pipe-step{flex:1;min-width:100px;background:#F4F8FA;border:1px solid var(--line);border-radius:9px;padding:8px 9px;font-size:11px;color:var(--muted)}
.pipe-step b{display:block;color:#123152;font-size:11.5px}
.pipe-step.done{background:#E9F7F3;border-color:#BFE8D3}
.pipe-step.done b{color:var(--ok)}

.log{
  background:#08192B;color:#CBD9E6;border-radius:10px;padding:10px 12px;
  font-family:inherit;font-size:11.5px;line-height:2;max-height:140px;overflow:auto;
  margin-top:10px;direction:rtl;
}
.log.tall{max-height:220px;margin-top:0}
.log:empty{display:none}
.log-line{white-space:pre-wrap;font-variant-numeric:tabular-nums}

.gate{display:flex;gap:12px;align-items:center;padding:10px;border-radius:10px;background:#F7FAFC;border:1px dashed var(--line)}
.gate-state{font-size:22px;font-weight:800;color:var(--muted);min-width:84px;text-align:center}
.gate.ok .gate-state{color:var(--ok)}
.gate.bad .gate-state{color:var(--bad)}
.gate-detail{font-size:12px;color:var(--muted)}
.doc-bar{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 14px;
  margin-bottom:12px;box-shadow:var(--sh);font-size:12.5px;color:var(--muted);
}
.doc-bar .btn{padding:7px 14px;font-size:12px;text-decoration:none;display:inline-block}

.doc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}
.doc{background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 15px;box-shadow:var(--sh);display:flex;flex-direction:column;gap:5px}
.doc .code{font-size:10px;letter-spacing:.6px;color:var(--accent2);font-weight:700}
.doc .title{font-size:13px;font-weight:700;color:#0D2740;line-height:1.6}
.doc .meta{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:7px;font-size:10.5px;color:var(--muted)}
.doc a{color:var(--accent2);text-decoration:none;font-weight:700;font-size:11.5px}
.doc a:hover{text-decoration:underline}

tr.best td{background:#EAF8F1;font-weight:700}

.toast{
  position:fixed;bottom:44px;left:50%;transform:translateX(-50%) translateY(16px);
  background:#0D2740;color:#fff;padding:10px 18px;border-radius:10px;font-size:12.5px;
  opacity:0;pointer-events:none;transition:.24s;z-index:999;box-shadow:0 14px 40px rgba(0,0,0,.35)
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.bad{background:var(--bad)}

/* نوار انتخاب روی نقشه */
.pick-bar{
  position:fixed;bottom:44px;left:50%;transform:translateX(-50%) translateY(18px);
  background:#0D2740;color:#fff;border:1px solid rgba(255,255,255,.14);border-radius:12px;
  padding:10px 14px;display:flex;align-items:center;gap:10px;font-size:12.5px;
  box-shadow:0 16px 44px rgba(4,14,24,.45);opacity:0;pointer-events:none;transition:.22s;z-index:960;
  max-width:calc(100vw - 32px);
}
.pick-bar.show{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.pick-bar .pb-ico{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;
  background:rgba(0,179,199,.2);color:#7FE3F0;font-size:15px}
.pick-bar .pb-coords{color:#9FE7C6;font-size:11.5px;white-space:nowrap}
.pick-bar button{border:1px solid rgba(255,255,255,.24);background:rgba(255,255,255,.08);color:#E6EFF7;
  border-radius:8px;padding:5px 12px;font-size:12px;cursor:pointer;font-family:inherit}
.pick-bar button:hover{background:rgba(255,255,255,.16)}

/* ورود و نشست */
.login-wrap{
  position:fixed;inset:0;z-index:2000;display:none;align-items:center;justify-content:center;
  background:linear-gradient(150deg,#061523,#0D2740 55%,#123152);
}
.login-wrap.show{display:flex}
.login-card{
  width:min(360px,90vw);background:#fff;border-radius:18px;padding:26px 24px;text-align:center;
  box-shadow:0 30px 80px rgba(0,0,0,.45);
}
.lg-logo{width:46px;height:46px;border-radius:12px;margin:0 auto 8px;display:grid;place-items:center;
  background:linear-gradient(135deg,#33E0F0,#00A3B5);color:#04222B;font-weight:800;font-size:14px}
.lg-brand{font-size:11px;letter-spacing:3px;color:var(--gold);font-weight:700;margin-bottom:4px}
.login-card h2{font-size:17px;color:var(--navy);margin:0 0 16px}
.login-card label{display:block;text-align:right;font-size:12px;color:var(--muted);margin:10px 0 4px}
.login-card input{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;
  font-family:inherit;font-size:14px;background:#F8FBFD}
.login-card input:focus{outline:2px solid #BEE7EC;border-color:var(--accent);background:#fff}
.login-card .btn{width:100%;margin-top:14px;padding:12px}
.lg-err{color:var(--bad);font-size:12px;min-height:18px;margin-top:8px}
.login-card p{margin:12px 0 0}
.user-chip{display:flex;align-items:center;gap:6px;font-size:11.5px;color:#D7E4EF;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);border-radius:999px;padding:4px 10px}
.user-chip b{color:#fff;font-weight:700}
.user-chip span{color:#9FB6CA;font-size:10.5px}

/* برچسب دارایی‌های موجود (FAT/ODC) */
.asset-label{
  background:rgba(255,255,255,.94);border:1px solid #CBD9E4;border-radius:5px;
  padding:0 3px;font-size:9px;font-weight:700;color:#0B2540;direction:ltr;
  box-shadow:0 1px 3px rgba(11,37,64,.15);white-space:nowrap;
}
.asset-label::before{display:none}
#map.asset-zoom-out .asset-label{display:none}

/* نوار کالیبراسیون */
.pick-bar.calib{background:#0B3D4A}
.pick-bar.calib .pb-ico{color:#2BD3E4}

.leaflet-popup-content{font-family:inherit;font-size:12px;direction:rtl;text-align:right}
.leaflet-popup-content b{color:#0D2740}

@media(max-width:820px){
  .brand{min-width:auto}
  .brand-txt span{display:none}
  .appbar-center .pill{display:none}
  .layer-panel{width:250px}
  .map-kpis{max-width:calc(100% - 24px)}
}

/* نوار ابزار: یک ردیف، دسته‌بندی‌شده، قابل اسکرول افقی */
.toolbar{display:flex;align-items:center;gap:0;padding:6px 10px;background:#0A1F35;
  border-bottom:1px solid rgba(255,255,255,.06);overflow-x:auto;overflow-y:hidden;
  flex-wrap:nowrap;white-space:nowrap;z-index:25;scrollbar-width:thin;scrollbar-color:#2A4A66 #0A1F35}
.toolbar::-webkit-scrollbar{height:6px}
.toolbar::-webkit-scrollbar-thumb{background:#2A4A66;border-radius:4px}
.toolbar::-webkit-scrollbar-track{background:#0A1F35}
.tb-group{display:flex;align-items:center;gap:6px;flex:0 0 auto;padding:0 9px;
  border-left:1px solid rgba(255,255,255,.09)}
.tb-group:first-child{padding-right:0}
.tb-group:last-child{border-left:0;padding-left:0}
.toolbar .chip{flex:0 0 auto}

/* ── کارت ویرایش رکورد برداشت ── */
#survey-card{position:fixed;bottom:72px;right:18px;left:auto;width:340px;max-width:calc(100vw - 36px);max-height:72vh;overflow:auto;background:#fff;border:1px solid #D6E1EB;border-radius:14px;box-shadow:0 12px 32px rgba(13,39,64,.18);z-index:1200;font-size:12.5px}
#survey-card.hidden{display:none}
#survey-card .sv-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid #E6EEF5;position:sticky;top:0;background:#fff;z-index:2}
#survey-card .sv-head b{font-size:12.5px;color:#0D2740}
#survey-card .sv-head span{font-size:11px;color:#6B8199;margin-inline-start:auto}
#survey-card .sv-head button{border:none;background:transparent;font-size:15px;color:#6B8199;cursor:pointer;padding:0 4px}
#survey-card .sv-body{padding:10px 12px;display:flex;flex-direction:column;gap:9px}
#survey-card .sv-body label{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:#4A6076}
#survey-card .sv-body input,#survey-card .sv-body select,#survey-card .sv-body textarea{width:100%;box-sizing:border-box;padding:7px 9px;border:1px solid #D6E1EB;border-radius:8px;font-family:inherit;font-size:12px;background:#F9FCFE;color:#0D2740}
#survey-card .sv-body textarea{resize:vertical;min-height:44px}
#survey-card .sv-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
#survey-card .sv-pos{font-size:11px;color:#6B8199}
#survey-card .sv-foot{display:flex;gap:8px;padding:10px 12px;border-top:1px solid #E6EEF5;position:sticky;bottom:0;background:#fff}
#survey-card .sv-foot button{flex:1;padding:8px;border-radius:8px;border:1px solid #D6E1EB;background:#F7FBFD;font-family:inherit;font-size:12px;cursor:pointer}
#survey-card .sv-foot .primary{background:#00A3B5;border-color:#00A3B5;color:#fff}
#survey-card .sv-foot .danger{background:#FDECEA;border-color:#F5C2BC;color:#B3261E}

/* ── نشانگرهای برداشت میدانی ── */
.sv-pin{width:26px;height:26px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--c,#E4572E);
  border:2px solid #fff;box-shadow:0 2px 6px rgba(13,39,64,.35);display:flex;align-items:center;justify-content:center}
.sv-pin span{transform:rotate(45deg);font-size:12px;line-height:1;display:block}
.sv-pin.res{--c:#E4572E}
.sv-pin.com{--c:#D4A22A}
.sv-pin.off{--c:#7B61FF}
.sv-pin.obs{--c:#C6413B}
.sv-pin.plc{--c:#00A3B5}

/* مربع‌های برداشت میدانی */
.sv-sq{width:24px;height:24px;border-radius:5px;display:flex;align-items:center;justify-content:center;
  font-size:10.5px;font-weight:600;box-shadow:0 1px 4px rgba(13,39,64,.25);box-sizing:border-box}
.sv-sq.res{background:rgba(228,87,46,.22);border:1px solid #E4572E;color:#A33A1B}
.sv-sq.com{background:rgba(212,162,42,.22);border:1px solid #D4A22A;color:#8A6410}
.sv-sq.off{background:rgba(123,97,255,.20);border:1px solid #7B61FF;color:#4B37B8}
.sv-sq.obs{background:rgba(198,65,59,.20);border:1px solid #C6413B;color:#8E2B26}
.sv-sq.plc{background:rgba(0,163,181,.20);border:1px solid #00A3B5;color:#036B76}
/* شمارهٔ واحد روی ساختمان‌ها */
.leaflet-tooltip.bld-units{background:transparent;border:none;box-shadow:none;padding:0;font-size:9.5px;font-weight:600;color:#33506B}
.leaflet-tooltip.bld-units-residential,.leaflet-tooltip.bld-units-res{color:#A33A1B}
.leaflet-tooltip.bld-units-commercial,.leaflet-tooltip.bld-units-com{color:#8A6410}
.leaflet-tooltip.bld-units-office,.leaflet-tooltip.bld-units-off{color:#4B37B8}
