/* ==========================================================================
   THE RAJ — Kettering
   "Modern Bengali heritage" — an editorial identity built from three crafts:

     alpana   the white rice-paste art drawn on Bengali thresholds
              → fine SVG linework, the loader motif, the confirmation mark
     kantha   running-stitch quilting
              → dashed rules that sew themselves across the page
     jamdani  the Dhaka handloom weave
              → a faint lozenge lattice used as surface texture

   Palette comes from the food, not from "restaurant": river indigo-teal,
   rice-paper off-white, mustard seed (shorshe) as the one accent, jamun
   purple and terracotta in support.

   No framework. Everything below is hand-written.
   ========================================================================== */

/* ---------- Tokens -------------------------------------------------------- */

:root{
  /* Surfaces */
  --river:      #0C2A31;   /* deep river teal — the "ink" surface   */
  --river-2:    #10373F;
  --river-3:    #17464F;
  --rice:       #F3EDE1;   /* rice paper — the default page surface */
  --rice-2:     #EAE1CF;
  --rice-3:     #DED2BB;

  /* Accents — used sparingly */
  --shorshe:    #D29A1C;   /* mustard seed */
  --shorshe-lt: #E8BC53;
  --jamun:      #4E2543;   /* black plum   */
  --terra:      #AC5636;   /* terracotta   */

  /* Text */
  --ink:        #13272C;
  --ink-soft:   #4A6068;
  --ink-faint:  #81969C;
  --on-river:   #EFE7D8;
  --on-river-s: #9FB4B9;

  /* Lines */
  --rule:       rgba(19,39,44,.16);
  --rule-river: rgba(239,231,216,.18);

  /* Type */
  --display: "Fraunces", Georgia, "Times New Roman", serif;
  --body:    "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
  --bangla:  "Tiro Bangla", "Noto Serif Bengali", serif;

  /* Motion */
  --ease:     cubic-bezier(.16,1,.3,1);      /* expo-out    */
  --ease-io:  cubic-bezier(.76,0,.24,1);     /* expo-in-out */

  /* Rhythm */
  --gut:   clamp(1.25rem, 4vw, 3rem);
  --sect:  clamp(5rem, 11vw, 11rem);
  --maxw:  84rem;
}

/* ---------- Reset --------------------------------------------------------- */

*,*::before,*::after{ box-sizing:border-box; }

html{
  -webkit-text-size-adjust:100%;
  scroll-padding-top:6rem;
}
/* Lenis drives scrolling; native smooth-scroll would fight it. */
html.js.lenis{ scroll-behavior:auto; }
html:not(.js){ scroll-behavior:smooth; }

body{
  margin:0;
  background:var(--rice);
  color:var(--ink);
  font-family:var(--body);
  font-weight:400;
  font-size:clamp(.95rem,.91rem + .18vw,1.0625rem);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}

img,svg{ display:block; max-width:100%; }
img{ height:auto; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; }
h1,h2,h3,h4,p,dl,dd,figure,fieldset,legend{ margin:0; }
ul,ol{ margin:0; padding:0; list-style:none; }
fieldset{ border:0; padding:0; min-width:0; }

::selection{ background:var(--shorshe); color:var(--river); }

/* ---------- Textures ------------------------------------------------------ */

/* Paper grain over the entire document. */
.grain{
  position:fixed; inset:-50%;
  z-index:9000;
  pointer-events:none;
  opacity:.4;
  mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.34'/%3E%3C/svg%3E");
}

/* Jamdani — a faint lozenge lattice. Applied to feature surfaces only. */
.weave{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cg fill='none' stroke='%230C2A31' stroke-width='.55'%3E%3Cpath d='M24 9 L35 24 L24 39 L13 24 Z'/%3E%3C/g%3E%3Ccircle cx='24' cy='24' r='1.5' fill='%230C2A31'/%3E%3C/svg%3E");
  background-size:48px 48px;
}
.weave--river{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cg fill='none' stroke='%23EFE7D8' stroke-width='.55'%3E%3Cpath d='M24 9 L35 24 L24 39 L13 24 Z'/%3E%3C/g%3E%3Ccircle cx='24' cy='24' r='1.5' fill='%23EFE7D8'/%3E%3C/svg%3E");
}

/* ---------- Layout -------------------------------------------------------- */

.wrap{
  width:100%;
  max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:var(--gut);
}

/* ---------- Typography ---------------------------------------------------- */

.h2{
  font-family:var(--display);
  font-weight:400;
  font-size:clamp(2.1rem,5.2vw,4.4rem);
  line-height:1.02;
  letter-spacing:-.025em;
  font-variation-settings:"SOFT" 28,"WONK" 1,"opsz" 110;
}
.h2 em{
  font-style:italic;
  font-variation-settings:"SOFT" 60,"WONK" 1,"opsz" 110;
}

.eyebrow{
  font-size:.6875rem;
  font-weight:600;
  letter-spacing:.26em;
  text-transform:uppercase;
  color:var(--ink-faint);
  display:flex;
  align-items:center;
  gap:.75rem;
  margin-bottom:1.4rem;
}
.eyebrow::before{
  content:"";
  width:1.6rem; height:1px;
  background:currentColor;
  flex:none;
}

.prose p{
  color:var(--ink-soft);
  line-height:1.78;
  max-width:46ch;
}
.prose p + p{ margin-top:1.15rem; }
.prose strong{ color:var(--ink); font-weight:600; }

/* Bengali script */
.bn,[lang="bn"]{ font-family:var(--bangla); }

/* ---------- Kantha stitch divider ---------------------------------------- */

.kantha{ width:100%; height:12px; margin-bottom:clamp(3rem,7vw,6rem); }
.kantha svg{ width:100%; height:12px; overflow:visible; }
.kantha path{
  fill:none;
  stroke:var(--ink);
  stroke-width:1.4;
  stroke-linecap:round;
  stroke-dasharray:9 8;
  opacity:.4;
}
.on-river .kantha path{ stroke:var(--on-river); opacity:.45; }

/* ---------- Pills (buttons) ---------------------------------------------- */

.pill{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:.95rem 1.9rem;
  border-radius:100px;
  font-size:.75rem;
  font-weight:600;
  letter-spacing:.11em;
  text-transform:uppercase;
  border:1px solid transparent;
  cursor:pointer;
  will-change:transform;
  transition:background-color .5s var(--ease),color .5s var(--ease),
             border-color .5s var(--ease);
}
.pill span{ position:relative; z-index:2; display:block; }

