/* Saitcraft Platform — дизайн-система.
   Перенесена из утверждённого макета без изменений токенов.
   Правим только здесь: ни одного цвета в шаблонах. */

[data-theme="dark"]{
  --bg:#050506;
  --mesh-1:rgba(88,132,255,.10); --mesh-2:rgba(34,211,238,.055); --mesh-3:rgba(240,178,74,.045);
  --shell:rgba(255,255,255,.032); --shell-ring:rgba(255,255,255,.07);
  --core:#0B0B0E; --core-2:#101014;
  --hair:rgba(255,255,255,.055);
  --inset:inset 0 1px 0 rgba(255,255,255,.055);
  --lift:0 30px 70px -40px rgba(0,0,0,.9);
  --ink:#F3F4F6; --ink-2:#C9CBD2; --muted:#8A8D96; --faint:#5A5D66;
  --accent:#6E9BFF; --accent-dim:rgba(110,155,255,.14); --accent-line:rgba(110,155,255,.28);
  --gap:#F0B24A; --gap-dim:rgba(240,178,74,.13); --good:#4ADE9E; --good-dim:rgba(74,222,158,.13);
  --rail:rgba(255,255,255,.06);
  --sb:rgba(255,255,255,.15); --sb-2:rgba(255,255,255,.06);
  --sb-h:rgba(255,255,255,.30); --sb-h2:rgba(255,255,255,.14);
  --sb-ff:rgba(255,255,255,.16);
  --wait:#A78BFA; --wait-dim:rgba(167,139,250,.14);
}
[data-theme="light"]{
  --bg:#F2F3F6;
  --mesh-1:rgba(59,111,240,.07); --mesh-2:rgba(34,211,238,.05); --mesh-3:rgba(201,130,26,.04);
  --shell:rgba(12,14,22,.032); --shell-ring:rgba(12,14,22,.055);
  --core:#FFFFFF; --core-2:#FAFBFC;
  --hair:rgba(12,14,22,.06);
  --inset:inset 0 1px 0 rgba(255,255,255,.9);
  --lift:0 1px 1px rgba(16,18,27,.025), 0 26px 56px -30px rgba(16,18,27,.22);
  --ink:#0D0F14; --ink-2:#323641; --muted:#63666F; --faint:#9A9DA6;
  --accent:#3B6FF0; --accent-dim:rgba(59,111,240,.09); --accent-line:rgba(59,111,240,.22);
  --gap:#C9821A; --gap-dim:rgba(201,130,26,.10); --good:#0EA97C; --good-dim:rgba(14,169,124,.11);
  --rail:rgba(12,14,22,.055);
  --sb:rgba(12,14,22,.20); --sb-2:rgba(12,14,22,.09);
  --sb-h:rgba(12,14,22,.34); --sb-h2:rgba(12,14,22,.18);
  --sb-ff:rgba(12,14,22,.22);
  --wait:#6D4FD8; --wait-dim:rgba(109,79,216,.10);
}
:root{
  --e:cubic-bezier(.32,.72,0,1);
  --r-out:clamp(20px,2.4vw,28px); --r-in:calc(var(--r-out) - 7px);
  --pad:clamp(16px,3.2vw,34px); --cpad:clamp(16px,2vw,24px); --gutter:clamp(10px,1.4vw,16px);
  --rail-w:250px;
}
*{box-sizing:border-box;margin:0;padding:0;min-width:0}
/* полоса прокрутки */
*{scrollbar-width:thin;scrollbar-color:var(--sb-ff) transparent}
::-webkit-scrollbar{width:11px;height:11px;background:transparent}
::-webkit-scrollbar-track{background:transparent;border:none}
::-webkit-scrollbar-corner{background:transparent}
::-webkit-scrollbar-thumb{
  border:3.5px solid transparent;
  background-clip:padding-box;
  border-radius:99px;
  background-color:var(--sb);
  background-image:linear-gradient(180deg,var(--sb),var(--sb-2));
  box-shadow:inset 0 0 0 .5px var(--sb-2);
}
::-webkit-scrollbar-thumb:hover{
  background-color:var(--sb-h);
  background-image:linear-gradient(180deg,var(--sb-h),var(--sb-h2));
}
::-webkit-scrollbar-thumb:active{background-image:linear-gradient(180deg,var(--sb-h),var(--sb-h))}
.rail .core::-webkit-scrollbar,.thread::-webkit-scrollbar{width:9px}
.rail .core::-webkit-scrollbar-thumb,.thread::-webkit-scrollbar-thumb{border-width:3px}

html{-webkit-text-size-adjust:100%}
body{font-family:Geist,'Golos Text',system-ui,sans-serif;background:var(--bg);color:var(--ink);
  overflow-wrap:break-word;
  font-size:14px;line-height:1.5;letter-spacing:-.006em;-webkit-font-smoothing:antialiased;
  display:flex;min-height:100dvh;overflow-x:hidden;transition:background .5s var(--e),color .5s var(--e)}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(60rem 40rem at 12% -6%,var(--mesh-1),transparent 60%),
             radial-gradient(48rem 34rem at 92% 2%,var(--mesh-2),transparent 62%),
             radial-gradient(44rem 40rem at 68% 96%,var(--mesh-3),transparent 64%)}
.m{font-family:'Geist Mono',ui-monospace,monospace;font-variant-numeric:tabular-nums;letter-spacing:-.03em}
svg{display:block}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
a{color:inherit;text-decoration:none}

.shell{background:var(--shell);border:1px solid var(--shell-ring);border-radius:var(--r-out);
  padding:6px;box-shadow:var(--lift);transition:border-color .45s var(--e),background .45s var(--e)}
.core{background:var(--core);border-radius:var(--r-in);box-shadow:var(--inset);height:100%;overflow:hidden}
.rail .core{overflow:visible}

/* панель */
.rail{position:sticky;top:0;align-self:flex-start;z-index:5;width:var(--rail-w);flex-shrink:0;
  height:100dvh;padding:16px 0 16px 16px;display:flex}
/* ручка растягивания */
.rgrip{position:absolute;top:22px;bottom:22px;right:-4px;width:12px;cursor:col-resize;z-index:8;
  display:flex;align-items:center;justify-content:center;touch-action:none}
.rgrip::after{content:"";width:2px;height:46px;border-radius:99px;background:transparent;
  transition:background .35s var(--e),height .35s var(--e)}
