/*
 * Kissa Komorebi — buildless, shared design system.
 * 01 Foundations / 02 Header / 03 Home / 04 Menu / 05 Story
 * 06 Access / 07 Footer / 08 Responsive / 09 Local photographs
 */
:root {
  --paper: #f7f3eb;
  --paper-deep: #eee7dc;
  --ink: #302823;
  --muted: #706358;
  --accent: #93543f;
  --line: #d8cfc2;
  --serif: "Baskerville", "Times New Roman", "Yu Mincho", Georgia, serif;
  --sans: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;
}

/* 01 — Foundations */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 40px; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--sans); font-size: 16px; line-height: 2.1; -webkit-font-smoothing: antialiased; }
h1, h2, h3, p, figure { margin: 0; }
h1, h2, h3 { font-weight: 400; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; cursor: pointer; }
a, button, summary { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
a, button { transition: color .25s, background-color .25s, border-color .25s; }
a:hover { color: var(--accent); }
button:focus-visible, a:focus-visible, summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 6px; }
::selection { background: #dec5b6; color: var(--ink); }
[hidden] { display: none !important; }
.container { width: min(1280px, calc(100% - 112px)); margin-inline: auto; }
.section-space { padding-block: 144px; }
.eyebrow { margin-bottom: 25px; color: var(--accent); font-family: var(--sans); font-size: 11px; font-weight: 500; line-height: 1.6; letter-spacing: .2em; }
.display-title, .page-title, .feature-title { font-family: var(--serif); font-weight: 400; line-height: 1.07; letter-spacing: -.045em; text-wrap: balance; }
.display-title { font-size: clamp(50px, 5.3vw, 78px); }
em { font-weight: 400; }
.display-title em, .page-title em, .feature-title em { color: var(--accent); }
.section-ja { margin-top: 27px; font-size: 17px; letter-spacing: .05em; line-height: 2; }
.prose { margin-top: 30px; }
.prose p + p { margin-top: 26px; }
.prose p { font-size: 15px; line-height: 2.3; }
.arrow-link { display: inline-flex; align-items: center; justify-content: space-between; gap: 45px; min-width: 210px; min-height: 54px; padding: 12px 0; border-bottom: 1px solid var(--accent); font-size: 13px; letter-spacing: .06em; }
.arrow-link > span { font-family: var(--serif); font-size: 29px; line-height: 1; transition: transform .25s; }
.arrow-link:hover > span { transform: translate(3px, -3px); }
.photo { width: 100%; height: 100%; background-size: cover; background-position: center; background-color: var(--paper-deep); filter: saturate(.65) sepia(.13); }
.photo-hero { background-position: 58% center; }
.photo-latte { background-position: 40% center; }
.photo-dessert { background-position: center 60%; }
.skip-link { position: absolute; z-index: 20; top: -100px; left: 20px; background: var(--ink); color: var(--paper); padding: 10px 20px; }
.skip-link:focus { top: 10px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }

/* 02 — Common header */
.site-header { border-bottom: 1px solid var(--line); }
.header-inner { width: min(1440px, calc(100% - 112px)); margin: auto; min-height: 116px; display: flex; align-items: center; justify-content: space-between; gap: 40px; }
.brand { display: inline-flex; flex-direction: column; flex-shrink: 0; }
.brand-word { font-family: var(--serif); font-size: 38px; line-height: 1; letter-spacing: -.035em; }
.brand-word > span { color: var(--accent); }
.brand-caption { margin-top: 10px; font-size: 9px; letter-spacing: .1em; line-height: 1.5; }
.main-nav { display: flex; align-items: center; gap: 39px; }
.main-nav a { position: relative; padding: 17px 0; font-size: 11px; letter-spacing: .15em; white-space: nowrap; }
.main-nav a::after { position: absolute; bottom: 8px; left: 0; content: ""; width: 0; height: 1px; background: var(--accent); transition: width .25s; }
.main-nav a[aria-current="page"] { color: var(--accent); }
.main-nav a:hover::after, .main-nav a[aria-current="page"]::after { width: 100%; }
.nav-toggle { display: none; }

/* 03 — Home */

.story-section { display: grid; grid-template-columns: 1fr 1fr; gap: 11%; align-items: center; }
.story-figure > .photo { height: 610px; filter: saturate(.36) sepia(.25); background-position: 55% center; }
.story-figure figcaption { font-size: 9px; letter-spacing: .15em; color: var(--muted); margin-top: 18px; }
.story-copy .section-ja { font-size: 16px; }
.story-copy .arrow-link { margin-top: 30px; }
.favorites-section, .values-section { background: var(--paper-deep); }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 40px; margin-bottom: 55px; }
.section-heading > .arrow-link { margin-bottom: 4px; flex-shrink: 0; }
.favorites-section .display-title { font-size: clamp(48px, 5.3vw, 76px); }
.menu-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 64px 32px; }
.menu-image { position: relative; aspect-ratio: 4/4.3; overflow: hidden; margin-bottom: 24px; }
.menu-image .photo { transition: transform .6s; }
.menu-card-link { display: block; }
.menu-card-link:hover .photo { transform: scale(1.035); }
.image-tag { position: absolute; top: 17px; left: 17px; color: var(--ink); background: var(--paper); padding: 6px 10px; font-size: 9px; letter-spacing: .13em; line-height: 1.7; }
.card-heading { display: flex; justify-content: space-between; align-items: baseline; gap: 13px; }
.card-heading h3 { font: 26px/1.15 var(--serif); letter-spacing: -.025em; text-wrap: balance; }
.price { font: 21px/1.4 var(--serif); white-space: nowrap; }
.menu-ja { font-size: 12px; margin-top: 9px; letter-spacing: .03em; }
.card-description { font-size: 14px; color: var(--muted); line-height: 2.1; margin-top: 18px; }
.menu-note { font-size: 12px; color: var(--muted); line-height: 1.9; }
.favorites-section .menu-note { text-align: right; margin-top: 33px; }