.pill--solid{ background:var(--river); color:var(--rice); border-color:var(--river); }
.pill--solid:hover{ background:var(--shorshe); border-color:var(--shorshe); color:var(--river); }

.pill--ghost{ background:transparent; color:var(--ink); border-color:var(--rule); }
.pill--ghost:hover{ border-color:var(--river); background:var(--river); color:var(--rice); }

.pill--block{ display:flex; width:100%; margin-top:auto; }

.on-river .pill--solid{ background:var(--shorshe); border-color:var(--shorshe); color:var(--river); }
.on-river .pill--solid:hover{ background:var(--rice); border-color:var(--rice); }
.on-river .pill--ghost{ color:var(--on-river); border-color:var(--rule-river); }
.on-river .pill--ghost:hover{ background:var(--on-river); color:var(--river); border-color:var(--on-river); }

/* ---------- Skip link ----------------------------------------------------- */

.skip-link{
  position:absolute; left:1rem; top:-100%;
  z-index:9500;
  background:var(--shorshe); color:var(--river);
  padding:.7rem 1.2rem;
  font-size:.75rem; font-weight:700;
  letter-spacing:.12em; text-transform:uppercase;
  border-radius:100px;
  transition:top .25s ease;
}
.skip-link:focus{ top:1rem; }

:is(a,button,input,select,textarea):focus-visible{
  outline:2px solid var(--shorshe);
  outline-offset:3px;
  border-radius:2px;
}

/* ==========================================================================
   LOADER
   ========================================================================== */

.loader{
  position:fixed; inset:0;
  z-index:9400;
  display:grid; place-items:center;
  pointer-events:none;
}
.loader__panel{
  position:absolute; left:0; right:0;
  height:50.5%;
  background:var(--river);
  will-change:transform;
}
.loader__panel--t{ top:0; }
.loader__panel--b{ bottom:0; }

.loader__inner{
  position:relative;
  z-index:2;
  display:grid;
  justify-items:center;
  gap:1.5rem;
}

.alpana{ width:min(34vw,180px); height:auto; overflow:visible; }
.alpana [stroke],
.alpana circle,
.alpana path{
  fill:none;
  stroke:var(--rice);
  stroke-width:1.5;
  stroke-linecap:round;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
}
.alpana .al-ring{ stroke-width:1; opacity:.55; }
.alpana .al-ring--dot{ stroke-dasharray:1.5 9; stroke-width:2; opacity:.8; }
.alpana .al-core{ fill:var(--shorshe); stroke:var(--shorshe); }

.loader__word{
  font-family:var(--bangla);
  font-size:1.6rem;
  color:var(--shorshe);
  letter-spacing:.1em;
  opacity:0;
}

html.loaded .loader{ display:none; }
/* No JS → never show the curtain. */
html:not(.js) .loader{ display:none; }

/* ==========================================================================
   CURSOR  (fine pointers only)
   ========================================================================== */

.cursor{ display:none; }
@media (hover:hover) and (pointer:fine){
  html.js .cursor{
    display:block;
    position:fixed; top:0; left:0;
    z-index:9200;
    pointer-events:none;
    will-change:transform;
  }
  .cursor__dot{
    display:block;
    width:9px; height:9px;
    margin:-4.5px 0 0 -4.5px;
    border-radius:50%;
    background:var(--river);
    transition:width .4s var(--ease),height .4s var(--ease),
               margin .4s var(--ease),background-color .4s var(--ease),
               opacity .3s ease;
  }
  .cursor.is-big .cursor__dot{
    width:52px; height:52px;
    margin:-26px 0 0 -26px;
    background:rgba(210,154,28,.25);
  }
  .cursor.is-dark .cursor__dot{ background:var(--shorshe); }
  /* Hide the real cursor only where ours stands in. */
  html.js.has-cursor body{ cursor:none; }
  html.js.has-cursor a,
  html.js.has-cursor button{ cursor:none; }
}

/* ==========================================================================
   HEADER
   ========================================================================== */

.nav{
  position:fixed; top:0; left:0; right:0;
  z-index:8000;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:2rem;
  padding:1.1rem var(--gut);
  transition:background-color .5s var(--ease),
             box-shadow .5s var(--ease),
             padding .5s var(--ease);
}
.nav.is-stuck{
  background:rgba(243,237,225,.88);
  backdrop-filter:blur(16px) saturate(150%);
  -webkit-backdrop-filter:blur(16px) saturate(150%);
  box-shadow:0 1px 0 var(--rule);
  padding-block:.7rem;
}
/* Over the hero the header sits on dark imagery. */
.nav.is-over-dark{ color:var(--rice); }
.nav.is-over-dark .pill--solid{ background:var(--rice); border-color:var(--rice); color:var(--river); }
.nav.is-over-dark .pill--solid:hover{ background:var(--shorshe); border-color:var(--shorshe); }
.nav.is-over-dark .burger span{ background:var(--rice); }

.nav__mark{ display:flex; align-items:baseline; gap:.55rem; flex:none; }
.nav__mark-en{
  font-family:var(--display);
  font-size:1.3rem;
  font-weight:500;
  letter-spacing:-.02em;
  font-variation-settings:"SOFT" 30,"WONK" 1,"opsz" 40;
}
.nav__mark-bn{
  font-family:var(--bangla);
  font-size:1.05rem;
  color:var(--shorshe);
}

.nav__links{ display:flex; gap:2rem; }
.nav__links a{
  position:relative;
  font-size:.75rem;
  font-weight:500;
  letter-spacing:.14em;
  text-transform:uppercase;
  padding:.3rem 0;
  opacity:.72;
  transition:opacity .35s ease;
}
.nav__links a::after{
  content:"";
  position:absolute; left:0; right:0; bottom:0;
  height:1px;
  background:currentColor;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .5s var(--ease);
}
.nav__links a:hover{ opacity:1; }
.nav__links a:hover::after,
.nav__links a.is-on::after{ transform:scaleX(1); }
.nav__links a.is-on{ opacity:1; color:var(--shorshe); }

.nav__book{ flex:none; }

.burger{
  display:none;
  width:44px; height:44px;
  margin-right:-10px;
  background:none; border:0;
  padding:0;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  cursor:pointer;
}
.burger span{
  display:block; width:22px; height:1.5px;
  background:var(--ink);
  transition:transform .45s var(--ease),opacity .25s ease;
}
.burger.is-open span:nth-child(1){ transform:translateY(3.75px) rotate(45deg); }
.burger.is-open span:nth-child(2){ transform:translateY(-3.75px) rotate(-45deg); }

