@font-face { font-family:'BIZ UDMincho'; src:url('/assets/fonts/BIZUDMincho-Regular.woff2') format('woff2'); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:'BIZ UDMincho'; src:url('/assets/fonts/BIZUDMincho-Bold.woff2') format('woff2'); font-weight:700; font-style:normal; font-display:swap; }
:root {
  --ink:#201c18;
  --red:#c93620;
  --paper:#fffefa;
  --muted:#655e55;
  --line:#d9d3c9;
  --serif:'BIZ UDMincho','Hiragino Mincho ProN','Yu Mincho',YuMincho,serif;
  --sans:var(--serif)
}
* {
  box-sizing:border-box
}
html {
  scroll-behavior:smooth;
  scroll-padding-top:120px
}
body {
  margin:0;
  color:var(--ink);
  background:var(--paper);
  font-family:var(--sans);
  font-size:15px;
  line-height:1.9
}
h1,h2,h3,p {
  margin:0
}
h1,h2,h3 {
  line-height:1.4
}
h2 {
  font-family:var(--serif);
  font-size:clamp(32px,3.4vw,52px);
  font-weight:800;
  letter-spacing:.05em
}
a {
  color:inherit;
  text-decoration:none
}
button,input {
  font:inherit
}
button,a {
  -webkit-tap-highlight-color:transparent
}
button {
  color:inherit;
  cursor:pointer;
  border-radius:0
}
button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible {
  outline:3px solid var(--red);
  outline-offset:5px
}
a,button {
  touch-action:manipulation
}
img {
  display:block;
  max-width:100%;
  height:auto
}
.art {
  pointer-events:none;
  user-select:none;
  object-fit:contain
}
::selection {
  background:var(--red);
  color:#fff
}
[hidden] {
  display:none!important
}
.serif {
  font-family:var(--serif)
}
.skip-link {
  position:fixed;
  top:-100px;
  left:20px;
  z-index:100;
  padding:10px 20px;
  background:var(--ink);
  color:white
}
.skip-link:focus {
  top:12px
}
.preview-note {
  text-align:center;
  background:var(--ink);
  color:#fff;
  font-size:10px;
  padding:3px 15px;
  letter-spacing:.12em
}
.site-header {
  height:96px;
  display:flex;
  align-items:center;
  padding:0 4.2%;
  gap:28px;
  border-bottom:1px solid var(--ink);
  background:var(--paper);
  position:relative;
  z-index:20
}
.brand {
  width:138px;
  flex:none
}
.brand img {
  width:138px
}
.header-place {
  font-size:10px;
  line-height:1.6;
  letter-spacing:.1em
}
.site-header nav {
  margin-left:auto;
  display:flex;
  gap:28px;
  align-items:center
}
.site-header nav a {
  font-size:12px;
  font-weight:700;
  position:relative;
  padding:12px 0
}
.site-header nav a:after {
  content:'';
  position:absolute;
  bottom:3px;
  left:0;
  width:0;
  height:2px;
  background:var(--red);
  transition:width .2s
}
.site-header nav a:hover:after,.site-header nav a[aria-current]:after {
  width:100%
}
.site-header .nav-instagram {
  font-family:var(--serif);
  font-weight:400;
  font-size:14px;
  border-left:1px solid var(--line);
  padding-left:24px
}
.menu-toggle {
  display:none
}
.section-wrap {
  max-width:1440px;
  margin:0 auto;
  padding-left:7%;
  padding-right:7%
}
.eyebrow {
  font:11px/1.5 var(--sans);
  letter-spacing:.16em;
  font-weight:700
}
.eyebrow>span {
  color:var(--red);
  margin-right:14px
}
.text-link {
  display:inline-flex;
  align-items:center;
  justify-content:space-between;
  gap:38px;
  border-bottom:1px solid currentColor;
  padding:10px 0;
  font-weight:700;
  font-size:14px
}
.text-link span,.button-link span {
  transition:transform .25s
}
.text-link:hover span,.button-link:hover span {
  transform:translate(4px,-4px)
}
.button-link {
  display:inline-flex;
  align-items:center;
  justify-content:space-between;
  gap:50px;
  border:1px solid var(--ink);
  background:var(--ink);
  color:var(--paper);
  padding:20px 25px;
  font-size:14px;
  min-height:60px;
  transition:background .2s
}
.button-link:hover {
  background:var(--red);
  border-color:var(--red)
}
.small-note {
  font-size:12px;
  color:var(--muted);
  line-height:1.9
}
.hero {
  overflow:hidden
}
.hero-topline {
  display:flex;
  justify-content:space-between;
  margin:0 4.2%;
  padding-top:17px;
  font:10px/1.5 var(--serif);
  letter-spacing:.16em
}
.hero-stage {
  height:710px;
  max-width:1500px;
  margin:auto;
  position:relative;
  --scroll:0px
}
.hero-title {
  position:absolute;
  left:6.8%;
  top:42px;
  width:45%;
  z-index:3
}
.hero-intro {
  font-family:var(--serif);
  font-size:23px;
  font-weight:700;
  letter-spacing:.17em;
  margin-bottom:10px
}
.hero-title h1 img {
  width:100%;
  max-width:500px
}
.hero-subtitle {
  font-size:12px;
  letter-spacing:.1em;
  margin:18px 0 0 8px
}
.hero-sun {
  position:absolute;
  width:360px;
  height:360px;
  top:100px;
  right:11%;
  border-radius:50%;
  background:var(--red)
}
.hero-cat {
  position:absolute;
  width:340px;
  right:4.7%;
  top:57px;
  z-index:4;
  transform:translateY(calc(var(--scroll) * -1)) rotate(9deg)
}
.hero-dog {
  position:absolute;
  width:255px;
  right:24.5%;
  top:153px;
  z-index:3;
  transform:translateY(var(--scroll)) rotate(-12deg)
}
.hero-jump {
  position:absolute;
  width:225px;
  right:22%;
  bottom:23px;
  z-index:5;
  transform:rotate(-12deg)
}
.vertical-label {
  position:absolute;
  right:2.9%;
  top:13px;
  writing-mode:vertical-rl;
  letter-spacing:.3em;
  font-family:var(--serif);
  font-size:17px;
  z-index:6
}
.hero-date {
  position:absolute;
  left:7%;
  top:390px;
  display:grid;
  grid-template-columns:auto 50px;
  align-items:center;
  z-index:4
}
.hero-year {
  font:20px var(--serif);
  letter-spacing:.09em;
  grid-column:1/-1;
  margin-left:6px
}
.hero-date strong {
  font:180px/.95 var(--serif);
  letter-spacing:-.075em
}
.hero-sunday {
  font-family:var(--serif);
  color:var(--red);
  font-weight:700;
  font-size:26px;
  line-height:1.4;
  margin-left:25px;
  text-align:center
}
.hero-sunday small {
  font:11px var(--serif);
  letter-spacing:.08em
}
.hero-time {
  grid-column:1/-1;
  margin:20px 0 0 9px;
  font:32px/1.2 var(--serif);
  letter-spacing:.05em
}
.hero-time>span {
  font-size:24px;
  margin:0 20px
}
.hero-scroll {
  position:absolute;
  right:5%;
  bottom:20px;
  font-size:11px;
  writing-mode:vertical-rl;
  letter-spacing:.12em
}
.hero-scroll span {
  font-size:27px;
  margin-top:16px
}
.hero-edition {
  position:absolute;
  right:45%;
  top:352px;
  font-family:var(--serif);
  font-size:15px;
  border:1px solid var(--red);
  color:var(--red);
  line-height:1.5;
  padding:10px 9px;
  transform:rotate(6deg);
  z-index:4
}
.venue-band {
  display:flex;
  align-items:center;
  gap:25px;
  background:var(--red);
  color:var(--paper);
  padding:19px 7%
}
.venue-band>span {
  font-size:11px;
  border:1px solid #fff8;
  padding:1px 10px
}
.venue-band p {
  font-family:var(--serif);
  font-size:25px;
  font-weight:700;
  letter-spacing:.05em
}
.venue-band a {
  margin-left:auto;
  font-size:12px;
  white-space:nowrap
}
.venue-band a span {
  margin-left:24px;
  font-size:22px
}
.benefits {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  border-bottom:1px solid var(--ink);
  padding:25px 7%
}
.benefits>div {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  column-gap:17px;
  font-family:var(--serif);
  font-size:20px;
  font-weight:700;
  line-height:1.5;
  padding:0 15px;
  border-right:1px solid var(--line)
}
.benefits>div:last-child {
  border:0
}
.benefits>div>span {
  font-family:var(--sans);
  font-size:12px;
  color:var(--red)
}
.benefits small {
  display:block;
  width:100%;
  font:10px/1.4 var(--sans);
  color:var(--muted);
  text-align:center;
  margin-top:5px
}
.about {
  display:grid;
  grid-template-columns:20% 1fr;
  position:relative;
  padding-top:140px;
  padding-bottom:155px;
  overflow:hidden
}
.section-label .eyebrow {
  max-width:120px;
  line-height:2
}
.vertical-aside {
  display:block;
  writing-mode:vertical-rl;
  font-family:var(--serif);
  font-size:15px;
  letter-spacing:.3em;
  margin:40px 0 0 7px
}
.about-copy {
  position:relative;
  z-index:2
}
.about-copy h2 {
  font-size:clamp(36px,4.5vw,67px);
  line-height:1.5;
  margin-bottom:36px;
  letter-spacing:.08em
}
.about-copy p {
  font-size:14px;
  line-height:2.2;
  margin-top:20px
}
.about-cat {
  position:absolute;
  right:0;
  bottom:12px;
  width:250px;
  transform:rotate(14deg)
}
.about-stamp {
  position:absolute;
  right:20%;
  top:150px;
  border:2px solid var(--red);
  color:var(--red);
  font-family:var(--serif);
  padding:9px 6px;
  font-size:16px;
  line-height:1.2;
  transform:rotate(12deg)
}
.section-heading {
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:35px;
  margin-bottom:45px
}
.section-heading h2 {
  margin-top:20px
}
.happenings {
  padding-top:70px;
  padding-bottom:110px;
  border-top:1px solid var(--line)
}
.shop-count {
  display:flex;
  align-items:baseline;
  flex-wrap:wrap;
  max-width:210px;
  line-height:1
}
.shop-count>span:first-child {
  width:100%;
  font-size:12px;
  letter-spacing:.1em;
  margin-bottom:10px
}
.shop-count small {
  font:20px var(--serif)
}
.shop-count strong {
  font:110px/.9 var(--serif);
  color:var(--red);
  letter-spacing:-.07em;
  margin:0 12px
}
.shop-count>span:last-child {
  font-size:16px
}
.event-list {
  border-top:1px solid var(--ink)
}
.event-row {
  display:grid;
  grid-template-columns:60px 1.05fr 1fr 40px;
  align-items:center;
  gap:20px;
  padding:30px 10px;
  border-bottom:1px solid var(--line);
  transition:color .2s,padding .2s
}
.event-row:hover {
  color:var(--red);
  padding-left:20px
}
.row-no {
  font:15px var(--serif);
  color:var(--red)
}
.event-row h3 {
  font-family:var(--serif);
  font-size:25px
}
.event-row p {
  font-size:12px;
  color:var(--muted)
}
.event-row>span:last-child {
  font-size:28px
}
.shops-feature {
  padding-top:65px;
  padding-bottom:90px;
  display:grid;
  grid-template-columns:50% 50%;
  align-items:center;
  background:#f2f0e8;
  overflow:hidden
}
.shops-feature-art {
  height:510px;
  position:relative
}
.lantern {
  position:absolute;
  height:550px;
  left:20%;
  top:0;
  max-width:none;
  transform:rotate(-13deg)
}
.shops-feature-art>span {
  font-family:var(--serif);
  position:absolute;
  left:0;
  top:30px;
  font-size:25px;
  writing-mode:vertical-rl;
  letter-spacing:.16em;
  line-height:1.8
}
.shops-feature-copy {
  padding-left:55px;
  position:relative
}
.shops-feature-copy h2 {
  font-size:58px;
  margin:20px 0 28px
}
.shops-feature-copy>p:not(.eyebrow) {
  margin:22px 0
}
.shops-feature-copy .small-note {
  max-width:280px
}
.visit {
  padding-top:115px;
  padding-bottom:120px
}
.visit-heading h2 {
  margin-top:20px
}
.visit-links {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:70px;
  margin:50px 0 22px
}
.visit-links a {
  position:relative;
  padding:27px 0 30px;
  border-top:1px solid var(--ink);
  border-bottom:1px solid var(--line)
}
.visit-links a>span:first-child {
  font-size:10px;
  letter-spacing:.12em;
  color:var(--muted)
}
.visit-links h3 {
  font-family:var(--serif);
  font-size:29px;
  margin:10px 0
}
.visit-links p {
  font-size:12px
}
.visit-links a>span:last-child {
  position:absolute;
  right:0;
  top:60px;
  font-size:30px;
  color:var(--red)
}
.site-footer {
  background:var(--red);
  color:var(--paper);
  padding:75px 7% 35px
}
.footer-top {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:40px;
  padding-bottom:65px
}
.footer-top>.serif {
  font-size:clamp(38px,4.4vw,65px);
  line-height:1.55;
  font-weight:700;
  letter-spacing:.06em
}
.footer-follow {
  min-width:260px
}
.footer-follow p {
  font-size:12px;
  margin:20px 0
}
.footer-follow>a {
  font:23px var(--serif);
  display:flex;
  justify-content:space-between;
  border-bottom:1px solid #fff8;
  padding-bottom:14px
}
.footer-follow>a span {
  font:25px var(--sans)
}
.footer-bottom {
  display:flex;
  align-items:center;
  gap:45px;
  padding-top:30px;
  border-top:1px solid #fff7
}
.footer-brand {
  width:150px;
  flex:none
}
.footer-bottom p {
  font-size:11px;
  line-height:2
}
.footer-bottom small {
  font-size:9px;
  letter-spacing:.1em;
  display:block;
  margin-top:15px
}
.to-top {
  margin-left:auto;
  border:1px solid #fff8;
  border-radius:50%;
  height:50px;
  width:50px;
  display:grid;
  place-items:center;
  font-size:22px;
  flex:none
}
.page-heading {
  padding-top:38px;
  padding-bottom:55px
}
.breadcrumb {
  display:inline-block;
  font-size:11px;
  color:var(--muted);
  margin-bottom:48px
}
.page-heading h1 {
  font-family:var(--serif);
  font-size:clamp(37px,5vw,70px);
  letter-spacing:.04em;
  margin:16px 0 20px
}
.page-heading>p:last-child {
  font-size:14px
}
.notice {
  background:#f3efe5;
  border-left:3px solid var(--red);
  padding:20px 24px;
  font-size:13px;
  line-height:1.9
}
.notice>span {
  font-size:11px;
  font-weight:700;
  color:var(--red);
  display:block;
  margin-bottom:6px
}
.directory {
  padding-bottom:110px
}
.filters {
  margin-top:45px
}
.search-label,fieldset legend {
  font-size:12px;
  font-weight:700;
  display:block;
  margin-bottom:12px
}
.search-row {
  display:flex;
  max-width:680px
}
.search-row input {
  border:1px solid var(--ink);
  border-right:0;
  background:transparent;
  border-radius:0;
  min-width:0;
  width:100%;
  padding:16px 18px;
  line-height:1.5
}
.search-submit {
  border:1px solid var(--ink);
  background:var(--ink);
  color:white;
  padding:10px 25px;
  white-space:nowrap;
  font-size:13px
}
.search-submit span {
  margin-left:25px
}
fieldset {
  border:0;
  margin:28px 0 0;
  padding:0
}
.category-list {
  display:flex;
  flex-wrap:wrap;
  gap:8px
}
.category-button,.map-filters button {
  border:1px solid var(--line);
  background:transparent;
  padding:11px 20px;
  font-size:12px;
  min-height:44px
}
.category-button[aria-pressed=true],.map-filters button[aria-pressed=true] {
  color:white;
  background:var(--ink);
  border-color:var(--ink)
}
.category-button:hover,.map-filters button:hover {
  border-color:var(--red)
}
.category-controls {
  display:flex;
  align-items:flex-end;
  gap:12px
}
.category-controls .category-list { flex:1; min-width:0; }
#result-count {
  flex:none;
  margin:0;
  padding-block:8px;
  font-size:11px;
  line-height:16px;
  color:var(--muted);
  white-space:nowrap;
  font-variant-numeric:tabular-nums
}
.reset-button {
  border:0;
  background:transparent;
  text-decoration:underline;
  font-size:12px;
  padding:10px 0
}
.shop-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:45px 30px;
  margin-top:35px
}
.shop-item a {
  display:block
}
.photo-placeholder {
  aspect-ratio:1.3;
  background:#eeeae0;
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  border:1px solid #e3ddd2;
  overflow:hidden
}
.photo-index {
  position:absolute;
  top:10px;
  left:15px;
  font:32px var(--serif);
  color:#bbb3a6
}
.photo-mark {
  font-family:var(--serif);
  font-size:23px;
  letter-spacing:.1em;
  border:1px solid #9e9586;
  padding:8px 18px;
  transform:rotate(-5deg);
  color:#756c5f
}
.photo-placeholder small {
  font-size:10px;
  color:#655c4e;
  margin-top:22px;
  letter-spacing:.06em
}
.shop-info {
  padding:20px 0;
  border-bottom:1px solid var(--line)
}
.shop-tags { display:flex; flex-wrap:wrap; gap:3px 7px; }
.shop-tags span { color:var(--red); font-size:11px; line-height:1.6; }
.shop-tags span::before { content:'#'; margin-right:2px; }
.shop-item .shop-tags { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.shop-item .shop-tags span { margin-right:7px; }
.shop-item .shop-tags span:last-child { margin-right:0; }
.shop-photo { width:100%; aspect-ratio:1; object-fit:cover; display:block; }
.dialog-description { white-space:pre-line; }
.sample-tag {
  display:inline-block;
  font-size:10px;
  border:1px solid #b7a795;
  padding:2px 8px;
  color:#655440
}
.shop-info p {
  font-size:11px;
  color:var(--muted);
  margin:14px 0 5px
}
.shop-info h2 {
  font-family:var(--sans);
  font-size:19px;
  letter-spacing:0;
  display:flex;
  justify-content:space-between
}
.shop-info h2 span {
  color:var(--red)
}
.shop-info small {
  font-size:10px;
  color:var(--muted)
}
.shop-item a:hover .photo-mark {
  transform:rotate(0);
  transition:transform .2s
}
.empty-result {
  padding:70px 0;
  text-align:center
}
.empty-result h2 {
  font-size:27px
}
.empty-result p {
  margin:18px 0 25px
}
.detail {
  padding-bottom:100px
}
.detail-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:65px;
  margin:50px 0
}
.detail-grid .photo-placeholder {
  align-self:start;
  aspect-ratio:1
}
.detail-copy>.eyebrow {
  margin:23px 0 10px
}
.detail-copy h2 {
  font-size:32px;
  margin:12px 0 22px
}
.detail-copy>p:not(.eyebrow) {
  font-size:14px
}
dl {
  margin:26px 0
}
dl>div {
  display:grid;
  grid-template-columns:105px 1fr;
  padding:20px 0;
  border-bottom:1px solid var(--line);
  font-size:13px
}
dt {
  color:var(--muted)
}
dd {
  margin:0
}
dd .small-note {
  display:block
}
dd a {
  text-decoration:underline
}
.detail-copy .text-link {
  font-size:12px
}
.practical {
  padding-bottom:100px
}
.access-address {
  display:grid;
  grid-template-columns:1.2fr 1fr;
  border-top:1px solid var(--ink);
  padding:55px 0 80px
}
.access-address h2 {
  font-size:40px;
  margin:18px 0
}
.access-address p {
  margin-bottom:20px
}
.access-address strong {
  font:30px var(--serif)
}
.access-address .small-note {
  max-width:390px;
  margin-top:15px
}
.access-illustration {
  position:relative;
  min-height:360px
}
.access-illustration img {
  height:370px;
  margin:auto;
  transform:rotate(9deg)
}
.access-illustration>span {
  position:absolute;
  top:10px;
  right:5%;
  writing-mode:vertical-rl;
  font-family:var(--serif);
  letter-spacing:.1em;
  font-size:22px
}
.status-label {
  display:inline-block;
  padding:3px 14px;
  border:1px solid var(--red);
  color:var(--red);
  font-size:12px;
  white-space:nowrap
}
.map-section {
  padding:40px 0 70px;
  border-top:1px solid var(--ink)
}
.map-section .section-heading {
  margin-bottom:25px
}
.map-filters {
  display:flex;
  gap:8px;
  margin:30px 0 18px
}
.map-placeholder {
  min-height:320px;
  border:1px solid var(--line);
  position:relative;
  padding:60px 20px;
  background:#f7f5ef;
  text-align:center;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center
}
.map-placeholder h3 {
  font-family:var(--serif);
  font-size:30px;
  margin:15px 0
}
.map-placeholder>p:not(.eyebrow) {
  font-size:13px
}
.map-placeholder strong {
  font-size:12px;
  color:var(--red);
  margin-top:20px
}
.map-placeholder small {
  font-size:10px;
  margin-top:8px;
  color:var(--muted)
}
.map-corner {
  position:absolute;
  width:20px;
  height:20px;
  border-color:var(--ink);
  border-style:solid
}
.tl {
  top:10px;
  left:10px;
  border-width:1px 0 0 1px
}
.tr {
  top:10px;
  right:10px;
  border-width:1px 1px 0 0
}
.bl {
  bottom:10px;
  left:10px;
  border-width:0 0 1px 1px
}
.br {
  bottom:10px;
  right:10px;
  border-width:0 1px 1px 0
}
.map-legend {
  display:flex;
  gap:25px;
  flex-wrap:wrap;
  font-size:11px;
  padding:15px 0
}
.map-legend small {
  margin-left:auto;
  color:var(--muted)
}
.parking {
  display:grid;
  grid-template-columns:1fr 1.1fr;
  gap:45px;
  border-top:1px solid var(--ink);
  padding:55px 0
}
.parking h2 {
  font-size:30px;
  margin:20px 0
}
.parking>div>p:not(.eyebrow) {
  font-size:13px
}
.parking-list>div {
  display:grid;
  grid-template-columns:30px 1fr;
  align-items:center;
  gap:10px;
  border-bottom:1px solid var(--line);
  padding:18px 0
}
.parking-list>div>span {
  font:12px var(--serif);
  color:var(--red)
}
.parking-list h3 {
  font-size:16px
}
.parking-list small {
  grid-column:2;
  color:var(--red);
  font-size:11px
}
.parking-list>p {
  margin-top:20px
}
.guide-basics {
  display:grid;
  grid-template-columns:1fr 1.2fr;
  gap:70px;
  border-top:1px solid var(--ink);
  padding:50px 0 80px
}
.guide-basics h2 {
  font-size:36px;
  margin-top:15px
}
.guide-basics img {
  width:260px;
  margin-top:45px;
  transform:rotate(-5deg)
}
.guide-basics dl {
  margin:0
}
.guide-basics dl>div {
  grid-template-columns:100px 1fr;
  padding:22px 0;
  font-size:15px
}
.faq {
  border-top:1px solid var(--ink);
  padding-top:50px;
  max-width:950px;
  margin:auto
}
.faq h2 {
  font-size:35px
}
.faq>.section-heading {
  margin-bottom:20px
}
.faq>p {
  margin-bottom:35px;
  font-size:13px
}
.faq details {
  border-bottom:1px solid var(--line);
  scroll-margin-top:30px
}
.faq summary {
  cursor:pointer;
  padding:24px 0;
  font-size:16px;
  font-weight:700;
  list-style:none;
  display:flex;
  justify-content:space-between;
  gap:20px
}
.faq summary::-webkit-details-marker {
  display:none
}
.faq summary>span {
  color:var(--red);
  font-size:20px
}
.faq details[open] summary>span {
  transform:rotate(45deg)
}
.faq details>div {
  padding:0 30px 30px 0;
  font-size:14px
}
.faq details p {
  margin-top:15px
}
.guide-official {
  margin-top:50px;
  border-left:3px solid var(--red);
  padding:10px 25px
}
.guide-official p {
  font-size:12px
}
.not-found {
  display:flex;
  align-items:center;
  gap:80px;
  padding-bottom:80px
}
.not-found>img {
  width:220px
}
.not-found>div {
  display:flex;
  align-items:flex-start;
  flex-direction:column;
  gap:20px
}
.will-reveal {
  opacity:0;
  transform:translateY(25px);
  transition:opacity .7s,transform .7s
}
.will-reveal.is-visible {
  opacity:1;
  transform:none
}
@media(min-width:1600px) {
  .venue-band {
    padding-left:calc((100% - 1240px)/2);
    padding-right:calc((100% - 1240px)/2)
  }
}
@media(max-width:1100px) {
  .site-header {
    gap:20px
  }
  .header-place {
    display:none
  }
  .site-header nav {
    gap:20px
  }
  .hero-stage {
    height:665px
  }
  .hero-title {
    left:5%;
    width:47%
  }
  .hero-intro {
    font-size:19px
  }
  .hero-cat {
    width:285px;
    right:2%;
    top:74px
  }
  .hero-dog {
    width:205px;
    right:23%;
    top:157px
  }
  .hero-sun {
    width:310px;
    height:310px;
    right:7%;
    top:112px
  }
  .hero-jump {
    width:180px;
    right:21%;
    bottom:34px
  }
  .hero-date {
    left:6%;
    top:360px
  }
  .hero-date strong {
    font-size:160px
  }
  .hero-edition {
    right:44%;
    top:338px
  }
  .about-cat {
    width:205px;
    right:-40px
  }
  .about-stamp {
    right:15%
  }
  .event-row {
    grid-template-columns:35px 1fr 1fr 25px
  }
  .event-row h3 {
    font-size:21px
  }
  .lantern {
    left:16%;
    height:475px
  }
  .shops-feature-copy {
    padding-left:35px
  }
  .shops-feature-copy h2 {
    font-size:48px
  }
  .shops-feature-art {
    height:460px
  }
  .shop-count strong {
    font-size:95px
  }
  .shop-count {
    max-width:180px
  }
}
@media(max-width:760px) {
  html {
    scroll-padding-top:35px
  }
  .preview-note {
    font-size:9px;
    padding:4px 10px
  }
  .preview-note span {
    letter-spacing:0
  }
  .site-header {
    height:80px;
    padding:0 5%;
    gap:20px
  }
  .brand,.brand img {
    width:112px
  }
  .header-place {
    display:block;
    font-size:8px;
    line-height:1.6
  }
  .menu-toggle {
    display:flex;
    align-items:center;
    gap:12px;
    margin-left:auto;
    background:none;
    border:0;
    font-size:10px;
    padding:12px 0 12px 12px
  }
  .menu-lines {
    display:block;
    width:24px;
    height:14px;
    border-top:1px solid var(--ink);
    border-bottom:1px solid var(--ink);
    transition:transform .2s
  }
  .menu-open .menu-lines {
    transform:rotate(-45deg);
    height:1px
  }
  .site-header nav {
    display:none;
    position:absolute;
    top:79px;
    left:0;
    right:0;
    margin:0;
    padding:24px 7% 32px;
    background:var(--paper);
    border-bottom:1px solid var(--ink);
    box-shadow:0 12px 18px #201c1810
  }
  .menu-open .site-header nav {
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:5px
  }
  .site-header nav a {
    font-size:16px;
    padding:13px 0
  }
  .site-header .nav-instagram {
    border-left:0;
    padding-left:0;
    font-size:16px
  }
  .section-wrap {
    padding-left:6%;
    padding-right:6%
  }
  .hero-topline {
    font-size:8px;
    letter-spacing:.08em;
    margin:0 5%;
    padding-top:12px
  }
  .hero-stage {
    height:775px
  }
  .hero-title {
    left:6%;
    top:26px;
    width:88%;
    max-width:none
  }
  .hero-intro {
    font-size:18px;
    letter-spacing:.1em;
    text-align:center;
    margin:0 0 5px
  }
  .hero-title h1 {
    max-width:390px;
    margin:auto
  }
  .hero-title h1 img {
    width:100%
  }
  .hero-subtitle {
    text-align:center;
    font-size:10px;
    letter-spacing:.03em;
    margin:7px 0 0
  }
  .hero-sun {
    width:245px;
    height:245px;
    top:306px;
    right:4%
  }
  .hero-cat {
    width:210px;
    right:2%;
    top:294px;
    transform:rotate(8deg)
  }
  .hero-dog {
    width:151px;
    left:7%;
    top:307px;
    right:auto;
    transform:rotate(-14deg)
  }
  .hero-jump {
    width:132px;
    right:2%;
    bottom:49px;
    transform:rotate(-10deg)
  }
  .vertical-label {
    font-size:13px;
    top:255px;
    left:4%;
    right:auto;
    letter-spacing:.2em;
    z-index:3
  }
  .hero-edition {
    top:526px;
    left:8%;
    right:auto;
    font-size:12px;
    line-height:1.3;
    padding:7px
  }
  .hero-date {
    left:10%;
    top:602px;
    grid-template-columns:auto 30px
  }
  .hero-year {
    font-size:16px
  }
  .hero-date strong {
    font-size:124px;
    line-height:.85;
    letter-spacing:-.085em
  }
  .hero-sunday {
    font-size:21px;
    margin-left:16px;
    align-self:end
  }
  .hero-sunday small {
    font-size:9px
  }
  .hero-time {
    font-size:24px;
    margin:17px 0 0 4px
  }
  .hero-time>span {
    font-size:18px;
    margin:0 14px
  }
  .hero-scroll {
    display:none
  }
  .venue-band {
    padding:16px 6%;
    gap:12px;
    flex-wrap:wrap
  }
  .venue-band>span {
    font-size:9px;
    padding:0 6px
  }
  .venue-band p {
    font-size:18px;
    letter-spacing:0;
    flex:1
  }
  .venue-band a {
    font-size:10px;
    line-height:1.2;
    margin-left:auto
  }
  .venue-band a span {
    margin-left:6px;
    font-size:17px
  }
  .benefits {
    padding:21px 3%;
    gap:0
  }
  .benefits>div {
    padding:0 7px;
    display:flex;
    flex-direction:column;
    gap:7px;
    justify-content:flex-start;
    text-align:center;
    font-size:13px;
    white-space:nowrap
  }
  .benefits>div>span {
    font-size:10px
  }
  .benefits small {
    font-size:8px;
    white-space:normal;
    max-width:104px;
    line-height:1.6;
    margin-top:0
  }
  .about {
    padding-top:74px;
    padding-bottom:185px;
    display:block
  }
  .section-label .eyebrow {
    max-width:none;
    line-height:1.5
  }
  .vertical-aside {
    display:none
  }
  .about-copy h2 {
    font-size:38px;
    margin:24px 0 22px;
    line-height:1.55;
    letter-spacing:.04em
  }
  .about-copy p {
    font-size:13px;
    line-height:2.1;
    margin-top:17px;
    max-width:93%
  }
  .desktop-break {
    display:none
  }
  .about-cat {
    width:150px;
    right:6%;
    bottom:5px;
    transform:rotate(17deg)
  }
  .about-stamp {
    top:auto;
    bottom:74px;
    left:13%;
    right:auto;
    font-size:13px
  }
  .happenings {
    padding-top:55px;
    padding-bottom:65px
  }
  .section-heading {
    gap:10px;
    margin-bottom:30px
  }
  .section-heading h2 {
    font-size:29px;
    margin-top:18px;
    letter-spacing:0
  }
  .eyebrow {
    font-size:9px;
    letter-spacing:.11em
  }
  .shop-count {
    max-width:106px;
    margin-bottom:5px
  }
  .shop-count>span:first-child {
    font-size:9px
  }
  .shop-count strong {
    font-size:65px;
    margin:0 5px
  }
  .shop-count small,.shop-count>span:last-child {
    font-size:11px
  }
  .event-row {
    grid-template-columns:24px 1fr 20px;
    gap:7px 14px;
    padding:21px 0
  }
  .event-row h3 {
    font-size:20px;
    letter-spacing:0
  }
  .event-row p {
    grid-column:2;
    grid-row:2;
    font-size:11px
  }
  .event-row>span:last-child {
    grid-column:3;
    grid-row:1/3;
    font-size:23px
  }
  .row-no {
    font-size:12px
  }
  .event-row:hover {
    padding-left:3px
  }
  .shops-feature {
    padding-top:55px;
    padding-bottom:55px;
    grid-template-columns:40% 60%;
    min-height:470px
  }
  .shops-feature-art {
    height:345px
  }
  .lantern {
    height:345px;
    left:-54px;
    top:50px
  }
  .shops-feature-art>span {
    font-size:17px;
    left:8%;
    top:-3px;
    z-index:1
  }
  .shops-feature-copy {
    padding-left:9px
  }
  .shops-feature-copy h2 {
    font-size:35px;
    line-height:1.5;
    margin:18px 0
  }
  .shops-feature-copy>p:not(.eyebrow) {
    font-size:12px;
    margin:17px 0
  }
  .shops-feature-copy .small-note {
    font-size:10px!important
  }
  .button-link {
    font-size:12px;
    gap:20px;
    padding:17px 19px;
    min-height:56px
  }
  .shops-feature .button-link {
    padding:15px 13px;
    font-size:11px;
    gap:9px
  }
  .visit {
    padding-top:65px;
    padding-bottom:65px
  }
  .visit-heading h2 {
    font-size:34px
  }
  .visit-links {
    grid-template-columns:1fr;
    gap:0;
    margin:32px 0 20px
  }
  .visit-links a {
    padding:24px 0
  }
  .visit-links a:last-child {
    border-top:0
  }
  .visit-links h3 {
    font-size:26px;
    margin:7px 0
  }
  .visit-links a>span:last-child {
    top:45px
  }
  .small-note {
    font-size:11px
  }
  .site-footer {
    padding:48px 6% 27px
  }
  .footer-top {
    display:block;
    padding-bottom:37px
  }
  .footer-top>.serif {
    font-size:clamp(27px,8.2vw,37px);
    line-height:1.5
  }
  .footer-follow {
    margin-top:35px;
    max-width:330px
  }
  .footer-follow p {
    margin:15px 0
  }
  .footer-follow>a {
    font-size:22px
  }
  .footer-bottom {
    gap:22px;
    flex-wrap:wrap;
    padding-top:25px
  }
  .footer-brand {
    width:120px
  }
  .footer-bottom>div {
    order:3;
    width:100%
  }
  .footer-bottom p {
    font-size:10px
  }
  .footer-bottom small {
    font-size:8px
  }
  .to-top {
    width:43px;
    height:43px
  }
  .page-heading {
    padding-top:25px;
    padding-bottom:35px
  }
  .breadcrumb {
    margin-bottom:32px;
    font-size:10px
  }
  .page-heading h1 {
    font-size:36px;
    line-height:1.45;
    margin:12px 0 17px;
    letter-spacing:0
  }
  .page-heading>p:last-child {
    font-size:12px
  }
  .notice {
    padding:15px 17px;
    font-size:12px
  }
  .directory,.detail {
    padding-bottom:65px
  }
  .filters {
    margin-top:30px
  }
  .search-row input {
    padding:14px 12px;
    font-size:14px
  }
  .search-submit {
    padding:10px 16px;
    font-size:12px
  }
  .search-submit span {
    margin-left:7px
  }
  .category-list {
    gap:6px
  }
  .category-button {
    font-size:11px;
    padding:9px 13px
  }
  .reset-button {
    font-size:11px
  }
  .shop-grid {
    grid-template-columns:1fr 1fr;
    gap:28px 15px;
    margin-top:25px
  }
  .photo-mark {
    font-size:15px;
    padding:6px 10px
  }
  .photo-placeholder small {
    font-size:8px;
    margin-top:13px
  }
  .photo-index {
    font-size:21px;
    top:3px;
    left:9px
  }
  .photo-placeholder {
    aspect-ratio:1
  }
  .shop-info {
    padding:13px 0
  }
  .sample-tag {
    font-size:8px;
    padding:2px 4px
  }
  .shop-info h2 {
    font-size:14px;
    gap:3px
  }
  .shop-info p {
    font-size:10px;
    margin:9px 0 4px
  }
  .shop-info small {
    font-size:8px
  }
  .empty-result {
    padding:40px 0
  }
  .empty-result h2 {
    font-size:23px
  }
  .empty-result p {
    font-size:12px
  }
  .detail-grid {
    grid-template-columns:1fr;
    gap:25px;
    margin:30px 0
  }
  .detail-grid .photo-placeholder {
    aspect-ratio:1.2
  }
  .detail-grid .photo-mark {
    font-size:25px
  }
  .detail-grid .photo-placeholder small {
    font-size:11px
  }
  .detail-copy h2 {
    font-size:28px
  }
  .practical {
    padding-bottom:50px
  }
  .access-address {
    grid-template-columns:1fr;
    padding:35px 0 45px;
    position:relative
  }
  .access-address h2 {
    font-size:30px
  }
  .access-address>div:first-child {
    z-index:2
  }
  .access-address p {
    font-size:13px
  }
  .access-address .button-link {
    font-size:11px;
    padding:15px
  }
  .access-illustration {
    position:absolute;
    top:21px;
    right:-10px;
    min-height:0;
    width:108px;
    opacity:.95
  }
  .access-illustration img {
    height:170px;
    width:100%
  }
  .access-illustration>span {
    display:none
  }
  .map-section {
    padding:35px 0 45px
  }
  .map-section .section-heading h2 {
    font-size:30px
  }
  .map-placeholder {
    min-height:300px;
    padding:35px 18px
  }
  .map-placeholder h3 {
    font-size:25px
  }
  .map-placeholder strong {
    font-size:11px
  }
  .map-placeholder small {
    font-size:9px
  }
  .map-legend {
    gap:10px 18px;
    font-size:10px
  }
  .map-legend p {
    width:100%
  }
  .map-legend small {
    margin-left:0;
    width:100%
  }
  .parking {
    grid-template-columns:1fr;
    gap:20px;
    padding:38px 0 0
  }
  .parking h2 {
    font-size:26px
  }
  .parking-list h3 {
    font-size:15px
  }
  .guide-basics {
    grid-template-columns:1fr;
    gap:20px;
    padding:30px 0 45px
  }
  .guide-basics>div {
    position:relative;
    min-height:105px
  }
  .guide-basics h2 {
    font-size:28px
  }
  .guide-basics img {
    position:absolute;
    right:0;
    top:-5px;
    margin:0;
    width:100px;
    transform:rotate(7deg)
  }
  .guide-basics dl>div {
    font-size:13px;
    grid-template-columns:85px 1fr;
    padding:18px 0
  }
  .faq {
    padding-top:35px
  }
  .faq h2 {
    font-size:27px
  }
  .faq summary {
    font-size:14px;
    padding:22px 0
  }
  .faq details>div {
    font-size:13px;
    padding-right:0
  }
  .guide-official {
    padding-left:17px
  }
  .guide-official .text-link {
    font-size:12px;
    gap:15px
  }
  .not-found {
    gap:30px;
    flex-direction:column;
    align-items:flex-start
  }
  .not-found>img {
    width:160px
  }
  .will-reveal {
    transform:translateY(15px)
  }
}
@media(max-width:370px) {
  .hero-stage {
    height:732px
  }
  .hero-title {
    top:30px
  }
  .hero-intro {
    font-size:16px
  }
  .hero-cat {
    width:190px;
    top:280px
  }
  .hero-dog {
    width:135px;
    top:300px
  }
  .hero-sun {
    width:220px;
    height:220px;
    top:300px
  }
  .hero-date {
    top:562px
  }
  .hero-edition {
    top:506px
  }
  .hero-jump {
    width:113px;
    bottom:55px
  }
  .header-place {
    display:none
  }
  .venue-band p {
    font-size:16px
  }
  .venue-band a {
    width:100%;
    text-align:right
  }
  .about-copy h2 {
    font-size:34px
  }
  .benefits>div {
    font-size:12px
  }
  .shops-feature-copy h2 {
    font-size:30px
  }
  .shop-info h2 {
    font-size:12px
  }
  .page-heading h1 {
    font-size:32px
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  *,*::before,*::after {
    animation:none!important;
    transition:none!important;
    scroll-behavior:auto!important
  }
  .will-reveal {
    opacity:1;
    transform:none
  }
  .hero-cat {
    transform:rotate(9deg)
  }
  .hero-dog {
    transform:rotate(-12deg)
  }
}
@media print {
  .preview-note,.site-header,.site-footer,.filters,.hero-scroll {
    display:none
  }
  .will-reveal {
    opacity:1;
    transform:none
  }
  body {
    background:white
  }
  a {
    text-decoration:underline
  }
  .section-wrap {
    padding:20px
  }
  .hero-stage {
    height:660px
  }
}
@media(max-width:760px) {
  .happenings .section-heading h2 {
    font-size:clamp(20px,6vw,26px)
  }
  .shops-feature-copy h2 {
    font-size:clamp(22px,7.1vw,32px)
  }
  .venue-band {
    display:grid;
    grid-template-columns:auto 1fr;
    gap:5px 12px
  }
  .venue-band p {
    font-size:16px
  }
  .venue-band a {
    grid-column:2;
    text-align:right;
    width:100%
  }
  body[data-page=guide] .page-heading h1 {
    font-size:clamp(24px,7vw,36px)
  }
}
@media(max-width:760px) {
  .vertical-label {
    writing-mode:horizontal-tb;
    top:264px;
    left:6%;
    right:auto;
    width:88%;
    text-align:center;
    font-size:12px;
    letter-spacing:.18em
  }
}
@media(max-width:370px) {
  .hero-jump {
    display:none
  }
  .hero-edition {
    top:490px
  }
}

/* 第3稿：現在の共通ヘッダー・トップ・レスポンシブ構成 */
:root { --red:#c93620; --dock-space:100px; }
html { scroll-padding-block:110px 110px; }
body { padding-bottom:0; }
main,section,article,header,footer,form,fieldset { min-width:0; }
h1,h2,h3,p,a { overflow-wrap:anywhere; }
.site-header { background:var(--red); color:var(--paper); border-color:#ffffff45; position:sticky; top:0; z-index:40; }
.site-header nav a:after { background:var(--paper); }
.site-header .nav-instagram { font-family:var(--sans); font-size:12px; border-color:#ffffff50; }
.site-header :focus-visible { outline-color:#fff; }
.fair-hero { background:var(--red); color:var(--paper); overflow:hidden; }
.fair-hero-inner { max-width:1440px; margin:auto; padding:35px 6% 40px; display:grid; grid-template-columns:minmax(0,46%) minmax(0,54%); grid-template-rows:max-content 1fr; }
.fair-title { grid-column:1; grid-row:1; align-self:start; width:100%; max-width:490px; text-align:center; }
.fair-title>p { font-family:var(--serif); font-size:18px; font-weight:700; }
.fair-title h1 { margin:20px 0 0; max-width:490px; }
.fair-title h1 img { width:100%; }
.fair-schedule { grid-column:1; grid-row:2; padding-top:24px; align-self:start; }
.fair-date { display:flex; align-items:baseline; flex-wrap:wrap; gap:14px; line-height:1; }
.fair-date>span:first-child { font-size:17px; }
.fair-date strong { font:100px/.95 var(--serif); letter-spacing:-.055em; }
.fair-day { font-size:14px; border:1px solid #fff9; padding:7px 9px; align-self:center; }
.fair-time { font:32px/1.2 var(--serif); margin:20px 0 12px; }
.fair-time>span { font-size:23px; margin:0 20px; }
.fair-venue { font:700 22px/1.6 var(--serif); }
.fair-collage { grid-column:2; grid-row:1/3; width:100%; aspect-ratio:1; align-self:center; position:relative; --scroll:0px; }
.collage-paper { position:absolute; inset:6% 1% 5% 9%; background:#fff5dd; transform:rotate(4deg); }
.figure { position:absolute; max-width:none; }
.figure-1 { width:23%; left:3%; top:1%; z-index:5; transform:rotate(-9deg) translateY(calc(var(--scroll) * -.5)); }
.figure-2 { width:25%; left:0; top:36%; z-index:5; transform:rotate(-8deg); }
.figure-3 { width:43%; right:0; top:0; z-index:4; transform:rotate(7deg); }
.figure-4 { width:22%; left:31%; top:4%; z-index:4; transform:rotate(5deg); }
.figure-5 { width:31%; right:4%; bottom:0; z-index:8; transform:rotate(-7deg); }
.figure-6 { width:41%; left:18%; bottom:0; z-index:7; transform:rotate(5deg); }
.figure-7 { width:32%; left:24%; top:39%; z-index:8; transform:rotate(-12deg); }
.figure-8 { width:15%; left:60%; bottom:9%; z-index:5; transform:rotate(-7deg); }
.market-intro { display:grid; grid-template-columns:minmax(0,1fr) 135px; gap:30px; align-items:center; padding-top:58px; padding-bottom:40px; }
.market-intro h2 { font-size:32px; letter-spacing:.015em; }
.market-intro h2 strong { font:74px/1 var(--serif); color:var(--red); margin:0 9px; letter-spacing:-.04em; }
.market-intro p { font-size:15px; line-height:2; margin-top:20px; }
.intro-dog { width:120px; justify-self:center; }
.benefits { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; padding-top:15px; padding-bottom:35px; border:0; background:var(--paper); }
.benefits>div { display:flex; flex-direction:column; align-items:center; justify-content:start; text-align:center; padding:5px 15px; border-right:1px solid var(--line); gap:10px; }
.benefits>div:last-child { border:0; }
.feature-icon { width:48px; height:48px; color:var(--red); flex:none; }
.benefits h2 { font-size:23px; letter-spacing:0; line-height:1.6; }
.benefits h2 span { display:block; white-space:nowrap; }
.benefits p { font:11px/1.8 var(--sans); color:var(--muted); }
.section-nav { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); margin:0; border-block:1px solid var(--ink); }
.section-nav a { font-size:13px; padding:18px 12px; text-align:center; border-right:1px solid var(--line); }
.section-nav a:last-child { border:0; }
.section-nav a:hover { color:var(--red); background:#f3eee2; }
.plain-heading { display:flex; align-items:end; justify-content:space-between; gap:30px; margin-bottom:40px; }
.plain-heading>div { display:flex; align-items:baseline; gap:18px; }
.section-number { color:var(--red); font:16px var(--serif); flex:none; }
.plain-heading h2 { font-size:38px; letter-spacing:.025em; }
.plain-heading>p { font-size:13px; line-height:1.9; }
.shopping-section { padding-top:70px; padding-bottom:65px; }
.shopping-mascot { display:flex; justify-content:flex-end; margin-top:-12px; margin-bottom:12px; }
.shopping-mascot .art { width:120px; }
.category-features { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; }
.category-feature { min-width:0; }
.photo-scene { display:grid; grid-template-columns:1fr; align-content:start; }
.purpose-photo { position:relative; aspect-ratio:1.35; display:flex; align-items:center; justify-content:center; text-align:center; color:#5b5246; background:#e8e1d2; padding:24px; overflow:hidden; }
.purpose-photo>div { position:relative; z-index:2; }
.purpose-photo strong { font:700 24px/1.5 var(--serif); }
.purpose-photo p { font-size:11px; margin-top:12px; }
.photo-status { display:inline-block; font-size:10px; padding:3px 9px; background:#fffefa; border:1px solid #c5bcae; margin-top:15px; }
.photo-frame { position:absolute; inset:15px; border:1px solid #92897b; }
.photo-food { background:#ead2c3; }
.photo-flea { background:#dfe3d9; }
.photo-adoption { background:#e3e2d4; }
.photo-lottery { background:#f0d6c9; }
.photo-scene .art { position:static; width:auto; max-width:140px; height:100px; margin-top:-6px; justify-self:end; transform:none; }
.photo-scene .edge-bernese { display:none; }
.category-content { padding-top:10px; border-bottom:1px solid var(--line); }
.category-no { color:var(--red); font:13px var(--serif); }
.category-content h3 { font:700 24px/1.5 var(--serif); margin:7px 0 15px; }
.category-content>p { font-size:13px; line-height:1.9; }
.category-content .text-link { width:100%; font-size:12px; gap:10px; margin:12px 0 22px; }
.home-directory { padding-bottom:0; margin-top:45px; }
.home-directory .notice { margin:0; }
.shop-grid { grid-template-columns:repeat(5,minmax(0,1fr)); gap:36px 20px; }
.shop-item { min-width:0; }
.shop-grid,.load-more-wrap { overflow-anchor:none; }
.load-more-wrap { text-align:center; }
.load-more { margin-top:32px; min-width:240px; justify-content:center; }
.load-more[hidden] { display:none; }
.shop-info h3 { display:flex; justify-content:space-between; gap:10px; font:700 19px/1.6 var(--sans); margin:0; }
.shop-info h3 span { flex:none; color:var(--red); }
.all-shops { margin-top:35px; padding-top:26px; border-top:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; gap:25px; }
.all-shops p { font-size:12px; color:var(--muted); }
.program-section { background:var(--red); color:var(--paper); padding:60px 0; }
.program-section .section-number { color:var(--paper); }
.program-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:50px; }
.program-item .purpose-photo { aspect-ratio:2; }
.program-item h3 { font:700 28px/1.5 var(--serif); margin:16px 0; }
.program-item h3>span { display:inline-block; }
.program-item>p { font-size:14px; min-height:54px; }
.program-item .text-link { font-size:14px; margin-top:15px; }
.venue-story { padding-block:65px; }
.venue-story>.area-map:first-child { margin-top:0; }
.memories-section { padding-block:72px 22px; overflow:hidden; }
.memories-heading { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:30px; }
.memories-heading h2 { font:700 clamp(28px,3.2vw,44px)/1.5 var(--serif); }
.memories-toggle { flex:none; color:var(--paper); background:var(--red); border:1px solid var(--red); padding:10px 15px; font-size:12px; cursor:pointer; }
.memories-toggle[hidden] { display:none; }
.memories-viewport { --memory-width:clamp(220px,24vw,360px); --memory-gap:24px; overflow-x:auto; scrollbar-width:thin; scrollbar-color:var(--red) transparent; }
.memories-track { display:flex; width:max-content; }
.memories-set { display:flex; flex:none; gap:var(--memory-gap); padding-right:var(--memory-gap); }
.memory-frame { width:var(--memory-width); margin:0; flex:none; }
.memory-placeholder { aspect-ratio:3/4; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:18px; border:1px solid #d7cbbb; color:var(--red); background:#eee7da; }
.memory-frame:nth-child(2n) .memory-placeholder { background:#f1ddd2; }
.memory-frame:nth-child(3n) .memory-placeholder { background:#e6e6dc; }
.memory-placeholder>span { font-size:12px; letter-spacing:.2em; writing-mode:vertical-rl; }
.memory-placeholder strong { font-size:24px; font-weight:400; }
.memory-placeholder small,.memory-frame figcaption { font-size:11px; }
.memory-frame figcaption { margin-top:10px; color:#756959; }
.memory-frame img { display:block; width:100%; aspect-ratio:3/4; object-fit:cover; }
.memories-copy { display:none; }
.memories-section.is-animated .memories-copy { display:flex; }
.memories-viewport { cursor:grab; touch-action:pan-x pan-y; overscroll-behavior-x:contain; scroll-behavior:auto; overflow-anchor:none; }
.memories-viewport.is-dragging { cursor:grabbing; user-select:none; }
.memories-viewport { scrollbar-width:none; }
.memories-viewport::-webkit-scrollbar { display:none; }
.memory-frame { user-select:none; }
.memory-frame img { -webkit-user-drag:none; }
@media(max-width:600px) {
 .memories-section { padding-top:45px; }
 .memories-heading { align-items:flex-start; gap:12px; margin-bottom:22px; }
 .memories-heading h2 { font-size:27px; }
 .memories-toggle { font-size:10px; padding:9px 8px; }
 .memories-viewport { --memory-width:58vw; --memory-gap:14px; }
 .memory-placeholder strong { font-size:20px; }
}
@media(prefers-reduced-motion:reduce) {
 .memories-section.is-animated .memories-copy { display:none; }
 .memories-section.is-animated .memories-viewport { overflow-x:auto; }
}
.venue-photos { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr); gap:35px; align-items:start; }
.venue-wide .purpose-photo { aspect-ratio:1.9; }
.venue-small .purpose-photo { aspect-ratio:1.3; }
.before-visit { padding-block:50px 65px; border-top:1px solid var(--ink); }
.practical-links { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:40px; }
.practical-links>a { border-top:5px solid var(--red); padding:24px 0; border-bottom:1px solid var(--line); }
.practical-links h3 { font:700 24px/1.5 var(--serif); }
.practical-links p { font-size:14px; margin:17px 0 25px; }
.practical-action { display:flex; align-items:center; justify-content:space-between; gap:20px; color:var(--red); font-size:14px; font-weight:700; }
.practical-action>span { font-size:24px; }
.site-footer { padding-top:50px; padding-bottom:135px; }
.footer-top { padding-bottom:35px; }
.footer-top h2 { font-size:34px; }
.footer-description { margin-top:15px; font-size:14px; }
.footer-follow { min-width:0; }
.footer-follow>a { font-size:23px; }
.map-dock { position:fixed; right:max(24px,env(safe-area-inset-right)); bottom:max(22px,env(safe-area-inset-bottom)); z-index:45; }
.floating-map { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px 17px; color:var(--paper); background:var(--ink); border:1px solid var(--paper); box-shadow:3px 3px 0 var(--red); font-size:15px; font-weight:700; line-height:1.4; }
.floating-map small { display:block; font-size:10px; font-weight:400; margin-top:4px; }
.map-button-icon { color:#f5785d; font-size:24px; }
.floating-map:hover { background:var(--red); }
:where(a,button,input,summary) { scroll-margin-block:120px; }
:where(.map-section,.area-map):focus-visible { outline:3px solid var(--red); outline-offset:8px; }
.page-heading>p:last-child { max-width:750px; }
.access-illustration { overflow:hidden; }
.access-illustration .art { max-width:100%; transform:none; }
.map-placeholder h3 { font-size:28px; }
@media(max-width:1100px) and (min-width:681px) {
  .fair-title>p { font-size:15px; }
  .fair-date { gap:10px; }
  .fair-date strong { font-size:78px; }
  .fair-venue { font-size:18px; }
  .plain-heading h2 { font-size:30px; }
  .plain-heading>p { font-size:12px; }
  .category-features { gap:22px; }
  .purpose-photo { padding:20px; aspect-ratio:1; }
  .purpose-photo strong { font-size:19px; }
  .category-content h3 { font-size:21px; }
  .program-grid { gap:30px; }
}
@media(max-width:1000px) {
  .site-header { height:80px; padding-inline:5%; gap:18px; }
  .brand,.brand img { width:112px; }
  .header-place { display:block; font-size:9px; }
  .menu-toggle { display:flex; align-items:center; gap:12px; margin-left:auto; background:none; border:0; font-size:12px; padding:12px; min-height:44px; }
  .menu-lines { display:block; width:24px; height:14px; border-top:1px solid currentColor; border-bottom:1px solid currentColor; }
  .site-header nav { display:none; position:fixed; top:var(--menu-top,104px); left:0; right:0; max-height:calc(100dvh - var(--menu-top,104px) - var(--dock-space)); overflow-y:auto; overscroll-behavior:contain; padding:15px 6% 25px; margin:0; background:var(--red); border-bottom:1px solid #fff8; box-shadow:0 10px 20px #201c1830; }
  .menu-open { overflow:hidden; }
  .menu-open .site-header nav { display:flex; flex-direction:column; align-items:stretch; gap:0; }
  .site-header nav a,.site-header .nav-instagram { font-size:16px; padding:13px 0; border:0; min-height:50px; }
  .site-header nav a:after { display:none; }
  .site-header nav a[aria-current] { text-decoration:underline; text-underline-offset:6px; }
  .site-header nav a:focus-visible { outline-offset:-3px; }
  .market-intro { grid-template-columns:minmax(0,1fr) 110px; gap:20px; }
  .intro-dog { width:100px; }
  .market-intro h2 { font-size:26px; }
  .market-intro h2 strong { font-size:60px; }
  .benefits h2 { font-size:20px; }
}
@media(max-width:760px) {
  :root { --dock-space:calc(86px + env(safe-area-inset-bottom)); }
  body { padding-bottom:calc(74px + env(safe-area-inset-bottom)); }
  .section-wrap { padding-inline:6%; }
  .map-dock { left:0; right:0; bottom:0; height:calc(74px + env(safe-area-inset-bottom)); padding:9px 5% calc(9px + env(safe-area-inset-bottom)); background:var(--paper); border-top:1px solid var(--line); }
  .floating-map { width:100%; height:55px; padding:8px 17px; gap:13px; box-shadow:none; background:var(--red); border-color:var(--red); font-size:15px; }
  .floating-map>span:nth-child(2) { display:flex; align-items:baseline; flex-wrap:wrap; gap:3px 12px; }
  .floating-map small { display:inline; font-size:10px; margin:0; }
  .map-button-icon { color:white; }
  .floating-map>span:last-child { margin-left:auto; }
  .site-footer { padding:40px 6% 45px; }
  .footer-top h2 { font-size:28px; }
  .footer-follow { margin-top:24px; }
  .footer-description { font-size:13px; }
  .footer-bottom .to-top { margin-right:0; }
}
@media(max-width:680px) {
  .header-place { display:none; }
  .site-header { height:72px; }
  .brand,.brand img { width:100px; }
  .fair-hero-inner { grid-template-columns:minmax(0,1fr); grid-template-rows:auto auto auto; gap:0; padding:22px 6% 30px; }
  .fair-title { grid-column:1; grid-row:1; justify-self:center; text-align:center; }
  .fair-title>p { font-size:12px; }
  .fair-title h1 { max-width:330px; margin:12px auto 0; }
  .fair-schedule { grid-column:1; grid-row:2; padding-top:22px; text-align:center; }
  .fair-date { justify-content:center; gap:12px; }
  .fair-date strong { font-size:72px; }
  .fair-date>span:first-child { font-size:13px; }
  .fair-day { font-size:12px; padding:5px 8px; }
  .fair-time { font-size:27px; margin:13px 0 9px; }
  .fair-time>span { font-size:20px; margin-inline:15px; }
  .fair-venue { font-size:17px; }
  .fair-collage { grid-column:1; grid-row:3; max-width:440px; margin:28px auto 0; aspect-ratio:1.12; }
  .figure-1 { width:22%; }
  .figure-3 { width:39%; right:3%; }
  .figure-5 { width:30%; }
  .market-intro { padding-top:35px; padding-bottom:25px; grid-template-columns:minmax(0,1fr); gap:15px; }
  .market-intro h2 { font-size:23px; }
  .market-intro h2 strong { font-size:52px; margin-inline:5px; }
  .market-intro p { font-size:14px; line-height:2; margin-top:16px; }
  .market-intro p br { display:none; }
  .intro-dog { width:65px; justify-self:end; margin-top:-3px; }
  .benefits { padding-top:0; padding-bottom:30px; }
  .benefits>div { padding:4px 8px; gap:10px; }
  .feature-icon { width:37px; height:37px; }
  .benefits h2 { font-size:17px; line-height:1.6; }
  .benefits p { font-size:11px; }
  .section-nav a { padding:14px 8px; font-size:12px; line-height:1.7; }
  .plain-heading { display:block; margin-bottom:26px; }
  .plain-heading>div { gap:12px; }
  .section-number { font-size:12px; }
  .plain-heading h2 { font-size:28px; }
  .plain-heading>p { font-size:13px; margin-top:15px; }
  .shopping-section { padding-top:42px; padding-bottom:40px; }
  .shopping-mascot .art { width:90px; }
  .category-features { grid-template-columns:minmax(0,1fr); gap:30px; }
  .category-feature { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:18px; align-items:start; }
  .purpose-photo { aspect-ratio:.95; padding:16px; }
  .purpose-photo strong { font-size:17px; }
  .purpose-photo p { font-size:11px; margin-top:8px; }
  .photo-status { font-size:10px; padding:3px 6px; margin-top:10px; }
  .photo-frame { inset:9px; }
  .photo-scene .art { height:70px; max-width:90px; }
  .category-content { padding:0; }
  .category-no { font-size:11px; }
  .category-content h3 { font-size:20px; margin:4px 0 12px; }
  .category-content>p { font-size:13px; }
  .category-content>p br { display:none; }
  .category-content .text-link { font-size:12px; margin:8px 0 15px; }
  .home-directory { margin-top:30px; }
  .search-row input { font-size:16px; }
  .category-button { font-size:13px; padding:10px 13px; }
  .shop-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:25px 18px; }
  .shop-info h3 { font-size:17px; }
  .shop-info p,.shop-info small,.sample-tag,.photo-placeholder small { font-size:11px; }
  .photo-mark { font-size:18px; }
  .all-shops { display:block; margin-top:25px; padding-top:20px; }
  .all-shops p { margin-bottom:15px; }
  .all-shops .button-link { width:100%; }
  .program-section { padding:40px 0; }
  .program-grid { gap:30px; grid-template-columns:minmax(0,1fr); }
  .program-item .purpose-photo { aspect-ratio:1.8; }
  .program-item h3 { font-size:24px; margin-top:10px; }
  .program-item>p { min-height:0; }
  .venue-story { padding-block:40px; }
  .venue-photos { grid-template-columns:minmax(0,1fr); gap:15px; }
  .venue-wide .purpose-photo,.venue-small .purpose-photo { aspect-ratio:1.6; }
  .before-visit { padding-block:35px 40px; }
  .practical-links { grid-template-columns:minmax(0,1fr); gap:24px; }
  .practical-links h3 { font-size:23px; }
  .practical-links>a { padding:20px 0; border-top-width:3px; }
  .practical-links p { font-size:14px; }
  .page-heading h1,body[data-page=guide] .page-heading h1 { font-size:32px; }
  .map-placeholder h3 { font-size:23px; }
}
@media(max-width:480px) {
  .shop-grid { grid-template-columns:minmax(0,1fr); gap:28px; }
  .shop-item .photo-placeholder { aspect-ratio:1.6; }
  .shop-info h3 { font-size:19px; }
  .photo-mark { font-size:22px; }
  .photo-index { font-size:28px; }
}
@media(max-width:360px) {
  .fair-title>p { font-size:11px; }
  .fair-date strong { font-size:65px; }
  .fair-venue { font-size:15px; }
  .market-intro h2 { font-size:20px; }
  .market-intro h2 strong { font-size:46px; }
  .benefits h2 { font-size:15px; }
  .benefits>div { padding-inline:4px; }
  .plain-heading h2 { font-size:25px; }
  .category-feature { gap:14px; }
  .category-content h3 { font-size:18px; }
  .purpose-photo strong { font-size:15px; }
  .purpose-photo p { font-size:10px; }
  .floating-map { font-size:14px; padding-inline:12px; }
}
@media(max-height:500px) and (orientation:landscape) {
  .site-header { height:62px; }
  .brand,.brand img { width:88px; }
  .site-header nav { padding-block:8px 16px; }
  .site-header nav a,.site-header .nav-instagram { min-height:44px; padding-block:9px; }
  .preview-note { display:none; }
}
@media(prefers-reduced-motion:reduce) { .figure-1 { transform:rotate(-9deg); } }
@media print { .map-dock { display:none; } .site-header { position:static; } }
/* 地理アクセス地図と、出店配置図は別のコンポーネント */
.shopping-mascot { align-items:end; gap:30px; }
.shopping-mascot .art { width:auto; height:90px; max-width:130px; }
.shopping-mascot .art:last-child { height:110px; }
.area-map { margin-block:55px; }
.area-map .section-heading { gap:20px; flex-wrap:wrap; margin-bottom:20px; }
.area-map h2 { font-size:32px; }
.area-map>p { font-size:14px; line-height:1.9; }
.geo-tabs { display:flex; flex-wrap:wrap; gap:10px; margin:24px 0 16px; }
.geo-tabs button { border:1px solid var(--line); background:transparent; padding:12px 20px; min-height:48px; font-size:14px; }
.geo-tabs small { display:block; font-size:10px; }
.geo-tabs button[aria-pressed=true] { background:var(--ink); color:white; border-color:var(--ink); }
.geographic-map { background:#e8e4dc; border:1px solid var(--line); }
.geographic-map iframe { display:block; width:100%; height:420px; border:0; }
.geo-caption { padding:14px 0; border-bottom:1px solid var(--line); }
.geo-links { display:flex; align-items:center; flex-wrap:wrap; gap:15px 25px; margin-block:20px 12px; }
.geo-links .text-link { font-size:13px; }
.area-map .small-note { font-size:12px; }
.map-distinction { margin-top:25px; padding:15px 18px; background:#f1ede4; }
.map-distinction a { text-decoration:underline; text-underline-offset:4px; }
.parking-list .parking-candidate { padding:22px 0; border-bottom:1px solid var(--line); display:block; }
.parking-list .parking-candidate-title { display:flex; align-items:baseline; gap:18px; border:0; padding:0; }
.parking-candidate-title h3 { font-size:20px; }
.parking-candidate .status-label { display:inline-block; margin-block:12px; }
.parking-candidate p { font-size:14px; }
.parking-candidate .facility-address { margin-bottom:10px; font-weight:700; }
.parking-list .facility-links { display:flex; flex-wrap:wrap; gap:12px 25px; padding:0; border:0; margin-top:12px; }
.facility-links .text-link { font-size:12px; gap:8px; }
@media(max-width:680px) {
  .area-map { margin-block:35px; }
  .area-map h2 { font-size:26px; }
  .geo-tabs { gap:7px; }
  .geo-tabs button { font-size:12px; padding:10px; flex:1 1 90px; }
  .geographic-map iframe { height:340px; }
  .geo-links { align-items:stretch; }
  .geo-links .button-link { width:100%; font-size:13px; gap:10px; }
  .parking-candidate-title h3 { font-size:18px; }
}
.benefits>div { white-space:normal; flex-wrap:nowrap; min-width:0; }
.benefits h2,.benefits p { max-width:100%; }
@media(max-width:360px) {
  .fair-hero-inner { padding-top:18px; }
  .fair-title h1 { max-width:235px; }
  .fair-schedule { padding-top:18px; }
}
/* 第4稿：LP内の主導線。固定マップの遷移先は決定待ちで既存を維持。 */
:root { --anchor-offset:112px; }
html { scroll-padding-top:0; }
#main,#shops,#memories,#access,#guide,#map,#area-map,#booth-map,#program,.faq details { scroll-margin-top:var(--anchor-offset); }
.home-directory { margin-top:0; }
.home-directory .filters { margin-top:0; }
.shopping-section>.plain-heading { margin-bottom:26px; }
.lp-guide { padding-block:55px 75px; border-top:1px solid var(--line); }
.lp-guide .faq { margin:0; }
.booth-notice { margin-top:35px; flex-wrap:wrap; }
.booth-notice strong { display:block; }
:is(#shops,#memories,#access,#guide,#booth-map):focus-visible { outline:2px solid var(--red); outline-offset:5px; }
@media(max-width:1000px) { :root { --anchor-offset:96px; } }
@media(max-width:680px) { :root { --anchor-offset:88px; } .lp-guide { padding-block:35px 45px; } .shopping-section>.plain-heading { margin-bottom:22px; } }
@media(max-height:500px) and (orientation:landscape) { :root { --anchor-offset:78px; } }

/* 固定マップは朱色の独立ボタン。モバイルの背面帯は設けない。 */
.market-intro h2 span { display:inline-block; }
.market-intro .intro-copy p { max-width:780px; }
.floating-map { background:var(--red); border-color:var(--paper); box-shadow:2px 2px 0 var(--ink); }
.floating-map:hover { background:var(--ink); }
.map-button-icon { color:var(--paper); }
@media(max-width:760px) {
  :root { --dock-space:calc(90px + env(safe-area-inset-bottom)); }
  body { padding-bottom:calc(90px + env(safe-area-inset-bottom)); }
  .map-dock { left:auto; right:calc(16px + env(safe-area-inset-right)); bottom:calc(16px + env(safe-area-inset-bottom)); width:auto; height:auto; padding:0; background:transparent; border:0; }
  .floating-map { width:auto; min-height:56px; height:auto; padding:10px 14px; gap:12px; box-shadow:2px 2px 0 var(--ink); }
  .floating-map>span:nth-child(2) { display:block; }
  .floating-map small { display:block; margin-top:2px; font-size:10px; }
}

/* 第5稿：明朝体への統一、朱色の導入、モバイル3列一覧。 */
.intro-band,.market-intro,.benefits { background:var(--red); color:var(--paper); }
.benefits p,.benefits .feature-icon { color:var(--paper); }
.benefits>div { border-right-color:#fff6; }
.shop-sample-short { display:none; }
@media(max-width:680px) {
  .shop-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px 10px; margin-top:22px; }
  .shop-item { min-width:0; }
  .shop-item .photo-placeholder { aspect-ratio:1; }
  .shop-item .photo-index { font-size:13px; top:3px; left:6px; }
  .shop-item .photo-mark { font-size:11px; padding:0; border:0; letter-spacing:0; transform:none; }
  .shop-item .photo-placeholder small { display:none; }
  .shop-item .shop-info { padding:9px 0 12px; }
  .shop-item .sample-tag { padding:1px 4px; font-size:10px; line-height:1.7; }
  .shop-sample-long { display:none; }
  .shop-sample-short { display:inline; }
  .shop-info h3 { display:block; font-size:13px; line-height:1.65; overflow-wrap:anywhere; }
  .shop-info h3>span { display:none; }
  .shop-item .shop-info p { font-size:11px; line-height:1.6; margin:7px 0 4px; overflow-wrap:anywhere; }
  .shop-item .shop-info small { display:block; font-size:10px; line-height:1.6; margin-top:5px; }
}

.parking-map { display:block; padding-block:35px; border-top:1px solid var(--line); scroll-margin-top:var(--anchor-offset); }
.parking-map>p { font-size:14px; }
.parking-switches { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:25px 0 18px; }
.parking-switches button { text-align:left; padding:14px; border:1px solid var(--line); background:transparent; line-height:1.6; min-height:80px; }
.parking-switches button>span { display:block; font-size:15px; font-weight:700; }
.parking-switches small { display:block; font-size:11px; margin-top:6px; }
.parking-switches [aria-pressed=true] { background:var(--ink); color:var(--paper); border-color:var(--ink); }
.parking-map .geo-caption { min-height:95px; }
.parking-map:focus-visible { outline:2px solid var(--red); outline-offset:5px; }
@media(max-width:680px) { .parking-switches { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; } .parking-switches button { padding:10px; } .parking-switches button>span { font-size:13px; } .parking-map h2 { font-size:26px; } }

/* 第6稿：簡潔な操作部と、一覧から開くお店情報。 */
body { min-height:100svh; display:flex; flex-direction:column; padding-bottom:0; }
main { flex:1; }
.site-header { border-bottom:0; flex-shrink:0; }
.site-footer { padding-bottom:calc(120px + env(safe-area-inset-bottom)); }
.category-list { gap:6px; }
.category-button { font-size:11px; line-height:1.5; padding:7px 10px; min-height:34px; }
.button-link,.text-link { gap:0; }
.text-link { text-decoration:underline; text-underline-offset:5px; }
.shop-dialog-open { overflow:hidden; }
.shop-dialog { width:min(860px,calc(100vw - 40px)); max-height:calc(100dvh - 48px); margin:auto; padding:0; border:1px solid var(--ink); color:var(--ink); background:var(--paper); overflow:auto; overscroll-behavior:contain; }
.shop-dialog::backdrop { background:#201c18b8; }
.shop-dialog { transform-origin:top left; border-radius:0; }
.shop-dialog.is-opening { animation:shop-unfold .58s cubic-bezier(.18,.78,.22,1) both; }
.shop-dialog.is-closing { animation:shop-fold .3s cubic-bezier(.5,0,.75,.4) both; pointer-events:none; }
.shop-dialog.is-opening>div { animation:map-content-in .2s .2s both; }
.shop-dialog.is-closing>div { animation:map-content-out .1s both; }
@keyframes shop-unfold {
 0% { transform:translate(var(--shop-x),var(--shop-y)) scale(var(--shop-sx),var(--shop-sy)); }
 65% { transform:translate(-2px,-2px) scale(1.008,1.012); }
 84% { transform:translate(1px,1px) scale(.999,.997); }
 100% { transform:none; }
}
@keyframes shop-fold {
 from { transform:none; }
 to { transform:translate(var(--shop-x),var(--shop-y)) scale(var(--shop-sx),var(--shop-sy)); }
}
@media(prefers-reduced-motion:reduce) {
 .shop-dialog[open],.shop-dialog[open]>div { animation:none; transform:none; }
}
.shop-dialog-header { display:flex; gap:20px; align-items:center; justify-content:space-between; position:sticky; top:0; background:var(--paper); z-index:1; padding:20px 28px; border-bottom:1px solid var(--line); }
.shop-dialog-header h2 { font-size:26px; line-height:1.5; }
.dialog-close { border:1px solid var(--line); background:var(--paper); min-width:44px; height:44px; padding:0; font:30px/1 var(--sans); flex:none; }
.shop-dialog-body { padding:28px; }
.dialog-detail-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:28px; align-items:start; }
.dialog-detail-grid .photo-placeholder { aspect-ratio:1; }
.dialog-category { margin:18px 0 12px; font-weight:700; font-size:14px; }
.dialog-description { font-size:15px; line-height:1.9; }
.shop-dialog dl { margin:22px 0; font-size:13px; }
.shop-dialog dl>div { display:flex; justify-content:space-between; gap:20px; padding:10px 0; border-block-end:1px solid var(--line); }
.shop-dialog dd { margin:0; }
.dialog-disclosure { color:var(--muted); font-size:11px; line-height:1.8; }
@media(max-width:1000px) { .menu-toggle { min-width:48px; justify-content:center; } }
@media(max-width:680px) {
 .category-button { font-size:11px; padding:6px 8px; min-height:32px; }
 .filters fieldset { margin-top:20px; }
 .shop-dialog { width:calc(100vw - 24px); max-height:calc(100dvh - 24px); }
 .shop-dialog-header { padding:14px 16px; gap:12px; }
 .shop-dialog-header h2 { font-size:21px; }
 .shop-dialog-body { padding:18px; }
 .dialog-detail-grid { grid-template-columns:minmax(0,1fr); gap:18px; }
 .dialog-detail-grid .photo-placeholder { aspect-ratio:1.8; }
 .dialog-category { margin-top:14px; }
 .dialog-description { font-size:14px; }
}

/* 一覧の密度：スマートフォン3列、タブレット4列、広いPC5列。 */
@media(min-width:681px) {
 .shop-item .photo-mark { font-size:16px; padding:6px 10px; }
 .shop-item .photo-placeholder small { font-size:9px; margin-top:14px; }
 .shop-item .shop-info { padding:14px 0; }
 .shop-info h3 { display:block; font-size:17px; overflow-wrap:anywhere; }
}
@media(min-width:681px) and (max-width:1199px) {
 .shop-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:28px 16px; }
 .shop-item .photo-mark { font-size:14px; padding:5px 7px; }
 .shop-item .sample-tag { padding:2px 4px; font-size:9px; }
 .shop-info h3 { font-size:16px; }
}

/* 操作色の統一：主操作は朱色、選択前は朱色の罫線、墨は本文。 */
:root { --red-deep:#a82d1b; --red-tint:#fff2ec; }
.button-link,.search-submit,.dialog-close,.map-dialog-close {
 background:var(--red); border-color:var(--red); color:var(--paper);
}
.button-link:hover,.search-submit:hover,.dialog-close:hover,.map-dialog-close:hover,.floating-map:hover {
 background:var(--red-deep); border-color:var(--red-deep); color:var(--paper);
}
.search-row input { border-color:var(--red); }
.category-button,.map-filters button,.geo-tabs button,.parking-switches button {
 color:var(--red); border-color:var(--red); background:var(--paper);
}
.category-button:hover,.map-filters button:hover,.geo-tabs button:hover,.parking-switches button:hover { background:var(--red-tint); }
.category-button[aria-pressed=true],.map-filters button[aria-pressed=true],.geo-tabs button[aria-pressed=true],.parking-switches button[aria-pressed=true] {
 background:var(--red); border-color:var(--red); color:var(--paper);
}
.reset-button,.text-link,.map-distinction a,.back-to-shops,.guide-basics a { color:var(--red); }
.text-link { border-bottom:0; }
.program-section .text-link { color:var(--paper); }
.shop-item a:hover h3 { color:var(--red); }
:is(button,a,input,summary):focus-visible { outline:2px solid var(--red); outline-offset:4px; }
:is(.site-header,.site-footer,.program-section) :focus-visible { outline-color:var(--paper); }
/* Pointer selection has no extra ring; Tab navigation keeps its focus indicator. */
html[data-input-mode="pointer"] :focus { outline:none!important; }
.map-dialog-open { overflow:hidden; }
.map-dialog-open [data-open-map] { visibility:hidden; }
.shop-dialog { border:2px solid var(--red); }
.map-dialog {
 width:calc(100vw - 48px); height:calc(100dvh - 48px); max-width:none; max-height:none;
 margin:auto; padding:0; border:2px solid var(--red); background:var(--paper); color:var(--ink);
 overflow:hidden; overscroll-behavior:contain; transform-origin:0 0;
}
.map-dialog[open] { display:flex; flex-direction:column; }
.map-dialog.is-opening { animation:map-unfold .68s cubic-bezier(.22,.78,.25,1) both; }
.map-dialog.is-closing { animation:map-fold .34s cubic-bezier(.55,0,.8,.4) both; }
.map-dialog.is-opening>div,.map-dialog.is-opening>p { animation:map-content-in .35s .28s both; }
.map-dialog.is-closing>div,.map-dialog.is-closing>p { animation:map-content-out .1s both; }
.map-dialog::backdrop { background:#201c18ad; animation:map-dim .3s ease both; }
.map-dialog-header { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:8px 18px; flex:none; }
.map-dialog-header h2 { font-size:22px; letter-spacing:.04em; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.map-dialog-close { width:44px; height:44px; flex:none; border:1px solid var(--red); font:30px/1 var(--sans); }
.map-dialog-canvas { flex:1; min-height:0; background:#eeeae0; border-block:1px solid var(--line); }
.map-dialog-canvas iframe { width:100%; height:100%; border:0; display:block; }
.map-dialog-footer { display:flex; gap:12px; justify-content:space-between; padding:12px 24px; font-size:12px; flex:none; }
.map-dialog-footer a { color:var(--red); text-decoration:underline; text-underline-offset:4px; }
@keyframes map-unfold {
 0% { background:var(--red); transform:translate(var(--map-x),var(--map-y)) scale(var(--map-sx),var(--map-sy)); border-radius:0; }
 60% { background:var(--paper); transform:translate(-3px,-4px) scale(1.004,1.01); border-radius:0; }
 82% { transform:translate(1px,2px) scale(.998,.997); border-radius:0; }
 100% { background:var(--paper); transform:none; border-radius:0; }
}
@keyframes map-fold {
 from { background:var(--paper); transform:none; }
 to { background:var(--red); transform:translate(var(--map-x),var(--map-y)) scale(var(--map-sx),var(--map-sy)); }
}
@keyframes map-content-in { from { opacity:0; } to { opacity:1; } }
@keyframes map-content-out { from { opacity:1; } to { opacity:0; } }
@keyframes map-dim { from { opacity:0; } to { opacity:1; } }
@media(max-width:680px) {
 .map-dialog { width:calc(100vw - 16px); height:calc(100dvh - 24px); }
 .map-dialog-header { padding:6px 12px; gap:12px; }
 .map-dialog-header h2 { font-size:18px; }
 .map-dialog-footer { padding:10px 14px; flex-wrap:wrap; font-size:10px; gap:4px 12px; }
}
@media(max-height:480px) {
 .map-dialog-header { padding-block:8px; }
 .map-dialog-header h2 { font-size:18px; }
 .map-dialog-footer { padding-block:8px; }
}
@media(prefers-reduced-motion:reduce) {
 .map-dialog[open],.map-dialog::backdrop,.map-dialog[open]>div,.map-dialog[open]>p { animation:none; transform:none; }
}

/* Shared heading rhythm, based on the shop directory. */
:root { --heading-gap:26px; --heading-size:38px; --section-top:70px; --subheading-gap:12px; }
.plain-heading,.section-heading,.memories-heading,
.shopping-section>.plain-heading,.area-map .plain-heading,.area-map .section-heading,.faq>.section-heading {
 margin-block:0 var(--heading-gap); border:0;
}
.plain-heading h2,.section-heading h2,.memories-heading h2,.footer-top h2 {
 margin:0; padding:0; font-size:var(--heading-size); line-height:1.4; letter-spacing:.025em; border:0; text-decoration:none;
}
.shopping-section,.program-section,.memories-section,.venue-story,.lp-guide { padding-top:var(--section-top); }
.market-intro h2,.detail-copy h2,.guide-basics h2 { margin:0 0 var(--heading-gap); border:0; text-decoration:none; }
.market-intro .intro-copy>p,.footer-description { margin-top:0; }
.footer-top h2 { margin-bottom:var(--heading-gap); }
.lp-guide,.lp-guide .faq,.parking-map,.guide-basics,.faq { border-top:0; }
.lp-guide .faq { padding-top:0; }
/* Anchor destinations receive focus for navigation, without a decorative frame. */
:is(#shops,#memories,#access,#guide,#map,#area-map,#booth-map)[tabindex="-1"]:focus-visible { outline:none; }
.subsection-heading,.search-label,fieldset legend {
 display:block; font-family:var(--sans); font-size:12px; font-weight:700; line-height:1.9;
 letter-spacing:0; margin:0 0 var(--subheading-gap); padding:0; border:0; text-decoration:none;
}
.program-item h3 { font-family:var(--sans); font-size:12px; font-weight:700; line-height:1.9; margin:24px 0 var(--subheading-gap); border:0; }
.area-map { margin:0 0 40px; }
.parking-map { margin:0 0 40px; padding:0; }
.access-methods { margin:0 0 40px; }
.access-method-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:36px; }
.access-method-grid h4 { margin:0 0 12px; font:700 16px/1.6 var(--sans); color:var(--red); }
.access-method-grid p { font-size:14px; }
.access-method-grid .small-note { font-size:12px; margin-top:10px; }
.access-source { margin-top:20px; }
.venue-address { margin-bottom:20px; }
.parking-addresses { margin:24px 0 0; }
.parking-addresses>div { grid-template-columns:minmax(150px,.6fr) 1fr; gap:18px; padding:16px 0; }
.parking-addresses dt { color:var(--ink); font-weight:700; }
.parking-addresses small { display:block; font-size:11px; margin-top:5px; color:var(--muted); }
@media(max-width:680px) { .parking-addresses>div { grid-template-columns:1fr; gap:4px; } }
.access-source a { color:var(--red); text-decoration:underline; text-underline-offset:4px; }
@media(max-width:1000px) { :root { --heading-size:30px; } }
@media(max-width:680px) {
 :root { --heading-gap:22px; --heading-size:28px; --section-top:42px; }
 .access-method-grid { grid-template-columns:1fr; gap:24px; }
 .memories-heading { align-items:center; }
}
@media(max-width:380px) { :root { --heading-size:25px; } }