/* 04 — Menu and page introductions */
.page-intro { padding-top: 87px; padding-bottom: 75px; display: grid; grid-template-columns: 1.2fr 1fr; gap: 35px 65px; position: relative; align-items: end; }
.page-title { font-size: clamp(78px, 8.8vw, 126px); }
.page-ja { font-size: 17px; letter-spacing: .12em; margin-top: 23px; }
.intro-description { font-size: 15px; color: var(--muted); padding-bottom: 6px; line-height: 2.3; }
.page-number { position: absolute; top: 89px; right: 0; font-size: 9px; letter-spacing: .16em; color: var(--muted); }
.menu-feature { display: grid; grid-template-columns: 1.1fr 1fr; background: var(--paper-deep); }
.menu-feature > .photo { min-height: 420px; background-position: center 55%; }
.menu-feature-copy { padding: 56px 70px; }
.feature-title { font-size: 62px; }
.menu-feature-copy > p:not(.eyebrow) { font-size: 14px; line-height: 2.2; margin-top: 25px; }
.feature-price { display: flex; align-items: baseline; gap: 30px; margin-top: 24px; padding-top: 22px; border-top: 1px solid var(--line); font-size: 12px; }
.feature-price > span { font: 23px var(--serif); }
.full-menu .display-title { font-size: clamp(45px, 4.7vw, 68px); }
.full-menu .section-heading { margin-bottom: 40px; }
.menu-filters { display: none; gap: 34px; margin-bottom: 50px; border-bottom: 1px solid var(--line); }
.js .menu-filters { display: flex; }
.menu-filters button { position: relative; flex: 1; border: 0; padding: 17px 12px 22px; background: transparent; color: var(--muted); font-size: 12px; line-height: 1.7; }
.menu-filters button > span { display: block; color: var(--ink); font: 27px/1.5 var(--serif); letter-spacing: -.02em; }
.menu-filters button::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: transparent; transition: background-color .25s; }
.menu-filters button[aria-pressed="true"], .menu-filters button[aria-pressed="true"] > span, .menu-filters button:hover, .menu-filters button:hover > span { color: var(--accent); }
.menu-filters button[aria-pressed="true"]::after { background: var(--accent); }
.menu-information { margin-top: 70px; padding: 40px; border: 1px solid var(--line); }
.menu-information .eyebrow { margin-bottom: 17px; }
.menu-information ul { padding-left: 19px; margin: 0; font-size: 13px; color: var(--muted); line-height: 2.1; }
.menu-information li + li { margin-top: 8px; }
.menu-information .menu-note { margin-top: 20px; }

/* 05 — Our story */
.about-cover > .photo { height: 560px; filter: saturate(.32) sepia(.23); background-position: center 58%; }
.about-cover figcaption { display: flex; justify-content: space-between; gap: 20px; padding-top: 17px; font-size: 11px; color: var(--muted); letter-spacing: .05em; }
.about-cover figcaption > span:first-child { font-size: 10px; letter-spacing: .16em; }
.philosophy-section { display: grid; grid-template-columns: 1.1fr 1fr; gap: 100px; }
.philosophy-copy { padding-top: 35px; }
.philosophy-copy > .section-ja { margin-top: 0; font-size: 19px; }
.signature { font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; margin-top: 35px; letter-spacing: .2em; }
.values-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 55px; }
.value-number { display: block; font: italic 40px var(--serif); color: var(--accent); margin-bottom: 28px; }
.values-grid h3 { font: 30px/1.2 var(--serif); letter-spacing: -.03em; min-height: 72px; }
.value-ja { font-size: 15px; margin-top: 13px; margin-bottom: 22px; }
.values-grid p:last-child { font-size: 14px; line-height: 2.2; color: var(--muted); }
.craft-photo { margin-top: 120px; position: relative; overflow: hidden; }
.craft-photo > .photo { height: 450px; background-position: center 54%; filter: saturate(.35) sepia(.22) brightness(.75); }
.craft-photo figcaption { position: absolute; left: 50px; bottom: 45px; color: var(--paper); font: italic 44px/1.2 var(--serif); letter-spacing: -.02em; }

