/* ==========================================================================
   Giulietta Rzeszów — sections.css
   Pinned 3D hero, ticker, and every band of the page: story, signature plates,
   menu, stats, la sala, aperitivo bar, groups, reservations, Instagram and
   footer, followed by the shared responsive and reduced-motion rules.
   ========================================================================== */

/* ---------- HERO (3D) ----------
   The pinned chandelier chapter spans 260vh (220vh on phones), i.e. roughly
   half the original travel, so the four chapters play through twice as fast. */
.hero{position:relative;height:260vh;background:var(--ink)}
.hero-stick{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
#gl{position:absolute;inset:0;width:100%;height:100%;display:block}
.hero-fallback{position:absolute;inset:0;background:var(--ink) url(../img/chandelier.jpg) center/cover no-repeat;opacity:0;transition:opacity 1s}
.no-webgl .hero-fallback{opacity:.55}
.hero-vignette{position:absolute;inset:0;pointer-events:none;background:
  radial-gradient(120% 90% at 70% 45%,transparent 40%,rgba(11,9,48,.55) 75%,rgba(11,9,48,.95) 100%),
  linear-gradient(90deg,rgba(11,9,48,.82) 0%,rgba(11,9,48,.45) 34%,transparent 58%)}
.hero-grain{position:absolute;inset:-50%;pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");animation:grain 1.2s steps(6) infinite}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-5%,3%)}40%{transform:translate(4%,-4%)}60%{transform:translate(-3%,5%)}80%{transform:translate(5%,2%)}100%{transform:translate(0,0)}}

.stage{position:absolute;left:var(--gutter);top:50%;transform:translateY(-46%);width:min(560px,46vw);pointer-events:none;opacity:0;transition:none}
.stage.on{pointer-events:auto}
.stage[data-stage="0"]{opacity:1}
.stage .kicker{color:var(--brass-hi);margin-bottom:22px}
.stage h1{font-size:clamp(76px,11vw,176px);line-height:.9;letter-spacing:-.02em}
.stage h2{font-size:clamp(44px,5.4vw,84px)}
.stage h2 em{color:var(--brass-hi)}
.stage p{font-size:clamp(17px,1.35vw,20px);color:var(--muted-light);margin-top:22px;max-width:44ch}
.stage .tag{font-family:var(--f-display);font-style:italic;font-size:clamp(22px,2.1vw,32px);color:var(--paper);margin-top:20px;line-height:1.25}
.stage .ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:34px}
.stage .hint{margin-top:30px;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--brass);display:flex;align-items:center;gap:12px}
.stage .hint::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--brass-hi);box-shadow:0 0 0 0 rgba(231,200,133,.7);animation:ping 2s infinite}
.hours-mini{margin-top:26px;display:flex;gap:26px;flex-wrap:wrap;font-size:14px;color:var(--muted-light)}
.hours-mini b{display:block;font-weight:400;color:var(--paper);letter-spacing:.16em;text-transform:uppercase;font-size:11px}

/* hotspots */
.hotspots{position:absolute;inset:0;pointer-events:none}
.hs{position:absolute;left:0;top:0;pointer-events:auto;background:none;border:0;padding:0;display:flex;align-items:center;gap:12px;will-change:transform,opacity;transition:opacity .4s}
.hs.off{pointer-events:none}
.hs-dot{position:relative;width:18px;height:18px;flex:none;border-radius:50%;background:var(--paper);box-shadow:0 0 18px 4px rgba(255,214,150,.55)}
.hs-dot::before,.hs-dot::after{content:"";position:absolute;inset:-9px;border-radius:50%;border:1px solid rgba(246,243,236,.6);animation:ring 2.4s var(--ease) infinite}
.hs-dot::after{animation-delay:1.2s}
@keyframes ring{0%{transform:scale(.4);opacity:1}100%{transform:scale(1.6);opacity:0}}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(231,200,133,.7)}100%{box-shadow:0 0 0 12px rgba(231,200,133,0)}}
.hs-label{display:flex;align-items:center;gap:10px;padding:10px 16px 10px 14px;border-radius:999px;background:rgba(11,9,48,.55);border:1px solid rgba(246,243,236,.28);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);white-space:nowrap;font-size:12px;letter-spacing:.18em;text-transform:uppercase;transition:background .35s var(--ease),color .35s,border-color .35s,transform .35s var(--ease)}
.hs-label em{font-family:var(--f-display);font-style:italic;letter-spacing:0;text-transform:none;font-size:16px;color:var(--brass-hi)}
.hs.left{flex-direction:row-reverse}
.hs:hover .hs-label,.hs:focus-visible .hs-label{background:var(--paper);color:var(--ink);border-color:var(--paper);transform:scale(1.05)}
.hs:hover .hs-label em,.hs:focus-visible .hs-label em{color:var(--cobalt)}
.hs:hover .hs-dot{background:var(--brass-hi)}

