@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;1,400&family=Noto+Sans+JP:wght@300;400;500&display=swap');

:root { --paper:#f4efe6; --paper-deep:#ebe3d6; --ink:#26201c; --muted:#6f655d; --accent:#9a5b45; --line:rgba(38,32,28,.18); --serif:"Cormorant Garamond","Times New Roman",serif; --sans:"Noto Sans JP","Yu Gothic",sans-serif; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:var(--sans); font-size:1rem; font-weight:300; line-height:2; -webkit-font-smoothing:antialiased; }
img { display:block; width:100%; }
a { color:inherit; text-decoration:none; }
button { color:inherit; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

.site-header { height:112px; padding:0 clamp(28px,5.2vw,84px); display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); position:relative; z-index:30; background:rgba(244,239,230,.94); }
.brand { display:flex; flex-direction:column; line-height:1; }
.brand-en { font:500 1.3rem/.9 var(--serif); letter-spacing:.18em; }
.brand-jp { margin-top:9px; color:var(--muted); font-size:.68rem; font-weight:400; letter-spacing:.28em; }
.global-nav { display:flex; gap:clamp(28px,3.4vw,58px); align-items:center; }
.global-nav a { position:relative; padding:10px 0; font:500 .79rem/1 var(--serif); letter-spacing:.17em; }
.global-nav a::after { content:""; position:absolute; left:0; right:100%; bottom:1px; height:1px; background:var(--accent); transition:right .35s ease; }
.global-nav a:hover::after,.global-nav a[aria-current="page"]::after { right:0; }
.menu-toggle { display:none; width:48px; height:48px; padding:12px 7px; border:0; background:transparent; cursor:pointer; }
.menu-toggle i { display:block; height:1px; margin:6px 0; background:currentColor; transition:transform .3s ease,opacity .2s ease; }

.section-label { margin:0 0 34px; color:var(--accent); font:500 .72rem/1.4 var(--serif); letter-spacing:.28em; }
.section-shell { padding:clamp(110px,12vw,190px) clamp(28px,8.3vw,134px); }
.section-heading h2,.story-body h2,.shop-info h2,.before-visit h2 { margin:0; font:400 clamp(3.7rem,6.8vw,7.6rem)/.84 var(--serif); letter-spacing:-.045em; }
.lead-jp { margin:0; font-size:clamp(1.2rem,1.8vw,1.55rem); font-weight:400; line-height:1.9; letter-spacing:.05em; }
.button { display:inline-flex; align-items:center; justify-content:space-between; gap:42px; min-width:220px; padding:16px 20px; color:var(--paper); background:var(--accent); border:1px solid var(--accent); font:500 .74rem/1.3 var(--serif); letter-spacing:.2em; transition:color .3s,background .3s; }
.button:hover { color:var(--accent); background:transparent; }
.button-outline { margin-top:58px; color:var(--ink); background:transparent; border-color:var(--line); }
.button-outline:hover { color:var(--paper); background:var(--accent); border-color:var(--accent); }
.arrow-link { display:inline-flex; align-items:center; gap:36px; margin-top:38px; padding-bottom:4px; border-bottom:1px solid currentColor; font:500 .74rem var(--serif); letter-spacing:.2em; }
.arrow-link span { transition:transform .25s; }
.arrow-link:hover span { transform:translateX(6px); }
.plain-link { font:500 .72rem var(--serif); letter-spacing:.2em; border-bottom:1px solid currentColor; }

.hero { min-height:calc(100svh - 112px); display:grid; grid-template-columns:minmax(440px,.84fr) minmax(0,1.16fr); grid-template-rows:1fr auto; }
.hero-copy { padding:clamp(80px,10vh,130px) clamp(36px,7vw,112px) clamp(65px,8vh,100px); align-self:center; }
.hero h1 { margin:0; font:400 clamp(4rem,7.3vw,8.4rem)/.78 var(--serif); letter-spacing:-.045em; }
.hero .lead-jp { margin-top:48px; }
.hero-text { max-width:31rem; margin:23px 0 0; color:var(--muted); }
.hero-actions { display:flex; align-items:center; gap:38px; margin-top:42px; }
.hero-visual { grid-column:2; grid-row:1/span 2; min-height:680px; margin:0; position:relative; overflow:hidden; background:var(--paper-deep); }
.hero-visual::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(38,32,28,.02),rgba(38,32,28,.24)); pointer-events:none; }
.hero-visual img { height:100%; object-fit:cover; }
.hero-visual figcaption { position:absolute; right:30px; bottom:26px; z-index:1; display:flex; gap:32px; color:rgba(255,255,255,.9); font:500 .66rem var(--serif); letter-spacing:.18em; }
.hero-hours { padding:18px clamp(36px,7vw,112px); display:grid; grid-template-columns:auto 1fr auto; gap:22px; align-items:center; border-top:1px solid var(--line); font:500 .67rem var(--serif); letter-spacing:.16em; }
.hero-hours strong { font-size:.92rem; font-weight:500; }
.hero-hours small { color:var(--muted); font-size:.62rem; }

