/* --- Темы скелета «со.единение»: «Бумага» (светлая) и «Графит» (тёмная). Ни одного цвета какого-либо отряда —
   отряд кладёт свои темы в squad.css своего профиля. Основной цвет (accent) значит «отрядное, от тебя чего-то ждут»,
   второй (sky) — «моё личное, уже закрыто». --- */
:root{
  --bg:#F4F4F1;--surface:#FFFFFF;--surface-2:#E9E9E5;--ink:#15171C;--muted:#6E727C;--line:rgba(21,23,28,.08);
  --accent:#4C55E0;--on-accent:#FFFFFF;--accent-soft:#E2E4FB;--accent-text:#3239B8;
  --sky:#0E9C88;--sky-soft:#D7F1EC;--sky-text:#0A6F61;--sky-bright:#2CC2AC;
  --ok:#1D7F46;--ok-soft:#DDF0E3;--warn:#9A5B00;--warn-soft:#FDF0D5;--danger:#B3261E;--danger-soft:#FBE3E1;
  --hero:#15171C;--hero-ink:#F4F4F1;--hero-muted:#9DA1AA;
  --glass:rgba(255,255,255,.62);--glass-edge:rgba(255,255,255,.75);--glass-dark:rgba(21,23,28,.66);
  --sh-1:0 1px 2px rgba(21,23,28,.05),0 10px 26px -16px rgba(21,23,28,.4);
  --sh-2:0 2px 8px rgba(21,23,28,.07),0 22px 48px -24px rgba(21,23,28,.6);
  --aura:radial-gradient(42% 26% at 84% 2%,color-mix(in srgb,var(--accent) 26%,transparent),transparent 72%),
    radial-gradient(38% 24% at 2% 22%,color-mix(in srgb,var(--sky) 20%,transparent),transparent 72%),
    radial-gradient(52% 30% at 56% 98%,color-mix(in srgb,var(--sky) 14%,transparent),transparent 74%);
  --display:"Unbounded","Manrope",system-ui,sans-serif;--body:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;
  --ease:cubic-bezier(.23,1,.32,1);--drawer:cubic-bezier(.32,.72,0,1);--ease-soft:cubic-bezier(.77,0,.175,1);
  --t-press:130ms;--t-tap:180ms;--t-sheet:380ms;
  color-scheme:light;
}
/* «Графит» */
:root[data-theme="night"],:root[data-theme="dark"]{
  --bg:#111317;--surface:#1A1D23;--surface-2:#252930;--ink:#EEF0F4;--muted:#9097A3;--line:rgba(255,255,255,.08);
  --accent:#8B93FF;--on-accent:#111317;--accent-soft:#23264A;--accent-text:#B3B8FF;
  --sky:#3ED1BB;--sky-soft:#0F2E2A;--sky-text:#8BE6D7;--sky-bright:#6FE3D0;
  --ok:#62D18F;--ok-soft:#14301F;--warn:#F2B650;--warn-soft:#352711;--danger:#FF8A80;--danger-soft:#3A1614;
  --hero:#1D2027;--hero-ink:#EEF0F4;--hero-muted:#9097A3;
  --glass:rgba(32,35,42,.6);--glass-edge:rgba(255,255,255,.1);--glass-dark:rgba(15,17,20,.66);
  --sh-1:0 1px 2px rgba(0,0,0,.4),0 12px 28px -18px rgba(0,0,0,.9);
  --sh-2:0 2px 10px rgba(0,0,0,.5),0 24px 52px -26px #000;
  --aura:radial-gradient(60% 22% at 72% -6%,color-mix(in srgb,var(--accent) 13%,transparent),transparent 76%),
    radial-gradient(52% 20% at 10% 4%,color-mix(in srgb,var(--sky) 9%,transparent),transparent 78%);
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:14px;-webkit-font-smoothing:antialiased;overscroll-behavior:none}
#root{height:100%}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
button:disabled{opacity:.5;cursor:default}
.press{transition:transform var(--t-press) var(--ease)}
.press:active:not(:disabled){transform:scale(.97)}
/* Крупные блоки сжимаются меньше — иначе движение выглядит резким */
.card.press:active:not(:disabled),.attn-row:active,.li:active,.ev:active,.op:active{transform:scale(.985)}
.attn-row,.li,.ev,.op,.fee-row{transition:transform var(--t-press) var(--ease)}
@media (hover:hover) and (pointer:fine){
  .li:hover,.attn-row:hover,.ev:hover,.op:hover{background:color-mix(in srgb,var(--ink) 4%,transparent);border-radius:12px}
}
svg.i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
svg.i.s{width:16px;height:16px}

.app{position:relative;height:100%;overflow:hidden;overflow:clip}
.scroll{position:absolute;inset:0;overflow-y:auto;padding:calc(12px + env(safe-area-inset-top,0px)) 16px calc(104px + env(safe-area-inset-bottom,0px));scrollbar-width:none}
.scroll::-webkit-scrollbar{display:none}
.screen{display:flex;flex-direction:column;gap:12px;max-width:560px;margin:0 auto}

.hdr{display:flex;align-items:center;gap:12px;padding:4px 2px 6px}
.ava{width:46px;height:46px;border-radius:50%;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;font-family:var(--display);font-weight:700;font-size:15px;flex:none;position:relative;overflow:hidden}
.ava img{width:100%;height:100%;object-fit:cover}
.ava.ring::after{content:"";position:absolute;inset:-3px;border-radius:50%;border:1.5px solid var(--accent);opacity:.35}
.ava.sm{width:38px;height:38px;font-size:12px}
.ava.lg{width:84px;height:84px;font-size:26px}
.ava.muted{background:var(--surface-2);color:var(--muted)}
.hdr-t{flex:1;min-width:0;text-align:left}
.hdr-name{font-weight:700;font-size:17px;line-height:1.2}
/* Строка статуса — обычный текст: если должностей несколько и строка переносится,
   продолжение идёт от левого края под именем, а не узкой колонкой правее значков */
.status{display:block;margin-top:3px;font-family:var(--display);font-weight:500;font-size:12px;line-height:1.35;color:var(--accent-text)}
.icon-btn{width:42px;height:42px;border-radius:14px;background:var(--surface);display:grid;place-items:center;position:relative}
.h1{font-family:var(--display);font-weight:700;font-size:25px;letter-spacing:-.028em;line-height:1.08;margin:0;padding:8px 2px 2px}
.sheet-title{letter-spacing:-.022em}
b,strong,.li-name,.ev-title,.op-title,.prod-t,.dues-t{letter-spacing:-.006em}
.num,.op-sum,.bal-sum,.fee-sum,.day,.count{font-variant-numeric:tabular-nums}

.card{background:var(--surface);border-radius:24px;padding:16px}
.eyebrow{font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--muted)}
.row{display:flex;align-items:center;gap:10px}
.sp{flex:1;min-width:0}
.muted{color:var(--muted)}
.small{font-size:12.5px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 18px;border-radius:14px;font-weight:700;font-size:14px}
.btn-accent{background:var(--accent);color:var(--on-accent)}
.btn-soft{background:var(--surface-2);color:var(--ink)}
.btn-ghost{background:transparent;border:1.5px solid var(--line);color:var(--ink)}
.btn-danger{background:var(--danger-soft);color:var(--danger)}
.btn-sm{height:34px;padding:0 12px;border-radius:11px;font-size:13px}
.btn-block{width:100%}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:4px 9px;border-radius:999px;background:var(--surface-2);color:var(--muted);white-space:nowrap}
.chip-accent{background:var(--accent-soft);color:var(--accent-text)}
.chip-ok{background:var(--ok-soft);color:var(--ok)}
.chip-warn{background:var(--warn-soft);color:var(--warn)}
.chip.display{font-family:var(--display);font-weight:500;font-size:11.5px}

.attn{background:var(--surface);border-radius:24px;padding:14px 16px;display:flex;flex-direction:column}
.attn-row{display:flex;align-items:center;gap:12px;padding:9px 0;text-align:left;width:100%}
.attn-row+.attn-row{border-top:1px solid var(--line)}
.num{min-width:26px;height:26px;padding:0 6px;border-radius:9px;background:var(--accent);color:var(--on-accent);font-weight:700;font-size:13px;display:grid;place-items:center;font-variant-numeric:tabular-nums}
.num.zero{background:var(--surface-2);color:var(--muted)}

.cal-h{display:flex;align-items:center;gap:6px;margin-bottom:12px}
.cal-title{font-family:var(--display);font-weight:500;font-size:17px;flex:1;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
/* На узком экране подпись у кнопки прячется, иначе название месяца переносится на вторую строку */
@media (max-width:420px){
  .cal-add .lbl{display:none}
  .cal-add{width:34px;height:34px;padding:0;border-radius:11px}
  .cal-add svg{margin:0}
}
.grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));row-gap:4px;text-align:center}
.wd{font-size:11px;font-weight:700;color:var(--muted);padding-bottom:4px}
.day{height:40px;display:grid;place-items:center;font-weight:600;font-size:14px;font-variant-numeric:tabular-nums;border-radius:13px}
.day.past{color:var(--muted)}
.day.today{background:var(--ink);color:var(--bg)}
.soon{margin-top:12px;border-top:1px solid var(--line);padding-top:12px;font-size:13px;color:var(--muted);display:flex;gap:8px;align-items:center}

