/* WebCraft Studio — main.css
 * Сгенерировано: 2026-09-23 18:21:57
 * Модули: 00-variables.css, 01-reset.css, 02-typography.css, 03-layout.css, 04-buttons.css, 05-forms.css, 06-cards.css, 07-badges.css, 08-alerts.css, 09-tables.css, 10-header.css, 11-footer.css, 12-hero.css, 13-breadcrumbs.css, 14-accordion.css, 15-tabs.css, 16-modal.css, 17-utilities.css, 18-animations.css, 20-drawer.css, 21-glass.css, 22-slider-captcha.css, 23-tooltip.css, 24-pagination.css, 25-skeleton.css, 27-scrollbar.css, 30-gallery.css, 31-carousel.css, 32-hero-slider.css, 33-backgrounds.css, 34-dropdown.css, 35-toast.css, 36-empty.css, 37-loader.css, 38-steps.css, 39-pricing.css, 40-stats.css, 41-bento.css, 42-advanced-table.css, 43-charts.css, 44-cookie.css, 45-header-footer-extended.css, 46-cart.css, 47-input-mask.css, 48-catalog.css, 49-blog.css, 50-content.css
 * НЕ редактируйте вручную — правьте modules/*.css и пересоберите.
 */

/* === 00-variables.css === */
:root{
--color-bg:#0b0b0d;--color-surface:#141418;--color-surface-2:#1c1c22;--color-surface-3:#232329;
--color-border:#26262e;--color-border-strong:#3a3a44;
--color-text:#eaeaf0;--color-text-soft:#c8c8d2;--color-muted:#9aa0a6;--color-faint:#6b6b73;
--color-accent:#ff5b2e;--color-accent-hover:#ff7a52;--color-accent-soft:rgba(255,91,46,.12);
--color-success:#22c55e;--color-success-soft:rgba(34,197,94,.14);
--color-warning:#f59e0b;--color-warning-soft:rgba(245,158,11,.14);
--color-danger:#ef4444;--color-danger-soft:rgba(239,68,68,.14);
--color-info:#3b82f6;--color-info-soft:rgba(59,130,246,.14);
--font-base:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Inter,Arial,sans-serif;
--font-mono:'JetBrains Mono','SF Mono',Menlo,Consolas,monospace;
--fs-xs:12px;--fs-sm:13px;--fs-base:16px;--fs-md:18px;--fs-lg:20px;--fs-xl:24px;--fs-2xl:30px;--fs-3xl:38px;--fs-4xl:48px;--fs-5xl:60px;
--lh-tight:1.15;--lh-snug:1.35;--lh-base:1.6;
--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;
--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-7:32px;--s-8:40px;--s-9:48px;--s-10:64px;--s-11:80px;--s-12:96px;
--radius-xs:4px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-pill:999px;
--shadow-sm:0 1px 2px rgba(0,0,0,.25);
--shadow-md:0 8px 24px rgba(0,0,0,.28);
--shadow-lg:0 24px 60px rgba(0,0,0,.4);
--t-fast:.15s ease;--t-base:.25s ease;
--container:1200px;--container-narrow:800px;--header-h:72px;
--z-header:100;--z-modal:1000;--z-toast:1100;
--overlay-scrim:rgba(0,0,0,.6);--overlay-panel:rgba(20,20,24,.72);--overlay-bar:rgba(11,11,13,.85);--overlay-soft:rgba(20,20,24,.5);--overlay-strong:rgba(20,20,24,.9);
}

/* === 01-reset.css === */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;font-family:var(--font-base);font-size:var(--fs-base);line-height:var(--lh-base);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
img,svg,video{max-width:100%;height:auto;display:block}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-xs)}
::selection{background:var(--color-accent);color:#fff}

/* Универсальная защита: атрибут hidden всегда скрывает элемент,
 * даже если у класса задан display: flex/grid/block. */
[hidden] { display: none !important; }

/* === 02-typography.css === */
h1,h2,h3,h4,h5,h6{margin:0 0 .6em;line-height:var(--lh-tight);font-weight:var(--fw-bold);color:var(--color-text)}
h1{font-size:clamp(2rem,4vw,3rem);letter-spacing:-.02em}
h2{font-size:clamp(1.5rem,2.6vw,2.1rem);letter-spacing:-.01em}
h3{font-size:var(--fs-xl);font-weight:var(--fw-semibold)}
h4{font-size:var(--fs-lg);font-weight:var(--fw-semibold)}
h5{font-size:var(--fs-md);font-weight:var(--fw-semibold)}
h6{font-size:var(--fs-base);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--color-muted)}
p{margin:0 0 1em}
p:last-child{margin-bottom:0}
small,.text-sm{font-size:var(--fs-sm)}
.text-lg{font-size:var(--fs-md)}
.text-xl{font-size:var(--fs-lg)}
.lead{font-size:var(--fs-md);color:var(--color-muted);line-height:var(--lh-snug)}
.muted{color:var(--color-muted)}
.faint{color:var(--color-faint)}
.strong{font-weight:var(--fw-semibold)}
a.link{color:var(--color-accent);text-decoration:underline;text-underline-offset:3px;transition:color var(--t-fast)}
a.link:hover{color:var(--color-accent-hover)}
ul,ol{margin:0 0 1em;padding-left:1.4em}
ul li,ol li{margin-bottom:.35em}
ul.list-clean{list-style:none;padding:0}
ul.list-clean li{margin-bottom:.5em}
dl{margin:0 0 1em}
dt{font-weight:var(--fw-semibold);margin-bottom:.2em}
dd{margin:0 0 .8em;color:var(--color-muted)}
blockquote{margin:0 0 1em;padding:var(--s-4) var(--s-5);border-left:3px solid var(--color-accent);background:var(--color-surface);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--color-text-soft);font-style:italic}
blockquote p:last-child{margin-bottom:0}
code,kbd,pre,samp{font-family:var(--font-mono);font-size:.9em}
code{background:var(--color-surface-2);padding:.15em .45em;border-radius:var(--radius-xs);color:var(--color-accent-hover)}
pre{margin:0 0 1em;padding:var(--s-4) var(--s-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow-x:auto;line-height:1.5}
pre code{background:transparent;padding:0;color:inherit}
kbd{background:var(--color-surface-2);border:1px solid var(--color-border-strong);border-bottom-width:2px;border-radius:var(--radius-xs);padding:.1em .45em;color:var(--color-text);font-size:.85em}
mark{background:var(--color-accent-soft);color:var(--color-accent-hover);padding:.05em .3em;border-radius:var(--radius-xs)}
hr{border:0;border-top:1px solid var(--color-border);margin:var(--s-8) 0}

/* === 03-layout.css === */
.container{max-width:var(--container);margin:0 auto;padding:0 var(--s-6);width:100%}
.container--narrow{max-width:var(--container-narrow)}
.section{padding:var(--s-10) 0;border-top:1px solid var(--color-border)}
.section:first-of-type{border-top:0}
.section__head{margin-bottom:var(--s-8);max-width:720px}
.section__head--center{margin-left:auto;margin-right:auto;text-align:center}
.section__lead{color:var(--color-muted);font-size:var(--fs-md);margin:0}
.stack{display:flex;flex-direction:column;gap:var(--s-4)}
.stack--s{gap:var(--s-2)}
.stack--l{gap:var(--s-7)}
.row{display:flex;gap:var(--s-4);flex-wrap:wrap;align-items:center}
.row--between{justify-content:space-between}
.row--center{justify-content:center}
.grid{display:grid;gap:var(--s-5)}
.grid--2{grid-template-columns:repeat(2,1fr)}
.grid--3{grid-template-columns:repeat(3,1fr)}
.grid--4{grid-template-columns:repeat(4,1fr)}
.grid--auto{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
@media (max-width:900px){.grid--3,.grid--4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}}
.divider{height:1px;background:var(--color-border);border:0;margin:var(--s-7) 0}
.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}
/* === MOBILE-PATCH === */
@media (max-width:640px){
    .container{padding:0 var(--s-4)}
    .section{padding:var(--s-8) 0}
    .grid{gap:var(--s-4)}
    .stack{gap:var(--s-3)}
}
@media (max-width:400px){
    .container{padding:0 var(--s-3)}
}

/* === 04-buttons.css === */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);padding:12px 22px;border-radius:var(--radius-sm);font-weight:var(--fw-semibold);font-size:15px;line-height:1;border:1px solid transparent;cursor:pointer;transition:transform var(--t-fast),background var(--t-fast),border-color var(--t-fast),color var(--t-fast),box-shadow var(--t-fast);white-space:nowrap;text-decoration:none}
.btn:disabled,.btn.is-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}
.btn--primary{background:var(--color-accent);color:#fff}
.btn--primary:hover{background:var(--color-accent-hover);transform:translateY(-2px);color:#fff}
.btn--ghost{border-color:var(--color-border);color:var(--color-text);background:transparent}
.btn--ghost:hover{border-color:var(--color-accent);color:var(--color-accent)}
.btn--outline{border-color:var(--color-accent);color:var(--color-accent);background:transparent}
.btn--outline:hover{background:var(--color-accent-soft);color:var(--color-accent-hover)}
.btn--soft{background:var(--color-surface-2);color:var(--color-text);border-color:var(--color-border)}
.btn--soft:hover{background:var(--color-surface-3);border-color:var(--color-border-strong)}
.btn--danger{background:var(--color-danger);color:#fff}
.btn--danger:hover{background:#f87171;color:#fff}
.btn--success{background:var(--color-success);color:#fff}
.btn--success:hover{background:#4ade80;color:#fff}
.btn--sm{padding:8px 14px;font-size:13px}
.btn--lg{padding:16px 28px;font-size:16px}
.btn--block{display:flex;width:100%}
.btn--icon{padding:10px;aspect-ratio:1}
.btn svg{width:1.1em;height:1.1em;flex-shrink:0}
.btn-group{display:inline-flex;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--color-border)}
.btn-group .btn{border-radius:0;border:0;border-right:1px solid var(--color-border)}
.btn-group .btn:last-child{border-right:0}

/* === 05-forms.css === */
.form{display:grid;gap:var(--s-5)}
.field{display:grid;gap:var(--s-2)}
.field__label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-text-soft)}
.field__label .req{color:var(--color-accent);margin-left:2px}
.field__hint{font-size:var(--fs-xs);color:var(--color-muted)}
.field__error{font-size:var(--fs-xs);color:var(--color-danger);display:none}
.field.has-error .field__error{display:block}
.field.has-error .input,.field.has-error .textarea,.field.has-error .select{border-color:var(--color-danger)}
.input,.textarea,.select{display:block;width:100%;padding:12px 14px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);font-size:15px;transition:border-color var(--t-fast),background var(--t-fast);appearance:none}
.input::placeholder,.textarea::placeholder{color:var(--color-faint)}
.input:hover,.textarea:hover,.select:hover{border-color:var(--color-border-strong)}
.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--color-accent);background:var(--color-surface-2)}
.textarea{min-height:120px;resize:vertical;line-height:1.5}
.select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'><path d='M2.5 4.5L6 8L9.5 4.5' stroke='%239aa0a6' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-repeat:no-repeat;background-position:right 14px center;padding-right:38px}
.input--sm{padding:8px 12px;font-size:13px}
.input--lg{padding:16px 18px;font-size:16px}
.check{display:inline-flex;align-items:flex-start;gap:var(--s-3);cursor:pointer;user-select:none;font-size:14px;line-height:1.4}
.check input{position:absolute;opacity:0;pointer-events:none}
.check__box{width:20px;height:20px;flex-shrink:0;border:1.5px solid var(--color-border-strong);border-radius:var(--radius-xs);background:var(--color-surface);position:relative;transition:background var(--t-fast),border-color var(--t-fast);margin-top:1px}
.check__box::after{content:'';position:absolute;left:6px;top:2px;width:5px;height:10px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0);transition:transform var(--t-fast)}
.check input:checked~.check__box{background:var(--color-accent);border-color:var(--color-accent)}
.check input:checked~.check__box::after{transform:rotate(45deg) scale(1)}
.check input:focus-visible~.check__box{outline:2px solid var(--color-accent);outline-offset:2px}
.check--radio .check__box{border-radius:50%}
.check--radio .check__box::after{left:50%;top:50%;width:8px;height:8px;border:0;background:#fff;border-radius:50%;transform:translate(-50%,-50%) scale(0);border-top:0;border-left:0}
.check--radio input:checked~.check__box::after{transform:translate(-50%,-50%) scale(1)}
.switch{display:inline-flex;align-items:center;gap:var(--s-3);cursor:pointer;user-select:none;font-size:14px}
.switch input{position:absolute;opacity:0;pointer-events:none}
.switch__track{width:38px;height:22px;flex-shrink:0;background:var(--color-surface-3);border-radius:var(--radius-pill);position:relative;transition:background var(--t-fast)}
.switch__track::after{content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform var(--t-fast)}
.switch input:checked~.switch__track{background:var(--color-accent)}
.switch input:checked~.switch__track::after{transform:translateX(16px)}
.switch input:focus-visible~.switch__track{outline:2px solid var(--color-accent);outline-offset:2px}

/* === 06-cards.css === */
.card{padding:var(--s-6);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--t-fast),transform var(--t-fast),box-shadow var(--t-fast)}
.card--flat{background:transparent;border-color:transparent;padding:0}
.card--raised{box-shadow:var(--shadow-md)}
.card--accent{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}
.card--interactive{cursor:pointer}
.card--interactive:hover{border-color:var(--color-accent);transform:translateY(-3px)}
.card__icon{width:44px;height:44px;margin-bottom:var(--s-4);color:var(--color-accent);display:inline-flex;align-items:center;justify-content:center;background:var(--color-accent-soft);border-radius:var(--radius-md)}
.card__icon svg{width:24px;height:24px}
.card__title{margin:0 0 var(--s-2);font-size:var(--fs-lg);font-weight:var(--fw-semibold)}
.card__text{margin:0;color:var(--color-muted);font-size:15px}
.card__meta{margin-top:var(--s-4);padding-top:var(--s-4);border-top:1px solid var(--color-border);font-size:var(--fs-xs);color:var(--color-faint)}
.card__actions{margin-top:var(--s-5);display:flex;gap:var(--s-3);flex-wrap:wrap}

/* === 07-badges.css === */
.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:var(--fw-semibold);border-radius:var(--radius-pill);background:var(--color-surface-2);color:var(--color-text-soft);border:1px solid var(--color-border);line-height:1.4}
.badge--accent{background:var(--color-accent-soft);color:var(--color-accent-hover);border-color:transparent}
.badge--success{background:var(--color-success-soft);color:#4ade80;border-color:transparent}
.badge--warning{background:var(--color-warning-soft);color:#fbbf24;border-color:transparent}
.badge--danger{background:var(--color-danger-soft);color:#f87171;border-color:transparent}
.badge--info{background:var(--color-info-soft);color:#60a5fa;border-color:transparent}
.badge--dot::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block}
.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:13px;border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-text-soft);border:1px solid var(--color-border);cursor:pointer;transition:all var(--t-fast)}
.chip:hover{border-color:var(--color-accent);color:var(--color-text)}
.chip.is-active{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}

/* === 08-alerts.css === */
.alert{display:flex;gap:var(--s-4);padding:var(--s-5);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);font-size:14px;line-height:1.5}
.alert__icon{width:22px;height:22px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.alert__icon svg{width:22px;height:22px}
.alert__body{flex:1}
.alert__title{margin:0 0 4px;font-weight:var(--fw-semibold);font-size:15px}
.alert__text{margin:0;color:var(--color-text-soft)}
.alert--info{border-color:transparent;background:var(--color-info-soft);color:#93c5fd}
.alert--info .alert__title{color:#bfdbfe}
.alert--info .alert__text{color:#93c5fd}
.alert--success{border-color:transparent;background:var(--color-success-soft);color:#86efac}
.alert--success .alert__title{color:#bbf7d0}
.alert--success .alert__text{color:#86efac}
.alert--warning{border-color:transparent;background:var(--color-warning-soft);color:#fcd34d}
.alert--warning .alert__title{color:#fde68a}
.alert--warning .alert__text{color:#fcd34d}
.alert--danger{border-color:transparent;background:var(--color-danger-soft);color:#fca5a5}
.alert--danger .alert__title{color:#fecaca}
.alert--danger .alert__text{color:#fca5a5}

/* === 09-tables.css === */
.table-wrap{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;overflow-x:auto}
.table{width:100%;border-collapse:collapse;font-size:14px;min-width:520px}
.table th,.table td{padding:12px 16px;text-align:left;vertical-align:middle;border-bottom:1px solid var(--color-border)}
.table thead th{background:var(--color-surface-2);font-weight:var(--fw-semibold);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-muted)}
.table tbody tr:last-child td{border-bottom:0}
.table tbody tr:hover{background:var(--color-surface)}
.table--striped tbody tr:nth-child(even){background:var(--color-surface)}
.table td.num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}
/* === MOBILE-PATCH === */
@media (max-width:640px){
    .table{min-width:480px;font-size:13px}
    .table th,.table td{padding:10px 12px}
    .table thead th{font-size:11px;letter-spacing:.04em}
}
@media (max-width:420px){
    .table{min-width:440px}
    .table th,.table td{padding:8px 10px}
}

/* === 10-header.css === */
.header{position:sticky;top:0;z-index:var(--z-header);background:rgba(11,11,13,.85);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border)}
.header__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--s-6);height:var(--header-h)}
.header__logo{display:flex;align-items:center;gap:var(--s-3);font-weight:var(--fw-bold);font-size:var(--fs-md);color:var(--color-text)}
.header__logo img{height:36px;width:auto}
.header__logo:hover{color:var(--color-text)}
.nav{display:flex;align-items:center;gap:var(--s-6)}
.nav__link{color:var(--color-muted);font-weight:var(--fw-medium);font-size:15px;position:relative;padding:6px 0;transition:color var(--t-fast)}
.nav__link:hover,.nav__link.is-active{color:var(--color-text)}
.nav__link.is-active::after{content:'';position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--color-accent);border-radius:var(--radius-pill)}
.nav__toggle{display:none;color:var(--color-text);padding:8px;border-radius:var(--radius-sm);transition:background var(--t-fast)}
.nav__toggle:hover{background:var(--color-surface-2)}
@media (max-width:900px){
.nav{display:none}
.nav.is-open{display:flex;position:absolute;top:var(--header-h);left:0;right:0;background:var(--color-surface);flex-direction:column;padding:var(--s-5) var(--s-6);gap:var(--s-3);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-md)}
.nav__toggle{display:inline-flex}
}

/* === 11-footer.css === */
.footer{padding:var(--s-10) 0 var(--s-6);border-top:1px solid var(--color-border);color:var(--color-muted);font-size:14px;background:var(--color-surface)}
.footer__grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:var(--s-7);margin-bottom:var(--s-8)}
.footer__title{font-weight:var(--fw-semibold);color:var(--color-text);margin:0 0 var(--s-3);font-size:14px}
.footer__list{list-style:none;padding:0;margin:0;display:grid;gap:var(--s-2)}
.footer__list a{color:var(--color-muted);transition:color var(--t-fast)}
.footer__list a:hover{color:var(--color-accent)}
.footer__bottom{display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);padding-top:var(--s-5);border-top:1px solid var(--color-border);font-size:13px}
@media (max-width:900px){.footer__grid{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.footer__grid{grid-template-columns:1fr}.footer__bottom{flex-direction:column;text-align:center}}

/* === 12-hero.css === */
.hero{padding:var(--s-11) 0 var(--s-9);position:relative}
.hero--center{text-align:center}
.hero--center .hero__title,.hero--center .hero__lead{margin-left:auto;margin-right:auto}
.hero__title{max-width:900px;margin:0 0 var(--s-5)}
.hero__lead{font-size:var(--fs-md);color:var(--color-muted);max-width:640px;margin:0 0 var(--s-7);line-height:var(--lh-snug)}
.hero__actions{display:flex;gap:var(--s-3);flex-wrap:wrap}
.hero--center .hero__actions{justify-content:center}
.hero__eyebrow{display:inline-block;padding:5px 12px;font-size:12px;font-weight:var(--fw-semibold);letter-spacing:.06em;text-transform:uppercase;background:var(--color-accent-soft);color:var(--color-accent-hover);border-radius:var(--radius-pill);margin-bottom:var(--s-4)}
.page-hero{padding:var(--s-9) 0 var(--s-7);border-bottom:1px solid var(--color-border)}
.page-hero h1{margin:0 0 var(--s-3)}
.page-hero .lead{max-width:720px}
@media (max-width:600px){.hero{padding:var(--s-9) 0 var(--s-7)}}

/* === 13-breadcrumbs.css === */
.breadcrumbs{font-size:13px;color:var(--color-muted);padding:var(--s-4) 0}
.breadcrumbs__list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}
.breadcrumbs__list li{display:flex;align-items:center;gap:var(--s-2);margin:0}
.breadcrumbs__list li:not(:last-child)::after{content:'/';color:var(--color-faint);margin-left:2px}
.breadcrumbs a{color:var(--color-muted);transition:color var(--t-fast)}
.breadcrumbs a:hover{color:var(--color-accent)}
.breadcrumbs [aria-current="page"]{color:var(--color-text)}

/* === 14-accordion.css === */
.accordion{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface)}
.accordion__item+.accordion__item{border-top:1px solid var(--color-border)}
.accordion__item summary{list-style:none;cursor:pointer;padding:var(--s-5);font-weight:var(--fw-semibold);display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);transition:background var(--t-fast);color:var(--color-text)}
.accordion__item summary::-webkit-details-marker{display:none}
.accordion__item summary:hover{background:var(--color-surface-2)}
.accordion__item summary::after{content:'';width:10px;height:10px;border-right:2px solid var(--color-muted);border-bottom:2px solid var(--color-muted);transform:rotate(45deg);transition:transform var(--t-base);flex-shrink:0;margin-top:-4px}
.accordion__item[open] summary::after{transform:rotate(-135deg);margin-top:4px}
.accordion__body{padding:0 var(--s-5) var(--s-5);color:var(--color-muted);font-size:15px;line-height:1.6}
.accordion__body p:last-child{margin-bottom:0}

/* === 15-tabs.css === */
.tabs{display:block}
.tabs__list{display:flex;gap:var(--s-1);border-bottom:1px solid var(--color-border);margin-bottom:var(--s-6);overflow-x:auto}
.tabs__tab{padding:var(--s-3) var(--s-5);font-weight:var(--fw-medium);font-size:14px;color:var(--color-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--t-fast),border-color var(--t-fast);white-space:nowrap}
.tabs__tab:hover{color:var(--color-text)}
.tabs__tab.is-active{color:var(--color-text);border-bottom-color:var(--color-accent)}
.tabs__panel{display:none}
.tabs__panel.is-active{display:block;animation:fadeIn var(--t-base)}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}

/* === 16-modal.css === */
dialog.modal{border:0;padding:0;background:transparent;max-width:560px;width:calc(100% - var(--s-6));color:var(--color-text)}
dialog.modal::backdrop{background:rgba(0,0,0,.6);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.modal__inner{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--s-7);box-shadow:var(--shadow-lg)}
.modal__head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s-4);margin-bottom:var(--s-5)}
.modal__title{margin:0;font-size:var(--fs-xl);font-weight:var(--fw-semibold)}
.modal__close{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--color-muted);transition:background var(--t-fast),color var(--t-fast)}
.modal__close:hover{background:var(--color-surface-2);color:var(--color-text)}
.modal__text{color:var(--color-muted);margin:0 0 var(--s-5);font-size:15px}
.modal__actions{display:flex;gap:var(--s-3);justify-content:flex-end;flex-wrap:wrap}
/* no-extra-top-gap */