/* Mobile drawer */
.drawer{
  position:fixed; inset:0;
  z-index:7900;
  background:var(--river);
  color:var(--on-river);
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:3rem;
  padding:6rem var(--gut) 3rem;
  clip-path:inset(0 0 100% 0);
  transition:clip-path .75s var(--ease-io);
  pointer-events:none;
}
.drawer.is-open{ clip-path:inset(0 0 0 0); pointer-events:auto; }
.drawer nav{ display:grid; gap:.35rem; }
.drawer nav a{
  font-family:var(--display);
  font-size:clamp(2rem,9vw,3rem);
  line-height:1.15;
  font-variation-settings:"SOFT" 30,"WONK" 1,"opsz" 90;
  opacity:0;
  transform:translateY(16px);
  transition:opacity .5s ease,transform .6s var(--ease);
}
.drawer.is-open nav a{ opacity:1; transform:none; }
.drawer.is-open nav a:nth-child(1){ transition-delay:.18s }
.drawer.is-open nav a:nth-child(2){ transition-delay:.23s }
.drawer.is-open nav a:nth-child(3){ transition-delay:.28s }
.drawer.is-open nav a:nth-child(4){ transition-delay:.33s }
.drawer.is-open nav a:nth-child(5){ transition-delay:.38s }
.drawer.is-open nav a:nth-child(6){ transition-delay:.43s }
.drawer__foot{
  display:grid; gap:.3rem;
  font-size:.8rem;
  color:var(--on-river-s);
  border-top:1px solid var(--rule-river);
  padding-top:1.5rem;
}
.drawer__foot a{ color:var(--shorshe); font-size:1.1rem; font-weight:600; }

/* Floating book pill — phones only */
.book-float{
  position:fixed;
  left:50%; bottom:1.1rem;
  transform:translate(-50%,140%);
  z-index:7800;
  display:none;
  padding:.95rem 2.1rem;
  border-radius:100px;
  background:var(--river);
  color:var(--rice);
  font-size:.72rem; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase;
  box-shadow:0 8px 30px -8px rgba(12,42,49,.55);
  transition:transform .6s var(--ease);
}
.book-float.is-on{ transform:translate(-50%,0); }

/* ==========================================================================
   HERO
   ========================================================================== */

.hero{
  position:relative;
  min-height:100svh;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:8rem var(--gut) 4rem;
  background:var(--river);
  color:var(--on-river);
  overflow:hidden;
}
.hero::after{
  /* jamdani weave, barely there */
  content:"";
  position:absolute; inset:0;
  opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cg fill='none' stroke='%23EFE7D8' stroke-width='.55'%3E%3Cpath d='M24 9 L35 24 L24 39 L13 24 Z'/%3E%3C/g%3E%3C/svg%3E");
  pointer-events:none;
}

.hero__spine{
  position:absolute;
  left:calc(var(--gut) - .35rem); top:50%;
  transform:translateY(-50%) rotate(180deg);
  writing-mode:vertical-rl;
  font-size:.64rem;
  letter-spacing:.34em;
  text-transform:uppercase;
  color:var(--on-river-s);
  opacity:.75;
}

.hero__watermark{
  position:absolute;
  right:-.12em; bottom:-.26em;
  font-family:var(--bangla);
  font-size:clamp(16rem,42vw,44rem);
  line-height:.8;
  color:var(--rice);
  opacity:.055;
  pointer-events:none;
  user-select:none;
  will-change:transform;
}

.hero__grid{
  position:relative;
  z-index:2;
  width:100%;
  max-width:var(--maxw);
  margin-inline:auto;
  display:grid;
  grid-template-columns:1.05fr .95fr;
  align-items:center;
  gap:clamp(2rem,6vw,5rem);
  padding-left:clamp(1.5rem,4vw,3.5rem);
}

.hero__type .eyebrow{ color:var(--shorshe); }
.hero__type .eyebrow::before{ background:var(--shorshe); }

.hero__title{
  font-family:var(--display);
  font-weight:300;
  font-size:clamp(3rem,8.4vw,7.4rem);
  line-height:.96;
  letter-spacing:-.035em;
  font-variation-settings:"SOFT" 24,"WONK" 1,"opsz" 144;
  margin:0 0 2rem;
}
.hero__title em{
  font-style:italic;
  color:var(--shorshe);
  font-variation-settings:"SOFT" 70,"WONK" 1,"opsz" 144;
}
.hero__title .line{ display:block; overflow:hidden; padding-bottom:.08em; }
.hero__title .w{ display:inline-block; }

.hero__lede{
  max-width:34ch;
  color:var(--on-river-s);
  font-size:1.02rem;
  line-height:1.7;
}

.hero__cta{ display:flex; flex-wrap:wrap; gap:.8rem; margin-top:2.4rem; }
.hero__cta .pill--solid{ background:var(--shorshe); border-color:var(--shorshe); color:var(--river); }
.hero__cta .pill--solid:hover{ background:var(--rice); border-color:var(--rice); }
.hero__cta .pill--ghost{ color:var(--on-river); border-color:var(--rule-river); }
.hero__cta .pill--ghost:hover{ background:var(--on-river); color:var(--river); border-color:var(--on-river); }

.hero__shot{
  position:relative;
  margin:0;
  will-change:transform;
}
.hero__shot img{
  width:100%;
  aspect-ratio:4/5;
  object-fit:cover;
  filter:saturate(.95) contrast(1.04);
}
.hero__shot figcaption{
  position:absolute;
  left:0; bottom:-2.1rem;
  font-size:.62rem;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--on-river-s);
}
/* kantha corner marks on the image */
.hero__shot::before,
.hero__shot::after{
  content:"";
  position:absolute;
  width:30px; height:30px;
  border:1px dashed var(--shorshe);
  opacity:.65;
}
.hero__shot::before{ top:-10px; left:-10px; border-right:0; border-bottom:0; }
.hero__shot::after{ bottom:-10px; right:-10px; border-left:0; border-top:0; }

.hero__meta{
  position:relative;
  z-index:2;
  width:100%;
  max-width:var(--maxw);
  margin:clamp(2.5rem,6vw,4.5rem) auto 0;
  padding-left:clamp(1.5rem,4vw,3.5rem);
  display:flex;
  flex-wrap:wrap;
  gap:1.4rem;
  font-size:.68rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--on-river-s);
}
.hero__meta a{ color:var(--shorshe); }

