/* ═══ КНОПКИ · ЧИПЫ · КНОПКИ-ИКОНКИ — один компонент (владелец 2026-09-05: «все кнопки одного стиля,
   одинаковое выравнивание, без двойных и кривых обводок»). Файл подключён ПОСЛЕ компонентных css и ДО
   fontscale.css: при равной специфичности перебивает правила экранов, лестница кегля остаётся сильнее.
   Классы экранов перечислены один раз здесь — их старые ::before-рамки со squiggle гаснут; новые кнопки
   берут .btn (+ .primary / .ghost / .danger / .icon). Закон — SPEC §10.
   Кнопка 48 · R12 · контур 2 прямой графит · бумага-карточка · Neucha 15 · паддинг 0 16 · min-width 96 ·
   иконка 20 по центру · зазор 8. Варианты — только заливка/штрих. Чип 32 · R8 · контур 1.5 · Neucha 13 ·
   паддинг 0 12; выбранный — маркер + контур графит; статусные — контур цветом текста; люди (.fchip) — без
   контура, выбор = петля .ring. Кнопка-иконка 48×48 · R12 · контур 2 · иконка 24.
   Двойных обводок нет: рамка = border самого элемента; фокус = одно синее кольцо (base.css). */

/* ── кнопка ── */
.btn, .tmx-chip, .msd-keep, .ms-add, .tmms-unstar, .tmms-del, .mpk-unlink, .tmx-gbtn, .pw-cta, .pw-ghost, .a-pri, .a-alt, .a-back, .go17, .cn17, .stg-ghost, .stg-danger, .fam-leave, .mb-remove, #trash-clear, .skq-mk, .s7back, .sxb, #profile .fam .frghost, #profile .cta.gold, .st-btn, .lk-btn, .ntf-readall, .addli, .ske-ghost, .score-invite, .trh .back, .toast .act, .cp-add, .sh-abtn, #pile-sort-open{
  box-sizing:border-box; min-height:48px; height:auto; padding:0 16px; min-width:96px;
  border:2px solid var(--graphite); border-radius:12px; background:var(--paper2); color:var(--graphite);
  font-family:'Neucha',cursive; font-size:15px; font-weight:400; font-style:normal; line-height:1; letter-spacing:0;
  display:inline-flex; align-items:center; justify-content:center; gap:8px; flex-direction:row;
  cursor:pointer; box-shadow:none; transform:none; text-decoration:none; opacity:1;   /* position не трогаем: ✕ и ⋯ в шапках — absolute из css экрана */
}
.btn::before, .tmx-chip::before, .msd-keep::before, .ms-add::before, .tmms-unstar::before, .tmms-del::before, .mpk-unlink::before, .tmx-gbtn::before, .pw-cta::before, .pw-ghost::before, .a-pri::before, .a-alt::before, .a-back::before, .go17::before, .cn17::before, .stg-ghost::before, .stg-danger::before, .fam-leave::before, .mb-remove::before, #trash-clear::before, .skq-mk::before, .s7back::before, .sxb::before, #profile .fam .frghost::before, #profile .cta.gold::before, .st-btn::before, .lk-btn::before, .ntf-readall::before, .addli::before, .ske-ghost::before, .score-invite::before, .trh .back::before, .cp-add::before, .sh-abtn::before, #pile-sort-open::before, .btn::after, .tmx-chip::after, .msd-keep::after, .ms-add::after, .tmms-unstar::after, .tmms-del::after, .mpk-unlink::after, .tmx-gbtn::after, .pw-cta::after, .pw-ghost::after, .a-pri::after, .a-alt::after, .a-back::after, .go17::after, .cn17::after, .stg-ghost::after, .stg-danger::after, .fam-leave::after, .mb-remove::after, #trash-clear::after, .skq-mk::after, .s7back::after, .sxb::after, #profile .fam .frghost::after, #profile .cta.gold::after, .st-btn::after, .lk-btn::after, .ntf-readall::after, .addli::after, .ske-ghost::after, .score-invite::after, .trh .back::after, .cp-add::after, .sh-abtn::after, #pile-sort-open::after{border:0 !important; filter:none !important; box-shadow:none !important; background:none !important;}
.btn > svg, .tmx-chip > svg, .msd-keep > svg, .ms-add > svg, .tmms-unstar > svg, .tmms-del > svg, .mpk-unlink > svg, .tmx-gbtn > svg, .pw-cta > svg, .pw-ghost > svg, .a-pri > svg, .a-alt > svg, .a-back > svg, .go17 > svg, .cn17 > svg, .stg-ghost > svg, .stg-danger > svg, .fam-leave > svg, .mb-remove > svg, #trash-clear > svg, .skq-mk > svg, .s7back > svg, .sxb > svg, #profile .fam .frghost > svg, #profile .cta.gold > svg, .st-btn > svg, .lk-btn > svg, .ntf-readall > svg, .addli > svg, .ske-ghost > svg, .score-invite > svg, .trh .back > svg, .cp-add > svg, .sh-abtn > svg, #pile-sort-open > svg, .btn > .ico svg, .tmx-chip > .ico svg, .msd-keep > .ico svg, .ms-add > .ico svg, .tmms-unstar > .ico svg, .tmms-del > .ico svg, .mpk-unlink > .ico svg, .tmx-gbtn > .ico svg, .pw-cta > .ico svg, .pw-ghost > .ico svg, .a-pri > .ico svg, .a-alt > .ico svg, .a-back > .ico svg, .go17 > .ico svg, .cn17 > .ico svg, .stg-ghost > .ico svg, .stg-danger > .ico svg, .fam-leave > .ico svg, .mb-remove > .ico svg, #trash-clear > .ico svg, .skq-mk > .ico svg, .s7back > .ico svg, .sxb > .ico svg, #profile .fam .frghost > .ico svg, #profile .cta.gold > .ico svg, .st-btn > .ico svg, .lk-btn > .ico svg, .ntf-readall > .ico svg, .addli > .ico svg, .ske-ghost > .ico svg, .score-invite > .ico svg, .trh .back > .ico svg, .cp-add > .ico svg, .sh-abtn > .ico svg, #pile-sort-open > .ico svg, .btn > .lbl .ico svg, .tmx-chip > .lbl .ico svg, .msd-keep > .lbl .ico svg, .ms-add > .lbl .ico svg, .tmms-unstar > .lbl .ico svg, .tmms-del > .lbl .ico svg, .mpk-unlink > .lbl .ico svg, .tmx-gbtn > .lbl .ico svg, .pw-cta > .lbl .ico svg, .pw-ghost > .lbl .ico svg, .a-pri > .lbl .ico svg, .a-alt > .lbl .ico svg, .a-back > .lbl .ico svg, .go17 > .lbl .ico svg, .cn17 > .lbl .ico svg, .stg-ghost > .lbl .ico svg, .stg-danger > .lbl .ico svg, .fam-leave > .lbl .ico svg, .mb-remove > .lbl .ico svg, #trash-clear > .lbl .ico svg, .skq-mk > .lbl .ico svg, .s7back > .lbl .ico svg, .sxb > .lbl .ico svg, #profile .fam .frghost > .lbl .ico svg, #profile .cta.gold > .lbl .ico svg, .st-btn > .lbl .ico svg, .lk-btn > .lbl .ico svg, .ntf-readall > .lbl .ico svg, .addli > .lbl .ico svg, .ske-ghost > .lbl .ico svg, .score-invite > .lbl .ico svg, .trh .back > .lbl .ico svg, .cp-add > .lbl .ico svg, .sh-abtn > .lbl .ico svg, #pile-sort-open > .lbl .ico svg{width:20px; height:20px; flex:none; display:block;}
.btn > span, .tmx-chip > span, .msd-keep > span, .ms-add > span, .tmms-unstar > span, .tmms-del > span, .mpk-unlink > span, .tmx-gbtn > span, .pw-cta > span, .pw-ghost > span, .a-pri > span, .a-alt > span, .a-back > span, .go17 > span, .cn17 > span, .stg-ghost > span, .stg-danger > span, .fam-leave > span, .mb-remove > span, #trash-clear > span, .skq-mk > span, .s7back > span, .sxb > span, #profile .fam .frghost > span, #profile .cta.gold > span, .st-btn > span, .lk-btn > span, .ntf-readall > span, .addli > span, .ske-ghost > span, .score-invite > span, .trh .back > span, .cp-add > span, .sh-abtn > span, #pile-sort-open > span, .btn .tx, .tmx-chip .tx, .msd-keep .tx, .ms-add .tx, .tmms-unstar .tx, .tmms-del .tx, .mpk-unlink .tx, .tmx-gbtn .tx, .pw-cta .tx, .pw-ghost .tx, .a-pri .tx, .a-alt .tx, .a-back .tx, .go17 .tx, .cn17 .tx, .stg-ghost .tx, .stg-danger .tx, .fam-leave .tx, .mb-remove .tx, #trash-clear .tx, .skq-mk .tx, .s7back .tx, .sxb .tx, #profile .fam .frghost .tx, #profile .cta.gold .tx, .st-btn .tx, .lk-btn .tx, .ntf-readall .tx, .addli .tx, .ske-ghost .tx, .score-invite .tx, .trh .back .tx, .cp-add .tx, .sh-abtn .tx, #pile-sort-open .tx, .btn .lbl, .tmx-chip .lbl, .msd-keep .lbl, .ms-add .lbl, .tmms-unstar .lbl, .tmms-del .lbl, .mpk-unlink .lbl, .tmx-gbtn .lbl, .pw-cta .lbl, .pw-ghost .lbl, .a-pri .lbl, .a-alt .lbl, .a-back .lbl, .go17 .lbl, .cn17 .lbl, .stg-ghost .lbl, .stg-danger .lbl, .fam-leave .lbl, .mb-remove .lbl, #trash-clear .lbl, .skq-mk .lbl, .s7back .lbl, .sxb .lbl, #profile .fam .frghost .lbl, #profile .cta.gold .lbl, .st-btn .lbl, .lk-btn .lbl, .ntf-readall .lbl, .addli .lbl, .ske-ghost .lbl, .score-invite .lbl, .trh .back .lbl, .cp-add .lbl, .sh-abtn .lbl, #pile-sort-open .lbl{line-height:1;}
.btn:disabled, .tmx-chip:disabled, .msd-keep:disabled, .ms-add:disabled, .tmms-unstar:disabled, .tmms-del:disabled, .mpk-unlink:disabled, .tmx-gbtn:disabled, .pw-cta:disabled, .pw-ghost:disabled, .a-pri:disabled, .a-alt:disabled, .a-back:disabled, .go17:disabled, .cn17:disabled, .stg-ghost:disabled, .stg-danger:disabled, .fam-leave:disabled, .mb-remove:disabled, #trash-clear:disabled, .skq-mk:disabled, .s7back:disabled, .sxb:disabled, #profile .fam .frghost:disabled, #profile .cta.gold:disabled, .st-btn:disabled, .lk-btn:disabled, .ntf-readall:disabled, .addli:disabled, .ske-ghost:disabled, .score-invite:disabled, .trh .back:disabled, .cp-add:disabled, .sh-abtn:disabled, #pile-sort-open:disabled{opacity:.5; cursor:default;}
.btn:active, .tmx-chip:active, .msd-keep:active, .ms-add:active, .tmms-unstar:active, .tmms-del:active, .mpk-unlink:active, .tmx-gbtn:active, .pw-cta:active, .pw-ghost:active, .a-pri:active, .a-alt:active, .a-back:active, .go17:active, .cn17:active, .stg-ghost:active, .stg-danger:active, .fam-leave:active, .mb-remove:active, #trash-clear:active, .skq-mk:active, .s7back:active, .sxb:active, #profile .fam .frghost:active, #profile .cta.gold:active, .st-btn:active, .lk-btn:active, .ntf-readall:active, .addli:active, .ske-ghost:active, .score-invite:active, .trh .back:active, .cp-add:active, .sh-abtn:active, #pile-sort-open:active{transform:none;}
/* золото — единственное на экране; текст gold-ink (графит светлой темы в обеих темах) */
.btn.primary, .pw-cta, .a-pri, .go17, #profile .cta.gold, .st-btn.gold, .score-invite, .cp-add, .sh-abtn.pr, #pile-sort-open, .skm-foot .btn.primary, .ob-foot .btn.primary, .pm-btns .btn.primary{background:var(--gold); color:var(--gold-ink); border-color:var(--graphite);
  font-family:'Neucha',cursive; font-size:15px; font-weight:400;}