/* Широкое */
dialog.modal--wide{max-width:820px}

/* Fullscreen на маленьких экранах, обычное на больших */
@media (max-width:640px){
dialog.modal--full{max-width:none;width:100vw;height:100vh;max-height:none}
dialog.modal--full .modal__inner{width:100%;height:100%;border-radius:0;display:flex;flex-direction:column}
dialog.modal--full .modal__body{flex:1;overflow:auto}
}

/* Bottom-sheet: прижато к низу */
dialog.modal--sheet{max-width:none;width:100%;margin:auto auto 0;padding:0}
dialog.modal--sheet .modal__inner{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-width:560px;margin:0 auto;border-bottom:0}
dialog.modal--sheet::backdrop{background:rgba(0,0,0,.6);backdrop-filter:blur(6px)}

/* Стекло (glassmorphism) */
dialog.modal--glass{max-width:560px}
dialog.modal--glass .modal__inner{background:rgba(20,20,24,.7);border:1px solid rgba(255,255,255,.1);backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%)}
dialog.modal--glass::backdrop{background:rgba(11,11,13,.35);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%)}

/* Confirm-стиль */
.modal__icon{width:48px;height:48px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;margin-bottom:var(--s-4)}
.modal__icon--danger{background:var(--color-danger-soft);color:#f87171}
.modal__icon--success{background:var(--color-success-soft);color:#4ade80}
.modal__icon--warning{background:var(--color-warning-soft);color:#fbbf24}
.modal__icon svg{width:24px;height:24px}

/* === 17-utilities.css === */
.mt-0{margin-top:0!important}.mt-2{margin-top:var(--s-2)!important}.mt-4{margin-top:var(--s-4)!important}.mt-6{margin-top:var(--s-6)!important}.mt-8{margin-top:var(--s-8)!important}
.mb-0{margin-bottom:0!important}.mb-2{margin-bottom:var(--s-2)!important}.mb-4{margin-bottom:var(--s-4)!important}.mb-6{margin-bottom:var(--s-6)!important}.mb-8{margin-bottom:var(--s-8)!important}
.p-0{padding:0!important}.p-4{padding:var(--s-4)!important}.p-6{padding:var(--s-6)!important}.p-8{padding:var(--s-8)!important}
.text-center{text-align:center}.text-right{text-align:right}
.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}
.flex-wrap{flex-wrap:wrap}.gap-2{gap:var(--s-2)}.gap-3{gap:var(--s-3)}.gap-4{gap:var(--s-4)}.gap-6{gap:var(--s-6)}
.w-full{width:100%}.h-full{height:100%}
.pos-rel{position:relative}.pos-abs{position:absolute}
.c-accent{color:var(--color-accent)}.c-muted{color:var(--color-muted)}.c-text{color:var(--color-text)}.c-success{color:var(--color-success)}.c-danger{color:var(--color-danger)}
.bg-surface{background:var(--color-surface)}.bg-transparent{background:transparent}
.rounded{border-radius:var(--radius-md)}.rounded-pill{border-radius:var(--radius-pill)}
.hidden{display:none!important}

/* === 18-animations.css === */
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes slideUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.anim-fade{animation:fadeIn var(--t-base) both}
.anim-slide-up{animation:slideUp var(--t-base) both}
.hover-lift{transition:transform var(--t-base),box-shadow var(--t-base)}
.hover-lift:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}
.spinner{width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}
.progress{height:8px;background:var(--color-surface-2);border-radius:var(--radius-pill);overflow:hidden}
.progress__bar{height:100%;background:var(--color-accent);border-radius:inherit;transition:width var(--t-base)}
.avatar{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--color-surface-2);color:var(--color-text);font-weight:var(--fw-semibold);font-size:14px;flex-shrink:0;overflow:hidden}
.avatar--sm{width:32px;height:32px;font-size:12px}
.avatar--lg{width:56px;height:56px;font-size:18px}
.avatar--accent{background:var(--color-accent-soft);color:var(--color-accent-hover)}

/* === 20-drawer.css === */
/* Drawer — выезжающие панели: справа, слева, сверху, снизу */
.drawer{position:fixed;top:0;bottom:0;width:min(380px,92vw);background:var(--color-surface);z-index:var(--z-modal);display:flex;flex-direction:column;transition:transform var(--t-base);will-change:transform;box-shadow:var(--shadow-lg);overflow:hidden}
.drawer--right{right:0;transform:translateX(100%);border-left:1px solid var(--color-border)}
.drawer--left{left:0;transform:translateX(-100%);border-right:1px solid var(--color-border)}
.drawer--bottom{top:auto;left:0;right:0;bottom:0;width:100%;max-width:none;max-height:85vh;transform:translateY(100%);border-top:1px solid var(--color-border);border-radius:var(--radius-lg) var(--radius-lg) 0 0}
.drawer--top{top:0;left:0;right:0;bottom:auto;width:100%;max-width:none;transform:translateY(-100%);border-bottom:1px solid var(--color-border)}
.drawer.is-open{transform:translateX(0) translateY(0)}
.drawer__head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-5) var(--s-6);border-bottom:1px solid var(--color-border);flex-shrink:0}
.drawer__title{margin:0;font-size:var(--fs-lg);font-weight:var(--fw-semibold)}
.drawer__close{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--color-muted);transition:background var(--t-fast),color var(--t-fast);flex-shrink:0}
.drawer__close:hover{background:var(--color-surface-2);color:var(--color-text)}
.drawer__body{flex:1;overflow-y:auto;padding:var(--s-6);color:var(--color-text-soft);font-size:15px;line-height:1.6}
.drawer__foot{padding:var(--s-5) var(--s-6);border-top:1px solid var(--color-border);display:flex;gap:var(--s-3);justify-content:flex-end;flex-wrap:wrap;flex-shrink:0}
.drawer--glass .drawer__inner-bg{position:absolute;inset:0;background:rgba(20,20,24,.7);backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);z-index:-1}
.drawer--glass{border-color:rgba(255,255,255,.1);background:transparent;backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%)}
/* Light theme: стеклянный drawer */
[data-theme="light"] .drawer--glass{
    background:rgba(255,255,255,.72);
    border-color:rgba(20,22,26,.08);
}
[data-theme="light"] .drawer--glass .drawer__inner-bg{
    background:rgba(255,255,255,.72);
}
/* === DRAWER-SHADOW-FIX === */
/* Тень закрытого drawer не должна быть видна у краёв экрана.
   Решение: скрывать тень, пока drawer закрыт. При открытии — показывать. */

.drawer {
    /* По умолчанию (закрыт) — тень выключена */
    box-shadow: none;
    /* visibility:hidden исключает тень из рендера полностью */
    visibility: hidden;
    /* При закрытии: сначала едет transform, потом через t-base включается visibility */
    transition: transform var(--t-base), visibility 0s linear var(--t-base);
}

.drawer.is-open {
    /* Открыт — показываем тень */
    box-shadow: var(--shadow-lg);
    visibility: visible;
    /* При открытии: visibility включается сразу (0s задержки) */
    transition: transform var(--t-base), visibility 0s linear 0s;
}

/* Стеклянный вариант — сохранить ту же логику */
.drawer--glass {
    visibility: hidden;
    transition: transform var(--t-base), visibility 0s linear var(--t-base);
}
.drawer--glass.is-open {
    visibility: visible;
    transition: transform var(--t-base), visibility 0s linear 0s;
}

/* === 21-glass.css === */
/* Подложка с эффектом «матовое стекло» (frosted glass) */
.glass-backdrop{position:fixed;inset:0;z-index:var(--z-modal);background:rgba(11,11,13,.55);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);opacity:0;pointer-events:none;transition:opacity var(--t-base);will-change:opacity}
.glass-backdrop.is-open{opacity:1;pointer-events:auto}
.glass-backdrop--subtle{background:rgba(11,11,13,.3)}
.glass-backdrop--dark{background:rgba(0,0,0,.72)}
.glass-backdrop--light{background:rgba(255,255,255,.22)}
.glass-backdrop--strong{background:rgba(0,0,0,.85);backdrop-filter:blur(24px) saturate(140%);-webkit-backdrop-filter:blur(24px) saturate(140%)}
.glass-backdrop--accent{background:rgba(255,91,46,.18);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}

/* Панель со стеклянным фоном — для наложения поверх контента */
.glass-panel{background:rgba(20,20,24,.72);border:1px solid rgba(255,255,255,.08);backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}
.glass-panel--light{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14)}
.glass-panel--strong{background:rgba(20,20,24,.9);backdrop-filter:blur(24px)}
.glass-panel--soft{background:rgba(20,20,24,.5);backdrop-filter:blur(10px)}

/* Демонстрация стекла поверх фото/сетки */
.glass-demo-bg{position:relative;padding:var(--s-8);border-radius:var(--radius-md);background:
    radial-gradient(circle at 20% 30%, #ff5b2e 0%, transparent 45%),
    radial-gradient(circle at 80% 60%, #3b82f6 0%, transparent 45%),
    linear-gradient(135deg,#1c1c22,#0b0b0d);
    overflow:hidden}

/* === 22-slider-captcha.css === */
/* Капча-ползунок: перетащите ползунок слева направо */
.slider-captcha{
    position:relative;
    height:52px;
    box-sizing:border-box;
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:999px;
    user-select:none;
    -webkit-user-select:none;
    margin:var(--s-2) 0;
    transition:border-color var(--t-fast);
}
.slider-captcha__fill{
    position:absolute;
    left:-1px;
    top:-1px;
    bottom:-1px;
    width:0;
    border-radius:999px;
    background:linear-gradient(90deg,var(--color-accent-soft) 0%,rgba(34,197,94,.22) 100%);
    transition:width .2s ease;
    pointer-events:none;
    z-index:0;
}
.slider-captcha__text{
    position:absolute;
    inset:0;
    display:flex;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:0 60px;
    font-size:14px;
    font-weight:var(--fw-medium);
    color:var(--color-muted);
    pointer-events:none;
    transition:color var(--t-fast);
    z-index:1;
}
.slider-captcha__handle{
    position:absolute;
    top:0;
    left:0;
    width:52px;
    height:52px;
    margin-top:-1px;
    margin-left:-1px;
    box-sizing:border-box;
    display:flex;
    align-items:center;
    justify-content:center;
    background:var(--color-surface-2);
    border:1px solid var(--color-border-strong);
    border-radius:50%;
    color:var(--color-text);
    cursor:grab;
    touch-action:none;
    padding:0;
    transition:left .22s cubic-bezier(.4,0,.2,1),background var(--t-fast),border-color var(--t-fast),color var(--t-fast);
    z-index:2;
    outline-offset:2px;
}
.slider-captcha__handle:hover{background:var(--color-surface-3)}
.slider-captcha__handle:active,.slider-captcha.is-dragging .slider-captcha__handle{cursor:grabbing}
.slider-captcha.is-dragging .slider-captcha__handle{transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}
.slider-captcha.is-dragging .slider-captcha__fill{transition:none}
.slider-captcha__handle svg{
    position:absolute;
    width:20px;height:20px;
    transition:opacity var(--t-fast),transform var(--t-fast);
}
.slider-captcha__handle .sc-icon-check{opacity:0;transform:scale(.5)}

/* Успех */
.slider-captcha.is-success{border-color:var(--color-success)}
.slider-captcha.is-success .slider-captcha__fill{
    width:100%;
    background:linear-gradient(90deg,rgba(34,197,94,.22) 0%,rgba(34,197,94,.42) 100%);
}
.slider-captcha.is-success .slider-captcha__text{color:#4ade80;font-weight:var(--fw-semibold)}
.slider-captcha.is-success .slider-captcha__handle{
    left:calc(100% - 50px);
    background:var(--color-success);
    border-color:var(--color-success);
    color:#fff;
    cursor:default;
}
.slider-captcha.is-success .slider-captcha__handle .sc-icon-arrow{opacity:0;transform:scale(.5)}
.slider-captcha.is-success .slider-captcha__handle .sc-icon-check{opacity:1;transform:scale(1)}

/* Ошибка */
.slider-captcha.is-error{border-color:var(--color-danger);animation:sc-shake .35s ease}
.slider-captcha.is-error .slider-captcha__text{color:#fca5a5}
@keyframes sc-shake{
    0%,100%{transform:translateX(0)}
    20%{transform:translateX(-6px)}
    40%{transform:translateX(6px)}
    60%{transform:translateX(-4px)}
    80%{transform:translateX(4px)}
}

/* Мобильные */
@media (max-width:480px){
    .slider-captcha{height:48px}
    .slider-captcha__handle{width:48px;height:48px}
    .slider-captcha.is-success .slider-captcha__handle{left:calc(100% - 46px)}
    .slider-captcha__text{font-size:13px;padding:0 54px}
    .slider-captcha__handle svg{width:18px;height:18px}
}

/* Подпись под полем капчи */
.slider-captcha__hint{
    display:block;
    margin:4px 0 0;
    font-style:italic;
    font-weight:300;
    font-size:13px;
    line-height:1.35;
    color:var(--color-muted);
    letter-spacing:.01em;
}

/* === SC_STRIPES_EFFECT start === */
.slider-captcha__fill{
    background:
        repeating-linear-gradient(
            -45deg,
            rgba(255,255,255,.07) 0 10px,
            rgba(255,255,255,0) 10px 20px
        ),
        linear-gradient(90deg, var(--color-accent-soft) 0%, rgba(34,197,94,.22) 100%);
    background-size: 28px 28px, 100% 100%;
    animation: sc-fill-stripes .8s linear infinite;
    will-change: background-position;
}
.slider-captcha.is-dragging .slider-captcha__fill{
    animation: sc-fill-stripes .8s linear infinite;
}
.slider-captcha.is-success .slider-captcha__fill{
    background:
        repeating-linear-gradient(
            -45deg,
            rgba(255,255,255,.15) 0 10px,
            rgba(255,255,255,0) 10px 20px
        ),
        linear-gradient(90deg, rgba(34,197,94,.22) 0%, rgba(34,197,94,.42) 100%);
    background-size: 28px 28px, 100% 100%;
    animation: sc-fill-stripes .8s linear infinite;
}
@keyframes sc-fill-stripes{
    from { background-position: 0 0, 0 0; }
    to   { background-position: 28px 0, 0 0; }
}
@media (prefers-reduced-motion: reduce){
    .slider-captcha__fill,
    .slider-captcha.is-success .slider-captcha__fill{
        animation: none;
    }
}
/* === SC_STRIPES_EFFECT end === */

/* === SC_ARROWS_EFFECT start === */
.slider-captcha::before{
    content:'';
    position:absolute;
    left:64px;
    right:64px;
    top:50%;
    height:14px;
    margin-top:-7px;
    background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='14' viewBox='0 0 28 14'%3E%3Cg fill='none' stroke='%23eaeaf0' stroke-opacity='0.35' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 3 L8 7 L4 11'/%3E%3Cpath d='M12 3 L16 7 L12 11'/%3E%3Cpath d='M20 3 L24 7 L20 11'/%3E%3C/g%3E%3C/svg%3E");
    background-repeat:repeat-x;
    background-position:0 0;
    background-size:28px 14px;
    animation:sc-arrows-flow 1.1s linear infinite;
    pointer-events:none;
    z-index:0;
    opacity:.9;
    transition:opacity var(--t-fast);
}
.slider-captcha.is-dragging::before,
.slider-captcha.is-success::before{
    opacity:0;
}
@keyframes sc-arrows-flow{
    from{ background-position:0 0; }
    to  { background-position:28px 0; }
}
@media (prefers-reduced-motion: reduce){
    .slider-captcha::before{ animation:none; }
}
/* === SC_ARROWS_EFFECT end === */

/* Заблокированное состояние (после серии ошибок) */
.slider-captcha.is-locked {
    opacity: .65;
    cursor: not-allowed;
    border-color: var(--color-border);
}
.slider-captcha.is-locked .slider-captcha__handle {
    cursor: not-allowed;
    background: var(--color-surface-3);
}
.slider-captcha.is-locked .slider-captcha__text {
    color: var(--color-muted);
}


/* === HINT-BELOW-FIX === */
/* Подпись вынесена под капчу, чтобы не мешать стрелкам внутри */

.slider-captcha-wrap {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin: 0;
}
/* no-extra-margin */
.slider-captcha-wrap .slider-captcha {
    margin: 0;
}

/* Подпись под капчей */
.slider-captcha__hint {
    display: block;
    font-size: 13px;
    line-height: 1.4;
    color: var(--color-muted);
    padding-left: 4px;
    transition: color var(--t-fast);
}

/* Цвет подписи при состояниях (селектор соседа через ~) */
.slider-captcha.is-dragging ~ .slider-captcha__hint {
    color: var(--color-text-soft);
}
.slider-captcha.is-success ~ .slider-captcha__hint {
    color: #4ade80;
    font-weight: var(--fw-medium);
}
.slider-captcha.is-error ~ .slider-captcha__hint {
    color: #fca5a5;
}
.slider-captcha.is-locked ~ .slider-captcha__hint {
    color: var(--color-faint);
}

/* Светлая тема — приглушённые цвета */
[data-theme="light"] .slider-captcha.is-success ~ .slider-captcha__hint {
    color: #15803d;
}
[data-theme="light"] .slider-captcha.is-error ~ .slider-captcha__hint {
    color: #b91c1c;
}

/* Старый .slider-captcha__text — если попадёт из кэша — прячем */
.slider-captcha__text {
    display: none;
}

/* Мобильные — подпись компактнее */
@media (max-width: 480px) {
    .slider-captcha__hint { font-size: 12px; }
}


/* === CAPTCHA-LIGHT-THEME === */
/* Светлая тема: убираем белые элементы, которые не видны на белом фоне */

[data-theme="light"] .slider-captcha::before {
    background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='14' viewBox='0 0 28 14'%3E%3Cg fill='none' stroke='%231a1c20' stroke-opacity='0.35' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 3 L8 7 L4 11'/%3E%3Cpath d='M12 3 L16 7 L12 11'/%3E%3Cpath d='M20 3 L24 7 L20 11'/%3E%3C/g%3E%3C/svg%3E");
}

[data-theme="light"] .slider-captcha__fill {
    background:
        repeating-linear-gradient(
            -45deg,
            rgba(20,22,26,.05) 0 10px,
            rgba(20,22,26,0) 10px 20px
        ),
        linear-gradient(90deg, var(--color-accent-soft) 0%, rgba(34,197,94,.18) 100%);
    background-size: 28px 28px, 100% 100%;
}
[data-theme="light"] .slider-captcha.is-dragging .slider-captcha__fill {
    background:
        repeating-linear-gradient(
            -45deg,
            rgba(20,22,26,.05) 0 10px,
            rgba(20,22,26,0) 10px 20px
        ),
        linear-gradient(90deg, var(--color-accent-soft) 0%, rgba(34,197,94,.18) 100%);
    background-size: 28px 28px, 100% 100%;
}
[data-theme="light"] .slider-captcha.is-success .slider-captcha__fill {
    background:
        repeating-linear-gradient(
            -45deg,
            rgba(20,22,26,.08) 0 10px,
            rgba(20,22,26,0) 10px 20px
        ),
        linear-gradient(90deg, rgba(34,197,94,.22) 0%, rgba(34,197,94,.42) 100%);
    background-size: 28px 28px, 100% 100%;
}

[data-theme="light"] .slider-captcha__handle {
    background:#ffffff;
    border-color: var(--color-border-strong);
    color: var(--color-text);
}
[data-theme="light"] .slider-captcha__handle:hover {
    background:#f6f7f9;
}

[data-theme="light"] .slider-captcha.is-success .slider-captcha__handle {
    background:#16a34a;
    border-color:#16a34a;
    color:#fff;
}

[data-theme="light"] .slider-captcha.is-success ~ .slider-captcha__hint {
    color:#15803d;
}
[data-theme="light"] .slider-captcha.is-error ~ .slider-captcha__hint {
    color:#b91c1c;
}
[data-theme="light"] .slider-captcha.is-locked ~ .slider-captcha__hint {
    color:#5a6169;
}

[data-theme="light"] .slider-captcha.is-success .slider-captcha__text {
    color:#15803d;
}
[data-theme="light"] .slider-captcha.is-error .slider-captcha__text {
    color:#b91c1c;
}

[data-theme="light"] .slider-captcha {
    background:#f7f8fa;
    border-color:#e3e6ea;
}
[data-theme="light"] .slider-captcha.is-success {
    border-color:#16a34a;
}
[data-theme="light"] .slider-captcha.is-error {
    border-color:#dc2626;
}

[data-theme="light"] .slider-captcha.is-locked {
    background:#eef0f4;
}
[data-theme="light"] .slider-captcha.is-locked .slider-captcha__handle {
    background:#e4e7ec;
    color:#8a919a;
}

/* === 23-tooltip.css === */
/* Tooltip — всплывающая подсказка */
.tt{position:relative;display:inline-flex;align-items:center}
.tt__bubble{
    position:absolute;z-index:var(--z-modal);
    background:#0b0b0d;color:#fff;
    padding:6px 10px;border-radius:var(--radius-sm);
    font-size:12px;line-height:1.35;white-space:nowrap;
    border:1px solid rgba(255,255,255,.08);
    box-shadow:var(--shadow-md);
    opacity:0;pointer-events:none;
    transition:opacity var(--t-fast),transform var(--t-fast);
    max-width:260px;white-space:normal;
}
.tt__bubble::after{
    content:'';position:absolute;width:8px;height:8px;
    background:#0b0b0d;border:1px solid rgba(255,255,255,.08);
    transform:rotate(45deg);
}
/* top */
.tt--top .tt__bubble{bottom:calc(100% + 10px);left:50%;transform:translate(-50%,4px)}
.tt--top .tt__bubble::after{bottom:-5px;left:50%;margin-left:-4px;border-top:0;border-left:0}
/* bottom */
.tt--bottom .tt__bubble{top:calc(100% + 10px);left:50%;transform:translate(-50%,-4px)}
.tt--bottom .tt__bubble::after{top:-5px;left:50%;margin-left:-4px;border-bottom:0;border-right:0}
/* left */
.tt--left .tt__bubble{right:calc(100% + 10px);top:50%;transform:translate(4px,-50%)}
.tt--left .tt__bubble::after{right:-5px;top:50%;margin-top:-4px;border-bottom:0;border-left:0}
/* right */
.tt--right .tt__bubble{left:calc(100% + 10px);top:50%;transform:translate(-4px,-50%)}
.tt--right .tt__bubble::after{left:-5px;top:50%;margin-top:-4px;border-top:0;border-right:0}

.tt:hover>.tt__bubble,
.tt:focus-within>.tt__bubble{opacity:1;pointer-events:auto}
.tt--top:hover>.tt__bubble,.tt--top:focus-within>.tt__bubble{transform:translate(-50%,0)}
.tt--bottom:hover>.tt__bubble,.tt--bottom:focus-within>.tt__bubble{transform:translate(-50%,0)}
.tt--left:hover>.tt__bubble,.tt--left:focus-within>.tt__bubble{transform:translate(0,-50%)}
.tt--right:hover>.tt__bubble,.tt--right:focus-within>.tt__bubble{transform:translate(0,-50%)}

/* === 24-pagination.css === */
/* Pagination — постраничная навигация */
.pagination{display:flex;flex-wrap:wrap;gap:var(--s-1);align-items:center;list-style:none;padding:0;margin:0}
.pagination__item{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:38px;height:38px;padding:0 10px;
    font-size:14px;font-weight:var(--fw-medium);
    color:var(--color-text-soft);
    background:var(--color-surface);border:1px solid var(--color-border);
    border-radius:var(--radius-sm);
    transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast);
    text-decoration:none;cursor:pointer;
}
.pagination__item:hover{border-color:var(--color-accent);color:var(--color-text)}
.pagination__item.is-active{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}
.pagination__item.is-disabled,.pagination__item:disabled{opacity:.4;pointer-events:none}
.pagination__ellipsis{padding:0 6px;color:var(--color-faint);user-select:none}
.pagination--center{justify-content:center}
.pagination--end{justify-content:flex-end}
.pagination--pill .pagination__item{border-radius:var(--radius-pill)}

/* === 25-skeleton.css === */
/* Skeleton — скелетон-заглушка для контента во время загрузки */
.skeleton{
    display:block;
    background:linear-gradient(
        90deg,
        var(--color-surface-2) 0%,
        var(--color-surface-3) 50%,
        var(--color-surface-2) 100%
    );
    background-size:200% 100%;
    animation:sk-shimmer 1.4s ease-in-out infinite;
    border-radius:var(--radius-sm);
}
.skeleton--text{height:14px;border-radius:4px;width:100%}
.skeleton--text.skeleton--w-80{width:80%}
.skeleton--text.skeleton--w-60{width:60%}
.skeleton--title{height:22px;border-radius:6px;width:60%}
.skeleton--card{height:140px;border-radius:var(--radius-md)}
.skeleton--avatar{width:40px;height:40px;border-radius:50%}
.skeleton--button{height:38px;width:120px;border-radius:var(--radius-sm)}
.skeleton-stack{display:flex;flex-direction:column;gap:var(--s-3)}
.skeleton-stack--row{flex-direction:row;align-items:center}
@keyframes sk-shimmer{
    0%{background-position:200% 0}
    100%{background-position:-200% 0}
}
@media (prefers-reduced-motion: reduce){
    .skeleton{animation:none;background:var(--color-surface-2)}
}

/* === 27-scrollbar.css === */
/* Scrollbar — стилизованные полосы прокрутки.
 * Утилиты для контейнеров со скроллом. Работают в WebKit (Chrome/Edge/Safari)
 * и в Firefox (scrollbar-width + scrollbar-color).
 */

/* Базовый контейнер-демо и общий приём */
.scroll{
    overflow:auto;
    border:1px solid var(--color-border);
    border-radius:var(--radius-md);
    background:var(--color-surface);
    padding:var(--s-4);
    max-height:200px;
}

/* --- .scroll--thin — тонкий скролл --- */
.scroll--thin{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}
.scroll--thin::-webkit-scrollbar{width:6px;height:6px}
.scroll--thin::-webkit-scrollbar-track{background:transparent}
.scroll--thin::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:3px}
.scroll--thin::-webkit-scrollbar-thumb:hover{background:var(--color-muted)}

/* --- .scroll--accent — акцентный скролл --- */
.scroll--accent{scrollbar-width:thin;scrollbar-color:var(--color-accent) var(--color-surface-2)}
.scroll--accent::-webkit-scrollbar{width:10px;height:10px}
.scroll--accent::-webkit-scrollbar-track{background:var(--color-surface-2);border-radius:var(--radius-pill)}
.scroll--accent::-webkit-scrollbar-thumb{
    background:var(--color-accent);
    border-radius:var(--radius-pill);
    border:2px solid var(--color-surface-2);
}
.scroll--accent::-webkit-scrollbar-thumb:hover{background:var(--color-accent-hover)}

/* --- .scroll--pill — «таблетка» --- */
.scroll--pill{scrollbar-width:auto;scrollbar-color:var(--color-border-strong) transparent}
.scroll--pill::-webkit-scrollbar{width:12px;height:12px}
.scroll--pill::-webkit-scrollbar-track{background:transparent}
.scroll--pill::-webkit-scrollbar-thumb{
    background:var(--color-border-strong);
    border-radius:999px;
    border:3px solid var(--color-surface);
}
.scroll--pill::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}

/* --- .scroll--invisible — скрытый скролл --- */
.scroll--invisible{scrollbar-width:none;-ms-overflow-style:none}
.scroll--invisible::-webkit-scrollbar{width:0;height:0;display:none}

/* --- Модификаторы для готовых контейнеров --- */
.scroll-both{overflow:auto;max-height:200px}

/* Универсальные утилиты на любой элемент */
.scrollbar-thin{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}
.scrollbar-thin::-webkit-scrollbar{width:6px;height:6px}
.scrollbar-thin::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:3px}

.scrollbar-accent{scrollbar-width:thin;scrollbar-color:var(--color-accent) transparent}
.scrollbar-accent::-webkit-scrollbar{width:8px;height:8px}
.scrollbar-accent::-webkit-scrollbar-thumb{background:var(--color-accent);border-radius:4px}
.scrollbar-accent::-webkit-scrollbar-thumb:hover{background:var(--color-accent-hover)}

.scrollbar-hidden{scrollbar-width:none;-ms-overflow-style:none}
.scrollbar-hidden::-webkit-scrollbar{width:0;height:0}
/* === SCROLLBAR-PATCH === */

/* --- Глобальный скроллбар страницы (html) ---
 * Тонкий, цвет border-strong, hover → accent.
 * Токены — переключаются между светлой и тёмной темой автоматически.
 */
html{
    scrollbar-width:thin;
    scrollbar-color:var(--color-border-strong) var(--color-bg);
}
html::-webkit-scrollbar{width:12px;height:12px}
html::-webkit-scrollbar-track{background:var(--color-bg)}
html::-webkit-scrollbar-thumb{
    background:var(--color-border-strong);
    border:3px solid var(--color-bg);
    border-radius:999px;
}
html::-webkit-scrollbar-thumb:hover{background:var(--color-muted)}
html::-webkit-scrollbar-corner{background:var(--color-bg)}

/* --- Универсальные обёртки, которым нужен аккуратный скролл --- */

/* Блоки кода <pre> — горизонтальный скролл */
pre{
    scrollbar-width:thin;
    scrollbar-color:var(--color-border-strong) var(--color-surface);
}
pre::-webkit-scrollbar{height:8px;width:8px}
pre::-webkit-scrollbar-track{background:var(--color-surface)}
pre::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:4px}
pre::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}