/* ==========================================================================
   MARQUEE
   ========================================================================== */

.marquee{
  background:var(--river);
  color:var(--on-river);
  border-top:1px solid var(--rule-river);
  padding:1.1rem 0;
  overflow:hidden;
  white-space:nowrap;
}
.marquee__track{
  display:inline-flex;
  align-items:center;
  gap:1.6rem;
  will-change:transform;
}
.marquee__track span{
  font-family:var(--display);
  font-size:clamp(1.1rem,2.4vw,1.7rem);
  font-variation-settings:"SOFT" 40,"WONK" 1,"opsz" 60;
  letter-spacing:-.01em;
}
.marquee__track span.bn{
  font-family:var(--bangla);
  color:var(--shorshe);
}
.marquee__track i{ color:var(--on-river-s); font-size:.6rem; font-style:normal; opacity:.6; }

/* ==========================================================================
   STORY
   ========================================================================== */

.story{ padding:var(--sect) 0; }
.story__grid{
  display:grid;
  grid-template-columns:.95fr 1.05fr;
  gap:clamp(2.5rem,7vw,6rem);
  align-items:center;
}
.story__figs{ position:relative; padding-bottom:4rem; }
.story__fig{ margin:0; overflow:hidden; will-change:transform; }
.story__fig img{ width:100%; object-fit:cover; }
.story__fig--a{ aspect-ratio:4/5; }
.story__fig--b{
  position:absolute;
  right:-8%; bottom:0;
  width:46%;
  aspect-ratio:1;
  border:8px solid var(--rice);
}
.story__stamp{
  position:absolute;
  left:-4%; bottom:1.5rem;
  background:var(--shorshe);
  color:var(--river);
  padding:1rem 1.25rem;
  display:grid;
  gap:.2rem;
  text-align:center;
}
.story__stamp em{
  font-family:var(--display);
  font-style:normal;
  font-size:2.3rem;
  line-height:1;
  font-variation-settings:"SOFT" 30,"WONK" 1,"opsz" 90;
}
.story__stamp span{
  font-size:.56rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  line-height:1.5;
}

.story__text .h2{ margin-bottom:2rem; }
.sign{ margin-top:2.4rem; display:grid; gap:.3rem; }
.sign__name{
  font-family:var(--display);
  font-style:italic;
  font-size:1.3rem;
  font-variation-settings:"SOFT" 70,"WONK" 1,"opsz" 60;
}
.sign__role{
  font-size:.62rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ink-faint);
}

/* ==========================================================================
   SIGNATURES  (pinned horizontal on desktop, swipe carousel on mobile)
   ========================================================================== */

.sigs{
  background:var(--river);
  color:var(--on-river);
  padding:var(--sect) 0;
  overflow:hidden;
}
.sigs .eyebrow{ color:var(--shorshe); }
.sigs .eyebrow::before{ background:var(--shorshe); }
.sigs .h2 em{ color:var(--shorshe); }

.sigs__head{ position:relative; margin-bottom:clamp(2.5rem,6vw,4rem); }
.sigs__hint{
  position:absolute; right:var(--gut); bottom:0;
  font-size:.64rem; letter-spacing:.24em; text-transform:uppercase;
  color:var(--on-river-s);
}

.sigs__viewport{ width:100%; }
.sigs__track{
  display:flex;
  gap:clamp(1.25rem,3vw,2.5rem);
  padding-inline:var(--gut);
  will-change:transform;
}

.sig{
  flex:0 0 auto;
  width:min(78vw,27rem);
  display:grid;
  gap:1.5rem;
}
.sig__img{
  margin:0;
  overflow:hidden;
  aspect-ratio:4/5;
  background:var(--river-2);
}
.sig__img img{
  width:100%; height:100%;
  object-fit:cover;
  filter:saturate(.95);
  transition:transform 1.2s var(--ease);
}
.sig:hover .sig__img img{ transform:scale(1.05); }

.sig__body{ display:grid; gap:.5rem; }
.sig__num{
  font-size:.64rem;
  letter-spacing:.24em;
  color:var(--shorshe);
}
.sig__bn{
  font-family:var(--bangla);
  font-size:1.6rem;
  line-height:1.3;
  color:var(--on-river);
}
.sig__en{
  font-family:var(--display);
  font-weight:400;
  font-size:1.55rem;
  letter-spacing:-.02em;
  font-variation-settings:"SOFT" 40,"WONK" 1,"opsz" 70;
  margin:0;
}
.sig__story{
  color:var(--on-river-s);
  font-size:.9rem;
  line-height:1.7;
  max-width:38ch;
}

/* ==========================================================================
   MENU
   ========================================================================== */

.menu{ padding:var(--sect) 0; }
.menu__head{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  justify-content:space-between;
  gap:2rem;
  margin-bottom:clamp(2.5rem,6vw,4rem);
}
.menu__note{
  max-width:36ch;
  font-size:.88rem;
  line-height:1.7;
  color:var(--ink-soft);
}

.menu__tabs{
  position:relative;
  display:flex;
  gap:clamp(1.4rem,3.5vw,2.75rem);
  overflow-x:auto;
  scrollbar-width:none;
  border-bottom:1px solid var(--rule);
  margin-bottom:clamp(2.5rem,5vw,3.5rem);
  padding-inline:2px;
}
.menu__tabs::-webkit-scrollbar{ display:none; }

.mtab{
  position:relative;
  flex:none;
  background:none;
  border:0;
  padding:.1rem 0 1.1rem;
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--ink-faint);
  cursor:pointer;
  white-space:nowrap;
  transition:color .4s ease;
}
.mtab:hover{ color:var(--ink); }
.mtab[aria-selected="true"]{ color:var(--ink); }

/* The sliding kantha-stitch underline. */
.mtab__stitch{
  position:absolute;
  left:0; bottom:-1px;
  height:2px;
  width:0;
  pointer-events:none;
  background-image:linear-gradient(90deg,var(--river) 0 9px,transparent 9px 17px);
  background-size:17px 2px;
  transition:transform .6s var(--ease),width .6s var(--ease);
}

