@font-face{font-family:'Forum';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/forum-400-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'Forum';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/forum-400-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Forum';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/forum-400-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/manrope-400-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/manrope-400-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/manrope-400-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/manrope-500-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/manrope-500-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/manrope-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/manrope-600-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/manrope-600-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/manrope-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/manrope-700-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/manrope-700-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/manrope-700-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
:root{
--gold-900:#5C3F26;--gold-700:#8A6140;--gold-600:#A6774C;--gold-500:#C08E5F;--gold-400:#D9A671;
--gold-300:#EEBB84;--gold-200:#F5D5AE;--gold-100:#FAE9D3;--gold-50:#FCF3E6;
--ink-900:#2E2118;--ink-700:#55453A;--ink-500:#7C6A5C;--ink-300:#B4A79A;
--night-900:#332E42;--night-700:#453C58;
--grad-gold:linear-gradient(135deg,#A6774C 0%,#EEBB84 100%);
--font-display:'Forum',Georgia,serif;
--font-body:'Manrope','Segoe UI',system-ui,sans-serif;
--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;
--r-sm:8px;--r-md:12px;--r-lg:20px;--r-xl:28px;--r-pill:999px;
--ring:0 0 0 3px rgba(238,187,132,.35);
--ease:cubic-bezier(.25,.1,.25,1);--dur:180ms;--dur-slow:320ms;
--wrap:1120px;
}

:root,
[data-theme="night"]{
--pg-bg:#332E42;--pg-bg2:#2B2738;--pg-card:rgba(250,246,240,.06);--pg-panel:rgba(250,246,240,.05);
--pg-cardline:rgba(238,187,132,.25);
--pg-text:#F5EBDD;--pg-muted:rgba(245,235,221,.82);--pg-soft:rgba(245,235,221,.62);
--pg-accent:#EEBB84;--pg-link-h:#FAE9D3;
--pg-header:rgba(43,39,56,.85);--pg-headerline:rgba(238,187,132,.18);--pg-stars:.55;
--pg-logo:url("../img/logo-h-bright.svg");
--pg-success-bg:rgba(110,139,94,.22);--pg-success-text:#A8C79A;--pg-footer:#241F30;
--pg-chip-bg:rgba(250,246,240,.06);--pg-chip-line:rgba(238,187,132,.3);
--accent:#EEBB84;--accent-hover:#F5D5AE;--text-on-gold:#332E42;
--gold-tint:rgba(238,187,132,.14);--line:rgba(238,187,132,.3);
--ring:0 0 0 3px rgba(238,187,132,.35);
--shadow-card:0 2px 12px rgba(0,0,0,.28);
--shadow-raised:0 10px 28px rgba(0,0,0,.38);
--shadow-pop:0 22px 60px rgba(0,0,0,.5);
color-scheme:dark;
}

[data-theme="light"]{
--pg-bg:#FAF6F0;--pg-bg2:#FFFFFF;--pg-card:#FFFFFF;--pg-panel:#FAF6F0;--pg-cardline:#E9DFD2;
--pg-text:#2E2118;--pg-muted:#55453A;--pg-soft:#7C6A5C;
--pg-accent:#A6774C;--pg-link-h:#8A6140;
--pg-header:rgba(250,246,240,.85);--pg-headerline:#F1EAE0;--pg-stars:0;
--pg-logo:url("../img/logo-h-gold.svg");
--pg-success-bg:#EDF2E8;--pg-success-text:#5C7A4D;--pg-footer:#2E2118;
--pg-chip-bg:#FFFFFF;--pg-chip-line:#E9DFD2;
--accent:#A6774C;--accent-hover:#8A6140;--text-on-gold:#FFFFFF;
--gold-tint:#FCF3E6;--line:#E9DFD2;
--ring:0 0 0 3px rgba(166,119,76,.25);
--shadow-card:0 2px 12px rgba(92,63,38,.07);
--shadow-raised:0 6px 20px rgba(92,63,38,.10);
--shadow-pop:0 16px 40px rgba(92,63,38,.16);
color-scheme:light;
}

*,*::before,*::after{box-sizing:border-box}
/* author display declarations otherwise beat the UA rule for [hidden] */
[hidden]{display:none!important}
/* фон html = холст, который iOS показывает при овер-скролле за край страницы:
   красим в цвет футера, а сам «резиновый» вертикальный овер-скролл отключаем —
   иначе fixed-таббар «отклеивается» и под контентом видна огромная подложка */
html{
scroll-behavior:smooth;-webkit-text-size-adjust:100%;
background:var(--pg-bg2);overscroll-behavior-y:none;
}
body{
margin:0;font-family:var(--font-body);font-size:15px;line-height:1.6;
color:var(--pg-text);background:var(--pg-bg);-webkit-font-smoothing:antialiased;
overflow-x:hidden;overscroll-behavior-y:none;
}
img,svg{max-width:100%;display:block}
a{color:var(--pg-accent);text-decoration:none;transition:color var(--dur) var(--ease)}
a:hover{color:var(--pg-link-h)}
h1,h2,h3{font-family:var(--font-display);font-weight:400;margin:0;text-wrap:balance}
::selection{background:var(--gold-200);color:var(--ink-900)}

:where(a,button,input,select,summary):focus-visible{
outline:none;box-shadow:var(--ring);border-radius:var(--r-sm);
}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
.sr-only{
position:absolute;width:1px;height:1px;padding:0;margin:-1px;
overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
.skip{
position:absolute;left:-9999px;top:0;z-index:200;padding:12px 20px;
background:var(--pg-accent);color:var(--text-on-gold);font-weight:600;border-radius:0 0 var(--r-md) 0;
}
.skip:focus{left:0}

.caption{
font-size:13px;letter-spacing:.16em;text-transform:uppercase;
color:var(--pg-accent);font-weight:600;
}
.rule{width:56px;height:3px;border-radius:2px;background:var(--grad-gold)}

.section{padding:clamp(56px,8vw,88px) 0}
.section--alt{background:var(--pg-bg2)}
.section__head{display:flex;flex-direction:column;gap:var(--sp-3)}
.section__head--gap{margin-bottom:clamp(28px,4vw,44px)}
.section__title{font-size:clamp(30px,5vw,44px);line-height:1.15}

/* ---------- header ----------
   Всегда видима: статична вверху и остаётся закреплённой при прокрутке. */
.header{
position:fixed;top:0;left:0;right:0;z-index:80;background:var(--pg-header);
backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
border-bottom:1px solid var(--pg-headerline);
}
body{padding-top:84px}
.header__inner{
display:flex;align-items:center;justify-content:space-between;gap:var(--sp-5);
height:84px;
}
.logo{display:flex;align-items:center;flex-shrink:0}
.logo__img{
display:block;width:182px;height:52px;
background:var(--pg-logo) left center / contain no-repeat;
}
.header__addr{
display:flex;flex-direction:column;gap:1px;min-width:0;
font-size:13px;line-height:1.35;color:var(--pg-soft);font-weight:500;
}
.header__addr span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.header__addr:hover{color:var(--pg-accent)}
.nav{display:flex;gap:var(--sp-6);font-size:15px;font-weight:500;margin-left:auto}
/* «Зоряний кабінет» — только в мобильном бургере: на десктопе есть иконка профиля в шапке */
@media (min-width:1001px){.nav__cab{display:none}}
.nav a{color:var(--pg-muted)}
.nav a:hover,.nav a:focus-visible{color:var(--pg-accent)}
.nav .nav__cab{color:var(--pg-accent);font-weight:600}
.nav .nav__cab .star{font-size:13px}
.header__phone{font-weight:700;color:var(--pg-accent);font-size:17px;white-space:nowrap}
.header__tools{display:flex;align-items:center;gap:var(--sp-3);flex-shrink:0}
section[id]{scroll-margin-top:96px}

.theme-toggle{
display:inline-flex;align-items:center;justify-content:center;
width:40px;height:40px;flex-shrink:0;
border:1px solid var(--pg-cardline);border-radius:var(--r-pill);
background:transparent;color:var(--pg-muted);cursor:pointer;
transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.theme-toggle:hover{background:var(--gold-tint);color:var(--pg-accent);border-color:var(--pg-accent)}
.theme-toggle svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.5;
stroke-linecap:round;stroke-linejoin:round}
.theme-toggle .icon-moon{display:none}
[data-theme="light"] .theme-toggle .icon-moon{display:block}
[data-theme="light"] .theme-toggle .icon-sun{display:none}

/* вход в кабинет — акцентная иконка справа от переключателя темы */
.header__cab{
display:inline-flex;align-items:center;justify-content:center;
width:40px;height:40px;flex-shrink:0;
border:1px solid var(--pg-accent);border-radius:var(--r-pill);
background:var(--gold-tint);color:var(--pg-accent);
transition:background var(--dur) var(--ease),color var(--dur) var(--ease);
}
.header__cab:hover{background:var(--accent);color:var(--text-on-gold)}
.header__cab svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.7;
stroke-linecap:round;stroke-linejoin:round}

.burger{display:none}

/* ---------- buttons (ported from design system) ---------- */
.btn{
display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);
font-family:var(--font-body);font-weight:600;
border:1px solid transparent;border-radius:var(--r-pill);cursor:pointer;
text-decoration:none;white-space:nowrap;
height:44px;padding:0 24px;font-size:15px;
transition:background var(--dur) var(--ease),color var(--dur) var(--ease),
border-color var(--dur) var(--ease),transform var(--dur) var(--ease);
}
.btn:active:not(:disabled){transform:scale(.98)}
.btn:disabled{opacity:.45;cursor:default}
.btn--lg{height:52px;padding:0 32px;font-size:16px}
.btn--full{width:100%}
.btn--primary{background:var(--accent);color:var(--text-on-gold)}
.btn--primary:hover:not(:disabled){background:var(--accent-hover);color:var(--text-on-gold)}
.btn--secondary{background:transparent;color:var(--pg-accent);border-color:var(--gold-400)}
.btn--secondary:hover:not(:disabled){background:var(--gold-tint);border-color:var(--pg-accent);color:var(--pg-accent)}
.btn--ghost{background:transparent;color:var(--pg-accent)}
.btn--ghost:hover:not(:disabled){background:var(--gold-tint)}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden}
.hero__stars{
position:absolute;inset:0;opacity:var(--pg-stars);pointer-events:none;
background-image:
radial-gradient(circle 2px at 8% 25%,#EEBB84 99%,transparent),
radial-gradient(circle 1.5px at 22% 75%,#EEBB84 99%,transparent),
radial-gradient(circle 2px at 42% 12%,#EEBB84 99%,transparent),
radial-gradient(circle 1.5px at 60% 82%,#EEBB84 99%,transparent),
radial-gradient(circle 2px at 76% 20%,#EEBB84 99%,transparent),
radial-gradient(circle 1.5px at 91% 60%,#EEBB84 99%,transparent),
radial-gradient(circle 1.5px at 33% 48%,#EEBB84 99%,transparent),
radial-gradient(circle 1px at 68% 38%,#EEBB84 99%,transparent);
transition:opacity var(--dur-slow) var(--ease);
}
.hero__inner{
position:relative;display:flex;flex-direction:column;align-items:center;
text-align:center;gap:var(--sp-6);
padding-top:clamp(64px,11vw,120px);padding-bottom:clamp(48px,7vw,80px);
}
/* Крупная подача логотипа вместо текстового кэпшена */
.hero__logo{
width:clamp(280px,72vw,480px);aspect-ratio:210/60;
background:var(--pg-logo) center / contain no-repeat;
filter:drop-shadow(0 6px 24px rgba(0,0,0,.25));
}
.hero__title{
font-size:clamp(30px,5.2vw,52px);line-height:1.12;width:100%;
}
.hero__title em{font-style:normal;color:var(--pg-accent)}
.hero__lead{
font-size:clamp(17px,2.2vw,20px);line-height:1.6;color:var(--pg-muted);
width:100%;margin:0;
}
.hero__cta{display:flex;gap:var(--sp-3);flex-wrap:wrap;justify-content:center;margin-top:var(--sp-2)}

/* ---------- works gallery ---------- */
.works{display:flex;flex-direction:column;gap:clamp(28px,4vw,44px)}
.works__grid{
display:grid;gap:var(--sp-5);
grid-template-columns:repeat(auto-fill,minmax(215px,1fr));
}
.work{
position:relative;margin:0;padding:0;aspect-ratio:4/5;
border-radius:var(--r-lg);overflow:hidden;
background:var(--pg-card);border:1px solid var(--pg-cardline);
cursor:zoom-in;
transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),
border-color var(--dur) var(--ease);
}
.work:hover,.work:focus-visible{
transform:translateY(-3px);box-shadow:var(--shadow-raised);border-color:var(--pg-accent);
}
.work img{
width:100%;height:100%;object-fit:cover;
transition:transform var(--dur-slow) var(--ease);
}
.work:hover img{transform:scale(1.04)}
.works__note{
font-size:17px;color:var(--pg-soft);display:flex;align-items:center;
gap:var(--sp-2);flex-wrap:wrap;
}
.works__note .star{color:var(--pg-accent)}
.works__note a{font-weight:600}

/* ---------- lightbox ---------- */
.lightbox{
position:fixed;inset:0;z-index:120;display:none;
align-items:center;justify-content:center;
background:rgba(20,17,28,.92);backdrop-filter:blur(6px);
padding:clamp(12px,3vw,40px);
}
.lightbox[open],.lightbox.is-open{display:flex}
.lightbox__fig{margin:0;max-width:min(92vw,720px);display:flex;flex-direction:column;gap:var(--sp-3)}
.lightbox__img{
max-height:78vh;width:auto;margin:0 auto;border-radius:var(--r-lg);
box-shadow:var(--shadow-pop);
}
.lightbox__cap{color:#F5EBDD;font-size:15px;text-align:center;opacity:.85}
.lightbox__btn{
position:absolute;display:inline-flex;align-items:center;justify-content:center;
width:48px;height:48px;border-radius:var(--r-pill);
border:1px solid rgba(238,187,132,.35);background:rgba(43,39,56,.75);
color:#F5EBDD;cursor:pointer;font-size:22px;line-height:1;
transition:background var(--dur) var(--ease),color var(--dur) var(--ease);
}
.lightbox__btn:hover{background:var(--gold-300);color:#332E42}
.lightbox__close{top:clamp(12px,3vw,28px);right:clamp(12px,3vw,28px)}
.lightbox__prev{left:clamp(8px,2vw,24px);top:50%;transform:translateY(-50%)}
.lightbox__next{right:clamp(8px,2vw,24px);top:50%;transform:translateY(-50%)}

/* ---------- services ---------- */
.services{display:grid;gap:var(--sp-3);grid-template-columns:1fr 1fr}
@media (max-width:760px){.services{grid-template-columns:1fr}}
.service{
background:var(--pg-card);border:1px solid var(--pg-cardline);border-radius:var(--r-md);
padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);
transition:border-color var(--dur) var(--ease);
}
.service:hover{border-color:var(--pg-accent)}
.service__info{display:flex;flex-direction:column;gap:2px;min-width:0}
.service__name{font-size:15px;font-weight:600;font-family:var(--font-body);margin:0}
.service__time{font-size:13px;color:var(--pg-soft);margin:0}
.service__price{font-family:var(--font-display);font-size:24px;color:var(--pg-accent);margin:0;white-space:nowrap}

/* ---------- booking ---------- */
.booking{display:flex;flex-direction:column;gap:clamp(24px,4vw,36px)}
.booking__head{display:flex;flex-direction:column;gap:var(--sp-3);align-items:center;text-align:center}
.booking__lead{font-size:18px;color:var(--pg-muted);margin:0}
.booking__panel{
background:var(--pg-panel);border:1px solid var(--pg-cardline);border-radius:var(--r-lg);
padding:clamp(20px,4vw,36px);display:flex;flex-direction:column;gap:var(--sp-8);
}
.step{display:flex;flex-direction:column;gap:14px}
.step__label{
font-size:13px;letter-spacing:.08em;text-transform:uppercase;
color:var(--pg-accent);font-weight:600;
}

/* вибір майстра — картки з фото-аватарами */
.masters{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.master{
position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;
padding:18px 12px 14px;cursor:pointer;text-align:center;
background:var(--pg-card);border:1px solid var(--pg-cardline);border-radius:var(--r-md);
color:var(--pg-text);font-family:var(--font-body);
transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease),
box-shadow var(--dur) var(--ease);
}
.master:hover{border-color:var(--pg-accent)}
.master:focus-visible{outline:none;box-shadow:var(--ring)}
.master[aria-checked="true"]{border-color:var(--pg-accent);background:var(--gold-tint)}
.master::after{
content:'✓';position:absolute;top:8px;right:8px;width:22px;height:22px;
display:flex;align-items:center;justify-content:center;border-radius:50%;
background:var(--grad-gold);color:#332E42;font-size:13px;font-weight:700;line-height:1;
opacity:0;transform:scale(.5);
transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease);
}
.master[aria-checked="true"]::after{opacity:1;transform:scale(1)}
.master__photo{
width:72px;height:72px;border-radius:50%;object-fit:cover;
border:2px solid var(--pg-cardline);
transition:border-color var(--dur) var(--ease);
}
.master[aria-checked="true"] .master__photo{border-color:var(--pg-accent)}
.master__meta{display:flex;flex-direction:column;gap:3px;min-width:0}
.master__name{font-size:15px;font-weight:600;line-height:1.3}
.master__role{
font-size:11px;letter-spacing:.08em;text-transform:uppercase;
color:var(--pg-accent);font-weight:600;
}
@media (max-width:560px){
.masters{grid-template-columns:1fr}
.master{flex-direction:row;text-align:left;padding:12px 14px;gap:14px}
.master__photo{width:56px;height:56px;flex-shrink:0}
.master::after{top:50%;right:14px;transform:translateY(-50%) scale(.5)}
.master[aria-checked="true"]::after{transform:translateY(-50%) scale(1)}
}

.days{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 6px;scrollbar-width:thin}
.day{
display:flex;flex-direction:column;align-items:center;gap:2px;
padding:12px 18px;border-radius:var(--r-md);
border:1px solid var(--pg-chip-line);background:var(--pg-chip-bg);color:var(--pg-text);
cursor:pointer;font-family:inherit;flex-shrink:0;
transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),
color var(--dur) var(--ease),transform var(--dur) var(--ease);
}
.day:hover{border-color:var(--pg-accent)}
.day__dow{font-size:11px;letter-spacing:.06em;text-transform:uppercase;opacity:.75}
.day__date{font-size:17px;font-weight:600;white-space:nowrap}
.day[aria-pressed="true"]{
background:var(--grad-gold);color:#FFFFFF;border-color:transparent;
}
.day[aria-pressed="true"] .day__dow{opacity:.9}

.slots{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(92px,1fr))}
.slot{
padding:12px 0;border-radius:var(--r-pill);
border:1px solid var(--pg-chip-line);background:var(--pg-chip-bg);color:var(--pg-text);
font-size:16px;font-weight:500;cursor:pointer;font-family:inherit;text-align:center;
transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),
color var(--dur) var(--ease);
}
.slot:hover:not(:disabled){border-color:var(--pg-accent)}
.slot[aria-pressed="true"]{
background:var(--grad-gold);color:#FFFFFF;border-color:transparent;font-weight:600;
}
.slot:disabled{
opacity:.32;text-decoration:line-through;cursor:default;background:transparent;
}
.slots__empty{
grid-column:1/-1;color:var(--pg-soft);font-size:16px;padding:var(--sp-2) 0;
}

.field{display:flex;flex-direction:column;gap:6px;font-family:var(--font-body)}
.field__label{font-size:13px;font-weight:600;color:var(--pg-muted)}
.field__control{
height:48px;padding:0 16px;border:1px solid var(--pg-cardline);border-radius:var(--r-md);
background:var(--pg-bg2);font-family:var(--font-body);font-size:16px;color:var(--pg-text);
transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
width:100%;
}
.field__control::placeholder{color:var(--pg-soft);opacity:.7}
.field__control:hover{border-color:var(--gold-400)}
.field__control:focus{outline:none;border-color:var(--pg-accent);box-shadow:var(--ring)}
.field__hint{font-size:13px;color:var(--pg-soft);min-height:0}
.field--invalid .field__control{border-color:#D98A80}
.field--invalid .field__hint{color:#E3A49B}
[data-theme="light"] .field--invalid .field__control{border-color:#B3574D}
[data-theme="light"] .field--invalid .field__hint{color:#B3574D}

.select{position:relative;display:block}
.select select{
appearance:none;-webkit-appearance:none;padding-right:44px;cursor:pointer;
}
.select__chev{
position:absolute;right:14px;top:50%;transform:translateY(-50%);
pointer-events:none;color:var(--pg-soft);width:16px;height:16px;
stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;
}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4)}

.summary{
background:var(--pg-card);border:1px solid var(--pg-accent);border-radius:var(--r-md);
padding:var(--sp-4) var(--sp-5);font-size:17px;color:var(--pg-muted);
}
.summary b{font-weight:600;color:var(--pg-text)}
.booking__foot{font-size:15px;color:var(--pg-soft);text-align:center;margin:0}
.booking__foot--left{text-align:left}
.sent__text--sm{font-size:15px}

.sent{display:flex;flex-direction:column;align-items:center;text-align:center;gap:18px;padding:var(--sp-6) 0}
.sent__mark{
width:64px;height:64px;border-radius:50%;
background:var(--pg-success-bg);color:var(--pg-success-text);
display:flex;align-items:center;justify-content:center;font-size:30px;
}
.sent__title{font-family:var(--font-display);font-size:clamp(26px,4vw,34px)}
.sent__text{font-size:18px;color:var(--pg-muted);line-height:1.6;max-width:480px;margin:0}
.sent__points{
display:inline-flex;align-items:center;gap:10px;background:var(--grad-gold);
color:#FFFFFF;border-radius:var(--r-pill);padding:12px 24px;font-size:16px;font-weight:600;
}
.sent__actions{display:flex;gap:var(--sp-3);flex-wrap:wrap;justify-content:center}

/* ---------- contacts ---------- */
.contacts{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,48px)}
.contacts__col{display:flex;flex-direction:column;gap:18px}
.contacts__body{font-size:15px;line-height:1.75;color:var(--pg-muted);margin-top:var(--sp-2);font-style:normal}
.contacts__cta{margin:0}
.contacts__body a{font-weight:600}
.contacts__sub{font-family:var(--font-display);font-size:24px}
.hours{display:flex;flex-direction:column;gap:var(--sp-2);font-size:15px;max-width:400px}
.hours__row{display:flex;justify-content:space-between;gap:var(--sp-3)}
.hours__row dt{color:var(--pg-muted)}
.hours__row dd{margin:0;font-weight:600}
.hours__row--off dd{color:var(--pg-accent)}
.map{
border:0;width:100%;aspect-ratio:16/10;border-radius:var(--r-lg);
border:1px solid var(--pg-cardline);
}

/* ---------- footer ---------- */
.footer{background:var(--pg-footer);color:#B4A79A;padding:var(--sp-12) 0 var(--sp-10)}
.footer__inner{display:flex;flex-direction:column;align-items:center;gap:var(--sp-6);text-align:center}
.footer__logo{
display:block;width:210px;height:60px;
background:url("../img/logo-h-bright.svg") center / contain no-repeat;
}
.footer__meta{
display:flex;justify-content:center;align-items:center;gap:14px;
flex-wrap:wrap;font-size:15px;
}
.footer__meta a{color:#D9CFC4}
.footer__meta a:hover{color:var(--gold-300)}
.footer__meta .star{color:var(--gold-300)}
.footer__tag{
font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:rgba(180,167,154,.75);
}

/* ---------- tabbar (нижняя фикс-панель, мобильная) ---------- */
.tabbar{
position:fixed;left:0;right:0;bottom:0;z-index:70;display:none;
background:var(--pg-header);
backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
border-top:1px solid var(--pg-headerline);
/* нижний отступ не меньше 18px: на iPhone скруглённые углы экрана срезают
   края панели, поэтому подписи держим выше самого низа даже без safe-area */
padding:10px max(10px,env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));
}
.tabbar__item{
flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;
gap:4px;padding:6px 0 2px;min-width:0;
color:var(--pg-muted);font-size:11px;font-weight:600;letter-spacing:.01em;
}
.tabbar__item:hover{color:var(--pg-accent)}
.tabbar__item>svg{
width:23px;height:23px;stroke:currentColor;fill:none;stroke-width:1.7;
stroke-linecap:round;stroke-linejoin:round;
}
.tabbar__item--points{color:var(--pg-accent)}
.tabbar__item--points>svg{fill:var(--pg-accent);stroke:var(--pg-accent);stroke-width:1}
/* центральная кнопка записи — приподнятый золотой круг */
.tabbar__item--cta{color:var(--pg-accent)}
.tabbar__fab{
display:flex;align-items:center;justify-content:center;
width:46px;height:46px;margin-top:-22px;border-radius:50%;
background:var(--grad-gold);box-shadow:var(--shadow-raised);
border:2px solid var(--pg-bg);
}
.tabbar__fab svg{width:21px;height:21px;stroke:#332E42;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
@media (max-width:760px){
.tabbar{display:flex}
body{padding-bottom:calc(90px + env(safe-area-inset-bottom))}
}
/* десктоп: аккуратный плавающий док по центру */
@media (min-width:761px){
.tabbar{
display:flex;left:50%;right:auto;bottom:14px;transform:translateX(-50%);
width:min(460px,calc(100vw - 32px));
border:1px solid var(--pg-headerline);border-radius:var(--r-pill);
box-shadow:var(--shadow-raised);
padding:6px 14px;
}
body{padding-bottom:110px}
}

/* ---------- responsive ---------- */
@media (max-width:900px){
.contacts{grid-template-columns:1fr}
}
@media (max-width:1279px){
.header__phone{display:none}
}
@media (max-width:1000px){
.header__inner{height:72px}
body{padding-top:72px}
.logo__img{width:166px;height:48px}
.nav{
position:fixed;inset:72px 0 auto;flex-direction:column;gap:0;
background:var(--pg-bg2);border-bottom:1px solid var(--pg-headerline);
/* -100% минус высота шапки: нижний край меню гарантированно уходит за верх экрана
   независимо от высоты меню (у -120% нижние ~20px оставались видны поверх шапки) */
padding:var(--sp-2) 0;transform:translateY(calc(-100% - 72px));visibility:hidden;
transition:transform var(--dur-slow) var(--ease),visibility var(--dur-slow) var(--ease);
box-shadow:var(--shadow-raised);
}
.nav.is-open{transform:translateY(0);visibility:visible}
.nav a{padding:14px 24px;font-size:17px}
/* затемнение под меню — те же значения, что у .go-pop, чтобы читалось как один приём */
.nav-veil{
/* выше таббара (70), ниже шапки с самим меню (80) */
position:fixed;inset:0;z-index:75;
background:rgba(18,15,28,.62);
backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
opacity:0;visibility:hidden;
transition:opacity var(--dur-slow) var(--ease),visibility var(--dur-slow) var(--ease);
}
.nav-veil.is-open{opacity:1;visibility:visible}
.burger{
display:inline-flex;align-items:center;justify-content:center;
width:40px;height:40px;flex-shrink:0;border:1px solid var(--pg-cardline);border-radius:var(--r-pill);
background:transparent;color:var(--pg-text);cursor:pointer;
}
.burger svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round}
}
.addr-short{display:none}
@media (max-width:760px){
.grid-2{grid-template-columns:1fr}
.works__grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--sp-3)}
.header__addr{font-size:11px}
.addr-full{display:none}
.addr-short{display:block}
/* вход в кабинет на мобильном — в нижней панели, шапку не перегружаем */
.header__cab{display:none}
}
@media (max-width:480px){
.logo__img{width:138px;height:40px}
.header__inner{gap:var(--sp-3)}
}
@media (max-width:420px){
.works__grid{grid-template-columns:1fr 1fr}
.hero__cta{flex-direction:column;align-self:stretch}
.hero__cta .btn{width:100%}
}

@media (prefers-reduced-motion:reduce){
html{scroll-behavior:auto}
*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
.work:hover{transform:none}
.work:hover img{transform:none}
}

/* ---------- cabinet ---------- */
.cab{max-width:640px;padding-top:clamp(24px,4vw,48px);padding-bottom:clamp(32px,6vw,64px);
display:flex;flex-direction:column;gap:var(--sp-6);min-height:60vh}
.cab-loading{
display:flex;flex-direction:column;align-items:center;justify-content:center;
gap:var(--sp-4);padding:var(--sp-12) 0;color:var(--pg-soft);
}
.cab-star-pulse{
font-size:44px;color:var(--pg-accent);line-height:1;
animation:cab-pulse 1.6s ease-in-out infinite;
}
.cab-star-pulse--sm{font-size:30px}
@keyframes cab-pulse{
0%,100%{opacity:.45;transform:scale(.92)}
50%{opacity:1;transform:scale(1.08)}
}
.cab-screen{display:flex;flex-direction:column;gap:var(--sp-6)}
.cab-head{display:flex;flex-direction:column;gap:var(--sp-3);text-align:center}
.cab-title{font-size:clamp(28px,5vw,38px);line-height:1.15}
.cab-lead{font-size:17px;line-height:1.6;color:var(--pg-muted);margin:0}
.cab-note{font-size:14px;color:var(--pg-soft);text-align:center;margin:0}
.cab-form-err{min-height:18px;color:#E3A49B;margin:0}
[data-theme="light"] .cab-form-err{color:#B3574D}

.cab-tabs{
display:flex;gap:6px;padding:5px;border-radius:var(--r-pill);
background:var(--pg-card);border:1px solid var(--pg-cardline);
}
.cab-tab{
flex:1;height:42px;border:0;border-radius:var(--r-pill);cursor:pointer;
background:transparent;color:var(--pg-muted);
font-family:var(--font-body);font-size:15px;font-weight:600;
transition:background var(--dur) var(--ease),color var(--dur) var(--ease);
}
.cab-tab[aria-selected="true"]{background:var(--grad-gold);color:#332E42}

.cab-panel{
background:var(--pg-panel);border:1px solid var(--pg-cardline);border-radius:var(--r-lg);
padding:clamp(20px,4vw,32px);display:flex;flex-direction:column;gap:var(--sp-4);
}
.cab-birth{
display:flex;flex-direction:column;gap:var(--sp-4);
border:1px dashed var(--pg-cardline);border-radius:var(--r-md);
padding:var(--sp-4);
}
.cab-birth__note{margin:0;font-size:14px;color:var(--pg-accent);font-weight:600}
.cab-fieldset{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.cab-fieldset legend{padding:0;margin-bottom:6px}
.cab-radio{display:flex;align-items:center;gap:10px;font-size:15px;cursor:pointer}
.cab-radio input{accent-color:var(--pg-accent);width:18px;height:18px;margin:0;flex-shrink:0}
.cab-astro-note{margin-bottom:var(--sp-4);gap:var(--sp-3)}
.cab-astro-note p{margin:0;font-size:15px;color:var(--pg-muted)}
.cab-astro-note .star{color:var(--pg-accent)}
.cab-code{
text-align:center;font-size:28px;letter-spacing:.4em;font-weight:600;height:60px;
}
.cab-code-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center}

.cab-welcome{
display:flex;flex-direction:column;align-items:center;text-align:center;
gap:var(--sp-5);padding:var(--sp-8) 0;
}
.cab-welcome .cab-star-pulse{font-size:56px}
.cab-bonus{
margin:0;font-family:var(--font-display);font-size:clamp(44px,9vw,64px);line-height:1;
background:var(--grad-gold);-webkit-background-clip:text;background-clip:text;color:transparent;
}
.cab-bonus span{-webkit-text-fill-color:initial;color:var(--pg-accent)}

.cab-hello{text-align:center}
.cab-balance{
background:var(--pg-panel);border:1px solid var(--pg-accent);border-radius:var(--r-lg);
padding:var(--sp-6);text-align:center;display:flex;flex-direction:column;gap:4px;
}
.cab-balance__num{font-family:var(--font-display);font-size:clamp(40px,8vw,56px);line-height:1.1}
.cab-balance__num .star{color:var(--pg-accent)}
.cab-balance__cap{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--pg-soft);font-weight:600}
.cab-about{margin-top:var(--sp-3);text-align:left}
.cab-about summary{
cursor:pointer;color:var(--pg-accent);font-size:17px;font-weight:600;
list-style:none;text-align:center;text-decoration:underline;text-underline-offset:4px;
}
.cab-about summary::-webkit-details-marker{display:none}
.cab-about__body{padding-top:var(--sp-3);font-size:15px;color:var(--pg-muted);line-height:1.6}
/* «Моя натальна карта» — нарочно неброская: серая и мельче общей cab-about */
#natal-box summary{color:var(--pg-soft);font-size:13px;text-decoration:none}
#natal-box summary:hover{color:var(--pg-muted)}
.cab-about__body p{margin:0 0 10px}

.cab-sub{font-size:clamp(22px,4vw,28px)}
.cab-cards{display:flex;flex-direction:column;gap:var(--sp-4)}
.cab-card{
background:var(--pg-card);border:1px solid var(--pg-cardline);border-radius:var(--r-lg);
padding:var(--sp-5) var(--sp-5) var(--sp-5);display:flex;flex-direction:column;gap:12px;
}
.cab-card__top{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3)}
.cab-card__name{font-size:20px;font-weight:600;font-family:var(--font-body)}
.cab-card__price{
font-family:var(--font-display);font-size:22px;color:var(--pg-accent);white-space:nowrap;
}
.cab-card__text{margin:0;font-size:15px;color:var(--pg-muted);line-height:1.55}
.cab-card--soon{opacity:.62}
.cab-soon{
align-self:flex-start;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
font-weight:700;color:var(--pg-soft);border:1px solid var(--pg-cardline);
border-radius:var(--r-pill);padding:5px 14px;
}
.cab-card__confirm{display:flex;flex-direction:column;gap:12px}
.cab-lang{display:flex;gap:8px}
.cab-lang__opt{
flex:1;height:44px;border-radius:var(--r-pill);cursor:pointer;
border:1px solid var(--pg-chip-line);background:var(--pg-chip-bg);color:var(--pg-text);
font-family:var(--font-body);font-size:15px;font-weight:500;
}
.cab-lang__opt[aria-pressed="true"]{background:var(--grad-gold);color:#332E42;border-color:transparent;font-weight:600}
.cab-card__wait{
display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-2) 0;
}
.cab-card__wait p{margin:0;font-size:15px;line-height:1.5}
.cab-card__wait small{color:var(--pg-soft)}

.cab-list{display:flex;flex-direction:column;gap:8px}
.cab-row{
display:flex;align-items:center;gap:var(--sp-3);width:100%;text-align:left;
background:var(--pg-card);border:1px solid var(--pg-cardline);border-radius:var(--r-md);
padding:14px 16px;color:var(--pg-text);cursor:pointer;font-family:var(--font-body);font-size:15px;
transition:border-color var(--dur) var(--ease);
}
button.cab-row:hover{border-color:var(--pg-accent)}
.cab-row--static{cursor:default}
.cab-row--wait{cursor:default;opacity:.75}
.cab-row__name{flex:1;min-width:0;font-weight:500}
.cab-row__meta{color:var(--pg-soft);font-size:13px;white-space:nowrap}
.cab-row__delta{font-weight:700;white-space:nowrap;color:var(--pg-soft)}
.cab-row__delta.is-plus{color:var(--pg-success-text)}
.cab-foot{display:flex;justify-content:center;padding-top:var(--sp-4)}
.cab-back{align-self:flex-start}
.cab-view-top{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}
.cab-close{
width:44px;height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center;
background:transparent;border:1px solid var(--pg-cardline);border-radius:50%;
color:var(--pg-muted);cursor:pointer;
}
.cab-close:hover{color:var(--pg-text);border-color:var(--gold-400)}
.cab-close svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round}

.cab-reading{gap:var(--sp-3)}
.cab-reading__body{font-size:16.5px;line-height:1.75;color:var(--pg-text)}
.cab-reading__body h2{font-size:24px;margin:22px 0 8px}
.cab-reading__body h3{font-size:19px;margin:18px 0 6px;font-family:var(--font-body);font-weight:600;color:var(--pg-accent)}
.cab-reading__body p{margin:0 0 14px}
.cab-reading__body ul{margin:0 0 14px;padding-left:22px}
.cab-reading__body hr{border:0;border-top:1px solid var(--pg-cardline);margin:20px 0}
.field__optional{color:var(--pg-soft);font-weight:400}

/* маленькая крутящаяся 3D-звезда (баланс) — использует award-spin */
.star3d{display:inline-block;width:.8em;height:.8em;perspective:260px;vertical-align:-.05em}
.star3d svg{
display:block;width:100%;height:100%;
animation:award-spin 4.6s linear infinite;
filter:drop-shadow(0 0 10px rgba(238,187,132,.45));
}
@media (prefers-reduced-motion:reduce){.star3d svg{animation:none}}

/* маленькая ссылка «Історія балів» под блоком баланса */
.cab-history-link{
margin-top:var(--sp-2);background:none;border:0;cursor:pointer;align-self:center;
color:var(--pg-soft);font-size:13px;font-family:var(--font-body);
}
.cab-history-link:hover{color:var(--pg-accent)}

/* иконка внутри кнопки (выход и т.п.) */
.btn__ico{
width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;
stroke-linecap:round;stroke-linejoin:round;margin-right:8px;flex-shrink:0;
vertical-align:-4px;
}

/* блок контактов и баллов внутри мобильного бургер-меню */
.nav__extra{display:none}
@media (max-width:1000px){
.nav__extra{
display:block;padding:var(--sp-3) 24px var(--sp-4);
border-top:1px solid var(--pg-cardline);margin-top:var(--sp-2);
color:var(--pg-muted);font-size:15px;line-height:1.65;
}
.nav__extra p{margin:0 0 8px}
.nav .nav__extra a{padding:0;font-size:15px;display:inline;color:var(--pg-accent)}
}
.nav__close{display:none}
@media (max-width:1000px){
.nav__close{
display:flex;align-items:center;justify-content:center;gap:8px;
margin:4px 24px 18px;padding:12px;width:calc(100% - 48px);
background:transparent;border:1px solid var(--pg-cardline);border-radius:var(--r-pill);
color:var(--pg-muted);font-family:var(--font-body);font-size:15px;font-weight:600;cursor:pointer;
}
.nav__close:hover{color:var(--pg-text);border-color:var(--gold-400)}
.nav__close svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round}
}

/* гармошка вторичных секций на главной для авторизованных:
   компактные карточки одинаковой высоты, без огромных полос .section */
.section.acc{padding:10px 0;background:transparent}
/* воздух вокруг группы гармошек: без резкого стыка с записью сверху и футером снизу */
#roboty.acc{padding-top:clamp(44px,8vw,72px)}
#kontakty.acc{padding-bottom:clamp(44px,8vw,72px)}
.acc .acc__head{
display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);
width:100%;cursor:pointer;color:var(--pg-text);text-align:left;
background:var(--pg-panel);border:1px solid var(--pg-cardline);border-radius:var(--r-lg);
padding:18px 22px;
transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease);
}
.acc .acc__head:hover{border-color:var(--gold-400)}
.acc.is-open .acc__head{border-color:var(--pg-accent)}
.acc .acc__head .section__title{margin:0;font-size:clamp(21px,3.4vw,26px);line-height:1.2}
.acc__chev{
width:36px;height:36px;padding:7px;flex-shrink:0;
border:1px solid var(--pg-cardline);border-radius:50%;
stroke:var(--pg-accent);fill:none;stroke-width:1.8;
stroke-linecap:round;stroke-linejoin:round;
transition:transform var(--dur-slow) var(--ease),border-color var(--dur) var(--ease);
}
.acc.is-open .acc__chev{transform:rotate(180deg);border-color:var(--pg-accent)}
.acc__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease)}
.acc.is-open .acc__body{grid-template-rows:1fr}
.acc__inner{overflow:hidden;min-height:0;padding:var(--sp-6) 2px 0}
.acc .acc__inner .section__head{display:none}
#kontakty.acc .acc__inner .section__title,
#kontakty.acc .acc__inner .contacts__col>.rule{display:none}

