/* Окно записи. Направление «Журнал записи»: холодная бумага, чернила, один зелёный «свободно». */
:root{
  --bg:oklch(0.966 0.007 185);
  --bg2:oklch(0.935 0.010 185);
  --paper:oklch(0.984 0.004 185);
  --ink:oklch(0.21 0.018 200);
  --ink2:oklch(0.41 0.018 200);
  --ink3:oklch(0.53 0.015 200);
  --line:oklch(0.86 0.012 190);
  --taken:oklch(0.74 0.014 190);
  --off:oklch(0.905 0.010 190);
  --free:oklch(0.56 0.15 152);
  --free-ink:oklch(0.40 0.12 152);
  --free-bg:oklch(0.93 0.05 152);
  --free-night:oklch(0.72 0.17 152);
  --night:oklch(0.205 0.026 170);
  --night-line:oklch(0.36 0.03 170);
  --night-text:oklch(0.88 0.012 170);
  --night-dim:oklch(0.72 0.014 170);
  --err:oklch(0.52 0.17 28);
  --err-bg:oklch(0.95 0.03 28);
  --display:"Geologica",system-ui,sans-serif;
  --text:"Golos Text",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --ease:cubic-bezier(.2,.7,.2,1);
}
*,*::before,*::after{box-sizing:border-box}
*{margin:0}
html{scroll-behavior:smooth;scroll-padding-top:76px;-webkit-text-size-adjust:100%}
::selection{background:var(--free-bg);color:var(--ink)}
body{background:var(--bg);color:var(--ink);font:400 17px/1.6 var(--text);-webkit-font-smoothing:antialiased;overflow-x:clip}
a{color:inherit;text-underline-offset:.22em;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:3px solid var(--free);outline-offset:3px}
img,svg{display:block;max-width:100%}
.nw{white-space:nowrap}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.wrap{max-width:1240px;margin:0 auto;padding:0 24px}
.wrap-t{max-width:900px;margin:0 auto;padding:0 24px}
.skip{position:absolute;left:12px;top:-60px;background:var(--ink);color:var(--bg);padding:10px 14px;z-index:20;text-decoration:none}
.skip:focus{top:12px}

/* шапка */
.top{position:sticky;top:0;z-index:10;background:oklch(0.966 0.007 185 / .94);backdrop-filter:blur(6px);border-bottom:1px solid transparent;transition:border-color .2s}
.top.scrolled{border-bottom-color:var(--line)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;height:64px}
.logo{display:flex;gap:10px;align-items:center;font:800 19px/1 var(--display);letter-spacing:-.015em;text-decoration:none}
.logo i{width:18px;height:18px;border:2px solid var(--ink);display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;flex:none}
.logo i::after{content:"";background:var(--free);grid-column:2;grid-row:2}
.nav{display:flex;align-items:center;gap:28px;font:500 15px/1 var(--text)}
.nav a{text-decoration:none;color:var(--ink2)}
.nav a:hover{color:var(--ink)}
.nav .btn-s{color:var(--bg)}
.btn-s{background:var(--ink);color:var(--bg);padding:11px 16px;text-decoration:none;font:600 15px/1 var(--text)}
.btn-s:hover{background:oklch(0.32 0.03 200)}