/* chapter rail */
.rail{position:absolute;right:var(--gutter);bottom:30px;display:flex;gap:22px;z-index:3}
.rail button{background:none;border:0;display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:4px 0;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-light)}
.rail button span{opacity:.55;transition:.4s var(--ease)}
.rail button i{order:-1;width:100%;min-width:70px;height:1px;background:currentColor;opacity:.4;transition:opacity .5s,background .5s}
.rail button.on{color:var(--paper)}
.rail button.on i{opacity:1;background:var(--brass-hi)}
.rail button.on span,.rail button:hover span{opacity:1;transform:none}
.scrollcue{position:absolute;left:var(--gutter);bottom:28px;display:flex;align-items:center;gap:14px;font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--muted-light);transition:opacity .5s}
.scrollcue i{width:1px;height:46px;background:linear-gradient(var(--brass-hi),transparent);animation:cue 2s var(--ease) infinite;transform-origin:top}
@keyframes cue{0%{transform:scaleY(0)}50%{transform:scaleY(1)}100%{transform:scaleY(1);opacity:0}}
.scrollcue i{order:-1;height:34px}
.progress{position:absolute;left:0;bottom:0;height:2px;background:var(--brass-hi);width:0}

/* no-webgl fallback list */
.hs-static{display:none}
.no-webgl .hotspots{display:none}
.no-webgl .hs-static{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.hs-static a{font-size:12px;letter-spacing:.18em;text-transform:uppercase;text-decoration:none;padding:10px 16px;border:1px solid var(--line-light);border-radius:999px}

@media (max-width:860px){
  .hero{height:220vh}
  .stage{left:16px;right:16px;width:auto;top:auto;bottom:calc(84px + env(safe-area-inset-bottom,0px));transform:none}
  .stage h1{font-size:clamp(64px,20vw,110px)}
  .stage h2{font-size:clamp(36px,10vw,54px)}
  .stage p{font-size:16px;margin-top:14px}
  .stage .tag{font-size:21px}
  .stage .ctas{margin-top:22px}
  .stage .ctas{gap:8px}
  .stage .ctas .btn{padding:13px 15px;font-size:11px;letter-spacing:.1em}
  .stage .kicker{font-size:10px;letter-spacing:.16em;margin-bottom:14px}
  .stage .kicker::before{width:16px}
  .hours-mini{display:none}
  .hero-vignette{background:linear-gradient(180deg,rgba(11,9,48,.3) 0%,transparent 30%,rgba(11,9,48,.6) 55%,rgba(11,9,48,.97) 85%)}
  .rail{bottom:calc(30px + env(safe-area-inset-bottom,0px));right:16px;left:16px;gap:6px}
  .rail button span{display:none}
  .rail button{flex:1;justify-content:center}
  .rail button i{min-width:0}
  .rail button.on i{width:100%}
  .scrollcue{display:none}
  .hs-label{padding:8px 12px;font-size:10px;letter-spacing:.14em}
  .hs-label em{font-size:14px}
  .hs-dot{width:14px;height:14px}
}

/* ---------- Ticker ---------- */
.ticker{background:var(--cream);color:var(--burgundy);overflow:hidden;padding:26px 0;border-block:1px solid rgba(91,31,29,.2)}
.ticker-track{display:flex;width:max-content;animation:tick 38s linear infinite}
.ticker-track span{font-family:var(--f-display);font-style:italic;font-size:clamp(32px,4.4vw,64px);white-space:nowrap;padding-inline:28px;display:inline-flex;align-items:center;gap:56px}
.ticker-track span::after{content:"✦";font-style:normal;font-size:.42em;color:var(--brass)}
@keyframes tick{to{transform:translateX(-50%)}}

/* ---------- Sections shared ---------- */
section{position:relative}
.sec{padding-block:clamp(84px,12vw,170px)}
.paper{background:var(--paper);color:var(--text-dark)}
.paper .kicker{color:var(--cobalt)}
.sec-head{display:grid;gap:22px;max-width:780px}
.sec-head h2{font-size:clamp(42px,6vw,92px)}
.sec-head p{font-size:clamp(17px,1.3vw,19px);max-width:56ch}
.paper .sec-head p{color:var(--muted-dark)}

/* Story */
.story-grid{display:grid;grid-template-columns:5fr 6fr;gap:clamp(36px,7vw,110px);align-items:center}
.story-img{position:relative}
.story-img .a{aspect-ratio:3/4;object-fit:cover;width:100%;border-radius:220px 220px 0 0}
.story-img .b{position:absolute;width:44%;aspect-ratio:3/4;object-fit:cover;right:-12%;bottom:-10%;border:8px solid var(--paper)}
.story-copy{display:grid;gap:26px;min-width:0}
.story-copy h2{font-size:clamp(42px,5.6vw,86px)}
.story-copy h2 em{color:var(--cobalt)}
.story-copy p{color:var(--muted-dark);max-width:54ch}
.quote{margin-top:12px;padding:28px 0 0;border-top:1px solid var(--line-dark);font-family:var(--f-display);font-style:italic;font-size:clamp(24px,2.4vw,36px);line-height:1.2;color:var(--cobalt)}
.quote small{display:block;font-family:var(--f-body);font-style:normal;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-dark);margin-top:14px}
@media (max-width:860px){.story-grid{grid-template-columns:1fr}.story-img{max-width:440px;margin-right:12%}.story-img .b{right:-16%}}