/* ---------- прелоадер первой загрузки ---------- */
.preloader{
position:fixed;inset:0;z-index:150;
display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;
background:var(--pg-bg);
/* страховка: даже если JS не выполнится, экран сам уберётся и не запрёт контент */
animation:pre-failsafe 0s linear 8s forwards;
}
.preloader__stars{display:flex;gap:10px}
.preloader__stars span{
font-size:20px;line-height:1;color:var(--pg-accent);
opacity:.25;animation:pre-star 1.4s var(--ease) infinite;
}
.preloader__stars span:nth-child(2){animation-delay:.16s}
.preloader__stars span:nth-child(3){animation-delay:.32s}
.preloader__stars span:nth-child(4){animation-delay:.48s}
.preloader__stars span:nth-child(5){animation-delay:.64s}
/* отдельные файлы с ?v: картинки на CDN живут 180 дней, и безверсионный
   favicon-512.png отдавался из старого кэша */
.preloader__mark{
width:192px;height:192px;
background:url("../img/splash-night.png?v=1") center / contain no-repeat;
border-radius:44px;box-shadow:var(--shadow-raised);
}
[data-theme="light"] .preloader__mark{background-image:url("../img/splash-day.png?v=1")}
@media (max-width:400px){
.preloader__mark{width:160px;height:160px;border-radius:36px}
}
.preloader__bar{
width:min(190px,52vw);height:2px;border-radius:2px;overflow:hidden;
background:var(--pg-cardline);
}
.preloader__bar i{
display:block;width:40%;height:100%;border-radius:2px;background:var(--grad-gold);
animation:pre-bar 1.15s var(--ease) infinite;
}
.preloader.is-done{
opacity:0;pointer-events:none;
transition:opacity var(--dur-slow) var(--ease);
}
@keyframes pre-star{0%,100%{opacity:.25;transform:translateY(0)}45%{opacity:1;transform:translateY(-4px)}}
@keyframes pre-bar{0%{transform:translateX(-110%)}100%{transform:translateX(360%)}}
@keyframes pre-failsafe{to{opacity:0;visibility:hidden;pointer-events:none}}
@media (prefers-reduced-motion:reduce){
.preloader__stars span,.preloader__bar i{animation:none}
.preloader__stars span{opacity:.8}
}

