/* Партнёрская программа и кабинет партнёра TERVIO (сессия 511).
   Вид — как у кабинета «Мои проекты» (control-plane/app/static/account.html, сессии 479–498):
   те же цвета, стекло, шрифт Onest, светлая и тёмная тема. Высоты контролов — только
   --control-h и --control-h-sm. */
@font-face{font-family:Onest;font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/onest-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:Onest;font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/onest-cyrillic.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:Onest;font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/onest-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Onest;font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/onest-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  --control-h:48px; --control-h-sm:40px;
  --bg:#EAF0FA; --text:#0E172C; --t2:#5E6A82; --accent:#1F4FD1; --danger:#C9302C; --ok:#16704A;
  --blob1:rgba(112,223,250,.6); --blob2:rgba(72,139,246,.38); --blob3:rgba(255,190,150,.45);
  --g-fill:rgba(255,255,255,.52); --g-edge:rgba(255,255,255,.95); --g-edge2:rgba(255,255,255,.45);
  --g-shadow:0 1px 0 rgba(255,255,255,.9) inset,0 18px 40px -22px rgba(30,50,110,.35);
  --g-shadow-up:0 1px 0 rgba(255,255,255,.95) inset,0 32px 64px -26px rgba(30,50,110,.45);
  --g-hover:rgba(14,23,44,.06); --field:rgba(255,255,255,.6);
  --field-shadow:inset 0 0 0 1px rgba(14,23,44,.08),inset 0 1px 2px rgba(14,23,44,.06);
  --lens:rgba(255,255,255,.92); --lens-shadow:inset 0 1px 0 #fff,0 6px 16px -6px rgba(30,50,110,.35);
  --chip:rgba(255,255,255,.82); --chip-shadow:0 4px 10px -4px rgba(30,50,110,.3),inset 0 0 0 1px rgba(255,255,255,.9);
  --line:rgba(14,23,44,.09); --dash:rgba(31,79,209,.28); --off:rgba(14,23,44,.06); --off-text:#5E6A82;
  --scrim:rgba(30,45,80,.18); --menu:rgba(255,255,255,.97);
  --bad-fill:rgba(201,48,44,.08); --bad-edge:rgba(201,48,44,.28); --ok-fill:rgba(22,112,74,.09);
  --sel:rgba(31,79,209,.07);
  --btn-1:#3D6BFF; --btn-2:#1F4FD1;
  color-scheme:light;
}
/* Тёмная — как у системы, пока человек не выбрал сам; выбор кнопкой ставит data-theme. */
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#060A14; --text:#F4F7FC; --t2:#93A0B8; --accent:#8FB0FF; --danger:#FF8A8A; --ok:#7BD9A6;
    --blob1:rgba(48,81,240,.34); --blob2:rgba(40,190,220,.22); --blob3:rgba(230,140,90,.16);
    --g-fill:rgba(255,255,255,.06); --g-edge:rgba(255,255,255,.32); --g-edge2:rgba(255,255,255,.10);
    --g-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 20px 50px -24px rgba(0,0,0,.8);
    --g-shadow-up:0 1px 0 rgba(255,255,255,.1) inset,0 34px 70px -28px rgba(0,0,0,.9),0 0 0 1px rgba(143,176,255,.12);
    --g-hover:rgba(255,255,255,.08); --field:rgba(255,255,255,.07); --field-shadow:inset 0 0 0 1px rgba(255,255,255,.12);
    --lens:rgba(255,255,255,.14); --lens-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 6px 18px -6px rgba(0,0,0,.6);
    --chip:rgba(23,30,48,.75); --chip-shadow:inset 0 0 0 1px rgba(255,255,255,.12);
    --line:rgba(255,255,255,.09); --dash:rgba(255,255,255,.18); --off:rgba(255,255,255,.07); --off-text:#93A0B8;
    --scrim:rgba(3,6,14,.55); --menu:rgba(22,28,46,.98);
    --bad-fill:rgba(255,138,138,.1); --bad-edge:rgba(255,138,138,.3); --ok-fill:rgba(123,217,166,.1);
    --sel:rgba(143,176,255,.10);
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#060A14; --text:#F4F7FC; --t2:#93A0B8; --accent:#8FB0FF; --danger:#FF8A8A; --ok:#7BD9A6;
  --blob1:rgba(48,81,240,.34); --blob2:rgba(40,190,220,.22); --blob3:rgba(230,140,90,.16);
  --g-fill:rgba(255,255,255,.06); --g-edge:rgba(255,255,255,.32); --g-edge2:rgba(255,255,255,.10);
  --g-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 20px 50px -24px rgba(0,0,0,.8);
  --g-shadow-up:0 1px 0 rgba(255,255,255,.1) inset,0 34px 70px -28px rgba(0,0,0,.9),0 0 0 1px rgba(143,176,255,.12);
  --g-hover:rgba(255,255,255,.08); --field:rgba(255,255,255,.07); --field-shadow:inset 0 0 0 1px rgba(255,255,255,.12);
  --lens:rgba(255,255,255,.14); --lens-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 6px 18px -6px rgba(0,0,0,.6);
  --chip:rgba(23,30,48,.75); --chip-shadow:inset 0 0 0 1px rgba(255,255,255,.12);
  --line:rgba(255,255,255,.09); --dash:rgba(255,255,255,.18); --off:rgba(255,255,255,.07); --off-text:#93A0B8;
  --scrim:rgba(3,6,14,.55); --menu:rgba(22,28,46,.98);
  --bad-fill:rgba(255,138,138,.1); --bad-edge:rgba(255,138,138,.3); --ok-fill:rgba(123,217,166,.1);
  --sel:rgba(143,176,255,.10);
  color-scheme:dark;
}
/* На тач цель нажатия — не меньше 44 px: поднимаем общую переменную, а не отдельные кнопки. */
@media (pointer:coarse){:root{--control-h-sm:44px}}