/* Signatures */
.sig{background:var(--ink);overflow:hidden}
.sig-top{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap}
.sig-top .kicker{color:var(--brass-hi)}
.sig-top .sec-head p{color:var(--muted-light)}
.sig-nav{display:flex;gap:10px}
.sig-nav button{width:56px;height:56px;border-radius:50%;background:none;border:1px solid var(--line-light);display:grid;place-items:center;transition:.3s}
.sig-nav button:hover{background:var(--paper);color:var(--ink)}
.sig-nav svg{width:18px;height:18px}
.sig-track{display:flex;gap:clamp(16px,2vw,28px);overflow-x:auto;scroll-snap-type:x mandatory;padding:56px var(--gutter) 10px;scrollbar-width:none;cursor:grab}
.sig-track::-webkit-scrollbar{display:none}
.sig-track.drag{cursor:grabbing;scroll-snap-type:none}
.card{flex:0 0 clamp(260px,27vw,400px);scroll-snap-align:start;display:grid;gap:18px;user-select:none}
.card-img{overflow:hidden;aspect-ratio:3/4;border-radius:2px;position:relative}
.card-img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease);pointer-events:none}
.card:hover .card-img img{transform:scale(1.06)}
.card-img .price{position:absolute;top:16px;right:16px;background:var(--paper);color:var(--ink);border-radius:999px;padding:6px 12px;font-size:13px;font-variant-numeric:tabular-nums}
.card h3{font-size:clamp(26px,2.2vw,34px);font-style:italic}
.card p{font-size:15px;color:var(--muted-light);margin-top:6px}