/* тонкая полоса прогресса для запросов к /api/ — видно, что приложение «думает» */
.netbar{
position:fixed;top:0;left:0;right:0;height:2px;z-index:190;
background:transparent;pointer-events:none;
opacity:0;transition:opacity var(--dur) var(--ease);
}
.netbar.is-on{opacity:1}
.netbar i{
display:block;width:35%;height:100%;background:var(--grad-gold);
animation:pre-bar 1.05s var(--ease) infinite;
}
@media (prefers-reduced-motion:reduce){.netbar i{animation:none;width:100%;opacity:.7}}

/* попап подтверждения внешних действий (звонок / Instagram / маршрут) */
.go-pop{
position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;
padding:20px;background:rgba(18,15,28,.62);
backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
}
.go-pop__card{
position:relative;width:min(440px,100%);
background:var(--pg-bg2);border:1px solid var(--pg-cardline);border-radius:var(--r-lg);
box-shadow:var(--shadow-raised);
padding:28px 24px 22px;display:flex;flex-direction:column;gap:var(--sp-4);
animation:go-pop-in .22s var(--ease);
}
@keyframes go-pop-in{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.go-pop__x{
position:absolute;top:12px;right:12px;width:44px;height:44px;
display:flex;align-items:center;justify-content:center;
background:transparent;border:1px solid var(--pg-cardline);border-radius:50%;
color:var(--pg-muted);cursor:pointer;
}
.go-pop__x:hover{color:var(--pg-text);border-color:var(--gold-400)}
.go-pop__x svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round}
.go-pop__title{font-family:var(--font-display);font-size:24px;line-height:1.25;margin:0;padding-right:44px}
.go-pop__text{margin:0;font-size:15px;line-height:1.6;color:var(--pg-muted)}
.go-pop__hint{margin:0;font-size:13px;color:var(--pg-soft)}