.rgrip:hover::after{background:var(--shell-ring)}
.rgrip.drag::after{background:var(--accent);height:96px}
/* свёрнутая панель */
.rail.mini .core{padding:20px 10px 14px}
.rail.mini .logo{justify-content:center;padding:0 0 18px}
.rail.mini .logo b{display:none}
.rail.mini .pj{justify-content:center;padding:9px}
.rail.mini .pj .tx,.rail.mini .pj>svg{display:none}
.rail.mini .grp{display:none}
.rail.mini nav button{justify-content:center;padding:11px 0}
.rail.mini nav button span,.rail.mini nav button .bdg{display:none}
.rail.mini .me{justify-content:center;padding:12px 0 2px}
.rail.mini .me>div:last-child{display:none}
.rail.mini .avmenu{left:auto;right:-6px}
.rail .shell{flex:1;display:flex}
.rail .core{display:flex;flex-direction:column;padding:22px 14px 16px;width:100%;overflow-y:auto}
.logo{display:flex;align-items:center;gap:11px;padding:0 10px 22px}
.logo svg{width:19px;height:19px;color:var(--accent);flex-shrink:0}
.logo b{font-size:16px;font-weight:600;letter-spacing:-.03em}
.pj{display:flex;align-items:center;gap:11px;padding:10px 11px;margin-bottom:22px;border-radius:15px;
  background:var(--core-2);border:1px solid var(--hair);transition:border-color .4s var(--e)}
