@font-face { font-family:'Kito Display'; src:url('fonts/cormorant-garamond.woff2') format('woff2'); font-style:normal; font-weight:400 600; font-display:swap; }
@font-face { font-family:'KITO Japanese'; src:url('fonts/NotoSerifJP-Variable.ttf') format('truetype'); font-style:normal; font-weight:200 400; font-display:block; }
:root { --ivory:#f1ede4; --paper:#f7f3ea; --ink:#282820; --muted:#625f57; --coffee:#3b2920; --green:#485448; --line:rgba(40,40,32,.2); --font-jp:'KITO Japanese',serif; --font-display:'Kito Display'; }
* { box-sizing:border-box; } html { scroll-behavior:smooth; } body { margin:0; background:var(--ivory); color:var(--ink); font-family:var(--font-display),var(--font-jp); font-synthesis:none; font-weight:300; letter-spacing:.03em; line-height:1.9; overflow-x:hidden; font-size:16px; } a { color:inherit; text-decoration:none; } img { display:block; width:100%; height:auto; } .heading-line,.title-line,.copy-sentence { display:block; } .desktop-break { display:none; } .mobile-break { display:none; } .no-break { white-space:nowrap; }
/* Japanese copy uses natural phrase-aware wrapping; short protected phrases never split mid-word. */
html:lang(ja) :where(p,h1,h2,h3,dd,address,small) { word-break:normal; overflow-wrap:normal; line-break:strict; }
@supports (word-break:auto-phrase) { html:lang(ja) :where(p,h1,h2,h3,dd,address,small) { word-break:auto-phrase; } }
.site-header { position:absolute; z-index:10; inset:0 0 auto; height:88px; display:flex; align-items:center; justify-content:space-between; padding:0 clamp(22px,5vw,76px); color:var(--paper); }
.brand,.site-header nav { font-family:var(--font-display),serif; } .brand { font-size:1.35rem; letter-spacing:.12em; } .site-header nav { display:flex; gap:clamp(22px,3vw,48px); font-size:.95rem; letter-spacing:.08em; } .site-header nav a { padding:12px 2px; border-bottom:1px solid transparent; transition:border-color .3s; } .site-header nav a:hover,.site-header nav a:focus-visible { border-color:currentColor; }
.hero { position:relative; min-height:100svh; color:var(--paper); display:grid; align-items:end; overflow:hidden; } .hero::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(18,17,13,.51),rgba(18,17,13,.04)),linear-gradient(0deg,rgba(18,17,13,.4),transparent 48%); } .hero-image { position:absolute; inset:0; height:100%; object-fit:cover; object-position:center; animation:heroIn 1.7s ease-out both; } .hero-copy { position:relative; z-index:1; padding:0 clamp(22px,7.5vw,116px) clamp(88px,13vh,150px); }
.eyebrow { font-size:.73rem; letter-spacing:.19em; line-height:1.5; } .hero h1 { margin:22px 0 16px; font-family:var(--font-display),serif; font-size:clamp(4.25rem,9.2vw,8.75rem); line-height:.88; letter-spacing:-.035em; font-weight:500; } .hero h1 em { font-weight:400; } .jp-copy { margin:30px 0 0; font-family:var(--font-jp); font-size:clamp(.92rem,1.2vw,1.05rem); line-height:2; letter-spacing:.14em; font-weight:300; } .scroll-cue { position:absolute; z-index:2; right:clamp(22px,4vw,64px); bottom:35px; display:flex; gap:12px; font-family:var(--font-display),serif; letter-spacing:.12em; font-size:.75rem; }
.section-shell { max-width:1240px; margin:auto; padding-left:clamp(22px,7vw,90px); padding-right:clamp(22px,7vw,90px); } .intro { padding-top:clamp(110px,16vw,220px); padding-bottom:clamp(120px,18vw,240px); display:grid; grid-template-columns:minmax(310px,.8fr) minmax(520px,1.2fr); gap:clamp(70px,8vw,110px); align-items:start; }
.intro h2,.food-copy h2,.craft-copy h2,.space-copy h2 { margin:0; font-family:var(--font-jp); font-size:clamp(1.8rem,2.55vw,2.5rem); font-weight:300; line-height:1.7; letter-spacing:.1em; } .body-copy,.craft-copy>p,.space-copy>p,.access-copy>p { margin:8px 0 0; font-family:var(--font-jp); font-size:.98rem; font-weight:300; line-height:2.05; letter-spacing:.045em; color:var(--muted); } .copy-sentence + .copy-sentence { margin-top:.22em; }
.craft-section { background:var(--coffee); color:var(--paper); display:grid; grid-template-columns:minmax(0,1.02fr) minmax(460px,.98fr); min-height:860px; } .craft-image-wrap { margin:clamp(50px,7vw,104px) 0 clamp(50px,7vw,104px) clamp(22px,5vw,72px); overflow:hidden; } .craft-image-wrap img { height:100%; object-fit:cover; } .craft-copy { align-self:center; padding:80px clamp(40px,5vw,82px); } .craft-copy h2 { margin:0 0 36px; } .craft-copy>p { color:#d9d1c5; max-width:650px; } .craft-copy .note { margin-top:50px; font-size:.82rem; letter-spacing:.08em; color:#aaa096; }
.food-section { padding-top:clamp(120px,15vw,200px); padding-bottom:clamp(120px,15vw,200px); display:grid; grid-template-columns:.95fr 1.05fr; gap:clamp(54px,8vw,120px); align-items:center; } .food-copy h2 { margin:0 0 36px; } .food-section figure { margin:0; } .food-section figure img { aspect-ratio:4/3; object-fit:cover; } .food-section figcaption { margin-top:14px; font-family:var(--font-display),serif; font-size:.72rem; letter-spacing:.16em; color:var(--muted); }
.menu-section { padding:clamp(110px,13vw,180px) clamp(22px,7vw,110px); background:#ded8cc; } .menu-heading { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(280px,.8fr); align-items:end; gap:clamp(60px,10vw,150px); max-width:1280px; margin:auto; } .menu-heading h2,.info-section h2,.access-copy h2 { font-family:var(--font-display),serif; font-size:clamp(4rem,8vw,8rem); line-height:.92; font-weight:400; letter-spacing:-.04em; margin:0; } .menu-heading>p:last-child { color:var(--muted); line-height:2.05; letter-spacing:.045em; font-size:.9rem; }
.menu-columns { max-width:1280px; margin:100px auto 0; display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:clamp(44px,6vw,100px); } .menu-list h3 { font-family:var(--font-display),serif; letter-spacing:.11em; font-weight:500; font-size:.98rem; border-bottom:1px solid var(--ink); padding-bottom:17px; } .menu-list ul { list-style:none; padding:0; margin:24px 0 0; } .menu-list li { display:flex; justify-content:space-between; gap:30px; padding:12px 0; font-size:.94rem; } .menu-list li span:last-child { font-family:var(--font-display),serif; font-size:1.05rem; white-space:nowrap; } .tax-note { max-width:1280px; margin:62px auto 0; font-size:.72rem; letter-spacing:.12em; color:var(--muted); }
.space-section { min-height:760px; position:relative; display:grid; align-items:center; color:var(--paper); } .space-section::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(26,31,25,.75),rgba(26,31,25,.12)); } .space-image { position:absolute; inset:0; background:url('images/hero-interior.webp') center 62%/cover no-repeat; filter:saturate(.65) brightness(.72); } .space-copy { z-index:1; max-width:760px; margin-left:clamp(22px,10vw,160px); padding:100px 22px; } .space-copy h2 { margin:0 0 32px; font-size:clamp(1.72rem,2.3vw,2.28rem); letter-spacing:.12em; } .space-copy h2 .title-line { display:inline; } .space-copy>p { color:#e1ddd4; max-width:700px; }
.info-section { padding-top:clamp(110px,14vw,180px); padding-bottom:clamp(110px,14vw,180px); display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(70px,12vw,180px); } .info-section h2 { font-size:clamp(4rem,7vw,7rem); max-width:500px; } .info-section dl { margin:0; border-top:1px solid var(--line); } .info-section dl>div { display:grid; grid-template-columns:145px 1fr; gap:20px; border-bottom:1px solid var(--line); padding:23px 0; } .info-section dt { font-family:var(--font-display),serif; letter-spacing:.12em; font-size:.8rem; } .info-section dd { margin:0; font-family:var(--font-jp); font-weight:300; line-height:1.8; letter-spacing:.06em; } .info-section small { color:var(--muted); font-size:.76rem; }
.access-section { background:var(--paper); display:grid; grid-template-columns:1.15fr .85fr; min-height:660px; } .map-placeholder { min-height:520px; display:grid; place-items:center; overflow:hidden; background:#d8d3c7; } .fictional-map { display:block; width:100%; height:100%; min-height:520px; } .fictional-map text { font-family:var(--font-display),var(--font-jp); } .fictional-map .road-label { fill:#7b786f; font-size:15px; letter-spacing:.12em; } .fictional-map .place-label { fill:#393c35; font-size:17px; letter-spacing:.08em; } .fictional-map .small-label { fill:#706d65; font-size:13px; letter-spacing:.1em; } .fictional-map .shop-label { fill:#f7f3ea; font-size:16px; font-weight:500; letter-spacing:.1em; }
.access-copy { padding:clamp(70px,8vw,120px); align-self:center; } .access-copy h2 { margin:0 0 55px; } .access-copy address { font-family:var(--font-jp); font-weight:300; font-style:normal; line-height:2; letter-spacing:.08em; } .access-copy address span { color:var(--muted); font-size:.9rem; } .access-copy>p { margin-top:26px; max-width:470px; font-size:.9rem; } .text-link { display:inline-flex; gap:20px; align-items:center; margin-top:42px; padding-bottom:9px; border-bottom:1px solid; font-family:var(--font-display),serif; letter-spacing:.08em; }
.instagram-section { text-align:center; padding:clamp(120px,17vw,230px) 22px; background:var(--green); color:var(--paper); } .instagram-section h2 { font-family:var(--font-display),serif; font-size:clamp(4rem,9vw,9rem); line-height:.92; font-weight:400; letter-spacing:-.04em; margin:0 0 42px; } .instagram-section h2 em { font-weight:400; color:#c8c0ad; } .instagram-section>p { font-family:var(--font-jp); font-weight:300; line-height:2.05; letter-spacing:.075em; color:#d9d9d0; } .round-link { width:142px; aspect-ratio:1; border:1px solid rgba(255,255,255,.5); border-radius:50%; display:inline-grid; place-content:center; margin-top:58px; font-family:var(--font-display),serif; letter-spacing:.06em; transition:background .3s,color .3s; } .round-link:hover,.round-link:focus-visible { background:var(--paper); color:var(--green); }
footer { background:#22231f; color:#dcd8cf; padding:90px clamp(22px,6vw,90px) 28px; } .footer-main { display:grid; grid-template-columns:1.5fr 1fr auto; align-items:end; gap:40px; padding-bottom:100px; } .footer-brand { font-family:var(--font-display),serif; font-size:clamp(3rem,7vw,7rem); letter-spacing:.02em; margin:0; } .footer-main>p:nth-child(2) { font-family:var(--font-display),serif; letter-spacing:.12em; line-height:1.7; font-size:.78rem; } .footer-main>a { font-size:.72rem; letter-spacing:.13em; padding:10px 0; } .footer-bottom { border-top:1px solid rgba(255,255,255,.15); padding-top:24px; display:flex; justify-content:space-between; gap:30px; color:#96968f; font-size:.68rem; line-height:1.7; }
@keyframes heroIn { from { transform:scale(1.04); opacity:.55; } to { transform:scale(1); opacity:1; } }
@media (max-width:900px) { .intro { grid-template-columns:1.05fr .95fr; gap:60px; } .craft-section,.access-section { grid-template-columns:1fr; } .craft-image-wrap { height:70svh; margin:28px 28px 0; } .food-section { grid-template-columns:1fr; } .food-section figure { width:85%; margin-left:auto; } .menu-heading { grid-template-columns:1.15fr .85fr; gap:60px; } .menu-columns { grid-template-columns:1fr 1fr; } .menu-list:first-child { grid-row:span 2; } .info-section { grid-template-columns:1fr; } .map-placeholder { order:2; } }
@media (max-width:620px) { .site-header { height:72px; } .site-header nav a:not(:last-child) { display:none; } .hero { min-height:94svh; } .hero-image { object-position:58% center; } .hero-copy { padding-bottom:104px; } .hero h1 { font-size:clamp(3.15rem,13.5vw,3.35rem); line-height:.94; } .hero h1 .heading-line { white-space:nowrap; } .eyebrow { max-width:230px; } .jp-copy { font-size:.88rem; line-height:2; letter-spacing:.12em; } .scroll-cue { font-size:.67rem; } .intro { grid-template-columns:1fr; gap:36px; } .intro h2,.food-copy h2,.craft-copy h2,.space-copy h2 { font-size:clamp(1.62rem,7vw,1.85rem); line-height:1.72; letter-spacing:.09em; } .mobile-break { display:inline; } .body-copy,.craft-copy>p,.space-copy>p,.access-copy>p { font-size:1rem; line-height:2.12; letter-spacing:.045em; } .copy-sentence + .copy-sentence { margin-top:.35em; } .craft-section { min-height:auto; } .craft-image-wrap { height:68svh; min-height:500px; margin:18px 18px 0; } .craft-copy { padding:78px 24px 95px; } .food-section figure { width:100%; } .menu-section { padding-top:96px; padding-bottom:105px; } .menu-heading { display:block; } .menu-heading h2 { margin:0 0 36px; font-size:4.35rem; line-height:.94; } .menu-heading>p:last-child { font-size:.82rem; } .menu-columns { margin-top:68px; grid-template-columns:1fr; gap:44px; } .menu-list:first-child { grid-row:auto; } .space-section { min-height:680px; align-items:end; } .space-image { background-position:65% center; } .space-section::after { background:linear-gradient(0deg,rgba(26,31,25,.88),rgba(26,31,25,.05)); } .space-copy { margin:0; padding:80px 24px; } .space-copy h2 .title-line { display:block; } .info-section h2 { font-size:4.25rem; line-height:.94; } .info-section dl>div { grid-template-columns:100px 1fr; } .access-copy { padding:90px 24px; } .access-copy h2 { font-size:4.4rem; line-height:.94; } .map-placeholder,.fictional-map { min-height:460px; } .instagram-section h2 { font-size:clamp(3rem,14vw,3.45rem); line-height:.96; } .footer-main { grid-template-columns:1fr; gap:30px; padding-bottom:70px; } .footer-bottom { flex-direction:column; } }
/* Responsive QA: keep information-rich SVG artwork fully readable at every size. */
.mobile-nav { display:none; }
.map-placeholder { aspect-ratio:41 / 33; min-height:0; }
.fictional-map { min-height:0; aspect-ratio:41 / 33; }

@media (max-width:620px) {
  .site-header .desktop-nav { display:none; }
  .mobile-nav { display:block; position:relative; font-family:var(--font-display),serif; font-size:.92rem; letter-spacing:.1em; }
  .mobile-nav summary { list-style:none; display:flex; align-items:center; gap:10px; cursor:pointer; padding:12px 0; }
  .mobile-nav summary::-webkit-details-marker { display:none; }
  .mobile-nav[open] summary span { transform:rotate(45deg); }
  .mobile-nav nav { position:absolute; top:54px; right:-12px; width:148px; padding:12px 18px; display:grid; gap:2px; background:rgba(40,32,25,.94); border:1px solid rgba(247,243,234,.25); }
  .mobile-nav nav a { display:block; padding:10px 0; font-size:.88rem; }
  .eyebrow { max-width:none; font-size:.68rem; line-height:1.65; }
  .eyebrow > span { display:block; }
  .eyebrow-keep { white-space:nowrap; }
  .body-copy,.craft-copy>p,.space-copy>p,.access-copy>p { font-size:.96rem; letter-spacing:.035em; }
  .map-placeholder { order:2; aspect-ratio:41 / 33; min-height:0; }
  .fictional-map { width:100%; height:auto; min-height:0; }
  .access-copy { padding:72px 24px 46px; }
}

@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } .hero-image { animation:none; } * { transition-duration:.01ms!important; } }

/* Final responsive typography and map safeguards. */
.eyebrow > span { display:inline; }
.eyebrow > span + span::before { content:" "; }
.fictional-map .road-label { letter-spacing:.035em; }
.fictional-map .place-label,.fictional-map .small-label,.fictional-map .shop-label { letter-spacing:.025em; }
.access-section { overflow:hidden; }

@media (max-width:620px) {
  .site-header { padding-left:16px; padding-right:16px; }
  .brand { font-size:1rem; letter-spacing:.09em; }
  .site-header .desktop-nav { display:flex; gap:11px; font-size:.66rem; letter-spacing:.055em; }
  .site-header nav a { display:block!important; padding:12px 0; }
  .mobile-nav { display:none!important; }
  .eyebrow > span { display:block; }
  .eyebrow > span + span::before { content:""; }
  .food-copy h2 .title-line:last-child { white-space:nowrap; }
  .food-copy h2 { font-size:1.55rem; letter-spacing:.065em; }
  .instagram-section>p { font-size:.92rem; letter-spacing:.045em; padding:0 8px; }
  .fictional-map .road-label { font-size:13px; letter-spacing:.02em; }
  .fictional-map .place-label { font-size:15px; letter-spacing:.015em; }
  .fictional-map .small-label { font-size:11px; letter-spacing:.02em; }
  .fictional-map .shop-label { font-size:14px; letter-spacing:.02em; }
}