/* ---------- попап «Що таке зоряні бали?» — покрокова інструкція ---------- */
.cab-about-link{
margin-top:var(--sp-3);align-self:center;
background:none;border:0;padding:0;cursor:pointer;
color:var(--pg-accent);font-family:var(--font-body);font-size:17px;font-weight:600;
text-decoration:underline;text-underline-offset:4px;
}
.cab-about-link:hover{color:var(--pg-link-h)}
.pts-pop__card{width:min(420px,100%);text-align:center;align-items:center;padding-top:24px}
.pts-pop__count{
margin:0;font-size:12px;letter-spacing:.14em;font-weight:700;
text-transform:uppercase;color:var(--pg-soft);
}
.pts-pop__view{width:100%;min-height:236px;display:flex;align-items:flex-start;justify-content:center}
.pts-step{display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);width:100%}
.pts-step.is-in{animation:pts-in var(--dur-slow) var(--ease)}
@keyframes pts-in{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
.pts-step.is-in--back{animation-name:pts-in-back}
@keyframes pts-in-back{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:none}}
.pts-step__badge{
width:86px;height:86px;border-radius:50%;flex-shrink:0;
display:flex;align-items:center;justify-content:center;
background:var(--grad-gold);color:#332E42;
font-family:var(--font-display);font-size:26px;line-height:1;
box-shadow:0 10px 30px rgba(238,187,132,.32),inset 0 1px 0 rgba(255,255,255,.45);
}
.pts-step__badge--star{font-size:44px;padding-bottom:6px}
.pts-step__title{font-family:var(--font-display);font-size:24px;line-height:1.25;margin:0}
.pts-step__text{margin:0;font-size:15px;line-height:1.65;color:var(--pg-muted)}
.pts-step__text b{color:var(--pg-accent)}
.pts-pop__dots{display:flex;gap:9px;justify-content:center}
.pts-pop__dot{
width:10px;height:10px;border-radius:50%;padding:0;cursor:pointer;
border:1px solid var(--pg-accent);background:transparent;
transition:background var(--dur) var(--ease),transform var(--dur) var(--ease);
}
.pts-pop__dot.is-on{background:var(--pg-accent);transform:scale(1.25)}
.pts-pop__nav{display:flex;gap:10px;width:100%}
.pts-pop__nav .btn{flex:1}
@media (prefers-reduced-motion:reduce){
.pts-step.is-in{animation:none}
}