/* Dish list — two columns of a printed menu */
.dishes{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(1.5rem,3vw,2.6rem) clamp(3rem,7vw,6rem);
}
.dish{ border-bottom:1px dashed var(--rule); padding-bottom:1.3rem; }
.dish__hit{
  display:block;
  width:100%;
  background:none;
  border:0;
  padding:0;
  text-align:left;
  cursor:default;
}
.dish__row{ display:flex; align-items:baseline; gap:.7rem; }
.dish__name{
  font-family:var(--display);
  font-size:1.08rem;
  font-weight:500;
  letter-spacing:-.015em;
  font-variation-settings:"SOFT" 30,"WONK" 0,"opsz" 40;
}
.dish__lead{
  flex:1 1 auto;
  min-width:1.2rem;
  border-bottom:1px dotted var(--ink-faint);
  transform:translateY(-.28em);
  opacity:.6;
}
.dish__price{
  flex:none;
  font-size:.88rem;
  font-weight:600;
  font-variant-numeric:tabular-nums;
  color:var(--terra);
}
/* Sits OUTSIDE .dish__hit — a <button> clamps its descendants' layout, so a
   max-height transition on a child inside one can never expand. */
.dish__desc{
  display:block;
  margin-top:.45rem;
  font-size:.845rem;
  line-height:1.65;
  color:var(--ink-soft);
  max-width:44ch;
}

.tag{
  display:inline-block;
  margin-left:.45rem;
  padding:.1rem .4rem;
  font-family:var(--body);
  font-style:normal;
  font-size:.5625rem;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--ink-faint);
  border:1px solid var(--rule);
  border-radius:2px;
  vertical-align:middle;
  transform:translateY(-.15em);
}
.tag--sig{
  color:var(--shorshe);
  border-color:rgba(210,154,28,.45);
  background:rgba(210,154,28,.1);
}

/* Floating image that trails the cursor (desktop only) */
.dish-peek{
  position:fixed;
  top:0; left:0;
  z-index:6000;
  width:210px; height:264px;
  pointer-events:none;
  opacity:0;
  overflow:hidden;
  will-change:transform;
  display:none;
}
.dish-peek img{ width:100%; height:100%; object-fit:cover; }
@media (hover:hover) and (pointer:fine){
  html.js .dish-peek{ display:block; }
}

/* The Traditional Table */
.trad{
  margin-top:clamp(2.5rem,5vw,4rem);
  padding-top:clamp(2rem,4vw,3rem);
  border-top:1px solid var(--rule);
}
.trad h3{
  font-family:var(--display);
  font-size:1.5rem;
  font-weight:400;
  font-variation-settings:"SOFT" 30,"WONK" 1,"opsz" 60;
  margin-bottom:.6rem;
}
.trad p{ color:var(--ink-soft); font-size:.9rem; max-width:48ch; margin-bottom:1.4rem; }
.trad strong{ color:var(--ink); }
.trad ul{ display:flex; flex-wrap:wrap; gap:.55rem; }
.trad li{
  padding:.5rem 1rem;
  border:1px solid var(--rule);
  border-radius:100px;
  font-size:.68rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--ink-soft);
  transition:border-color .4s ease,color .4s ease;
}
.trad li:hover{ border-color:var(--terra); color:var(--terra); }

.menu__foot{
  margin-top:2.5rem;
  padding-top:1.8rem;
  border-top:1px solid var(--rule);
  font-size:.8rem;
  color:var(--ink-soft);
  max-width:60ch;
}
.menu__foot a{ color:var(--terra); text-decoration:underline; text-underline-offset:3px; }

.menu__legend{
  margin-top:clamp(2.5rem,5vw,3.5rem);
  padding-top:1.5rem;
  border-top:1px solid var(--rule);
  display:flex;
  flex-wrap:wrap;
  gap:1rem;
  justify-content:space-between;
  font-size:.7rem;
  color:var(--ink-faint);
}
.menu__disclaim{ letter-spacing:.18em; text-transform:uppercase; }

/* ==========================================================================
   ANTHOLOGY
   ========================================================================== */

.anth{
  position:relative;
  background:var(--jamun);
  color:var(--on-river);
  padding:var(--sect) 0;
  overflow:hidden;
}
.anth::before{
  content:"";
  position:absolute; inset:0;
  opacity:.06;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cg fill='none' stroke='%23EFE7D8' stroke-width='.55'%3E%3Cpath d='M24 9 L35 24 L24 39 L13 24 Z'/%3E%3C/g%3E%3C/svg%3E");
  pointer-events:none;
}
.anth .wrap{ position:relative; z-index:2; }
.anth .eyebrow{ color:var(--shorshe); }
.anth .eyebrow::before{ background:var(--shorshe); }
.anth .h2 em{ color:var(--shorshe); }

.anth__head{ max-width:46rem; margin-bottom:clamp(2.5rem,6vw,4rem); }
.anth__lede{ margin-top:1.5rem; color:var(--on-river-s); max-width:52ch; line-height:1.75; }

.anth__grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:clamp(1rem,2.5vw,1.75rem);
}
.anth__card{
  display:flex;
  flex-direction:column;
  padding:clamp(1.75rem,3vw,2.5rem);
  border:1px solid var(--rule-river);
  background:rgba(239,231,216,.035);
  transition:border-color .5s var(--ease),transform .5s var(--ease);
}
.anth__card:hover{ border-color:rgba(210,154,28,.5); transform:translateY(-4px); }
.anth__card--feature{ border-color:rgba(210,154,28,.45); background:rgba(210,154,28,.07); }

.anth__tier{
  font-size:.6rem;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--on-river-s);
  margin-bottom:.9rem;
}
.anth__card--feature .anth__tier{ color:var(--shorshe); }
.anth__card h3{
  font-family:var(--display);
  font-weight:400;
  font-size:1.85rem;
  font-variation-settings:"SOFT" 35,"WONK" 1,"opsz" 70;
  margin-bottom:.8rem;
}
.anth__price{
  font-family:var(--display);
  font-size:1.6rem;
  color:var(--shorshe);
  margin-bottom:1.8rem;
  font-variation-settings:"SOFT" 30,"WONK" 0,"opsz" 60;
}
.anth__price i{
  font-family:var(--body);
  font-style:normal;
  font-size:.6rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--on-river-s);
  margin-left:.6rem;
}
.anth__card dl{ display:grid; gap:1rem; margin-bottom:2rem; }
.anth__card dt{
  font-size:.58rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--on-river);
  margin-bottom:.25rem;
}
.anth__card dd{
  margin:0;
  font-size:.85rem;
  line-height:1.65;
  color:var(--on-river-s);
}
.anth__card .pill--ghost{ color:var(--on-river); border-color:var(--rule-river); }
.anth__card .pill--ghost:hover{ background:var(--on-river); color:var(--jamun); border-color:var(--on-river); }
.anth__card .pill--solid{ background:var(--shorshe); border-color:var(--shorshe); color:var(--jamun); }
.anth__card .pill--solid:hover{ background:var(--rice); border-color:var(--rice); }