*{box-sizing:border-box}
html,body{margin:0}
html{scroll-padding-top:96px}
body{font-family:Onest,"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;color:var(--text);background:var(--bg);min-height:100vh;position:relative;overflow-x:hidden;-webkit-font-smoothing:antialiased;line-height:1.5}
button,input{font-family:inherit;color:inherit}
button{cursor:pointer}
a{color:inherit}
input::placeholder{color:var(--t2);opacity:1}
[hidden]{display:none!important}
.sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
:focus-visible{outline:2px solid #3D6BFF;outline-offset:2px}
a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}

/* Пока страница решает, кабинет это или условия, — ни то ни другое не мигает. */
html.booting #program,html.booting #cabinet{visibility:hidden}
.boot{position:fixed;inset:0;display:none;align-items:center;justify-content:center;color:var(--t2);font-size:15px;gap:12px}
html.booting .boot{display:flex}
.spin{width:18px;height:18px;flex:none;border-radius:50%;border:2px solid var(--dash);border-top-color:#3D6BFF;animation:spin .9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── стекло ── */
.glass{position:relative;background:var(--g-fill);backdrop-filter:blur(30px) saturate(190%);-webkit-backdrop-filter:blur(30px) saturate(190%);box-shadow:var(--g-shadow)}
.glass::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:linear-gradient(155deg,var(--g-edge) 0%,rgba(255,255,255,0) 38%,rgba(255,255,255,0) 62%,var(--g-edge2) 100%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.ghost{background:transparent;border:0;transition:background-color .15s ease}
@media (hover:hover) and (pointer:fine){.ghost:hover{background:var(--g-hover)}}

/* Цветные пятна под шапкой — как в «Моих проектах», только без вечного дрейфа. */
.blobs{position:absolute;left:0;right:0;top:0;height:260px;z-index:-1;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 35%,transparent 100%);mask-image:linear-gradient(180deg,#000 35%,transparent 100%);pointer-events:none}
.blob{position:absolute;border-radius:50%}
.b1{width:560px;height:360px;left:-120px;top:-200px;background:var(--blob1);filter:blur(80px)}
.b2{width:520px;height:340px;right:-100px;top:-180px;background:var(--blob2);filter:blur(90px)}
.b3{width:440px;height:280px;left:38%;top:-200px;background:var(--blob3);filter:blur(90px)}

/* ── шапка ── */
.top{position:sticky;top:0;z-index:5;padding:16px 24px 0}
.bar{max-width:1184px;margin:0 auto;min-height:64px;border-radius:32px;padding:8px 10px 8px 12px;display:flex;align-items:center;gap:8px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;flex:0 0 auto;min-width:0;padding:0 8px;height:var(--control-h-sm);border-radius:calc(var(--control-h-sm) / 2)}
.brand b{font-weight:700;font-size:17px}
.brand span{font-size:14.5px;color:var(--t2);white-space:nowrap}
.grow{flex:1;min-width:0}
.hbtn{flex:0 0 auto;height:var(--control-h-sm);padding:0 16px;border-radius:calc(var(--control-h-sm) / 2);display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:var(--accent);font-size:15px;font-weight:600;white-space:nowrap}
.hbtn svg{flex:none}
.back{color:var(--text);padding-left:10px}
.back svg{color:var(--accent)}
.icon-btn{flex:0 0 var(--control-h-sm);width:var(--control-h-sm);height:var(--control-h-sm);border-radius:50%;color:var(--t2);display:inline-flex;align-items:center;justify-content:center;padding:0}
.ico-sun{display:none}
:root[data-theme="dark"] .ico-moon{display:none}
:root[data-theme="dark"] .ico-sun{display:block}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .ico-moon{display:none} :root:not([data-theme="light"]) .ico-sun{display:block}}
.who{display:flex;align-items:center;gap:14px;min-width:0}
.c-head .ava{width:56px;height:56px;font-size:22px}
.ava{width:var(--control-h-sm);height:var(--control-h-sm);flex:none;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:var(--chip);box-shadow:var(--chip-shadow);font-weight:700;font-size:16px;color:var(--accent)}

/* ── общее ── */
main{max-width:1232px;margin:0 auto;padding:40px 24px 64px}
h1{margin:0;font-size:40px;line-height:1.1;font-weight:700;letter-spacing:-.02em;text-wrap:balance}
h2{margin:0;font-size:26px;line-height:1.2;font-weight:700;letter-spacing:-.02em;text-wrap:balance}
h3{margin:0;font-size:17px;line-height:1.3;font-weight:650}
p{margin:0}
.lead{font-size:18px;line-height:1.55;color:var(--t2);max-width:62ch}
.muted{color:var(--t2)}
.small{font-size:14px;line-height:1.5}
.link{color:var(--accent);font-weight:600;text-decoration:none}
@media (hover:hover) and (pointer:fine){.link:hover{text-decoration:underline}}
.textbtn{background:none;border:0;padding:0;font:inherit;color:var(--accent);font-weight:600;cursor:pointer;text-align:left}
/* Отдельная текстовая кнопка на карточке — цель не меньше 24 px, на тач — 44. */
.tile .textbtn{min-height:24px;display:inline-flex;align-items:center}
@media (pointer:coarse){.tile .textbtn{min-height:44px}}
@media (hover:hover) and (pointer:fine){.textbtn:hover{text-decoration:underline}}
.panel{border-radius:28px;padding:24px}
.sec{margin-top:56px}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.sec-head .sub{margin-top:6px;font-size:14.5px;color:var(--t2);max-width:70ch}

/* Кнопки: основная — синяя «таблетка» кабинета, второстепенная — стекло. */
.btn{position:relative;overflow:hidden;height:var(--control-h);padding:0 22px;border-radius:calc(var(--control-h) / 2);border:0;display:inline-flex;align-items:center;justify-content:center;gap:9px;text-decoration:none;font-size:15.5px;font-weight:600;white-space:nowrap;background:linear-gradient(180deg,var(--btn-1) 0%,var(--btn-2) 100%);color:#fff;box-shadow:0 10px 22px -10px rgba(31,79,209,.85),inset 0 1px 0 rgba(255,255,255,.35);transition:transform .14s cubic-bezier(.23,1,.32,1),filter .15s ease}
.btn:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){.btn:hover{filter:brightness(1.07)}}
.btn.sm{height:var(--control-h-sm);border-radius:calc(var(--control-h-sm) / 2);padding:0 16px;font-size:15px}
.btn.line{background:var(--field);color:var(--text);box-shadow:var(--field-shadow)}
@media (hover:hover) and (pointer:fine){.btn.line:hover{filter:none;background:var(--g-hover)}}
.btn:disabled,.btn[aria-disabled="true"]{background:var(--off);color:var(--off-text);box-shadow:none;pointer-events:none}
.btn svg{flex:none}

/* Поля */
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field label,.field .lbl{font-size:13.5px;color:var(--t2)}
.inp{height:var(--control-h);border:0;border-radius:16px;background:var(--field);box-shadow:var(--field-shadow);padding:0 16px;font:inherit;font-size:16px;color:var(--text);outline:none;width:100%;min-width:0}
.inp:focus{box-shadow:var(--field-shadow),0 0 0 3px rgba(61,107,255,.35)}
.inp:focus-visible{outline:none}
.inp[aria-invalid="true"]{box-shadow:var(--field-shadow),0 0 0 2px var(--danger)}
.inp.mono{font-variant-numeric:tabular-nums;letter-spacing:.01em}
.hint{font-size:13px;color:var(--t2);line-height:1.45}
.err{color:var(--danger);font-size:13px;font-weight:600;margin:0}
.copyrow{display:flex;gap:10px;align-items:center}
.copyrow .inp{flex:1}

/* Сигнал: что случилось, что значит, что делать — и кнопка туда, где чинится. */
.sig{border-radius:18px;padding:14px 16px;display:flex;flex-direction:column;gap:4px;font-size:14.5px;background:var(--bad-fill);box-shadow:inset 0 0 0 1px var(--bad-edge)}
.sig b{color:var(--danger);font-size:15px}
.sig span{color:var(--text);line-height:1.45}
.sig .hbtn{align-self:flex-start;margin-top:4px;margin-left:-12px}
.sig.info{background:var(--g-fill);box-shadow:inset 0 0 0 1px var(--line)}
.sig.info b{color:var(--text)}
.sig.ok{background:var(--ok-fill);box-shadow:none}
.sig.ok b{color:var(--ok)}

/* ── условия программы ── */
.hero{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:48px;align-items:center;padding-top:24px}
.hero h1{font-size:52px;line-height:1.04;letter-spacing:-.03em}
.hero .lead{margin-top:20px}
.cta{margin-top:28px;display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.cta .hint{max-width:52ch;font-size:14px}
/* Смелость страницы — одна: огромные «10 %». */
.rate{border-radius:32px;padding:32px 32px 28px}
.rate-num{display:block;font-size:168px;line-height:.86;font-weight:700;letter-spacing:-.06em;color:var(--accent);font-variant-numeric:tabular-nums;white-space:nowrap}
.rate-num small{font-size:.5em;letter-spacing:-.02em;margin-left:.06em}
.rate-cap{margin-top:16px;font-size:19px;font-weight:650;line-height:1.3}
.rate-note{margin-top:8px;font-size:14.5px;color:var(--t2)}
.cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
.cols h3{margin-bottom:8px}
.cols p{color:var(--t2);font-size:15.5px;line-height:1.55}
.two{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:48px;align-items:start}
.two .lead{margin-top:14px;font-size:16.5px}
.facts{list-style:none;margin:0;padding:0}
.facts.panel{padding:22px 26px}
.facts li{display:grid;grid-template-columns:minmax(0,190px) minmax(0,1fr);gap:20px;padding:16px 0;border-top:1px solid var(--line);font-size:15.5px;line-height:1.5}
.facts li:first-child{border-top:0;padding-top:0}
.facts li:last-child{padding-bottom:0}
.facts b{font-weight:650}
.facts span{color:var(--t2)}
.finale{border-radius:32px;padding:36px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.finale h2{max-width:24ch}
.foot{max-width:1232px;margin:0 auto;padding:0 24px 40px;display:flex;gap:8px 24px;flex-wrap:wrap;font-size:14px;color:var(--t2)}
.foot a{color:var(--t2);text-decoration:none}
@media (hover:hover) and (pointer:fine){.foot a:hover{color:var(--text);text-decoration:underline}}

/* ── кабинет ── */
.c-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.c-head .sub{margin-top:8px;color:var(--t2);font-size:15px;overflow-wrap:anywhere}
.figs{margin-top:28px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-radius:28px;padding:8px}
.fig{padding:18px 20px;min-width:0}
.fig+.fig{box-shadow:-1px 0 0 var(--line)}
.fig dt{font-size:14px;color:var(--t2)}
.fig dd{margin:4px 0 0;font-size:30px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}
.fig.main dd{color:var(--accent);font-size:40px}
.fig .note{margin-top:6px;font-size:13px;color:var(--t2);line-height:1.4}
/* Уровень партнёра (сессия 599): медаль, имя, процент, полоса до следующего уровня и лесенка.
   Цвет уровня — --m, в обеих темах ≥3:1 к фону карточки; смысл всегда продублирован подписью. */
.md-copper{--m:#A2582A}.md-silver{--m:#66717F}.md-gold{--m:#8F6A00}.md-platinum{--m:#3F6E8C}
:root{--m-ink:#FFFFFF}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){--m-ink:#0B0F1A}
  :root:not([data-theme="light"]) .md-copper{--m:#E39A62}:root:not([data-theme="light"]) .md-silver{--m:#C3CCD6}
  :root:not([data-theme="light"]) .md-gold{--m:#E8BE3C}:root:not([data-theme="light"]) .md-platinum{--m:#9CCBE8}
}
:root[data-theme="dark"]{--m-ink:#0B0F1A}
:root[data-theme="dark"] .md-copper{--m:#E39A62}:root[data-theme="dark"] .md-silver{--m:#C3CCD6}
:root[data-theme="dark"] .md-gold{--m:#E8BE3C}:root[data-theme="dark"] .md-platinum{--m:#9CCBE8}
.medal{flex:none;display:block}
.medal .md-rib{fill:var(--m);opacity:.55}
.medal .md-disc{fill:var(--m)}
.medal .md-ring{fill:none;stroke:var(--m-ink);stroke-width:1.5;opacity:.7}
.medal .md-star{fill:var(--m-ink)}
.medal.is-next .md-rib{fill:none;stroke:var(--m);stroke-width:1.5;opacity:1}
.medal.is-next .md-disc{fill:none;stroke:var(--m);stroke-width:2}
.medal.is-next .md-ring{display:none}
.medal.is-next .md-star{fill:var(--m)}
.tier{margin-top:28px;border-radius:28px;padding:24px}
.tier-card{display:flex;gap:20px;align-items:flex-start}
.tier-main{flex:1;min-width:0}
.tier h2{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;font-size:30px;letter-spacing:-.02em}
.tier-rate{color:var(--accent);font-variant-numeric:tabular-nums;white-space:nowrap}
.tier-now{margin-top:4px;font-size:15px;color:var(--t2);line-height:1.45}
.tier-bar-l{margin-top:16px;font-size:14px;color:var(--t2);font-variant-numeric:tabular-nums}
.tier-bar{margin-top:6px;height:12px;border-radius:6px;background:var(--off);box-shadow:inset 0 0 0 1px var(--t2);overflow:hidden;max-width:560px}
.tier-fill{display:block;height:100%;background:var(--accent);transform-origin:left center}
.tier-fill.anim{transition:transform .3s cubic-bezier(.23,1,.32,1)}
.tier-next{margin-top:10px;font-size:15.5px;line-height:1.45}
.tier-next b{font-weight:650}
.tier-steps{list-style:none;margin:22px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.tier-steps li{display:flex;align-items:flex-start;gap:10px;padding:12px;border-radius:16px;min-width:0;font-variant-numeric:tabular-nums}
.tier-steps li.is-on{background:var(--off);box-shadow:inset 0 0 0 2px var(--accent)}
.st-t{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.st-t b{font-size:15.5px;font-weight:650}
.st-t span{font-size:13.5px;color:var(--t2)}
.st-p{font-size:17px;font-weight:700;white-space:nowrap}
.tier-steps li.is-on .st-p{color:var(--accent)}
.tier-steps li.is-next .st-t b,.tier-steps li.is-next .st-p{color:var(--t2);font-weight:600}
.tier-steps .st{display:inline-flex;align-items:center;gap:4px;font-style:normal;font-size:13px;font-weight:600;color:var(--accent);margin-top:2px}
.tier-steps li.is-done .st{color:var(--ok)}
.tier-hint{margin-top:16px;max-width:72ch;font-size:14px}
@media (max-width:980px){.tier-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.tier{padding:20px 18px}.tier-card{gap:14px}.tier-card .medal{width:56px;height:56px}.tier h2{font-size:26px}}
@media (max-width:400px){.tier-steps{grid-template-columns:minmax(0,1fr)}}
/* Зум 200 % на телефоне (около 160 px): медаль над текстом, иначе имя и строка «Ещё …» не влезают. */
@media (max-width:260px){.tier{padding:16px 12px}.tier-card{flex-direction:column;align-items:stretch;gap:10px}.tier h2{font-size:22px}.tier-next{font-size:14px}.tier-steps li{padding:10px 8px}}
@media (prefers-reduced-motion:reduce){.tier-fill.anim{transition:none}}
.reflink{margin-top:18px;border-radius:28px;padding:22px 24px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:12px 32px;align-items:center}
.reflink h2{font-size:19px;margin-bottom:6px}
.reflink .hint{font-size:14px}

/* Проекты клиентов — те же плитки, что в «Моих проектах». */
.grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.tile{position:relative;border-radius:28px;padding:16px 16px 16px 20px;display:flex;flex-direction:column;align-items:flex-start;min-height:236px;transition:transform .3s cubic-bezier(.23,1,.32,1),box-shadow .3s ease}
@media (hover:hover) and (pointer:fine){.tile:hover{transform:translateY(-4px);box-shadow:var(--g-shadow-up)}}
.tile.fresh{box-shadow:var(--g-shadow),0 0 0 2px rgba(61,107,255,.55)}
.chip{height:26px;padding:0 11px;border-radius:13px;background:var(--chip);box-shadow:var(--chip-shadow);font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.chip.paused{color:var(--danger)}
.name{margin-top:16px;font-weight:600;font-size:19px;line-height:1.25;overflow-wrap:anywhere}
.name small{display:block;font-size:13px;font-weight:500;color:var(--t2);margin-bottom:2px}
.state{margin-top:6px;font-size:14px;color:var(--t2);line-height:1.45}
.state.warn{color:var(--danger)}
.tile .spacer{flex:1;min-height:14px}
.tile .acts{align-self:stretch;display:flex;flex-direction:column;gap:8px}
.tile .acts .btn{width:100%}
.tile .acts .hint{text-align:center;padding:4px 6px}
.add{width:100%;height:100%;min-height:236px;border:1.5px dashed var(--dash)!important;border-radius:28px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:16px;color:var(--accent);font:inherit}
.add .plus{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.add b{font-size:16px;font-weight:600}
.add:disabled{color:var(--t2);cursor:not-allowed}
.notice{margin-bottom:18px}

/* Таблицы: на широком — строки с колонками, на телефоне — карточки «подпись: значение». */
.tbl-wrap{border-radius:28px;padding:6px 8px}
table{width:100%;border-collapse:collapse;font-size:14.5px}
th{font-size:12.5px;font-weight:500;color:var(--t2);text-align:left;padding:12px 14px 10px;white-space:nowrap}
td{padding:13px 14px;border-top:1px solid var(--line);vertical-align:top;font-variant-numeric:tabular-nums}
td.num,th.num{text-align:right;white-space:nowrap}
td .muted{font-size:13px}
.pending{margin-top:14px;font-size:14.5px;color:var(--t2)}

/* Реквизиты */
.payout{border-radius:28px;padding:24px}
.field .seg{align-self:flex-start}
.seg{position:relative;display:inline-grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);padding:4px;border-radius:calc(var(--control-h-sm) / 2 + 4px);background:var(--field);box-shadow:var(--field-shadow);min-width:min(360px,100%)}
.seg button{height:var(--control-h-sm);border:0;background:transparent;border-radius:calc(var(--control-h-sm) / 2);padding:0 16px;font-size:15px;font-weight:600;color:var(--t2);white-space:nowrap}
.seg button[aria-pressed="true"]{background:var(--lens);box-shadow:var(--lens-shadow);color:var(--text)}
.pf{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;margin-top:18px}
.pf .wide{grid-column:1/-1}
.pf-actions{margin-top:20px;display:flex;align-items:center;gap:12px 16px;flex-wrap:wrap}
.pf-actions .tv-scene{margin:0;width:min(320px,100%)}
.c-foot{margin-top:48px;padding-top:20px;border-top:1px solid var(--line);font-size:14px;color:var(--t2);display:flex;flex-direction:column;gap:6px}

/* Кнопка-«стрелка» (sweep.css) — по высоте полей, а не своими 52 px: одна высота на форму. */
.tv-btn{height:var(--control-h)}
.tv-chip{width:calc(var(--control-h) - 10px);height:calc(var(--control-h) - 10px);top:5px;right:5px}
.tv-flyer{top:calc((var(--control-h) - 26px) / 2)}
.tv-scene{margin-top:4px}
/* Подпись — левее кружка со стрелкой, а не по центру всей кнопки: на 320 px иначе наезжала на него. */
.tv-label{padding:0 calc(var(--control-h) - 2px) 0 18px}
@media (max-width:400px){.tv-btn{font-size:15px}}

/* ── аттестация (сессия 589) ── */
.at{border-radius:28px;padding:22px 24px;display:flex;flex-direction:column;gap:10px}
.at-top{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap}
.at-chip{gap:6px;height:28px;font-size:13.5px}
.at-chip svg{flex:none}
.at-passed{color:var(--ok)}
.at-failed{color:var(--danger)}
.at-submitted,.at-draft{color:var(--accent)}
.at-tries{font-size:14px;color:var(--t2);font-variant-numeric:tabular-nums}
.at-line{font-size:15.5px;line-height:1.5;max-width:72ch}
.at-review{border-radius:18px;padding:14px 16px;background:var(--field);box-shadow:var(--field-shadow);display:flex;flex-direction:column;gap:4px;max-width:72ch}
.at-review b{font-size:14px;font-weight:650}
.at-review p{font-size:15px;line-height:1.5;white-space:pre-line}
.at-next{font-size:15px;color:var(--t2);max-width:72ch}
.at-acts{margin-top:6px;display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap}
.at-acts .hint{max-width:46ch}
.at-form{margin-top:18px;display:flex;flex-direction:column;gap:18px}
.at-form .notice{margin:0;outline:none}
.qs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.q{display:flex;flex-direction:column;gap:8px;padding:20px 0;border-top:1px solid var(--line)}
.q:first-child{border-top:0;padding-top:4px}
.q-meta{display:flex;gap:6px 12px;flex-wrap:wrap;font-size:13.5px;color:var(--t2)}
.q-mod{color:var(--accent);font-weight:600}
.q-text{font-size:17px;font-weight:600;line-height:1.4;max-width:72ch;white-space:pre-line}
.q-lesson{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;min-height:24px}
@media (pointer:coarse){.q-lesson{min-height:44px}}
/* Многострочное поле: стартует ровно с высоты контрола (12 + 24 + 12), дальше растёт в JS. */
.inp.ta{height:var(--control-h);min-height:var(--control-h);padding:12px 16px;line-height:24px;resize:none;overflow:hidden;display:block}
.practice{border-radius:28px;padding:22px 24px;display:flex;flex-direction:column;gap:16px}
.task{display:flex;flex-direction:column;gap:8px;font-size:15.5px;line-height:1.55;max-width:72ch}
.picks{border:0;margin:0;padding:0;gap:8px}
.picks legend{padding:0;margin-bottom:8px}
.pick{position:relative;display:flex;align-items:center;gap:12px;min-height:var(--control-h);padding:0 16px;border-radius:16px;background:var(--field);box-shadow:var(--field-shadow);cursor:pointer;min-width:0}
.pick input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.pick-dot{flex:none;width:20px;height:20px;border-radius:50%;box-shadow:inset 0 0 0 2px var(--t2)}
.pick input:checked~.pick-dot{box-shadow:inset 0 0 0 6px var(--accent)}
.pick:has(input:checked){background:var(--sel)}
.pick:has(input:focus-visible){outline:2px solid #3D6BFF;outline-offset:2px}
.pick-name{font-size:15.5px;font-weight:600;min-width:0;overflow-wrap:anywhere}
.pick-slug{margin-left:auto;font-size:13px;color:var(--t2);overflow-wrap:anywhere;text-align:right}
.picks.bad .pick{box-shadow:var(--field-shadow),0 0 0 2px var(--danger)}
.at-send{display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap}
.at-save{margin:0}

/* ── карточка в каталоге ── */
.card-wrap{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;align-items:start}
.at-in{position:relative}
.at-in span{position:absolute;left:16px;top:0;height:var(--control-h);display:flex;align-items:center;color:var(--t2);font-size:16px;pointer-events:none}
.at-in .inp{padding-left:32px}
.cases{border:0;margin:0;padding:0;gap:10px}
.cases legend{padding:0;margin-bottom:6px}
.cases .btn{align-self:flex-start}
.case-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) var(--control-h);gap:10px;align-items:start}
.line-ico{flex:none;border-radius:16px;width:var(--control-h);height:var(--control-h);border:0;background:var(--field);box-shadow:var(--field-shadow);color:var(--t2)}
.check{display:flex;align-items:center;gap:12px;min-height:var(--control-h);font-size:15.5px;cursor:pointer}
.check input{width:22px;height:22px;margin:0;accent-color:#1F4FD1;flex:none}
.pv{position:sticky;top:104px;display:flex;flex-direction:column;gap:10px}
.pv .lbl{font-size:13.5px;color:var(--t2)}
/* Предпросмотр — в цветах сайта tervio.tech (белый, как карточка в каталоге), в любой теме кабинета. */
.pc{background:#FFFFFF;color:#0E172C;border-radius:20px;padding:22px;box-shadow:0 0 0 1px #E4E8EF;display:flex;flex-direction:column;gap:14px}
.pc-who{display:flex;gap:14px;align-items:flex-start}
.pc-photo{width:64px;height:64px;flex:none;border-radius:50%;object-fit:cover;background:#E8EEFC}
.pc-letter{display:grid;place-items:center;font-size:24px;font-weight:700;color:#1F4FD1}
.pc-name{font-size:20px;font-weight:600;letter-spacing:-.01em;line-height:1.25;margin:2px 0 0;overflow-wrap:anywhere}
.pc-city{font-size:14.5px;color:#46516A;margin-top:2px}
.pc-badge{margin-top:8px;display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;color:#16704A}
.pc-about{font-size:15px;line-height:1.55;color:#2B354A;white-space:pre-line;overflow-wrap:anywhere}
.pc-empty{color:#5B6680;font-style:italic}
.pc-cases span{font-size:13.5px;color:#5B6680}
.pc-cases ul{margin:4px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:4px 14px;font-size:15px}
.pc-cases a{color:#1F4FD1}
.pc-foot{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;padding-top:14px;border-top:1px solid #E4E8EF}
.pc-price{font-size:17px;font-weight:600}
.pc-tg{display:inline-flex;align-items:center;height:var(--control-h-sm);padding:0 16px;border-radius:10px;background:#1F4FD1;color:#FFFFFF;font-size:15px;font-weight:500;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
@media (max-width:980px){.card-wrap{grid-template-columns:minmax(0,1fr)} .pv{position:static}}
@media (max-width:520px){
  .at,.practice{padding:20px 18px}
  .case-row{grid-template-columns:minmax(0,1fr) var(--control-h)}
  .case-row .field:nth-child(2){grid-column:1;grid-row:2}
  .case-row .line-ico{grid-column:2;grid-row:1}
  .at-send .btn,.at-acts .btn{width:100%}
  .pick{flex-wrap:wrap;padding:10px 16px;row-gap:0}
  .pick-slug{margin-left:32px;width:100%;text-align:left}
}

/* ── окна ── */
dialog.sheet{width:min(460px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow:auto;border:0;padding:0;border-radius:32px;color:var(--text);background:var(--menu);box-shadow:0 30px 80px -20px rgba(10,20,50,.45),0 0 0 1px var(--line)}
dialog.sheet::backdrop{background:var(--scrim);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
dialog.sheet[open]{animation:pop .22s cubic-bezier(.23,1,.32,1)}
@keyframes pop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.sheet form{display:flex;flex-direction:column;gap:14px;padding:28px 24px 20px}
.sheet h2{font-size:23px}
.sheet p{font-size:15px;color:var(--t2);line-height:1.5}
.sheet ul{margin:0;padding-left:18px;color:var(--t2);font-size:14.5px;line-height:1.55}
.sheet .cancel{height:var(--control-h-sm);border-radius:calc(var(--control-h-sm) / 2);color:var(--accent);font-size:15px;font-weight:600}

.toast{position:fixed;left:16px;right:16px;bottom:calc(20px + env(safe-area-inset-bottom));margin:0 auto;width:fit-content;max-width:min(560px,calc(100% - 32px));z-index:20;border-radius:20px;padding:12px 18px;font-size:14.5px;line-height:1.4;background:var(--menu);box-shadow:0 18px 40px -12px rgba(20,35,80,.35),0 0 0 1px var(--line);opacity:0;transform:translateY(8px);transition:opacity .18s ease,transform .18s cubic-bezier(.23,1,.32,1);pointer-events:none}
.toast.on{opacity:1;transform:none}

/* ── ширины ── */
@media (max-width:1180px){.grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:980px){
  .hero{grid-template-columns:minmax(0,1fr);gap:32px}
  .rate{max-width:560px}
  .two{grid-template-columns:minmax(0,1fr);gap:24px}
  .reflink{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:860px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))} .cols{grid-template-columns:minmax(0,1fr);gap:22px}}
@media (max-width:700px){
  .top{padding:10px 12px 0}
  .bar{padding:6px;border-radius:28px;gap:4px}
  main{padding:28px 16px 48px}
  .foot{padding:0 16px 32px}
  h1{font-size:32px}
  .hero h1{font-size:38px}
  h2{font-size:23px}
  .brand span{display:none}
  .figs{grid-template-columns:minmax(0,1fr)}
  .fig+.fig{box-shadow:0 -1px 0 var(--line)}
  .facts li{grid-template-columns:minmax(0,1fr);gap:4px}
  .pf{grid-template-columns:minmax(0,1fr)}
  .finale{padding:28px 22px}
  /* Таблица — карточками: подпись колонки берётся из data-label. */
  table,tbody,tr,td{display:block}
  thead{display:none}
  tr{padding:12px 6px;border-top:1px solid var(--line)}
  tbody tr:first-child{border-top:0}
  td{border:0;padding:3px 8px;display:flex;justify-content:space-between;gap:16px;text-align:right}
  td::before{content:attr(data-label);color:var(--t2);font-size:13px;text-align:left;flex:none}
  td.num{text-align:right}
  td.lead-cell{font-weight:600;text-align:left;justify-content:flex-start}
  td.lead-cell::before{display:none}
}
@media (max-width:520px){
  .grid{grid-template-columns:minmax(0,1fr)}
  .tile,.add{min-height:0}
  .add{padding:24px 16px}
  .rate{padding:24px 22px 22px}
  .rate-num{font-size:132px}
  .panel,.reflink,.payout,.facts.panel{padding:20px 18px}
  .copyrow .inp{flex:none}
  .c-head .btn{width:100%}
  .copyrow{flex-direction:column;align-items:stretch}
}
/* На самом узком в шапке кабинета остаются «Мои проекты», тема и выход — логотип уходит. */
@media (max-width:400px){
  .cab-bar .brand{display:none}
  .long{display:none}
  .hero h1{font-size:33px}
  .rate-num{font-size:112px}
  .hbtn{padding:0 12px}
  .back{padding-left:8px}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition-duration:.01ms!important}
  .btn:active{transform:none}
}
@media (prefers-reduced-motion:reduce) and (hover:hover) and (pointer:fine){.tile:hover{transform:none}}
/* Мой кабинет на телефоне при зуме 200 % (сессия 599): ширина около 195 px, подпись не влезает в одну строку. Только здесь кнопка растёт, иначе подпись обрезалась бы. */
@media (max-width:260px){#c-own .btn,#c-own .hbtn{white-space:normal;height:auto;min-height:var(--control-h-sm);max-width:100%;padding-top:8px;padding-bottom:8px;text-align:center;border-radius:20px}#c-own .sig .hbtn{margin-left:0}}
