/* «Как пользоваться приложением»: тёмная сцена с 3D-телефоном, каталог функций, уроки.
   Файл подключается только на этой странице (ctx.page(css=[…])), в общий site.css не входит. */
.s-howto{--ch:66vh;--ch:66svh;--st:28vh;--st:28svh}
.g-w{position:relative;isolation:isolate;background:#08262E;color:#fff}
.g-stage{position:sticky;top:0;z-index:0;height:100vh;height:100svh;margin-bottom:-100vh;margin-bottom:-100svh;overflow:hidden;pointer-events:none;background:radial-gradient(130% 90% at 72% 22%,#176474 0,#0E4350 40%,#08262E 100%)}
.g-stage canvas{position:absolute;inset:0;display:block;width:100%;height:100%}
#g-glow{position:absolute;left:0;top:0;width:1000px;height:1000px;margin:-500px 0 0 -500px;border-radius:50%;background:radial-gradient(closest-side,rgba(57,161,178,.5),rgba(57,161,178,0))}
#g-glow::after{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(closest-side,rgba(246,222,154,.3),rgba(246,222,154,0));opacity:0;transition:opacity .8s ease}
.g-stage[data-tone=gold] #g-glow::after{opacity:1}
/* подпись к месту на экране — всплывающая подсказка (тёмная, с хвостиком), а не белая плашка-«кнопка» */
#g-chip{position:absolute;left:0;top:0;z-index:2;padding:7px 10px;border:1px solid rgba(255,255,255,.26);border-radius:8px;background:rgba(6,30,37,.9);color:#fff;font:500 12.5px/1.2 var(--font);white-space:nowrap;box-shadow:0 8px 20px rgba(0,0,0,.3);pointer-events:none;opacity:0;transition:opacity .22s ease}
#g-chip.in::after{content:"";position:absolute;left:var(--ax,50%);top:100%;margin-left:-6px;border:6px solid transparent;border-top-color:rgba(6,30,37,.9)}
#g-chip.on{opacity:1}
#g-line{position:absolute;left:0;top:0;z-index:1;width:0;height:2px;margin-top:-1px;background:#EC5F59;transform-origin:0 50%;opacity:0;transition:opacity .22s ease}
#g-line.on{opacity:1}
/* дороги — как в решении 19: двойные линии со скруглёнными поворотами и открытыми наконечниками */
.g-rd{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:rgba(255,255,255,.075);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* первый экран */
.g-hero{position:relative;z-index:1;min-height:100vh;min-height:100svh}
.g-hero-t{max-width:min(46vw,610px);padding-top:clamp(64px,12vh,128px)}
.g-kick{margin:0 0 14px;color:#8FDDE9;font:600 13px/1.2 var(--font);letter-spacing:.13em;text-transform:uppercase}
.g-hero h1{margin:0;color:#fff;font:600 clamp(42px,5.4vw,84px)/1.03 var(--font-h);letter-spacing:-.022em}
.g-lead{margin:22px 0 0;max-width:27em;color:rgba(255,255,255,.82);font-size:clamp(16px,1.5vw,20px);line-height:1.45}
.g-acts{display:flex;flex-wrap:wrap;gap:10px;margin:30px 0 0}
/* кнопки первого экрана и полоса глав — жидкое стекло (решение 26), как кнопки онбординга в приложении */
.g-btn{display:inline-flex;align-items:center;justify-content:center;height:52px;padding:0 22px;border:1px solid rgba(255,255,255,.34);border-radius:14px;color:#fff;background:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,.07));-webkit-backdrop-filter:blur(14px) saturate(1.6);backdrop-filter:blur(14px) saturate(1.6);box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 -1px 0 rgba(255,255,255,.08),0 6px 18px rgba(0,0,0,.16);font:600 15.5px/1 var(--font);transition:transform .2s ease,background .2s ease}
.g-btn:hover{background:rgba(255,255,255,.26)}
.g-btn.p{border-color:#fff;background:#fff;color:#0E4350}
.g-btn.p:hover{background:#fff;transform:translateY(-1px)}
.g-hero .badges{margin:28px 0 0}
.g-hero .badges img{width:auto;height:50px}
.g-hero .badges+.g-acts{margin-top:14px}
/* главная: только первый блок. Высота сверх экрана — прокрутка, за которую телефон делает один оборот */
/* первый блок обрезан по высоте (11 ноября, Михаил), телефон уходит под следующий блок. Компьютер — 570 px;
   телефон — две трети экрана и без абзаца под заголовком, чтобы следующий блок был виден раньше */
.g-solo{overflow:clip}
.g-solo .g-hero{min-height:0;height:570px}
@media (max-width:819px),(max-aspect-ratio:21/20){.g-solo .g-hero{height:max(520px,84vh);height:max(520px,84svh)}.g-solo .g-lead{display:none}}
.g-solo .g-hero-t{padding-top:clamp(40px,8vh,92px);padding-bottom:40px}
.g-solo .g-acts{gap:8px}
.g-solo .g-acts .g-btn{height:44px;padding:0 16px;font-size:14.5px}
.g-quick{margin:26px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:14.5px}
.g-quick a{color:rgba(255,255,255,.8);text-decoration:underline;text-decoration-color:rgba(255,255,255,.34);text-underline-offset:4px}
.g-quick a:hover{color:#fff}

/* тур */
.g-tour{position:relative;z-index:1;padding-top:44vh;padding-top:44svh;padding-bottom:34vh;padding-bottom:34svh}
.g-nav{position:sticky;top:70px;z-index:3;display:flex;gap:6px;width:fit-content;max-width:100%;margin:0 auto 18px;padding:5px;border:1px solid rgba(255,255,255,.14);border-radius:16px;background:rgba(6,30,37,.5);-webkit-backdrop-filter:blur(20px) saturate(1.7);backdrop-filter:blur(20px) saturate(1.7);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 8px 22px rgba(0,0,0,.2);overflow-x:auto;scrollbar-width:none}
.g-nav::-webkit-scrollbar{display:none}
.g-nav a{flex:none;padding:8px 12px;border-radius:11px;color:rgba(255,255,255,.76);font:500 13.5px/1 var(--font);white-space:nowrap;transition:background .2s ease,color .2s ease}
.g-nav a:hover{color:#fff}
.g-nav a[aria-current]{background:#fff;color:#0E4350}
.g-cards{margin:0;padding:0;list-style:none}
.g-c{height:var(--ch);margin:0;scroll-margin-top:var(--st)}
.g-c.l .g-ci{margin-left:auto}
.g-link{color:#fff;font-weight:600;text-decoration:underline;text-decoration-color:rgba(255,255,255,.5);text-underline-offset:4px}
.g-ci{position:sticky;top:var(--st);max-width:min(41vw,540px)}
.g-num{display:block;margin:0 0 12px;color:#8FDDE9;font:600 13px/1.2 var(--font);letter-spacing:.13em;text-transform:uppercase}
.g-ci h2{margin:0;color:#fff;font:600 clamp(34px,4.4vw,62px)/1.04 var(--font-h);letter-spacing:-.02em}
.g-ci h3{margin:0;color:#fff;font:600 clamp(27px,3vw,42px)/1.08 var(--font-h);letter-spacing:-.015em}
.g-ci p{margin:16px 0 0;color:rgba(255,255,255,.82);font-size:clamp(16px,1.35vw,19px);line-height:1.46}
.g-c[data-tone=gold] .g-num{color:#F6DE9A}

@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
.s-howto>.band,.g-fq details{scroll-margin-top:72px}

/* шкала шагов: сколько осталось и быстрый переход (строит phone.js) */
.g-rail{position:sticky;top:0;z-index:4;height:100vh;height:100svh;margin-bottom:-100vh;margin-bottom:-100svh;pointer-events:none;opacity:0;transition:opacity .3s ease}
.g-rail.show{opacity:1}
.g-rail.show .g-rail-in{pointer-events:auto}
.g-rail-in{position:absolute;top:50%;right:max(12px,env(safe-area-inset-right));display:flex;flex-direction:column;align-items:center;width:42px;padding:2px 0;border:1px solid rgba(255,255,255,.16);border-radius:14px;background:rgba(6,30,37,.78);transform:translateY(-50%);pointer-events:none}
.g-ra{position:relative;width:100%;height:32px;padding:0;border:0;background:none;color:#fff;cursor:pointer}
.g-ra::before{content:"";position:absolute;inset:0;margin:auto;width:14px;height:14px;background:currentColor;-webkit-mask:var(--ic-chev) center/contain no-repeat;mask:var(--ic-chev) center/contain no-repeat}
.g-ra.up::before{transform:rotate(180deg)}
.g-ts{width:100%;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none}
.g-t{display:flex;align-items:center;justify-content:center;height:var(--t,12px)}
.g-t.ch{margin-top:6px}
.g-t i{display:block;width:10px;height:2.5px;border-radius:2px;background:rgba(255,255,255,.36);transition:width .15s ease,background .15s ease}
.g-t.ch i{width:16px}
.g-t:first-child i{width:16px}
.g-t.past i{background:#fff}
.g-t.on i{width:26px;height:4px;background:#EC5F59}
.g-t.hot i{width:30px;background:#fff}
.g-rtip{position:absolute;right:calc(100% + 10px);top:0;width:max-content;max-width:min(62vw,280px);padding:8px 12px;border-radius:12px;background:#fff;color:#131313;font:500 14px/1.25 var(--font);box-shadow:0 10px 26px rgba(0,0,0,.34);opacity:0;pointer-events:none;transform:translateY(-50%);transition:opacity .15s ease}
.g-rtip.on{opacity:1}
.g-rtip small{display:block;margin-bottom:2px;color:#5A5A5F;font:400 12px/1.2 var(--font)}

/* каталог */
.s-howto{position:relative;overflow:clip}
.s-howto-hub>.wrap{position:absolute;top:10px;left:0;right:0;z-index:2}
.s-howto-hub>.wrap .crumbs,.s-howto-hub>.wrap .crumbs a{color:rgba(255,255,255,.76)}
.s-howto>.band{background:var(--bg)}
.s-howto>.band.bw{background:var(--band)}
.s-howto>.band.bt{background:var(--teal)}
.s-howto>.band.bc{background:linear-gradient(180deg,#0A1F27,#143F4C)}   /* тёмная полоса суда на главной (pages.css .bt.bc) */
.g-h{margin:0 0 8px;font:600 clamp(30px,4vw,52px)/1.06 var(--font-h);letter-spacing:-.02em}
.g-sub{margin:0 0 30px;max-width:40em;color:var(--muted-2);font-size:17px}
.g-b{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-flow:dense;gap:16px}
.gf{position:relative;display:flex;flex-direction:column;grid-column:span 4;min-height:430px;padding:24px 24px 0;overflow:hidden;border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow);color:var(--ink)}
.gf.x6{grid-column:span 6}
.gf.x3{grid-column:span 3}
a.gf:hover{text-decoration:none}
.gf h3{margin:0;font:600 21px/1.2 var(--font-h);letter-spacing:-.01em}
.gf p{margin:8px 0 18px;color:var(--muted-2);font-size:14.5px;line-height:1.42}
.gf.t{background:linear-gradient(145deg,#1A6272,#0F4C5A);color:#fff}
.gf.t p{color:rgba(255,255,255,.84)}
.gf.g{background:linear-gradient(135deg,#F6DE9A,#D9AE4E);color:#3F2C06}
.gf.g p{color:#54400F}
.gf-s{display:flex;justify-content:center;gap:14px;margin-top:auto;height:270px}
.gf.x6 .gf-s{height:320px}
.gf-p{flex:none;width:208px;height:calc(100% + 30px);overflow:hidden;border:5px solid #16191A;border-bottom:0;border-radius:28px 28px 0 0;background:#16191A;box-shadow:0 14px 34px -12px rgba(0,20,26,.5);transform:translateY(12px) rotate(-2.5deg);transform-origin:50% 100%;transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.gf.x6 .gf-p{width:228px}
.gf.x3 .gf-p{width:190px}
.gf.n2 .gf-p:nth-child(2){transform:translateY(26px) rotate(3deg)}
.gf.n3 .gf-p{width:168px;border-radius:24px 24px 0 0}
.gf.n3 .gf-p img{border-radius:19px 19px 0 0}
.gf.n3 .gf-p:nth-child(1){transform:translateY(30px) rotate(-5deg)}
.gf.n3 .gf-p:nth-child(2){transform:translateY(8px)}
.gf.n3 .gf-p:nth-child(3){transform:translateY(30px) rotate(5deg)}
.gf-p img{display:block;width:100%;height:auto;border-radius:23px 23px 0 0}
.gf:hover .gf-p,.gf.n2:hover .gf-p:nth-child(2),.gf.n3:hover .gf-p:nth-child(n){transform:translateY(0)}

/* список уроков на странице раздела */
.g-fq{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 40px;align-items:start}
.g-fq h3{margin:26px 0 8px;color:var(--brand-ink);font:600 13px/1.2 var(--font);letter-spacing:.1em;text-transform:uppercase}

/* страница урока */
.gl{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:40px;align-items:start;margin:8px 0 44px}
.gl-1{grid-template-columns:minmax(0,1fr)}
.gl-t{max-width:40em;font-size:17px;line-height:1.5}
.gl-t ol{margin:0 0 16px;padding-left:24px}
.gl-t li{margin:0 0 12px}
.gl-t p{margin:0 0 14px}
.gl-ph{display:flex;gap:16px}
.gl-ph img{display:block;width:230px;height:auto;border:6px solid #16191A;border-radius:36px;box-shadow:0 18px 40px -16px rgba(0,20,26,.45)}
.gl-more{margin:0 0 36px}
.gl-more h2{margin:0 0 10px}

/* телефон: карточки под телефоном, текст короче */
@media (max-width:819px),(max-aspect-ratio:21/20){
  .s-howto{--ch:60vh;--ch:60svh;--st:69vh;--st:69svh}
  /* шаги листаются по одному: прокрутка останавливается у каждого шага (scroll-snap-stop), быстрый взмах не
     перепрыгивает через шаг. proximity, а не mandatory: вне шагов страница листается свободно и нигде не запирается */
  html:has(.g-tour){scroll-snap-type:y proximity}
  /* остановка — когда шаг показан целиком: его верх на середине экрана (у границы шагов тексты ещё перекрываются) */
  .g-c{scroll-snap-align:start;scroll-snap-stop:always;scroll-margin-top:calc(50vh - 64px);scroll-margin-top:calc(50svh - 64px)}
  .g-hero-t{max-width:none;padding-top:54px}
  .g-hero h1{font-size:clamp(38px,11vw,54px)}
  .g-lead{margin-top:14px;font-size:16px}
  .g-acts{margin-top:18px}
  .g-btn{height:48px;padding:0 18px;font-size:15px}
  .g-quick{display:none}
  .g-solo .g-hero-t{padding-top:26px;padding-bottom:0}
  .g-solo .g-acts .g-btn{height:40px;padding:0 12px;font-size:13.5px}
  .g-hero .badges{margin-top:16px}
  .g-hero .badges img{height:42px}
  .g-hero .badges+.g-acts{margin-top:10px}
  .g-tour{padding-top:42vh;padding-top:42svh;padding-bottom:30vh;padding-bottom:30svh}
  .g-nav{display:none}
  .g-rail-in{top:var(--rt,76px);right:max(6px,env(safe-area-inset-right));width:38px;transform:none}
  .g-ci,.g-c.l .g-ci{max-width:none;margin-left:0}
  /* наезд на часть экрана: низ телефона уходит в тень, чтобы не мешать тексту */
  .g-stage::after{content:"";position:absolute;left:0;right:0;bottom:0;z-index:1;height:40%;background:linear-gradient(180deg,rgba(8,38,46,0),#08262E 22%);opacity:0;transition:opacity .35s ease}
  .g-stage.in-tour::after{opacity:1}
  .g-num{margin-bottom:6px;font-size:11.5px}
  .g-ci h2{font-size:27px}
  .g-ci h3{font-size:23px}
  .g-ci p{margin-top:8px;font-size:15px;line-height:1.38}
  .g-b{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .gf,.gf.x3{grid-column:span 1;min-height:0;padding:16px 14px 0}
  .gf.x6,.gf.mw{grid-column:span 2;padding:18px 18px 0}
  .gf h3{font-size:17px}
  .gf p{margin:6px 0 12px;font-size:13px}
  .gf-s,.gf.x6 .gf-s{height:190px}
  .gf-p,.gf.x3 .gf-p{width:132px;border-width:4px;border-radius:20px 20px 0 0}
  .gf.x6 .gf-p{width:138px}
  .gf.n3 .gf-p{width:104px;border-radius:17px 17px 0 0}
  .gf.n3 .gf-s{gap:8px}
  .gf-p img,.gf.n3 .gf-p img{border-radius:14px 14px 0 0}
  .g-fq{grid-template-columns:minmax(0,1fr);gap:0}
  .gl{grid-template-columns:minmax(0,1fr);gap:24px}
  .gl-ph{justify-content:center;gap:10px}
  .gl-ph img{width:calc(50% - 5px);max-width:230px;border-width:4px;border-radius:24px}
}

/* без 3D и без JS: обычная страница с картинками */
.no3d .g-stage,html:not(.js) .g-stage{display:none}
.no3d .g-w,html:not(.js) .g-w{background:linear-gradient(180deg,#0F4C5A,#08262E)}
.no3d .g-hero,html:not(.js) .g-hero{min-height:0;padding-bottom:40px}
.no3d .g-tour,html:not(.js) .g-tour{padding:24px 0 48px}
.no3d .g-c,html:not(.js) .g-c{height:auto;margin-bottom:56px}
.no3d .g-ci,html:not(.js) .g-ci{position:static;max-width:560px;opacity:1!important}
.no3d .g-nav,html:not(.js) .g-nav,.no3d .g-rail{display:none}
.g-fb{display:block;width:min(66vw,280px);height:auto;margin:20px 0 0;border:6px solid #16191A;border-radius:34px}
.g-fb-h{margin:24px auto 0}
@media (prefers-reduced-motion:reduce){.gf-p,#g-chip,#g-glow::after{transition:none}}
