html{-webkit-text-size-adjust:100%}
:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
body{margin:0}
img{max-width:100%}

/* Layout: phone-first app — white top bar with brand logo, one column of steps, sticky action bar under the thumb; dashboard grid on wide screens. Single light theme in the developer's white + orange + graphite brand. */
:root{
  color-scheme:light;
  --bg:#F5F4F2; --surface:#FFFFFF; --ink:#3A3A3C; --graphite:#0B0B0C; --muted:#77777A; --line:#E6E3DF;
  --orange:#1F1F22; --orange-deep:#1F1F22; --orange-soft:#ECECE6; --accent-text:#1F1F22; --on-accent:#D4FF3A; --teal:#4FA3A5;
  --good:#2E8B57; --good-soft:#E3F3E9; --bad:#D2452F; --bad-soft:#FCE8E4;
  --gold:#E3B341; --silver:#B9BEC6; --bronze:#C98A4B; --on-medal:#1F1F22;
  --font:"Montserrat",system-ui,-apple-system,"Segoe UI",sans-serif;
  --r:16px;
}
*{box-sizing:border-box}
html,body{background:var(--bg)}
body{color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-tap-highlight-color:transparent}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--surface)}
h1,h2,h3{text-wrap:balance;margin:0;line-height:1.2;color:var(--graphite)}
h1{font-weight:800;font-size:clamp(22px,5.4vw,30px);letter-spacing:-.01em}
h2{font-weight:800;font-size:19px}
h3{font-size:17px;font-weight:700}
p{margin:0}
button{font:inherit;cursor:pointer;color:inherit}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--orange);outline-offset:2px}
a{color:var(--accent-text,var(--orange-deep))}
.wrap{max-width:1040px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.o{color:var(--orange)}

/* top bar */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--surface);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:10px;padding-block:10px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;margin-right:auto;min-width:0}
.brand img{height:30px;width:auto;display:block}
.brand span{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;border-left:1px solid var(--line);padding-left:10px;line-height:1.2}
.demo{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;background:var(--orange-soft);color:var(--accent-text,var(--orange-deep));padding:4px 8px;border-radius:6px}
.seg{display:flex;background:var(--bg);border-radius:999px;padding:3px;border:1px solid var(--line)}
.seg button{border:0;background:transparent;padding:7px 12px;border-radius:999px;font-size:13px;font-weight:700;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--deep,var(--graphite));color:#fff}

main{padding-block:20px 40px}
.view{display:flex;flex-direction:column;gap:16px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px}
.muted{color:var(--muted)}
.small{font-size:13px}
.eyebrow{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.btn{border:0;border-radius:14px;padding:14px 20px;font-weight:800;font-size:16px;background:var(--orange-deep);color:var(--on-accent,#fff);display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;min-height:50px}
.btn.wide{width:100%}
.btn.ghost{background:var(--surface);color:var(--graphite);border:1.5px solid var(--line)}
.btn.dark{background:var(--deep,var(--graphite))}
/* отклик на нажатие: кнопка чуть «проседает» и темнеет, пока палец на ней */
.btn{transition:transform .08s ease,filter .08s ease,background-color .15s ease;-webkit-user-select:none;user-select:none;touch-action:manipulation}
.btn:not(:disabled):active{transform:scale(.97);filter:brightness(.88)}
.btn.ghost:not(:disabled):active{background:var(--bg);filter:none}
/* кнопка после успешного действия («✓ Скопировано») */
.btn.done,.btn.ghost.done{pointer-events:none;background:var(--good-soft);color:var(--good);border-color:var(--good)}
/* кнопка в работе: значок крутится перед надписью */
.btn.busy:disabled{opacity:.8;cursor:progress}
.btn.busy::before{content:"";width:16px;height:16px;flex:none;border-radius:50%;border:2.5px solid currentColor;border-right-color:transparent;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.btn{transition:none}.btn:not(:disabled):active{transform:none}}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;background:var(--bg);color:var(--muted);white-space:nowrap}
.chip.ok{background:var(--good-soft);color:var(--good)}
.chip.go{background:var(--orange-soft);color:var(--accent-text,var(--orange-deep))}
.chip.no{background:var(--bad-soft);color:var(--bad)}
.toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--deep,var(--graphite));color:#fff;padding:11px 16px;border-radius:12px;font-weight:600;font-size:14px;z-index:60;max-width:calc(100% - 32px);box-shadow:0 8px 24px rgba(0,0,0,.25);text-align:center}
/* уведомление поверх шторок и просмотра картинок; при открытой шторке — сверху, чтобы не закрывать кнопки */
body:has(.sheet,.zoom) .toast{bottom:auto;top:calc(env(safe-area-inset-top,0px) + 14px)}
@media (prefers-reduced-motion:no-preference){.toast:not([hidden]){animation:toastin .22s ease}@keyframes toastin{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translateX(-50%)}}}

/* sticky action bar */
.actionbar{position:sticky;bottom:0;z-index:4;margin-inline:calc(-1 * max(16px,env(safe-area-inset-left,0px)));padding:12px max(16px,env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));background:linear-gradient(to top,var(--bg) 70%,transparent);display:flex;gap:10px}
.actionbar .btn{flex:1}