/* герой: под ним бледная сетка расписания, тает к низу */
.hero-fon{position:relative;isolation:isolate}
.hero-fon::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:linear-gradient(to right,oklch(0.87 0.012 190 / .5) 1px,transparent 1px),linear-gradient(to bottom,oklch(0.87 0.012 190 / .5) 1px,transparent 1px);background-size:64px 64px;background-position:center top;-webkit-mask-image:linear-gradient(to bottom,#000 0%,rgba(0,0,0,.6) 50%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,rgba(0,0,0,.6) 50%,transparent 100%)}
.hero{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:64px;align-items:center;padding:56px 24px 88px;max-width:1240px;margin:0 auto}
h1{font:900 clamp(40px,6.2vw,86px)/.96 var(--display);letter-spacing:-.028em;max-width:12ch;text-wrap:balance}
h1 em{font-style:normal;color:var(--free);white-space:nowrap}
.lead{margin-top:28px;max-width:52ch;font-size:19px;line-height:1.55;color:var(--ink2)}
.pay{margin-top:24px;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline;font:500 16px/1.4 var(--text)}
.pay b{font:600 12.5px/1 var(--mono);letter-spacing:.06em;background:var(--free-bg);color:var(--free-ink);padding:7px 9px;white-space:nowrap}
.cta{margin-top:34px;display:flex;gap:16px 28px;align-items:center;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:var(--ink);color:var(--bg);padding:19px 28px;font:600 17px/1 var(--text);text-decoration:none;border:0;border-radius:0;cursor:pointer;transition:background-color .15s}
.btn:hover{background:oklch(0.32 0.03 200)}
.btn[disabled]{cursor:progress;background:var(--ink2)}
.link{font-weight:600}

/* календарь */
.cal{border:1.5px solid var(--ink);background:var(--paper);padding:20px 20px 16px;min-width:0}
.cal-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font:600 12.5px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.cal-h span:last-child{color:var(--ink2);text-align:right}
.cal-sub{font:500 13px/1.4 var(--mono);color:var(--ink2);margin:6px 0 16px}
.grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.grid>span{position:relative;aspect-ratio:1/1;min-width:0;padding:5px 6px;font:500 12px/1 var(--mono);font-variant-numeric:tabular-nums;color:var(--ink3);border:1px solid var(--line);overflow:hidden}
.grid>.w{aspect-ratio:auto;border:0;padding:0 0 6px 2px;color:var(--ink2);font-weight:600;text-transform:lowercase}
.grid>.off{background:var(--off);border-color:var(--off);color:var(--ink2)}
.grid>.x::after{content:"";position:absolute;left:38%;width:46%;top:82%;height:1.5px;background:var(--taken);transform:rotate(-45deg) scaleX(1);transform-origin:left center}
.grid>.free{background:var(--free);border-color:var(--free);color:#fff;display:flex;flex-direction:column;justify-content:space-between;font-weight:600}
.grid>.free b{font:600 11px/1 var(--mono);letter-spacing:-.02em}
.cal-f{margin-top:14px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;font:400 12px/1.4 var(--mono);color:var(--ink2)}
.legend{display:flex;gap:14px;flex-wrap:wrap}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:10px;height:10px;border:1px solid var(--line);display:inline-block}
.legend i:not([class]){background:linear-gradient(to top right,transparent calc(50% - .8px),var(--taken) calc(50% - .8px),var(--taken) calc(50% + .8px),transparent calc(50% + .8px))}
.legend .li-off{background:var(--off);border-color:var(--off)}
.legend .li-free{background:var(--free);border-color:var(--free)}
.cal-found{color:var(--free-ink);font-weight:600}

/* анимация календаря: дни зачёркиваются по очереди, потом зажигается свободная клетка */
@media (prefers-reduced-motion:no-preference){
  .grid>.x::after{transform:rotate(-45deg) scaleX(0);animation:strike .28s var(--ease) forwards;animation-delay:calc(var(--i,0) * 32ms + 250ms)}
  .grid>.free{animation:light .5s var(--ease) both;animation-delay:1.05s}
  .grid>.free b{animation:fadein .3s ease both;animation-delay:1.35s}
  /* календарь ниже первого экрана (телефон): ждём, пока его увидят */
  .cal.anim:not(.go) .grid>.x::after{animation:none}
  .cal.anim:not(.go) .grid>.free{animation:none;background:var(--paper);border-color:var(--line);color:var(--ink3)}
  .cal.anim:not(.go) .grid>.free b{animation:none;opacity:0}
}
@keyframes strike{to{transform:rotate(-45deg) scaleX(1)}}
@keyframes light{from{background:var(--paper);border-color:var(--line);color:var(--ink3)}to{background:var(--free);border-color:var(--free);color:#fff}}
@keyframes fadein{from{opacity:0}to{opacity:1}}

/* ночь: доказательство */
.night{background:var(--night);color:var(--night-text);padding:128px 0 120px}
.night .wrap{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:64px;align-items:end}
.big{font:900 clamp(112px,19vw,272px)/.8 var(--display);letter-spacing:-.06em;color:var(--free-night);font-variant-numeric:tabular-nums}
.big span{font-size:.36em;font-weight:700;letter-spacing:-.01em;margin:0 .14em;color:var(--night-text)}
.night .np{max-width:40ch;font-size:20px;line-height:1.5;margin-top:28px}
.src{font:400 14px/1.5 var(--text);color:var(--night-dim);margin-top:16px}
.log-h{font:600 12.5px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--night-dim);margin-bottom:14px}
.log{list-style:none;padding:0;margin-right:min(-24px,calc((1240px - 100vw) / 2 - 24px));border-top:1px solid var(--night-line);font:400 15px/1.45 var(--mono);font-variant-numeric:tabular-nums}
.log li{display:grid;grid-template-columns:8.5em minmax(0,1fr);gap:14px;padding:13px 0;border-bottom:1px solid var(--night-line)}
.log time{color:var(--night-dim)}
.log b{color:var(--free-night);font-weight:600}
.log-note{font:400 14px/1.5 var(--text);color:var(--night-dim);margin-top:16px;max-width:46ch}

/* общие заголовки секций */
.sec-n{font:600 12.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink2)}
h2{font:800 clamp(32px,4.4vw,56px)/1 var(--display);letter-spacing:-.035em;margin-top:14px;max-width:17ch;text-wrap:balance}
.sec-lead{margin-top:18px;max-width:60ch;color:var(--ink2);font-size:18px}

/* цены ведомостью */
.prices{padding:112px 0 48px}
.rows{margin-top:48px;border-top:2px solid var(--ink)}
.row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1.45fr) minmax(0,.95fr);gap:36px;padding:34px 0;border-bottom:1px solid var(--line)}
.row h3{font:800 27px/1.05 var(--display);letter-spacing:-.025em;text-wrap:balance}
.where{font:500 12.5px/1.45 var(--mono);color:var(--ink2);margin-top:10px;text-transform:uppercase;letter-spacing:.06em}
.row p{color:var(--ink2);max-width:52ch}
.row p+p{margin-top:10px}
.row .go{display:inline-block;margin-top:4px;padding:10px 0;font-weight:600;color:var(--ink)}
.price{font:600 30px/1.05 var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.price small{display:block;font:500 14.5px/1.45 var(--text);color:var(--ink2);margin-top:8px;letter-spacing:0}
.price .p2{display:block;margin-top:18px;padding-top:14px;border-top:1px dashed var(--line);font-size:21px}
.price .ask{font:inherit;letter-spacing:inherit;word-spacing:-.35em}
.aside-note{margin-top:28px;max-width:70ch;color:var(--ink2);font-size:16px}

/* шаги */
.steps{padding:96px 0 104px}
.steps .wrap{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:64px;align-items:start}
.steps .side{position:sticky;top:96px}
.steps ol{list-style:none;padding:0;margin-top:6px;display:grid;gap:0}
.steps li{display:grid;grid-template-columns:84px minmax(0,1fr);gap:24px;padding:28px 0;border-top:1px solid var(--line)}
.steps li:last-child{border-bottom:1px solid var(--line)}
.steps .n{font:900 64px/.85 var(--display);letter-spacing:-.05em;color:var(--taken);font-variant-numeric:tabular-nums}
.steps li.catch .n{color:var(--free)}
.steps h3{font:700 22px/1.2 var(--display);letter-spacing:-.015em}
.steps p{margin-top:8px;color:var(--ink2);max-width:60ch}

/* чего не обещаем */
.nope{background:var(--bg2);padding:72px 0 80px}
.nope ul{list-style:none;padding:0;margin-top:40px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 32px;border-top:2px solid var(--ink)}
.nope li{padding:26px 0 0}
.nope .x{display:block;font:800 clamp(28px,2.75vw,36px)/1.04 var(--display);letter-spacing:-.03em;color:var(--ink2);text-decoration:line-through;text-decoration-thickness:.065em;text-decoration-color:var(--ink);text-wrap:balance}
.nope p{margin-top:16px;color:var(--ink2);font-size:15px;line-height:1.5;max-width:34ch}

/* вопросы */
.faq{padding:112px 0 96px}
.faq .wrap-t{max-width:1240px}
.qs{max-width:900px}
.qs{margin-top:40px;border-top:2px solid var(--ink)}
.qs details{border-bottom:1px solid var(--line)}
.qs summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:minmax(0,1fr) 28px;gap:16px;align-items:start;padding:22px 0}
.qs summary::-webkit-details-marker{display:none}
.qs summary h3{font:600 19px/1.35 var(--text);letter-spacing:-.005em}
.qs summary::after{content:"";width:16px;height:16px;margin-top:5px;justify-self:end;background:linear-gradient(var(--ink),var(--ink)) center/16px 2px no-repeat,linear-gradient(var(--ink),var(--ink)) center/2px 16px no-repeat;transition:transform .2s var(--ease)}
.qs details[open] summary::after{transform:rotate(45deg)}
.qs .a{padding:0 44px 24px 0;color:var(--ink2);max-width:68ch}
.qs .a p+p{margin-top:10px}

