/* ===== Раздел /map — карта контрагентов (дизайн-система сайта) ===== */

/* локальные переменные раздела (статусные цвета — семантические, вне палитры сайта) */
.map-page{
  --ok:#1a7f37; --warn:#b05e00; --bad:#c22b2b; --approx:#1565c0;
  margin-top:100px;                    /* компенсация фиксированной шапки */
  height:calc(100vh - 100px);          /* раздел занимает ровно один экран, футер — ниже */
  display:flex;flex-direction:column;
  padding:0 var(--pad) 1.25rem;
}

/* ── Шапка раздела ─────────────────── */
.map-head{flex:0 0 auto;padding:.25rem 0 .75rem}
.map-title-row{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.map-title-row h1{font-family:'Montserrat',sans-serif;font-size:clamp(1.4rem,2.5vw,1.9rem);font-weight:800;letter-spacing:-.02em}
.map-count{color:var(--gray);font-size:.8rem;font-weight:600}
.map-sub{margin:.35rem 0 0;color:var(--gray);font-size:.83rem;max-width:90ch}

/* ── Каркас: список + карта ─────────── */
.map-layout{flex:1 1 auto;display:flex;gap:1rem;min-height:0}
.map-aside{
  flex:0 0 372px;display:flex;flex-direction:column;min-height:0;
  background:var(--white);border:1px solid var(--gray-border);border-radius:var(--r2);
  box-shadow:var(--shadow-sm);overflow:hidden;
}
.map-box{
  flex:1 1 auto;min-width:0;min-height:0;
  border:1px solid var(--gray-border);border-radius:var(--r2);
  overflow:hidden;position:relative;z-index:0;   /* stacking context: слои Leaflet не перекрывают фиксированную шапку */
  background:#dfe5e8;
}

/* ── Фильтры ───────────────────────── */
.map-filters{flex:0 0 auto;display:flex;flex-direction:column;gap:.5rem;padding:.9rem;border-bottom:1px solid var(--gray-border);background:var(--white)}
.map-search{position:relative}
.map-search input{
  width:100%;padding:.6rem 2rem .6rem 2.1rem;border:1px solid var(--gray-border);border-radius:var(--r);
  background:var(--gray-light);color:var(--black);font:inherit;font-size:.85rem;
}
.map-search input:focus{outline:3px solid var(--orange);outline-offset:-1px;background:var(--white)}
.map-search svg{position:absolute;left:.65rem;top:50%;transform:translateY(-50%);width:15px;height:15px;stroke:var(--gray)}
.map-search .clear{
  position:absolute;right:.3rem;top:50%;transform:translateY(-50%);
  border:0;background:none;color:var(--gray);padding:4px;line-height:1;display:none;border-radius:6px;font-size:.8rem;
}
.map-search .clear:hover{color:var(--black)}
.map-filters select{
  width:100%;padding:.55rem .7rem;border:1px solid var(--gray-border);border-radius:var(--r);
  background:var(--white);color:var(--black);font:inherit;font-size:.8rem;cursor:pointer;
}
.map-filters select:focus{outline:3px solid var(--orange);outline-offset:-1px}

/* ── Список компаний ───────────────── */
.map-listwrap{flex:1 1 auto;overflow-y:auto;min-height:0}
#list{margin:0;padding:.4rem .5rem 1rem;list-style:none}
#list li{
  padding:.55rem .65rem;border-radius:var(--r);cursor:pointer;display:flex;gap:.6rem;align-items:flex-start;
}
#list li:hover{background:var(--gray-light)}
#list li.active{background:var(--orange-soft)}
#list li .dot{flex:0 0 auto;width:9px;height:9px;border-radius:50%;margin-top:6px}
#list li .nm{font-weight:600;font-size:.83rem;line-height:1.35}
#list li .meta{color:var(--gray);font-size:.73rem;margin-top:1px;display:block}
.map-empty{padding:1.6rem 1.2rem;color:var(--gray);text-align:center;font-size:.8rem}

