/* ============================================================
   Собери ребёнка в школу — стили
   Палитра: «школьная доска» (зелёный) + «карандаш» (янтарь) + поля тетради (коралл)
   ============================================================ */
:root{
  /* Фирменная палитра «Клуба добряков» (из брендбука):
     синий #3737BF · бирюзовый #09D4E1 · жёлтый #FFD900 · тёмный #201427 */
  --paper:#F2F5FC; --ink:#201427; --surface:#FFFFFF; --surface-2:#EDF1FA;
  --primary:#3737BF; --primary-deep:#2A2A93;
  --accent:#09D4E1; --accent-soft:#CFF5F9;
  --cyan:#09D4E1; --coral:#09D4E1; --muted:#6C6577; --line:#DCE2F1; --ok:#0AA7B2;
  --font:"Circe Rounded","CirceRounded","Nunito","Segoe UI Rounded","Segoe UI",system-ui,sans-serif;
  --r:16px; --r-sm:10px;
  --shadow:0 1px 2px rgba(28,43,39,.06), 0 8px 24px rgba(28,43,39,.06);
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--paper); color:var(--ink); font-family:var(--font);
  font-size:15px; line-height:1.5; -webkit-font-smoothing:antialiased;}
.wrap{max-width:760px; margin:0 auto; padding:0 16px 120px}
button{font-family:inherit; cursor:pointer; border:none; background:none; color:inherit}
input,select{font-family:inherit; font-size:15px; color:var(--ink)}
h1,h2,h3{margin:0; line-height:1.15}
a{color:var(--primary)}
img{max-width:100%}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- Шапка ---------- */
.top{position:sticky; top:0; z-index:30; background:rgba(242,245,252,.9); backdrop-filter:blur(8px); border-bottom:1px solid var(--line)}
.top-in{max-width:760px; margin:0 auto; padding:10px 16px; display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.mark{display:flex; align-items:center; gap:10px; margin-right:auto; min-width:0}
.mark .pin{width:34px;height:34px;display:grid;place-items:center;flex:none}
.mark .pin img{width:34px;height:34px;display:block;border-radius:50%}
.mark b{font-family:var(--font); font-weight:800; font-size:13.5px; letter-spacing:-.2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; line-height:1.15; text-align:left}
.mark b i{display:block; font-style:normal; font-weight:600; font-size:11px; color:var(--primary); letter-spacing:0; text-align:left}
.nav{display:flex; gap:2px; background:var(--surface-2); border:1px solid var(--line); border-radius:999px; padding:3px}
.nav button{padding:6px 10px; border-radius:999px; font-size:12px; font-weight:700; color:var(--muted); white-space:nowrap}
.nav button.on{background:var(--surface); color:var(--ink); box-shadow:var(--shadow)}
.roletog{display:flex; background:var(--surface-2); border:1px solid var(--line); border-radius:999px; padding:3px}
.roletog button{padding:6px 12px; border-radius:999px; font-size:12.5px; font-weight:700; color:var(--muted)}
.roletog button.on{background:var(--primary); color:#fff}
/* Кастомный выбор роли: системный <select> нельзя скруглить, поэтому свой дропдаун */
.rolepick{margin-left:auto; position:relative}
.rp-btn{display:flex; align-items:center; gap:8px; background:var(--primary); color:#fff;
  border-radius:999px; font-weight:700; font-size:12px; padding:8px 14px; white-space:nowrap}
.rp-btn:hover{background:var(--primary-deep)}
.rp-ar{width:11px; height:11px; flex:none; transition:transform .18s}
.rolepick.open .rp-ar{transform:rotate(180deg)}
.rp-menu{position:absolute; top:calc(100% + 6px); right:0; z-index:50; min-width:210px;
  background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:6px;
  box-shadow:0 10px 30px rgba(32,20,39,.16); display:grid; gap:2px}
.rp-menu[hidden]{display:none}
.rp-menu button{text-align:left; padding:10px 13px; border-radius:11px; font-size:13px; font-weight:600; color:var(--ink)}
.rp-menu button:hover{background:var(--surface-2)}
.rp-menu button.on{background:var(--primary); color:#fff}
.rp-menu .rp-logout{margin-top:4px; border-top:1px solid var(--line); border-radius:0 0 10px 10px; color:var(--coral); font-weight:700}
.rp-menu .rp-logout:hover{background:#e8fafc}

/* ---------- Hero / шаги ---------- */
.hero{padding:28px 0 8px}
.hero .eyebrow{display:inline-flex; align-items:center; gap:7px; font-size:12px; font-weight:700; color:var(--primary);
  letter-spacing:.04em; text-transform:uppercase; background:var(--surface); border:1px solid var(--line); padding:6px 11px; border-radius:999px}
.hero h1{font-family:var(--font); font-weight:700; font-size:clamp(26px,6.5vw,40px); letter-spacing:-.5px; margin:16px 0 0}
.hero h1 .hl{background:linear-gradient(transparent 62%, var(--accent-soft) 62%); padding:0 .05em}
.hero p{color:var(--muted); font-size:16px; max-width:none; margin:12px 0 0}
.steps{display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin:22px 0 8px}
.step{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm); padding:11px 12px}
.step .n{font-family:var(--font); font-size:13px; color:#fff; font-weight:800;
  background:var(--primary); border-radius:6px; padding:1px 7px; display:inline-block}
.step .t{font-size:12.5px; font-weight:600; margin-top:4px; line-height:1.25}
@media(max-width:560px){.steps{grid-template-columns:repeat(2,1fr)}}

/* два периода акции (заказ / выдача) */
.phases{display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:18px}
.phase{display:flex; align-items:flex-start; gap:10px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm); padding:12px 13px; box-shadow:var(--shadow)}
.phase .ph-ic{font-size:18px; line-height:1.1; flex:none}
.phase b{display:block; font-family:var(--font); font-weight:700; font-size:14px; color:var(--primary)}
.phase span{font-size:12.5px; color:var(--muted)}
@media(max-width:560px){.phases{grid-template-columns:1fr}}

/* ---------- Заголовки секций ---------- */
.sec-h{display:flex; align-items:baseline; gap:10px; margin:30px 0 14px; flex-wrap:wrap}
.sec-h h2{font-size:19px; font-weight:800; letter-spacing:-.3px}
.sec-h .sub{color:var(--muted); font-size:13px}

/* ---------- Карточки городов ---------- */
.city-grid{display:grid; gap:12px}
.city{display:block; width:100%; text-align:left; background:var(--surface); border:1px solid var(--line);
  border-radius:var(--r); padding:16px; box-shadow:var(--shadow); transition:transform .12s ease, border-color .12s ease}
.city:hover{transform:translateY(-2px); border-color:#b9c2ea}
.city .row1{display:flex; align-items:center; gap:10px}
.city .cname{font-size:17px; font-weight:800}
.city .cu{color:var(--muted); font-size:12.5px; margin-top:2px}
.city .pct{margin-left:auto; font-family:var(--font); font-weight:700; font-size:18px; color:var(--primary)}
.bar{height:8px; border-radius:99px; background:var(--surface-2); border:1px solid var(--line); overflow:hidden; margin-top:12px}
.bar > i{display:block; height:100%; background:linear-gradient(90deg,var(--primary),var(--ok))}
.city .meta{display:flex; gap:14px; color:var(--muted); font-size:12.5px; margin-top:8px}
.city .meta b{color:var(--ink)}
/* закреплён за компанией: виден для динамики, но не выбирается */
.city-locked{opacity:.58; filter:grayscale(.85); cursor:not-allowed}
.city-locked:hover{transform:none; border-color:var(--line)}
.city-locked .pct{color:var(--muted)}
.city-locked .bar > i{background:var(--muted)}
.city-lock{margin-top:10px; font-size:12px; font-weight:700; color:var(--muted)}

/* ---------- Кураторы (каталог) ---------- */
.cur-grid{display:grid; gap:12px}
.cur-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:16px; box-shadow:var(--shadow)}
.cur-top{display:flex; align-items:center; gap:10px}
.clinks{display:flex; flex-wrap:wrap; gap:8px; margin-top:12px}
.clink{font-size:13px; font-weight:700; padding:8px 13px; border-radius:10px; border:1px solid var(--line); background:var(--surface-2); color:var(--ink)}
.clink.tg{color:#1d6fa5} .clink.max{color:#7a3ea5} .clink.mail{color:#3737BF} .clink.vk{color:#2a5599}

/* ---------- Назад ---------- */
.back{display:inline-flex; align-items:center; gap:6px; color:var(--muted); font-weight:600; font-size:13.5px; padding:14px 0 4px}
.back svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.2}

/* ---------- Шапка города ---------- */
.ch{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:18px; box-shadow:var(--shadow)}
.ch h2{font-size:22px; font-weight:800; letter-spacing:-.3px}
.ch .cur{display:flex; flex-wrap:wrap; gap:6px 14px; color:var(--muted); font-size:13px; margin-top:8px}
.ch .cur b{color:var(--ink)}
.big-bar{height:10px; margin-top:14px}
.legend{display:flex; gap:16px; margin-top:10px; font-size:12.5px; color:var(--muted)}
.legend b{color:var(--ink)}
.ways{margin-top:12px; font-size:12.5px; color:var(--muted); display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.chip{background:var(--surface-2); border:1px solid var(--line); border-radius:99px; padding:4px 11px; font-weight:700; color:var(--ink); font-size:12px}

/* ---------- Вишлист (тетрадь) ---------- */
.list{margin-top:14px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; box-shadow:var(--shadow)}
.item{position:relative; display:flex; align-items:center; gap:14px; padding:16px 16px 16px 26px; border-bottom:1px solid var(--line)}
.item:last-child{border-bottom:none}
.item::before{content:""; position:absolute; left:14px; top:10px; bottom:10px; width:2px; background:var(--coral); opacity:.55; border-radius:2px}
.item .info{min-width:0; flex:1}
.item .nm{font-weight:700; font-size:15.5px}
.item .stt{font-size:12.5px; color:var(--muted); margin-top:4px}
.item .ibar{height:6px; border-radius:99px; background:var(--surface-2); margin-top:9px; overflow:hidden; max-width:230px}
.item .ibar > i{display:block;height:100%; background:var(--accent)}
.item.done .ibar > i{background:var(--ok)}
.buy-links{display:flex; gap:16px; flex-wrap:wrap; margin-top:8px}
.buy-link{display:inline-block; font-size:12.5px; font-weight:700; color:var(--primary)}
.buy-link.ya{color:#7a3ea5}
.link-inp{width:100%; margin-top:6px; padding:7px 10px; border:1px solid var(--line); border-radius:8px; background:var(--surface-2); font-size:12.5px}
.link-inp:focus{outline:2px solid var(--primary); background:#fff}
.stepper{display:flex; align-items:center; border:1px solid var(--line); border-radius:99px; background:var(--surface-2); flex:none}
.stepper button{width:34px;height:34px; font-size:19px; font-weight:700; color:var(--primary); display:grid; place-items:center}
.stepper button:disabled{color:#c2cdc7; cursor:not-allowed}
.stepper .q{min-width:26px; text-align:center; font-weight:800; font-variant-numeric:tabular-nums}
.done-tag{font-size:12.5px; font-weight:700; color:var(--ok); display:inline-flex; align-items:center; gap:5px; flex:none}
.done-tag svg{width:15px;height:15px;stroke:var(--ok);fill:none;stroke-width:2.4}

/* ---------- Нижняя панель корзины ---------- */
.cartbar{position:fixed; left:0; right:0; bottom:0; z-index:40; background:var(--primary); color:#fff}
.cartbar-in{max-width:760px; margin:0 auto; padding:13px 16px; display:flex; align-items:center; gap:12px}
.cartbar .lines{font-size:13px; min-width:0; flex:1; opacity:.92; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.cartbar .lines b{color:var(--accent)}

/* ---------- Кнопки ---------- */
.btn{border-radius:11px; font-weight:700; padding:12px 18px; font-size:14.5px; display:inline-block; text-align:center; text-decoration:none}
.btn-acc{background:var(--accent); color:#0A3A3E}
.btn-acc:active{transform:translateY(1px)}
.btn-ghost{background:var(--surface-2); color:var(--ink); border:1px solid var(--line)}
.btn-primary{background:var(--primary); color:#fff}
.btn-block{width:100%; display:block}
.btn:disabled{opacity:.5; cursor:not-allowed}
.vkbtn{margin-top:8px; color:#2a5599}
.addbtn{display:inline-flex; align-items:center; gap:7px; color:var(--primary); font-weight:700; font-size:13.5px; padding:10px 0}

/* ---------- Модалка / шторка ---------- */
.ov{position:fixed; inset:0; z-index:60; background:rgba(20,30,27,.45); display:flex; align-items:flex-end; justify-content:center}
.sheet{position:relative; background:var(--surface); width:100%; max-width:760px; border-radius:20px 20px 0 0; padding:20px 18px 26px;
  box-shadow:0 -10px 40px rgba(0,0,0,.25); max-height:90vh; overflow:auto}
@media(min-width:640px){.ov{align-items:center}.sheet{border-radius:20px; max-width:480px}}
.sheet h3{font-size:18px; font-weight:800; margin-bottom:4px}
.muted{color:var(--muted); font-size:13px}
.x{position:absolute; top:14px; right:16px; width:30px;height:30px;border-radius:8px; background:var(--surface-2); color:var(--muted); font-size:18px}

/* ---------- Поля ---------- */
.field{margin-top:14px}
.field label{display:block; font-size:12.5px; font-weight:700; margin-bottom:6px}
.field input,.field select,#curSel,#newCity,#newRegion{width:100%; padding:12px 13px; border:1px solid var(--line); border-radius:11px; background:var(--surface-2)}
#curSel{margin-top:6px}
.field input:focus,.field select:focus{outline:2px solid var(--primary); outline-offset:0; background:#fff}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:10px}
.opt-head{margin-top:18px; font-size:12.5px; font-weight:800; color:var(--ink)}
.opt-head span{font-weight:500; color:var(--muted)}
.recap{background:var(--surface-2); border:1px solid var(--line); border-radius:12px; padding:12px 14px; margin-top:14px; font-size:13.5px}
.recap .li{display:flex; justify-content:space-between; padding:3px 0}

/* ---------- Выбор способа получения ---------- */
.ff-list{display:grid; gap:8px}
.ffc{display:flex; gap:11px; align-items:flex-start; border:1px solid var(--line); border-radius:12px; padding:12px 13px; background:var(--surface-2); cursor:pointer}
.ffc input{margin-top:3px; accent-color:var(--primary); width:18px; height:18px}
.ffc-body{display:flex; flex-direction:column; gap:2px}
.ffc-body b{font-size:14.5px}
.ffc-line{font-size:12.5px; color:var(--muted)}
.ffc-note{font-size:12px; color:var(--accent); font-weight:700}
.ffc:has(input:checked){border-color:var(--primary); background:#fff; box-shadow:0 0 0 2px rgba(55,55,191,.14)}

/* ---------- Кабинет / трекинг ---------- */
.track{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:18px; box-shadow:var(--shadow); margin-top:14px}
.track.focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft)}
.track-top{display:flex; align-items:flex-start; gap:10px}
.track-top .cu{color:var(--muted); font-size:12.5px; margin-top:3px}
.badge{font-size:11px; font-weight:800; padding:4px 9px; border-radius:99px; margin-left:auto; white-space:nowrap}
.b-reserved{background:#eef1f2;color:#5b6b66}
.b-ordered{background:#e7eefb;color:#2f5bc0}
.b-arrived{background:var(--accent-soft);color:#0A6A72}
.b-handed{background:#dff1e6;color:#1f6e45}
.b-collected{background:var(--primary);color:#fff}

.flow{display:flex; margin:16px 0}
.flow .node{flex:1; text-align:center; position:relative}
.flow .dot{width:26px;height:26px;border-radius:50%; margin:0 auto; display:grid; place-items:center; background:var(--surface-2); border:2px solid var(--line); font-size:13px; font-weight:800; color:var(--muted)}
.flow .node.on .dot{background:var(--primary); border-color:var(--primary); color:#fff}
.flow .node.cur .dot{background:var(--accent); border-color:var(--accent); color:#0A3A3E; box-shadow:0 0 0 5px var(--accent-soft)}
.flow .lbl{font-size:11px; margin-top:6px; color:var(--muted); font-weight:600}
.flow .node.on .lbl,.flow .node.cur .lbl{color:var(--ink)}
.flow .bar2{position:absolute; top:13px; left:-50%; width:100%; height:2px; background:var(--line); z-index:0}
.flow .node.on .bar2{background:var(--primary)}
.flow .node:first-child .bar2{display:none}
.flow .dot{position:relative; z-index:1}

/* ---------- Передача кода (2 пути) ---------- */
.ho-grid{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:6px}
@media(max-width:600px){.ho-grid{grid-template-columns:1fr}}
.ho-card{border:1px solid var(--line); border-radius:13px; padding:14px; background:var(--surface-2)}
.ho-h{font-weight:800; font-size:13.5px; margin-bottom:4px}
.ho-card .muted{font-size:12.5px}
.upload{display:block; margin-top:10px; text-align:center; border:1px dashed var(--primary); color:var(--primary); font-weight:700;
  font-size:13px; border-radius:11px; padding:11px; background:#fff; cursor:pointer}
.code-ok{color:var(--ok); font-weight:700; font-size:13px; margin:6px 0}
.code-pill{font-family:var(--font); font-weight:700; letter-spacing:1px; font-size:16px; background:#fff; border:1px dashed var(--primary); border-radius:9px; padding:7px 11px; display:inline-block; margin-top:4px}
.qrbox{display:flex; gap:14px; align-items:center; background:#fff; border:1px solid var(--line); border-radius:12px; padding:12px; margin-top:10px}
.qrbox .qr{width:112px;height:112px;background:#fff;border-radius:8px;display:grid;place-items:center;flex:none; border:1px solid var(--line)}
.qrbox .qr img,.qrbox .qr canvas{border-radius:4px}
.qr-fallback{font-size:11px;color:var(--muted);text-align:center;padding:6px}
.thumb{width:84px;height:84px;object-fit:cover;border-radius:9px;border:1px solid var(--line)}
.thumb.big{width:120px;height:120px}

/* ---------- Ответ куратора ---------- */
.reply{background:#e8fafc; border:1px solid #b9ecf1; border-radius:13px; padding:14px; margin-top:8px}
.reply-h{font-size:11.5px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:var(--ok)}
.reply-what{font-weight:800; margin-top:4px}
.reply-note{color:var(--muted); font-style:italic; margin-top:4px; font-size:13.5px}
.reply-photo{margin-top:10px}

/* ---------- Куратор: товары / настройки ---------- */
.crow{display:flex; gap:10px; align-items:center; padding:11px 0; border-bottom:1px solid var(--line)}
.crow:last-child{border-bottom:none}
.crow .nm{font-weight:700; flex:1}
.crow .nm .cu{color:var(--muted); font-size:12px; font-weight:500}
.crow input{width:64px; text-align:center; padding:8px; border:1px solid var(--line); border-radius:9px; background:var(--surface-2)}
.crow .del{color:var(--coral); font-weight:700; font-size:18px; width:30px;height:30px}
.toggle{display:flex; align-items:center; gap:10px; font-weight:700; padding:6px 0; cursor:pointer}
.toggle input{width:20px;height:20px; accent-color:var(--primary)}
.divider{height:1px; background:var(--line); margin:14px 0}

.res-card{background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:14px; margin-top:10px; box-shadow:var(--shadow)}
.res-card .top2{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.res-card .who{font-weight:800}
.res-lines{font-size:13px; color:var(--muted); margin-top:6px}
.res-lines b{color:var(--ink)}

/* ---------- Окно приёмки ---------- */
.seg{display:flex; gap:6px; background:var(--surface-2); border:1px solid var(--line); border-radius:11px; padding:4px}
.seg-i{flex:1; text-align:center; border-radius:8px; padding:9px; font-weight:700; font-size:13.5px; cursor:pointer; color:var(--muted)}
.seg-i input{display:none}
.seg-i:has(input:checked){background:var(--ink); color:#fff}
.checklist{margin-top:12px; display:grid; gap:8px}
.chk{display:flex; gap:10px; align-items:center; border:1px solid var(--line); border-radius:10px; padding:10px 12px; font-size:13.5px; cursor:pointer}
.chk input{width:18px;height:18px; accent-color:var(--primary)}

/* ---------- Прочее ---------- */
.note{font-size:12px; color:var(--muted); margin-top:10px}
.empty{text-align:center; color:var(--muted); padding:34px 16px; border:1px dashed var(--line); border-radius:var(--r); background:var(--surface)}
.toast{position:fixed; left:50%; bottom:84px; transform:translateX(-50%); background:var(--ink); color:#fff; padding:11px 18px;
  border-radius:99px; font-size:13.5px; font-weight:600; z-index:80; box-shadow:var(--shadow); opacity:0; transition:opacity .2s, transform .2s; pointer-events:none}
.toast.show{opacity:1; transform:translateX(-50%) translateY(-4px)}
.foot{max-width:760px; margin:24px auto 0; padding:18px 16px 40px; color:var(--muted); font-size:12px; display:flex; gap:14px; align-items:center; flex-wrap:wrap}
.foot button{color:var(--coral); font-weight:700; font-size:12px}
.foot a{color:var(--primary); font-weight:700; font-size:12px}

/* ---------- Доп. элементы: волонтёры, предупреждения, админ, журнал ---------- */
.off{color:var(--accent); font-weight:700}
.warn{background:#fdece7; border:1px solid #f4c4b5; color:#8a3219; border-radius:12px; padding:11px 13px; font-size:13px; margin-bottom:10px}
.warn b{color:#7a2912}
.hint{background:var(--surface-2); border:1px solid var(--line); color:var(--muted); border-radius:12px; padding:10px 13px; font-size:12.5px; margin-bottom:10px}

/* поля «нужно/волонтёры» в строках товара */
.mini{display:inline-flex; flex-direction:column; gap:3px; font-size:10.5px; font-weight:700; color:var(--muted); text-align:center}
.mini input{width:72px; text-align:center; padding:8px; border:1px solid var(--line); border-radius:9px; background:var(--surface-2)}
.crow{flex-wrap:wrap}

/* строка админа */
.arow{display:flex; gap:12px; align-items:center; justify-content:space-between; padding:12px 0; border-bottom:1px solid var(--line); flex-wrap:wrap}
.arow:last-child{border-bottom:none}
.arow .nm{font-weight:700}
.arow .nm .cu{font-weight:500; color:var(--muted); font-size:12px; margin-top:2px}

/* «вы вошли как» */
.actor{display:flex; align-items:center; gap:10px; background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:10px 14px; margin-top:12px; flex-wrap:wrap}
.actor label{font-size:12px; font-weight:700; color:var(--muted)}
.actor input{flex:1; min-width:140px; padding:9px 12px; border:1px solid var(--line); border-radius:9px; background:var(--surface-2)}

/* админы (супер-админ) */
.admin-card{background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:14px; box-shadow:var(--shadow)}
.admin-top{display:flex; align-items:center; gap:10px}
.admin-top b{font-size:15px}
.admin-top .del{margin-left:auto; color:var(--coral); font-weight:700; font-size:18px; width:30px; height:30px}
.chips-wrap{display:flex; flex-wrap:wrap; gap:6px}
.citychip{font-size:12px; font-weight:700; padding:6px 11px; border-radius:99px; border:1px solid var(--line); background:var(--surface-2); color:var(--muted)}
.citychip.on{background:var(--primary); border-color:var(--primary); color:#fff}

/* статистика (админ) */
.stats-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:10px}
@media(max-width:560px){.stats-grid{grid-template-columns:repeat(2,1fr)}}
.stat{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm); padding:14px 12px; box-shadow:var(--shadow); text-align:center}
.stat-n{font-family:var(--font); font-weight:700; font-size:24px; color:var(--primary); line-height:1}
.stat-l{font-size:12px; color:var(--muted); margin-top:6px}

/* журнал изменений */
.log{display:flex; gap:12px; padding:9px 0; border-bottom:1px dashed var(--line); font-size:13px}
.log:last-child{border-bottom:none}
.log-when{color:var(--muted); font-size:11.5px; white-space:nowrap; padding-top:1px; min-width:74px}
.log-who{font-weight:700}
.log-city{background:var(--surface-2); border:1px solid var(--line); border-radius:99px; padding:1px 8px; font-size:11px; color:var(--muted); margin-left:4px; white-space:nowrap}

.chk2{display:flex; gap:9px; align-items:flex-start; margin-top:10px; font-size:12.5px; color:var(--muted); cursor:pointer}
.chk2 input{margin-top:2px; flex:none}

/* ---------- Переключатель активности куратора ---------- */
.cc-toggle{flex:none; font-size:12px; font-weight:800; padding:6px 12px; border-radius:999px; white-space:nowrap; cursor:pointer}
.cc-toggle.on{background:#e6f9ec; color:#127a3a; border:1px solid #b7ecc8}
.cc-toggle.vac{background:#fff1e0; color:#a6631a; border:1px solid #f3d3a6}
.contact-card.off{opacity:.72}
.cc-off-note{background:#fff1e0; border:1px solid #f3d3a6; border-radius:10px; padding:8px 11px; margin:8px 0 0; font-size:12.5px; color:#8a5312}

/* ---------- Диаграммы в админке ---------- */
.bar-chart{display:grid; gap:9px}
.bar-row{display:grid; grid-template-columns:180px 1fr 44px; align-items:center; gap:10px}
.bar-lab{font-size:13px; font-weight:600; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.bar-track{height:16px; background:var(--surface-2); border-radius:99px; overflow:hidden}
.bar-track > i{display:block; height:100%; background:linear-gradient(90deg,var(--primary),var(--cyan)); border-radius:99px}
.bar-val{font-size:13px; font-weight:800; color:var(--primary); text-align:right; font-variant-numeric:tabular-nums}
@media(max-width:560px){.bar-row{grid-template-columns:120px 1fr 36px}}

.stack{display:flex; height:22px; border-radius:99px; overflow:hidden; background:var(--surface-2)}
.stack > i{display:block; height:100%}
.s-ours{background:var(--primary)} .s-others{background:var(--cyan)} .s-rest{background:#d7ddee}
.stack-leg{display:flex; flex-wrap:wrap; gap:14px; margin-top:10px; font-size:13px}
.stack-leg b:first-child{display:inline-block; width:11px; height:11px; border-radius:3px; margin-right:6px; vertical-align:middle}
.d-ours{background:var(--primary)} .d-others{background:var(--cyan)} .d-rest{background:#d7ddee}

/* ---------- Таблица источников (админ) ---------- */
.src-table{width:100%; border-collapse:collapse; font-size:13.5px}
.src-table th,.src-table td{text-align:left; padding:8px 10px; border-bottom:1px solid var(--line)}
.src-table th{font-size:12px; color:var(--muted); font-weight:700}
.src-table td:not(:first-child),.src-table th:not(:first-child){text-align:right; font-variant-numeric:tabular-nums}
.src-table tbody tr:last-child td{border-bottom:none}

/* ---------- Пункт выдачи в карточке присланного кода ---------- */
.res-pickup{background:var(--surface-2); border:1px solid var(--line); border-radius:10px;
  padding:8px 11px; margin:8px 0; font-size:12.5px; font-weight:700; color:var(--primary)}
.res-pickup span{display:block; font-weight:500; color:var(--muted); margin-top:2px}

/* ---------- Блок с переходом на сайт фонда ---------- */
.fund-cta{margin-top:26px; background:var(--primary); border-radius:var(--r); padding:18px 20px}
.fund-links{display:flex; gap:10px; flex-wrap:wrap; justify-content:center}
.fund-cta .fbtn{display:inline-block; padding:12px 20px; font-size:14px; font-weight:800; white-space:nowrap;
  border-radius:999px; background:#fff; color:var(--primary); text-decoration:none}
.fund-cta .fbtn:hover{background:#eef1fb}
@media(max-width:560px){.fund-cta{flex-direction:column; align-items:flex-start}}

/* ---------- Фильтры городов ---------- */
.filters{display:grid; grid-template-columns:1fr 260px; gap:10px; margin-bottom:14px}
.filters input{width:100%; padding:12px 14px; font-family:inherit; font-size:14.5px;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm); color:var(--ink)}
.filters input:focus{outline:2px solid var(--primary); outline-offset:-1px}
/* кастомный дропдаун фильтра (скруглённый, как выбор роли) */
.dd{position:relative}
.dd-btn{width:100%; display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:12px 14px; font-size:14.5px; font-weight:600; color:var(--ink);
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm); text-align:left}
.dd-btn:hover{border-color:#b9c2ea}
.dd.open .dd-btn{outline:2px solid var(--primary); outline-offset:-1px}
.dd-ar{width:12px; height:12px; flex:none; color:var(--muted); transition:transform .18s}
.dd.open .dd-ar{transform:rotate(180deg)}
.dd-menu{position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:50;
  background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:6px;
  box-shadow:0 12px 30px rgba(32,20,39,.16); display:grid; gap:2px}
.dd-menu[hidden]{display:none}
.dd-menu button{text-align:left; padding:10px 13px; border-radius:10px; font-size:13.5px; font-weight:600; color:var(--ink)}
.dd-menu button:hover{background:var(--surface-2)}
.dd-menu button.on{background:var(--primary); color:#fff}
@media(max-width:560px){.filters{grid-template-columns:1fr}}
.calias{display:flex; flex-wrap:wrap; gap:5px; margin-top:6px}
.calias span{background:var(--surface-2); border:1px solid var(--line); border-radius:999px;
  padding:2px 9px; font-size:11.5px; color:var(--muted)}

/* ---------- О проекте ---------- */
.about-stats{display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:16px}
.about-stats .ast{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm); padding:14px 12px; box-shadow:var(--shadow); text-align:center}
.about-stats .ast b{display:block; font-family:var(--font); font-weight:700; font-size:24px; color:var(--primary); line-height:1}
.about-stats .ast span{display:block; margin-top:6px; font-size:12px; color:var(--muted)}
@media(max-width:560px){.about-stats{grid-template-columns:1fr}}
.about-steps{display:grid; gap:10px}
.about-steps .astep{display:flex; gap:12px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm); padding:14px; box-shadow:var(--shadow)}
.about-steps .astep .n{flex:none; width:28px; height:28px; border-radius:8px; background:var(--primary); color:#fff; font-family:var(--font); font-weight:700; display:grid; place-items:center; font-size:14px}
.about-steps .astep b{display:block; font-size:14.5px; margin-bottom:2px}
.about-steps .astep p{margin:0; font-size:13px; color:var(--muted)}
.about-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm); padding:14px 16px; box-shadow:var(--shadow)}
.about-card p{margin:0; font-size:13.5px; color:var(--muted); line-height:1.55}

/* ---------- Контакт для отчёта (кабинет дарителя) ---------- */
.ce{background:var(--surface-2); border:1px solid var(--line); border-radius:12px; padding:12px; margin:6px 0 10px}
.ce-h{font-size:12.5px; font-weight:800; margin-bottom:8px}
.ce-h span{font-weight:500; color:var(--muted)}
.ce-row{display:grid; grid-template-columns:1fr 1fr 1.4fr auto; gap:8px}
.ce-row input,.ce-row select{padding:10px; border:1px solid var(--line); border-radius:9px; background:#fff; min-width:0}
.ce-row .btn{padding:10px 14px}
@media(max-width:600px){.ce-row{grid-template-columns:1fr 1fr}.ce-row .btn{grid-column:1 / -1}}

/* ---------- Отправка отчёта (куратор) ---------- */
.report{margin-top:10px}

/* ---------- Контакты города (админ ведёт, даритель видит) ---------- */
.clink.wa{color:#1f8a4c} .clink.phone{color:#3a6b46}
.cmark{font-size:11.5px; font-weight:700; padding:3px 9px; border-radius:99px; border:1px solid var(--line); background:var(--surface-2); color:var(--muted)}
.cmark.tg{color:#1d6fa5} .cmark.max{color:#7a3ea5} .cmark.wa{color:#1f8a4c} .cmark.vk{color:#2a5599} .cmark.mail{color:#3a6b46} .cmark.phone{color:#3a6b46}

/* админ: карточки редактирования контактов */
.contacts-list{display:grid; gap:12px; margin-top:4px}
.contact-card{background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:14px; box-shadow:var(--shadow)}
/* сворачиваемая карточка куратора */
.contact-card{padding:0}
.cc-sum{list-style:none; cursor:pointer; display:flex; align-items:center; gap:9px; padding:13px 14px; user-select:none}
.cc-sum::-webkit-details-marker{display:none}
.cc-chev{flex:none; color:var(--muted); font-size:13px; transition:transform .15s ease}
details[open] > .cc-sum .cc-chev{transform:rotate(90deg)}
.cc-sum-name{font-weight:800; font-size:15px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.cc-sum-vac{flex:none; font-size:11px; font-weight:800; padding:3px 9px; border-radius:999px; background:#fff1e0; color:#a6631a; border:1px solid #f3d3a6}
.cc-sum-sub{margin-left:auto; flex:none; color:var(--muted); font-size:12px; white-space:nowrap}
.cc-body{padding:0 14px 14px}
.contact-card[open]{border-color:#b9c2ea}
/* сворачиваемые разделы кабинета админа */
.adm-sec{margin-top:14px; border:1px solid var(--line); border-radius:14px; background:var(--surface); box-shadow:var(--shadow); overflow:hidden}
.adm-sum{width:100%; display:flex; align-items:center; gap:10px; padding:14px 16px; cursor:pointer; text-align:left; background:transparent}
.adm-sum:hover{background:var(--surface-2)}
.adm-sum-h{display:flex; flex-direction:column; gap:2px; min-width:0}
.adm-sum-h b{font-family:var(--font); font-size:16px; font-weight:800}
.adm-sum-h .sub{color:var(--muted); font-size:12px; font-weight:600}
.adm-chev{margin-left:auto; flex:none; color:var(--muted); font-size:14px; transition:transform .15s ease}
.adm-sec.is-open .adm-chev{transform:rotate(90deg)}
.adm-sec.is-open .adm-sum{border-bottom:1px solid var(--line)}
.adm-body{padding:12px 16px 16px}
.cc-top{display:flex; align-items:center; gap:10px}
.cc-name{flex:1; min-width:0; font-weight:700; padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:var(--surface-2)}
.cc-name:focus{outline:2px solid var(--primary); background:#fff}
.cc-top .del{color:var(--coral); font-weight:700; font-size:18px; width:30px; height:30px; flex:none}
.cc-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin-top:10px}
@media(min-width:560px){.cc-grid{grid-template-columns:repeat(3,1fr)}}
.cc-grid .mini.ch{display:flex; flex-direction:column; align-items:stretch; gap:4px; text-align:left}
.cc-grid .mini.ch span{font-size:11px; font-weight:700; color:var(--muted)}
.cc-grid .mini.ch input{width:100%; text-align:left; padding:9px 10px; border:1px solid var(--line); border-radius:9px; background:var(--surface-2)}
.cc-grid .mini.ch input:focus{outline:2px solid var(--primary); background:#fff}
.cc-marks{display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin-top:10px; font-size:12px; color:var(--muted); font-weight:600}

/* даритель: контакты внутри карточки города / шторки */
.contacts-block{display:grid; gap:10px; margin-top:10px}
.contact-row{border-top:1px solid var(--line); padding-top:10px}
.contact-row:first-child{border-top:none; padding-top:0}
.ct-name{font-weight:700; font-size:14px}
.contact-row .clinks{margin-top:8px}