.placeholder{background:var(--surface);border-radius:24px;padding:28px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}
.placeholder .big{width:64px;height:64px;border-radius:22px;background:var(--accent-soft);color:var(--accent-text);display:grid;place-items:center}
.placeholder .big svg{width:30px;height:30px}
.placeholder h2{font-family:var(--display);font-weight:700;font-size:19px;margin:6px 0 0}
.placeholder p{margin:0;color:var(--muted);line-height:1.55;max-width:300px}

.tabbar{position:absolute;left:50%;bottom:calc(18px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:flex;gap:4px;padding:6px;border-radius:22px;background:var(--hero);z-index:4}
.tab{height:48px;padding:0 16px;border-radius:17px;display:flex;align-items:center;gap:8px;color:var(--hero-muted);font-weight:700;font-size:13px;transition:background 200ms var(--ease),color 200ms var(--ease)}
.tab .lbl{display:none}
.tab[aria-current="page"]{background:var(--accent);color:var(--on-accent)}
.tab[aria-current="page"] .lbl{display:inline}

.sheet-wrap{position:absolute;inset:0;z-index:10}
.backdrop{position:absolute;inset:0;background:rgba(10,8,7,.45);opacity:0;transition:opacity 260ms ease}
.sheet-wrap.shown .backdrop{opacity:calc(var(--backdrop,1))}
.sheet{isolation:isolate;position:absolute;left:0;right:0;bottom:0;max-height:calc(100% - 40px - env(safe-area-inset-top,0px));overflow-y:auto;overscroll-behavior:contain;background:var(--bg);border-radius:30px 30px 0 0;padding:0 18px calc(28px + env(safe-area-inset-bottom,0px));transform:translateY(100%);transition:transform var(--t-sheet) var(--drawer);scrollbar-width:none;max-width:640px;margin:0 auto;will-change:transform}
/* Зона перетаскивания: широкая, чтобы попадать пальцем, и не перехватывает прокрутку списка. */
.grab-zone{position:sticky;top:0;z-index:2;margin:0 -18px;padding:11px 18px 7px;touch-action:none;cursor:grab;background:linear-gradient(var(--bg) 70%,transparent)}
.sheet{touch-action:pan-y}
.sheet-wrap.dragging .sheet,.sheet-wrap.dragging .sheet *{user-select:none;-webkit-user-select:none}
.grab-zone:active{cursor:grabbing}
.sheet.tall{height:calc(100% - 40px - env(safe-area-inset-top,0px))}
.sheet-wrap.shown .sheet{transform:translateY(0)}
.grab{width:38px;height:5px;border-radius:5px;background:var(--muted);opacity:.32;margin:0 auto;transition:opacity var(--t-tap) var(--ease),transform var(--t-tap) var(--ease)}
.grab-zone:active .grab{opacity:.55;transform:scaleX(1.12)}
.sheet-wrap.dragging .sheet{transition:none}
.sheet-h{display:flex;align-items:flex-start;gap:10px;margin-bottom:14px}
.sheet-title{font-family:var(--display);font-weight:700;font-size:21px;line-height:1.25;letter-spacing:-.01em;margin:0;text-wrap:balance}
.close{width:36px;height:36px;border-radius:12px;background:var(--surface-2);display:grid;place-items:center;flex:none}
.close svg{width:16px;height:16px}

.facts{background:var(--surface);border-radius:20px;padding:4px 14px;margin-bottom:12px}
.fact{display:flex;gap:12px;align-items:center;padding:11px 0}
.fact+.fact{border-top:1px solid var(--line)}
.fact>svg{color:var(--accent)}
.fact small{display:block;font-size:11.5px;color:var(--muted);font-weight:600}
.fact .v{font-weight:600;font-size:14px}
/* Факты о человеке одной полосой: значение крупно, подпись мелко, между ячейками — тонкая черта */
.facts-strip{display:flex;padding:12px 4px;margin-bottom:8px}
.fs{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:0 6px;text-align:center}
.fs+.fs{border-left:1px solid var(--line)}
.fs-v{display:inline-flex;align-items:center;gap:5px;font-family:var(--display);font-weight:700;font-size:16px;line-height:1.15;white-space:nowrap}
.fs-v svg{color:var(--accent);flex:none;width:15px;height:15px}
.fs-l{font-size:11px;font-weight:600;color:var(--muted);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.fs.warn .fs-v{color:var(--warn)}
.fs-v.t{font-family:var(--body);font-size:13.5px;font-weight:800}
.facts-strip:has(.fs:nth-child(4)) .fs{padding:0 3px}
.facts-strip:has(.fs:nth-child(4)) .fs-v{gap:4px}
.facts-strip:has(.fs:nth-child(4)) .fs-v:not(.t){font-size:14.5px}
.fs-tg{display:flex;justify-content:center;align-items:center;gap:6px;margin:0 0 12px;font-size:12.5px;font-weight:600;color:var(--muted)}
.fs-tg svg{width:14px;height:14px}
.fs-tg.off{opacity:.75}
/* Демо: полоска сверху и быстрый выбор роли */
.demo-bar{display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:8px 12px;border-radius:14px;
  background:var(--accent-soft);color:var(--accent-text);font-size:12px;line-height:1.35}
.demo-bar button{flex:none;font-weight:700;font-size:12px;text-decoration:underline;text-underline-offset:3px}
.demo-roles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:100%}
.demo-role{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;border-radius:18px;
  background:var(--surface);box-shadow:var(--sh-1);text-align:center}
.demo-role-t{font-family:var(--display);font-weight:700;font-size:13px}
.demo-role-s{font-size:11px;color:var(--muted);line-height:1.25}
.prof{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:0 0 16px}
.prof-name{font-family:var(--display);font-weight:700;font-size:20px;margin-top:8px;text-wrap:balance}
.hist{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-top:4px}
.stack{display:flex;flex-direction:column;gap:8px}
.section{margin:18px 2px 8px}

.search{display:flex;align-items:center;gap:8px;background:var(--surface);border-radius:15px;padding:0 12px;height:44px;color:var(--muted)}
.search input{flex:1;border:0;background:transparent;font:inherit;font-size:15px;color:var(--ink);outline:none;min-width:0}
.filters{display:flex;gap:6px;overflow-x:auto;margin:10px -18px 4px;padding:0 18px;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.filter{height:34px;padding:0 13px;border-radius:11px;background:var(--surface);font-weight:700;font-size:13px;color:var(--muted);white-space:nowrap;flex:none}
.filter[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.list{background:var(--surface);border-radius:20px;padding:2px 12px}
.li{display:flex;align-items:center;gap:12px;padding:10px 0;width:100%;text-align:left}
.li+.li{border-top:1px solid var(--line)}
.li-t{flex:1;min-width:0}
.li-name{font-weight:700;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.li-sub{font-size:12.5px;color:var(--muted);margin-top:1px}
.li-sub.accent{color:var(--accent-text);font-weight:600}
.tg{color:var(--muted)}
.tg.on{color:#2AABEE}
.count{font-size:12px;color:var(--muted);font-weight:600;margin-left:6px;text-transform:none;letter-spacing:0}

.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:12px;font-weight:700;color:var(--muted)}
.input,select.input{height:46px;border-radius:14px;border:1.5px solid var(--line);background:var(--surface);padding:0 14px;font:inherit;font-size:15px;color:var(--ink);width:100%;appearance:none}
select.input{background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 20px) 20px,calc(100% - 15px) 20px;background-size:5px 5px;background-repeat:no-repeat;padding-right:36px}
.input:focus{border-color:var(--accent);outline:none}
.form{display:flex;flex-direction:column;gap:12px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.seg{display:flex;background:var(--surface-2);border-radius:14px;padding:4px;gap:2px}
.seg button{flex:1;padding:9px 6px;border-radius:10px;font-weight:700;font-size:13px;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink)}

.app-card{background:var(--surface);border-radius:22px;padding:16px;display:flex;flex-direction:column;gap:12px}
.app-name{font-weight:700;font-size:16px}
.hint{background:var(--accent-soft);color:var(--accent-text);border-radius:14px;padding:10px 12px;font-size:13px;font-weight:600;line-height:1.45}
.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.actions .wide{grid-column:1/-1}

.pos-row{display:flex;align-items:center;gap:10px;padding:8px 0}
.pos-row+.pos-row{border-top:1px solid var(--line)}
.x-btn{width:32px;height:32px;border-radius:10px;background:var(--surface-2);color:var(--muted);display:grid;place-items:center}

.gate{min-height:100%;display:flex;flex-direction:column;justify-content:center;gap:18px;padding:calc(24px + env(safe-area-inset-top,0px)) 20px calc(24px + env(safe-area-inset-bottom,0px));max-width:460px;margin:0 auto}
.brand{font-family:var(--display);font-weight:700;font-size:40px;letter-spacing:-.03em;line-height:1}
.brand span{color:var(--accent)}
.gate p{margin:0;color:var(--muted);line-height:1.6;font-size:15px}
.gate-scroll{position:absolute;inset:0;overflow-y:auto}

.toast{position:absolute;left:16px;right:16px;bottom:calc(92px + env(safe-area-inset-bottom,0px));z-index:30;background:var(--ink);color:var(--bg);border-radius:16px;padding:13px 16px;font-weight:600;font-size:13.5px;display:flex;gap:10px;align-items:center;opacity:0;transform:translateY(10px);transition:opacity 200ms ease,transform 260ms var(--ease);pointer-events:none;max-width:528px;margin:0 auto}
.toast.show{opacity:1;transform:translateY(0)}
.toast.err svg{color:var(--danger)}
.toast svg{color:var(--accent)}
.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--surface-2);border-top-color:var(--accent);animation:spin .7s linear infinite;margin:40px auto}
@keyframes spin{to{transform:rotate(360deg)}}
.empty{padding:22px 8px;text-align:center;color:var(--muted);font-size:14px}

@media (prefers-reduced-motion:reduce){
  .sheet,.toast,.press,.tab,.backdrop{transition-duration:0ms}
}

/* --- Календарь --- */
.nav-btn{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:var(--surface-2)}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin:-2px 0 10px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.lgd{width:8px;height:8px;border-radius:50%;display:inline-block}
button.day{flex-direction:column;gap:3px;display:flex;align-items:center;justify-content:center;position:relative}
.day .dots{display:flex;gap:3px;height:5px}
.dot{width:5px;height:5px;border-radius:50%}
.dot.draft{background:transparent !important;border:1.5px dashed var(--muted);width:6px;height:6px}
.t-squad{background:var(--accent)}
.t-city{background:var(--ink)}
.t-personal{background:var(--plum)}
.t-shift{background:var(--accent-soft);border:1.5px solid var(--accent)}
.day.today{background:transparent;color:var(--accent)}
.day.sel{background:var(--ink);color:var(--bg);border-radius:13px}
.day.sel .t-city{background:var(--bg)}
/* Свои типы мероприятий из профиля отряда: цвет приходит в --tc */
.t-x{background:var(--tc)}
.day.sel .t-x-ink{background:var(--bg)}
.ev-list{margin-top:12px;border-top:1px solid var(--line);padding-top:6px;display:flex;flex-direction:column}
.ev{display:flex;gap:12px;align-items:center;padding:10px 0;text-align:left;width:100%}
.ev+.ev{border-top:1px solid var(--line)}
.ev-time{width:52px;flex:none;font-family:var(--display);font-weight:500;font-size:14px}
.ev-time small{display:block;font-family:var(--body);font-size:11px;color:var(--muted);font-weight:600}
.ev-bar{width:3px;align-self:stretch;border-radius:3px;flex:none}
.ev-bar.t-shift{background:var(--accent);border:0}
.ev-t{flex:1;min-width:0}
.ev-title{font-weight:700;font-size:14.5px;line-height:1.3}
.ev-sub{font-size:12.5px;color:var(--muted);margin-top:2px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.tag{font-size:11px;font-weight:700;padding:2px 7px;border-radius:7px;background:var(--surface-2);color:var(--muted)}
.tag.warn{background:var(--warn-soft);color:var(--warn)}
.tag.ok{background:var(--ok-soft);color:var(--ok)}
.tag.accent{background:var(--accent-soft);color:var(--accent-text)}
.drafts{display:flex;align-items:center;gap:10px;margin-top:12px;padding:10px 12px;border-radius:14px;border:1.5px dashed var(--line);font-size:13px}

/* --- Мероприятие --- */
.tbd{color:var(--muted);font-style:italic;font-weight:500}
.desc{line-height:1.6;font-size:14px;margin:0 2px 14px;white-space:pre-wrap}
.rsvp{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.rsvp .btn{height:48px}
.rsvp .btn[aria-pressed="true"].go{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.rsvp .btn[aria-pressed="true"].no{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.fee{background:var(--surface);border-radius:20px;padding:14px;margin-bottom:12px;display:flex;flex-direction:column;gap:10px}
.fee-top{display:flex;align-items:flex-start;gap:10px}
.fee-sum{font-family:var(--display);font-weight:700;font-size:22px;font-variant-numeric:tabular-nums}
.faces{display:flex;flex-wrap:wrap;gap:10px 8px}
.face{display:flex;flex-direction:column;align-items:center;gap:4px;width:58px;text-align:center;font-size:11px;font-weight:600;line-height:1.2}
.face span{max-width:58px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.links{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.warnbox{background:var(--warn-soft);color:var(--warn);border-radius:14px;padding:10px 12px;font-size:13px;font-weight:600;line-height:1.5;margin-bottom:12px}
.fee-row{display:flex;align-items:center;gap:10px;padding:8px 0}
.fee-row+.fee-row{border-top:1px solid var(--line)}
.stat{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
.stat div{background:var(--surface-2);border-radius:14px;padding:10px;text-align:center}
.stat b{display:block;font-family:var(--display);font-size:18px;font-variant-numeric:tabular-nums}
.stat span{font-size:11.5px;color:var(--muted);font-weight:600}
textarea.input{height:auto;min-height:96px;padding:12px 14px;line-height:1.5;resize:vertical}
.toggle{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--surface);border-radius:14px;border:1.5px solid var(--line);text-align:left;width:100%}
.toggle .sw{width:42px;height:26px;border-radius:13px;background:var(--surface-2);position:relative;flex:none;transition:background 160ms ease}
.toggle .sw::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform 200ms var(--ease)}
.toggle[aria-checked="true"] .sw{background:var(--accent)}
.toggle[aria-checked="true"] .sw::after{transform:translateX(16px)}
.sub-card{background:var(--surface-2);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:10px}
.link-row{display:grid;grid-template-columns:1fr 1.4fr 32px;gap:6px;align-items:center}
.link-row .input{height:40px;font-size:14px;padding:0 10px}

/* --- Фото профиля и кирпичи --- */
.ava-edit{position:relative;display:inline-block}
.ava-btn{position:absolute;right:-4px;bottom:-2px;width:30px;height:30px;border-radius:50%;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;border:3px solid var(--bg)}
.linkbtn{font-size:13px;font-weight:700;color:var(--accent-text);padding:8px 4px 0}
.counter{display:flex;align-items:center;gap:10px}
.counter button{width:34px;height:34px;border-radius:11px;background:var(--surface-2);display:grid;place-items:center}
.counter b{font-family:var(--display);font-weight:500;font-size:16px;min-width:22px;text-align:center;font-variant-numeric:tabular-nums}

/* --- Касса --- */
.bal{background:var(--hero);color:var(--hero-ink);border-radius:26px;padding:20px 18px 18px;position:relative;overflow:hidden;overflow:clip}
.bal-lbl{font-size:13px;color:var(--hero-muted);font-weight:600}
.bal-sum{font-family:var(--display);font-weight:700;font-size:32px;letter-spacing:-.03em;margin:6px 0 14px;font-variant-numeric:tabular-nums;color:var(--accent)}
.bal-foot{display:flex;gap:18px;font-size:12.5px;color:var(--hero-muted);position:relative}
.bal-foot b{display:block;color:var(--hero-ink);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}
.admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.admin-grid .btn{height:auto;padding:12px 6px;flex-direction:column;gap:6px;font-size:12.5px;border-radius:16px}
.dues-top{display:flex;align-items:flex-start;gap:10px}
.dues-t{font-weight:700;font-size:16px}
.tariffs{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:14px 0 4px}
.tariff{border-radius:15px;border:1.5px solid var(--line);padding:10px}
.tariff b{display:block;font-family:var(--display);font-weight:500;font-size:15px;font-variant-numeric:tabular-nums}
.tariff span{font-size:12px;color:var(--muted);font-weight:600}
.ops-date{font-size:12px;font-weight:700;color:var(--muted);padding:14px 2px 6px}
.op{display:flex;align-items:center;gap:12px;padding:10px 0}
.op+.op{border-top:1px solid var(--line)}
.op-ic{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;flex:none}
.op-in{background:var(--ok-soft);color:var(--ok)}
.op-out{background:var(--surface-2);color:var(--ink)}
.op-fix{background:var(--warn-soft);color:var(--warn)}
.op-t{flex:1;min-width:0}
.op-title{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.op-sub{font-size:12px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.op-sum{font-weight:700;font-size:14.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.op-sum.plus{color:var(--ok)}
.sq{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;flex:none}
.sq-ok{background:var(--ok-soft);color:var(--ok)}
.sq-no{background:var(--surface-2);color:var(--muted)}
.receipt{width:100%;border-radius:16px;margin-top:10px;display:block}

/* --- Магазин --- */
.shop{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.prod{background:var(--surface);border-radius:22px;padding:8px 8px 10px;display:flex;flex-direction:column}
.prod.off{opacity:.6}
.prod-img{aspect-ratio:1/1;max-width:100%;border-radius:16px;background:var(--surface-2);display:grid;place-items:center;position:relative;overflow:hidden;color:var(--muted)}
.prod-img img{width:100%;height:100%;object-fit:cover}
.prod-img svg{width:38px;height:38px}
.prod-tag{position:absolute;top:8px;left:8px}
.prod-t{font-weight:700;font-size:14px;line-height:1.3;margin:10px 4px 2px}
.prod-d{font-size:12px;color:var(--muted);margin:0 4px 10px;line-height:1.4;flex:1}
.prod-price{font-family:var(--display);font-weight:500;font-size:14px;color:var(--accent-text);margin:0 4px 6px;
  font-variant-numeric:tabular-nums;text-align:left}
button.prod{text-align:left;width:100%}
.prod-b{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:auto}
.prod-b .btn{height:38px;padding:0 6px;border-radius:12px;font-size:12.5px}

/* --- Появление списков, заглушки загрузки, край прокрутки --- */
@keyframes rise{from{opacity:0;transform:translate3d(0,9px,0)}to{opacity:1;transform:none}}
@keyframes shimmer{to{transform:translateX(100%)}}
.stagger>*{animation:rise 300ms var(--ease) both}
.stagger>*:nth-child(1){animation-delay:0ms}
.stagger>*:nth-child(2){animation-delay:40ms}
.stagger>*:nth-child(3){animation-delay:80ms}
.stagger>*:nth-child(4){animation-delay:120ms}
.stagger>*:nth-child(5){animation-delay:160ms}
.stagger>*:nth-child(n+6){animation-delay:200ms}
.skel{display:flex;flex-direction:column;gap:10px}
.skel-card{background:var(--surface);border-radius:24px;padding:16px;display:flex;flex-direction:column;gap:10px}
.skel-line{height:12px;border-radius:7px;background:var(--surface-2);position:relative;overflow:hidden}
.skel-line::after{content:"";position:absolute;inset:0;transform:translateX(-100%);animation:shimmer 1.4s linear infinite;
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ink) 7%,transparent),transparent)}
.app::before{content:"";position:absolute;top:0;left:0;right:0;height:calc(20px + env(safe-area-inset-top,0px));z-index:3;pointer-events:none;
  background:linear-gradient(var(--bg),transparent);opacity:0;transition:opacity 220ms ease}
.app.scrolled::before{opacity:1}
.grid{position:relative}
.day{position:relative;z-index:1}
.day.sel{background:transparent}
.day-pill{position:absolute;top:0;left:0;border-radius:13px;background:var(--ink);z-index:0;pointer-events:none;will-change:transform,width}
.count{transition:none}
@media (prefers-reduced-motion:reduce){
  .stagger>*{animation:none}
  .skel-line::after{animation:none}
  .grab-zone .grab{transition:none}
}

/* Смена раздела. Прозрачность здесь анимировать нельзя: полупрозрачный родитель отрезает
   стеклянным блокам фон, и на время проявления размытие пропадает, а потом включается
   рывком — это и были вспышки. Поэтому блоки только подъезжают со стороны нажатой вкладки,
   друг за другом, а видны сразу. */
@keyframes tab-in{from{transform:translate3d(calc(var(--dir,0) * 22px),calc((1 - var(--dir,0) * var(--dir,0)) * 8px),0)}}
.tab-in>*{animation:tab-in 420ms var(--ease) backwards}
.tab-in>*:nth-child(2){animation-delay:25ms}
.tab-in>*:nth-child(3){animation-delay:50ms}
.tab-in>*:nth-child(4){animation-delay:75ms}
.tab-in>*:nth-child(n+5){animation-delay:100ms}
@media (prefers-reduced-motion:reduce){.tab-in>*{animation:none}}
/* Всплывающая подсказка уходит быстрее, чем появляется */
.toast{transition:opacity 200ms ease,transform 260ms var(--ease)}
.toast:not(.show){transition:opacity 140ms ease,transform 140ms var(--ease)}

/* --- Голосования --- */
.vote{background:var(--hero);color:var(--hero-ink);border-radius:26px;padding:18px;position:relative;overflow:hidden;overflow:clip;text-align:left;width:100%;display:block}
.vote-eyebrow{color:var(--accent);display:flex;align-items:center;gap:7px;position:relative}
.pulse{width:7px;height:7px;border-radius:50%;background:var(--accent);animation:pulse 2s ease-out infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 50%,transparent)}100%{box-shadow:0 0 0 9px transparent}}
.vote-q{font-family:var(--display);font-weight:500;font-size:19px;line-height:1.25;letter-spacing:-.02em;margin:10px 0 4px;max-width:230px;position:relative}
.vote-meta{font-size:13px;color:var(--hero-muted);position:relative}
.vote .btn{margin-top:14px;position:relative}
.q{background:var(--surface);border-radius:22px;padding:16px}
.q-text{font-weight:700;font-size:15.5px;line-height:1.35;letter-spacing:-.01em}
.opt{display:flex;align-items:center;gap:12px;width:100%;padding:13px 14px;border-radius:16px;background:var(--surface-2);border:1.5px solid transparent;
  text-align:left;font-weight:600;font-size:14.5px;transition:border-color 160ms ease,background 160ms ease}
.opt+.opt{margin-top:7px}
.opt[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-text)}
.radio{width:21px;height:21px;border-radius:50%;border:2px solid var(--muted);flex:none;display:grid;place-items:center}
.opt.multi .radio{border-radius:7px}
.opt[aria-pressed="true"] .radio{border-color:var(--accent)}
.opt[aria-pressed="true"] .radio::after{content:"";width:10px;height:10px;border-radius:50%;background:var(--accent)}
.opt.multi[aria-pressed="true"] .radio::after{border-radius:2px}
.note{display:flex;gap:9px;align-items:center;font-size:12.5px;color:var(--muted);margin:10px 2px;line-height:1.45}
.note svg{width:16px;height:16px;flex:none}
.donut-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.donut{width:120px;height:120px;flex:none}
.donut-num{font-family:var(--display);font-weight:700;font-size:20px;fill:var(--ink)}
.donut-cap{font-family:var(--body);font-weight:600;font-size:9px;fill:var(--muted)}
.legend-list{flex:1;min-width:130px;display:flex;flex-direction:column;gap:7px}
.legend-item{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}
.legend-item .sp{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.legend-item i{width:10px;height:10px;border-radius:3px;flex:none}
.legend-item b{margin-left:auto;font-variant-numeric:tabular-nums}

/* --- Заказы --- */
.order-img{width:42px;height:42px;border-radius:13px;background:var(--surface-2);display:grid;place-items:center;overflow:hidden;flex:none;color:var(--muted)}
.order-img img{width:100%;height:100%;object-fit:cover}

/* Буквы вместо фото: свою строку задаём сами, иначе высокие метрики Unbounded смещают их вверх */
.ava .ini{display:block;line-height:1}

/* --- Цвета ответов, фото и группы в голосованиях --- */
.opt[aria-pressed="true"]{border-color:var(--opt,var(--accent));background:color-mix(in srgb,var(--opt,var(--accent)) 13%,transparent);color:var(--ink)}
.opt[aria-pressed="true"] .radio{border-color:var(--opt,var(--accent))}
.opt[aria-pressed="true"] .radio::after{background:var(--opt,var(--accent))}
.swatches{display:flex;gap:7px;align-items:center;flex-wrap:wrap;padding:8px 0 2px}
.sw-dot{width:30px;height:30px;border-radius:50%;flex:none;border:2px solid transparent;
  box-shadow:inset 0 0 0 1.5px var(--line),0 4px 10px -6px rgba(0,0,0,.5)}
.sw-dot.big{width:34px;height:34px;border-radius:12px}
.sw-dot[aria-pressed="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 2px var(--bg)}
.pic-row{display:flex;gap:8px;flex-wrap:wrap}
.pic{position:relative;width:74px;height:74px;border-radius:16px;overflow:hidden;background:var(--surface-2)}
.pic img{width:100%;height:100%;object-fit:cover}
.pic .x-btn{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:8px;background:rgba(10,8,7,.62);color:#fff}
.poll-photos{display:grid;gap:8px;margin:0 0 14px}
.poll-photos img{width:100%;border-radius:18px;display:block}
.poll-photos.many{grid-auto-flow:column;grid-auto-columns:86%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin-inline:-18px;padding-inline:18px}
.poll-photos.many::-webkit-scrollbar{display:none}
.poll-photos.many img{scroll-snap-align:center;height:100%;object-fit:cover}
.ans-h{display:flex;align-items:center;gap:9px;font-weight:700;font-size:14.5px;padding-bottom:4px}
.ans-h i{width:10px;height:10px;border-radius:3px;flex:none}
.ans-h b{font-variant-numeric:tabular-nums;color:var(--muted)}
.ans-h+.fee-row{border-top:1px solid var(--line)}

/* --- ИО --- */
.acting-note{display:flex;align-items:center;gap:9px;margin-top:8px;padding:9px 11px;border-radius:13px;
  background:var(--accent-soft);color:var(--accent-text);font-size:12.5px;line-height:1.35}
.acting-note b{font-weight:800}
.acting-note .btn{flex:none;border-color:currentColor}
.li[aria-pressed="true"]{background:var(--accent-soft);border-radius:12px}

/* --- Вход в браузере: установка на рабочий стол и подтверждение в боте --- */
.enter{gap:14px;text-align:center;align-items:center}
.enter-icon{border-radius:24px;box-shadow:var(--sh-2);margin-top:4px}
.enter-h{font-family:var(--display);font-weight:700;font-size:21px;letter-spacing:-.02em;margin:2px 0 0;
  text-wrap:balance}
.enter-p{margin:0;color:var(--muted);line-height:1.6;font-size:15px;max-width:34ch}
.enter-note{margin:2px 0 0;color:var(--muted);font-size:12.5px;line-height:1.5;opacity:.8;max-width:36ch}
.steps{counter-reset:s;list-style:none;margin:6px 0 4px;padding:0;display:flex;flex-direction:column;gap:12px;
  text-align:left;width:100%}
.steps li{counter-increment:s;display:flex;gap:12px;align-items:flex-start;font-size:14.5px;line-height:1.5}
.steps li::before{content:counter(s);flex:none;width:26px;height:26px;border-radius:9px;
  background:var(--accent);color:var(--on-accent);font-weight:700;font-size:13px;
  display:grid;place-items:center;font-family:var(--display)}
.code{font-family:var(--display);font-weight:700;font-size:44px;letter-spacing:.24em;color:var(--accent);
  padding:14px 10px 14px 24px;border-radius:20px;background:var(--surface-2);width:100%;
  font-variant-numeric:tabular-nums}
.waiting{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:13.5px}
.waiting .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:pulse 1.6s ease-out infinite}

/* Версия приложения — мелко, над подписью */
.ver{margin:22px auto 0;text-align:center;font-size:11.5px;font-weight:600;color:var(--muted);opacity:.55}
.ver+.sign{margin-top:6px}

/* Подпись в самом низу страницы — заметна, только если её искать */
.sign{margin:26px auto 2px;text-align:center;font-family:var(--display);font-weight:500;font-size:10.5px;
  letter-spacing:.1em;color:var(--muted);opacity:.38;user-select:none}

/* Знаки должностей идут перед названием и наследуют его цвет */
.marks{display:inline-flex;align-items:center;gap:4px;margin-right:6px;vertical-align:-3px}
.marks svg{width:15px;height:15px;stroke-width:1.9}
.chip .marks{margin-right:5px}
.chip .marks svg{width:13px;height:13px}

/* --- Смены --- */
.shift{display:block;width:100%;text-align:left}
.shift-t{font-weight:700;font-size:15.5px;line-height:1.3}
.shift-docs{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.bar{height:6px;border-radius:4px;background:var(--surface-2);overflow:hidden}
.bar i{display:block;height:100%;border-radius:4px;background:var(--accent);transition:width 320ms var(--ease)}
.doc{background:var(--surface);border-radius:20px;padding:14px}
.doc-t{font-weight:700;font-size:14.5px;line-height:1.3}
.warn-text{color:var(--warn)}
.doc .btn-sm svg{margin-right:-2px}

/* --- Имущество --- */
.gear{text-align:left;width:100%}
.gear.off{opacity:.6}
.gear-img{width:46px;height:46px;border-radius:14px;background:var(--surface-2);display:grid;place-items:center;
  overflow:hidden;flex:none;color:var(--muted)}
.gear-img img{width:100%;height:100%;object-fit:cover}
.accent-text{color:var(--accent-text)}


/* --- Настройки --- */
.set-list{background:var(--surface);border-radius:20px;padding:2px 14px}
.set-row{display:flex;align-items:center;gap:12px;padding:12px 0;width:100%;text-align:left}
.set-row+.set-row{border-top:1px solid var(--line)}
.set-ic{width:34px;height:34px;border-radius:11px;background:var(--surface-2);color:var(--accent-text);
  display:grid;place-items:center;flex:none}
.set-t{display:block;font-weight:700;font-size:14.5px}
.set-row .num{min-width:24px;height:24px;font-size:12.5px}

/* --- Сияние: на экране один источник света, а блоки показывают каждый свой его кусок.
   Поэтому оранжевое пятно из кассы продолжается оранжевым пятном в план-сетке, а не
   повторяется в каждом блоке заново. Координаты блока в --gx/--gy проставляет app.js,
   он же медленно и в такт двигает все пятна (см. sway). --- */
.bal,.vote{background:var(--hero);isolation:isolate}
.bal::before,.vote::before,.glow::before{content:"";position:absolute;inset:-40px;z-index:-1;pointer-events:none;
  background-repeat:repeat;background-size:100vw 720px,100vw 720px;
  background-position:calc(40px - var(--gx,0px)) calc(40px - var(--gy,0px))}
/* Пятна заданы в координатах экрана: оранжевое ближе к правому верху, голубое — к левому низу */
.bal::before,.vote::before{background-image:
  radial-gradient(44% 30% at 66% 30%,color-mix(in srgb,var(--accent) 80%,transparent),transparent 74%),
  radial-gradient(40% 28% at 32% 76%,color-mix(in srgb,var(--sky) 62%,transparent),transparent 74%)}
.vote.done::before{background-image:
  radial-gradient(44% 30% at 66% 30%,color-mix(in srgb,var(--sky) 80%,transparent),transparent 74%),
  radial-gradient(40% 28% at 32% 76%,color-mix(in srgb,var(--accent) 42%,transparent),transparent 74%)}
/* Тот же свет, но вполсилы — для главных светлых блоков: план-сетка, смена */
.glow{position:relative;overflow:hidden;overflow:clip;isolation:isolate}
.glow::before{background-image:
  radial-gradient(44% 30% at 66% 30%,color-mix(in srgb,var(--accent) 42%,transparent),transparent 74%),
  radial-gradient(40% 28% at 32% 76%,color-mix(in srgb,var(--sky) 36%,transparent),transparent 74%)}
/* У шторки свой свет: она отдельная комната и прокручивается вместе с содержимым */
.sheet::before{content:"";position:absolute;left:-40px;right:-40px;top:-160px;height:840px;z-index:-1;pointer-events:none;
  background-repeat:no-repeat;background-size:100% 100%;
  background-image:
    radial-gradient(40% 26% at 66% 44%,color-mix(in srgb,var(--accent) 34%,transparent),transparent 74%),
    radial-gradient(36% 24% at 30% 64%,color-mix(in srgb,var(--sky) 30%,transparent),transparent 74%)}

/* --- Фон приложения: те же пятна, только крупнее и тише --- */
.app{isolation:isolate}
.app::after{content:"";position:absolute;inset:-48px;z-index:0;pointer-events:none;background-image:var(--aura);
  background-repeat:no-repeat;background-size:100% 100%}
.scroll,.gate-scroll{z-index:1}

/* Одна крупная цифра вместо декора: сумма кассы, дни до конца голосования */
.bignum{position:absolute;right:10px;bottom:-18px;font-family:var(--display);font-weight:700;font-size:86px;line-height:1;
  letter-spacing:-.06em;color:var(--accent);opacity:.2;pointer-events:none;user-select:none;font-variant-numeric:tabular-nums}
.vote .bignum{font-size:64px;bottom:-10px;opacity:.22}
.vote.done .bignum{color:var(--sky-bright);opacity:.26}

/* Голос уже отдан: шапка голубеет, пульс сменяется галочкой, кнопка перестаёт звать */
.vote.done .vote-eyebrow{color:var(--sky-bright)}
.vote.done .btn-accent{background:rgba(255,255,255,.14);color:var(--hero-ink);box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}
.chip-sky{background:var(--sky-soft);color:var(--sky-text)}

/* --- Глубина: блоки приподняты над фоном --- */
.card,.list,.set-list,.facts,.q,.doc,.prod,.fee,.app-card,.attn,.placeholder,.skel-card{box-shadow:var(--sh-1)}
.bal,.vote{box-shadow:var(--sh-2)}

/* --- Стекло. Настоящее размытие — только у того, под чем проезжает содержимое: нижнее меню,
   шторка, подсказка. Под карточками лежат лишь мягкие пятна фона, а размытое мягкое пятно
   выглядит так же, как неразмытое, — поэтому карточки просто полупрозрачные. На вид то же
   самое, а телефону не нужно пересчитывать размытие под каждым блоком (и мерцать). --- */
@supports (backdrop-filter:blur(2px)) or (-webkit-backdrop-filter:blur(2px)){
  .card,.list,.set-list,.facts,.app-card,.attn,.placeholder,.q,.doc,.prod,.fee,.skel-card,.search,.shift,.theme-b{
    background:color-mix(in srgb,var(--surface) 62%,transparent);
    box-shadow:var(--sh-1),inset 0 1px 0 var(--glass-edge)}
  /* Внутри шторки фон уже приглушён, поэтому блоки там плотнее */
  .sheet .card,.sheet .list,.sheet .set-list,.sheet .facts,.sheet .app-card,.sheet .q,.sheet .doc,
  .sheet .prod,.sheet .fee,.sheet .search,.sheet .theme-b{background:color-mix(in srgb,var(--surface) 80%,transparent)}
  .tabbar{background:var(--glass-dark);-webkit-backdrop-filter:blur(24px) saturate(175%);backdrop-filter:blur(24px) saturate(175%);
    box-shadow:0 16px 36px -16px rgba(0,0,0,.55),inset 0 1px 0 var(--glass-edge)}
  .sheet{background:color-mix(in srgb,var(--bg) 88%,transparent);
    -webkit-backdrop-filter:blur(34px) saturate(160%);backdrop-filter:blur(34px) saturate(160%);
    box-shadow:0 -18px 50px -24px rgba(0,0,0,.5)}
  .grab-zone{background:linear-gradient(color-mix(in srgb,var(--bg) 88%,transparent) 68%,transparent)}
  .icon-btn{background:var(--glass);box-shadow:inset 0 0 0 1px var(--glass-edge)}
  .toast{background:var(--glass-dark);color:var(--hero-ink);
    -webkit-backdrop-filter:blur(18px) saturate(170%);backdrop-filter:blur(18px) saturate(170%)}

  /* Всё, что лежит внутри блоков: прозрачность и светлая кромка, без второго размытия */
  .input,textarea.input,select.input{background:color-mix(in srgb,var(--surface) 46%,transparent);
    border-color:color-mix(in srgb,var(--ink) 14%,transparent);box-shadow:inset 0 1px 0 var(--glass-edge)}
  .seg,.sub-card,.toggle,.tariff,.stat div,.opt,.btn-soft,.filter,.close,.nav-btn,.x-btn,.counter button,
  .chip,.set-ic,.op-out,.sq-no,.ava.muted,.num.zero,.pic,.gear-img,.order-img,.prod-img,.skel-line,.bar,.drafts{
    background:color-mix(in srgb,var(--surface-2) 52%,transparent);box-shadow:inset 0 1px 0 var(--glass-edge)}
  .seg button[aria-pressed="true"]{background:color-mix(in srgb,var(--surface) 82%,transparent);
    box-shadow:inset 0 1px 0 var(--glass-edge),0 4px 10px -7px rgba(0,0,0,.5)}
  .prod-img,.gear-img,.order-img{background:linear-gradient(150deg,color-mix(in srgb,var(--accent) 16%,transparent),
    color-mix(in srgb,var(--sky) 16%,transparent)),color-mix(in srgb,var(--surface-2) 52%,transparent)}
  .toggle{border-color:color-mix(in srgb,var(--ink) 12%,transparent)}
  .opt[aria-pressed="true"]{background:color-mix(in srgb,var(--opt,var(--accent)) 20%,transparent)}
}
/* Кому стекло мешает читать — системная настройка возвращает плотные блоки */
@media (prefers-reduced-transparency:reduce){
  .tabbar,.sheet,.toast{-webkit-backdrop-filter:none;backdrop-filter:none}
  .card,.list,.set-list,.facts,.app-card,.attn,.placeholder,.q,.doc,.prod,.fee,.skel-card,.search,.shift,.theme-b,
  .input,textarea.input,select.input{background:var(--surface)}
  .seg,.sub-card,.toggle,.tariff,.stat div,.opt,.btn-soft,.filter,.close,.nav-btn,.x-btn,.counter button,
  .chip,.set-ic,.op-out,.sq-no,.ava.muted,.num.zero,.pic,.skel-line,.bar{background:var(--surface-2)}
  .tabbar{background:var(--hero)}.sheet{background:var(--bg)}.icon-btn{background:var(--surface)}
  .btn-accent{background:var(--accent)}
  .toast{background:var(--ink);color:var(--bg)}
  .app::after,.sheet::before{display:none}
}

/* --- Календарь: своё — голубым, а сегодняшний день обведён цветами своих дел --- */
.t-personal{background:var(--sky)}
.day.today{color:var(--ink)}
.day.today .dots{visibility:hidden}
.day.today::before{content:"";position:absolute;inset:0;border-radius:13px;padding:2px;background:var(--ring,var(--accent));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;pointer-events:none}
.day.today.sel{color:var(--bg)}
/* Когда сегодняшний день ещё и выбран, кольцо выходит наружу, чтобы не спорить с чёрной плашкой */
.day.today.sel::before{inset:-3px;border-radius:16px}
.day.today.on-shift{color:var(--accent-text)}

/* --- Полировка: главные акценты не плоские, а с объёмом и своим свечением --- */
.btn-accent{background:color-mix(in srgb,var(--accent) 84%,transparent);
  box-shadow:0 10px 22px -12px color-mix(in srgb,var(--accent) 90%,transparent),inset 0 1px 0 rgba(255,255,255,.32)}
.btn-accent:active:not(:disabled){box-shadow:0 5px 12px -10px color-mix(in srgb,var(--accent) 90%,transparent),inset 0 1px 0 rgba(255,255,255,.32)}
.ava{background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 55%,var(--sky)))}
.ava.muted{background:var(--surface-2)}
.num{background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 60%,var(--sky)))}
.num.zero{background:var(--surface-2)}
.tab[aria-current="page"]{background:var(--accent);box-shadow:inset 0 1px 0 rgba(255,255,255,.28)}
.ava-btn{background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 60%,var(--sky)))}

/* Голос сохранён: не кнопка, а спокойная отметка — нажимать нечего */
.done-note{display:flex;gap:9px;align-items:center;margin-top:12px;padding:12px 14px;border-radius:16px;
  background:color-mix(in srgb,var(--sky) 14%,transparent);color:var(--sky-text);
  font-size:13px;font-weight:600;line-height:1.4;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sky) 28%,transparent)}
