/* Дом 3 (16.10.2026): утверждённый макет, собран tools gen_home.py из .tmp/concept/dom-one.html */

/* Макет 8. Телефон: три пункта — Дом · Комфорт · Ещё. Дом: «Сейчас», общая плашка медиа (музыка и фильмы), «Давно не убирали?».
   Комфорт: климат и свет сверху, ниже тревожная подсветка с выбором устройств. Квадратнее, отступы мельче. Язык «Космоса». */
:root{
  --bg:#05070f; --text:#EEF2FA; --muted:#A3AEC6; --dim:#75819E; --ice:#9FD8F0; --sand:#F0CBA4; --ok:#93E2BC; --warn:#F2BE8A; --danger:#FF8F8F;
  --glass:linear-gradient(180deg,rgba(24,32,60,.82),rgba(10,14,30,.9)); --line:rgba(170,200,255,.13); --ctl:rgba(170,200,255,.08); --ctl2:rgba(170,200,255,.16);
  --font:'Onest',system-ui,sans-serif; --disp:'Unbounded','Onest',sans-serif; color-scheme:dark;
}
@media not all{body{background:#e6eaf2 !important}:root:not([data-theme="dark"]){
  --bg:#e6eaf2; --text:#10162a; --muted:#4a5672; --dim:#7d88a3; --ice:#2b6f8c; --sand:#9a6b3a; --ok:#2d7a57; --warn:#a0621f; --danger:#b23a3a;
  --glass:linear-gradient(180deg,rgba(255,255,255,.92),rgba(238,242,250,.94)); --line:rgba(30,50,100,.15); --ctl:rgba(30,50,100,.07); --ctl2:rgba(30,50,100,.14); color-scheme:light}}