.pj .mk{width:28px;height:28px;border-radius:9px;flex-shrink:0;
  background:linear-gradient(140deg,var(--accent),color-mix(in srgb,var(--accent) 55%,var(--gap)));
  display:grid;place-items:center;color:#fff;font-size:11px;font-weight:600}
.pj .tx{flex:1;min-width:0}
.pj .tx b{display:block;font-size:13.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pj .tx i{font-style:normal;font-size:11.5px;color:var(--faint)}
.grp{font-size:11px;color:var(--faint);padding:0 11px 8px}
.rail nav{display:flex;flex-direction:column;gap:2px;margin-bottom:16px}
.rail nav button{display:flex;align-items:center;gap:12px;padding:10px 11px;border-radius:13px;
  color:var(--muted);font-size:14px;min-height:42px;width:100%;text-align:left;
  transition:background .4s var(--e),color .4s var(--e),transform .4s var(--e)}
.rail nav button svg{width:16px;height:16px;flex-shrink:0;opacity:.9}
.rail nav button.on{color:var(--ink);background:var(--accent-dim);box-shadow:inset 0 0 0 1px var(--accent-line)}
.rail nav button.on svg{color:var(--accent);opacity:1}
.rail nav button .bdg{margin-left:auto;font-size:11px;padding:1px 7px;border-radius:99px;
  background:var(--gap-dim);color:var(--gap);font-family:'Geist Mono',monospace}
.fill{flex:1}
.me{display:flex;align-items:center;gap:11px;padding:12px 11px 2px;border-top:1px solid var(--hair)}
.me b{display:block;font-size:13.5px;font-weight:500}
.me i{font-style:normal;font-size:11.5px;color:var(--faint)}

/* выбор аватара */
.avpick{position:relative;flex-shrink:0}
.avbtn{width:32px;height:32px;border-radius:50%;background:var(--core-2);border:1px solid var(--hair);
  display:grid;place-items:center;color:var(--ink-2);transition:border-color .4s var(--e),color .4s var(--e)}
.avbtn svg{width:20px;height:20px}
.avmenu{position:absolute;bottom:calc(100% + 12px);left:-6px;z-index:70;width:236px;padding:12px;
  border-radius:20px;background:var(--core);border:1px solid var(--shell-ring);box-shadow:var(--lift);
  display:none;grid-template-columns:repeat(4,1fr);gap:7px}
.avmenu.open{display:grid}
.avmenu .t{grid-column:1/-1;font-size:11.5px;color:var(--faint);padding:2px 4px 4px}
.avmenu button{aspect-ratio:1;border-radius:14px;display:grid;place-items:center;color:var(--muted);
  background:var(--core-2);border:1px solid transparent;transition:color .3s var(--e),border-color .3s var(--e),background .3s var(--e)}
.avmenu button svg{width:24px;height:24px}
.avmenu button.on{color:var(--accent);border-color:var(--accent-line);background:var(--accent-dim)}

/* мобильная шапка */
.mtop{display:none;position:sticky;top:0;z-index:70;padding:12px var(--pad) 0}
.mtop .shell{padding:5px}
.mtop .core{display:flex;align-items:center;gap:12px;padding:8px 8px 8px 14px;border-radius:999px}
.mtop .mk{width:26px;height:26px;border-radius:8px;flex-shrink:0;
  background:linear-gradient(140deg,var(--accent),color-mix(in srgb,var(--accent) 55%,var(--gap)));
  display:grid;place-items:center;color:#fff;font-size:10.5px;font-weight:600}
.mtop .nm{flex:1;min-width:0}
.mtop .nm b{display:block;font-size:13.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mtop .nm i{font-style:normal;font-size:11px;color:var(--faint)}
.burger{width:40px;height:40px;border-radius:50%;background:var(--core-2);border:1px solid var(--hair);
  display:grid;place-items:center;position:relative;flex-shrink:0}
.burger span{position:absolute;left:12px;width:16px;height:1.4px;border-radius:2px;background:var(--ink);
  transition:transform .5s var(--e)}
.burger span:nth-child(1){transform:translateY(-4px)}
.burger span:nth-child(2){transform:translateY(4px)}
.burger.x span:nth-child(1){transform:rotate(45deg)}
.burger.x span:nth-child(2){transform:rotate(-45deg)}
.burger.x{background:var(--accent-dim);border-color:var(--accent-line)}
.burger.x span{background:var(--accent)}
.sheet{position:fixed;inset:0;z-index:60;background:color-mix(in srgb,var(--bg) 78%,transparent);
  backdrop-filter:blur(26px);-webkit-backdrop-filter:blur(26px);overflow-y:auto;
  padding:calc(env(safe-area-inset-top) + 84px) var(--pad) calc(env(safe-area-inset-bottom) + 28px);
  display:flex;flex-direction:column;gap:4px;opacity:0;pointer-events:none;transition:opacity .45s var(--e)}
.sheet.open{opacity:1;pointer-events:auto}
.sheet button{display:flex;align-items:center;gap:14px;padding:13px 12px;border-radius:16px;
  font-size:17px;color:var(--ink-2);min-height:50px;width:100%;text-align:left;
  opacity:0;transform:translateY(16px);transition:opacity .6s var(--e),transform .6s var(--e)}
.sheet.open button{opacity:1;transform:none}
.sheet button svg{width:19px;height:19px;color:var(--faint)}
.sheet button.on{background:var(--accent-dim);color:var(--ink);box-shadow:inset 0 0 0 1px var(--accent-line)}
.sheet button.on svg{color:var(--accent)}

/* общее */
main{flex:1;padding:clamp(20px,3vw,34px) var(--pad) clamp(60px,8vw,76px);max-width:1520px;position:relative;z-index:1}
.scr{display:none}
.scr.on{display:block}
.head{display:flex;align-items:flex-end;gap:clamp(10px,1.4vw,16px);margin-bottom:clamp(20px,2.6vw,30px);flex-wrap:wrap}
.tagpill{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:999px;
  background:var(--gap-dim);color:var(--gap);font-size:11.5px;margin-bottom:12px}
.tagpill.ok{background:var(--good-dim);color:var(--good)}
.tagpill .pt{width:5px;height:5px;border-radius:50%;background:currentColor}
h1{font-size:clamp(28px,4.4vw,40px);font-weight:500;letter-spacing:-.045em;line-height:1.02}
.sub{color:var(--muted);font-size:clamp(13.5px,1.2vw,15px);margin-top:9px;max-width:56ch}
.acts{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.gbtn{display:inline-flex;align-items:center;gap:12px;padding:7px 7px 7px 20px;border-radius:999px;
  background:var(--ink);color:var(--bg);font-size:14px;font-weight:500;min-height:46px;white-space:nowrap;overflow:hidden;
  transition:transform .5s var(--e),opacity .4s var(--e)}
.gbtn:active{transform:scale(.975)}
.gbtn .kn{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;flex:0 0 32px;
  background:color-mix(in srgb,var(--bg) 84%,transparent);color:var(--ink);transition:transform .55s var(--e)}
.ghost{display:inline-flex;align-items:center;gap:9px;padding:0 16px;height:46px;border-radius:999px;
  border:1px solid var(--shell-ring);background:var(--shell);font-size:13.5px;color:var(--ink-2);white-space:nowrap;
  transition:border-color .4s var(--e),transform .5s var(--e)}
.ghost:active{transform:scale(.975)}
.ghost.sm{height:36px;padding:0 13px;font-size:13px}
@media (hover:hover){
  .gbtn:hover{opacity:.9} .gbtn:hover .kn{transform:translate(3px,-2px) scale(1.06)}
  .ghost:hover{border-color:var(--accent-line)}
  .rail nav button:hover{color:var(--ink);background:var(--core-2);transform:translateX(2px)}
  .lane:hover{background:var(--core-2)} .more:hover{color:var(--ink);background:var(--core-2)}
  tbody tr:hover td{background:var(--core-2)} .sheet button:hover{background:var(--core-2)}
  .avmenu button:hover{color:var(--ink)} .pj:hover{border-color:var(--accent-line)}
  .pcard:hover{border-color:var(--accent-line)}
}
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter);margin-bottom:var(--gutter)}
.c12{grid-column:span 12} .c8{grid-column:span 8} .c6{grid-column:span 6}
.c4{grid-column:span 4} .c3{grid-column:span 3}
.ch{display:flex;align-items:baseline;gap:13px;padding:var(--cpad) var(--cpad) 0;flex-wrap:wrap}
.ch h2{font-size:16px;font-weight:500;letter-spacing:-.02em}
.ch p{font-size:12.5px;color:var(--faint)}
.keys{display:flex;gap:16px;font-size:12px;color:var(--muted)}
.keys s{text-decoration:none;display:inline-flex;align-items:center;gap:7px}
.keys i{width:16px;height:2px;border-radius:2px;display:inline-block}
.sech{display:flex;align-items:baseline;gap:14px;margin:clamp(24px,3vw,34px) 4px 14px;flex-wrap:wrap}
.sech h2{font-size:clamp(18px,2.4vw,22px);font-weight:500;letter-spacing:-.035em}
.sech p{font-size:13.5px;color:var(--faint)}
.plot{padding:14px clamp(16px,2.2vw,26px) 18px}
.plot svg{width:100%;height:auto;overflow:visible}
.tile{padding:var(--cpad);display:flex;flex-direction:column;height:100%}
.tile .k{font-size:12.5px;color:var(--muted)}
.tile .v{font-size:clamp(26px,3.2vw,32px);font-weight:400;letter-spacing:-.05em;margin:10px 0 5px;
  line-height:1;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.tile .v small{font-size:13px;color:var(--faint);letter-spacing:-.01em}
.tile .n{font-size:12.5px;color:var(--faint)}
.tile .n em{font-style:normal;color:var(--gap)}
.tile .sp{margin-top:auto;padding-top:14px}
.chip{display:inline-block;padding:4px 11px;border-radius:999px;font-size:11.5px;white-space:nowrap;
  background:var(--accent-dim);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent-line)}
.chip.g{background:var(--good-dim);color:var(--good);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--good) 30%,transparent)}
.chip.w{background:var(--gap-dim);color:var(--gap);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--gap) 30%,transparent)}
.chip.n{background:var(--core-2);color:var(--muted);box-shadow:inset 0 0 0 1px var(--hair)}
.seg{display:inline-flex;padding:4px;border-radius:999px;background:var(--core-2);border:1px solid var(--hair);gap:2px}
.seg button{padding:7px 15px;border-radius:999px;font-size:13px;color:var(--muted);white-space:nowrap;transition:background .3s var(--e),color .3s var(--e)}
.seg button.on{background:var(--core);color:var(--ink);box-shadow:var(--inset),0 2px 8px -4px rgba(0,0,0,.4)}
.tw{padding:0 var(--cpad)}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:12.5px;font-weight:400;color:var(--faint);
  padding:20px clamp(12px,1.3vw,20px) 13px}
th.r{text-align:right}
td{padding:13px clamp(12px,1.3vw,20px);font-size:14.5px;vertical-align:middle}
th:first-child,td:first-child{padding-left:0}
th:last-child,td:last-child{padding-right:0}
tbody tr:not(:first-child) td{border-top:1px solid var(--hair)}
td.r{text-align:right}
.tfoot{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;
  padding:17px var(--cpad);font-size:13.5px;color:var(--muted);position:relative}