.done-note svg{flex:none;color:var(--sky)}

/* --- Выбор темы в настройках --- */
.theme-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.theme-b{border-radius:15px;padding:8px;border:1.5px solid var(--line);display:flex;flex-direction:column;gap:7px;
  align-items:flex-start;text-align:left;transition:border-color 160ms ease}
.theme-b[aria-pressed="true"]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.theme-sw{width:100%;height:34px;border-radius:10px;display:flex;overflow:hidden;box-shadow:inset 0 0 0 1px var(--line)}
.theme-sw i{flex:1}
.theme-n{font-size:12px;font-weight:700;line-height:1.2}


/* --- Нижнее меню: плашка переезжает к нажатой вкладке, подпись проявляется следом --- */
.tabbar{isolation:isolate}
.tab{position:relative;z-index:1;transition:color 240ms var(--ease)}
.tab[aria-current="page"],.tabbar .tab[aria-current="page"]{background:transparent;box-shadow:none}
.tab-pill{position:absolute;top:6px;left:0;height:48px;border-radius:17px;z-index:0;pointer-events:none;
  background:var(--accent);box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 8px 18px -10px color-mix(in srgb,var(--accent) 90%,transparent);
  transition:transform 460ms cubic-bezier(.34,1.26,.64,1),width 460ms cubic-bezier(.34,1.26,.64,1)}
