:root {
  --paper: #f3efe4;
  --surface: #fffdf7;
  --ink: #102d31;
  --muted: #596b69;
  --line: #c9c8b9;
  --signal: #ef5b3f;
  --lake: #1c6170;
  --moss: #91ad8d;
  --sun: #e6c96b;
  --shadow: 0 18px 42px rgba(16, 45, 49, .12);
  background: var(--paper);
  color: var(--ink);
  font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;
  font-synthesis: none;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--paper); line-height: 1.72; }
a, button { touch-action: manipulation; }
a { color: inherit; text-underline-offset: .2em; }
button { color: inherit; font: inherit; }

.skip-link {
  align-items: center;
  background: var(--ink);
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  color: white;
  display: inline-flex;
  height: 1px;
  left: 0;
  overflow: hidden;
  padding: 0;
  position: absolute;
  white-space: nowrap;
  width: 1px;
  z-index: 30;
}
.skip-link:focus {
  clip: auto;
  clip-path: none;
  height: auto;
  left: 10px;
  min-height: 44px;
  overflow: visible;
  padding: 8px 14px;
  position: fixed;
  top: 10px;
  white-space: normal;
  width: auto;
}

.mast {
  align-items: center;
  border-bottom: 1px solid var(--line);
  display: flex;
  justify-content: space-between;
  min-height: 82px;
  padding: 12px clamp(18px, 5vw, 76px);
}
.brand { align-items: center; display: flex; gap: 12px; min-height: 52px; text-decoration: none; }
.brand-symbol { fill: none; height: 42px; stroke: var(--ink); stroke-linecap: round; stroke-width: 3.2; width: 42px; }
.brand-symbol circle { fill: var(--signal); stroke: none; }
.brand b { display: block; font-size: 1.22rem; letter-spacing: .05em; }
.brand small { color: var(--muted); display: block; font: 800 .58rem/1.35 ui-monospace, monospace; letter-spacing: .14em; }
.mast nav, footer nav { align-items: center; display: flex; flex-wrap: wrap; gap: 8px; }
.mast nav a, footer nav a { align-items: center; display: inline-flex; font-weight: 800; min-height: 44px; padding: 6px 10px; text-decoration: none; }
.mast nav a { border-bottom: 2px solid transparent; transition: border-color .16s ease, color .16s ease; }
.mast nav a:hover, .mast nav a:focus-visible { border-color: var(--signal); color: var(--signal); }

main { min-height: 65vh; }
.overline { color: var(--signal); font: 800 .72rem/1.3 ui-monospace, monospace; letter-spacing: .15em; margin: 0 0 10px; text-transform: uppercase; }
.category-label { color: var(--lake); font-size: .9rem; font-weight: 800; margin: 0; }
.lead { font-size: clamp(1.02rem, 1.5vw, 1.24rem); max-width: 44rem; }

