/* База экспертов КИПИМ — дизайн v2 (Claude Design, июль 2026).
   Визуальный язык: нулевые скругления, вместо них clip-path-полигоны («оригами»),
   фирменная зелёная палитра сайта клуба, Inter.
   Мобайл-фёрст (≤900px — телефон/Mini App), @media >900px — десктоп. */

:root{
  --bg:#fafaff; --bg2:#f4f4f9; --card:#ffffff; --card2:#f4f4f9;
  --text:#2d2d44; --muted:#6b6b8d; --border:#e0e0ee; --heading:#1a1a2e;
  --green:#43a047; --greenHover:#388e3c; --greenDeep:#2e7d32; --greenDark:#1b5e20;
  --greenBg:#e8f5e9; --greenBg2:#f1f8e9;
  --gold:#c99a3d; --goldText:#3a2c08;
  --ph1:#ececf4; --ph2:#f4f4f9;
  --shadow:rgba(0,0,0,.06); --shadow2:rgba(0,0,0,.12); --overlay:rgba(26,26,46,.55);
  /* статусы карточки эксперта */
  --stDraftDot:#9e9eb8; --stModDot:#c99a3d; --stModBg:#fdf6e6; --stModBd:#f0e0b8;
  --stPubDot:#43a047; --stPubBd:#c8e6c9;
  --stRejDot:#c0433b; --stRejBg:#fbeceb; --stRejBd:#f0c9c6;
  --stHidDot:#6b6b8d;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --bg:#14141f; --bg2:#1a1a28; --card:#1e1e30; --card2:#26263a;
  --text:#ececf4; --muted:#9e9eb8; --border:#32324a; --heading:#fafaff;
  --green:#43a047; --greenHover:#4caf50; --greenDeep:#7bc67f; --greenDark:#1b5e20;
  --greenBg:#233a25; --greenBg2:#1c2e1e;
  --gold:#d8b357; --goldText:#241a05;
  --ph1:#26263a; --ph2:#2d2d44;
  --shadow:rgba(0,0,0,.35); --shadow2:rgba(0,0,0,.5); --overlay:rgba(6,6,12,.7);
  --stModBg:#33280f; --stModBd:#5a4718;
  --stPubBd:#2f5c33; --stRejBg:#3a1f1d; --stRejBd:#5e2f2b;
}}
:root[data-theme="dark"]{
  --bg:#14141f; --bg2:#1a1a28; --card:#1e1e30; --card2:#26263a;
  --text:#ececf4; --muted:#9e9eb8; --border:#32324a; --heading:#fafaff;
  --green:#43a047; --greenHover:#4caf50; --greenDeep:#7bc67f; --greenDark:#1b5e20;
  --greenBg:#233a25; --greenBg2:#1c2e1e;
  --gold:#d8b357; --goldText:#241a05;
  --ph1:#26263a; --ph2:#2d2d44;
  --shadow:rgba(0,0,0,.35); --shadow2:rgba(0,0,0,.5); --overlay:rgba(6,6,12,.7);
  --stModBg:#33280f; --stModBd:#5a4718;
  --stPubBd:#2f5c33; --stRejBg:#3a1f1d; --stRejBd:#5e2f2b;
}

*{box-sizing:border-box;}
/* Видимость в JS переключается через el.hidden — правило должно бить любой display */
[hidden]{display:none !important;}
body{margin:0;-webkit-font-smoothing:antialiased;font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);color:var(--text);}
a{color:var(--greenDeep);text-decoration:none;} a:hover{opacity:.82;}
input,textarea,button{font-family:inherit;}
.wrap{max-width:520px;margin:0 auto;min-height:100vh;background:var(--bg);display:flex;flex-direction:column;}
.ic{display:inline-block;vertical-align:middle;flex:0 0 auto;}
.scroll::-webkit-scrollbar{width:0;height:0;} .scroll{scrollbar-width:none;}
@keyframes up{from{transform:translateY(24px);opacity:0;}to{transform:translateY(0);opacity:1;}}
@keyframes fade{from{opacity:0;}to{opacity:1;}}
@keyframes shimmer{0%{opacity:1;}50%{opacity:.55;}100%{opacity:1;}}