.anth__disclaim{
  margin-top:2rem;
  text-align:center;
  font-size:.64rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--on-river-s);
}

/* ==========================================================================
   ROOMS
   ========================================================================== */

.rooms{ padding:var(--sect) 0; }
.rooms__head{ margin-bottom:clamp(2.5rem,6vw,4rem); }
.rooms__grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:clamp(1.5rem,3vw,2.5rem);
}
.room figure{ margin:0 0 1.5rem; overflow:hidden; aspect-ratio:4/3; background:var(--rice-2); }
.room figure img{ width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease); }
.room:hover figure img{ transform:scale(1.05); }
.room__floor{
  display:block;
  font-size:.6rem;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--terra);
  margin-bottom:.6rem;
}
.room--teal .room__floor{ color:var(--river-3); }
.room h3{
  font-family:var(--display);
  font-weight:400;
  font-size:1.6rem;
  font-variation-settings:"SOFT" 35,"WONK" 1,"opsz" 60;
  margin-bottom:.7rem;
}
.room p{ color:var(--ink-soft); font-size:.88rem; line-height:1.7; margin-bottom:1.2rem; }

.arrow{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  font-size:.68rem;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--ink);
  border-bottom:1px solid var(--rule);
  padding-bottom:.3rem;
  transition:gap .4s var(--ease),border-color .4s ease,color .4s ease;
}
.arrow::after{ content:"→"; }
.arrow:hover{ gap:.9rem; color:var(--terra); border-color:var(--terra); }

/* ==========================================================================
   GALLERY
   ========================================================================== */

.gallery{ padding:var(--sect) 0; background:var(--rice-2); }
.gallery__head{ margin-bottom:clamp(2.5rem,6vw,4rem); }
.gallery__cols{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:clamp(.75rem,1.6vw,1.25rem);
  align-items:start;
  padding-inline:var(--gut);
  max-width:var(--maxw);
  margin-inline:auto;
}
.gcol{ display:grid; gap:clamp(.75rem,1.6vw,1.25rem); will-change:transform; }
.gcol--mid{ margin-top:clamp(1.5rem,5vw,4rem); }

.gfig{
  position:relative;
  margin:0;
  overflow:hidden;
  background:var(--rice-3);
  /* Starting state for the wipe; JS animates to inset(0 0 0 0). */
  clip-path:inset(0 0 0 0);
}
html.js .gfig[data-wipe]{ clip-path:inset(0 0 100% 0); }
.gfig img{
  width:100%;
  display:block;
  filter:saturate(.92) contrast(1.03);
  transition:transform 1.3s var(--ease),filter .6s ease;
}
.gfig:hover img{ transform:scale(1.045); filter:saturate(1) contrast(1.05); }
.gfig figcaption{
  position:absolute;
  left:1rem; bottom:.85rem;
  font-size:.58rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--rice);
  text-shadow:0 1px 10px rgba(12,42,49,.7);
  opacity:0;
  transform:translateY(8px);
  transition:opacity .5s ease,transform .5s var(--ease);
}
.gfig:hover figcaption{ opacity:1; transform:none; }

/* ==========================================================================
   BOOKING
   ========================================================================== */

.book{ padding:var(--sect) 0; }
.book__grid{
  display:grid;
  grid-template-columns:.85fr 1.15fr;
  gap:clamp(2.5rem,6vw,5rem);
  align-items:start;
}

.book__aside{ position:relative; }
.book__note{ margin-top:2rem; color:var(--ink-soft); max-width:40ch; line-height:1.75; }
.book__contact{ display:grid; gap:1.25rem; margin-top:2.5rem; }
.book__contact a{ display:grid; gap:.2rem; }
.book__contact small{
  font-size:.58rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ink-faint);
}
.book__contact strong{
  font-family:var(--display);
  font-weight:400;
  font-size:1.3rem;
  font-variation-settings:"SOFT" 30,"WONK" 1,"opsz" 50;
  transition:color .4s ease;
  overflow-wrap:anywhere;
}
.book__contact a:hover strong{ color:var(--terra); }
.book__bn{
  position:absolute;
  left:-.1em; bottom:-2.5rem;
  font-family:var(--bangla);
  font-size:clamp(7rem,16vw,13rem);
  line-height:.8;
  color:var(--ink);
  opacity:.045;
  pointer-events:none;
  user-select:none;
}

.book__panel{
  position:relative;
  background:var(--rice);
  border:1px solid var(--rule);
  padding:clamp(1.75rem,4vw,3rem);
}

/* Step indicator */
.steps{
  display:flex;
  gap:1.75rem;
  margin-bottom:2.5rem;
  padding-bottom:1.5rem;
  border-bottom:1px dashed var(--rule);
  font-size:.62rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ink-faint);
}
.steps li{ display:flex; align-items:center; gap:.5rem; transition:color .4s ease; }
.steps li span{
  display:grid;
  place-items:center;
  width:1.5rem; height:1.5rem;
  border-radius:50%;
  border:1px solid var(--rule);
  font-size:.6rem;
  transition:background-color .4s ease,border-color .4s ease,color .4s ease;
}
.steps li.is-on{ color:var(--ink); }
.steps li.is-on span{ background:var(--river); border-color:var(--river); color:var(--rice); }
.steps li.is-done span{ background:var(--shorshe); border-color:var(--shorshe); color:var(--river); }

/* Steps */
.step[hidden]{ display:none; }
.step legend{
  font-family:var(--display);
  font-weight:400;
  font-size:clamp(1.35rem,2.6vw,1.75rem);
  line-height:1.2;
  letter-spacing:-.02em;
  font-variation-settings:"SOFT" 35,"WONK" 1,"opsz" 60;
  margin-bottom:2rem;
  padding:0;
}

.f-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1.75rem;
}
.field--wide{ grid-column:1 / -1; }

.field label{
  display:block;
  font-size:.58rem;
  font-weight:600;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--ink-faint);
  margin-bottom:.6rem;
}
.field label span{ text-transform:none; letter-spacing:.02em; font-weight:400; }