.gold{color:var(--pg-accent);font-weight:600}

/* блок особенностей салона (для неавторизованных) */
.feats{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4)}
.feat{
background:var(--pg-panel);border:1px solid var(--pg-cardline);border-radius:var(--r-lg);
padding:24px 22px;display:flex;flex-direction:column;gap:10px;
}
.feat__ico{font-size:22px;color:var(--pg-accent);line-height:1}
.feat h3{margin:0;font-size:17px;font-family:var(--font-body);font-weight:600}
.feat p{margin:0;font-size:15px;line-height:1.65;color:var(--pg-muted)}
@media (max-width:860px){.feats{grid-template-columns:1fr}}

/* ---------- начисление баллов: 3D-звезда + искры ---------- */
.award{
position:relative;width:220px;height:220px;margin:0 auto;
perspective:700px;
}
.award__star3d{
position:absolute;inset:30px;
transform-style:preserve-3d;
animation:award-spin 3.4s linear infinite;
filter:drop-shadow(0 0 26px rgba(238,187,132,.55)) drop-shadow(0 10px 30px rgba(0,0,0,.35));
}
.award__face{width:100%;height:100%;backface-visibility:visible}
/* без наклона по Z: постоянный -6deg читался как «звезда кривая» */
@keyframes award-spin{
0%{transform:rotateY(0deg)}
100%{transform:rotateY(360deg)}
}
.award__spark{
position:absolute;color:var(--pg-accent);pointer-events:none;line-height:1;
animation:award-twinkle 2.6s ease-in-out infinite;
opacity:0;
}
.award__spark:nth-child(1){top:6%;left:14%;font-size:15px;animation-delay:.1s}
.award__spark:nth-child(2){top:14%;right:8%;font-size:11px;animation-delay:.7s}
.award__spark:nth-child(3){top:44%;left:-2%;font-size:13px;animation-delay:1.2s}
.award__spark:nth-child(4){bottom:12%;right:4%;font-size:16px;animation-delay:.4s}
.award__spark:nth-child(5){bottom:2%;left:22%;font-size:11px;animation-delay:1.7s}
.award__spark:nth-child(6){top:2%;right:32%;font-size:13px;animation-delay:2.1s}
.award__spark:nth-child(7){top:58%;right:-4%;font-size:12px;animation-delay:1s}
.award__spark:nth-child(8){bottom:30%;left:4%;font-size:15px;animation-delay:2.4s}
@keyframes award-twinkle{
0%,100%{opacity:0;transform:scale(.5) rotate(0deg)}
50%{opacity:1;transform:scale(1.15) rotate(24deg)}
}
@media (prefers-reduced-motion:reduce){
.award__star3d{animation:none}
.award__spark{animation:none;opacity:.7}
}