/* Табы — горизонтальный скролл при переполнении */
.tabs__list{
    scrollbar-width:none;
    -ms-overflow-style:none;
}
.tabs__list::-webkit-scrollbar{width:0;height:0;display:none}

/* Обёртка базовой таблицы */
.table-wrap{
    scrollbar-width:thin;
    scrollbar-color:var(--color-border-strong) var(--color-surface);
}
.table-wrap::-webkit-scrollbar{height:8px;width:8px}
.table-wrap::-webkit-scrollbar-track{background:var(--color-surface)}
.table-wrap::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:4px}
.table-wrap::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}

/* Обёртка advanced-таблицы */
.atable-scroll{
    scrollbar-width:thin;
    scrollbar-color:var(--color-border-strong) var(--color-surface);
}
.atable-scroll::-webkit-scrollbar{height:10px;width:10px}
.atable-scroll::-webkit-scrollbar-track{background:var(--color-surface)}
.atable-scroll::-webkit-scrollbar-thumb{
    background:var(--color-border-strong);
    border:2px solid var(--color-surface);
    border-radius:999px;
}
.atable-scroll::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}

/* Mega menu на мобильных (выезжающая панель) */
.mega__panel{
    scrollbar-width:thin;
    scrollbar-color:var(--color-border-strong) var(--color-surface);
}
.mega__panel::-webkit-scrollbar{width:8px;height:8px}
.mega__panel::-webkit-scrollbar-track{background:var(--color-surface)}
.mega__panel::-webkit-scrollbar-thumb{
    background:var(--color-border-strong);
    border-radius:4px;
}
.mega__panel::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}

/* Drawer body */
.drawer__body{
    scrollbar-width:thin;
    scrollbar-color:var(--color-border-strong) var(--color-surface);
}
.drawer__body::-webkit-scrollbar{width:8px;height:8px}
.drawer__body::-webkit-scrollbar-track{background:var(--color-surface)}
.drawer__body::-webkit-scrollbar-thumb{
    background:var(--color-border-strong);
    border-radius:4px;
}
.drawer__body::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}

/* Modal fullscreen body */
dialog.modal--full .modal__body{
    scrollbar-width:thin;
    scrollbar-color:var(--color-border-strong) var(--color-surface);
}
dialog.modal--full .modal__body::-webkit-scrollbar{width:8px;height:8px}
dialog.modal--full .modal__body::-webkit-scrollbar-track{background:var(--color-surface)}
dialog.modal--full .modal__body::-webkit-scrollbar-thumb{
    background:var(--color-border-strong);
    border-radius:4px;
}
dialog.modal--full .modal__body::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}

/* Автовыравнивание для любых элементов с overflow — на светлой теме
 * (например, если стилизованный scrollbar-color на тёмном фоне, в светлой
 * нужно чуть иначе). Токены уже перекрашиваются, но подстрахуемся там,
 * где цвета были привязаны к surface — а не к bg. */

/* Light theme — глобальный фон скроллбара страницы должен совпадать с белым */
[data-theme="light"]{
    scrollbar-color:var(--color-border-strong) var(--color-bg);
}
[data-theme="light"] html::-webkit-scrollbar-track{background:var(--color-bg)}
[data-theme="light"] html::-webkit-scrollbar-thumb{
    border-color:var(--color-bg);
}
[data-theme="light"] html::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}

/* === 30-gallery.css === */
/* Gallery + Lightbox — сетка превью и просмотр увеличенного изображения */

.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--s-3)}
.gallery--masonry{grid-auto-rows:140px}
.gallery--masonry .gallery__item:nth-child(3n){grid-row:span 2}
.gallery--masonry .gallery__item:nth-child(5n){grid-row:span 3}

.gallery__item{
    position:relative;display:block;overflow:hidden;
    border:1px solid var(--color-border);border-radius:var(--radius-md);
    background:var(--color-surface);cursor:zoom-in;
    aspect-ratio:4/3;padding:0;
    transition:transform var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast);
}
.gallery__item:hover{transform:translateY(-2px);border-color:var(--color-accent);box-shadow:var(--shadow-md)}
.gallery__item:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}
.gallery__item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--t-base)}
.gallery__item:hover img{transform:scale(1.04)}
.gallery__item::after{
    content:'⤢';position:absolute;right:8px;bottom:8px;
    width:26px;height:26px;line-height:26px;text-align:center;border-radius:50%;
    background:rgba(11,11,13,.65);color:#fff;font-size:13px;
    opacity:0;transition:opacity var(--t-fast);pointer-events:none;
}
.gallery__item:hover::after,.gallery__item:focus-visible::after{opacity:1}

/* --- Лайтбокс на <dialog> --- */
dialog.lightbox{border:0;padding:0;background:transparent;max-width:none;width:100%;height:100%;color:#fff}
dialog.lightbox::backdrop{background:rgba(0,0,0,.85);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.lightbox__inner{position:relative;display:flex;flex-direction:column;width:100%;height:100%;padding:var(--s-6);box-sizing:border-box}
.lightbox__img{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden}
.lightbox__img img{max-width:100%;max-height:100%;object-fit:contain;border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}
.lightbox__caption{margin-top:var(--s-4);text-align:center;color:rgba(255,255,255,.75);font-size:14px}
.lightbox__close{
    position:absolute;top:var(--s-4);right:var(--s-4);
    width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.1);color:#fff;
    display:inline-flex;align-items:center;justify-content:center;
    transition:background var(--t-fast);
}
.lightbox__close:hover{background:rgba(255,255,255,.2)}
.lightbox__close svg{width:20px;height:20px}
.lightbox__nav{
    position:absolute;top:50%;transform:translateY(-50%);
    width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.1);color:#fff;
    display:inline-flex;align-items:center;justify-content:center;
    transition:background var(--t-fast);
}
.lightbox__nav:hover{background:rgba(255,255,255,.2)}
.lightbox__nav--prev{left:var(--s-4)}
.lightbox__nav--next{right:var(--s-4)}
.lightbox__nav svg{width:22px;height:22px}
.lightbox__counter{position:absolute;top:var(--s-5);left:var(--s-5);font-size:13px;color:rgba(255,255,255,.75);font-family:var(--font-mono)}
@media (max-width:640px){
    .lightbox__inner{padding:var(--s-4)}
    .lightbox__nav{width:40px;height:40px}
    .lightbox__close{width:40px;height:40px}
}
/* ============================================================
 * Light theme: галерея и лайтбокс
 * ============================================================ */

/* Превью — цвета через токены, но усилим границы и hover-цвет */
[data-theme="light"] .gallery__item{
    border-color:#e3e6ea;
    background:#f7f8fa;
}
[data-theme="light"] .gallery__item:hover{
    border-color:var(--color-accent);
    box-shadow:0 8px 24px rgba(20,22,26,.10);
}
[data-theme="light"] .gallery__item::after{
    background:rgba(20,22,26,.7);
    color:#fff;
}

/* Backdrop лайтбокса — светлая «дымка» вместо чёрной */
[data-theme="light"] dialog.lightbox{color:#1a1c20}
[data-theme="light"] dialog.lightbox::backdrop{
    background:rgba(240,242,246,.92);
    backdrop-filter:blur(10px) saturate(140%);
    -webkit-backdrop-filter:blur(10px) saturate(140%);
}

/* Увеличенное фото — мягкая тень под светлым фоном */
[data-theme="light"] .lightbox__img img{
    box-shadow:0 24px 60px rgba(20,22,26,.22);
    border:1px solid rgba(20,22,26,.06);
}

/* Подпись под фото */
[data-theme="light"] .lightbox__caption{color:rgba(20,22,26,.62)}

/* Счётчик кадров */
[data-theme="light"] .lightbox__counter{color:rgba(20,22,26,.55)}

/* Кнопки (закрыть, назад, вперёд) — тёмный контур на светлом фоне */
[data-theme="light"] .lightbox__close,
[data-theme="light"] .lightbox__nav{
    background:rgba(20,22,26,.06);
    color:#1a1c20;
    border:1px solid rgba(20,22,26,.08);
}
[data-theme="light"] .lightbox__close:hover,
[data-theme="light"] .lightbox__nav:hover{
    background:rgba(20,22,26,.14);
}

/* ============================================================
 * Тёмная тема — явные значения для надёжности (совпадают
 * с дефолтом, но фиксируем их, чтобы оба режима были явными)
 * ============================================================ */
[data-theme="dark"] dialog.lightbox,
:root:not([data-theme="light"]) dialog.lightbox{color:#fff}

[data-theme="dark"] dialog.lightbox::backdrop,
:root:not([data-theme="light"]) dialog.lightbox::backdrop{
    background:rgba(0,0,0,.85);
    backdrop-filter:blur(6px);
    -webkit-backdrop-filter:blur(6px);
}
/* === MOBILE-PATCH === */
@media (max-width:640px){
    .gallery{grid-template-columns:repeat(2,1fr);gap:var(--s-2)}
    .gallery--masonry{grid-auto-rows:120px}
    .lightbox__nav{width:36px;height:36px}
    .lightbox__nav svg{width:18px;height:18px}
    .lightbox__close{width:36px;height:36px;top:var(--s-3);right:var(--s-3)}
    .lightbox__counter{top:var(--s-4);left:var(--s-4);font-size:12px}
    .lightbox__caption{font-size:13px;margin-top:var(--s-3)}
}
@media (max-width:400px){
    .gallery{grid-template-columns:1fr}
}

/* === 31-carousel.css === */
/* Carousel — снап-карусель со стрелками по бокам, точками под слайдами,
 * drag-to-scroll для мыши, скрытый скроллбар. */

.carousel{position:relative;padding:0 56px}

/* Слайд-зона */
.carousel__stage{position:relative}

.carousel__viewport{
    display:flex;gap:var(--s-4);
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    scroll-behavior:smooth;
    -webkit-overflow-scrolling:touch;
    padding:var(--s-2) 2px var(--s-2);
    cursor:grab;
    user-select:none;
    -webkit-user-select:none;
    /* Скрываем полосу прокрутки */
    scrollbar-width:none;
    -ms-overflow-style:none;
}
.carousel__viewport::-webkit-scrollbar{width:0;height:0;display:none}
.carousel__viewport > *{scroll-snap-align:start;flex:0 0 auto}

/* Во время перетаскивания — отключаем snap и smooth, чтобы не мешали drag */
.carousel__viewport.is-dragging{
    cursor:grabbing;
    scroll-snap-type:none;
    scroll-behavior:auto;
}

/* Навигационные стрелки — по бокам карусели, вертикально по центру stage */
.carousel__nav{
    position:absolute;top:50%;transform:translateY(-50%);
    z-index:2;
    width:40px;height:40px;border-radius:50%;
    display:inline-flex;align-items:center;justify-content:center;
    background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);
    box-shadow:var(--shadow-sm);
    transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast),opacity var(--t-fast);
}
.carousel__nav:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}
.carousel__nav:disabled{opacity:.35;cursor:not-allowed}
.carousel__nav svg{width:18px;height:18px}
.carousel__nav--prev{left:-56px}
.carousel__nav--next{right:-56px}

/* Слайд */
.carousel__slide{
    width:min(340px,80%);
    background:var(--color-surface);border:1px solid var(--color-border);
    border-radius:var(--radius-md);overflow:hidden;
}
.carousel__slide img{
    width:100%;aspect-ratio:4/3;object-fit:cover;display:block;
    pointer-events:none; /* клик по картинке не должен прерывать drag */
}
.carousel__slide-body{padding:var(--s-4)}
.carousel__slide-title{margin:0 0 4px;font-size:var(--fs-md);font-weight:var(--fw-semibold)}
.carousel__slide-text{margin:0;font-size:14px;color:var(--color-muted)}

