/* Shared photographic opening: a street on the home page, shops on the directory. */
.brand-header:not(.is-scrolled) {
  background: rgba(32, 39, 31, .22);
  backdrop-filter: blur(12px);
}
#root > #hero.street-hero {
  height: 100svh;
  min-height: 720px;
  max-height: none;
  background: #6b7567;
}
.street-hero .hero-media { inset: -12px 0 -50px; }
.street-hero .hero-background {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 50%;
}
.street-hero .hero-media::after {
  background: linear-gradient(90deg, rgba(20,24,19,.58), rgba(20,24,19,.2) 48%, transparent 75%), linear-gradient(0deg,rgba(20,24,19,.18),transparent 24%);
}
.street-hero .hero-content { width: 54vw; left: 8vw; top: 49%; transform: translateY(-42%); }
.street-hero .hero-content h1 { font-size: clamp(38px,4.4vw,80px); line-height: 1.65; }
.street-hero .hero-description { font-size: 14px; line-height: 2.2; }
.street-hero .hero-portrait {
  position: absolute;
  right: 5.2vw;
  top: 50%;
  width: min(30vw, calc((100svh - 220px) * .7115));
  transform: translateY(-46%);
  z-index: 3;
}
.hero-portrait-stage {
  position: relative;
  width: 100%;
  aspect-ratio: 900 / 1265;
  overflow: hidden;
  border: 1px solid rgba(255,249,235,.65);
  border-radius: 5px;
  background: linear-gradient(135deg,#f7f1e6,#e5d9c7);
  box-shadow: 0 24px 65px rgba(34,33,25,.25);
}
.street-hero .hero-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transform: translateX(12px) scale(.985);
  transition: opacity 1.3s ease, transform 1.6s var(--ease);
  pointer-events: none;
}
.street-hero .hero-slide.is-current { opacity: 1; transform: none; }
.street-hero .hero-slide > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  filter: none;
}
.street-hero .hero-slide.is-current img { animation: portrait-zoom 8.5s linear both; }
.street-hero.is-motion-paused .hero-slide img { animation-play-state: paused; }
@keyframes portrait-zoom { from { transform: scale(1); } to { transform: scale(1.06); } }
@media(prefers-reduced-motion:reduce) { .street-hero .hero-slide.is-current img { animation: none; } }
.hero-image-caption { font-size: 10px; letter-spacing: .1em; margin-top: 12px; color: #fff5e2; text-shadow: 0 1px 8px #20241970; }
.street-hero .hero-bottom { z-index: 4; bottom: 30px; left: 5.2vw; right: 5.2vw; align-items: center; }
.street-hero .hero-controls { gap: 14px; margin: 0; }
.hero-counter { font: 12px/1.6 Arial,sans-serif; letter-spacing: .1em; white-space: nowrap; }
.hero-total { opacity: .6; }
#hero .hero-controls > button,
body[data-page=shops] #pickup-section :is(#slider-prev,#slider-next,#pickup-pause) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  min-height: 44px;
  border: 1px solid #fff4db66;
  border-radius: 50%;
  background: rgba(34,42,31,.18);
  backdrop-filter: blur(8px);
  color: #fff8ec;
  font: 18px Arial,sans-serif;
  transition: background .3s,border-color .3s;
}
#hero .hero-controls > button:hover,
body[data-page=shops] #pickup-section :is(#slider-prev,#slider-next,#pickup-pause):hover {
  background: rgba(164,100,66,.4);
  border-color: #f4d3ad;
}
.street-hero .hero-dots > button { width: 20px; height: 44px; }
.street-hero .hero-dots > button::after { border-color: #fff5df; }
.street-hero .hero-dots > button[aria-pressed=true]::after { background: #f4d3ad; border-color: #f4d3ad; }

body[data-page=shops] > .shops-header {
  padding: 0;
  background: rgba(32,39,31,.22);
  color: #fff8ec;
  border-bottom: 1px solid #ffffff30;
  backdrop-filter: blur(12px);
}
.shops-header > div { width: 100%; max-width: none; padding-inline: 4.2vw; height: 100%; }
.shops-header h1 { color: inherit; font: 600 14px/1.6 'Noto Sans JP',sans-serif; letter-spacing: .06em; }
.shops-header p { color: inherit; font-size: 9px; font-weight: 400; letter-spacing: .12em; }
.shops-header #sidebar-open { color: inherit; min-width: 44px; min-height: 44px; }
.shops-header #sidebar-open:hover { background: #ffffff12; }
body[data-page=shops] > .shops-header.is-scrolled { background: #f7f4eee8; color: var(--ink); border-color: var(--line); }
body[data-page=shops] #pickup-section.shops-hero {
  position: relative;
  width: 100%;
  height: 88svh;
  min-height: 740px;
  max-height: 1180px;
  max-width: none;
  border-radius: 0;
  margin: 0;
  overflow: hidden;
  isolation: isolate;
  color: #fff8ec;
  background: #776f5e;
}
.shops-hero #slider-container { position: absolute; inset: 0; }
body[data-page=shops] #pickup-section #slider-container > .shop-hero-slide {
  position: absolute;
  inset: 0;
  overflow: hidden;
  opacity: 0;
  transition: opacity 1.4s ease;
  background: #dfd5c4;
  pointer-events: none;
}
body[data-page=shops] #pickup-section #slider-container > .shop-hero-slide.is-current { opacity: 1; z-index: 1; }
.shop-hero-slide::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(90deg,rgba(24,27,21,.6),rgba(24,27,21,.1) 54%,transparent 80%),linear-gradient(0deg,rgba(24,27,21,.5),transparent 45%);
}
.shop-hero-image { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }
.shop-hero-slide[data-shop-id="10"] .shop-hero-image { object-position: 50% 22%; }
.shop-hero-slide[data-shop-id="32"] .shop-hero-image { object-position: 50% 55%; }
.shop-hero-slide[data-shop-id="7"] .shop-hero-image { object-position: 50% 46%; }
.shops-hero.is-paused .shop-hero-image { animation-play-state: paused; }
.shops-hero-title { position: absolute; top: 23%; left: 8vw; z-index: 3; }
.shops-hero-title h2 { font: 400 clamp(44px,4.4vw,80px)/1.6 'Noto Serif JP',serif; letter-spacing: .07em; margin: 18px 0; }
.shops-hero-title > p:last-child { font-size: 14px; line-height: 2.2; }
.shop-hero-caption { position: absolute; bottom: 140px; left: 8vw; width: min(60vw,700px); z-index: 2; }
.shop-hero-caption > .eyebrow { color: #f1d3ac; margin-bottom: 14px; }
.shop-hero-caption h3 { font: 400 clamp(25px,2.3vw,40px)/1.6 'Noto Serif JP',serif; letter-spacing: .06em; margin-bottom: 12px; }
.shop-hero-excerpt { font-size: 13px; line-height: 2; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
body[data-page=shops] #slider-prev { position: absolute; top: 53%; left: 2.5vw; z-index: 4; transform: translateY(-50%); opacity: 1; }
body[data-page=shops] #slider-next { position: absolute; top: 53%; right: 2.5vw; z-index: 4; transform: translateY(-50%); opacity: 1; }
.shops-hero-controls { position: absolute; right: 5.2vw; bottom: 30px; display: flex; align-items: center; gap: 24px; z-index: 4; }
body[data-page=shops] #pickup-pause { position: static; background: rgba(34,42,31,.18); color: #fff8ec; }
.shops-scroll { position: absolute; bottom: 30px; left: 5.2vw; z-index: 4; }
body[data-page=shops] main.shops-main { max-width: none; margin: 0; width: 100%; padding: 70px 8vw 100px; }
.shops-main > div { max-width: 1240px; margin-inline: auto; }
.shop-search-heading { margin-bottom: 30px; }
.shop-search-heading .eyebrow { color: var(--vermillion); }
body[data-page=shops] main.shops-main .shop-search-heading h2 { font: 400 28px/1.7 'Noto Serif JP',serif; margin-top: 12px; }
body[data-page=shops] > .site-footer { padding: 0 max(72px,6vw); background: #1c241f; color: #bcc5bb; text-align: left; border: 0; }
body[data-page=shops] .site-footer .footer-inner { width: 100%; max-width: 1240px; margin-inline: auto; padding: 0; }
body[data-page=shops] .site-footer .footer-navigation { background: transparent; backdrop-filter: none; }
body[data-page=shops] .footer-brand img { object-position: 50% 45%; }

@media (max-width: 900px) {
  #root > #hero.street-hero { height: auto; min-height: 100svh; max-height: none; padding: 130px 7vw 70px; }
  .street-hero .hero-media { inset: 0; transform: none !important; }
  .street-hero .hero-background { object-position: 55% 50%; }
  .street-hero .hero-media::after { background: linear-gradient(90deg,rgba(24,27,21,.56),rgba(24,27,21,.1) 90%); }
  .street-hero .hero-content { position: relative; top: auto; bottom: auto; left: auto; width: 100%; transform: none; }
  .street-hero .hero-content h1 { font-size: clamp(27px,6.8vw,48px); line-height: 1.7; margin-bottom: 22px; }
  .street-hero .hero-content > .eyebrow { font-size: 8px; letter-spacing: .16em; margin-bottom: 22px; }
  .street-hero .hero-description { font-size: 12px; }
  .street-hero .hero-actions { margin-bottom: 35px; }
  .street-hero .hero-portrait { position: relative; top: auto; right: auto; transform: none; width: min(100%,390px); margin: 0 auto; }
  .street-hero .hero-bottom { position: relative; bottom: auto; left: auto; right: auto; margin-top: 24px; flex-direction: column; gap: 28px; }
  .street-hero .hero-controls { display: grid; grid-template-columns: repeat(3,44px); gap: 6px 12px; margin: 0; }
  .street-hero .hero-counter { grid-column: 1; grid-row: 1; font-size: 10px; }
  .street-hero .hero-dots { grid-column: 2 / 4; grid-row: 1; justify-content: center; gap: 4px; }
  #hero-prev { grid-column: 1; grid-row: 2; }
  #hero-next { grid-column: 2; grid-row: 2; }
  #hero-pause { grid-column: 3; grid-row: 2; }
  .street-hero .scroll-cue { order: 2; font-size: 8px; }
  .hero-image-caption { text-align: center; }
  .shops-header h1 { font-size: 12px; }
  .shops-header p { font-size: 8px; }
  .shops-header > div { padding-inline: 5vw; }
  .shops-header > div > a { max-width: calc(100% - 60px); }
  .shops-header > div > a > div:first-child { flex-shrink: 0; }
  body[data-page=shops] #pickup-section.shops-hero { height: 95svh; min-height: 780px; max-height: 1050px; }
  .shop-hero-slide::before { content: ''; position: absolute; inset: -20px; background-position: center; background-size: cover; filter: blur(16px); opacity: .8; }
  .shop-hero-slide.is-current::before { background-image: var(--shop-image); }
  .shop-hero-image { position: relative; object-fit: contain; object-position: center !important; animation: none; }
  .shop-hero-slide::after { background: linear-gradient(0deg,rgba(24,27,21,.64),transparent 47%),linear-gradient(90deg,rgba(24,27,21,.64),rgba(24,27,21,.1) 90%); }
  .shops-hero-title { top: 135px; left: 7vw; }
  .shops-hero-title h2 { font-size: clamp(35px,6.8vw,48px); margin: 10px 0; }
  .shops-hero-title > p:last-child { font-size: 12px; }
  .shop-hero-caption { left: 7vw; width: 86vw; bottom: 155px; }
  .shop-hero-caption h3 { font-size: 25px; }
  .shop-hero-excerpt { font-size: 12px; }
  body[data-page=shops] #slider-prev { left: 18px; }
  body[data-page=shops] #slider-next { right: 18px; }
  .shops-hero-controls { left: 50%; right: auto; transform: translateX(-50%); bottom: 30px; }
  .shops-scroll { left: 50%; transform: translateX(-50%); bottom: 98px; white-space: nowrap; font-size: 8px; }
  .shops-scroll .scroll-line { height: 26px; }
  body[data-page=shops] main.shops-main { padding: 55px 6vw 75px; }
  body[data-page=shops] main.shops-main .shop-search-heading h2 { font-size: 24px; }
}
@media (max-width: 760px) {
  body[data-page=shops] #pickup-section.shops-hero {
    height: auto;
    min-height: 0;
    max-height: none;
    padding-top: 290px;
    padding-bottom: 160px;
    background: #30382e;
  }
  .shops-hero #slider-container {
    position: relative;
    inset: auto;
    display: grid;
  }
  body[data-page=shops] #pickup-section #slider-container > .shop-hero-slide {
    position: relative;
    inset: auto;
    grid-area: 1 / 1;
    visibility: hidden;
    background: transparent;
  }
  body[data-page=shops] #pickup-section #slider-container > .shop-hero-slide.is-current {
    visibility: visible;
  }
  .shop-hero-slide::before,
  .shop-hero-slide::after { display: none; }
  body[data-page=shops] #pickup-section .shop-hero-image {
    display: block;
    position: relative;
    inset: auto;
    height: clamp(260px, 70vw, 440px);
    background: #dfd5c4;
  }
  body[data-page=shops] #pickup-section .shop-hero-caption {
    position: relative;
    bottom: auto;
    left: auto;
    width: auto;
    margin: 0;
    padding: 28px 7vw 0;
  }
  body[data-page=shops] #pickup-section.shops-hero #slider-container > .shop-hero-slide {
    min-height: 0;
  }
  .shop-hero-excerpt { display: block; overflow: visible; }
  body[data-page=shops] #slider-prev,
  body[data-page=shops] #slider-next {
    top: calc(290px + clamp(260px, 70vw, 440px) / 2);
  }
}
@media (max-width: 375px) {
  .shops-header h1 { font-size: 10px; }
  .shops-header p { font-size: 7px; }
  .shops-header > div > a { gap: 9px; }
  .shops-header > div > a > div:first-child { width: 32px; height: 32px; }
  .street-hero .hero-content h1 { font-size: 26px; }
}
@media (prefers-reduced-motion: reduce) {
  .street-hero .hero-slide,.shop-hero-slide { transition: none !important; transform: none; }
  .shop-hero-image { animation: none !important; }
  .hero-media { transform: none !important; }
}
/* A short entrance, drawn like a quiet walk through the street. */
.street-opening{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:#f5f1e8;pointer-events:none;animation:opening-exit .6s ease 1.18s forwards}
.opening-glow{position:absolute;inset:0;background:radial-gradient(ellipse at 52% 47%,#ead5b866,transparent 55%);animation:opening-light 1.6s ease both}
.opening-brand{position:relative;text-align:center;padding:28px;animation:opening-brand-in .8s cubic-bezier(.2,.7,.3,1) both}
.opening-emblem{width:180px;height:180px;position:relative;margin:0 auto 24px;display:grid;place-items:center}
.opening-emblem img{width:104px;height:104px;object-fit:cover;object-position:50% 45%;border-radius:50%;box-shadow:0 12px 32px #483a2514}
.opening-path{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.opening-path path{stroke:#b6aa92;stroke-width:.7;stroke-dasharray:460;stroke-dashoffset:460;animation:opening-draw 1.15s ease .08s forwards}
.opening-path circle{fill:#bc623f;opacity:0;animation:opening-copy .5s ease .55s forwards}
.opening-name{font-family:'Noto Serif JP',serif;font-size:clamp(17px,2vw,23px);color:#303a30;letter-spacing:.12em;margin:0}
.opening-location{font-size:11px;letter-spacing:.14em;color:#827461;margin:15px 0 0;animation:opening-copy .6s ease .25s both}
.opening-location span{font-size:9px;letter-spacing:.22em}
.opening-street{display:block;width:90px;height:1px;margin:24px auto 0;background:linear-gradient(90deg,transparent,#bc623f,transparent);animation:opening-copy .6s ease .4s both}
.opening-short .street-opening{animation-delay:.12s;animation-duration:.3s}.opening-short .opening-path path{animation:none;stroke-dashoffset:0}.opening-short .opening-brand,.opening-short .opening-location,.opening-short .opening-street,.opening-short .opening-path circle{animation:none;opacity:1}
/* Keep the revealed hero visible: the opening overlay supplies the entrance fade. */
.footer-share{position:relative;display:inline-flex;margin:0 12px 14px 0;vertical-align:middle}
.footer-share-menu{position:absolute;bottom:calc(100% + 12px);left:0;padding:10px;border:1px solid #ffffff20;border-radius:18px;background:#263028;box-shadow:0 12px 30px #0003;z-index:65}
.site-footer #share-toggle-btn{background:#ffffff08;color:#f4eee2;border-color:#ffffff25;width:44px;height:44px}.site-footer #share-toggle-btn:hover{background:#ffffff13}.site-footer #share-toggle-btn>span{display:none}
@keyframes opening-brand-in{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
@keyframes opening-copy{from{opacity:0}to{opacity:1}}
@keyframes opening-draw{to{stroke-dashoffset:0}}
@keyframes opening-light{from{opacity:.3}to{opacity:1}}
@keyframes opening-exit{to{opacity:0;visibility:hidden}}
@media(max-width:760px){.opening-emblem{width:154px;height:154px;margin-bottom:20px}.opening-emblem img{width:90px;height:90px}.street-opening{animation-delay:1s}.footer-share-menu{left:50%;transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.street-opening{animation:opening-exit .15s linear .1s forwards}.opening-brand,.opening-glow,.opening-location,.opening-street,.opening-path circle{animation:none;opacity:1}.opening-path path{animation:none;stroke-dashoffset:0}.opening-finished #hero .hero-content,.opening-finished #hero .hero-portrait{animation:none}}
/* The left tint supports text; only the right background receives glass blur. */
#hero.street-hero .hero-media::after{background:linear-gradient(0deg,rgba(20,24,19,.14),transparent 20%)}
.hero-soft-overlay{position:absolute;inset:0 auto 0 0;width:70%;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(250,248,243,.88),rgba(249,245,236,.76) 38%,rgba(247,238,224,.4) 70%,rgba(250,248,243,0));backdrop-filter:none;-webkit-backdrop-filter:none;mask-image:linear-gradient(90deg,#000 0%,#000 52%,transparent 100%);-webkit-mask-image:linear-gradient(90deg,#000 0%,#000 52%,transparent 100%)}
#hero.street-hero .hero-content{z-index:2;color:#28382e}
#hero.street-hero .hero-content h1{text-shadow:none}
#hero.street-hero .hero-accent{color:#a14d31}
#hero.street-hero .hero-description{color:#354038}
#hero.street-hero .solid-link{background:#ac5338;color:#fff8ed;border-color:#ac5338}
#hero.street-hero .solid-link:hover{background:#8d402b}
#hero.street-hero .outline-link{color:#293b30;border-color:#3a4b3866;background:#fbf8ef44}
#hero.street-hero .outline-link:hover{background:#fbf8efa6}
#hero.street-hero .scroll-cue{color:#324336}
@media(max-width:900px){.hero-soft-overlay{inset:0 0 auto;width:100%;height:620px;background:linear-gradient(180deg,rgba(250,248,243,.89),rgba(249,245,236,.82) 38%,rgba(247,238,224,.35) 73%,transparent);mask-image:linear-gradient(180deg,#000 0%,#000 48%,transparent 100%);-webkit-mask-image:linear-gradient(180deg,#000 0%,#000 48%,transparent 100%);backdrop-filter:none;-webkit-backdrop-filter:none}#hero.street-hero .scroll-cue{color:#fff8eb}}

.hero-right-glass{position:absolute;inset:0 0 0 auto;width:54%;z-index:1;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(250,248,243,.08) 65%,rgba(250,248,243,.16));backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);mask-image:linear-gradient(90deg,transparent,#000 65%);-webkit-mask-image:linear-gradient(90deg,transparent,#000 65%)}
@media(max-width:900px){.hero-right-glass{width:55%;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}}
/* Store copy remains complete, with a shared stage height for all slides. */
body[data-page=shops] #pickup-section.shops-hero{height:auto;max-height:none;min-height:88svh}
body[data-page=shops] #pickup-section #slider-container{position:relative;inset:auto;display:grid}
body[data-page=shops] #pickup-section #slider-container>.shop-hero-slide{position:relative;inset:auto;grid-area:1/1;min-height:88svh}
body[data-page=shops] .shop-hero-image{position:absolute;inset:0}
body[data-page=shops] .shop-hero-caption{position:relative;left:auto;bottom:auto;width:min(60vw,700px);margin:clamp(320px,38svh,430px) 0 150px 8vw}
body[data-page=shops] .shop-hero-excerpt{display:block;-webkit-line-clamp:unset;overflow:visible;white-space:pre-line;overflow-wrap:anywhere}
.shop-search-titles{display:flex;align-items:baseline;flex-wrap:wrap;gap:12px 32px;margin-top:12px}
body[data-page=shops] main.shops-main .shop-search-titles :is(h1,h2){font:400 28px/1.7 'Noto Serif JP',serif;margin:0;letter-spacing:.04em}
@media(max-width:900px){body[data-page=shops] .shop-hero-caption{width:86vw;margin:300px 7vw 155px}body[data-page=shops] #pickup-section #slider-container>.shop-hero-slide{min-height:95svh}.shop-search-titles{gap:8px 20px}body[data-page=shops] main.shops-main .shop-search-titles :is(h1,h2){font-size:24px}body[data-page=shops] .shop-hero-excerpt{font-size:12px;line-height:1.9}}
@media(max-width:430px){body[data-page=shops] main.shops-main .shop-search-titles :is(h1,h2){font-size:20px}.shop-search-titles{gap:12px}}
@media(max-width:900px){body[data-page=shops] :is(#slider-prev,#slider-next){top:260px}}
@media(max-width:360px){body[data-page=shops] main.shops-main .shop-search-titles :is(h1,h2){font-size:18px}.shop-search-titles{gap:10px}}
/* Formal information in the footer's left column. */
.footer-organization{margin:0;font-size:12px;line-height:1.9;overflow-wrap:anywhere}
.footer-organization>div{padding:0 0 16px;margin:0 0 16px;border-bottom:1px solid #ffffff14}
.footer-organization>div:last-child{margin-bottom:0;padding-bottom:0;border-bottom:0}
.footer-organization dt{font-size:10px;letter-spacing:.1em;color:#c5b895;margin-bottom:5px}
.footer-organization dd{margin:0;color:#eee9df}
.footer-organization a:hover{color:#dfaa7d}
/* Organization details live in the footer; this section is a quiet closing line. */
#organization .organization-inner{display:block}
#organization h2{white-space:nowrap;font-size:clamp(18px,3.3vw,52px);letter-spacing:.02em;line-height:1.6;margin-top:24px}
