/* Портал партнёров Avocado.pro — светлая тема.
   Визуальный язык: белые карточки на светлом фоне, один сочный акцент,
   чёрные основные кнопки, кольцевые метрики, сгруппированный сайдбар.
   Тёмная версия лежит рядом: app.css.bak-dark-0809 — если светлая не зайдёт. */

:root{
  color-scheme: light;

  /* поверхности */
  --bg:        #F2F3F1;   /* фон приложения — чуть тёплый серый, не белый: карточки должны читаться */
  --surface:   #FFFFFF;   /* карточка */
  --surface-2: #F7F8F6;   /* вложенный блок, полоса таблицы */
  --side:      #FAFBFA;   /* сайдбар — светлее фона, но не белый */
  --line:      #E4E7E3;   /* граница карточки */
  --line-2:    #EFF1EE;   /* внутренние разделители, слабее */

  /* текст */
  --text:      #10160F;   /* основной — почти чёрный с зелёным подтоном */
  --dim:       #55605A;   /* вторичный */
  --muted:     #647069;   /* третичный, подписи. 5,2:1 на белом и 4,6:1 на фоне — AA везде */

  /* акценты */
  --accent:    #69BC46;   /* фирменный зелёный Avocado (брендбук). Заливки, дуги, активные состояния */
  --accent-hi: #7dd455;   /* bright из брендбука: мелкие акцентные пятна на тёмном зелёном */
  --accent-dk: #3D7A28;   /* акцент как ТЕКСТ на белом — светлый лайм в тексте нечитаем */
  --accent-bg: #EAF9E2;   /* мягкая акцентная подложка */
  --gold:      #C79A4E;   /* статус-баннер и «золотой» уровень */
  --gold-arc:  #A97F35;   /* дуга кольца: 3,1:1 к треку — несёт значение, не декор */
  --gold-bg:   #F6EEDD;
  --danger:    #B4402F;
  --danger-bg: #FBEDEA;

  /* геометрия и движение */
  --r:    14px;
  --r-sm: 10px;
  --shadow: 0 1px 2px rgba(16,22,15,.04), 0 8px 24px rgba(16,22,15,.05);
  --t: .16s cubic-bezier(.2,.8,.3,1);
}

*{box-sizing:border-box;min-width:0}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--text);
  font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
a{color:inherit;text-decoration:none}
h1,h2,h3{margin:0;font-weight:640;letter-spacing:-.02em}
[hidden]{display:none!important}