/* золотые заголовки в тексте прогноза */
.cab-reading__body h2{color:var(--pg-accent)}

/* ---------- профиль и натальная карта ---------- */
.cab-profile{gap:var(--sp-4)}
.cab-profile__rows{display:flex;flex-direction:column;gap:8px}
.cab-profile__row{display:flex;gap:var(--sp-3);font-size:15px;align-items:baseline}
.cab-profile__key{color:var(--pg-soft);width:110px;flex-shrink:0;font-size:13px}
.cab-profile__val{font-weight:500;min-width:0;overflow-wrap:anywhere}
.cab-profile__phone{margin:0;font-size:17px;font-weight:600;color:var(--pg-accent)}
.natal-table{width:100%;border-collapse:collapse;font-size:14px;margin-top:4px}
.natal-table th{
text-align:left;font-weight:600;color:var(--pg-soft);font-size:12px;
letter-spacing:.05em;text-transform:uppercase;padding:4px 8px 6px 0;
border-bottom:1px solid var(--pg-cardline);
}
.natal-table td{padding:6px 8px 6px 0;border-bottom:1px solid var(--pg-cardline);color:var(--pg-text)}
.natal-table td:nth-child(2){color:var(--pg-accent);font-weight:500}
.natal-table td:last-child{color:var(--pg-soft);font-size:12px}
.natal-foot{font-size:13px;color:var(--pg-soft);margin:10px 0 0}
.field__control--area{height:auto;min-height:84px;padding:12px 16px;resize:vertical;line-height:1.5}
.cab-question{
margin:0;font-size:16px;font-style:italic;color:var(--pg-muted);
border-left:3px solid var(--pg-accent);padding-left:14px;
}
.cab-card .cab-soon[data-lock]{align-self:flex-start}