/* Menu */
.menu-sec{background:var(--paper);color:var(--text-dark)}
.menu-head{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap}
.tabs{display:flex;flex-wrap:wrap;gap:8px;margin-top:48px;border-bottom:1px solid var(--line-dark);padding-bottom:18px}
.tabs button{background:none;border:1px solid transparent;border-radius:999px;padding:10px 18px;font-family:var(--f-label);font-size:17px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-dark);transition:.3s}
.tabs button:hover{color:var(--cobalt);border-color:var(--line-dark)}
.tabs button[aria-selected="true"]{background:var(--cobalt);color:var(--paper)}
.menu-body{display:grid;grid-template-columns:1fr 360px;gap:clamp(30px,6vw,90px);margin-top:46px;align-items:start}
.menu-list{display:grid;gap:4px;min-width:0}
.menu-group-title{font-family:var(--f-display);font-style:italic;font-size:28px;color:var(--cobalt);margin:26px 0 6px}
.menu-group-title:first-child{margin-top:0}
.item{display:grid;grid-template-columns:1fr auto;gap:6px 20px;padding:20px 0;border-bottom:1px solid var(--line-dark);animation:itemIn .6s var(--ease) both}
@keyframes itemIn{from{opacity:0;transform:translateY(12px)}}
.item h4{margin:0;font-family:var(--f-display);font-size:clamp(22px,1.9vw,27px);font-weight:500;color:var(--text-dark);display:flex;align-items:center;gap:10px;flex-wrap:wrap;line-height:1.15}
.item .price{font-family:var(--f-display);font-size:22px;color:var(--cobalt);font-variant-numeric:tabular-nums;white-space:nowrap;align-self:start}
.item .desc{grid-column:1/-1;color:var(--muted-dark);font-size:15px;max-width:62ch}
.item .w{font-family:var(--f-body);font-size:12px;color:var(--muted-dark);letter-spacing:.06em}
.badge{display:inline-grid;place-items:center;font-family:var(--f-body);font-size:10px;letter-spacing:.08em;border:1px solid currentColor;border-radius:999px;padding:2px 7px;color:var(--cobalt)}
.badge.v{color:#2F6B3E}
.menu-aside{position:sticky;top:110px;display:grid;gap:18px}
.menu-aside img{aspect-ratio:4/5;object-fit:cover;width:100%;border-radius:180px 180px 2px 2px}
.menu-aside .note{font-size:14px;color:var(--muted-dark);display:grid;gap:8px;padding:20px;border:1px solid var(--line-dark)}
.menu-aside .note b{font-weight:400;color:var(--cobalt);letter-spacing:.16em;text-transform:uppercase;font-size:11px}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted-dark)}
@media (max-width:960px){.menu-body{grid-template-columns:1fr}.menu-aside{position:static;grid-template-columns:1fr 1fr;align-items:start}.menu-aside img{border-radius:120px 120px 2px 2px}}
@media (max-width:560px){.menu-aside{grid-template-columns:1fr}.tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:calc(var(--gutter)*-1);padding-inline:var(--gutter)}.tabs button{flex:none}}

/* Stats */
.stats{background:var(--cobalt);color:var(--paper);padding-block:clamp(60px,8vw,110px)}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:30px}
.stat{display:grid;gap:10px;border-left:1px solid var(--line-light);padding-left:24px}
.stat b{font-family:var(--f-display);font-weight:400;font-size:clamp(52px,6vw,92px);line-height:1;font-variant-numeric:tabular-nums}
.stat span{color:rgba(246,243,236,.75);font-size:15px;max-width:22ch}
@media (max-width:860px){.stats-grid{grid-template-columns:1fr 1fr;gap:40px 20px}}

/* La Sala */
.sala{background:var(--velvet);color:var(--paper)}
.sala .kicker{color:var(--brass-hi)}
.sala .sec-head p{color:var(--muted-light)}
.mosaic{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:clamp(70px,7vw,110px);gap:clamp(10px,1.4vw,20px);margin-top:70px}
.tile{position:relative;overflow:hidden;margin:0}
.tile img{position:absolute;inset:-8% 0;width:100%;height:116%;object-fit:cover;will-change:transform}
.tile figcaption{position:absolute;left:16px;bottom:14px;right:16px;font-family:var(--f-display);font-style:italic;font-size:clamp(18px,1.6vw,24px);text-shadow:0 2px 18px rgba(0,0,0,.5)}
.tile::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 55%,rgba(10,20,17,.65))}
.tile figcaption{z-index:1}
.t1{grid-column:1/8;grid-row:span 5}
.t2{grid-column:8/13;grid-row:span 3}
.t3{grid-column:8/13;grid-row:span 4}
.t4{grid-column:1/5;grid-row:span 4}
.t5{grid-column:5/8;grid-row:span 4}
.t6{grid-column:1/8;grid-row:10/span 3}
.t7{grid-column:8/13;grid-row:span 5}
@media (max-width:860px){
  .mosaic{grid-template-columns:1fr 1fr;grid-auto-rows:120px}
  .t1{grid-column:1/3;grid-row:span 3}
  .t2,.t3,.t4,.t5,.t7{grid-column:auto;grid-row:span 2}
  .t6{grid-column:1/3;grid-row:auto/span 2}
}