.intro { display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(70px,12vw,190px); }
.intro-copy { max-width:31rem; padding-top:62px; }
.intro-copy>p:not(.lead-jp) { margin-top:30px; color:var(--muted); }
.favorites { padding-top:40px; }
.favorites .section-heading { display:flex; align-items:end; justify-content:space-between; margin-bottom:80px; }
.favorite-list { list-style:none; margin:0; padding:0; border-top:1px solid var(--ink); }
.favorite-list li { display:grid; grid-template-columns:50px 1fr 1.25fr 80px; gap:30px; align-items:center; min-height:132px; padding:24px 0; border-bottom:1px solid var(--line); }
.item-no,.price { font:500 .7rem var(--serif); letter-spacing:.15em; }
.favorite-list h3 { margin:0; font:400 2rem/1 var(--serif); }
.favorite-list li div p { margin:8px 0 0; color:var(--muted); font-size:.78rem; }
.favorite-list li>p { color:var(--muted); font-size:.9rem; }
.price { text-align:right; }
.visit-banner { padding:clamp(90px,9vw,145px) clamp(28px,8.3vw,134px); display:grid; grid-template-columns:1.25fr .75fr; gap:80px; align-items:end; color:var(--paper); background:var(--ink); }
.visit-banner h2 { margin:0; font:400 clamp(3.6rem,6.7vw,7.4rem)/.84 var(--serif); letter-spacing:-.045em; }
.visit-banner>div:last-child { max-width:30rem; }
.visit-banner .section-label { color:var(--accent); }
.light { color:var(--paper); }

.page-hero { min-height:560px; padding:clamp(90px,10vw,155px) clamp(28px,8.3vw,134px) 90px; display:grid; grid-template-columns:1.3fr .7fr; grid-template-rows:auto 1fr; column-gap:90px; border-bottom:1px solid var(--line); }
.page-hero>.section-label { grid-column:1/-1; }
.page-hero h1 { margin:0; align-self:end; font:400 clamp(6rem,15vw,14rem)/.66 var(--serif); letter-spacing:-.065em; }
.page-hero>div { max-width:29rem; align-self:end; padding-bottom:5px; }
.page-hero>div>p:last-child { margin:24px 0 0; color:var(--muted); }

.menu-feature { display:grid; grid-template-columns:minmax(320px,.78fr) minmax(450px,1.22fr); gap:clamp(70px,10vw,155px); align-items:start; }
.menu-photo { margin:0; position:sticky; top:30px; }
.menu-photo img { aspect-ratio:2/3; object-fit:cover; }
.menu-photo figcaption { margin-top:16px; color:var(--muted); font:500 .65rem var(--serif); letter-spacing:.16em; }
.menu-content { display:grid; gap:92px; }
.menu-group .section-label { margin-bottom:20px; }
.menu-group h2 { margin:0 0 34px; font:400 clamp(3.5rem,5.5vw,6rem)/.8 var(--serif); }
.price-list { list-style:none; margin:0; padding:0; border-top:1px solid var(--ink); }
.price-list li { display:flex; justify-content:space-between; gap:30px; padding:20px 0; border-bottom:1px solid var(--line); }
.price-list b { font:400 1.35rem var(--serif); }
.price-list small { display:block; margin-top:3px; color:var(--muted); font-size:.75rem; }
.price-list em { font:400 1.05rem var(--serif); white-space:nowrap; }
.menu-note { margin:-45px 0 0; color:var(--muted); font-size:.76rem; }

