
/* ============================ tokens ============================ */
:root{
  --paper:#f5ece6;        /* washi */
  --paper-2:#ece0da;
  --rose:#b5808e;         /* dusty blossom — card fields */
  --ink:#3f2c33;          /* plum ink — body copy */
  --heading:#8a5f6c;      /* soft plum */
  --night:#1e1319;        /* night plum — hero fade, logo band */
  --blush:#e6c3c7;
  --pad:1.88rem;
  --ease:cubic-bezier(.22,.61,.36,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{
  font-size:clamp(11.5px,.96vw,16px);
  -webkit-text-size-adjust:100%;
  background:var(--night);
}
body{
  font-family:'Be Vietnam Pro','General Sans',-apple-system,'Helvetica Neue',Arial,sans-serif;
  background:var(--paper);
  color:var(--ink);
  overflow-x:clip;
  font-synthesis:none;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
::selection{background:var(--rose);color:var(--paper)}

/* ============================ type ============================ */
.t100{font-size:6.25rem;line-height:.95;font-weight:400;letter-spacing:-.022em}
.t60{font-size:3.75rem;line-height:.9;font-weight:400;letter-spacing:-.02em}
.t50{font-size:3.6rem;line-height:.93;font-weight:500;letter-spacing:-.03em}
.t36{font-size:2.05rem;line-height:1.02;font-weight:500;letter-spacing:-.022em}
.t24{font-size:1.62rem;line-height:1.08;font-weight:500;letter-spacing:-.018em}
.caps{
  font-size:max(11.5px,1rem);line-height:1.3;text-transform:uppercase;
  letter-spacing:.005em;font-weight:400;
}
.caps-sm{font-size:max(11px,.9rem);line-height:1.36;text-transform:uppercase;letter-spacing:.02em}
.mono-num{font-size:3.05rem;line-height:1.02;font-weight:400;letter-spacing:-.028em}

/* scroll wipe reveal on headings */
.wipe{
  --p:0%;--on:var(--heading);--off:rgba(138,95,108,.26);
  background-image:linear-gradient(100deg,var(--on) 0 var(--p),var(--off) calc(var(--p) + 24%) 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  will-change:background-image;
}
.wipe.on-dark{--on:var(--paper);--off:rgba(245,236,230,.3)}
.wipe.on-green{--on:var(--paper);--off:rgba(245,236,230,.26)}

/* ---- ink-sweep reveal: a ragged wet edge travels across the plate ---- */
.inked{
  --ink:0%;--edge:linear-gradient(#000,#000);
  -webkit-mask-image:var(--inkmask),var(--edge);mask-image:var(--inkmask),var(--edge);
  -webkit-mask-size:300% 100%,100% 100%;mask-size:300% 100%,100% 100%;
  -webkit-mask-repeat:no-repeat,no-repeat;mask-repeat:no-repeat,no-repeat;
  -webkit-mask-position:var(--ink) 50%,50% 50%;mask-position:var(--ink) 50%,50% 50%;
  -webkit-mask-composite:source-in;mask-composite:intersect;
}
.inked.vert{
  -webkit-mask-image:var(--inkmaskv),var(--edge);mask-image:var(--inkmaskv),var(--edge);
  -webkit-mask-size:100% 300%,100% 100%;mask-size:100% 300%,100% 100%;
  -webkit-mask-position:50% var(--ink),50% 50%;mask-position:50% var(--ink),50% 50%;
}
/* the wet bloom that trails the edge while it moves */
.inkwrap{position:relative;overflow:hidden}
.inkwrap>.inkbleed{position:absolute;inset:-2%;pointer-events:none;z-index:4;
  background:radial-gradient(60% 70% at var(--bx,50%) 50%,rgba(63,44,51,.30),rgba(63,44,51,0) 68%);
  opacity:var(--bo,0);mix-blend-mode:multiply;transition:opacity .5s linear}

/* ---- word-by-word text ---- */
.w{display:inline-block;overflow:hidden;vertical-align:top}
.w>i{display:inline-block;font-style:inherit;transform:translateY(115%) rotate(2deg);
  transition:transform .95s cubic-bezier(.19,1,.22,1)}
.on .w>i{transform:none}

/* generic fade/rise reveal */
.rv{opacity:0;transform:translateY(1.4rem) scale(.985);transform-origin:left bottom;
  transition:opacity .95s var(--ease),transform 1.15s var(--ease),filter .95s var(--ease);filter:blur(2px)}
.rv.in{opacity:1;transform:none;filter:none}
.rv[data-d="1"]{transition-delay:.08s}.rv[data-d="2"]{transition-delay:.16s}
.rv[data-d="3"]{transition-delay:.24s}.rv[data-d="4"]{transition-delay:.32s}

/* ============================ chrome ============================ */
#gl{position:fixed;inset:0;width:100vw;height:100vh;z-index:0;display:block;pointer-events:none}
#glp{position:fixed;inset:0;width:100vw;height:100vh;z-index:45;display:block;pointer-events:none;
  opacity:0;transition:opacity .8s var(--ease)}
/* woven canvas + wet paint, composited over the page */
#weave{position:fixed;inset:0;width:100vw;height:100vh;z-index:58;display:block;pointer-events:none;
  mix-blend-mode:overlay;opacity:.62}
@media (prefers-reduced-motion:reduce){#weave{opacity:.34}}
.no-webgl .hero-stage{background:
  radial-gradient(70% 55% at 52% 6%,rgba(255,244,221,.72),transparent 62%),
  linear-gradient(160deg,#1d2609 0%,#4f5d2c 42%,#78885a 62%,#25300f 100%)}
.no-webgl .capsule .sticky{background:linear-gradient(#8ab265,#5e7638)}
.no-webgl #glprod{display:none}
#grain{
  position:fixed;inset:0;z-index:60;pointer-events:none;opacity:.11;
  mix-blend-mode:overlay;background-repeat:repeat;background-size:180px 180px;
}
#vig{position:fixed;inset:0;z-index:59;pointer-events:none;opacity:0;transition:opacity .6s linear;
  background:radial-gradient(120% 88% at 50% 42%,transparent 38%,rgba(12,18,4,.5) 100%)}

.nav{
  position:fixed;top:0;left:0;right:0;z-index:72;
  display:flex;align-items:center;justify-content:space-between;
  padding:1.7rem var(--pad);
  color:var(--paper);
  transition:color .45s var(--ease),text-shadow .45s var(--ease);
}
.menu[hidden]{display:none}
.menu{position:fixed;inset:0;z-index:70;display:flex;align-items:flex-end;
  background:rgba(30,19,25,.55);backdrop-filter:blur(10px) saturate(1.05);
  -webkit-backdrop-filter:blur(10px) saturate(1.05);
  opacity:0;transition:opacity .5s var(--ease)}
.menu.open{opacity:1}
.menu-sheet{width:100%;background:var(--paper);color:var(--ink);
  padding:6.4rem var(--pad) 2.6rem;
  transform:translateY(-100%);transition:transform .72s cubic-bezier(.66,0,.2,1)}
.menu.open .menu-sheet{transform:translateY(0)}
.menu-cols{display:grid;grid-template-columns:repeat(3,minmax(0,15rem)) 1fr;gap:2rem;
  padding-bottom:3.4rem;border-bottom:1px solid rgba(138,95,108,.24)}
.menu-col h4{font-size:max(11px,.9rem);text-transform:uppercase;letter-spacing:.06em;
  color:rgba(138,95,108,.7);font-weight:400;margin-bottom:1.1rem}
.menu-col a{display:block;font-size:2.05rem;line-height:1.24;letter-spacing:-.02em;
  color:var(--heading);opacity:0;transform:translateY(.9rem);
  transition:opacity .5s var(--ease),transform .5s var(--ease),color .3s}
.menu.open .menu-col a{opacity:1;transform:none}
.menu-col a:hover{color:var(--ink)}
.menu-cols .menu-col:nth-child(1) a{transition-delay:.16s}
.menu-cols .menu-col:nth-child(2) a{transition-delay:.22s}
.menu-cols .menu-col:nth-child(3) a{transition-delay:.28s}
.menu-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;
  flex-wrap:wrap;padding-top:2rem}
.menu-big{font-size:5.4rem;line-height:.94;letter-spacing:-.035em;color:var(--ink);
  opacity:0;transform:translateY(1.2rem);transition:opacity .6s var(--ease) .3s,transform .6s var(--ease) .3s}
.menu.open .menu-big{opacity:1;transform:none}
.menu-big:hover{color:var(--rose)}
.menu-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.4rem;
  color:rgba(138,95,108,.85);opacity:0;transition:opacity .6s var(--ease) .38s}
.menu.open .menu-meta{opacity:1}
body.menu-open{overflow:hidden}
.nav #menuBtn .mkico{transition:transform .55s var(--ease)}
.nav.menu-live #menuBtn .mkico{transform:rotate(135deg) scale(.92)}
@media (max-width:900px){
  .menu-sheet{padding:5.4rem var(--pad) 2rem}
  .menu-cols{grid-template-columns:1fr 1fr;gap:1.4rem;padding-bottom:2rem}
  .menu-col a{font-size:1.5rem}
  .menu-big{font-size:2.8rem}
  .menu-meta{align-items:flex-start}
}
.nav.on-art{text-shadow:0 1px 14px rgba(30,19,25,.55)}
.nav.on-art svg{filter:drop-shadow(0 1px 10px rgba(30,19,25,.55))}
.nav a,.nav button{font-size:max(11px,.94rem);text-transform:uppercase;letter-spacing:.045em;
  background:none;border:0;color:inherit;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:.6rem}
.nav .brand{position:absolute;left:50%;top:1.15rem;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:.18rem;transition:color .45s var(--ease)}
.nav .brand svg{width:1.85rem;height:auto;display:block}
.nav .brand span{font-size:max(11px,.84rem);letter-spacing:.005em;font-weight:500;text-transform:none}
.mkico{width:.78rem;height:auto;display:block}

/* buttons */
.btn{
  --fill:var(--paper);--fg:var(--ink);--mx:50%;--my:50%;
  display:inline-flex;align-items:center;gap:.85rem;
  padding:.9rem 1.45rem;border:1px solid currentColor;border-radius:2px;
  font-size:max(11px,.92rem);text-transform:uppercase;letter-spacing:.045em;
  position:relative;overflow:hidden;z-index:0;will-change:transform;
  transition:color .38s var(--ease),border-color .38s var(--ease),
             transform .55s cubic-bezier(.19,1,.22,1);
}
/* the ink blooms out of the pointer as a true circle, with a ragged wet edge */
.btn::before{content:"";position:absolute;z-index:0;background:var(--fill);
  left:var(--mx);top:var(--my);width:var(--d,10rem);height:var(--d,10rem);
  border-radius:50%;margin:calc(var(--d,10rem) / -2) 0 0 calc(var(--d,10rem) / -2);
  transform:scale(0);
  transition:transform .58s cubic-bezier(.19,1,.22,1);
  -webkit-mask-image:var(--inkmask);mask-image:var(--inkmask);
  -webkit-mask-size:230% 230%;mask-size:230% 230%;
  -webkit-mask-position:66% 50%;mask-position:66% 50%;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.btn:hover::before,.btn:focus-visible::before{transform:scale(1)}
.btn>*{position:relative;z-index:1}
.btn .lbl{position:relative;z-index:1;display:inline-block;overflow:hidden;vertical-align:middle}
.btn .lbl span{display:block;transition:transform .5s cubic-bezier(.19,1,.22,1)}
.btn .lbl span+span{position:absolute;left:0;top:0;transform:translateY(115%)}
.btn:hover .lbl span{transform:translateY(-115%)}
.btn:hover .lbl span+span{transform:translateY(0)}
.btn .dot{width:.3rem;height:.3rem;border-radius:50%;background:currentColor;flex:none;
  transition:transform .55s cubic-bezier(.19,1,.22,1),opacity .4s}
.btn:hover .dot:first-child{transform:translateX(.34rem) scale(.6);opacity:.5}
.btn:hover .dot:last-child{transform:translateX(-.34rem) scale(1.7)}
.btn-light{color:var(--paper);--fill:var(--paper);--fg:var(--ink)}
.btn-dark{color:var(--ink);--fill:var(--ink);--fg:var(--paper)}
.btn:hover,.btn:focus-visible{color:var(--fg)}

/* ============================ hero ============================ */
.hero{position:relative;z-index:2}
.hero-scroll-track{position:relative;height:215svh}
.hero-stage{position:sticky;top:0;height:100svh;min-height:38rem;overflow:hidden}
.hero-copy{position:absolute;inset:0;padding:0 var(--pad);pointer-events:none}
.hero h1{position:absolute;left:var(--pad);top:14.5%;pointer-events:auto}
.hero .h2wrap{position:absolute;right:var(--pad);bottom:22%;width:34rem;max-width:44vw;pointer-events:auto}
.hero .h2wrap h2{margin-bottom:1.9rem}
.hero .hero-desc{max-width:20rem;color:var(--paper);margin-bottom:1.5rem}
.hero-fade{position:absolute;left:0;right:0;bottom:0;height:9rem;pointer-events:none;
  background:linear-gradient(rgba(30,19,25,0),rgba(30,19,25,.30))}
.logos{
  position:relative;background:var(--night);padding:7.4rem var(--pad) 5.6rem;
  display:flex;align-items:center;justify-content:space-between;gap:2rem;
}
/* the band is a torn strip of paper laid over the hero, not a fade into it */
.logos::before{content:"";position:absolute;left:0;right:0;top:-5.4rem;height:5.5rem;
  pointer-events:none;z-index:1;
  background-image:var(--tearplate);background-size:100% 100%;background-repeat:no-repeat}
.logos .lg{height:2.5rem;display:flex;align-items:center;color:var(--paper);opacity:.92}
.logos .lg svg{height:100%;width:auto}

/* scroll cue */
.cue{position:absolute;left:50%;bottom:2.2rem;transform:translateX(-50%);z-index:4;
  display:flex;flex-direction:column;align-items:center;gap:.5rem;color:var(--paper);opacity:.55}
.cue .bar{width:1px;height:2.4rem;background:linear-gradient(var(--paper),transparent);animation:cue 2.2s var(--ease) infinite}
@keyframes cue{0%{transform:scaleY(0);transform-origin:top}45%{transform:scaleY(1);transform-origin:top}
  55%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
.cue span{font-size:max(11px,.82rem);text-transform:uppercase;letter-spacing:.16em}

/* ============================ split sections ============================ */
.split{position:relative;z-index:2;background:var(--paper);display:grid;grid-template-columns:1fr 1fr;min-height:100svh}
.split .media{position:relative;overflow:hidden;background:var(--ink)}
.split .media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transform:scale(1.12);will-change:transform}
.split .pane{padding:5.6rem var(--pad);display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.split .pane .top{max-width:38rem}
.src{margin-top:1.5rem;font-size:max(11px,.94rem);color:rgba(138,95,108,.75)}
.overlay-caps{position:absolute;left:var(--pad);top:5.6rem;max-width:23rem;color:var(--paper);z-index:3}
.scrim{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(160deg,rgba(30,19,25,.72),rgba(30,19,25,.12) 46%,transparent 70%)}
.leafart{position:absolute;right:-8rem;bottom:-6rem;width:42rem;pointer-events:none;
  mix-blend-mode:multiply;opacity:.95;rotate:-4deg;
  --edge:radial-gradient(closest-side at 50% 50%,#000 60%,transparent 97%)}

/* ============================ capsule (scroll 3d) ============================ */
.capsule{position:relative;z-index:2;height:420svh}
.capsule .sticky{position:sticky;top:0;height:100svh;overflow:hidden}
.capsule .bigword{
  position:absolute;left:0;right:0;bottom:-.6rem;text-align:left;padding:0 var(--pad);
  font-size:clamp(3.6rem,11.6vw,12.2rem);line-height:.88;font-weight:400;letter-spacing:-.04em;white-space:nowrap;
  color:rgba(245,236,230,.34);pointer-events:none;
}
.capsule .headline{position:absolute;left:var(--pad);top:19%;width:34rem;max-width:46vw;color:var(--paper)}
.capsule .headline2{position:absolute;right:var(--pad);bottom:12%;width:26rem;max-width:40vw;color:var(--paper);text-align:left}
.card{
  position:absolute;width:21.5rem;max-width:34vw;border-radius:2px;overflow:hidden;
  background:var(--paper);color:var(--ink);
  opacity:0;transform:translateY(2.2rem);will-change:transform,opacity;
}
/* the plate is an ink drawing keyed to alpha over white, drawn as a plain <img>:
   a CSS mask would be CORS-blocked when the page is opened over file:// */
.card .art{position:relative;height:10.4rem;overflow:hidden;
  border-bottom:1px solid rgba(138,95,108,.16)}
.card .art img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:50% 48%;
  opacity:.82;filter:invert(1)}                    /* white ink -> plum-black on paper */
.card .body{padding:1.3rem 1.5rem 1.55rem}
.card h3{margin-bottom:.72rem}
.card.glass{background:rgba(124,78,92,.50);color:var(--paper);backdrop-filter:blur(16px) saturate(1.12);
  -webkit-backdrop-filter:blur(16px) saturate(1.12);border:1px solid rgba(245,236,230,.20);
  box-shadow:0 1.4rem 3.2rem rgba(30,19,25,.18)}
.card.glass .art{border-bottom-color:rgba(245,236,230,.22)}
.card.glass .art img{filter:none;opacity:.80}     /* left white on the glass panels */

/* ============================ numbers ============================ */
.stat{display:grid;grid-template-columns:1fr auto;align-items:end;gap:2rem;
  padding-bottom:.6rem;border-bottom:1px solid rgba(138,95,108,.35);margin-bottom:1.5rem}
.stat .lbl{max-width:12.5rem;text-align:left;padding-bottom:.4rem}
.note{font-size:max(11px,.9rem);line-height:1.4;text-transform:uppercase;color:rgba(138,95,108,.8);max-width:32rem;margin-top:1.2rem}

/* ============================ products ============================ */
.products{position:relative;z-index:2;background:var(--paper);padding:5.6rem 0 7rem;overflow:hidden}
.products::before{content:"";position:absolute;left:0;right:0;bottom:0;height:78%;z-index:0;
  background:url("../../assets/hanami/prod-backdrop.webp") center/cover no-repeat;
  opacity:.55;mix-blend-mode:multiply;pointer-events:none;
  -webkit-mask-image:linear-gradient(transparent,#000 16%,#000 82%,transparent);
  mask-image:linear-gradient(transparent,#000 16%,#000 82%,transparent)}
.products>*{position:relative;z-index:1}
  .products h2{padding:0;margin-bottom:0}
.prod-stage{position:relative;padding:0 var(--pad)}
#glprod{position:absolute;left:0;right:0;top:-14.5rem;bottom:0;width:100%;height:auto;z-index:3;pointer-events:none}
.prod-grid{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,1fr);gap:1.9rem;align-items:start}
.pcard{background:var(--rose);color:var(--paper);padding:1.5rem;border-radius:2px;position:relative;
  transition:transform .6s var(--ease)}
.pcard:hover{transform:translateY(-.5rem)}
.pcard .arrow{position:absolute;right:0;top:0;width:3.3rem;height:3.3rem;display:grid;place-items:center;
  background:rgba(245,236,230,.14)}
.pcard .arrow svg{width:.9rem;height:.9rem}
.pcard h3{margin-bottom:.75rem;padding-right:3.6rem}
.pcard .pad{height:12.4rem}
.prod-grid>*:nth-child(2){margin-top:5.4rem}
.prod-grid>*:nth-child(3){margin-top:10.4rem}

/* ============================ trials ============================ */
.mapcard{position:relative;z-index:1;margin-top:2rem;width:min(100%,38rem);
  background:var(--paper);padding:1.3rem 1.3rem 1rem;
  box-shadow:0 2rem 4.4rem rgba(12,6,10,.46);
  transform:scale(var(--mz,1));transform-origin:32% 45%;
  transition:transform .12s linear}
.mapcard .cap{display:flex;justify-content:space-between;gap:1rem;color:rgba(138,95,108,.85);
  font-size:max(11px,.88rem);text-transform:uppercase;letter-spacing:.05em;margin-top:.5rem}
.map{position:relative;width:100%;aspect-ratio:1/1;margin-top:0}
.map img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;
  --edge:radial-gradient(closest-side at 50% 50%,#000 78%,transparent 100%)}
#stations .pane{justify-content:flex-start;color:var(--paper);background:
  radial-gradient(120% 80% at 15% 0%,rgba(122,78,92,.42),transparent 62%),
  linear-gradient(168deg,#2a1a21 0%,#1e1319 58%,#241820 100%)}
#stations .pane .wipe{--on:var(--paper);--off:rgba(245,236,230,.26)}
#stations .pane .caps{color:rgba(245,236,230,.86)}
#stations .pane::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background:url("../../assets/hanami/prod-backdrop.webp") center/cover no-repeat;
  opacity:.10;mix-blend-mode:screen}
#stations .pane>*{position:relative;z-index:1}
.map svg{width:100%;height:auto;display:block}
.map .land{fill:none;stroke:rgba(138,95,108,.78);stroke-width:.75;stroke-dasharray:1.4 2.1;stroke-linecap:round}
.stn{position:absolute;width:0;height:0;z-index:2}
.stn i{position:absolute;left:-.2rem;top:-.2rem;width:.4rem;height:.4rem;border-radius:50%;
  background:var(--rose);box-shadow:0 0 0 .2rem rgba(181,128,142,.20);
  transition:transform .3s var(--ease),background .3s}
.stn s{position:absolute;left:.62rem;top:50%;transform:translateY(-50%);text-decoration:none;
  display:flex;flex-direction:column;line-height:1.14;white-space:nowrap}
.stn.l s{left:auto;right:.62rem;align-items:flex-end}
.stn b{font-weight:500;font-size:max(10.5px,.84rem);letter-spacing:.005em;color:var(--ink);
  text-shadow:0 0 .5rem rgba(245,236,230,.95);transition:color .3s}
.stn em{font-style:normal;font-size:max(10px,.74rem);letter-spacing:.05em;text-transform:uppercase;
  color:#8a5f6c;text-shadow:0 0 .5rem rgba(245,236,230,.9)}
.stn:hover i{transform:scale(2);background:var(--ink)}
.stn:hover b{color:var(--rose)}

/* ============================ cta / footer ============================ */
.cta{position:relative;z-index:2;color:var(--paper);padding:5.6rem var(--pad) 6rem;overflow:hidden;min-height:88svh;
  background:var(--rose)}
.cta::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:url("../../assets/hanami/footer-fuji.webp?v=20261105r") center 42%/cover no-repeat}
.cta::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(105deg,rgba(63,44,51,.82) 0%,rgba(63,44,51,.56) 36%,rgba(140,92,106,.26) 66%,rgba(30,19,25,.46) 100%)}
.cta>*{position:relative;z-index:1}
.collage{position:absolute;inset:0;pointer-events:none}
.collage>*{position:absolute}
.plate{background:var(--paper);padding:.55rem .55rem 1.6rem;
  box-shadow:0 1.6rem 3.4rem rgba(30,19,25,.32);transform:rotate(2deg)}
.plate img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover}
footer{position:relative;z-index:2;background:var(--paper);padding:4.4rem var(--pad) 2.2rem;overflow:hidden}
footer::before{content:"";position:absolute;left:0;right:0;top:0;height:26rem;z-index:0;pointer-events:none;
  background:url("../../assets/hanami/footer-fuji.webp?v=20261105r") center 34%/cover no-repeat;opacity:.20;
  -webkit-mask-image:linear-gradient(#000,transparent);mask-image:linear-gradient(#000,transparent)}
footer>*{position:relative;z-index:1}
.fgrid{display:grid;grid-template-columns:repeat(5,1fr) 1.2fr;gap:2rem;margin-bottom:7rem}
.fcol h4{font-size:max(11px,.94rem);text-transform:uppercase;letter-spacing:.03em;color:rgba(138,95,108,.6);margin-bottom:.9rem;font-weight:400}
.fcol a{display:block;font-size:max(11px,.94rem);text-transform:uppercase;letter-spacing:.03em;margin-bottom:.42rem;
  transition:opacity .3s}
.fcol a:hover{opacity:.6}
.fmark{display:block;width:5.6rem;margin:0 auto 1.5rem;color:var(--ink)}
.fbot{display:flex;justify-content:space-between;align-items:center;font-size:max(11px,.9rem);text-transform:uppercase;
  letter-spacing:.03em;color:rgba(138,95,108,.9);gap:2rem;flex-wrap:wrap}
.fbot .r{display:flex;gap:1.6rem}

/* ============================ ticker ============================ */
.ticker{position:relative;z-index:2;background:var(--paper);border-top:1px solid rgba(138,95,108,.2);
  border-bottom:1px solid rgba(138,95,108,.2);overflow:hidden;padding:1.4rem 0}
.ticker .track{display:flex;gap:3.4rem;width:max-content;will-change:transform}
.ticker .it{display:flex;align-items:center;gap:1.1rem;font-size:1.05rem;text-transform:uppercase;
  letter-spacing:.03em;color:var(--heading);white-space:nowrap}
.ticker .it svg{width:.85rem;flex:none;color:var(--rose)}

/* ============================ preloader ============================ */
#pre{position:fixed;inset:0;z-index:100;background:var(--night);display:grid;place-items:center;
  transition:opacity .9s var(--ease),visibility .9s}
#pre.done{opacity:0;visibility:hidden}
#pre .wrap{display:flex;flex-direction:column;align-items:center;gap:1.5rem;color:var(--paper)}
#pre svg{width:3.6rem}
#pre .track{width:11rem;height:1px;background:rgba(245,236,230,.22);overflow:hidden}
#pre .fill{height:100%;background:var(--paper);transform-origin:left;transform:scaleX(0);transition:transform .35s linear}
#pre .pct{font-size:.85rem;letter-spacing:.2em;text-transform:uppercase}

/* ============================ responsive ============================ */
@media (max-width:900px){
  html{font-size:clamp(12.5px,3.4vw,15px)}
  .t100{font-size:3.5rem}.t60{font-size:2.5rem}.t50{font-size:2.4rem}.t36{font-size:1.7rem}
  .hero h1{top:11%}
  .hero .h2wrap{left:var(--pad);right:auto;bottom:16%;width:auto;max-width:80vw}
  .split{grid-template-columns:1fr;min-height:0}
  .split .media{height:58svh}
  .split .pane{padding:3.6rem var(--pad) 4.2rem;gap:3rem}
  .overlay-caps{top:auto;bottom:2.4rem;right:var(--pad);max-width:none}
  .stat{margin-bottom:1.5rem}
  .mono-num{font-size:3.2rem}
  .map{margin-top:1.6rem}
  .capsule{height:360svh}
  .capsule .bigword{font-size:5.4rem}
  .capsule .headline,.capsule .headline2{max-width:78vw;width:auto}
  .card{width:15rem;max-width:68vw}
  .card .art{height:6.2rem}
  .card .body{padding:.9rem 1rem 1.05rem}
  .card h3{font-size:1.32rem}
  #c1{left:var(--pad)!important;right:auto!important;top:16%!important}
  #c2{left:auto!important;right:var(--pad)!important;top:40%!important}
  #c3{left:var(--pad)!important;right:auto!important;top:64%!important}
  #c4{left:var(--pad)!important;right:auto!important;top:15%!important}
  #c5{left:auto!important;right:var(--pad)!important;top:56%!important}
  #c6{left:var(--pad)!important;right:auto!important;top:13%!important}
  #c7{left:auto!important;right:var(--pad)!important;top:52%!important}
  .prod-grid{grid-template-columns:1fr;gap:1.2rem}
  .prod-grid>*:nth-child(2),.prod-grid>*:nth-child(3){margin-top:0}
  .pcard .pad{height:8rem}
  .fgrid{grid-template-columns:1fr 1fr;gap:1.6rem;margin-bottom:3.4rem}
  .logos{flex-wrap:wrap;gap:1.6rem 2.4rem;justify-content:flex-start;padding-bottom:3rem}
  .logos .lg{height:1.9rem}
}
@media (prefers-reduced-motion:reduce){
  .rv{transition:none;opacity:1;transform:none}
  .cue .bar{animation:none}
}


/* ============================ CHÙA VIÊN ĐỨC 3D ARCHITECTURAL ASSEMBLY (HANAMI THEME) ============================ */
.vienduc-hanami-section {
  position: relative;
  z-index: 2;
  background: var(--paper);
  color: var(--ink);
  padding: 6rem var(--pad);
  border-top: 1px solid rgba(138, 95, 108, 0.22);
  border-bottom: 1px solid rgba(138, 95, 108, 0.22);
}

.vienduc-hanami-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 2rem;
  flex-wrap: wrap;
  margin-bottom: 3.6rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid rgba(138, 95, 108, 0.22);
}

.vienduc-hanami-head .sub {
  max-width: 30rem;
  color: var(--heading);
}

.vienduc-grid {
  display: grid;
  grid-template-columns: 0.95fr 1.05fr;
  gap: 3rem;
  align-items: start;
}

.vienduc-timeline-col {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.tl-item {
  background: var(--paper-2);
  border: 1px solid rgba(138, 95, 108, 0.22);
  border-radius: 2px;
  padding: 1.5rem 1.65rem;
  cursor: pointer;
  transition: transform 0.45s var(--ease), background 0.35s var(--ease), border-color 0.35s var(--ease), box-shadow 0.35s var(--ease);
}

.tl-item:hover {
  transform: translateY(-0.2rem);
  border-color: var(--rose);
  box-shadow: 0 1.2rem 2.6rem rgba(63, 44, 51, 0.08);
}

.tl-item.active-stage {
  background: var(--rose);
  color: var(--paper);
  border-color: var(--rose);
  box-shadow: 0 1.4rem 3.2rem rgba(63, 44, 51, 0.16);
}

.tl-badge-row {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  margin-bottom: 0.65rem;
  font-size: max(10.5px, 0.82rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.tl-index {
  padding: 0.18rem 0.55rem;
  background: rgba(63, 44, 51, 0.12);
  border-radius: 2px;
  font-weight: 500;
}

.tl-item.active-stage .tl-index {
  background: rgba(245, 236, 230, 0.22);
  color: var(--paper);
}

.tl-era {
  opacity: 0.85;
}

.tl-step-num {
  margin-left: auto;
  opacity: 0.72;
}

.tl-item h3 {
  font-size: 1.45rem;
  line-height: 1.15;
  font-weight: 500;
  letter-spacing: -0.015em;
  margin-bottom: 0.55rem;
}

.tl-item p {
  font-size: max(12px, 0.95rem);
  line-height: 1.55;
  opacity: 0.88;
}

.tl-stage-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 0.9rem;
  padding-top: 0.75rem;
  border-top: 1px solid rgba(138, 95, 108, 0.2);
  font-size: max(10.5px, 0.82rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.tl-item.active-stage .tl-stage-footer {
  border-top-color: rgba(245, 236, 230, 0.24);
}

.tl-cam-tag {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
}

.tl-cam-tag svg {
  width: 0.95rem;
  height: 0.95rem;
}

.stage-col {
  position: sticky;
  top: 4.8rem;
}

.stage-card {
  position: relative;
  height: calc(100svh - 6.8rem);
  min-height: 34rem;
  max-height: 48rem;
  border-radius: 2px;
  overflow: hidden;
  background:
    radial-gradient(circle at 50% 34%, #fbf6f3 0%, #f5ece6 54%, #e6c3c7 100%);
  border: 1px solid rgba(138, 95, 108, 0.28);
  box-shadow: 0 2rem 4.4rem rgba(30, 19, 25, 0.14);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

body.afternoon-mode .stage-card {
  background: radial-gradient(circle at 50% 36%, #f3d5d8 0%, #c9939f 55%, #6e4853 100%);
}

body.night-mode .stage-card {
  background: radial-gradient(circle at 50% 36%, #35232c 0%, #1e1319 65%, #120b0f 100%);
}

#assembly-viewport {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}

#assembly-viewport canvas {
  display: block;
  width: 100%;
  height: 100%;
  cursor: grab;
}

.stage-top-bar {
  position: relative;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.8rem;
  padding: 1rem 1.1rem 0;
  pointer-events: none;
}

.stage-pill {
  pointer-events: auto;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: rgba(245, 236, 230, 0.90);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(138, 95, 108, 0.26);
  border-radius: 2px;
  padding: 0.45rem 0.85rem;
  font-size: max(10.5px, 0.82rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--ink);
}

.stage-pill svg {
  width: 0.95rem;
  height: 0.95rem;
  color: var(--rose);
}

.stage-light-btn {
  cursor: pointer;
}

.stage-dot {
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  background: var(--rose);
}

.stage-bottom-bar {
  position: relative;
  z-index: 3;
  margin: 0 1rem 1rem;
  padding: 0.85rem 1rem;
  background: rgba(245, 236, 230, 0.92);
  backdrop-filter: blur(14px);
  border: 1px solid rgba(138, 95, 108, 0.26);
  border-radius: 2px;
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}

.stage-controls-row {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.stage-slider {
  flex: 1;
  accent-color: var(--rose);
  height: 4px;
  cursor: pointer;
}

.stage-pct {
  font-size: max(11px, 0.86rem);
  font-weight: 500;
  color: var(--ink);
  min-width: 2.6rem;
  text-align: right;
}

.stage-cam-chips {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 0.4rem;
}

.chip-btn {
  appearance: none;
  border: 1px solid rgba(138, 95, 108, 0.24);
  background: var(--paper);
  color: var(--ink);
  font-family: inherit;
  font-size: max(10px, 0.76rem);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  padding: 0.42rem 0.55rem;
  border-radius: 2px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  white-space: nowrap;
  transition: background 0.25s var(--ease), color 0.25s var(--ease), border-color 0.25s var(--ease);
}

.chip-btn svg {
  width: 0.82rem;
  height: 0.82rem;
  flex-shrink: 0;
}

.chip-btn:hover {
  border-color: var(--rose);
}

.chip-btn.active {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--paper);
}

.hanami-mantra-bar {
  margin-top: 1.5rem;
  padding: 1.4rem 1.65rem;
  background: var(--night);
  color: var(--paper);
  border-radius: 2px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.2rem;
  flex-wrap: wrap;
}

.hanami-mantra-bar .m-title {
  font-size: max(10.5px, 0.8rem);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--blush);
  margin-bottom: 0.25rem;
}

.hanami-mantra-bar .m-sanskrit {
  font-size: 1.25rem;
  font-weight: 500;
  letter-spacing: -0.01em;
}

.hanami-mantra-bar .m-phon {
  font-size: max(11px, 0.86rem);
  opacity: 0.78;
  margin-top: 0.15rem;
}

.chant-btn {
  --mp: 0;
  position: relative;
  appearance: none;
  border: 0;
  background: rgba(245, 236, 230, 0.04);
  color: var(--paper);
  font-family: inherit;
  font-size: max(11px, 0.86rem);
  text-transform: uppercase;
  letter-spacing: 0.045em;
  padding: 0.82rem 1.35rem;
  border-radius: 3px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.65rem;
  transition: background 0.3s var(--ease), color 0.3s var(--ease);
}

.chant-btn .chant-border-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  overflow: visible;
}

.chant-btn .chant-border-track {
  width: calc(100% - 2.5px);
  height: calc(100% - 2.5px);
  fill: none;
  stroke: rgba(245, 236, 230, 0.32);
  stroke-width: 1.4px;
}

.chant-btn .chant-border-fill {
  width: calc(100% - 2.5px);
  height: calc(100% - 2.5px);
  fill: none;
  stroke: #f0c27b;
  stroke-width: 2.6px;
  stroke-linecap: round;
  stroke-dasharray: 100;
  stroke-dashoffset: calc(100 - var(--mp, 0) * 100);
  filter: drop-shadow(0 0 6px rgba(240, 194, 123, 0.65));
  transition: stroke-dashoffset 0.08s linear;
}

.chant-btn .chant-ico {
  width: 1rem;
  height: 1rem;
  position: relative;
  z-index: 1;
}

.chant-btn .chant-lbl {
  position: relative;
  z-index: 1;
}

.chant-btn:hover {
  background: rgba(245, 236, 230, 0.12);
}

.chant-btn.playing {
  background: rgba(240, 194, 123, 0.14);
  color: #fff6e8;
}

.chant-btn.playing .chant-ico {
  color: #f0c27b;
}

@media (max-width: 900px) {
  .vienduc-grid {
    grid-template-columns: 1fr;
  }
  .stage-col {
    position: relative;
    top: 0;
    order: -1;
  }
  .stage-card {
    height: 24rem;
    min-height: 22rem;
  }
  .stage-cam-chips {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* ============================ MONASTERY IDENTITY PLAQUE BAND ============================ */
.monastery-plaque-band {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr;
  align-items: center;
  gap: 1.8rem;
  padding: 6.8rem var(--pad) 4.8rem;
}
.plaque-item {
  display: flex;
  align-items: center;
  gap: 0.95rem;
  color: var(--paper);
}
.plaque-ico {
  width: 2.1rem;
  height: 2.1rem;
  color: var(--blush);
  flex-shrink: 0;
  opacity: 0.9;
}
.plaque-title {
  font-size: max(12px, 0.96rem);
  font-weight: 500;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--paper);
}
.plaque-sub {
  font-size: max(11px, 0.82rem);
  color: rgba(245, 236, 230, 0.72);
  margin-top: 0.18rem;
  letter-spacing: 0.015em;
}
.plaque-sep {
  width: 1px;
  height: 2.6rem;
  background: rgba(245, 236, 230, 0.18);
}
@media (max-width: 960px) {
  .monastery-plaque-band {
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem 2rem;
  }
  .plaque-sep {
    display: none;
  }
}
@media (max-width: 560px) {
  .monastery-plaque-band {
    grid-template-columns: 1fr;
  }
}

/* ============================ ĐẠI TẠNG KINH & THƯ VIỆN KINH SÁCH HOA SEN ============================ */
.sutra-sec-header {
  padding: 0 var(--pad);
  margin-bottom: 15.2rem;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 2.4rem;
  flex-wrap: wrap;
}
.sutra-sec-lead {
  max-width: 32rem;
  color: var(--heading);
}
.sutra-card-meta {
  font-size: max(10.5px, 0.78rem);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: rgba(245, 236, 230, 0.78);
  margin-bottom: 0.45rem;
}
.sutra-card-cta {
  display: inline-block;
  margin-top: 1.15rem;
  padding-top: 0.75rem;
  border-top: 1px solid rgba(245, 236, 230, 0.25);
  font-size: max(11px, 0.82rem);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 500;
  color: var(--paper);
}
.sutra-library-wrap {
  margin-top: 5.2rem;
  padding: 3.6rem var(--pad) 0;
  border-top: 1px solid rgba(138, 95, 108, 0.24);
}
.sutra-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.4rem;
  flex-wrap: wrap;
  margin-bottom: 2.2rem;
}
.sutra-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
}
.sutra-filter-btn {
  appearance: none;
  border: 1px solid rgba(138, 95, 108, 0.3);
  background: rgba(245, 236, 230, 0.7);
  color: var(--ink);
  font-family: inherit;
  font-size: max(11px, 0.84rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.65rem 1.1rem;
  border-radius: 2px;
  cursor: pointer;
  transition: all 0.25s var(--ease);
}
.sutra-filter-btn:hover {
  border-color: var(--rose);
}
.sutra-filter-btn.active {
  background: var(--night);
  border-color: var(--night);
  color: var(--paper);
}
.sutra-search-box {
  min-width: min(100%, 22rem);
  flex: 0 1 24rem;
}
.sutra-search-box input {
  width: 100%;
  padding: 0.68rem 1rem;
  background: var(--paper-2);
  border: 1px solid rgba(138, 95, 108, 0.32);
  border-radius: 2px;
  font-family: inherit;
  font-size: max(12px, 0.9rem);
  color: var(--ink);
  outline: none;
}
.sutra-search-box input:focus {
  border-color: var(--ink);
  background: #fbf6f2;
}
.sutra-catalog-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(21rem, 1fr));
  gap: 1.5rem;
}
.sutra-item-card {
  background: rgba(236, 224, 218, 0.72);
  border: 1px solid rgba(138, 95, 108, 0.24);
  border-radius: 2px;
  padding: 1.55rem 1.65rem;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease), border-color 0.35s var(--ease);
}
.sutra-item-card:hover {
  transform: translateY(-0.22rem);
  border-color: var(--rose);
  box-shadow: 0 1.2rem 2.8rem rgba(63, 44, 51, 0.1);
}
.sutra-item-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  margin-bottom: 0.7rem;
  font-size: max(10.5px, 0.78rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.sutra-cat-tag {
  background: rgba(181, 128, 142, 0.22);
  color: var(--ink);
  padding: 0.22rem 0.58rem;
  border-radius: 2px;
  font-weight: 500;
}
.sutra-vol-tag {
  color: var(--heading);
}
.sutra-item-title {
  font-size: 1.38rem;
  font-weight: 500;
  line-height: 1.18;
  letter-spacing: -0.015em;
  color: var(--ink);
  margin-bottom: 0.28rem;
}
.sutra-item-hannom {
  font-size: max(11px, 0.84rem);
  color: var(--heading);
  margin-bottom: 0.25rem;
}
.sutra-item-trans {
  font-size: max(11px, 0.82rem);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: rgba(63, 44, 51, 0.72);
  margin-bottom: 0.85rem;
}
.sutra-item-desc {
  font-size: max(12px, 0.92rem);
  line-height: 1.55;
  color: var(--ink);
  opacity: 0.9;
  margin-bottom: 0.9rem;
}
.sutra-item-verse {
  font-size: max(11.5px, 0.88rem);
  line-height: 1.5;
  font-style: italic;
  color: var(--heading);
  padding: 0.65rem 0.85rem;
  border-left: 2px solid var(--rose);
  background: rgba(245, 236, 230, 0.65);
  margin-bottom: 1.15rem;
}
.sutra-item-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.8rem;
  padding-top: 0.85rem;
  border-top: 1px solid rgba(138, 95, 108, 0.18);
}
.sutra-read-btn {
  appearance: none;
  border: 1px solid var(--ink);
  background: var(--ink);
  color: var(--paper);
  font-family: inherit;
  font-size: max(11px, 0.8rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.52rem 0.95rem;
  border-radius: 2px;
  cursor: pointer;
  transition: background 0.25s var(--ease), border-color 0.25s var(--ease);
}
.sutra-read-btn:hover {
  background: var(--rose);
  border-color: var(--rose);
}
.sutra-ext-link {
  font-size: max(11px, 0.8rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--heading);
  font-weight: 500;
}
.sutra-ext-link:hover {
  color: var(--ink);
  text-decoration: underline;
}
.sutra-bilingual-btn {
  appearance: none;
  border: 1px solid rgba(138, 95, 108, 0.36);
  background: transparent;
  color: var(--heading);
  font-family: inherit;
  font-size: max(10.5px, 0.76rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.48rem 0.78rem;
  border-radius: 2px;
  cursor: pointer;
  transition: all 0.25s var(--ease);
}
.sutra-bilingual-btn:hover {
  background: rgba(181, 128, 142, 0.18);
  color: var(--ink);
}
.sutra-library-foot {
  margin-top: 2.6rem;
  padding-top: 1.8rem;
  border-top: 1px solid rgba(138, 95, 108, 0.22);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.4rem;
  flex-wrap: wrap;
  font-size: max(12px, 0.92rem);
  color: var(--heading);
}
.sutra-empty {
  grid-column: 1 / -1;
  padding: 2.4rem;
  text-align: center;
  background: var(--paper-2);
  border: 1px dashed rgba(138, 95, 108, 0.35);
}

/* ============================ SUTRA READER MODAL ============================ */
body.sutra-modal-open {
  overflow: hidden;
}
.sutra-modal[hidden] {
  display: none;
}
.sutra-modal {
  position: fixed;
  inset: 0;
  z-index: 95;
  background: rgba(24, 15, 20, 0.72);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  opacity: 0;
  transition: opacity 0.32s var(--ease);
  overscroll-behavior: contain;
}
.sutra-modal.open {
  opacity: 1;
}
.sutra-modal-sheet {
  width: min(100%, 58rem);
  height: min(88svh, 54rem);
  max-height: 88svh;
  min-height: 0;
  background: var(--paper);
  color: var(--ink);
  border: 1px solid rgba(138, 95, 108, 0.35);
  border-radius: 3px;
  box-shadow: 0 2.4rem 5rem rgba(15, 8, 12, 0.48);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.sutra-modal.sr-night .sutra-modal-sheet {
  background: #1e1419;
  color: #f3e8df;
  border-color: rgba(245, 236, 230, 0.22);
}
.sr-header {
  flex-shrink: 0;
  padding: 1.25rem 1.8rem 1rem;
  border-bottom: 1px solid rgba(138, 95, 108, 0.24);
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.sr-badge {
  font-size: max(10.5px, 0.76rem);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--rose);
  margin-bottom: 0.3rem;
}
.sr-title {
  font-size: 1.75rem;
  font-weight: 500;
  letter-spacing: -0.02em;
}
.sr-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  font-size: max(11.5px, 0.86rem);
  opacity: 0.78;
  margin-top: 0.25rem;
}
.sr-controls {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.45rem;
}
.sr-ctrl-btn,
.sr-close {
  appearance: none;
  border: 1px solid rgba(138, 95, 108, 0.34);
  background: transparent;
  color: inherit;
  font-family: inherit;
  font-size: max(11px, 0.8rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.45rem 0.75rem;
  border-radius: 2px;
  cursor: pointer;
}
.sr-close {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.sutra-modal.sr-night .sr-close {
  background: var(--rose);
  border-color: var(--rose);
}
.sr-verse {
  flex-shrink: 0;
  margin: 0.75rem 1.8rem 0;
  padding: 0.65rem 1rem;
  border-left: 3px solid var(--rose);
  background: rgba(181, 128, 142, 0.12);
  font-style: italic;
  font-size: max(11.5px, 0.9rem);
  line-height: 1.48;
}
.sr-chapters-nav {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  padding: 0.75rem 1.8rem;
  border-bottom: 1px solid rgba(138, 95, 108, 0.2);
  background: rgba(181, 128, 142, 0.06);
}
.sr-nav-bar {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
}
.sr-chap-select {
  flex: 1;
  min-width: 14rem;
  padding: 0.48rem 0.75rem;
  border: 1px solid rgba(138, 95, 108, 0.35);
  background: var(--paper);
  color: var(--ink);
  font-family: inherit;
  font-size: max(12px, 0.88rem);
  border-radius: 2px;
}
.sutra-modal.sr-night .sr-chap-select {
  background: #2b1d24;
  color: #f3e8df;
  border-color: rgba(245, 236, 230, 0.28);
}
.sr-step-btn {
  appearance: none;
  border: 1px solid rgba(138, 95, 108, 0.34);
  background: var(--paper-2);
  color: inherit;
  font-family: inherit;
  font-size: max(11px, 0.82rem);
  padding: 0.48rem 0.85rem;
  border-radius: 2px;
  cursor: pointer;
  transition: all 0.2s var(--ease);
}
.sutra-modal.sr-night .sr-step-btn {
  background: #2b1d24;
  border-color: rgba(245, 236, 230, 0.25);
}
.sr-step-btn:hover:not(:disabled) {
  background: var(--rose);
  border-color: var(--rose);
  color: var(--paper);
}
.sr-step-btn:disabled {
  opacity: 0.38;
  cursor: not-allowed;
}
.sr-step-primary {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.sr-chap-pills {
  display: flex;
  gap: 0.42rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-x;
  padding-bottom: 0.25rem;
  scrollbar-width: thin;
}
.sr-chap-btn {
  appearance: none;
  border: 1px solid rgba(138, 95, 108, 0.28);
  background: transparent;
  color: inherit;
  font-family: inherit;
  font-size: max(11px, 0.78rem);
  padding: 0.36rem 0.72rem;
  border-radius: 2px;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
}
.sr-chap-btn.active {
  background: var(--rose);
  border-color: var(--rose);
  color: var(--paper);
}
.sr-body {
  flex: 1 1 0%;
  min-height: 0;
  padding: 1.5rem 1.8rem 2.4rem;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  touch-action: pan-y;
  font-size: 1.15rem;
  line-height: 1.82;
  outline: none;
}
.sr-chap-head-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1.2rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid rgba(138, 95, 108, 0.2);
}
.sr-chap-heading {
  font-size: 1.35rem;
  font-weight: 600;
  color: var(--rose);
}
.sr-chap-count {
  font-size: max(11px, 0.8rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  opacity: 0.72;
}
.sr-para {
  margin-bottom: 1.1rem;
}
.sr-body-footer {
  margin-top: 2.2rem;
  padding-top: 1.2rem;
  border-top: 1px solid rgba(138, 95, 108, 0.24);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.sr-complete-tag {
  font-size: max(11.5px, 0.88rem);
  font-style: italic;
  color: var(--rose);
}
.sr-volumes-bar[hidden],
.sr-chapters-nav[hidden] {
  display: none;
}
.sr-volumes-bar {
  flex-shrink: 0;
  padding: 0.65rem 1.8rem;
  border-bottom: 1px solid rgba(138, 95, 108, 0.2);
  background: rgba(63, 44, 51, 0.05);
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
}
.sr-vol-label {
  font-size: max(10.5px, 0.78rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--heading);
  font-weight: 500;
}
.sr-vol-chips {
  display: flex;
  gap: 0.4rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-x;
}
.sr-vol-chip {
  appearance: none;
  border: 1px solid rgba(138, 95, 108, 0.3);
  background: var(--paper);
  color: inherit;
  font-family: inherit;
  font-size: max(11px, 0.78rem);
  padding: 0.32rem 0.68rem;
  border-radius: 2px;
  cursor: pointer;
  white-space: nowrap;
}
.sutra-modal.sr-night .sr-vol-chip {
  background: #2b1d24;
  border-color: rgba(245, 236, 230, 0.25);
}
.sr-vol-chip.active {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--paper);
}
.sutra-modal.sr-night .sr-vol-chip.active {
  background: var(--rose);
  border-color: var(--rose);
}
.sr-chap-sub-en {
  font-size: max(11.5px, 0.88rem);
  opacity: 0.72;
  margin-top: 0.2rem;
}
.sr-bi-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  padding-bottom: 1.15rem;
  margin-bottom: 1.15rem;
  border-bottom: 1px dashed rgba(138, 95, 108, 0.22);
}
.sr-bi-en {
  opacity: 0.86;
  font-size: 0.96em;
}
@media (max-width: 760px) {
  .sr-bi-row {
    grid-template-columns: 1fr;
    gap: 0.65rem;
  }
  .sr-volumes-bar {
    padding: 0.55rem 1rem;
  }
}
@media (max-width: 900px) {
  .sutra-sec-header {
    margin-bottom: 3rem;
  }
  .sutra-modal {
    padding: 0.5rem;
  }
  .sutra-modal-sheet {
    width: 100%;
    height: 94svh;
    max-height: 94svh;
  }
  .sr-header {
    padding: 0.9rem 1rem 0.75rem;
    gap: 0.65rem;
  }
  .sr-title {
    font-size: 1.35rem;
  }
  .sr-verse {
    display: none;
  }
  .sr-chapters-nav {
    padding: 0.6rem 1rem;
  }
  .sr-body {
    padding: 1.1rem 1rem 2rem;
  }
}