/* ghost — пунктир карандашом, без заливки */
.btn.ghost, .msd-keep, .ms-add, .tmms-unstar, .tmx-gbtn, .pw-ghost, .a-back, .cn17, .stg-ghost, #profile .fam .frghost, .addli, .ske-ghost, .skq-mk, .s7back, .st-btn, .lk-btn.gh, .ntf-readall{background:transparent; border-style:dashed; border-color:var(--pencil); color:var(--graphite-soft);}
/* danger — пунктир красным */
.btn.danger, .btn.red, .tmms-del, .mpk-unlink, .stg-danger, .fam-leave, .mb-remove, #trash-clear{background:transparent; border-style:dashed; border-color:var(--red); color:var(--red);}
.skm-foot .btn.primary.danger{background:var(--red); color:var(--paper2); border-style:solid; border-color:var(--graphite);}
/* ряд кнопок футера — поровну по ширине, зазор 8 */
.m-actions, .skm-foot, .dct-foot, .pm-btns, .sx-done-btns, .tmx-chips{display:flex; gap:var(--sk-two-gap, 32px); flex-wrap:wrap;}   /* две колонки: зазор 32 или 16 по остатку W от 32 — обе колонки ×16 */
.m-actions{margin-top:16px;}
/* контекстные правила экранов (.skm-foot .btn и т.п.) сильнее класса закона — повторяем геометрию с той же специфичностью */
.skm-foot .btn, .m-actions .btn, .dct-foot .btn, .pm-btns .btn, .tmx-foot .btn, dialog .actions .btn, .sx-done-btns .btn{padding:0 16px; font-size:15px; min-height:48px; height:auto;}
:is(.m-actions, .skm-foot, .dct-foot, .pm-btns, .sx-done-btns, .tmx-foot) > :is(button, .btn), .msd-ban .bt .btn.primary, .msd-ban .bt .msd-keep{flex:1 1 0; min-width:0;}
/* частности геометрии экранов, которые иначе спорят с законом */
.sxb{flex-direction:row;} .sxb kbd{margin-left:4px;}
.ntf-readall{top:8px; right:120px;} .ntf-set{top:8px; right:64px;}   /* шапка уведомлений: [прочитать все][⚙][✕] с зазором 8 */
.cp-add{width:auto;}
.a-alt{padding:0 8px; min-width:0; gap:6px;}   /* ряд ⅓ на 343: иконка 20 + «Google» 15 входят без обрезки */
.tmx-chip{justify-content:center;} .tmx-chip .cvl{min-width:0;} .tmx-chip .dn{width:16px; height:16px; margin-left:0;}
.cp-field{box-sizing:border-box; min-height:48px; border:2px solid var(--graphite); border-radius:12px; background:var(--paper2);}   /* поле дока — прямой контур, как кнопки рядом; 48 = 2 + 12 + строка 20 + 12 + 2 */
.cp-field textarea{line-height:20px; height:20px;}   /* строка 20 (автогроу растит кратно 20) */