/* login */
.login{display:grid;gap:16px;grid-template-columns:1fr}
@media(min-width:820px){.login{grid-template-columns:1.1fr 1fr;align-items:start}}
.hero{background:var(--deep,var(--graphite));color:#fff;border-radius:var(--r);padding:24px;display:flex;flex-direction:column;gap:14px;position:relative;overflow:hidden}
.hero h1{color:#fff}
.hero::after{content:"";position:absolute;right:-60px;top:-60px;width:180px;height:180px;border-radius:50%;border:34px solid var(--orange);border-left-color:transparent;border-bottom-color:transparent;transform:rotate(45deg);opacity:.95}
.hero > *{position:relative;z-index:1;max-width:46ch}
.hero p{opacity:.88}
.hero ul{margin:0;padding:0;list-style:none;display:grid;gap:10px}
.hero li{display:flex;gap:12px;align-items:center;font-weight:600}
.hero li i{font-style:normal;font-weight:800;font-size:13px;width:28px;height:28px;border-radius:50%;background:var(--orange);display:grid;place-items:center;flex:none;color:var(--graphite)}
form{display:grid;gap:14px}
label{display:grid;gap:6px;font-size:13px;font-weight:700;color:var(--graphite)}
input,select{font:inherit;font-size:16px;padding:13px 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);width:100%}
.check{display:flex;gap:10px;align-items:flex-start;font-weight:500;color:var(--ink)}
.check input{width:20px;height:20px;margin-top:1px;accent-color:var(--orange-deep);flex:none}

/* home */
.hello{display:flex;gap:16px;align-items:center}
.ring{--p:0;width:72px;height:72px;border-radius:50%;background:conic-gradient(var(--orange) calc(var(--p)*1%),var(--line) 0);display:grid;place-items:center;flex:none}
.ring span{width:56px;height:56px;border-radius:50%;background:var(--surface);display:grid;place-items:center;font-weight:800;font-variant-numeric:tabular-nums;color:var(--graphite)}
.resume{display:flex;gap:12px;align-items:center;background:var(--orange-soft);border:0;border-radius:var(--r);padding:14px 16px;text-align:left;width:100%}
.resume b{display:block;color:var(--graphite)}
.resume .arr{margin-left:auto;font-size:22px;color:var(--accent-text,var(--orange-deep));font-weight:800}
.courses{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.course{display:flex;flex-direction:column;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:0;overflow:hidden}
@media (hover:hover){.course:hover{border-color:var(--orange)}}
.cover{min-height:92px;position:relative;padding:14px 16px;display:flex;flex-direction:column;justify-content:flex-end;color:#fff;overflow:hidden}
.cover::after{content:"";position:absolute;right:-28px;top:-28px;width:96px;height:96px;border-radius:50%;border:16px solid rgba(255,255,255,.28);border-left-color:transparent;border-bottom-color:transparent;transform:rotate(45deg)}
.cover b{font-weight:800;font-size:19px;position:relative;z-index:1}
.cover small{position:relative;z-index:1;font-weight:600;opacity:.9;font-size:12px}
.course .body{padding:14px 16px 16px;display:grid;gap:10px}
.track{height:6px;background:var(--line);border-radius:6px;overflow:hidden}
.track i{display:block;height:100%;background:var(--orange);border-radius:6px}
.row{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.cert{border:2px solid var(--orange);background:var(--surface);border-radius:var(--r);padding:16px;width:100%;max-width:480px;text-align:left;display:grid;gap:4px;position:relative;overflow:hidden}
.cert::after{content:"";position:absolute;right:-30px;bottom:-30px;width:90px;height:90px;border-radius:50%;border:14px solid var(--orange-soft)}

/* course */
.back{border:0;background:none;color:var(--muted);font-weight:700;padding:4px 0;align-self:flex-start}
.steps{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none;margin-inline:calc(-1 * max(16px,env(safe-area-inset-left,0px)));padding-inline:max(16px,env(safe-area-inset-left,0px))}
.steps::-webkit-scrollbar{display:none}
.steps button{flex:none;border:1.5px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 13px;font-size:13px;font-weight:700;display:flex;gap:7px;align-items:center;color:var(--graphite)}
.steps button[aria-current="true"]{background:var(--deep,var(--graphite));color:#fff;border-color:var(--deep,var(--graphite))}
.steps button .d{width:18px;height:18px;border-radius:50%;border:2px solid currentColor;display:grid;place-items:center;font-size:10px;line-height:1}
.steps button.done .d{background:var(--orange);border-color:var(--orange);color:#fff}
.video{border-radius:var(--r);overflow:hidden;position:relative;aspect-ratio:16/9;max-width:100%;display:grid;place-items:center;text-decoration:none;color:#fff}
.video .play{width:70px;height:70px;border-radius:50%;background:#fff;display:grid;place-items:center;position:relative;box-shadow:0 6px 24px rgba(0,0,0,.2)}
.video .play::after{content:"";border-left:22px solid var(--orange-deep);border-top:13px solid transparent;border-bottom:13px solid transparent;margin-left:6px}
.video .cap{position:absolute;left:16px;bottom:12px;right:16px;font-weight:700;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.swipe{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px;margin-inline:calc(-1 * max(16px,env(safe-area-inset-left,0px)));padding-inline:max(16px,env(safe-area-inset-left,0px));scrollbar-width:none}
.swipe::-webkit-scrollbar{display:none}
@media(min-width:820px){.swipe{display:grid;grid-template-columns:repeat(3,1fr);overflow:visible;margin-inline:0;padding-inline:0}}
.fact{flex:0 0 82%;scroll-snap-align:center;border:1.5px solid var(--line);background:var(--surface);border-radius:var(--r);padding:18px;text-align:left;min-height:170px;display:flex;flex-direction:column;gap:10px}
.fact .n{font-size:12px;font-weight:800;color:var(--accent-text,var(--orange-deep))}
.fact .q{font-weight:800;font-size:17px;color:var(--graphite)}
.fact .a{color:var(--muted)}
.fact .hint{margin-top:auto;font-size:12px;font-weight:700;color:var(--accent-text,var(--orange-deep))}
.fact.open{border-color:var(--orange);background:var(--orange-soft)}
.fact.open .a{color:var(--ink)}
.counter{font-size:13px;font-weight:700;color:var(--muted)}
.people{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.person{display:flex;gap:14px;align-items:center;border:1px solid var(--line);border-radius:var(--r);padding:12px;background:var(--surface);min-width:0}
.ava{width:60px;height:60px;border-radius:50%;object-fit:cover;flex:none;background:var(--orange-soft);color:var(--accent-text,var(--orange-deep));display:grid;place-items:center;font-weight:800;font-size:18px}
.person > div{min-width:0;flex:1}
.person b{display:block;color:var(--graphite)}
.tel{font-variant-numeric:tabular-nums;user-select:all;font-weight:600}
.copy{border:1.5px solid var(--line);background:var(--surface);border-radius:10px;font-weight:700;font-size:12px;padding:8px 10px;color:var(--graphite);flex:none;transition:transform .08s ease,background-color .15s ease;touch-action:manipulation}
.copy:active{transform:scale(.95);background:var(--bg)}
.copy.done{background:var(--good-soft);color:var(--good);border-color:var(--good)}
.partner{border:2px solid var(--orange)}
.pdfcard{display:grid;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.pdfcard .cover{min-height:140px}
.pdfcard .inner{padding:0 18px 18px;display:grid;gap:12px}

/* quiz */
.qwrap{display:grid;gap:14px;max-width:680px}
.opts{display:grid;gap:10px}
.opt{text-align:left;border:1.5px solid var(--line);background:var(--surface);border-radius:14px;padding:15px 16px;font-weight:600;font-size:15px;min-height:54px}
.opt:hover:not(:disabled){border-color:var(--orange)}
.opt.right{border-color:var(--good);background:var(--good-soft)}
.opt.wrong{border-color:var(--bad);background:var(--bad-soft)}
.explain{border-radius:14px;padding:13px 15px;background:var(--bg);font-size:14px}
.result{text-align:center;display:grid;gap:12px;justify-items:center;padding-block:8px}
.big{font-size:60px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1}

/* admin */
.kpis{display:grid;gap:10px;grid-template-columns:repeat(2,1fr)}
@media(min-width:760px){.kpis{grid-template-columns:repeat(4,1fr)}}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;display:grid;gap:2px}
.kpi b{font-size:28px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--graphite)}
.kpi.hl{background:var(--deep,var(--graphite));border-color:var(--deep,var(--graphite))}
.kpi.hl b,.kpi.hl .eyebrow,.kpi.hl .small{color:#fff}
.kpi.hl b{color:var(--accent-on-deep,var(--orange))}
.grid2{display:grid;gap:16px;grid-template-columns:1fr}
@media(min-width:900px){.grid2{grid-template-columns:1fr 1fr}}
.filters{display:flex;gap:8px;flex-wrap:wrap}
.filters input,.filters select{width:auto;flex:1 1 160px;padding:11px 12px;font-size:15px}
.tablebox{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
table{border-collapse:collapse;width:100%;min-width:740px;font-size:14px}
th,td{padding:11px 12px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
th{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:800;cursor:pointer;user-select:none}
td.num,th.num{font-variant-numeric:tabular-nums;text-align:right}
tr.me td{background:var(--orange-soft)}
.dots{display:flex;gap:4px}
.dots i{width:13px;height:13px;border-radius:4px;background:var(--line)}
.dots i.p{background:var(--good)}.dots i.f{background:var(--bad)}
.barlist{display:grid;gap:12px}
.bl{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;font-size:14px}
.bl .track{grid-column:1/-1;height:8px}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.legend span{display:flex;gap:5px;align-items:center}
.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.note{font-size:12px;color:var(--muted)}
@media (prefers-reduced-motion:no-preference){.track i{transition:width .5s ease}.opt,.fact{transition:background .15s,border-color .15s}}
[hidden]{display:none!important}
/* ---- app shell: bottom tab bar ---- */
body.nav main{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:6;background:var(--surface);border-top:1px solid var(--line);padding:6px max(8px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px));display:grid;grid-template-columns:repeat(5,1fr)}
.tabbar button{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;font-size:10.5px;font-weight:700;color:var(--muted);position:relative}
.tabbar svg{width:23px;height:23px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.tabbar button[aria-current="page"]{color:var(--accent-text,var(--orange-deep))}
.tabbar .badge{position:absolute;top:2px;left:calc(50% + 6px);min-width:17px;height:17px;border-radius:9px;background:var(--bad);color:#fff;font-size:10px;font-weight:800;display:grid;place-items:center;padding:0 4px}
@media(min-width:820px){.tabbar{left:50%;right:auto;transform:translateX(-50%);width:560px;border:1px solid var(--line);border-radius:18px 18px 0 0}}

/* ---- push banner ---- */
.push{position:fixed;top:calc(env(safe-area-inset-top,0px) + 8px);left:50%;transform:translateX(-50%);width:min(420px,calc(100% - 20px));z-index:30;background:rgba(255,255,255,.97);border:1px solid var(--line);border-radius:18px;box-shadow:0 10px 30px rgba(0,0,0,.18);padding:11px 13px;display:flex;gap:11px;align-items:flex-start;text-align:left}
.push .ic{width:38px;height:38px;border-radius:10px;background:var(--orange);display:grid;place-items:center;flex:none;color:#fff;font-weight:800;font-size:18px}
.push b{display:block;font-size:13px;color:var(--graphite)}
.push span{font-size:13px;color:var(--ink);display:block}
.push small{font-size:11px;color:var(--muted)}
@media (prefers-reduced-motion:no-preference){.push{animation:drop .45s cubic-bezier(.2,.9,.3,1.2)}@keyframes drop{from{transform:translate(-50%,-130%)}to{transform:translate(-50%,0)}}}

/* ---- bottom sheet ---- */
.sheet{position:fixed;inset:0;z-index:25;background:rgba(30,30,32,.45);display:flex;align-items:flex-end;justify-content:center}
.sheet .panel{background:var(--surface);width:100%;max-width:560px;max-height:90vh;overflow:auto;border-radius:22px 22px 0 0;padding:10px max(18px,env(safe-area-inset-right,0px)) calc(18px + env(safe-area-inset-bottom,0px)) max(18px,env(safe-area-inset-left,0px));display:grid;gap:14px}
.sheet .grab{width:42px;height:5px;border-radius:3px;background:var(--line);justify-self:center}
@media (prefers-reduced-motion:no-preference){.sheet .panel{animation:up .3s ease}@keyframes up{from{transform:translateY(40%)}to{transform:none}}}

/* ---- promos ---- */
.chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin-inline:calc(-1 * max(16px,env(safe-area-inset-left,0px)));padding-inline:max(16px,env(safe-area-inset-left,0px))}
.chips::-webkit-scrollbar{display:none}
.chips button{flex:none;border:1.5px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 13px;font-size:13px;font-weight:700;color:var(--graphite)}
.chips button[aria-pressed="true"]{background:var(--deep,var(--graphite));border-color:var(--deep,var(--graphite));color:#fff}
.promos{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.promo{display:flex;flex-direction:column;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:0;overflow:hidden;position:relative}
.promo .cover{min-height:84px}
.promo .body{padding:13px 16px 15px;display:grid;gap:8px}
.promo .t{font-weight:800;font-size:16px;color:var(--graphite);line-height:1.25}
.promo .new{position:absolute;top:10px;right:10px;z-index:2;background:#fff;color:var(--bad);font-size:11px;font-weight:800;border-radius:999px;padding:3px 9px}
.promo.locked{opacity:.75}
.price-old{text-decoration:line-through;color:var(--muted);font-weight:600}
.price{font-size:22px;font-weight:800;color:var(--accent-text,var(--orange-deep));font-variant-numeric:tabular-nums}
.conds{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.conds li{display:flex;gap:10px;align-items:flex-start}
.conds li::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--orange);flex:none;margin-top:7px}
.post{white-space:pre-wrap;background:var(--bg);border-radius:14px;padding:14px;font-size:14px;line-height:1.5;border:1px solid var(--line);user-select:all}
.understood{display:flex;gap:10px;align-items:center;background:var(--good-soft);color:var(--good);border-radius:12px;padding:11px 14px;font-weight:700}

/* ---- admin ---- */
.atabs{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
.atabs button{flex:none;border:0;background:none;padding:8px 2px;margin-right:14px;font-weight:800;font-size:15px;color:var(--muted);border-bottom:3px solid transparent}
.atabs button[aria-current="page"]{color:var(--graphite);border-bottom-color:var(--orange)}
.pstat{display:grid;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px}
.funnel{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.funnel div{background:var(--bg);border-radius:12px;padding:10px;display:grid;gap:2px}
.funnel b{font-size:22px;font-weight:800;color:var(--graphite);font-variant-numeric:tabular-nums}
.funnel span{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
textarea{font:inherit;font-size:16px;padding:12px 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);width:100%;min-height:110px;resize:vertical}
.radios{display:grid;gap:8px}
.radios label{display:flex;gap:10px;align-items:center;font-weight:600;border:1.5px solid var(--line);border-radius:12px;padding:11px 13px;background:var(--surface)}
.radios input{width:18px;height:18px;accent-color:var(--orange-deep);margin:0}
.preview{background:var(--deep,var(--graphite));border-radius:var(--r);padding:16px;display:grid;gap:8px}
.preview .push{position:static;transform:none;width:100%;animation:none;box-shadow:none}
.soon{display:grid;gap:12px;justify-items:start}
.soon ul{margin:0;padding-left:18px;display:grid;gap:6px}
.lock{display:flex;gap:10px;align-items:center;background:var(--orange-soft);border-radius:12px;padding:11px 14px;font-weight:600;color:var(--graphite)}
/* ---- flats & selections ---- */
.flats{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.flat{display:flex;gap:10px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px;min-width:0}
.flat.dim{opacity:.6}
.fl-open{flex:1;min-width:0;display:flex;gap:12px;align-items:center;border:0;background:none;padding:0;text-align:left}
.plan{width:52px;height:52px;border-radius:12px;background:var(--orange-soft);color:var(--accent-text,var(--orange-deep));display:grid;place-items:center;flex:none}
.fl-main{display:grid;gap:2px;min-width:0}
.fl-main b{color:var(--graphite)}
.fl-price{font-weight:800;color:var(--graphite);font-variant-numeric:tabular-nums}
.fl-side{display:grid;gap:8px;justify-items:end;flex:none}
.pick{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--orange-deep);background:var(--surface);color:var(--accent-text,var(--orange-deep));font-size:22px;font-weight:700;display:grid;place-items:center;line-height:1}
.pick.on{background:var(--orange-deep);color:var(--on-accent,#fff)}
.planbig{display:grid;justify-items:center;gap:6px;padding:18px;background:var(--orange-soft);border-radius:var(--r);color:var(--accent-text,var(--orange-deep))}
.planbig svg{width:110px;height:110px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 16px}
.kv span{color:var(--muted)}.kv b{text-align:right;color:var(--graphite)}
.clientpage{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;display:grid;gap:14px}
.cp-head{display:flex;justify-content:space-between;align-items:center}.cp-head img{height:26px;width:auto}
.clientpage .flat{background:var(--bg);border:0}
.realtor{display:flex;gap:12px;align-items:center;background:var(--deep,var(--graphite));color:#fff;border-radius:var(--r);padding:14px}
.realtor > div{min-width:0}
.realtor b{display:block;color:#fff;font-size:16px}.realtor .eyebrow{color:var(--orange)}
.sel-list{display:grid;gap:8px}
.sel-item{display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px;text-align:left}
.sel-item b{display:block;color:var(--graphite)}.sel-item .arr{color:var(--accent-text,var(--orange-deep));font-weight:800;font-size:20px}
.sel-item .ava{width:44px;height:44px;font-size:15px}
.kpis.three{grid-template-columns:repeat(3,1fr)}
.cell{padding:6px 8px;font-size:14px;width:120px;border-radius:8px}
select.cell{width:auto}
.ed{display:grid;gap:8px;padding:12px;border:1px solid var(--line);border-radius:12px}
.opt-ed{display:flex;gap:8px;align-items:center;font-weight:500}
.opt-ed input[type=radio]{width:18px;height:18px;flex:none;accent-color:var(--good);margin:0}
.btn:disabled{opacity:.45;cursor:not-allowed}
/* ---- calculator ---- */
.calc{display:grid;gap:14px}
.range{display:grid;gap:6px}
.range label{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
input[type=range]{width:100%;accent-color:var(--orange-deep);padding:0;border:0;background:none;height:28px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.stepper{display:flex;align-items:center;border:1.5px solid var(--line);border-radius:12px;background:var(--bg);height:50px}
.stepper button{width:44px;height:100%;border:0;background:none;font-size:22px;font-weight:700;color:var(--accent-text,var(--orange-deep))}
.stepper output{flex:1;text-align:center;font-size:17px;font-weight:800;color:var(--graphite)}
.result-card{background:var(--deep,var(--graphite));color:#fff;border-radius:var(--r);padding:18px;display:grid;gap:10px}
.result-card .eyebrow{color:var(--orange)}
.pay{font-size:38px;font-weight:800;color:var(--orange);font-variant-numeric:tabular-nums;line-height:1.1}
.kv.light span{color:rgba(255,255,255,.72)}.kv.light b{color:#fff}
.cmp{display:grid;gap:6px;text-align:left;border:1.5px solid var(--line);border-radius:12px;padding:12px;background:var(--surface)}
.cmp.on{border-color:var(--orange);background:var(--orange-soft)}
.cmp b{color:var(--graphite)}
.grid3{display:grid;grid-template-columns:1fr 1fr;gap:10px}
/* ---- fixation timeline ---- */
.timeline{list-style:none;margin:0;padding:0;display:grid;gap:0}
.timeline li{display:flex;gap:12px;align-items:center;padding:8px 0;position:relative;color:var(--muted);font-weight:600}
.timeline li span{width:18px;height:18px;border-radius:50%;border:2px solid var(--line);background:var(--surface);flex:none;position:relative;z-index:1}
.timeline li:not(:last-child)::after{content:"";position:absolute;left:8px;top:26px;bottom:-10px;width:2px;background:var(--line)}
.timeline li.done{color:var(--graphite)}
.timeline li.done span{background:var(--good);border-color:var(--good)}
.timeline li.done:not(:last-child)::after{background:var(--good)}
.timeline li.now{color:var(--graphite);font-weight:800}
.timeline li.now span{border-color:var(--orange-deep);box-shadow:0 0 0 4px var(--orange-soft)}
.kv .tel{white-space:nowrap}
/* ---- level, rating, notifications ---- */
.level{background:var(--deep,var(--graphite));color:#fff;border-radius:var(--r);padding:18px;display:grid;gap:12px}
.level h2{color:#fff;font-size:24px}.level .eyebrow{color:var(--orange)}
.level .track{background:rgba(255,255,255,.18);height:8px}
.pts{display:grid;justify-items:end;line-height:1.1}.pts b{font-size:30px;font-weight:800;color:var(--orange);font-variant-numeric:tabular-nums}.pts span{font-size:12px;opacity:.75}
.lvls{display:flex;gap:6px;flex-wrap:wrap}
.lvls span{font-size:11px;font-weight:700;padding:4px 9px;border-radius:999px;background:rgba(255,255,255,.1);color:rgba(255,255,255,.6)}
.lvls span.on{background:var(--orange);color:var(--graphite)}
.board{display:grid;gap:4px}
.br{display:flex;gap:12px;align-items:center;padding:9px 10px;border-radius:12px}
.br.me{background:var(--orange-soft)}
.br.gap{justify-content:center;color:var(--muted);padding:2px}
.br .pl{width:26px;text-align:center;font-weight:800;color:var(--muted);flex:none}
.br .nm{flex:1;min-width:0;display:grid}.br .nm b{color:var(--graphite)}
.br > b{font-variant-numeric:tabular-nums;color:var(--graphite)}
.earn{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line);font-weight:600}
.earn:last-child{border-bottom:0}
.earn b{min-width:44px;text-align:right;color:var(--accent-text,var(--orange-deep))}
.conn{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.conn-b{border:1.5px solid var(--line);background:var(--surface);border-radius:14px;padding:12px;display:grid;gap:2px;text-align:left}
.conn-b b{color:var(--graphite)}.conn-b span{color:var(--accent-text,var(--orange-deep));font-weight:700}
.conn-b.on{border-color:var(--good);background:var(--good-soft)}.conn-b.on span{color:var(--good)}
.switch{display:flex;justify-content:space-between;align-items:center;gap:12px;font-weight:600;cursor:pointer}
.switch input{position:absolute;opacity:0;width:1px;height:1px}
.switch i{width:46px;height:28px;border-radius:14px;background:var(--line);position:relative;flex:none;transition:background .2s}
.switch i::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .2s}
.switch input:checked + i{background:var(--good)}
.switch input:checked + i::after{transform:translateX(18px)}
.switch input:focus-visible + i{outline:3px solid var(--orange);outline-offset:2px}
.steps-ol{margin:0;padding-left:20px;display:grid;gap:8px}
.code{background:var(--orange-soft);color:var(--accent-text,var(--orange-deep));padding:2px 8px;border-radius:6px;letter-spacing:.1em}
/* ---- course modules, lessons, slides ---- */
.mods{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.mods button{width:100%;display:flex;gap:12px;align-items:center;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px}
.mods button.next{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-soft)}
.mods .mi{width:34px;height:34px;border-radius:50%;background:var(--bg);color:var(--graphite);display:grid;place-items:center;font-weight:800;flex:none;font-size:14px}
.mods .done .mi{background:var(--good);color:#fff}
.mods .mt{flex:1;min-width:0;display:grid}.mods .mt b{color:var(--graphite)}
.mods .arr{color:var(--muted);font-size:22px}
.gal{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin-inline:calc(-1 * max(16px,env(safe-area-inset-left,0px)));padding-inline:max(16px,env(safe-area-inset-left,0px))}
.gal::-webkit-scrollbar{display:none}
.gimg{flex:0 0 88%;scroll-snap-align:center;border:0;padding:0;background:var(--surface);border-radius:14px;overflow:hidden;position:relative;box-shadow:0 1px 0 var(--line)}
.gimg img{display:block;width:100%;height:auto}
.gal .gimg:only-child{flex-basis:100%}
@media(min-width:820px){.gimg{flex-basis:60%}}
.deck{display:grid;gap:12px}
.deck .gimg{flex:none;width:100%}
.deck .pg{position:absolute;right:10px;bottom:8px;background:rgba(0,0,0,.55);color:#fff;font-size:12px;font-weight:700;border-radius:999px;padding:3px 9px}
.zoom{position:fixed;inset:0;z-index:40;background:rgba(20,20,22,.94);display:grid;place-items:center;padding:max(16px,env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));gap:14px;align-content:center}
.zoom img{max-width:100%;max-height:78vh;border-radius:10px}
.video img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}
.video .play,.video .cap{z-index:1}
.lesson{display:grid;gap:14px}.lesson p{font-size:16px;line-height:1.55}
.sell{background:var(--deep,var(--graphite));color:#fff;border-radius:var(--r);padding:16px 18px;display:grid;gap:6px}
.sell .eyebrow{color:var(--orange)}.sell p{font-weight:600}
.opt.sel{border-color:var(--orange-deep);background:var(--orange-soft)}
.opt.multi{display:flex;gap:10px;align-items:center}
.opt .box{width:22px;height:22px;border-radius:6px;border:2px solid var(--line);display:grid;place-items:center;font-style:normal;font-size:13px;font-weight:800;flex:none;background:var(--surface)}
.opt.sel .box{border-color:var(--orange-deep);color:var(--accent-text,var(--orange-deep))}
.opt.right .box{border-color:var(--good);color:var(--good)}
.review{display:grid;gap:3px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.review:last-child{border-bottom:0;padding-bottom:0}
.review b{color:var(--graphite)}
details.ed summary{cursor:pointer;list-style:none}
details.ed summary::-webkit-details-marker{display:none}
details.ed[open] summary{margin-bottom:8px}
/* ---- reference ---- */
.search{display:flex;gap:10px;align-items:center;background:var(--surface);border:1.5px solid var(--line);border-radius:14px;padding:0 14px;color:var(--muted)}
.search input{border:0;background:none;padding:13px 0}
.search:focus-within{border-color:var(--orange)}
.search input:focus-visible{outline:none}
.refsec{display:grid;gap:0;padding-block:14px}
.refsec h3{margin-bottom:6px}
.refrow{display:grid;gap:2px;padding:10px 0;border-bottom:1px solid var(--line)}
.refrow:last-child{border-bottom:0}
.refrow .rk{font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.refrow .rv{font-size:15px;color:var(--ink)}
.refrow.fresh{background:linear-gradient(90deg,var(--orange-soft),transparent);margin-inline:-18px;padding-inline:18px}
.upd{display:grid;gap:10px}.upd div{display:grid}.upd b{color:var(--graphite)}
.chips .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--bad);vertical-align:middle;font-style:normal}
.mebtn{width:36px;height:36px;border-radius:50%;border:0;background:var(--orange-soft);color:var(--accent-text,var(--orange-deep));font-weight:800;font-size:13px;flex:none}
/* ---- build, visits, stories, analytics ---- */
.buildcard{display:flex;gap:12px;align-items:center;justify-content:space-between;background:var(--deep,var(--graphite));color:#fff;border:0;border-radius:var(--r);padding:14px 16px;text-align:left;width:100%}
.buildcard b{display:block;color:#fff;font-size:16px}
.ring.sm{width:54px;height:54px}.ring.sm span{width:42px;height:42px;font-size:13px}
.buildcard .ring span{background:var(--deep,var(--graphite));color:#fff}
.refact{display:grid;gap:10px}
.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.photos img,.ph-empty{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;display:grid;place-items:center;background:repeating-linear-gradient(45deg,var(--bg),var(--bg) 8px,var(--line) 8px,var(--line) 16px);color:var(--muted);font-size:11px;font-weight:700;text-align:center;padding:4px}
.tours{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.tour{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;display:grid;gap:6px}
.tour b{color:var(--graphite)}
.sel-item .ava{font-size:12px}
.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.slots button{border:1.5px solid var(--line);background:var(--surface);border-radius:12px;padding:12px 4px;font-weight:700;color:var(--graphite);display:grid;gap:2px}
.slots button small{font-size:10px;color:var(--muted);font-weight:600}
.slots button[aria-pressed="true"]{background:var(--orange-deep);border-color:var(--orange-deep);color:var(--on-accent,#fff)}
.slots button:disabled{opacity:.45;cursor:not-allowed;text-decoration:line-through}
img.story{width:100%;max-width:320px;justify-self:center;border-radius:16px;box-shadow:0 8px 24px rgba(0,0,0,.18)}
.funnel5{display:grid;gap:8px}
.funnel5 div{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;position:relative;padding:10px 12px;border-radius:10px;overflow:hidden}
.funnel5 i{position:absolute;left:0;top:0;bottom:0;width:var(--w);background:var(--orange-soft);border-radius:10px}
.funnel5 span,.funnel5 b,.funnel5 small{position:relative}
.funnel5 b{font-size:18px;color:var(--graphite);font-variant-numeric:tabular-nums}
.funnel5 small{color:var(--muted);font-weight:700;min-width:36px;text-align:right}
.funnel5 div:first-child small{display:none}
.agroups{margin-top:2px}
section.kpi.hl b{color:var(--accent-on-deep,var(--orange))}

.vplayer{width:100%;border-radius:var(--r);background:#000;max-height:70vh}
/* номер телефона — ссылка «позвонить»: цвет акцента и подчёркивание, чтобы было видно, что нажимается */
a.tel{color:var(--accent-text,var(--orange-deep));text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px;display:inline-block;justify-self:start;font-weight:700;-webkit-user-select:none;user-select:none}
a.tel:active{opacity:.6}
a.chip{color:var(--graphite)}

/* ---- Первичка: оболочка и застройщики ---- */
.brand .mark{height:34px;width:34px;border-radius:9px}
.brand .word{font-family:"Unbounded",var(--font);font-size:19px;font-weight:800;color:var(--graphite);letter-spacing:-.03em;line-height:1}
.brand .word i{font-style:normal;color:var(--volt-dot,var(--graphite))}
.brand .tname{font-size:15px;font-weight:800;color:var(--graphite);max-width:46vw;line-height:1.15}
.hbtns{display:flex;gap:8px;align-items:center}
.swbtn{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--line);background:var(--surface);display:grid;place-items:center;position:relative;color:var(--graphite);flex:none}
.swbtn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9}
.swbtn .dot{position:absolute;top:-1px;right:-1px;width:11px;height:11px;border-radius:50%;background:var(--bad);border:2px solid var(--surface)}
.devs{display:grid;gap:10px}
.dev{display:flex;gap:14px;align-items:center;text-align:left;width:100%;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--dc,var(--orange));border-radius:var(--r);padding:14px}
.dev .dmain{display:grid;gap:2px;flex:1;min-width:0}
.dev .dmain b{color:var(--graphite);font-size:16px}
.dev .arr{font-size:24px;color:var(--muted)}
.dlogo{width:56px;height:56px;border-radius:14px;flex:none;display:grid;place-items:center;background:#fff;border:1px solid var(--line);overflow:hidden;font-weight:800;font-size:18px}
.dlogo img{max-width:88%;max-height:70%;object-fit:contain}

/* ---- «Вольт»: тёмная оболочка Первички (вход, мои застройщики, каталог) ---- */
html.volt{
  color-scheme:dark;
  --bg:#0B0B0C; --surface:#18181B; --ink:#F4F4EE; --graphite:#F4F4EE; --muted:#A1A19A; --line:#2A2A2E;
  --orange:#D4FF3A; --orange-deep:#D4FF3A; --on-accent:#0B0B0C; --orange-soft:#2A2A2E; --accent-text:#D4FF3A;
  --volt-dot:#D4FF3A; --bad-soft:#3A1E1A; --bad:#FF8A73;
}
html.volt .top{background:#0B0B0C;border-bottom-color:#1E1E21}
html.volt h1,html.volt h2{font-family:"Unbounded",var(--font);letter-spacing:-.03em}
html.volt .hero{background:#18181B;color:#F4F4EE}
html.volt .btn.ghost{background:transparent;color:#F4F4EE;border-color:#3A3A3E}
html.volt .toast{background:#F4F4EE;color:#0B0B0C}
html.volt .btn.done,html.volt .copy.done{background:rgba(46,139,87,.2);color:#8FE0AE;border-color:#2E8B57}
html.volt .dev{border-left-width:1px}
html.volt .dev .chip.no{background:#D4FF3A;color:#0B0B0C}
html.volt .mebtn{background:#2A2A2E;color:#F4F4EE}
html.volt .swbtn{background:#18181B;border-color:#2A2A2E;color:#F4F4EE}
html.volt input::placeholder{color:#7C7C76}
html.volt .hero::after{width:22px;height:22px;border:0;border-radius:0;background:#D4FF3A;right:24px;top:24px;transform:none;opacity:1}

/* ---------- этап 3: квартиры, шахматка, подборка ---------- */
:root{--warn:#9A6200;--warn-soft:#FCEFD6}
.chip.warn{background:var(--warn-soft);color:var(--warn)}
.upd{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--muted);margin-top:4px}
.upd i{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}
.upd.ok i{background:var(--good);box-shadow:0 0 0 3px var(--good-soft)}
.upd.old i{background:var(--warn)}
.back{border:0;background:none;padding:0 0 4px;font:inherit;font-size:14px;font-weight:700;color:var(--accent-text,var(--orange-deep))}
.projs{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.proj{display:flex;flex-direction:column;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:0;overflow:hidden}
.proj:hover{border-color:var(--orange)}
.proj .cover{min-height:92px;padding:14px 16px;display:flex;flex-direction:column;justify-content:flex-end;color:#fff}
.proj .cover small{font-size:11px;font-weight:700;opacity:.9}
.proj .cover b{font-size:20px;font-weight:800}
.proj .body{padding:12px 16px 14px;display:grid;gap:6px}
.proj .big{font-size:17px;color:var(--graphite)}
.rooms{display:flex;gap:4px}
.rooms i{font-style:normal;font-size:11px;font-weight:800;min-width:24px;height:24px;padding:0 5px;border-radius:7px;background:var(--orange-soft);color:var(--accent-text,var(--orange-deep));display:grid;place-items:center}
.fbar{display:grid;gap:8px}
.fbar .seg{justify-self:start}
.seg button{border:0;background:none;border-radius:999px;padding:7px 15px;font:inherit;font-size:13px;font-weight:700;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--graphite);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.chips select{flex:none;width:auto;font-size:13px;font-weight:700;padding:6px 10px;border-radius:999px;background:var(--surface);color:var(--graphite)}
.chess{display:grid;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px}
.chess h3{margin:0}
.fboard{overflow-x:auto;display:grid;gap:4px;padding-bottom:4px}
.frow{display:grid;grid-template-columns:26px repeat(var(--w),minmax(46px,1fr));gap:4px;align-items:stretch}
.fn{font-size:11px;font-weight:700;color:var(--muted);display:grid;place-items:center end;padding-right:4px}
.fcell{border:1.5px solid transparent;border-radius:8px;min-height:44px;padding:3px 2px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;font:inherit;line-height:1.1;cursor:pointer}
.fcell b{font-size:13px;font-weight:800}
.fcell small{font-size:10.5px;font-weight:600}
.fcell.free{background:var(--good-soft);color:#1E5E3A;border-color:#BFE3CC}
.fcell.booked{background:var(--warn-soft);color:var(--warn);border-color:#F2D9A8}
.fcell.sold{background:repeating-linear-gradient(135deg,#EFEDEA 0 5px,#E6E3DF 5px 10px);color:#A3A19D;cursor:default}
.fcell.dim{opacity:.22}
.fcell{position:relative}
.fcell .hotmark{position:absolute;top:-6px;right:-5px;font-size:12px;font-style:normal;line-height:1}
.fcell.hot.free{border-color:var(--orange)}
.commbox{display:grid;gap:4px;border:1.5px solid var(--line);border-radius:14px;padding:12px 14px;background:var(--surface)}
.commbox .row{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.commbox b{font-size:18px;color:var(--graphite)}
.commbox.hot{border-color:var(--orange);background:var(--warn-soft)}
.fcard .comm{color:var(--good);font-weight:700}
.fcard.hot{border-color:var(--orange)}
.mortbox{display:grid;gap:10px;border:1.5px solid var(--line);border-radius:14px;padding:12px 14px;background:var(--surface)}
.mortbox .row{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.mortbox h3{margin:0;font-size:16px}
.mortrow{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.mortrow .pay{text-align:right;white-space:nowrap;font-size:16px;color:var(--graphite)}
.mortrow .pay small{display:block;font-size:11px;font-weight:600;color:var(--muted)}
.mortrow.best .pay{color:var(--good)}
.buildlink{display:flex;gap:10px;align-items:center;text-align:left;width:100%;border:1.5px solid var(--line);background:var(--surface);border-radius:14px;padding:12px 14px;font:inherit;font-size:14px;color:var(--graphite);cursor:pointer}
.buildlink > span:nth-child(2){flex:1}
.buildrep{display:grid;gap:8px}
.buildrep .row{display:flex;gap:8px;align-items:baseline}
.pbar{height:7px;border-radius:99px;background:var(--line);overflow:hidden}.pbar i{display:block;height:100%;background:var(--orange)}
.bphotos{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin-inline:-4px;padding-inline:4px}
.bph{flex:none;border:0;padding:0;background:none;border-radius:12px;overflow:hidden;width:min(78%,320px);aspect-ratio:4/3;cursor:zoom-in}
.bph img{width:100%;height:100%;object-fit:cover;display:block}
.storyed{gap:12px}
.storyed .row{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.sprev{display:grid;justify-items:center;gap:6px}
.sprev canvas{max-height:52vh;max-width:100%;width:auto;height:auto;border-radius:14px;box-shadow:0 6px 24px rgba(0,0,0,.18);touch-action:none;cursor:grab;background:#ddd}
.sphotos{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}
.sphotos button,.sphotos .addph{flex:none;width:64px;height:64px;border-radius:12px;overflow:hidden;border:2px solid transparent;padding:0;background:var(--line);cursor:pointer}
.sphotos button[aria-pressed="true"]{border-color:var(--orange)}
.sphotos img{width:100%;height:100%;object-fit:cover;display:block}
.sphotos .addph{display:grid;place-items:center;font-size:11px;font-weight:700;text-align:center;color:var(--graphite);border:1.5px dashed var(--line);background:var(--surface)}
.stext{display:grid;gap:10px}.stext summary{font-weight:700;cursor:pointer}.stext[open]{display:grid;gap:10px}
.priceup{display:flex;gap:10px;align-items:center;text-align:left;width:100%;border:1.5px solid var(--line);background:var(--surface);border-radius:14px;padding:10px 14px;font:inherit;font-size:14px;color:var(--graphite);cursor:pointer}
.priceup b{color:var(--orange)}
.hotbanner{display:flex;align-items:center;gap:12px;text-align:left;width:100%;border:1.5px solid var(--orange);background:var(--warn-soft);border-radius:16px;padding:14px 16px;font:inherit;color:var(--graphite);cursor:pointer}
.hotbanner .ic{font-size:26px;line-height:1}
.hotbanner > span:nth-child(2){flex:1;display:grid;gap:2px}
.hotbanner b{font-size:16px}
.fcell.in{outline:3px solid var(--orange);outline-offset:1px}
.fcell:not(.sold):hover{border-color:var(--orange)}
.flegend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;font-weight:600;color:var(--ink)}
.flegend span{display:inline-flex;align-items:center;gap:6px}
.flegend i{width:14px;height:14px;border-radius:4px;display:inline-block}
.flegend i.free{background:var(--good-soft);border:1.5px solid #BFE3CC}
.flegend i.booked{background:var(--warn-soft);border:1.5px solid #F2D9A8}
.flegend i.sold{background:#E6E3DF}
.flegend i.in{border:3px solid var(--orange)}
.flist{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.fcard{display:flex;gap:12px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px;font:inherit;color:inherit}
.fcard.in{border:2px solid var(--orange)}
.fcard .plan{width:96px;height:76px;flex:none;border-radius:10px;background:var(--bg);overflow:hidden;display:grid;place-items:center}
.fcard .plan img{width:100%;height:100%;object-fit:contain}
.fcard .info{display:grid;gap:2px;min-width:0;flex:1}
.fcard .price{font-size:16px;color:var(--graphite)}
.planbig{border:1px solid var(--line);background:#fff;border-radius:14px;padding:6px;cursor:zoom-in}
.planbig img{width:100%;display:block}
.pricebox{display:flex;justify-content:space-between;align-items:center;gap:10px}
.pricebox b{display:block;font-size:24px;color:var(--graphite);font-weight:800}
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;margin:0}
.facts div{background:var(--bg);border-radius:10px;padding:8px 10px}
.facts dt{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.facts dd{margin:0;font-weight:700;color:var(--graphite)}
.hist{margin:0;padding:10px 12px 10px 28px;background:var(--orange-soft);border-radius:10px;font-size:13px;font-weight:600}
textarea{font:inherit;font-size:16px;padding:12px 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);width:100%;resize:vertical}
.cartbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(74px + env(safe-area-inset-bottom,0px));z-index:7;display:flex;align-items:center;gap:10px;background:var(--deep,var(--graphite));color:#fff;border-radius:16px;padding:8px 8px 8px 16px;box-shadow:0 8px 24px rgba(0,0,0,.25);width:min(560px,calc(100% - 24px))}
.cartbar span{flex:1;font-size:14px}
.cartbar .btn{min-height:42px;padding:8px 14px;font-size:14px}
.cartbar .x{border:0;background:none;color:#fff;font-size:22px;padding:0 6px;opacity:.7}
body.nav .view{padding-bottom:70px}
@media(min-width:760px){.kpis:has(> :nth-child(5)){grid-template-columns:repeat(5,1fr)}}
/* клетка, которую только что поменял застройщик */
@keyframes flashcell{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 0 5px var(--orange)}}
.fcell.flash,.fcard.flash{animation:flashcell .8s ease 4;position:relative;z-index:1}
.sels{display:grid;gap:10px}
.sels h3{margin:0}
.sel{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:10px}
.sel > div{display:grid;flex:1;min-width:160px}
.sel.focus{background:var(--orange-soft);border-radius:12px;padding:10px;border-top:0}
/* лента: дата мероприятия на обложке, текст новости */
.promo .cover{position:relative}
.evdate{position:absolute;right:12px;top:12px;background:#fff;color:var(--graphite);border-radius:12px;padding:4px 10px;display:grid;justify-items:center;line-height:1.1;font-size:11px;font-weight:700;text-transform:uppercase;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.evdate b{font-size:20px}
.newsbody{display:grid;gap:10px;font-size:15px;line-height:1.55}
/* лента: афиши, карусель картинок, файлы */
.promo .poster{position:relative;background:var(--bg);display:grid;place-items:center;overflow:hidden}
.promo .poster img{width:100%;height:auto;max-height:520px;object-fit:contain;display:block}
.promo .poster .ptag{position:absolute;left:10px;top:10px;background:rgba(20,20,22,.72);color:#fff;font-size:11px;font-weight:700;border-radius:8px;padding:3px 8px}
.promo .vposter video{width:100%;max-height:420px;object-fit:cover;display:block;background:#000;pointer-events:none}
.promo .vposter .vplay{position:absolute;inset:0;margin:auto;width:56px;height:56px;border-radius:50%;background:rgba(20,20,22,.72);color:#fff;display:grid;place-items:center;font-size:22px;padding-left:4px}
.vwrap{background:#000;border-radius:14px;overflow:hidden;display:grid;place-items:center}
.vwrap video{width:100%;max-height:60vh;display:block;background:#000}
.vwrap.f9x16 video{width:auto;max-width:100%;aspect-ratio:9/16}
.promo .poster .pcount{position:absolute;right:10px;bottom:10px;background:rgba(20,20,22,.72);color:#fff;font-size:11px;font-weight:700;border-radius:8px;padding:3px 8px}
.promo .hasfile{position:absolute;right:12px;top:12px;z-index:2;background:#fff;color:var(--graphite);font-size:11px;font-weight:800;border-radius:8px;padding:3px 8px;box-shadow:0 1px 4px rgba(0,0,0,.15)}
.promo .poster .evdate{top:10px;right:10px;bottom:auto;left:auto}
.pgal{display:grid;gap:8px}
.gtrack{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:8px;scrollbar-width:none;border-radius:14px}
.gtrack::-webkit-scrollbar{display:none}
.pgimg{flex:0 0 100%;scroll-snap-align:center;border:0;padding:0;background:var(--bg);border-radius:14px;overflow:hidden;cursor:zoom-in;display:grid;place-items:center}
.pgimg img{width:100%;max-height:70vh;object-fit:contain;display:block}
.gdots{display:flex;justify-content:center;gap:6px}
.gdots i{width:7px;height:7px;border-radius:50%;background:var(--line)}
.gdots i.on{background:var(--orange)}
.files{display:grid;gap:8px}
.file{display:flex;gap:12px;align-items:center;border:1.5px solid var(--line);border-radius:14px;padding:10px 12px;text-decoration:none;color:var(--ink)}
.file b{display:block;color:var(--graphite)}
.ficon{flex:none;width:42px;height:48px;border-radius:8px;background:var(--bad-soft);color:var(--bad);font-size:11px;font-weight:800;display:grid;place-items:center}

/* ---- рейтинг агентов: места, медали, своё место ---- */
.medal,.place{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;font-size:13px;font-weight:800;flex:none}
.medal{color:var(--on-medal)}
.medal.m1{background:var(--gold)}.medal.m2{background:var(--silver)}.medal.m3{background:var(--bronze)}
.place{color:var(--muted);border:1.5px solid var(--line)}
.rmine{display:flex;gap:16px;align-items:center}
.rmine .big{font-size:44px;font-weight:800;line-height:1;color:var(--graphite);font-variant-numeric:tabular-nums}
.rmine .big small{font-size:16px;font-weight:700;color:var(--muted)}
.rlist{display:grid;gap:2px;margin:0;padding:0;list-style:none}
.rlist li{display:flex;gap:12px;align-items:center;padding:9px 4px;border-bottom:1px solid var(--line)}
.rlist li:last-child{border-bottom:0}
.rlist li.me{background:var(--orange-soft);border-radius:12px;padding:9px 10px;border-bottom-color:transparent}
.rlist .rn{flex:1;min-width:0}
.rlist .rn b{display:block;color:var(--graphite);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rlist .rp{font-weight:800;color:var(--graphite);font-variant-numeric:tabular-nums}
.rhow{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.rhow li{display:flex;gap:12px;align-items:baseline;justify-content:space-between}
.rhow li b{color:var(--graphite);white-space:nowrap}
.rprize{border-radius:var(--r);padding:14px 16px;background:var(--deep,var(--graphite));color:#fff;display:grid;gap:4px}
.rprize .eyebrow{color:inherit;opacity:.7}
.rcard{display:flex;gap:12px;align-items:center;width:100%;text-align:left;border:1.5px solid var(--line);background:var(--surface);border-radius:var(--r);padding:12px 14px;cursor:pointer;font:inherit;color:var(--ink)}
.rcard .rn{flex:1;min-width:0}.rcard .rn b{display:block;color:var(--graphite)}

/* ---- база ответов по ЖК ---- */
.medal.kbi{background:var(--orange-soft);color:var(--graphite)}
.kbitem{display:grid;gap:10px;padding:14px 16px}
.kbq{all:unset;display:grid;gap:2px;cursor:pointer}
.kbq b{color:var(--graphite);font-size:16px;line-height:1.3}
.kbq:focus-visible{outline:2px solid var(--orange);outline-offset:4px;border-radius:6px}
.kba{white-space:pre-line;font-size:15px}
.kbc{display:grid;gap:4px;border-left:3px solid var(--orange);background:var(--bg);border-radius:0 10px 10px 0;padding:10px 12px;font-size:14px;white-space:pre-line}
.kbimg{border:0;padding:0;background:none;border-radius:12px;overflow:hidden;cursor:zoom-in}
.kbimg img{display:block;width:100%;max-height:260px;object-fit:cover}

/* ---- как настоящее приложение (только приложение риелтора: html.native ставит app.js) ---- */
/* без приближения двойным касанием, без серой вспышки при нажатии, без «резинки» и обновления страницы жестом вниз */
html.native{touch-action:manipulation;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
html.native body{overscroll-behavior-y:none}
/* кнопки, меню и картинки не выделяются и не открывают меню «Сохранить картинку» долгим нажатием — тексты выделяются как обычно */
html.native :is(button,.btn,.tabbar,.chips,.course,.rcard,.resume,.top,.seg,.back,img){-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
html.native .zoom img{touch-action:none;transition:transform .12s ease-out;will-change:transform;max-height:82vh}
/* предложение установить приложение */
.install{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(12px + env(safe-area-inset-bottom,0px));width:min(440px,calc(100% - 20px));z-index:35;display:flex;gap:12px;align-items:flex-start;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:18px;padding:14px;box-shadow:0 12px 32px rgba(0,0,0,.18)}
body.nav .install{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
.install>img{width:48px;height:48px;border-radius:12px;flex:none;border:1px solid var(--line)}
.install>div{display:grid;gap:6px;min-width:0}
.install .small{color:var(--muted);line-height:1.4}
.install .rowbtns{display:flex;gap:8px;margin-top:4px}
.install .btn{min-height:38px;padding:8px 14px;font-size:14px}
/* пока открыта клавиатура — нижнее меню, корзина подборки и предложение установить спрятаны (класс typing ставит app.js) */
body.typing .tabbar,body.typing .cartbar,body.typing .install{display:none}
/* фото профиля в кружке справа вверху */
.mebtn{overflow:hidden;padding:0}.mebtn img{width:100%;height:100%;object-fit:cover;display:block}

/* ---- карточка ЖК (src/jk.js, renderJk) ---- */
.proj .cover.photo{min-height:132px}
.jkv{gap:14px}
.jkgal{margin-top:2px}
.jkgal .gimg{flex:0 0 88%;max-width:560px;padding:0;border:0;background:none;border-radius:16px;overflow:hidden}
.jkgal .gimg img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.jkcover{height:120px;border-radius:var(--r)}
.jknums{display:flex;gap:18px;flex-wrap:wrap;align-items:center}
.jknums>div{display:grid;gap:2px}.jknums b{font-size:20px;color:var(--graphite)}
.jktiles{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.jktile{display:grid;gap:2px;text-align:left;background:var(--surface);border:1.5px solid var(--line);border-radius:16px;padding:12px 14px;font:inherit;color:var(--ink);cursor:pointer}
.jktile .ic{font-size:22px;line-height:1.2}.jktile b{font-size:15px}
.jktile:active{border-color:var(--orange)}
.jkpromo{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;text-align:left;width:100%;background:var(--bg);border:0;border-radius:12px;padding:10px 12px;font:inherit;color:var(--ink);cursor:pointer}
.jkpromo b{flex:1 1 60%;font-size:14px}
.jkabout .clamp{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.jkabout p{margin:0;line-height:1.5}
.linkbtn{background:none;border:0;padding:0;font:inherit;font-weight:700;color:var(--accent-text,var(--orange-deep));cursor:pointer;justify-self:start}
.jkkv{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.jkkv>div{background:var(--bg);border-radius:12px;padding:9px 11px;display:grid;gap:2px;align-content:start}.jkkv b{font-size:14px;color:var(--graphite)}
.jkitems{display:grid;gap:10px}
.jkitems article{display:grid;grid-template-columns:96px 1fr;gap:12px;align-items:start;background:var(--bg);border-radius:14px;overflow:hidden}
.jkitems article:not(:has(.gimg)){grid-template-columns:1fr}
.jkitems .gimg{padding:0;border:0;background:none}.jkitems .gimg img{width:96px;height:96px;object-fit:cover;display:block}
.jkitems article>div{padding:10px 12px 10px 0;display:grid;gap:3px}.jkitems article:not(:has(.gimg))>div{padding:10px 12px}
.jkitems p{margin:0;color:var(--ink)}
.jkph{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.jkph .gimg{padding:0;border:0;background:none;border-radius:10px;overflow:hidden}.jkph img{width:100%;aspect-ratio:1;object-fit:cover;display:block}
.jkprog{display:grid;gap:2px;border-top:1px solid var(--line);padding-top:8px}.jkprog:first-of-type{border:0;padding-top:0}
/* новый вид карточки ЖК (модуль jkview) */
.jk2 .jkhero{position:relative}
.jk2 .jkcls{position:absolute;left:0;bottom:-10px;background:var(--surface);color:var(--graphite);font-weight:700;font-size:13px;padding:6px 14px;border-radius:0 10px 10px 0;box-shadow:0 1px 4px rgba(0,0,0,.15)}
.jkdots{display:flex;justify-content:center;gap:5px;margin-top:-4px}.jkdots i{width:6px;height:6px;border-radius:3px;background:var(--line);transition:width .2s}.jkdots i.on{width:18px;background:var(--muted)}
.jk2 .jkhead h1{margin:0}.jkprice{margin:4px 0 0;font-size:19px;font-weight:800;color:var(--graphite)}.jk2 .jkhead p.small.muted{margin:2px 0 0}
.jkacts{display:grid;grid-template-columns:1fr 1fr;gap:10px}.jkacts .btn{padding-inline:10px}.jkacts .btn:only-child{grid-column:1/-1}
.jkrooms{display:grid}
.jkrooms button,.jkfin{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line);padding:11px 0;font:inherit;color:var(--ink);cursor:pointer}
.jkrooms button>span,.jkfin>span{flex:1;min-width:0;display:grid;gap:2px}.jkrooms b{font-size:16px;font-weight:600;color:var(--graphite)}.jkrooms i{font-style:normal;font-size:24px;color:var(--muted)}
.jkrooms button:last-child{border-bottom:0}
.jkpay{display:grid;text-align:left;width:100%;background:var(--surface);border:1.5px solid var(--line);border-radius:18px;padding:14px 16px;font:inherit;color:var(--ink);cursor:pointer}
.jkpay>span{display:grid;gap:2px}.jkpay b{font-size:17px;color:var(--graphite)}.jkpay>span>span:nth-child(2){font-size:16px}
.jkprogs{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px 14px;margin-top:-6px}.jkprogs summary{cursor:pointer;font-weight:700;font-size:14px;color:var(--muted)}.jkprogs>div{display:grid;gap:8px;margin-top:10px}
.jksec{display:grid;gap:10px}.jksec h2,.jksec h3{margin:0}
.jktabs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}.jktabs::-webkit-scrollbar{display:none}
.jktabs button{flex:none;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);border-radius:12px;padding:8px 14px;font:inherit;font-weight:600;font-size:14px;cursor:pointer}
.jktabs button[aria-selected="true"]{border-color:var(--graphite)}
.jkparams{display:grid;gap:6px}.jkparams p{margin:0}.jkparams.cut p:nth-child(n+6){display:none}
.jkfin img{width:56px;height:56px;border-radius:12px;object-fit:cover;flex:none}
.jkfin .small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jkadv .gimg,.jkadv button{flex:0 0 46%;max-width:260px;aspect-ratio:4/3;position:relative;border:0;padding:0;border-radius:16px;overflow:hidden;scroll-snap-align:start;cursor:pointer;background:var(--bg)}
.jkadv img{width:100%;height:100%;object-fit:cover;display:block}
.jkadv b{position:absolute;left:12px;right:10px;bottom:10px;color:#fff;font-size:17px;text-align:left;text-shadow:0 1px 6px rgba(0,0,0,.6)}
.jkadv button::after{content:"";position:absolute;inset:50% 0 0;background:linear-gradient(transparent,rgba(0,0,0,.45));pointer-events:none}.jkadv b{z-index:1}
.jkmode{display:flex;justify-content:center;gap:4px;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:3px;justify-self:center}
.jkmode button{border:0;background:none;font:inherit;font-size:14px;font-weight:600;color:var(--muted);padding:7px 14px;border-radius:9px;cursor:pointer}
.jkmode button[aria-selected="true"]{background:var(--surface);color:var(--graphite);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.jkmap{border-radius:16px;overflow:hidden;aspect-ratio:4/3;background:var(--bg)}.jkmap iframe{width:100%;height:100%;border:0;display:block}
.jkplan{display:block;width:100%;padding:0;border:0;border-radius:16px;overflow:hidden;background:var(--bg)}.jkplan img{width:100%;aspect-ratio:4/3;object-fit:contain;display:block}
.jkagent{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px 14px}
.jkagent>div{display:grid}.jkagent b{font-size:17px;color:var(--graphite)}.jkagent a{font-weight:700;font-size:14px;color:var(--accent-text,var(--orange-deep));text-decoration:none}
.jkbar{position:fixed;left:0;right:0;z-index:4;background:var(--surface);border-bottom:1px solid var(--line);transform:translateY(-120%);opacity:0;pointer-events:none;transition:transform .2s,opacity .2s}
.jkbar.on{transform:none;opacity:1;pointer-events:auto}
.jkbar .wrap{display:flex;align-items:center;gap:10px;padding-block:8px}.jkbar img,.jkbar>.wrap>i{width:40px;height:40px;border-radius:10px;object-fit:cover;flex:none;display:block}
.jkbar .wrap>div{display:grid;min-width:0}.jkbar b{font-size:15px;color:var(--graphite);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.jkbar span{font-size:13px;font-weight:600;color:var(--ink)}

/* ---- тёмная тема приложения риелтора: включается сама по настройке телефона (класс dark ставит theme.js) ----
   Основа — переменные; палитру бренда для тёмного фона (с проверкой контраста) строит theme.js. Оболочка «Вольт» — своя. */
html.dark:not(.volt){
  color-scheme:dark;
  --bg:#121214; --surface:#1C1C1F; --ink:#E4E4E7; --muted:#9C9CA2; --line:#2E2E33;
  --good:#5BD08F; --good-soft:#1C3527; --bad:#FF7A66; --bad-soft:#3E211C; --deep:#2C2C31;
}
html.dark:not(.volt) .toast{background:#ECECEF;color:#121214}
html.dark:not(.volt) .push{background:rgba(36,36,40,.97)}
html.dark:not(.volt) :is(.promo .new,.evdate,.promo .hasfile){background:var(--surface)}
/* логотип застройщика обычно тёмный на прозрачном фоне — на тёмной шапке делаем его светлым одноцветным */
html.dark:not(.volt) .top .brand img:not(.mark){filter:brightness(0) invert(.92)}
/* планировки и схемы рисуют на белом — оставляем белую подложку */
html.dark:not(.volt) :is(.fcard .plan,.planbig,.pgimg){background:#fff}
html.dark:not(.volt) input::placeholder,html.dark:not(.volt) textarea::placeholder{color:#6E6E74}
html.dark:not(.volt) .card,html.dark:not(.volt) .proj,html.dark:not(.volt) .jktile{box-shadow:none}

/* шахматка, «горящие», предупреждения — свои цвета для тёмной темы */
html.dark:not(.volt){--warn:#F2B64A;--warn-soft:#3A2C12}
html.dark:not(.volt) .fcell.free{background:#183424;color:#8FE0B0;border-color:#2A5A3D}
html.dark:not(.volt) .fcell.booked{border-color:#5E4A1E}
html.dark:not(.volt) .fcell.sold{background:repeating-linear-gradient(135deg,#232327 0 5px,#1E1E22 5px 10px);color:#5E5E64}
html.dark:not(.volt) .flegend i.free{border-color:#2A5A3D}
html.dark:not(.volt) .flegend i.booked{border-color:#5E4A1E}
html.dark:not(.volt) .flegend i.sold{background:#2A2A2F}
/* окна снизу: крестик в углу (остаётся на виду при прокрутке) и более заметная «ручка» для смахивания */
.sheet .sheetx{position:sticky;top:0;justify-self:end;z-index:3;margin:-2px -6px -34px 0;width:34px;height:34px;border-radius:50%;border:0;background:var(--bg);color:var(--ink);font-size:24px;line-height:1;display:grid;place-items:center;padding:0 0 2px;box-shadow:0 1px 4px rgba(0,0,0,.12)}
.sheet .grab{width:48px;height:5px;background:var(--muted);opacity:.45}
.sheet .panel>:is(h2,h3,.eyebrow,div):nth-child(3){padding-right:40px}
/* ---- экран «Обучение»: главная карточка «Продолжить» и список курсов с фото ЖК ---- */
.hello.sm{gap:14px}
.nopic{display:block;background:#3A3A40;position:relative;overflow:hidden}
.nopic svg{position:absolute;inset:0;width:100%;height:100%}
.tiles{display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}
.tiles.n1{grid-template-columns:1fr}
.tile{display:flex;align-items:center;gap:10px;min-height:56px;min-width:0;padding:8px 12px;border:1px solid var(--line);background:var(--surface);border-radius:14px;text-align:left;font:inherit;color:var(--ink);cursor:pointer}
.tile>span:last-child{display:grid;min-width:0;line-height:1.25}
.tile b{color:var(--graphite);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile .medal{width:32px;height:32px;font-size:15px}
.nextc{display:block;width:100%;padding:0;border:1px solid var(--line);background:var(--surface);border-radius:20px;overflow:hidden;text-align:left;font:inherit;color:var(--ink);cursor:pointer}
.nextc .pic{position:relative;display:block;height:172px;background:#3A3A40}
.nextc .pic>img,.nextc .pic>.nopic{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.nextc .cap{position:absolute;left:0;right:0;bottom:0;padding:44px 16px 14px;background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.78));color:#fff;display:grid;gap:2px}
.nextc .cap .eyebrow{color:#fff;opacity:.85}
.nextc .cap b{font-size:24px;font-weight:800;line-height:1.15}
.nextc .cap small{font-size:13px;opacity:.85}
.nextc .nb{display:grid;gap:12px;padding:14px 16px 16px}
.nextc .nrow{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.nextc .nrow b{color:var(--graphite)}
.nextc .pct{flex:none;font-size:13px;font-weight:800;color:var(--accent-text,var(--orange-deep))}
.cgrp{margin:6px 0 -4px}
.clist{display:grid;gap:8px}
.crow{display:flex;align-items:center;gap:12px;width:100%;padding:10px;border:1px solid var(--line);background:var(--surface);border-radius:16px;text-align:left;font:inherit;color:var(--ink);cursor:pointer}
.crow .cpic{width:68px;height:68px;flex:none;border-radius:12px;object-fit:cover}
.crow .ct{flex:1;min-width:0;display:grid;gap:2px}
.crow .ct b{color:var(--graphite);font-size:16px;line-height:1.25}
.crow .ct .track{margin:6px 0 2px}
.crow .arr{flex:none;color:var(--muted);font-size:24px;line-height:1;padding:0 4px}
@media (hover:hover){.nextc:hover,.crow:hover,.tile:hover{border-color:var(--orange)}}
.nextc:focus-visible,.crow:focus-visible,.tile:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
@media (min-width:900px){.clist{grid-template-columns:repeat(2,minmax(0,1fr))}}
.cover.photo{background:#3A3A40;isolation:isolate}
.cover.photo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-1}
.cover.photo::before{content:"";position:absolute;inset:0;background:linear-gradient(rgba(0,0,0,0) 30%,rgba(0,0,0,.75))}
.cover.photo::after{display:none}

/* картинки квартиры по вкладкам: планировка, с мебелью, с размерами, на этаже */
.plans{display:grid;gap:8px}
.ptabs{overflow-x:auto;scrollbar-width:none;justify-self:start;max-width:100%}
.ptabs::-webkit-scrollbar{display:none}
.ptabs button{white-space:nowrap}
.plans .planbig img{aspect-ratio:1/1;object-fit:contain}
/* ---------- Дела: карточки клиентов и «к сведению» ---------- */
.tblock{display:grid;gap:10px}
.tbh{font-size:17px;margin:4px 0 0}
.tcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;display:grid;gap:8px}
.tcard.fresh{border-left:4px solid var(--accent-text,var(--orange-deep))}
.tcard.focus{box-shadow:0 0 0 3px var(--orange-soft);border-color:var(--accent-text,var(--orange-deep))}
.tcard.gone{opacity:.92}
.tcard .thead{display:flex;align-items:center;justify-content:space-between;gap:10px}
.tcard .tname{font-size:16px;min-width:0;overflow-wrap:anywhere}
.treasons{margin:0;padding:0 0 0 18px;display:grid;gap:4px;font-size:14px;line-height:1.4;color:var(--ink)}
.treasons li.gone{color:var(--muted);text-decoration:none}
.tacts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.tacts .btn{min-height:42px;padding:8px 16px;font-size:14px}
.ticons{display:flex;gap:6px;margin-left:auto}
.ibtn{width:42px;height:42px;border-radius:12px;border:1.5px solid var(--line);background:var(--surface);color:var(--muted);font-size:16px;display:grid;place-items:center}
.ibtn:active{background:var(--bg)}
.tempty{display:grid;gap:10px}
.tempty p{margin:0}
.sel .chip.go{border:0;cursor:pointer}
/* ---------- История (колокольчик в шапке) ---------- */
.bellbtn[aria-current="page"]{border-color:var(--accent-text,var(--orange-deep));color:var(--accent-text,var(--orange-deep))}
.hgroup{display:grid;gap:8px}
.hlist{padding:4px 0;display:grid}
.hrow{display:flex;gap:12px;align-items:flex-start;text-align:left;border:0;border-top:1px solid var(--line);background:none;color:var(--ink);padding:12px 16px;width:100%}
.hrow:first-child{border-top:0}
.hrow.fresh{background:var(--orange-soft)}
.hrow .hic{width:30px;height:30px;border-radius:50%;background:var(--bg);display:grid;place-items:center;flex:none;font-size:14px;font-weight:800;color:var(--accent-text,var(--orange-deep))}
.hrow .htx{display:grid;gap:3px;flex:1;min-width:0;overflow-wrap:anywhere}
.hrow .ht{font-weight:600;font-size:14px;line-height:1.35}
.hrow .hl{color:var(--ink);line-height:1.35}
.hrow .htime{white-space:nowrap;margin-top:2px}
/* колокольчик — третья кнопка в шапке: на узком телефоне шапка не переносится, подпись раздела прячется, название и логотип сжимаются */
@media (max-width:440px){
  .top .wrap:has(#bellBtn:not([hidden])){flex-wrap:nowrap;gap:8px}
  .top .wrap:has(#bellBtn:not([hidden])) .brand{flex:1 1 auto}
  .top .wrap:has(#bellBtn:not([hidden])) .brand span{display:none}
  .top .wrap:has(#bellBtn:not([hidden])) .brand img:not(.mark){max-width:100%;height:auto;max-height:30px;object-fit:contain}
  .top .wrap:has(#bellBtn:not([hidden])) .brand .tname{max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .top .wrap:has(#bellBtn:not([hidden])) .hbtns{gap:6px;flex:none}
}
/* «Дела» → «Можно заработать»: горящие квартиры рядом с клиентами агента */
.tcard.tearn{border-left:4px solid var(--good)}
.tcard.tearn .comm{color:var(--good);font-weight:700}
/* «Умные подсказки»: метка «Выгодная цена» в шахматке и списке */
.fcell .goodmark{position:absolute;bottom:-6px;right:-5px;min-width:16px;height:16px;border-radius:8px;background:var(--good);color:var(--surface);font-size:10px;font-weight:800;font-style:normal;line-height:16px;text-align:center;padding:0 3px}
.goodmark.static{position:static;display:inline-block;min-width:16px;height:16px;border-radius:8px;background:var(--good);color:var(--surface);font-size:10px;font-weight:800;font-style:normal;line-height:16px;text-align:center;padding:0 3px;vertical-align:middle}
.small.good,.good.small{color:var(--good);font-weight:700}
.askq.focus{box-shadow:0 0 0 3px var(--orange-soft);border-color:var(--accent-text,var(--orange-deep))}
/* режим показа клиенту (модуль showmode): тумблер «С клиентом» в шапке и полоса под ней */
.showbtn{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:18px;border:1.5px solid var(--line);background:var(--surface);color:var(--graphite);font:inherit;font-size:13px;font-weight:700;white-space:nowrap;position:relative;overflow:hidden;flex:none;touch-action:manipulation;-webkit-user-select:none;user-select:none}
.showbtn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;flex:none}
.showbtn.on{background:var(--good);border-color:var(--good);color:#fff}
.showbtn.on::after{content:"";position:absolute;left:0;bottom:0;height:3px;width:0;background:rgba(255,255,255,.85)}
.showbtn.on.holding::after{width:100%;transition:width 2s linear}
.showbar{text-align:center;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:5px 16px;background:var(--good-soft);color:var(--good);border-bottom:1px solid var(--line)}
@media (max-width:430px){.showbtn:not(.on) span{display:none}.showbtn:not(.on){width:36px;padding:0;justify-content:center}}
html.volt .showbtn:not(.on){background:#18181B;border-color:#2A2A2E;color:#F4F4EE}
/* конструктор материалов (модуль kit): готовые сторис, пост и квадрат листаются рядом */
.kit .row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.kitrow{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:4px 2px 6px;margin:0}
.kitrow::-webkit-scrollbar{display:none}
.kitrow figure{margin:0;flex:none;display:grid;gap:4px;justify-items:center;scroll-snap-align:start}
.kitrow canvas{height:min(46vh,380px);width:auto;max-width:78vw;border-radius:12px;box-shadow:0 6px 20px rgba(0,0,0,.16);background:var(--line)}
.kit .post{max-height:28vh;overflow:auto}
.kit .kdraft{color:var(--bad);font-size:13px;margin:0}
.kit .kgone{color:var(--bad);font-weight:700;margin:0}
.kit .kitlinks{display:flex;gap:24px;flex-wrap:wrap}
/* расчёт ипотеки (модуль calc): кнопка в блоке ипотеки карточки квартиры */
.mortbox .btn.calcbtn{min-height:36px;padding:6px 14px;font-size:14px;border-radius:12px;flex:none}