/* Точки-пагинация — под слайдами, по центру */
.carousel__dots{
    display:flex;justify-content:center;align-items:center;
    gap:8px;margin-top:var(--s-4);
}
.carousel__dot{
    width:8px;height:8px;border-radius:50%;border:0;padding:0;
    background:var(--color-border-strong);cursor:pointer;
    transition:background var(--t-fast),transform var(--t-fast);
}
.carousel__dot:hover{background:var(--color-muted)}
.carousel__dot.is-active{background:var(--color-accent);transform:scale(1.4)}

/* Модификаторы */
.carousel--full .carousel__slide{width:min(560px,92%)}
.carousel--peek .carousel__slide{width:min(280px,72%)}

/* Мобильные — стрелки уменьшены, отступ по бокам меньше */
@media (max-width:640px){
    .carousel{padding:0 40px}
    .carousel__nav{width:34px;height:34px}
    .carousel__nav svg{width:16px;height:16px}
    .carousel__nav--prev{left:-40px}
    .carousel__nav--next{right:-40px}
}

@media (prefers-reduced-motion: reduce){
    .carousel__viewport{scroll-behavior:auto}
}

/* === 32-hero-slider.css === */
/* Hero slider — большой слайд во всю ширину, со стрелками, точками и автосменой */

.hero-slider{
    position:relative;
    width:100%;
    min-height:clamp(420px,70vh,720px);
    overflow:hidden;
    background:#0b0b0d;
    color:#fff;
    isolation:isolate;
}
.hero-slider__track{
    position:absolute;inset:0;
    display:flex;
    transition:transform .6s cubic-bezier(.4,0,.2,1);
    will-change:transform;
}
.hero-slider__slide{
    position:relative;
    flex:0 0 100%;
    min-width:100%;
    height:100%;
    display:flex;
    align-items:center;
    overflow:hidden;
}
.hero-slider__bg{
    position:absolute;inset:0;
    z-index:0;
}
.hero-slider__bg img{width:100%;height:100%;object-fit:cover;display:block}
.hero-slider__bg::after{
    content:'';position:absolute;inset:0;
    background:linear-gradient(180deg,rgba(11,11,13,.15) 0%,rgba(11,11,13,.65) 100%);
}
[data-theme="light"] .hero-slider__bg::after{
    background:linear-gradient(180deg,rgba(20,22,26,.05) 0%,rgba(20,22,26,.55) 100%);
}

.hero-slider__content{
    position:relative;z-index:2;
    max-width:900px;
    padding:var(--s-12) 0;
}
.hero-slider__eyebrow{
    display:inline-block;
    padding:5px 12px;
    font-size:12px;font-weight:var(--fw-semibold);letter-spacing:.06em;text-transform:uppercase;
    background:rgba(255,255,255,.12);
    backdrop-filter:blur(10px);
    -webkit-backdrop-filter:blur(10px);
    border:1px solid rgba(255,255,255,.18);
    color:#fff;
    border-radius:var(--radius-pill);
    margin-bottom:var(--s-5);
}
.hero-slider__title{
    font-size:clamp(1.9rem,4.5vw,3.4rem);
    line-height:1.1;
    letter-spacing:-.02em;
    margin:0 0 var(--s-5);
    text-shadow:0 2px 30px rgba(0,0,0,.35);
}
.hero-slider__lead{
    font-size:clamp(1rem,1.5vw,1.15rem);
    color:rgba(255,255,255,.85);
    max-width:640px;
    margin:0 0 var(--s-7);
    line-height:1.55;
}
.hero-slider__actions{display:flex;gap:var(--s-3);flex-wrap:wrap}

/* Стрелки */
.hero-slider__nav{
    position:absolute;top:50%;transform:translateY(-50%);
    z-index:3;
    width:48px;height:48px;border-radius:50%;
    display:inline-flex;align-items:center;justify-content:center;
    background:rgba(255,255,255,.1);
    color:#fff;
    border:1px solid rgba(255,255,255,.2);
    backdrop-filter:blur(10px);
    -webkit-backdrop-filter:blur(10px);
    transition:background var(--t-fast),border-color var(--t-fast);
}
.hero-slider__nav:hover{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.4)}
.hero-slider__nav svg{width:20px;height:20px}
.hero-slider__nav--prev{left:var(--s-5)}
.hero-slider__nav--next{right:var(--s-5)}

/* Точки */
.hero-slider__dots{
    position:absolute;left:50%;bottom:var(--s-6);transform:translateX(-50%);
    z-index:3;
    display:flex;gap:8px;
}
.hero-slider__dot{
    width:10px;height:10px;border-radius:50%;border:1px solid rgba(255,255,255,.6);
    background:transparent;cursor:pointer;padding:0;
    transition:background var(--t-fast),transform var(--t-fast);
}
.hero-slider__dot:hover{background:rgba(255,255,255,.4)}
.hero-slider__dot.is-active{background:#fff;transform:scale(1.25)}

@media (max-width:640px){
    .hero-slider{min-height:520px}
    .hero-slider__nav{width:38px;height:38px}
    .hero-slider__nav--prev{left:var(--s-3)}
    .hero-slider__nav--next{right:var(--s-3)}
    .hero-slider__content{padding:var(--s-10) 0}
}
/* === MOBILE-PATCH === */
@media (max-width:640px){
    .hero-slider{min-height:520px}
    .hero-slider__eyebrow{font-size:11px;padding:4px 10px;margin-bottom:var(--s-4)}
    .hero-slider__title{font-size:1.7rem;margin-bottom:var(--s-4)}
    .hero-slider__lead{font-size:14px;margin-bottom:var(--s-5)}
    .hero-slider__actions .btn{padding:10px 16px;font-size:14px}
    .hero-slider__dots{bottom:var(--s-4)}
}
@media (max-width:400px){
    .hero-slider{min-height:460px}
    .hero-slider__title{font-size:1.5rem}
}

/* === 33-backgrounds.css === */
/* Backgrounds — фоны с градиентами, SVG-фигурами и эффектом мутного стекла */

/* ===== Общая база ===== */
.bg-block{
    position:relative;
    overflow:hidden;
    border-radius:var(--radius-lg);
    padding:var(--s-10);
    isolation:isolate;
    color:var(--color-text);
}

/* ===== 1. Градиентные фоны ===== */
.bg-gradient-accent{
    background:linear-gradient(135deg,#ff5b2e 0%,#ff8a5c 100%);
    color:#fff;
}
.bg-gradient-cool{
    background:linear-gradient(135deg,#2563eb 0%,#06b6d4 100%);
    color:#fff;
}
.bg-gradient-sunset{
    background:linear-gradient(135deg,#f59e0b 0%,#ef4444 60%,#a855f7 100%);
    color:#fff;
}
.bg-gradient-mesh{
    background:
        radial-gradient(circle at 15% 20%, rgba(255,91,46,.55) 0%, transparent 45%),
        radial-gradient(circle at 85% 30%, rgba(59,130,246,.55) 0%, transparent 45%),
        radial-gradient(circle at 50% 90%, rgba(168,85,247,.45) 0%, transparent 50%),
        #0b0b0d;
    color:#fff;
}
[data-theme="light"] .bg-gradient-mesh{
    background:
        radial-gradient(circle at 15% 20%, rgba(255,140,80,.45) 0%, transparent 45%),
        radial-gradient(circle at 85% 30%, rgba(120,160,255,.45) 0%, transparent 45%),
        radial-gradient(circle at 50% 90%, rgba(180,130,240,.35) 0%, transparent 50%),
        #f4f6fa;
    color:#1a1c20;
}
.bg-gradient-dark{
    background:linear-gradient(180deg,#0b0b0d 0%,#141418 100%);
    color:#eaeaf0;
}

/* ===== 2. SVG-паттерны на фоне ===== */
.bg-dots::before{
    content:'';position:absolute;inset:0;z-index:-1;
    background-image:radial-gradient(currentColor 1px, transparent 1.5px);
    background-size:20px 20px;
    color:rgba(255,255,255,.14);
    opacity:.9;
}
[data-theme="light"] .bg-dots::before{color:rgba(20,22,26,.12)}

.bg-grid::before{
    content:'';position:absolute;inset:0;z-index:-1;
    background-image:
        linear-gradient(to right, currentColor 1px, transparent 1px),
        linear-gradient(to bottom, currentColor 1px, transparent 1px);
    background-size:32px 32px;
    color:rgba(255,255,255,.08);
}
[data-theme="light"] .bg-grid::before{color:rgba(20,22,26,.07)}

.bg-diagonal::before{
    content:'';position:absolute;inset:0;z-index:-1;
    background-image:repeating-linear-gradient(
        -45deg,
        transparent 0 14px,
        currentColor 14px 15px
    );
    color:rgba(255,255,255,.07);
}
[data-theme="light"] .bg-diagonal::before{color:rgba(20,22,26,.06)}

/* ===== 3. SVG-фигуры как отдельные элементы ===== */
.bg-shape{position:absolute;z-index:-1;pointer-events:none;opacity:.9}
.bg-shape--blob{
    top:-15%;right:-10%;width:60%;max-width:640px;height:auto;
    filter:blur(40px);
}
.bg-shape--blob-2{
    bottom:-20%;left:-12%;width:50%;max-width:520px;height:auto;
    filter:blur(60px);
}
.bg-shape--wave{
    bottom:0;left:0;right:0;width:100%;height:auto;display:block;
}
.bg-shape--ring{
    top:10%;left:8%;width:220px;height:220px;
}
.bg-shape--grid-svg{
    top:0;right:0;width:360px;height:360px;opacity:.4;
}
.bg-shape--circles{
    bottom:-60px;right:-60px;width:340px;height:340px;opacity:.55;
}

/* ===== 4. Эффект мутного стекла ===== */
.bg-glass-panel{
    background:rgba(20,20,24,.55);
    border:1px solid rgba(255,255,255,.12);
    backdrop-filter:blur(18px) saturate(160%);
    -webkit-backdrop-filter:blur(18px) saturate(160%);
    border-radius:var(--radius-lg);
    padding:var(--s-7);
    box-shadow:var(--shadow-lg);
    color:#fff;
}
[data-theme="light"] .bg-glass-panel{
    background:rgba(255,255,255,.55);
    border-color:rgba(20,22,26,.08);
    color:#1a1c20;
}
.bg-glass-panel--light{
    background:rgba(255,255,255,.14);
    border-color:rgba(255,255,255,.24);
}
.bg-glass-panel--strong{
    background:rgba(20,20,24,.8);
    backdrop-filter:blur(28px) saturate(180%);
    -webkit-backdrop-filter:blur(28px) saturate(180%);
}
.bg-glass-panel--accent{
    background:rgba(255,91,46,.18);
    border-color:rgba(255,91,46,.35);
}

/* Контент внутри bg-block */
.bg-block__title{
    margin:0 0 var(--s-4);
    font-size:clamp(1.5rem,3vw,2.2rem);
    line-height:1.15;
    letter-spacing:-.01em;
}
.bg-block__lead{
    margin:0;
    font-size:1.02rem;
    line-height:1.6;
    opacity:.85;
    max-width:640px;
}
.bg-block__row{
    display:flex;gap:var(--s-6);align-items:stretch;flex-wrap:wrap;
    margin-top:var(--s-7);
}
.bg-block__row > *{flex:1;min-width:280px}

/* Демо-контейнер для превью */
.bg-demo{
    position:relative;
    overflow:hidden;
    border-radius:var(--radius-md);
    min-height:180px;
    padding:var(--s-6);
    isolation:isolate;
}
/* === MOBILE-PATCH === */
@media (max-width:900px){
    .bg-block{padding:var(--s-8) var(--s-6);border-radius:var(--radius-md)}
    .bg-shape--blob{width:75%;filter:blur(30px)}
    .bg-shape--blob-2{width:65%;filter:blur(40px)}
    .bg-shape--ring{width:160px;height:160px;top:6%;left:4%}
    .bg-shape--grid-svg{width:260px;height:260px;opacity:.3}
    .bg-shape--circles{width:240px;height:240px;bottom:-40px;right:-40px}
    .bg-glass-panel{padding:var(--s-5);border-radius:var(--radius-md)}
    .bg-block__row{gap:var(--s-4);margin-top:var(--s-5)}
    .bg-block__row > *{min-width:220px}
}
@media (max-width:640px){
    .bg-block{padding:var(--s-7) var(--s-4)}
    .bg-shape--blob{width:90%;filter:blur(24px);opacity:.7}
    .bg-shape--blob-2{width:80%;filter:blur(30px);opacity:.7}
    .bg-shape--ring{width:110px;height:110px}
    .bg-shape--grid-svg{width:180px;height:180px;opacity:.25}
    .bg-shape--circles{width:180px;height:180px;bottom:-30px;right:-30px;opacity:.4}
    .bg-glass-panel{padding:var(--s-4)}
    .bg-block__row > *{min-width:0;flex-basis:100%}
    .bg-block__title{font-size:1.35rem}
    .bg-block__lead{font-size:14px}
}

/* === 34-dropdown.css === */
/* Dropdown + Mega menu */

.dd{position:relative;display:inline-block}
.dd__toggle{
    display:inline-flex;align-items:center;gap:6px;
    padding:9px 14px;border-radius:var(--radius-sm);
    background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);
    font-size:14px;font-weight:var(--fw-medium);
    cursor:pointer;transition:border-color var(--t-fast),background var(--t-fast),color var(--t-fast);
}
.dd__toggle:hover{border-color:var(--color-border-strong)}
.dd__toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}
.dd__toggle svg.dd__caret{width:14px;height:14px;transition:transform var(--t-fast);color:var(--color-muted)}
.dd.is-open .dd__toggle{border-color:var(--color-accent);color:var(--color-text)}
.dd.is-open .dd__toggle svg.dd__caret{transform:rotate(180deg)}

.dd__menu{
    position:absolute;top:calc(100% + 8px);left:0;min-width:220px;
    background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);
    box-shadow:var(--shadow-lg);
    padding:var(--s-2);
    z-index:var(--z-modal);
    opacity:0;transform:translateY(-4px);pointer-events:none;
    transition:opacity var(--t-fast),transform var(--t-fast);
}
.dd.is-open .dd__menu{opacity:1;transform:translateY(0);pointer-events:auto}
.dd--right .dd__menu{left:auto;right:0}
.dd--up .dd__menu{top:auto;bottom:calc(100% + 8px)}

.dd__item{
    display:flex;align-items:center;gap:10px;
    padding:9px 12px;border-radius:var(--radius-sm);
    color:var(--color-text-soft);font-size:14px;line-height:1.2;
    text-decoration:none;cursor:pointer;
    transition:background var(--t-fast),color var(--t-fast);
}
.dd__item:hover,.dd__item:focus-visible{background:var(--color-surface-2);color:var(--color-text);outline:none}
.dd__item svg{width:16px;height:16px;color:var(--color-muted);flex-shrink:0}
.dd__item.is-active{background:var(--color-accent-soft);color:var(--color-accent-hover)}
.dd__item.is-disabled{opacity:.45;pointer-events:none}
.dd__item .dd__hint{margin-left:auto;font-size:11px;color:var(--color-faint);font-family:var(--font-mono)}

.dd__label{padding:8px 12px 4px;font-size:11px;font-weight:var(--fw-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--color-faint)}
.dd__divider{height:1px;background:var(--color-border);margin:6px 4px}

/* ===== Mega menu ===== */
.mega{position:relative}
.mega__toggle{
    display:inline-flex;align-items:center;gap:6px;
    padding:9px 14px;font-size:15px;font-weight:var(--fw-medium);
    color:var(--color-muted);background:transparent;border:0;cursor:pointer;
    transition:color var(--t-fast);
}
.mega__toggle:hover,.mega.is-open .mega__toggle{color:var(--color-text)}
.mega__toggle svg{width:14px;height:14px;transition:transform var(--t-fast)}
.mega.is-open .mega__toggle svg{transform:rotate(180deg)}

.mega__panel{
    position:absolute;top:calc(100% + 12px);left:50%;transform:translate(-50%,-4px);
    width:min(960px,92vw);
    background:var(--color-surface);border:1px solid var(--color-border);
    border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);
    padding:var(--s-7);
    z-index:var(--z-modal);
    opacity:0;pointer-events:none;
    transition:opacity var(--t-fast),transform var(--t-fast);
}
.mega.is-open .mega__panel{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.mega__grid{display:grid;grid-template-columns:repeat(3,1fr) 240px;gap:var(--s-6)}
.mega__col{display:flex;flex-direction:column;gap:var(--s-3)}
.mega__col-title{
    font-size:11px;font-weight:var(--fw-semibold);letter-spacing:.06em;
    text-transform:uppercase;color:var(--color-faint);
    padding-bottom:var(--s-3);border-bottom:1px solid var(--color-border);
}
.mega__link{
    display:flex;flex-direction:column;gap:2px;
    padding:8px 10px;border-radius:var(--radius-sm);
    color:var(--color-text);text-decoration:none;
    transition:background var(--t-fast);
}
.mega__link:hover{background:var(--color-surface-2)}
.mega__link-title{font-size:14px;font-weight:var(--fw-medium)}
.mega__link-desc{font-size:12px;color:var(--color-muted);line-height:1.35}
.mega__promo{
    background:linear-gradient(160deg,var(--color-accent-soft) 0%,rgba(255,91,46,.02) 100%);
    border:1px solid var(--color-border);border-radius:var(--radius-md);
    padding:var(--s-5);
    display:flex;flex-direction:column;justify-content:space-between;
}
.mega__promo-tag{font-size:11px;font-weight:var(--fw-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent-hover)}
.mega__promo-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);margin:var(--s-3) 0}
.mega__promo-desc{font-size:13px;color:var(--color-muted);margin:0 0 var(--s-4)}