/* ── Шапка (мобайл: градиентная лента) ── */
.hd{background:linear-gradient(150deg,#43a047 0%,#2e7d32 55%,#1b5e20 100%);
    padding:calc(env(safe-area-inset-top,0px) + 26px) 16px 16px;position:sticky;top:0;z-index:20;}
.hd--admin{background:linear-gradient(150deg,#2e7d32 0%,#1b5e20 60%,#1a3a1a 100%);}
.hd__top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;}
.hd__brand{display:flex;align-items:center;gap:11px;min-width:0;}
/* На мобиле логотипа-картинки нет (только текст на градиенте) — как в макете */
.hd__logoimg,.hd__divider{display:none;}
.hd__title{color:#fff;font-size:16px;font-weight:800;letter-spacing:-.2px;line-height:1.15;}
.hd__sub{color:#c8e6c9;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;line-height:1.3;}
.hd__side{display:flex;align-items:center;gap:8px;flex:0 0 auto;}
.hd__icon{width:34px;height:34px;border:0;background:rgba(255,255,255,.16);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}
.auth-btn{border:0;background:#fff;color:var(--greenDeep);padding:9px 15px;font-size:12.5px;font-weight:800;cursor:pointer;white-space:nowrap;font-family:inherit;
  clip-path:polygon(4% 8%,96% 0%,100% 88%,94% 100%,3% 95%,0% 12%);}
.auth-user{display:flex;align-items:center;gap:7px;color:#fff;font-size:12.5px;font-weight:700;max-width:150px;}
.auth-user__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.auth-user .hd__icon{width:30px;height:30px;}
.seg{display:flex;gap:3px;background:rgba(255,255,255,.14);padding:3px;}
.seg a,.seg button{flex:1;text-align:center;padding:9px;color:#e8f5e9;font-size:13px;font-weight:600;cursor:pointer;border:0;background:transparent;font-family:inherit;}
.seg .active{background:#fff;color:var(--greenDeep);font-weight:700;clip-path:polygon(0 0,100% 0,99% 100%,0 96%);}
.seg a[hidden]{display:none;}
/* Ссылка наружу — на сайт клуба: приглушена, чтобы не спорить с вкладками. */
.seg__ext{opacity:.75;}
.seg__ext::after{content:' ↗';font-size:11px;}

/* ── Hero (мобайл — просто контейнер поиска) ── */
.hero__title,.hero__sub{display:none;margin:0;}
.hero__inner{padding:14px 16px 8px;}

/* ── Поиск / кнопки ── */
.search{display:flex;gap:8px;}
.search__box{flex:1;display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--border);padding:0 12px;}
.search__box input{flex:1;border:0;outline:0;background:transparent;font-size:14px;color:var(--text);padding:11px 0;min-width:0;}
.btn{border:1px solid var(--border);background:var(--card);color:var(--text);padding:0 18px;font-size:14px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:inherit;}
.btn--primary{background:var(--green);color:#fff;border-color:var(--green);clip-path:polygon(4% 8%,96% 0%,100% 88%,94% 100%,3% 95%,0% 12%);}
.btn--primary:hover{background:var(--greenHover);}
.btn--danger{background:var(--card);color:#c0433b;border-color:#f0c9c6;}
.btn:disabled{opacity:.5;cursor:default;}

/* ── Теги-фильтры ── */
.tags{display:flex;flex-wrap:wrap;gap:8px;padding:6px 16px 12px;}
.chip{flex:0 0 auto;white-space:nowrap;padding:8px 14px;background:var(--card);color:var(--text);border:1px solid var(--border);font-size:12.5px;font-weight:600;cursor:pointer;font-family:inherit;}
.chip--on{background:var(--green);color:#fff;border-color:var(--green);font-weight:700;}
.chip--reset{background:transparent;color:var(--muted);border:1px dashed var(--border);font-weight:600;}
.chip--more{background:transparent;color:var(--greenDeep);border-style:dashed;border-color:var(--green);}
.chip__n{font-style:normal;opacity:.55;margin-left:6px;font-size:11px;font-weight:700;}
.count{padding:0 16px 4px;font-size:12px;font-weight:600;color:var(--muted);}

/* ── Сетка карточек ── */
.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:8px 16px 16px;}
.card{position:relative;background:var(--card);border:1px solid var(--border);overflow:hidden;cursor:pointer;box-shadow:0 4px 24px var(--shadow);display:flex;flex-direction:column;transition:box-shadow .15s,transform .15s;}
.card:hover{box-shadow:0 8px 28px var(--shadow2);transform:translateY(-1px);}
/* Наведение: зелёные уголки-скобки, едва заметные */
.card::before,.card::after{content:'';position:absolute;width:16px;height:16px;border:2px solid var(--green);opacity:0;transition:opacity .18s ease;pointer-events:none;z-index:2;}
.card::before{top:0;left:0;border-right:0;border-bottom:0;}
.card::after{bottom:0;right:0;border-left:0;border-top:0;}
.card:hover::before,.card:hover::after{opacity:.75;}
/* «Проверен КИПИМ»: у бейджа есть подсказка — намекаем курсором и знаком вопроса */
.badge--verified,.badge-lg--verified{cursor:help;}
.badge-q{font-style:normal;font-size:10px;width:14px;height:14px;margin-left:5px;border-radius:50%;border:1px solid currentColor;display:inline-flex;align-items:center;justify-content:center;opacity:.75;}
.card--top{border-color:var(--gold);}
.card__ribbon{height:3px;background:linear-gradient(90deg,var(--green),var(--greenDark));}
.card--top .card__ribbon{background:linear-gradient(90deg,var(--gold),#e6c878);}
.photo{position:relative;aspect-ratio:1/1;background:repeating-linear-gradient(135deg,var(--ph1) 0 9px,var(--ph2) 9px 18px);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.photo img{width:100%;height:100%;object-fit:cover;}
/* Без фото — логотип КИПИМ на цветной подложке. Белый силуэт из зелёного PNG
   делает filter: любой цвет фона, один файл. Цвет стабилен для карточки (hash id). */
.photo--logo{display:flex;align-items:center;justify-content:center;}
/* Два класса в селекторе — не украшение: правило `.photo img{width:100%;
   height:100%;object-fit:cover}` специфичнее одиночного класса и растягивало
   логотип на всю плитку с обрезкой краёв (скриншот владельца 05.08.2026).
   Пара классов перевешивает класс+тег при любом порядке в файле. */
.photo--logo .photo__logo{width:44%;height:auto;max-width:110px;object-fit:contain;filter:brightness(0) invert(1);opacity:.88;}
.ep__ph{width:100%;min-height:220px;}
.preview__ph{width:100%;height:100%;}
.phc-0{background:#2e6b45;} .phc-1{background:#2f5d8a;} .phc-2{background:#5f4b8b;}
.phc-3{background:#1f6f6b;} .phc-4{background:#96582f;} .phc-5{background:#7a4463;}
.photo__ph{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--muted);opacity:.75;}
.badge{position:absolute;display:inline-flex;align-items:center;gap:3px;font-size:9.5px;font-weight:800;}
.badge--verified{top:8px;left:8px;background:var(--green);color:#fff;padding:3px 9px 3px 7px;clip-path:polygon(0 0,100% 0,94% 100%,0 100%);}
.badge--top{top:8px;right:8px;background:var(--gold);color:var(--goldText);padding:3px 7px 3px 9px;clip-path:polygon(6% 0,100% 0,100% 100%,0 100%);}
.card__body{padding:10px 11px 12px;display:flex;flex-direction:column;gap:6px;}
.card__name{font-size:13.5px;font-weight:800;color:var(--heading);line-height:1.2;}
.card__tags{display:flex;flex-wrap:wrap;gap:4px;}
.tag{font-size:10px;font-weight:700;color:var(--greenDeep);background:var(--greenBg);padding:2px 7px;}
.card__kw{font-size:11px;color:var(--muted);line-height:1.4;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;min-height:calc(1.4em * 2);}

/* ── Скелетоны загрузки ── */
.sk{background:var(--card);border:1px solid var(--border);overflow:hidden;animation:shimmer 1.4s ease-in-out infinite;}
.sk__ribbon{height:3px;background:var(--card2);}
.sk__photo{aspect-ratio:1/1;background:repeating-linear-gradient(135deg,var(--ph1) 0 9px,var(--ph2) 9px 18px);}
.sk__body{padding:10px 11px 12px;}
.sk__line{height:12px;background:var(--card2);}
.sk__line--sm{height:9px;margin-top:8px;}

/* ── Пагинация ── */
.more{padding:0 16px 24px;display:flex;justify-content:center;}
.more__btn{background:var(--card);color:var(--greenDeep);border:1px solid var(--border);padding:11px 22px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;}
.more__btn:hover{border-color:var(--green);}
.more__loading{font-size:12.5px;font-weight:600;color:var(--muted);padding:11px 0;}

/* ── Модалка эксперта (bottom sheet на мобиле) ── */
.overlay{position:fixed;inset:0;background:var(--overlay);z-index:50;display:flex;align-items:flex-end;animation:fade .2s ease;}
.sheet{width:100%;max-width:520px;margin:0 auto;max-height:94vh;overflow-y:auto;background:var(--bg);animation:up .3s cubic-bezier(.2,.8,.2,1);
  clip-path:polygon(0 1.2%,3% 0,100% .6%,100% 100%,0 100%);}
/* Фото в модалке показывается ЦЕЛИКОМ. Было: жёсткие 270px + object-fit:cover —
   портрет обрезался по центру, и от человека оставалась полоса без лица.
   Высота теперь по картинке, с потолком, чтобы вертикальный снимок не выдавливал
   текст карточки за экран. Полоски фона по краям — это подложка, а не дыра. */
.sheet__photo{position:relative;height:auto;min-height:200px;max-height:min(64vh,540px);
  background:repeating-linear-gradient(135deg,var(--ph1) 0 12px,var(--ph2) 12px 24px);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.sheet__photo img{width:100%;height:auto;max-height:min(64vh,540px);object-fit:contain;}
.sheet__photo .photo__ph{font-size:12px;opacity:.7;}
.sheet__close{position:absolute;top:16px;right:14px;width:34px;height:34px;border:0;background:rgba(26,26,46,.55);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);}
.sheet__body{padding:18px 18px 26px;display:flex;flex-direction:column;gap:14px;}
.sheet__name{font-size:23px;font-weight:800;color:var(--heading);letter-spacing:-.3px;}
.badge-lg{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:800;}
.badge-lg--verified{background:var(--green);color:#fff;padding:4px 12px 4px 10px;clip-path:polygon(0 0,100% 0,95% 100%,0 100%);}
.badge-lg--top{position:absolute;top:16px;left:14px;background:var(--gold);color:var(--goldText);font-size:11px;padding:5px 13px 5px 11px;clip-path:polygon(0 0,100% 0,95% 100%,0 100%);}
.sheet__head-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.sheet__tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}
.sheet__tags .tag{font-size:12px;padding:4px 11px;}
.sheet__kw{font-size:13px;color:var(--muted);line-height:1.5;margin-top:10px;}
.divider{height:1px;background:var(--border);}
.block__h{font-size:12px;font-weight:800;color:var(--heading);text-transform:uppercase;letter-spacing:1px;margin-bottom:6px;}
.block__text{font-size:13.5px;color:var(--text);line-height:1.55;}
.proj{display:flex;gap:9px;align-items:flex-start;background:var(--card);border:1px solid var(--border);border-left:3px solid var(--green);padding:11px 13px;font-size:13px;color:var(--text);line-height:1.45;margin-bottom:8px;}
.stats{display:flex;gap:18px;background:var(--greenBg2);padding:12px 14px;}
.stats span{font-size:12px;color:var(--muted);display:inline-flex;align-items:baseline;gap:6px;}
.stats b{font-size:16px;font-weight:800;color:var(--heading);}
.stats b.g{color:var(--greenDeep);}

/* Аудитория: канал в Telegram и подписчики */
.aud{display:flex;flex-wrap:wrap;gap:10px;padding:12px 14px 0;}
.aud__item{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);background:var(--card2);padding:8px 12px;text-decoration:none;}
a.aud__item:hover{border-color:var(--green);}
.aud__n{display:block;font-size:14px;font-weight:800;color:var(--heading);line-height:1.1;}
.aud__l{display:block;font-size:11px;color:var(--muted);}
.reveal-btn{width:100%;background:var(--green);color:#fff;border:0;padding:16px;font-size:15px;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;
  clip-path:polygon(1% 12%,99% 0%,100% 86%,97% 100%,1% 97%,0% 16%);}
.reveal-btn:hover{background:var(--greenHover);}
.contacts{animation:fade .3s ease;display:flex;flex-direction:column;gap:10px;}
.contacts__row{display:flex;gap:10px;flex-wrap:wrap;}
.contact{flex:1 1 45%;min-width:0;display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--border);padding:13px;color:var(--text);}
/* Текстовая колонка внутри контакта. Без min-width:0 flex-элемент не сжимается
   меньше своего содержимого, и длинный ник или телефон (@Natalya_travkin,
   +79111746419) распирал карточку — на узком экране надпись вылезала за рамку.
   Переносим по любому символу: это идентификатор, а не фраза, делить его по
   словам негде. min-width:150px у самой карточки убран по той же причине:
   на 360px две колонки по 150 + отступы уже не помещались. */
.contact>span:last-child{min-width:0;flex:1 1 auto;}
.contact b{overflow-wrap:anywhere;word-break:break-word;}
.contact__ic{width:34px;height:34px;background:var(--greenBg);display:flex;align-items:center;justify-content:center;flex:0 0 auto;
  clip-path:polygon(30% 0%,70% 0%,100% 30%,100% 70%,70% 100%,30% 100%,0% 70%,0% 30%);}
.contact__label{display:block;font-size:10px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.5px;}
.contact b{font-size:13.5px;}
.note{display:flex;gap:8px;align-items:flex-start;background:var(--greenBg);padding:12px 13px;font-size:12px;color:var(--text);line-height:1.5;}

/* ── Кабинет ── */
.cab{padding:16px;display:flex;flex-direction:column;gap:16px;}
.cab-status{padding:16px;background:var(--card2);border:1px solid var(--border);}
.cab-status__row{display:flex;align-items:center;gap:10px;}
.cab-status__dot{width:10px;height:10px;border-radius:999px;flex:0 0 auto;background:var(--stDraftDot);box-shadow:0 0 0 4px rgba(158,158,184,.18);}
.cab-status__cap{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;}
.cab-status__label{font-size:17px;font-weight:800;color:var(--stDraftDot);}
.cab-status__note{font-size:12.5px;color:var(--muted);margin-top:8px;line-height:1.4;}
.cab-status--published{background:var(--greenBg);border-color:var(--stPubBd);} .cab-status--published .cab-status__dot{background:var(--stPubDot);box-shadow:0 0 0 4px rgba(67,160,71,.18);} .cab-status--published .cab-status__label{color:var(--stPubDot);}
.cab-status--pending{background:var(--stModBg);border-color:var(--stModBd);} .cab-status--pending .cab-status__dot{background:var(--stModDot);box-shadow:0 0 0 4px rgba(201,154,61,.2);} .cab-status--pending .cab-status__label{color:var(--stModDot);}
.cab-status--rejected{background:var(--stRejBg);border-color:var(--stRejBd);} .cab-status--rejected .cab-status__dot{background:var(--stRejDot);box-shadow:0 0 0 4px rgba(192,67,59,.18);} .cab-status--rejected .cab-status__label{color:var(--stRejDot);}
.cab-status--hidden .cab-status__dot{background:var(--stHidDot);box-shadow:0 0 0 4px rgba(107,107,141,.18);} .cab-status--hidden .cab-status__label{color:var(--stHidDot);}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.tile{background:var(--card);border:1px solid var(--border);border-top:3px solid var(--border);padding:16px;box-shadow:0 4px 24px var(--shadow);}
.tile--g{border-top-color:var(--green);}
.tile__n{font-size:28px;font-weight:800;color:var(--heading);margin-top:6px;}
.tile__n.g{color:var(--green);}
.tile__l{font-size:12px;font-weight:600;color:var(--muted);margin-top:2px;}
.cap{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:1.5px;margin:0 0 8px 2px;}
.preview{background:var(--card);border:1px solid var(--border);overflow:hidden;box-shadow:0 4px 24px var(--shadow);}
.preview__photo{position:relative;height:170px;background:repeating-linear-gradient(135deg,var(--ph1) 0 11px,var(--ph2) 11px 22px);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.preview__photo img{width:100%;height:100%;object-fit:cover;}
.preview__photo .badge--verified{top:10px;left:10px;font-size:11px;padding:4px 11px 4px 9px;}
.preview__body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:10px;}
.preview__name{font-size:18px;font-weight:800;color:var(--heading);}
.preview__body .tag{font-size:11px;padding:3px 9px;}
.preview__body .sheet__kw{font-size:12.5px;margin-top:0;line-height:1.45;}
.preview__body .block__h{font-size:11px;}
.preview__body .block__text{font-size:12.5px;color:var(--muted);line-height:1.5;}
.hint{display:flex;gap:10px;align-items:flex-start;background:var(--greenBg2);border:1px dashed var(--green);padding:14px;font-size:12.5px;color:var(--text);line-height:1.5;}
.gate,.empty{background:var(--card);border:1px solid var(--border);padding:24px;margin:16px;text-align:center;color:var(--muted);line-height:1.5;}

/* ── Кабинет: приглашение и форма ── */
.cab-actions{display:flex;gap:8px;flex-wrap:wrap;}
.cab-actions .btn{flex:1 1 auto;min-width:150px;padding:13px 16px;font-size:13.5px;}
.invite{background:var(--card);border:1px solid var(--border);box-shadow:0 4px 24px var(--shadow);padding:22px;display:flex;flex-direction:column;gap:12px;}
.invite__h{font-size:19px;font-weight:800;color:var(--heading);}
.invite p{margin:0;font-size:13.5px;color:var(--text);line-height:1.55;}
.invite__list{margin:0;padding-left:18px;font-size:13px;color:var(--muted);line-height:1.7;}
.invite .btn{align-self:flex-start;padding:14px 22px;font-size:14px;}

.form{background:var(--card);border:1px solid var(--border);box-shadow:0 4px 24px var(--shadow);padding:20px;display:flex;flex-direction:column;gap:16px;}
.field{display:flex;flex-direction:column;gap:6px;}
.field__l{font-size:12px;font-weight:700;color:var(--heading);text-transform:uppercase;letter-spacing:.5px;}
.field__l b{color:#c0433b;}
.field__l i{font-style:normal;font-weight:500;color:var(--muted);text-transform:none;letter-spacing:0;font-size:11.5px;}
.field__hint{font-size:11.5px;color:var(--muted);margin-top:6px;}
.field input,.field textarea{width:100%;padding:12px 14px;border:1px solid var(--border);background:var(--card2);color:var(--text);font-family:inherit;font-size:14px;outline:0;resize:vertical;}
.field input:focus,.field textarea:focus{border-color:var(--green);}
.field2{display:grid;grid-template-columns:1fr;gap:16px;}
/* Поле с приклеенной «собакой»: человек вводит просто ник */
.at-input{display:flex;align-items:stretch;border:1px solid var(--border);background:var(--card2);}
.at-input i{display:flex;align-items:center;padding:0 4px 0 14px;font-style:normal;color:var(--muted);font-size:14px;}
.at-input input{border:0;background:transparent;padding-left:2px;}
.at-input:focus-within{border-color:var(--green);}
/* Компактный выбор специализации */
.tagsel{display:flex;flex-direction:column;gap:10px;}
.tagsel__chosen{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:26px;}
.tagsel__empty{font-size:12.5px;color:var(--muted);}
.tagsel__btn{align-self:flex-start;padding:10px 16px;font-size:13px;}
.tag--pick{display:inline-flex;align-items:center;gap:7px;font-size:12px;padding:5px 9px;}
.tag--pick i{font-style:normal;cursor:pointer;opacity:.65;font-size:11px;}
.tag--pick i:hover{opacity:1;color:#c0433b;}

/* Личная страница эксперта (/experts/<id>) — вместо hero+content, между шапкой и подвалом */
body.ep-open .hero,body.ep-open .content{display:none;}
/* На странице эксперта шапка НЕ липнет: единственная нужная здесь навигация —
   «Назад», и липнуть к верху должна она, а не шапка (иначе кнопка ложилась
   поверх шапки — поймано владельцем на телефоне). */
body.ep-open .hd{position:static;}
.ep{max-width:980px;margin:0 auto;padding:22px 18px 46px;animation:epIn .16s ease;}
@keyframes epIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.ep__details{display:flex;flex-direction:column;gap:14px;}
.ep__details>*{animation:epIn .18s ease;}
.ep__details .sk__line{animation:none;}
.ep__back{display:inline-flex;align-items:center;gap:8px;margin-bottom:18px;padding:9px 16px;border:1px solid var(--border);background:var(--card);color:var(--text);font-family:inherit;font-size:13.5px;cursor:pointer;}
.ep__back:hover{border-color:var(--green);color:var(--heading);}
.ep__layout{display:grid;grid-template-columns:320px 1fr;gap:26px;align-items:start;}
.ep__side{position:sticky;top:18px;}
.ep__photo{position:relative;border:1px solid var(--border);background:var(--card2);min-height:220px;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.ep__photo img{width:100%;height:auto;display:block;}
.ep__photo .badge-lg{position:absolute;left:10px;bottom:10px;}
.ep__main{display:flex;flex-direction:column;gap:14px;min-width:0;background:var(--card);border:1px solid var(--border);padding:22px;}
.ep__name{font-size:26px;font-weight:800;color:var(--heading);letter-spacing:-.3px;margin:0;}
@media (max-width:760px){
  .ep__layout{grid-template-columns:1fr;}
  .ep__side{position:static;max-width:420px;}
  .ep__main{padding:16px;}
  .ep__name{font-size:22px;}
  /* «Назад» на телефоне липнет к верху и остаётся на экране при скролле:
     страница длинная, а уходить назад надо из любого места */
  .ep__back{position:sticky;top:10px;z-index:20;background:var(--card);box-shadow:0 4px 14px var(--shadow);}
}

/* Регионы на карточках: в списке — первый + «+N», не распирая карточку */
.card__region{display:flex;align-items:center;gap:6px;min-width:0;}
.card__region>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
.card__region-more{flex:0 0 auto;font-style:normal;font-size:11px;padding:1px 6px;border:1px solid var(--border);background:var(--card2);color:var(--muted);border-radius:9px;}
.sheet__region{display:flex;align-items:flex-start;gap:6px;font-size:13px;color:var(--muted);margin-top:6px;}

/* Выбор регионов: чипы + выпадающие подсказки из справочника */
.regionsel{position:relative;display:flex;flex-direction:column;gap:10px;}
.regionsel__chosen{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:26px;}
.regionsel__sug{position:absolute;top:100%;left:0;right:0;z-index:30;background:var(--card);border:1px solid var(--border);box-shadow:0 14px 40px var(--shadow2);max-height:260px;overflow-y:auto;display:flex;flex-direction:column;}
.regionsel__opt{text-align:left;padding:10px 14px;background:none;border:0;border-bottom:1px solid var(--border);color:var(--text);font-family:inherit;font-size:13.5px;cursor:pointer;}
.regionsel__opt:last-child{border-bottom:0;}
.regionsel__opt:hover{background:var(--card2);color:var(--heading);}

/* Окно со списком тегов */
.tagpick-win{background:var(--card);border:1px solid var(--border);box-shadow:0 24px 70px var(--shadow2);width:100%;max-width:520px;max-height:86vh;display:flex;flex-direction:column;position:relative;}
.tagpick-win__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 18px 12px;}
.tagpick-win__h{font-size:17px;font-weight:800;color:var(--heading);}
.tagpick-win__sub{font-size:12px;color:var(--muted);margin-top:3px;}
.tagpick-win__x{position:static;background:var(--card2);color:var(--text);border:1px solid var(--border);flex:0 0 auto;}
.tagpick-win__search{margin:0 18px 10px;padding:11px 13px;border:1px solid var(--border);background:var(--card2);color:var(--text);font-family:inherit;font-size:14px;outline:0;}
.tagpick-win__search:focus{border-color:var(--green);}
.tagpick-win__list{flex:1;overflow-y:auto;display:flex;flex-wrap:wrap;gap:7px;align-content:flex-start;padding:4px 18px 14px;}
.tagpick-win__own{border-top:1px solid var(--border);padding:14px 18px;background:var(--card2);}
.tagpick-win__ownrow{display:flex;gap:8px;margin-top:8px;}
.tagpick-win__ownrow input{flex:1;padding:11px 13px;border:1px solid var(--border);background:var(--card);color:var(--text);font-family:inherit;font-size:13.5px;outline:0;min-width:0;}
.tagpick-win__ownrow .btn{flex:0 0 auto;padding:0 16px;font-size:13px;}
.tagpick-win__foot{padding:12px 18px 16px;border-top:1px solid var(--border);}
.tagpick-win__foot .btn{width:100%;padding:14px;font-size:14px;}
.photopick{display:flex;gap:14px;align-items:flex-start;}
.photopick__prev{width:84px;height:84px;flex:0 0 auto;background:repeating-linear-gradient(135deg,var(--ph1) 0 8px,var(--ph2) 8px 16px);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.photopick__prev img{width:100%;height:100%;object-fit:cover;}
/* Перетаскивание кропа: превью в форме показывает фото так же, как каталог
   (cover), и его можно двигать мышью/пальцем — выбирая, какая часть видна. */
.photopick__prev--drag{cursor:grab;touch-action:none;user-select:none;}
.photopick__prev--drag:active{cursor:grabbing;}
.photopick__hint{font-size:11.5px;color:var(--muted);margin-top:4px;}

/* Тизер опыта за пейволлом: то же место, где у участника лежит текст. */
.explock{border:1px dashed var(--border);background:var(--card2);padding:12px 14px;
  font-size:13px;color:var(--muted);line-height:1.5;}
.explock a{color:var(--greenDeep);text-decoration:underline;font-weight:600;margin-left:4px;}
/* Редактор текста */
.ed{border:1px solid var(--border);background:var(--card2);}
.ed__bar{display:flex;gap:2px;padding:6px;border-bottom:1px solid var(--border);background:var(--card);flex-wrap:wrap;}
.ed__b{width:32px;height:30px;border:1px solid transparent;background:transparent;color:var(--text);cursor:pointer;font-size:13px;font-family:inherit;display:inline-flex;align-items:center;justify-content:center;}
.ed__b:hover{border-color:var(--border);background:var(--card2);}
.ed__b--clear{margin-left:auto;color:var(--muted);}
.ed__area{min-height:96px;max-height:320px;overflow-y:auto;padding:12px 14px;font-size:14px;line-height:1.55;color:var(--text);outline:0;}
.ed__area:focus{box-shadow:inset 0 0 0 2px var(--greenBg);}
.ed__area:empty::before{content:attr(data-ph);color:var(--muted);opacity:.75;}
.ed__area p{margin:0 0 8px;} .ed__area ul,.ed__area ol{margin:0 0 8px;padding-left:20px;}
.ed__area a{color:var(--greenDeep);text-decoration:underline;}

/* Готовый текст карточки (разметка из редактора) */
.rich p{margin:0 0 8px;} .rich p:last-child{margin-bottom:0;}
.rich ul,.rich ol{margin:0 0 8px;padding-left:20px;} .rich li{margin-bottom:3px;}
.rich a{color:var(--greenDeep);text-decoration:underline;}
.rich b,.rich strong{font-weight:700;color:var(--heading);}
.proj--rich{display:block;}
.proj--rich ul,.proj--rich ol{margin:0;padding-left:18px;}
.proj--rich p{margin:0 0 6px;} .proj--rich p:last-child{margin-bottom:0;}

.consent{display:flex;gap:10px;align-items:flex-start;background:var(--greenBg2);border:1px dashed var(--green);padding:14px;font-size:12.5px;line-height:1.5;color:var(--text);cursor:pointer;}
.consent input{margin-top:2px;flex:0 0 auto;width:17px;height:17px;accent-color:var(--green);}
.consent--login{padding:10px 12px;font-size:12px;text-align:left;}

/* ── Баннер согласия на cookie ──────────────────────────────────────────────
   Полоса снизу, а не модалка: до выбора сайт полностью работает — гейт держит
   сервер, баннер лишь спрашивает. Перекрывать контент ради согласия нельзя. */
.cc{position:fixed;left:0;right:0;bottom:0;z-index:90;display:flex;flex-wrap:wrap;gap:12px;
  align-items:center;justify-content:center;padding:14px 20px;
  background:var(--card);border-top:1px solid var(--border);box-shadow:0 -6px 24px rgba(0,0,0,.12);}
.cc__text{font-size:13px;line-height:1.5;max-width:560px;color:var(--text);}
.cc__btns{display:flex;gap:8px;flex:0 0 auto;}
.cc__btns .btn{padding:9px 16px;font-size:13px;}
@media (max-width:640px){ .cc{padding-bottom:calc(14px + env(safe-area-inset-bottom));} }
/* На узком экране контакты — в одну колонку. Две по 45% ужимали текстовую часть
   до ширины, где даже с переносом ник ложился в 3–4 строки лесенкой. */
@media (max-width:520px){ .contact{flex:1 1 100%;} }
.form__err{display:none;color:#c0433b;font-size:13px;font-weight:600;background:var(--stRejBg);border:1px solid var(--stRejBd);padding:11px 13px;}

/* ── Логин ── */
.login-card{background:var(--card);border:1px solid var(--border);padding:24px;display:flex;flex-direction:column;gap:14px;width:100%;max-width:400px;box-shadow:0 20px 60px var(--shadow2);}
.login-card h3{margin:0;font-size:18px;font-weight:800;color:var(--heading);}
.login-card p{margin:0;font-size:12.5px;color:var(--muted);line-height:1.5;}
.login-sent{font-size:12.5px;color:var(--muted);line-height:1.5;}
.login-form .btn--ghost{background:transparent;color:var(--muted);border:1px solid var(--border);padding:10px 12px;font-size:12.5px;}
.login-alt{border-top:1px solid var(--border);padding-top:12px;}
.login-alt summary{cursor:pointer;font-size:12.5px;font-weight:700;color:var(--muted);list-style:none;}
.login-alt summary::-webkit-details-marker{display:none;}
.login-alt summary::before{content:'▸ ';}
.login-alt[open] summary::before{content:'▾ ';}
.login-alt > p{font-size:12px;color:var(--muted);line-height:1.6;margin:10px 0;}
.login-alt code{background:var(--card2);padding:1px 5px;font-size:11.5px;}
.login-alt__hint{margin-top:8px !important;}
.login-form{display:flex;flex-direction:column;gap:10px;}
.login-form input{padding:12px 14px;border:1px solid var(--border);background:var(--card2);color:var(--text);font-family:'JetBrains Mono',monospace;font-size:13.5px;outline:0;width:100%;}
/* Чекбокс согласия НЕ поле ввода: правило выше (width:100%) стоит позже
   `.consent input` и перебивало его — чекбокс растягивался на всю модалку,
   рисовал огромный зелёный блок, а текст согласия выдавливался за край.
   Атрибутный селектор возвращает чекбоксу его 17px при любом порядке правил. */
.login-form input[type="checkbox"]{width:17px;height:17px;padding:0;border:0;flex:0 0 auto;margin-top:2px;background:transparent;}
.login-form input:focus{border-color:var(--green);}
.login-form .btn--primary{padding:13px 12px;}
.login-err{color:#c0433b;font-size:12.5px;display:none;}
.login-close{position:absolute;top:14px;right:14px;width:34px;height:34px;border:0;background:rgba(26,26,46,.45);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.login-overlay{position:fixed;inset:0;background:var(--overlay);z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;animation:fade .2s ease;}
.login-wrap{position:relative;max-width:400px;width:100%;}
.login-inline{display:flex;justify-content:center;padding:26px 16px;}

/* ── Футер (общий для всех страниц) ── */
.ft{background:linear-gradient(160deg,#1b5e20,#1a3a1a);margin-top:auto;}
.ft__inner{max-width:1280px;margin:0 auto;padding:26px 18px 24px;}
.ft__brand{display:flex;align-items:center;gap:11px;}
.ft__logo{width:34px;height:34px;flex:0 0 auto;}
.ft__logo img{width:100%;height:100%;object-fit:contain;}
.ft__name{color:#fff;font-size:15px;font-weight:800;line-height:1.2;}
.ft__sub{color:#c8e6c9;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;line-height:1.3;}
.ft__about{color:#e8f5e9;font-size:12px;line-height:1.55;margin-top:12px;max-width:340px;}
.ft__h{color:#a5c9a7;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;margin:16px 0 10px;}
.ft__contacts{display:flex;flex-direction:column;gap:8px;}
.ft__contacts a{display:inline-flex;align-items:center;gap:8px;color:#fff;font-size:13px;font-weight:700;}
.ft__socials{display:flex;flex-wrap:wrap;gap:8px;}
.ft__socials a{display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(255,255,255,.3);color:#fff;font-size:12px;font-weight:700;padding:8px 14px;}
.ft__socials a:hover{background:rgba(255,255,255,.08);opacity:1;}
/* Правовой блок: ссылки приезжают из настроек, пустые не рисуются вовсе */
.ft__legal{margin-top:18px;font-size:11.5px;line-height:1.7;color:#a5c9a7;}
.ft__legal a{color:#d6ead7;text-decoration:underline;text-underline-offset:2px;}
.ft__legal a:hover{color:#fff;opacity:1;}
.ft__dot{margin:0 8px;opacity:.5;}
.ft__cookie{margin-top:6px;font-size:11px;opacity:.75;}
.ft__copy{color:#a5c9a7;font-size:10.5px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;margin-top:18px;}

/* ══════════════════════ ДЕСКТОП (>900px) ══════════════════════ */
@media (min-width: 901px){
  .wrap{max-width:none;}

  /* Топ-бар вместо градиентной шапки */
  .hd{background:var(--card);border-bottom:1px solid var(--border);box-shadow:none;
      padding:0 32px;height:66px;display:flex;align-items:center;gap:26px;}
  .hd--admin{background:var(--card);}
  .hd{height:70px;gap:28px;}
  .hd__top{display:contents;}
  .hd__brand{order:0;gap:28px;}
  .hd .seg{order:1;flex:0 0 auto;background:var(--card2);}
  .hd__side{order:2;margin-left:auto;}
  /* Белый топ-бар как на сайте клуба: фирменный логотип + разделитель + подпись */
  .hd__logoimg{display:block;height:44px;flex:0 0 auto;}
  .hd__divider{display:block;width:1px;height:28px;background:var(--border);flex:0 0 auto;}
  .hd__title{color:var(--heading);font-size:13px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;}
  .hd__sub{display:none;}
  .seg a,.seg button{flex:none;padding:9px 18px;color:var(--muted);}
  .seg .active{background:var(--card);color:var(--greenDeep);box-shadow:0 1px 4px var(--shadow);}
  .hd__icon{border:1px solid var(--border);background:var(--card);color:var(--heading);width:38px;height:38px;}
  .auth-btn{background:var(--green);color:#fff;padding:10px 18px;font-size:13px;}
  .auth-user{color:var(--heading);max-width:220px;font-size:13px;}
  .auth-user .hd__icon{width:34px;height:34px;}

  /* Hero — зелёная лента с поиском */
  .hero{background:linear-gradient(150deg,#43a047 0%,#2e7d32 55%,#1b5e20 100%);}
  .hero__inner{max-width:1280px;margin:0 auto;padding:34px 32px 30px;}
  .hero__title{display:block;color:#fff;font-size:27px;font-weight:800;letter-spacing:-.4px;}
  .hero__sub{display:block;color:#dcf3ea;font-size:14px;font-weight:500;max-width:620px;line-height:1.5;margin:8px 0 20px;}
  .search{max-width:640px;}
  .search__box{background:#fff;border:0;box-shadow:0 6px 20px rgba(0,0,0,.12);padding:0 16px;}
  .search__box input{padding:14px 0;color:#2d2d44;}

  /* Контент */
  .content{max-width:1280px;margin:0 auto;padding:22px 32px 56px;width:100%;}
  .content--narrow{max-width:900px;}
  .tags{padding:0 0 4px;}
  .count{padding:14px 0 2px;font-size:13px;}
  .grid{grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:20px;padding:12px 0 20px;}
  .card__body{padding:13px 14px 16px;}
  .card__name{font-size:15px;}
  .card__kw{font-size:12px;-webkit-line-clamp:4;}
  .more{padding:0 0 28px;}
  .gate,.empty{margin:16px 0;}

  /* Модалка — центрированный диалог */
  .overlay{align-items:center;justify-content:center;padding:36px;}
  .sheet{max-width:680px;max-height:88vh;animation:fade .22s ease;box-shadow:0 30px 80px rgba(0,0,0,.35);clip-path:none;}
  /* Высота по картинке, как и на мобильной ширине. Здесь стояло height:300px,
     и оно перекрывало базовое правило: портрет не влезал в 300px, а overflow
     обрезал его по центру — голова уходила за верхний край. Правку фото
     01.08 было видно только на узком экране, на десктопе её съедало это место. */
  .sheet__photo{height:auto;max-height:min(70vh,560px);}
  .sheet__photo img{max-height:min(70vh,560px);}

  /* Кабинет */
  .cab{padding:26px 0;gap:18px;}
  .tiles{gap:16px;}
  .login-inline{padding:48px 0;}
  .form{padding:26px 28px;}
  .field2{grid-template-columns:1fr 1fr;}
  .cab-actions .btn{flex:0 0 auto;min-width:180px;}

  /* Футер — три колонки */
  .ft__inner{padding:44px 32px 30px;display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:40px;align-items:start;}
  .ft__name{font-size:17px;}
  .ft__about{font-size:13px;line-height:1.6;margin-top:14px;max-width:360px;}
  .ft__h{margin:0 0 14px;}
  .ft__contacts{gap:9px;}
  .ft__contacts a{font-size:13.5px;}
  .ft__socials a{font-size:12.5px;padding:9px 16px;}
  /* Подвал здесь — grid в три колонки, поэтому правовой блок обязан занять
     всю строку: иначе он встанет четвёртой ячейкой рядом с соцсетями. */
  .ft__legal{grid-column:1 / -1;margin-top:26px;}
  .ft__copy{grid-column:1 / -1;margin-top:26px;padding-top:20px;border-top:1px solid rgba(255,255,255,.12);}
}

/* ── Дешборд эксперта ─────────────────────────────────────────────────────
   График нарочно на div-ах: подключать библиотеку ради двадцати столбиков —
   лишняя зависимость на странице, которую открывают с телефона. */
.dash{display:flex;flex-direction:column;gap:12px;padding-top:4px;}
.dash__cap{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);}
.dash__sub{font-size:12px;font-weight:800;color:var(--heading);margin-top:4px;}
.dash__chart{display:flex;align-items:flex-end;gap:3px;height:72px;padding:8px;background:var(--card);border:1px solid var(--border);}
.dash__bar{flex:1;height:100%;display:flex;align-items:flex-end;}
.dash__bar i{display:block;width:100%;background:var(--green);min-height:2px;}
.dash__axis{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);font-family:'JetBrains Mono',monospace;}
.dash__rows{display:flex;flex-direction:column;border:1px solid var(--border);}
.dash__row{display:flex;justify-content:space-between;padding:7px 11px;font-size:13px;border-bottom:1px solid var(--border);}
.dash__row:last-child{border-bottom:0;}
.dash__row b{font-variant-numeric:tabular-nums;}
.dash__share{display:flex;flex-wrap:wrap;gap:8px;}

/* Регион: второй ряд фильтров и строка в карточке. Первый вопрос выбирающего —
   «а он вообще у нас?»; раньше это выяснялось только раскрытием контактов. */
/* Второй ряд чипов (регионы): отрицательный margin наезжал на ряд тегов,
   когда тот переносился на две строки — видно на desktop. */
.tags--region{margin-top:6px;}
.tags--region .chip{font-size:11.5px;}
.card__region{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--greenDeep);font-weight:600;}
.card__region svg{width:11px;height:11px;flex:0 0 auto;}