/* форма */
.form{background:var(--bg2);padding:136px 0 120px;border-top:1px solid var(--line)}
.form .wrap{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:64px;align-items:start}
.form-side{position:sticky;top:96px}
.form-side p{margin-top:18px;color:var(--ink2);max-width:40ch}
.f-hint{font:400 14px/1.45 var(--text);color:var(--ink2)}
form{display:grid;gap:22px}
.f{display:grid;gap:8px}
.f>label,.f legend{font:600 15px/1.3 var(--text)}
.f legend{padding:0;margin-bottom:8px}
fieldset{border:0;padding:0;min-width:0}
input[type=text],input[type=tel],textarea{font:400 17px/1.4 var(--text);padding:15px 14px;border:1.5px solid var(--ink);background:var(--paper);color:var(--ink);border-radius:0;width:100%;-webkit-appearance:none;appearance:none}
textarea{min-height:112px;resize:vertical}
input::placeholder,textarea::placeholder{color:var(--ink3)}
input:focus-visible,textarea:focus-visible{outline:3px solid var(--free);outline-offset:0;border-color:var(--ink)}
.radios{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.radios label{display:grid;grid-template-columns:20px minmax(0,1fr);gap:12px;align-items:start;border:1.5px solid var(--line);padding:14px 14px;font:500 15.5px/1.35 var(--text);background:var(--paper);cursor:pointer;transition:border-color .15s}
.radios label:hover{border-color:var(--ink2)}
.radios input{width:18px;height:18px;margin:1px 0 0;accent-color:var(--free)}
.radios label:has(input:checked){border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.radios small{display:block;font:400 13px/1.35 var(--text);color:var(--ink2);margin-top:3px}
.ok{display:grid;grid-template-columns:20px minmax(0,1fr);gap:12px;align-items:start;font:400 15px/1.45 var(--text);color:var(--ink2);cursor:pointer}
.ok input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--free)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.err{display:none;font:500 14px/1.4 var(--text);color:var(--err)}
.bad .err{display:block}
.bad input[type=text],.bad textarea{border-color:var(--err);background:var(--err-bg)}
.bad .radios label{border-color:var(--err)}
.bad input:focus-visible,.bad textarea:focus-visible{outline-color:var(--err)}
.send{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.send .note{font:400 13.5px/1.45 var(--text);color:var(--ink2);max-width:34ch}
.form-msg{display:none;padding:14px 16px;font:500 15px/1.45 var(--text);border:1.5px solid var(--err);background:var(--err-bg);color:var(--ink)}
.form-msg.on{display:block}
.done{display:none;border:1.5px solid var(--ink);background:var(--paper);padding:30px 28px}
.done.on{display:block}
.done .tick{display:inline-flex;align-items:center;gap:10px;font:600 12.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--free-ink)}
.done .tick i{width:14px;height:14px;background:var(--free)}
.done h3{font:800 30px/1.08 var(--display);letter-spacing:-.03em;margin-top:16px}
.done p{margin-top:12px;color:var(--ink2);max-width:46ch}
.spin{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:none}
.sending .spin{display:inline-block;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.tg{display:inline-flex}
.tg[hidden]{display:none}

/* подвал */
.foot{padding:48px 0 56px;font-size:15px;color:var(--ink2)}
.foot .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px 40px;align-items:start}
.foot .logo{color:var(--ink)}
.foot p{margin-top:12px;max-width:62ch}
.foot nav{display:flex;flex-direction:column;gap:10px;text-align:right}

/* простые страницы: политика, 404 */
.doc{padding:56px 0 96px}
.doc h1{font-size:clamp(26px,7.2vw,56px);max-width:18ch;overflow-wrap:break-word}
.doc h2{font-size:24px;margin-top:40px;max-width:none;letter-spacing:-.02em}
.doc p,.doc li{margin-top:12px;max-width:68ch;color:var(--ink2)}
.doc ul{padding-left:1.2em}
.doc .stub{background:var(--err-bg);color:var(--err);font-family:var(--mono);font-size:.9em;padding:1px 5px}

@media (max-width:1020px){
  .row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .row .price{grid-column:2}
  .row>div:first-child{grid-row:span 2}
}
@media (max-width:860px){
  .wrap,.wrap-t{padding:0 16px}
  .top .wrap{height:58px}
  .nav a:not(.btn-s){display:none}
  .hero{grid-template-columns:minmax(0,1fr);gap:40px;padding:28px 16px 64px}
  .lead{font-size:17.5px;margin-top:22px}
  .cta{margin-top:28px}
  .btn{width:100%}
  .cta .link{width:100%;text-align:center}
  .cal{padding:16px 14px 14px}
  .grid{gap:3px}
  .grid>span{padding:4px;font-size:11px}
  .grid>.free b{font-size:9.5px}
  .night{padding:80px 0 76px}
  .night .wrap{grid-template-columns:minmax(0,1fr);gap:48px}
  .night .np{font-size:18px}
  .log{font-size:13.5px}
  .log li{grid-template-columns:minmax(0,1fr);gap:4px;padding-right:16px}
  .log{margin-right:-16px}
  .prices{padding:80px 0 32px}
  .rows{margin-top:32px}
  .row{grid-template-columns:minmax(0,1fr);gap:14px;padding:28px 0}
  .row .price{grid-column:auto;order:1}
  .row>div:nth-child(2){order:2}
  .row>div:first-child{grid-row:auto}
  .row h3{font-size:25px}
  .price{font-size:27px}
  .steps{padding:48px 0 72px}
  .steps .wrap{grid-template-columns:minmax(0,1fr);gap:28px}
  .steps .side,.form-side{position:static}
  .steps li{grid-template-columns:56px minmax(0,1fr);gap:16px;padding:22px 0}
  .steps .n{font-size:40px}
  .nope{padding:56px 0 60px}
  .nope ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;margin-top:28px}
  .nope li{padding:20px 0 6px}
  .nope .x{font-size:24px}
  .nope p{font-size:14px;margin-top:10px}
  .faq{padding:80px 0 40px}
  .qs summary h3{font-size:17.5px}
  .qs .a{padding-right:0}
  .form{padding:64px 0 80px}
  .form .wrap{grid-template-columns:minmax(0,1fr);gap:32px}
  .radios{grid-template-columns:minmax(0,1fr)}
  .send .btn{width:100%}
  .foot .wrap{grid-template-columns:minmax(0,1fr)}
  .foot nav{text-align:left}
}
@media (max-width:600px){
  .nope ul{grid-template-columns:minmax(0,1fr)}
  .nope li{padding:20px 0 4px}
  .nope li+li{border-top:1px solid var(--line);margin-top:16px}
  .nope .x{font-size:26px}
  .nope p{font-size:15px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}