.tfoot::before{content:"";position:absolute;left:var(--cpad);right:var(--cpad);top:0;height:1px;background:var(--hair)}
.tfoot b{color:var(--ink);font-weight:500}
.note{margin:16px 6px 0;font-size:12.5px;color:var(--faint);max-width:68ch;line-height:1.65}
.dl{font-family:'Geist Mono',monospace;font-size:14px;letter-spacing:-.03em}
.dl.b{color:var(--gap)} .dl.a{color:var(--good)} .dl.n{color:var(--faint);font-size:12px;font-family:Geist,sans-serif}
/* полосы разрывов */
.lane{display:grid;grid-template-columns:minmax(150px,210px) 96px 1fr 124px;align-items:center;
  gap:clamp(12px,1.6vw,20px);padding:0 var(--cpad);height:64px;position:relative;transition:background .4s var(--e)}
.lane+.lane::before{content:"";position:absolute;left:var(--cpad);right:var(--cpad);top:0;height:1px;background:var(--hair)}
.lane .nm{font-size:14.5px;font-weight:450}
.lane .nm i{display:block;font-style:normal;font-size:11.5px;color:var(--faint);margin-top:2px}
.lane .ov{font-family:'Geist Mono',monospace;font-size:16px;font-weight:300;text-align:right;
  font-variant-numeric:tabular-nums;letter-spacing:-.04em}
.lane .ov s{text-decoration:none;font-size:11px;color:var(--faint);font-family:Geist,sans-serif;letter-spacing:0}
.lane .ov em{display:block;font-style:normal;font-size:11px;color:var(--gap);font-family:Geist,sans-serif;
  letter-spacing:0;margin-top:3px;opacity:.85}
.trk{position:relative;height:28px;display:flex;align-items:center}
.trk .rl{position:absolute;left:0;right:0;height:7px;border-radius:99px;background:var(--rail)}
.trk .fl{position:absolute;left:0;height:7px;border-radius:99px;width:var(--w);
  background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 55%,transparent),var(--accent))}
.trk .pk{position:absolute;top:50%;transform:translateY(-50%);width:2px;height:15px;border-radius:99px;background:var(--gap)}
.lane .dl{text-align:right}
.more{width:100%;padding:17px var(--cpad);text-align:left;font-size:13.5px;color:var(--muted);
  display:flex;align-items:center;gap:10px;position:relative;min-height:54px;transition:color .4s var(--e),background .4s var(--e)}
.more::before{content:"";position:absolute;left:var(--cpad);right:var(--cpad);top:0;height:1px;background:var(--hair)}
.more svg{width:15px;height:15px;transition:transform .5s var(--e)}
.more.open svg{transform:rotate(180deg)}
.rest{display:none} .rest.show{display:block}

/* карточки проектов */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(285px,1fr));gap:var(--gutter)}
.pcard{padding:var(--cpad);display:flex;flex-direction:column;gap:14px;height:100%;
  border-radius:var(--r-in);border:1px solid transparent;transition:border-color .4s var(--e)}
.pcard .top{display:flex;align-items:center;gap:12px}
.pcard .mk{width:38px;height:38px;border-radius:12px;flex-shrink:0;display:grid;place-items:center;
  color:#fff;font-size:13px;font-weight:600}
.pcard .top b{display:block;font-size:15px;font-weight:500}
.pcard .top i{font-style:normal;font-size:12px;color:var(--faint)}
.kv{display:flex;justify-content:space-between;font-size:13px;color:var(--muted)}
.kv b{color:var(--ink);font-weight:400}
.pcard .tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto;padding-top:4px}

/* конвейер */
.split{display:grid;grid-template-columns:340px 1fr;gap:var(--gutter);align-items:start}
.qlist{display:flex;flex-direction:column}
.qi{padding:15px var(--cpad);position:relative;cursor:pointer;transition:background .35s var(--e)}
.qi+.qi::before{content:"";position:absolute;left:var(--cpad);right:var(--cpad);top:0;height:1px;background:var(--hair)}
.qi.on{background:var(--accent-dim)}
.qi b{display:block;font-size:14px;font-weight:450;margin-bottom:6px}
.qi .mt{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--faint)}
.dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.dot.g{background:var(--good)} .dot.w{background:var(--gap)} .dot.n{background:var(--faint)}
.doc{padding:var(--cpad);display:flex;flex-direction:column;gap:14px}
.doc h3{font-size:17px;font-weight:500;letter-spacing:-.02em}
.field{border:1px solid var(--hair);border-radius:14px;background:var(--core-2);padding:13px 15px}
.field .fl{font-size:11.5px;color:var(--faint);margin-bottom:6px}
.field p{font-size:14.5px;line-height:1.62;color:var(--ink-2)}
.field.edit{border-color:var(--accent-line);background:var(--accent-dim)}
.prog{height:7px;border-radius:99px;background:var(--rail);overflow:hidden}
.prog i{display:block;height:100%;border-radius:99px;background:var(--accent)}

/* диалог */
.chat{display:flex;flex-direction:column;height:clamp(460px,64vh,660px)}
.thread{flex:1;overflow-y:auto;padding:var(--cpad);display:flex;flex-direction:column;gap:16px}
.msg{display:flex;gap:12px;max-width:min(680px,92%)}
.msg .who{width:30px;height:30px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;
  background:var(--core-2);border:1px solid var(--hair);color:var(--muted)}
.msg .who svg{width:18px;height:18px}
.msg.me{align-self:flex-end;flex-direction:row-reverse}
.msg .bub{padding:12px 16px;border-radius:18px;font-size:14.5px;line-height:1.55;background:var(--core-2);border:1px solid var(--hair)}
.msg.me .bub{background:var(--accent-dim);border-color:var(--accent-line)}
.msg .tm{font-size:11px;color:var(--faint);margin-top:6px}
.rule{margin-top:10px;border:1px solid var(--accent-line);border-radius:16px;background:var(--core);overflow:hidden}
.rule .rh{padding:12px 15px 0;font-size:11.5px;color:var(--accent)}
.rule .rb{padding:8px 15px 13px;font-size:14.5px;line-height:1.5}
.rule .rf{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:11px 15px;border-top:1px solid var(--hair);background:var(--core-2)}
.compose{padding:14px var(--cpad);border-top:1px solid var(--hair);display:flex;gap:10px;align-items:center}
.compose .inp{flex:1;border:1px solid var(--hair);border-radius:999px;background:var(--core-2);
  padding:12px 18px;font-size:14px;color:var(--muted)}
.send{width:44px;height:44px;border-radius:50%;background:var(--ink);color:var(--bg);display:grid;place-items:center;flex-shrink:0}
.send svg{width:17px;height:17px}