/* Bar */
.bar{background:var(--burgundy);color:var(--cream)}
.bar .kicker{color:var(--brass-hi)}
.bar-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,7vw,110px);align-items:center}
.bar-imgs{position:relative;min-height:560px}
.bar-imgs img{position:absolute;object-fit:cover}
.bar-imgs .a{left:0;top:0;width:72%;height:86%;border-radius:2px}
.bar-imgs .b{right:0;bottom:0;width:46%;height:52%;border:8px solid var(--burgundy)}
.bar h2{font-size:clamp(42px,5.6vw,86px);margin-top:22px}
.bar h2 em{color:var(--brass-hi)}
.bar-intro{color:rgba(245,230,191,.75);margin-top:22px;max-width:50ch}
.cocktails{margin-top:36px;display:grid}
.ck{display:grid;grid-template-columns:1fr auto;gap:2px 18px;padding:16px 0;border-bottom:1px solid rgba(245,230,191,.2)}
.ck:first-child{border-top:1px solid rgba(245,230,191,.2)}
.ck b{font-family:var(--f-display);font-weight:400;font-size:24px}
.ck>span{font-family:var(--f-display);font-size:22px;font-variant-numeric:tabular-nums}
.ck small{grid-column:1/-1;font-size:14px;color:rgba(245,230,191,.65)}
.bar .btn{margin-top:34px}
.bar .btn:hover{background:var(--cream);color:var(--burgundy)}
@media (max-width:860px){.bar-grid{grid-template-columns:1fr}.bar-imgs{min-height:420px;order:-1}}

/* Groups */
.groups-grid{display:grid;grid-template-columns:6fr 5fr;gap:clamp(36px,7vw,110px);align-items:center}
.groups-img{position:relative}
.groups-img img{width:100%;aspect-ratio:4/5;object-fit:cover}
.groups-img .stamp{position:absolute;right:-26px;top:-26px;width:136px;height:136px;border-radius:50%;background:var(--cobalt);color:var(--paper);display:grid;place-items:center;text-align:center;font-family:var(--f-display);font-style:italic;font-size:18px;line-height:1.1;animation:spin 18s linear infinite}
.groups-img .stamp span{animation:spin 18s linear infinite reverse}
@keyframes spin{to{transform:rotate(360deg)}}
.rules{margin-top:30px;display:grid;gap:0}
.rule{display:grid;grid-template-columns:72px 1fr;gap:20px;padding:20px 0;border-top:1px solid var(--line-dark);align-items:baseline}
.rule b{font-family:var(--f-display);font-weight:400;font-size:40px;color:var(--cobalt);line-height:1}
.rule p{color:var(--muted-dark)}
/* Bodoni Moda draws a hairline "+" that disappears at numeral size, so the
   "8+" and "12+" thresholds were reading as bare numbers. Thicken only the
   mark; the numerals keep the display face and weight of the design. */
.rule b .plus{font-family:var(--f-body);font-size:.62em;font-weight:400;vertical-align:.16em;margin-left:2px}
.groups .ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:34px}
@media (max-width:860px){.groups-grid{grid-template-columns:1fr}.groups-img .stamp{right:10px;top:-30px;width:110px;height:110px;font-size:15px}}