/* ── чип ── */
.fchip, .msd-dl, .msd-stch, .msd-st, .tm-seg button, .wh-quick button, .skq-chip, .kind, .pd-chips .pdc, .s7wc, .c17, .tmw-q{
  box-sizing:border-box; min-height:32px; height:auto; padding:0 12px;
  border:1.5px solid var(--graphite-soft); border-radius:8px; background:var(--paper2); color:var(--graphite-soft);
  font-family:'Neucha',cursive; font-size:13px; font-weight:400; line-height:1;
  display:inline-flex; align-items:center; justify-content:center; gap:6px; cursor:pointer; box-shadow:none;
}
.fchip::before, .msd-dl::before, .msd-stch::before, .msd-st::before, .tm-seg button::before, .wh-quick button::before, .skq-chip::before, .kind::before, .pd-chips .pdc::before, .s7wc::before, .c17::before, .tmw-q::before, .fchip::after, .msd-dl::after, .msd-stch::after, .msd-st::after, .tm-seg button::after, .wh-quick button::after, .skq-chip::after, .kind::after, .pd-chips .pdc::after, .s7wc::after, .c17::after, .tmw-q::after{border:0 !important; filter:none !important; box-shadow:none !important;}
.fchip > svg, .msd-dl > svg, .msd-stch > svg, .msd-st > svg, .tm-seg button > svg, .wh-quick button > svg, .skq-chip > svg, .kind > svg, .pd-chips .pdc > svg, .s7wc > svg, .c17 > svg, .tmw-q > svg, .fchip > .ki svg, .msd-dl > .ki svg, .msd-stch > .ki svg, .msd-st > .ki svg, .tm-seg button > .ki svg, .wh-quick button > .ki svg, .skq-chip > .ki svg, .kind > .ki svg, .pd-chips .pdc > .ki svg, .s7wc > .ki svg, .c17 > .ki svg, .tmw-q > .ki svg, .fchip > .gl, .msd-dl > .gl, .msd-stch > .gl, .msd-st > .gl, .tm-seg button > .gl, .wh-quick button > .gl, .skq-chip > .gl, .kind > .gl, .pd-chips .pdc > .gl, .s7wc > .gl, .c17 > .gl, .tmw-q > .gl{width:16px; height:16px; flex:none; display:block;}
.fchip > span, .msd-dl > span, .msd-stch > span, .msd-st > span, .tm-seg button > span, .wh-quick button > span, .skq-chip > span, .kind > span, .pd-chips .pdc > span, .s7wc > span, .c17 > span, .tmw-q > span{line-height:1;}
.msd-dl:is(.on, [aria-pressed="true"], .sel), .tm-seg button:is(.on, [aria-pressed="true"], .sel), .wh-quick button:is(.on, [aria-pressed="true"], .sel), .skq-chip:is(.on, [aria-pressed="true"], .sel), .kind:is(.on, [aria-pressed="true"], .sel), .pd-chips .pdc:is(.on, [aria-pressed="true"], .sel), .s7wc:is(.on, [aria-pressed="true"], .sel), .tmw-q:is(.on, [aria-pressed="true"], .sel){background:var(--marker); border-color:var(--graphite); color:var(--graphite);}
.msd-dl, .msd-stch, .msd-st, .c17, .skq-chip.blue, .s7wc{border-color:currentColor;}   /* цветные статусы и атрибуты: контур цветом текста */
.msd-dl.ghost, .msd-st.ghost, .c17.gh{border-style:dashed; color:var(--pencil);}
.skq-chip.blue{color:var(--ink-blue);}
.s7wc{color:var(--wk, var(--graphite-soft));}
.fchip{border:0; background:none; padding:0 8px;}   /* люди: без контура (border даёт 35), выбор — петля */
.tm-seg{gap:8px;} .wh-quick{gap:8px;} .kinds{gap:8px;} .pd-chips{gap:8px;}