:root[data-theme="light"] body{background:#e6eaf2}
:root[data-theme="light"]{
  --bg:#e6eaf2; --text:#10162a; --muted:#4a5672; --dim:#7d88a3; --ice:#2b6f8c; --sand:#9a6b3a; --ok:#2d7a57; --warn:#a0621f; --danger:#b23a3a;
  --glass:linear-gradient(180deg,rgba(255,255,255,.92),rgba(238,242,250,.94)); --line:rgba(30,50,100,.15); --ctl:rgba(30,50,100,.07); --ctl2:rgba(30,50,100,.14); color-scheme:light}
*{box-sizing:border-box}
body{margin:0;background:radial-gradient(120% 90% at 70% -10%,#12204a 0%,#070a16 55%,#04060d 100%) fixed;color:var(--text);font:400 15px/1.35 var(--font);padding:14px clamp(14px,3vw,30px) 40px}

.stage{display:flex;gap:22px;align-items:flex-start;flex-wrap:wrap}
.frame{container-type:inline-size;border:1px solid var(--line);border-radius:10px;padding:8px;background:rgba(0,0,0,.18)}
.frame.phone{width:390px;max-width:100%}
.cap{font:600 11px var(--font);letter-spacing:.16em;text-transform:uppercase;color:var(--dim);margin:0 0 8px 4px}
.hide{display:none !important}
/* ---- экран */
.app{display:grid;gap:6px}
.head{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center}
.clock b{font:700 30px/1 var(--disp);letter-spacing:-.02em}
.clock span{display:block;color:var(--muted);font-size:12.5px;margin-top:4px}
.gear{width:44px;height:44px;border-radius:6px;background:var(--ctl);border:1px solid var(--line);color:var(--text);font-size:20px;cursor:pointer}
.rail{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;grid-column:1/-1}
.rail::-webkit-scrollbar{display:none}
.chip{display:flex;align-items:center;gap:7px;padding:6px 9px;border-radius:6px;background:var(--ctl);border:1px solid var(--line);font-size:13px;white-space:nowrap}
.chip i{width:8px;height:8px;border-radius:50%;background:var(--ok)}
.chip.warn i{background:var(--warn)}.chip.bad i{background:var(--danger)}
.chip em{font-style:normal;color:var(--dim)}
.mod{background:var(--glass);border:1px solid var(--line);border-radius:6px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;min-width:0}
.lbl{font:600 11px var(--font);letter-spacing:.15em;text-transform:uppercase;color:var(--dim)}
.sub{color:var(--muted);font-size:13px}
.alarm{border:1px solid rgba(255,143,143,.5);background:linear-gradient(160deg,rgba(255,143,143,.2),rgba(255,143,143,.05));border-radius:6px;padding:9px 11px;display:flex;gap:11px;align-items:center}
.alarm b{font:700 14px var(--disp)}
.btn{font:600 14px var(--font);color:var(--text);background:var(--ctl);border:1px solid var(--line);border-radius:6px;padding:9px 10px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px}
.btn:hover{background:var(--ctl2)}
.btn.on{background:linear-gradient(160deg,rgba(159,216,240,.3),rgba(159,216,240,.09));border-color:rgba(159,216,240,.42)}
.btn.go{background:linear-gradient(160deg,rgba(147,226,188,.35),rgba(147,226,188,.1));border-color:rgba(147,226,188,.5)}
.btn.wide{width:100%}
.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--ctl);border-radius:6px;padding:2px;gap:2px}
.seg button{font:600 13px var(--font);color:var(--muted);background:transparent;border:0;border-radius:4px;padding:10px 4px;cursor:pointer;min-height:40px}
.seg button[aria-pressed="true"]{background:linear-gradient(160deg,rgba(159,216,240,.3),rgba(159,216,240,.1));color:var(--text)}
.line{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:8px 10px;background:var(--ctl);border-radius:6px;font-size:14px}
.line .k{color:var(--muted)}
.prog{height:6px;border-radius:3px;background:var(--ctl)}.prog i{display:block;height:100%;width:38%;border-radius:3px;background:var(--ice)}
.prog2{height:6px;border-radius:3px;background:var(--ctl)}.prog2 i{display:block;height:100%;border-radius:3px;background:var(--ok)}
/* Дом: сейчас */
.now h2{margin:0;font:700 20px/1.15 var(--disp)}
.rooms{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.room{background:var(--ctl);border:1px solid var(--line);border-radius:6px;padding:8px}
.room b{display:block;font:700 22px var(--disp);margin:2px 0}
/* медиа: общая плашка */
.mtiles{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}
.ft{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:6px;min-height:100px;text-align:left;padding:9px;border:1px solid var(--line);background:var(--ctl);border-radius:6px;color:var(--text);cursor:pointer;font-family:var(--font)}
.ft b{font:700 13.5px/1.15 var(--disp)}
.ft.plus{align-items:center;justify-content:center;text-align:center;border-style:dashed;border-color:rgba(159,216,240,.5)}
.ft .pl{font-size:30px;line-height:1;color:var(--ice)}
.ft.playing{background:linear-gradient(160deg,rgba(159,216,240,.28),rgba(159,216,240,.08));border-color:rgba(159,216,240,.45)}
.ft.music{background:linear-gradient(160deg,rgba(240,203,164,.24),rgba(240,203,164,.06));border-color:rgba(240,203,164,.45)}
.ft.dls{background:linear-gradient(160deg,rgba(147,226,188,.2),rgba(147,226,188,.05));border-color:rgba(147,226,188,.4)}
.badge{position:absolute;top:7px;right:7px;font:700 10px var(--font);letter-spacing:.08em;text-transform:uppercase;background:var(--ice);color:#04101a;padding:3px 6px;border-radius:3px}
.strip{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.poster{position:relative;aspect-ratio:2/3;border-radius:6px;background:linear-gradient(160deg,#1f2c55,#3d3a78);display:flex;align-items:flex-end;padding:7px;font:600 12px var(--font);border:1px solid var(--line)}
.addp{border:1px solid rgba(159,216,240,.4);border-radius:6px;padding:9px;background:var(--glass)}
.srch{display:grid;grid-template-columns:1fr auto;gap:6px;margin-top:6px}
.srch input{font:500 15px var(--font);color:var(--text);background:var(--ctl);border:1px solid var(--line);border-radius:6px;padding:10px;min-height:44px;width:100%}
.btn.magic{min-width:48px;font-size:18px;background:linear-gradient(160deg,rgba(240,203,164,.35),rgba(240,203,164,.1));border-color:rgba(240,203,164,.5)}
.res{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 9px;background:var(--ctl);border-radius:6px;margin-top:5px;font-size:14px}
/* уборка */
.sugg{border-color:rgba(240,203,164,.5);background:linear-gradient(160deg,rgba(240,203,164,.16),rgba(240,203,164,.04))}
.sugg b.t{font:700 15px var(--disp)}
.ddb{width:100%;justify-content:space-between}
.menu{margin-top:6px;border:1px solid var(--line);border-radius:6px;background:var(--glass);padding:8px;display:grid;gap:6px}
.vrooms{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}
.vr{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px;border:1px solid var(--line);background:var(--ctl);border-radius:6px;font:600 14px var(--font);color:var(--text);cursor:pointer;min-height:42px;text-align:left}
.vr .n{min-width:24px;height:24px;border-radius:4px;background:var(--ctl2);color:var(--dim);display:grid;place-items:center;font:700 12px var(--font)}
.vr[aria-pressed="true"]{background:linear-gradient(160deg,rgba(159,216,240,.3),rgba(159,216,240,.09));border-color:rgba(159,216,240,.45)}
.vr[aria-pressed="true"] .n{background:var(--ice);color:#04101a}
/* комфорт */
.trow{display:flex;justify-content:space-between;align-items:flex-end;gap:10px}
.big{font:700 50px/1 var(--disp);letter-spacing:-.03em}.big sup{font-size:.4em;color:var(--muted)}
.tn b{display:block;font:700 22px var(--disp)}
.scale{position:relative;height:28px}
.scale .tr{position:absolute;left:0;right:0;top:9px;height:8px;border-radius:3px;background:linear-gradient(90deg,var(--ice),var(--sand) 60%,#3a3f52 60%)}
.scale .tk{position:absolute;top:5px;width:2px;height:16px;background:var(--text)}
.scale .tk b{position:absolute;top:17px;left:50%;transform:translateX(-50%);font:600 11px var(--font);color:var(--muted)}
.drawer{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;border-top:1px solid var(--line);padding-top:8px}
.rng{height:10px;border-radius:3px;background:var(--ctl)}.rng i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--ice),#c9ecff)}
.sw{width:16px;height:16px;border-radius:4px;background:#ff0f4b;box-shadow:0 0 10px #ff0f4baa}
.pal h4{margin:6px 0 6px;font:600 11px var(--font);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.pal .row{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;margin-bottom:8px}
.pal .c{aspect-ratio:1;border-radius:6px;border:2px solid rgba(255,255,255,.16);cursor:pointer}
.pal .c.cur{outline:2px solid var(--text);outline-offset:2px}
.hue{height:16px;border-radius:3px;background:linear-gradient(90deg,#f00,#ff0,#0f0,#0ff,#00f,#f0f,#f00);position:relative}
.hue i{position:absolute;left:62%;top:-4px;width:8px;height:24px;border-radius:2px;background:#fff;box-shadow:0 0 0 2px #0006}
.chk{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;background:var(--ctl);border:1px solid var(--line);border-radius:6px;cursor:pointer;min-height:42px;font:600 14px var(--font);color:var(--text);text-align:left;width:100%}
.chk .tg{width:36px;height:20px;border-radius:4px;background:var(--ctl2);position:relative;flex:none}
.chk .tg::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:3px;background:var(--dim)}
.chk[aria-pressed="true"] .tg{background:rgba(159,216,240,.45)}
.chk[aria-pressed="true"] .tg::after{left:18px;background:var(--text)}
.game{border-color:rgba(240,203,164,.45);background:linear-gradient(160deg,rgba(240,203,164,.2),rgba(240,203,164,.05))}
/* меню телефона */
.pnav{display:none}
.cols{display:grid;gap:6px}
@container (max-width:719px){
  .app{min-height:700px;align-content:start}
  .pnav{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:6px;background:var(--glass);margin-top:6px;position:sticky;bottom:0}
  .pnav button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 2px;min-height:58px;background:transparent;border:0;border-right:1px solid var(--line);color:var(--muted);font:600 12px var(--font);cursor:pointer}
  .pnav button:last-child{border-right:0}
  .pnav button span{font-size:20px;line-height:1}
  .pnav button[aria-current="true"]{color:var(--text);box-shadow:inset 0 2px 0 var(--ice);background:rgba(159,216,240,.08)}
  .cols,.cols > div{display:contents}
  .app .p-home,.app .p-comfort,.app .p-more{display:none}
  .app[data-pane="home"] .p-home,.app[data-pane="comfort"] .p-comfort,.app[data-pane="more"] .p-more{display:flex}
}

/* статусы иконками */
.icons{display:flex;gap:6px;grid-column:1/-1;overflow-x:auto;scrollbar-width:none}
.icons::-webkit-scrollbar{display:none}
.ico{position:relative;width:44px;height:44px;flex:none;border-radius:6px;border:1px solid var(--line);background:var(--ctl);color:var(--muted);display:grid;place-items:center;cursor:pointer}
.ico svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ico i{position:absolute;top:5px;right:5px;width:7px;height:7px;border-radius:50%;background:var(--ok)}
.ico.warn{color:var(--warn)}.ico.warn i{background:var(--warn)}
.ico.bad{color:var(--danger)}.ico.bad i{background:var(--danger)}
/* охрана: снята -- пустой щит, стоит -- залитый зелёный, ночная -- фиолетовый */
.ico.off{color:var(--muted)}.ico.off i{background:var(--dim)}
.ico.armed{color:var(--ok);border-color:rgba(147,226,188,.5);background:rgba(147,226,188,.14)}.ico.armed svg{fill:currentColor;fill-opacity:.25}
.ico.night{color:#b79bff;border-color:rgba(183,155,255,.6);background:rgba(183,155,255,.16)}.ico.night svg{fill:currentColor;fill-opacity:.25}.ico.night i{background:#b79bff}
.stline{grid-column:1/-1;padding:7px 10px;background:var(--ctl);border-radius:6px;font-size:13px;color:var(--muted)}
/* 27.10, владелец: кино и музыка -- списками. Строка: обложка впереди, название и подпись, справа крестик.
   Не толстая (58 px), разделители волосяные, фон появляется под пальцем. */
#app.frame .flbl{margin:12px 2px 6px;font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
#app.frame .flbl:first-child{margin-top:4px}
#app.frame .fempty{padding:14px 10px;text-align:center;font-size:13px;color:var(--muted)}
#app.frame .frow{display:grid;grid-template-columns:40px minmax(0,1fr) auto auto;align-items:center;gap:10px;
  padding:5px 8px;border-radius:10px;border-bottom:1px solid var(--line);cursor:pointer;min-height:58px}
#app.frame .frow:last-child{border-bottom:0}
#app.frame .frow:hover,#app.frame .frow.tap{background:var(--ctl)}
#app.frame .frow .fcv{width:40px;height:58px;border-radius:6px;background:var(--ctl2) center/cover no-repeat;flex:0 0 auto;
  box-shadow:inset 0 0 0 1px var(--line)}
#app.frame .frow .fcv.fsq{height:40px;border-radius:8px}
/* нет обложки (любимые треки, свои записи) -- знак вместо пустого прямоугольника */
#app.frame .frow .fcv:not([style]){display:grid;place-items:center}
#app.frame .frow .fcv:not([style])::after{content:"¶A";font-size:17px;color:var(--dim)}
#app.frame .frow[data-liked="1"] .fcv::after{content:"¶5";color:#f08585}
#app.frame .frow .ftx,#app.frame .dlsum .ftx{display:grid;gap:2px;min-width:0}
#app.frame .frow .ftx b,#app.frame .dlsum .ftx b{font:600 14px var(--font);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#app.frame .frow .ftx small,#app.frame .dlsum .ftx small{font:500 12px var(--font);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#app.frame .frow.now{background:rgba(143,203,224,.1)}
#app.frame .frow.now .ftx b{color:var(--ice)}
#app.frame .frow.taken{opacity:.5}
#app.frame .fbar{display:block;width:64px;height:4px;border-radius:2px;background:var(--ctl2);overflow:hidden;margin-right:2px}
#app.frame .fbar i{display:block;height:100%;background:linear-gradient(90deg,#8fcbe0,#6fa8c4)}
#app.frame .fdel,#app.frame .fget{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:transparent;
  color:var(--muted);font-size:14px;line-height:1;display:grid;place-items:center;cursor:pointer;flex:0 0 auto}
#app.frame .fdel:hover{color:var(--danger);border-color:rgba(255,143,143,.5);background:rgba(255,143,143,.12)}
#app.frame .fget{color:var(--ice);border-color:rgba(143,203,224,.45)}
#app.frame .fget:hover{background:rgba(143,203,224,.16)}
#app.frame .fget[disabled]{opacity:.6;cursor:default}
/* свёрнутая строка «Качается»: нажатие раскрывает список, у каждой закачки своя полоска и крестик */
#app.frame .dlsum{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;width:100%;
  padding:9px 10px;margin:6px 0 2px;border-radius:10px;border:1px solid var(--line);background:var(--ctl);
  color:var(--text);cursor:pointer;text-align:left}
#app.frame .dlsum:hover{border-color:#5f7186}
#app.frame .dlsum em{font-style:normal;color:var(--muted);font-size:12px}
#app.frame .dlsum .ftx b{font:600 13px var(--font)}
#app.frame .frow.dl{margin-left:10px;border-bottom:0}
#app.frame .fsrch{margin:10px 0 2px}
#app.frame .plsw{margin:2px 0 6px}
/* 27.10: карточка фильма -- кадр фоном, постер, оценка, описание, кнопки и трейлер по кнопке */
#app.frame .tc{position:relative;border-radius:12px;overflow:hidden;margin-bottom:10px;min-height:124px;isolation:isolate}
#app.frame .tc .tcbg{position:absolute;inset:0;z-index:0;background-size:cover;background-position:center 28%;
  filter:brightness(.5) saturate(1.05)}
#app.frame .tc::after{content:"";position:absolute;inset:0;z-index:0;
  background:linear-gradient(180deg,rgba(10,13,19,.25),rgba(10,13,19,.88))}
#app.frame .tchead{position:relative;z-index:1;display:grid;grid-template-columns:62px minmax(0,1fr);gap:12px;
  align-items:end;padding:14px 12px 12px}
#app.frame .tcpo{width:62px;height:90px;border-radius:8px;background:var(--ctl2) center/cover no-repeat;
  box-shadow:0 6px 18px -8px #000,inset 0 0 0 1px var(--line)}
#app.frame .tctx{display:grid;gap:3px;min-width:0}
#app.frame .tctx b{font:700 17px var(--disp);color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.6);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#app.frame .tctx small{font:500 12px var(--font);color:#c9d3e4}
#app.frame .tcrt{font:700 12px var(--font);color:var(--sand);font-style:normal}
#app.frame .tcov{margin:0 2px 12px;font:400 13px/1.45 var(--font);color:var(--muted)}
#app.frame .tcbtns{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:8px;margin-bottom:10px}
#app.frame .tcbtns .btn{min-height:42px;font-size:14px}
#app.frame .tcbtns .btn.bad{color:var(--danger)}
#app.frame .btn.tcplay{width:100%;min-height:42px;font-size:14px}
#app.frame .tcyt{position:relative;width:100%;aspect-ratio:16/9;border-radius:10px;overflow:hidden;border:1px solid var(--line)}
#app.frame .tcyt iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
#app.frame [data-el="mpick"]{width:min(380px,calc(100vw - 24px))}
/* 27.10: /api/status не отвечает -- честный баннер вместо тихого показа старого кадра */
.conn-down{position:sticky;top:0;z-index:80;margin:0 0 10px;padding:9px 14px;border-radius:8px;
  background:rgba(255,143,143,.14);border:1px solid rgba(255,143,143,.4);color:var(--danger);
  font:600 13px var(--font);text-align:center}
/* иконки без коробочек и точек: контур сам светится цветом статуса, если активен */
.ico,.ico.armed,.ico.night{background:transparent;border:0;box-shadow:none}
.ico i{display:none}
.ico svg{width:26px;height:26px;stroke-width:1.9}
.ico.ok{color:var(--ok);filter:drop-shadow(0 0 5px rgba(147,226,188,.65))}
.ico.warn{color:var(--warn);filter:drop-shadow(0 0 5px rgba(242,190,138,.7))}
.ico.bad{color:var(--danger);filter:drop-shadow(0 0 6px rgba(255,143,143,.8))}
.ico.off{color:var(--dim);filter:none}
.ico.armed{color:var(--ok);filter:drop-shadow(0 0 6px rgba(147,226,188,.8))}
.ico.night{color:#b79bff;filter:drop-shadow(0 0 6px rgba(183,155,255,.85))}
.ico.armed svg,.ico.night svg{fill:currentColor;fill-opacity:.2}
.icons{gap:14px}

/* подписи под иконками */
.ico{width:auto;min-width:58px;height:auto;padding:2px 0;gap:3px;align-content:start;justify-items:center}
.ico::after{content:attr(data-cap);display:block;font:600 11px var(--font);color:var(--text);letter-spacing:.02em;margin-top:2px;text-align:center}
.ico::before{content:attr(data-val);order:3;display:block;font:500 11px var(--font);color:var(--muted);text-align:center;white-space:nowrap}
.ico{display:flex;flex-direction:column;align-items:center}
.ico svg{order:1}.ico::after{order:2}
/* одна строка подписи: «Охрана снята», «Сеть 6 мс» */
.ico::before{display:none}
.ico::after{content:attr(data-cap) " " attr(data-val);min-height:14px;font:600 12px var(--font);white-space:nowrap;margin-top:3px}
.icons{display:grid;grid-template-columns:repeat(3,1fr);gap:8px 6px;overflow:visible}
.ico{min-width:0;width:100%}
@container (min-width:720px){.icons{grid-template-columns:repeat(6,auto);justify-content:start;gap:8px 22px}}

/* климат: просто температура гостиной, контуром */
.ico.temp .tnum{font:700 30px/1 var(--disp);color:transparent;-webkit-text-stroke:1.5px currentColor;letter-spacing:-.02em}
.ico.temp{order:0}

/* три иконки: сеть, охрана, температура гостиной */
.icons{grid-template-columns:repeat(3,1fr);justify-items:center}
@container (min-width:720px){.icons{grid-template-columns:repeat(3,auto);justify-content:start;gap:8px 34px}}
/* телевизоры */
.tvs{display:grid;gap:6px}
.tv{background:var(--ctl);border:1px solid var(--line);border-radius:6px;padding:8px;display:grid;gap:6px}
.tvh{display:flex;flex-direction:column;gap:2px}.tvh b{font:700 14px var(--disp)}
.tvc{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}
.tvc .btn{padding:6px 2px;min-height:40px;font-size:15px}
/* нижняя панель как в Life AI: пункт · круглая Леся · пункт */
.frame{position:relative}
.pnav{grid-template-columns:1fr auto 1fr !important;align-items:center}
.pnav button span svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.pnav .lesya{width:62px;height:62px;border-radius:50%;margin:-14px 8px 0;padding:0;border:0 !important;background:linear-gradient(160deg,#3d9bff,#6a5cff);color:#fff;box-shadow:0 10px 24px -8px rgba(61,155,255,.8);flex-direction:row}
.pnav .lesya b{font:700 24px var(--disp)}
.chat{position:absolute;left:8px;right:8px;bottom:8px;top:60px;z-index:20;display:flex;flex-direction:column;background:var(--glass);border:1px solid var(--line);border-radius:10px;padding:10px;gap:8px}
.chead{display:flex;align-items:center;gap:8px}.chead b{font:700 16px var(--disp)}.chead .icb{margin-left:auto}
.msgs{flex:1;overflow:auto;display:flex;flex-direction:column;gap:6px}
.m{max-width:86%;padding:8px 10px;border-radius:8px;font-size:14px}
.m.me{align-self:flex-end;background:linear-gradient(180deg,#3d9bff,#0a84ff);color:#fff}
.m.bot{align-self:flex-start;background:var(--ctl2)}
.compose{display:flex;gap:8px;align-items:center}
.compose .cinp{flex:1;min-width:0;height:44px;border-radius:22px;border:1px solid var(--line);background:var(--ctl);color:var(--text);padding:0 16px;font:inherit;font-size:16px}
.icb{width:44px;height:44px;border-radius:50%;background:var(--ctl2);border:0;color:var(--text);display:grid;place-items:center;flex:none;cursor:pointer;font-size:16px}
.icb svg{width:20px;height:20px}
.icb.pri{background:linear-gradient(180deg,#3d9bff,#0a84ff);color:#fff}
.compose.rec .cinp,.compose.rec .pri{display:none}
.compose.rec [data-act="voice"]{background:#a0124a;color:#fff;box-shadow:0 0 14px rgba(255,61,127,.6)}
.vrec{flex:1;height:44px;border-radius:22px;background:#2a1220;box-shadow:inset 0 0 0 1.5px #ff3d7f;display:flex;align-items:center;gap:4px;padding:0 14px;color:#ff9ab9}
.vrec i{width:3px;height:14px;border-radius:2px;background:#ff3d7f;display:block}
.vrec i:nth-child(2n){height:24px}.vrec i:nth-child(3n){height:8px}
.vrec span{margin-left:auto;font:600 14px var(--font)}
.vrec-cancel{background:#2a2f3c;color:#ff9ab9;box-shadow:inset 0 0 0 1px rgba(255,61,127,.6)}
@container (min-width:720px){
  .cols{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr);align-items:start}
  .cols > div{display:grid;gap:6px;min-width:0}
  .clock b{font-size:38px}
  .now h2{font-size:26px}
  .mtiles{grid-template-columns:repeat(4,1fr)}
  .strip{grid-template-columns:repeat(6,1fr)}
}

/* телефон: Дом помещается без прокрутки */
.folds{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.mtiles{grid-template-columns:repeat(2,1fr) !important}
.ft{min-height:84px;padding:8px}
.now .sub{display:none}
.rooms .room{padding:6px 8px}.rooms .room b{font-size:20px}
.sugg{gap:6px}
.pnav{position:sticky;bottom:0}
@container (min-width:720px){
  .folds{display:none}
  .fold.hide{display:grid !important;gap:6px}
  .now .sub{display:block}
  .mtiles{grid-template-columns:repeat(4,1fr) !important}
  .ft b{font-size:12.5px}
  .cols{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,.9fr)}
}

/* 4 иконки в один ряд: сеть · градусы · охрана · тревога */
.icons{display:grid !important;grid-template-columns:repeat(4,1fr) !important;justify-items:center;gap:4px !important}
.ico{min-width:0;width:100%}
.ico::after{content:attr(data-val) !important;font:600 12px var(--font);min-height:15px}
.ico.dim{color:var(--dim);filter:none}
.ico.temp .tnum{font-size:30px;margin-top:-2px}
.ico.temp::after{content:"" !important}
@container (min-width:720px){.icons{grid-template-columns:repeat(4,minmax(0,110px)) !important;justify-content:start}}

/* исправления после проверки снимком */
.ico.temp .tnum{-webkit-text-stroke:1.6px var(--ice) !important;color:transparent}
.ico.temp{filter:drop-shadow(0 0 5px rgba(159,216,240,.55))}
@container (max-width:719px){
  .app{min-height:0 !important;gap:5px}
  .frame.phone .app{height:712px}
  .head{gap:4px}.clock b{font-size:26px}
  .mod{padding:8px 10px;gap:6px}
  .mod > .lbl:first-child{display:none}
  .ft{min-height:68px;padding:7px}
  .ft b{font-size:12.5px}
  .ft .sub{font-size:12px}
  .now h2{font-size:18px}
  .rooms .room b{font-size:18px;margin:0}
  .room{padding:5px 8px}
  .sugg .sub{font-size:12px}
  .btn{min-height:38px;padding:6px 8px}
  .folds{gap:4px}
  .pnav button{min-height:52px}
}

@container (max-width:719px){
  .frame.phone .app{display:flex;flex-direction:column}
  .frame.phone .pnav{margin-top:auto}
}

.icons{grid-template-columns:repeat(5,1fr) !important}
@container (min-width:720px){.icons{grid-template-columns:repeat(5,minmax(0,100px)) !important}}
.ico.wx svg{width:28px;height:28px}

/* ЕДИНЫЙ КОНТУРНЫЙ СТИЛЬ статусов: значок и подпись одним контуром, цвет = состояние, свечение = активно */
.icons{display:grid !important;grid-auto-flow:column !important;grid-auto-columns:minmax(0,1fr) !important;grid-template-columns:none !important;
  gap:4px !important;justify-items:center;align-items:start;padding:2px 0 4px}
.icons .ico{display:flex;flex-direction:column;align-items:center;gap:3px;width:100%;min-width:0;height:auto;padding:2px 0;
  background:transparent !important;border:0 !important;box-shadow:none !important;color:var(--ok);filter:drop-shadow(0 0 5px currentColor)}
.icons .ico i{display:none !important}
.icons .ico svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;order:1}
.icons .ico::before{display:none !important}
.icons .ico::after{content:attr(data-val) !important;order:2;display:block;margin:0;min-height:0;
  font:700 15px/1 var(--font);letter-spacing:.01em;white-space:nowrap;
  color:color-mix(in srgb,currentColor 16%,transparent);-webkit-text-stroke:1px currentColor}
.icons .ico.ok{color:var(--ice)}
.icons .ico.warn{color:var(--warn)}
.icons .ico.off{color:var(--dim);filter:none}
.icons .ico.armed{color:var(--ok)}
.icons .ico.night{color:#b79bff}
.icons .ico.armed svg,.icons .ico.night svg{fill:currentColor;fill-opacity:.18}
.icons .ico.alarm{color:var(--danger);filter:drop-shadow(0 0 7px rgba(255,100,100,.9));animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{50%{filter:drop-shadow(0 0 2px rgba(255,100,100,.5))}}
@media (prefers-reduced-motion:reduce){.icons .ico.alarm{animation:none}}
@container (min-width:720px){.icons{grid-auto-columns:minmax(0,96px) !important;justify-content:start}}

/* градусы в квартире: крупные цифры тем же контуром, что остальные значки */
.icons .ico.temp .tnum{order:1;display:block;height:30px;font:700 30px/30px var(--disp);letter-spacing:-.03em;
  color:color-mix(in srgb,currentColor 16%,transparent);-webkit-text-stroke:1.5px currentColor}
.icons .ico.temp::after{content:"" !important}

/* подгонка: цифры градусов по размеру значков, подписи читаемее */
.icons .ico.temp .tnum{font-size:25px;line-height:30px;-webkit-text-stroke:1.3px currentColor}
.icons .ico::after{color:color-mix(in srgb,currentColor 38%,transparent) !important;-webkit-text-stroke:.8px currentColor !important;font-size:15px !important}
.icons .ico.off::after{color:color-mix(in srgb,currentColor 45%,transparent) !important}

/* градусы в доме: значок по смыслу («тепло и тихо» = солнышко), цифры ниже, как у погоды */
.icons .ico.home.warm{color:var(--sand)}
.icons .ico.home.cold{color:#7fc4ff}
.icons .ico.home.ok{color:var(--ok)}
.icons .ico.home.hot{color:#ff8f6a}

/* подписи под значками: серые, мельче, ближе, без выделения */
.icons .ico{gap:1px !important}
.icons .ico::after{color:var(--muted) !important;-webkit-text-stroke:0 !important;font:500 12px/1.1 var(--font) !important;letter-spacing:0 !important;margin-top:0 !important;text-shadow:none !important}
.icons .ico.off::after,.icons .ico.alarm::after{color:var(--muted) !important}

/* лазерный стиль: тонкая светлая жила, цветное мягкое свечение умеренной силы, лёгкая тень под значком */
.icons .ico{filter:none !important}
.icons .ico svg{
  width:30px;height:30px;stroke-width:1.5;
  stroke:color-mix(in srgb,currentColor 80%,#ffffff);
  filter:drop-shadow(0 0 .6px color-mix(in srgb,currentColor 90%,#fff))
         drop-shadow(0 0 5px color-mix(in srgb,currentColor 70%,transparent))
         drop-shadow(0 4px 5px rgba(0,0,0,.55));
}
.icons .ico.off svg{filter:drop-shadow(0 0 .4px rgba(255,255,255,.35)) drop-shadow(0 4px 5px rgba(0,0,0,.5));stroke:color-mix(in srgb,currentColor 85%,#fff)}
.icons .ico.alarm svg{filter:drop-shadow(0 0 .6px #ffd0d0) drop-shadow(0 0 7px rgba(255,90,90,.75)) drop-shadow(0 4px 5px rgba(0,0,0,.55))}
.icons .ico.armed svg,.icons .ico.night svg{fill-opacity:.14}

/* нижняя панель: ровная планка, три равные ячейки; центральная кнопка Леси — выступающая плитка тем же лазерным контуром */
.pnav{display:grid !important;grid-template-columns:1fr 84px 1fr !important;align-items:stretch;gap:0;
  height:60px;margin-top:auto;padding:0;border:1px solid var(--line);border-radius:8px;
  background:linear-gradient(180deg,rgba(24,32,60,.92),rgba(10,14,30,.96));box-shadow:0 -6px 18px rgba(0,0,0,.35);position:relative}
.pnav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:0;height:100%;padding:0;
  background:transparent;border:0 !important;color:var(--muted);font:600 11.5px/1 var(--font);letter-spacing:.02em}
.pnav button span{display:grid;place-items:center;height:26px}
.pnav button span svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.pnav button[aria-current="true"]{color:var(--ice);box-shadow:none;background:transparent;position:relative}
.pnav button[aria-current="true"] span svg{filter:drop-shadow(0 0 5px rgba(159,216,240,.7))}
.pnav button[aria-current="true"]::before{content:"";position:absolute;top:0;left:22%;right:22%;height:2px;border-radius:2px;background:var(--ice);box-shadow:0 0 8px var(--ice)}
.pnav .lesya{align-self:end;justify-self:center;width:64px;height:64px;margin:0 0 6px;border-radius:12px !important;
  background:linear-gradient(160deg,rgba(61,155,255,.35),rgba(106,92,255,.28)) !important;
  border:1.5px solid rgba(143,190,255,.9) !important;color:#dbe9ff;
  box-shadow:0 0 14px rgba(80,140,255,.55),0 8px 16px rgba(0,0,0,.5),inset 0 0 12px rgba(120,160,255,.25);gap:2px;position:relative;top:-14px}
.pnav .lesya svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 4px rgba(150,190,255,.8))}
.pnav .lesya em{font:600 11px/1 var(--font);font-style:normal;letter-spacing:.04em;color:#cfe0ff}
.pnav .lesya b{display:none}

.gi{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;vertical-align:-4px;margin-right:6px;
  filter:drop-shadow(0 0 3px color-mix(in srgb,currentColor 55%,transparent))}
.sugg b.t{display:flex;align-items:center}
.sugg b.t .gi{color:var(--sand)}
.pnav .lesya{flex-direction:column !important}
.frame.phone .app{height:728px !important}

/* значки статусов масштабируются по ширине контейнера, всегда в одну строку */
.icons{grid-auto-flow:column !important;grid-auto-columns:minmax(0,1fr) !important;gap:2px !important;overflow:hidden}
.icons .ico svg,.icons .ico .tnum{width:clamp(22px,8cqi,36px) !important;height:clamp(22px,8cqi,36px) !important}
.icons .ico::after{font-size:clamp(10px,3.1cqi,13px) !important;white-space:nowrap;overflow:hidden;text-overflow:clip;max-width:100%}
.frame{container-type:inline-size}
/* окно тревоги */
.amodal{position:absolute;left:8px;right:8px;top:70px;z-index:30;background:var(--glass);border:1px solid rgba(255,143,143,.55);
  border-radius:10px;padding:12px;display:grid;gap:10px;box-shadow:0 18px 40px rgba(0,0,0,.6),0 0 22px rgba(255,90,90,.25)}
.ahead{display:flex;gap:10px;align-items:center}
.ahead svg{width:30px;height:30px;fill:none;stroke:var(--danger);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 6px rgba(255,90,90,.8))}
.ahead b{display:block;font:700 16px var(--disp)}.ahead span{color:var(--muted);font-size:13px}
.ahead .icb{margin-left:auto}
.arow{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:6px}
.arow > div{background:var(--ctl);border:1px solid var(--line);border-radius:6px;padding:8px;display:grid;gap:2px}
.arow b{font:700 16px var(--disp)}.arow .okc{color:var(--ok)}.arow span:not(.lbl){font-size:12px;color:var(--muted)}
.adg{background:var(--ctl);border-radius:6px;padding:10px;display:grid;gap:4px;font-size:14px}
.alist{display:grid;gap:5px}

/* окно тревоги непрозрачное, поверх затемнения */
.amodal{background:#0b1022 !important;top:62px;box-shadow:0 0 0 100vmax rgba(2,4,10,.62),0 18px 40px rgba(0,0,0,.6),0 0 22px rgba(255,90,90,.25) !important}
@media not all{.amodal{background:#f3f6fb !important}}
.amodal .line,.amodal .adg,.amodal .arow > div{background:rgba(160,185,230,.12)}

/* ===== Медиа: статус-плашки и две кнопки ===== */
.media{gap:8px}
.mstat{display:grid;gap:6px}
.mc{position:relative;display:grid;grid-template-columns:64px 1fr;gap:10px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--ctl)}
.mc .cover{width:64px;height:64px;aspect-ratio:auto;border-radius:6px;background:linear-gradient(160deg,var(--c1),var(--c2));padding:0;position:relative;z-index:1;transition:filter .6s}
.mc .mt{position:relative;z-index:1;display:grid;gap:3px;min-width:0}
.mc .mt b{font:700 14px/1.15 var(--disp)}
.mc .bar{height:5px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden}
.mc .bar i{display:block;height:100%;border-radius:3px;background:var(--ice)}
.mc .fillbg{position:absolute;left:0;top:0;bottom:0;width:var(--p,0%);background:linear-gradient(90deg,rgba(147,226,188,.22),rgba(147,226,188,.08));z-index:0;transition:width .6s}
.mc.dl{border-color:rgba(147,226,188,.45)}
.mc.dl .cover{filter:blur(calc(9px * (1 - var(--pn,0))))}
.mc.start{border-color:rgba(159,216,240,.55)}
.mc.music{border-color:rgba(240,203,164,.4)}
.mc.play{border-color:rgba(159,216,240,.4)}
.mbtns{display:grid;grid-template-columns:1.2fr 1fr;gap:6px}
.mbtns .btn{min-height:46px;font-size:15px}
.mbtns .gi{margin:0}
/* ===== Лист «Включить» ===== */
.msheet{position:absolute;left:8px;right:8px;top:52px;bottom:76px;z-index:25;background:#0b1022;border:1px solid rgba(159,216,240,.4);
  border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;overflow:auto;
  box-shadow:0 0 0 100vmax rgba(2,4,10,.6),0 18px 40px rgba(0,0,0,.6)}
@media not all{.msheet{background:#f3f6fb}}
.pls{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 2px 6px;scrollbar-width:none;margin:0 -2px}
.pls::-webkit-scrollbar{display:none}
.pl{flex:0 0 96px;height:70px;scroll-snap-align:start;border-radius:8px;border:1px solid rgba(255,255,255,.15);padding:8px;text-align:left;color:#fff;cursor:pointer;
  background:linear-gradient(150deg,var(--c1),var(--c2));display:flex;flex-direction:column;justify-content:flex-end;font-family:var(--font);box-shadow:0 6px 14px rgba(0,0,0,.35)}
.pl b{font:700 13px/1.1 var(--disp)}.pl span{font-size:11px;opacity:.85}
.g6{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.fm{position:relative;aspect-ratio:3/4;border-radius:8px;border:1px solid rgba(255,255,255,.14);padding:6px;display:flex;align-items:flex-end;text-align:left;color:#fff;cursor:pointer;
  background:linear-gradient(160deg,var(--c1),var(--c2));font-family:var(--font)}
.fm b{font:700 12px/1.1 var(--disp);text-shadow:0 1px 6px rgba(0,0,0,.6)}
.fm .nb{position:absolute;top:6px;right:6px;font:700 9px var(--font);letter-spacing:.08em;text-transform:uppercase;font-style:normal;background:var(--ice);color:#04101a;padding:2px 5px;border-radius:3px}
.tvq{border:1px solid rgba(159,216,240,.45);border-radius:8px;padding:8px;display:grid;gap:6px;background:rgba(159,216,240,.08)}
/* ===== Нижняя панель: две отдельные плитки и «орб» Леси между ними ===== */
.pnav{background:none !important;border:0 !important;box-shadow:none !important;height:64px !important;
  grid-template-columns:1fr 86px 1fr !important;gap:8px !important;padding:0 !important;align-items:end !important}
.pnav button[data-pane]{height:54px !important;border:1px solid var(--line) !important;border-radius:8px !important;
  background:linear-gradient(180deg,rgba(24,32,60,.92),rgba(10,14,30,.96)) !important}
.pnav button[data-pane][aria-current="true"]{border-color:rgba(159,216,240,.55) !important;box-shadow:0 0 12px rgba(159,216,240,.2),inset 0 0 10px rgba(159,216,240,.08) !important}
.pnav button[aria-current="true"]::before{left:18%;right:18%}
.pnav .lesya{position:relative;top:0 !important;width:76px !important;height:76px !important;margin:0 auto 4px !important;
  border:0 !important;border-radius:20px !important;background:#0a0f22 !important;box-shadow:0 10px 22px rgba(0,0,0,.55) !important;overflow:visible;z-index:2}
.pnav .lesya::before{content:"";position:absolute;inset:-3px;border-radius:23px;z-index:-1;
  background:conic-gradient(from 0deg,#3d9bff,#8a5bff,#ff5fb0,#ffb25a,#3d9bff);animation:orb 6s linear infinite;filter:blur(.3px)}
.pnav .lesya::after{content:"";position:absolute;inset:0;border-radius:20px;z-index:-1;background:radial-gradient(circle at 50% 35%,#1a2650,#0a0f22 75%)}
.pnav .lesya svg{width:28px;height:28px;color:#e8f1ff;filter:drop-shadow(0 0 6px rgba(150,190,255,.9))}
.pnav .lesya em{color:#cfe0ff;font-size:11px}
@keyframes orb{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.pnav .lesya::before{animation:none}}

/* пульт ТВ: переключатель сверху, один пульт */
.tvsw button{font-size:13px}
.rem{display:grid;gap:8px}
.r3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.r2{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.rb{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:48px;border-radius:8px;
  border:1px solid var(--line);background:var(--ctl);color:var(--text);cursor:pointer;font:600 12px var(--font)}
.rb svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.rb.pw{color:#ff8f8f;border-color:rgba(255,143,143,.5)}
.rb.big{flex-direction:row;gap:8px;min-height:52px;background:linear-gradient(160deg,rgba(147,226,188,.3),rgba(147,226,188,.08));border-color:rgba(147,226,188,.5)}
.dpad{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,48px);gap:6px;width:min(100%,240px);margin:0 auto}
.dpad .up{grid-area:1/2}.dpad .lf{grid-area:2/1}.dpad .ok{grid-area:2/2;background:linear-gradient(160deg,rgba(159,216,240,.3),rgba(159,216,240,.1));border-color:rgba(159,216,240,.5)}
.dpad .rt{grid-area:2/3}.dpad .dn{grid-area:3/2}
.vol{display:grid;grid-template-columns:48px 1fr 48px;gap:4px;align-items:center;text-align:center;color:var(--muted);font-size:12px}
/* орб Леси: угол градиента крутится, сама плитка неподвижна */
@property --ang{syntax:"<angle>";initial-value:0deg;inherits:false}
.pnav .lesya::before{animation:none !important;transform:none !important;background:conic-gradient(from var(--ang),#3d9bff,#8a5bff,#ff5fb0,#ffb25a,#3d9bff) !important;
  animation:spin 6s linear infinite !important;filter:none !important}
@keyframes spin{to{--ang:360deg}}
.pnav{height:84px !important;margin-bottom:0}
.pnav button[data-pane]{margin-bottom:6px}
.pnav .lesya{margin:0 auto 8px !important}

.g6{grid-template-columns:repeat(3,minmax(0,1fr)) !important}
.fm{min-width:0;aspect-ratio:3/3.4}
.fm b{overflow-wrap:anywhere}
.msheet{overflow-x:hidden}
.fm b{font-size:10.5px;letter-spacing:-.02em;overflow-wrap:normal}

/* ===== Phosphor Light + лазерный стиль: заливка, а не обводка ===== */
.pi{width:1em;height:1em;fill:currentColor;stroke:none;display:block}
.icons .ico svg.pi{width:clamp(24px,8.4cqi,38px) !important;height:clamp(24px,8.4cqi,38px) !important;fill:color-mix(in srgb,currentColor 78%,#ffffff) !important;stroke:none !important;
  filter:drop-shadow(0 0 .5px color-mix(in srgb,currentColor 90%,#fff)) drop-shadow(0 0 6px color-mix(in srgb,currentColor 62%,transparent)) drop-shadow(0 4px 5px rgba(0,0,0,.55)) !important}
.icons .ico.off svg.pi{fill:color-mix(in srgb,currentColor 90%,#fff) !important;filter:drop-shadow(0 4px 5px rgba(0,0,0,.5)) !important}
.icons .ico.alarm svg.pi{fill:#ffd9d9 !important;filter:drop-shadow(0 0 .6px #fff) drop-shadow(0 0 8px rgba(255,80,80,.85)) drop-shadow(0 4px 5px rgba(0,0,0,.55)) !important}
.icons .ico.armed svg.pi,.icons .ico.night svg.pi{fill-opacity:1 !important}
.pnav button span svg.pi{width:26px;height:26px;fill:currentColor;stroke:none}
.pnav .lesya svg.pi{width:30px;height:30px;fill:#e8f1ff;stroke:none;filter:drop-shadow(0 0 6px rgba(150,190,255,.9))}
.gearI{width:22px;height:22px;margin:auto}
.ahead svg.ra{width:32px;height:32px;fill:#ffb3b3;stroke:none;filter:drop-shadow(0 0 7px rgba(255,90,90,.8))}
.btn svg.gi,.sugg b.t svg.gi{width:20px;height:20px;fill:currentColor;stroke:none;vertical-align:-4px;margin-right:6px;filter:drop-shadow(0 0 3px color-mix(in srgb,currentColor 55%,transparent))}
.icons .ico.home svg.pi{fill:color-mix(in srgb,currentColor 82%,#fff) !important}

/* статусы: подпись крупнее; охрана красит фон изнутри своим акцентом */
.icons .ico::after{font-size:clamp(12px,3.9cqi,15px) !important}
.icons .ico{border-radius:12px !important;cursor:default}
.icons .ico[data-act]{cursor:pointer}
.icons .ico.armed{background:radial-gradient(circle at 50% 38%,rgba(147,226,188,.28),rgba(147,226,188,.06) 70%,transparent) !important;color:#93e2bc}
.icons .ico.night{background:radial-gradient(circle at 50% 38%,rgba(183,155,255,.30),rgba(183,155,255,.07) 70%,transparent) !important;color:#b79bff}
.icons .ico.off{background:radial-gradient(circle at 50% 38%,rgba(150,160,175,.14),transparent 70%) !important}
.icons .ico.ok{background:radial-gradient(circle at 50% 38%,rgba(159,216,240,.14),transparent 70%) !important}
.icons .ico.warn{background:radial-gradient(circle at 50% 38%,rgba(255,200,110,.2),transparent 70%) !important}
.icons .ico.alarm{background:radial-gradient(circle at 50% 38%,rgba(255,80,80,.28),transparent 70%) !important}

/* интернет: цвет и значок по состоянию линии */
.icons .ico.net.ok{color:#8fd6ff}
.icons .ico.net.busy{color:#ffd166;background:radial-gradient(circle at 50% 38%,rgba(255,209,102,.22),transparent 70%) !important}
.icons .ico.net.bad{color:#ff9f5a;background:radial-gradient(circle at 50% 38%,rgba(255,159,90,.26),transparent 70%) !important}
.icons .ico.net.down{color:#ff6b6b;background:radial-gradient(circle at 50% 38%,rgba(255,80,80,.3),transparent 70%) !important}
/* погода: свой цвет и подкрас фона у каждого состояния */
.icons .ico.wx{color:#9fd8f0}
.icons .ico.wx[data-wx="Ясно"]{color:#ffd166;background:radial-gradient(circle at 50% 38%,rgba(255,209,102,.24),transparent 70%) !important}
.icons .ico.wx[data-wx="Ясная ночь"]{color:#b4b9ff;background:radial-gradient(circle at 50% 38%,rgba(150,160,255,.24),transparent 70%) !important}
.icons .ico.wx[data-wx="Переменная облачность"]{color:#ffe29a;background:radial-gradient(circle at 50% 38%,rgba(255,226,154,.16),transparent 70%) !important}
.icons .ico.wx[data-wx="Облачно"]{color:#c3ccd6;background:radial-gradient(circle at 50% 38%,rgba(195,204,214,.16),transparent 70%) !important}
.icons .ico.wx[data-wx="Небольшой дождь"]{color:#6fb8ff;background:radial-gradient(circle at 50% 38%,rgba(90,160,255,.24),transparent 70%) !important}
.icons .ico.wx[data-wx="Снег"]{color:#e6f4ff;background:radial-gradient(circle at 50% 38%,rgba(230,244,255,.2),transparent 70%) !important}
.icons .ico.wx[data-wx="Гроза"]{color:#c58bff;background:radial-gradient(circle at 50% 38%,rgba(197,139,255,.26),transparent 70%) !important}
.icons .ico.wx[data-wx="Туман"]{color:#aab4bd;background:radial-gradient(circle at 50% 38%,rgba(170,180,189,.18),transparent 70%) !important}

/* живой фон: три мягких пятна плывут; палитра = погода/время/тревога (пока без библиотек, потом Paper Shaders MeshGradient) */
.frame{--m1:#2b4a7a;--m2:#4a3a6e;--m3:#1d5560;isolation:isolate;overflow:hidden}
/* 27.10, владелец: «всё лагает, фильмы и плейлисты листаются очень лагово». Причина была здесь:
   у этого слоя во весь экран стоял filter:blur и при этом он ещё и двигался -- браузер пересчитывал
   размытие всего экрана каждый кадр и жёг целое ядро на пустом пульте. Пятна -- радиальные градиенты,
   они мягкие сами по себе, размытие им не нужно: сняли filter, двигается только transform (это делает
   композитор, без перерисовки), слой вынесен отдельным через will-change. Вид тот же. */
.frame::before{content:"";position:absolute;inset:-25%;z-index:-1;pointer-events:none;opacity:.55;
  background:radial-gradient(38% 34% at 25% 28%,var(--m1),transparent 72%),radial-gradient(36% 32% at 75% 22%,var(--m2),transparent 72%),radial-gradient(42% 36% at 55% 80%,var(--m3),transparent 72%);
  will-change:transform;animation:aur 28s ease-in-out infinite alternate;transition:opacity 1.2s}
@keyframes aur{0%{transform:translate3d(-4%,-3%,0) rotate(0deg) scale(1)}50%{transform:translate3d(5%,3%,0) rotate(12deg) scale(1.12)}100%{transform:translate3d(-2%,6%,0) rotate(-8deg) scale(1.05)}}
.frame[data-mood="sun"]{--m1:#8a6a2a;--m2:#4d7fa8;--m3:#7a4a3a}
.frame[data-mood="night"]{--m1:#1f2a6e;--m2:#3b2a73;--m3:#12304f}
.frame[data-mood="rain"]{--m1:#1f4a7a;--m2:#2a3f5c;--m3:#245a66}
.frame[data-mood="storm"]{--m1:#4a2a7a;--m2:#2a2f5c;--m3:#5a2a5a}
.frame[data-mood="snow"]{--m1:#5a7a96;--m2:#7a8aa6;--m3:#3f5a74}
.frame[data-mood="alarm"]{--m1:#8a1f1f;--m2:#5a1020;--m3:#7a3a14}
.frame[data-mood="alarm"]::before{opacity:.7;animation-duration:9s}
@media (prefers-reduced-motion:reduce){.frame::before{animation:none}}
html[data-theme="light"] .frame::before,.light .frame::before{opacity:.28}

/* всё раскрывающееся — отдельным окошком поверх, как «Пульт»: вёрстка под ним не двигается */
.frame .menu:not(.hide),.frame .drawer:not(.hide),.frame [data-el="gnote"]:not(.hide),.frame .stline:not(.hide){
  position:absolute !important;left:12px;right:12px;top:auto !important;bottom:88px;z-index:30;margin:0 !important;max-height:55%;overflow:auto;
  background:#0b1022;border:1px solid rgba(159,216,240,.4);border-radius:10px;padding:10px;
  box-shadow:0 0 0 100vmax rgba(2,4,10,.55),0 18px 40px rgba(0,0,0,.6)}
@media not all{.frame .menu:not(.hide),.frame .drawer:not(.hide),.frame [data-el="gnote"]:not(.hide),.frame .stline:not(.hide){background:#f3f6fb}}

/* компактное меню: ниже и меньше; чат открывается НАД меню и над кнопкой Леси, а не поверх них */
.pnav{height:62px !important}
.pnav button[data-pane]{height:48px !important;margin-bottom:6px}
.pnav .lesya{width:56px !important;height:56px !important;margin:0 auto 6px !important}
.pnav .lesya svg.pi{width:26px;height:26px}
.pnav .lesya em{font-size:10px}
.frame .chat{top:56px !important;bottom:72px !important;z-index:20}
.frame .pnav{position:relative;z-index:21}

.frame .chat{background:#0b1022 !important}
@media not all{.frame .chat{background:#f3f6fb !important}}
.opts{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 0}
.opts button{font:600 13px var(--font);color:var(--text);padding:8px 12px;border-radius:999px;border:1px solid rgba(159,216,240,.45);background:rgba(159,216,240,.1);cursor:pointer}

.vw{display:flex;flex-direction:column;gap:8px}
.vw.hide{display:none}
.fm.plus,.fm.dlt{background:linear-gradient(160deg,rgba(159,216,240,.18),rgba(159,216,240,.05)) !important;border-style:dashed;align-items:center;justify-content:center;flex-direction:column;gap:4px}
.fm .pp{font:300 34px/1 var(--disp);color:var(--ice)}
.fm.dlt .pp{font:700 18px var(--disp)}
.fm u{position:absolute;left:0;bottom:0;height:4px;background:var(--ice);border-radius:0 2px 0 0;box-shadow:0 0 8px var(--ice)}
.fm.nowp{box-shadow:inset 0 0 0 1px rgba(147,226,188,.55)}
.dlr{position:relative;overflow:hidden}
.dlr u{position:absolute;left:0;bottom:0;height:3px;background:var(--ice)}

.magicbtn{align-self:stretch;justify-content:center;margin-top:4px}
.fm .dl{position:absolute;right:6px;bottom:6px;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:rgba(0,0,0,.45);font-size:13px}
.stline,.frame .stline:not(.hide){display:none !important}

/* термостат: круговой циферблат вместо полосы */
.thermo{gap:6px;padding:12px}
.th-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.th-st{font-size:12px;color:var(--muted)}
.dial{position:relative;width:100%;max-width:300px;margin:0 auto;aspect-ratio:240/215}
.dial svg{position:absolute;inset:0;width:100%;height:100%}
.dc{position:absolute;left:0;right:0;top:31%;display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}
.dc>b{font:700 clamp(46px,17cqi,66px)/1 var(--disp);letter-spacing:-.03em;color:var(--text)}
.dc>b sup{font-size:.4em;vertical-align:top;color:var(--ice)}
.dc .sub b{color:var(--sand);font-weight:700}
.rnd{position:absolute;bottom:0;width:52px;height:52px;border-radius:50%;border:1px solid var(--line);background:var(--ctl);color:var(--text);font:300 30px/1 var(--font);cursor:pointer;display:grid;place-items:center;
  box-shadow:0 6px 16px -8px rgba(0,0,0,.7)}
.rnd.m{left:18%}.rnd.p{right:18%}
.rnd:active{background:var(--ctl2)}
.thm button{min-height:38px;font-size:13px}

/* меню одним цельным доком: три сегмента без зазоров, Леся — вставка в центре */
.frame .pnav{background:linear-gradient(180deg,rgba(26,34,64,.92),rgba(10,14,30,.96)) !important;border:1px solid var(--line) !important;border-radius:16px !important;
  height:62px !important;padding:4px !important;gap:0 !important;grid-template-columns:1fr 64px 1fr !important;align-items:center;
  box-shadow:0 10px 24px -12px rgba(0,0,0,.8),inset 0 1px 0 rgba(255,255,255,.05)}
.frame .pnav button[data-pane]{height:50px !important;margin:0 !important;border:0 !important;border-radius:12px !important;background:transparent !important;box-shadow:none !important}
.frame .pnav button[data-pane][aria-current="true"]{background:linear-gradient(180deg,rgba(159,216,240,.2),rgba(159,216,240,.06)) !important;box-shadow:inset 0 0 0 1px rgba(159,216,240,.35) !important}
.frame .pnav button[data-pane][aria-current="true"]::before{display:none}
.frame .pnav .lesya{width:54px !important;height:54px !important;margin:0 auto !important;border-radius:50% !important}
.frame .pnav .lesya::before{border-radius:50% !important;inset:-2px !important}
.frame .pnav .lesya::after{border-radius:50% !important}
.frame .chat{bottom:76px !important}

/* термостат 2: цифра со ступенями и шкалой-линейкой, режимы плитками */
.thermo2{gap:10px;padding:12px}
.th-row{display:grid;grid-template-columns:56px 1fr 56px;gap:8px;align-items:center}
.sq{height:56px;border-radius:8px;border:1px solid var(--line);background:var(--ctl);color:var(--text);font:300 32px/1 var(--font);cursor:pointer}
.sq:active{background:var(--ctl2)}
.th-big{display:flex;flex-direction:column;align-items:center;gap:2px}
.th-big b{font:700 clamp(54px,20cqi,76px)/1 var(--disp);letter-spacing:-.04em}
.th-big sup{font-size:.38em;vertical-align:top;color:var(--ice)}
.ruler{display:grid;grid-template-columns:repeat(9,1fr);gap:0;align-items:end;height:64px;padding:0 2px;border-radius:8px;background:rgba(0,0,0,.18);border:1px solid var(--line)}
.tk{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;cursor:pointer;padding-bottom:3px;font-style:normal}
.tk::before{content:"";width:3px;height:22px;border-radius:2px;background:rgba(170,200,255,.2);margin-bottom:3px}
.tk.on::before{background:var(--c);height:30px;box-shadow:0 0 6px var(--c)}
.tk.tg::before{height:42px;width:5px;background:#fff;box-shadow:0 0 10px var(--c),0 0 2px #fff}
.tk.cu::after{content:"";position:absolute;top:3px;border:5px solid transparent;border-top-color:var(--sand)}
.tk em{font:600 10px var(--font);color:var(--dim);font-style:normal;min-height:12px}
.tk.tg em{color:var(--text)}
.th-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.th-stats>div{background:var(--ctl);border:1px solid var(--line);border-radius:8px;padding:7px 9px;display:flex;flex-direction:column;gap:2px}
.th-stats b{font:700 18px var(--disp)}
.th-modes{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.tm{display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 2px 8px;border-radius:8px;border:1px solid var(--line);background:var(--ctl);color:var(--muted);font:600 12px var(--font);cursor:pointer}
.tm svg.pi{width:26px;height:26px;fill:currentColor}
.tm.heat{--a:#ffb877}.tm.cool{--a:#6fc3ff}.tm.auto{--a:#93e2bc}.tm.off{--a:#a3aec6}
.tm[aria-pressed="true"]{color:var(--a);border-color:color-mix(in srgb,var(--a) 55%,transparent);background:radial-gradient(circle at 50% 30%,color-mix(in srgb,var(--a) 26%,transparent),transparent 75%)}
.tm[aria-pressed="true"] svg.pi{filter:drop-shadow(0 0 6px var(--a))}

/* ===== Термостат 3 (утверждён владельцем): плоский, десятые, шкала 19–27 шагом 0,5 ===== */
.t3{--t3b:#121316;--t3c:#1b1d21;--t3c2:#23262b;--t3l:#2d3138;--t3m:#8d939d;--t3a:#d9a066;--t3k:#7fb2d6;
  background:var(--t3c) !important;border:1px solid var(--t3l) !important;border-radius:12px !important;padding:14px !important;gap:0 !important}
.t3-top{display:flex;justify-content:space-between;gap:10px}
.t3-lbl{font:500 12px/1.2 var(--font);color:var(--t3m);letter-spacing:0;text-transform:none}
.t3-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-top:12px}
.t3-cell{background:var(--t3b);border:1px solid var(--t3l);border-radius:10px;padding:12px 12px 10px}
.t3-cell>.t3-lbl{color:#fff}
.t3-num{font:600 46px/1 var(--font);letter-spacing:-.04em;margin-top:4px;font-variant-numeric:tabular-nums}
.t3-num small{font-size:.58em;font-weight:500;letter-spacing:0;color:var(--t3m);margin-left:1px}
.t3-num sup{font-size:18px;color:#fff;font-weight:500;vertical-align:top;margin-left:2px}
.t3-tgt .t3-num{color:var(--t3a)}
.t3-hum{margin-top:10px;display:flex;align-items:center;gap:6px}
.t3-hum svg{width:20px;height:20px;fill:var(--t3k)}.t3-hum b{font:600 18px var(--font)}
.t3-pm{display:flex;gap:8px;margin-top:10px}
.t3-btn{flex:1;height:42px;border-radius:9px;border:1px solid var(--t3l);background:var(--t3c2);color:var(--text);font:400 24px/1 var(--font);cursor:pointer}
.t3-btn:active{background:#2d3138}
.t3-scl{margin-top:10px;background:var(--t3b);border:1px solid var(--t3l);border-radius:10px;padding:12px 14px 10px}
.t3-tr{position:relative;height:34px;border-radius:7px;background:var(--t3c2)}
.t3-fl{position:absolute;left:0;top:0;bottom:0;border-radius:7px 0 0 7px;background:#3d362f}
.t3-gap{position:absolute;top:0;bottom:0;pointer-events:none}
.t3-mk{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px}
.t3-mk.t3-n{background:var(--t3k)}.t3-mk.t3-t{background:var(--t3a)}
.t3-mk em{position:absolute;top:50%;transform:translateY(-50%);padding:3px 7px;border-radius:6px;font:700 13px var(--font);font-style:normal;white-space:nowrap}
.t3-mk.t3-n em{right:5px;background:var(--t3k);color:#0f1a22}
.t3-mk.t3-t em{left:5px;background:var(--t3a);color:#241a0f}
.t3-sl{display:flex;justify-content:space-between;margin-top:8px}
.t3-sl span{font:500 11px var(--font);color:var(--t3m)}
.t3-wx{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;margin-top:10px;padding:16px;border-radius:12px;border:1px solid #31404d;overflow:hidden;background:linear-gradient(135deg,#27323c,#1d252d)}
.t3-wx::before{content:"";position:absolute;inset:0;opacity:.35;pointer-events:none;background:repeating-linear-gradient(105deg,transparent 0 11px,rgba(150,185,215,.22) 11px 12px)}
.t3-wx[data-w="sun"]{background:linear-gradient(135deg,#4a3a22,#2a2218);border-color:#5a4828}.t3-wx[data-w="sun"]::before{opacity:0}
.t3-wx[data-w="night"]{background:linear-gradient(135deg,#1f2438,#161a28);border-color:#2c3350}.t3-wx[data-w="night"]::before{opacity:0}
.t3-wx[data-w="cloud"]{background:linear-gradient(135deg,#2c3036,#22252a);border-color:#3a3f46}.t3-wx[data-w="cloud"]::before{opacity:0}
.t3-wx[data-w="snow"]{background:linear-gradient(135deg,#2e3640,#242a32);border-color:#46505c}.t3-wx[data-w="snow"]::before{opacity:0}
.t3-wx[data-w="storm"]{background:linear-gradient(135deg,#2e2a40,#201d2e);border-color:#43395e}
.t3-wi{width:54px;height:54px;fill:#a8cbe6;position:relative}
.t3-wt{position:relative;display:flex;flex-direction:column;gap:2px}.t3-wt b{font:600 17px/1.15 var(--font)}
.t3-wn{position:relative;font:600 44px/1 var(--font);letter-spacing:-.03em}
.t3-wn small{font-size:.58em;font-weight:500;color:var(--t3m)}.t3-wn sup{font-size:18px;color:var(--t3m);vertical-align:top;margin-left:2px}
.t3-f2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.t3-f2>div{background:var(--t3b);border:1px solid var(--t3l);border-radius:10px;padding:10px}
.t3-f2 b{display:block;font:600 24px var(--font);margin-top:2px}.t3-f2 small{font-size:.58em;font-weight:500;color:var(--t3m)}
.t3-modes{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--t3b);border:1px solid var(--t3l);border-radius:10px;padding:3px;gap:3px;margin-top:12px}
.t3-modes button{border:0;border-radius:8px;background:transparent;color:var(--t3m);font:500 14px var(--font);padding:11px 4px;cursor:pointer}
.t3-modes button[aria-pressed="true"]{background:var(--t3c2);color:#fff;box-shadow:inset 0 0 0 1px var(--t3l)}
.t3-flow{margin-top:8px}.t3-flow button{padding:9px 4px;font-size:13px}

/* термостат — в языке системы: стекло, наши линии, песок/лёд, угловатость 6 px, шрифты Outfit/Unbounded */
.t3{--t3b:var(--ctl);--t3c:var(--glass);--t3l:var(--line);--t3m:var(--muted);--t3a:var(--sand);--t3k:var(--ice);
  background:var(--glass) !important;border:1px solid var(--line) !important;border-radius:6px !important;padding:10px 12px !important}
.t3-cell,.t3-scl,.t3-f2>div{border-radius:6px}
.t3-cell{background:var(--ctl)}.t3-scl{background:var(--ctl)}.t3-f2>div{background:var(--ctl)}
.t3-cell>.t3-lbl{color:var(--text)}
.t3-num{font-family:var(--disp);font-size:38px;letter-spacing:-.03em}
.t3-num sup{color:var(--text)}
.t3-btn{border-radius:6px;background:var(--ctl2);color:var(--text)}
.t3-tr{background:var(--ctl2);border-radius:5px}.t3-fl{background:rgba(240,203,164,.22)}
.t3-mk.t3-n em{background:var(--ice);color:#04101a}.t3-mk.t3-t em{background:var(--sand);color:#1b1208}
.t3-mk.t3-n{background:var(--ice)}.t3-mk.t3-t{background:var(--sand)}
.t3-wx{border-radius:6px;border-color:var(--line)}
.t3-wn{font-family:var(--disp);font-size:36px}
.t3-f2 b{font-family:var(--disp);font-size:20px}
.t3-ac{margin-top:10px;justify-content:space-between}
.t3 .drawer{display:grid;grid-template-columns:1fr 1fr;gap:6px}

/* ===== Эволюция боевого «Металла»: те же токены, углы 2 px, матовые плитки, без свечения и пятен ===== */
:root,:root[data-theme="dark"]{--bg:#090b0f;--text:#E8ECF2;--muted:#9099A8;--dim:#5E6775;--ice:#8FCBE0;--sand:#E2BE98;--ok:#88CFAA;--warn:#E4B07A;--danger:#F08585;
  --line:#2B323D;--ctl:#171C24;--ctl2:#1f2630;--glass:linear-gradient(165deg,#1a2029 0%,#10141b 46%,#161b23 100%)}
body{background:#090b0f !important}
.frame{background:#0c0f14 !important;border:1px solid #2B323D !important;border-radius:2px !important;box-shadow:none !important}
.frame::before{display:none !important}
.mod,.mc,.room,.t3,.t3-cell,.t3-scl,.t3-f2>div,.alarm,.res,.line,.stline,.amodal,.msheet,.chat,.menu,.drawer,.pl,.fm,.rb,.chk,.btn,.seg,.sq,.ico,.gear,.opts button,.rnd,.t3-btn,.t3-modes{
  border-radius:2px !important}
.mod,.mc,.t3,.menu,.drawer{background:var(--glass) !important;border:1px solid #2B323D !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 1px 0 rgba(0,0,0,.6) !important}
.t3-cell,.t3-scl,.t3-f2>div,.mc,.res,.line{background:var(--glass) !important;border:1px solid #3e4857 !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.07) !important}
.btn,.seg,.chk,.ddb,.t3-btn,.sq,.rb,.gear{background:#171C24 !important;border:1px solid #3e4857 !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.07) !important}
.btn.on,.btn.go,.seg button[aria-pressed="true"],.t3-modes button[aria-pressed="true"]{background:#222a35 !important;border-color:#5f7186 !important;color:var(--text)}
.seg{padding:0 !important;gap:0 !important}.seg button{border-radius:0 !important}
.msheet,.chat{background:#10141b !important;border:1px solid #3e4857 !important;box-shadow:0 0 0 100vmax rgba(3,4,6,.7) !important}
.chat{box-shadow:none !important}
.frame .menu:not(.hide),.frame .drawer:not(.hide),.frame [data-el="gnote"]:not(.hide){background:#10141b !important;border:1px solid #3e4857 !important;box-shadow:0 0 0 100vmax rgba(3,4,6,.65) !important}
/* значки статусов: тонкая линия, без свечения и без «лазера» */
.icons .ico,.icons .ico svg,.icons .ico svg.pi,.icons .ico.off svg.pi,.icons .ico.alarm svg.pi{filter:none !important}
.icons .ico{background:transparent !important;border:0 !important;box-shadow:none !important}
.icons .ico.armed,.icons .ico.night,.icons .ico.off,.icons .ico.ok,.icons .ico.warn,.icons .ico.alarm,.icons .ico.net.busy,.icons .ico.net.bad,.icons .ico.net.down,
.icons .ico.wx[data-wx]{background:transparent !important}
.icons .ico svg.pi{fill:currentColor !important}
.icons .ico.ok,.icons .ico.net.ok{color:var(--ice)}.icons .ico.wx{color:var(--ice)}
.icons .ico.home{color:var(--sand)}
.icons .ico.armed{color:var(--ok)}.icons .ico.night{color:#a9a3d6}.icons .ico.off{color:var(--muted)}
.icons .ico::after{-webkit-text-stroke:0 !important;color:var(--muted) !important}
/* нижнее меню: прямоугольный док как на проде, Леся — тонкое кольцо без свечения */
.frame .pnav{background:#0f1319 !important;border:1px solid #2B323D !important;border-radius:2px !important;box-shadow:none !important}
.frame .pnav button[data-pane]{border-radius:2px !important}
.frame .pnav button[data-pane][aria-current="true"]{background:#1a2029 !important;box-shadow:inset 0 -2px 0 var(--ice) !important;color:var(--ice)}
.frame .pnav .lesya,.frame .pnav .lesya::before,.frame .pnav .lesya::after{filter:none !important;box-shadow:none !important}
.frame .pnav .lesya::before{background:conic-gradient(from var(--ang),#8FCBE0,#a9a3d6,#E2BE98,#8FCBE0) !important;inset:-1.5px !important}
.frame .pnav .lesya::after{background:#10141b !important}
.t3{--t3b:#171C24;--t3l:#3e4857;--t3a:#E2BE98;--t3k:#8FCBE0}
.t3-wx{background:linear-gradient(165deg,#1d2831,#141b22) !important;border:1px solid #3e4857 !important}
.t3-wx[data-w="sun"]{background:linear-gradient(165deg,#2e2820,#1a1712) !important}
.t3-wx[data-w="night"]{background:linear-gradient(165deg,#1a1f30,#12151f) !important}
.t3-mk.t3-n em{background:var(--ice)}.t3-mk.t3-t em{background:var(--sand)}
.t3-fl{background:rgba(226,190,152,.2) !important}
.ico i,.chip,.opts button{box-shadow:none !important}
.verbadge,#verbadge{display:none}

.t3-wx,.t3-mk em,.t3-tr,.t3-fl,.t3-gap,.cover,.pl,.rng,.rng i,.prog,.prog i,.bar,.bar i,.sw,.hue,.c,.t3-modes button,.t3-cell,.lbl{border-radius:2px !important}
.t3-tr,.t3-fl{border-radius:2px !important}
.sw,.rng i{box-shadow:none !important}

/* без «плашки в плашке»: секция — просто заголовок и плитки; рамка только у самих плиток */
.frame .mod.p-home.media,.frame .mod.p-comfort,.frame .mod.p-more,.frame .t3{background:transparent !important;border:0 !important;box-shadow:none !important;padding:0 !important;gap:8px}
.frame .mod.p-comfort>.lbl,.frame .mod.p-more>.lbl{padding:6px 2px 0;color:var(--muted)}
.frame .t3-top{padding:0 2px}
.frame .sugg{background:var(--glass) !important;border:1px solid #3e4857 !important;padding:12px !important}
.frame .sugg .btn,.frame .sugg .ddb{background:rgba(255,255,255,.04) !important;border:0 !important;box-shadow:none !important}
.frame .sugg .btn.go{background:#222a35 !important}
.frame .t3-wx{margin-top:0}
.frame .t3-two,.frame .t3-scl,.frame .t3-f2{margin-top:0}

.frame .app{gap:14px !important}
.frame .t3{gap:8px !important}
.frame .t3-top{padding:2px 2px 0}
.frame .mod.p-comfort{gap:8px !important}
.frame .mod.p-comfort>.lbl{padding:2px 2px 0;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}

/* лёгкая скруглённость углов — 4 px, совсем мелкая */
.mod,.mc,.room,.t3,.t3-cell,.t3-scl,.t3-f2>div,.alarm,.res,.line,.stline,.amodal,.msheet,.chat,.menu,.drawer,.pl,.fm,.rb,.chk,.btn,.seg,.sq,.gear,.opts button,.t3-btn,.t3-modes,
.t3-wx,.t3-mk em,.t3-tr,.t3-fl,.t3-gap,.cover,.rng,.prog,.bar,.sw,.c,.sugg,.frame,.frame .pnav,.frame .pnav button[data-pane],.t3-modes button{border-radius:4px !important}
.seg button{border-radius:0 !important}
.t3-fl{border-radius:4px 0 0 4px !important}
.t3-gap{border-radius:0 !important}
.rng i,.prog i,.bar i{border-radius:2px !important}

/* дом: цвет по питанию — зелёный свет есть, жёлтый резерв (Марстек/ИБП), красный света нет */
.icons .ico.home[data-pw="ok"]{color:var(--ok) !important}
.icons .ico.home[data-pw="reserve"]{color:#E8C547 !important}
.icons .ico.home[data-pw="off"]{color:var(--danger) !important}
.icons .ico.home[data-pw="off"]{background:radial-gradient(circle at 50% 40%,rgba(240,133,133,.18),transparent 70%) !important}
.icons .ico.home[data-pw="reserve"]{background:radial-gradient(circle at 50% 40%,rgba(232,197,71,.16),transparent 70%) !important}
.icons .ico.home svg.pi svg,.icons .ico.home svg.pi svg *{fill:currentColor !important;opacity:1 !important}

/* ===== меню: вернул цельный док с Лесей-кольцом (было лучше), в тоне Металла ===== */
.frame .pnav{background:linear-gradient(180deg,#1a2029,#10141b) !important;border:1px solid #3e4857 !important;border-radius:16px !important;
  height:62px !important;padding:4px !important;gap:0 !important;grid-template-columns:1fr 64px 1fr !important;align-items:center;
  box-shadow:0 10px 24px -12px rgba(0,0,0,.8),inset 0 1px 0 rgba(255,255,255,.06) !important}
.frame .pnav button[data-pane]{height:50px !important;margin:0 !important;border:0 !important;border-radius:12px !important;background:transparent !important;box-shadow:none !important;color:var(--muted)}
.frame .pnav button[data-pane][aria-current="true"]{background:linear-gradient(180deg,rgba(143,203,224,.2),rgba(143,203,224,.06)) !important;
  box-shadow:inset 0 0 0 1px rgba(143,203,224,.35) !important;color:var(--ice)}
.frame .pnav button[data-pane][aria-current="true"]::before{display:none}
.frame .pnav .lesya{width:54px !important;height:54px !important;margin:0 auto !important;border-radius:50% !important;box-shadow:none !important}
.frame .pnav .lesya::before{border-radius:50% !important;inset:-2px !important;
  background:conic-gradient(from var(--ang),#3d9bff,#8a5bff,#ff5fb0,#ffb25a,#3d9bff) !important;filter:none !important}
.frame .pnav .lesya::after{border-radius:50% !important;background:radial-gradient(circle at 50% 35%,#1a2650,#0a0f22 75%) !important}

/* ===== фон: тихий, но видимый — тёплый/холодный свет по погоде и времени, медленно дышит ===== */
.frame{--m1:#2d4a63;--m2:#4a3f5e;--m3:#2a5a5c;position:relative;isolation:isolate;overflow:hidden}
/* без filter:blur -- см. причину у .frame::before выше: размытие движущегося слоя во весь экран
   съедало ядро процессора и ломало прокрутку списков */
.frame::before{display:block !important;content:"";position:absolute;inset:-30%;z-index:-1;pointer-events:none;opacity:.75;
  background:radial-gradient(36% 30% at 18% 14%,var(--m1),transparent 72%),radial-gradient(34% 30% at 86% 22%,var(--m2),transparent 72%),radial-gradient(40% 34% at 52% 92%,var(--m3),transparent 72%);
  will-change:transform;animation:aurM 36s ease-in-out infinite alternate}
.frame::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.5;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.012) 0 1px,transparent 1px 3px)}
@keyframes aurM{0%{transform:translate3d(-3%,-2%,0) scale(1)}100%{transform:translate3d(4%,3%,0) scale(1.1)}}
.frame[data-mood="sun"]{--m1:#6a5428;--m2:#3d6a8a;--m3:#6a4034}
.frame[data-mood="night"]{--m1:#1c2a66;--m2:#33256e;--m3:#10304e}
.frame[data-mood="rain"]{--m1:#1f4a74;--m2:#2a3f5c;--m3:#245a66}
.frame[data-mood="storm"]{--m1:#45287a;--m2:#2a2f5c;--m3:#5a2a5a}
.frame[data-mood="snow"]{--m1:#5a7a96;--m2:#6a7a96;--m3:#3f5a74}
.frame[data-mood="alarm"]{--m1:#8a1f1f;--m2:#5a1020;--m3:#7a3a14}
.frame[data-mood="alarm"]::before{animation-duration:10s;opacity:.9}

/* ===== компьютер: ровная сетка, статусы компактно слева, меню по центру ===== */
@container (min-width:720px){
  .frame .icons{max-width:480px;justify-self:start;grid-template-columns:repeat(4,minmax(0,1fr)) !important}
  .frame .pnav{max-width:440px;width:100%;margin:6px auto 0}
  .frame .t3-top{display:flex;gap:8px;white-space:nowrap;overflow:hidden}
  .frame .t3-top .t3-lbl:last-child{text-overflow:ellipsis;overflow:hidden}
}
#verbadge{font-size:11px !important;padding:3px 7px !important;max-width:60vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* домик без солнышка внутри — просто контур дома, цвет по питанию, градусы цифрой ниже */
.icons .ico.home svg.pi svg{display:none !important}
/* компьютер: три равные колонки с общими заголовками, статусы по центру */
@container (min-width:720px){
  .frame .cols{grid-template-columns:repeat(3,minmax(0,1fr)) !important;gap:18px !important;align-items:start}
  .frame .icons{justify-self:center !important;max-width:520px !important;margin:0 auto 6px}
}

/* телефон: рамка фиксированной высоты, содержимое прокручивается внутри, меню прибито к низу и не уезжает */
.frame.phone{height:780px;display:flex;flex-direction:column}
.frame.phone .app{flex:1;min-height:0 !important;height:auto !important;overflow-y:auto;overflow-x:hidden;padding-bottom:84px;scrollbar-width:none;align-content:start}
.frame.phone .app::-webkit-scrollbar{display:none}
.frame.phone .pnav{position:absolute !important;left:8px;right:8px;bottom:8px;margin:0 !important;z-index:30}
.frame.phone .chat{bottom:80px !important}

/* ===== меню 3: строгая планка как на проде + Леся — медальон, прорезающий верхний край ===== */
.frame .pnav,.frame.phone .pnav{background:#0f1319 !important;border:1px solid #3e4857 !important;border-radius:4px !important;
  height:56px !important;padding:0 !important;gap:0 !important;grid-template-columns:1fr 92px 1fr !important;align-items:stretch !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06) !important;overflow:visible !important}
.frame .pnav button[data-pane]{height:100% !important;margin:0 !important;border:0 !important;border-radius:0 !important;background:transparent !important;
  box-shadow:none !important;color:var(--muted);flex-direction:column;gap:3px;justify-content:center;position:relative}
.frame .pnav button[data-pane]:first-child{border-right:1px solid #2B323D !important}
.frame .pnav button[data-pane]:last-child{border-left:1px solid #2B323D !important}
.frame .pnav button[data-pane][aria-current="true"]{background:linear-gradient(180deg,rgba(143,203,224,.1),transparent) !important;color:var(--ice);box-shadow:none !important}
.frame .pnav button[data-pane][aria-current="true"]::before{display:block !important;content:"";position:absolute;top:-1px;left:18%;right:18%;height:2px;background:var(--ice)}
.frame .pnav button span svg.pi{width:22px;height:22px}
.frame .pnav .lesya{position:relative;align-self:end;justify-self:center;width:66px !important;height:66px !important;margin:0 0 6px !important;border-radius:50% !important;
  background:#10141b !important;border:5px solid #0c0f14 !important;box-shadow:none !important;z-index:2}
.frame .pnav .lesya::before{content:"";position:absolute;inset:-4px;border-radius:50%;z-index:-1;
  background:conic-gradient(from var(--ang),#8FCBE0,#a9a3d6,#E2BE98,#8FCBE0) !important;filter:none !important;animation:spin 8s linear infinite}
.frame .pnav .lesya::after{content:"";position:absolute;inset:0;border-radius:50%;z-index:-1;background:#10141b !important}
.frame .pnav .lesya svg.pi{width:24px;height:24px}
.frame .pnav .lesya em{font-size:10px}
.frame.phone .pnav{left:8px !important;right:8px !important;bottom:8px !important}
.frame.phone .app{padding-bottom:90px !important}
.frame.phone .chat{bottom:82px !important}

/* ===== отступы: единая сетка 16 px от границ, одинаково у всех экранов ===== */
.frame{padding:0 !important}
.frame .app{padding:16px 16px 16px !important;gap:14px !important}
.frame.phone .app{padding:16px 16px 100px !important}
.frame.phone .pnav{left:16px !important;right:16px !important;bottom:14px !important}
.frame .chat{left:16px !important;right:16px !important;top:64px !important}
.frame.phone .chat{bottom:92px !important}
.frame .msheet{left:16px !important;right:16px !important;top:64px !important;bottom:92px !important}
.frame .head{padding:0 0 2px}
.frame .t3-top{padding:0}
.frame .t3-two,.frame .t3-scl,.frame .t3-wx,.frame .t3-f2{margin:0}
.frame .mod.p-comfort>.lbl,.frame .t3-top{margin:0}
.frame .mod,.frame .t3-cell,.frame .t3-scl,.frame .t3-f2>div,.frame .mc{padding:14px !important}
.frame .t3-wx{padding:16px !important}
.frame .btn{padding-left:14px;padding-right:14px}
.frame .chat{padding:14px !important}
@container (min-width:720px){
  .frame .app{padding:20px 24px 24px !important}
  .frame .pnav{margin:8px auto 0 !important}
}

.frame.phone .pnav::before{content:"";position:absolute;left:-16px;right:-16px;top:-22px;bottom:-14px;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(12,15,20,0),#0c0f14 38%)}

/* спальня и кухня — одна плашка, рядом плашка управления кондиционером */
.frame .t3-f2{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:10px;margin:0}
.frame .t3-rooms{display:grid;grid-template-columns:1fr 1fr;background:var(--glass);border:1px solid #3e4857;border-radius:4px;padding:0 !important}
.frame .t3-rooms>div{background:transparent !important;border:0 !important;border-radius:0 !important;padding:12px 14px !important}
.frame .t3-rooms>div+div{border-left:1px solid #2B323D !important}
.frame .t3-rooms b{display:block;font:600 22px var(--disp);margin-top:2px}.frame .t3-rooms small{font-size:.58em;color:var(--muted)}
.frame .t3-acp{position:relative;text-align:left;background:#171C24;border:1px solid #3e4857;border-radius:4px;padding:12px 14px;color:var(--text);cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07);display:flex;flex-direction:column;gap:2px;font-family:var(--font)}
.frame .t3-acp b{font:600 17px var(--font)}
.frame .t3-acp i{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-style:normal;color:var(--muted)}

/* ===== меню 4: два прямоугольника со скруглением, заходят к центру под медальон Леси ===== */
.frame .pnav,.frame.phone .pnav{background:transparent !important;border:0 !important;box-shadow:none !important;border-radius:0 !important;
  display:block !important;position:absolute !important;left:16px !important;right:16px !important;bottom:14px !important;height:58px !important;padding:0 !important}
.frame .pnav::before{display:none !important}
.frame .pnav button[data-pane]{position:absolute !important;top:0;bottom:0;height:58px !important;width:calc(50% + 16px) !important;margin:0 !important;border:1px solid #3e4857 !important;
  background:linear-gradient(165deg,#1a2029,#10141b) !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.07) !important;
  display:flex !important;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);border-radius:12px !important}
.frame .pnav button[data-pane]:first-child{left:0;padding-right:44px !important}
.frame .pnav button[data-pane]:last-child{right:0;left:auto;padding-left:44px !important}
.frame .pnav button[data-pane][aria-current="true"]{color:var(--ice);border-color:rgba(143,203,224,.5) !important;
  background:linear-gradient(165deg,#1f2a33,#12181e) !important;box-shadow:inset 0 -2px 0 var(--ice),inset 0 1px 0 rgba(255,255,255,.07) !important}
.frame .pnav button[data-pane][aria-current="true"]::before{display:none !important}
.frame .pnav .lesya{position:absolute !important;left:50%;bottom:-2px;transform:translateX(-50%);width:68px !important;height:68px !important;margin:0 !important;
  border-radius:50% !important;border:5px solid #0c0f14 !important;background:#10141b !important;z-index:5;box-shadow:none !important}
.frame .pnav .lesya::before{content:"";position:absolute;inset:-4px;border-radius:50%;z-index:-1;
  background:conic-gradient(from var(--ang),#8FCBE0,#a9a3d6,#E2BE98,#8FCBE0) !important;filter:none !important;animation:spin 8s linear infinite}
.frame .pnav .lesya::after{content:"";position:absolute;inset:0;border-radius:50%;z-index:-1;background:#10141b !important}
.frame.phone .app{padding-bottom:104px !important}
.frame.phone .chat,.frame .msheet{bottom:98px !important}
.frame.phone::before{}

/* меню крупнее и броше: высота 74, значки 30, подписи 14 */
.frame .pnav,.frame.phone .pnav{height:74px !important;bottom:12px !important}
.frame .pnav button[data-pane]{height:74px !important;border-radius:14px !important;gap:5px !important;font:700 14px var(--font) !important;letter-spacing:.02em}
.frame .pnav button[data-pane] span{height:32px !important}
.frame .pnav button[data-pane] span svg,.frame .pnav button span svg.pi{width:30px !important;height:30px !important}
.frame .pnav button[data-pane]:first-child{padding-right:52px !important}
.frame .pnav button[data-pane]:last-child{padding-left:52px !important}
.frame .pnav .lesya{width:86px !important;height:86px !important;bottom:-4px !important;border-width:6px !important}
.frame .pnav .lesya svg.pi{width:32px !important;height:32px !important}
.frame .pnav .lesya em{font-size:12px !important;font-weight:700}
.frame.phone .app{padding-bottom:124px !important}
.frame.phone .chat,.frame .msheet{bottom:112px !important}

/* ===== меню 5: утончённое — тонкие линии, умеренная высота, подписи малые, кольцо Леси 1.5 px ===== */
.frame .pnav,.frame.phone .pnav{height:62px !important;bottom:14px !important}
.frame .pnav button[data-pane]{height:62px !important;border-radius:10px !important;border:1px solid #2f3743 !important;
  background:#0f1319 !important;box-shadow:none !important;gap:4px !important;font:600 11.5px var(--font) !important;letter-spacing:.08em;text-transform:uppercase;color:#7d8795}
.frame .pnav button[data-pane] span{height:26px !important}
.frame .pnav button[data-pane] span svg,.frame .pnav button span svg.pi{width:24px !important;height:24px !important}
.frame .pnav button[data-pane]:first-child{padding-right:46px !important}
.frame .pnav button[data-pane]:last-child{padding-left:46px !important}
.frame .pnav button[data-pane][aria-current="true"]{color:var(--ice);border-color:#4a6573 !important;background:#10161c !important;
  box-shadow:inset 0 -1.5px 0 rgba(143,203,224,.9) !important}
.frame .pnav .lesya{width:70px !important;height:70px !important;bottom:-4px !important;border:5px solid #0c0f14 !important}
.frame .pnav .lesya::before{inset:-2px !important;animation:spin 14s linear infinite}
.frame .pnav .lesya svg.pi{width:26px !important;height:26px !important}
.frame .pnav .lesya em{font:600 10px var(--font) !important;letter-spacing:.1em;text-transform:uppercase;color:#aab6c6}
.frame.phone .app{padding-bottom:108px !important}
.frame.phone .chat,.frame .msheet{bottom:98px !important}

/* ===== меню 6: тоньше; границы планки сходятся прямо в кольцо круглой Леси, без разрывов ===== */
.frame .pnav,.frame.phone .pnav{height:52px !important;bottom:16px !important}
.frame .pnav button[data-pane]{height:52px !important;border-radius:10px !important;gap:2px !important;font-size:10.5px !important}
.frame .pnav button[data-pane] span{height:22px !important}
.frame .pnav button[data-pane] span svg,.frame .pnav button span svg.pi{width:22px !important;height:22px !important}
.frame .pnav button[data-pane]:first-child{padding-right:38px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}
.frame .pnav button[data-pane]:last-child{padding-left:38px !important;border-top-left-radius:0 !important;border-bottom-left-radius:0 !important}
.frame .pnav button[data-pane]:first-child{width:calc(50% + 2px) !important}
.frame .pnav button[data-pane]:last-child{width:calc(50% + 2px) !important}
.frame .pnav .lesya{width:66px !important;height:66px !important;bottom:-7px !important;border:0 !important;background:transparent !important}
.frame .pnav .lesya::before{inset:0 !important;border-radius:50%;animation:spin 14s linear infinite;
  background:conic-gradient(from var(--ang),#8FCBE0,#a9a3d6,#E2BE98,#8FCBE0) !important}
.frame .pnav .lesya::after{inset:2px !important;border-radius:50%;background:#0f1319 !important}
.frame .pnav .lesya svg.pi{width:24px !important;height:24px !important;position:relative;z-index:1}
.frame .pnav .lesya em{position:relative;z-index:1;font-size:9px !important}
.frame.phone .app{padding-bottom:100px !important}
.frame.phone .chat,.frame .msheet{bottom:92px !important}

/* ===== меню 7: симметрично; Леся — скруглённый квадрат по центру, линии планки входят ровно в его бока ===== */
.frame .pnav,.frame.phone .pnav{position:absolute !important;left:16px !important;right:16px !important;bottom:16px !important;height:56px !important;
  display:block !important;background:transparent !important;border:0 !important;box-shadow:none !important;padding:0 !important;border-radius:0 !important}
.frame .pnav::before,.frame.phone .pnav::before{display:none !important}
.frame .pnav button[data-pane]{position:absolute !important;top:0 !important;bottom:0 !important;height:56px !important;width:calc(50% - 33px) !important;margin:0 !important;
  padding:0 !important;display:flex !important;flex-direction:column;align-items:center;justify-content:center;gap:3px !important;
  background:#0f1319 !important;border:1px solid #2f3743 !important;box-shadow:none !important;color:#7d8795;font:600 10.5px var(--font) !important;
  letter-spacing:.08em;text-transform:uppercase}
.frame .pnav button[data-pane]:first-child{left:0 !important;right:auto !important;border-radius:10px 0 0 10px !important;border-right:0 !important}
.frame .pnav button[data-pane]:last-child{right:0 !important;left:auto !important;border-radius:0 10px 10px 0 !important;border-left:0 !important}
.frame .pnav button[data-pane] span{height:22px !important}
.frame .pnav button[data-pane] span svg,.frame .pnav button span svg.pi{width:22px !important;height:22px !important}
.frame .pnav button[data-pane][aria-current="true"]{color:var(--ice);border-color:#4a6573 !important;background:#10161c !important;box-shadow:inset 0 -2px 0 rgba(143,203,224,.9) !important}
.frame .pnav button[data-pane][aria-current="true"]::before{display:none !important}
.frame .pnav .lesya{position:absolute !important;left:50% !important;top:-6px !important;bottom:auto !important;width:66px !important;height:68px !important;margin:0 0 0 -33px !important;
  transform:none !important;border-radius:12px !important;border:0 !important;background:transparent !important;box-shadow:none !important;z-index:5;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.frame .pnav .lesya::before{content:"";position:absolute;inset:0;border-radius:12px;z-index:-1;animation:none !important;
  background:conic-gradient(from var(--ang),#8FCBE0,#a9a3d6,#E2BE98,#8FCBE0) !important}
.frame .pnav .lesya::after{content:"";position:absolute;inset:1.5px;border-radius:10.5px;z-index:-1;background:#0f1319 !important}
.frame .pnav .lesya svg.pi{width:26px !important;height:26px !important}
.frame .pnav .lesya em{font:600 9.5px var(--font) !important;letter-spacing:.1em;text-transform:uppercase;color:#aab6c6}
.frame.phone .app{padding-bottom:100px !important}
.frame.phone .chat,.frame .msheet{bottom:96px !important}

/* ===== меню 7б: окончательные правки — квадрат у Леси, ровная нижняя кромка, затемнение под планкой ===== */
html body .frame .pnav .lesya::before{border-radius:12px !important;inset:0 !important;animation:none !important;
  background:conic-gradient(from var(--ang),#8FCBE0,#a9a3d6,#E2BE98,#8FCBE0) !important}
html body .frame .pnav .lesya::after{border-radius:10.5px !important;inset:1.5px !important;background:#0f1319 !important}
html body .frame .pnav .lesya{border-radius:12px !important}
html body .frame .pnav button[data-pane][aria-current="true"]{box-shadow:none !important}
html body .frame .pnav button[data-pane][aria-current="true"]::after{content:"";position:absolute;left:14%;right:14%;bottom:0;height:2px;background:var(--ice);border-radius:2px}
html body .frame .pnav button[data-pane]:first-child[aria-current="true"]::after{right:22%}
html body .frame .pnav button[data-pane]:last-child[aria-current="true"]::after{left:22%}
html body .frame.phone .pnav::before{display:block !important;content:"";position:absolute;left:-16px;right:-16px;top:-26px;bottom:-16px;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(12,15,20,0),#0c0f14 40%)}

/* фон теперь рисует WebGL-шейдер (canvas); CSS-пятна и полосы отключены */
.frame::before,.frame::after{display:none !important}
.frame{background:#0a0d12 !important}

/* ===== ДЕСКТОП: отдельная раскладка. Шапка: часы слева, статусы справа; три колонки с заголовками; узкое меню по центру ===== */
.frame:not(.phone) .app{padding:24px 28px 120px !important;gap:20px !important}
.frame:not(.phone) .head{grid-template-columns:1fr auto;align-items:center}
.frame:not(.phone) .clock b{font-size:40px}
.frame:not(.phone) .gear{position:absolute;top:24px;right:28px;z-index:3}
.frame:not(.phone) .icons{position:absolute;top:22px;right:92px;width:auto !important;max-width:none !important;margin:0 !important;
  grid-template-columns:repeat(4,92px) !important;gap:0 !important;z-index:3}
.frame:not(.phone) .cols{display:grid !important;grid-template-columns:repeat(3,minmax(0,1fr)) !important;gap:24px !important;align-items:start;margin-top:8px}
.frame:not(.phone) .cols>div{display:flex !important;flex-direction:column;gap:14px;min-width:0}
.frame:not(.phone) .cols>div::before{content:attr(data-h);display:block;padding:0 0 10px;margin-bottom:2px;border-bottom:1px solid #2B323D;
  font:600 11px var(--font);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.frame:not(.phone) .t3-top{display:none}
.frame:not(.phone) .pnav{left:50% !important;right:auto !important;width:420px !important;margin:0 0 0 -210px !important;bottom:22px !important}
.frame:not(.phone) .mod.p-comfort>.lbl{margin-top:2px}

.frame:not(.phone) .cols{grid-template-columns:repeat(2,minmax(0,1fr)) !important;max-width:1180px;margin:8px auto 0 !important;gap:32px !important}
.frame:not(.phone) .cols>div::before{font-size:12px;letter-spacing:.2em;padding-bottom:12px}

/* десктоп: всё помещается без вкладок — меню нет; Леся — обычная нейтральная кнопка с микрофоном в углу, без акцента */
.frame:not(.phone) .pnav{left:auto !important;right:28px !important;width:auto !important;margin:0 !important;bottom:24px !important;height:auto !important;z-index:30}
.frame:not(.phone) .pnav button[data-pane]{display:none !important}
.frame:not(.phone) .pnav .lesya{position:relative !important;left:auto !important;top:auto !important;margin:0 !important;width:132px !important;height:48px !important;
  flex-direction:row !important;gap:10px !important;border-radius:4px !important;background:#171C24 !important;border:1px solid #3e4857 !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07) !important;animation:none !important}
.frame:not(.phone) .pnav .lesya::before,.frame:not(.phone) .pnav .lesya::after{display:none !important}
.frame:not(.phone) .pnav .lesya svg.pi{width:22px !important;height:22px !important;fill:var(--ice)}
.frame:not(.phone) .pnav .lesya em{font:600 13px var(--font) !important;letter-spacing:.04em;text-transform:none;color:var(--text)}
.frame:not(.phone) .app{padding-bottom:40px !important}
.frame:not(.phone) .chat{left:auto !important;right:28px !important;width:420px !important;top:110px !important;bottom:86px !important}

/* кнопки-плитки, открывающие всплывающие окна */
.launch{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:14px;border-radius:4px;border:1px solid #3e4857;
  background:var(--glass);box-shadow:inset 0 1px 0 rgba(255,255,255,.07);color:var(--text);cursor:pointer;font-family:var(--font);position:relative;flex-wrap:wrap}
.launch .lbl{flex:0 0 100%;font:600 11px var(--font);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.launch b{font:600 16px var(--font);flex:1}
.launch i{font-style:normal;color:var(--muted)}
.launch:hover{border-color:#5f7186}
.frame .mod.p-comfort,.frame .mod.p-more{gap:8px !important}
.frame:not(.phone) .msheet.pop{left:50% !important;right:auto !important;width:520px;margin-left:-260px;top:110px !important;bottom:auto !important;max-height:72%}
.msheet.pop .ahead{display:flex;justify-content:space-between;align-items:center}
.frame .msheet.pop{bottom:auto !important;top:80px !important;max-height:calc(100% - 190px);height:auto}
.frame:not(.phone) .msheet.pop{top:110px !important}

/* быстрые кнопки снова на экране; блоки охраны/компьютера/сценариев сжаты в компактную сетку */
.frame .mod.p-more{display:grid !important;grid-template-columns:1fr 1fr;gap:8px !important}
.frame .mod.p-more>.lbl,.frame .mod.p-more>.seg,.frame .mod.p-more>.btn,.frame .mod.p-more>.sub,.frame .mod.p-more>.chk{grid-column:1/-1}
.frame .mod.p-more>.line{grid-column:auto;padding:10px 12px;flex-direction:column;align-items:flex-start;gap:2px}
.frame .mod.p-more>.line .k{font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.frame .mod.p-more>.line span:last-child{font:600 15px var(--font)}
.frame .mod.p-more>.btn{min-height:42px}
.frame .mod.p-more>.line+.btn{grid-column:auto;align-self:stretch;font-size:13px;text-align:center}

/* кнопка кондиционера: значок-вентилятор в рамке, название и состояние, шеврон — открывает окно режимов */
.frame .t3-acp{display:grid !important;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 14px !important;
  background:var(--glass) !important;border:1px solid #3e4857 !important;border-radius:4px}
.frame .t3-acp:hover{border-color:#5f7186 !important}
.acp-ic{width:42px;height:42px;display:grid;place-items:center;border:1px solid #3e4857;border-radius:4px;background:#171C24;color:var(--muted)}
.acp-ic svg.pi{width:26px;height:26px;fill:currentColor}
.acp-tx{display:flex;flex-direction:column;gap:2px;min-width:0;text-align:left}
.acp-l{font:600 10.5px var(--font);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.acp-v{font:600 16px var(--font);color:var(--text)}
.acp-go{font:300 26px/1 var(--font);color:var(--muted)}
.t3-acp[data-ac="heat"] .acp-ic{color:var(--sand);border-color:rgba(226,190,152,.5)}
.t3-acp[data-ac="cool"] .acp-ic{color:var(--ice);border-color:rgba(143,203,224,.5)}
.t3-acp[data-ac="heat"] .acp-ic svg,.t3-acp[data-ac="cool"] .acp-ic svg{animation:acspin 3s linear infinite}
@keyframes acspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.t3-acp .acp-ic svg{animation:none !important}}

.frame.phone .t3-f2{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr) !important}
.frame.phone .t3-acp{display:flex !important;flex-direction:column;align-items:flex-start;gap:8px;position:relative}
.frame.phone .acp-go{position:absolute;right:12px;top:10px}
.frame.phone .acp-l{font-size:9.5px;letter-spacing:.1em}
.frame.phone .t3-rooms>div{padding:12px 10px !important}

/* ===== боевая страница «Дом»: рамка на весь экран, живые плитки ===== */
body.home3{margin:0;padding:0;background:#090b0f !important;min-height:100dvh}
body.home3 #app.frame{width:100%;max-width:none;min-height:100dvh;border:0 !important;border-radius:0 !important;padding:0 !important}
body.home3 #app.frame.phone{height:100dvh;min-height:0}
body.home3 .lsub{display:block;font:500 11px var(--font);color:var(--muted);margin-top:2px}
body.home3 .seg button[aria-pressed="true"] .lsub{color:var(--ice)}
body.home3 .mc .cover{background-position:center}
body.home3 .pl{border:1px solid #3e4857;color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.7)}
body.home3 .fm[style*="background-image"]{border-color:#3e4857}
body.home3 .fm b{text-shadow:0 1px 8px rgba(0,0,0,.8)}
body.home3 .sres{display:flex;flex-direction:column;gap:6px}
body.home3 .res .btn{flex:0 0 auto}
body.home3 .ico[aria-label="Интернет"]{cursor:default}

body.home3 .mod.p-more>.lbl{display:block !important}
body.home3 #app.frame:not(.phone) .pnav{position:fixed !important}
body.home3 #app.frame.phone .pnav{position:fixed !important;left:16px !important;right:16px !important}

body.home3 .lmodes{display:grid;grid-template-columns:1fr 1fr;gap:6px}
body.home3 .lmodes .btn{font-size:13px;padding:8px 6px;min-height:40px;text-align:center}
body.home3 .menu.pal{box-sizing:border-box;max-width:calc(100% - 24px);overflow-x:hidden}
body.home3 .pal .hue{width:100%}

/* ===== «в один экран»: плотнее и без прокрутки ===== */
body.home3 #app.frame .app{overflow:hidden !important;gap:10px !important}
body.home3 #app.frame.phone .app{padding:14px 14px 0 !important}
body.home3 .t3{gap:8px !important}
body.home3 .t3-two{gap:8px}
body.home3 .t3-cell{padding:10px 12px !important}
body.home3 .t3-num{font-size:34px !important;margin-top:2px}
body.home3 .t3-num sup{font-size:14px}
body.home3 .t3-hum{margin-top:6px}.t3-hum b{font-size:16px}
body.home3 .t3-pm{margin-top:6px}.t3-btn{height:36px !important}
body.home3 .t3-scl{padding:8px 12px 6px !important}
body.home3 .t3-tr{height:26px !important}
body.home3 .t3-mk em{font-size:12px !important;padding:2px 6px !important}
body.home3 .t3-sl{margin-top:5px}
body.home3 .t3-wx{padding:10px 14px !important;gap:12px}
body.home3 .t3-wi{width:40px;height:40px}
body.home3 .t3-wn{font-size:30px !important}
body.home3 .t3-wt b{font-size:15px}
body.home3 .t3-rooms>div{padding:8px 12px !important}
body.home3 .t3-rooms b{font-size:18px !important}
body.home3 .t3-acp{padding:8px 12px !important}
body.home3 .acp-ic{width:34px;height:34px}.acp-ic svg.pi{width:22px;height:22px}
body.home3 .acp-v{font-size:15px}
body.home3 .sec-light,.sec-alarm{gap:6px !important}
body.home3 .sec-light .seg button{padding:6px 4px;min-height:34px}
body.home3 .sec-alarm{display:grid !important;grid-template-columns:1fr 1fr;gap:6px !important}
body.home3 .sec-alarm>.lbl{grid-column:1/-1}
body.home3 .sec-alarm>.sub{display:none}
body.home3 .sec-alarm .chk span:first-child{font-size:13px}
body.home3 .sec-alarm .ddb span:first-child{font-size:13px}
body.home3 .sugg{gap:6px !important;padding:10px 12px !important}
body.home3 .sugg>div:not(.sub){display:contents}
body.home3 .sugg .ddb,.sugg .btn.go.wide{min-height:38px}
body.home3 .mbtns .btn{min-height:42px}
body.home3 .mc{padding:10px !important}
body.home3 .mc .cover{width:56px;height:56px}
body.home3 .sec-guard .line{padding:8px 10px !important}
body.home3 .st-pc{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}
body.home3 .st-pc>.lbl{grid-column:1/-1}
body.home3 .st-pc>.line{flex-direction:column;align-items:flex-start;gap:2px}
body.home3 .st-pc>[data-el="gnote"]{grid-column:1/-1}
body.home3 .frame:not(.phone) .cols>div{gap:10px !important}
body.home3 .frame:not(.phone) .cols>div::before{padding-bottom:6px}
body.home3 .frame:not(.phone) .app{padding:18px 24px 18px !important}

/* телефон: вкладка «Дом» — дом, медиа, уборка, охрана; «Комфорт» — только климат и свет */
body.home3 .frame.phone .app[data-pane="home"] .p-comfort{display:none !important}
body.home3 .frame.phone .app[data-pane="comfort"] .p-home,
body.home3 .frame.phone .app[data-pane="comfort"] .p-more{display:none !important}

/* компьютер: всплывающие окна — размером как на телефоне, по центру, а не на весь экран */
body.home3 .frame:not(.phone) .msheet,
body.home3 .frame:not(.phone) .msheet.pop,
body.home3 .frame:not(.phone) .amodal{position:fixed !important;left:50% !important;right:auto !important;top:50% !important;bottom:auto !important;
  width:400px !important;max-width:calc(100vw - 32px) !important;margin:0 !important;transform:translate(-50%,-50%);
  height:auto !important;max-height:min(760px,calc(100vh - 48px)) !important;overflow:auto !important;z-index:60}
body.home3 .frame:not(.phone) .chat{position:fixed !important;left:auto !important;right:24px !important;top:auto !important;bottom:96px !important;
  width:400px !important;height:min(640px,calc(100vh - 140px)) !important;z-index:60}
body.home3 .frame:not(.phone) .menu:not(.hide),
body.home3 .frame:not(.phone) .drawer:not(.hide),
body.home3 .frame:not(.phone) [data-el="gnote"]:not(.hide){position:fixed !important;left:50% !important;right:auto !important;top:50% !important;bottom:auto !important;
  width:400px !important;max-width:calc(100vw - 32px);transform:translate(-50%,-50%);max-height:calc(100vh - 48px);z-index:60}
body.home3 .frame:not(.phone) .g6{grid-template-columns:repeat(3,1fr)}

/* компьютер: три колонки на всю ширину, высота по содержимому, масштаб считает fit() */
body.home3 #app.frame:not(.phone) .app{min-height:0 !important;height:auto !important;overflow:visible !important}
body.home3 #app.frame:not(.phone) .cols{grid-template-columns:repeat(3,minmax(0,1fr)) !important;max-width:none !important;gap:22px !important;margin:6px 0 0 !important}
body.home3 #app.frame:not(.phone) .cols>div{display:flex !important;flex-direction:column;gap:10px !important;min-width:0}
body.home3 #app.frame:not(.phone) .cols>div:empty{display:none !important}
body.home3 #app.frame:not(.phone) .app{padding:14px 28px 18px !important}
body.home3 #app.frame:not(.phone) .head{margin-bottom:4px}
body.home3 #app.frame:not(.phone) .frame,body.home3 #app.frame:not(.phone) .pnav{right:24px !important;bottom:20px !important}

/* под масштабом компьютера окна задаются в «расчётных» пикселях: высоты ограничены, чтобы не вылезать за экран */
body.home3 .frame:not(.phone) .chat{height:460px !important;max-height:none !important;bottom:84px !important}
body.home3 .frame:not(.phone) .msheet,
body.home3 .frame:not(.phone) .msheet.pop,
body.home3 .frame:not(.phone) .amodal{max-height:520px !important}

/* компьютер: кнопка «Леся» — в шапке по центру (раньше стояла внизу справа и закрывала домофон); подписи не режутся */
body.home3 #app.frame:not(.phone) .pnav{position:absolute !important;top:26px !important;bottom:auto !important;left:50% !important;right:auto !important;
  margin:0 0 0 -70px !important;width:auto !important;height:auto !important}
body.home3 #app.frame:not(.phone) .chat{top:96px !important;bottom:auto !important;height:520px !important}
body.home3 .acp-l{letter-spacing:.06em !important;font-size:10px !important;white-space:nowrap}
body.home3 .acp-tx{overflow:hidden}
body.home3 .acp-v{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.home3 .t3-f2{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr) !important}

/* высота чата и окон на компьютере -- по экрану (значения кладёт fit()) */
body.home3 #app.frame:not(.phone) .chat{top:var(--chat-top,84px) !important;height:var(--chat-h,520px) !important;max-height:var(--chat-h,520px) !important;bottom:auto !important}
body.home3 #app.frame:not(.phone) .msheet,body.home3 #app.frame:not(.phone) .msheet.pop,body.home3 #app.frame:not(.phone) .amodal{max-height:var(--pop-max,520px) !important}

/* пульт «Климат» */
body.home3 .acr{display:flex;flex-direction:column;gap:8px}
body.home3 .acr .ahead{display:flex;align-items:center;gap:10px}
body.home3 .acr .rcroom{color:var(--muted);font-size:13px;margin-left:auto}
body.home3 .acr .rcnote{font-size:12px;line-height:1.35}
body.home3 .acr .rcrow{display:grid;grid-template-columns:1.3fr 44px 1fr 44px;gap:6px;align-items:center}
body.home3 .acr .rctemp{display:flex;flex-direction:column;align-items:center}
body.home3 .acr .rctemp b{font:700 22px var(--disp)}
body.home3 .acr .rctemp small{color:var(--muted);font-size:10px}
body.home3 .acr .rcgrid{display:grid;gap:5px}
body.home3 .acr .c2{grid-template-columns:repeat(2,1fr)}
body.home3 .acr .c3{grid-template-columns:repeat(3,1fr)}
body.home3 .acr .c4{grid-template-columns:repeat(4,1fr)}
body.home3 .acr .c5{grid-template-columns:repeat(5,1fr)}
body.home3 .acr .c6{grid-template-columns:repeat(6,1fr)}
body.home3 .acr .rcb{min-height:36px;padding:6px 4px;font-size:12.5px;text-align:center;justify-content:center}
body.home3 .acr .rcb.on{background:#222a35 !important;border-color:var(--ice) !important;color:var(--ice)}
body.home3 .acr .rcpw.on{border-color:var(--ok) !important;color:var(--ok)}

/* качающийся фильм: постер из размытого в чёткий по мере закачки (--pn 0..1) */
body.home3 .fm.dlf{position:relative;overflow:hidden;background:#11161f}
body.home3 .fm.dlf .cv{position:absolute;inset:-12px;background-size:cover;background-position:center;
  filter:blur(calc(14px * (1 - var(--pn,0)))) saturate(calc(.4 + .6 * var(--pn,0))) brightness(calc(.55 + .45 * var(--pn,0)));
  transition:filter 1.2s ease}
body.home3 .fm.dlf::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.7),rgba(0,0,0,0) 55%)}
body.home3 .fm.dlf>b,body.home3 .fm.dlf>.nb,body.home3 .fm.dlf>.pbar{position:relative;z-index:1}
body.home3 .fm.dlf .pbar{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.12)}
body.home3 .fm.dlf .pbar i{display:block;height:100%;background:var(--ice)}

/* 16.10.2026, владелец: «статусы поплыли неровно» -- у иконок шапки разная ширина (100 и 44 px), шаг плавал.
   Все пять -- одной ширины, ровный шаг; щит не прилипает к шестерёнке. */
body.home3 .frame:not(.phone) .icons{display:flex !important;grid-auto-flow:unset !important;gap:4px !important;justify-content:flex-end;margin-right:10px}
body.home3 .frame:not(.phone) .icons .ico{flex:0 0 76px !important;width:76px !important;min-width:76px !important}
body.home3 .frame.phone .icons{grid-auto-columns:1fr !important}
/* «уменьши зазоры между плашками все» -- шаг 6 px между плашками, 14 px между колонками, внутри плашек плотнее */
body.home3 .frame:not(.phone) .cols{gap:14px !important}
body.home3 .cols>div{gap:6px !important}
body.home3 .mod,body.home3 .mod.p-comfort,body.home3 .mod.p-more{gap:6px !important}
body.home3 .t3-two,body.home3 .t3-pm,body.home3 .t3-f2,body.home3 .mbtns,body.home3 .sec-alarm,body.home3 .sec-guard{gap:6px !important}
body.home3 .t3-wx,body.home3 .t3-acp{gap:10px !important}
body.home3 .frame:not(.phone) .cols>div::before{padding-bottom:6px !important;margin-bottom:0 !important}
body.home3 .frame .mod.p-comfort>.lbl,body.home3 .frame .mod.p-more>.lbl{padding-top:2px !important;margin-top:0 !important}
body.home3 .app{row-gap:6px !important}

/* 16.10.2026, владелец: «контраст заголовков должен меняться вместе с фоном, чтобы не сливались».
   Проверка всех 12 палитр + тревоги (.tmp/contrast_audit.py): серые подписи #5e6775 давали 2,4:1 на фоне и 3:1 на плашке.
   Подписи -- светлее; всё, что лежит прямо на живом фоне, -- светлое с тёмным ореолом (читается на любом участке). */
body.home3 .lbl{color:#9aa4b3 !important}
body.home3 .frame .mod.p-comfort>.lbl,body.home3 .frame .mod.p-more>.lbl,
body.home3 .frame:not(.phone) .cols>div::before,body.home3 .head .clock,body.home3 .head .clock *,body.home3 .icons .ico::after{
  color:#d5dce6 !important;text-shadow:0 1px 2px rgba(0,0,0,.75),0 0 10px rgba(0,0,0,.55)}
body.home3 .icons .ico svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.7))}

/* 16.10.2026 16:55, владелец: «в плашке музыки кнопки вперёд/назад, плей/пауза, шафл/магический шафл, цикл все/1 трек/
   без цикла — аккуратно в текущий формат в 2 строки». Строка 1 — назад · плей/пауза · вперёд, строка 2 — шафл и цикл. */
body.home3 .mc.music{grid-template-columns:56px minmax(0,1fr)}
body.home3 .mctl{grid-column:1/-1;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
body.home3 .mctl .btn{min-height:36px;padding:6px 8px;font-size:13px;gap:6px;white-space:nowrap;min-width:0}
body.home3 .mctl .mp{grid-column:span 2}
body.home3 .mctl .mm{grid-column:span 3;color:var(--muted)}
body.home3 .mctl svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
body.home3 .mctl svg .f{fill:currentColor;stroke:none}
body.home3 .mctl .mp svg{width:20px;height:20px}
body.home3 .mctl .mm[aria-pressed="true"]{background:#222a35 !important;border-color:#5f7186 !important;color:var(--text)}
body.home3 .mctl .mm[aria-pressed="true"] svg{color:var(--ok)}
body.home3 .mctl .mm span{overflow:hidden;text-overflow:ellipsis}

/* 16.10.2026 17:02, владелец: «кнопка выключения тревоги — кнопкой, как „включить“, в ней написано „Тревога“; плашка либо
   активна, либо нет; в конце плашки выпадающий список „где“ — выбор зон в 2 колонки». */
body.home3 .sec-alarm .atg{font-size:15px;min-height:42px}
body.home3 .sec-alarm .atg[aria-pressed="true"]{background:#222a35 !important;border-color:#5f7186 !important;color:var(--text)}
body.home3 .sec-alarm.idle .atg,body.home3 .sec-alarm.idle .awhere>.ddb{color:var(--muted)}
body.home3 .sec-alarm.idle .atg svg.gi{filter:none}
body.home3 .sec-alarm .awhere{min-width:0}
body.home3 .menu.acols:not(.hide){grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}
body.home3 .acols .acol{display:grid;gap:6px;align-content:start;min-width:0}
body.home3 .acols .chk span:first-child{font-size:13px}

/* шкала климата: метки поверх чужой линии (16.10, «накладываются») */
body.home3 .t3-mk em{z-index:3}

/* «Любимые треки» -- первая плитка листа плейлистов (16.10, владелец) */
body.home3 .pl.liked{background-image:linear-gradient(135deg,#4b3fa8,#a78bfa 55%,#e8b6ff) !important;background-size:cover}

/* крестик закрытия чата: на телефоне чат закрывается тапом мимо, а на компьютере он справа и далеко от кнопки «Леся» */
.frame.phone .cclose{display:none}
.cclose{min-width:36px;min-height:36px;border-radius:8px}

/* 17.10, владелец: «две кнопки тревоги — одна кнопка, в конце строки стрелка выбора; справа кнопка пылесоса со статусом
   и такой же стрелкой». Раздельная кнопка: основная часть действует, стрелка открывает выбор. */
.spl2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
.split{display:flex;min-width:0}
.split>.btn:first-child{flex:1 1 auto;min-width:0;justify-content:flex-start;border-radius:6px 0 0 6px !important;min-height:46px}
.split>.sarr{flex:0 0 42px;padding:0;justify-content:center;border-radius:0 6px 6px 0 !important;border-left:1px solid #2b323d !important;font-size:15px}
.vtg .vtx{display:grid;gap:1px;min-width:0;text-align:left}
.vtg .vtx b{font:700 15px var(--font)}
.vtg .vtx small{font:500 12px var(--font);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vtg[aria-pressed="true"]{background:#222a35 !important;border-color:#5f7186 !important;color:var(--text)}
.vtg[aria-pressed="true"] .vtx small{color:var(--text)}
body.home3 .sec-alarm .atg,body.home3 .sec-alarm .vtg{font-size:15px;min-height:46px}
.split.idle>.btn:first-child{color:var(--muted)}
.split .gi.vi{flex:0 0 auto}
body.home3 .sec-alarm>.spl2,body.home3 .sec-alarm>.menu{grid-column:1/-1}
.vtg .vtx b{white-space:nowrap}

/* 17.10, владелец: «дизайн чата с Лесей не соответствует общей концепции стиля — чтобы всё в одном стиле и Леся как все»:
   графитовая плашка, прямоугольные кнопки (радиус как у остальных), лёд вместо синего iOS, розовый вместо записи — лёд (красный только тревога) */
.chat .chead b{font:700 17px var(--disp)}
.chat .chead .sub{color:var(--muted);font-size:13px}
.chat .m{border-radius:var(--r-ui);font-size:15px;line-height:1.4;padding:10px 12px;max-width:92%}
.chat .m.bot{background:#171C24;border:1px solid #3e4857;color:var(--text)}
.chat .m.me{background:rgba(159,216,240,.18);border:1px solid rgba(159,216,240,.5);color:var(--text)}
.chat .opts{gap:8px;margin-top:4px}
.chat .opts button{border-radius:var(--r-ui) !important;border:1px solid #3e4857 !important;background:#171C24 !important;color:var(--text);font:600 14px var(--font);padding:10px 14px;min-height:42px}
.chat .opts button:hover{border-color:var(--ice) !important}
.chat .compose .cinp{border-radius:var(--r-ui);background:#171C24;border:1px solid #3e4857;height:46px;font-size:16px}
.chat .compose .icb{border-radius:var(--r-ui) !important;width:46px;height:46px;background:#171C24;border:1px solid #3e4857}
.chat .compose .icb.pri{background:var(--ice);color:#04101a;border-color:var(--ice)}
.chat .cclose{border-radius:var(--r-ui) !important;background:#171C24;border:1px solid #3e4857}
.compose.rec [data-act="voice"]{background:#1d3a48 !important;color:var(--ice);box-shadow:none;border-color:var(--ice) !important}
.vrec{background:#0f1c24;box-shadow:inset 0 0 0 1.5px var(--ice);color:var(--ice);border-radius:var(--r-ui);height:46px}
.vrec i{background:var(--ice)}
.vrec-cancel{background:#171C24 !important;color:var(--text);box-shadow:none !important}
.frame .ccq button{font-size:13px;color:var(--text);background:#171C24;border-color:#3e4857;border-radius:var(--r-ui);padding:8px 12px}

/* 17.10, владелец: «мои и Леси сообщения не выделяются; фон в чате -- красивый, под стать дизайну».
   Фон: тот же живой фон пульта той же палитры, приглушённый (home-bg.js в чате). Мои -- лёд справа, Леси -- графит слева с песочной кромкой. */
.frame .chat{background:rgba(8,11,16,.28) !important;overflow:hidden;isolation:isolate}
.chat>canvas{border-radius:inherit}
.chat .chead{padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.1)}
.chat .m{box-shadow:0 6px 18px -10px rgba(0,0,0,.8)}
.chat .m.me{align-self:flex-end;background:linear-gradient(160deg,#b3e3f5,#8cc9e3) !important;border:0 !important;color:#06121a !important;font-weight:600}
.chat .m.bot{align-self:flex-start;background:rgba(14,18,25,.9) !important;border:1px solid #3e4857 !important;border-left:3px solid var(--sand) !important;color:var(--text)}
.chat .compose .cinp{background:rgba(14,18,25,.92)}
/* 17.10: варианты ответа Леси -- прямоугольные, как кнопки пульта (владелец: «не круглые, а квадратные под стиль приложения»);
   пузыри сообщений тоже --r-ui (4 px, как у плашек и кнопок пульта: правило «лёгкая скруглённость» в этом файле). Лёд -- только рамка на наведении/нажатии */
.chat .opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.chat .opts button{border-radius:var(--r-ui) !important;border:1px solid #3e4857 !important;background:#171C24 !important;color:var(--text);font:600 14px var(--font);padding:9px 14px;min-height:40px;cursor:pointer}
.chat .opts button:hover,.chat .opts button:active,.chat .opts button:focus-visible{border-color:var(--ice) !important}
.chat .m,.chat .m.me,.chat .m.bot{border-radius:var(--r-ui) !important}

/* 17.10, владелец: «пройдись по текстовому дизайну чата и плашкам всем, чтобы тени и стили и у текста, и у плашек были».
   Единый язык, отдельным блоком (старое не переписано): у всех плашек одна тень, у заголовков и крупных цифр одна тень текста,
   подписи в плашках -- один цвет --muted и один размер. --muted чуть светлее прежнего: подписи на плашке дают не меньше 7:1 к фону. */
:root{--r-ui:4px}
body.home3{--sh-ctl:inset 0 1px 0 rgba(255,255,255,.07);--muted:#a6afbd;--sh-plate:inset 0 1px 0 rgba(255,255,255,.07),0 8px 22px -12px rgba(0,0,0,.75);--ts-head:0 1px 2px rgba(0,0,0,.6)}
body.home3 #app.frame :is(.t3-cell,.t3-scl,.t3-wx,.t3-rooms,.t3-acp,.sugg,.mc,.line,.res,.cc,.cc .cw,.launch,.chat,.chat .m){box-shadow:var(--sh-plate) !important}
/* кнопки и поле ввода чата -- та же верхняя подсветка, что у .btn/.seg/.gear пульта (раньше в чате теней не было совсем) */
body.home3 #app.frame :is(.chat .opts button,.chat .cinp,.chat .compose .icb,.chat .cclose,.chat .vrec-cancel){box-shadow:var(--sh-ctl) !important}
body.home3 #app.frame .compose.rec [data-act="voice"]{box-shadow:none !important}
body.home3 #app.frame :is(.msheet,.menu:not(.hide),.drawer:not(.hide),[data-el="gnote"]:not(.hide)){box-shadow:var(--sh-plate),0 0 0 100vmax rgba(3,4,6,.68) !important}
body.home3 #app.frame :is(.t3-num,.t3-wn,.t3-rooms b,.rctemp b,.acp-v,.mc .mt b,.chat .chead b,.launch b,.ahead b,.vtx b,.cc .cc-t,.chat .m.bot){text-shadow:var(--ts-head)}
body.home3 #app.frame :is(.t3-top,.t3-rooms>div,.t3-wt,.t3-scl,.t3-wx) .t3-lbl,body.home3 #app.frame .line .k,body.home3 #app.frame .sub,body.home3 #app.frame .acp-l,body.home3 #app.frame .lsub{color:var(--muted) !important;font-size:12px;font-weight:500}
body.home3 .lbl{color:var(--muted) !important}
body.home3 .frame .mod.p-comfort>.lbl,body.home3 .frame .mod.p-more>.lbl,body.home3 .frame:not(.phone) .cols>div::before,body.home3 .head .clock,body.home3 .head .clock *,body.home3 .icons .ico::after{color:#d5dce6 !important}

/* 17.10, владелец: «пульт климата чуть меньше, чтобы вмещался без прокрутки; более контрастные элементы у него и у других
   всплывающих пультов и окон; убери описание короткое в заголовке». Окна стоят у своих кнопок (placeNear в home.js, положение
   -- inline !important), здесь только плотность и контраст. Кнопки #1d2430 с рамкой #5a6779, нажатое -- лёд с тёмным текстом (≥7:1). */
body.home3 #app.frame .acr{gap:5px;padding:8px 10px !important}
body.home3 #app.frame .acr .ahead{gap:8px;min-height:36px}
body.home3 #app.frame .acr .ahead .icb{width:36px;height:36px}
body.home3 #app.frame .acr .rcrow{grid-template-columns:1.3fr 40px 1fr 40px;gap:5px}
body.home3 #app.frame .acr .rctemp b{font-size:20px}
body.home3 #app.frame .acr .rcgrid{gap:4px}
body.home3 #app.frame .acr .rcb{min-height:32px;padding:4px 2px;font-size:12.5px}
body.home3 #app.frame .acr .lbl{margin-top:2px;font-size:10.5px;letter-spacing:.12em}
body.home3 #app.frame .acr .rcnote{display:flex;align-items:center;justify-content:space-between;gap:8px}

body.home3 #app.frame :is(.msheet,.menu,.drawer,[data-el="gnote"]){border-color:#6b7a8f !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal,[data-el="gnote"]) :is(.btn,.chk,.vr,.rb,.ddb,.seg){background:#1d2430 !important;border:1px solid #5a6779 !important;color:var(--text)}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal,[data-el="gnote"]) .seg button{color:#d5dce6}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal,[data-el="gnote"]) :is(.btn.on,.btn[aria-pressed="true"],.vr[aria-pressed="true"],.chk[aria-pressed="true"],.seg button[aria-pressed="true"],.acr .rcb.on){background:var(--ice) !important;border-color:var(--ice) !important;color:#04101a !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal,[data-el="gnote"]) .vr[aria-pressed="true"] .n{background:#04101a;color:var(--ice)}
body.home3 #app.frame :is(.msheet,.menu,.drawer,[data-el="gnote"]) .chk .tg{background:#3a4658}
body.home3 #app.frame :is(.msheet,.menu,.drawer,[data-el="gnote"]) .chk[aria-pressed="true"] .tg{background:#04101a}
body.home3 #app.frame :is(.msheet,.menu,.drawer,[data-el="gnote"]) .chk[aria-pressed="true"] .tg::after{background:var(--ice)}
body.home3 #app.frame .acr .rcpw.on{background:var(--ok) !important;border-color:var(--ok) !important;color:#04101a !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal,[data-el="gnote"]) .icb{background:#1d2430;border:1px solid #5a6779}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal,[data-el="gnote"]) :is(.lbl,.sub,.pal h4,.rcroom,.rctemp small,.lsub){color:#b8c1ce !important}

/* кнопка «Пылесос ▾»: статус целиком, при нехватке места -- второй строкой, а не многоточием (17.10) */
body.home3 .vtg .vtx small{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.15}

/* 17.10: замер контраста по 24 палитрам — подписи неактивных сегментов, дробная часть чисел и выключенная «Тревога» были 3,2–4:1 */
.seg button[aria-pressed="false"]{color:#C9D1DE}
.t3-num small{color:#C9D1DE}
.split.idle>.btn:first-child{color:#C9D1DE}

/* 17.10, владелец: «мне такой функционал стиралки тоже добавь на дашборд … пульт собран так же аккуратно, как для кондиционера».
   Кнопка «Стиралка ▾» -- раздельная, как «Пылесос ▾»; окно -- тот же .acr, что у климата (радиус, рамка, лёд у выбранного),
   ряды ровные: режимы по 3, температура/отжим/полоскание/загрязнённость -- в один ряд (--n считает home.js). */
body.home3 .p-home.wash .split>.btn:first-child{min-height:46px}
body.home3 #app.frame .wsh .c1{grid-template-columns:minmax(0,1fr)}
body.home3 #app.frame .wsh .wg{grid-template-columns:repeat(var(--n,3),minmax(0,1fr))}
body.home3 #app.frame .wsh .rcb{line-height:1.1;overflow-wrap:anywhere;min-width:0}
body.home3 #app.frame .wsh .wnote{font-size:12.5px;line-height:1.35;margin:0}
body.home3 #app.frame .wsh .wwarn{color:var(--warn) !important}
body.home3 #app.frame .wsh .wbig{display:grid;gap:1px;margin:2px 0}
body.home3 #app.frame .wsh .wbig b{font:700 20px var(--disp);text-shadow:var(--ts-head)}
body.home3 #app.frame .wsh .wbig span{color:#b8c1ce;font-size:13px}
body.home3 #app.frame .wsh .wstg{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:4px}
body.home3 #app.frame .wsh .wstg span{border-top:3px solid #3a4658;padding-top:5px;text-align:center;font:600 12.5px var(--font);color:#b8c1ce}
body.home3 #app.frame .wsh .wstg span.done{border-color:var(--ok);color:var(--ok)}
body.home3 #app.frame .wsh .wstg span.now{border-color:var(--ice);color:var(--text)}
body.home3 #app.frame .msheet.wsh .rcb.wgo{background:var(--ok) !important;border-color:var(--ok) !important;color:#04101a !important}
/* одна кнопка без собственной плашки: берёт ширину у .mod, а фон, рамку и отступы плашки снимаем */
body.home3 .mod.p-home.wash{background:none !important;border:0 !important;padding:0 !important;box-shadow:none !important;backdrop-filter:none !important}

/* 17.10, владелец: плашка «Интернет» под кнопкой стиралки. Свёрнутая: вердикт и этапы одной линией (провайдер → главный роутер →
   остальные), под главным -- скорость скачивания; нажатие открывает окно с деревом у плашки (тот же .acr, что у климата и стиралки). */
body.home3 .mod.p-home.inet{width:100%;text-align:left;color:var(--text);font:inherit;cursor:pointer;display:block}
.inet svg,.isw svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.iverdict{display:flex;align-items:center;gap:8px;font:700 15px var(--font);color:var(--ok)}
.iverdict svg{width:20px;height:20px;flex:none}
.iverdict.warn{color:var(--warn)}
.iverdict .ixa{margin-left:auto;display:inline-flex;align-items:center;gap:2px;font:600 12.5px var(--font);color:var(--muted)}
.iverdict .ixa svg{width:15px;height:15px;transform:rotate(90deg)}
.ipipe{display:grid;grid-template-columns:auto minmax(12px,1fr) auto minmax(12px,1fr) auto;align-items:start;margin-top:8px}
.ipipe.two{grid-template-columns:auto minmax(12px,1fr) auto}
.inode{display:grid;justify-items:center;gap:2px;text-align:center;min-width:64px}
.inode .icirc{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;border:2px solid var(--ok);color:var(--ok);background:#12182b}
.inode .icirc svg{width:18px;height:18px}
.inode b{font:600 13px var(--font)}
.inode small{font-size:12px;color:var(--muted);white-space:nowrap}
.inode.bad .icirc{border-color:var(--warn);color:var(--warn);background:#2a2216}.inode.bad small{color:var(--warn) !important}
.inode.unk .icirc{border-color:#6b7694;color:#a6afbd}
.iline{height:0;border-top:3px solid var(--ok);margin:16px 6px 0;box-shadow:0 0 8px rgba(147,226,188,.35)}
.iline.bad{border-top:3px dashed var(--warn);box-shadow:none}
.igrp{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,auto));gap:3px 8px;padding:5px 8px;border:1px solid #3e4857;border-radius:2px;background:rgba(16,20,27,.6);align-self:center}
.igrp small{grid-column:1/-1;text-align:center;font-size:11.5px;color:var(--muted)}
.ik{display:flex;align-items:center;gap:5px;font:600 12.5px var(--font)}
.ik .d{width:9px;height:9px;border-radius:50%;background:var(--ok);flex:none}
.ik.bad .d{background:var(--warn)}.ik.bad b{color:var(--warn)}
/* окно с деревом: список строк, а не карточки (владелец 17.10: «список делай списком, аккуратнее и красивее»).
   Отступы везде 8 / 12 px, имя 14 px, вторичный текст 12.5 px --muted, разделители -- тонкие линии, связи -- линия слева. */
body.home3 #app.frame .isw{padding:8px 12px !important;gap:0}
body.home3 #app.frame .isw .rcroom.warn{color:var(--warn) !important}
body.home3 #app.frame .isw .ahead{min-height:36px;margin-bottom:4px}
.iwsprow{display:flex;align-items:center;gap:8px;padding:6px 0 8px;border-bottom:1px solid #3e4857;font:500 14px var(--font);color:var(--text)}
.iwspt{flex:1;min-width:0;font-size:12.5px;color:var(--muted)}.iwspt b{font:inherit;color:inherit}.iwspt .warn{color:var(--warn)}
.iwbtn{appearance:none;border:0;background:none;color:var(--muted);min-width:32px;min-height:32px;border-radius:2px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font:600 12.5px var(--font);padding:0 6px}
.iwbtn:hover{background:rgba(170,200,255,.12);color:var(--text)}
.iwbtn svg{width:16px;height:16px}
.iwbtn[disabled]{opacity:.75}.iwbtn[disabled] svg{animation:iwspin 1s linear infinite}@keyframes iwspin{to{transform:rotate(360deg)}}
.iwbtn.ask{color:var(--warn)}
.iwsprow .iwbtn{border:1px solid #5a6779;min-height:28px;min-width:30px}
.iwtree{position:relative;margin:4px 0 0 4px;padding-left:12px;border-left:1px solid #5a6779}
.iwr{position:relative;display:flex;align-items:center;gap:12px;min-height:40px;padding:4px 0;border-bottom:1px solid rgba(170,200,255,.12)}
.iwr::before{content:"";position:absolute;left:-17px;top:50%;margin-top:-4px;width:8px;height:8px;border-radius:50%;background:var(--ok)}
.iwr.bad::before{background:var(--warn)}.iwr.reb::before{background:#6b7694}
/* 30.10: выключенный роутер -- не авария: серая точка и серая подпись, без тревожного оранжевого */
.iwr.off::before{background:var(--dim)}.iwr.off .nm{color:var(--muted)}.iwr.off .ms{color:var(--dim)}
.iwr .nm{flex:1;min-width:0;font:600 14px var(--font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.iwr .ms,.iwr .cn{font-size:12.5px;color:var(--muted);white-space:nowrap}.iwr.bad .ms{color:var(--warn)}
.iwr .iwbtn{margin-right:-6px}
.iwc{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-height:30px;padding:5px 0 5px 12px;border-bottom:1px solid rgba(170,200,255,.08);font:500 14px var(--font)}
.iwc .n{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.iwc .r{flex:none;font-size:12.5px;color:var(--muted);white-space:nowrap}
.iwc .r em{font-style:normal;color:var(--ice);font-weight:600}
.iwc.dim .n{color:var(--muted);font-size:12.5px}
.iwown{appearance:none;display:flex;justify-content:space-between;align-items:center;width:100%;min-height:32px;padding:4px 0 4px 12px;border:0;border-bottom:1px solid rgba(170,200,255,.08);background:none;color:var(--muted);font:500 12.5px var(--font);cursor:pointer;text-align:left}
.iwown i{font-style:normal;font-size:12px}
.iwlink,.iwsw{appearance:none;display:flex;align-items:center;gap:8px;width:100%;min-height:40px;padding:8px 0;border:0;border-bottom:1px solid #3e4857;background:none;color:var(--text);font:600 14px var(--font);cursor:pointer;text-align:left}
.iwlink svg{width:16px;height:16px;color:var(--muted)}
.iwlink.ask{color:var(--warn)}
.iwsw{justify-content:space-between;margin-top:0}
.iwsw .tg{position:relative;flex:none;width:34px;height:18px;border-radius:9px;background:#3a4658}
.iwsw .tg::after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#b8c1ce;transition:transform .2s}
.iwsw[aria-checked="true"] .tg{background:var(--ice)}.iwsw[aria-checked="true"] .tg::after{transform:translateX(16px);background:#04101a}
.iwnote{padding-top:8px;font-size:12.5px;color:var(--muted);line-height:1.35}
/* затемнение под любым окном, в том числе под модалкой тревоги */
body.home3 #app.frame .amodal:not(.hide){box-shadow:var(--sh-plate),0 0 0 100vmax rgba(3,4,6,.68) !important}
.isw .btn svg{width:16px;height:16px;flex:none}
.ik b{white-space:nowrap}

/* этапы интернета: равные колонки, кружок по центру каждой, линия связи -- от кружка к кружку */
.ipipe2{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));margin-top:10px}
.ipipe2 .inode{position:relative;min-width:0;padding:0 4px}
.ipipe2 .inode b{font:600 13px var(--font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.ipipe2 .inode small{color:var(--muted)}
.ipipe2 .inode:not(:first-child)::before{content:"";position:absolute;top:16px;right:calc(50% + 21px);width:calc(100% - 42px);border-top:3px solid var(--ok);box-shadow:0 0 8px rgba(147,226,188,.35)}
.ipipe2 .inode.lbad::before{border-top:3px dashed var(--warn);box-shadow:none}
.ipipe2 .icirc em{font:700 14px var(--font);font-style:normal}

/* третий этап -- прямоугольный блок со списком точек доступа и кнопкой числа устройств у каждой */
.ipipe2{grid-template-columns:1fr 1fr}
.ipipe2.wblk{grid-template-columns:minmax(0,.9fr) minmax(0,1fr) minmax(0,1.5fr)}
.ipipe2.wblk .inode:nth-child(2)::after{content:"";position:absolute;top:16px;left:calc(50% + 21px);right:-6px;border-top:3px solid var(--ok);box-shadow:0 0 8px rgba(147,226,188,.35)}
.ipipe2.wblk:has(.iblk.lbad) .inode:nth-child(2)::after{border-top:3px dashed var(--warn);box-shadow:none}
.iblk{align-self:start;margin-left:6px;border:1px solid #3e4857;border-radius:2px;background:rgba(14,18,25,.75);padding:2px 0;min-width:0}
.iblk.bad{border-color:rgba(242,190,138,.55)}
.iap{display:flex;align-items:center;gap:8px;min-height:30px;padding:0 4px 0 9px}
.iap+.iap{border-top:1px solid rgba(255,255,255,.07)}
.iap .d{width:8px;height:8px;border-radius:50%;background:var(--ok);flex:none}
.iap.bad .d{background:var(--warn)}.iap.bad b{color:var(--warn)}
.iap b{font:600 13px var(--font);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.iapn{flex:none;display:inline-flex;align-items:center;gap:3px;min-height:24px;padding:0 7px;border:1px solid #5a6779;border-radius:2px;background:#1d2430;font:600 12.5px var(--font);color:var(--text);cursor:pointer}
.iapn i{font-style:normal;color:var(--muted)}

/* 17.10: «скругли углы» — блок точек доступа и кнопка числа устройств */
.iblk{border-radius:8px !important;overflow:hidden}
.iapn{border-radius:6px !important}

/* 17.10 17:15, владелец: «сделай вместительность чата по сообщениям объёмнее — мало влезает информации».
   Плотнее: меньше полей у окна, зазор между сообщениями и внутри пузырей; кнопки ответа ниже (38 px, всё ещё под палец).
   Выше: на телефоне окно от шапки до нижнего меню без запаса, на компьютере высота -- до низа экрана (см. fit() в home.js)
   и шире 420 -> 480. Ни у сообщения, ни у ленты нет line-clamp/max-height: длинный ответ показывается целиком, лента прокручивается. */
body.home3 #app.frame .chat{padding:10px !important;gap:6px !important}
body.home3 #app.frame .chat .chead{padding-bottom:6px}
body.home3 #app.frame .chat .msgs{gap:4px;padding-right:2px}
body.home3 #app.frame .chat .m{padding:7px 10px;line-height:1.35;max-width:92%}
body.home3 #app.frame .chat .opts{gap:6px;margin:2px 0 8px}
body.home3 #app.frame .chat .opts button{min-height:38px;padding:6px 12px}
body.home3 #app.frame.phone .chat{top:64px !important;bottom:80px !important}
body.home3 #app.frame:not(.phone) .chat{width:480px !important}
/* варианты вида «Метка — что сделается» до 56 знаков: кнопка не шире ленты, текст переносится, не обрезается */
body.home3 #app.frame .chat .opts button{max-width:100%;text-align:left;white-space:normal;overflow-wrap:anywhere;line-height:1.25;height:auto}

/* люди дома (18.10): лист шестерёнки; кнопки, переключатели и сегменты -- общие .btn/.chk/.seg пульта, новых акцентов нет */
.ubody{display:flex;flex-direction:column;gap:8px}
.urow{border-bottom:1px solid rgba(170,200,255,.12)}
.uhead{appearance:none;display:flex;align-items:center;gap:10px;width:100%;min-height:46px;padding:6px 2px;border:0;background:none;color:var(--text);font:600 15px var(--font);cursor:pointer;text-align:left}
.uhead .un{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uhead .us{flex:none;font:500 12.5px var(--font);color:var(--muted);white-space:nowrap}
.uhead .ch{flex:none;font-style:normal;font-size:12px;color:var(--muted)}
.udot{flex:none;width:9px;height:9px;border-radius:50%;border:1px solid #5a6779}
.udot.on{background:var(--ok);border-color:var(--ok)}
.udot.off{background:#6b7694;border-color:#6b7694}
.ucfg{display:flex;flex-direction:column;gap:6px;padding:2px 0 12px}
.ucfg .lbl{margin-top:6px}
.uphl{display:flex;flex-direction:column;gap:4px;max-height:208px;overflow:auto}
.ucfg .chk{min-height:38px;padding:6px 10px}
.ucfg .uph{min-height:38px}
.uph{width:100%;justify-content:space-between;text-align:left}
.uph small{font-size:12px;color:var(--muted)}
.uph[aria-pressed="true"] small{color:#04101a}
.ucfg .udel{margin-top:8px}
body.home3 #app.frame .msheet .btn.udel.ask{color:var(--warn);border-color:var(--warn)}
.uinv{display:flex;flex-direction:column;gap:6px}
.uinp{width:100%;min-height:42px;padding:8px 10px;background:#171C24;border:1px solid #3e4857;border-radius:4px;color:var(--text);font:500 14px var(--font);box-shadow:var(--sh-ctl)}
.uinp:focus{outline:0;border-color:var(--ice)}
.uinp::placeholder{color:var(--dim)}
.ulink{word-break:break-all;user-select:all;padding:10px;background:#171C24;border:1px solid #3e4857;border-radius:4px;font:600 15px/1.35 var(--font);color:var(--text)}

/* 18.10, владелец: обложка фоном плашки -- приглушённая, как в прежнем пульте (now_playing.js: blur 14px, яркость .55,
   масштаб 1.25); фильм -- горизонтальный кадр TMDB, иначе размытый постер; слева -- постер вертикальный 2:3 */
body.home3 .mc.has-bg{isolation:isolate}
body.home3 .mc .mcbg{position:absolute;inset:0;z-index:0;pointer-events:none;background-size:cover;background-position:center 30%;
  filter:blur(14px) saturate(1.15) brightness(.55);transform:scale(1.25)}
body.home3 .mc.has-bg::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(120% 90% at 85% 0%,transparent 0%,rgba(8,8,12,.55) 70%),linear-gradient(180deg,rgba(8,8,12,.25) 0%,rgba(8,8,12,.78) 100%)}
body.home3 .mc>.cover,body.home3 .mc>.mt,body.home3 .mc>.mctl{position:relative;z-index:1}
body.home3 .mc .cover.poster{width:48px;height:72px;justify-self:center}
body.home3 .mc .mstatic{margin-top:0}
/* качающийся фильм -- обложка сразу чёткая (18.10: «загружаемые пусть нормально показывают обложку»), прогресс -- полосой */
body.home3 .fm.dlf .cv{filter:none !important}
body.home3 .mstatic .btn{grid-column:span 2}   /* 27.10: Фильмы · Плейлисты · Пульт -- одним рядом */

/* 18.10, владелец: климат одной плашкой, погода над ней; спальня и кухня тихо; вместо плашки «Климат выключен» -- кнопка */
body.home3 .frame .mod.p-comfort.t3{background:var(--glass) !important;border:1px solid #2B323D !important;padding:12px !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07) !important}
body.home3 .wxsec .t3-wx{margin-top:0}
body.home3 .t3-f2{grid-template-columns:1fr auto;align-items:center}
body.home3 .t3-f2>.t3-rooms{background:none !important;border:0 !important;box-shadow:none !important;padding:0 4px !important;display:flex;gap:16px}
body.home3 .t3-rooms .t3-lbl{font-size:11px}
body.home3 .t3-rooms b{font:500 15px var(--font) !important;color:var(--muted);display:inline !important;margin-left:6px}
body.home3 .t3-acp.btn{min-height:38px;padding:6px 14px;gap:8px;white-space:nowrap}
body.home3 .t3-acp .acp-v{font-size:12px;color:var(--muted);font-weight:500}
/* 18.10: С и К мелко внизу «Сейчас в квартире»; нижний ряд климата -- одна кнопка «Управление» */
body.home3 .t3-now .t3-rooms{display:flex;gap:12px;margin-top:6px;font-size:12px;color:var(--muted);background:none !important;border:0 !important;padding:0 !important}
body.home3 .t3-now .t3-rooms b{font:600 12px var(--font) !important;color:var(--muted);margin-left:2px;display:inline !important}
body.home3 .t3-f2{grid-template-columns:1fr !important}
body.home3 .t3-acp.btn{width:100%;justify-content:center}
/* 18.10, владелец: свет одной плашкой, охрана одной плашкой */
body.home3 .frame .mod.sec-light,body.home3 .frame .mod.sec-guard{background:var(--glass) !important;border:1px solid #2B323D !important;
  padding:12px !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.07) !important}
/* 18.10, владелец: стиралка и пылесос -- внутри одной плашки */
body.home3 .frame .mod.p-home.wash,body.home3 .mod.p-home.wash{background:var(--glass) !important;border:1px solid #2B323D !important;
  padding:12px !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.07) !important}
body.home3 .frame.phone .t3-acp.btn{flex-direction:row !important;align-items:center !important;width:100%;min-height:42px}
body.home3 .frame.phone .t3-f2{grid-template-columns:1fr !important}
/* 18.10: нижний ряд климата одной строкой -- Спальня · Кухня (тихо, целыми) и «Пульт» */
body.home3 .t3-f2,body.home3 .frame.phone .t3-f2{grid-template-columns:1fr auto !important;align-items:center}
body.home3 .t3-f2>.t3-rooms{display:flex !important;gap:8px;padding:0 !important;background:none !important;border:0 !important;box-shadow:none !important;
  font-size:12px;color:var(--muted);white-space:nowrap}
/* 27.10, владелец: «убери под ними плашку, пусть просто на фоне висят» -- без фона и рамки,
   только ровные половины строки, чтобы не косило. */
body.home3 .t3-f2>.t3-rooms>span{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;
  background:none;border:0;padding:4px 6px;min-height:34px}
/* сам ряд -- тоже без плашки: общий стиль плиток (#app.frame :is(...)) красил его фоном, рамкой и тенью */
body.home3 #app.frame .t3-f2>.t3-rooms{background:none !important;border:0 !important;box-shadow:none !important;padding:0 2px !important}
body.home3 .t3-f2>.t3-rooms b{font:700 15px var(--font) !important;color:var(--text,#e6e9ee);margin-left:0;display:inline !important}
body.home3 .t3-acp.btn,body.home3 .frame.phone .t3-acp.btn{width:auto !important;min-height:38px;padding:6px 14px !important}
body.home3 .t3-acp .acp-v{display:none}
/* 18.10, владелец: окна без затемнения остального пульта, у каждого -- «закрыть» */
body.home3 .msheet,body.home3 .chat,body.home3 .amodal,body.home3 .frame .menu:not(.hide),body.home3 .frame .drawer:not(.hide),
body.home3 .frame [data-el="gnote"]:not(.hide){box-shadow:0 18px 40px rgba(0,0,0,.6) !important}
body.home3 .pclose{position:absolute;top:6px;right:6px;z-index:5;width:30px;height:30px;min-height:0;padding:0;display:grid;place-items:center;
  font-size:14px;line-height:1;border-radius:6px;background:rgba(255,255,255,.06);border:1px solid #3e4857;color:var(--muted)}
body.home3 #app.frame :is(.msheet,.chat,.amodal,.menu:not(.hide),.drawer:not(.hide),[data-el="gnote"]:not(.hide)){box-shadow:var(--sh-plate),0 18px 40px rgba(0,0,0,.6) !important}
/* 19.10: модули -- спрятанные не занимают место; окно «Модули» -- группы с галочками */
body.home3 .modhide{display:none !important}
body.home3 [data-el="mods"] .mbody{display:grid;gap:6px;overflow:auto}
body.home3 [data-el="mods"] .lbl{margin-top:6px}
body.home3 [data-el="mods"] .chk[disabled]{opacity:.5}
body.home3 .mwhy{font-style:normal;color:var(--muted);font-size:12px}
body.home3 .m-power .mrow{display:flex;align-items:baseline;gap:10px}
body.home3 .m-power .mrow b{font:700 26px var(--disp)}
body.home3 .m-power .mrow span{color:var(--muted);font-size:12px}
body.home3 .m-sys .srows{display:grid;grid-template-columns:1fr 1fr;gap:6px}
body.home3 .m-sys .srows>div{display:flex;justify-content:space-between;gap:8px;padding:8px 10px;border:1px solid #3e4857;border-radius:4px;font-size:12px}
body.home3 .m-sys .srows span{color:var(--muted)}
body.home3 .frame .mod.m-power,body.home3 .frame .mod.m-sys{background:var(--glass) !important;border:1px solid #2B323D !important;padding:12px !important}
body.home3 .m-power .mrow{flex-wrap:wrap}
body.home3 .m-power .mrow span{flex:1 1 160px}
body.home3 .m-sys .srows{grid-template-columns:repeat(2,minmax(0,1fr)) !important;width:100%}
body.home3 .m-sys .srows>div{min-width:0}
body.home3 .m-sys .srows b{white-space:nowrap;font-size:12px}
/* 19.10: «Модули» -- по центру экрана, группы в 3 колонки (телефон -- 2), без прокрутки */
body.home3 #app.frame [data-el="mods"].msheet{position:fixed !important;left:50% !important;top:50% !important;right:auto !important;bottom:auto !important;
  transform:translate(-50%,-50%) !important;width:min(960px,calc(100vw - 24px)) !important;max-height:calc(100vh - 24px) !important;z-index:80}
body.home3 [data-el="mods"] .mbody{display:grid !important;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px;overflow:visible !important;align-items:start}
body.home3 [data-el="mods"] .mgrp{display:grid;gap:5px}
body.home3 [data-el="mods"] .mgrp .lbl{margin:0 0 2px}
body.home3 [data-el="mods"] .chk{min-height:34px;padding:6px 8px;font-size:13px}
body.home3 [data-el="mods"] .chk .tg{width:30px;height:16px}
body.home3 [data-el="mods"] .chk .tg::after{width:12px;height:12px}
body.home3 #app.frame.phone [data-el="mods"] .mbody{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
body.home3 #app.frame.phone [data-el="mods"] .chk{font-size:12px;min-height:32px}
body.home3 #app.frame.phone [data-el="mods"] .mwhy{display:block;font-size:10px}
/* 19.10, владелец: кнопка закрытия окон -- квадратная */
body.home3 #app.frame .ahead .icb,body.home3 #app.frame .pclose,body.home3 #app.frame .msheet .icb,body.home3 #app.frame .amodal .icb{border-radius:6px !important}
/* пустая плашка медиа -- без колонки обложки */
body.home3 .mc:not(:has(.cover)){grid-template-columns:1fr}
body.home3 .m-sys,body.home3 .m-power{align-items:stretch}
body.home3 .m-sys .srows{align-self:stretch}
/* 19.10: «Питание и батарея» -- сосуд-батарея из эскиза дома отца, без солнца; «Системы дома» -- плитки */
body.home3 .m-power .mlive{float:right;font:500 11px var(--font);letter-spacing:0;text-transform:none;color:var(--muted)}
body.home3 .phero{position:relative;aspect-ratio:360/280;max-height:240px;margin:0 auto;width:100%}
body.home3 .phero svg{position:absolute;inset:0;width:100%;height:100%}
body.home3 .phero .flow{animation:pflow 1.2s linear infinite}@keyframes pflow{to{stroke-dashoffset:-11}}
body.home3 .phero .pn{position:absolute;top:50%;transform:translate(-50%,-50%);display:grid;justify-items:center;gap:1px;padding:6px 10px;
  border-radius:4px;background:rgba(16,20,27,.86);border:1px solid #3e4857;text-align:center;min-width:64px}
body.home3 .phero .pn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;position:static}
body.home3 .phero .pn b{font:650 15px var(--font);white-space:nowrap}body.home3 .phero .pn b small{font-size:.7em;color:var(--muted)}
body.home3 .phero .pn span{font-size:11px;color:var(--muted)}
body.home3 .phero .pg{color:#88CFAA}
body.home3 .phero .psoc{position:absolute;left:50%;top:62%;transform:translate(-50%,-50%);text-align:center;background:rgba(8,12,18,.7);padding:3px 12px 4px;border-radius:3px}
body.home3 .phero .psoc b{display:block;font:700 26px/1 var(--disp)}body.home3 .phero .psoc small{font-size:.5em}
body.home3 .phero .psoc span{font-size:11px;color:#fff;opacity:.85}
body.home3 .prow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
body.home3 .prow>div,body.home3 .m-sys .sline{display:grid;gap:2px;padding:8px 10px;border:1px solid #3e4857;border-radius:4px;background:var(--ctl);min-width:0}
body.home3 .prow b{font:700 16px var(--disp);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.home3 .prow span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.home3 .m-sys .srows{display:grid !important;grid-template-columns:repeat(2,minmax(0,1fr)) !important;gap:6px;width:100%}
body.home3 .m-sys .sline{display:flex !important;justify-content:space-between;align-items:center;gap:8px}
body.home3 .m-sys .sline span{font-size:12px;color:var(--muted);white-space:nowrap}
body.home3 .m-sys .sline b{font:600 13px var(--font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
/* кнопка «Модули» -- внизу меню настроек во всю ширину */
body.home3 .mods-open{width:100%;margin-top:10px;min-height:42px;justify-content:center}
/* переключатели модулей: строка спокойная, включённый -- голубой тумблер */
body.home3 #app.frame [data-el="mods"] .chk,body.home3 #app.frame [data-el="mods"] .chk[aria-pressed="true"]{background:var(--ctl) !important;border:1px solid #3e4857 !important;color:var(--text) !important}
body.home3 #app.frame [data-el="mods"] .chk .tg{background:#2a313c !important;border:1px solid #4a5566}
body.home3 #app.frame [data-el="mods"] .chk .tg::after{background:#8a93a0 !important;left:2px}
body.home3 #app.frame [data-el="mods"] .chk[aria-pressed="true"] .tg{background:var(--ice) !important;border-color:var(--ice)}
body.home3 #app.frame [data-el="mods"] .chk[aria-pressed="true"] .tg::after{background:#04101a !important;left:auto;right:2px}
body.home3 #app.frame [data-el="mods"] .chk[disabled]{opacity:.45}
body.home3 #app.frame .modhide,body.home3 #app.frame .mod.modhide{display:none !important}
/* 19.10: плашки энергосистемы и систем -- в колонку (сосуд сверху, плитки снизу); с солнцем -- узел «солнце» над сосудом */
body.home3 #app.frame .mod.m-power,body.home3 #app.frame .mod.m-sys{display:flex !important;flex-direction:column;gap:8px}
body.home3 .phero.solar{aspect-ratio:360/340;max-height:280px}
body.home3 .phero .psun{left:50%;top:12%;color:#E2BE98;flex-direction:row}
body.home3 .phero.solar .ph,body.home3 .phero.solar .pg{top:59%}
body.home3 .phero.solar .psoc{top:68%}
/* 19.10: скрытый модуль прячется всегда -- правило сильнее любых display у плашек (до этого .m-power{display:flex} перебивал) */
#app.frame .modhide.modhide.modhide.modhide,body.home3 #app.frame .cols .modhide.modhide.modhide{display:none !important}

/* 19.10, владелец: «во всплывающих окнах -- один стандарт, компактнее и красивее, кнопки не наплывают» */
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal,[data-el="gnote"]){padding:12px !important;gap:8px !important;font-size:13px}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) :is(.ahead,.phead){display:flex;align-items:center;gap:8px;margin:0 0 4px;min-height:30px}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) :is(.ahead,.phead)>b{font:700 15px var(--disp) !important;flex:1;min-width:0}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) :is(.ahead,.phead) .icb,body.home3 #app.frame .pclose{position:static !important;width:var(--tap,44px) !important;height:var(--tap,44px) !important;
  min-height:0 !important;padding:0 !important;font-size:13px !important;border-radius:6px !important;background:rgba(255,255,255,.06) !important;border:1px solid #3e4857 !important;margin-left:auto;flex:none}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) > .pclose{position:absolute !important;top:10px;right:10px}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) .lbl{font-size:10px !important;letter-spacing:.12em;margin:4px 0 0 !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) :is(.btn,.vr,.rcb){min-height:var(--tap,44px) !important;padding:4px 10px !important;font-size:14px !important;gap:8px !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) .chk{min-height:34px !important;padding:5px 8px !important;font-size:13px !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) .chk .tg{width:30px !important;height:16px !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) .chk .tg::after{width:12px !important;height:12px !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) .seg button{min-height:var(--tap,44px) !important;padding:3px 6px !important;font-size:13px !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) svg.pi,body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) .btn svg{width:16px !important;height:16px !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) .sub{font-size:11px !important}
/* лист «Включить»: плитки меньше -- 4 в ряд на компьютере, 3 на телефоне */
body.home3 #app.frame [data-el="mpick"] .g6{grid-template-columns:repeat(4,minmax(0,1fr)) !important;gap:6px !important}
body.home3 #app.frame.phone [data-el="mpick"] .g6{grid-template-columns:repeat(3,minmax(0,1fr)) !important}
body.home3 #app.frame [data-el="mpick"] .fm{min-height:0 !important;aspect-ratio:2/3;font-size:11px}
body.home3 #app.frame [data-el="mpick"] .pl{min-height:52px !important;font-size:11px}
/* пульт ТВ: кнопки ниже, стрелки компактнее */
body.home3 #app.frame [data-el="mrem"] :is(.btn,.rcb){min-height:34px !important}
body.home3 #app.frame :is(.menu,.drawer,.msheet) > .phead{grid-column:1/-1;width:100%}
/* 19.10: подмодули -- с отступом и линией слева, читаются как часть родителя */
body.home3 #app.frame [data-el="mods"] .chk.mlv1{margin-left:14px;width:calc(100% - 14px);position:relative}
body.home3 #app.frame [data-el="mods"] .chk.mlv2{margin-left:28px;width:calc(100% - 28px);position:relative}
body.home3 #app.frame [data-el="mods"] .chk.mlv1::before,body.home3 #app.frame [data-el="mods"] .chk.mlv2::before{content:"";position:absolute;left:-9px;top:-6px;bottom:50%;
  width:7px;border-left:1px solid #4a5566;border-bottom:1px solid #4a5566;border-bottom-left-radius:3px}
body.home3 #app.frame [data-el="mods"] .chk.mlv1,body.home3 #app.frame [data-el="mods"] .chk.mlv2{font-size:12.5px !important;color:#cfd6df !important}
body.home3 #app.frame [data-el="mods"] .chk[disabled]{opacity:.5}
/* 19.10, владелец: «акцентный цвет слишком ядовитый -- проще». Выбранное в окнах -- мягкая подсветка и рамка, без сплошной заливки */
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal,[data-el="gnote"]) :is(.btn.on,.btn[aria-pressed="true"],.vr[aria-pressed="true"],.chk[aria-pressed="true"],.seg button[aria-pressed="true"],.acr .rcb.on){
  background:rgba(143,190,210,.16) !important;border-color:rgba(143,190,210,.5) !important;color:var(--text) !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) .vr[aria-pressed="true"] .n{background:#8fb6c7 !important;color:#0b141a !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,[data-el="gnote"]) .chk[aria-pressed="true"] .tg,
body.home3 #app.frame [data-el="mods"] .chk[aria-pressed="true"] .tg{background:#7fa6b6 !important;border-color:#7fa6b6 !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,[data-el="gnote"]) .chk[aria-pressed="true"] .tg::after,
body.home3 #app.frame [data-el="mods"] .chk[aria-pressed="true"] .tg::after{background:#0b141a !important;left:auto !important;right:2px}
body.home3 #app.frame [data-el="mods"] .chk[aria-pressed="true"]{background:var(--ctl) !important;border-color:#3e4857 !important}
/* 19.10, владелец: пульт ТВ -- сверху «Включить» и «Амбиент», слева от креста громкость и треки, крест меньше, снизу «Назад», «Домой», ⏯;
   частые нажатия на телефоне не масштабируют экран */
body.home3 .rem2{display:grid;gap:8px;touch-action:manipulation;user-select:none;-webkit-user-select:none}
body.home3 .rem2 .rb{touch-action:manipulation;min-height:38px !important;display:flex;align-items:center;justify-content:center;gap:6px;font-size:13px !important}
body.home3 .rem2 .rb svg{width:16px;height:16px}
body.home3 .rem2 .rtop{display:grid;grid-template-columns:1fr 1fr;gap:6px}
body.home3 .rem2 .rbot{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
body.home3 .rem2 .rmid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
body.home3 .rem2 .rleft{display:grid;grid-template-columns:1fr 1fr;gap:6px}
body.home3 .rem2 .rleft .rb{min-height:46px !important;font-size:18px !important}
body.home3 .rem2 .dpad{display:grid;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px);gap:4px;width:auto !important;height:auto !important;margin:0 !important}
body.home3 .rem2 .dpad .rb{min-height:0 !important;width:44px;height:44px;padding:0 !important;font-size:13px !important}
body.home3 .rem2 .dpad .up{grid-area:1/2}body.home3 .rem2 .dpad .lf{grid-area:2/1}body.home3 .rem2 .dpad .ok{grid-area:2/2}
body.home3 .rem2 .dpad .rt{grid-area:2/3}body.home3 .rem2 .dpad .dn{grid-area:3/2}
body.home3 #app.frame{touch-action:manipulation}
body.home3 .rem2 [data-k="power"][aria-pressed="true"]{border-color:rgba(136,207,170,.55) !important;color:#9fdcbc !important;background:rgba(136,207,170,.10) !important}
body.home3 .rem2 [data-k="power"][aria-pressed="false"]{color:var(--muted) !important}
body.home3 .rem2 .rb{flex-direction:row !important}
/* 19.10: громкость обе сверху, треки снизу; кнопки слева меньше -- место кресту */
body.home3 .rem2 .rmid{grid-template-columns:auto 1fr !important;justify-items:end}
body.home3 .rem2 .rleft{grid-template-columns:repeat(2,40px) !important;gap:6px;align-self:center;justify-self:start}
body.home3 .rem2 .rleft .rb{width:40px;min-height:36px !important;height:36px;font-size:15px !important;padding:0 !important}
body.home3 .rem2 .dpad{grid-template-columns:repeat(3,54px) !important;grid-template-rows:repeat(3,54px) !important;gap:5px !important}
body.home3 .rem2 .dpad .rb{width:54px !important;height:54px !important;font-size:15px !important}
body.home3 .rem2 .rleft{grid-template-columns:repeat(2,52px) !important;gap:8px}
body.home3 .rem2 .rleft .rb{width:52px;height:44px;min-height:44px !important;font-size:17px !important}
/* 19.10 (поправка): левые кнопки -- на всю левую часть до высоты креста; громкость крупнее треков; крест чуть больше */
body.home3 .rem2 .rmid{grid-template-columns:minmax(0,1fr) auto !important;gap:12px !important;align-items:stretch !important;justify-items:stretch !important}
body.home3 .rem2 .rleft{grid-template-columns:1fr 1fr !important;grid-template-rows:1.5fr 1fr !important;gap:8px !important;justify-self:stretch !important;align-self:stretch !important}
body.home3 .rem2 .rleft .rb{width:auto !important;height:auto !important;min-height:0 !important}
body.home3 .rem2 .rleft [data-k^="vol"]{font-size:24px !important;font-weight:700}
body.home3 .rem2 .rleft [data-k="prev"],body.home3 .rem2 .rleft [data-k="next"]{font-size:16px !important}
body.home3 .rem2 .dpad{grid-template-columns:repeat(3,58px) !important;grid-template-rows:repeat(3,58px) !important;gap:6px !important}
body.home3 .rem2 .dpad .rb{width:58px !important;height:58px !important;font-size:16px !important}
body.home3 .rem2 .rtop,body.home3 .rem2 .rbot{gap:8px !important}
/* 19.10: отклик нажатия -- кнопка чуть вдавливается и светлеет */
body.home3 #app.frame :is(button,.btn,.chk,.vr,.pl,.fm,.rb,.sq,.rnd,.t3-btn,.ico,.seg button){transition:transform .09s ease,filter .12s ease,background-color .15s}
body.home3 #app.frame :is(button,.btn,.chk,.vr,.pl,.fm,.rb,.sq,.rnd,.t3-btn,.ico,.seg button):is(:active,.tap){transform:scale(.955);filter:brightness(1.3)}
body.home3 #app.frame .vgo{width:100%;margin-top:6px;min-height:40px !important;justify-content:center;font-weight:700}
/* 19.10: стиралка и пылесос -- в работе тоже компактно: стрелка уже, название и статус по одной строке */
body.home3 section.wash .split>.sarr{flex:0 0 26px !important;font-size:12px !important}
body.home3 section.wash .split>.btn:first-child{min-width:0;padding:6px 8px !important;gap:8px !important;min-height:46px !important}
body.home3 section.wash .split>.btn:first-child svg{flex:none;width:18px;height:18px}
body.home3 section.wash .split .vtx{display:grid;min-width:0;line-height:1.2}
body.home3 section.wash .split .vtx b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.home3 section.wash .split .vtx small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px}
/* 19.10: сеть слева, дом справа; мощность -- на пунктире между узлами (как в эскизе дома отца); процент -- без подложки, контрастный */
body.home3 .phero .pn{min-width:56px;gap:3px}
body.home3 .phero .pn span{font-size:11px;color:#c9d2dc}
body.home3 .phero .pflow{position:absolute;top:41%;transform:translate(-50%,-50%);display:flex;align-items:baseline;gap:3px;white-space:nowrap;
  text-shadow:0 1px 6px rgba(0,0,0,.85)}
body.home3 .phero .pflow b{font:700 16px var(--disp);color:#fff}
body.home3 .phero .pflow small{font-size:11px;color:#dfe6ee}
body.home3 .phero .pfl b{color:#bfeccf}body.home3 .phero .pfr b{color:#f3d6b5}
body.home3 .phero .pfs{left:50%;top:18%}
body.home3 .phero.solar .pflow.pfl,body.home3 .phero.solar .pflow.pfr{top:52%}
body.home3 .phero .psoc{background:none !important;padding:0 !important;text-shadow:0 2px 10px rgba(0,30,60,.75),0 0 2px rgba(0,0,0,.6)}
body.home3 .phero .psoc b{color:#fff;font-size:30px !important}
body.home3 .phero .psoc span{display:block;margin-top:2px;font-size:11px;color:#fff;opacity:1}
body.home3 .pups{display:flex;align-items:baseline;gap:8px;padding:2px 4px}
body.home3 .pups b{font:700 15px var(--disp);color:#fff}
body.home3 .pups span{font-size:12px;color:#c9d2dc}
body.home3 .phero .pflow b{font:700 15px var(--font) !important}
body.home3 .phero.solar .psun{top:9% !important}
body.home3 .phero .pfs{top:27% !important;left:56% !important}
/* 19.10, владелец: выбранное -- аккуратно, но хорошо видно (было то ядовито, то бледно) */
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal,[data-el="gnote"]) :is(.btn.on,.btn[aria-pressed="true"],.vr[aria-pressed="true"],.chk[aria-pressed="true"],.seg button[aria-pressed="true"],.acr .rcb.on){
  background:rgba(120,180,205,.32) !important;border-color:rgba(150,205,228,.85) !important;color:#fff !important;box-shadow:inset 0 0 0 1px rgba(150,205,228,.35) !important}
body.home3 #app.frame .seg button[aria-pressed="true"]{background:rgba(120,180,205,.28) !important;color:#fff !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer) .vr[aria-pressed="true"] .n{background:#a9d3e4 !important;color:#0b141a !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,[data-el="gnote"]) .chk[aria-pressed="true"] .tg,body.home3 #app.frame [data-el="mods"] .chk[aria-pressed="true"] .tg{background:#8ec3d8 !important;border-color:#8ec3d8 !important}
body.home3 #app.frame [data-el="mods"] .chk[aria-pressed="true"]{border-color:rgba(150,205,228,.6) !important}
body.home3 .phero .pfs{top:19% !important;left:62% !important}
/* 19.10: волна в батарее живая, на сосуде только % и объём -- крупно, контрастно, с тенью */
body.home3 .phero .pwave{animation:pwave 6s linear infinite}body.home3 .phero .pwave.b{animation-duration:9s;animation-direction:reverse}
@keyframes pwave{from{transform:translateX(0)}to{transform:translateX(-116px)}}
body.home3 .phero .psoc b{font-size:32px !important;color:#fff !important;text-shadow:0 2px 12px rgba(0,25,55,.9),0 0 3px rgba(0,0,0,.8) !important}
body.home3 .phero .psoc span{font-size:12px !important;font-weight:600;color:#fff !important;text-shadow:0 1px 6px rgba(0,25,55,.95) !important}
/* 19.10: полосы хода стиралки и пылесоса под их кнопками */
body.home3 section.wash .jobs{display:grid;gap:8px;margin-top:8px}
body.home3 section.wash .jobs:empty{display:none}
body.home3 .job{display:grid;gap:5px}
body.home3 .job .jt{display:flex;justify-content:space-between;gap:8px;font-size:12px}
body.home3 .job .jt b{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.home3 .job .jt span{color:#c9d2dc;white-space:nowrap}
body.home3 .job .jbar{height:8px;border-radius:4px;background:#252c37;overflow:hidden;display:flex;gap:2px}
body.home3 .job .jbar>i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#6fb8d6,#9fd8f0);transition:width .6s}
body.home3 .job .jbar>i.run{background:repeating-linear-gradient(90deg,#4f7f95 0 12px,#6fb8d6 12px 24px);animation:jrun 1.2s linear infinite;background-size:48px 100%}
@keyframes jrun{to{background-position:48px 0}}
body.home3 .job .jbar.rooms>i{flex:1;border-radius:3px;background:hsl(var(--h) 45% 30%)}
body.home3 .job .jbar.rooms>i.done{background:hsl(var(--h) 60% 58%)}
body.home3 .job .jbar.rooms>i.now{background:hsl(var(--h) 60% 50%);animation:jnow 1.4s ease-in-out infinite}
@keyframes jnow{50%{filter:brightness(1.45)}}
body.home3 .job .jstg{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:4px}
body.home3 .job .jstg span{border-top:3px solid #3a4658;padding-top:4px;text-align:center;font:600 11px var(--font);color:#b8c1ce}
body.home3 .job .jstg span.done{border-color:var(--ok);color:var(--ok)}
body.home3 .job .jstg span.now{border-color:#8ec3d8;color:#fff}
body.home3 .job .jrooms{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:11px;color:#c9d2dc}
body.home3 .job .jrooms span::before{content:"";display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:4px;background:hsl(var(--h) 60% 55%);vertical-align:0}
body.home3 .job .jrooms span.q::before{display:none}
body.home3 .job .jrooms span.q{color:var(--muted)}

/* 19.10: текущий этап/комната залиты на свою долю (--f), а не мигают целиком; подпись текущего -- белая */
body.home3 .job .jbar.rooms>i.now{background:linear-gradient(90deg,hsl(var(--h) 60% 55%) var(--f,50%),hsl(var(--h) 45% 30%) var(--f,50%))}
body.home3 .job .jrooms span.cur{color:#fff;font-weight:600}
/* домик: заливка средней загрузкой дел -- мягкая, без ядовитости, плавно растёт */
.ico.home .hfill{fill:currentColor;fill-opacity:.32;stroke:none;transition:y .8s,height .8s}
/* 19.10: «Включить»/«Пульт» -- значок и подпись как у «Шафл»: тот же отступ, тот же размер и цвет (было «поплыли») */
body.home3 .mc .mstatic .btn{gap:6px}
body.home3 .mc .mstatic .btn svg.gi{margin:0;width:18px;height:18px;vertical-align:middle;color:inherit;opacity:1;fill:currentColor;stroke:none}
/* 19.10, владелец: «стрелочка -- кнопка, остальная плашка статичная, не кнопка» */
body.home3 .sec-alarm .atg.still{cursor:default;pointer-events:none;box-shadow:none}
/* проценты в сосуде -- с запасом от краёв */
body.home3 .phero .psoc{padding:3px 8px 4px;max-width:28%}
body.home3 .phero .psoc b{font-size:clamp(15px,4.2cqw,20px)}
body.home3 .phero .psoc span{font-size:10px;white-space:nowrap}
/* 19.10: ползунок переключателя -- ровно по середине дорожки при любой рамке (с рамкой 1px сидел на 1px ниже) */
body.home3 #app.frame .chk .tg::after{top:50% !important;transform:translateY(-50%)}
/* 19.10 сверка: пустой номер комнаты не показываем (была висячая точка «Ванная ·»); ± климата -- нормального размера */
body.home3 .vr .n:empty{display:none}
body.home3 #app.frame .rcb{min-width:44px !important;min-height:36px !important;font-size:18px !important}
body.home3 .vhome{margin-top:6px}body.home3 .vhome[hidden]{display:none !important}
/* 19.10: телефон -- постоянный масштаб, лишнее прокручивается (раньше пульт сжимался под экран и низ мог обрезаться) */
body.home3 #app.frame.phone .app{overflow-y:auto !important;overflow-x:hidden !important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none}
/* труба энергосистемы -- резиновая: HTML-линия от значка до сосуда, пунктир бежит в сторону потока */
body.home3 .phero .pline{position:absolute;height:3px;margin-top:-1.5px;border-radius:2px;opacity:.28;
  background:repeating-linear-gradient(90deg,var(--c) 0 3px,transparent 3px 11px);background-size:11px 3px}
body.home3 .phero .pline.on{opacity:.9;animation:plmove 1.1s linear infinite}
@keyframes plmove{to{background-position:11px 0}}
body.home3 .phero .pflow{transform:translate(-50%,-50%) !important}
/* прокрученный до конца пульт: последняя плашка целиком над нижней панелью (с учётом выреза iPhone) */
body.home3 #app.frame.phone .app{padding-bottom:calc(116px + env(safe-area-inset-bottom)) !important}
/* ряд статусов: подписи одним шрифтом, число с «°» по центру значка (оптическая компенсация знака градуса) */
body.home3 .icons .ico{font-family:var(--font)}
body.home3 .icons .ico[data-deg]::after{padding-left:.3em}

/* 19.10.2026, аудит Haiku по Apple HIG: цель касания не меньше 44 pt -- стрелки «▾» стиралки и пылесоса были 26-29 px
   (промахивались по плашке и запускали не то), «Включить/Пульт» 36-40, «Снять/Ночь/Охрана» 40. Вид тот же, растёт только зона нажатия. */
body.home3 .split>.sarr,body.home3 section.wash .split>.sarr{flex:0 0 var(--tap,44px) !important;min-height:var(--tap,44px)}
body.home3 .mbtns .btn{min-height:var(--tap,44px) !important}
body.home3 [data-sec] button{min-height:var(--tap,44px) !important}
/* 19.10: одно правило касания для всех окон (пульт ТВ, интернет, подсветка) -- 44 pt на экране, значки квадратные */
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) :is(.rb,.chk,.iwlink,.iwsw){min-height:var(--tap,44px) !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) .iwbtn{min-width:var(--tap,44px) !important;min-height:var(--tap,44px) !important}
body.home3 #app.frame :is(.msheet,.menu,.drawer,.amodal) :is(.rb,.rcb){min-width:var(--tap,44px) !important}
/* 19.10, владелец: значок тревоги в статусах всегда виден -- без тревоги приглушён, при тревоге тёмно-розовый (киберпанк) */
.icons .ico.idle{color:var(--muted) !important;opacity:.6}
.icons .ico.alarm,.icons .ico.alarm::after{color:#e4237d !important;opacity:1}
/* 19.10: энергосистема без солнца -- полоса не выше статуса роутера: сосуд, потоки и проценты те же, только ниже */
body.home3 #app.frame .mod.m-power.compact{gap:4px}
body.home3 .m-power.compact .phero{aspect-ratio:auto;height:76px;max-height:none}
body.home3 .m-power.compact .phero .psoc{top:50%;padding:2px 8px}
body.home3 .m-power.compact .phero .psoc b{font-size:20px}
body.home3 .m-power.compact .phero .psoc span{display:none}
body.home3 .m-power.compact .phero .pflow{top:24%}
body.home3 .m-power.compact .phero .pn{padding:2px 6px;gap:1px}
body.home3 .m-power.compact .phero .pn svg{width:18px;height:18px}
body.home3 .icons .ico.alarm svg.pi,body.home3 .icons .ico.alarm svg.pi *{fill:#e4237d !important;stroke:none}
body.home3 .icons .ico.alarm::after{color:#e4237d !important}
body.home3 #app.frame .m-power.compact .phero .psoc b{font-size:17px !important;line-height:1 !important}
body.home3 #app.frame .m-power.compact .phero .psoc{background:rgba(8,12,18,.78) !important;padding:2px 6px !important}
/* 19.10: лёгкий отлив щита и домика -- копия контура с бликом (home.js fitIcons) */
body.home3 .icons .ico svg.pi path.sheen{fill:url(#icoSheen) !important;pointer-events:none}
/* 19.10: название в плашке воспроизведения -- одна строка; не влезло -- бегущая строка (home.js marqueeTitles) */
body.home3 .mc .mt b{display:block;white-space:nowrap;overflow:hidden;text-overflow:clip}
body.home3 .mc .mt b.marq{-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
body.home3 .mc .mt b.marq .mq{display:inline-block;padding-left:4px;animation:mq var(--dur,12s) linear infinite}
@keyframes mq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){body.home3 .mc .mt b{text-overflow:ellipsis}body.home3 .mc .mt b.marq .mq{animation:none}}
/* 19.10 вечер: плашка медиа -- один формат для тишины, фильма и музыки: обложка 64x64, три строки текста, ОДИН ряд
   управления (10 долей), постоянный ряд «Включить/Пульт». Высота одна во всех состояниях -- меняется только содержимое */
body.home3 .mc{grid-template-columns:64px minmax(0,1fr) !important;align-items:center}
body.home3 .mc>.cover,body.home3 .mc .cover.poster{width:64px !important;height:64px !important;justify-self:start;border-radius:8px;
  background-size:cover !important;background-position:center 22% !important;display:grid;place-items:center}
body.home3 .mc>.cover.empty{background:rgba(255,255,255,.05) !important;border:1px solid var(--line);color:var(--muted)}
body.home3 .mc>.cover.empty svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.6}
body.home3 .mc .mt .sub{min-height:1.2em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.home3 .mctl.mrow{grid-template-columns:repeat(10,minmax(0,1fr))}
body.home3 .mctl.mrow .btn{color:var(--text)}
body.home3 .mctl.mrow .btn[disabled]{opacity:.35;pointer-events:none}
body.home3 .mctl.mrow .mm{color:var(--muted)}
body.home3 .mc .mctl .btn{min-height:var(--tap,44px) !important}

/* 19.10: в ряду плашки медиа «Включить» · «Пульт» · шестерёнка библиотеки (значок без подписи -- узкая) */
body.home3 .mstatic .btn[data-act="mremote"]{grid-column:span 2}

/* 19.10: модуль тревоги -- только во время тревоги, под климатом; строки как в дайджесте Тривоги */
body.home3 .m-raid.rd-off,#app.frame .m-raid.rd-off{display:none !important}
#app section.mod.m-raid{display:grid;gap:3px;font-size:13.5px;line-height:1.35;border-color:color-mix(in srgb,#ff3b7a 55%,transparent) !important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,#ff3b7a 35%,transparent),0 0 24px -12px #ff3b7a}
#app section.mod.m-raid .rd-top{font-weight:700;color:#ff6f9a}
#app section.mod.m-raid .rd-brief{margin-top:3px;opacity:.75}
#app section.mod.m-raid .rd-upd{font-size:11.5px;opacity:.6}

/* 19.10: число людей внутри домика (в его svg, по центру двери) */
.ico.home svg.pi text.hppl{font:800 96px var(--disp,system-ui);fill:currentColor;stroke:none}

/* 19.10: тумблер «ВСЕ» над колонками устройств подсветки тревоги -- на всю ширину */
/* 30.10, владелец: «все» -- одна ячейка сетки как устройство (2 колонки x 3 строки), форма та же, акцент чуть сильнее:
   рамка и текст цвета ice; включённое состояние берёт общую заливку .chk[aria-pressed=true] */
/* 30.10, владелец: «такой же, как все, чуть с более выраженным акцентом». Акцент виден ВСЕГДА, а не только
   у выключенной: раньше рамка ice появлялась лишь при aria-pressed=false, и на включённом меню кнопка
   не отличалась от остальных вовсе. Форма, размер и сетка -- общие с .chk. */
body.home3 #app.frame [data-el="amenu"] .aall{border-color:var(--ice) !important;
  background:linear-gradient(180deg,rgba(143,203,224,.16),rgba(143,203,224,.06)) !important;
  box-shadow:0 0 0 1px rgba(143,203,224,.35) inset !important}
body.home3 #app.frame [data-el="amenu"] .aall b{font-weight:800;letter-spacing:.06em;color:var(--ice)}

/* ===== 19.10 22:25, владелец: «плашки внутри плашек фонами сливаются, сильно тёмное, не хватает контрастов, теней и
   переменчивости яркости между объектами -- всё смотрится тёмным пятном». Было: плашка и всё внутри неё -- один и тот же
   градиент (--glass), кнопки даже темнее плашки. Стало -- ступени высоты, как в тёмных темах iOS/Material: чем выше слой,
   тем он светлее; плашка отделена от фона тенью, вложенное -- светлее плашки и с бликом сверху. ===== */
/* 19.10 23:02, владелец: «фон темнее, а плашки светлее на его фоне» -- обе ступени подняты */
:root{--z0:#07090c;--z1a:#242c38;--z1b:#1c232d;--z2:#2e3744;--z2h:#36404e;--z2line:#4a5566;--z1line:#3a4452;--dim:#7a8494}
body,#app.frame{background:var(--z0) !important}
/* 1: плашки -- светлее фона, тень вниз отделяет от фона */
#app.frame :is(.mod,.t3,.mc):not(.p-comfort):not(.p-home.media):not(.p-more),
#app.frame .t3,#app.frame .mod.media .mc{
  background:linear-gradient(180deg,var(--z1a),var(--z1b)) !important;border:1px solid var(--z1line) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.09),0 10px 24px -12px rgba(0,0,0,.9),0 2px 4px rgba(0,0,0,.45) !important}
/* 2: вложенное в плашку -- ещё светлее, с бликом сверху и короткой тенью */
#app.frame :is(.t3-cell,.t3-scl,.t3-f2>div,.res,.line,.stline,.btn,.seg,.chk,.ddb,.t3-btn,.sq,.rb,.vr){
  background:linear-gradient(180deg,var(--z2h),var(--z2)) !important;border:1px solid var(--z2line) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 1px 2px rgba(0,0,0,.5) !important}
#app.frame .seg button{background:transparent !important;border:0 !important;box-shadow:none !important}
/* выбранное -- ещё на ступень выше и холодным отливом, чтобы читалось без цвета текста */
#app.frame :is(.btn.on,.btn.go,.seg button[aria-pressed="true"],.t3-modes button[aria-pressed="true"],.chk[aria-pressed="true"],.vr[aria-pressed="true"]){
  background:linear-gradient(180deg,#34475a,#2a3a4b) !important;border-color:#6d8aa6 !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 1px 3px rgba(0,0,0,.55) !important}
#app.frame .btn:disabled{opacity:.45}
/* подписи «второго плана» светлее: на светлеющих слоях #5E6775 терялся */
#app.frame .lbl,#app.frame .t3-lbl{color:#a3acba !important}
/* модуль тревоги -- розовой рамкой поверх ступеней высоты */
#app.frame section.mod.m-raid{border-color:color-mix(in srgb,#ff3b7a 60%,transparent) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.09),0 0 22px -10px #ff3b7a,0 10px 24px -12px rgba(0,0,0,.9) !important}

/* 19.10 23:15, владелец: «полосы прокрутки убирай: пусть прокручивается, если надо, но без полос» */
*{scrollbar-width:none}
*::-webkit-scrollbar{width:0;height:0;display:none}

/* 19.10: хранилище фильмов вверху «Библиотеки» -- сколько занято из скольких и полоса заполненности */
#app.frame .stor{display:grid;gap:6px;margin:4px 0 8px}
#app.frame .stor-t{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:13px}
#app.frame .stor-t span{opacity:.75}
#app.frame .stor-bar{height:6px;border-radius:3px;background:var(--z2,#2e3744);overflow:hidden}
#app.frame .stor-bar i{display:block;height:100%;background:linear-gradient(90deg,#8fcbe0,#6fa8c4)}
#app.frame .stor-bar.low i{background:linear-gradient(90deg,#e4b07a,#f08585)}