@keyframes lbl-in{from{opacity:0;transform:translate3d(-6px,0,0)}}
.tab[aria-current="page"] .lbl{animation:lbl-in 260ms var(--ease) 80ms both}
.tab svg{transition:transform 240ms var(--ease)}
.tab:active svg{transform:scale(.88)}
@media (prefers-reduced-motion:reduce){
  .tab-pill{transition:none}
  .tab[aria-current="page"] .lbl{animation:none}
}

/* --- Добровольный взнос --- */
.gift-sums{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:14px}
.gift-sum{height:44px;border-radius:13px;font-family:var(--display);font-weight:500;font-size:13px;
  font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--surface-2) 52%,transparent);
  box-shadow:inset 0 1px 0 var(--glass-edge);transition:background 180ms var(--ease),color 180ms var(--ease),transform var(--t-press) var(--ease)}
.gift-sum[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent-text);
  box-shadow:inset 0 0 0 1.5px var(--accent)}
.gift-own{position:relative;display:block;margin-top:8px}
.gift-own .input{padding-right:36px}
.gift-own span{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--muted);font-weight:700;pointer-events:none}
@media (max-width:360px){.gift-sums{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* --- Кандидаты и обучение ---
   Метка слева у задания говорит всё без слов: сплошная оранжевая — обязательное,
   пунктир — по желанию, голубая с галочкой — принято. --- */
.tabbar.five .tab{padding:0 13px}
@media (max-width:360px){.tabbar.five .tab{padding:0 11px}}
.coin{display:inline-flex;align-items:center;gap:3px;font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}
.coin svg{width:15px;height:15px;stroke-width:1.9}
.btn .coin svg{width:16px;height:16px}

.sec-h{display:flex;align-items:center;gap:10px;margin:18px 2px 8px;min-height:34px}
.sec-h h2{flex:1;margin:0;font-family:var(--display);font-weight:500;font-size:16px;letter-spacing:-.015em}
.sec-h .count{font-family:var(--body);font-size:13px}
.soft-empty{display:flex;gap:9px;align-items:flex-start;padding:4px 2px;color:var(--muted);font-size:13.5px;line-height:1.5}
.soft-empty svg{flex:none;margin-top:2px}

.tasks{display:flex;flex-direction:column;gap:6px}
.task,.shvm,.next-meet{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 14px;border-radius:18px;
  background:color-mix(in srgb,var(--surface) 62%,transparent);box-shadow:var(--sh-1),inset 0 1px 0 var(--glass-edge)}
.task-mark{width:22px;height:22px;border-radius:50%;flex:none;display:grid;place-items:center;border:2px solid var(--accent)}
.task.req .task-mark{background:color-mix(in srgb,var(--accent) 18%,transparent)}
.task.opt .task-mark{border-style:dashed;border-color:color-mix(in srgb,var(--ink) 34%,transparent)}
.task.st-waiting .task-mark{border:2px solid var(--warn);background:var(--warn-soft);color:var(--warn)}
.task.st-accepted .task-mark{border:0;background:var(--sky);color:#fff}
.task.st-accepted .task-name{color:var(--muted)}
.task-mark svg{width:13px;height:13px;stroke-width:2.6}
.task-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.task-name{font-weight:700;font-size:14.5px;line-height:1.3}
.task-meta{font-size:12.5px;color:var(--muted);line-height:1.35}
.task-reward{flex:none;color:var(--accent-text);font-size:13.5px}

.shvm.past{opacity:.72}
.shvm-d{width:40px;height:42px;border-radius:13px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;
  line-height:1;background:var(--accent-soft);color:var(--accent-text)}
.shvm-d b{font-family:var(--display);font-weight:700;font-size:16px;font-variant-numeric:tabular-nums}
.shvm-d small{font-size:10px;font-weight:700;margin-top:3px;opacity:.85}
.next-meet{padding:10px 12px;margin-top:10px;font-size:13.5px;line-height:1.35;box-shadow:inset 0 0 0 1px var(--line);
  background:color-mix(in srgb,var(--surface-2) 52%,transparent)}
.next-meet>svg{color:var(--sky);flex:none}
.tasks .next-meet{margin-top:0}

/* Условия задания: три равные ячейки — ничего не плавает */
.terms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;border-radius:18px;overflow:hidden;margin-bottom:14px;
  background:var(--line);box-shadow:var(--sh-1)}
.terms>div{background:color-mix(in srgb,var(--surface) 86%,transparent);padding:10px 12px;display:flex;flex-direction:column;gap:3px;min-width:0}
.terms small{font-size:11.5px;font-weight:600;color:var(--muted)}
.terms b{font-size:14px;line-height:1.25}
.terms.req>div:first-child{background:var(--accent-soft);color:var(--accent-text)}
.terms.req>div:first-child small{color:inherit;opacity:.8}

/* Кто видит группы: три шага по линии */
.ladder{display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:22px;
  background:color-mix(in srgb,var(--surface) 62%,transparent);box-shadow:var(--sh-1),inset 0 1px 0 var(--glass-edge)}
.ladder-l{font-size:12.5px;font-weight:700;color:var(--muted)}
.steps-line{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);position:relative}
.steps-line li{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:var(--muted);position:relative}
.steps-line li::before{content:"";position:absolute;top:7px;right:50%;width:100%;height:2px;background:var(--line);z-index:0}
.steps-line li:first-child::before{display:none}
.steps-line li.on::before{background:var(--accent)}
.steps-line i{width:16px;height:16px;border-radius:50%;border:2px solid color-mix(in srgb,var(--ink) 22%,transparent);background:var(--bg);position:relative;z-index:1}
.steps-line li.on{color:var(--ink)}
.steps-line li.on i{border-color:var(--accent);background:var(--accent)}
.ladder-confirm{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:16px;font-size:13.5px;line-height:1.45;
  background:var(--accent-soft);color:var(--accent-text)}
.ladder .linkbtn{align-self:center;padding:2px 4px}

/* Группы: номер — то, что запоминается */
.grp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.grp{display:flex;flex-direction:column;align-items:flex-start;text-align:left;width:100%;padding:14px;gap:2px;min-height:140px;border-radius:22px;
  background:color-mix(in srgb,var(--surface) 62%,transparent);box-shadow:var(--sh-1),inset 0 1px 0 var(--glass-edge)}
.grp-n{font-family:var(--display);font-weight:700;font-size:40px;line-height:.9;letter-spacing:-.05em;color:var(--accent);
  font-variant-numeric:tabular-nums;margin-bottom:10px}
.grp-t{font-weight:700;font-size:14.5px;line-height:1.3}
.grp-c{font-size:12.5px;color:var(--muted);line-height:1.35}
.grp-f{display:flex;align-items:center;gap:8px;width:100%;margin-top:auto;padding-top:10px;font-size:12.5px;color:var(--muted)}
.grp-f>span:first-child{flex:1}
.grp.mine{box-shadow:var(--sh-1),inset 0 0 0 1.5px var(--accent)}
.grp-add{align-items:center;justify-content:center;gap:8px;color:var(--muted);font-weight:700;font-size:13.5px;
  background:transparent;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--ink) 18%,transparent)}