/* date/time-инпуты имеют внутреннюю min-width и вылезают из карточек — прижимаем */
.field{min-width:0}
.field__control{min-width:0;max-width:100%}
input[type="date"].field__control,
input[type="time"].field__control{
-webkit-appearance:none;appearance:none;
width:100%;box-sizing:border-box;
}
.cab-card__confirm{min-width:0}
.cab-card{min-width:0;overflow:hidden}

/* ---------- горизонтальный прогресс генерации ---------- */
.cab-card__wait{flex-direction:column;align-items:stretch;gap:12px}
.cab-card__wait-row{display:flex;align-items:center;gap:var(--sp-4)}
.cab-progress{
height:6px;border-radius:var(--r-pill);overflow:hidden;
background:var(--pg-chip-bg);border:1px solid var(--pg-cardline);
}
.cab-progress__fill{
height:100%;width:0%;border-radius:var(--r-pill);
background:var(--grad-gold);
transition:width .45s ease;
box-shadow:0 0 10px rgba(238,187,132,.45);
}

/* ---------- расширенная натальная карта в профиле ---------- */
.natal-sub{
font-size:12px;font-weight:700;color:var(--pg-accent);
letter-spacing:.08em;text-transform:uppercase;margin:16px 0 4px;
}
.natal-lines{font-size:13.5px;line-height:1.6;color:var(--pg-muted);margin:0;overflow-wrap:anywhere}

