:root{
  --ink:#171717; --cream:#F4F1EA; --white:#fff; --grey:#A9A9A9;
  --place:#233C35; --coffee:#593E32;
  --r-lg:28px; --r-md:18px;
  --gut:clamp(16px,4vw,56px);
}
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
html{background:var(--ink);-webkit-text-size-adjust:100%}
body{background:var(--ink);color:var(--cream);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
img{display:block}

/* ---------- header ---------- */
.hdr{position:fixed;top:0;left:0;right:0;z-index:50;padding:14px var(--gut);pointer-events:none}
.hdr-in{pointer-events:auto;color:var(--cream);display:flex;align-items:center;gap:28px;background:var(--ink);border-radius:999px;padding:9px 9px 9px 22px;max-width:1240px;margin:0 auto}
.hdr-logo img{height:34px;width:auto}
.hdr-nav{display:flex;gap:24px;margin-left:auto;font-size:14.5px;font-weight:500}
.hdr-nav a{opacity:.72;transition:opacity .2s}
.hdr-nav a:hover,.hdr-nav a.on{opacity:1}
.hdr-cta{background:var(--cream);color:var(--ink);font-weight:600;font-size:14.5px;padding:11px 20px;border-radius:999px}
@media (max-width:900px){.hdr-nav{display:none}.hdr-cta{margin-left:auto}.hdr-logo img{height:28px}}

/* ---------- tour ---------- */
.tour{position:relative;height:100vh;height:100svh}
.stage{position:relative;height:100vh;height:100svh;overflow:hidden;background:var(--ink)}
#gl{position:absolute;inset:0;width:100%;height:100%;display:block}
.tvid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .25s;pointer-events:none;z-index:1}

/* hotspot tags */
.tags{position:absolute;inset:0;pointer-events:none;z-index:3}
.tag{position:absolute;left:0;top:0;opacity:0;will-change:transform,opacity}
.tag-dot{position:absolute;left:-7px;top:-7px;width:14px;height:14px;border-radius:50%;background:var(--cream);border:3px solid var(--ink)}
.tag-line{position:absolute;left:-1px;width:2px;background:var(--cream);bottom:0}
.tag-pill{position:absolute;left:-14px;white-space:nowrap;background:var(--cream);color:var(--ink);border-radius:999px;padding:8px 14px 8px 12px;font-size:14px;font-weight:600;letter-spacing:-.01em;display:flex;align-items:center;gap:8px}
.tag-pill b{display:inline-grid;place-items:center;min-width:24px;height:24px;border-radius:7px;background:var(--place);color:var(--cream);font-size:13px;font-weight:700;padding:0 6px}
.tag-pill small{font-weight:500;opacity:.62;font-size:13px}
.tag.right .tag-pill{left:auto;right:-14px}