/* ── кнопка-иконка ── */
.msd-ib, .tmx-ibtn, .m-close, .skm-x, .pw-x, .s7x, .s7undo, .shl-edit, #profile .gearb, .fam-card .ed, .fam-row .more, .ntf-set, .sk-search-x, .cp-plus, .mb-x, .btn.icon{
  box-sizing:border-box; width:48px; height:48px; min-width:48px; min-height:48px; padding:0;
  border:2px solid var(--graphite); border-radius:12px; background:var(--paper2); color:var(--graphite);
  display:inline-flex; align-items:center; justify-content:center; cursor:pointer; box-shadow:none; transform:none;
  font-size:22px; line-height:1;
}
.msd-ib::before, .tmx-ibtn::before, .m-close::before, .skm-x::before, .pw-x::before, .s7x::before, .s7undo::before, .shl-edit::before, #profile .gearb::before, .fam-card .ed::before, .fam-row .more::before, .ntf-set::before, .sk-search-x::before, .cp-plus::before, .mb-x::before, .btn.icon::before, .msd-ib::after, .tmx-ibtn::after, .m-close::after, .skm-x::after, .pw-x::after, .s7x::after, .s7undo::after, .shl-edit::after, #profile .gearb::after, .fam-card .ed::after, .fam-row .more::after, .ntf-set::after, .sk-search-x::after, .cp-plus::after, .mb-x::after, .btn.icon::after{border:0 !important; filter:none !important; box-shadow:none !important; background:none !important;}
.msd-ib > svg, .tmx-ibtn > svg, .m-close > svg, .skm-x > svg, .pw-x > svg, .s7x > svg, .s7undo > svg, .shl-edit > svg, #profile .gearb > svg, .fam-card .ed > svg, .fam-row .more > svg, .ntf-set > svg, .sk-search-x > svg, .cp-plus > svg, .mb-x > svg, .btn.icon > svg{width:24px; height:24px; display:block;}
.wh-nav .nv{box-sizing:border-box; width:32px; height:32px; padding:0; border:1.5px solid var(--graphite-soft); border-radius:8px; background:var(--paper2); color:var(--graphite);
  display:inline-flex; align-items:center; justify-content:center;}   /* стрелки месяца — иконка-чип 32 */