[data-theme="light"] .dd__menu,
[data-theme="light"] .mega__panel{background:#fff;border-color:#e3e6ea}

@media (max-width:900px){
    .mega__panel{position:fixed;left:var(--s-3);right:var(--s-3);top:auto;bottom:var(--s-3);width:auto;transform:translate(0,8px);padding:var(--s-5);max-height:80vh;overflow:auto}
    .mega.is-open .mega__panel{transform:translate(0,0)}
    .mega__grid{grid-template-columns:1fr 1fr;gap:var(--s-5)}
    .mega__promo{grid-column:1 / -1}
}
/* === MOBILE-PATCH === */
@media (max-width:640px){
    .dd__menu{min-width:200px}
    .mega__panel{padding:var(--s-4)}
    .mega__grid{grid-template-columns:1fr;gap:var(--s-4)}
    .mega__promo{grid-column:auto}
    .mega__col-title{font-size:10px;padding-bottom:var(--s-2)}
    .mega__link{padding:6px 8px}
}

/* === 35-toast.css === */
/* Toast / Notifications */

.toast-stack{
    position:fixed;right:var(--s-5);bottom:var(--s-5);
    z-index:var(--z-toast);
    display:flex;flex-direction:column;gap:var(--s-3);
    max-width:400px;width:calc(100% - var(--s-8));
    pointer-events:none;
}
.toast-stack--top-right{top:var(--s-5);bottom:auto}
.toast-stack--top-left{top:var(--s-5);bottom:auto;left:var(--s-5);right:auto}
.toast-stack--bottom-left{bottom:var(--s-5);left:var(--s-5);right:auto}

.toast{
    pointer-events:auto;
    display:flex;gap:var(--s-3);
    padding:var(--s-4) var(--s-5);
    background:var(--color-surface);border:1px solid var(--color-border);
    border-left-width:4px;
    border-radius:var(--radius-md);
    box-shadow:var(--shadow-lg);
    color:var(--color-text);
    animation:toast-in .25s ease both;
    transition:transform var(--t-fast),opacity var(--t-fast);
}
.toast.is-hiding{opacity:0;transform:translateX(20px)}
@keyframes toast-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

.toast--info    {border-left-color:var(--color-info)}
.toast--success {border-left-color:var(--color-success)}
.toast--warning {border-left-color:var(--color-warning)}
.toast--danger  {border-left-color:var(--color-danger)}

.toast__icon{width:22px;height:22px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}
.toast__icon svg{width:22px;height:22px}
.toast--info .toast__icon{color:#60a5fa}
.toast--success .toast__icon{color:#4ade80}
.toast--warning .toast__icon{color:#fbbf24}
.toast--danger .toast__icon{color:#f87171}
[data-theme="light"] .toast--info .toast__icon{color:#2563eb}
[data-theme="light"] .toast--success .toast__icon{color:#16a34a}
[data-theme="light"] .toast--warning .toast__icon{color:#d97706}
[data-theme="light"] .toast--danger .toast__icon{color:#dc2626}

.toast__body{flex:1;min-width:0}
.toast__title{margin:0 0 2px;font-size:14px;font-weight:var(--fw-semibold)}
.toast__text{margin:0;font-size:13px;color:var(--color-muted);line-height:1.45}
.toast__actions{display:flex;gap:var(--s-2);margin-top:var(--s-3)}
.toast__action{
    padding:6px 10px;font-size:12px;font-weight:var(--fw-medium);
    border:1px solid var(--color-border);border-radius:var(--radius-xs);
    background:transparent;color:var(--color-text-soft);cursor:pointer;
    transition:border-color var(--t-fast),color var(--t-fast);
}
.toast__action:hover{border-color:var(--color-accent);color:var(--color-accent)}
.toast__close{
    width:26px;height:26px;flex-shrink:0;border-radius:var(--radius-xs);
    color:var(--color-muted);display:inline-flex;align-items:center;justify-content:center;
    cursor:pointer;background:transparent;border:0;
    transition:background var(--t-fast),color var(--t-fast);
}
.toast__close:hover{background:var(--color-surface-2);color:var(--color-text)}
.toast__close svg{width:14px;height:14px}

@media (max-width:480px){
    .toast-stack{left:var(--s-3);right:var(--s-3);bottom:var(--s-3);width:auto;max-width:none}
}

/* === 36-empty.css === */
/* Empty state — «здесь пока ничего нет» */

.empty{
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    text-align:center;
    padding:var(--s-10) var(--s-6);
    color:var(--color-text);
}
.empty__icon{
    width:72px;height:72px;margin-bottom:var(--s-5);
    display:inline-flex;align-items:center;justify-content:center;
    background:var(--color-surface-2);border-radius:50%;
    color:var(--color-muted);
}
.empty__icon svg{width:32px;height:32px}
.empty__icon--accent{background:var(--color-accent-soft);color:var(--color-accent-hover)}
.empty__icon--danger{background:var(--color-danger-soft);color:#f87171}
[data-theme="light"] .empty__icon--danger{color:#dc2626}

.empty__title{margin:0 0 var(--s-3);font-size:var(--fs-lg);font-weight:var(--fw-semibold)}
.empty__text{margin:0 0 var(--s-5);font-size:14px;color:var(--color-muted);max-width:420px;line-height:1.55}
.empty__actions{display:flex;gap:var(--s-3);flex-wrap:wrap;justify-content:center}
.empty__hint{margin:var(--s-5) 0 0;font-size:12px;color:var(--color-faint)}

/* Внутри рамки/карточки */
.empty--bordered{
    border:1px dashed var(--color-border);
    border-radius:var(--radius-md);
    background:var(--color-surface);
}
.empty--compact{padding:var(--s-7) var(--s-5)}
.empty--compact .empty__icon{width:52px;height:52px;margin-bottom:var(--s-4)}
.empty--compact .empty__icon svg{width:22px;height:22px}
.empty--compact .empty__title{font-size:var(--fs-md)}
/* === MOBILE-PATCH === */
@media (max-width:640px){
    .empty{padding:var(--s-8) var(--s-4)}
    .empty__icon{width:60px;height:60px;margin-bottom:var(--s-4)}
    .empty__icon svg{width:26px;height:26px}
    .empty__title{font-size:var(--fs-md)}
    .empty__text{font-size:13px}
    .empty__actions{width:100%}
    .empty__actions .btn{flex:1;min-width:0}
}

/* === 37-loader.css === */
/* Loader — индикаторы загрузки */

/* --- Спиннер --- */
.loader{display:inline-block;vertical-align:middle;color:var(--color-accent)}
.loader--sm{width:16px;height:16px}
.loader--md{width:24px;height:24px}
.loader--lg{width:40px;height:40px}
.loader--xl{width:64px;height:64px}
.loader--xs{width:12px;height:12px}

.loader--ring{
    border:2px solid currentColor;
    border-top-color:transparent;
    border-radius:50%;
    animation:ldr-spin .8s linear infinite;
}
.loader--sm.loader--ring,.loader--xs.loader--ring{border-width:2px}
.loader--lg.loader--ring,.loader--xl.loader--ring{border-width:3px}

/* --- Dots --- */
.loader-dots{display:inline-flex;gap:6px;align-items:center;color:var(--color-accent)}
.loader-dots span{
    display:block;width:8px;height:8px;border-radius:50%;
    background:currentColor;
    animation:ldr-dots 1.2s ease-in-out infinite both;
}
.loader-dots span:nth-child(1){animation-delay:0s}
.loader-dots span:nth-child(2){animation-delay:.15s}
.loader-dots span:nth-child(3){animation-delay:.3s}
.loader-dots--lg span{width:12px;height:12px;gap:8px}

/* --- Bars --- */
.loader-bars{display:inline-flex;gap:3px;align-items:flex-end;height:22px;color:var(--color-accent)}
.loader-bars span{
    width:3px;background:currentColor;border-radius:1px;
    animation:ldr-bars 1s ease-in-out infinite;
}
.loader-bars span:nth-child(1){animation-delay:0s;height:60%}
.loader-bars span:nth-child(2){animation-delay:.1s;height:100%}
.loader-bars span:nth-child(3){animation-delay:.2s;height:70%}
.loader-bars span:nth-child(4){animation-delay:.3s;height:90%}

/* --- Пульс-круг --- */
.loader-pulse{
    position:relative;width:44px;height:44px;
    display:inline-block;
}
.loader-pulse::before,
.loader-pulse::after{
    content:'';position:absolute;inset:0;border-radius:50%;
    background:var(--color-accent);opacity:.6;
    animation:ldr-pulse 1.6s ease-out infinite;
}
.loader-pulse::after{animation-delay:.8s}

/* --- Полоса прогресса (бесконечная) --- */
.loader-bar{height:4px;background:var(--color-surface-2);border-radius:999px;overflow:hidden;position:relative}
.loader-bar::after{
    content:'';position:absolute;left:-30%;top:0;bottom:0;width:30%;
    background:var(--color-accent);border-radius:999px;
    animation:ldr-bar 1.4s ease-in-out infinite;
}

/* --- Оверлей-загрузка для блока --- */
.is-loading{position:relative;pointer-events:none;opacity:.6}
.is-loading::after{
    content:'';position:absolute;top:50%;left:50%;
    width:24px;height:24px;margin:-12px 0 0 -12px;
    border:2px solid var(--color-accent);
    border-top-color:transparent;
    border-radius:50%;
    animation:ldr-spin .8s linear infinite;
    z-index:2;
}

/* Анимации */
@keyframes ldr-spin{to{transform:rotate(360deg)}}
@keyframes ldr-dots{
    0%,80%,100%{transform:scale(.6);opacity:.4}
    40%{transform:scale(1);opacity:1}
}
@keyframes ldr-bars{
    0%,100%{transform:scaleY(.5)}
    50%{transform:scaleY(1)}
}
@keyframes ldr-pulse{
    0%{transform:scale(.4);opacity:.7}
    100%{transform:scale(1.4);opacity:0}
}
@keyframes ldr-bar{
    0%{left:-30%}
    100%{left:100%}
}

@media (prefers-reduced-motion: reduce){
    .loader--ring,.loader-dots span,.loader-bars span,
    .loader-pulse::before,.loader-pulse::after,.loader-bar::after,
    .is-loading::after{animation-duration:2.5s}
}

/* === 38-steps.css === */
/* Steps / Stepper — пошаговый индикатор (горизонтальный) */

.steps{
    display:flex;align-items:flex-start;gap:0;
    list-style:none;padding:0;margin:0;
    counter-reset:step;
}
.steps__item{
    flex:1;display:flex;flex-direction:column;align-items:center;
    position:relative;text-align:center;
    counter-increment:step;
}
/* Линия между шагами */
.steps__item:not(:last-child)::after{
    content:'';position:absolute;top:18px;left:50%;right:-50%;
    height:2px;background:var(--color-border);
    z-index:0;
}
.steps__item.is-done:not(:last-child)::after{background:var(--color-accent)}

.steps__dot{
    position:relative;z-index:1;
    width:36px;height:36px;border-radius:50%;
    display:inline-flex;align-items:center;justify-content:center;
    background:var(--color-surface);border:2px solid var(--color-border);
    color:var(--color-muted);
    font-size:14px;font-weight:var(--fw-semibold);
    font-family:var(--font-mono);
}
.steps__item.is-current .steps__dot{
    background:var(--color-accent);border-color:var(--color-accent);color:#fff;
    box-shadow:0 0 0 4px var(--color-accent-soft);
}
.steps__item.is-done .steps__dot{
    background:var(--color-accent);border-color:var(--color-accent);color:#fff;
}
.steps__item.is-done .steps__dot::before{
    content:'';width:10px;height:6px;border-left:2px solid currentColor;border-bottom:2px solid currentColor;
    transform:rotate(-45deg) translate(1px,-1px);
}
.steps__item.is-done .steps__dot{font-size:0}

.steps__label{
    margin-top:var(--s-3);
    font-size:13px;font-weight:var(--fw-medium);
    color:var(--color-muted);
}
.steps__item.is-current .steps__label,
.steps__item.is-done .steps__label{color:var(--color-text)}
.steps__desc{
    margin-top:2px;
    font-size:12px;color:var(--color-faint);
    line-height:1.35;max-width:180px;
}

/* Компактный вариант */
.steps--compact .steps__dot{width:28px;height:28px;font-size:12px}
.steps--compact .steps__item:not(:last-child)::after{top:14px}
.steps--compact .steps__label{font-size:12px;margin-top:var(--s-2)}

/* Вертикальный вариант */
.steps--vertical{flex-direction:column;align-items:stretch;gap:var(--s-5)}
.steps--vertical .steps__item{
    flex-direction:row;align-items:flex-start;text-align:left;gap:var(--s-4);
}
.steps--vertical .steps__item:not(:last-child)::after{
    top:36px;left:18px;right:auto;bottom:-20px;
    width:2px;height:auto;
}
.steps--vertical .steps__dot{flex-shrink:0}
.steps--vertical .steps__label{margin-top:6px}
.steps--vertical .steps__desc{max-width:none}

/* На мобильных — компакт */
@media (max-width:640px){
    .steps__desc{display:none}
    .steps__label{font-size:11px}
    .steps__dot{width:30px;height:30px;font-size:12px}
    .steps__item:not(:last-child)::after{top:15px}
}

/* === 39-pricing.css === */
/* Pricing — карточки тарифов */

.pricing{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
    gap:var(--s-5);
    align-items:stretch;
}

.pricing__card{
    position:relative;
    display:flex;flex-direction:column;
    padding:var(--s-7) var(--s-6);
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:var(--radius-lg);
    transition:border-color var(--t-fast),transform var(--t-fast),box-shadow var(--t-fast);
}
.pricing__card:hover{border-color:var(--color-border-strong);transform:translateY(-2px)}

/* Популярный тариф */
.pricing__card--featured{
    border-color:var(--color-accent);
    box-shadow:0 0 0 3px var(--color-accent-soft), var(--shadow-lg);
}
.pricing__card--featured::before{
    content:attr(data-badge);
    position:absolute;top:-13px;left:50%;transform:translateX(-50%);
    padding:5px 14px;
    background:var(--color-accent);color:#fff;
    font-size:11px;font-weight:var(--fw-semibold);letter-spacing:.05em;text-transform:uppercase;
    border-radius:var(--radius-pill);
    white-space:nowrap;
}

.pricing__name{
    margin:0 0 var(--s-2);
    font-size:var(--fs-md);font-weight:var(--fw-semibold);
    color:var(--color-text);
}
.pricing__desc{
    margin:0 0 var(--s-5);
    font-size:13px;color:var(--color-muted);
    line-height:1.5;
    min-height:36px;
}
.pricing__price{
    display:flex;align-items:baseline;gap:6px;
    margin-bottom:var(--s-2);
}
.pricing__amount{
    font-size:clamp(1.8rem,3vw,2.4rem);
    font-weight:var(--fw-bold);
    letter-spacing:-.02em;
    line-height:1;
    color:var(--color-text);
}
.pricing__currency{font-size:1rem;font-weight:var(--fw-medium);color:var(--color-muted)}
.pricing__period{font-size:13px;color:var(--color-muted);margin-left:4px}
.pricing__note{font-size:12px;color:var(--color-faint);margin:0 0 var(--s-5)}

.pricing__cta{
    display:flex;width:100%;justify-content:center;
    margin-bottom:var(--s-5);
}

.pricing__features{
    list-style:none;padding:0;margin:0;
    display:flex;flex-direction:column;gap:var(--s-3);
    border-top:1px solid var(--color-border);padding-top:var(--s-5);
}
.pricing__feature{
    display:flex;align-items:flex-start;gap:10px;
    font-size:14px;color:var(--color-text-soft);
    line-height:1.4;
}
.pricing__feature svg{width:18px;height:18px;flex-shrink:0;color:var(--color-accent);margin-top:1px}
.pricing__feature.is-off{color:var(--color-faint);text-decoration:line-through}
.pricing__feature.is-off svg{color:var(--color-faint)}

/* Сравнительная полоса */
.pricing__divider{height:1px;background:var(--color-border);margin:var(--s-5) 0}

@media (max-width:640px){
    .pricing__card{padding:var(--s-6) var(--s-5)}
}
/* === MOBILE-PATCH === */
@media (max-width:640px){
    .pricing{grid-template-columns:1fr;gap:var(--s-4)}
    .pricing__card{padding:var(--s-6) var(--s-5)}
    .pricing__card--featured::before{font-size:10px;padding:4px 10px}
    .pricing__amount{font-size:2rem}
    .pricing__desc{min-height:0}
    .pricing__feature{font-size:13px;gap:8px}
}

/* === 40-stats.css === */
/* Stats — блок цифр и счётчиков */

.stats{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
    gap:var(--s-5);
}
.stats--bordered{
    border:1px solid var(--color-border);
    border-radius:var(--radius-lg);
    padding:var(--s-7) var(--s-6);
    background:var(--color-surface);
}
.stats--striped .stats__item{
    border-right:1px solid var(--color-border);
}
.stats--striped .stats__item:last-child{border-right:0}
@media (max-width:640px){
    .stats--striped .stats__item{border-right:0;border-bottom:1px solid var(--color-border);padding-bottom:var(--s-5)}
    .stats--striped .stats__item:last-child{border-bottom:0;padding-bottom:0}
}

.stats__item{
    display:flex;flex-direction:column;gap:var(--s-2);
    text-align:center;
}
.stats__value{
    font-size:clamp(1.9rem,4vw,2.8rem);
    font-weight:var(--fw-bold);
    letter-spacing:-.02em;
    line-height:1;
    color:var(--color-text);
    font-variant-numeric:tabular-nums;
}
.stats__value .stats__suffix{color:var(--color-accent);font-size:.6em;margin-left:2px}
.stats__label{
    font-size:13px;color:var(--color-muted);
    line-height:1.4;
}
.stats__hint{font-size:12px;color:var(--color-faint)}

/* Компактный */
.stats--compact .stats__value{font-size:var(--fs-2xl)}
.stats--compact .stats__label{font-size:12px}

/* Большой акцентный */
.stats--accent .stats__value{color:var(--color-accent)}
/* === MOBILE-PATCH === */
@media (max-width:640px){
    .stats{grid-template-columns:repeat(2,1fr);gap:var(--s-4)}
    .stats__value{font-size:1.7rem}
    .stats__label{font-size:12px}
    .stats--bordered{padding:var(--s-5) var(--s-4)}
}
@media (max-width:400px){
    .stats{grid-template-columns:1fr}
}

/* === 41-bento.css === */
/* Bento grid — современная раскладка с плитками разных размеров */

.bento{
    display:grid;
    grid-template-columns:repeat(6,1fr);
    gap:var(--s-4);
    grid-auto-rows:minmax(180px,auto);
}

.bento__card{
    position:relative;
    overflow:hidden;
    display:flex;flex-direction:column;justify-content:space-between;
    padding:var(--s-6);
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:var(--radius-lg);
    color:var(--color-text);
    transition:border-color var(--t-fast),transform var(--t-fast);
}
.bento__card:hover{border-color:var(--color-border-strong);transform:translateY(-2px)}

.bento__title{
    margin:0 0 var(--s-2);
    font-size:var(--fs-md);
    font-weight:var(--fw-semibold);
    line-height:1.25;
}
.bento__text{
    margin:0;
    font-size:14px;
    color:var(--color-muted);
    line-height:1.5;
}
.bento__icon{
    width:40px;height:40px;
    display:inline-flex;align-items:center;justify-content:center;
    border-radius:var(--radius-md);
    background:var(--color-accent-soft);color:var(--color-accent-hover);
    margin-bottom:var(--s-4);
}
.bento__icon svg{width:20px;height:20px}

/* Размеры плиток */
.bento__card--hero   {grid-column:span 3;grid-row:span 2;padding:var(--s-9)}
.bento__card--wide   {grid-column:span 3}
.bento__card--tall   {grid-row:span 2}
.bento__card--std    {grid-column:span 2}
.bento__card--half   {grid-column:span 3}
.bento__card--third  {grid-column:span 2}

/* Варианты оформления */
.bento__card--accent{
    background:linear-gradient(160deg,var(--color-accent) 0%,var(--color-accent-hover) 100%);
    color:#fff;border-color:transparent;
}
.bento__card--accent .bento__text{color:rgba(255,255,255,.85)}
.bento__card--accent .bento__icon{background:rgba(255,255,255,.16);color:#fff}

.bento__card--mesh{
    background:
        radial-gradient(circle at 20% 30%, rgba(255,91,46,.55) 0%, transparent 45%),
        radial-gradient(circle at 80% 70%, rgba(59,130,246,.55) 0%, transparent 45%),
        var(--color-surface);
    color:#fff;
    border-color:transparent;
}
.bento__card--mesh .bento__text{color:rgba(255,255,255,.8)}

.bento__card--image{
    padding:0;
    background:#141418;
    color:#fff;
}
.bento__card--image img{
    position:absolute;inset:0;
    width:100%;height:100%;object-fit:cover;z-index:0;
    transition:transform var(--t-base);
}
.bento__card--image:hover img{transform:scale(1.04)}
.bento__card--image::after{
    content:'';position:absolute;inset:0;z-index:1;
    background:linear-gradient(180deg,rgba(11,11,13,.05) 0%,rgba(11,11,13,.7) 100%);
}
.bento__card--image > *{position:relative;z-index:2}
.bento__card--image .bento__title,
.bento__card--image .bento__text{padding:0 var(--s-6) var(--s-6)}
.bento__card--image .bento__title{padding-top:var(--s-6)}

/* Мобильные */
@media (max-width:900px){
    .bento{grid-template-columns:repeat(4,1fr)}
    .bento__card--hero{grid-column:span 4;grid-row:span 1;padding:var(--s-7)}
    .bento__card--wide,
    .bento__card--half{grid-column:span 4}
    .bento__card--std,
    .bento__card--third{grid-column:span 2}
    .bento__card--tall{grid-row:span 1}
}
@media (max-width:600px){
    .bento{grid-template-columns:1fr}
    .bento__card,
    .bento__card--hero,
    .bento__card--wide,
    .bento__card--std,
    .bento__card--half,
    .bento__card--third{grid-column:span 1;grid-row:auto}
}
/* Light theme: mesh-плитка — светлее градиенты, тёмный текст */
[data-theme="light"] .bento__card--mesh{
    background:
        radial-gradient(circle at 20% 30%, rgba(255,140,80,.45) 0%, transparent 45%),
        radial-gradient(circle at 80% 70%, rgba(120,160,255,.45) 0%, transparent 45%),
        #f4f6fa;
    color:#1a1c20;
    border-color:transparent;
}
[data-theme="light"] .bento__card--mesh .bento__text{color:#5a6169}
[data-theme="light"] .bento__card--mesh .bento__icon{background:rgba(20,22,26,.06);color:var(--color-accent-hover)}

/* Light theme: плитка-картинка — светлая подложка вместо #141418 */
[data-theme="light"] .bento__card--image{
    background:#eef0f4;
    color:#1a1c20;
}
[data-theme="light"] .bento__card--image::after{
    background:linear-gradient(180deg,rgba(255,255,255,.05) 0%,rgba(20,22,26,.55) 100%);
}
/* Текст поверх изображения всё равно должен быть белым (тёмная подложка от ::after) */
[data-theme="light"] .bento__card--image .bento__title,
[data-theme="light"] .bento__card--image .bento__text{color:#fff}
/* === MOBILE-PATCH === */
@media (max-width:900px){
    .bento{grid-auto-rows:minmax(160px,auto)}
    .bento__card{padding:var(--s-5)}
    .bento__card--hero{padding:var(--s-7)}
}
@media (max-width:640px){
    .bento{grid-auto-rows:minmax(140px,auto);gap:var(--s-3)}
    .bento__card{padding:var(--s-4);border-radius:var(--radius-md)}
    .bento__card--hero{padding:var(--s-6)}
    .bento__title{font-size:var(--fs-base)}
    .bento__text{font-size:13px}
    .bento__icon{width:36px;height:36px;margin-bottom:var(--s-3)}
    .bento__card--image .bento__title{padding:var(--s-4)}
    .bento__card--image .bento__title,
    .bento__card--image .bento__text{padding-left:var(--s-4);padding-right:var(--s-4)}
}

/* === 42-advanced-table.css === */
/* Advanced table — сортировка, чекбоксы, sticky header, состояния строк */

.atable-wrap{
    border:1px solid var(--color-border);
    border-radius:var(--radius-md);
    background:var(--color-surface);
    overflow:hidden;
}
.atable-scroll{overflow-x:auto}

.atable{
    width:100%;
    border-collapse:separate;
    border-spacing:0;
    font-size:14px;
    color:var(--color-text);
    min-width:640px;
}

.atable thead th{
    position:sticky;top:0;z-index:1;
    background:var(--color-surface-2);
    text-align:left;font-weight:var(--fw-semibold);
    font-size:12px;text-transform:uppercase;letter-spacing:.06em;
    color:var(--color-muted);
    padding:12px 16px;
    border-bottom:1px solid var(--color-border);
    white-space:nowrap;
}

/* Кнопка сортировки в шапке */
.atable__sort{
    display:inline-flex;align-items:center;gap:6px;
    background:transparent;border:0;padding:0;cursor:pointer;
    color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;
    transition:color var(--t-fast);
}
.atable__sort:hover{color:var(--color-text)}
.atable__sort-icon{
    width:12px;height:12px;flex-shrink:0;
    display:inline-flex;flex-direction:column;gap:1px;color:var(--color-faint);
}
.atable__sort-icon i{display:block;width:0;height:0;
    border-left:4px solid transparent;border-right:4px solid transparent;
}
.atable__sort-icon i:first-child{border-bottom:4px solid currentColor}
.atable__sort-icon i:last-child{border-top:4px solid currentColor}
.atable__sort[aria-sort="ascending"] .atable__sort-icon i:first-child{color:var(--color-accent)}
.atable__sort[aria-sort="ascending"] .atable__sort-icon i:last-child{color:var(--color-faint)}
.atable__sort[aria-sort="descending"] .atable__sort-icon i:first-child{color:var(--color-faint)}
.atable__sort[aria-sort="descending"] .atable__sort-icon i:last-child{color:var(--color-accent)}

/* Ячейки */
.atable td{
    padding:12px 16px;
    border-bottom:1px solid var(--color-border);
    vertical-align:middle;
}
.atable tbody tr:last-child td{border-bottom:0}
.atable tbody tr:hover{background:var(--color-surface-2)}
.atable tbody tr.is-selected{background:var(--color-accent-soft)}
.atable tbody tr.is-selected:hover{background:var(--color-accent-soft)}

/* Чекбокс-колонка */
.atable__check-col{width:36px}
.atable__check{
    width:18px;height:18px;
    accent-color:var(--color-accent);
    cursor:pointer;
}

/* Числовая колонка */
.atable .num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}

/* Статусы (маленькие бейджи) */
.atable .status{
    display:inline-flex;align-items:center;gap:6px;
    padding:3px 10px;border-radius:var(--radius-pill);
    font-size:11px;font-weight:var(--fw-semibold);
    letter-spacing:.04em;text-transform:uppercase;
}
.atable .status::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.atable .status--success{background:var(--color-success-soft);color:#4ade80}
.atable .status--warning{background:var(--color-warning-soft);color:#fbbf24}
.atable .status--danger {background:var(--color-danger-soft); color:#f87171}
.atable .status--muted  {background:var(--color-surface-2); color:var(--color-muted)}
[data-theme="light"] .atable .status--success{color:#15803d}
[data-theme="light"] .atable .status--warning{color:#a16207}
[data-theme="light"] .atable .status--danger {color:#b91c1c}

/* Действия */
.atable .row-actions{display:inline-flex;gap:6px}
.atable .row-actions button{
    width:30px;height:30px;border-radius:var(--radius-xs);
    display:inline-flex;align-items:center;justify-content:center;
    background:transparent;border:1px solid transparent;color:var(--color-muted);
    cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast);
}
.atable .row-actions button:hover{background:var(--color-surface-2);color:var(--color-text);border-color:var(--color-border)}
.atable .row-actions button svg{width:16px;height:16px}

/* Тулбар над таблицей */
.atable-toolbar{
    display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap;
    padding:var(--s-4) var(--s-5);
    background:var(--color-surface);
    border-bottom:1px solid var(--color-border);
}
.atable-toolbar__title{font-weight:var(--fw-semibold);margin-right:auto}
.atable-toolbar__count{color:var(--color-muted);font-size:13px}
.atable-toolbar__bulk{display:none;gap:var(--s-2)}
.atable-toolbar.has-selection .atable-toolbar__bulk{display:inline-flex}

/* Пагинация под таблицей */
.atable-footer{
    display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);
    padding:var(--s-4) var(--s-5);
    border-top:1px solid var(--color-border);
    color:var(--color-muted);font-size:13px;
    flex-wrap:wrap;
}
/* Панель фильтров над таблицей */
.atable-filters{
    display:flex;flex-wrap:wrap;gap:var(--s-3);align-items:center;
    padding:var(--s-4) var(--s-5);
    background:var(--color-surface);
    border-bottom:1px solid var(--color-border);
}
.atable-filters__search{
    flex:1;min-width:220px;position:relative;
}
.atable-filters__search .input{padding-left:36px}
.atable-filters__search-icon{
    position:absolute;left:12px;top:50%;transform:translateY(-50%);
    width:16px;height:16px;color:var(--color-muted);pointer-events:none;
}
.atable-filters__select{
    min-width:150px;
}
.atable-filters__reset{
    padding:9px 14px;border-radius:var(--radius-sm);
    color:var(--color-muted);background:transparent;border:1px solid var(--color-border);
    font-size:14px;font-weight:var(--fw-medium);cursor:pointer;
    transition:color var(--t-fast),border-color var(--t-fast);
}
.atable-filters__reset:hover{color:var(--color-accent);border-color:var(--color-accent)}
.atable-filters__reset[disabled]{opacity:.4;pointer-events:none}
.atable-filters__meta{
    margin-left:auto;color:var(--color-faint);font-size:12px;font-family:var(--font-mono);
}
.atable__empty{
    padding:var(--s-9) var(--s-6);
    text-align:center;color:var(--color-muted);font-size:14px;
    display:none;
}
.atable__empty.is-visible{display:block}
.atable__empty-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text);margin:0 0 var(--s-2)}
.atable__empty-text{margin:0}
/* === MOBILE-PATCH === */
@media (max-width:900px){
    .atable{min-width:560px;font-size:13px}
    .atable thead th,.atable td{padding:10px 12px}
    .atable-toolbar{padding:var(--s-3) var(--s-4);flex-wrap:wrap}
    .atable-toolbar__title{width:100%}
    .atable-filters{padding:var(--s-3) var(--s-4);gap:var(--s-2)}
    .atable-filters__search{flex-basis:100%;min-width:0}
    .atable-filters__select{flex:1;min-width:130px}
    .atable-filters__reset{flex-basis:100%}
    .atable-filters__meta{display:none}
    .atable-footer{padding:var(--s-3) var(--s-4);gap:var(--s-2)}
}
@media (max-width:640px){
    .atable{min-width:520px;font-size:12px}
    .atable thead th,.atable td{padding:8px 10px}
    .atable__check-col{width:32px}
    .atable .row-actions button{width:26px;height:26px}
    .atable .row-actions button svg{width:14px;height:14px}
    .atable__empty{padding:var(--s-7) var(--s-4)}
}

/* === 43-charts.css === */
/* Charts — SVG-графики без внешних библиотек */

.chart{
    position:relative;
    padding:var(--s-5);
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:var(--radius-md);
}
.chart__head{
    display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);
    margin-bottom:var(--s-5);
    flex-wrap:wrap;
}
.chart__title{margin:0;font-size:var(--fs-md);font-weight:var(--fw-semibold)}
.chart__subtitle{margin:2px 0 0;font-size:13px;color:var(--color-muted)}
.chart__legend{display:flex;gap:var(--s-4);flex-wrap:wrap;font-size:12px;color:var(--color-muted)}
.chart__legend span{display:inline-flex;align-items:center;gap:6px}
.chart__legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.chart__body{position:relative;width:100%}
.chart__body svg{display:block;width:100%;height:auto;overflow:visible}

/* ===== Line / Area ===== */
.chart-line__path{
    fill:none;
    stroke:var(--color-accent);
    stroke-width:2.5;
    stroke-linecap:round;stroke-linejoin:round;
}
.chart-line__area{fill:url(#chartLineGradient)}
.chart-line__grid line{stroke:var(--color-border);stroke-width:1;stroke-dasharray:2 4}
.chart-line__axis text{fill:var(--color-muted);font-size:11px;font-family:var(--font-mono)}
.chart-line__dot{fill:var(--color-accent);stroke:var(--color-surface);stroke-width:2}

/* ===== Bars ===== */
.chart-bars__bar{fill:var(--color-accent);transition:opacity var(--t-fast)}
.chart-bars__bar:hover{opacity:.8}
.chart-bars__bar--muted{fill:var(--color-border-strong)}
.chart-bars__axis line{stroke:var(--color-border);stroke-width:1}
.chart-bars__axis text{fill:var(--color-muted);font-size:11px;font-family:var(--font-mono)}
.chart-bars__label{fill:var(--color-muted);font-size:11px;text-anchor:middle}

/* ===== Donut ===== */
.chart-donut{display:flex;align-items:center;gap:var(--s-6);flex-wrap:wrap}
.chart-donut__svg{width:180px;height:180px;flex-shrink:0}
.chart-donut__seg{
    fill:none;
    stroke-width:20;
    transition:opacity var(--t-fast);
    transform-origin:center;
}
.chart-donut__seg:hover{opacity:.8}
.chart-donut__center-value{
    text-anchor:middle;
    fill:var(--color-text);
    font-size:22px;font-weight:var(--fw-bold);
    font-family:var(--font-base);
}
.chart-donut__center-label{
    text-anchor:middle;
    fill:var(--color-muted);
    font-size:11px;
    text-transform:uppercase;letter-spacing:.06em;
    font-family:var(--font-mono);
}
.chart-donut__legend{display:flex;flex-direction:column;gap:var(--s-3);flex:1;min-width:180px}
.chart-donut__row{display:flex;align-items:center;gap:10px;font-size:13px}
.chart-donut__row i{width:10px;height:10px;border-radius:3px;display:inline-block;flex-shrink:0}
.chart-donut__row .value{margin-left:auto;font-family:var(--font-mono);font-size:12px;color:var(--color-muted)}

/* ===== Sparkline ===== */
.chart-spark{display:inline-flex;align-items:center;gap:8px}
.chart-spark svg{width:80px;height:24px;overflow:visible}
.chart-spark__line{fill:none;stroke:var(--color-accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.chart-spark__line--down{stroke:var(--color-danger)}
.chart-spark__line--up{stroke:var(--color-success)}

/* ===== Progress bars stack ===== */
.chart-stack{display:flex;flex-direction:column;gap:var(--s-4)}
.chart-stack__row{display:grid;grid-template-columns:140px 1fr auto;gap:var(--s-3);align-items:center;font-size:13px}
.chart-stack__label{color:var(--color-text-soft)}
.chart-stack__bar{height:10px;background:var(--color-surface-2);border-radius:var(--radius-pill);overflow:hidden}
.chart-stack__fill{height:100%;background:var(--color-accent);border-radius:inherit;transition:width .3s ease}
.chart-stack__value{font-family:var(--font-mono);font-size:12px;color:var(--color-muted);min-width:48px;text-align:right}

/* Модификаторы цвета */
.chart--accent .chart-bars__bar{fill:var(--color-accent)}
.chart--info   .chart-bars__bar{fill:var(--color-info)}
.chart--success .chart-bars__bar{fill:var(--color-success)}
.chart--warning .chart-bars__bar{fill:var(--color-warning)}

[data-theme="light"] .chart-line__dot{stroke:#fff}
/* === MOBILE-PATCH === */
@media (max-width:900px){
    .chart{padding:var(--s-4)}
    .chart__head{margin-bottom:var(--s-4)}
    .chart-donut{gap:var(--s-5)}
    .chart-donut__svg{width:150px;height:150px}
    .chart-stack__row{grid-template-columns:110px 1fr auto;gap:var(--s-2)}
}
@media (max-width:640px){
    .chart{padding:var(--s-3);border-radius:var(--radius-sm)}
    .chart__title{font-size:var(--fs-base)}
    .chart__subtitle{font-size:12px}
    .chart__legend{font-size:11px;gap:var(--s-3)}
    .chart-donut{flex-direction:column;gap:var(--s-4);align-items:center}
    .chart-donut__svg{width:140px;height:140px}
    .chart-donut__legend{width:100%;min-width:0}
    .chart-donut__center-value{font-size:18px}
    .chart-stack__row{grid-template-columns:1fr auto;gap:6px}
    .chart-stack__label{grid-column:1 / -1}
    .chart-stack__value{grid-column:2;grid-row:2}
    .chart-line__axis text,.chart-bars__axis text{font-size:9px}
}
@media (max-width:400px){
    .chart-donut__svg{width:120px;height:120px}
}

/* === 44-cookie.css === */
/* Cookie consent — липкий баннер снизу страницы */

.cookie{
    position:fixed;
    left:0;right:0;bottom:0;
    z-index:calc(var(--z-toast) + 10);
    background:var(--color-surface);
    border-top:1px solid var(--color-border);
    box-shadow:0 -8px 32px rgba(0,0,0,.28);
    padding:var(--s-5) 0;
    transform:translateY(100%);
    transition:transform .3s ease;
    will-change:transform;
}
[data-theme="light"] .cookie{
    background:#ffffff;
    box-shadow:0 -8px 32px rgba(20,22,26,.12);
}
.cookie.is-visible{transform:translateY(0)}

.cookie__inner{
    display:flex;gap:var(--s-5);align-items:center;
    flex-wrap:wrap;
}
.cookie__icon{
    width:40px;height:40px;flex-shrink:0;
    display:inline-flex;align-items:center;justify-content:center;
    background:var(--color-accent-soft);color:var(--color-accent-hover);
    border-radius:var(--radius-md);
}
.cookie__icon svg{width:22px;height:22px}

.cookie__body{flex:1;min-width:240px}
.cookie__title{margin:0 0 4px;font-size:var(--fs-base);font-weight:var(--fw-semibold)}
.cookie__text{margin:0;font-size:13px;color:var(--color-muted);line-height:1.5}
.cookie__text a{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}
.cookie__text a:hover{color:var(--color-accent-hover)}

.cookie__actions{display:flex;gap:var(--s-3);flex-wrap:wrap;align-items:center}
.cookie__actions .btn{white-space:nowrap}

@media (max-width:640px){
    .cookie{padding:var(--s-4) 0}
    .cookie__inner{gap:var(--s-4)}
    .cookie__icon{width:36px;height:36px}
    .cookie__icon svg{width:20px;height:20px}
    .cookie__actions{width:100%}
    .cookie__actions .btn{flex:1;justify-content:center}
}

/* === 45-header-footer-extended.css === */
/* 45-header-footer-extended.css
 * Расширения шапки и подвала: dropdown-меню, телефон, поиск, соцсети, юр.инфо.
 */

/* ===== Шапка: раскладка ===== */
.header__inner {
    display: flex;
    align-items: center;
    gap: var(--s-5);
    height: var(--header-h);
}
.header__logo { flex-shrink: 0; }
.nav { flex: 1; display: flex; align-items: center; gap: var(--s-5); }
.header__actions {
    display: flex;
    align-items: center;
    gap: var(--s-3);
    flex-shrink: 0;
}

/* ===== Телефон в шапке ===== */
.header__phone {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    border-radius: var(--radius-sm);
    color: var(--color-text);
    font-weight: var(--fw-medium);
    font-size: 14px;
    text-decoration: none;
    transition: color var(--t-fast), background var(--t-fast);
}
.header__phone:hover { color: var(--color-accent); background: var(--color-surface-2); }
.header__phone svg { color: var(--color-accent); flex-shrink: 0; }

/* ===== Кнопка поиска ===== */
.header__search-btn {
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    color: var(--color-muted);
    background: transparent;
    border: 0;
    cursor: pointer;
    transition: color var(--t-fast), background var(--t-fast);
}
.header__search-btn:hover { color: var(--color-text); background: var(--color-surface-2); }

/* ===== Dropdown-меню в шапке ===== */
.nav__dropdown { position: relative; }

.nav__link--dropdown {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: transparent;
    border: 0;
    padding: 6px 0;
    font: inherit;
    color: var(--color-muted);
    cursor: pointer;
    position: relative;
    transition: color var(--t-fast);
}
.nav__link--dropdown:hover,
.nav__link--dropdown.is-active { color: var(--color-text); }
.nav__link--dropdown svg { width: 12px; height: 12px; transition: transform var(--t-fast); }
.nav__dropdown.is-open .nav__link--dropdown svg { transform: rotate(180deg); }

.nav__dropdown-menu {
    position: absolute;
    top: calc(100% + 10px);
    left: -12px;
    min-width: 300px;
    padding: var(--s-2);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);
    z-index: var(--z-modal);
    opacity: 0;
    transform: translateY(-6px);
    pointer-events: none;
    transition: opacity var(--t-fast), transform var(--t-fast);
}
.nav__dropdown.is-open .nav__dropdown-menu {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.nav__dropdown-link {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 9px 12px;
    border-radius: var(--radius-sm);
    text-decoration: none;
    color: var(--color-text);
    transition: background var(--t-fast);
}
.nav__dropdown-link:hover { background: var(--color-surface-2); }
.nav__dropdown-title { font-size: 14px; font-weight: var(--fw-medium); }
.nav__dropdown-desc { font-size: 12px; color: var(--color-muted); line-height: 1.35; }

/* ===== Мобильные ===== */
@media (max-width: 900px) {
    .header__actions { margin-left: auto; }
    .header__phone-num { display: none; }
    .header__callback { display: none; }

    .nav {
        display: none;
        position: absolute;
        top: var(--header-h);
        left: 0;
        right: 0;
        flex-direction: column;
        align-items: stretch;
        padding: var(--s-5) var(--s-6);
        background: var(--color-surface);
        border-bottom: 1px solid var(--color-border);
        box-shadow: var(--shadow-md);
        gap: var(--s-3);
        z-index: var(--z-header);
    }
    .nav.is-open { display: flex; }

    .nav__dropdown-menu {
        position: static;
        transform: none;
        opacity: 1;
        pointer-events: auto;
        box-shadow: none;
        border: 0;
        padding-left: var(--s-4);
        min-width: 0;
        display: none;
    }
    .nav__dropdown.is-open .nav__dropdown-menu { display: block; }
}

/* ===== Подвал: расширенная структура ===== */
.footer__col--brand { max-width: 320px; }
.footer__tagline {
    color: var(--color-muted);
    font-size: 14px;
    margin: var(--s-2) 0 var(--s-4);
    line-height: 1.55;
}
.footer__hours { color: var(--color-faint); font-size: 13px; }

/* Соцсети */
.footer__socials { display: flex; gap: var(--s-3); flex-wrap: wrap; }
.footer__social {
    width: 38px;
    height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    background: var(--color-surface-2);
    color: var(--color-muted);
    text-decoration: none;
    transition: background var(--t-fast), color var(--t-fast);
}
.footer__social:hover { background: var(--color-accent-soft); color: var(--color-accent-hover); }

/* Юридическая информация */
.footer__legal-info {
    margin-top: var(--s-4);
    font-size: 12px;
    color: var(--color-faint);
    line-height: 1.6;
}

/* Ссылка «Наверх» */
.footer__up {
    font-size: 13px;
    color: var(--color-muted);
    text-decoration: none;
    transition: color var(--t-fast);
}
.footer__up:hover { color: var(--color-accent); }

/* Сетка подвала 4 колонки на десктопе */
@media (min-width: 901px) {
    .footer__grid { grid-template-columns: 1.6fr 1fr 1fr 1fr; }
}
/* === MOBILE-HEADER-FIX === */
/* Адаптация шапки для узких экранов 320–640px */

/* Защита от вылета контента за границы на всех размерах */
.header__inner { min-width: 0; }
.header__logo  { min-width: 0; max-width: 100%; }
.header__logo span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

@media (max-width: 900px) {
    .header__inner { gap: var(--s-3); }
    .header__actions { gap: var(--s-2); }
}

@media (max-width: 640px) {
    /* Контейнер уже, чем на десктопе — экономит 8px с каждой стороны */
    .header .container { padding-left: var(--s-3); padding-right: var(--s-3); }

    /* Шапка: узкие промежутки */
    .header__inner { gap: var(--s-2); }

    /* Лого: уменьшить иконку */
    .header__logo { gap: var(--s-2); }
    .header__logo img { height: 30px; width: auto; }

    /* Действия: компактные кнопки */
    .header__actions { gap: 2px; }

    .header__search-btn,
    .header__phone {
        width: 36px;
        height: 36px;
        padding: 0;
        justify-content: center;
    }

    .header-cart-link {
        width: 36px;
        height: 36px;
    }

    .header-cart-link svg { width: 18px; height: 18px; }
    .header-cart-link .cart-badge { top: 1px; right: 1px; }

    .nav__toggle { padding: 6px; }

    /* Тема-переключатель (только на /styleguide) */
    .nav__theme-toggle { width: 36px; height: 36px; padding: 0; }
}

@media (max-width: 480px) {
    /* На самых узких — прячем название бренда, оставляем только иконку лого */
    .header__logo span { display: none; }
    .header__logo img { height: 32px; }

    /* Ещё компактнее */
    .header__inner { gap: var(--s-2); }
    .header__actions { gap: 0; }

    .header__search-btn,
    .header__phone,
    .header-cart-link,
    .nav__theme-toggle { width: 34px; height: 34px; }

    .header-cart-link svg { width: 17px; height: 17px; }
    .header-cart-link .cart-badge { font-size: 10px; min-width: 16px; height: 16px; padding: 0 4px; }
}

@media (max-width: 375px) {
    /* Экстремально узкие: ещё сжимаем */
    .header .container { padding-left: var(--s-2); padding-right: var(--s-2); }
    .header__inner { gap: 4px; }
    .header__logo img { height: 28px; }
    .header__search-btn,
    .header__phone,
    .header-cart-link,
    .nav__theme-toggle { width: 32px; height: 32px; }
    .nav__toggle { padding: 4px; }
    .nav__toggle svg { width: 20px; height: 20px; }
}

/* На всякий случай — sticky-шапка не должна создавать горизонтальный скролл */
.header { overflow-x: clip; }

/* === 46-cart.css === */
/* 46-cart.css — Корзина, избранное, сравнение, карточки товаров */

/* ===== Сетка каталога ===== */
.products-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: var(--s-5);
}

/* ===== Карточка товара ===== */
.product-card {
    display: flex;
    flex-direction: column;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
    transition: border-color var(--t-fast), transform var(--t-fast), box-shadow var(--t-fast);
}
.product-card:hover {
    border-color: var(--color-border-strong);
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}
.product-card.is-out-of-stock { opacity: .65; }

.product-card__media {
    position: relative;
    aspect-ratio: 4 / 3;
    background: var(--color-surface-2);
    overflow: hidden;
}
.product-card__media img {
    width: 100%; height: 100%; object-fit: cover; display: block;
    transition: transform var(--t-base);
}
.product-card:hover .product-card__media img { transform: scale(1.04); }

.product-card__badge {
    position: absolute; top: 10px; left: 10px;
    padding: 3px 10px;
    font-size: 11px; font-weight: var(--fw-semibold);
    text-transform: uppercase; letter-spacing: .05em;
    border-radius: var(--radius-pill);
    background: var(--color-accent);
    color: #fff;
}
.product-card__badge--new  { background: var(--color-success); }
.product-card__badge--sale { background: var(--color-danger); }
.product-card__badge--out  { background: var(--color-surface-3); color: var(--color-muted); }

.product-card__body {
    display: flex; flex-direction: column; gap: var(--s-2);
    padding: var(--s-4) var(--s-5) var(--s-5);
    flex: 1;
}
.product-card__title {
    margin: 0;
    font-size: 15px; font-weight: var(--fw-semibold);
    line-height: 1.3;
    color: var(--color-text);
}
.product-card__desc {
    margin: 0;
    font-size: 13px;
    color: var(--color-muted);
    line-height: 1.45;
}
.product-card__price {
    display: flex; align-items: baseline; gap: 8px;
    margin-top: auto; padding-top: var(--s-3);
}
.product-card__price-value {
    font-size: 18px; font-weight: var(--fw-bold);
    letter-spacing: -.01em;
    color: var(--color-text);
}
.product-card__price-old {
    font-size: 13px; color: var(--color-faint);
    text-decoration: line-through;
}

.product-card__actions {
    display: flex; gap: 6px; align-items: stretch;
    margin-top: var(--s-3);
}

/* ===== Кнопка «В корзину» / «В корзине» ===== */
.btn-cart {
    flex: 1;
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    padding: 10px 14px;
    font-size: 14px; font-weight: var(--fw-semibold);
    border: 1px solid var(--color-accent);
    background: var(--color-accent);
    color: #fff;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background var(--t-fast), border-color var(--t-fast), color var(--t-fast), transform var(--t-fast);
    white-space: nowrap;
}
.btn-cart:hover {
    background: var(--color-accent-hover);
    border-color: var(--color-accent-hover);
    transform: translateY(-1px);
}
.btn-cart:active { transform: translateY(0); }
.btn-cart:disabled { opacity: .55; cursor: progress; }

.btn-cart.is-in-cart {
    background: transparent;
    color: var(--color-accent);
    border-color: var(--color-accent);
}
.btn-cart.is-in-cart:hover {
    background: var(--color-accent-soft);
    color: var(--color-accent-hover);
}


.btn-cart.is-loading { pointer-events: none; }
.btn-cart.is-loading::after {
    content: '';
    width: 14px; height: 14px;
    margin-left: 6px;
    border: 2px solid currentColor;
    border-top-color: transparent;
    border-radius: 50%;
    animation: cart-spin .8s linear infinite;
}
@keyframes cart-spin { to { transform: rotate(360deg); } }

/* ===== Кнопки-иконки (избранное, сравнение) ===== */
.btn-fav, .btn-compare {
    width: 40px; height: 40px;
    display: inline-flex; align-items: center; justify-content: center;
    padding: 0;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    color: var(--color-muted);
    cursor: pointer;
    transition: color var(--t-fast), border-color var(--t-fast), background var(--t-fast);
    flex-shrink: 0;
}
.btn-fav svg, .btn-compare svg { width: 18px; height: 18px; }
.btn-fav:hover    { color: #ef4444; border-color: #ef4444; }
.btn-compare:hover{ color: var(--color-accent); border-color: var(--color-accent); }

.btn-fav.is-active {
    color: #ef4444;
    border-color: #ef4444;
    background: rgba(239,68,68,.08);
}
.btn-fav.is-active svg { fill: currentColor; }

.btn-compare.is-active {
    color: var(--color-accent);
    border-color: var(--color-accent);
    background: var(--color-accent-soft);
}

/* ===== Бейдж-счётчик в шапке ===== */
.header-cart-btn {
    position: relative;
    width: 40px; height: 40px;
    display: inline-flex; align-items: center; justify-content: center;
    color: var(--color-muted);
    border-radius: var(--radius-sm);
    transition: color var(--t-fast), background var(--t-fast);
    text-decoration: none;
}
.header-cart-btn:hover { color: var(--color-text); background: var(--color-surface-2); }
.header-cart-btn svg { width: 20px; height: 20px; }

.cart-badge {
    position: absolute;
    top: 2px; right: 2px;
    min-width: 18px; height: 18px;
    padding: 0 5px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 11px; font-weight: var(--fw-bold); line-height: 1;
    background: var(--color-accent);
    color: #fff;
    border-radius: var(--radius-pill);
    border: 2px solid var(--color-bg);
    transition: transform var(--t-fast);
}
.cart-badge.is-empty {
    transform: scale(0);
    opacity: 0;
    pointer-events: none;
}
.cart-badge--muted { background: var(--color-muted); }
.cart-badge--info  { background: var(--color-info); }

/* ===== Шапка: группа иконок корзины ===== */
.header-commerce {
    display: flex;
    align-items: center;
    gap: 4px;
}
.header-commerce__divider {
    width: 1px;
    height: 20px;
    background: var(--color-border);
    margin: 0 6px;
}

/* ===== Мини-корзина ===== */
.mini-cart {
    padding: var(--s-4);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
}
.mini-cart__head {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: var(--s-3);
    padding-bottom: var(--s-3);
    border-bottom: 1px solid var(--color-border);
}
.mini-cart__title { margin: 0; font-size: 15px; font-weight: var(--fw-semibold); }
.mini-cart__count { font-size: 13px; color: var(--color-muted); }

.mini-cart__list { display: flex; flex-direction: column; gap: var(--s-3); }
.mini-cart__item {
    display: grid;
    grid-template-columns: 56px 1fr auto;
    gap: var(--s-3);
    align-items: center;
}
.mini-cart__item[hidden] { display: none; }
.mini-cart__item-img {
    width: 56px; height: 56px;
    border-radius: var(--radius-sm);
    background: var(--color-surface-2);
    object-fit: cover;
}
.mini-cart__item-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.mini-cart__item-title {
    font-size: 14px; font-weight: var(--fw-medium);
    color: var(--color-text);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mini-cart__item-price { font-size: 13px; color: var(--color-muted); }
.mini-cart__item-remove {
    width: 28px; height: 28px;
    display: inline-flex; align-items: center; justify-content: center;
    color: var(--color-muted);
    border: 1px solid transparent;
    border-radius: var(--radius-xs);
    background: transparent;
    cursor: pointer;
    transition: color var(--t-fast), background var(--t-fast), border-color var(--t-fast);
}
.mini-cart__item-remove:hover { color: var(--color-danger); border-color: var(--color-danger); }

.mini-cart__foot {
    display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
    margin-top: var(--s-4);
    padding-top: var(--s-4);
    border-top: 1px solid var(--color-border);
}
.mini-cart__total-label { font-size: 13px; color: var(--color-muted); }
.mini-cart__total-value { font-size: 18px; font-weight: var(--fw-bold); }

.mini-cart__empty {
    text-align: center;
    padding: var(--s-6) var(--s-4);
    color: var(--color-muted);
    font-size: 14px;
}
.mini-cart__empty[hidden] { display: none; }

/* ===== Числовое поле количества ===== */
.qty-control {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    overflow: hidden;
    background: var(--color-surface);
}
.qty-control__btn {
    width: 34px; height: 36px;
    display: inline-flex; align-items: center; justify-content: center;
    background: transparent;
    border: 0;
    color: var(--color-muted);
    cursor: pointer;
    font-size: 18px; line-height: 1;
    transition: color var(--t-fast), background var(--t-fast);
}
.qty-control__btn:hover { color: var(--color-text); background: var(--color-surface-2); }
.qty-control__value {
    min-width: 40px;
    text-align: center;
    padding: 0 6px;
    font-size: 14px; font-weight: var(--fw-medium);
    font-variant-numeric: tabular-nums;
    color: var(--color-text);
    border-left: 1px solid var(--color-border);
    border-right: 1px solid var(--color-border);
    line-height: 36px;
}

/* ===== Таблица сравнения ===== */
.compare-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
}
.compare-table th, .compare-table td {
    padding: 12px 16px;
    border-bottom: 1px solid var(--color-border);
    vertical-align: top;
    text-align: left;
}
.compare-table thead th {
    background: var(--color-surface-2);
    font-weight: var(--fw-semibold);
    font-size: 13px;
}
.compare-table tbody tr:last-child th,
.compare-table tbody tr:last-child td { border-bottom: 0; }
.compare-table__attr { color: var(--color-muted); font-weight: var(--fw-medium); width: 180px; }
.compare-table__img { width: 80px; height: 80px; border-radius: var(--radius-sm); background: var(--color-surface-2); }
.compare-table__remove {
    width: 28px; height: 28px;
    display: inline-flex; align-items: center; justify-content: center;
    background: transparent; border: 1px solid var(--color-border);
    border-radius: var(--radius-xs);
    color: var(--color-muted);
    cursor: pointer;
    transition: color var(--t-fast), border-color var(--t-fast);
}
.compare-table__remove:hover { color: var(--color-danger); border-color: var(--color-danger); }

/* ===== Страница корзины (полный вариант) ===== */
.cart-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.cart-table th, .cart-table td { padding: 14px 12px; border-bottom: 1px solid var(--color-border); text-align: left; }
.cart-table thead th {
    background: var(--color-surface-2);
    font-size: 12px; text-transform: uppercase; letter-spacing: .05em;
    color: var(--color-muted); font-weight: var(--fw-semibold);
}
.cart-table__media { width: 64px; }
.cart-table__media img { width: 64px; height: 64px; object-fit: cover; border-radius: var(--radius-sm); }
.cart-table__actions { text-align: right; }
.cart-table__price { font-family: var(--font-mono); }

.cart-summary {
    display: flex; justify-content: flex-end; gap: var(--s-6);
    padding: var(--s-5) 0;
    margin-top: var(--s-4);
    border-top: 2px solid var(--color-border);
}
.cart-summary__row { display: flex; gap: var(--s-3); align-items: baseline; }
.cart-summary__label { color: var(--color-muted); }
.cart-summary__value { font-size: var(--fs-xl); font-weight: var(--fw-bold); }

/* ===== Адаптив ===== */
@media (max-width: 640px) {
    .products-grid { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: var(--s-3); }
    .product-card__body { padding: var(--s-3) var(--s-4) var(--s-4); }
    .product-card__title { font-size: 14px; }
    .btn-cart { font-size: 13px; padding: 9px 12px; }
    .btn-fav, .btn-compare { width: 36px; height: 36px; }

    .mini-cart__item { grid-template-columns: 44px 1fr auto; }
    .mini-cart__item-img { width: 44px; height: 44px; }

    .compare-table { font-size: 12px; }
    .compare-table th, .compare-table td { padding: 8px 10px; }
    .compare-table__attr { width: 120px; }

    .cart-table__media { display: none; }
    .cart-table th, .cart-table td { padding: 10px 8px; font-size: 13px; }
}
/* ===== Иконка корзины в шапке ===== */
.header-cart-link {
    position: relative;
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--color-muted);
    border-radius: var(--radius-sm);
    text-decoration: none;
    transition: color var(--t-fast), background var(--t-fast);
}
.header-cart-link:hover {
    color: var(--color-text);
    background: var(--color-surface-2);
}
.header-cart-link svg { width: 20px; height: 20px; }
.header-cart-link .cart-badge { top: 3px; right: 3px; }

/* ===== Fly-to-cart анимация ===== */
.fly-to-cart {
    position: fixed;
    z-index: 9999;
    pointer-events: none;
    background-size: cover;
    background-position: center;
    border-radius: var(--radius-sm);
    box-shadow: 0 8px 24px rgba(0,0,0,.35);
    transition: transform .8s cubic-bezier(.5,-0.2,.85,.3),
                opacity .8s ease,
                border-radius .8s ease;
    will-change: transform, opacity;
    transform: translate(0, 0) scale(1);
    opacity: 1;
}

/* ===== Pop-эффект на иконке корзины ===== */
@keyframes cart-receive-pop {
    0%   { transform: scale(1); }
    25%  { transform: scale(1.35); }
    45%  { transform: scale(.9); }
    65%  { transform: scale(1.15); }
    100% { transform: scale(1); }
}
@keyframes cart-badge-pop {
    0%   { transform: scale(1); }
    50%  { transform: scale(1.6); background: var(--color-success); }
    100% { transform: scale(1); background: var(--color-accent); }
}
.header-cart-link.is-receiving {
    animation: cart-receive-pop .7s cubic-bezier(.3,1.2,.5,1);
    color: var(--color-accent);
}
.header-cart-link.is-receiving .cart-badge {
    animation: cart-badge-pop .7s ease;
}

/* ===== Smooth-scroll и якорь ===== */
html { scroll-behavior: smooth; }

/* Чтобы sticky-шапка не перекрывала цель якоря */
#cart-demo,
#cart-lists {
    scroll-margin-top: calc(var(--header-h) + var(--s-5));
}

/* ===== Скрытие/появление бейджа с плавностью ===== */
.cart-badge {
    transition: transform var(--t-fast), opacity var(--t-fast), background var(--t-fast);
}
/* ===== Оформление заказа ===== */
.checkout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--s-7);
    align-items: start;
}
@media (max-width: 900px) {
    .checkout { grid-template-columns: 1fr; gap: var(--s-5); }
}

.checkout__title {
    margin: 0 0 var(--s-4);
    font-size: var(--fs-lg);
    font-weight: var(--fw-semibold);
}

.checkout__summary {
    padding: var(--s-5);
    background: var(--color-surface-2);
    border-radius: var(--radius-md);
    border: 1px solid var(--color-border);
}

.checkout__items {
    display: flex;
    flex-direction: column;
    gap: var(--s-3);
    margin-bottom: var(--s-4);
    padding-bottom: var(--s-4);
    border-bottom: 1px solid var(--color-border);
}

.checkout__item {
    display: grid;
    grid-template-columns: 56px 1fr auto;
    gap: var(--s-3);
    align-items: center;
}
.checkout__item-img {
    width: 56px; height: 56px;
    object-fit: cover;
    border-radius: var(--radius-sm);
    background: var(--color-surface);
}
.checkout__item-body { min-width: 0; }
.checkout__item-name {
    font-size: 14px;
    font-weight: var(--fw-medium);
    color: var(--color-text);
    margin-bottom: 2px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.checkout__item-meta {
    font-size: 12px;
    color: var(--color-muted);
    font-variant-numeric: tabular-nums;
}
.checkout__item-sum {
    font-size: 14px;
    font-weight: var(--fw-semibold);
    color: var(--color-text);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.checkout__total {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--s-4);
}
.checkout__total-label {
    font-size: 14px;
    color: var(--color-muted);
}
.checkout__total-value {
    font-size: var(--fs-2xl);
    font-weight: var(--fw-bold);
    letter-spacing: -.02em;
}

.checkout__form {
    /* CHECKOUT-GAP-FIX */
    display: grid;
    gap: var(--s-5);
    padding: var(--s-5);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
}

@media (max-width: 640px) {
    .checkout__summary,
    .checkout__form { padding: var(--s-4); }
    .checkout__total-value { font-size: var(--fs-xl); }
}
/* ===== compare-table: горизонтальный скролл ===== */
/* Обёртка для .compare-table — обеспечивает overflow-x:auto на мобильных */
.compare-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    scrollbar-color: var(--color-border-strong) var(--color-surface);
    margin: 0 calc(var(--s-3) * -1);
    padding: 0 var(--s-3);
}
.compare-table-wrap::-webkit-scrollbar { height: 8px; }
.compare-table-wrap::-webkit-scrollbar-track { background: var(--color-surface); }
.compare-table-wrap::-webkit-scrollbar-thumb {
    background: var(--color-border-strong);
    border-radius: 4px;
}

/* На мобильных таблица сравнения должна вмещать минимум по колонке */
@media (max-width: 900px) {
    .compare-table { min-width: 640px; }
}
@media (max-width: 640px) {
    .compare-table { min-width: 520px; font-size: 13px; }
    .compare-table th,
    .compare-table td { padding: 8px 10px; }
    .compare-table__img { width: 60px; height: 60px; }
}

/* === CART-ICONS-FIX === */
/* Иконки внутри .btn-cart:
   · «В корзину» — корзина
   · «В корзине» — галочка
   Используем base64-encoded SVG в mask, чтобы currentColor работал.
*/

.btn-cart::before {
    content: '';
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iOSIgY3k9IjIwIiByPSIxLjciIGZpbGw9IiMwMDAiLz48Y2lyY2xlIGN4PSIxNyIgY3k9IjIwIiByPSIxLjciIGZpbGw9IiMwMDAiLz48cGF0aCBkPSJNMyA0aDJsMyAxMmgxMGwzLTlINiIvPjwvc3ZnPg==") center / contain no-repeat;
            mask: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iOSIgY3k9IjIwIiByPSIxLjciIGZpbGw9IiMwMDAiLz48Y2lyY2xlIGN4PSIxNyIgY3k9IjIwIiByPSIxLjciIGZpbGw9IiMwMDAiLz48cGF0aCBkPSJNMyA0aDJsMyAxMmgxMGwzLTlINiIvPjwvc3ZnPg==") center / contain no-repeat;
}

.btn-cart.is-in-cart::before {
    width: 16px;
    height: 16px;
    -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTUgMTNsNCA0TDE5IDciLz48L3N2Zz4=") center / contain no-repeat;
            mask: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTUgMTNsNCA0TDE5IDciLz48L3N2Zz4=") center / contain no-repeat;
}

/* На мобильных иконка чуть меньше, чтобы всё влезало */
@media (max-width: 640px) {
    .btn-cart::before,
    .btn-cart.is-in-cart::before {
        width: 14px;
        height: 14px;
    }
}

/* Если иконок две (для динамической смены через CSS) — на будущее */
.btn-cart__icon {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    display: none;
}
.btn-cart__icon--plus {
    -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEyIDV2MTRNNSAxMmgxNCIvPjwvc3ZnPg==") center / contain no-repeat;
            mask: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEyIDV2MTRNNSAxMmgxNCIvPjwvc3ZnPg==") center / contain no-repeat;
    background: currentColor;
}


/* Дополнительные стили для страницы /cart */

.cart-table__name {
    color: var(--color-text);
    font-weight: var(--fw-medium);
    text-decoration: none;
    transition: color var(--t-fast);
}
.cart-table__name:hover { color: var(--color-accent); }

.cart-table__remove {
    width: 32px; height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--radius-xs);
    color: var(--color-muted);
    cursor: pointer;
    transition: color var(--t-fast), border-color var(--t-fast), background var(--t-fast);
}
.cart-table__remove:hover {
    color: var(--color-danger);
    border-color: var(--color-danger);
    background: rgba(239,68,68,.05);
}

.cart-actions {
    display: flex;
    justify-content: space-between;
    gap: var(--s-3);
    margin-top: var(--s-5);
    flex-wrap: wrap;
}
.cart-actions--end {
    justify-content: flex-end;
    margin-top: var(--s-6);
}

@media (max-width: 640px) {
    .cart-table th, .cart-table td {
        padding: 8px 6px;
        font-size: 13px;
    }
    .cart-table__media { display: none; }
    .cart-actions { flex-direction: column; }
    .cart-actions .btn { width: 100%; }
}

/* === CART-SQUARE-IMAGES === */
/* Квадратные фото товаров в корзине, мини-корзине и оформлении */

.cart-table__media img,
.cart-table__media a {
    display: block;
    width: 64px;
    height: 64px;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: var(--radius-sm);
    background: var(--color-surface-2);
    overflow: hidden;
}

.cart-table__media {
    width: 80px;
    padding-right: 0;
}

.mini-cart__item-img {
    width: 56px;
    height: 56px;
    aspect-ratio: 1 / 1;
    object-fit: cover;
}

.checkout__item-img {
    width: 56px;
    height: 56px;
    aspect-ratio: 1 / 1;
    object-fit: cover;
}

@media (max-width: 640px) {
    .cart-table__media img,
    .cart-table__media a {
        width: 52px;
        height: 52px;
    }
}

/* CHECKOUT-GAP-FIX: убираем margin заголовка, чтобы не суммировался с gap */
.checkout__form > .checkout__title { margin-bottom: 0; }

/* === 47-input-mask.css === */
/* 47-input-mask.css — стили валидности полей с маской */

/* Поле — контейнер */
.field { position: relative; }

/* Иконка в поле (галочка / крестик) */
.field.is-valid .input,
.field.is-valid .textarea,
.field.is-valid .select {
    padding-right: 40px;
    border-color: var(--color-success);
    background-color: var(--color-surface);
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%2322c55e' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-11'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    background-size: 18px 18px;
}

.field.is-invalid .input,
.field.is-invalid .textarea,
.field.is-invalid .select {
    padding-right: 40px;
    border-color: var(--color-danger);
    background-color: var(--color-surface);
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23ef4444' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    background-size: 18px 18px;
}

/* Мягкая подсветка контейнера-поля */
.field.is-valid .field__label { color: var(--color-success); }
.field.is-invalid .field__label { color: var(--color-danger); }

/* Мобильный — иконка меньше */
@media (max-width: 640px) {
    .field.is-valid .input,
    .field.is-invalid .input {
        padding-right: 36px;
        background-position: right 10px center;
        background-size: 16px 16px;
    }
}

/* Тёмная тема — цвета подсветки уже через токены, ничего не меняем */
[data-theme="light"] .field.is-valid .input,
[data-theme="light"] .field.is-invalid .input {
    background-color: #fff;
}

/* === 48-catalog.css === */
/* 48-catalog.css — Каталог: сетка, фильтры, категории, карточка товара */

/* ===== Категории-табы ===== */
.catalog-cats {
    display: flex;
    gap: var(--s-2);
    flex-wrap: wrap;
    border-bottom: 1px solid var(--color-border);
    padding-bottom: var(--s-4);
}
.catalog-cat {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    border-radius: var(--radius-pill);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    color: var(--color-text-soft);
    font-size: 14px;
    font-weight: var(--fw-medium);
    text-decoration: none;
    transition: all var(--t-fast);
}
.catalog-cat:hover {
    border-color: var(--color-accent);
    color: var(--color-text);
}
.catalog-cat.is-active {
    background: var(--color-accent);
    border-color: var(--color-accent);
    color: #fff;
}
.catalog-cat__count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    padding: 0 6px;
    height: 20px;
    font-size: 11px;
    font-weight: var(--fw-bold);
    background: rgba(255,255,255,.15);
    border-radius: var(--radius-pill);
    color: inherit;
}
.catalog-cat.is-active .catalog-cat__count { background: rgba(255,255,255,.25); }

/* ===== Раскладка: сайдбар + товары ===== */
.catalog-layout {
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: var(--s-6);
    align-items: start;
}

.catalog-sidebar { position: sticky; top: calc(var(--header-h) + var(--s-4)); }
@media (max-width: 900px) {
    .catalog-layout { grid-template-columns: 1fr; }
    .catalog-sidebar { position: static; }
}

/* ===== Фильтры ===== */
.catalog-filters {
    display: flex;
    flex-direction: column;
    gap: var(--s-5);
    padding: var(--s-5);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
}
.catalog-filters__group { display: flex; flex-direction: column; gap: var(--s-2); }
.catalog-filters__title {
    font-size: 12px;
    font-weight: var(--fw-semibold);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--color-muted);
}
.catalog-filters__row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-2); }
.catalog-filters__actions { display: flex; flex-direction: column; gap: var(--s-2); margin-top: var(--s-2); }

/* ===== Голова каталога ===== */
.catalog-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--s-5);
    gap: var(--s-3);
}
.catalog-head__count {
    font-size: 14px;
    color: var(--color-muted);
}
.catalog-head__count strong { color: var(--color-text); font-weight: var(--fw-semibold); }

.pagination-nav { margin-top: var(--s-7); }

/* ===== Карточка товара (детальная страница) ===== */
.product-detail {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--s-8);
    margin-bottom: var(--s-10);
}
@media (max-width: 900px) {
    .product-detail { grid-template-columns: 1fr; gap: var(--s-6); }
}

.product-detail__media {
    display: flex;
    flex-direction: column;
    gap: var(--s-3);
    position: sticky;
    top: calc(var(--header-h) + var(--s-4));
}
@media (max-width: 900px) { .product-detail__media { position: static; } }

.product-detail__image-main {
    position: relative;
    aspect-ratio: 4 / 3;
    border-radius: var(--radius-lg);
    overflow: hidden;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
}
.product-detail__image-main img {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
}
.product-detail__thumbs {
    display: flex;
    gap: var(--s-2);
    flex-wrap: wrap;
}
.product-detail__thumb {
    width: 70px; height: 70px;
    border-radius: var(--radius-sm);
    border: 2px solid var(--color-border);
    background: var(--color-surface);
    overflow: hidden;
    padding: 0;
    cursor: pointer;
    transition: border-color var(--t-fast);
}
.product-detail__thumb.is-active { border-color: var(--color-accent); }
.product-detail__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }

.product-detail__info {
    display: flex;
    flex-direction: column;
    gap: var(--s-4);
}

.product-detail__title {
    margin: 0;
    font-size: clamp(1.5rem, 3vw, 2.2rem);
    font-weight: var(--fw-bold);
    line-height: 1.15;
    letter-spacing: -.02em;
}
.product-detail__cat {
    display: inline-block;
    font-size: 13px;
    color: var(--color-muted);
    text-decoration: none;
    transition: color var(--t-fast);
}
.product-detail__cat:hover { color: var(--color-accent); }

.product-detail__price {
    display: flex;
    align-items: baseline;
    gap: 10px;
    flex-wrap: wrap;
}
.product-detail__price-value {
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: var(--fw-bold);
    letter-spacing: -.02em;
}
.product-detail__price-old {
    font-size: 1.1rem;
    color: var(--color-faint);
    text-decoration: line-through;
}

.product-detail__desc {
    margin: 0;
    font-size: 15px;
    color: var(--color-muted);
    line-height: 1.6;
}

.product-detail__actions {
    display: flex;
    gap: var(--s-2);
    flex-wrap: wrap;
    align-items: stretch;
}
.product-detail__actions .btn-cart--lg,
.product-detail__actions .btn-fav--lg,
.product-detail__actions .btn-compare--lg {
    min-height: 48px;
}
.product-detail__actions .btn-cart--lg { flex: 1; min-width: 200px; padding: 14px 24px; font-size: 15px; }
.product-detail__actions .btn-fav--lg,
.product-detail__actions .btn-compare--lg {
    width: 48px; height: 48px;
}

.product-detail__features {
    margin-top: var(--s-4);
    padding-top: var(--s-5);
    border-top: 1px solid var(--color-border);
}
.product-detail__features-title {
    font-size: 15px;
    font-weight: var(--fw-semibold);
    margin: 0 0 var(--s-3);
}
.product-detail__features-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--s-2);
}
.product-detail__features-list li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 14px;
    color: var(--color-text-soft);
    line-height: 1.4;
}
.product-detail__features-list svg {
    width: 18px; height: 18px;
    flex-shrink: 0;
    color: var(--color-accent);
    margin-top: 1px;
}

.product-detail__attrs,
.product-detail__related { margin-top: var(--s-10); }
.product-detail__section-title {
    font-size: var(--fs-lg);
    font-weight: var(--fw-semibold);
    margin: 0 0 var(--s-5);
}

/* ===== Мобильные ===== */
@media (max-width: 640px) {
    .catalog-filters { padding: var(--s-4); gap: var(--s-4); }
    .catalog-head { flex-direction: column; align-items: stretch; }
    .product-detail { margin-bottom: var(--s-8); }
    .product-detail__actions .btn-cart--lg { min-width: 0; width: 100%; }
    .product-detail__attrs .table th { width: auto !important; }
}

/* === 49-blog.css === */
/* 49-blog.css — Блог и статьи */

/* ===== Сетка статей ===== */
.blog-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: var(--s-6);
}

.blog-card {
    display: flex;
    flex-direction: column;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
    transition: border-color var(--t-fast), transform var(--t-fast), box-shadow var(--t-fast);
}
.blog-card:hover {
    border-color: var(--color-border-strong);
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}
.blog-card__cover {
    display: block;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: var(--color-surface-2);
}
.blog-card__cover img {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
    transition: transform var(--t-base);
}
.blog-card:hover .blog-card__cover img { transform: scale(1.04); }

.blog-card__body {
    padding: var(--s-5);
    display: flex;
    flex-direction: column;
    gap: var(--s-3);
    flex: 1;
}
.blog-card__meta {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: var(--color-muted);
}
.blog-card__cat {
    color: var(--color-accent);
    font-weight: var(--fw-semibold);
    text-transform: uppercase;
    letter-spacing: .05em;
}
.blog-card__dot { color: var(--color-faint); }
.blog-card__title {
    margin: 0;
    font-size: var(--fs-md);
    font-weight: var(--fw-semibold);
    line-height: 1.3;
}
.blog-card__title a {
    color: var(--color-text);
    text-decoration: none;
    transition: color var(--t-fast);
}
.blog-card__title a:hover { color: var(--color-accent); }
.blog-card__excerpt {
    margin: 0;
    font-size: 14px;
    color: var(--color-muted);
    line-height: 1.55;
}
.blog-card__more {
    margin-top: auto;
    padding-top: var(--s-3);
    font-size: 13px;
    font-weight: var(--fw-medium);
    color: var(--color-accent);
    text-decoration: none;
    transition: color var(--t-fast);
}
.blog-card__more:hover { color: var(--color-accent-hover); }

/* ===== Статья ===== */
.article {
    padding: var(--s-10) 0;
}
.article__header {
    margin-bottom: var(--s-7);
}
.article__meta {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--color-muted);
    margin-bottom: var(--s-4);
}
.article__title {
    margin: 0 0 var(--s-4);
    font-size: clamp(1.8rem, 4vw, 2.6rem);
    font-weight: var(--fw-bold);
    line-height: 1.15;
    letter-spacing: -.02em;
}
.article__lead {
    margin: 0;
    font-size: var(--fs-md);
    color: var(--color-muted);
    line-height: 1.55;
}
.article__cover {
    margin-bottom: var(--s-7);
}
.article__cover img {
    width: 100%;
    height: auto;
    border-radius: var(--radius-lg);
    display: block;
}
.article__content {
    font-size: 16px;
    line-height: 1.7;
    color: var(--color-text-soft);
}
.article__content h2 {
    margin: var(--s-8) 0 var(--s-4);
    font-size: 1.5rem;
    color: var(--color-text);
}
.article__content h3 {
    margin: var(--s-6) 0 var(--s-3);
    font-size: 1.2rem;
    color: var(--color-text);
}
.article__content p { margin: 0 0 var(--s-4); }
.article__content ul, .article__content ol {
    margin: 0 0 var(--s-4);
    padding-left: 1.4em;
}
.article__content li { margin-bottom: 8px; }
.article__content code {
    font-family: var(--font-mono);
    font-size: .9em;
    background: var(--color-surface-2);
    padding: .15em .4em;
    border-radius: var(--radius-xs);
    color: var(--color-accent-hover);
}
.article__content pre {
    margin: 0 0 var(--s-5);
    padding: var(--s-4);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow-x: auto;
    line-height: 1.5;
}
.article__content pre code {
    background: transparent;
    color: var(--color-text-soft);
    padding: 0;
}
.article__content blockquote {
    margin: 0 0 var(--s-5);
    padding: var(--s-4) var(--s-5);
    border-left: 3px solid var(--color-accent);
    background: var(--color-surface);
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
    color: var(--color-text-soft);
    font-style: italic;
}
.article__content table {
    width: 100%;
    border-collapse: collapse;
    margin: 0 0 var(--s-5);
    font-size: 14px;
}
.article__content th, .article__content td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--color-border);
    text-align: left;
}
.article__content thead th {
    background: var(--color-surface-2);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--color-muted);
}