/* Reserve */
.reserve{background:var(--ink);overflow:hidden}
.reserve .kicker{color:var(--brass-hi)}
.reserve-title{font-size:clamp(56px,10vw,160px);text-align:center;margin:26px auto 0;max-width:12ch}
.reserve-title em{color:var(--brass-hi)}
.reserve .center{text-align:center;display:grid;justify-items:center}
.res-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:70px}
.res-card{position:relative;overflow:hidden;min-height:420px;padding:clamp(26px,3vw,44px);display:flex;flex-direction:column;justify-content:flex-end;gap:14px;text-decoration:none;isolation:isolate}
.res-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform 1.4s var(--ease)}
.res-card::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(11,9,48,.1),rgba(11,9,48,.88))}
.res-card:hover img{transform:scale(1.05)}
.res-card h3{font-size:clamp(34px,3.6vw,56px)}
.res-card p{color:var(--muted-light);max-width:40ch}
.res-card .go{display:inline-flex;align-items:center;gap:10px;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--brass-hi);margin-top:6px}
.res-card .go svg{width:14px;height:14px;transition:transform .4s var(--ease)}
.res-card:hover .go svg{transform:translateX(5px)}
.info-row{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:20px}
.info{border:1px solid var(--line-light);padding:28px;display:grid;gap:12px;align-content:start}
.info b{font-weight:400;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--brass-hi)}
.info table{border-collapse:collapse;font-variant-numeric:tabular-nums}
.info td{padding:4px 0}
.info td+td{text-align:right;padding-left:20px}
.info a{text-decoration-color:rgba(246,243,236,.3);text-underline-offset:4px}
.open-now{display:inline-flex;align-items:center;gap:8px;font-size:13px}
.open-now::before{content:"";width:8px;height:8px;border-radius:50%;background:#7BD88F;box-shadow:0 0 10px #7BD88F}
.open-now.closed::before{background:#E07A6B;box-shadow:0 0 10px #E07A6B}
/* Closed reads as struck out, so the state is legible without colour alone. */
.open-now.closed{text-decoration:line-through;text-decoration-thickness:1px;text-decoration-color:rgba(77,74,122,.6)}
@media (max-width:860px){.res-cards,.info-row{grid-template-columns:1fr}.res-card{min-height:340px}}

/* Insta */
.insta{background:var(--ink);padding-bottom:clamp(60px,8vw,110px)}
.insta-head{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;margin-bottom:26px}
.insta-head a{font-family:var(--f-display);font-style:italic;font-size:clamp(24px,2.6vw,38px);text-decoration:none}
.insta-head a:hover{color:var(--brass-hi)}
.insta-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.insta-grid a{aspect-ratio:1;overflow:hidden;position:relative}
.insta-grid img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease),filter .5s}
.insta-grid a:hover img{transform:scale(1.08);filter:brightness(.7)}
@media (max-width:760px){.insta-grid{grid-template-columns:repeat(3,1fr)}}

/* Footer */
.foot{background:var(--cobalt);color:var(--paper);padding-top:clamp(60px,8vw,100px);overflow:hidden}
.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px}
.foot h4{margin:0 0 14px;font-weight:400;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--brass-hi)}
.foot ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.foot a{text-decoration:none;opacity:.85}
.foot a:hover{opacity:1;text-decoration:underline;text-underline-offset:4px}
.foot-lead{font-family:var(--f-display);font-style:italic;font-size:clamp(24px,2.4vw,34px);line-height:1.2;max-width:18ch}
.wordmark{font-family:var(--f-display);font-size:clamp(90px,24vw,400px);line-height:.8;text-align:center;letter-spacing:-.03em;margin-top:60px;transform:translateY(12%);color:var(--paper);user-select:none}
.foot-bottom{position:relative;z-index:1;background:var(--cobalt);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:12px;letter-spacing:.12em;text-transform:uppercase;opacity:.7;padding-block:22px;border-top:1px solid var(--line-light)}
@media (max-width:860px){.foot-grid{grid-template-columns:1fr 1fr}.foot-grid>div:first-child{grid-column:1/-1}}

/* Mobile book bar */
.mbar{display:none}
@media (max-width:860px){
  .mbar{display:flex;position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:40;justify-content:center;transform:translateY(140%);transition:transform .6s var(--ease)}
  .mbar.show{transform:none}
  .mbar .btn{width:100%;justify-content:center;box-shadow:0 10px 30px rgba(0,0,0,.35)}
}

/* Reveal */
.js .rv{opacity:0;transform:translateY(34px);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease)}
.js .rv.in{opacity:1;transform:none}
.js .rv-img{clip-path:inset(12% 0 0 0);transition:clip-path 1.4s var(--ease)}
.js .rv-img.in{clip-path:inset(0 0 0 0)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.001s!important}
  .ticker-track{animation:none}
}

/* ---------- Menu panels ----------
   Every category is real HTML so the full card is available without
   JavaScript; site.js turns the panel set into tabs. */
.menu-cat[hidden]{display:none}

/* Hotspot pins are placed on the chandelier by hero.js — keep them invisible
   until the first projected frame so they never flash at the top-left. */
.hero-stick:not(.no-webgl) .hs{opacity:0}

/* ---------- Fallbacks without JavaScript ----------
   The inline head script adds `.js` to <html>; when scripts are unavailable
   the loader must release the page on its own and the hero's chapter links
   must be reachable, since hero.js can never place the hotspot pins. */
html:not(.js) .loader{animation:loaderAway .9s ease 1.4s forwards}
@keyframes loaderAway{to{opacity:0;visibility:hidden}}
html:not(.js) .hs-static{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