.grp-add svg{width:26px;height:26px}

/* Своя группа у кандидата: огромная цифра номера за текстом */
.grp-hero{position:relative;padding:16px;border-radius:24px;display:flex;flex-direction:column;
  background:color-mix(in srgb,var(--surface) 62%,transparent);box-shadow:var(--sh-1),inset 0 1px 0 var(--glass-edge)}
.grp-hero-n{position:absolute;right:14px;top:-4px;font-family:var(--display);font-weight:700;font-size:108px;line-height:1;
  letter-spacing:-.06em;color:var(--accent);pointer-events:none;font-variant-numeric:tabular-nums}
.grp-hero-l{font-size:12.5px;font-weight:700;color:var(--muted);position:relative}
.grp-hero-t{font-family:var(--display);font-weight:700;font-size:22px;letter-spacing:-.025em;line-height:1.15;margin:4px 0 14px;
  max-width:60%;text-wrap:balance;position:relative}
.grp-hero-people{display:flex;align-items:center;gap:10px;width:100%;text-align:left;font-size:13.5px;position:relative}
.grp-hero .btn{margin-top:12px;position:relative}
.ava-stack{display:flex;flex:none}
.ava-stack .ava{box-shadow:0 0 0 2px var(--bg)}
.ava-stack .ava+.ava{margin-left:-10px}