.wh-nav .nv::before, .wh-nav .nv::after{border:0 !important; filter:none !important;}

/* ── экраны с id-скоупом: их правила сильнее классов закона — повторяем закон с тем же скоупом ── */
#profile .pcard.hero .gearb{width:48px; height:48px; border:2px solid var(--graphite); border-radius:12px; background:var(--paper2); color:var(--graphite);
  display:inline-flex; align-items:center; justify-content:center; padding:0;}
#profile .pcard.hero .gearb::before{border:0 !important; filter:none !important;}

/* ── подпись / бейдж — деталь, не контрол (владелец 2026-09-05: «рядом с кнопкой у слова не должно быть обводки»):
   24 · R8 · без обводки · тихая заливка бумагой, маркер — для акцента (владелец, текущий способ входа), красная подложка —
   «стоит N дн». Обводка — знак контрола или выбора, подписи её не носят. ── */
.rolechip, .mchip, .task .chip, .lk-badge, .msd-row .dd{border:none !important; box-shadow:none; min-height:32px; height:32px; padding:0 8px; border-radius:8px;
  font-size:12px; line-height:1; display:inline-flex; align-items:center; gap:4px;}
.rolechip, .mchip, .task .chip{background:var(--paper); color:var(--graphite-soft);}
.rolechip.own, .lk-badge{background:var(--marker); color:var(--graphite);}
.rolechip::before, .mchip::before, .task .chip::before, .lk-badge::before{border:0 !important; filter:none !important;}