.article__footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--s-4);
    margin-top: var(--s-10);
    padding-top: var(--s-6);
    border-top: 1px solid var(--color-border);
    flex-wrap: wrap;
}
.article__share {
    display: flex;
    align-items: center;
    gap: var(--s-2);
    flex-wrap: wrap;
}

@media (max-width: 640px) {
    .blog-grid { grid-template-columns: 1fr; gap: var(--s-4); }
    .article { padding: var(--s-8) 0; }
    .article__footer { flex-direction: column; align-items: stretch; }
}

/* === 50-content.css === */
/* 50-content.css — Портфолио, команда, отзывы, FAQ, CTA */

/* ===== CTA-секция (общая) ===== */
.cta-section {
    margin-top: var(--s-10);
}
.cta-section__inner {
    padding: var(--s-9) var(--s-7);
    background:
        radial-gradient(circle at 15% 20%, rgba(255,91,46,.18) 0%, transparent 45%),
        radial-gradient(circle at 85% 60%, rgba(59,130,246,.16) 0%, transparent 45%),
        var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    text-align: center;
}
.cta-section__title {
    margin: 0 0 var(--s-3);
    font-size: clamp(1.4rem, 3vw, 1.9rem);
}
.cta-section__text {
    margin: 0 0 var(--s-6);
    color: var(--color-muted);
    max-width: 520px;
    margin-left: auto;
    margin-right: auto;
    line-height: 1.55;
}
.cta-section__actions {
    display: flex;
    gap: var(--s-3);
    justify-content: center;
    flex-wrap: wrap;
}