/* ═══════════════ вход: цветная половина + карточка формы ═══════════════ */
.split{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}
.split-brand{
  background:var(--accent);color:#0E1A08;
  padding:40px;display:flex;flex-direction:column;justify-content:space-between;
  position:relative;overflow:hidden;
}
/* Тонкий узор из дуг — воздух без картинок. */
.split-brand::after{
  content:'';position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:
    radial-gradient(circle at 30% 18%, transparent 15px, rgba(14,26,8,.22) 15px, rgba(14,26,8,.22) 17px, transparent 17px),
    radial-gradient(circle at 78% 34%, transparent 22px, rgba(14,26,8,.16) 22px, rgba(14,26,8,.16) 24px, transparent 24px),
    radial-gradient(circle at 14% 66%, transparent 18px, rgba(14,26,8,.16) 18px, rgba(14,26,8,.16) 20px, transparent 20px),
    radial-gradient(circle at 62% 84%, transparent 26px, rgba(14,26,8,.14) 26px, rgba(14,26,8,.14) 28px, transparent 28px);
}
.brand{font-size:18px;font-weight:700;letter-spacing:-.03em;position:relative;z-index:1}
.brand span{color:var(--accent-dk)}
.brand-lg{font-size:22px}
.brand-lg span{color:#0E1A08;opacity:.55}
.split-claim{position:relative;z-index:1}
.split-claim h1{font-size:clamp(28px,3.4vw,46px);line-height:1.08;margin-bottom:14px}
.split-claim p{margin:0;font-size:16px;max-width:30ch;opacity:.72}

.split-form{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:40px 24px;gap:26px}
.auth-card{
  width:100%;max-width:380px;background:var(--surface);
  border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:30px 28px;
}
.auth-card h2{font-size:22px;text-align:center;margin-bottom:20px}
.auth-card label{display:block;margin:0 0 14px;font-size:12px;color:var(--muted)}
.auth-card input{
  display:block;width:100%;margin-top:6px;padding:12px 13px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);
  color:var(--text);font-size:16px;transition:border-color var(--t),background var(--t);
}
.auth-card input:focus{outline:none;border-color:var(--accent-dk);background:#fff}
.hint{color:var(--muted);font-size:12.5px;margin:16px 0 0;text-align:center}
.split-foot{display:flex;gap:18px;font-size:13px;color:var(--muted);flex-wrap:wrap;justify-content:center}
.split-foot a{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}

/* кнопки */
.btn{
  display:block;width:100%;padding:13px;margin-top:4px;
  background:#141A13;color:#fff;border:0;border-radius:var(--r-sm);
  font-size:15px;font-weight:600;cursor:pointer;transition:background var(--t),transform var(--t);
}
.btn:hover{background:#232C21}
.btn:active{transform:translateY(1px)}
.btn.sm{display:inline-block;width:auto;min-height:44px;padding:11px 18px;font-size:14px;margin:0}
.btn.ghost{
  display:inline-block;width:auto;padding:10px 16px;font-size:14px;margin-top:12px;
  background:#fff;color:var(--text);border:1px solid var(--line);
}
.btn.ghost:hover{border-color:var(--accent-dk);background:var(--accent-bg)}
.err{background:var(--danger-bg);border:1px solid #EBC7C0;color:#8C2E20;
     padding:10px 12px;border-radius:var(--r-sm);font-size:14px;margin-bottom:14px}
.ok{background:var(--accent-bg);border:1px solid #CBE9BC;color:#2F6520;
    padding:10px 12px;border-radius:var(--r-sm);font-size:14px;margin-bottom:16px}

/* ═══════════════ оболочка: сайдбар + контент ═══════════════ */
.shell{display:grid;grid-template-columns:236px 1fr;min-height:100vh}
.side{
  background:var(--side);border-right:1px solid var(--line);
  padding:20px 14px 30px;position:sticky;top:0;height:100vh;overflow:auto;
}
.side .brand{display:block;font-size:17px;margin:0 8px 26px;line-height:1.2}
.side .brand em{display:block;font-style:normal;font-size:12px;color:var(--muted);font-weight:500;letter-spacing:0;margin-top:2px}
.side-grp{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);
          margin:18px 8px 7px;font-weight:600}
.side nav{display:grid;gap:1px}
.side nav a{
  display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--r-sm);
  font-size:14px;color:var(--dim);transition:background var(--t),color var(--t);
}
.side nav a:hover{background:#EFF2ED;color:var(--text)}
.side nav a.on{background:#fff;color:var(--text);font-weight:600;box-shadow:0 1px 2px rgba(16,22,15,.05)}
.side nav a.on .ic{background:var(--accent)}
.ext{margin-left:auto;color:var(--muted);font-size:11px}

/* Иконки — квадратики фирменного цвета: без спрайтов и внешних файлов. */
.ic{width:16px;height:16px;border-radius:5px;background:#D7DCD5;flex-shrink:0;transition:background var(--t)}
.side nav a:hover .ic{background:#C3CBC0}

.main{min-width:0;display:flex;flex-direction:column}
.top{
  display:flex;align-items:center;gap:14px;padding:15px 26px;
  background:rgba(242,243,241,.9);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5;
}
.top .who{margin-left:auto;text-align:right;line-height:1.3}
.who .co{display:block;font-size:13.5px;font-weight:600}
.who .co .dg{font-weight:400;color:var(--muted)}
.who .pers{display:block;font-size:12.5px;color:var(--muted)}
.exit{background:none;border:0;color:var(--muted);font-size:13px;cursor:pointer;
      min-height:44px;padding:6px 10px}
.exit:hover{color:var(--text)}

.wrap{max-width:1080px;width:100%;margin:0 auto;padding:26px}
.hello{font-size:27px;margin-bottom:20px}
.block{margin-bottom:22px}
.block-h{display:flex;align-items:baseline;gap:14px;margin-bottom:12px}
.block-h h2{font-size:16px}
.block-h .lnk{margin-left:auto}
.sec{font-size:12px;color:var(--muted);font-weight:600;margin:24px 0 10px;text-transform:uppercase;letter-spacing:.08em}
.sec .n{color:var(--muted);font-weight:500}
.empty{color:var(--dim);padding:40px 0;text-align:center}
.lnk{color:var(--accent-dk);font-size:14px;font-weight:500}
.lnk:hover{text-decoration:underline;text-underline-offset:3px}

/* ═══════════════ новости и предложения ═══════════════ */
.news{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.news-card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 1px 2px rgba(16,22,15,.04);
  padding:16px 17px;display:flex;gap:12px;align-items:flex-start;
}
.news-t{font-size:15px;font-weight:640;margin-bottom:5px}
.news-card p{margin:0 0 9px;font-size:13.5px;color:var(--dim);line-height:1.5}
.news-until{margin-left:auto;font-size:11px;color:var(--muted);white-space:nowrap;
            background:var(--surface-2);padding:3px 8px;border-radius:20px}

/* ═══════════════ баннер статуса ═══════════════ */
.status-banner{
  border-radius:var(--r);padding:18px 22px;margin-bottom:14px;
  background:var(--gold-bg);border:1px solid #E9DBBE;
}
.sb-label{display:block;font-size:13px;color:#7A6435;margin-bottom:2px}
.sb-value{display:block;font-size:26px;font-weight:700;letter-spacing:-.02em;color:#5E4C22}
.status-banner.lvl-base{background:var(--surface-2);border-color:var(--line)}
.status-banner.lvl-base .sb-label{color:var(--muted)}
.status-banner.lvl-base .sb-value{color:var(--text)}
.status-banner.lvl-silver{background:#F1F3F4;border-color:#DFE3E5}
.status-banner.lvl-silver .sb-label{color:#5C6669}
.status-banner.lvl-silver .sb-value{color:#394245}

/* ═══════════════ карточки-колонки ═══════════════ */
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-bottom:12px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
      padding:18px 19px;box-shadow:0 1px 2px rgba(16,22,15,.04)}
.card h3{font-size:15px;margin-bottom:4px}
.card-sub{color:var(--muted);font-size:13px;margin:0 0 14px;line-height:1.45}
.big-date{font-size:29px;font-weight:700;letter-spacing:-.02em}
.card-metric{display:flex;flex-direction:column;align-items:center;text-align:center}
.card-metric h3,.card-metric .card-sub{align-self:flex-start;text-align:left}

/* кольцевая метрика */
.donut{width:170px;height:170px;margin:4px 0 12px}
.donut .d-bg{fill:none;stroke:#EDEFEC;stroke-width:13}
.donut .d-arc{fill:none;stroke:var(--gold-arc);stroke-width:13;stroke-linecap:round}
.donut-muted .d-arc{stroke:#D8DDD6}
.donut .d-big{fill:var(--text);font-size:26px;font-weight:700;text-anchor:middle;letter-spacing:-.02em}
.donut .d-cap{fill:var(--muted);font-size:11px;text-anchor:middle;letter-spacing:.06em}
.legend{display:grid;gap:7px;width:100%;font-size:13px}
.legend span{display:flex;align-items:center;gap:8px;color:var(--dim)}
.legend b{margin-left:auto;color:var(--text);font-weight:600}
.dot{width:9px;height:9px;border-radius:50%;background:#DDE1DB;flex-shrink:0}
.dot.on{background:var(--gold-arc)}
.dot.used{background:#5C9BD6}
.period{margin-top:10px;font-size:12px;color:var(--muted)}

/* требования */
.reqs{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.reqs li{display:flex;gap:11px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line-2)}
.reqs li:last-child{border-bottom:0}
.reqs li i{
  width:19px;height:19px;border-radius:50%;flex-shrink:0;margin-top:1px;
  display:grid;place-items:center;font-style:normal;font-size:11px;font-weight:700;
}
.reqs li.no i{background:#F3F5F2;border:1px solid var(--line);color:var(--muted)}
.reqs li.no i::before{content:'✕'}
.reqs li.ok i{background:var(--accent);color:#0E1A08}
.reqs li.ok i::before{content:'✓'}
.reqs li b{display:block;font-size:14px;font-weight:600}
.reqs li em{display:block;font-style:normal;font-size:12.5px;color:var(--muted);margin-top:1px}
.reqs li.no em{color:var(--accent-dk)}

/* скидки */
.disc{list-style:none;margin:0 0 12px;padding:0;display:grid}
.disc li{display:flex;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--line-2);font-size:14px}
.disc li:last-child{border-bottom:0}
.disc li b{margin-left:auto;color:var(--accent-dk);font-weight:650}
.disc li.base{color:var(--muted)}
.disc li.base b{color:var(--dim)}

/* ═══════════════ заказы ═══════════════ */
.cards{display:grid;gap:11px}
.card-top{display:flex;align-items:center;gap:10px;margin-bottom:7px}
.kind{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.stage{
  margin-left:auto;font-size:11.5px;font-weight:600;color:#2F6520;
  background:var(--accent-bg);padding:3px 10px;border-radius:20px;
}
.card-title{font-size:15.5px;font-weight:640;margin-bottom:11px}
.card-bot{display:flex;align-items:baseline;gap:12px;margin-top:11px}
.sum{font-size:17px;font-weight:680}
.next{margin-left:auto;font-size:13px;color:var(--muted);text-align:right}
a.card{display:block;transition:border-color var(--t),box-shadow var(--t)}
a.card:hover{border-color:#CFD8CB;box-shadow:var(--shadow)}
a.card.is-done{background:var(--surface-2)}
a.card.is-done .card-title,a.card.is-done .sum{color:var(--dim)}
a.card.is-lost{background:var(--surface-2)}
a.card.is-lost .card-title,a.card.is-lost .sum{color:var(--muted)}
.is-done .stage{color:var(--dim);background:var(--surface-2)}
.is-lost .stage{color:#8C2E20;background:var(--danger-bg)}

.prog{display:flex;gap:4px}
.prog i{flex:1;height:4px;border-radius:2px;background:#E7EAE5;display:block}
.prog i.done{background:#7CBE58}
.prog i.now{background:#3D7A28}
.prog.is-lost i{background:#EBD3CE}

/* карточка заказа */
.back{display:inline-block;color:var(--muted);font-size:14px;margin:0 0 14px}
.back:hover{color:var(--text)}
.head{margin-bottom:16px}
.head h1{font-size:24px;margin-top:5px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
       padding:19px;margin-bottom:13px;box-shadow:0 1px 2px rgba(16,22,15,.04)}
.panel h2{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:14px;font-weight:600}
.stage-now{margin-bottom:16px}
.stage-now b{display:block;font-size:21px;font-weight:680}
.stage-now span{color:var(--dim);font-size:14px}

.steps{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.steps li{display:flex;align-items:baseline;gap:10px;padding:9px 0 9px 24px;position:relative;font-size:14px;color:var(--muted)}
.steps li::before{content:'';position:absolute;left:4px;top:13px;width:10px;height:10px;border-radius:50%;background:#E2E6DF}
.steps li::after{content:'';position:absolute;left:8.5px;top:24px;bottom:-2px;width:1px;background:var(--line)}
.steps li:last-child::after{display:none}
.steps li.done{color:var(--dim)}
.steps li.done::before{background:#7CBE58}
.steps li.now{color:var(--text)}
.steps li.now::before{background:#3D7A28;box-shadow:0 0 0 4px var(--accent-bg)}
.steps li b{font-weight:600;min-width:110px}
.steps li span{font-size:13px;color:var(--muted)}
.lost-note{margin-top:12px;color:#8C2E20;font-size:14px}
.next-row{display:flex;gap:12px;align-items:baseline;margin-top:15px;padding-top:14px;border-top:1px solid var(--line-2);font-size:14px}
.next-row .lbl{color:var(--muted);font-size:13px;min-width:120px}

/* ═══════════════ таблицы ═══════════════ */
/* Любая таблица на телефоне прокручивается сама, а не режется и не тянет страницу. */
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.items{width:100%;border-collapse:collapse;font-size:14px}
@media (max-width:760px){ .items{min-width:460px} }
.items th,.items td{padding:10px 8px;text-align:left;border-bottom:1px solid var(--line-2);vertical-align:top}
.items thead th{font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.items .r{text-align:right;white-space:nowrap}
.items .art{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.items tfoot th{font-size:14px;font-weight:680;border-bottom:0;padding-top:13px}
.items tfoot .benefit td{color:var(--dim);font-size:13px;border-bottom:0;padding-top:2px}
.items tfoot .benefit b{color:var(--accent-dk)}
.note{color:var(--muted);font-size:13px;margin:13px 0 0}
.note b{color:var(--dim)}

.feed{list-style:none;margin:0;padding:0;display:grid;gap:11px}
.feed li{font-size:14px;color:var(--dim);display:flex;gap:12px}
.feed .dt{color:var(--muted);font-size:12.5px;min-width:110px;flex-shrink:0}
.contact p{color:var(--dim);margin:0 0 13px;font-size:14px}
.btn.wa{display:inline-block;width:auto;padding:11px 20px}

/* ═══════════════ конфигуратор ═══════════════ */
h1.pg{font-size:24px;margin-bottom:6px}
.wrap .lead{color:var(--dim);font-size:14px;margin:0 0 16px;max-width:620px}
.filters{display:flex;gap:9px;margin-bottom:14px;flex-wrap:wrap}
.filters .q{flex:1;min-width:180px;min-height:44px;padding:11px 13px;background:var(--surface);
            border:1px solid var(--line);border-radius:var(--r-sm);color:var(--text);font-size:16px}
.filters select{min-height:44px;padding:11px 13px;background:var(--surface);border:1px solid var(--line);
                border-radius:var(--r-sm);color:var(--text);font-size:16px;max-width:240px}
.filters .q:focus,.filters select:focus{outline:none;border-color:var(--accent-dk)}
/* Обёртка нужна, чтобы широкая таблица прокручивалась сама, а не тащила за собой страницу. */
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);
              border-radius:var(--r);background:var(--surface)}
table.cfg{background:var(--surface);border-radius:var(--r);min-width:520px}
table.cfg th,table.cfg td{padding:11px 13px}
table.cfg thead th{background:var(--surface-2)}
table.cfg .old{color:var(--muted);text-decoration:line-through;font-size:13px}
table.cfg .mine{font-weight:680}
table.cfg tr.picked{background:var(--accent-bg)}
.qty-in{width:68px;min-height:44px;padding:8px 10px;background:var(--surface-2);border:1px solid var(--line);
        border-radius:8px;color:var(--text);font-size:16px;text-align:right}
.qty-in:focus{outline:none;border-color:var(--accent-dk);background:#fff}
.basket{
  position:fixed;left:236px;right:0;bottom:0;display:flex;align-items:center;gap:18px;
  padding:13px 26px calc(13px + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.97);border-top:1px solid var(--line);
  backdrop-filter:blur(8px);z-index:10;box-shadow:0 -4px 20px rgba(16,22,15,.06);
}
/* Место под липкую корзину, иначе она накрывает последние строки таблицы.
   Отступ у самой таблицы, а не у обёртки через :has(): :has() понимают не все
   браузеры (Safari только с 15.4), а корзина живёт ровно на одном экране. */
table.cfg{margin-bottom:96px}
.basket .b-n{color:var(--dim);font-size:14px}
.basket .b-s{margin-left:auto;font-size:15px}
.basket b{color:var(--text);font-weight:680}

/* ═══════════════ админка ═══════════════ */
/* Команда, которую человек копирует в терминал: моноширинный шрифт обязателен —
   в пропорциональном путаются дефис с тире, а тире команду ломает. */
pre.cmd{
  background:var(--surface-2,#F7F8F6);border:1px solid var(--line);border-radius:10px;
  padding:12px 14px;margin:8px 0 12px;overflow-x:auto;
  font:13px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text);
  -webkit-user-select:all;user-select:all;   /* один клик выделяет команду целиком */
}
.form input[type=file]{
  display:block;width:100%;margin-top:6px;padding:10px;min-height:var(--tap,44px);
  background:var(--surface-2,#F7F8F6);border:1px dashed var(--line);border-radius:10px;
  font:14px/1.4 inherit;color:var(--text);
}
body.adm .wrap{max-width:1180px}
.form{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:10px}
.form .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:13px;margin-bottom:15px}
.form .grid.brands{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.form label{display:block;font-size:12.5px;color:var(--muted)}
.form label i{font-style:normal;color:#647069;font-size:11.5px}
.form input,.form select{display:block;width:100%;min-height:44px;margin-top:5px;padding:10px 11px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:9px;color:var(--text);font-size:16px}
.form input:focus,.form select:focus{outline:none;border-color:var(--accent-dk);background:#fff}
.form label.chk{display:flex;align-items:center;gap:8px;color:var(--dim);align-self:end;padding-bottom:9px}
.form label.chk input{width:auto;margin:0}
.form.row{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.form.row .q{flex:1;min-width:220px;margin:0}
.form.row .qty-in{margin:0}
.inline{display:inline;background:none;border:0;padding:0;margin:0}
/* тач-цель кнопки удаления была 19×27 — до пальца не дотягивала */
.del{background:none;border:0;color:#647069;min-width:44px;min-height:44px;font-size:19px;line-height:1;cursor:pointer;padding:0 4px}
.del:hover{color:var(--danger)}
tr.off{opacity:.5}
td.muted,.muted{color:var(--muted)}
body.adm .stage{margin:0;display:inline-block}

/* ═══════════════ адаптив ═══════════════ */
@media (max-width:900px){
  .split{grid-template-columns:1fr}
  .split-brand{min-height:34vh;padding:26px}
  .split-claim h1{font-size:30px}
  .news{grid-template-columns:1fr}
}
@media (max-width:760px){
  .shell{grid-template-columns:1fr}
  .side{
    position:static;height:auto;border-right:0;border-bottom:1px solid var(--line);
    padding:12px 14px;display:flex;align-items:center;gap:8px;
    overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;
  }
  .side::-webkit-scrollbar{display:none}
  .side .brand{margin:0 12px 0 2px;white-space:nowrap;flex:0 0 auto}
  .side nav{flex:0 0 auto}
  .side .brand em{display:none}
  .side-grp{display:none}
  .side nav{display:flex;gap:4px}
  .side nav a{padding:8px 12px;white-space:nowrap}
  .side nav a .ic{display:none}
  .wrap{padding:16px}
  .top{padding:12px 16px}
  .hello{font-size:22px}
  /* На узком экране корзина переносится в две строки и занимает вдвое больше места. */
  .basket{left:0;flex-wrap:wrap;gap:8px;padding:12px 16px calc(12px + env(safe-area-inset-bottom))}
  .basket .b-s{margin-left:0;width:100%}
  table.cfg{margin-bottom:170px}   /* корзина здесь переносится в две строки */
  .feed li{flex-direction:column;gap:2px}
  .feed .dt{min-width:0}
  .steps li b{min-width:96px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* Шапка админки: у неё горизонтальное меню, а не сайдбар — админ живёт в одном экране. */
body.adm .top{padding:14px 26px}
body.adm .brand{font-size:16px;font-weight:700}
body.adm .nav{display:flex;gap:18px;margin-left:26px}
body.adm .nav a{font-size:14px;color:var(--dim);padding:5px 0;border-bottom:2px solid transparent}
body.adm .nav a:hover{color:var(--text)}
body.adm .nav a.on{color:var(--text);font-weight:600;border-bottom-color:var(--accent)}
body.adm .items tbody tr:hover{background:var(--surface-2)}
body.adm .items{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
                overflow:hidden;margin-bottom:6px}
body.adm .items thead th{background:var(--surface-2)}
@media (max-width:760px){
  body.adm .nav{margin-left:0;gap:12px;order:3;width:100%;border-top:1px solid var(--line);padding-top:9px}
  body.adm .top{flex-wrap:wrap}
}

/* Метка режима админа: чтобы не спутать кабинет партнёра с управлением. */
.adm-badge{font-size:12px;font-weight:600;color:#7A6435;background:var(--gold-bg);
           border:1px solid #E9DBBE;padding:4px 11px;border-radius:20px}
.ok .pw{display:inline-block;margin-left:8px;padding:2px 9px;background:#fff;border:1px solid #CBE9BC;
        border-radius:7px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;letter-spacing:.04em}

/* Экран входа админки: та же карточка, что у партнёра, но по центру пустой страницы. */
.auth-only{min-height:100vh;justify-content:center}
.auth-card label{display:block;margin:0 0 14px;font-size:12px;color:var(--muted)}
.auth-card input{display:block;width:100%;min-height:44px;margin-top:6px;padding:12px 13px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);
  color:var(--text);font-size:16px}

/* Иконки пунктов сайдбара: единый размер, разный оттенок — чтобы пункты
   различались боковым зрением, а не только текстом. Спрайтов и файлов не заводим. */
.ic-home{background:#B9CBB2}
.ic-box{background:#C2C9BC}
.ic-calc{background:#B2C6C4}
.ic-chat{background:#C9C3B2}
.ic-users{background:#B9CBB2}
.ic-star{background:#D3C6A6}
.ic-eye{background:#BCC4CE}
.ic-shop,.ic-doc{background:#C6C9C2}
.ic-box{background:#C7BFA8}
.ic-key{background:#B5C2CB}
.side nav a.on .ic{background:var(--accent)}

/* Дуга кольца по умолчанию — акцентная; вариант «muted» гасит её для пустых метрик. */
.donut-accent .d-arc{stroke:var(--gold-arc)}
/* Длинное слово в тексте предложения не должно ломать карточку. */
.news-body{min-width:0;overflow-wrap:anywhere}
