/* Midnight Glass · премиальный слой поверх style.css. Только визуал: id/классы JS не менялись. */
:root[data-theme="dark"]{
  --bg:radial-gradient(900px 520px at 12% -4%,rgba(48,92,210,.30),transparent 70%),radial-gradient(820px 620px at 104% 104%,rgba(110,64,200,.22),transparent 70%),linear-gradient(180deg,#070b18,#060914);
  --bg-flat:#070b18;
  --glass:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.025));--glass-edge:rgba(255,255,255,.085);--glass-strong:rgba(255,255,255,.09);
  --shadow:0 24px 60px -28px rgba(0,0,0,.7);
  --ink:#eef2ff;--ink-2:rgba(196,206,238,.66);--line:rgba(255,255,255,.07);--grid:rgba(255,255,255,.07);
  --accent-1:#2d55c4;--accent-2:#18245e;--on-accent:#fff;--on-accent-2:rgba(214,224,255,.74);
  --good:#7ff0c3;--bad:#ff7d97;--warn:#ffc069;--field:rgba(8,12,28,.7);
  --blob-1:#2a4fc0;--blob-2:#5b33b0;--blob-3:#0e1a44;
}
:root{--num:'SF Pro Display','Manrope','Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--warn:#b7791f}
body{letter-spacing:-.005em}
.bg i{filter:blur(90px)}
:root[data-theme="dark"] .bg i:nth-child(1){opacity:.35}:root[data-theme="dark"] .bg i:nth-child(2){opacity:.25}:root[data-theme="dark"] .bg i:nth-child(3){opacity:.5}

/* header */
.brand h1{font-size:19px;font-weight:700;letter-spacing:-.02em}
.brand .dot{width:18px;height:18px;background:radial-gradient(circle at 32% 30%,#b9d0ff,#3a5bd9 60%,#22328a);box-shadow:0 0 18px rgba(90,130,255,.55)}
.chip{font-weight:500;letter-spacing:.01em;padding:5px 12px}
#logout{min-height:40px;padding:0 20px;background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1)}
:root:not([data-theme="dark"]) #logout{background:var(--glass-strong)}

/* cards */
.card{border-radius:26px;-webkit-backdrop-filter:blur(22px) saturate(1.3);backdrop-filter:blur(22px) saturate(1.3);box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.06)}
@media(min-width:720px){.card{padding:24px 26px}}

/* hero */
.card.accent.hero{position:relative;isolation:isolate;background:linear-gradient(135deg,#2c51bd 0%,#1b2b6c 52%,#2a1c60 100%);border-color:rgba(255,255,255,.18);box-shadow:0 44px 90px -36px rgba(36,70,190,.75),inset 0 1px 0 rgba(255,255,255,.28)}
.card.accent.hero::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(520px 240px at 88% -10%,rgba(255,255,255,.22),transparent 70%),radial-gradient(420px 260px at -5% 120%,rgba(120,160,255,.18),transparent 70%)}
@media(min-width:720px){.hero{padding:36px 40px;gap:28px}}
.hero .pill{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.2);padding:6px 12px}
.hero h2{font-size:15px!important;font-weight:600;letter-spacing:.01em;color:var(--on-accent-2);margin-top:6px}
.hero-total .turnover-total-value{font-family:var(--num);font-size:clamp(40px,8vw,68px)!important;font-weight:700;letter-spacing:-.035em;text-shadow:0 0 44px rgba(150,180,255,.45)}
.hero-total .turnover-total-value small{font-size:.28em!important;font-weight:600;letter-spacing:.04em;opacity:.7}
.hero-total .turnover-profit{font-size:15px!important;color:var(--on-accent-2)}
.hero .turnover-profit-value,.stats .turnover-profit-value{color:#86f5ca!important}
.hero-fx{font-size:14px;gap:6px}
.hero-fx-rate{font-size:16px!important;font-weight:700}
.turnover-day-seg{margin-top:10px}
.hero .seg{background:rgba(8,14,48,.45);border-color:rgba(255,255,255,.14)}
.seg button{min-height:38px;padding:0 18px;font-size:13px;transition:background .18s var(--ease),color .18s var(--ease),box-shadow .18s var(--ease)}
.seg button[aria-selected="true"]{background:#fff;color:#0f1a4a;box-shadow:0 6px 18px -8px rgba(0,0,0,.6)}
:root:not([data-theme="dark"]) .turnover-source .seg button[aria-selected="true"]{background:#15202e;color:#fff}
.stats{border-top-color:rgba(255,255,255,.14);padding-top:22px;gap:0}
.stats>div{border-left-color:rgba(255,255,255,.14);padding-left:22px;display:grid;grid-template-columns:auto 1fr;align-items:baseline;column-gap:14px;row-gap:3px}
.stats>div:first-child{padding-left:0}
.stats>div>*{grid-column:1/-1}
.stats dt{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.stats dd{grid-column:1;font-family:var(--num);font-size:24px!important;font-weight:700;letter-spacing:-.02em}
.stats>div>.turnover-profit{grid-column:2;grid-row:2;margin:0;justify-self:start;font-size:13px}
.stats>div>small{grid-row:3}
.stats .turnover-balance,.stats .turnover-requisites{margin:2px 0;font-size:13px}

/* status strip (реквизиты + отклонённые пополнения) */
.status-strip{display:grid;gap:12px;grid-template-columns:1fr;margin-top:14px}
.status-strip:empty{display:none}
@media(min-width:820px){.status-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}
.status-item{display:flex;align-items:center;gap:14px;padding:15px 18px;border-radius:18px;border:1px solid var(--glass-edge);background:var(--glass);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
.status-item strong{display:block;font-size:14px;font-weight:700}
.status-item span{font-size:12.5px;color:var(--ink-2)}
.status-led{width:10px;height:10px;border-radius:50%;flex:none;background:var(--good);box-shadow:0 0 12px var(--good)}
.status-item.is-crit{background:linear-gradient(90deg,rgba(255,77,109,.16),rgba(255,255,255,.02));border-color:rgba(255,77,109,.38)}
.status-item.is-crit .status-led{background:#ff4d6d;box-shadow:0 0 16px #ff4d6d;animation:pulse 1.8s ease-in-out infinite}
.status-item.is-warn{background:linear-gradient(90deg,rgba(255,184,77,.13),rgba(255,255,255,.02));border-color:rgba(255,184,77,.32)}
.status-item.is-warn .status-led{background:#ffb84d;box-shadow:0 0 14px #ffb84d}
@keyframes pulse{50%{box-shadow:0 0 4px #ff4d6d;opacity:.7}}

/* source cards */
.turnover-source{padding:24px 26px}
.turnover-source[data-alert="crit"]{border-color:rgba(255,77,109,.35)}
.turnover-source-head{margin-bottom:20px;gap:14px}
.turnover-source-head .seg{margin:0 0 0 auto}
.source-logo{width:44px;height:44px;border-radius:13px;box-shadow:0 8px 20px -8px rgba(0,0,0,.6)}
.source-title h3{font-size:17px;letter-spacing:-.01em}
.turnover-derived{order:-1;display:grid;grid-template-columns:1fr auto;align-items:end;column-gap:16px;row-gap:4px;margin:0 0 16px;padding-bottom:18px;border-bottom-color:var(--line)!important}
.turnover-derived>.turnover-metric-head{grid-column:1;grid-row:1;display:grid;justify-content:start;gap:6px}
.turnover-derived .turnover-metric-name{font-size:12px;font-weight:600;color:var(--ink-2)}
.turnover-derived .turnover-amount{font-family:var(--num);font-size:30px;font-weight:700;letter-spacing:-.03em;text-align:left}
.turnover-derived .turnover-amount small{font-size:13px;letter-spacing:0;margin-left:2px}
.turnover-derived>.turnover-profit{grid-column:2;grid-row:1;align-self:end;text-align:right;margin:0;font-size:12px;display:grid;gap:4px}
.turnover-derived>.turnover-profit .turnover-profit-label{color:var(--ink-2)}
.turnover-derived>.turnover-profit .turnover-profit-value{font-family:var(--num);font-size:18px;color:var(--good)}
.turnover-derived>.turnover-context,.turnover-derived>.turnover-breakdown{grid-column:1/-1}
.turnover-source{display:flex;flex-direction:column}
.turnover-source>.turnover-source-head{order:-2}
.turnover-source .turnover-balance,.turnover-source .turnover-requisites{font-size:13px;margin:4px 0}
.turnover-balance-value,.turnover-requisites-value{font-family:var(--num)}
.turnover-requisites[data-state="crit"] .turnover-requisites-value{color:var(--bad)}
.turnover-requisites[data-state="ok"] .turnover-requisites-value{color:var(--good)}
.turnover-metric{padding:12px 0}
.turnover-amount{font-family:var(--num)}

/* rail */
.rail-group{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.08)}
:root:not([data-theme="dark"]) .rail-group{background:var(--glass-strong);border-color:var(--glass-edge)}
:root[data-theme="dark"] .rail a[aria-current="true"],:root[data-theme="dark"] .rail-theme button{background:#fff;color:#0a1030;box-shadow:0 8px 22px -10px rgba(140,170,255,.7)}

/* other panels */
.metric-card:first-child{background:linear-gradient(135deg,#2c51bd,#1b2b6c 60%,#2a1c60)}
.metric-value{font-family:var(--num)}
form button:not(.ghost),#login button{background:linear-gradient(135deg,#3a63d8,#2a2f8c);box-shadow:0 10px 26px -12px rgba(60,100,230,.8)}
.foot{opacity:.7;font-size:12px}

/* mobile */
.stats dd{white-space:nowrap}
@media(max-width:760px){
  .stats{grid-template-columns:1fr!important;gap:18px}
  .stats>div{padding-left:0!important;border-left:0!important;grid-template-columns:auto 1fr}
  .stats>div+div{padding-top:18px;border-top:1px solid rgba(255,255,255,.14)}
  .stats dd{font-size:22px!important}
  .turnover-source-head{flex-wrap:wrap}
  .turnover-source-head .seg{margin:6px 0 0;width:100%;order:3}
  .turnover-source-head .seg button{flex:1}
  .turnover-source{padding:20px}
  .turnover-derived .turnover-amount{font-size:26px}
  .hero-total .turnover-total-value{font-size:44px!important}
}
/* R3 · Навигация сверху: стеклянная капсула по центру шапки */
@media(min-width:761px){
.rail{top:22px;left:50%;transform:translateX(-50%);flex-direction:row;gap:8px}
.rail-group{flex-direction:row!important;padding:5px!important;gap:2px;border-radius:99px!important;background:rgba(255,255,255,.06)!important;border:1px solid rgba(255,255,255,.1)!important;box-shadow:0 14px 34px -18px rgba(0,0,0,.8)!important}
.rail a{width:auto!important;height:38px!important;min-height:38px!important;padding:0 14px 0 12px!important;border-radius:99px!important;display:flex!important;gap:8px;color:rgba(196,206,238,.62)!important;background:transparent!important}
.rail a::after{content:attr(data-tip)!important;position:static!important;transform:none!important;opacity:1!important;background:none!important;padding:0!important;font-size:13px!important;font-weight:600!important;color:inherit!important;border:0!important}
.rail a[aria-current="true"]{background:#fff!important;color:#0f1a4a!important;box-shadow:0 6px 16px -8px rgba(0,0,0,.6)!important}
.rail a:hover:not([aria-current="true"]){color:#fff!important}
.rail button{width:38px!important;height:38px!important;min-height:38px!important;color:#ffd27a!important;background:transparent!important}
.rail button::after{display:none}
.rail svg{width:17px;height:17px;stroke-width:1.7}
body[data-authenticated="true"] .wrap{padding-left:0!important;max-width:1120px!important}
}
@media(min-width:761px){
.rail a{padding:0 11px!important}
.rail a:not([aria-current="true"])::after{display:none!important}
.rail a[aria-current="true"]{padding:0 16px 0 13px!important}
.rail a:not([aria-current="true"]) [aria-hidden]{margin:0}
}
@media(min-width:761px) and (max-width:1060px){.brand #identity{display:none}}
/* r4: one section per page */
#dashboard>.page-off{display:none!important}
#dashboard{transition:opacity .18s ease,transform .18s ease,filter .18s ease}
#dashboard.page-leaving{opacity:0;transform:translateY(-6px);filter:blur(4px)}
#dashboard>section,#dashboard>details{animation:pageIn .5s cubic-bezier(.22,1,.36,1) both}
#dashboard>:nth-child(2){animation-delay:.06s}#dashboard>:nth-child(3){animation-delay:.1s}
@keyframes pageIn{from{opacity:0;transform:translateY(14px) scale(.99);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
#dashboard{view-transition-name:page}
::view-transition-old(root),::view-transition-new(root){animation:none}
::view-transition-old(page){animation:vtOut .22s ease both}
::view-transition-new(page){animation:vtIn .45s cubic-bezier(.22,1,.36,1) both}
@keyframes vtOut{to{opacity:0;transform:translateY(-8px);filter:blur(6px)}}
@keyframes vtIn{from{opacity:0;transform:translateY(12px);filter:blur(6px)}}
.rail a{transition:background .3s ease,color .3s ease,padding .3s cubic-bezier(.22,1,.36,1),box-shadow .3s ease}
@media (prefers-reduced-motion:reduce){#dashboard,#dashboard>section,#dashboard>details,::view-transition-old(page),::view-transition-new(page){animation:none!important;transition:none!important}}
/* r5: свежесть, конверсия, места под историю */
.source-title .fresh-tag{display:inline-flex;align-items:center;gap:6px;margin-top:4px;font-size:11.5px;font-weight:600;letter-spacing:.01em;color:#8ff0c8;padding:3px 9px;border-radius:99px;background:rgba(80,230,170,.1);border:1px solid rgba(80,230,170,.22);width:max-content}
.source-title .fresh-tag::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}
.source-title .fresh-tag[data-state="crit"]{color:#ff8b9a;background:rgba(255,90,110,.12);border-color:rgba(255,90,110,.3)}
.source-title .fresh-tag[data-state="crit"]::before{animation:ledPulse 1.4s ease-in-out infinite}
@keyframes ledPulse{50%{opacity:.35}}
.kpi-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0 4px}
.kpi{padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:4px;min-width:0}
.kpi-label{font-size:11.5px;color:rgba(220,228,255,.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi-value{font-size:20px;font-weight:700;letter-spacing:-.01em;color:#fff;white-space:nowrap}
:root:not([data-theme="dark"]) .kpi{background:var(--glass-strong);border-color:var(--glass-edge)}
:root:not([data-theme="dark"]) .kpi-value{color:var(--ink)}
.soon-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px 0 4px}
.soon{padding:16px 18px;border-radius:18px;border:1px dashed rgba(170,185,255,.28);background:linear-gradient(135deg,rgba(120,140,255,.07),rgba(160,110,255,.04));display:flex;flex-direction:column;gap:3px}
.soon strong{font-size:14px;color:#fff}.soon span{font-size:12.5px;color:rgba(220,228,255,.65)}
.soon em{margin-top:8px;font-style:normal;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:rgba(170,185,255,.7)}
:root:not([data-theme="dark"]) .soon strong{color:var(--ink)}
@media(max-width:760px){.soon-row{grid-template-columns:1fr}.kpi-row{grid-template-columns:1fr 1fr}}
.turnover-balance-stale,.turnover-requisites-stale{display:none!important}
.kpi-sub{font-size:11px;color:rgba(220,228,255,.5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi.is-empty .kpi-value{color:#7c849f}
.hero-avg{margin-top:6px;font-size:13px;color:rgba(230,236,255,.75)}
.hero-avg-value{color:#fff;font-weight:700}
.hero-avg-note{color:rgba(230,236,255,.5);font-size:12px}
:root:not([data-theme="dark"]) .hero-avg-value{color:var(--ink)}
.soon.forecast{border-style:solid;border-color:rgba(170,185,255,.22)}
.forecast .forecast-value{font-size:26px;font-weight:700;letter-spacing:-.01em;color:#fff;margin-top:4px}
.forecast.is-empty .forecast-value{color:#7c849f}
.forecast .forecast-note{text-transform:none;letter-spacing:0;font-size:12px}
:root:not([data-theme="dark"]) .forecast .forecast-value{color:var(--ink)}
/* r6: сравнение и план */
.soon.compare{border-style:solid;border-color:rgba(170,185,255,.22)}
.soon.compare.is-empty{border-style:dashed}
.compare-body{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.compare-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.compare-label{font-size:12.5px;color:rgba(220,228,255,.65);min-width:62px}
.delta{font-size:12.5px;font-weight:700;padding:3px 9px;border-radius:99px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);color:rgba(230,236,255,.85);white-space:nowrap}
.delta[data-dir="up"]{color:#8ff0c8;background:rgba(80,230,170,.1);border-color:rgba(80,230,170,.25)}
.delta[data-dir="down"]{color:#ff8b9a;background:rgba(255,90,110,.1);border-color:rgba(255,90,110,.28)}
.delta[data-dir="na"]{color:rgba(220,228,255,.4);font-weight:600}
.plan-bar{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.plan-track{position:relative;height:8px;border-radius:99px;background:rgba(255,255,255,.08);overflow:visible}
.plan-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:99px;background:linear-gradient(90deg,#6d7cff,#9b6bff);box-shadow:0 0 14px -2px rgba(140,120,255,.7);transition:width .6s cubic-bezier(.22,1,.36,1)}
.plan-mark{position:absolute;top:-4px;width:2px;height:16px;border-radius:2px;background:#8ff0c8;box-shadow:0 0 8px #8ff0c8;transform:translateX(-1px);transition:left .6s cubic-bezier(.22,1,.36,1)}
.plan-bar[data-state="warn"] .plan-mark{background:#ffc46b;box-shadow:0 0 8px #ffc46b}
.plan-bar[data-state="crit"] .plan-mark{background:#ff8b9a;box-shadow:0 0 8px #ff8b9a}
.plan-caption{font-size:12px;color:rgba(220,228,255,.7)}
:root:not([data-theme="dark"]) .compare-label,:root:not([data-theme="dark"]) .plan-caption{color:var(--muted,#5b6475)}
.source-title .traffic-tag{display:inline-flex;align-items:center;gap:6px;margin:4px 0 0;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:99px;width:max-content;color:#8ff0c8;background:rgba(80,230,170,.1);border:1px solid rgba(80,230,170,.22)}
.source-title .traffic-tag::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}
.source-title .traffic-tag[data-state="crit"]{color:#ff8b9a;background:rgba(255,90,110,.12);border-color:rgba(255,90,110,.3)}
.source-title .traffic-tag[data-state="crit"]::before{animation:ledPulse 1.4s ease-in-out infinite}
.source-title .traffic-tag[data-state="na"]{color:rgba(220,228,255,.55);background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.12)}

/* Карточки площадок: без расшифровки оборота (пополнения + выплаты) */
.turnover-breakdown{display:none!important}

/* r7 · Daylight Glass — светлая тема. Только визуал, id/классы не трогаем. */
:root[data-theme="light"]{
  --bg:radial-gradient(900px 560px at 10% -6%,rgba(120,150,255,.22),transparent 70%),radial-gradient(820px 620px at 104% 104%,rgba(170,130,255,.16),transparent 70%),linear-gradient(180deg,#f6f8fd,#eef1f8);
  --bg-flat:#f3f5fb;
  --glass:linear-gradient(180deg,rgba(255,255,255,.86),rgba(255,255,255,.7));--glass-edge:rgba(20,32,80,.08);--glass-strong:rgba(255,255,255,.92);
  --shadow:0 22px 50px -30px rgba(30,45,110,.28);
  --ink:#0e1530;--ink-2:#5b6582;--muted:#5b6582;--line:rgba(20,32,80,.08);--grid:rgba(20,32,80,.07);
  --good:#0f9a6a;--bad:#d6325a;--warn:#b7791f;--field:#fff;
  --blob-1:#b9c8ff;--blob-2:#d9c8ff;--blob-3:#e6ecff;
}
:root[data-theme="light"] body{color:var(--ink)}
:root[data-theme="light"] .bg i{opacity:.55}
:root[data-theme="light"] .card:not(.hero){background:var(--glass);border-color:var(--glass-edge);box-shadow:var(--shadow),inset 0 1px 0 #fff}
:root[data-theme="light"] #logout{background:#fff;border-color:var(--glass-edge);color:var(--ink)}
:root[data-theme="light"] .chip{background:#fff;border-color:var(--glass-edge);color:var(--ink-2)}
/* hero остаётся насыщенно-синим: на нём всё светлое */
:root[data-theme="light"] .hero{color:#fff;box-shadow:0 36px 70px -34px rgba(40,70,190,.55),inset 0 1px 0 rgba(255,255,255,.28)}
:root[data-theme="light"] .hero .seg button:not([aria-selected="true"]){color:rgba(225,232,255,.8)}
:root[data-theme="light"] .hero .stats dt,:root[data-theme="light"] .hero small{color:rgba(214,224,255,.74)}
:root[data-theme="light"] .hero-avg-value{color:#fff}
/* навигация */
@media(min-width:761px){
:root[data-theme="light"] .rail-group{background:rgba(255,255,255,.85)!important;border-color:rgba(20,32,80,.09)!important;box-shadow:0 14px 30px -18px rgba(30,45,110,.35)!important}
:root[data-theme="light"] .rail a{color:#6a7390!important}
:root[data-theme="light"] .rail a:hover:not([aria-current="true"]){color:var(--ink)!important}
:root[data-theme="light"] .rail a[aria-current="true"]{background:linear-gradient(135deg,#2c51bd,#2a1c60)!important;color:#fff!important;box-shadow:0 8px 18px -8px rgba(44,81,189,.6)!important}
:root[data-theme="light"] .rail button{color:#5b45c9!important}
}
/* карточки площадок */
:root[data-theme="light"] .turnover-source .seg{background:#eef1f8;border-color:var(--glass-edge)}
:root[data-theme="light"] .turnover-source .seg button{color:var(--ink-2)}
:root[data-theme="light"] .turnover-source .seg button[aria-selected="true"]{background:#0e1530;color:#fff}
:root[data-theme="light"] .turnover-derived>.turnover-profit .turnover-profit-value{color:var(--good)}
:root[data-theme="light"] .source-logo{box-shadow:0 8px 18px -10px rgba(30,45,110,.45)}
:root[data-theme="light"] .source-title .fresh-tag,:root[data-theme="light"] .source-title .traffic-tag{color:#0b8a5e;background:rgba(15,154,106,.08);border-color:rgba(15,154,106,.25)}
:root[data-theme="light"] .source-title .fresh-tag[data-state="crit"],:root[data-theme="light"] .source-title .traffic-tag[data-state="crit"]{color:#c8284f;background:rgba(214,50,90,.07);border-color:rgba(214,50,90,.25)}
:root[data-theme="light"] .source-title .traffic-tag[data-state="na"]{color:var(--ink-2);background:rgba(20,32,80,.04);border-color:rgba(20,32,80,.1)}
:root[data-theme="light"] .source-title .fresh-tag::before,:root[data-theme="light"] .source-title .traffic-tag::before{box-shadow:none}
:root[data-theme="light"] .kpi{background:#f7f8fc;border-color:rgba(20,32,80,.07)}
:root[data-theme="light"] .kpi-label{color:var(--ink-2)}
:root[data-theme="light"] .kpi-value{color:var(--ink)}
:root[data-theme="light"] .kpi-sub{color:#5f6780}
:root[data-theme="light"] .kpi.is-empty .kpi-value{color:#79819a}
/* сравнение и прогноз */
:root[data-theme="light"] .soon{background:var(--glass);border-color:var(--glass-edge);box-shadow:var(--shadow)}
:root[data-theme="light"] .soon strong,:root[data-theme="light"] .forecast .forecast-value{color:var(--ink)}
:root[data-theme="light"] .soon span{color:var(--ink-2)}
:root[data-theme="light"] .soon em{color:#5b45c9}
:root[data-theme="light"] .forecast.is-empty .forecast-value{color:#79819a}
:root[data-theme="light"] .compare-label,:root[data-theme="light"] .plan-caption{color:var(--ink-2)}
:root[data-theme="light"] .delta{background:#f2f4fa;border-color:rgba(20,32,80,.09);color:var(--ink)}
:root[data-theme="light"] .delta[data-dir="up"]{color:#0b8a5e;background:rgba(15,154,106,.08);border-color:rgba(15,154,106,.25)}
:root[data-theme="light"] .delta[data-dir="down"]{color:#c8284f;background:rgba(214,50,90,.07);border-color:rgba(214,50,90,.25)}
:root[data-theme="light"] .delta[data-dir="na"]{color:#5f6780}
:root[data-theme="light"] .plan-track{background:#e6e9f3}
:root[data-theme="light"] .plan-mark{background:#0f9a6a;box-shadow:none}
/* плашки статуса */
:root[data-theme="light"] .status-item{background:#fff;border-color:var(--glass-edge);box-shadow:0 12px 28px -22px rgba(30,45,110,.35)}
:root[data-theme="light"] .status-item.is-crit{background:linear-gradient(90deg,rgba(214,50,90,.08),#fff 70%);border-color:rgba(214,50,90,.28)}
:root[data-theme="light"] .status-item.is-warn{background:linear-gradient(90deg,rgba(214,150,40,.1),#fff 70%);border-color:rgba(214,150,40,.3)}
:root[data-theme="light"] .status-item strong{color:var(--ink)}
:root[data-theme="light"] .foot{color:var(--ink-2)}
/* r8 · Сессия */
.session-empty{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:42px 20px}
.session-mark{display:grid;place-items:center;width:64px;height:64px;border-radius:20px;background:linear-gradient(135deg,#5b7cff,#8a5bff);box-shadow:0 18px 40px -16px rgba(110,110,255,.8),inset 0 1px 0 rgba(255,255,255,.35);margin-bottom:6px}
.session-icon{width:30px;height:30px;fill:none;stroke:#fff;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
:root[data-theme="light"] .session-mark{box-shadow:0 16px 32px -16px rgba(70,90,220,.55),inset 0 1px 0 rgba(255,255,255,.5)}
/* r9: session tabs per platform, brand marks in rail */
.rail-logo{display:block;flex:none;width:19px;height:19px;background:currentColor;-webkit-mask:var(--mark) center/contain no-repeat;mask:var(--mark) center/contain no-repeat}
.rail-logo-nex{--mark:url(/static/images/nex-mark.png)}
.rail-logo-mercurio{--mark:url(/static/images/mercurio-mark.png);width:22px}
.rail a[aria-current="true"] .rail-logo-nex{color:#c2263c}
:root[data-theme="light"] .rail a[aria-current="true"] .rail-logo-nex{color:#ff6b7d}
.session-mark-nex,.session-mark-mercurio{position:relative;overflow:hidden}
.session-mark-nex{background:radial-gradient(90% 90% at 50% 35%,#3a3d46,#15161b 75%)!important;box-shadow:0 18px 40px -16px rgba(190,30,55,.7),inset 0 1px 0 rgba(255,255,255,.12)!important}
.session-mark-mercurio{background:radial-gradient(120% 120% at 30% 20%,#2b2e36,#0f1014 70%)!important;box-shadow:0 18px 40px -16px rgba(0,0,0,.8),inset 0 1px 0 rgba(255,255,255,.1)!important}
.session-mark img{display:block;width:44px;height:44px;object-fit:contain;filter:drop-shadow(0 4px 8px rgba(0,0,0,.45))}
.session-mark-mercurio img{width:48px;height:48px}
@media(max-width:760px){.rail-group:not(.rail-theme){gap:0;min-width:0}.rail-group:not(.rail-theme) a{flex:1 1 0;min-width:0;width:auto;max-width:44px}.rail-theme button{width:40px;height:40px;min-height:40px}}
.rail-logo-ikra{--mark:url(/static/images/ikra-mark.png);width:20px;height:20px}
.rail a[aria-current="true"] .rail-logo-ikra{color:#7a141c}
:root[data-theme="light"] .rail a[aria-current="true"] .rail-logo-ikra{color:#fff}
.session-mark-ikra{position:relative;overflow:hidden;background:radial-gradient(90% 90% at 50% 35%,#3a3d46,#15161b 75%)!important;box-shadow:0 18px 40px -16px rgba(170,30,40,.7),inset 0 1px 0 rgba(255,255,255,.12)!important}
.session-mark-ikra img{width:46px;height:46px}

/* Метрики 2/4/6 (11.11) */
.kpi-row-ext{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:0}
.kpi.is-warn .kpi-value{color:#ffb347}
.kpi.is-alert .kpi-value{color:#ff6b6b}
.kpi.is-up .kpi-value{color:#3ddc97}
.kpi.is-down .kpi-value{color:#ff6b6b}


/* R-048: строка площадки в общем обороте. Прибыль стоит рядом с суммой, а если не помещается, переносится под неё; длинные суммы переносятся внутри строки. */
.stats>div{display:flex!important;flex-wrap:wrap;align-items:baseline;column-gap:14px;row-gap:3px;min-width:0}
.stats>div>*{flex:1 0 100%;min-width:0;order:3}
.stats>div>dt{order:0}
.stats>div>dd{order:1;flex:0 1 auto;max-width:100%;white-space:normal;overflow-wrap:anywhere}
.stats>div>.turnover-profit{order:2;flex:0 1 auto;max-width:100%;white-space:normal}
.stats>div>.turnover-profit .turnover-profit-value{white-space:nowrap}
/* R-052: ссылка «Перейти к данным» не меньше 24 px по высоте */
.skip-link:focus{min-height:44px;display:inline-flex;align-items:center;padding:10px 16px}
/* R-052: Manrope поставляется с сайтом */
@font-face{font-family:'Manrope';src:url('/static/fonts/manrope-var.woff2') format('woff2');font-weight:200 800;font-display:swap}
/* R-048: карточки площадок. Прибыль справа от суммы, при нехватке места переносится под неё. */
.turnover-derived{display:flex!important;flex-wrap:wrap;align-items:flex-end;column-gap:16px;row-gap:8px}
.turnover-derived>*{flex:1 0 100%;min-width:0}
.turnover-derived>.turnover-metric-head{flex:1 1 auto;min-width:0}
.turnover-derived>.turnover-profit{flex:0 1 auto;max-width:100%;margin-left:auto}
.turnover-derived .turnover-amount{overflow-wrap:anywhere}
.turnover-derived>*{order:2}
.turnover-derived>.turnover-metric-head{order:0}
.turnover-derived>.turnover-profit{order:1}

/* r11: Pulse logo in header and on login */
.brand .dot{width:30px;height:30px;border-radius:9px;background:url(/static/icons/pulse-mark.svg) center/contain no-repeat;box-shadow:0 6px 16px -8px rgba(45,85,196,.7)}
.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.login-brand img{display:block;width:52px;height:52px;border-radius:15px;box-shadow:0 10px 24px -12px rgba(45,85,196,.75)}
.login-brand span{font-size:22px;font-weight:700;letter-spacing:-.02em}
:root[data-theme="light"] .login-brand img,:root[data-theme="light"] .brand .dot{box-shadow:0 0 0 1px #dfe5f5,0 8px 20px -12px rgba(45,85,196,.55)}

/* r12: R-048 hero total never breaks inside the number; size follows the hero width */
.hero-total{container-type:inline-size}
.hero-total .turnover-total-value{overflow-wrap:normal;word-break:keep-all;font-size:min(clamp(40px,8vw,68px),11.5cqi)!important}
@media(max-width:760px){.hero-total .turnover-total-value{font-size:min(44px,11.5cqi)!important}}

/* r14.1: R-081 — нижний ряд карточки площадки (/api/daystats) на хуках R-080 (status.js Антона).
   Высота ряда во всех состояниях с данными, загрузкой и ошибкой: 2 плитки по 96px + зазор 10px = 202px (без сдвига вёрстки).
   На #turnoverOverview[data-api-state] стилей нет: фоновый опрос раз в 60 с переключает этот атрибут.
   Слова — только в разметке; ::before/::after здесь чисто декоративные (content:""). */
.kpi-sr-only{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
.kpi-row-ext{--kpi-tile-h:96px;--kpi-gap:10px;--kpi-ext-h:calc(var(--kpi-tile-h)*2 + var(--kpi-gap));gap:var(--kpi-gap);min-height:var(--kpi-ext-h);position:relative}
/* Явная высота строк вместо normal: та же высота, что у Manrope сейчас (17/29/16), но не зависит от загрузки шрифта. 12+12+1+1+17+4+29+4+16 = 96. */
.kpi-row-ext .kpi{min-height:var(--kpi-tile-h)}
.kpi-row-ext .kpi-label{line-height:17px}.kpi-row-ext .kpi-value{line-height:29px}.kpi-row-ext .kpi-sub{line-height:16px}
/* R-085: после «Повторить» фокус попадает на ряд (tabIndex=-1) — кольцо видно, как у кнопки. */
.kpi-row-ext:focus-visible{outline:2px solid #9db8ff;outline-offset:3px;border-radius:14px}
:root[data-theme="light"] .kpi-row-ext:focus-visible{outline-color:#2d55c4}

/* Загрузка (R-086): ряд без плиток. Внутри может быть .kpi-sr-only «Загружаем показатели дня» — скелетон от него не зависит.
   ::before — левая колонка, ::after — правая, по 2 плитки в каждой; перелив обрезается маской по форме плиток. */
.kpi-row-ext:is(.is-loading,[data-state="loading"],[aria-busy="true"]):not(:has(.kpi,.kpi-error,.kpi-error-text)){
  --sk-tile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' rx='14' fill='white' fill-opacity='.04' stroke='white' stroke-opacity='.09' stroke-width='2'/%3E%3C/svg%3E");
  --sk-bar:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' rx='4.5' fill='white' fill-opacity='.09'/%3E%3C/svg%3E");
  --sk-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' rx='14'/%3E%3C/svg%3E");
  --sk-shine:rgba(255,255,255,.07);
  --sk-col:calc((100% - var(--kpi-gap))/2);--sk-t2:calc(var(--kpi-tile-h) + var(--kpi-gap));
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));height:var(--kpi-ext-h);
  background:linear-gradient(100deg,transparent 30%,var(--sk-shine) 50%,transparent 70%) 0 0/300% 100% no-repeat;animation:kpiShimmer 1.6s linear infinite;
  -webkit-mask:var(--sk-mask) 0 0/var(--sk-col) var(--kpi-tile-h) no-repeat,var(--sk-mask) 100% 0/var(--sk-col) var(--kpi-tile-h) no-repeat,var(--sk-mask) 0 100%/var(--sk-col) var(--kpi-tile-h) no-repeat,var(--sk-mask) 100% 100%/var(--sk-col) var(--kpi-tile-h) no-repeat;
  mask:var(--sk-mask) 0 0/var(--sk-col) var(--kpi-tile-h) no-repeat,var(--sk-mask) 100% 0/var(--sk-col) var(--kpi-tile-h) no-repeat,var(--sk-mask) 0 100%/var(--sk-col) var(--kpi-tile-h) no-repeat,var(--sk-mask) 100% 100%/var(--sk-col) var(--kpi-tile-h) no-repeat}
/* Полосы на местах подписи, значения и пояснения: x 15px, y 17 / 40 / 71px в каждой плитке. */
.kpi-row-ext:is(.is-loading,[data-state="loading"],[aria-busy="true"]):not(:has(.kpi,.kpi-error,.kpi-error-text))::before,
.kpi-row-ext:is(.is-loading,[data-state="loading"],[aria-busy="true"]):not(:has(.kpi,.kpi-error,.kpi-error-text))::after{content:"";height:var(--kpi-ext-h);
  background:
   var(--sk-bar) 15px 17px/var(--w1,46%) 9px no-repeat,var(--sk-bar) 15px 40px/var(--w2,58%) 17px no-repeat,var(--sk-bar) 15px 71px/var(--w3,38%) 9px no-repeat,
   var(--sk-bar) 15px calc(var(--sk-t2) + 17px)/var(--w4,52%) 9px no-repeat,var(--sk-bar) 15px calc(var(--sk-t2) + 40px)/var(--w5,64%) 17px no-repeat,var(--sk-bar) 15px calc(var(--sk-t2) + 71px)/var(--w6,34%) 9px no-repeat,
   var(--sk-tile) 0 0/100% var(--kpi-tile-h) no-repeat,var(--sk-tile) 0 100%/100% var(--kpi-tile-h) no-repeat}
.kpi-row-ext:is(.is-loading,[data-state="loading"],[aria-busy="true"]):not(:has(.kpi,.kpi-error,.kpi-error-text))::after{--w1:38%;--w2:44%;--w3:50%;--w4:34%;--w5:40%;--w6:46%}
:root[data-theme="light"] .kpi-row-ext:is(.is-loading,[data-state="loading"],[aria-busy="true"]):not(:has(.kpi,.kpi-error,.kpi-error-text)){
  --sk-tile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' rx='14' fill='%23f7f8fc' stroke='%23141f50' stroke-opacity='.08' stroke-width='2'/%3E%3C/svg%3E");
  --sk-bar:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' rx='4.5' fill='%23141f50' fill-opacity='.08'/%3E%3C/svg%3E");
  --sk-shine:rgba(255,255,255,.75)}
@keyframes kpiShimmer{from{background-position:100% 0}to{background-position:0 0}}
@media (prefers-reduced-motion:reduce){.kpi-row-ext:is(.is-loading,[data-state="loading"],[aria-busy="true"]):not(:has(.kpi,.kpi-error,.kpi-error-text)){animation:none;background:none}}

/* Ошибка первой загрузки (цифр ещё не было): ряд — панель той же высоты 202px. Текст и кнопка — в разметке
   (v4: <p class="kpi-error" role="alert">… <button class="kpi-retry">; v3: .kpi-error-text + .kpi-retry). Без разметки панель пустая, без слов (R-087). */
.kpi-row-ext:is(.is-error,[data-state="error"]){display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:12px;height:var(--kpi-ext-h);padding:14px 16px;border-radius:14px;background:rgba(255,90,110,.07);border:1px solid rgba(255,125,151,.32);overflow:hidden}
.kpi-error{margin:0;display:flex;flex-direction:column;align-items:flex-start;gap:12px;min-width:0;font-size:14px;line-height:20px;font-weight:700;color:#ffb3c0}
.kpi-error span,.kpi-error-text span{font-size:12px;line-height:17px;font-weight:500;color:rgba(220,228,255,.78)}
.kpi-error-text{display:flex;flex-direction:column;gap:4px;min-width:0}
.kpi-error-text strong{font-size:14px;font-weight:700;color:#ffb3c0}
.kpi-error time,.kpi-error-text time,.kpi-stale time{font-variant-numeric:tabular-nums;white-space:nowrap}
/* R-088: цель не меньше 44px по высоте. */
.kpi-retry{flex:none;min-height:44px;padding:0 18px;font-size:13px;font-weight:600;color:#eef2ff;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.22)}
.kpi-retry:hover{background:rgba(255,255,255,.14)}
.kpi-retry:focus-visible{outline:2px solid #9db8ff;outline-offset:3px}
@media(min-width:761px){.kpi-row-ext:is(.is-error,[data-state="error"]):has(>.kpi-error-text){flex-direction:row;align-items:center;justify-content:space-between}}
:root[data-theme="light"] .kpi-row-ext:is(.is-error,[data-state="error"]){background:#fff5f7;border-color:rgba(214,50,90,.3)}
:root[data-theme="light"] .kpi-error,:root[data-theme="light"] .kpi-error-text strong{color:#b0213f}
:root[data-theme="light"] .kpi-error span,:root[data-theme="light"] .kpi-error-text span{color:#5b6582}
:root[data-theme="light"] .kpi-retry{color:var(--ink);background:#fff;border-color:rgba(20,32,80,.18)}
:root[data-theme="light"] .kpi-retry:hover{background:#f2f4fa}
:root[data-theme="light"] .kpi-retry:focus-visible{outline-color:#2d55c4}

/* Цифры есть, но последнее обновление не прошло: <p class="kpi-stale" role="status">Обновление не удалось, данные на HH:MM МСК <button class="kpi-retry kpi-retry--inline">.
   Плашка под рядом, в нижнем отступе карточки (24px при 320/390, 28px при 1280): высота ряда не меняется, плитки не перекрываются.
   Узкий ряд: текст в две строки 11/12px слева, кнопка 24px справа. Ряд от 380px: одна строка справа. */
.kpi-row-ext:has(>.kpi-stale){container-type:inline-size}
.kpi-stale{position:absolute;top:100%;left:0;right:0;height:24px;margin:0;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;line-height:12px;font-weight:600;color:#ffc069}
.kpi-retry.kpi-retry--inline{min-height:24px;height:24px;min-width:24px;padding:0 10px;font-size:11.5px;line-height:1}
.kpi-retry.kpi-retry--inline:focus-visible{outline-offset:1px}
@container (min-width:380px){.kpi-stale{left:auto;justify-content:flex-end;font-size:11.5px;line-height:16px;white-space:nowrap}}
:root[data-theme="light"] .kpi-stale{color:#8a5a12}

/* Сессия истекла (401, data-state="auth"): спокойная нейтральная панель той же высоты 202px, без красного, без кнопки и без скелетона.
   Текст «Сессия истекла. Войдите заново…» — в разметке status.js (role=alert). */
.kpi-row-ext[data-state="auth"]{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;height:var(--kpi-ext-h);padding:14px 16px;border-radius:14px;border:1px dashed rgba(170,185,255,.3);background:rgba(120,140,255,.05);font-size:12.5px;line-height:18px;color:rgba(220,228,255,.78)}
:root[data-theme="light"] .kpi-row-ext[data-state="auth"]{border-color:rgba(20,32,80,.2);background:#f7f8fc;color:#5b6582}
.kpi-row-ext[data-state="auth"] .kpi-error,.kpi-row-ext[data-state="auth"] .kpi-error-text strong{color:#eef2ff}
:root[data-theme="light"] .kpi-row-ext[data-state="auth"] .kpi-error,:root[data-theme="light"] .kpi-row-ext[data-state="auth"] .kpi-error-text strong{color:var(--ink)}
/* r15.1: pairs 2-4 + R-090–R-092 */
/* 2. Прибыль — вторая крупная цифра hero, рядом с оборотом */
.hero-total .turnover-total{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 36px}
.hero-total .turnover-profit{font-size:clamp(28px,4.2vw,44px)!important;font-weight:700;line-height:1.05;display:flex;flex-direction:column;gap:4px;padding-left:28px;border-left:1px solid rgba(255,255,255,.18);margin:0 0 6px}
.hero-total .turnover-profit-label{font-size:13px;font-weight:600;color:var(--on-accent-2);letter-spacing:.01em}
.hero-total .turnover-profit-value{font-family:var(--num);font-variant-numeric:tabular-nums}
.hero-total .turnover-profit-value .unit{font-size:.45em;font-weight:600;margin-left:2px}
@media(max-width:560px){.hero-total .turnover-profit{padding-left:0;border-left:0}}
@media(max-width:360px){.hero-total .turnover-total{gap:8px 0}.hero-total .turnover-profit{width:100%;margin:0}}
/* 3. Единый формат: цифры одной ширины, время курса рядом. Пара 4 (тире «—») — только JS. */
/* R-092: NBSP перед USDT в разметке; nowrap, чтобы единица не уезжала на следующую строку. */
.turnover-total-value,.turnover-amount,.kpi-value,.turnover-balance-value,.stats dd,.hero-avg-value,.forecast-value,.hero-fx-rate{font-variant-numeric:tabular-nums}
.hero-fx-at{font-size:12px;color:var(--on-accent-2);font-weight:500}
.hero-total .turnover-total-value,.hero-total .turnover-total-value small,.turnover-amount,.turnover-amount small,.kpi-value,.forecast-value,.turnover-balance-value,.hero-avg-value,.stats dd{white-space:nowrap}
.kpi-row-ext .kpi-value{min-width:0;overflow:visible}
@media(max-width:360px){.kpi-row-ext .kpi{padding-left:10px;padding-right:10px}.kpi-row-ext .kpi-value{font-size:14px;letter-spacing:-.04em}}

/* r14.1 addon pad4: +4px нижнего отступа карточки площадки во всех состояниях ряда (загрузка, ошибка, данные, плашка, сессия),
   чтобы плашка .kpi-stale не стояла вплотную к рамке. Отступ безусловный — от состояния не зависит, CLS нет. Было 24px / 20px (≤760px). */
.turnover-source{padding-bottom:28px}
@media(max-width:760px){.turnover-source{padding-bottom:24px}}

/* r16.1 R-100 */
/* На 320/390 «USDT» у оборота в hero был ~8–10px (.28em от min(44px,11.5cqi)).
   Единица прибыли: .45em от .hero-total .turnover-profit-value, а оно само 1.05em
   от clamp(28px,4.2vw,44px) в style.css → 13.23px при этих ширинах.
   Только ≤760px — на 768/1280 размер не меняется. */
@media(max-width:760px){.hero-total .turnover-total-value small{font-size:calc(.45*1.05*clamp(28px,4.2vw,44px))!important}}