.input{
  width:100%;
  background:transparent;
  border:0;
  border-bottom:1px solid var(--rule);
  border-radius:0;
  padding:.65rem 0;
  font-family:inherit;
  font-size:1rem;
  color:var(--ink);
  -webkit-appearance:none;
  appearance:none;
  transition:border-color .4s ease;
}
.input::placeholder{ color:var(--ink-faint); opacity:.7; }
.input:focus{ outline:none; border-bottom-color:var(--shorshe); border-bottom-width:1.5px; }
.input:focus-visible{ outline:none; }

select.input{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7'%3E%3Cpath fill='%23AC5636' d='M5.5 7 0 0h11z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right .15rem center;
  padding-right:1.6rem;
  cursor:pointer;
}
textarea.input{ resize:vertical; min-height:2.8rem; }
input[type="date"].input,input[type="time"].input{ cursor:pointer; }
input[type="date"]::-webkit-calendar-picker-indicator{ cursor:pointer; opacity:.55; }

.err{
  margin-top:.4rem;
  min-height:1rem;
  font-size:.68rem;
  color:#A33A2B;
}
.input.is-bad{ border-bottom-color:#A33A2B; }

/* Quick party-size chips */
.chips{ display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1.5rem; }
.chips button{
  min-width:3rem;
  padding:.65rem .9rem;
  border:1px solid var(--rule);
  border-radius:100px;
  background:none;
  font-size:.85rem;
  font-weight:600;
  cursor:pointer;
  transition:background-color .35s ease,border-color .35s ease,color .35s ease;
}
.chips button:hover{ border-color:var(--river); }
.chips button.is-on{ background:var(--river); border-color:var(--river); color:var(--rice); }

.step__nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin-top:2.5rem;
}
.step__nav .pill{ flex:none; }

.book__small{
  margin-top:1.5rem;
  font-size:.72rem;
  line-height:1.65;
  color:var(--ink-faint);
  text-align:center;
}

/* Confirmation */
.confirm{ text-align:center; padding:1rem 0 .5rem; }
.confirm__mark{ width:150px; height:150px; margin:0 auto 1.75rem; overflow:visible; }
.confirm__mark circle,
.confirm__mark path{
  fill:none;
  stroke:var(--shorshe);
  stroke-width:1.5;
  stroke-linecap:round;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
}
.confirm__mark .cf-ring{ stroke-width:1; opacity:.5; }
/* Masks the petal tips so the tick reads as a tick, not a clock face. */
.confirm__mark .cf-disc{ fill:var(--rice); stroke:none; }
.confirm__mark .cf-tick{ stroke:var(--river); stroke-width:2.5; }

.confirm h3{
  font-family:var(--display);
  font-weight:400;
  font-size:clamp(1.6rem,3.2vw,2.2rem);
  font-variation-settings:"SOFT" 35,"WONK" 1,"opsz" 70;
  margin-bottom:1rem;
}
.confirm h3 span{ color:var(--terra); font-style:italic; }
.confirm > p{ color:var(--ink-soft); max-width:38ch; margin-inline:auto; line-height:1.7; }
.confirm__ref{
  display:inline-grid;
  gap:.25rem;
  margin:2rem 0 0;
  padding:.9rem 1.6rem;
  border:1px dashed var(--rule);
}
.confirm__ref small{
  font-size:.56rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ink-faint);
}
.confirm__ref span{
  font-family:var(--display);
  font-size:1.15rem;
  color:var(--terra);
}
.confirm__call{ margin-top:1.75rem; font-size:.78rem; color:var(--ink-faint); }
.confirm__call a{ color:var(--terra); }
.confirm #booking-again{ margin-top:1.75rem; }

/* ==========================================================================
   VISIT
   ========================================================================== */

.visit{ padding:var(--sect) 0 clamp(3rem,7vw,6rem); }
.visit__grid{
  display:grid;
  grid-template-columns:.9fr 1.1fr;
  gap:clamp(2.5rem,6vw,5rem);
  align-items:start;
}
.visit__addr{ margin-top:.9rem; color:var(--ink-soft); }

.hours{ margin-top:2.5rem; display:grid; gap:0; }
.hours > div{
  display:flex;
  justify-content:space-between;
  gap:1.5rem;
  padding:.85rem 0;
  border-bottom:1px dashed var(--rule);
  font-size:.9rem;
}
.hours dt{ color:var(--ink-soft); }
.hours dd{ margin:0; font-variant-numeric:tabular-nums; }

.visit__small{ margin-top:1.25rem; font-size:.76rem; line-height:1.65; color:var(--ink-faint); max-width:42ch; }
.visit__cta{ display:flex; flex-wrap:wrap; gap:.75rem; margin-top:2rem; }

.visit__map{
  position:relative;
  display:grid;
  place-items:center;
  min-height:clamp(20rem,45vw,30rem);
  background:var(--river);
  color:var(--on-river);
  overflow:hidden;
}
.visit__grid-art{
  position:absolute; inset:0;
  width:100%; height:100%;
  color:var(--shorshe);
  opacity:.16;
}
.visit__pin{
  position:relative;
  display:grid;
  justify-items:center;
  gap:.5rem;
  text-align:center;
  padding:2rem;
}
.visit__pin svg{ width:28px; height:28px; color:var(--shorshe); margin-bottom:.5rem; transition:transform .5s var(--ease); }
.visit__map:hover .visit__pin svg{ transform:translateY(-4px); }
.visit__pin strong{
  font-family:var(--display);
  font-weight:400;
  font-size:1.6rem;
  font-variation-settings:"SOFT" 35,"WONK" 1,"opsz" 60;
}
.visit__pin small{ font-size:.82rem; color:var(--on-river-s); }
.visit__pin em{
  font-style:normal;
  margin-top:1.25rem;
  font-size:.62rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--shorshe);
}
.visit__pin i{
  font-style:normal;
  margin-top:1.75rem;
  font-size:.58rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--on-river-s);
  opacity:.6;
}

/* ==========================================================================
   FOOTER
   ========================================================================== */

.foot{
  position:relative;
  background:var(--river);
  color:var(--on-river);
  padding:clamp(3.5rem,7vw,5.5rem) 0 2rem;
  overflow:hidden;
}
.foot__bn{
  position:absolute;
  right:-.08em; bottom:-.3em;
  font-family:var(--bangla);
  font-size:clamp(10rem,30vw,30rem);
  line-height:.8;
  color:var(--rice);
  opacity:.045;
  pointer-events:none;
  user-select:none;
}
.foot .wrap{ position:relative; z-index:2; }