/* ===== Портфолио ===== */
.cases-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
    gap: var(--s-6);
}

.case-card {
    display: flex;
    flex-direction: column;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
    transition: border-color var(--t-fast), transform var(--t-fast), box-shadow var(--t-fast);
}
.case-card:hover {
    border-color: var(--color-border-strong);
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}
.case-card__cover {
    display: block;
    position: relative;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: var(--color-surface-2);
}
.case-card__cover img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform var(--t-base);
}
.case-card:hover .case-card__cover img { transform: scale(1.04); }
.case-card__cat {
    position: absolute;
    top: 12px; left: 12px;
    padding: 4px 12px;
    background: rgba(11,11,13,.75);
    color: #fff;
    font-size: 11px;
    font-weight: var(--fw-semibold);
    letter-spacing: .05em;
    text-transform: uppercase;
    border-radius: var(--radius-pill);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}
.case-card__body {
    padding: var(--s-5);
    display: flex;
    flex-direction: column;
    gap: var(--s-2);
    flex: 1;
}
.case-card__meta {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: var(--color-muted);
}
.case-card__dot { color: var(--color-faint); }
.case-card__title {
    margin: 0;
    font-size: var(--fs-md);
    font-weight: var(--fw-semibold);
    line-height: 1.3;
}
.case-card__title a {
    color: var(--color-text);
    text-decoration: none;
    transition: color var(--t-fast);
}
.case-card__title a:hover { color: var(--color-accent); }
.case-card__excerpt {
    margin: 0;
    font-size: 14px;
    color: var(--color-muted);
    line-height: 1.55;
}
.case-card__more {
    margin-top: auto;
    padding-top: var(--s-3);
    color: var(--color-accent);
    font-size: 13px;
    font-weight: var(--fw-medium);
    text-decoration: none;
}