/* база знаний, настройки */
.rl{padding:15px var(--cpad);position:relative;display:flex;gap:14px;align-items:flex-start}
.rl+.rl::before{content:"";position:absolute;left:var(--cpad);right:var(--cpad);top:0;height:1px;background:var(--hair)}
.rl .tx{flex:1}
.rl .tx b{display:block;font-size:14.5px;font-weight:450;margin-bottom:5px}
.rl .tx i{font-style:normal;font-size:12px;color:var(--faint)}
.sw{width:42px;height:24px;border-radius:99px;background:var(--rail);position:relative;flex-shrink:0;transition:background .35s var(--e)}
.sw::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;
  background:var(--muted);transition:transform .4s var(--e),background .35s var(--e)}
.sw.on{background:var(--accent-dim);box-shadow:inset 0 0 0 1px var(--accent-line)}
.sw.on::after{transform:translateX(18px);background:var(--accent)}

/* адаптив */
@media (max-width:1300px){.c8,.c4,.c6{grid-column:span 12}.c3{grid-column:span 6}.split{grid-template-columns:1fr}}
@media (max-width:1180px) and (min-width:961px){
  .rail{width:86px;padding-left:12px}
  .rail .core{padding:20px 10px 14px}
  .logo{justify-content:center;padding:0 0 18px} .logo b{display:none}
  .pj{justify-content:center;padding:9px} .pj .tx,.pj>svg{display:none}
  .grp{display:none}
  .rail nav button{justify-content:center;padding:11px 0} .rail nav button span,.rail nav button .bdg{display:none}
  .me{justify-content:center;padding:12px 0 2px} .me>div:last-child{display:none}
  .avmenu{left:auto;right:-6px}
}
@media (max-width:960px){
  .rail,.rgrip{display:none} .mtop{display:block} body{flex-direction:column}
  main{padding-top:18px;width:100%} .head{align-items:flex-start}
  .acts{width:100%} .acts .ghost{flex:0 0 auto} .acts .gbtn{flex:1 1 240px;justify-content:space-between}
}
@media (max-width:720px){
  .c3{grid-column:span 12}
  .exl{display:block;margin:10px 0 0;transform:none}

  .lane{grid-template-columns:1fr auto;grid-template-areas:"nm dl" "ov trk";height:auto;
    padding:16px var(--cpad) 18px;gap:14px;align-items:start}
  .lane .nm{grid-area:nm} .lane .ov{grid-area:ov;text-align:left;align-self:center;white-space:nowrap}
  .lane .trk{grid-area:trk;align-self:center} .lane .dl{grid-area:dl}
  .plot .xlab:nth-child(even){display:none}
  .plot svg text{font-size:14px}
  .keys{width:100%;padding-top:4px}
  .msg{max-width:100%}
}
@media (max-width:560px){
  thead{display:none}
  table,tbody,tr,td{display:block;width:100%}
  tbody tr{padding:16px 0;border-top:1px solid var(--hair)}
  tbody tr:first-child{border-top:none} tbody tr:not(:first-child) td{border-top:none}
  td,td:first-child,td:last-child{padding:0;display:flex;justify-content:space-between;
    align-items:baseline;gap:16px;text-align:right}
  td::before{content:attr(data-l);color:var(--faint);font-size:12.5px;text-align:left;flex-shrink:0}
  td+td{margin-top:9px}
  td.tname{display:block;text-align:left;font-weight:500;margin-bottom:12px;font-size:15px}
  td.tname::before{display:none}
  .tfoot{flex-direction:column;align-items:flex-start;gap:6px}
  .acts .ghost{flex:1 1 calc(50% - 5px);justify-content:center;padding:0 12px}
  .acts .gbtn{flex:1 1 100%;padding-left:18px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ─── фокус с клавиатуры ─── */
:focus{outline:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}
.rail nav button:focus-visible,.sheet button:focus-visible{outline-offset:-2px}
.skip{position:fixed;left:-999px;top:12px;z-index:200;padding:12px 18px;border-radius:12px;
  background:var(--ink);color:var(--bg);font-size:14px}
.skip:focus{left:12px}

/* ─── плотность ─── */
body.dense{font-size:13.5px}
body.dense .lane{height:52px}
body.dense td{padding:9px clamp(12px,1.3vw,20px)}
body.dense td:first-child{padding-left:0}
body.dense td:last-child{padding-right:0}
body.dense .rl,body.dense .qi{padding-top:11px;padding-bottom:11px}
body.dense .tile{padding:16px}
body.dense .sech{margin-top:24px}

/* ─── режим клиента ─── */
body.client [data-money]{display:none}
body.client .clienthide{display:none}
.clientbar{display:none;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px;
  padding:12px 16px;border-radius:14px;background:var(--gap-dim);color:var(--gap);font-size:13.5px}
body.client .clientbar{display:flex}

/* ─── сортировка ─── */
th.srt{cursor:pointer;user-select:none;position:relative;padding-right:16px}
th.srt::after{content:"";position:absolute;right:4px;top:50%;margin-top:-2px;width:0;height:0;
  border-left:3.5px solid transparent;border-right:3.5px solid transparent;
  border-top:4px solid var(--faint);opacity:0;transition:opacity .3s var(--e),transform .3s var(--e)}
th.srt:hover::after{opacity:.5}
th.srt.up::after,th.srt.dn::after{opacity:1;border-top-color:var(--accent)}
th.srt.up::after{transform:rotate(180deg)}

/* ─── состояния ─── */
.sk{display:none}
.scr.loading .sk{display:block}
.scr.loading>*:not(.sk){display:none}
.skb{border-radius:10px;background:linear-gradient(90deg,var(--core-2) 25%,var(--rail) 50%,var(--core-2) 75%);
  background-size:220% 100%;animation:sh 1.3s linear infinite}
@keyframes sh{to{background-position:-220% 0}}
.empty{padding:48px var(--cpad);text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}
.empty .ic{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;
  background:var(--core-2);border:1px solid var(--hair);color:var(--faint)}
.empty .ic svg{width:22px;height:22px}
.empty b{font-size:15.5px;font-weight:500}
.empty p{font-size:13.5px;color:var(--faint);max-width:44ch}
.warn{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:13px 16px;border-radius:14px;
  background:var(--gap-dim);border:1px solid color-mix(in srgb,var(--gap) 28%,transparent);
  color:var(--gap);font-size:13.5px;margin-bottom:12px}
.warn .fill{flex:1}
.nodata{border-style:dashed!important;opacity:.62}

/* ─── командная палитра ─── */
.pal{position:fixed;inset:0;z-index:90;display:none;align-items:flex-start;justify-content:center;
  padding:12vh 16px 16px;background:color-mix(in srgb,var(--bg) 66%,transparent);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.pal.open{display:flex}
.pal .shell{width:min(580px,100%)}
.palinp{width:100%;border:none;background:none;color:var(--ink);font:inherit;font-size:16.5px;
  padding:17px 20px;letter-spacing:-.01em}
.palinp::placeholder{color:var(--faint)}
.palist{max-height:min(48vh,420px);overflow:auto;border-top:1px solid var(--hair);padding:6px}
.pali{display:flex;align-items:center;gap:13px;padding:11px 14px;border-radius:13px;font-size:14.5px;
  color:var(--ink-2);cursor:pointer}
.pali svg{width:17px;height:17px;color:var(--faint);flex-shrink:0}
.pali .hint{margin-left:auto;font-size:11.5px;color:var(--faint)}
.pali.sel{background:var(--accent-dim);color:var(--ink)}
.pali.sel svg{color:var(--accent)}
.palfoot{display:flex;gap:16px;padding:11px 18px;border-top:1px solid var(--hair);font-size:11.5px;color:var(--faint)}
kbd{font-family:'Geist Mono',monospace;font-size:10.5px;padding:2px 6px;border-radius:6px;
  background:var(--core-2);border:1px solid var(--hair);color:var(--muted)}

/* ─── подтверждение ─── */
.mod{position:fixed;inset:0;z-index:95;display:none;place-items:center;padding:20px;
  background:color-mix(in srgb,var(--bg) 70%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.mod.open{display:grid}
.mod .shell{width:min(460px,100%)}
.mod .core{padding:var(--cpad)}
.mod h3{font-size:19px;font-weight:500;letter-spacing:-.025em;margin-bottom:10px}
.mod p{font-size:14px;color:var(--muted);line-height:1.6;margin-bottom:18px}
.mod .row{display:flex;gap:10px;flex-wrap:wrap}

/* ─── уведомление ─── */
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);z-index:100;
  padding:13px 20px;border-radius:999px;background:var(--ink);color:var(--bg);font-size:14px;
  opacity:0;pointer-events:none;transition:opacity .4s var(--e),transform .5s var(--e)}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* ─── печать ─── */
@media print{
  body{background:#fff;color:#000;display:block}
  body::before,.rail,.rgrip,.mtop,.sheet,.pal,.mod,.toast,.acts,.more{display:none!important}
  main{max-width:none;padding:0}
  .shell{box-shadow:none;border:1px solid #ccc;padding:0;break-inside:avoid}
  .core{box-shadow:none}
  .rest{display:block!important}
  h1{font-size:22pt}
  .scr{display:none} .scr.on{display:block}
  a[href]::after{content:""}
}

/* происхождение модуля */
.rail nav button span em{display:block;font-style:normal;font-size:10.5px;color:var(--faint);
  letter-spacing:0;margin-top:1px;font-family:'Geist Mono',monospace}
.rail.mini nav button span em{display:none}
.sheet button em{font-style:normal;font-size:12px;color:var(--faint);margin-left:8px;font-family:'Geist Mono',monospace}
.exl{display:inline-block;vertical-align:middle;margin-left:12px;transform:translateY(-5px);
  padding:5px 12px;border-radius:999px;font-size:12.5px;font-weight:400;letter-spacing:-.01em;
  font-family:'Geist Mono',monospace;color:var(--muted);background:var(--core-2);border:1px solid var(--hair);
  white-space:nowrap}

/* плотные подписи в панели */
.pj .tx i{display:block;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj .tx b{line-height:1.3}
.me b{line-height:1.3}
.me i{display:block;line-height:1.25}
.mtop .nm b{line-height:1.3}
.mtop .nm i{display:block;line-height:1.25}
.rail nav button>span{flex:1;min-width:0;line-height:1.3}
.rail nav button span em{line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.grp{line-height:1.3}

/* узкая панель: счётчик уходит под название, слова не рубятся */
.rail nav button{flex-wrap:wrap;row-gap:5px}
.rail nav button>span{flex:1 1 92px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail nav button .bdg{flex:0 0 auto;margin-left:auto}
.rail.mini nav button{flex-wrap:nowrap}
/* мидворд-переносы только там, где без них поедет вёрстка */
h1,h2,h3,.rail nav button,.sheet button,.lane .nm,.chip,.bdg,.exl,.pj,.me,.mtop .nm,
.tile .k,.tile .v,.sech h2,.ch h2,.qi b,.rl .tx b{overflow-wrap:normal;word-break:normal}

/* статус ожидания */
.chip.v{background:var(--wait-dim);color:var(--wait);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--wait) 30%,transparent)}
.dot.v{background:var(--wait)}
.tagpill.v{background:var(--wait-dim);color:var(--wait)}

/* выпадающие списки */
.ddwrap{position:relative}
.ddm{position:absolute;top:calc(100% + 8px);left:0;z-index:80;min-width:230px;padding:8px;
  border-radius:18px;background:var(--core);border:1px solid var(--shell-ring);box-shadow:var(--lift);
  display:none;max-height:330px;overflow:auto}
.ddm.open{display:block}
.ddm.right{left:auto;right:0}
.ddt{font-size:11px;color:var(--faint);padding:8px 12px 5px}
.ddm button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:10px 12px;
  border-radius:12px;font-size:14px;color:var(--ink-2);min-height:42px}
.ddm button:hover{background:var(--core-2);color:var(--ink)}
.ddm button.on{background:var(--accent-dim);color:var(--ink)}
.ddm button .tick{margin-left:auto;width:15px;height:15px;color:var(--accent);opacity:0}
.ddm button.on .tick{opacity:1}

/* подсказки */
.tip{position:fixed;z-index:120;max-width:280px;padding:10px 13px;border-radius:12px;
  background:var(--core);border:1px solid var(--shell-ring);box-shadow:var(--lift);
  font-size:12.5px;line-height:1.5;color:var(--ink-2);opacity:0;pointer-events:none;
  transform:translateY(4px);transition:opacity .22s var(--e),transform .22s var(--e)}
.tip.on{opacity:1;transform:none}
.tip b{display:block;font-size:11px;color:var(--faint);font-weight:400;margin-bottom:3px}
[data-tip]{cursor:help;text-decoration:underline;text-decoration-style:dotted;
  text-decoration-color:var(--faint);text-underline-offset:4px}

/* занятые и выключенные кнопки */
.gbtn.busy,.ghost.busy{pointer-events:none;opacity:.72}
.gbtn.busy .kn svg,.ghost.busy svg{animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.gbtn[disabled],.ghost[disabled]{opacity:.42;pointer-events:none}

/* поиск в таблице */
.tsearch{display:flex;align-items:center;gap:9px;padding:0 14px;height:40px;border-radius:999px;
  border:1px solid var(--shell-ring);background:var(--shell);min-width:210px}
.tsearch svg{width:15px;height:15px;color:var(--faint);flex-shrink:0}
.tsearch input{border:none;background:none;color:var(--ink);font:inherit;font-size:13.5px;width:100%;outline:none}
.tsearch input::placeholder{color:var(--faint)}

/* поле диалога */
.compose textarea{flex:1;border:1px solid var(--hair);border-radius:22px;background:var(--core-2);
  padding:12px 18px;font:inherit;font-size:14.5px;color:var(--ink);resize:none;min-height:46px;max-height:130px;
  outline:none;line-height:1.5}
.compose textarea:focus{border-color:var(--accent-line)}
.typing{display:inline-flex;gap:4px;align-items:center}
.typing i{width:5px;height:5px;border-radius:50%;background:var(--faint);animation:blink 1.1s infinite}
.typing i:nth-child(2){animation-delay:.18s}.typing i:nth-child(3){animation-delay:.36s}
@keyframes blink{0%,60%,100%{opacity:.3}30%{opacity:1}}

/* цели для пальца */
@media (max-width:720px){
  .seg button{min-height:40px}
  .ghost.sm{height:40px;padding:0 15px}
  .sw{width:46px;height:27px}
  .sw::after{width:21px;height:21px}
  .sw.on::after{transform:translateX(19px)}
  .ddm button{min-height:46px}
}

/* ─── фирменный знак ─── */
.logo{color:var(--ink)}
.logo .lg-full{width:132px;height:28px;flex-shrink:0}
.logo .lg-mark{width:24px;height:24px;flex-shrink:0;display:none}
.rail.mini .logo .lg-full{display:none}
.rail.mini .logo .lg-mark{display:block}
.logo.logo-lg .lg-full{width:168px;height:36px}
.mlogo{display:flex;flex-shrink:0}
.mlogo .lg-mark{width:24px;height:24px;color:var(--ink)}
@media (max-width:1180px) and (min-width:961px){
  .logo .lg-full{display:none}
  .logo .lg-mark{display:block}
}

/* ─── кнопка входа: плавная заливка вместо увеличения ─── */
.gbtn.sweep{
  background:linear-gradient(110deg,
    var(--accent) 0%,
    color-mix(in srgb, var(--accent) 62%, var(--gap)) 38%,
    color-mix(in srgb, var(--accent) 78%, #fff) 52%,
    var(--accent) 100%);
  background-size:260% 100%;
  background-position:100% 0;
  color:#fff;
  transition:background-position 1.1s var(--e), box-shadow .5s var(--e);
  box-shadow:0 8px 26px -14px color-mix(in srgb, var(--accent) 80%, transparent);
}
.gbtn.sweep:hover{background-position:0 0;opacity:1;
  box-shadow:0 12px 34px -14px color-mix(in srgb, var(--accent) 90%, transparent)}
.gbtn.sweep:active{transform:none;background-position:22% 0}
.gbtn.sweep .kn{background:rgba(255,255,255,.18);color:#fff}
.gbtn.sweep:hover .kn{transform:none}
[data-theme="light"] .gbtn.sweep{color:#fff}

/* ─── меню собрано на ссылках, а не на кнопках ─── */
.rail nav a{display:flex;align-items:center;gap:12px;padding:10px 11px;border-radius:13px;
  color:var(--muted);font-size:14px;min-height:42px;width:100%;text-align:left;
  flex-wrap:wrap;row-gap:5px;
  transition:background .4s var(--e),color .4s var(--e),transform .4s var(--e)}
.rail nav a svg{width:16px;height:16px;flex-shrink:0;opacity:.9}
.rail nav a>span{flex:1 1 92px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
.rail nav a span em{display:block;font-style:normal;font-size:10.5px;color:var(--faint);
  letter-spacing:0;margin-top:1px;font-family:'Geist Mono',monospace;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.rail nav a.on{color:var(--ink);background:var(--accent-dim);box-shadow:inset 0 0 0 1px var(--accent-line)}
.rail nav a.on svg{color:var(--accent);opacity:1}
.rail.mini nav a{flex-wrap:nowrap;justify-content:center;padding:11px 0}
.rail.mini nav a>span{display:none}
@media (hover:hover){.rail nav a:hover{color:var(--ink);background:var(--core-2);transform:translateX(2px)}}
@media (max-width:1180px) and (min-width:961px){
  .rail nav a{justify-content:center;padding:11px 0;flex-wrap:nowrap}
  .rail nav a>span{display:none}
}

/* мобильное меню тоже на ссылках */
.sheet a{display:flex;align-items:center;gap:14px;padding:13px 12px;border-radius:16px;
  font-size:17px;color:var(--ink-2);min-height:50px;width:100%;
  opacity:0;transform:translateY(16px);transition:opacity .6s var(--e),transform .6s var(--e)}
.sheet.open a{opacity:1;transform:none}
.sheet a svg{width:19px;height:19px;flex-shrink:0;color:var(--faint)}
.sheet a em{font-style:normal;font-size:12px;color:var(--faint);margin-left:8px;font-family:'Geist Mono',monospace}
.sheet a.on{background:var(--accent-dim);color:var(--ink);box-shadow:inset 0 0 0 1px var(--accent-line)}


/* ══════════════════════════════════════════════════════════════
   ПРОХОД ПО ДИЗАЙНУ: контраст, формы, тумблеры, заливка кнопок
   ══════════════════════════════════════════════════════════════ */

/* ─── контраст ───
   Было: приглушённый текст в тёмной теме давал около 2,8:1 — ниже нормы.
   Стало: подписи полей и пояснения читаются на обеих темах. */
[data-theme="dark"]{
  --ink-2:#D3D8E0;
  --muted:#A2A8B4;
  --faint:#7C8290;
  --hair:rgba(255,255,255,.085);
  --shell-ring:rgba(255,255,255,.095);
}
[data-theme="light"]{
  --ink-2:#2A2F3A;
  --muted:#525863;
  --faint:#6B7280;
  --hair:rgba(12,14,22,.09);
  --shell-ring:rgba(12,14,22,.08);
}

/* ─── поля форм ─── */
.frow{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px}
.fld{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1 1 180px}
.fld.w-sm{flex:0 1 140px} .fld.w-lg{flex:1 1 280px} .fld.w-full{flex:1 1 100%}
.fld label{font-size:12px;color:var(--faint);padding-left:2px}
.fld input,.fld select,.fld textarea{
  width:100%;height:44px;padding:0 14px;border-radius:13px;
  border:1px solid var(--hair);background:var(--core-2);color:var(--ink);
  font:inherit;font-size:14.5px;outline:none;
  transition:border-color .3s var(--e),background .3s var(--e),box-shadow .3s var(--e)}
.fld textarea{height:auto;min-height:88px;padding:12px 14px;resize:vertical;line-height:1.55}
.fld input::placeholder,.fld textarea::placeholder{color:var(--faint)}
.fld input:hover,.fld select:hover,.fld textarea:hover{border-color:var(--line-2,var(--shell-ring))}
.fld input:focus,.fld select:focus,.fld textarea:focus{
  border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-dim)}
.fld select{
  appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:38px;
  background-image:linear-gradient(45deg,transparent 50%,var(--faint) 50%),
                   linear-gradient(135deg,var(--faint) 50%,transparent 50%);
  background-position:calc(100% - 19px) 50%, calc(100% - 13px) 50%;
  background-size:6px 6px, 6px 6px;background-repeat:no-repeat}
.fld input[type="file"]{padding:9px 12px;height:auto;cursor:pointer}
.fld input[type="file"]::file-selector-button{
  border:1px solid var(--hair);background:var(--core);color:var(--ink-2);
  border-radius:9px;padding:7px 13px;margin-right:12px;font:inherit;font-size:13px;cursor:pointer}
.fld .hint{font-size:11.5px;color:var(--faint);padding-left:2px}

/* ─── тумблер вместо галочки ─── */
.tgl{display:inline-flex;align-items:center;gap:11px;cursor:pointer;
  font-size:13.5px;color:var(--ink-2);user-select:none;min-height:44px;padding:0 2px}
.tgl input{position:absolute;opacity:0;width:0;height:0}
.tgl .track{width:42px;height:24px;border-radius:99px;background:var(--rail);position:relative;
  flex-shrink:0;transition:background .35s var(--e),box-shadow .35s var(--e)}
.tgl .track::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;
  border-radius:50%;background:var(--muted);
  transition:transform .4s var(--e),background .35s var(--e)}
.tgl input:checked + .track{background:var(--accent-dim);box-shadow:inset 0 0 0 1px var(--accent-line)}
.tgl input:checked + .track::after{transform:translateX(18px);background:var(--accent)}
.tgl input:focus-visible + .track{outline:2px solid var(--accent);outline-offset:2px}
.tgl.tgl-sm .track{width:36px;height:21px}
.tgl.tgl-sm .track::after{width:15px;height:15px}
.tgl.tgl-sm input:checked + .track::after{transform:translateX(15px)}
.tglgrid{display:flex;gap:8px 18px;flex-wrap:wrap;margin-bottom:14px}

/* ─── заливка на всех основных кнопках ─── */
.gbtn{
  background-color:var(--ink);
  background-image:linear-gradient(110deg,
    transparent 0%, transparent 34%,
    color-mix(in srgb, var(--accent) 60%, transparent) 48%,
    transparent 62%, transparent 100%);
  background-size:280% 100%;
  background-position:100% 0;
  background-repeat:no-repeat;
  transition:background-position 1s var(--e), box-shadow .5s var(--e)}
.gbtn:hover{opacity:1;background-position:0 0;
  box-shadow:0 10px 30px -18px color-mix(in srgb, var(--ink) 80%, transparent)}
.gbtn:hover .kn{transform:none}
.gbtn:active{transform:scale(.985)}
.ghost{
  background-image:linear-gradient(110deg,
    transparent 0%, transparent 36%,
    var(--accent-dim) 50%,
    transparent 64%, transparent 100%);
  background-size:280% 100%;background-position:100% 0;background-repeat:no-repeat;
  transition:background-position .9s var(--e),border-color .4s var(--e)}
.ghost:hover{background-position:0 0;border-color:var(--accent-line)}
.ghost:active{transform:scale(.985)}

/* ─── переключатель темы в панели ─── */
.themebtn{display:flex;align-items:center;gap:11px;width:100%;padding:10px 11px;
  border-radius:13px;color:var(--muted);font-size:14px;min-height:42px;
  transition:background .4s var(--e),color .4s var(--e)}
.themebtn svg{width:16px;height:16px}
.themebtn .ti{display:flex}
[data-theme="dark"] .themebtn .sun{display:none}
[data-theme="light"] .themebtn .moon{display:none}
@media (hover:hover){.themebtn:hover{background:var(--core-2);color:var(--ink)}}
.mtop .themebtn{width:auto;padding:9px;border-radius:50%;flex-shrink:0}
.mtop .themebtn .tlabel{display:none}
.rail.mini .themebtn{justify-content:center;padding:11px 0}
.rail.mini .themebtn .tlabel{display:none}
@media (max-width:1180px) and (min-width:961px){
  .themebtn{justify-content:center;padding:11px 0}
  .themebtn .tlabel{display:none}
}

/* ─── выход рядом с аватаром ─── */
.me .exit{margin-left:auto;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;
  color:var(--faint);flex-shrink:0;transition:color .3s var(--e),background .3s var(--e)}
.me .exit svg{width:16px;height:16px}
@media (hover:hover){.me .exit:hover{color:var(--ink);background:var(--core-2)}}
.rail.mini .me .exit{display:none}
@media (max-width:1180px) and (min-width:961px){.me .exit{display:none}}

/* ─── сообщения ─── */
.msgbar{display:flex;align-items:flex-start;gap:11px;padding:13px 16px;border-radius:14px;
  font-size:13.5px;line-height:1.5;margin-bottom:10px;border:1px solid transparent}
.msgbar svg{width:17px;height:17px;flex-shrink:0;margin-top:1px}
.msgbar.ok{background:var(--good-dim);color:var(--good);border-color:color-mix(in srgb,var(--good) 28%,transparent)}
.msgbar.warn{background:var(--gap-dim);color:var(--gap);border-color:color-mix(in srgb,var(--gap) 28%,transparent)}
.msgbar.err{background:var(--gap-dim);color:var(--gap);border-color:color-mix(in srgb,var(--gap) 40%,transparent)}
.msgbar.info{background:var(--accent-dim);color:var(--accent);border-color:var(--accent-line)}

/* ─── карточка-форма ─── */
.formcard{padding:var(--cpad)}
.formcard h2{font-size:16px;font-weight:500;letter-spacing:-.015em;margin-bottom:4px}
.formcard .lead{font-size:13px;color:var(--faint);margin-bottom:16px;max-width:70ch;line-height:1.55}