.foot__grid{
  display:grid;
  grid-template-columns:1.6fr 1fr 1fr 1.2fr;
  gap:clamp(2rem,4vw,3.5rem);
}
.foot__mark{
  font-family:var(--display);
  font-size:1.6rem;
  font-variation-settings:"SOFT" 30,"WONK" 1,"opsz" 60;
  display:inline-block;
  margin-bottom:1.25rem;
}
.foot__brand p{ color:var(--on-river-s); font-size:.88rem; line-height:1.75; max-width:34ch; }
.foot__social{ display:flex; gap:.6rem; margin-top:1.75rem; }
.foot__social a{
  display:grid;
  place-items:center;
  width:2.5rem; height:2.5rem;
  border:1px solid var(--rule-river);
  border-radius:50%;
  color:var(--on-river-s);
  transition:color .4s ease,border-color .4s ease,background-color .4s ease;
}
.foot__social a:hover{ color:var(--river); background:var(--shorshe); border-color:var(--shorshe); }

.foot__col h3{
  font-size:.6rem;
  font-weight:700;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--shorshe);
  margin-bottom:1.25rem;
}
.foot__col address,
.foot__col p{ font-style:normal; color:var(--on-river-s); font-size:.85rem; line-height:1.8; }
.foot__col > a{ display:block; margin-top:.9rem; font-size:.85rem; transition:color .35s ease; overflow-wrap:anywhere; }
.foot__col > a:hover{ color:var(--shorshe); }
.foot__col nav{ display:grid; grid-template-columns:1fr 1fr; gap:.6rem 1rem; }
.foot__col nav a{ font-size:.82rem; color:var(--on-river-s); transition:color .35s ease; }
.foot__col nav a:hover{ color:var(--shorshe); }

.foot__base{
  margin-top:clamp(2.5rem,5vw,4rem);
  padding-top:1.75rem;
  border-top:1px solid var(--rule-river);
  display:flex;
  flex-wrap:wrap;
  gap:.75rem;
  justify-content:space-between;
  font-size:.7rem;
  color:var(--on-river-s);
}
.foot__base p:last-child{ letter-spacing:.14em; text-transform:uppercase; opacity:.7; }

/* ==========================================================================
   REVEALS  (scoped to .js so no-JS renders everything visible)
   ========================================================================== */

html.js [data-reveal]{ opacity:0; transform:translateY(22px); }
html.js [data-reveal-lines]{ opacity:0; }

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width:1100px){
  .foot__grid{ grid-template-columns:1fr 1fr; }
  .anth__grid{ grid-template-columns:1fr; }
  .anth__card{ max-width:none; }
}

@media (max-width:980px){
  .nav__links{ display:none; }
  .nav__book{ display:none; }
  .burger{ display:flex; }

  .hero{ padding-top:7rem; }
  .hero__grid{ grid-template-columns:1fr; gap:3rem; padding-left:2.25rem; }
  .hero__shot{ max-width:22rem; }
  .hero__meta{ padding-left:2.25rem; }

  .story__grid{ grid-template-columns:1fr; gap:4rem; }
  .story__figs{ max-width:26rem; }

  .rooms__grid{ grid-template-columns:1fr; gap:3rem; }
  .room figure{ aspect-ratio:16/10; }

  .book__grid{ grid-template-columns:1fr; }
  .book__bn{ display:none; }

  .visit__grid{ grid-template-columns:1fr; }
}

@media (max-width:760px){
  .dishes{ grid-template-columns:1fr; gap:0; }
  .dish{ padding-block:1.1rem; }
  .dish__hit{ cursor:pointer; }
  /* Mobile: descriptions collapse until tapped. */
  html.js .dish__desc{
    max-height:0;
    overflow:hidden;
    margin-top:0;
    opacity:0;
    transition:max-height .5s var(--ease),opacity .35s ease,margin-top .5s var(--ease);
  }
  html.js .dish.is-open > .dish__desc{ max-height:14rem; opacity:1; margin-top:.55rem; }
  .dish__name::after{
    content:"+";
    margin-left:.5rem;
    color:var(--ink-faint);
    font-family:var(--body);
    font-weight:400;
  }
  html:not(.js) .dish__name::after{ content:""; }
  .dish.is-open .dish__name::after{ content:"–"; }

  .gallery__cols{ grid-template-columns:1fr 1fr; }
  .gcol--mid{ margin-top:0; }
  /* The third column's items redistribute rather than orphaning a column. */
  .gcol:nth-child(3){ grid-column:1 / -1; grid-template-columns:1fr 1fr; display:grid; }

  .f-grid{ grid-template-columns:1fr; gap:1.5rem; }

  .foot__grid{ grid-template-columns:1fr; gap:2.5rem; }
  .foot__col nav{ grid-template-columns:1fr 1fr; }

  .book-float{ display:block; }
  /* Room for the floating pill. */
  .foot{ padding-bottom:5.5rem; }

  .hero__spine{ display:none; }
  .steps{ gap:1rem; font-size:.56rem; }
  .sigs__hint{ display:none; }
}

@media (max-width:460px){
  .hero__grid{ padding-left:0; }
  .hero__meta{ padding-left:0; }
  .story__fig--b{ right:0; width:42%; }
  .story__stamp{ left:0; }
  .menu__legend{ flex-direction:column; gap:.5rem; }
  .step__nav{ flex-direction:column-reverse; }
  .step__nav .pill{ width:100%; }
}

/* ==========================================================================
   REDUCED MOTION
   Loader, parallax, pinning and the marquee all stand down. Simple fades only.
   ========================================================================== */

@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  .loader{ display:none !important; }
  .cursor{ display:none !important; }
  html.js.has-cursor body{ cursor:auto !important; }
  html.js [data-reveal],
  html.js [data-reveal-lines]{ opacity:1 !important; transform:none !important; }
  html.js .gfig[data-wipe]{ clip-path:inset(0 0 0 0) !important; }
  .hero__watermark,.story__fig,.gcol,.hero__shot{ transform:none !important; }
  .marquee__track{ transform:none !important; }
}

/* ==========================================================================
   PRINT
   ========================================================================== */

@media print{
  .nav,.drawer,.book-float,.loader,.cursor,.grain,
  .marquee,#book,.visit__map,.sigs__hint{ display:none !important; }
  body{ background:#fff; color:#000; }
  .mpanel[hidden]{ display:block !important; }
  .dish__desc{ max-height:none !important; opacity:1 !important; }
  .hero,.sigs,.anth,.foot{ background:#fff !important; color:#000 !important; }
}