/* 06 — Access */
.access-layout { display: grid; grid-template-columns: 1fr 1.18fr; gap: 10%; padding-top: 10px; }
.access-details h2 { font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: 28px; letter-spacing: .13em; margin-bottom: 35px; }
.shop-info { margin: 0; }
.shop-info > div { display: grid; grid-template-columns: 90px 1fr; gap: 20px; padding: 20px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.shop-info dt { color: var(--muted); font-size: 13px; }
.shop-info dd { margin: 0; }
.shop-hours { font: 25px var(--serif); }
.muted { font-size: 12px; color: var(--muted); }
.sample-notice { padding-left: 16px; border-left: 2px solid var(--accent); font-size: 12px; color: var(--muted); line-height: 2; margin-top: 30px; }
.access-map { position: relative; height: 430px; overflow: hidden; background: var(--paper-deep); font-size: 12px; }
.map-block { position: absolute; background: #e0d7ca; }
.block-one { top: 30px; left: 25px; width: 25%; height: 28%; }
.block-two { top: 30px; right: 25px; width: 47%; height: 28%; }
.block-three { bottom: 55px; left: 25px; width: 25%; height: 24%; }
.block-four { bottom: 60px; right: 23px; width: 34%; height: 24%; }
.map-road { position: absolute; background: var(--paper); }
.road-horizontal { left: 0; top: 44%; width: 100%; height: 12%; }
.road-vertical { top: 0; left: 34%; height: 100%; width: 11%; }
.map-park { position: absolute; top: 32px; left: 56%; width: 28%; height: 28%; background: #cfc5b5; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 12px; }
.map-park > span { font-size: 36px; line-height: 1.3; }
.map-station { position: absolute; left: 25%; bottom: 44px; background: var(--paper); border: 1px solid var(--muted); padding: 7px 16px; font-size: 12px; }
.map-station::before { content: ""; position: absolute; top: calc(100% + 14px); left: -200px; width: 800px; border-top: 6px double #998b7b; transform: rotate(-3deg); }
.map-route { position: absolute; }
.route-horizontal { top: 50%; left: 39.5%; width: 31%; border-top: 2px dashed var(--accent); }
.route-vertical { top: 50%; left: 39.5%; height: 29%; border-left: 2px dashed var(--accent); }
.map-cafe { position: absolute; left: 58%; top: 57%; width: 28%; display: flex; flex-direction: column; align-items: center; background: var(--accent); color: var(--paper); padding: 10px 7px 12px; font-size: 12px; box-shadow: 5px 5px 0 #d3c7b9; }
.map-cafe::before { content: ""; position: absolute; top: -12px; border: 12px solid transparent; border-top: 0; border-bottom-color: var(--accent); }
.map-cafe > span { font: italic 38px/1.2 var(--serif); }
.map-street { position: absolute; top: 33px; left: 38%; writing-mode: vertical-rl; font-size: 10px; letter-spacing: .2em; }
.map-north { position: absolute; right: 15px; top: 12px; font: 13px var(--serif); }
.map-caption { position: absolute; top: 12px; left: 18px; font-size: 8px; letter-spacing: .12em; }
.map-note { margin-top: 15px; font-size: 11px; color: var(--muted); }
.directions { margin-top: 36px; }
.directions .eyebrow { margin-bottom: 13px; }
.directions h3 { font-size: 18px; font-weight: 400; }
.directions ol { padding-left: 22px; margin-top: 18px; font-size: 13px; line-height: 2.1; color: var(--muted); }
.directions li + li { margin-top: 10px; }
.faq-section { display: grid; grid-template-columns: 1fr 1.2fr; gap: 80px; border-bottom: 1px solid var(--line); }
.faq-section .display-title { font-size: clamp(46px, 4.6vw, 66px); }
.faq-list details { border-bottom: 1px solid var(--line); }
.faq-list details:first-child { border-top: 1px solid var(--line); }
.faq-list summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 25px; cursor: pointer; font-size: 14px; padding: 27px 0; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-icon { width: 14px; height: 14px; flex-shrink: 0; position: relative; }
.faq-icon::before, .faq-icon::after { content: ""; position: absolute; left: 0; top: 6px; height: 1px; width: 14px; background: var(--accent); }
.faq-icon::after { transform: rotate(90deg); transition: transform .25s; }
.faq-list details[open] .faq-icon::after { transform: rotate(0); }
.faq-list details p { color: var(--muted); font-size: 14px; padding: 0 28px 28px 0; line-height: 2.2; }

/* 07 — Common visit invitation and footer */
.visit-section { display: grid; grid-template-columns: 1fr 1fr; align-items: end; gap: 90px; padding-block: 110px; }
.visit-section .display-title { font-size: clamp(62px, 6vw, 86px); }
.visit-copy { justify-self: end; padding-bottom: 8px; }
.visit-copy p { font-size: 15px; line-height: 2.3; margin-bottom: 29px; }
.visit-copy .arrow-link { min-width: 265px; }
.site-footer { background: var(--ink); color: var(--paper); padding-top: 75px; padding-bottom: 30px; }
.footer-main { display: grid; grid-template-columns: 1.5fr 1fr 1fr; gap: 70px; padding-bottom: 60px; }
.site-footer .brand-word { font-size: 65px; }
.site-footer .brand-word > span { color: var(--paper); }
.site-footer .brand-caption { font-size: 8px; letter-spacing: .14em; margin-top: 15px; }
.footer-brand > p { font-size: 13px; letter-spacing: .08em; margin-top: 25px; }
.site-footer .eyebrow { color: #d3c4b5; font-size: 10px; margin-bottom: 22px; }
.hours-number { font: 31px var(--serif); }
.footer-hours > p:last-child, .footer-social > p:last-child { font-size: 12px; color: #c9beb3; margin-top: 13px; }
.social-name { display: flex; align-items: center; gap: 15px; font: 24px var(--serif); }
.coming-soon { font: 8px var(--sans); letter-spacing: .12em; border: 1px solid #756659; padding: 5px 8px; white-space: nowrap; color: #d3c4b5; }
.footer-nav-row { display: flex; justify-content: space-between; align-items: center; gap: 30px; border-top: 1px solid #584c41; padding: 27px 0; }
.footer-nav-row nav { display: flex; gap: 35px; font-size: 10px; letter-spacing: .13em; }
.site-footer a:hover { color: #d5ac95; }
.site-footer a:focus-visible { outline-color: var(--paper); }
.back-top { display: inline-flex; align-items: center; gap: 20px; font-size: 9px; letter-spacing: .13em; white-space: nowrap; min-height: 44px; }
.back-top > span { font-size: 23px; }
.footer-bottom { display: flex; justify-content: space-between; align-items: start; gap: 45px; border-top: 1px solid #584c41; padding-top: 23px; }
.footer-bottom small { font-size: 10px; color: #c9beb3; white-space: nowrap; }
.footer-bottom p { font-size: 10px; color: #bcaea1; line-height: 2; text-align: right; }
.footer-bottom a { text-decoration: underline; text-underline-offset: 4px; }

/* 08 — Responsive layouts */

@media (max-width: 1150px) {
.container, .header-inner { width: calc(100% - 80px); }
.main-nav { gap: 27px; }

.story-section { gap: 8%; }
.story-figure > .photo { height: 560px; }
.display-title { font-size: 60px; }
.section-ja { font-size: 15px; }
.menu-grid { gap: 55px 25px; }
.card-heading { flex-wrap: wrap; gap: 6px 12px; }
.card-heading h3 { font-size: 25px; }
.price { font-size: 20px; }
.menu-feature-copy { padding: 42px; }
.feature-title { font-size: 54px; }
.menu-feature > .photo { min-height: 400px; }
.values-grid { gap: 32px; }
.values-grid h3 { font-size: 28px; }
.philosophy-section { gap: 60px; }
.access-layout { gap: 7%; }
.shop-info > div { grid-template-columns: 70px 1fr; gap: 18px; }
.faq-section { gap: 45px; }
.footer-main { gap: 40px; grid-template-columns: 1.3fr 1fr 1fr; }
.social-name { align-items: start; flex-direction: column; gap: 14px; }
}
@media (max-width: 800px) {
html { scroll-padding-top: 25px; }
.container, .header-inner { width: calc(100% - 56px); }
.header-inner { min-height: 100px; gap: 0; flex-wrap: wrap; padding-block: 23px; }
.brand-word { font-size: 33px; }
.brand-caption { font-size: 8px; margin-top: 8px; letter-spacing: .05em; }
.nav-toggle { display: none; align-items: center; gap: 13px; min-height: 44px; padding: 0; background: none; border: 0; }
.js .nav-toggle { display: inline-flex; }
.toggle-label { font-size: 10px; letter-spacing: .12em; }
.toggle-lines { width: 26px; display: flex; flex-direction: column; gap: 6px; }
.toggle-lines > span { height: 1px; width: 26px; background: var(--ink); transition: transform .25s; }
.nav-toggle[aria-expanded="true"] .toggle-lines > span:first-child { transform: translateY(3.5px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] .toggle-lines > span:last-child { transform: translateY(-3.5px) rotate(-45deg); }
.main-nav { width: 100%; display: flex; justify-content: space-between; gap: 15px; margin-top: 25px; padding-top: 8px; border-top: 1px solid var(--line); }
.js .main-nav { display: none; }
.js .main-nav.is-open { display: flex; }
.main-nav a { font-size: 10px; letter-spacing: .07em; padding-block: 13px; }
.main-nav a::after { bottom: 4px; }
.section-space { padding-block: 90px; }

.story-section { gap: 50px; }
.story-figure > .photo { height: 510px; }
.display-title { font-size: 50px; }
.story-copy .section-ja { font-size: 14px; }
.prose p { font-size: 14px; line-height: 2.2; }
.story-copy .arrow-link { min-width: 175px; }
.section-heading { align-items: start; flex-direction: column; gap: 23px; margin-bottom: 38px; }
.favorites-section .display-title { font-size: 57px; }
.menu-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px 26px; }
.favorites-section .menu-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.favorites-section .card-heading h3 { font-size: 23px; }
.menu-ja { font-size: 12px; }
.card-description { font-size: 14px; }
.image-tag { font-size: 8px; top: 11px; left: 11px; padding: 5px 7px; letter-spacing: .07em; }
.menu-image { margin-bottom: 19px; }
.favorites-section .card-description { font-size: 13px; }

.page-intro { padding-top: 60px; padding-bottom: 50px; grid-template-columns: 1fr; gap: 25px; }
.page-title { font-size: 90px; }
.page-number { top: 61px; font-size: 8px; }
.page-intro .eyebrow { font-size: 10px; }
.page-ja { font-size: 16px; margin-top: 20px; }
.intro-description { font-size: 14px; }
.menu-feature { grid-template-columns: 1fr 1fr; }
.menu-feature > .photo { min-height: 380px; }
.menu-feature-copy { padding: 35px 30px; }
.menu-feature-copy .eyebrow { font-size: 9px; letter-spacing: .12em; }
.feature-title { font-size: 45px; }
.menu-feature-copy > p:not(.eyebrow) { font-size: 13px; }
.feature-price { flex-wrap: wrap; gap: 8px 20px; }
.menu-filters { gap: 17px; }
.menu-filters button > span { font-size: 24px; }
.menu-information { margin-top: 50px; padding: 30px; }
.about-cover > .photo { height: 420px; }
.philosophy-section { grid-template-columns: 1fr 1fr; gap: 40px; }
.philosophy-copy { padding-top: 0; }
.philosophy-copy > .section-ja { font-size: 16px; }
.desktop-br { display: none; }
.values-grid { grid-template-columns: 1fr; gap: 35px; }
.values-grid article { padding-top: 32px; border-top: 1px solid var(--line); display: grid; grid-template-columns: 60px 1fr; gap: 12px 25px; }
.value-number { grid-row: 1/4; font-size: 35px; margin-bottom: 0; }
.values-grid h3 { min-height: 0; font-size: 32px; }
.value-ja { margin: 0; }
.values-grid p:last-child { grid-column: 2; }
.craft-photo { margin-top: 80px; }
.craft-photo > .photo { height: 350px; }
.craft-photo figcaption { left: 30px; bottom: 30px; font-size: 33px; }
.access-layout { grid-template-columns: 1fr 1.1fr; gap: 35px; }
.access-details .eyebrow { font-size: 9px; letter-spacing: .12em; }
.access-details h2 { font-size: 25px; }
.shop-info > div { grid-template-columns: 1fr; gap: 6px; padding-block: 16px; }
.shop-info dt { font-size: 12px; }
.shop-info dd { font-size: 14px; }
.access-map { height: 365px; }
.map-cafe, .map-station, .map-park { font-size: 10px; }
.map-station { left: 22%; padding-inline: 10px; }
.map-cafe > span { font-size: 31px; }
.map-caption { font-size: 7px; left: 12px; }
.directions h3 { font-size: 17px; }
.directions ol { font-size: 13px; }
.faq-section { grid-template-columns: 1fr; gap: 35px; }
.visit-section { gap: 50px; padding-block: 80px; }
.visit-section .display-title { font-size: 65px; }
.visit-copy .arrow-link { min-width: 220px; }
.visit-copy p { font-size: 14px; }
.site-footer { padding-top: 55px; }
.footer-main { grid-template-columns: 1.1fr 1fr; gap: 40px; padding-bottom: 40px; }
.footer-brand { grid-column: 1/-1; }
.site-footer .brand-word { font-size: 62px; }
.footer-brand > p { margin-top: 18px; }
.social-name { flex-direction: row; align-items: center; gap: 12px; }
.footer-nav-row nav { gap: 20px; font-size: 9px; }
.back-top { font-size: 8px; gap: 14px; }
.footer-bottom { flex-direction: column; gap: 15px; }
.footer-bottom p { text-align: left; }
}
@media (max-width: 600px) {
.container, .header-inner { width: calc(100% - 48px); }
.section-space { padding-block: 80px; }
.header-inner { min-height: 92px; padding-block: 21px; }
.brand-word { font-size: 31px; }
.brand-caption { font-size: 7px; letter-spacing: .01em; }
.toggle-label { display: none; }
.nav-toggle { min-width: 44px; justify-content: end; }

.story-section { grid-template-columns: 1fr; gap: 50px; }
.story-figure { margin-right: 18px; }
.story-figure > .photo { height: 420px; }
.story-figure figcaption { font-size: 8px; }
.story-copy { padding-left: 5px; }
.display-title { font-size: clamp(47px, 13vw, 65px); }
.eyebrow { font-size: 10px; margin-bottom: 23px; letter-spacing: .17em; }
.story-copy .section-ja, .section-ja { font-size: 15px; margin-top: 23px; }
.prose { margin-top: 24px; }
.prose p { font-size: 15px; line-height: 2.2; }
.story-copy .arrow-link { min-width: 210px; margin-top: 24px; }
.section-heading { gap: 23px; margin-bottom: 35px; }
.favorites-section .display-title { font-size: clamp(41px, 10.5vw, 63px); }
.menu-grid, .favorites-section .menu-grid { grid-template-columns: 1fr; gap: 44px; }
.menu-image { aspect-ratio: 1.12; margin-bottom: 20px; }
.image-tag { top: 16px; left: 16px; font-size: 9px; padding: 6px 10px; }
.card-heading, .favorites-section .card-heading { flex-wrap: nowrap; align-items: baseline; gap: 15px; }
.card-heading h3, .favorites-section .card-heading h3 { font-size: 29px; }
.price { font-size: 22px; }
.menu-ja { font-size: 13px; margin-top: 8px; }
.card-description, .favorites-section .card-description { font-size: 14px; margin-top: 15px; }
.favorites-section .menu-note { text-align: left; font-size: 11px; margin-top: 30px; }

.page-intro { padding-top: 46px; padding-bottom: 42px; gap: 25px; }
.page-title { font-size: clamp(67px, 17.5vw, 98px); }
.page-intro .eyebrow { max-width: 80%; font-size: 9px; letter-spacing: .1em; }
.page-number { top: 48px; font-size: 7px; letter-spacing: .1em; writing-mode: vertical-rl; }
.page-ja { font-size: 15px; margin-top: 18px; }
.intro-description { font-size: 14px; }
.menu-feature { grid-template-columns: 1fr; }
.menu-feature > .photo { min-height: 0; height: 280px; background-position: center 52%; }
.menu-feature-copy { padding: 35px 28px; }
.feature-title { font-size: 53px; }
.menu-feature-copy .eyebrow { font-size: 9px; }
.menu-feature-copy > p:not(.eyebrow) { font-size: 14px; }
.feature-price { gap: 20px; }
.full-menu .display-title { font-size: clamp(43px, 11vw, 65px); }
.full-menu .section-heading { margin-bottom: 22px; }
.menu-filters { gap: 0; margin-bottom: 35px; }
.menu-filters button { padding: 16px 3px 18px; font-size: 10px; }
.menu-filters button > span { font-size: clamp(18px, 5vw, 25px); }
.menu-information { padding: 25px 22px; margin-top: 40px; }
.menu-information ul { font-size: 13px; line-height: 2; }
.menu-information .menu-note { font-size: 11px; }
.about-cover > .photo { height: 340px; background-position: 55% center; }
.about-cover figcaption { flex-direction: column; gap: 5px; font-size: 10px; }
.about-cover figcaption > span:first-child { font-size: 9px; }
.philosophy-section { grid-template-columns: 1fr; gap: 35px; }
.philosophy-copy > .section-ja { font-size: 17px; }
.philosophy-copy .prose p { font-size: 15px; }
.values-grid { gap: 28px; }
.values-grid article { grid-template-columns: 35px 1fr; gap: 12px 17px; padding-top: 28px; }
.value-number { font-size: 27px; }
.values-grid h3 { font-size: 29px; }
.value-ja { font-size: 14px; }
.values-grid p:last-child { font-size: 14px; }
.craft-photo { margin-top: 70px; }
.craft-photo > .photo { height: 320px; background-position: 60% center; }
.craft-photo figcaption { left: 23px; right: 23px; bottom: 25px; font-size: 31px; }
.access-layout { grid-template-columns: 1fr; gap: 45px; padding-top: 8px; }
.access-details .eyebrow { font-size: 10px; letter-spacing: .14em; }
.access-details h2 { font-size: 27px; margin-bottom: 20px; }
.shop-info > div { grid-template-columns: 75px 1fr; gap: 15px; padding-block: 19px; }
.shop-info dt { font-size: 12px; }
.shop-info dd { font-size: 14px; }
.sample-notice { font-size: 12px; }
.access-map { height: 365px; }
.map-park, .map-station, .map-cafe { font-size: 11px; }
.map-cafe > span { font-size: 32px; }
.map-station { left: 23%; }
.map-caption { font-size: 7px; }
.map-note { font-size: 10px; }
.directions { margin-top: 32px; }
.directions h3 { font-size: 19px; }
.directions ol { font-size: 14px; line-height: 2.1; }
.faq-section { gap: 30px; }
.faq-section .display-title { font-size: clamp(44px, 12vw, 67px); }
.faq-list summary { font-size: 14px; padding-block: 23px; gap: 18px; }
.faq-list details p { font-size: 14px; padding-right: 8px; }
.visit-section { grid-template-columns: 1fr; gap: 32px; padding-block: 75px; }
.visit-section .display-title { font-size: 66px; }
.visit-copy { justify-self: stretch; padding: 0; }
.visit-copy p { font-size: 14px; margin-bottom: 18px; }
.visit-copy .arrow-link { min-width: 245px; }
.site-footer { padding-top: 50px; padding-bottom: 25px; }
.footer-main { grid-template-columns: 1fr; gap: 35px; padding-bottom: 35px; }
.footer-brand { grid-column: auto; }
.site-footer .brand-word { font-size: 60px; }
.site-footer .brand-caption { font-size: 8px; }
.footer-brand > p { font-size: 13px; }
.site-footer .eyebrow { margin-bottom: 15px; }
.hours-number { font-size: 33px; }
.footer-hours > p:last-child, .footer-social > p:last-child { font-size: 12px; margin-top: 11px; }
.social-name { font-size: 26px; gap: 18px; }
.coming-soon { font-size: 8px; padding: 6px 9px; }
.footer-nav-row { align-items: start; flex-direction: column; gap: 16px; padding-block: 24px; }
.footer-nav-row nav { justify-content: space-between; width: 100%; gap: 10px; font-size: 9px; letter-spacing: .07em; }
.footer-nav-row nav a { min-height: 44px; display: inline-flex; align-items: center; }
.back-top { gap: 20px; }
.footer-bottom { gap: 13px; padding-top: 21px; }
.footer-bottom small { font-size: 9px; }
.footer-bottom p { font-size: 10px; line-height: 2; }
}
@media (max-width: 360px) {
.container, .header-inner { width: calc(100% - 40px); }
.brand-word { font-size: 29px; }

.story-figure > .photo { height: 350px; }
.card-heading, .favorites-section .card-heading { flex-wrap: wrap; gap: 7px 15px; }
.card-heading h3, .favorites-section .card-heading h3 { font-size: 28px; }
.map-cafe, .map-station, .map-park { font-size: 10px; }
.shop-info > div { grid-template-columns: 63px 1fr; gap: 12px; }
.visit-section .display-title { font-size: 60px; }
}
@media (prefers-reduced-motion: reduce) {
html { scroll-behavior: auto; }
*, *::before, *::after { animation: none !important; transition: none !important; }
}

/* 10 — Home: generated visual, introduction, recommendations, access */
.masthead {
  position: relative;
  isolation: isolate;
  height: calc(100svh - 116px);
  min-height: 660px;
  max-height: 820px;
  color: var(--paper);
  background: #473329;
  overflow: hidden;
}
.masthead-image, .masthead-shade {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
}
.masthead-image { object-fit: cover; object-position: center 55%; }
.masthead-shade {
  background: linear-gradient(90deg, rgba(27, 20, 15, .66), rgba(27, 20, 15, .30) 52%, rgba(27, 20, 15, .04)), linear-gradient(0deg, rgba(27, 20, 15, .56), transparent 30%);
}
.masthead-content { height: 100%; display: flex; align-items: center; padding-top: 60px; padding-bottom: 140px; }
.masthead-copy { max-width: 760px; }
.masthead .eyebrow { color: var(--paper); font-size: 11px; letter-spacing: .23em; margin-bottom: 28px; }
.masthead h1 { font: 400 clamp(76px, 7.3vw, 112px)/1.04 var(--serif); letter-spacing: -.045em; }
.masthead h1 em { color: inherit; }
.masthead-ja { font-size: 20px; letter-spacing: .1em; margin-top: 31px; }
.masthead-description { font-size: 15px; line-height: 2.2; letter-spacing: .03em; margin-top: 15px; }
.masthead .arrow-link { color: var(--paper); border-color: var(--paper); margin-top: 29px; min-width: 220px; }
.masthead .arrow-link:hover { color: #fff; }
.masthead a:focus-visible { outline-color: var(--paper); }
.mobile-break { display: none; }
.masthead-bottom { position: absolute; bottom: 27px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; justify-content: space-between; gap: 30px; border-top: 1px solid rgba(247, 243, 235, .38); padding-top: 21px; }
.masthead-bottom > p { display: flex; align-items: baseline; gap: 25px; font-size: 11px; }
.masthead-bottom > p > span:first-child { font-size: 11px; letter-spacing: .14em; }
.masthead-bottom > a { display: inline-flex; align-items: center; gap: 27px; font-size: 9px; letter-spacing: .17em; min-height: 44px; color: var(--paper); }
.masthead-bottom > a > span:last-child { font-size: 27px; line-height: 1; }
.home-page .story-detail { display: block; width: 100%; height: 610px; object-fit: cover; object-position: 79% center; }
.home-page .story-copy .section-ja { max-width: 25em; }
.home-page .menu-card { background: var(--paper); border: 1px solid var(--line); }
.home-page .menu-card-link { display: flex; flex-direction: column; height: 100%; }
.home-page .menu-image { margin: 0; aspect-ratio: 1.27; flex-shrink: 0; }
.home-page .menu-card-copy { flex: 1; padding: 26px 25px 29px; }
.home-page .card-heading { flex-wrap: nowrap; align-items: baseline; }
.home-page .card-heading h3 { font-size: 26px; }
.home-page .price { font-size: 22px; }
.home-page .menu-ja { margin-top: 12px; font-size: 13px; }
.home-page .card-description { margin-top: 18px; color: var(--muted); font-size: 14px; line-height: 2; }
.home-page .visit-information { color: var(--muted); font-size: 13px; line-height: 2.1; margin-top: 22px; margin-bottom: 23px; }

@media (max-width: 1150px) {
  .masthead { min-height: 640px; }
  .masthead h1 { font-size: clamp(70px, 7.7vw, 90px); }
  .masthead-copy { max-width: 680px; }
  .masthead-content { padding-top: 50px; padding-bottom: 130px; }
  .home-page .story-detail { height: 560px; }
  .home-page .menu-card-copy { padding: 23px 20px 26px; }
  .home-page .card-heading { flex-wrap: wrap; }
}
@media (max-width: 900px) and (min-width: 601px) {
  .home-page .favorites-section .menu-grid { grid-template-columns: 1fr; gap: 27px; }
  .home-page .menu-card-link { display: grid; grid-template-columns: 42% 1fr; }
  .home-page .menu-image { aspect-ratio: auto; height: 100%; min-height: 250px; }
  .home-page .menu-card-copy { align-self: center; padding: 33px; }
  .home-page .card-heading { flex-wrap: nowrap; }
}
@media (max-width: 800px) {
  .masthead { height: calc(100svh - 100px); min-height: 650px; }
  .masthead h1 { font-size: 78px; }
  .masthead-content { padding-top: 50px; padding-bottom: 135px; }
  .masthead-description { font-size: 14px; }
  .masthead-ja { font-size: 18px; }
  .masthead-bottom > p { gap: 17px; font-size: 10px; }
  .masthead-bottom > p > span:first-child { font-size: 10px; }
  .masthead-bottom > a { font-size: 8px; gap: 19px; }
  .home-page .story-detail { height: 510px; }
}
@media (max-width: 600px) {
  .masthead { height: calc(100svh - 92px); min-height: 650px; max-height: 800px; }
  .masthead-image { object-position: 62% center; }
  .masthead-shade { background: linear-gradient(90deg, rgba(27, 20, 15, .74), rgba(27, 20, 15, .42)), linear-gradient(0deg, rgba(27, 20, 15, .62), transparent 45%); }
  .masthead-content { padding-top: 40px; padding-bottom: 135px; }
  .masthead-copy { width: 100%; }
  .masthead .eyebrow { font-size: 9px; letter-spacing: .18em; margin-bottom: 26px; }
  .masthead h1 { font-size: clamp(49px, 14vw, 78px); line-height: 1.08; }
  .masthead-ja { font-size: 17px; letter-spacing: .06em; margin-top: 27px; }
  .masthead-description { font-size: 14px; line-height: 2.2; margin-top: 15px; letter-spacing: 0; }
  .mobile-break { display: initial; }
  .masthead .arrow-link { min-width: 210px; margin-top: 24px; }
  .masthead-bottom { bottom: 23px; gap: 16px; align-items: end; padding-top: 20px; }
  .masthead-bottom > p { flex-direction: column; gap: 4px; font-size: 10px; }
  .masthead-bottom > p > span:first-child { font-size: 11px; letter-spacing: .09em; }
  .masthead-bottom > a { gap: 13px; font-size: 8px; letter-spacing: .09em; }
  .masthead-bottom > a > span:first-child { max-width: 76px; line-height: 1.8; }
  .home-page .story-detail { height: 420px; }
  .home-page .favorites-section .menu-grid { grid-template-columns: 1fr; gap: 30px; }
  .home-page .menu-card-copy { padding: 25px 23px 28px; }
  .home-page .card-heading { flex-wrap: nowrap; gap: 14px; }
  .home-page .card-heading h3 { font-size: 28px; }
  .home-page .price { font-size: 22px; }
  .home-page .menu-ja { font-size: 13px; margin-top: 10px; }
  .home-page .card-description { margin-top: 17px; }
  .home-page .visit-information { font-size: 12px; }
}
@media (max-width: 360px) {
  .masthead { min-height: 630px; }
  .masthead h1 { font-size: 47px; }
  .masthead-ja { font-size: 15px; }
  .masthead-description { font-size: 13px; }
  .masthead-bottom > p { font-size: 9px; }
  .masthead-bottom > p > span:first-child { font-size: 10px; }
  .masthead-bottom > a { gap: 8px; font-size: 7px; }
  .home-page .story-detail { height: 350px; }
  .home-page .card-heading { flex-wrap: wrap; }
  .home-page .menu-card-copy { padding: 23px 20px 26px; }
}
/* Shared local WebP photographs — also available without an internet connection. */
/* Whole-image presentation: keep supplied/illustrative photos uncropped and undistorted. */
.home-page .story-detail {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  object-position: center;
}
.home-page .menu-image {
  background: var(--paper-deep);
  aspect-ratio: 4 / 3;
  overflow: hidden;
}
.home-page .menu-image > img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  filter: saturate(.7) sepia(.08);
}
@media (max-width: 900px) and (min-width: 601px) {
  .home-page .menu-image { aspect-ratio: auto; }
}
@media (max-width: 600px) {
  .home-page .menu-image { aspect-ratio: 1; }
}

.photo-hero { background-image: url("images/site-coffee-brewing.webp"); }
.photo-interior { background-image: url("images/site-interior.webp"); }
.photo-coffee { background-image: url("images/menu-01.webp"); }
.photo-cake { background-image: url("images/menu-02.webp"); }
.photo-toast { background-image: url("images/menu-03.webp"); }
.photo-latte { background-image: url("images/site-latte.webp"); }
.photo-dessert { background-image: url("images/site-dessert.webp"); }

/* 11 — Interior pages: the same warm, quiet design as the home page. */
.demo-notice { display: grid; grid-template-columns: 240px 1fr; align-items: start; gap: 22px; padding: 21px 25px; background: var(--paper-deep); border-left: 2px solid var(--accent); }
.demo-notice > span { font-size: 9px; line-height: 2; letter-spacing: .14em; color: var(--accent); }
.demo-notice > p { color: var(--muted); font-size: 12px; line-height: 2; }
.menu-page .full-menu { padding-top: 80px; padding-bottom: 95px; }
.menu-page .menu-filters { margin-bottom: 35px; }
.filter-summary { margin-bottom: 32px; font-size: 12px; color: var(--muted); text-align: right; }
#menu-products { display: grid; gap: 75px; }
.category-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 25px; margin-bottom: 28px; border-bottom: 1px solid var(--line); padding-bottom: 19px; }
.category-heading > div { display: flex; align-items: baseline; gap: 19px; }
.category-number { font: italic 21px var(--serif); color: var(--accent); }
.category-heading h3 { font: 47px/1.1 var(--serif); letter-spacing: -.035em; }
.category-ja { font-size: 13px; }
.category-heading > p { color: var(--muted); font-size: 12px; }
.menu-page .menu-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px; }
.menu-page .menu-card { display: grid; grid-template-columns: 39% 1fr; border: 1px solid var(--line); background: var(--paper); min-width: 0; }
.menu-page .menu-image { margin: 0; height: 100%; min-height: 240px; aspect-ratio: auto; background: var(--paper-deep); }
.menu-page .menu-image > img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: contain; filter: saturate(.7) sepia(.08); }
.menu-page .image-tag { font-size: 8px; left: 12px; top: 12px; padding: 5px 8px; letter-spacing: .08em; }
.menu-page .menu-card-copy { padding: 29px 26px; align-self: center; min-width: 0; }
.menu-page .card-heading { flex-wrap: wrap; gap: 9px 18px; }
.menu-page .card-heading h4 { margin: 0; font: 30px/1.15 var(--serif); letter-spacing: -.025em; text-wrap: balance; }
.menu-page .price { font-size: 23px; }
.menu-page .menu-ja { font-size: 13px; margin-top: 10px; }
.menu-page .card-description { font-size: 14px; line-height: 2; margin-top: 17px; }
.menu-page .menu-information { margin-top: 65px; }
.about-page .about-cover { margin-top: 55px; }
.about-interior { display: block; width: 100%; height: auto; }
.shop-facts-section { background: var(--paper-deep); }
.shop-facts-section .display-title { font-size: clamp(48px, 5.4vw, 77px); }
.facts-sample { flex-shrink: 0; color: var(--muted); font-size: 9px; letter-spacing: .14em; }
.shop-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 45px; padding-bottom: 50px; }
.shop-metrics article { min-width: 0; padding-top: 26px; border-top: 1px solid var(--line); }
.shop-metrics .eyebrow { font-size: 10px; margin-bottom: 22px; }
.metric-number { font: 65px/1.15 var(--serif); letter-spacing: -.04em; }
.metric-number > span { font-size: 25px; margin-left: 14px; letter-spacing: -.02em; }
.metric-number.metric-hours { font-size: clamp(35px, 3.6vw, 53px); padding-top: 12px; padding-bottom: 3px; white-space: nowrap; }
.shop-metrics h3 { font: 400 16px/1.8 var(--sans); letter-spacing: .03em; margin-top: 21px; }
.shop-metrics article > p:last-child { font-size: 12px; color: var(--muted); line-height: 2; margin-top: 9px; }
.facility-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 70px; margin: 0; }
.facility-list > div { display: grid; grid-template-columns: 105px 1fr; gap: 22px; border-top: 1px solid var(--line); padding: 22px 0; font-size: 14px; }
.facility-list dt { font-size: 12px; color: var(--muted); }
.facility-list dd { margin: 0; }
.facts-note { font-size: 12px; color: var(--muted); margin-top: 24px; }
.shop-facts-section .arrow-link { margin-top: 25px; }
.about-page .values-section { background: var(--paper); border-bottom: 1px solid var(--line); }
.access-page .access-layout { margin-top: 65px; }
.info-caption { display: block; color: var(--muted); font-size: 11px; line-height: 1.9; margin-top: 6px; }
.sample-phone { font: 25px/1.4 var(--serif); white-space: nowrap; }
.access-map-wrap { min-width: 0; }
.access-map-wrap > .eyebrow { margin-bottom: 15px; }
.map-heading { font: 40px/1.15 var(--serif); letter-spacing: -.035em; margin-bottom: 25px; }
.map-heading em { color: var(--accent); }
.osm-map { background: var(--paper-deep); border: 1px solid var(--line); height: 460px; overflow: hidden; }
.osm-map iframe { display: block; width: 100%; height: 100%; border: 0; }
.map-link-row { display: flex; align-items: baseline; justify-content: space-between; gap: 18px; margin-top: 18px; }
.map-link-row > span { color: var(--muted); font-size: 8px; letter-spacing: .1em; }
.map-link-row > a { font-size: 12px; border-bottom: 1px solid var(--accent); padding-bottom: 5px; }
.map-link-row > a > span { margin-left: 8px; }
.access-page .map-note { font-size: 12px; line-height: 2; }
.map-instructions { border-top: 1px solid var(--line); padding-top: 23px; margin-top: 25px; }
.map-instructions .eyebrow { font-size: 10px; margin-bottom: 14px; }
.map-instructions > p:not(.eyebrow):not(.map-note) { font-size: 13px; line-height: 2.1; }
.map-instructions > .map-note { font-size: 11px; }
@media (max-width: 1100px) {
  .menu-page .menu-grid { grid-template-columns: 1fr; }
  .menu-page .menu-card { grid-template-columns: 35% 1fr; }
  .menu-page .menu-image { min-height: 240px; }
  .menu-page .menu-card-copy { padding: 34px; }
  .menu-page .card-heading { flex-wrap: nowrap; }
  .facility-list { gap: 0 40px; }
  .facility-list > div { grid-template-columns: 90px 1fr; gap: 15px; }
  .map-link-row { align-items: start; flex-direction: column; gap: 10px; }
}
@media (max-width: 800px) {
  .demo-notice { grid-template-columns: 1fr; gap: 8px; padding: 20px; }
  .menu-page .full-menu { padding-top: 65px; padding-bottom: 60px; }
  .category-heading { align-items: start; flex-direction: column; gap: 15px; }
  .category-heading h3 { font-size: 42px; }
  .menu-page .card-heading { flex-wrap: wrap; }
  .shop-metrics { grid-template-columns: 1fr; gap: 30px; }
  .shop-metrics article { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 30px; }
  .shop-metrics .eyebrow { grid-column: 1/-1; margin-bottom: 10px; }
  .metric-number { grid-row: 2/4; }
  .metric-number.metric-hours { font-size: 43px; padding-top: 0; }
  .shop-metrics h3 { margin-top: 0; align-self: end; }
  .shop-metrics article > p:last-child { margin-top: 0; }
  .shop-facts-section .display-title { font-size: 58px; }
  .facts-sample { font-size: 8px; }
  .about-page .about-cover { margin-top: 40px; }
  .access-page .access-layout { grid-template-columns: 1fr; gap: 50px; margin-top: 50px; }
  .access-page .shop-info > div { grid-template-columns: 100px 1fr; }
  .map-heading { font-size: 38px; }
  .osm-map { height: 420px; }
  .map-link-row { flex-direction: row; align-items: baseline; }
}
@media (max-width: 600px) {
  .demo-notice { padding: 18px; gap: 9px; }
  .demo-notice > span { font-size: 8px; letter-spacing: .1em; }
  .demo-notice > p { font-size: 12px; }
  .menu-page .full-menu { padding-top: 55px; }
  .menu-page .menu-filters { margin-bottom: 25px; }
  .filter-summary { text-align: left; font-size: 11px; margin-bottom: 25px; }
  #menu-products { gap: 50px; }
  .category-heading { gap: 12px; margin-bottom: 23px; padding-bottom: 16px; }
  .category-heading > div { gap: 15px; }
  .category-heading h3 { font-size: 39px; }
  .category-ja { font-size: 12px; }
  .category-heading > p { font-size: 12px; }
  .menu-page .menu-grid { gap: 28px; }
  .menu-page .menu-card { display: block; }
  .menu-page .menu-image { height: auto; min-height: 0; aspect-ratio: 1; }
  .menu-page .image-tag { top: 16px; left: 16px; font-size: 9px; }
  .menu-page .menu-card-copy { padding: 25px 23px 28px; }
  .menu-page .card-heading h4 { font-size: 29px; }
  .menu-page .card-heading { gap: 8px 15px; }
  .menu-page .menu-ja { font-size: 13px; }
  .menu-page .card-description { font-size: 14px; }
  .about-page .about-cover { margin-top: 32px; }
  .shop-facts-section .display-title { font-size: clamp(46px, 12vw, 62px); }
  .shop-metrics { padding-bottom: 32px; gap: 28px; }
  .shop-metrics article { display: block; padding-top: 25px; }
  .shop-metrics .eyebrow { margin-bottom: 18px; }
  .metric-number { font-size: 61px; }
  .metric-number.metric-hours { font-size: 44px; }
  .shop-metrics h3 { margin-top: 15px; font-size: 16px; }
  .shop-metrics article > p:last-child { margin-top: 9px; font-size: 13px; }
  .facility-list { grid-template-columns: 1fr; }
  .facility-list > div { grid-template-columns: 80px 1fr; padding: 19px 0; font-size: 14px; }
  .facility-list dt { font-size: 12px; }
  .facts-note { font-size: 11px; }
  .access-page .access-layout { margin-top: 40px; gap: 43px; }
  .access-page .shop-info > div { grid-template-columns: 76px 1fr; gap: 14px; }
  .sample-phone { font-size: 23px; }
  .info-caption { font-size: 11px; }
  .map-heading { font-size: 34px; }
  .osm-map { height: 360px; }
  .map-link-row { flex-direction: column; gap: 12px; }
  .map-link-row > a { font-size: 12px; }
  .access-page .map-note { font-size: 12px; }
  .map-instructions > p:not(.eyebrow):not(.map-note) { font-size: 13px; }
  .map-instructions > .map-note { font-size: 11px; }
}
@media (max-width: 360px) {
  .menu-page .menu-card-copy { padding-inline: 20px; }
  .menu-page .card-heading h4 { font-size: 27px; }
  .access-page .shop-info > div { grid-template-columns: 64px 1fr; gap: 12px; }
  .sample-phone { font-size: 21px; }
  .metric-number.metric-hours { font-size: 39px; }
  .osm-map { height: 340px; }
}

/* 12 — Optional motion. No opacity: 0 or hidden state for reveal content. */
.menu-card { transition: transform .28s ease, border-color .28s ease, box-shadow .28s ease; }
.menu-card:focus-within { border-color: var(--accent); box-shadow: 0 7px 22px rgba(48, 40, 35, .08); }
.scroll-top {
  position: fixed;
  z-index: 50;
  right: 28px;
  bottom: 28px;
  bottom: max(28px, env(safe-area-inset-bottom));
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  width: 62px;
  height: 62px;
  border: 1px solid var(--accent);
  border-radius: 50%;
  color: var(--accent);
  background: var(--paper);
  box-shadow: 0 4px 18px rgba(48, 40, 35, .12);
  transition: transform .25s ease, color .25s ease, background-color .25s ease, box-shadow .25s ease;
}
.scroll-top-arrow { font: 26px/1 var(--serif); }
.scroll-top-label { font: 8px/1.4 var(--sans); letter-spacing: .15em; }
.scroll-top:focus-visible { outline: 2px solid var(--accent); outline-offset: 5px; }
@media (hover: hover) and (pointer: fine) {
  .home-page .menu-card:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: 0 13px 30px rgba(48, 40, 35, .10); }
  .menu-page .menu-card:hover { border-color: var(--accent); box-shadow: 0 7px 22px rgba(48, 40, 35, .07); }
  .arrow-link:hover { background-color: rgba(147, 84, 63, .055); }
  .masthead .arrow-link:hover { background-color: rgba(247, 243, 235, .10); }
  .menu-filters button:hover { background-color: var(--paper-deep); }
  .nav-toggle:hover { color: var(--accent); background-color: var(--paper-deep); }
  .scroll-top:hover { color: var(--paper); background: var(--accent); transform: translateY(-4px); box-shadow: 0 9px 24px rgba(48, 40, 35, .16); }
}
@media (max-width: 800px) {
  .nav-toggle { width: 48px; height: 48px; min-width: 48px; padding: 0; justify-content: center; border: 1px solid var(--line); border-radius: 50%; }
  .toggle-label { display: none; }
  .toggle-lines { width: 22px; gap: 5px; }
  .toggle-lines > span { width: 22px; height: 1px; transition: transform .23s ease, opacity .23s ease; }
  .nav-toggle[aria-expanded="true"] .toggle-lines > span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] .toggle-lines > span:nth-child(2) { opacity: 0; transform: scaleX(.4); }
  .nav-toggle[aria-expanded="true"] .toggle-lines > span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
}
@media (max-width: 600px) {
  .scroll-top { width: 53px; height: 53px; right: 16px; bottom: 16px; bottom: max(16px, env(safe-area-inset-bottom)); gap: 2px; }
  .scroll-top-arrow { font-size: 24px; }
  .scroll-top-label { font-size: 7px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .menu-card, .scroll-top, .arrow-link > span, .toggle-lines > span { transition: none; }
  .home-page .menu-card:hover, .scroll-top:hover, .arrow-link:hover > span { transform: none; }
}