/* ── кнопка внутри поля (микрофон дока, отправка комментария, ✕ поиска): поле 48 с контуром R12 → кнопка 40 · R8 с отступом 4
   (радиус рамки − отступ, заливка наведения не выходит за контур поля); своей рамки у неё нет — рамка у поля ── */
.cp-mic, .tmx-cmp .send{box-sizing:border-box; width:32px; height:32px; min-width:0; min-height:0; padding:0; border:none; border-radius:8px;
  background:none; display:inline-flex; align-items:center; justify-content:center;}
.cp-mic{right:8px; bottom:8px;} .tmx-cmp .send{right:8px; top:8px;}   /* 32 в поле 48: отступ 8 со всех сторон */
.sk-search-in .clr{box-sizing:border-box; width:32px; height:32px; padding:0; border:none; border-radius:8px; background:none;
  display:inline-flex; align-items:center; justify-content:center;}
.sk-search-in .clr::before{border:0 !important; filter:none !important;}

/* ── угол модалки (владелец 2026-09-05: «разное расстояние от верха до кнопки закрыть»): ✕, ← и ⋯ сидят на 16 от контура
   по обеим осям во всех модалках — и абсолютные в углу .m-frame/.skm-frame, и центрированные в шапке 64. С контуром 2 это
   18 от края коробки; шапки в рамках с паддингом 16/20 сдвинуты отрицательным полем, шиты без верхнего паддинга получают 10. ── */