.coin-pill{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border-radius:13px;margin-top:6px;
  font-family:var(--display);font-weight:700;font-size:16px;font-variant-numeric:tabular-nums;color:var(--accent-text);
  background:var(--accent-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent)}
.coin-pill svg{width:20px;height:20px;color:var(--accent)}
.coin-bar{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:12px 14px;border-radius:18px;
  background:color-mix(in srgb,var(--accent) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 26%,transparent);
  color:var(--ink);font-size:14px}
.coin-bar>svg:first-child{color:var(--accent)}
.coin-bar b{color:var(--accent-text)}
.coin-big{display:flex;align-items:baseline;justify-content:center;gap:8px;padding:6px 0 12px;color:var(--accent-text)}
.coin-big svg{width:30px;height:30px;color:var(--accent);align-self:center}
.coin-big b{font-family:var(--display);font-weight:700;font-size:48px;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.coin-big span{font-weight:700;color:var(--muted)}

.school-block{margin-top:4px}
.mat-ic{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;flex:none;background:var(--accent-soft);color:var(--accent-text)}
.lock-card{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:18px;background:color-mix(in srgb,var(--surface-2) 52%,transparent)}
.lock-card>svg{color:var(--accent);margin-top:2px;flex:none}
.lock-card b{display:block;font-size:14.5px;margin-bottom:3px}
.lock-card span{font-size:13px;color:var(--muted);line-height:1.45}
.answer{display:flex;flex-direction:column;gap:8px;padding:2px 0 14px 50px}
.answer-text{white-space:pre-wrap;line-height:1.55;font-size:14px;padding:10px 12px;border-radius:14px;
  background:color-mix(in srgb,var(--surface-2) 52%,transparent)}
.hint-warn{background:var(--warn-soft);color:var(--warn)}
.li:disabled{opacity:1}
@media (prefers-reduced-transparency:reduce){
  .task,.shvm,.ladder,.grp,.grp-hero,.terms>div{background:var(--surface)}
}

/* --- Формы: сначала главное, остальное фишками ---
   Обязательное — крупно сверху. Каждое добавленное поле — строка со значком и крестиком.
   Редкие настройки — словами в одной фразе, по которым можно нажать. --- */
.input-title{height:52px;font-size:17px;font-weight:700}
.when{display:flex;align-items:center;gap:8px}
.when .input{flex:1;min-width:0}
.when-dash{color:var(--muted);flex:none}
.prop{display:flex;flex-direction:column;gap:8px;padding:10px 12px 12px;border-radius:16px;
  background:color-mix(in srgb,var(--surface-2) 52%,transparent);box-shadow:inset 0 1px 0 var(--glass-edge)}
.prop-h{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;color:var(--muted);min-height:24px}
.prop-h>svg{color:var(--accent)}
.prop-x{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;color:var(--muted);margin:-2px -4px -2px 0}
.prop .input{height:42px}
.prop textarea.input{min-height:80px}
.add-chips,.tpl-row{display:flex;flex-wrap:wrap;gap:6px}
.add-chip{display:inline-flex;align-items:center;gap:5px;height:34px;padding:0 12px;border-radius:999px;font-weight:700;font-size:13px;
  color:var(--ink);background:transparent;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--ink) 16%,transparent)}