.story-intro { display:grid; grid-template-columns:.8fr 1.2fr; gap:clamp(80px,13vw,210px); }
.story-year { align-self:start; padding:34px 0; border-top:1px solid var(--ink); border-bottom:1px solid var(--line); }
.story-year span { display:block; font:italic 400 1.2rem var(--serif); }
.story-year strong { display:block; font:400 clamp(5.5rem,10vw,10rem)/.8 var(--serif); letter-spacing:-.06em; }
.story-year p { margin:25px 0 0; color:var(--muted); font-size:.8rem; }
.story-body { max-width:45rem; }
.story-body .lead-jp { margin-top:48px; }
.story-body>p:not(.section-label,.lead-jp) { margin:28px 0 0; color:var(--muted); }
.values { padding-top:40px; }
.values .section-heading { margin-bottom:85px; }
.values-grid { list-style:none; display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(35px,6vw,90px); margin:0; padding:0; }
.values-grid li { padding-top:20px; border-top:1px solid var(--ink); }
.values-grid li>span { color:var(--accent); font:500 .72rem var(--serif); }
.values-grid h3 { margin:45px 0 7px; font:400 2.2rem/1 var(--serif); }
.value-jp { margin:0; font-size:.78rem; font-weight:500; }
.values-grid li>p:last-child { margin-top:22px; color:var(--muted); }
.quote-block { padding:clamp(100px,12vw,190px) 28px; text-align:center; color:var(--paper); background:var(--accent); }
.quote-block blockquote { margin:0; font:italic 400 clamp(3rem,6vw,6.8rem)/.92 var(--serif); }
.quote-block p { margin:35px 0 0; font-size:.8rem; letter-spacing:.08em; }