.m-close, .skm-x{top:16px; right:16px;}
.mb-x{top:16px; right:16px;}
.msd-head, .tmx-top{margin:-8px 0 0;}             /* .m-frame 16 + шапка 64 → ✕ на 16 от края коробки (контур снаружи) */
.s7top{margin:-8px 0 0;}                          /* .s7-frame — паддинг 16/16 */
.pw-top{margin:-16px 0 0; height:80px;}            /* .pw-sheet — паддинг 16: шапка 80 = 16 + 48 + 16 от края → ✕ на 16, до тарифов 16 */
.wh-frame, .stg-frame, .trh-frame{padding-top:0;}      /* шапка 80 = 16 + 48 + 16 от края коробки: ✕ на 16 и 16 до линии */
.wh-head, .stg-head, .trh-head{margin:0; box-sizing:border-box; height:80px; border-bottom:none; box-shadow:0 2px 0 var(--graphite);}   /* шапка с линией 80 = 16 + 48 + 16: над ✕ и под ним поровну; линия — тенью под коробкой */
#when-dialog .wh-frame, #stg-dialog .stg-frame, #trash-dialog .trh-frame{padding-top:0;}   /* id-правила экранов сильнее класса */
.ntf-set{top:16px; right:72px;} .ntf-readall{top:16px; right:128px;}   /* [прочитать все][⚙][✕] от того же угла с зазором 8 */
/* под кнопками угла — 16 до следующего блока (владелец 2026-09-05: «отступ снизу и сверху отличаются») */
.msd-sum{margin-top:8px;}          /* шапка 64: 8 под ✕ + 8 = 16 */
.mb-frame{padding-top:0;} #member-body{padding-top:0;} .mb-remove{margin-top:8px;}   /* участник: шапка 64 от контура, ✕ вровень с её низом; тело с зазором 8 → до кнопки 16 */
.s7field{margin-top:8px;}         /* разбор: шапка 64, 8 под ✕ + 8 = 16 до поля колоды */

/* ── ряды «поле + кнопка»: зазор 16, чтобы поле осталось ×16 (448 − 96 − 16 = 336; 608 → 496) ── */
.c-input, .cp-row, .pw-promo, .fam-mail-row{gap:16px;}
.fam-mail-row, .fam-inv-panel .fam-mail-row{padding:0; margin:16px 0 0;}   /* панель приглашения: способы 80 + 16 + поле 48 = 144 */
.fam-card .mt{line-height:16px;}   /* карточка семьи 96 = 16 + 48 + 16 + 16 */
.ntf-row{box-sizing:border-box; height:64px; padding:0;}   /* строка уведомления ровно 64 */
/* детали ×16: аватар в строке 32, стопка внахлёст −16, тумблер 48×32, чекбокс 32, бейдж «текущий» 96 */
.ava.sm{width:32px; height:32px;} .avs .ava.sm + .ava.sm{margin-left:-16px;}
.stg-sw{width:48px; height:32px;} .stg-sw::after{left:4px; top:4px; width:24px; height:24px;} .stg-sw[aria-checked="true"]::after{transform:translateX(16px);}
.rcheck{width:32px; height:32px;}
.lk-badge{width:96px;}
/* вход: карточка 336 с полем 16 → 304 = 19 × 16; ряд ⅓ с зазором 8 → 96; клетки кода 32 × 48 */
.login-box{max-width:336px; padding:16px;} .a-row{gap:8px;} .a-cell{width:32px;}
/* диктовка: список 512 (32 × 16), карточка с полем 16 */
.dct-wrap{max-width:512px;} .sl17{padding:16px;}
/* модалки: текст ритмом 16 */
dialog p, dialog .hint, dialog .m-sub{line-height:16px;}
#profile .cta.gold{width:100%;}   /* золото профиля на всю ширину карточки (912) */
/* кнопки-дубли жестов разбора: 96 фиксированно, зазор 16, по центру — 3 × 96 + 2 × 16 = 320 на телефоне, 4 × 96 + 3 × 16 = 432 в 448 */
.sx-btns{gap:16px; justify-content:center;} .sxb{flex:none; width:96px; min-width:96px;}
@media (max-width:639px){ .sx-btns{gap:8px;} }   /* телефон: содержимое колоды 304 (375) — 3 × 96 + 2 × 8 = 304 в одну строку; у́же — переносится 2 + 1 */