.add-chip svg{width:14px;height:14px;color:var(--accent)}
.add-chip.on{background:var(--accent-soft);color:var(--accent-text);box-shadow:inset 0 0 0 1.5px var(--accent)}
.tpl{display:flex;flex-direction:column;gap:8px}
.tpl-h{display:flex;align-items:center;font-size:12.5px;font-weight:700;color:var(--muted)}
.tpl-chip-wrap{position:relative;display:inline-flex}
.tpl-chip svg{color:var(--warn)}
.tpl-x{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;
  background:var(--danger-soft);color:var(--danger)}
.tpl-x svg{width:12px;height:12px}
.summary{margin:2px 2px 0;font-size:13.5px;line-height:1.7;color:var(--muted)}
.pick{display:inline;font:inherit;font-weight:700;color:var(--ink);padding:0;border-bottom:1.5px dashed color-mix(in srgb,var(--accent) 70%,transparent)}
.save-tpl{display:inline-flex;align-items:center;gap:6px;align-self:center;padding:4px}
.save-tpl-box{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:16px;background:color-mix(in srgb,var(--surface-2) 52%,transparent)}
.pick-select{appearance:none;-webkit-appearance:none;background:transparent;border:0;border-bottom:1.5px dashed color-mix(in srgb,var(--accent) 70%,transparent);
  border-radius:0;max-width:100%;cursor:pointer}
