/* Pulsr — base.css: токены, сброс, типографика, общие компоненты. Владелец — агент A (core), см. work/WORKPLAN.md §3.
   Токены — из прототипа Pulsr 1:1. Тёмная тема по умолчанию; светлая — data-theme="light", палитра — data-palette
   (steel по умолчанию, white, sage, lavender, concrete). Имена компонентов не менять — ими пользуются все области. */
:root{
	--bg:#0C0B0A;--sf:#141311;--sf2:#1D1B18;--sf3:#28251F;
	--ln:rgba(255,240,220,.07);--ln2:rgba(255,240,220,.16);
	--tx:#F4EFE7;--tx2:#CFC8BC;--mu:#8A8378;
	--ac:#FF5B2E;--ac2:#FFB86B;--ac-tx:#fff;--ac-h:#E84F25;--glow:rgba(255,91,46,.08);--glass:rgba(12,11,10,.72);
	--sh:0 40px 120px rgba(0,0,0,.7);--sh-sm:0 10px 30px rgba(0,0,0,.35);--ok:#3CCB7F;--bad:#E5484D;--info:#4C8DFF;--violet:#A46BFF;--gold:#E8A31A;
	--grad:linear-gradient(135deg,var(--ac2),var(--ac) 55%);
	--f-serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;--f-sans:'Onest',system-ui,-apple-system,'Segoe UI',sans-serif;--f-mono:'JetBrains Mono',ui-monospace,Menlo,monospace;
	--r-xs:8px;--r-sm:12px;--r-md:16px;--r-lg:20px;--r-xl:28px;--r-pill:999px;
	--gap:28px;--rail:340px;--col:780px;--cgap:40px;--head-h:68px;--pad:28px;--wrap:calc(var(--col) + var(--cgap) + var(--rail) + var(--pad) * 2);
	--ease:cubic-bezier(.2,.8,.2,1);--pop:cubic-bezier(.2,.9,.3,1.2);
	--ps-ecg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-2 -2 38 24'%3E%3Cstyle%3E.l%7Bstroke-dasharray:120;animation:d .9s cubic-bezier(.6,0,.3,1) infinite%7D%40keyframes d%7B0%25%7Bstroke-dashoffset:120%7D60%25%7Bstroke-dashoffset:0%7D100%25%7Bstroke-dashoffset:-120%7D%7D%40media (prefers-reduced-motion:reduce)%7B.l%7Banimation:none;stroke-dashoffset:0%7D%7D%3C/style%3E%3Cfilter id='g' x='-20%25' y='-40%25' width='140%25' height='180%25'%3E%3CfeGaussianBlur stdDeviation='1.4'/%3E%3C/filter%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 11h8l3-7 5 14 4-10 2 3h10' stroke-width='2' opacity='.22'/%3E%3Cpath class='l' d='M1 11h8l3-7 5 14 4-10 2 3h10' stroke-width='3' opacity='.5' filter='url(%23g)'/%3E%3Cpath class='l' d='M1 11h8l3-7 5 14 4-10 2 3h10' stroke-width='2.2'/%3E%3C/g%3E%3C/svg%3E");
	--ps-ecg-still:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-2 -2 38 24'%3E%3Cpath d='M1 11h8l3-7 5 14 4-10 2 3h10' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	--ps-ecg-glow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-2 -2 38 24'%3E%3Cfilter id='g' x='-20%25' y='-40%25' width='140%25' height='180%25'%3E%3CfeGaussianBlur stdDeviation='1.4'/%3E%3C/filter%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 11h8l3-7 5 14 4-10 2 3h10' stroke-width='3' opacity='.5' filter='url(%23g)'/%3E%3Cpath d='M1 11h8l3-7 5 14 4-10 2 3h10' stroke-width='2.2'/%3E%3C/g%3E%3C/svg%3E");
	color-scheme:dark
}
[data-theme=light]{
	--bg:#E6E8EC;--sf:#FFFFFF;--sf2:#F0F1F4;--sf3:#E1E4E9;
	--ln:rgba(14,20,32,.08);--ln2:rgba(14,20,32,.18);
	--tx:#111318;--tx2:#383C45;--mu:#6B707A;--ac-h:#E8431A;
	--glow:rgba(232,67,26,.07);--glass:rgba(255,255,255,.8);--sh:0 30px 90px rgba(60,40,10,.18);--sh-sm:0 10px 30px rgba(20,24,32,.12);
	color-scheme:light
}
[data-theme=light][data-palette=white]{--bg:#FFFFFF;--sf:#FFFFFF;--sf2:#F4F4F5;--sf3:#E9E9EC;--ln:rgba(10,10,14,.08);--ln2:rgba(10,10,14,.18);--tx:#0E0E11;--tx2:#36363D;--mu:#6C6C75;--glass:rgba(255,255,255,.82)}
[data-theme=light][data-palette=sage]{--bg:#E4EAE5;--sf:#FAFCFA;--sf2:#EDF2EE;--sf3:#DCE4DE;--ln:rgba(16,32,22,.08);--ln2:rgba(16,32,22,.18);--tx:#101712;--tx2:#35403A;--mu:#677269;--glass:rgba(250,252,250,.8)}
[data-theme=light][data-palette=lavender]{--bg:#E9E7F1;--sf:#FDFCFF;--sf2:#F2F0F8;--sf3:#E2DEEE;--ln:rgba(28,20,52,.08);--ln2:rgba(28,20,52,.18);--tx:#14121C;--tx2:#3A3647;--mu:#6E6980;--glass:rgba(253,252,255,.8)}
[data-theme=light][data-palette=concrete]{--bg:#DCDCDA;--sf:#F7F7F5;--sf2:#E9E9E6;--sf3:#D6D6D2;--ln:rgba(20,20,18,.08);--ln2:rgba(20,20,18,.18);--tx:#141413;--tx2:#3A3A37;--mu:#686864;--glass:rgba(247,247,245,.8)}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--head-h) + 12px)}
html,body{margin:0;background:var(--bg);color:var(--tx);font-family:var(--f-sans);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{min-height:100vh;overflow-x:clip}
img,svg,video,iframe{max-width:100%}
img{height:auto}
a{color:var(--ac);text-decoration:none}
a:hover{text-decoration:underline}
input,textarea,button,select{font-family:inherit;font-size:16px;color:inherit}
button{cursor:pointer}
input::placeholder,textarea::placeholder{color:var(--mu)}
::selection{background:var(--ac);color:#fff}
:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
h1,h2,h3,h4{margin:0;line-height:1.15}
p{margin:0}
.serif{font-family:var(--f-serif);font-weight:600;letter-spacing:-.01em}
.mono{font-family:var(--f-mono)}
.kicker{font-family:var(--f-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mu)}
.muted{color:var(--mu)}
.muted2{color:var(--mu);font-size:13px}
.small{font-size:13px}
.grow{flex:1 1 auto;min-width:0}
.stack{display:flex;flex-direction:column;gap:12px}
.stack-12{display:flex;flex-direction:column;gap:12px}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
[hidden]{display:none!important}
.skip-link{position:fixed;left:16px;top:-60px;z-index:9999;padding:10px 16px;border-radius:var(--r-pill);background:var(--ac);color:#fff;font-weight:700;transition:top .2s}
.skip-link:focus{top:12px;text-decoration:none}

/* ---------- Кнопки ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 18px;border-radius:var(--r-pill);border:1px solid var(--ln2);background:transparent;color:var(--tx);font-weight:700;font-size:14px;line-height:1;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .2s,border-color .2s,color .2s,opacity .2s,transform .2s var(--ease)}
.btn:hover{text-decoration:none;border-color:var(--tx2);color:var(--tx)}
.btn:active{transform:scale(.97)}
.btn i{font-size:.92em}
.btn-ac,.btn-accent{border-color:transparent;background:var(--ac);color:var(--ac-tx)}
.btn-ac:hover,.btn-accent:hover{border-color:transparent;background:var(--ac-h);color:var(--ac-tx)}
.btn-light,.btn-ink{border-color:var(--tx);background:var(--tx);color:var(--bg)}
.btn-light:hover,.btn-ink:hover{border-color:var(--tx);background:var(--tx);color:var(--bg);opacity:.88}
.btn-soft{border-color:transparent;background:var(--sf2)}
.btn-soft:hover{border-color:transparent;background:var(--sf3)}
.btn-ghost{border-color:var(--ln2);background:transparent;color:var(--tx2)}
.btn-ghost:hover{color:var(--tx)}
.btn-plain{border-color:transparent;background:transparent;color:var(--tx2)}
.btn-plain:hover{border-color:transparent;background:var(--sf2);color:var(--tx)}
.btn-danger,.btn.danger{border-color:transparent;background:var(--bad);color:#fff}
.btn-danger:hover,.btn.danger:hover{border-color:transparent;background:var(--bad);color:#fff;opacity:.9}
.btn-sm{min-height:32px;padding:0 13px;font-size:12.5px}
.btn-lg{min-height:48px;padding:0 24px;font-size:15px}
.btn-block{width:100%}
.btn-icon{width:40px;padding:0}
.btn-sm.btn-icon{width:32px}
.btn[disabled],.btn.is-disabled,.btn.is-off{opacity:.45}
.btn[disabled],.btn.is-disabled{pointer-events:none}
.is-busy{pointer-events:none;opacity:.7}
.ibtn{display:inline-grid;place-items:center;width:42px;height:42px;padding:0;border-radius:50%;border:1px solid var(--ln);background:var(--sf2);color:var(--tx);font-size:15px;line-height:1;cursor:pointer;position:relative;flex:0 0 auto;text-decoration:none;transition:background .2s,border-color .2s,color .2s}
.ibtn:hover{border-color:var(--ln2);text-decoration:none;color:var(--tx)}
.ibtn.is-on,.ibtn[aria-expanded=true]{border-color:var(--ac)}
.ibtn-plain{border-color:transparent;background:transparent}
.ibtn-plain:hover{background:var(--sf2);border-color:transparent}
.ibtn-sm{width:34px;height:34px;font-size:13px}
.ibtn .dot,.badge-dot{position:absolute;top:-3px;right:-3px;min-width:19px;height:19px;padding:0 5px;border-radius:var(--r-pill);background:var(--ac);color:#fff;font-family:var(--f-mono);font-size:10.5px;font-weight:600;line-height:19px;text-align:center;box-shadow:0 0 0 2px var(--bg)}
.ibtn .dot[data-n="0"],.ibtn .dot[data-n=""],.badge-dot[data-n="0"],.badge-dot[data-n=""]{display:none}
.badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-pill);background:var(--ac);color:#fff;font-family:var(--f-mono);font-size:10.5px;font-weight:600;line-height:1}
.badge[data-n="0"],.badge[data-n=""]{display:none}

/* ---------- Чипы, теги ---------- */
.chip{display:inline-flex;align-items:center;gap:8px;min-height:34px;padding:0 12px;border-radius:var(--r-pill);border:1px solid var(--ln2);background:transparent;color:var(--tx);font-size:12.5px;font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;text-decoration:none;transition:border-color .2s,color .2s,background .2s}
.chip:hover{border-color:var(--tx2);color:var(--tx);text-decoration:none}
.chip i{font-size:11px;color:var(--mu)}
.chip .n{font-family:var(--f-mono);color:var(--ac)}
.chip.is-on,.chip.on{background:var(--tx);border-color:var(--tx);color:var(--bg)}
.chip.is-on i,.chip.on i{color:inherit}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.tag{display:inline-flex;align-items:center;padding:6px 11px;border-radius:var(--r-pill);border:1px solid var(--ln);color:var(--tx2);font-size:12.5px;font-weight:600;line-height:1.1;text-decoration:none;transition:border-color .2s,color .2s}
.tag:hover{border-color:var(--ac);color:var(--ac);text-decoration:none}

/* ---------- Карточки, аватары, поля ---------- */
.card{background:var(--sf);border:1px solid var(--ln);border-radius:var(--r-xl)}
.card-pad{padding:22px}
.card-title{font-family:var(--f-serif);font-weight:600;font-size:24px;line-height:1.1;letter-spacing:-.01em}
.ava,.av{display:block;width:40px;height:40px;border-radius:50%;object-fit:cover;background:var(--sf2);flex:0 0 auto}
.ava-sm,.av-30{width:30px;height:30px}
.ava-lg{width:64px;height:64px}
.av-24{width:24px;height:24px}.av-32{width:32px;height:32px}.av-36{width:36px;height:36px}.av-40{width:40px;height:40px}.av-42{width:42px;height:42px}.av-46{width:46px;height:46px}.av-48{width:48px;height:48px}.av-64{width:64px;height:64px}
.av-ring{box-shadow:0 0 0 2px var(--sf),0 0 0 4px var(--ac)}
.av-stack{display:flex}
.av-stack .av,.av-stack img{width:24px;height:24px;border-radius:50%;border:2px solid var(--sf);margin-left:-8px}
.av-stack>:first-child{margin-left:0}
.field{display:block;width:100%;min-height:44px;padding:11px 14px;border-radius:14px;border:1px solid var(--ln);background:var(--sf2);color:var(--tx);font-size:16px;outline:0;transition:border-color .2s,box-shadow .2s}
.field:focus{border-color:var(--ac);box-shadow:0 0 0 3px var(--glow)}
textarea.field{min-height:110px;resize:vertical;line-height:1.5}
.label{display:block;margin:0 0 6px;font-size:13px;font-weight:600;color:var(--tx2)}
.label .mono{display:block;margin-bottom:6px;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mu);font-weight:500}
.check{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--tx2);cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--ac);margin:0}
.switch{position:relative;display:inline-block;width:34px;height:22px;border-radius:var(--r-pill);background:var(--sf3);cursor:pointer;flex:0 0 auto;transition:background .25s}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:left .25s var(--ease)}
.switch.is-on,input:checked+.switch,[aria-pressed=true]>.switch{background:var(--ac)}
.switch.is-on::after,input:checked+.switch::after,[aria-pressed=true]>.switch::after{left:15px}

/* ---------- Вкладки, сегменты ---------- */
.tabs{display:flex;gap:26px;border-bottom:1px solid var(--ln);overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{position:relative;flex:0 0 auto;padding:4px 0 13px;border:0;background:transparent;color:var(--mu);font-family:var(--f-serif);font-weight:600;font-size:26px;line-height:1.15;white-space:nowrap;cursor:pointer;text-decoration:none;transition:color .25s}
.tab:hover{color:var(--tx);text-decoration:none}
.tab::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--ac);transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease)}
.tab.is-on{color:var(--tx)}
.tab.is-on::after{transform:scaleX(1)}
.seg{display:inline-flex;gap:2px;padding:3px;border-radius:var(--r-pill);background:var(--sf2)}
.seg a,.seg button{padding:6px 12px;border:0;border-radius:var(--r-pill);background:transparent;color:var(--tx2);font-size:12.5px;font-weight:700;cursor:pointer;text-decoration:none}
.seg .is-on{background:var(--tx);color:var(--bg)}

/* ---------- Пусто, тост, скелет ---------- */
.empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:64px 24px;text-align:center;border-radius:30px;border:1px dashed var(--ln2);color:var(--mu)}
.empty .ico,.empty-ico{width:64px;height:64px;border-radius:50%;background:var(--sf2);display:grid;place-items:center;color:var(--ac);font-size:22px;flex:0 0 auto}
.empty h3,.empty-title{color:var(--tx);font-family:var(--f-serif);font-weight:600;font-size:32px;line-height:1.1}
.empty p{max-width:380px;font-size:14.5px;line-height:1.55}
.empty .btns{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap;justify-content:center}
.toast{position:fixed;left:50%;bottom:32px;z-index:9600;transform:translate(-50%,20px);opacity:0;pointer-events:none;display:flex;align-items:center;gap:10px;max-width:min(460px,calc(100vw - 32px));padding:12px 20px;border-radius:24px;background:var(--tx);color:var(--bg);font-weight:600;font-size:14px;box-shadow:var(--sh);transition:transform .3s var(--ease),opacity .3s}
.toast i{color:var(--ac)}
.toast.is-error i{color:var(--bad)}
.toast.is-on,.toast.show{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.skel{background:linear-gradient(90deg,var(--sf2) 0%,var(--sf3) 50%,var(--sf2) 100%);background-size:200% 100%;animation:skel 1.1s linear infinite}
.ps-skel-row{display:flex;align-items:center;gap:12px;padding:10px}
.ps-skel-row>i{display:block;width:46px;height:46px;border-radius:50%;flex:0 0 auto}
.ps-skel-row>span{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.ps-skel-row>span>i{display:block;height:11px;border-radius:6px}
.ps-skel-row>span>i+i{height:10px}
.ps-skel-chips{display:flex;flex-wrap:wrap;gap:8px}
.ps-skel-chips>i{display:block;height:32px;border-radius:var(--r-pill)}
.ps-skel-tile{display:block;aspect-ratio:9/16;border-radius:14px}
.ps-skel-card{display:flex;flex-direction:column;gap:12px;padding:22px;border-radius:30px;border:1px solid var(--ln);background:var(--sf)}
.ps-skel-card>div{display:flex;align-items:center;gap:10px}
.ps-skel-card i{display:block;border-radius:8px}
.ps-skel-card>div>i:first-child{width:30px;height:30px;border-radius:50%}
.ps-skel-card>div>i+i{width:160px;max-width:50%;height:12px;border-radius:6px}
.ps-skel-card>.t{width:80%;height:22px}
.ps-skel-card>.m{width:100%;aspect-ratio:16/7;border-radius:20px}

/* ---------- Пульс загрузки — pulseEl прототипа. Pulsr.pulse() — разовый (720 мс), Pulsr.busy(true|false) — пока идёт
   загрузка; .ps-pulse-inline — тот же штрих в строке/кнопке; .is-busy у кнопки — штрих вместо текста. ---------- */
.ps-pulse{position:fixed;inset:0;z-index:2147483000;pointer-events:none;display:grid;place-items:center;background:color-mix(in srgb,var(--bg) 35%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:plsFade .72s ease both}
.ps-pulse-c{position:relative;width:64px;height:64px;display:grid;place-items:center}
.ps-pulse-ring{position:absolute;inset:0;border-radius:50%;border:1.5px solid var(--ac);animation:plsRing .72s ease-out both}
.ps-pulse-dot{width:52px;height:52px;border-radius:50%;background:var(--sf);box-shadow:0 10px 30px rgba(0,0,0,.18),0 0 0 1px var(--ln);display:grid;place-items:center}
.ps-pulse svg{display:block;overflow:visible}
.ps-pulse path{fill:none;stroke:var(--ac);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:120;animation:plsDraw .72s cubic-bezier(.6,0,.3,1) both;filter:drop-shadow(0 0 4px var(--ac))}
.ps-pulse.is-loop{animation:plsIn .18s ease both}
.ps-pulse.is-loop .ps-pulse-ring{animation:plsRing .72s ease-out infinite}
.ps-pulse.is-loop path{animation:plsDraw .72s cubic-bezier(.6,0,.3,1) infinite}
.ps-pulse.is-out{animation:plsOut .3s ease both}
html.ps-arrive::before{content:"";position:fixed;inset:0;z-index:9500;pointer-events:none;background:radial-gradient(circle at 50% 50%,var(--sf) 0 25.5px,var(--ln2) 26px,transparent 26.6px),color-mix(in srgb,var(--bg) 35%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:plsOut .42s .18s ease both}
html.ps-arrive::after{content:"";position:fixed;left:50%;top:50%;z-index:9501;width:38px;height:24px;margin:-12px 0 0 -19px;pointer-events:none;background:var(--ac);-webkit-mask:var(--ps-ecg-glow) center/contain no-repeat;mask:var(--ps-ecg-glow) center/contain no-repeat;animation:plsOut .42s .18s ease both}
.ps-pulse-inline,.ps-spin{display:inline-block;width:2.2em;height:1.4em;vertical-align:middle;flex:0 0 auto;background:var(--ac);-webkit-mask:var(--ps-ecg) center/contain no-repeat;mask:var(--ps-ecg) center/contain no-repeat}
.ps-pulse-inline.is-lg{font-size:24px}
.ps-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:28px 16px;color:var(--mu);font-size:14px}
.ps-loading>.ps-pulse-inline{font-size:20px}
.ps-img-wait{position:absolute;left:50%;top:50%;z-index:1;width:76px;height:76px;margin:-38px 0 0 -38px;border-radius:50%;display:grid;place-items:center;background:rgba(20,19,17,.55);box-shadow:0 0 0 1px rgba(255,255,255,.08);pointer-events:none}
.ps-img-wait>.ps-pulse-inline{font-size:22px}
:where(button,.btn,.chip,.ibtn,[role=button]).is-busy{position:relative;opacity:1;-webkit-text-fill-color:transparent;text-shadow:none;cursor:progress;pointer-events:none}
:where(button,.btn,.chip,.ibtn,[role=button]).is-busy>*{visibility:hidden}
:where(button,.btn,.chip,.ibtn,[role=button]).is-busy::after{content:"";position:absolute;left:50%;top:50%;width:2.2em;height:1.4em;margin:-.7em 0 0 -1.1em;padding:0;border:0;border-radius:0;box-shadow:none;opacity:1;transform:none;visibility:visible;background:var(--ps-wait,var(--ac));-webkit-mask:var(--ps-ecg) center/contain no-repeat;mask:var(--ps-ecg) center/contain no-repeat}
:where(.btn-ac,.btn-accent,.btn-light,.btn-ink,.btn-danger,.btn.danger,.chip.is-on,.chip.on,.ui-dialog-buttonset button){--ps-wait:currentColor}
.ui-dialog-buttonset button:first-child:not(:only-child){--ps-wait:var(--ac)}
:where(:has(>.ps-img-wait)){position:relative}
.ps-wait-tail{margin-left:auto}
:root .mpro .mpro-spin{width:2.2em;height:1.4em;border:0;border-radius:0;animation:none;font-size:16px;background:var(--ac);-webkit-mask:var(--ps-ecg) center/contain no-repeat;mask:var(--ps-ecg) center/contain no-repeat}
:root .mpro .mpro-push-line .mpro-spin,:root .mpro .mpro-busy .mpro-spin{font-size:12px}
.tox .tox-spinner>div{display:none!important}
.tox .tox-spinner::before{content:"";display:block;width:44px;height:28px;background:var(--ac);-webkit-mask:var(--ps-ecg) center/contain no-repeat;mask:var(--ps-ecg) center/contain no-repeat}
.fa-spin,.fa-spin-pulse,.fa-pulse{animation:none!important;width:auto!important}
.fa-spin::before,.fa-spin-pulse::before,.fa-pulse::before{content:""!important;display:inline-block;width:2.2em;height:1.4em;vertical-align:middle;background:var(--ac);-webkit-mask:var(--ps-ecg) center/contain no-repeat;mask:var(--ps-ecg) center/contain no-repeat}

/* ---------- Выпадающие меню (data-ps-menu), окна (.overlay .modal) ---------- */
.pop-menu,.menu{position:absolute;z-index:60;min-width:240px;padding:6px;border-radius:18px;background:var(--sf);border:1px solid var(--ln2);box-shadow:var(--sh);animation:rise .2s ease both}
.pop-menu{right:0;top:calc(100% + 6px)}
.menu-item{display:flex;align-items:center;gap:12px;width:100%;min-height:40px;padding:0 12px;border:0;border-radius:12px;background:transparent;color:var(--tx);font-size:13.5px;font-weight:600;line-height:1.2;text-align:left;text-decoration:none;cursor:pointer;white-space:nowrap}
.menu-item:hover{background:var(--sf2);text-decoration:none;color:var(--tx)}
.menu-item i{width:16px;text-align:center;color:var(--mu);flex:0 0 auto}
.menu-item .hint,.menu-item .badge{margin-left:auto}
.menu-item .hint{font-family:var(--f-mono);font-size:11px;color:var(--ac)}
.menu-item.danger,.menu-item.danger i{color:var(--bad)}
.menu-item.on i{color:var(--ac)}
a>.menu-item{pointer-events:none}
a:hover>.menu-item{background:var(--sf2)}
.menu-sep{height:1px;margin:6px 0;background:var(--ln)}
.overlay{position:fixed;inset:0;z-index:8000;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(6,5,4,.6);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:fade .2s ease both;overflow-y:auto}
.modal{position:relative;width:100%;max-width:520px;max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px);overflow:auto;display:flex;flex-direction:column;border-radius:28px;background:var(--sf);border:1px solid var(--ln2);box-shadow:var(--sh);animation:rise .3s var(--ease) both}
.modal-head{display:flex;align-items:center;gap:12px;padding:22px 24px 6px}
.modal-title{flex:1;min-width:0;font-family:var(--f-serif);font-weight:600;font-size:28px;line-height:1.05}
.modal-close{display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:var(--sf2);color:var(--tx);cursor:pointer;flex:0 0 auto}
.modal-close:hover{background:var(--sf3)}
.modal-body{display:flex;flex-direction:column;gap:14px;padding:12px 24px 24px}
.modal-foot{display:flex;align-items:center;gap:8px;padding:14px 24px 20px;border-top:1px solid var(--ln)}
@media (max-width:640px){
	.overlay{align-items:flex-end;padding:0}
	.modal{max-width:none;max-height:92vh;max-height:92dvh;padding-bottom:env(safe-area-inset-bottom);border-radius:28px 28px 0 0;animation:sheetUp .35s var(--ease) both}
}

/* ---------- Анимации ---------- */
@keyframes skel{from{background-position:200% 0}to{background-position:-200% 0}}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes msgPop{from{opacity:0;transform:translateY(-8px) scale(.94)}to{opacity:1;transform:none}}
@keyframes msgRow{from{opacity:0;transform:translateX(8px)}to{opacity:1;transform:none}}
@keyframes sheetUp{from{transform:translateY(100%)}to{transform:none}}
@keyframes drawerIn{from{transform:translateX(-100%)}to{transform:none}}
@keyframes orbit{to{transform:rotate(360deg)}}
@keyframes pulseDash{from{stroke-dashoffset:120}to{stroke-dashoffset:0}}
@keyframes shimmer{0%{background-position:120% 0}60%,100%{background-position:-120% 0}}
@keyframes ecgRun{0%{stroke-dashoffset:260;opacity:1}70%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes penTap{0%,100%{transform:translateY(0)}12%{transform:translateY(1.5px) rotate(-8deg)}24%{transform:translateY(0)}}
@keyframes plsFade{0%{opacity:0}15%{opacity:1}75%{opacity:1}100%{opacity:0}}
@keyframes plsDraw{0%{stroke-dashoffset:120}60%{stroke-dashoffset:0}100%{stroke-dashoffset:-120}}
@keyframes plsRing{0%{transform:scale(.6);opacity:.55}100%{transform:scale(1.9);opacity:0}}
@keyframes plsIn{from{opacity:0}to{opacity:1}}
@keyframes plsOut{from{opacity:1}to{opacity:0}}
@keyframes storyBar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media (prefers-reduced-motion:reduce){
	.ps-pulse,.ps-pulse.is-loop,.ps-pulse .ps-pulse-ring,.ps-pulse path,.skel{animation:none!important}
	.ps-pulse .ps-pulse-ring{opacity:0}
	.ps-pulse path{stroke-dashoffset:0}
	.ps-pulse.is-out{opacity:0}
	html.ps-arrive::before,html.ps-arrive::after{display:none}
	.ps-pulse-inline,.ps-spin,.qq-upload-spinner,:root .mpro .mpro-spin,.fa-spin::before,.fa-spin-pulse::before,.fa-pulse::before,:where(button,.btn,.chip,.ibtn,[role=button]).is-busy::after{-webkit-mask-image:var(--ps-ecg-still);mask-image:var(--ps-ecg-still)}
}

/* Положение уведомлений (DLEPush и тост шаблона) — «Внешний вид» в админке; по умолчанию внизу по центру */
body.ps-push-br .DLEPush{left:auto;right:24px;transform:none}
body.ps-push-br .toast{left:auto;right:24px;transform:translate(0,20px)}
body.ps-push-br .toast.is-on,body.ps-push-br .toast.show{transform:none}
body.ps-push-tc .DLEPush{top:calc(var(--head-h) + 14px);bottom:auto}
body.ps-push-tc .toast{top:calc(var(--head-h) + 14px);bottom:auto;transform:translate(-50%,-20px)}
body.ps-push-tc .toast.is-on,body.ps-push-tc .toast.show{transform:translate(-50%,0)}
@media (max-width:819px){
	body.ps-push-br .DLEPush,body.ps-push-br .toast{right:16px;max-width:calc(100vw - 32px)}
	body.ps-push-tc .DLEPush,body.ps-push-tc .toast{top:70px}
}
/* «Внешний вид»: свой логотип на страницах входа, регистрации и обслуживания */
.pg-auth-limg{display:flex;align-items:center;flex-shrink:0}
.pg-auth-limg .ph-logo-img{display:block;height:46px;width:auto;max-width:220px;object-fit:contain}
.pg-auth-limg .ph-logo-img--light,[data-theme=light] .pg-off-logo .pg-auth-limg .ph-logo-img--dark,[data-theme=light] .pg-auth-mlogo .pg-auth-limg .ph-logo-img--dark{display:none}
[data-theme=light] .pg-off-logo .pg-auth-limg .ph-logo-img--light,[data-theme=light] .pg-auth-mlogo .pg-auth-limg .ph-logo-img--light{display:block}
.pg-auth-mlogo .pg-auth-limg .ph-logo-img{height:40px;max-width:46vw}
[data-theme=light] .pg-auth-logo .pg-auth-limg .ph-logo-img--dark{display:block}
[data-theme=light] .pg-auth-logo .pg-auth-limg .ph-logo-img--light{display:none}

/* ---------- V6 (LESSONS_VELORA §6, 17.10.2026) ---------- */
/* свои подсказки вместо title */
.ps-tip{position:fixed;z-index:9700;max-width:min(280px,calc(100vw - 16px));padding:6px 10px;border-radius:10px;background:var(--tx);color:var(--bg);font:500 12.5px/1.35 var(--f-sans);letter-spacing:0;pointer-events:none;box-shadow:var(--sh-sm);animation:psTip .12s ease-out;overflow-wrap:anywhere}
.ps-tip::after{content:"";position:absolute;left:var(--ax,50%);bottom:-4px;width:8px;height:8px;margin-left:-4px;background:inherit;transform:rotate(45deg);border-radius:1px}
.ps-tip.is-below::after{bottom:auto;top:-4px}
.ps-tip[hidden]{display:none}
@keyframes psTip{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.ps-tip{animation:none}}
/* полоса прокрутки: в цвет сайта / серая / как в браузере */
html:has(>body.ps-sb-acc),html:has(>body.ps-sb-soft){scrollbar-width:thin}
html:has(>body.ps-sb-acc),body.ps-sb-acc *{scrollbar-color:color-mix(in srgb,var(--ac) 60%,transparent) transparent}
html:has(>body.ps-sb-soft),body.ps-sb-soft *{scrollbar-color:color-mix(in srgb,var(--tx) 24%,transparent) transparent}
/* таблицы в тексте: прокрутка в обёртке, рамка по ячейкам */
.table-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 16px}
.table-scroll>table{margin:0!important}
.table-scroll td,.table-scroll th{overflow-wrap:normal;word-break:normal}
/* крупные заголовки: Cormorant на больших кеглях визуально «отходит» вправо */
.pf-h1,.pg-h1,.pp-title,.pk-h1,.pk-hero-title,.pm-h1,.pm-banned-h,.st-h1,.pf-tagcard-h,.pg-off-t,.pg-name,.pg-auth-quote,.sp-h2,.spa-h1,.spa-cta-t,.sps .sps-title,:root .kpro-h1,:root .cpro-page .cpro-title,.ps .qzp-page-title{margin-left:-.05em}
/* «Что у вас на уме?» в своём профиле */
.pg-mind{display:flex;align-items:center;gap:12px;width:100%;margin:0 0 16px;padding:10px 12px 10px 10px;border:1px solid var(--ln);border-radius:var(--r-pill,999px);background:var(--sf);color:var(--mu);font:inherit;font-size:15px;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}
.pg-mind:hover{border-color:var(--ln2);background:var(--sf2);color:var(--tx2)}
.pg-mind img{flex:0 0 auto;width:38px;height:38px;border-radius:50%;object-fit:cover}
.pg-mind-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pg-mind-c{flex:0 0 auto;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--f-mono);font-size:11.5px;color:var(--mu)}
.pg-mind-i{flex:0 0 auto;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--ac);color:#fff;font-size:14px}
@media (max-width:600px){.pg-mind-c{display:none}}
/* Горизонтально листаемые вкладки/чипы: затухание края, пока есть что листать (js/pulsr.js, 19.10.2026) */
.ps-hf-r{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent)}
.ps-hf-l{-webkit-mask-image:linear-gradient(90deg,transparent,#000 36px);mask-image:linear-gradient(90deg,transparent,#000 36px)}
.ps-hf-l.ps-hf-r{-webkit-mask-image:linear-gradient(90deg,transparent,#000 36px,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,transparent,#000 36px,#000 calc(100% - 36px),transparent)}
.ps-nc{display:inline-block;margin:0 -.22em;pointer-events:none}
/* п. 17: при открытом боковом меню оранжевая полоса прокрутки страницы (вид «акцент») не просвечивает поверх затемнения */
html:has(>body .pd:not([hidden])){scrollbar-width:none}
html:has(>body .pd:not([hidden]))::-webkit-scrollbar{display:none}
/* п. 18 (19.10.2026): появление страницы — 150 мс вместо 0,4–0,5 с: на телефоне долгое проявление читалось как «тормозит» */
.pp-main,.pg-page,.pg-prof,.pg-set,.pg-msg,.pg-ed,.pg-off,.pg-404,.pg-info,.pg-my-row,.pk-cat,.pk-au,.pk-np,.pk-hero,.pk-age,.pm,.pm-banned,.ps-sr,.pp-static,:root .cpro-catalog,:root .mpro.mpro-page{animation-duration:.15s!important;animation-delay:0s!important}