/* captions */
.caps{position:absolute;inset:0;pointer-events:none;z-index:4}
.cap{position:absolute;left:var(--gut);bottom:clamp(24px,6vh,64px);width:min(470px,calc(100% - 2*var(--gut)));background:var(--ink);color:var(--cream);border-radius:var(--r-lg);padding:26px 28px 28px;opacity:0;visibility:hidden;will-change:transform,opacity}
.cap.coffee{background:var(--coffee)}
.cap.place{background:var(--place)}
.cap .num{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--grey)}
.cap.coffee .num,.cap.place .num{color:rgba(244,241,234,.66)}
.cap .num i{width:26px;height:2px;background:currentColor;transform:skewY(-14deg)}
.cap h2{font-size:clamp(28px,3.1vw,44px);line-height:1.02;letter-spacing:-.035em;font-weight:700;margin:14px 0 12px}
.cap h2 .step{display:block;padding-left:.9em}
.cap p{font-size:16px;line-height:1.5;color:rgba(244,241,234,.8)}
.cap .facts{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.cap .facts span{font-size:13.5px;font-weight:600;border:1.5px solid rgba(244,241,234,.28);border-radius:999px;padding:6px 12px}
.cap .go{pointer-events:auto;display:inline-flex;align-items:center;gap:10px;margin-top:20px;background:var(--cream);color:var(--ink);font-weight:600;font-size:15px;border-radius:999px;padding:12px 20px}
.cap .go svg{transition:transform .25s}
.cap .go:hover svg{transform:translateX(4px)}
.cap .brand{height:30px;width:auto;margin-bottom:6px}

/* первый кадр */
.cap.hero{width:min(600px,calc(100% - 2*var(--gut)));padding:30px 32px 30px}
.cap.hero h2{font-size:clamp(46px,5.6vw,92px);line-height:.92;letter-spacing:-.05em;font-weight:800;margin:16px 0 18px}
.cap.hero h2 .step{padding-left:.72em;white-space:nowrap}
.cap.hero p{font-size:17px;max-width:470px}
.cap .links{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.cap .links a{pointer-events:auto;font-size:14.5px;font-weight:600;background:rgba(244,241,234,.1);border:1.5px solid rgba(244,241,234,.22);border-radius:999px;padding:9px 15px;transition:background .2s,color .2s}
.cap .links a:hover{background:var(--cream);color:var(--ink)}
.cap .links a[data-go=coffee]{background:var(--coffee);border-color:var(--coffee)}

/* zone rail */
.rail{position:absolute;right:var(--gut);top:50%;transform:translateY(-50%);z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:2px;background:var(--ink);border-radius:var(--r-md);padding:8px}
.rail button{all:unset;cursor:pointer;display:flex;flex-direction:row-reverse;align-items:center;gap:0;padding:8px 9px;border-radius:10px;font-size:13.5px;font-weight:500;color:rgba(244,241,234,.5);transition:color .2s,background .2s,gap .3s}
.rail button i{width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
.rail button span{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;transition:max-width .35s,opacity .25s}
.rail:hover button span,.rail button.on span{max-width:170px;opacity:1}
.rail:hover button,.rail button.on{gap:10px}
.rail button:hover{color:var(--cream)}
.rail button.on{color:var(--cream);background:rgba(244,241,234,.1)}
.rail button.on i{background:var(--cream)}
.rail button:focus-visible{outline:2px solid var(--cream)}
.rail .rail-cat{margin-top:6px;border-top:1px solid rgba(244,241,234,.14);border-radius:0 0 10px 10px;padding-top:10px}
.mbar{display:none}

/* stepper: номер шага + «дальше» */
.stepper{position:absolute;right:var(--gut);bottom:clamp(24px,6vh,64px);z-index:5;display:flex;align-items:center;gap:12px}
.step-num{font-size:13px;font-weight:600;letter-spacing:.06em;color:var(--cream);background:var(--ink);border-radius:999px;padding:10px 14px;font-variant-numeric:tabular-nums}
.step-next{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:10px;background:var(--cream);color:var(--ink);font-weight:600;font-size:14.5px;border-radius:999px;padding:11px 18px}
.step-next svg{animation:nudge 1.8s ease-in-out infinite}
.step-next:focus-visible{outline:2px solid var(--cream);outline-offset:3px}
@keyframes nudge{50%{transform:translateY(3px)}}

/* sections after the tour */
.wrap{max-width:1240px;margin:0 auto;padding:0 var(--gut)}
.catalog{background:var(--cream);color:var(--ink);padding:clamp(64px,10vh,120px) 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:32px}
.sec-title{font-size:clamp(40px,5.5vw,80px);line-height:.95;letter-spacing:-.045em;font-weight:800}
.sec-lead{font-size:17px;color:#4a4a4a;max-width:360px}
.cat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.cat-tile{position:relative;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;min-height:280px;border-radius:var(--r-lg);overflow:hidden;padding:20px;color:var(--cream);background:var(--ink) var(--img) var(--bp)/cover no-repeat;isolation:isolate}
.cat-tile::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(to top,rgba(23,23,23,.88),rgba(23,23,23,.1) 60%)}
.cat-tile.coffee::before{background:linear-gradient(to top,rgba(89,62,50,.95),rgba(89,62,50,.1) 60%)}
.cat-txt{display:grid;gap:6px}
.cat-txt b{font-size:24px;letter-spacing:-.02em}
.cat-txt small{font-size:14.5px;color:rgba(244,241,234,.8);line-height:1.4}
.cat-arr{flex:none;width:44px;height:44px;border-radius:50%;background:var(--cream);color:var(--ink);display:grid;place-items:center;font-size:18px;transition:transform .25s}
.cat-tile:hover .cat-arr{transform:translateX(4px)}
.cat-tile.hl{outline:3px solid var(--place);outline-offset:3px}
.cat-all{margin-top:28px;background:var(--ink);color:var(--cream)}
.contacts{background:var(--place);padding:clamp(64px,10vh,120px) 0}
.finale-logo{height:clamp(56px,7vw,96px);width:auto}
.h-fin{font-size:clamp(40px,6vw,92px);line-height:.95;letter-spacing:-.045em;font-weight:800;margin:clamp(24px,5vh,48px) 0}
.h-fin .step{display:inline-block;padding-left:.8em}
.fin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;border-top:1.5px solid rgba(244,241,234,.2);padding-top:24px;max-width:900px}
.fin-grid .lbl{font-size:12.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:rgba(244,241,234,.55);margin-bottom:8px}
.fin-grid p{font-size:16px;line-height:1.5}
.fin-grid a{border-bottom:1px solid rgba(244,241,234,.35)}
.fin-btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}
.btn{display:inline-flex;align-items:center;border-radius:999px;padding:15px 24px;font-weight:600;font-size:15.5px}
.btn-cream{background:var(--cream);color:var(--place)}
.btn-line{border:1.5px solid rgba(244,241,234,.5)}
.btn-line:hover{background:var(--coffee);border-color:var(--coffee)}

/* loader */
.loader{position:absolute;inset:0;z-index:20;background:var(--ink);display:grid;place-items:center;transition:opacity .6s,visibility .6s}
.loader.done{opacity:0;visibility:hidden}
.loader-in{display:grid;justify-items:center;gap:22px}
.loader-bar{width:150px;height:2px;background:rgba(244,241,234,.18);overflow:hidden}
.loader-bar i{display:block;height:100%;width:0;background:var(--cream);transition:width .3s}

.foot{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:28px var(--gut);background:var(--ink);color:var(--grey);font-size:14px}

/* ---------- mobile ---------- */
@media (prefers-reduced-motion:reduce){.step-next svg{animation:none}}
@media (max-width:760px){
  .rail{display:none}
  .mbar{display:block;position:absolute;left:var(--gut);right:var(--gut);top:76px;height:3px;border-radius:3px;background:rgba(23,23,23,.25);z-index:5;overflow:hidden}
  .mbar i{display:block;height:100%;width:0;background:var(--ink)}
  .cap{left:12px;right:12px;width:auto;bottom:12px;bottom:calc(12px + env(safe-area-inset-bottom));padding:20px 20px 22px;border-radius:22px}
  .cap h2{font-size:26px;margin:8px 0 6px}
  .cap p{font-size:14.5px}
  .cap .facts{display:none}
  .cap.hero{padding:22px 20px}
  .cap.hero h2{font-size:clamp(44px,13vw,60px);margin:10px 0 12px}
  .cap.hero p{font-size:15px}
  .cap .links{gap:6px;margin-top:14px}
  .cap .links a{font-size:13px;padding:7px 12px}
  .cap .go{margin-top:14px}
  .tag-pill{font-size:12.5px;padding:6px 11px 6px 9px}
  .tag-pill b{min-width:20px;height:20px;font-size:12px}
  .fin-grid{grid-template-columns:1fr;gap:16px}
  .cat-grid{grid-template-columns:1fr 1fr;gap:10px}
  .cat-tile{min-height:190px;padding:14px;flex-direction:column;align-items:flex-start;justify-content:flex-end}
  .cat-txt b{font-size:18px}
  .cat-txt small{font-size:12.5px}
  .cat-arr{display:none}
  .stepper{top:88px;bottom:auto;right:var(--gut)}
  .step-next{padding:8px 13px;font-size:13px}
  .step-num{padding:8px 11px;font-size:12px}
  .mbar{top:74px}
  .foot{flex-direction:column;align-items:flex-start}
}