.shop-thumb{width:64px;height:64px;flex:none;border-radius:16px;padding:0}
.shop-thumb svg{width:24px;height:24px}

/* Шторка «Создать»: всё, что заводит комсостав, в одном месте */
.create-day{margin:-4px 0 12px}
.create-list{display:flex;flex-direction:column;gap:8px}
.create-row{display:flex;align-items:center;gap:14px;width:100%;min-height:64px;padding:10px 12px;border-radius:18px;
  background:var(--surface-2);text-align:left;transition:transform var(--t-press) var(--ease)}
.create-row:active{transform:scale(.985)}
.create-row .muted{display:block;margin-top:1px}
.create-ic{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;flex:none;
  background:var(--accent-soft);color:var(--accent-text)}
.ci-personal{background:var(--ok-soft);color:var(--ok)}
.cm-income svg{color:var(--ok)}
.cm-expense svg{color:var(--danger)}

/* Строка «Все голосования» под карточкой голосования */
.vote-wrap .vote{border-radius:26px 26px 0 0}
.vote-all{display:flex;align-items:center;gap:10px;width:100%;padding:13px 16px;text-align:left;
  background:var(--surface);border-radius:0 0 22px 22px;border-top:1px solid var(--line);box-shadow:var(--sh-1)}
.vote-all:only-child{border-radius:20px;border-top:0}
.vote-all .i{color:var(--accent-text)}
.vote-all .set-t{font-size:14px}

/* Финансы: «Приход», «Трата» и маленькая «⋯» с редким */
.cash-actions{display:flex;gap:8px;position:relative}
.cash-actions>.btn{flex:1;height:48px;border-radius:16px}
.cash-actions>.cash-more{flex:none;width:48px;padding:0}
.cash-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:5;min-width:236px;padding:6px 0;border-radius:16px;
  background:var(--surface);box-shadow:var(--sh-2);border:1px solid var(--line)}
.cash-menu button{display:flex;align-items:center;gap:10px;width:100%;height:46px;padding:0 14px;font-weight:700;font-size:14px;text-align:left}
.cash-menu button:active{background:var(--surface-2)}

/* Знак автора внизу страниц: рожица складывается в подпись «Lavrov Andrew» */
.mark{display:flex;justify-content:center;margin:30px auto 0;color:var(--muted);opacity:.7;-webkit-tap-highlight-color:transparent;cursor:pointer}
.mark-svg{height:34px;width:auto;overflow:visible}
.mark+.sign,.mark+.ver{margin-top:8px}
/* Подвал с соавторами отряда: знак автора, амперсанд пером, знаки соавторов */
.author-marks{display:flex;justify-content:center;align-items:center;gap:6px;margin:34px auto 0;color:var(--muted)}
.author-marks .mark{margin:0;opacity:.75}
.author-marks .mark-svg{height:30px}
.author-marks+.sign{margin-top:8px}

/* --- Смена в календаре: одна полоса под днями, выбранный день лежит на ней, а не вырезает дыру.
   Класс on-shift, а не shift: .shift — карточка на вкладке «Смены», и её тень с рамкой
   раньше доставались каждому дню смены — отсюда «отдельные» дни со своими краями. --- */
.grid{z-index:0}
.day{z-index:auto}
.day.on-shift,.day.on-shift.s0,.day.on-shift.s1{background:transparent;border-radius:13px}
.day.on-shift::after{content:"";position:absolute;inset:0;z-index:-1;background:var(--accent-soft);pointer-events:none}
.day.on-shift.s0::after{border-radius:13px 0 0 13px}
.day.on-shift.s1::after{border-radius:0 13px 13px 0}
.day.on-shift.s0.s1::after{border-radius:13px}
/* Край недели или месяца: полоса уходит за край строки и растворяется — смена продолжается */
.day.on-shift.c0::after{left:-12px;-webkit-mask:linear-gradient(90deg,transparent,#000 22px);mask:linear-gradient(90deg,transparent,#000 22px)}
.day.on-shift.c1::after{right:-12px;-webkit-mask:linear-gradient(270deg,transparent,#000 22px);mask:linear-gradient(270deg,transparent,#000 22px)}
.day.on-shift.c0.c1::after{-webkit-mask:linear-gradient(90deg,transparent,#000 22px calc(100% - 22px),transparent);mask:linear-gradient(90deg,transparent,#000 22px calc(100% - 22px),transparent)}
.day.on-shift.c0.s1::after{border-radius:0 13px 13px 0}
.day.on-shift.s0.c1::after{border-radius:13px 0 0 13px}
/* Выбранный день смены — оранжевая плашка поверх полосы, того же семейства, что и сама смена */
.grid.in-shift .day-pill{background:var(--accent)}
.day.sel.on-shift,.day.today.sel.on-shift{color:var(--on-accent)}

/* --- «Что нового»: плашка на главной и страница версии --- */
.wn-banner{display:flex;align-items:center;gap:12px;width:100%;margin-bottom:12px;padding:11px 12px 11px 11px;border-radius:20px;text-align:left;
  background:linear-gradient(115deg,color-mix(in srgb,var(--accent) 26%,var(--surface)),var(--surface) 70%);
  box-shadow:var(--sh-1),inset 0 0 0 1px color-mix(in srgb,var(--accent) 40%,transparent);transition:transform var(--t-press) var(--ease)}
.wn-banner:active{transform:scale(.985)}
.wn-spark{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;flex:none;background:var(--accent);color:var(--on-accent)}
.wn-b-t{display:block;font-family:var(--display);font-weight:700;font-size:14px;letter-spacing:-.01em}
.wn-b-s{display:block;font-size:12px;color:var(--muted);margin-top:1px}
.wn-b-go{display:inline-flex;align-items:center;gap:2px;font-weight:800;font-size:12.5px;color:var(--accent-text);white-space:nowrap}
.wn-hero{margin:-6px 2px 18px}
.wn-title{font-family:var(--display);font-weight:700;font-size:26px;line-height:1.1;letter-spacing:-.03em;margin:8px 0 8px}
.wn-hero p{margin:0;font-size:14.5px;line-height:1.5}
.wn-opus{border-radius:26px;padding:18px 16px 16px;background:var(--hero);color:var(--hero-ink);position:relative;overflow:hidden;
  box-shadow:var(--sh-2),inset 0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent)}
.wn-opus::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(70% 40% at 100% 0%,color-mix(in srgb,var(--accent) 34%,transparent),transparent 72%)}
.wn-opus>*{position:relative}
.wn-opus>p{margin:10px 0 4px;font-size:14.5px;line-height:1.5;color:var(--hero-ink)}
.wn-opus-h{display:flex;align-items:flex-end;gap:12px}
.wn-opus-h h3{margin:4px 0 0;font-family:var(--display);font-weight:700;font-size:21px;letter-spacing:-.02em}
.wn-opus-h .eyebrow{color:var(--accent)}
.wn-opus-n{font-family:var(--display);font-weight:700;font-size:54px;line-height:.8;color:var(--accent);letter-spacing:-.05em}
.wn-opus .wn-item{background:color-mix(in srgb,var(--hero-ink) 7%,transparent);box-shadow:none}
.wn-opus .wn-p,.wn-opus .muted{color:var(--hero-muted)}
.wn-opus .wn-demo{background:var(--bg);color:var(--ink)}
.wn-opus>.btn{margin-top:14px}
.wn-item{margin-top:10px;padding:14px;border-radius:22px;background:var(--surface);box-shadow:var(--sh-1)}
.wn-h{display:flex;align-items:center;gap:10px}
.wn-h h3{margin:0;font-weight:800;font-size:15.5px;line-height:1.25}
.wn-ic{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--accent-soft);color:var(--accent-text)}
.wn-p p{margin:8px 0 0;font-size:13.5px;line-height:1.5}
.wn-p{color:var(--muted)}
.wn-p b{color:var(--ink)}
.wn-opus .wn-p b{color:var(--hero-ink)}
.wn-demo{margin-top:12px;padding:12px;border-radius:16px;background:var(--surface-2);pointer-events:none}
.wn-demo .grp{min-height:118px}
.wn-demo .vote-all{border-radius:16px;border-top:0}
.wn-go{margin-top:10px}
.wn-coins{display:flex;align-items:center;gap:12px}
.wn-coin-big{font-size:26px;color:var(--accent-text)}
.wn-coin-big .coin svg{width:26px;height:26px}
.wn-cal .day{height:36px}
.wn-cal .wn-sel{color:var(--on-accent)}
.wn-cal .wn-sel::before{content:"";position:absolute;inset:0;border-radius:13px;background:var(--accent);z-index:0}
.wn-cal .day span{position:relative;z-index:1}
.wn-calh{margin:0}
.wn-calh .cal-add .lbl{display:inline}
.wn-calh .cal-add{width:auto;padding:0 12px}
.wn-staff ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px;font-size:13.5px;line-height:1.5;color:var(--muted)}
.wn-staff b{color:var(--ink)}
.wn-end{text-align:center;margin-top:22px}
.wn-end p{margin:0 12px}