.access-main { display:grid; grid-template-columns:minmax(440px,1.1fr) minmax(360px,.9fr); gap:clamp(70px,10vw,160px); align-items:center; }
.map-card>p { display:flex; justify-content:space-between; margin:14px 0 0; color:var(--muted); font-size:.72rem; }
.map-grid { aspect-ratio:4/3; position:relative; overflow:hidden; background-color:var(--paper-deep); background-image:linear-gradient(rgba(255,255,255,.48) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.48) 1px,transparent 1px); background-size:42px 42px; border:1px solid var(--line); }
.road { position:absolute; display:block; background:#f9f5ee; box-shadow:0 0 0 1px rgba(38,32,28,.07); }
.road-a { width:145%; height:58px; left:-20%; top:43%; transform:rotate(-7deg); }
.road-b { width:58px; height:135%; left:66%; top:-15%; transform:rotate(5deg); }
.river { position:absolute; width:25px; height:160%; left:17%; top:-25%; background:rgba(154,91,69,.25); transform:rotate(17deg); }
.station,.park { position:absolute; z-index:2; font:500 .64rem/1.35 var(--serif); letter-spacing:.12em; }
.station { right:4%; bottom:10%; padding:8px 11px; background:var(--ink); color:var(--paper); }
.park { left:27%; top:15%; padding:12px 16px; border:1px solid var(--accent); color:var(--accent); }
.shop-pin { position:absolute; z-index:3; left:49%; top:43%; display:flex; align-items:center; gap:8px; padding:8px 12px; color:var(--paper); background:var(--accent); font:500 .62rem var(--serif); letter-spacing:.12em; }
.shop-pin i { width:6px; height:6px; background:currentColor; border-radius:50%; }
.shop-info .section-label { margin-bottom:28px; }
.shop-info dl { margin:55px 0 38px; border-top:1px solid var(--ink); }
.shop-info dl div { display:grid; grid-template-columns:120px 1fr; gap:22px; padding:20px 0; border-bottom:1px solid var(--line); }
.shop-info dt { font:500 .68rem var(--serif); letter-spacing:.12em; }
.shop-info dd { margin:0; font-size:.9rem; }
.shop-info dd small { color:var(--muted); }
.before-visit { padding-top:20px; display:grid; grid-template-columns:.7fr 1.3fr; gap:70px; }
.before-visit>div { display:grid; grid-template-columns:.8fr 1.2fr; gap:70px; padding-top:30px; border-top:1px solid var(--ink); }
.before-visit h2 { font-size:clamp(3rem,5vw,5.5rem); }
.before-visit div p { margin:0; color:var(--muted); }

.site-footer { padding:75px clamp(28px,5.2vw,84px) 30px; display:grid; grid-template-columns:1.4fr .7fr .5fr; gap:50px; color:rgba(244,239,230,.78); background:var(--ink); }
.footer-brand .brand-en,.footer-brand .brand-jp { display:block; color:var(--paper); }
.footer-brand p { margin:32px 0 0; color:rgba(244,239,230,.55); font:italic 400 1.15rem var(--serif); }
.footer-label { margin:0 0 22px!important; color:var(--accent); font:500 .66rem var(--serif); letter-spacing:.2em; }
.footer-hours p { margin:2px 0; font:400 .86rem var(--serif); letter-spacing:.08em; }
.footer-social { display:flex; flex-direction:column; align-items:flex-start; }
.footer-social a { margin-bottom:4px; font:400 .88rem var(--serif); border-bottom:1px solid transparent; }
.footer-social a:hover { border-color:currentColor; }
.copyright { grid-column:1/-1; margin:75px 0 0; padding-top:24px; border-top:1px solid rgba(244,239,230,.15); color:rgba(244,239,230,.35); font:500 .58rem var(--serif); letter-spacing:.16em; }

.reveal { opacity:1; transform:none; }
.reveal.will-reveal { opacity:0; transform:translateY(24px); transition:opacity .85s ease,transform .85s cubic-bezier(.22,1,.36,1); }
.reveal.will-reveal.is-visible { opacity:1; transform:none; }

@media (max-width:980px) {
  .site-header { height:90px; }
  .menu-toggle { display:block; position:relative; z-index:2; }
  .menu-toggle[aria-expanded="true"] i:first-of-type { transform:translateY(7px) rotate(45deg); }
  .menu-toggle[aria-expanded="true"] i:nth-of-type(2) { opacity:0; }
  .menu-toggle[aria-expanded="true"] i:last-of-type { transform:translateY(-7px) rotate(-45deg); }
  .global-nav { position:fixed; inset:0; display:none; flex-direction:column; justify-content:center; gap:35px; background:var(--paper); }
  .global-nav.is-open { display:flex; }
  .global-nav a { font-size:1.8rem; font-weight:400; }
  body.nav-open { overflow:hidden; }
  .hero { min-height:auto; grid-template-columns:1fr; }
  .hero-visual { grid-column:1; grid-row:2; min-height:65vw; }
  .hero-hours { grid-row:3; }
  .intro,.story-intro { grid-template-columns:1fr; }
  .intro-copy { padding-top:0; }
  .menu-feature,.access-main { grid-template-columns:1fr; }
  .menu-photo { position:static; max-width:700px; }
  .menu-photo img { aspect-ratio:4/5; }
  .page-hero { grid-template-columns:1fr; gap:55px; }
  .page-hero>.section-label { grid-column:auto; }
  .page-hero h1,.page-hero>div { align-self:auto; }
  .site-footer { grid-template-columns:1.2fr 1fr; }
  .footer-social { grid-column:2; }
}

@media (max-width:680px) {
  body { font-size:.94rem; }
  .site-header { padding:0 22px; }
  .brand-en { font-size:1.12rem; }
  .section-shell { padding:90px 22px; }
  .section-label { margin-bottom:25px; }
  .hero-copy { padding:75px 22px 65px; }
  .hero h1 { font-size:clamp(3.65rem,18vw,5.3rem); }
  .hero .lead-jp { margin-top:40px; }
  .hero-actions { align-items:flex-start; flex-direction:column; gap:24px; }
  .hero-visual { min-height:105vw; }
  .hero-hours { padding:16px 22px; grid-template-columns:1fr auto; }
  .hero-hours small { display:none; }
  .intro { gap:60px; }
  .favorites { padding-top:15px; }
  .favorites .section-heading { display:block; margin-bottom:55px; }
  .favorite-list li { grid-template-columns:32px 1fr auto; gap:12px; }
  .favorite-list li>p { grid-column:2/-1; margin:0; }
  .favorite-list h3 { font-size:1.7rem; }
  .visit-banner { padding:90px 22px; grid-template-columns:1fr; gap:55px; }
  .page-hero { min-height:auto; padding:80px 22px 70px; }
  .page-hero h1 { font-size:clamp(5.2rem,26vw,8rem); }
  .menu-feature { gap:80px; }
  .menu-content { gap:75px; }
  .story-intro { gap:80px; }
  .values { padding-top:20px; }
  .values-grid { grid-template-columns:1fr; gap:55px; }
  .quote-block { padding:90px 22px; }
  .map-card>p { display:block; }
  .map-card>p span { display:block; }
  .shop-info dl div { grid-template-columns:90px 1fr; }
  .before-visit { grid-template-columns:1fr; gap:20px; }
  .before-visit>div { grid-template-columns:1fr; gap:25px; }
  .site-footer { padding:65px 22px 28px; grid-template-columns:1fr; }
  .footer-social { grid-column:auto; }
  .copyright { margin-top:35px; }
}

@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { transition-duration:.01ms!important; animation-duration:.01ms!important; }
  .reveal,.reveal.will-reveal { opacity:1; transform:none; }
}