/* ── телефон и планшет: всё ×16 (владелец 2026-09-05). Модалки: поля 16 (содержимое 320 при 352); страница: ширина
   --sk-page-w (100vw − 32, вниз до ×16, без боковых полей контейнеров — поля дают отступы рамки); шапка — тем же полем ── */
@media (max-width:879px){
  .board-head, .tasks-wrap, .col-main, .cal-wrap, .cv-host, #shelf, #profile .pgrid{width:var(--sk-page-w); max-width:none; padding-left:0; padding-right:0; margin-left:auto; margin-right:auto; box-sizing:border-box;}
  .board-head, .tasks-wrap, .cv-host{padding-top:16px;} #profile .pgrid{padding-top:16px; gap:16px;}
  header.app{padding-left:calc((100vw - var(--sk-page-w)) / 2); padding-right:calc((100vw - var(--sk-page-w)) / 2); --hdr-line-pad:calc((100vw - var(--sk-page-w)) / 2);}
  .cp-dock, #sk-dock nav.sk-tabbar{max-width:var(--sk-page-w);}
}
@media (max-width:639px){
  .m-frame{padding:16px;}
  .skm-frame{padding:16px 16px calc(16px + max(env(safe-area-inset-bottom, 0px), var(--safe-bottom, 0px)));}
  .skm-grab{height:4px; margin:6px auto 6px;}   /* ручка шита — блок 16 */
  .tmx-chip{min-width:96px;}   /* иначе 160 + 160 + 32 > 320 и чипы падают в две строки */
}
.wh-quick{gap:16px;}   /* быстрые чипы «когда»: зазор 16 — при переносе две строки = 32 + 16 + 32 = 80 */
.boxwrap{padding:16px;}   /* ящик: 336 − 32 = 304, строки ×16 */
@media (max-width:879px){ .sk-dock-plate{width:var(--sk-page-w); max-width:none; padding-left:0; padding-right:0; margin-left:auto; margin-right:auto; box-sizing:border-box;} }
@supports (width: mod(10px, 4px)) {
  /* шиты во весь экран: содержимое = ширина страницы, зазор двух колонок — по её остатку. Только там, где шит
     действительно 100vw: подтверждение — ≤639 (modal.css), задача/«когда»/тарифы — ≤480 (taskmodal/when/paywall.css);
     между 481 и 639 они шириной --sk-modal-w с полями 16 — иначе содержимое теряло ×16 */
  @media (max-width:639px){
    #sk-modal .skm-frame{padding-left:calc((100vw - var(--sk-page-w)) / 2); padding-right:calc((100vw - var(--sk-page-w)) / 2);}
    #sk-modal{--sk-two-gap:calc(32px - mod(var(--sk-page-w), 32px));}
  }
  @media (max-width:480px){
    #task-dialog .m-frame, #when-dialog .wh-frame, #plan-dialog .pw-sheet{padding-left:calc((100vw - var(--sk-page-w)) / 2); padding-right:calc((100vw - var(--sk-page-w)) / 2);}
    #task-dialog, #when-dialog, #plan-dialog{--sk-two-gap:calc(32px - mod(var(--sk-page-w), 32px));}
  }
}
.tmx-ghosts{gap:var(--sk-two-gap, 32px);}   /* ряд ghost-кнопок модалки задачи — две колонки ×16 */