/* плотнее заголовки внутри текста прогноза */
.cab-reading__body h2{font-size:22px;line-height:1.22;margin:20px 0 6px}
.cab-reading__body h3{line-height:1.25;margin:14px 0 4px}
.cab-reading__body h2+p,.cab-reading__body h3+p{margin-top:0}

/* ---------- уровень совместимости: шкала со звездой ---------- */
.compat-score{
text-align:center;border:1px solid var(--pg-cardline);border-radius:var(--r-lg);
padding:var(--sp-5) var(--sp-5) var(--sp-6);background:var(--pg-card);
display:flex;flex-direction:column;gap:6px;
}
.compat-score__label{
margin:0;font-size:12px;font-weight:700;letter-spacing:.12em;
text-transform:uppercase;color:var(--pg-soft);
}
.compat-score__num{
margin:0;font-family:var(--font-display);font-size:clamp(40px,9vw,56px);line-height:1.05;
background:var(--grad-gold);-webkit-background-clip:text;background-clip:text;color:transparent;
}
.compat-score__max{font-size:.45em;color:var(--pg-soft);-webkit-text-fill-color:var(--pg-soft)}
.compat-score__track{
position:relative;height:10px;border-radius:var(--r-pill);margin:14px 8px 4px;
background:var(--pg-chip-bg);border:1px solid var(--pg-cardline);
}
.compat-score__fill{
height:100%;width:0%;border-radius:var(--r-pill);background:var(--grad-gold);
transition:width 1.2s cubic-bezier(.22,.8,.35,1);
}
.compat-score__star{
position:absolute;top:-10px;left:0%;transform:translateX(-50%);
width:28px;height:28px;display:flex;align-items:center;justify-content:center;
font-size:26px;line-height:1;color:var(--pg-accent);
transition:left 1.2s cubic-bezier(.22,.8,.35,1);
text-shadow:0 0 10px rgba(238,187,132,.6);
}
.compat-score__verdict{margin:6px 0 0;font-size:15px;font-weight:600;color:var(--pg-accent)}
/* яркость по уровню */
.compat-score.is-high .compat-score__star{
text-shadow:0 0 14px rgba(238,187,132,.95),0 0 30px rgba(238,187,132,.55);
animation:cab-pulse 1.8s ease-in-out infinite;
}
.compat-score.is-mid .compat-score__star{text-shadow:0 0 9px rgba(238,187,132,.5)}
.compat-score.is-low .compat-score__num{background:none;-webkit-text-fill-color:var(--pg-soft);color:var(--pg-soft)}
.compat-score.is-low .compat-score__star{color:var(--pg-soft);text-shadow:none}
.compat-score.is-low .compat-score__fill{background:var(--pg-soft);opacity:.55}
.compat-score.is-low .compat-score__verdict{color:var(--pg-soft)}