/* ===== Детальная кейса ===== */
.case-detail__header {
    padding: var(--s-9) 0 var(--s-6);
}
.case-detail__meta {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--color-muted);
    margin-bottom: var(--s-4);
}
.case-detail__title {
    margin: 0 0 var(--s-4);
    font-size: clamp(1.8rem, 4vw, 2.6rem);
    line-height: 1.15;
    letter-spacing: -.02em;
}
.case-detail__lead {
    margin: 0;
    font-size: var(--fs-md);
    color: var(--color-muted);
    max-width: 720px;
}
.case-detail__cover {
    margin-bottom: var(--s-8);
}
.case-detail__cover img {
    width: 100%;
    height: auto;
    border-radius: var(--radius-lg);
    display: block;
}
.case-detail__body {
    padding-bottom: var(--s-10);
}
.case-detail__row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--s-7);
    margin-bottom: var(--s-8);
}
@media (max-width: 900px) {
    .case-detail__row { grid-template-columns: 1fr; gap: var(--s-5); }
}
.case-detail__col h2 {
    margin: 0 0 var(--s-4);
    font-size: var(--fs-lg);
}
.case-detail__col p {
    margin: 0;
    color: var(--color-text-soft);
    line-height: 1.65;
}
.case-detail__result {
    margin-bottom: var(--s-8);
    padding: var(--s-6);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
}
.case-detail__result h2 {
    margin: 0 0 var(--s-4);
    font-size: var(--fs-lg);
}
.case-detail__result-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--s-3);
}
.case-detail__result-list li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 15px;
    color: var(--color-text-soft);
    line-height: 1.5;
}
.case-detail__result-list svg {
    width: 20px; height: 20px;
    color: var(--color-success);
    flex-shrink: 0;
    margin-top: 1px;
}
.case-detail__stack {
    margin-bottom: var(--s-8);
}
.case-detail__stack h2 {
    margin: 0 0 var(--s-4);
    font-size: var(--fs-lg);
}
.case-detail__tags {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
.case-detail__footer {
    display: flex;
    justify-content: space-between;
    gap: var(--s-3);
    padding-top: var(--s-6);
    border-top: 1px solid var(--color-border);
    flex-wrap: wrap;
}

/* ===== Команда ===== */
.team-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: var(--s-5);
}
.team-card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
    transition: border-color var(--t-fast), transform var(--t-fast);
}
.team-card:hover {
    border-color: var(--color-border-strong);
    transform: translateY(-2px);
}
.team-card__photo {
    aspect-ratio: 1;
    overflow: hidden;
    background: var(--color-surface-2);
}
.team-card__photo img {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
}
.team-card__body {
    padding: var(--s-5);
}
.team-card__name {
    margin: 0 0 4px;
    font-size: var(--fs-md);
    font-weight: var(--fw-semibold);
}
.team-card__role {
    font-size: 13px;
    color: var(--color-accent);
    font-weight: var(--fw-medium);
    margin-bottom: var(--s-3);
}
.team-card__bio {
    margin: 0 0 var(--s-4);
    font-size: 14px;
    color: var(--color-muted);
    line-height: 1.55;
}
.team-card__skills {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

/* ===== Отзывы ===== */
.reviews-rating {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: var(--s-4);
    font-size: 15px;
}
.reviews-rating__value {
    font-size: 28px;
    font-weight: var(--fw-bold);
    color: var(--color-text);
}
.reviews-rating__stars {
    display: inline-flex;
    gap: 3px;
    color: #fbbf24;
}
.reviews-rating__stars svg { width: 18px; height: 18px; }
.reviews-rating__count { color: var(--color-muted); font-size: 14px; }

.reviews-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
    gap: var(--s-5);
}
.review-card {
    padding: var(--s-6);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    display: flex;
    flex-direction: column;
    gap: var(--s-4);
}
.review-card__head {
    display: flex;
    align-items: center;
    gap: var(--s-4);
}
.review-card__avatar {
    width: 48px; height: 48px;
    border-radius: 50%;
    flex-shrink: 0;
}
.review-card__author { flex: 1; min-width: 0; }
.review-card__name { font-weight: var(--fw-semibold); }
.review-card__company { font-size: 12px; color: var(--color-muted); }
.review-card__rating { display: inline-flex; gap: 2px; color: #fbbf24; }
.review-card__rating svg { width: 14px; height: 14px; }
.review-card__text {
    margin: 0;
    color: var(--color-text-soft);
    font-size: 14px;
    line-height: 1.6;
}
.review-card__date {
    margin-top: auto;
    font-size: 12px;
    color: var(--color-faint);
}

/* ===== FAQ ===== */
.faq-group { margin-bottom: var(--s-7); }
.faq-group__title {
    margin: 0 0 var(--s-5);
    font-size: var(--fs-lg);
    font-weight: var(--fw-semibold);
    color: var(--color-text);
}

/* ===== Мобильные ===== */
@media (max-width: 640px) {
    .cases-grid { grid-template-columns: 1fr; gap: var(--s-4); }
    .team-grid { grid-template-columns: 1fr; gap: var(--s-4); }
    .reviews-grid { grid-template-columns: 1fr; gap: var(--s-4); }
    .cta-section__inner { padding: var(--s-7) var(--s-5); }
    .case-detail__footer { flex-direction: column; }
    .case-detail__footer .btn { width: 100%; }
}

/* ===== Поиск ===== */
.search-form { margin-top: var(--s-5); max-width: 640px; }
.search-form__row { display: flex; gap: var(--s-3); flex-wrap: wrap; }
.search-form__row .input { flex: 1; min-width: 220px; }

.search-results { display: flex; flex-direction: column; gap: var(--s-4); }
.search-result {
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: var(--s-4);
    padding: var(--s-4);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    transition: border-color var(--t-fast), transform var(--t-fast);
}
.search-result:hover {
    border-color: var(--color-border-strong);
    transform: translateY(-1px);
}
.search-result__media { display: block; border-radius: var(--radius-sm); overflow: hidden; aspect-ratio: 4/3; background: var(--color-surface-2); }
.search-result__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.search-result__body { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.search-result__type {
    align-self: flex-start;
    padding: 2px 8px;
    font-size: 11px;
    font-weight: var(--fw-semibold);
    text-transform: uppercase;
    letter-spacing: .05em;
    border-radius: var(--radius-xs);
}
.search-result__type--product { background: var(--color-accent-soft); color: var(--color-accent-hover); }
.search-result__type--article { background: var(--color-info-soft); color: #60a5fa; }
.search-result__type--page    { background: var(--color-surface-2); color: var(--color-muted); }
.search-result__title { margin: 0; font-size: var(--fs-md); font-weight: var(--fw-semibold); }
.search-result__title a { color: var(--color-text); text-decoration: none; transition: color var(--t-fast); }
.search-result__title a:hover { color: var(--color-accent); }
.search-result__excerpt { margin: 0; font-size: 14px; color: var(--color-muted); line-height: 1.5; }
.search-result__price { font-size: 16px; font-weight: var(--fw-bold); color: var(--color-accent); margin-top: 4px; }

@media (max-width: 640px) {
    .search-result { grid-template-columns: 1fr; }
    .search-result__media { aspect-ratio: 16/9; }
    .search-form__row { flex-direction: column; }
    .search-form__row .btn { width: 100%; }
}