/* ── Leaflet: подложка под дизайн сайта ── */
.map-box .leaflet-container{font:inherit;background:#dfe5e8}
.map-box .leaflet-bar a{border-radius:6px}
.map-box .leaflet-popup-content-wrapper{border-radius:var(--r2);box-shadow:var(--shadow-lg)}
.map-box .leaflet-popup-content{margin:.85rem 1rem;width:290px !important;font:inherit;font-size:.82rem}

/* ── Карточка в попапе ─────────────── */
.card h3{font-family:'Montserrat',sans-serif;font-size:.9rem;font-weight:800;line-height:1.3;letter-spacing:-.01em}
.card .badges{display:flex;flex-wrap:wrap;gap:5px;margin:.45rem 0 .55rem}
/* вкладки карточки */
.card .tabs{display:flex;gap:.3rem;margin:.1rem 0 .55rem}
.card .tab{
  flex:1 1 0;padding:.42rem .25rem;border:1px solid var(--gray-border);border-radius:var(--r);
  background:var(--gray-light);color:var(--gray);font:inherit;font-size:.72rem;font-weight:700;cursor:pointer;
}
.card .tab:hover{color:var(--orange-h);border-color:var(--orange)}
.card .tab.active{background:var(--orange);border-color:var(--orange);color:var(--white)}
.card .tab-panel{margin-bottom:.45rem}
.badge{font-size:.68rem;font-weight:700;border-radius:999px;padding:2px 9px}
.badge.ok{background:#e5f3e9;color:#14642b}
.badge.bad{background:#fae5e5;color:#8f1f1f}
.badge.neutral{background:var(--gray-light);border:1px solid var(--gray-border);color:var(--gray)}
.card table{width:100%;border-collapse:collapse;font-size:.78rem}
.card table td{padding:2.5px 0;vertical-align:top}
.card table td:first-child{color:var(--gray);white-space:nowrap;padding-right:12px}
.card table td:last-child{font-weight:600;text-align:right}
.card .okveds{margin:.55rem 0 0;padding:.5rem 0 0;border-top:1px solid var(--gray-border);font-size:.73rem;color:var(--gray)}
.card .okveds b{color:var(--black);font-weight:600}
.card .contacts{margin:.55rem 0 0;padding:.5rem 0 0;border-top:1px solid var(--gray-border);font-size:.78rem;display:flex;flex-direction:column;gap:3px}
.card .contacts a{color:var(--orange);text-decoration:none;font-weight:600}
.card .contacts a:hover{color:var(--orange-h);text-decoration:underline}
.card .contacts ol.tels{margin:0;padding-left:1.4rem;line-height:1.5}
.card .addr{margin:.3rem 0 .3rem;font-size:.73rem;color:var(--gray);line-height:1.45}
.card .addr-note{margin-top:4px;font-size:.68rem;color:var(--gray);font-style:italic}
.card .site{display:block;margin:0 0 .55rem;font-size:.73rem;font-weight:600;color:var(--orange);text-decoration:none;word-break:break-all}
.card .site:hover{color:var(--orange-h);text-decoration:underline}
.card .share-row{margin-top:.55rem;display:flex;gap:.4rem}
.card .share{
  flex:1 1 auto;padding:.45rem .6rem;border:1px solid var(--gray-border);border-radius:var(--r);
  background:var(--gray-light);color:var(--black);font:inherit;font-size:.75rem;cursor:pointer;
  white-space:nowrap;
}
.card .share:hover{border-color:var(--orange);color:var(--orange-h)}
.card .nav-btn{
  flex:0 0 auto;padding:.45rem .8rem;border:1px solid var(--orange);border-radius:var(--r);
  background:var(--orange);color:var(--white);font:inherit;font-size:.75rem;font-weight:700;
  cursor:pointer;text-decoration:none;white-space:nowrap;
}
.card .nav-btn:hover{background:var(--orange-h);border-color:var(--orange-h);color:var(--white)}
.card .neg{color:#c22b2b;font-weight:700}

/* ── Метки ─────────────────────────── */
.pin-wrap{position:relative}
.pin{
  width:20px;height:20px;border-radius:50% 50% 50% 2px;background:var(--orange);
  border:2.5px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.35);
  transform:rotate(-45deg);
}
.pin::after{content:"";position:absolute;inset:5px;border-radius:50%;background:#fff}
.pin.s-ok{background:#1a7f37}
.pin.s-bad{background:#c22b2b}
.pin.s-other{background:#b05e00}
.pin.approx{background:#1565c0}
.cluster{background:none !important}
.cluster-av{
  width:100%;height:100%;border-radius:50%;background:var(--orange);color:var(--white);
  font-weight:800;font-size:.8rem;display:flex;align-items:center;justify-content:center;
  border:3px solid rgba(255,255,255,.9);box-shadow:0 2px 8px rgba(0,0,0,.25);
}
.cluster-av.c-bad{background:#c22b2b}
.cluster-av.c-mix{background:#6b7480}
.cluster-av span small{font-size:.6rem;font-weight:600;opacity:.8}

/* ── Мобильная версия ──────────────── */
@media (max-width: 760px){
  .map-page{margin-top:90px;height:auto;padding:0 1rem 1.25rem}
  .map-layout{flex-direction:column;gap:0}
  /* порядок: фильтры -> карта -> список */
  .map-aside{display:contents}
  .map-filters{
    order:1;border:1px solid var(--gray-border);border-bottom:none;
    border-radius:var(--r2) var(--r2) 0 0;box-shadow:var(--shadow-sm);
  }
  /* карта = 2/3 экрана минус фиксированная шапка (90px), считается автоматически на любом устройстве */
  .map-box{order:2;height:calc((100vh - 90px) / 1.5);min-height:280px;flex:0 0 auto;border-radius:0}
  .map-listwrap{
    order:3;max-height:40vh;background:var(--white);
    border:1px solid var(--gray-border);border-top:1px solid var(--gray-border);
    border-radius:0 0 var(--r2) var(--r2);box-shadow:var(--shadow-sm);
  }
}
@media (prefers-reduced-motion: reduce){
  *{transition:none !important;animation:none !important}
}

/* ── Страница входа (/map без сессии) ── */
.map-login-page{
  min-height:calc(100vh - 220px);
  display:flex;align-items:center;justify-content:center;
  padding:120px var(--pad) 4rem;
}
.map-login-card{
  background:var(--white);border:1px solid var(--gray-border);border-radius:var(--r2);
  box-shadow:var(--shadow-lg);padding:2.25rem;width:100%;max-width:26rem;text-align:center;
}
.map-login-logo{margin-bottom:1rem}
.map-login-logo img{height:2.6rem;width:auto;object-fit:contain}
.map-login-card h1{font-family:'Montserrat',sans-serif;font-size:1.35rem;font-weight:800;margin-bottom:1.5rem}
.map-login-error{background:#fee2e2;color:#991b1b;padding:.7rem 1rem;border-radius:var(--r);margin-bottom:1rem;font-size:.85rem}
.map-form-group{margin-bottom:1rem;text-align:left}
.map-form-group label{display:block;font-size:.85rem;margin-bottom:.35rem;color:var(--gray)}
.map-form-group input{
  width:100%;padding:.7rem .9rem;border:1px solid var(--gray-border);border-radius:var(--r);
  font:inherit;background:var(--gray-light);
}
.map-form-group input:focus{outline:none;border-color:var(--orange);background:var(--white)}
.map-btn-block{width:100%;justify-content:center;padding:.75rem 1.25rem;font-size:.95rem}
.map-login-note{margin-top:1.25rem;font-size:.75rem;color:var(--gray)}

/* ── Пользователь + выход в шапке раздела ── */
.map-user{margin-left:auto;font-size:.8rem;color:var(--gray);white-space:nowrap}
.map-user a{color:var(--orange);font-weight:600;text-decoration:none}
.map-user a:hover{color:var(--orange-h);text-decoration:underline}

/* ── Кнопка «Где я» ── */
.map-locate a{font-size:1.05rem;line-height:1;font-weight:700;text-decoration:none;text-align:center}

/* ── Тост над картой ── */
.map-toast{
  position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:900;
  background:var(--black);color:var(--white);font-size:.78rem;font-weight:600;
  padding:.55rem 1rem;border-radius:999px;box-shadow:var(--shadow-md);
  max-width:min(420px, 86%);text-align:center;pointer-events:none;
}

/* ── Маршруты: кнопка над картой и панель ── */
.map-routes-ctl{border:1px solid var(--gray-border) !important;border-radius:var(--r) !important;overflow:hidden;box-shadow:var(--shadow-sm)}
.map-routes-btn{width:auto !important;padding:0 12px !important;font-weight:700 !important;font-size:.78rem !important;color:var(--orange) !important;white-space:nowrap}
.map-routes-btn:hover{color:var(--orange-h) !important;background:var(--orange-soft) !important}
.routes-panel{
  position:absolute;top:10px;right:10px;z-index:1000;width:min(320px,calc(100% - 20px));
  max-height:min(560px,75%);overflow-y:auto;
  background:var(--white);border:1px solid var(--gray-border);border-radius:var(--r2);
  box-shadow:var(--shadow-lg);font-size:.8rem;
}
.rp-head{display:flex;justify-content:space-between;align-items:center;padding:.7rem .85rem;border-bottom:1px solid var(--gray-border);position:sticky;top:0;background:var(--white)}
.rp-close{border:0;background:none;font-size:.95rem;color:var(--gray);cursor:pointer;padding:.1rem .3rem}
.rp-close:hover{color:var(--black)}
.rp-list{padding:.4rem}
.rp-item{display:flex;align-items:center;gap:.5rem;padding:.45rem .55rem;border-radius:var(--r);cursor:pointer}
.rp-item:hover{background:var(--gray-light)}
.rp-item.active{background:var(--orange-soft);cursor:default}
.rp-nm{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-cnt{color:var(--gray);font-size:.72rem;white-space:nowrap}
.rp-del{border:0;background:none;color:var(--gray);cursor:pointer;font-size:.8rem;padding:.1rem .3rem;border-radius:6px}
.rp-del:hover{color:var(--bad)}
.rp-btn{display:inline-block;padding:.45rem .8rem;border:1px solid var(--gray-border);border-radius:var(--r);background:var(--gray-light);color:var(--black);font:inherit;font-size:.75rem;font-weight:600;cursor:pointer;text-align:center}
.rp-btn:hover{border-color:var(--orange);color:var(--orange-h)}
.rp-btn.wide{display:block;width:calc(100% - .8rem);margin:.4rem;background:var(--white)}
.rp-btn.danger:hover{border-color:var(--bad);color:var(--bad)}
.rp-edit{border-top:1px solid var(--gray-border);padding:.6rem .4rem .7rem}
.rp-name-input{width:calc(100% - .8rem);margin:.2rem .4rem .4rem;padding:.45rem .6rem;border:1px solid var(--gray-border);border-radius:var(--r);font:inherit;font-size:.8rem}
.rp-name-input:focus{outline:none;border-color:var(--orange)}
.rp-points{list-style:none;margin:0 .4rem;padding:0;display:flex;flex-direction:column;gap:2px}
.rp-points li{display:flex;align-items:center;gap:.4rem;padding:.3rem .35rem;border-radius:var(--r);background:var(--gray-light)}
.rp-num{flex:0 0 auto;width:18px;height:18px;border-radius:50%;background:var(--orange);color:#fff;font-size:.68rem;font-weight:800;display:flex;align-items:center;justify-content:center}
.rp-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.rp-name small{display:block;font-weight:400;color:var(--gray);font-size:.68rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rp-tools{display:flex;gap:2px}
.rp-tools button{border:0;background:var(--white);border-radius:6px;padding:.15rem .38rem;cursor:pointer;font-size:.75rem;color:var(--gray)}
.rp-tools button:hover:not(:disabled){color:var(--orange-h)}
.rp-tools button:disabled{opacity:.35;cursor:default}
.rp-tools button[data-act="rm"]:hover{color:var(--bad)}
.rp-total{margin:.45rem .4rem 0;font-size:.72rem;color:var(--gray);font-weight:600}
.rp-row{display:flex;gap:.4rem;margin:.45rem .4rem 0}
.rp-row .rp-btn{flex:1}
.rp-empty{padding:.9rem .5rem;color:var(--gray);font-size:.75rem;text-align:center}

/* кнопка «В маршрут» в карточке */
.card .route-add{
  flex:0 0 auto;padding:.45rem .5rem;border:1px solid var(--gray-border);border-radius:var(--r);
  background:var(--gray-light);color:var(--black);font:inherit;font-size:.72rem;cursor:pointer;white-space:nowrap;
}
.card .route-add:hover{border-color:var(--orange);color:var(--orange-h)}

/* номер маршрута на метке */
.pin b{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:800;color:#fff;transform:rotate(45deg);z-index:2;
}

/* бегущие пузыри маршрута */
.route-bubble{filter:drop-shadow(0 1px 3px rgba(0,0,0,.45))}

/* ── Визиты («Посетил») ── */
.visit-slot{margin-top:.55rem}
.visit-btn{
  width:100%;padding:.5rem;border:1px dashed var(--orange);border-radius:var(--r);
  background:var(--orange-soft);color:var(--orange-h);font:inherit;font-size:.78rem;font-weight:700;cursor:pointer;
}
.visit-btn:hover{background:var(--orange);color:var(--white);border-style:solid}
.visit-btn.again{width:auto;padding:.3rem .7rem;font-size:.7rem}
.visit-done{display:flex;flex-wrap:wrap;gap:.3rem .45rem;align-items:center;font-size:.75rem}
.visit-badge{font-weight:800;padding:.2rem .6rem;border-radius:999px;white-space:nowrap}
.visit-badge.kp{background:#e5f3e9;color:#14642b}
.visit-badge.fail{background:#fee2e2;color:#991b1b}
.visit-badge.moved{background:#e0f2fe;color:#0369a1}
.visit-detail{color:var(--gray);flex-basis:100%;line-height:1.4}
.visit-date{color:var(--gray);font-size:.68rem;margin-left:auto;white-space:nowrap}
.visit-form .visit-status-row{display:flex;gap:.3rem}
.visit-opt{
  flex:1;padding:.45rem .25rem;border:1px solid var(--gray-border);border-radius:var(--r);
  background:var(--gray-light);font:inherit;font-size:.72rem;font-weight:700;cursor:pointer;white-space:nowrap;
}
.visit-opt.kp:hover{border-color:#1a7f37;color:#14642b;background:#e5f3e9}
.visit-opt.fail:hover{border-color:var(--bad);color:var(--bad);background:#fee2e2}
.visit-opt.moved:hover{border-color:#1565c0;color:#1565c0;background:#e0f2fe}
.visit-input-row{display:flex;gap:.3rem;margin-top:.4rem}
.visit-input{flex:1;min-width:0;padding:.42rem .5rem;border:1px solid var(--gray-border);border-radius:var(--r);font:inherit;font-size:.75rem}
.visit-input:focus{outline:none;border-color:var(--orange)}
.visit-save{padding:.42rem .7rem;border:1px solid var(--orange);border-radius:var(--r);background:var(--orange);color:var(--white);font:inherit;font-size:.75rem;font-weight:700;cursor:pointer;white-space:nowrap}
.visit-save:hover{background:var(--orange-h)}

/* новый адрес от сотрудника — над базовым адресом */
.addr-user{
  margin:.3rem 0;padding:.4rem .6rem;background:var(--orange-soft);
  border-left:3px solid var(--orange);border-radius:6px;font-size:.73rem;color:var(--black);line-height:1.45;
}
.addr-user b{color:var(--orange-h)}