/* Home page */
body[data-page="home"] .site-header { position:absolute; inset:0 0 auto; width:100%; color:var(--paper); background:transparent; border-color:rgba(244,239,230,.25); }
body[data-page="home"] .site-header .brand-jp { color:rgba(244,239,230,.72); }
.home-hero { min-height:100svh; position:relative; display:flex; align-items:flex-end; overflow:hidden; color:var(--paper); background:var(--ink); }
.home-hero-image,.home-hero-shade { position:absolute; inset:0; height:100%; }
.home-hero-image { object-fit:cover; object-position:center; }
.home-hero-shade { background:linear-gradient(90deg,rgba(21,17,14,.82) 0%,rgba(21,17,14,.62) 36%,rgba(21,17,14,.2) 66%,rgba(21,17,14,.12) 100%),linear-gradient(0deg,rgba(21,17,14,.5),transparent 45%); }
.home-hero-copy { position:relative; z-index:2; width:min(920px,78vw); padding:190px clamp(28px,8.3vw,134px) clamp(95px,10vh,130px); }
.home-hero-copy .section-label { color:#c98a72; }
.home-hero-copy h1 { margin:0; font:400 clamp(5.5rem,11vw,12.5rem)/.7 var(--serif); letter-spacing:-.06em; text-wrap:balance; }
.home-hero-copy>p:not(.section-label) { max-width:38rem; margin:48px 0 0; font-size:clamp(.96rem,1.25vw,1.12rem); line-height:2.05; letter-spacing:.05em; }
.hero-link { display:inline-flex; align-items:center; gap:38px; margin-top:44px; padding-bottom:6px; border-bottom:1px solid rgba(244,239,230,.7); font:500 .73rem var(--serif); letter-spacing:.22em; }
.hero-link span { transition:transform .25s ease; }
.hero-link:hover span { transform:translateX(6px); }
.home-hero-meta { position:absolute; z-index:2; right:clamp(28px,5vw,80px); bottom:34px; display:flex; gap:38px; font:500 .61rem var(--serif); letter-spacing:.18em; }
.scroll-cue { position:absolute; z-index:2; right:clamp(28px,5vw,80px); top:50%; display:flex; flex-direction:column; align-items:center; gap:14px; transform:translateY(-50%); font:500 .58rem var(--serif); letter-spacing:.18em; writing-mode:vertical-rl; }
.scroll-cue i { width:1px; height:62px; background:rgba(244,239,230,.6); }

.home-about { display:grid; grid-template-columns:1.12fr .88fr; column-gap:clamp(60px,9vw,145px); row-gap:clamp(70px,8vw,120px); }
.home-section-title { grid-column:1/-1; }
.home-section-title h2,.home-favorites-head h2,.home-access h2 { margin:0; font:400 clamp(4.4rem,8vw,9rem)/.78 var(--serif); letter-spacing:-.055em; }
.home-about-image { margin:0; overflow:hidden; background:var(--paper-deep); }
.home-about-image picture { display:block; }
.home-about-image img { aspect-ratio:3/2; object-fit:cover; object-position:center; transition:transform .8s ease; }
.home-about-image:hover img { transform:scale(1.018); }
.home-about-copy { max-width:33rem; align-self:center; }
.home-about-copy>p:not(.lead-jp) { margin:28px 0 0; color:var(--muted); }

.home-favorites { padding-top:45px; background:var(--paper-deep); }
.home-favorites-head { display:flex; justify-content:space-between; align-items:flex-end; gap:60px; margin-bottom:80px; }
.home-favorites-head>p { max-width:25rem; margin:0 0 8px; color:var(--muted); }
.favorite-cards { display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(16px,2.2vw,34px); }
.favorite-card { min-width:0; background:var(--paper); border:1px solid var(--line); overflow:hidden; transition:box-shadow .35s ease,transform .35s ease; }
.favorite-card:hover { transform:translateY(-8px); box-shadow:0 22px 50px rgba(38,32,28,.1); }
.favorite-card-image { display:block; overflow:hidden; background:#d9cdbd; }
.favorite-card-image img { aspect-ratio:4/3; object-fit:cover; object-position:center; transition:transform .7s ease; }
.favorite-card:hover .favorite-card-image img { transform:scale(1.025); }
.favorite-card-body { padding:28px clamp(22px,2.4vw,36px) 34px; }
.card-number,.card-type { color:var(--accent); font:500 .66rem var(--serif); letter-spacing:.2em; }
.card-number { display:block; margin-bottom:28px; }
.card-type { margin:0 0 18px; }
.favorite-card h3 { margin:0; font:400 clamp(2rem,3.3vw,3.4rem)/.92 var(--serif); letter-spacing:-.025em; }
.card-name { margin:13px 0 0; font-size:.78rem; font-weight:400; letter-spacing:.08em; }
.card-description { margin:32px 0 0; color:var(--muted); font-size:.87rem; }
.card-price { margin:40px 0 0; font:400 1.55rem var(--serif); }
.card-price span { margin-right:8px; color:var(--muted); font:300 .62rem var(--sans); }

.home-access { padding:clamp(110px,12vw,185px) clamp(28px,8.3vw,134px); display:grid; grid-template-columns:1.12fr .88fr; gap:clamp(80px,12vw,190px); align-items:end; color:var(--paper); background:var(--ink); }
.home-access .section-label { color:#c98a72; }
.home-access-info { max-width:32rem; }
.home-access-info>p:not(.lead-jp) { color:rgba(244,239,230,.6); }
.home-access-info dl { margin:48px 0; border-top:1px solid rgba(244,239,230,.24); }
.home-access-info dl div { display:grid; grid-template-columns:110px 1fr; gap:24px; padding:15px 0; border-bottom:1px solid rgba(244,239,230,.16); }
.home-access-info dt { color:#c98a72; font:500 .65rem var(--serif); letter-spacing:.16em; }
.home-access-info dd { margin:0; font:400 .95rem var(--serif); letter-spacing:.08em; }
.access-link { display:flex; align-items:center; justify-content:space-between; min-height:68px; padding:0 20px; border:1px solid rgba(244,239,230,.5); font:500 .73rem var(--serif); letter-spacing:.22em; transition:color .3s,background .3s; }
.access-link:hover { color:var(--ink); background:var(--paper); }

@media (max-width:980px) {
  body[data-page="home"].nav-open .site-header { color:var(--ink); }
  body[data-page="home"].nav-open .site-header .brand-jp { color:var(--muted); }
  .home-hero-copy { width:88vw; }
  .home-about,.home-access { grid-template-columns:1fr; gap:70px; }
  .home-section-title { grid-column:auto; }
  .home-about-image { max-width:760px; }
}

@media (max-width:740px) {
  .home-hero { min-height:780px; }
  .home-hero-image { object-position:61% center; }
  .home-hero-shade { background:linear-gradient(90deg,rgba(21,17,14,.76),rgba(21,17,14,.25)),linear-gradient(0deg,rgba(21,17,14,.72),transparent 65%); }
  .home-hero-copy { width:100%; padding:170px 22px 100px; }
  .home-hero-copy h1 { font-size:clamp(4.1rem,20vw,6.2rem); }
  .home-hero-copy>p:not(.section-label) { margin-top:35px; }
  .home-hero-copy br { display:none; }
  .home-hero-meta { left:22px; right:auto; bottom:24px; }
  .home-hero-meta span:last-child,.scroll-cue { display:none; }
  .home-section-title h2,.home-favorites-head h2,.home-access h2 { font-size:clamp(3.9rem,17vw,6rem); }
  .home-favorites { padding-top:80px; }
  .home-favorites-head { display:block; margin-bottom:55px; }
  .home-favorites-head>p { margin-top:35px; }
  .favorite-cards { grid-template-columns:1fr; }
  .favorite-card { border:1px solid var(--line); }
  .favorite-card-body { padding:25px 22px 30px; }
  .favorite-card:hover { transform:none; }
  .home-access { padding:95px 22px; }
}

/* Interior pages */
[hidden] { display:none!important; }
:focus-visible { outline:2px solid var(--accent); outline-offset:4px; }

.menu-catalog { padding-top:clamp(75px,8vw,120px); }
.menu-toolbar { display:flex; justify-content:space-between; align-items:flex-end; gap:30px; margin-bottom:70px; padding-bottom:18px; border-bottom:1px solid var(--ink); }
.menu-filters { display:flex; flex-wrap:wrap; gap:8px 34px; }
.menu-filter { position:relative; padding:9px 0; color:var(--muted); background:transparent; border:0; font:500 .75rem var(--serif); letter-spacing:.18em; cursor:pointer; }
.menu-filter::after { content:""; position:absolute; left:0; right:100%; bottom:3px; height:1px; background:var(--accent); transition:right .3s ease; }
.menu-filter:hover,.menu-filter.is-active { color:var(--ink); }
.menu-filter.is-active::after { right:0; }
.menu-result { margin:0; color:var(--muted); font:500 .66rem var(--serif); letter-spacing:.18em; white-space:nowrap; }
.menu-result span { color:var(--accent); }
.catalog-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 clamp(28px,4vw,64px); }
.catalog-item { min-height:350px; padding:30px 0; display:flex; flex-direction:column; justify-content:space-between; border-top:1px solid var(--line); }
.catalog-item:nth-child(-n+3) { border-top-color:var(--ink); }
.catalog-category { margin:0 0 35px; color:var(--accent); font:500 .66rem var(--serif); letter-spacing:.2em; }
.catalog-item h2 { margin:0; font:400 clamp(2.2rem,3.8vw,3.8rem)/.87 var(--serif); letter-spacing:-.03em; }
.catalog-name { margin:14px 0 0; font-size:.8rem; font-weight:400; letter-spacing:.06em; }
.catalog-description { max-width:25rem; margin:35px 0; color:var(--muted); font-size:.88rem; }
.catalog-price { margin:0; font:400 1.45rem var(--serif); }
.menu-notice { max-width:52rem; margin:65px 0 0; padding-top:20px; border-top:1px solid var(--line); color:var(--muted); font-size:.76rem; }

.concept-section { display:grid; grid-template-columns:1.12fr .88fr; gap:clamp(60px,9vw,145px); }
.concept-heading { grid-column:1/-1; }
.concept-heading h2,.details-heading h2,.access-information h2 { margin:0; font:400 clamp(4rem,7.5vw,8rem)/.8 var(--serif); letter-spacing:-.05em; }
.concept-image { margin:0; align-self:start; overflow:hidden; background:var(--paper-deep); }
.concept-image picture { display:block; }
.concept-image img { aspect-ratio:3/2; object-fit:cover; }
.concept-copy { max-width:34rem; align-self:center; }
.concept-copy>p:not(.lead-jp) { margin:28px 0 0; color:var(--muted); }
.shop-details { padding-top:clamp(80px,9vw,130px); background:var(--paper-deep); }
.details-heading { display:grid; grid-template-columns:1.2fr .8fr; gap:70px; align-items:end; margin-bottom:85px; }
.details-heading .section-label { grid-column:1/-1; margin-bottom:0; }
.details-heading>p:last-child { max-width:28rem; margin:0 0 8px; color:var(--muted); }
.details-grid { display:grid; grid-template-columns:repeat(4,1fr); margin:0; border-top:1px solid var(--ink); border-bottom:1px solid var(--ink); }
.details-grid>div { min-height:255px; padding:24px clamp(18px,2.3vw,34px); border-right:1px solid var(--line); }
.details-grid>div:first-child { padding-left:0; }
.details-grid>div:last-child { padding-right:0; border-right:0; }
.details-grid dt { color:var(--accent); font:500 .66rem var(--serif); letter-spacing:.18em; }
.details-grid dd { margin:58px 0 0; }
.details-grid strong { display:block; font:400 clamp(2.5rem,4vw,4.2rem)/.85 var(--serif); }
.details-grid span { display:block; margin-top:22px; color:var(--muted); font-size:.8rem; line-height:1.9; }
.fiction-note { margin:28px 0 0; color:var(--muted); font-size:.74rem; }

.fiction-banner { padding:13px clamp(28px,8.3vw,134px); color:var(--paper); background:var(--accent); font-size:.72rem; font-style:normal; letter-spacing:.04em; }
.access-page { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(350px,.85fr); gap:clamp(65px,9vw,145px); align-items:center; }
.access-map iframe { display:block; width:100%; height:clamp(520px,48vw,680px); border:0; filter:saturate(.35) sepia(.08); }
.access-map>p { margin:14px 0 0; color:var(--muted); font-size:.72rem; }
.access-information { max-width:36rem; }
.access-information dl { margin:55px 0 0; border-top:1px solid var(--ink); }
.access-information dl>div { display:grid; grid-template-columns:145px 1fr; gap:24px; padding:20px 0; border-bottom:1px solid var(--line); }
.access-information dt { color:var(--accent); font:500 .66rem var(--serif); letter-spacing:.14em; }
.access-information dd { margin:0; font-size:.9rem; }
.access-information dd a { border-bottom:1px solid var(--line); }
.access-information dd small { color:var(--muted); }
.before-visit small { color:var(--accent); }

@media (max-width:980px) {
  .catalog-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .catalog-item:nth-child(3) { border-top-color:var(--line); }
  .concept-section,.access-page { grid-template-columns:1fr; }
  .concept-heading { grid-column:auto; }
  .concept-image { max-width:760px; }
  .details-heading { grid-template-columns:1fr; gap:35px; }
  .details-heading .section-label { grid-column:auto; }
  .details-grid { grid-template-columns:repeat(2,1fr); }
  .details-grid>div:nth-child(2) { border-right:0; }
  .details-grid>div:first-child,.details-grid>div:last-child { padding:24px; }
  .access-map iframe { height:560px; }
}

@media (max-width:680px) {
  .menu-toolbar { display:block; margin-bottom:50px; }
  .menu-filters { gap:6px 22px; }
  .menu-result { margin-top:20px; }
  .catalog-grid { grid-template-columns:1fr; }
  .catalog-item { min-height:315px; }
  .catalog-item:nth-child(2),.catalog-item:nth-child(3) { border-top-color:var(--line); }
  .concept-section { gap:60px; }
  .concept-heading h2,.details-heading h2,.access-information h2 { font-size:clamp(3.7rem,17vw,5.8rem); }
  .details-grid { grid-template-columns:1fr; }
  .details-grid>div,.details-grid>div:first-child,.details-grid>div:last-child { min-height:210px; padding:24px 0; border-right:0; border-bottom:1px solid var(--line); }
  .details-grid>div:last-child { border-bottom:0; }
  .details-grid dd { margin-top:38px; }
  .fiction-banner { padding:14px 22px; }
  .access-page { padding-top:75px; gap:70px; }
  .access-map iframe { height:min(115vw,480px); min-height:360px; }
  .access-information dl>div { grid-template-columns:110px 1fr; gap:18px; }
}

.back-to-top { position:fixed; right:clamp(18px,3vw,42px); bottom:clamp(18px,3vw,42px); z-index:40; width:52px; height:52px; display:grid; place-items:center; padding:0; color:var(--paper); background:var(--accent); border:1px solid var(--accent); border-radius:50%; box-shadow:0 12px 28px rgba(38,32,28,.18); font:400 1.2rem/1 var(--serif); cursor:pointer; opacity:0; pointer-events:none; transform:translateY(12px); transition:opacity .3s ease,transform .3s ease,color .25s ease,background .25s ease; }
.back-to-top.is-visible { opacity:1; pointer-events:auto; transform:none; }
.back-to-top:hover { color:var(--accent); background:var(--paper); }
.catalog-item,.details-grid>div { transition:transform .35s ease,background .35s ease,border-color .35s ease; }

@media (hover:hover) and (pointer:fine) {
  .catalog-item:hover { transform:translateY(-5px); border-top-color:var(--accent); }
  .details-grid>div:hover { background:rgba(255,255,255,.25); }
  .menu-filter:hover::after { right:0; }
}

@media (max-width:680px) {
  .back-to-top { width:46px; height:46px; right:16px; bottom:16px; }
}