.route-hero {
  background: linear-gradient(120deg, #f3efe4 0 55%, #d9e5d5 55% 100%);
  display: grid;
  gap: clamp(30px, 7vw, 100px);
  grid-template-columns: minmax(0, .95fr) minmax(390px, 1.05fr);
  overflow: hidden;
  padding: clamp(56px, 8vw, 116px) clamp(18px, 7vw, 112px) clamp(46px, 6vw, 86px);
}
.route-hero-copy { align-self: center; }
.route-hero h1, .plain h1, .not-found h1 {
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: clamp(3.15rem, 6.1vw, 6.7rem);
  font-weight: 600;
  letter-spacing: -.05em;
  line-height: 1.03;
  margin: .13em 0 .25em;
}
.route-hero h1 em { color: var(--signal); font-style: normal; }
.button {
  align-items: center;
  border: 1px solid var(--ink);
  cursor: pointer;
  display: inline-flex;
  font-weight: 800;
  gap: 12px;
  justify-content: center;
  min-height: 48px;
  padding: 10px 18px;
  text-decoration: none;
  transition: box-shadow .18s ease, transform .18s ease, background .18s ease;
}
.primary-action { background: var(--ink); color: white; margin-top: 18px; }
.button.ghost { background: transparent; color: var(--ink); }
.button:hover, .button:focus-visible { box-shadow: 5px 5px 0 var(--signal); transform: translate(-2px, -2px); }
.hero-path { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 36px 0 0; padding: 0; }
.hero-path li { align-items: center; border-top: 1px solid var(--ink); display: flex; flex: 1 1 130px; gap: 9px; min-height: 52px; padding: 8px 0; }
.hero-path b { color: var(--signal); font: 800 .8rem ui-monospace, monospace; }
.hero-path span { font-size: .9rem; font-weight: 800; }

.route-hero-map { align-items: end; display: grid; gap: 16px; grid-template-columns: minmax(0, 1fr) 180px; }
.network-board { background: var(--ink); box-shadow: 14px 14px 0 var(--signal); color: #ecf0e5; padding: 18px; }
.network-key { align-items: center; border-bottom: 1px solid rgba(236, 240, 229, .42); display: flex; font-size: .68rem; gap: 14px; justify-content: space-between; letter-spacing: .04em; padding-bottom: 10px; }
.network-key span:first-child { align-items: center; display: inline-flex; font-weight: 800; gap: 7px; }
.key-dot { background: var(--signal); border-radius: 50%; display: inline-block; height: 9px; width: 9px; }
.city-network { display: block; margin: 8px auto 0; max-height: 468px; overflow: visible; width: 100%; }
.network-coast { fill: #16434a; opacity: .72; }
.network-line { fill: none; stroke: rgba(230, 201, 107, .56); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; }
.network-line.east { stroke: rgba(145, 173, 141, .7); }
.network-line.cross { stroke-dasharray: 4 5; }
.network-node { --city: var(--signal); cursor: pointer; }
.network-hit { fill: transparent; stroke: transparent; }
.network-dot { fill: var(--city); stroke: #f3efe4; stroke-width: 3; transition: r .18s ease, fill .18s ease; }
.network-node text { fill: #f7f3e8; font: 800 9px "Hiragino Kaku Gothic ProN", sans-serif; letter-spacing: .02em; pointer-events: none; }
.network-node:hover .network-dot, .network-node:focus .network-dot, .network-node:focus-visible .network-dot { fill: var(--sun); r: 14; }
.network-node:focus-visible { outline: none; }
.network-caption { color: #cdd9cd; font-size: .78rem; margin: 6px 0 0; }
.review-window { background: var(--surface); border-top: 7px solid var(--signal); box-shadow: var(--shadow); color: var(--ink); padding: 18px; }
.review-window > span { color: var(--lake); font-size: .72rem; font-weight: 800; }
.review-window > strong { display: block; font: 800 3.1rem/1 ui-monospace, monospace; margin: 10px 0 18px; }
.review-window dl { margin: 0; }
.review-window dl div { border-top: 1px solid var(--line); padding: 9px 0; }
.review-window dt { color: var(--muted); font-size: .72rem; }
.review-window dd { font-size: .82rem; font-weight: 800; margin: 0; }

.travel-rule { background: var(--sun); display: grid; grid-template-columns: repeat(3, 1fr); }
.travel-rule > div { align-items: flex-start; border-right: 1px solid rgba(16, 45, 49, .3); display: flex; gap: 14px; min-height: 136px; padding: 26px clamp(18px, 4vw, 58px); }
.travel-rule > div:last-child { border-right: 0; }
.travel-rule svg { fill: none; flex: 0 0 38px; height: 38px; stroke: var(--ink); stroke-linecap: round; stroke-width: 3; width: 38px; }
.travel-rule svg circle { fill: var(--signal); stroke: var(--ink); }
.travel-rule b { display: block; font-family: "Yu Mincho", serif; }
.travel-rule p { font-size: .86rem; margin: 5px 0 0; }

.city-explorer, .change-band, .saved-panel, .plain, .city-page, .not-found { padding: clamp(58px, 8vw, 108px) clamp(18px, 7vw, 112px); }
.city-explorer { background: var(--surface); }
.section-head { align-items: end; border-bottom: 2px solid var(--ink); display: flex; gap: 30px; justify-content: space-between; padding-bottom: 24px; }
.section-head h2, .change-band h2, .saved-panel h2, .city-return h2 { font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: clamp(2.1rem, 4.1vw, 4rem); font-weight: 600; letter-spacing: -.035em; line-height: 1.14; margin: 0; }
.section-head > p { color: var(--muted); margin: 0; max-width: 24rem; }
.section-head > p b { color: var(--signal); }
.filter-bar { display: flex; flex-wrap: wrap; gap: 8px; padding: 23px 0; }
.filter { background: transparent; border: 1px solid var(--line); cursor: pointer; font-size: .88rem; font-weight: 800; min-height: 46px; padding: 9px 14px; transition: background .16s ease, color .16s ease, transform .16s ease; }
.filter:hover, .filter:focus-visible { border-color: var(--ink); transform: translateY(-1px); }
.filter.active { background: var(--ink); border-color: var(--ink); color: white; }
.filter span { color: var(--sun); font: 800 .72rem ui-monospace, monospace; margin-left: 4px; }
.city-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.city-card { border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); min-width: 0; }
.city-card:nth-child(3n) { border-right: 0; }
.city-card-link { background: var(--surface); display: block; min-height: 100%; padding: 22px; text-decoration: none; transition: background .2s ease, box-shadow .2s ease, transform .2s ease; }
.city-card-link:hover, .city-card-link:focus-visible { background: #e6eee1; box-shadow: inset 0 6px 0 var(--city); transform: translateY(-3px); }
.city-card header { align-items: center; display: flex; justify-content: space-between; }
.city-sequence { color: var(--city); font: 800 1rem ui-monospace, monospace; }
.city-lane { color: var(--muted); font: 800 .62rem ui-monospace, monospace; letter-spacing: .08em; }
.city-card-title { align-items: center; display: flex; gap: 14px; margin-top: 18px; }
.city-orbit { align-items: center; background: color-mix(in srgb, var(--city) 13%, white); border-radius: 50%; display: inline-flex; flex: 0 0 56px; height: 56px; justify-content: center; }
.city-orbit svg { fill: none; height: 38px; stroke: var(--city); stroke-linecap: round; stroke-width: 3; width: 38px; }
.city-orbit svg circle { fill: var(--city); }
.city-card-title p { color: var(--city); font-size: .76rem; font-weight: 800; margin: 0; }
.city-card h3 { font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: clamp(1.72rem, 2.5vw, 2.55rem); font-weight: 600; letter-spacing: -.035em; line-height: 1.05; margin: 4px 0 0; }
.city-card h3 small { color: var(--muted); font: 500 .66rem sans-serif; letter-spacing: 0; }
.city-summary { font-size: .94rem; min-height: 5.15em; }
.city-card dl { border-top: 1px solid var(--line); margin: 20px 0 0; }
.city-card dl div { border-bottom: 1px solid var(--line); display: grid; gap: 4px; padding: 9px 0; }
.city-card dt { color: var(--muted); font-size: .67rem; font-weight: 800; }
.city-card dd { font-size: .81rem; font-weight: 800; margin: 0; }
.city-card-action { align-items: center; display: flex; font-size: .84rem; font-weight: 800; justify-content: space-between; min-height: 46px; padding-top: 10px; }
.city-card-action b { color: var(--signal); font-size: 1.2rem; }
.filter-empty { border: 1px dashed var(--line); color: var(--muted); padding: 24px; }

.change-band { background: #dce8d9; display: grid; gap: 48px; grid-template-columns: .7fr 1.3fr; }
.change-band article { border-top: 2px solid var(--ink); display: grid; gap: 18px; grid-template-columns: 110px 1fr auto; padding-top: 18px; }
.change-band time { font: 800 .76rem ui-monospace, monospace; }
.change-band article p { color: var(--muted); margin: 5px 0 0; }
.change-band a { align-items: center; display: inline-flex; font-weight: 800; min-height: 44px; }

.saved-panel { background: var(--lake); color: white; display: grid; gap: 42px; grid-template-columns: 1fr minmax(260px, .6fr); }
.saved-panel .overline { color: #f8bd9d; }
.saved-desk { border: 1px solid rgba(255, 255, 255, .45); display: flex; flex-direction: column; padding: 22px; }
.saved-desk > span { display: flex; font-size: .85rem; justify-content: space-between; }
.saved-desk > span b { color: var(--sun); font: 800 1.3rem ui-monospace, monospace; }
.saved-desk ul { display: flex; flex: 1; flex-wrap: wrap; gap: 6px; list-style: none; margin: 18px 0; padding: 0; }
.saved-desk li { border: 1px solid rgba(255, 255, 255, .4); font-size: .82rem; padding: 6px 9px; }
.saved-desk [data-saved-empty] { border: 0; color: #d2e0db; padding-left: 0; }
.saved-desk a { align-items: center; border-top: 1px solid rgba(255, 255, 255, .45); display: flex; font-weight: 800; justify-content: space-between; min-height: 48px; padding-top: 10px; transition: color .16s ease; }
.saved-desk a:hover, .saved-desk a:focus-visible { color: var(--sun); }

.crumb { align-items: center; display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 38px; }
.crumb a { align-items: center; display: inline-flex; font-weight: 800; min-height: 44px; }
.city-hero { align-items: end; border-bottom: 2px solid var(--ink); display: grid; gap: clamp(34px, 8vw, 110px); grid-template-columns: minmax(0, 1fr) minmax(260px, .55fr); padding-bottom: 44px; }
.city-mood { color: var(--city); font-weight: 800; margin: 0; }
.city-hero h1 { color: var(--city); font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: clamp(4rem, 9vw, 8.5rem); font-weight: 600; letter-spacing: -.06em; line-height: .95; margin: .1em 0 .22em; }
.city-hero h1 small { color: var(--muted); font: 500 .18em sans-serif; letter-spacing: 0; }
.city-signal { background: color-mix(in srgb, var(--city) 12%, white); border-top: 7px solid var(--city); padding: 22px; }
.city-signal > span { color: var(--muted); font-size: .74rem; font-weight: 800; }
.city-signal strong { display: block; font-family: "Yu Mincho", serif; font-size: clamp(1.6rem, 3vw, 2.7rem); line-height: 1.28; margin: 10px 0 20px; }
.city-signal p { border-top: 1px solid color-mix(in srgb, var(--city) 30%, transparent); font: 800 .75rem ui-monospace, monospace; margin: 0; padding: 9px 0; }
.journey-steps { display: grid; grid-template-columns: repeat(3, 1fr); list-style: none; margin: 0; padding: 0; }
.journey-steps li { border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); display: grid; gap: 13px; grid-template-columns: 34px 1fr; min-height: 154px; padding: 24px 20px; }
.journey-steps li:last-child { border-right: 0; }
.journey-steps span { color: var(--city); font: 800 .8rem ui-monospace, monospace; }
.journey-steps b { font-family: "Yu Mincho", serif; font-size: 1.16rem; }
.journey-steps p { font-size: .86rem; margin: 6px 0 0; }
.city-detail-grid { display: grid; gap: clamp(42px, 9vw, 130px); grid-template-columns: minmax(0, 1.1fr) minmax(280px, .75fr); padding: 70px 0; }
.preflight header { border-bottom: 2px solid var(--ink); padding-bottom: 20px; }
.preflight h2, .city-actions h2, .plain h2 { font-family: "Yu Mincho", serif; font-size: clamp(1.8rem, 3vw, 3rem); font-weight: 600; line-height: 1.2; margin: 0; }
.preflight header > p:last-child { color: var(--muted); font-size: .9rem; margin: 8px 0 0; }
.check-list { list-style: none; margin: 0; padding: 0; }
.check-list li { border-bottom: 1px solid var(--line); display: grid; gap: 16px; grid-template-columns: 44px 1fr; padding: 26px 0; }
.check-list span { color: var(--city); font: 800 .95rem ui-monospace, monospace; }
.check-list p { font-size: 1.08rem; margin: 0; }
.city-actions { display: grid; gap: 18px; align-content: start; }
.city-actions section { background: var(--surface); border-top: 6px solid var(--city); padding: 24px; }
.fit-list { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; }
.fit-list li { background: color-mix(in srgb, var(--city) 12%, white); border: 1px solid color-mix(in srgb, var(--city) 36%, white); font-size: .84rem; font-weight: 800; padding: 6px 10px; }
.source-desk { background: #e8eee4 !important; }
.source-links { list-style: none; margin: 16px 0; padding: 0; }
.source-links li { border-top: 1px solid var(--line); }
.source-links a { align-items: center; display: flex; font-size: .92rem; font-weight: 800; gap: 8px; justify-content: space-between; min-height: 54px; }
.source-desk > p:last-child { color: var(--muted); font-size: .82rem; margin: 12px 0 0; }
.city-return { align-items: center; background: var(--ink); color: white; display: grid; gap: 28px; grid-template-columns: 1fr auto; padding: clamp(30px, 5vw, 54px); }
.city-return .overline { color: #ffb69e; }
.city-return h2 { max-width: 35rem; }
.city-return p { color: #d7e2d8; margin: 8px 0 0; }
.city-return > div:last-child { display: flex; flex-wrap: wrap; gap: 10px; max-width: 360px; }
.city-return .button { min-width: 144px; }
.city-return .ghost { border-color: white; color: white; }
.action-status { flex-basis: 100%; font-size: .85rem; margin: 0; min-height: 1.6em; }
.next-city { border-top: 2px solid var(--ink); display: flex; justify-content: space-between; margin-top: 58px; padding-top: 14px; }
.next-city a { align-items: center; display: inline-flex; font-weight: 800; min-height: 44px; }

.plain { margin: auto; max-width: 1120px; }
.plain .lead { max-width: 52rem; }
.timeline section { border-top: 1px solid var(--line); display: grid; gap: 18px; grid-template-columns: 120px 90px 1fr; padding: 24px 0; }
.timeline time { font: 800 .78rem ui-monospace, monospace; }
.timeline span, .state { color: var(--signal); font-weight: 800; }
.timeline h2 { margin: 0; }
.timeline p { color: var(--muted); margin: 4px 0; }
.text-link { align-items: center; display: inline-flex; font-weight: 800; min-height: 44px; margin-top: 18px; }
.source-grid, .policy-columns { display: grid; gap: 14px; grid-template-columns: repeat(3, 1fr); margin-top: 40px; }
.source-grid section, .policy-columns section { background: var(--surface); border-top: 6px solid var(--ink); padding: 24px; }
.source-grid h2, .policy-columns h2 { font-family: "Yu Mincho", serif; }
.source-grid a { align-items: center; display: inline-flex; font-weight: 800; min-height: 44px; }
.state.ready { color: #267452; }
.state.pending { color: #9a5700; }
.state.off { color: #874142; }

[data-theme="festivals"] { --theme: #c94b34; }
[data-theme="dramas"] { --theme: #80538b; }
[data-theme="healing"] { --theme: #34766a; }
[data-theme="small-cities"] { --theme: #3e6794; }
[data-theme="food"] { --theme: #a85a1f; }

.theme-explorer, .theme-index, .theme-page, .guide-page, .saved-page {
  padding: clamp(58px, 8vw, 108px) clamp(18px, 7vw, 112px);
}
.theme-explorer { background: #e7e2d5; }
.theme-route-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); margin-top: 34px; }
.theme-route { border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); border-top: 7px solid var(--theme); grid-column: span 2; min-width: 0; }
.theme-route:nth-child(-n+2) { grid-column: span 3; }
.theme-route a { background: var(--surface); display: flex; flex-direction: column; min-height: 330px; padding: 26px; text-decoration: none; transition: background .18s ease, box-shadow .18s ease, transform .18s ease; }
.theme-route a:hover, .theme-route a:focus-visible { background: color-mix(in srgb, var(--theme) 9%, white); box-shadow: inset 0 5px 0 var(--theme); transform: translateY(-3px); }
.theme-route header, .guide-card header, .card-foot { align-items: center; display: flex; justify-content: space-between; }
.theme-route header span, .guide-card header span { color: var(--theme); font: 800 1rem ui-monospace, monospace; }
.theme-route header b, .guide-card header b { color: var(--muted); font: 800 .66rem ui-monospace, monospace; letter-spacing: .08em; }
.theme-route h3 { color: var(--theme); font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: clamp(2rem, 3.5vw, 3.35rem); font-weight: 600; letter-spacing: -.04em; line-height: 1.08; margin: 40px 0 12px; }
.theme-route p { color: var(--muted); font-size: .94rem; margin: 0; }
.card-foot { border-top: 1px solid var(--line); font-size: .84rem; font-weight: 800; margin-top: auto; min-height: 52px; padding-top: 14px; }
.card-foot strong { color: var(--theme); font-size: 1.25rem; }

.search-bridge { align-items: start; background: var(--ink); color: white; display: grid; gap: 46px; grid-template-columns: .75fr 1.25fr; padding: clamp(48px, 7vw, 82px) clamp(18px, 7vw, 112px); }
.search-bridge .overline { color: #ffb69e; }
.search-bridge h2 { font-family: "Yu Mincho", serif; font-size: clamp(2rem, 4vw, 3.8rem); font-weight: 600; line-height: 1.15; margin: 0; }
.search-bridge ol { list-style: none; margin: 0; padding: 0; }
.search-bridge li { border-top: 1px solid rgba(255,255,255,.42); display: grid; gap: 14px; grid-template-columns: minmax(155px,.65fr) 1fr; padding: 18px 0; }
.search-bridge li b { color: var(--sun); }
.search-bridge li span { color: #d7e2d8; }
.search-bridge > a { align-items: center; display: inline-flex; font-weight: 800; grid-column: 2; min-height: 44px; }

.index-hero { border-bottom: 2px solid var(--ink); padding-bottom: 42px; }
.index-hero h1, .theme-hero h1, .guide-hero h1 {
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: clamp(3rem, 7vw, 6.5rem);
  font-weight: 600;
  letter-spacing: -.055em;
  line-height: 1.02;
  margin: .12em 0 .28em;
}
.theme-index .theme-route-grid { margin-top: 48px; }
.method-note { background: var(--ink); color: white; display: grid; gap: 30px; grid-template-columns: .7fr 1.3fr; margin-top: 52px; padding: clamp(28px,5vw,54px); }
.method-note h2 { font-family: "Yu Mincho", serif; font-size: clamp(1.8rem,3vw,3rem); margin: 0; }
.method-note ul { display: grid; gap: 0; list-style: none; margin: 0; padding: 0; }
.method-note li { border-top: 1px solid rgba(255,255,255,.35); padding: 12px 0; }

.theme-page, .guide-page { --city: var(--theme); }
.theme-hero { border-bottom: 2px solid var(--ink); display: grid; gap: clamp(34px,7vw,100px); grid-template-columns: minmax(0,1.2fr) minmax(260px,.55fr); padding-bottom: 48px; }
.theme-hero .overline, .guide-hero .overline { color: var(--theme); }
.theme-hero h1 { color: var(--theme); }
.theme-hero aside { align-self: end; background: color-mix(in srgb, var(--theme) 10%, white); border-top: 7px solid var(--theme); padding: 24px; }
.theme-hero aside > span, .guide-signal > span { color: var(--muted); font-size: .74rem; font-weight: 800; }
.theme-hero aside strong { display: block; font-family: "Yu Mincho", serif; font-size: 1.45rem; line-height: 1.4; margin: 12px 0 20px; }
.theme-hero aside p { border-top: 1px solid var(--line); font: 800 .76rem ui-monospace, monospace; margin: 0; padding-top: 10px; }

.guide-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); margin-top: 42px; }
.guide-card { border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); min-width: 0; }
.guide-card:nth-child(3n) { border-right: 0; }
.guide-card > a { background: var(--surface); display: flex; flex-direction: column; min-height: 100%; padding: 24px; text-decoration: none; transition: background .18s ease, transform .18s ease; }
.guide-card > a:hover, .guide-card > a:focus-visible { background: color-mix(in srgb, var(--theme) 9%, white); box-shadow: inset 0 5px 0 var(--theme); transform: translateY(-3px); }
.guide-card h3 { color: var(--theme); font-family: "Yu Mincho", serif; font-size: clamp(1.55rem,2.3vw,2.4rem); font-weight: 600; letter-spacing: -.035em; line-height: 1.18; margin: 28px 0 10px; }
.guide-card > a > p { color: var(--muted); font-size: .9rem; }
.guide-card dl { border-top: 1px solid var(--line); margin: 16px 0; }
.guide-card dl div { display: grid; gap: 8px; grid-template-columns: 70px 1fr; padding: 8px 0; }
.guide-card dt { color: var(--muted); font-size: .72rem; font-weight: 800; }
.guide-card dd { font-size: .8rem; font-weight: 800; margin: 0; }
.festival-state { align-items: center; align-self: start; border: 1px solid currentColor; display: inline-flex; font-size: .74rem; font-weight: 800; min-height: 32px; padding: 4px 9px; }
.festival-state.current { color: #1e704d; }
.festival-state.upcoming { color: #8e5600; }
.festival-state.ended { color: #7d4a4a; }

.guide-hero { align-items: end; border-bottom: 2px solid var(--ink); display: grid; gap: clamp(36px,8vw,110px); grid-template-columns: minmax(0,1fr) minmax(280px,.55fr); padding-bottom: 48px; }
.guide-hero h1 { color: var(--theme); font-size: clamp(2.75rem,6.3vw,6.4rem); }
.hangul-title { color: var(--muted); font-size: 1rem; font-weight: 800; letter-spacing: .04em; }
.guide-signal { background: color-mix(in srgb, var(--theme) 9%, white); border-top: 7px solid var(--theme); padding: 24px; }
.guide-signal dl { margin: 14px 0; }
.guide-signal dl div { border-top: 1px solid color-mix(in srgb, var(--theme) 28%, white); padding: 9px 0; }
.guide-signal dt { color: var(--muted); font-size: .7rem; }
.guide-signal dd { font-size: .88rem; font-weight: 800; margin: 0; }
.guide-steps { margin-bottom: 58px; }

.query-desk { background: var(--ink); color: white; margin-block: 58px; padding: clamp(28px,5vw,58px); }
.query-desk .overline { color: #ffb69e; }
.query-desk h2 { font-family: "Yu Mincho", serif; font-size: clamp(2rem,4vw,3.8rem); font-weight: 600; line-height: 1.16; margin: 0; }
.query-desk header > p:last-child { color: #cdd9cd; }
.query-grid { display: grid; gap: 1px; grid-template-columns: repeat(2,minmax(0,1fr)); margin-top: 30px; }
.query-grid section { background: #173c41; border-top: 5px solid var(--theme); padding: 24px; }
.query-grid span { color: var(--sun); display: block; font-size: .74rem; font-weight: 800; margin-bottom: 12px; }
.query-grid code { color: white; display: block; font-family: inherit; font-size: clamp(1.12rem,2vw,1.6rem); font-weight: 800; overflow-wrap: anywhere; }
.query-grid p { color: #cdd9cd; font-size: .84rem; margin: 12px 0 0; }
.handoff-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
.query-desk .primary-action { background: var(--sun); border-color: var(--sun); color: var(--ink); margin-top: 0; }
.query-desk .ghost { border-color: white; color: white; }
.guide-detail-grid { display: grid; gap: clamp(42px,9vw,130px); grid-template-columns: minmax(0,1.1fr) minmax(280px,.75fr); padding-bottom: 70px; }
.guide-actions { align-content: start; display: grid; gap: 18px; }
.guide-actions > section { background: var(--surface); border-top: 6px solid var(--theme); padding: 24px; }
.guide-actions h2 { font-family: "Yu Mincho", serif; font-size: clamp(1.7rem,2.6vw,2.6rem); font-weight: 600; margin: 0; }
.related-city-links { display: grid; margin-top: 15px; }
.related-city-links a { border-top: 1px solid var(--line); display: flex; flex-direction: column; justify-content: center; min-height: 68px; text-decoration: none; }
.related-city-links a:hover b, .related-city-links a:focus-visible b { color: var(--theme); }
.related-city-links span { color: var(--muted); font-size: .76rem; }
.city-theme-links { border-top: 2px solid var(--ink); margin-bottom: 70px; padding-top: 55px; }
.city-theme-links .guide-grid { margin-top: 30px; }

.saved-page { min-height: 70vh; }
.saved-library { background: var(--surface); border-top: 8px solid var(--signal); margin-top: 46px; padding: clamp(24px,5vw,54px); }
.saved-library > header { align-items: end; border-bottom: 2px solid var(--ink); display: flex; justify-content: space-between; padding-bottom: 18px; }
.saved-library h2 { font-family: "Yu Mincho", serif; font-size: clamp(1.8rem,3vw,3rem); margin: 0; }
.saved-library-empty { color: var(--muted); padding: 25px 0; }
.saved-library-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); }
.saved-library-item { border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); min-width: 0; padding: 18px; }
.saved-library-item > span { color: var(--theme,var(--signal)); font-size: .7rem; font-weight: 800; }
.saved-library-item a { display: flex; flex-direction: column; justify-content: center; min-height: 68px; text-decoration: none; }
.saved-library-item b { font-family: "Yu Mincho", serif; font-size: 1.25rem; }
.saved-library-item small { color: var(--muted); margin-top: 4px; }
.saved-library-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 28px; }
.saved-library-actions .primary-action { margin-top: 0; }
.saved-library-actions .action-status { width: 100%; }
.saved-library-actions button:disabled { cursor: not-allowed; opacity: .5; }
.research-sources { background: #e8eee4; border-top: 7px solid var(--lake); margin-top: 36px; padding: 28px; }
.research-sources h2 { margin: 0; }
.research-sources > p { color: var(--muted); font-size: .84rem; }
.not-found { text-align: center; }
.not-found p { margin-inline: auto; max-width: 35rem; }

.living-tools { background: #cfddd6; padding: clamp(58px, 8vw, 108px) clamp(18px, 7vw, 112px); }
.living-tool-grid { display: grid; gap: 14px; grid-template-columns: repeat(2,minmax(0,1fr)); margin-top: 32px; }
.living-tool { background: var(--surface); border-top: 8px solid var(--signal); display: flex; flex-direction: column; min-height: 330px; padding: clamp(24px,4vw,44px); text-decoration: none; transition: box-shadow .18s ease, transform .18s ease; }
.living-tool.atlas-tool { border-color: var(--lake); }
.living-tool:hover, .living-tool:focus-visible { box-shadow: 9px 9px 0 var(--ink); transform: translate(-3px,-3px); }
.living-tool > span { color: var(--signal); font: 800 .72rem/1.3 ui-monospace,monospace; letter-spacing: .12em; }
.living-tool.atlas-tool > span { color: var(--lake); }
.living-tool h3 { font-family: "Yu Mincho",serif; font-size: clamp(2.1rem,4vw,4rem); font-weight: 600; letter-spacing: -.04em; line-height: 1.1; margin: 38px 0 12px; }
.living-tool p { color: var(--muted); max-width: 34rem; }
.living-tool strong { border-top: 1px solid var(--line); margin-top: auto; padding-top: 18px; }

.live-festival-page, .atlas-page { padding: clamp(46px,7vw,94px) clamp(18px,6vw,88px); }
.live-tool-hero { align-items: end; border-bottom: 2px solid var(--ink); display: grid; gap: clamp(36px,7vw,96px); grid-template-columns: minmax(0,1.15fr) minmax(280px,.55fr); padding-bottom: 48px; }
.live-tool-hero h1 { color: var(--signal); font-family: "Yu Mincho",serif; font-size: clamp(3rem,7vw,6.6rem); font-weight: 600; letter-spacing: -.055em; line-height: 1.02; margin: .12em 0 .28em; }
.atlas-hero h1 { color: var(--lake); }
.freshness-card { background: var(--surface); border-top: 7px solid var(--signal); padding: 24px; }
.freshness-card > span { color: var(--muted); display: block; font-size: .72rem; font-weight: 800; }
.freshness-card > strong { display: block; font-family: "Yu Mincho",serif; font-size: 2rem; margin: 10px 0 20px; }
.freshness-card dl { margin: 0; }
.freshness-card dl div { border-top: 1px solid var(--line); padding: 9px 0; }
.freshness-card dt { color: var(--muted); font-size: .7rem; }
.freshness-card dd { font-size: .82rem; font-weight: 800; margin: 0; }

.festival-controls { background: var(--ink); color: white; display: grid; gap: 1px; grid-template-columns: minmax(0,1.4fr) minmax(270px,.6fr); margin-top: 42px; }
.festival-controls form { display: grid; gap: 14px; grid-template-columns: repeat(3,minmax(0,1fr)); padding: clamp(24px,4vw,42px); }
.festival-controls label, .atlas-record-panel label, .atlas-map-panel label { display: grid; font-size: .76rem; font-weight: 800; gap: 6px; }
.festival-controls select, .atlas-record-panel select, .atlas-record-panel input, .atlas-record-panel textarea, .atlas-map-panel select { background: white; border: 1px solid var(--line); border-radius: 0; color: var(--ink); font: inherit; min-height: 48px; padding: 8px 10px; width: 100%; }
.festival-controls form .button { align-self: end; background: var(--sun); border-color: var(--sun); color: var(--ink); margin: 0; }
.nearby-consent { background: #173c41; border-left: 1px solid rgba(255,255,255,.25); padding: clamp(24px,4vw,42px); }
.nearby-consent .overline { color: #ffb69e; }
.nearby-consent h2 { font-family: "Yu Mincho",serif; font-size: 2rem; margin: 0; }
.nearby-consent p:not(.overline) { color: #cfddd6; font-size: .85rem; }
.nearby-consent .button { border-color: white; color: white; width: 100%; }
.festival-results { margin-top: 70px; }
.live-festival-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); margin-top: 32px; }
.live-festival-card { background: var(--surface); border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); border-top: 6px solid var(--signal); display: flex; flex-direction: column; min-width: 0; padding: 22px; }
.live-festival-card:nth-child(3n) { border-right: 0; }
.live-festival-card header { align-items: center; display: flex; gap: 10px; justify-content: space-between; }
.live-festival-card header b { color: var(--muted); font-size: .72rem; }
.live-festival-card h2 { font-family: "Yu Mincho",serif; font-size: clamp(1.45rem,2.4vw,2.4rem); font-weight: 600; letter-spacing: -.03em; line-height: 1.2; margin: 25px 0 8px; }
.festival-dates { color: var(--signal); font: 800 .78rem ui-monospace,monospace; }
.live-festival-card dl { border-top: 1px solid var(--line); margin: 12px 0; }
.live-festival-card dl div { display: grid; gap: 8px; grid-template-columns: 48px 1fr; padding: 7px 0; }
.live-festival-card dt { color: var(--muted); font-size: .7rem; }
.live-festival-card dd { font-size: .78rem; margin: 0; overflow-wrap: anywhere; }
.festival-facets { display: flex; flex-wrap: wrap; gap: 5px; list-style: none; margin: 4px 0 20px; padding: 0; }
.festival-facets li { background: #e8eee4; border: 1px solid var(--line); font-size: .7rem; font-weight: 800; padding: 4px 7px; }
.festival-card-actions { display: grid; gap: 8px; margin-top: auto; }
.festival-card-actions .button { margin: 0; width: 100%; }
.live-source-fallback, .live-empty { background: var(--surface); border: 1px dashed var(--line); grid-column: 1/-1; padding: 30px; }
.source-service-handoff { background: #dce8d9; display: grid; gap: 40px; grid-template-columns: 1fr minmax(270px,.5fr); margin-top: 70px; padding: clamp(28px,5vw,56px); }
.source-service-handoff h2 { font-family: "Yu Mincho",serif; font-size: clamp(1.8rem,3.5vw,3.3rem); font-weight: 600; line-height: 1.2; margin: 0; }
.source-service-handoff header > p:last-child { color: var(--muted); }
.source-service-handoff > * { min-width: 0; }
.source-service-handoff > div { display: grid; }
.source-service-handoff a { align-items: center; border-top: 1px solid var(--ink); display: flex; font-weight: 800; justify-content: space-between; min-height: 58px; text-decoration: none; }

.atlas-scoreboard { background: var(--ink); color: white; display: grid; grid-template-columns: repeat(3,1fr); }
.atlas-scoreboard > div { border-right: 1px solid rgba(255,255,255,.28); display: flex; flex-direction: column; justify-content: space-between; min-height: 140px; padding: 18px; }
.atlas-scoreboard > div:last-child { border-right: 0; }
.atlas-scoreboard span { color: #cdd9cd; font-size: .7rem; font-weight: 800; }
.atlas-scoreboard strong { color: var(--sun); font: 800 clamp(1.7rem,3vw,2.7rem) ui-monospace,monospace; }
.atlas-scoreboard strong b { color: inherit; }
.atlas-contract-strip { background: var(--sun); display: grid; grid-template-columns: repeat(3,1fr); margin-top: 42px; }
.atlas-contract-strip > div { border-right: 1px solid rgba(16,45,49,.3); display: grid; padding: 18px 22px; }
.atlas-contract-strip > div:last-child { border-right: 0; }
.atlas-contract-strip span { font-size: .68rem; font-weight: 800; }
.atlas-contract-strip b { font: 800 1.2rem ui-monospace,monospace; margin: 5px 0; }
.atlas-contract-strip small { color: var(--muted); }
.atlas-workspace { align-items: start; display: grid; gap: 18px; grid-template-columns: minmax(0,1.2fr) minmax(300px,.55fr); margin-top: 18px; }
.atlas-map-panel { background: #dce8d9; border: 1px solid var(--line); padding: clamp(18px,3vw,30px); }
.atlas-map-panel > header { align-items: end; display: flex; gap: 20px; justify-content: space-between; }
.atlas-map-panel h2 { font-family: "Yu Mincho",serif; font-size: clamp(1.8rem,3vw,3rem); margin: 0; }
.atlas-map-panel > header label { min-width: 210px; }
.trip-atlas-svg { background: #c8dad5; border: 1px solid rgba(16,45,49,.2); display: block; margin-top: 22px; max-height: 720px; width: 100%; }
.atlas-cell { cursor: pointer; fill: #f7f2e4; fill-rule: evenodd; stroke: #6b7c78; stroke-linejoin: round; stroke-width: .7; transition: fill .15s ease,stroke-width .15s ease; }
.atlas-cell[data-level="1"], .atlas-legend [data-level="1"] i { fill: #d6cfb4; background: #d6cfb4; }
.atlas-cell[data-level="2"], .atlas-legend [data-level="2"] i { fill: #e6c96b; background: #e6c96b; }
.atlas-cell[data-level="3"], .atlas-legend [data-level="3"] i { fill: #ef8c63; background: #ef8c63; }
.atlas-cell[data-level="4"], .atlas-legend [data-level="4"] i { fill: #4f8c83; background: #4f8c83; }
.atlas-cell[data-level="5"], .atlas-legend [data-level="5"] i { fill: #173c41; background: #173c41; }
.atlas-cell:hover, .atlas-cell:focus-visible, .atlas-cell.selected { outline: none; stroke: var(--signal); stroke-width: 3; }
.atlas-legend { display: flex; flex-wrap: wrap; gap: 8px 14px; padding-top: 16px; }
.atlas-legend span { align-items: center; display: inline-flex; font-size: .72rem; font-weight: 800; gap: 6px; }
.atlas-legend i { background: #f7f2e4; border: 1px solid #6b7c78; height: 13px; width: 13px; }
.atlas-source-line { color: var(--muted); font-size: .7rem; margin-bottom: 0; }
.atlas-record-panel { background: var(--surface); border-top: 7px solid var(--lake); padding: 24px; position: sticky; top: 14px; }
.atlas-region-picker { border-bottom: 1px solid var(--line); padding-bottom: 20px; }
.atlas-empty-detail { color: var(--muted); padding-block: 26px; }
.atlas-detail header { border-bottom: 1px solid var(--line); margin: 22px 0; padding-bottom: 16px; }
.atlas-detail h2 { font-family: "Yu Mincho",serif; font-size: clamp(2rem,3vw,3.2rem); line-height: 1.1; margin: 0; }
.atlas-detail header > p:last-child { color: var(--muted); margin: 5px 0 0; }
.atlas-detail fieldset { border: 0; margin: 20px 0; padding: 0; }
.atlas-detail legend { font-size: .76rem; font-weight: 800; margin-bottom: 7px; }
.atlas-levels { display: grid; grid-template-columns: repeat(3,1fr); }
.atlas-levels button { background: transparent; border: 1px solid var(--line); cursor: pointer; min-height: 52px; padding: 5px; }
.atlas-levels button + button { border-left: 0; }
.atlas-levels button:nth-child(4) { border-left: 1px solid var(--line); }
.atlas-levels button:nth-child(n+4) { border-top: 0; }
.atlas-levels button[aria-pressed="true"] { background: var(--ink); color: white; }
.atlas-levels span { color: var(--signal); display: block; font: 800 .68rem ui-monospace,monospace; }
.atlas-record-facts { display: grid; grid-template-columns: repeat(3,1fr); margin: 16px 0; }
.atlas-record-facts div { border: 1px solid var(--line); padding: 9px; }
.atlas-record-facts div + div { border-left: 0; }
.atlas-record-facts dt { color: var(--muted); font-size: .65rem; }
.atlas-record-facts dd { font-size: .76rem; font-weight: 800; margin: 0; }
.atlas-detail .button { margin: 8px 0 16px; width: 100%; }
.atlas-record-panel .action-status { border-top: 1px solid var(--line); color: var(--muted); margin-top: 18px; padding-top: 14px; }
.atlas-backup { background: var(--ink); color: white; display: grid; gap: 40px; grid-template-columns: 1fr minmax(300px,.7fr); margin-top: 18px; padding: clamp(28px,5vw,54px); }
.atlas-backup .overline { color: #ffb69e; }
.atlas-backup h2 { font-family: "Yu Mincho",serif; font-size: clamp(2rem,4vw,3.8rem); font-weight: 600; line-height: 1.15; margin: 0; }
.atlas-backup header > p:last-child { color: #cdd9cd; }
.atlas-backup > div { align-content: center; display: grid; gap: 8px; }
.atlas-backup .button { margin: 0; width: 100%; }
.atlas-backup .ghost { border-color: white; color: white; }
.button.danger { background: transparent; border-color: #ffb69e; color: #ffcfbf; }
.file-button { position: relative; }
.file-button input { inset: 0; opacity: 0; position: absolute; width: 100%; }
.atlas-handoff { background: #e8eee4; }

.atlas-first-hero { background: var(--ink); color: #edf2e8; display: grid; gap: clamp(34px,7vw,96px); grid-template-columns: minmax(0,1.1fr) minmax(300px,.55fr); padding: clamp(58px,9vw,124px) clamp(18px,7vw,112px); }
.atlas-first-hero h1 { font-family: "Yu Mincho","Hiragino Mincho ProN",serif; font-size: clamp(3.2rem,7vw,7.4rem); font-weight: 600; letter-spacing: -.055em; line-height: .98; margin: .18em 0 .28em; max-width: 11ch; }
.atlas-first-hero h1 em { color: #ff9e7f; display: block; font-style: normal; }
.atlas-first-hero .category-label { color: var(--sun); }
.atlas-first-hero .lead { color: #cdd9cd; }
.atlas-first-hero .button.ghost { border-color: #edf2e8; color: #edf2e8; }
.hero-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 10px; }
.atlas-first-proof { align-self: end; border: 1px solid rgba(237,242,232,.4); border-top: 8px solid var(--sun); padding: clamp(22px,4vw,38px); }
.atlas-first-proof > strong { color: var(--sun); display: block; font: 800 clamp(5.5rem,11vw,9rem)/.82 ui-monospace,monospace; }
.atlas-first-proof > span { display: block; font-weight: 800; margin: 20px 0 28px; }
.atlas-first-proof dl { margin: 0; }
.atlas-first-proof dl div { border-top: 1px solid rgba(237,242,232,.25); display: flex; justify-content: space-between; padding: 10px 0; }
.atlas-first-proof dt { color: #aebfba; }
.atlas-first-proof dd { color: var(--sun); font-weight: 800; margin: 0; }
.atlas-first-proof p { color: #aebfba; font-size: .75rem; margin-bottom: 0; }

.national-atlas-preview { margin: clamp(34px,6vw,78px) clamp(18px,5vw,76px); }
.national-atlas-preview > header { align-items: end; display: flex; gap: 30px; justify-content: space-between; margin-bottom: 18px; }
.national-atlas-preview h2 { font-family: "Yu Mincho",serif; font-size: clamp(2.2rem,4.7vw,5rem); font-weight: 600; letter-spacing: -.04em; line-height: 1.08; margin: 0; max-width: 12ch; }
.national-atlas-preview label,.region-search { display: grid; font-size: .76rem; font-weight: 800; gap: 7px; min-width: min(360px,100%); }
.national-atlas-preview select,.region-search input { background: white; border: 1px solid var(--ink); border-radius: 0; color: var(--ink); font: inherit; min-height: 52px; padding: 8px 12px; width: 100%; }
.national-atlas-stage { background: #d9e5d5; border: 1px solid var(--line); display: grid; grid-template-columns: minmax(340px,.8fr) minmax(380px,1.2fr); min-height: 720px; }
.national-atlas-map { border-right: 1px solid var(--line); display: grid; padding: clamp(12px,2.5vw,28px); }
.national-atlas-map svg { align-self: center; display: block; max-height: 670px; width: 100%; }
.national-atlas-map > p { color: var(--muted); font-size: .7rem; margin: 0; }
.atlas-preview-cell { cursor: pointer; fill: #fffdf7; stroke: #70807c; stroke-linejoin: round; stroke-width: .75; transition: fill .15s ease,stroke-width .15s ease; }
.atlas-preview-cell:hover,.atlas-preview-cell.selected { fill: var(--sun); stroke: var(--signal); stroke-width: 2.8; }
.atlas-inset-frame { fill: rgba(255,253,247,.35); pointer-events: none; stroke: rgba(16,45,49,.42); stroke-dasharray: 3 3; stroke-width: 1; }
.atlas-inset-label { fill: var(--muted); font: 800 9px sans-serif; pointer-events: none; }
.atlas-preview-story { display: grid; grid-template-rows: minmax(280px,1.05fr) minmax(0,.95fr); margin: 0; min-width: 0; }
.atlas-preview-story > img { display: block; height: 100%; object-fit: cover; width: 100%; }
.atlas-preview-story > div { background: var(--surface); padding: clamp(24px,4vw,48px); }
.atlas-preview-story h3 { font-family: "Yu Mincho",serif; font-size: clamp(2.3rem,4vw,4.3rem); line-height: 1; margin: 0 0 18px; }
.atlas-preview-story h3 small { color: var(--muted); display: block; font: 600 .85rem sans-serif; margin-top: 8px; }
.atlas-preview-story > div > p:not(.overline) { display: -webkit-box; max-height: 5.4em; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.atlas-preview-story dl { display: grid; grid-template-columns: 1fr 1fr; margin: 22px 0 0; }
.atlas-preview-story dl div { border: 1px solid var(--line); padding: 10px; }
.atlas-preview-story dl div + div { border-left: 0; }
.atlas-preview-story dt { color: var(--muted); font-size: .68rem; }
.atlas-preview-story dd { font-size: .82rem; font-weight: 800; margin: 3px 0 0; }
.photo-credit { color: var(--muted); display: block; font-size: .72rem; line-height: 1.65; margin-top: 13px; overflow-wrap: anywhere; }
.photo-credit a { color: var(--lake); font-weight: 800; }
.text-credit { color: var(--muted); display: block; font-size: .7rem; line-height: 1.65; margin: 9px 0; overflow-wrap: anywhere; }
.text-credit a { color: var(--lake); font-weight: 800; }
.attraction-card-grid > .text-credit { background: #eef2e9; border: 1px solid var(--line); grid-column: 1 / -1; margin: 0; padding: 12px 16px; }
.photo-credit-ledger { padding: clamp(42px,7vw,92px) clamp(18px,6vw,88px); }
.photo-credit-ledger .index-hero { display: grid; gap: 12px 34px; grid-template-columns: minmax(0,1fr) minmax(280px,.42fr); }
.photo-credit-ledger .index-hero > :not(.region-search) { grid-column: 1; }
.photo-credit-ledger .region-search { align-self: end; grid-column: 2; grid-row: 1 / span 4; }
.photo-credit-count { color: var(--muted); font-size: .82rem; margin: 30px 0 12px; }
.photo-credit-count b { color: var(--signal); font: 800 1.3rem ui-monospace,monospace; }
.photo-credit-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
.photo-credit-card { background: var(--surface); border: 1px solid var(--line); display: grid; grid-template-columns: minmax(150px,240px) 1fr; min-width: 0; scroll-margin-top: 20px; }
.photo-credit-card:nth-child(even) { border-left: 0; }
.photo-credit-card img { aspect-ratio: 3/2; display: block; height: 100%; object-fit: cover; width: 100%; }
.photo-credit-card > div { min-width: 0; padding: clamp(16px,2vw,24px); }
.photo-credit-card > div > p { color: var(--muted); font: 800 .65rem ui-monospace,monospace; margin: 0; }
.photo-credit-card h2 { font-family: "Yu Mincho",serif; font-size: clamp(1.45rem,2.4vw,2.2rem); line-height: 1.12; margin: 6px 0 14px; }
.photo-credit-card h2 small { color: var(--muted); display: block; font: 600 .68rem sans-serif; margin-top: 5px; }
.photo-credit-card dl { margin: 0; }
.photo-credit-card dl div { border-top: 1px solid var(--line); display: grid; gap: 8px; grid-template-columns: 46px 1fr; padding: 7px 0; }
.photo-credit-card dt { color: var(--muted); font-size: .68rem; font-weight: 800; }
.photo-credit-card dd { font-size: .72rem; margin: 0; min-width: 0; overflow-wrap: anywhere; }
.photo-credit-card dd a { color: var(--lake); font-weight: 800; }
.photo-credit-card:target { box-shadow: inset 0 0 0 4px var(--signal); position: relative; z-index: 1; }
.national-atlas-preview > footer { background: var(--ink); color: white; display: flex; flex-wrap: wrap; gap: 8px 24px; justify-content: space-between; margin: 0; padding: 18px 22px; }
.national-atlas-preview > footer a { font-weight: 800; }
.national-atlas-preview > footer a,.atlas-profile-actions a { align-items: center; display: inline-flex; min-height: 44px; }
.national-atlas-preview > footer span { color: #cdd9cd; font-size: .76rem; }

.region-index,.region-page { padding: clamp(42px,7vw,92px) clamp(18px,6vw,88px); }
.region-index-hero { display: grid; gap: 24px; grid-template-columns: 1fr minmax(280px,.4fr); }
.region-index-hero .overline,.region-index-hero h1,.region-index-hero .lead { grid-column: 1; }
.region-index-hero h1 { font-family: "Yu Mincho",serif; font-size: clamp(3rem,6vw,6.3rem); font-weight: 600; letter-spacing: -.05em; line-height: 1.03; margin: 0; }
.region-index-hero .region-search { align-self: end; grid-column: 2; grid-row: 1 / span 3; }
.region-groups { display: grid; gap: 24px; margin-top: 56px; }
.region-groups > section { border-top: 8px solid var(--ink); }
.region-groups > section > header { align-items: baseline; display: grid; grid-template-columns: 100px 1fr auto; padding: 16px 0; }
.region-groups h2 { font-family: "Yu Mincho",serif; font-size: clamp(2rem,4vw,3.6rem); margin: 0; }
.region-groups header p,.region-groups header span { color: var(--muted); font-size: .74rem; font-weight: 800; }
.region-card-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); }
.region-card { border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); min-width: 0; }
.region-card a { display: block; min-height: 100%; text-decoration: none; }
.region-card img { aspect-ratio: 3/2; display: block; height: auto; object-fit: cover; width: 100%; }
.region-card div { background: var(--surface); min-height: 142px; padding: 15px; }
.region-card p { color: var(--muted); font-size: .67rem; margin: 0; }
.region-card h3 { font-family: "Yu Mincho",serif; font-size: 1.42rem; line-height: 1.1; margin: 7px 0; }
.region-card h3 small { color: var(--muted); display: block; font: 500 .65rem sans-serif; margin-top: 5px; }
.region-card span { color: var(--lake); font-size: .7rem; }
.region-card a:hover div,.region-card a:focus-visible div { background: #e4ecdf; box-shadow: inset 0 5px var(--signal); }
.region-search-empty { background: var(--surface); border: 1px solid var(--line); padding: 30px; text-align: center; }

.region-hero { display: grid; gap: clamp(28px,6vw,80px); grid-template-columns: minmax(360px,1.1fr) minmax(320px,.9fr); }
.region-hero figure,.city-hero.rich figure { margin: 0; }
.region-hero figure img,.city-hero.rich figure img { aspect-ratio: 3/2; display: block; height: auto; object-fit: cover; width: 100%; }
.region-hero figcaption,.city-hero.rich figcaption { color: var(--muted); font-size: .68rem; padding-top: 7px; }
.region-hero figcaption a,.city-hero.rich figcaption a,.guide-photo-story figcaption a,.guide-region-photo figcaption a,.region-sources a { align-items: center; display: inline-flex; justify-content: center; min-height: 44px; min-width: 44px; overflow-wrap: anywhere; }
.region-hero h1 { font-family: "Yu Mincho",serif; font-size: clamp(3rem,6vw,6.4rem); font-weight: 600; letter-spacing: -.05em; line-height: .98; margin: .18em 0 .08em; }
.region-hero h1 small { color: var(--muted); display: block; font: 600 .2em sans-serif; letter-spacing: 0; margin-top: 12px; }
.region-english { color: var(--lake); font: 700 .8rem ui-monospace,monospace; }
.region-key-facts,.city-stats { display: grid; grid-template-columns: 1fr 1fr; margin: 28px 0 0; }
.region-key-facts div,.city-stats div { border: 1px solid var(--line); padding: 13px; }
.region-key-facts div + div,.city-stats div + div { border-left: 0; }
.region-key-facts dt,.city-stats dt { color: var(--muted); font-size: .67rem; }
.region-key-facts dd,.city-stats dd { margin: 4px 0 0; }
.region-key-facts strong { display: block; font: 800 1.55rem ui-monospace,monospace; }
.region-key-facts small,.city-stats small { color: var(--muted); display: block; font-size: .66rem; }
.region-discovery,.city-signatures { background: var(--surface); border-top: 8px solid var(--signal); display: grid; gap: clamp(30px,6vw,80px); grid-template-columns: 1fr minmax(300px,.6fr); margin-top: 46px; padding: clamp(24px,5vw,54px); }
.region-discovery h2,.city-signatures h2 { font-family: "Yu Mincho",serif; font-size: clamp(2rem,4vw,3.6rem); line-height: 1.15; margin: 0; }
.region-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.region-discovery aside,.city-signatures aside { border-left: 1px solid var(--line); padding-left: clamp(20px,4vw,50px); }
.region-discovery li,.city-signatures li { border-bottom: 1px solid var(--line); font-weight: 800; padding: 9px 0; }
.region-discovery aside p:last-child,.city-signatures aside p:last-child { color: var(--muted); font-size: .74rem; }
.city-signatures ol { list-style: none; padding: 0; }
.city-signatures ol span { color: var(--signal); display: inline-block; font: 800 .75rem ui-monospace,monospace; width: 34px; }
.region-record-cta { background: var(--ink); color: white; display: grid; gap: 30px; grid-template-columns: 1fr auto; margin-top: 18px; padding: clamp(28px,5vw,52px); }
.region-record-cta h2 { font-family: "Yu Mincho",serif; font-size: clamp(2rem,4vw,3.8rem); margin: 0; }
.region-record-cta p:not(.overline) { color: #cdd9cd; }
.region-record-cta .button { align-self: center; background: var(--sun); color: var(--ink); }
.region-sources { border: 1px solid var(--line); margin-top: 18px; padding: clamp(22px,4vw,42px); }
.region-sources li { padding: 6px 0; }

.city-hero.rich { align-items: start; grid-template-columns: minmax(340px,1fr) minmax(320px,.9fr); }
.city-hero.rich h1 { font-size: clamp(3.2rem,6vw,6.5rem); }
.city-stats dd { font-weight: 800; }

.atlas-region-photo { margin: 20px -24px 0; }
.atlas-region-photo img { aspect-ratio: 3/2; display: block; object-fit: cover; width: 100%; }
.atlas-region-photo figcaption { color: var(--muted); font-size: .64rem; padding: 6px 24px; }
.atlas-region-summary { color: var(--muted); font-size: .84rem; }
.atlas-profile-facts { display: grid; grid-template-columns: 1fr 1fr; }
.atlas-profile-facts div { border: 1px solid var(--line); padding: 8px; }
.atlas-profile-facts div + div { border-left: 0; }
.atlas-profile-facts dt { color: var(--muted); font-size: .62rem; }
.atlas-profile-facts dd { font-size: .72rem; font-weight: 800; margin: 3px 0 0; }
.atlas-profile-actions { display: flex; flex-wrap: wrap; gap: 5px 14px; margin: 14px 0 22px; }
.atlas-profile-actions a { font-size: .75rem; font-weight: 800; }
.atlas-photo-journal { border-top: 4px solid var(--sun); margin-top: 20px; padding-top: 18px; }
.atlas-photo-journal > header { align-items: end; display: flex; justify-content: space-between; }
.atlas-photo-journal h3 { font-family: "Yu Mincho",serif; font-size: 1.45rem; margin: 0; }
.atlas-photo-journal > p { color: var(--muted); font-size: .7rem; }
.journal-grid { display: grid; gap: 6px; grid-template-columns: repeat(2,minmax(0,1fr)); margin-top: 12px; }
.journal-grid figure { background: white; border: 1px solid var(--line); margin: 0; }
.journal-grid img { aspect-ratio: 1; display: block; object-fit: cover; width: 100%; }
.journal-grid figcaption { align-items: center; display: flex; font-size: .62rem; justify-content: space-between; padding: 5px; }
.journal-grid button { background: transparent; border: 0; color: #a33326; cursor: pointer; min-height: 44px; min-width: 44px; }
.journal-empty { color: var(--muted); font-size: .7rem; grid-column: 1/-1; }

.region-province-browser { background: var(--surface); border: 1px solid var(--line); margin: 0 clamp(18px,7vw,112px) 28px; padding: clamp(22px,4vw,42px); }
.region-province-browser > header { align-items: end; display: grid; gap: 28px; grid-template-columns: .7fr 1fr; }
.region-province-browser h2 { font-family: "Yu Mincho",serif; font-size: clamp(2rem,4vw,3.5rem); line-height: 1.08; margin: 0; }
.region-province-browser > header > p { color: var(--muted); margin: 0; max-width: 62ch; }
.region-province-directory { display: grid; gap: 7px; grid-template-columns: repeat(4,minmax(0,1fr)); margin: 28px 0 18px; }
.region-province-directory button { align-items: center; background: var(--paper); border: 1px solid var(--line); color: var(--ink); cursor: pointer; display: grid; gap: 2px 10px; grid-template-columns: 1fr auto; min-height: 74px; padding: 12px; text-align: left; }
.region-province-directory button:hover,.region-province-directory button.active { background: var(--ink); color: var(--paper); }
.region-province-directory span { font-family: "Yu Mincho",serif; font-size: 1.05rem; font-weight: 800; }
.region-province-directory small { color: inherit; grid-column: 1; opacity: .72; }
.region-province-directory b { color: var(--signal); grid-column: 2; grid-row: 1/3; }
.region-browser-hint { border: 1px dashed var(--line); color: var(--muted); margin: 0 clamp(18px,7vw,112px) 40px; padding: 24px; text-align: center; }

.guide-photo-story { display: grid; gap: 8px; grid-template-columns: 1.35fr .65fr; margin: 48px clamp(18px,7vw,112px); }
.guide-photo-story figure,.guide-region-photo { background: var(--ink); color: var(--paper); margin: 0; }
.guide-photo-story > div { display: grid; gap: 8px; grid-template-rows: repeat(2,minmax(0,1fr)); }
.guide-photo-story > div figure { min-height: 0; }
.guide-photo-story img { display: block; height: calc(100% - 32px); min-height: 0; object-fit: cover; width: 100%; }
.guide-photo-story figcaption,.guide-region-photo figcaption { font-size: .66rem; line-height: 1.2; padding: 9px 12px; }
.guide-photo-story a,.guide-region-photo a { align-items: center; color: inherit; display: inline-flex; min-height: 44px; }
.guide-region-photo { margin: 48px clamp(18px,7vw,112px); }
.guide-region-photo img { aspect-ratio: 2.1/1; display: block; object-fit: cover; width: 100%; }
.guide-local-depth { display: grid; gap: 64px; margin: 60px clamp(18px,7vw,112px); }
.guide-local-depth > .section-head > p { line-height: 1.85; max-width: 72ch; }
.editorial-trip-facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); margin: 0; }
.editorial-trip-facts div { border: 1px solid var(--line); min-height: 136px; padding: 20px; }
.editorial-trip-facts div + div { border-left: 0; }
.editorial-trip-facts dt { color: var(--signal); font-size: .7rem; font-weight: 800; letter-spacing: .12em; }
.editorial-trip-facts dd { line-height: 1.65; margin: 10px 0 0; }

.attraction-card-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
.attraction-card { border: 1px solid var(--line); display: flex; flex-direction: column; min-height: 330px; min-width: 0; padding: clamp(20px,3vw,34px); }
.attraction-card:nth-child(even) { border-left: 0; }
.attraction-card:nth-child(n+3) { border-top: 0; }
.attraction-card header { align-items: center; display: flex; justify-content: space-between; }
.attraction-card header span { color: var(--signal); font: 800 .75rem ui-monospace,monospace; }
.attraction-card header b { color: var(--muted); font-size: .68rem; letter-spacing: .08em; }
.attraction-card h3 { font-family: "Yu Mincho",serif; font-size: clamp(1.55rem,2.4vw,2.35rem); line-height: 1.15; margin: 36px 0 16px; overflow-wrap: anywhere; }
.attraction-card h3 small { display: block; font-family: sans-serif; font-size: .72rem; margin-top: 8px; }
.attraction-card p { line-height: 1.85; }
.attraction-evidence { align-items: center; display: flex; flex-wrap: wrap; gap: 7px; margin-top: auto; padding-top: 22px; }
.evidence-chip { background: rgba(16,45,49,.08); border-radius: 999px; color: var(--ink); font-size: .67rem; font-weight: 800; line-height: 1.3; padding: 7px 10px; }
.source-checked-at { color: var(--muted); font-size: .66rem; margin-left: auto; }
.attraction-card footer { border: 0; display: flex; flex-wrap: wrap; gap: 8px 18px; grid-template-columns: none; padding: 10px 0 0; }
.attraction-card footer a { align-items: center; display: inline-flex; font-size: .7rem; font-weight: 800; min-height: 44px; }

.food-story-grid { display: grid; gap: 10px; grid-template-columns: repeat(3,minmax(0,1fr)); }
.food-story-card { background: #fff8e8; border-top: 6px solid var(--sun); display: flex; flex-direction: column; min-height: 360px; min-width: 0; padding: clamp(20px,3vw,32px); }
.food-story-card.food-story-signature { background: #f3e8c7; border-top-color: var(--signal); }
.food-story-card.food-story-context { background: #eef3ed; border-top-color: #517570; }
.food-story-card.food-story-menu { border-top-color: var(--sun); }
.food-scope-badge { align-self: flex-start; background: var(--ink); color: var(--paper); font-size: .66rem; font-weight: 800; letter-spacing: .06em; padding: 7px 9px; }
.food-story-card .food-menu-original { font-family: sans-serif; font-size: clamp(1.35rem,2vw,1.85rem); line-height: 1.25; margin: 20px 0 8px; overflow-wrap: anywhere; }
.food-name-ja { color: var(--signal); font-size: .76rem; font-weight: 800; letter-spacing: .04em; margin: 0 0 18px; }
.food-shop-facts { border-block: 1px solid rgba(16,45,49,.18); display: grid; grid-template-columns: minmax(0,1fr) minmax(0,.7fr); margin: 0 0 18px; padding: 10px 0; }
.food-shop-facts div { min-width: 0; padding: 7px 10px 7px 0; }
.food-shop-facts dt { color: var(--muted); font-size: .65rem; font-weight: 800; }
.food-shop-facts dd { font-size: .78rem; line-height: 1.5; margin: 3px 0 0; overflow-wrap: anywhere; }
.food-shop-facts .food-address { grid-column: 1/-1; }
.food-story-card > p { line-height: 1.8; }
.food-story-card small { border-top: 1px solid rgba(16,45,49,.2); color: var(--muted); display: block; line-height: 1.65; margin-top: 22px; padding-top: 14px; }
.food-card-actions { border: 0; display: flex; flex-wrap: wrap; gap: 8px 16px; grid-template-columns: none; margin-top: auto; padding: 18px 0 0; }
.food-card-actions a { align-items: center; display: inline-flex; font-size: .7rem; font-weight: 800; min-height: 44px; overflow-wrap: anywhere; }
.region-signature-foods { margin: 64px clamp(18px,7vw,112px) 0; }
.region-signature-foods > p:not(.overline) { color: var(--muted); line-height: 1.8; max-width: 72ch; }
.region-signature-foods > h2 { font-family: "Yu Mincho",serif; font-size: clamp(2rem,4vw,3.6rem); line-height: 1.1; margin: 10px 0 14px; }
.regional-food-context { align-items: start; background: rgba(16,45,49,.06); display: grid; gap: 24px; grid-template-columns: 1fr 1fr; margin-top: 28px; padding: clamp(20px,3vw,32px); }
.regional-food-context h3 { font-family: "Yu Mincho",serif; font-size: clamp(1.35rem,2vw,2rem); margin: 8px 0; }
.regional-food-context p { color: var(--muted); line-height: 1.7; margin: 0; }
.regional-food-context ul { display: grid; gap: 8px; list-style: none; margin: 0; padding: 0; }
.regional-food-context a { align-items: center; background: var(--paper); display: flex; font-weight: 800; justify-content: space-between; min-height: 44px; padding: 10px 14px; }

.one-day-story,.region-day { background: var(--ink); color: var(--paper); display: grid; gap: clamp(28px,5vw,70px); grid-template-columns: .55fr 1fr; padding: clamp(28px,5vw,60px); }
.one-day-story h2,.region-day h2 { font-family: "Yu Mincho",serif; font-size: clamp(2rem,4vw,3.8rem); line-height: 1.08; margin: 0; }
.editorial-day-plan { list-style: none; margin: 0; padding: 0; }
.editorial-day-plan li { border-top: 1px solid rgba(255,255,255,.28); display: grid; gap: 20px; grid-template-columns: 88px 1fr; padding: 20px 0; }
.editorial-day-plan li:first-child { border-top: 0; padding-top: 0; }
.editorial-day-plan span { color: var(--sun); font-size: .72rem; font-weight: 800; }
.editorial-day-plan h3 { font-family: "Yu Mincho",serif; font-size: 1.3rem; margin: 0 0 8px; }
.editorial-day-plan p { color: rgba(255,255,255,.76); line-height: 1.7; margin: 0; }

.region-fit-band { align-items: center; background: var(--sun); display: grid; gap: 36px; grid-template-columns: .65fr 1fr; margin-top: 46px; padding: clamp(24px,5vw,54px); }
.region-fit-band h2 { font-family: "Yu Mincho",serif; font-size: clamp(2rem,4vw,3.5rem); margin: 0; }
.region-fit-band ul { display: grid; gap: 8px; list-style: none; margin: 0; padding: 0; }
.region-fit-band li { background: rgba(255,255,255,.55); border-left: 4px solid var(--signal); padding: 13px 16px; }
.region-attractions,.region-food-stories,.region-day { margin-top: 64px; }
.region-attractions,.region-food-stories { padding-inline: clamp(18px,7vw,112px); }
.region-day > div > p { color: rgba(255,255,255,.76); line-height: 1.8; }
.region-day .season-note { border-top: 1px solid rgba(255,255,255,.25); padding-top: 18px; }
.city-signatures.rich { display: block; }
.city-signatures.rich > div:first-child { margin-bottom: 30px; }
.city-signatures.rich .attraction-card-grid { background: var(--paper); }
.city-food-depth,.city-day-story { margin-top: 54px; padding-inline: clamp(18px,7vw,112px); }
.city-day-story { padding: clamp(28px,5vw,60px); }

footer { border-top: 1px solid var(--line); display: grid; gap: 25px; grid-template-columns: 1fr auto; padding: 38px clamp(18px, 7vw, 112px); }
footer p { color: var(--muted); margin: 4px 0; }
footer > small { color: var(--muted); grid-column: 1 / -1; }
:focus-visible { outline: 3px solid var(--signal); outline-offset: 3px; }
[hidden] { display: none !important; }

@media (max-width: 900px) {
  .route-hero { grid-template-columns: 1fr; }
  .route-hero-map { grid-template-columns: minmax(0, 1fr) 180px; }
  .city-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .theme-route-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .theme-route, .theme-route:nth-child(-n+2) { grid-column: auto; }
  .guide-grid, .saved-library-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .guide-card:nth-child(3n) { border-right: 1px solid var(--line); }
  .guide-card:nth-child(2n) { border-right: 0; }
  .city-card:nth-child(3n) { border-right: 1px solid var(--line); }
  .city-card:nth-child(2n) { border-right: 0; }
  .travel-rule { grid-template-columns: 1fr; }
  .travel-rule > div { border-bottom: 1px solid rgba(16, 45, 49, .3); border-right: 0; min-height: 0; }
  .live-festival-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .live-festival-card:nth-child(3n) { border-right: 1px solid var(--line); }
  .live-festival-card:nth-child(2n) { border-right: 0; }
  .atlas-workspace { grid-template-columns: minmax(0,1fr) 300px; }
  .national-atlas-stage { grid-template-columns: minmax(300px,.85fr) minmax(340px,1.15fr); }
  .region-card-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
}

@media (max-width: 700px) {
  .mast { align-items: flex-start; flex-wrap: wrap; gap: 8px; }
  .mast nav { display: grid; gap: 0; grid-template-columns: repeat(5, minmax(0, 1fr)); width: 100%; }
  .mast nav a { border: 1px solid var(--line); font-size: .76rem; justify-content: center; padding: 6px 4px; }
  .mast nav a + a { border-left: 0; }
  .route-hero { background: linear-gradient(180deg, var(--paper) 0 48%, #d9e5d5 48% 100%); padding-top: 54px; }
  .route-hero h1 { font-size: clamp(3rem, 15vw, 4.7rem); }
  .route-hero-map { grid-template-columns: 1fr; }
  .review-window { margin-inline: 24px; }
  .network-board { box-shadow: 8px 8px 0 var(--signal); }
  .section-head, .change-band, .saved-panel, .city-hero, .city-detail-grid, .city-return, .search-bridge, .method-note, .theme-hero, .guide-hero, .guide-detail-grid, .live-tool-hero, .festival-controls, .source-service-handoff, .atlas-workspace, .atlas-backup, .atlas-first-hero, .national-atlas-stage, .region-index-hero, .region-hero, .region-discovery, .city-signatures, .region-record-cta { grid-template-columns: 1fr; }
  .search-bridge > a { grid-column: 1; }
  .search-bridge li { grid-template-columns: 1fr; }
  .theme-route-grid, .guide-grid, .saved-library-grid, .query-grid { grid-template-columns: 1fr; }
  .theme-route a { min-height: 280px; }
  .guide-card, .guide-card:nth-child(3n) { border-right: 0; }
  .saved-library > header { align-items: flex-start; flex-direction: column; }
  .saved-library-item { border-right: 0; }
  .section-head > p { margin-top: 16px; }
  .city-card-grid { grid-template-columns: 1fr; }
  .city-card, .city-card:nth-child(3n) { border-right: 0; }
  .city-summary { min-height: 0; }
  .change-band { gap: 24px; }
  .change-band article { grid-template-columns: 1fr; }
  .change-band a { justify-content: space-between; }
  .journey-steps { grid-template-columns: 1fr; }
  .journey-steps li { border-right: 0; min-height: 0; }
  .city-return > div:last-child { max-width: none; }
  .city-return .button { flex: 1 1 150px; }
  .next-city, footer { grid-template-columns: 1fr; display: grid; }
  footer nav { margin-top: 8px; }
  .source-grid, .policy-columns { grid-template-columns: 1fr; }
  .timeline section { grid-template-columns: 1fr; }
  .living-tool-grid, .live-festival-grid { grid-template-columns: 1fr; }
  .living-tool { min-height: 270px; }
  .festival-controls form { grid-template-columns: 1fr; }
  .nearby-consent { border-left: 0; border-top: 1px solid rgba(255,255,255,.25); }
  .live-festival-card, .live-festival-card:nth-child(3n) { border-right: 0; }
  .atlas-scoreboard, .atlas-contract-strip { grid-template-columns: 1fr; }
  .atlas-scoreboard > div, .atlas-contract-strip > div { border-bottom: 1px solid rgba(255,255,255,.24); border-right: 0; min-height: 95px; }
  .atlas-contract-strip > div { border-bottom-color: rgba(16,45,49,.25); }
  .atlas-map-panel > header { align-items: stretch; flex-direction: column; }
  .atlas-map-panel > header label { min-width: 0; }
  .atlas-record-panel { position: static; }
  .national-atlas-preview > header { align-items: stretch; flex-direction: column; }
  .national-atlas-map { border-bottom: 1px solid var(--line); border-right: 0; max-height: 620px; }
  .atlas-preview-story { grid-template-rows: auto auto; }
  .atlas-preview-story > img { aspect-ratio: 3/2; }
  .region-index-hero .overline,.region-index-hero h1,.region-index-hero .lead,.region-index-hero .region-search { grid-column: 1; grid-row: auto; }
  .region-card-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .region-groups > section > header { grid-template-columns: 72px 1fr auto; }
  .region-discovery aside,.city-signatures aside { border-left: 0; border-top: 1px solid var(--line); padding-left: 0; padding-top: 22px; }
  .region-record-cta .button { width: 100%; }
  .region-province-browser > header,.guide-photo-story,.one-day-story,.region-day,.region-fit-band,.regional-food-context { grid-template-columns: 1fr; }
  .region-province-directory { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .guide-photo-story > div { grid-template-columns: repeat(2,minmax(0,1fr)); grid-template-rows: auto; }
  .guide-photo-story img { aspect-ratio: 3/2; height: auto; }
  .guide-region-photo img { aspect-ratio: 3/2; }
  .editorial-trip-facts,.food-story-grid { grid-template-columns: 1fr; }
  .editorial-trip-facts div + div { border-left: 1px solid var(--line); border-top: 0; }
  .attraction-card-grid { grid-template-columns: minmax(0,1fr); }
  .attraction-card,.attraction-card:nth-child(even),.attraction-card:nth-child(n+3) { border: 1px solid var(--line); border-top: 0; min-height: 0; }
  .attraction-card:first-child { border-top: 1px solid var(--line); }
  .food-story-card { min-height: 0; }
  .region-day,.one-day-story { margin-inline: 0; }
  .photo-credit-ledger .index-hero { grid-template-columns: 1fr; }
  .photo-credit-ledger .index-hero > :not(.region-search),.photo-credit-ledger .region-search { grid-column: 1; grid-row: auto; }
  .photo-credit-grid { grid-template-columns: 1fr; }
  .photo-credit-card:nth-child(even) { border-left: 1px solid var(--line); }
}

@media (max-width: 360px) {
  .route-hero h1 { font-size: 2.85rem; }
  .hero-path { display: grid; grid-template-columns: 1fr; }
  .primary-action { width: 100%; }
  .review-window { margin-inline: 0; }
  .network-key { align-items: flex-start; flex-direction: column; }
  .mast nav { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .mast nav a:nth-child(4) { border-left: 1px solid var(--line); }
  .atlas-first-hero h1 { font-size: 3.15rem; }
  .national-atlas-preview { margin-inline: 12px; }
  .national-atlas-map { padding: 5px; }
  .region-card-grid { grid-template-columns: 1fr; }
  .region-groups > section > header { grid-template-columns: 1fr auto; }
  .region-groups header p { grid-column: 1/-1; }
  .region-key-facts,.city-stats,.atlas-preview-story dl,.atlas-profile-facts { grid-template-columns: 1fr; }
  .region-key-facts div + div,.city-stats div + div,.atlas-preview-story dl div + div,.atlas-profile-facts div + div { border-left: 1px solid var(--line); border-top: 0; }
  .region-province-directory,.guide-photo-story > div { grid-template-columns: 1fr; }
  .editorial-day-plan li { grid-template-columns: 1fr; }
  .food-shop-facts { grid-template-columns: 1fr; }
  .food-shop-facts .food-address { grid-column: auto; }
  .photo-credit-card { grid-template-columns: 1fr; }
  .photo-credit-card img { height: auto; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}

/* Decision → plan → visit loop */
.freshness-strip { align-items: center; background: #e8efe4; border-bottom: 1px solid var(--line); display: flex; gap: 14px; justify-content: center; min-height: 44px; padding: 6px clamp(16px,4vw,64px); }
.freshness-strip strong { border: 1px solid currentColor; font-size: .68rem; letter-spacing: .08em; padding: 4px 8px; text-transform: uppercase; }
.freshness-strip p { color: var(--muted); font-size: .75rem; margin: 0; }
.freshness-strip a { font-size: .75rem; font-weight: 800; margin-left: auto; }
.freshness-strip[data-freshness="due"] { background: #fff2c8; }
.freshness-strip[data-freshness="stale"],.freshness-strip[data-freshness="blocked"] { background: #ffe0d5; }

.decision-page { padding-bottom: 72px; }
.mobile-break { display: none; }
.decision-hero { background: var(--ink); color: var(--paper); display: grid; gap: clamp(28px,6vw,90px); grid-template-columns: minmax(0,1.35fr) minmax(280px,.65fr); padding: clamp(46px,8vw,110px) clamp(24px,7vw,110px); }
.decision-hero h1 { font-family: "Yu Mincho",serif; font-size: clamp(3rem,7vw,7rem); letter-spacing: -.06em; line-height: .98; margin: 12px 0 26px; }
.decision-hero .lead { color: #d7e0d5; max-width: 710px; }
.decision-hero ol { align-self: end; counter-reset: none; list-style: none; margin: 0; padding: 0; }
.decision-hero li { align-items: center; border-top: 1px solid rgba(255,255,255,.28); display: grid; gap: 14px; grid-template-columns: 54px 1fr; min-height: 74px; }
.decision-hero li b { color: var(--sun); font: 800 1.45rem ui-monospace,monospace; }
.decision-workspace { display: grid; grid-template-columns: minmax(0,1.45fr) minmax(270px,.55fr); }
.decision-form { background: var(--surface); min-width: 0; padding: clamp(28px,6vw,78px); }
.decision-form fieldset { border: 0; margin: 0; min-width: 0; padding: 0; }
.decision-form legend { font: 800 clamp(1.4rem,3vw,2.3rem) "Yu Mincho",serif; margin-bottom: 22px; }
.decision-form legend span,.decision-refiners label > span { color: var(--signal); display: block; font: 800 .7rem ui-monospace,monospace; letter-spacing: .12em; margin-bottom: 6px; }
.decision-theme-grid { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); }
.decision-theme-choice { cursor: pointer; min-width: 0; position: relative; }
.decision-theme-choice input { inset: 0; opacity: 0; position: absolute; }
.decision-theme-choice span { border: 1px solid var(--line); display: flex; flex-direction: column; gap: 9px; min-height: 150px; padding: 18px; transition: background .15s ease,color .15s ease; }
.decision-theme-choice + .decision-theme-choice span { border-left: 0; }
.decision-theme-choice b { font-family: "Yu Mincho",serif; font-size: 1.15rem; }
.decision-theme-choice small { color: var(--muted); line-height: 1.55; }
.decision-theme-choice input:checked + span { background: var(--ink); color: var(--paper); }
.decision-theme-choice input:checked + span small { color: #d7e0d5; }
.decision-theme-choice input:focus-visible + span { outline: 3px solid var(--signal); outline-offset: 3px; position: relative; z-index: 1; }
.decision-refiners { display: grid; gap: 14px; grid-template-columns: repeat(2,minmax(0,1fr)); margin-top: 22px; }
.decision-refiners label { font-size: .8rem; font-weight: 800; }
.decision-refiners select { min-height: 52px; width: 100%; }
.decision-privacy { color: var(--muted); font-size: .78rem; margin: 20px 0 0; }
.decision-method { background: #dce8d9; border-left: 1px solid var(--line); padding: clamp(28px,5vw,60px); }
.decision-method h2 { font-family: "Yu Mincho",serif; font-size: 2rem; }
.decision-method li { border-top: 1px solid rgba(16,45,49,.24); padding: 13px 0; }
.decision-method a { display: inline-flex; font-weight: 800; margin-top: 18px; min-height: 44px; }
.decision-output { padding: clamp(42px,7vw,92px) clamp(18px,5vw,72px); }
.decision-output > header { align-items: end; display: flex; gap: 20px; justify-content: space-between; margin-bottom: 24px; }
.decision-output h2 { font-family: "Yu Mincho",serif; font-size: clamp(2.2rem,4vw,4.2rem); margin: 5px 0 0; }
.decision-output > header > p { color: var(--muted); max-width: 440px; }
.decision-result-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); }
.decision-empty { align-items: center; border: 1px solid var(--line); display: flex; gap: 18px; grid-column: 1/-1; min-height: 150px; padding: 26px; }
.decision-empty b { color: var(--signal); font: 800 2rem ui-monospace,monospace; }
.decision-result-card { background: var(--surface); border: 1px solid var(--line); min-width: 0; }
.decision-result-card + .decision-result-card { border-left: 0; }
.decision-result-card figure { margin: 0; }
.decision-result-card figure img { aspect-ratio: 3/2; display: block; object-fit: cover; width: 100%; }
.decision-result-card figcaption { color: var(--muted); font-size: .66rem; padding: 7px 12px; }
.decision-result-card > div { padding: 20px; }
.decision-result-card h2 { font-size: 1.55rem; margin: 8px 0 12px; }
.decision-result-card h2 a { text-decoration: none; }
.decision-why { min-height: 96px; }
.decision-result-card dl div { border-top: 1px solid var(--line); display: grid; gap: 8px; grid-template-columns: 86px 1fr; padding: 9px 0; }
.decision-result-card dt { color: var(--muted); font-size: .7rem; }
.decision-result-card dd { font-size: .78rem; font-weight: 700; margin: 0; }
.decision-mini-plan { border-top: 1px solid var(--line); display: grid; gap: 0; list-style: none; margin: 14px 0; padding: 0; }
.decision-mini-plan li { display: grid; gap: 10px; grid-template-columns: 58px minmax(0,1fr); padding: 10px 0; }
.decision-mini-plan li + li { border-top: 1px dashed var(--line); }
.decision-mini-plan strong { color: var(--signal); font: 800 .68rem ui-monospace,monospace; letter-spacing: .05em; }
.decision-mini-plan span { font-size: .76rem; line-height: 1.55; }
.decision-freshness { color: var(--muted); font-size: .7rem; }
.decision-actions { display: grid; gap: 8px; }
.decision-actions .button { margin: 0; width: 100%; }
.decision-next { align-items: center; background: var(--signal); color: white; display: flex; gap: 30px; justify-content: space-between; margin: 0 clamp(18px,5vw,72px); padding: clamp(28px,5vw,58px); }
.decision-next h2 { font-family: "Yu Mincho",serif; font-size: clamp(1.8rem,3vw,3rem); margin: 0 0 8px; }
.decision-next .button { background: var(--sun); color: var(--ink); flex: 0 0 auto; margin: 0; }

.region-stage-desk { background: #eef3e9; border: 1px solid var(--line); margin: 0 clamp(18px,5vw,72px) clamp(36px,6vw,70px); padding: clamp(20px,4vw,38px); }
.atlas-detail .region-stage-desk { margin: 20px 0; padding: 16px; }
.region-stage-desk > header { align-items: end; display: flex; gap: 18px; justify-content: space-between; }
.region-stage-desk h2 { font-family: "Yu Mincho",serif; font-size: clamp(1.5rem,2.5vw,2.4rem); margin: 4px 0; }
.region-stage-desk > header > strong { background: var(--ink); color: white; padding: 7px 12px; }
.region-stage-actions { display: grid; gap: 8px; grid-template-columns: repeat(4,minmax(0,1fr)); margin-top: 18px; }
.region-stage-actions > button,.region-stage-actions > a { align-items: center; background: var(--surface); border: 1px solid var(--ink); color: var(--ink); cursor: pointer; display: flex; font-weight: 800; justify-content: center; min-height: 48px; padding: 9px 12px; text-align: center; text-decoration: none; }
.region-stage-actions > button[aria-pressed="true"] { background: var(--ink); color: white; }
.region-stage-actions > button:disabled,.region-stage-actions input:disabled { cursor: not-allowed; opacity: .48; }
.region-stage-actions label { font-size: .68rem; font-weight: 800; }
.region-stage-actions input { min-height: 34px; width: 100%; }
.region-stage-actions .region-stage-clear { border-color: #9d5f50; color: #783828; }
.atlas-cell.stage-candidate { fill: #f7f2e4; stroke: var(--signal); stroke-dasharray: 5 3; stroke-width: 2.2; }
.atlas-cell.stage-planned { fill: #fff7d9; stroke: #a66d00; stroke-dasharray: 1 2; stroke-width: 3; }
.atlas-cell.stage-visited { stroke-dasharray: none; }

.saved-journey-hero dl { align-self: end; display: grid; grid-template-columns: repeat(3,1fr); }
.saved-journey-hero dl div { border: 1px solid var(--line); min-width: 0; padding: 18px; }
.saved-journey-hero dt { color: var(--muted); font-size: .7rem; }
.saved-journey-hero dd { color: var(--signal); font: 800 2.2rem ui-monospace,monospace; margin: 8px 0 0; }
.saved-region-library,.trip-backup { margin-top: 46px; padding: clamp(24px,5vw,54px); }
.saved-region-library { background: #e5eee1; border-top: 8px solid var(--ink); }
.saved-region-library > header { align-items: end; display: flex; gap: 20px; justify-content: space-between; }
.saved-region-library h2,.trip-backup h2 { font-family: "Yu Mincho",serif; font-size: clamp(1.8rem,3vw,3rem); margin: 4px 0; }
.saved-region-columns { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); margin-top: 22px; }
.saved-region-columns > section { background: var(--surface); border: 1px solid var(--line); min-width: 0; }
.saved-region-columns > section + section { border-left: 0; }
.saved-region-columns > section > header { align-items: center; border-bottom: 1px solid var(--line); display: grid; gap: 10px; grid-template-columns: auto 1fr auto; padding: 14px; }
.saved-region-columns header span { color: var(--signal); font: 800 .72rem ui-monospace,monospace; }
.saved-region-columns h3 { margin: 0; }
.saved-region-item { align-items: center; border-bottom: 1px solid var(--line); display: grid; gap: 10px; grid-template-columns: 64px minmax(0,1fr) auto; min-width: 0; padding: 10px; }
.saved-region-item img { aspect-ratio: 3/2; height: 44px; object-fit: cover; width: 64px; }
.saved-region-item p,.saved-region-item small { color: var(--muted); display: block; font-size: .66rem; margin: 0; }
.saved-region-item a { min-height: 44px; overflow-wrap: anywhere; }
.trip-backup { background: var(--ink); color: white; display: grid; gap: clamp(28px,6vw,80px); grid-template-columns: minmax(0,1fr) minmax(280px,.8fr); }
.trip-backup header > p:last-child { color: #d7e0d5; }
.trip-backup-controls { display: grid; gap: 10px; }
.trip-backup-controls .button { margin: 0; width: 100%; }
.trip-backup-controls .primary-action { background: var(--sun); border-color: var(--sun); color: var(--ink); }
.trip-backup-controls .ghost { border-color: rgba(255,255,255,.65); color: white; }
.backup-photo-choice { align-items: center; border: 1px solid rgba(255,255,255,.35); display: flex; gap: 10px; min-height: 48px; padding: 10px 14px; }
.backup-photo-choice input { height: 22px; width: 22px; }
.file-button:has(input:focus-visible) { outline: 3px solid var(--signal); outline-offset: 3px; }

@media (max-width: 900px) {
  .decision-theme-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .decision-theme-choice:nth-child(4) span { border-left: 1px solid var(--line); }
  .decision-result-grid { grid-template-columns: 1fr; }
  .decision-result-card + .decision-result-card { border-left: 1px solid var(--line); border-top: 0; }
  .atlas-scoreboard { grid-template-columns: repeat(5,minmax(0,1fr)); }
  .atlas-scoreboard > div { min-height: 115px; }
}

@media (max-width: 700px) {
  .mobile-break { display: inline; }
  .mast nav { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .mast nav a:nth-child(4) { border-left: 1px solid var(--line); }
  .freshness-strip { align-items: flex-start; flex-wrap: wrap; justify-content: flex-start; }
  .freshness-strip a { margin-left: 0; }
  .decision-hero,.decision-workspace,.trip-backup { grid-template-columns: 1fr; }
  .decision-theme-grid { grid-template-columns: 1fr; }
  .decision-theme-choice + .decision-theme-choice span { border-left: 1px solid var(--line); border-top: 0; }
  .decision-theme-choice span { min-height: 96px; }
  .decision-refiners,.region-stage-actions,.saved-region-columns,.saved-journey-hero dl { grid-template-columns: 1fr; }
  .decision-output > header,.decision-next,.region-stage-desk > header,.saved-region-library > header { align-items: flex-start; flex-direction: column; }
  .decision-next .button { width: 100%; }
  .saved-region-columns > section + section { border-left: 1px solid var(--line); border-top: 0; }
  .atlas-scoreboard { grid-template-columns: 1fr; }
}

@media (max-width: 360px) {
  .decision-hero h1 { font-size: 2.75rem; }
  .region-stage-actions > * { width: 100%; }
  .saved-region-item { grid-template-columns: 1fr; }
  .saved-region-item img { height: auto; width: 100%; }
}

@media (max-width: 700px) {
  .source-service-handoff { grid-template-columns: minmax(0,1fr); }
  .atlas-hero h1,.decision-hero h1,.saved-journey-hero h1,.decision-next h2,.saved-library h2,.trip-backup h2,.source-service-handoff h2,.source-service-handoff a,.atlas-backup .button { overflow-wrap: normal; text-wrap: pretty; word-break: keep-all; }
  .source-service-handoff h2,.source-service-handoff a { overflow-wrap: anywhere; word-break: normal; }
  .atlas-hero h1 { font-size: clamp(2.2rem,9.5vw,2.65rem); }
  .decision-hero h1 { font-size: clamp(2.15rem,9.5vw,2.55rem); }
  .saved-journey-hero h1 { font-size: clamp(2.35rem,10.5vw,2.85rem); }
  .decision-next h2,.saved-library h2 { font-size: 1.65rem; }
  .source-service-handoff a,.atlas-backup .button { font-size: .8rem; }
}
