: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 { background: var(--paper); line-break: strict; line-height: 1.72; margin: 0; overflow-wrap: break-word; word-break: normal; }
h1, h2, h3, strong { text-wrap: balance; }
p, dd, li, figcaption { text-wrap: pretty; }
@supports (word-break: auto-phrase) {
  body { word-break: auto-phrase; }
}
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 .75rem/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 .75rem/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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; 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: .75rem; font-weight: 800; }
.review-window > strong { display: block; font: 800 3.75rem/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: .75rem; }
.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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: grid; gap: 30px; grid-template-columns: minmax(0,1fr) minmax(260px,.72fr); padding-bottom: 24px; }
.section-head h2, .change-band h2, .saved-panel h2, .city-return h2 { font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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 .75rem 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 .75rem 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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 .75rem 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: .75rem; 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.75rem 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; font-weight: 800; }
.city-signal strong { display: block; font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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 .75rem ui-monospace, monospace; letter-spacing: .08em; }
.theme-route h3 { color: var(--theme); font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; font-weight: 800; }
.theme-hero aside strong { display: block; font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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 minmax(0,1fr); padding: 8px 0; }
.guide-card dt { color: var(--muted); font-size: .75rem; font-weight: 800; }
.guide-card dd { min-width: 0; overflow-wrap: anywhere; 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: .75rem; 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.65rem,5.45vw,5.65rem); }
.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: .75rem; }
.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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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 .75rem/1.3 ui-monospace,monospace; letter-spacing: .12em; }
.living-tool.atlas-tool > span { color: var(--lake); }
.living-tool h3 { font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; font-weight: 800; }
.freshness-card > strong { display: block; font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; }
.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-width: 0; max-width: 100%; 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; }
.live-festival-card h2 { font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; }
.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: .75rem; 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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; }

.live-tool-hero > *, .atlas-workspace > *, .decision-hero > *, .decision-next > * { min-width: 0; }
.atlas-hero { grid-template-columns: minmax(0,1fr); gap: 1.5rem; }
.atlas-scoreboard { background: var(--ink); color: white; display: flex; flex-wrap: wrap; gap: 1px; min-width: 0; }
.atlas-scoreboard > div { border: 1px solid rgba(255,255,255,.28); display: flex; flex: 1 1 9rem; min-width: 0; flex-direction: column; gap: .75rem; justify-content: space-between; min-height: 115px; padding: 1rem; }

.atlas-scoreboard > div > span { color: #cdd9cd; font-size: .75rem; font-weight: 800; }
.atlas-scoreboard strong { display: flex; flex-wrap: wrap; align-items: baseline; gap: .15em; min-width: 0; color: var(--sun); font: 800 clamp(1.75rem,3vw,2.7rem) ui-monospace,monospace; }
.atlas-scoreboard strong b { color: inherit; }
.atlas-scoreboard .atlas-total { font-size: .9rem; font-weight: 500; color: #cdd9cd; }
.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: .75rem; font-weight: 800; }
.atlas-contract-strip b { font: 800 1.75rem 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; 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: .75rem; 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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 .75rem 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: .75rem; }
.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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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.75rem,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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; 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 12px 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; }
.atlas-preview-story dd { font-size: .82rem; font-weight: 800; margin: 3px 0 0; }
.photo-credit { color: var(--muted); display: block; font-size: .75rem; 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: .75rem; 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.75rem 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 { align-self: start; aspect-ratio: 3/2; display: block; height: auto; 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 .75rem ui-monospace,monospace; margin: 0; }
.photo-credit-card h2 { font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif; font-size: clamp(1.45rem,2.4vw,2.2rem); line-height: 1.12; margin: 6px 0 14px; overflow-wrap: anywhere; word-break: normal; }
.photo-credit-card h2 small { color: var(--muted); display: block; font: 600 .75rem 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: .75rem; font-weight: 800; }
.photo-credit-card dd { font-size: .75rem; 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif; font-size: clamp(2rem,4vw,3.6rem); margin: 0; }
.region-groups header p,.region-groups header span { color: var(--muted); font-size: .75rem; 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: .75rem; margin: 0; }
.region-card h3 { font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif; font-size: 1.42rem; line-height: 1.1; margin: 7px 0; }
.region-card h3 small { color: var(--muted); display: block; font: 500 .75rem sans-serif; margin-top: 5px; }
.region-card span { color: var(--lake); font-size: .75rem; }
.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: repeat(auto-fit,minmax(min(100%,320px),1fr)); }
.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: .75rem; 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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 max(.75rem,12px) 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: .75rem; }
.region-key-facts dd,.city-stats dd { margin: 4px 0 0; }
.region-key-facts strong { display: block; font: 800 1.75rem ui-monospace,monospace; }
.region-key-facts small,.city-stats small { color: var(--muted); display: block; font-size: .75rem; }
.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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; }
.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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: repeat(auto-fit,minmax(min(100%,320px),1fr)); }
.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: .75rem; 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: .75rem; }
.atlas-profile-facts dd { font-size: .75rem; 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif; font-size: 1.45rem; margin: 0; }
.atlas-photo-journal > p { color: var(--muted); font-size: .75rem; }
.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: .75rem; 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: .75rem; 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; 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%; }
.festival-photo-story { margin: 54px clamp(18px,7vw,112px); }
.festival-photo-story > header { align-items: end; display: grid; gap: 28px; grid-template-columns: .8fr 1fr; margin-bottom: 22px; }
.festival-photo-story h2 { font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif; font-size: clamp(2rem,4vw,3.6rem); line-height: 1.08; margin: 0; }
.festival-photo-story > header > p:last-child { color: var(--muted); line-height: 1.8; margin: 0; }
.festival-photo-grid { display: grid; gap: 8px; grid-template-columns: 1.35fr repeat(2,minmax(0,.825fr)); }
.festival-photo-grid figure { background: var(--ink); color: var(--paper); margin: 0; min-width: 0; }
.festival-photo-grid img { aspect-ratio: 3/2; display: block; object-fit: cover; width: 100%; }
.festival-photo-grid figcaption { display: grid; font-size: .75rem; gap: 7px; line-height: 1.45; padding: 12px; }
.festival-photo-grid figcaption b { color: var(--sun); font-size: .76rem; }
.festival-photo-grid a { color: inherit; }
.guide-local-depth { display: grid; gap: 64px; margin: 60px clamp(18px,7vw,112px); }
.guide-local-depth > .section-head { grid-template-columns: minmax(230px,.65fr) minmax(0,1.35fr); }
.guide-local-depth > .section-head > p { line-height: 1.85; max-width: 72ch; }
.guide-page > .guide-region-photo,.guide-page > .guide-photo-story,.guide-page > .festival-photo-story,.guide-page > .guide-local-depth { margin-inline: 0; }
.guide-local-depth > .region-signature-foods { margin-inline: 0; }
.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: .75rem; 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; overflow: hidden; padding: 0; }
.attraction-card:nth-child(even) { border-left: 0; }
.attraction-card:nth-child(n+3) { border-top: 0; }
.attraction-card-body { display: flex; flex: 1; flex-direction: column; padding: clamp(20px,3vw,34px); }
.attraction-photo { background: var(--ink); color: var(--paper); margin: 0; }
.attraction-photo img { aspect-ratio: 3/2; display: block; object-fit: cover; width: 100%; }
.attraction-photo figcaption { font-size: .75rem; line-height: 1.45; padding: 8px 12px; }
.attraction-photo a { color: inherit; }
.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: .75rem; letter-spacing: .08em; }
.attraction-card h3 { font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; 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: .75rem; font-weight: 800; line-height: 1.3; padding: 7px 10px; }
.source-checked-at { color: var(--muted); font-size: .75rem; 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: .75rem; 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: .75rem; 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: .75rem; 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-copy > p { line-height: 1.78; margin: 0; }
.food-check-details { border-top: 1px solid rgba(16,45,49,.2); color: var(--muted); margin-top: 18px; }
.food-check-details summary { align-items: center; color: var(--ink); cursor: pointer; display: flex; font-size: .75rem; font-weight: 800; justify-content: space-between; min-height: 44px; padding: 8px 0; }
.food-check-details summary::after { content: "+"; font: 900 1.75rem/1 ui-monospace,monospace; }
.food-check-details[open] summary::after { content: "−"; }
.food-check-details summary::-webkit-details-marker { display: none; }
.food-check-details p { font-size: .78rem; line-height: 1.65; margin: 0; padding: 0 0 12px; }
.food-story-grid-single { grid-template-columns: minmax(0,1fr); }
.food-story-grid-single .food-story-card { column-gap: clamp(24px,4vw,58px); display: grid; grid-template-columns: minmax(190px,.58fr) minmax(0,1.42fr); min-height: 0; }
.food-story-grid-single .food-story-heading { grid-column: 1; grid-row: 1; }
.food-story-grid-single .food-shop-facts { grid-column: 1; grid-row: 2; }
.food-story-grid-single .food-story-copy { align-self: start; grid-column: 2; grid-row: 1 / span 2; padding-top: 2px; }
.food-story-grid-single .food-card-actions { grid-column: 1/-1; }
.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: .75rem; 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; font-weight: 800; }
.editorial-day-plan h3 { font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif; font-size: clamp(2rem,4vw,3.5rem); margin: 0; }
.region-fit-band h3 { font-size: .75rem; letter-spacing: .09em; margin: 0 0 12px; text-transform: uppercase; }
.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; }
.chapter-prose { display: grid; gap: 12px; }
.chapter-prose p { line-height: 1.9; margin: 0; max-width: 76ch; }
.region-chapter-nav,.guide-chapter-nav { background: var(--ink); color: var(--paper); display: grid; grid-template-columns: 1.25fr repeat(5,minmax(0,1fr)); margin-top: 34px; position: sticky; top: 0; z-index: 6; }
.region-chapter-nav > span,.region-chapter-nav a,.guide-chapter-nav > span,.guide-chapter-nav a { align-items: center; border-right: 1px solid rgba(255,255,255,.22); display: flex; gap: 9px; min-height: 58px; padding: 10px 14px; }
.region-chapter-nav > span,.guide-chapter-nav > span { color: var(--sun); font-size: .75rem; font-weight: 800; letter-spacing: .08em; }
.region-chapter-nav a,.guide-chapter-nav a { color: inherit; font-size: .76rem; font-weight: 800; }
.region-chapter-nav a:hover,.guide-chapter-nav a:hover { background: var(--signal); color: var(--ink); }
.region-chapter-nav b,.guide-chapter-nav b { color: var(--sun); font: 800 .75rem ui-monospace,monospace; }
.region-chapter { scroll-margin-top: 72px; }
.chapter-anchor { scroll-margin-top: 72px; }
.region-attractions,.region-food-stories,.region-day { margin-top: 64px; }
.rich-region-page > .region-attractions,.rich-region-page > .region-food-stories { padding-inline: 0; }
.rich-region-page > .region-signature-foods { margin-left: 0; margin-right: 0; }
.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); }
.mobile-swipe-hint { display: none; }

.drama-region-discovery { background: #e8eee8; margin: 34px 0 56px; padding: clamp(24px,4vw,48px); }
.drama-region-discovery > header { align-items: end; display: grid; gap: 24px; grid-template-columns: .8fr 1fr; margin-bottom: 28px; }
.drama-region-discovery > header h2 { font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif; font-size: clamp(2rem,4vw,3.6rem); line-height: 1.08; margin: 0; }
.drama-region-discovery > header > p { color: var(--muted); line-height: 1.8; margin: 0; max-width: 58ch; }
.drama-region-rail { display: grid; gap: 12px; grid-template-columns: repeat(3,minmax(0,1fr)); }
.drama-region-cluster { background: var(--paper); border: 1px solid var(--line); min-width: 0; padding: 20px; }
.drama-region-cluster > header { border-bottom: 3px solid var(--ink); display: grid; gap: 5px; padding-bottom: 14px; }
.drama-region-cluster > header span { color: var(--signal); font: 800 .75rem ui-monospace,monospace; letter-spacing: .06em; }
.drama-region-cluster h3 { font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif; font-size: 1.35rem; margin: 0; overflow-wrap: anywhere; }
.drama-region-cluster ul { list-style: none; margin: 0; padding: 0; }
.drama-region-cluster li + li { border-top: 1px solid var(--line); }
.drama-region-cluster a { display: grid; gap: 4px; min-height: 64px; padding: 12px 2px; }
.drama-region-cluster a:hover b { color: var(--signal); }
.drama-region-cluster a span { color: var(--muted); font: 750 .75rem ui-monospace,monospace; }
.drama-region-cluster a b { font-size: .86rem; line-height: 1.45; overflow-wrap: anywhere; }
.drama-era-directory { display: grid; gap: 8px; grid-template-columns: repeat(5,minmax(0,1fr)); margin: 34px 0 56px; }
.drama-era-directory a { background: var(--ink); color: var(--paper); display: grid; min-height: 108px; padding: 18px; }
.drama-era-directory span { color: var(--sun); font: 800 .75rem ui-monospace,monospace; }
.drama-era-directory b { align-self: end; font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif; font-size: 1.35rem; }
.drama-era { border-top: 1px solid var(--line); padding-top: 34px; scroll-margin-top: 72px; }
.drama-era + .drama-era { margin-top: 72px; }
.drama-era > header { display: grid; gap: 18px; grid-template-columns: .55fr 1fr; margin-bottom: 24px; }
.drama-era > header .overline { grid-column: 1; }
.drama-era > header h2 { font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif; font-size: clamp(2.2rem,5vw,4.5rem); grid-column: 1; line-height: 1; margin: 0; }
.drama-era > header > p:last-child { color: var(--muted); grid-column: 2; grid-row: 1/3; line-height: 1.8; margin: 0; }
.drama-year { background: var(--sun); color: var(--ink); font: 900 .75rem ui-monospace,monospace; margin-left: auto; padding: 6px 8px; }

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: 1200px) {
  .photo-credit-grid { grid-template-columns: 1fr; }
  .photo-credit-card:nth-child(even) { border-left: 1px solid var(--line); }
}

@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) {
  body { word-break: normal; }
  .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; }
  .section-head > .chapter-prose { margin-top: 16px; }
  .guide-page > .guide-local-depth,.guide-local-depth > * { min-width: 0; }
  .guide-local-depth > .section-head { grid-template-columns: minmax(0,1fr); }
  .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-contract-strip { grid-template-columns: 1fr; }
  .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; }
  .festival-photo-story > header,.drama-era > header,.drama-region-discovery > header { grid-template-columns: 1fr; }
  .drama-era > header > p:last-child { grid-column: 1; grid-row: auto; }
  .drama-region-rail { grid-auto-columns: minmax(250px,86%); grid-auto-flow: column; grid-template-columns: none; overflow-x: auto; overscroll-behavior-inline: contain; padding-bottom: 10px; scroll-snap-type: inline mandatory; }
  .drama-region-cluster { scroll-snap-align: start; }
  .drama-era-directory { grid-auto-columns: minmax(190px,72%); grid-auto-flow: column; grid-template-columns: none; overflow-x: auto; overscroll-behavior-inline: contain; padding-bottom: 10px; scroll-snap-type: inline mandatory; }
  .drama-era-directory a { min-height: 82px; scroll-snap-align: start; }
  .drama-era .guide-grid { gap: 12px; grid-auto-columns: 92%; grid-auto-flow: column; grid-template-columns: none; overflow-x: auto; overscroll-behavior-inline: contain; padding-bottom: 10px; scroll-snap-type: inline mandatory; }
  .drama-era .guide-card { border: 1px solid var(--line); scroll-snap-align: start; }
  .festival-photo-grid { gap: 10px; grid-auto-columns: 88%; grid-auto-flow: column; grid-template-columns: none; overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: inline mandatory; }
  .festival-photo-grid figure { scroll-snap-align: start; }
  .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; height: auto; }
  .guide-photo-story figcaption a,.guide-region-photo figcaption a { display: inline; min-height: 0; min-width: 0; }
  .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; padding: 18px; }
  .food-story-grid-single .food-story-card { display: flex; }
  .food-story-grid-single .food-story-copy { padding-top: 0; }
  .regional-food-context { background: transparent; border-top: 6px solid #517570; gap: 18px; padding: 20px 0 0; }
  .region-chapter-nav,.guide-chapter-nav { grid-auto-columns: minmax(118px,1fr); grid-auto-flow: column; grid-template-columns: minmax(146px,1.2fr); overflow-x: auto; position: static; }
  .region-chapter-nav > span,.region-chapter-nav a,.guide-chapter-nav > span,.guide-chapter-nav a { min-height: 52px; white-space: nowrap; }
  .guide-page > .guide-local-depth { gap: 46px; margin-block: 46px; }
  .guide-local-depth > .region-signature-foods { margin-top: 12px; }
  .guide-local-depth p,.guide-local-depth dd,.guide-local-depth li,.guide-local-depth figcaption { overflow-wrap: anywhere; }
  .one-day-story > *,.region-day > *,.editorial-day-plan li > *,.city-return > div { min-width: 0; }
  .editorial-day-plan li { gap: 12px; grid-template-columns: 56px minmax(0,1fr); }
  .city-return > div:last-child { display: grid; grid-template-columns: minmax(0,1fr); width: 100%; }
  .city-return .button { min-width: 0; width: 100%; }
  .guide-hero h1 { font-size: clamp(2rem,8.5vw,3.25rem); line-height: 1.08; }
  .region-fit-band { padding: 20px; }
  .rich-region-page > .region-attractions,.rich-region-page > .region-food-stories { padding-inline: 0; }
  .rich-region-page .attraction-card-grid,.rich-region-page > .region-food-stories > .food-story-grid,.rich-region-page > .region-signature-foods .food-story-grid,.guide-local-depth > section > .attraction-card-grid,.guide-local-depth > section > .food-story-grid { gap: 12px; grid-auto-columns: 100%; grid-auto-flow: column; grid-template-columns: none; overflow-x: auto; overscroll-behavior-inline: contain; padding-bottom: 10px; scroll-padding-inline: 0; scroll-snap-type: inline mandatory; }
  .rich-region-page .attraction-card,.rich-region-page .food-story-card,.guide-local-depth > section > .attraction-card-grid > .attraction-card,.guide-local-depth > section > .food-story-grid > .food-story-card { border: 1px solid var(--line); min-height: 0; scroll-snap-align: start; }
  .rich-region-page .attraction-card-body,.guide-local-depth .attraction-card-body { padding: 18px; }
  .rich-region-page .attraction-card h3,.guide-local-depth .attraction-card h3 { margin-top: 24px; }
  .mobile-swipe-hint { align-items: center; color: var(--signal); display: flex; font-size: .75rem; font-weight: 800; gap: 8px; margin: 14px 0 10px; }
  .mobile-swipe-hint::after { content: "→"; }
  .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-card { grid-template-columns: 1fr; }
}

@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; }
}

@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: .75rem; letter-spacing: .08em; padding: 4px 8px; text-transform: uppercase; }
.freshness-strip p { color: var(--muted); font-size: .75rem; margin: 0; }
.freshness-strip a { align-items: center; display: inline-flex; font-size: .75rem; font-weight: 800; margin-left: auto; min-height: 44px; }
.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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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.75rem 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.75rem,3vw,2.3rem) "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif; margin-bottom: 22px; }
.decision-form legend span,.decision-refiners label > span { color: var(--signal); display: block; font: 800 .75rem 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: .75rem; 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: .75rem; }
.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 .75rem ui-monospace,monospace; letter-spacing: .05em; }
.decision-mini-plan span { font-size: .76rem; line-height: 1.55; }
.decision-freshness { color: var(--muted); font-size: .75rem; }
.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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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(auto-fit,minmax(min(100%,11rem),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: .75rem; font-weight: 800; }
.region-stage-actions > * { min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
.region-stage-actions input { min-height: 44px; min-width: 0; max-width: 100%; width: 100%; font: inherit; }
.atlas-detail .region-stage-actions { grid-template-columns: minmax(0,1fr); }
.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: .75rem; }
.saved-journey-hero dd { color: var(--signal); font: 800 2.75rem 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: "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-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 .75rem 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: .75rem; 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; }
}

@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; }
}

@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: anywhere; text-wrap: pretty; word-break: normal; }
  .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; }
}

/* Travel decisions: existing paper/ink identity, real destinations before inventory. */
.travel-home-hero{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:center;padding:2rem clamp(1rem,4vw,4rem);background:#f3efe4;color:#172a25}
.travel-home-copy h1{font-size:clamp(2rem,4.6vw,4.5rem);line-height:1.22;letter-spacing:-.035em;word-break:normal;overflow-wrap:anywhere;margin:.7rem 0 1rem}
.travel-home-copy>p{max-width:36rem;line-height:1.8}.travel-home-hero figure{margin:0}.travel-home-hero img{display:block;width:100%;height:380px;object-fit:cover}.travel-home-hero figcaption{font-size:.75rem;line-height:1.5;padding:.4rem 0}
.home-three-steps{display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;padding-left:1.2rem;font-size:.8rem;margin:1rem 0 0}.home-three-steps li{padding-left:.15rem}
.journey-discovery,.travel-shortcuts,.festival-editorial-fallback{padding:2rem clamp(1rem,4vw,4rem)}
.journey-discovery h2,.travel-shortcuts h2,.journey-tools h2,.day-kit h2,.festival-editorial-fallback h2{font-size:clamp(1.4rem,2.5vw,2.2rem);line-height:1.4;letter-spacing:-.02em;margin:.4rem 0 1rem}
.journey-featured{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;margin:1.5rem 0}.journey-featured article{min-width:0}.journey-featured figure,.journey-choice-grid figure{margin:0}.journey-featured img,.journey-choice-grid img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;display:block}.journey-featured figcaption,.journey-choice-grid figcaption{font-size:.75rem;line-height:1.5;padding:.4rem 0}.journey-featured h3{font-size:1.3rem;line-height:1.5}.travel-shortcuts{background:#e5eadf}.travel-shortcuts>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 2rem}.travel-shortcuts a{padding:1rem 0;min-height:44px;border-bottom:1px solid #bcc5b6}
.journey-tools{max-width:1160px;margin:auto;padding:2rem clamp(1rem,4vw,3rem)}.tools-intro h1{font-size:clamp(2.2rem,5vw,4rem);line-height:1.2;margin:.6rem 0 1rem}.tool-nav{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin:1.5rem 0}.tool-nav a{padding:.65rem 0;min-height:44px}.journey-tools>section{border-top:1px solid #c6cbbf;padding:2rem 0;scroll-margin-top:1rem}.journey-tools p,.day-kit p{line-height:1.8}.journey-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.4rem}.journey-choice-grid article{min-width:0;border-bottom:1px solid #b7c3b2;padding-bottom:1rem}.journey-choice-grid h3{font-size:1.15rem;line-height:1.5}.journey-choice-grid label{display:flex;gap:.6rem;align-items:center;min-height:44px;font-weight:700}
.journey-tools button,.day-kit button{min-height:44px;border:1px solid #456057;background:#fffdf7;color:#172a25;padding:.7rem 1rem;font:inherit;cursor:pointer}.journey-tools button:hover,.day-kit button:hover{background:#e5eadf}.journey-tools button:active,.day-kit button:active{transform:translateY(1px)}.journey-tools button:disabled,.day-kit button:disabled{opacity:.55;cursor:default}.day-kit [aria-pressed=true]{background:#172a25;color:#fffdf7}.journey-tools input,.journey-tools select{font:inherit;min-height:44px;max-width:100%;padding:.55rem;border:1px solid #718478}.journey-tools input[type=checkbox]{width:22px;min-height:22px;accent-color:#264f44}.journey-tools form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;max-width:760px}.journey-tools form label{display:grid;gap:.5rem;min-width:0}.journey-tools form button{justify-self:start}.comparison-result{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:1rem}.comparison-result article{padding:1rem;background:#e5eadf}.comparison-result dt{font-weight:700;font-size:.8rem;margin-top:1rem}.comparison-result dd{margin:.3rem 0;line-height:1.65}.comparison-result h3{font-size:1.4rem}
[data-party-votes]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1rem 0}[data-party-votes] fieldset{min-width:0;padding:1rem;border:1px solid #b7c3b2}[data-party-votes] label{display:inline-flex;align-items:center;gap:.45rem;min-height:44px;margin-right:1rem}[data-party-result] article{border-left:4px solid #486c5d;padding:1rem;margin:1rem 0}.phrase-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.phrase-grid article{border:1px solid #b7c3b2;padding:1rem}.phrase-grid strong{display:block;font-size:1.65rem;line-height:1.6;word-break:keep-all;overflow-wrap:anywhere;margin:.7rem 0}.field-phrase{font-size:1.5rem;font-weight:700}.day-kit{background:#eef0e6;padding:clamp(1rem,3vw,2rem);margin:1.5rem 0;border-top:4px solid #486c5d}.day-kit>header{display:grid;gap:.8rem}.day-kit>header>*{margin:0}.day-kit>header>.button{justify-self:start;max-width:100%}.action-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.action-cluster>button{min-width:0;max-width:100%;overflow-wrap:anywhere}.day-kit-actions{margin-block:1.5rem 1rem}.book-actions{margin-block:1rem}.practical-stops{list-style:none;padding:0}.practical-stops>li{display:flex;gap:1rem;padding:1rem 0;border-bottom:1px solid #ccd3c4}.practical-stops>li>span{font-size:1.3rem;font-weight:700}.practical-stops h3{font-size:1.2rem;margin:0}.day-kit section{margin:1.5rem 0;padding:0}.day-kit details{margin:1rem 0}.day-kit summary{min-height:44px;padding:.7rem 0;cursor:pointer}.day-kit a{overflow-wrap:anywhere}.tool-backup>label{display:block;margin:1rem 0}.tool-backup button{margin:.3rem .3rem .3rem 0}[data-trip-book] article{padding:1rem 0;border-bottom:1px solid #b7c3b2}[data-trip-book] img{max-width:320px;width:100%;height:auto;margin:.5rem}[data-next-trip] a{display:block;padding:.7rem 0} [data-return-result]:not(:empty){padding:1rem;margin:1rem 0;background:#e5eadf}
@media(max-width:700px){.mast{padding:1rem}.mast nav{display:flex;flex-wrap:wrap;gap:.2rem .8rem}.mast nav a{padding:.3rem 0;min-height:44px;font-size:.8rem}.freshness-strip{padding:.45rem 1rem;gap:.4rem;display:flex;flex-wrap:wrap;font-size:.75rem}.freshness-strip p{margin:0}.freshness-strip>a{margin-left:auto}.freshness-strip strong{padding:.2rem .3rem}.travel-home-hero{grid-template-columns:1fr;padding:1.2rem 1rem;gap:1rem}.travel-home-copy h1{font-size:clamp(1.85rem,7.5vw,2.6rem)}.travel-home-copy>p{font-size:.9rem;margin:.6rem 0}.travel-home-copy .button{margin:.4rem 0}.home-three-steps{font-size:.75rem;gap:.3rem 1.2rem;margin:.5rem 0}.travel-home-hero img{height:180px}.journey-featured{grid-template-columns:1fr;gap:1.5rem}.journey-featured article{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem}.journey-featured h3{font-size:1.1rem}.journey-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.journey-choice-grid h3{font-size:1rem}.journey-tools form,[data-party-votes],.phrase-grid{grid-template-columns:1fr}.travel-shortcuts>div{grid-template-columns:1fr 1fr;gap:0 1rem}.travel-shortcuts a{font-size:.9rem}.day-kit{margin-inline:0}.journey-tools input[type=file]{width:100%}}
@media(max-width:350px){.journey-choice-grid{grid-template-columns:1fr}.travel-shortcuts>div{grid-template-columns:1fr}.travel-home-hero img{height:160px}}
@media(prefers-reduced-motion:reduce){.journey-tools *, .day-kit *{scroll-behavior:auto;transition:none;transform:none}}
@media print{body.printing-trip-book .mast,body.printing-trip-book .freshness-strip,body.printing-trip-book footer,body.printing-trip-book .tools-intro,body.printing-trip-book .tool-nav,body.printing-trip-book .journey-tools>section:not(#book),body.printing-trip-book #book>.book-actions,body.printing-trip-book #book>p,body.printing-trip-book #book a,body.printing-trip-book [data-next-trip]{display:none!important}body.printing-trip-book .journey-tools{padding:0;max-width:none}body.printing-trip-book [data-trip-book] article{break-inside:avoid}body.printing-trip-book{background:white;color:black}}

.compare-progress{position:sticky;top:0;z-index:5;background:var(--paper,#f3efe4);border-block:1px solid currentColor;padding:.6rem;display:flex;align-items:center;justify-content:space-between;gap:.7rem}.compare-progress p{margin:0}.compare-progress a{min-height:44px;display:inline-flex;align-items:center;white-space:nowrap}.comparison-result{scroll-margin-top:6rem}

.journey-tools input:not([type=checkbox]),.journey-tools select{width:100%;min-width:0;max-width:100%;box-sizing:border-box}.compare-progress [hidden]{display:none}

.compare-progress{flex-wrap:wrap}.compare-progress a{white-space:normal}.journey-tools input[name=flightDate],.journey-tools input[name=flightTime]{padding-inline:.35rem}

/* Travel reading shell: one calm header, real places, one preparation panel. */
:root{--paper:#f7f5ef;--surface:#fffefa;--line:#d9dcd3}
.mast{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:1.25rem;padding:.7rem clamp(1rem,4vw,4rem);min-height:76px;background:var(--surface)}
.mast .brand{gap:.6rem;min-width:0;min-height:44px}.brand-symbol{width:32px;height:32px;flex:none}.brand small{font:400 .75rem/1.5 inherit;letter-spacing:.03em}.brand b{font-size:1.15rem}
.mast .primary-nav{display:flex;flex-wrap:nowrap;width:auto;gap:.75rem}.mast .primary-nav a{border:0;border-bottom:2px solid transparent;padding:.35rem .25rem;font-size:.9rem;min-height:44px;white-space:nowrap}.mast .primary-nav a:hover{border-bottom-color:var(--ink);color:var(--ink)}
.site-menu{position:relative}.site-menu>summary{font-size:.8rem;cursor:pointer;min-height:44px;display:flex;align-items:center;gap:.5rem;padding:.4rem;border:0;list-style:none}.site-menu>summary::-webkit-details-marker{display:none}.site-menu>summary::before{content:'☰';font-size:1.25rem;line-height:1}.site-menu[open]>summary::before{content:'−'}
.mast .site-menu nav{position:absolute;right:0;top:100%;z-index:25;display:grid;grid-template-columns:1fr;width:min(290px,calc(100vw - 32px));padding:.6rem 1rem;background:var(--surface);border:1px solid var(--line);box-shadow:0 8px 24px #102d3118}.mast .site-menu nav a{border:0;border-bottom:1px solid var(--line);justify-content:flex-start;font-size:.9rem;min-height:48px}
.site-menu summary:focus-visible,.credit-details summary:focus-visible,.home-directory summary:focus-visible,.tool-backup summary:focus-visible{outline:3px solid var(--lake);outline-offset:3px}
.travel-home-hero{max-width:1440px;margin:auto;padding:2.5rem clamp(1rem,4vw,4rem);grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-template-rows:auto auto;gap:0 3rem;background:var(--paper);align-items:center}
.travel-home-copy{grid-column:1;grid-row:1;align-self:end}.travel-home-copy h1{font-family:"Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;font-size:clamp(2.2rem,4.6vw,4.6rem);font-weight:600;line-height:1.2;letter-spacing:-.04em;margin:.65rem 0 1.2rem}.travel-home-copy>p{font-size:.95rem;line-height:1.8}.travel-home-copy .category-label{font-size:.8rem}
.travel-home-hero>figure{grid-column:2;grid-row:1/3;align-self:center;min-width:0}.travel-home-hero img{height:390px;object-position:50% 50%;border-radius:2px}.travel-home-action{grid-column:1;grid-row:2;align-self:start}.travel-home-action .button{margin-top:1rem;min-width:240px;justify-content:space-between;border-radius:3px;box-shadow:none;transform:none}.travel-home-action .button:hover{background:var(--lake)}
.travel-home-hero figcaption,.journey-featured figcaption,.journey-choice-grid figcaption{display:flex;justify-content:space-between;align-items:flex-start;gap:.6rem;color:var(--muted);font-size:.75rem;line-height:1.5;padding:.5rem 0}.travel-home-hero figcaption a,.journey-featured figcaption a,.journey-choice-grid figcaption a{flex:none}.home-three-steps{display:flex;flex-wrap:wrap;list-style:none;padding:0;gap:.9rem;margin:1rem 0 0;color:var(--muted);font-size:.75rem;counter-reset:tripsteps}.home-three-steps li::before{counter-increment:tripsteps;content:counter(tripsteps) ' ';color:var(--lake);font-weight:bold}
.journey-discovery{max-width:1440px;margin:auto;padding:2.2rem clamp(1rem,4vw,4rem) 3rem;border-top:1px solid var(--line)}.journey-discovery header>p:last-child{color:var(--muted);font-size:.9rem}.journey-featured{gap:2rem}.journey-featured h3{font:600 1.75rem/1.5 "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;margin:.35rem 0}.journey-featured h3 a{text-decoration:none}.journey-featured h3 a:hover{text-decoration:underline}.journey-featured article>div>p{margin:.3rem 0;font-size:.85rem}.journey-featured article>div>p:first-child{color:var(--lake);font-size:.75rem;font-weight:700}.journey-featured img{border-radius:2px}.journey-discovery .text-link{font-size:.9rem;min-height:44px;display:inline-flex;align-items:center}
.travel-shortcuts{background:#e9eee6;padding:2.5rem clamp(1rem,4vw,4rem);display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.5fr);gap:2rem}.travel-shortcuts>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 2rem}.travel-shortcuts a{text-decoration:none;display:grid;align-content:center;gap:.25rem;padding:1rem 0}.travel-shortcuts a b{font-size:1rem}.travel-shortcuts a span{font-size:.8rem;color:var(--muted)}.travel-shortcuts a:hover b{text-decoration:underline}
.home-directory{margin:0 clamp(1rem,4vw,4rem);border-bottom:1px solid var(--line)}.home-directory>summary{cursor:pointer;min-height:90px;padding:1.25rem 0;font-weight:700}.home-directory>summary>span{font-size:1.15rem}.home-directory>summary>small{display:block;margin-left:1.25rem;color:var(--muted);font-weight:400;font-size:.8rem}.home-directory .city-explorer,.home-directory .national-atlas-preview{padding:1.5rem 0}.home-directory .national-atlas-preview>footer{padding:1rem}.home-directory .national-atlas-preview{border-top:0}
body[data-path="/"] .theme-explorer{padding:2.5rem clamp(1rem,4vw,4rem)}body[data-path="/"] .section-head{display:block;padding-bottom:1.25rem}body[data-path="/"] .section-head h2{font-size:1.8rem;line-height:1.4}body[data-path="/"] .section-head>p{max-width:none;margin-top:.5rem;font-size:.9rem}body[data-path="/"] .theme-route-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:0}body[data-path="/"] .theme-route{padding:1rem;box-shadow:none;min-height:0}body[data-path="/"] .theme-route h3{font-size:1.2rem}body[data-path="/"] .theme-route p{font-size:.85rem}body[data-path="/"] .saved-panel{padding:2.5rem clamp(1rem,4vw,4rem)}body[data-path="/"] .saved-panel h2{font-size:1.6rem;line-height:1.4}
.credit-details{font-size:.75rem;line-height:1.65;font-weight:400}.credit-details>summary{cursor:pointer;min-height:30px;display:list-item;text-decoration:underline;text-underline-offset:.2em}.credit-details[open]{padding-bottom:.5rem;overflow-wrap:anywhere}.freshness-strip{background:transparent;min-height:0;border-top:1px solid var(--line);padding:.6rem clamp(1rem,4vw,4rem);gap:.5rem 1rem}.freshness-strip strong{border:0;padding:0;letter-spacing:0}.freshness-strip a{min-height:30px}.freshness-strip p{font-size:.75rem}
.tools-intro h1{font:600 clamp(1.8rem,4vw,3rem)/1.35 "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif}.tools-intro>p{font-size:.9rem}.tool-nav{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;margin:1.5rem 0 .5rem;border-bottom:1px solid var(--line)}.tool-nav a{font-size:.85rem;text-decoration:none;text-align:center;border-bottom:3px solid transparent;padding:.8rem .4rem}.tool-nav a[aria-current=page]{font-weight:700;color:var(--ink);border-bottom-color:var(--ink);background:#e9eee6}.journey-tools>section{border-top:0;padding:1.5rem 0}.journey-tools>section[hidden]{display:none}.journey-choice-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:1.5rem}.journey-choice-grid h3{font-size:1.1rem}.journey-choice-grid article:has(input:checked){border-bottom:3px solid var(--lake)}.journey-choice-grid label{cursor:pointer}.comparison-result{margin-top:1.5rem}.comparison-result a{display:block;min-height:44px;padding:.6rem 0;font-weight:700}.comparison-result a+a{font-weight:400;font-size:.85rem}
.prepared-plan-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:center;margin-bottom:1.5rem}.prepared-plan-intro img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}.prepared-plan-intro h3{font:600 clamp(1.75rem,3vw,2rem)/1.4 "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;margin:.5rem 0}.prepared-plan-intro a{font-size:.75rem}.prepared-plan-intro p:first-child{color:var(--lake);font-weight:700}.prepared-stops{padding-left:1.5rem}.prepared-stops li{padding:.7rem .4rem;border-bottom:1px solid var(--line)}[data-plan-save]{background:var(--ink)!important;color:var(--surface)!important;margin:0 1rem .75rem 0}.prepared-weather{border-left:3px solid var(--line);padding:.5rem 1.25rem;margin:1.5rem 0}.prepared-next{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem}.prepared-next a{min-height:44px;padding:.5rem 0;font-weight:700}.tool-backup{border-top:1px solid var(--line);margin-top:2rem;padding:1rem 0}.tool-backup>summary{min-height:44px;cursor:pointer;font-size:.85rem}.tool-backup button,.tool-backup label{margin:.5rem .5rem .5rem 0}.tools-storage-status{font-size:.8rem;color:var(--muted)}
.decision-prepare{display:block;width:100%;font-weight:700;padding:.75rem 0}.live-festival-card details{font-size:.85rem}.live-festival-card summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.festival-original{font-size:.8rem;color:var(--muted)}
@media(max-width:800px){
 .mast{gap:.5rem .75rem;padding:.55rem 1rem;min-height:64px}.mast .brand small{display:none}.mast .brand b{font-size:1rem}.mast .brand-symbol{width:25px;height:25px}.mast .primary-nav{gap:.4rem}.mast .primary-nav a{font-size:.8rem}.site-menu>summary{font-size:.75rem;gap:0;padding:.4rem}.site-menu>summary::before{font-size:1.3rem}
 .travel-home-hero{padding:1.5rem 1rem;grid-template-columns:1fr;gap:1rem}.travel-home-copy{grid-column:1;grid-row:1}.travel-home-copy h1{font-size:clamp(2rem,8.5vw,2.8rem);margin:.5rem 0 .65rem}.travel-home-copy>p{font-size:.85rem;margin:.5rem 0}.travel-home-copy p br{display:none}.travel-home-hero>figure{grid-column:1;grid-row:2}.travel-home-hero img{height:auto;aspect-ratio:1.85}.travel-home-action{grid-row:3;grid-column:1}.travel-home-action .button{width:100%;margin:0}.home-three-steps{font-size:.75rem;gap:.6rem;margin:.75rem 0 0;justify-content:space-between}
 .journey-discovery{padding:1.75rem 1rem}.journey-featured{display:grid;grid-template-columns:1fr;gap:1.5rem}.journey-featured article{grid-template-columns:minmax(0,.9fr) minmax(0,1fr);gap:1rem;align-items:start}.journey-featured h3{font-size:1.1rem}.journey-featured figcaption{font-size:.75rem;flex-wrap:wrap;gap:.15rem}.travel-shortcuts{display:block;padding:1.75rem 1rem}.travel-shortcuts>div{gap:0 1rem}.travel-shortcuts h2{font-size:1.4rem}.home-directory{margin:0 1rem}body[data-path="/"] .theme-route-grid{grid-template-columns:1fr}body[data-path="/"] .theme-route{display:grid;grid-template-columns:2rem 1fr;gap:.2rem 1rem}body[data-path="/"] .theme-route>*{grid-column:2}body[data-path="/"] .theme-route>span:first-child{grid-column:1;grid-row:1/4}body[data-path="/"] .theme-route p{margin:.1rem 0}body[data-path="/"] .theme-route h3{margin:0}
 .tool-nav{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:1rem}.tool-nav a{font-size:.8rem}.journey-tools{padding:1.5rem 1rem}.journey-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem 1rem}.journey-choice-grid h3{font-size:1rem}.journey-choice-grid figcaption{flex-wrap:wrap;font-size:.75rem}.prepared-plan-intro{grid-template-columns:1fr;gap:.5rem}.prepared-plan-intro img{aspect-ratio:1.85}.prepared-next{display:grid}.freshness-strip{align-items:center}.live-festival-card{padding:1.1rem}.festival-card-actions .button{font-size:.85rem;padding:.6rem}
}
@media(max-width:359px){.mast{grid-template-columns:1fr auto;gap:0 .5rem}.mast .primary-nav{grid-column:1/-1;grid-row:2;justify-content:space-between}.site-menu{grid-column:2;grid-row:1}.journey-choice-grid{grid-template-columns:1fr}.travel-shortcuts>div{grid-template-columns:1fr 1fr}.home-three-steps{gap:.5rem;justify-content:flex-start}.journey-featured article{grid-template-columns:1fr}.journey-featured img{aspect-ratio:1.85}.journey-featured figcaption{flex-wrap:nowrap}.travel-home-copy h1{font-size:2rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.travel-home-action .button{transition:none;transform:none}}
@media print{body.printing-trip-book .tool-backup,body.printing-trip-book .tools-storage-status{display:none!important}body.printing-trip-book #book{display:block!important}}

body[data-path="/"] .theme-route{display:block;padding:0;background:transparent;border-bottom:1px solid var(--line)}
body[data-path="/"] .theme-route>a{display:grid;grid-template-columns:minmax(0,1fr) auto;min-width:0;padding:1rem;gap:.35rem 1rem;min-height:100%;text-decoration:none}
body[data-path="/"] .theme-route a>span{font-size:1rem;font-weight:700;grid-column:1}
body[data-path="/"] .theme-route a>small{font-size:.8rem;line-height:1.65;grid-column:1;color:var(--muted)}
body[data-path="/"] .theme-route a>b{grid-column:2;grid-row:1/3;align-self:center;font-size:1.2rem}
@media(max-width:800px){body[data-path="/"] .theme-route>a{padding:1rem 0}.tools-intro h1{font-size:clamp(1.6rem,6.5vw,2.4rem)}.tool-nav{grid-template-columns:repeat(auto-fit,minmax(min(100%,8rem),1fr))}}

.saved-preparation{margin:0 clamp(1rem,4vw,4rem);padding:1.5rem;background:#e9eee6}.saved-preparation h2{font-size:1.3rem}.saved-preparation>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:1rem}.saved-preparation a{display:grid;gap:.35rem;padding:.75rem 0;border-top:1px solid var(--line);text-decoration:none}.saved-preparation a[hidden],.saved-preparation[hidden]{display:none}.saved-preparation span{font-size:.9rem}
.festival-translation-note{font-size:.85rem;color:var(--muted);max-width:52rem}.live-festival-card .festival-state{font-size:.75rem}.live-festival-card h2{font-family:"Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;font-size:1.4rem;line-height:1.45}.live-festival-card .festival-card-actions{margin-top:auto}.live-festival-card{display:flex;flex-direction:column;gap:.2rem}.live-festival-card>header{flex-wrap:wrap;gap:.4rem}.live-festival-card .festival-card-actions .primary-action{margin-top:.5rem}.live-festival-card details p{font-size:.8rem}.live-festival-card .festival-dates{font-size:.85rem}.live-tool-hero h1{font-size:clamp(2rem,4vw,3.5rem);line-height:1.2}.live-tool-hero{padding-top:1.25rem;padding-bottom:1.5rem}.live-tool-hero .freshness-card{padding:1rem}.live-tool-hero .freshness-card dl{font-size:.8rem}
@media(max-width:800px){
 .saved-page{padding:24px 16px}.saved-page .index-hero{padding:0 0 24px}.saved-preparation{margin:0;padding:16px}.saved-library,.saved-region-library,.trip-backup{padding:16px;margin-top:28px;min-width:0}.saved-library h2,.trip-backup h2,.saved-region-library h2{word-break:normal;overflow-wrap:anywhere;min-width:0;font-size:1.45rem}.saved-library>header,.saved-region-library>header,.trip-backup>header,.trip-backup-controls{min-width:0;max-width:100%}.trip-backup{grid-template-columns:minmax(0,1fr);gap:24px}.trip-backup .backup-photo-choice{display:grid;grid-template-columns:24px minmax(0,1fr);gap:8px;align-items:start}.trip-backup .backup-photo-choice span{min-width:0;overflow-wrap:anywhere}.saved-library-actions .button,.trip-backup-controls .button{word-break:normal;overflow-wrap:anywhere;min-width:0;max-width:100%;white-space:normal}.saved-region-item{min-width:0}.saved-region-item a,.saved-region-item div{min-width:0}
}
.saved-page .saved-journey-hero h1{word-break:normal;overflow-wrap:anywhere}
.live-festival-card h2{margin:.6rem 0 .35rem}.live-festival-card .festival-dates{margin:.4rem 0}.live-festival-card>p{margin:.5rem 0}.live-festival-card .festival-facets{margin:.5rem 0;padding-bottom:0}.live-festival-card .festival-card-actions{gap:.5rem;padding-top:.4rem}.live-festival-card{border-top:2px solid var(--line)}
/* The trip workspace keeps the next action next to the user's result. */
.mobile-bottom-nav {display:none}
.workspace-add {display:grid;grid-template-columns:minmax(0,1fr) 6rem auto;gap:1rem;align-items:end;margin:1rem 0}
[data-travel-workspace] fieldset {min-width:0;border:0;padding:0}
[data-travel-workspace] label {display:grid;gap:.4rem}
[data-travel-workspace] input,[data-travel-workspace] select {font:inherit;width:100%;min-width:0;min-height:48px;border:1px solid #ccd4d1;border-radius:4px;padding:.6rem;background:#fff;color:var(--ink,#102d31)}
[data-travel-workspace] details {padding:1rem 0;border-block:1px solid #d9dfdb;margin:1rem 0}
[data-travel-workspace] summary {min-height:44px;cursor:pointer}
.workspace-actions {display:flex;flex-wrap:wrap;gap:.65rem;margin:.75rem 0}
[data-travel-workspace] button,.workspace-stop a {min-width:44px;min-height:44px;padding:.6rem .9rem;font:inherit;cursor:pointer;border:1px solid #bfcac5;border-radius:4px;background:#fff;color:#102d31}
.workspace-summary {font-weight:700;border-left:3px solid #d8b849;padding:.75rem 1rem}
.workspace-course {margin:1rem 0;padding:1.25rem;background:#fff;border:1px solid #d9dfdb}
.workspace-course h4 {font-size:1.2rem;margin:.5rem 0}
.workspace-course>a {display:flex;align-items:center;min-height:44px;margin:.35rem 0}
.workspace-stop {display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:.65rem;align-items:center;border-top:1px solid #e1e5e1;padding:.75rem 0}
.workspace-stop label {display:flex;align-items:center;gap:.6rem;min-height:44px}
.workspace-stop input {width:24px;height:24px;min-height:24px;flex:none}
.workspace-note {font-size:.875rem;line-height:1.7;color:#526568}
.local-card {width:min(90vw,36rem);padding:1.5rem;border:1px solid #bfcac5;border-radius:8px;background:#fff}
.local-card::backdrop {background:#102d31b3}
.local-card strong {display:block;font-size:clamp(1.75rem,6vw,3rem);line-height:1.5;overflow-wrap:anywhere}
.decision-output {scroll-margin-top:1rem;outline:none}
.decision-method summary {font-weight:700;min-height:44px;cursor:pointer}
.decision-method {align-self:start}
@media(max-width:700px) {
 body {padding-bottom:calc(72px + env(safe-area-inset-bottom))}
 .mobile-bottom-nav {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:fixed;bottom:0;inset-inline:0;background:#fff;border-top:1px solid #d9dfdb;padding:6px 8px calc(6px + env(safe-area-inset-bottom));z-index:20}
 .mobile-bottom-nav a {display:flex;align-items:center;justify-content:center;min-height:48px;color:#102d31;font-weight:700;text-decoration:none;white-space:nowrap}
 body:has(input:focus,select:focus,textarea:focus,dialog[open]) .mobile-bottom-nav {display:none}
 .decision-hero {display:block;padding:1.25rem 1rem;margin:1rem 0}
 .decision-hero h1 {font-size:1.7rem;line-height:1.4;margin:.5rem 0}
 .decision-hero h1 br,.decision-hero .mobile-break {display:none}
 .decision-hero .lead {font-size:1rem;margin:.5rem 0}
 .decision-hero>ol {display:none}
 .decision-workspace {gap:1rem;margin-top:1rem}
 .decision-theme-grid {grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}
 .decision-theme-grid label {padding:.7rem;min-height:64px}
 .decision-theme-grid small {display:none}
 .decision-method {padding:.75rem;margin:0}
 .decision-output {padding-block:1rem}
 .decision-output h2 {font-size:1.5rem;line-height:1.4;margin:0}
 .workspace-add,.workspace-stop {grid-template-columns:minmax(0,1fr)}
 .workspace-stop label {font-weight:700}
 .workspace-stop>a,.workspace-stop>button {justify-self:stretch;text-align:center}
 .workspace-course {padding:1rem}
}
@media print { .mobile-bottom-nav,.mast,.tool-nav,[data-workspace-fields],.workspace-actions,[data-workspace-import],[data-travel-workspace] details,[data-travel-workspace] button {display:none!important} .workspace-course {break-inside:avoid} }
@media(max-width:640px){.mast .primary-nav{display:none}.mast{grid-template-columns:minmax(0,1fr) auto}.mobile-bottom-nav a{white-space:normal;text-align:center;padding:8px 4px;line-height:1.3}body{padding-bottom:calc(6.5rem + env(safe-area-inset-bottom))}}

/* A4–A6: five equally sized themes, readable headings and menu target. */
body[data-path="/"] .theme-route {grid-column:auto}
body[data-path="/"] .theme-route:nth-child(-n+2) {grid-column:auto}
.site-menu>summary {min-width:44px;justify-content:center}
.guide-hero h1,.theme-hero h1,.live-tool-hero h1,.theme-route h3 {color:var(--ink)}
@media(min-width:769px) and (max-width:1100px) {body[data-path="/"] .theme-route-grid {grid-template-columns:repeat(6,minmax(0,1fr))}body[data-path="/"] .theme-route,body[data-path="/"] .theme-route:nth-child(-n+2) {grid-column:span 2}body[data-path="/"] .theme-route:nth-child(n+4) {grid-column:span 3}}
@media(max-width:768px) {body[data-path="/"] .theme-route-grid {grid-template-columns:1fr}body[data-path="/"] .theme-route {grid-column:auto}}

/* Source-dependent copy is hidden even before the server availability gate runs. */
[data-source-ids][hidden]{display:none!important}
.source-status,.source-checking{font-size:12px;line-height:1.7}
.source-checking a{overflow-wrap:anywhere}

.region-tile-picker{margin:1rem 0}.region-tile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.region-tile-grid button,.region-tile-back{font:inherit;min-width:44px;min-height:48px;padding:.65rem .4rem;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);cursor:pointer;overflow-wrap:anywhere}.region-tile-grid button[aria-pressed="true"]{border:2px solid var(--lake);background:var(--paper)}.region-tile-back{margin:0 0 .75rem}.region-tile-grid small{display:block;font-size:.75rem}.atlas-cell{pointer-events:none}.text-credit a,.credit-details a,.credit-details>summary,.freshness-strip a,.photo-credit-link{display:inline-flex;align-items:center;min-width:44px;min-height:44px}.region-tile-picker h3{font-family:inherit;font-size:1.1rem}@media(max-width:480px){.region-tile-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,5rem),1fr))}}
/* B: the source gate and reading panels have independent visibility. */
.travel-reading .journey-steps {margin:0}
.travel-reading .region-chapter {margin:0 0 2rem}
.guide-page>.guide-region-photo,.guide-page>.guide-photo-main {margin:1rem 0}
.guide-page>.guide-region-photo img,.guide-page>.guide-photo-main img {max-height:260px;object-fit:cover;width:100%}
.place-background>summary {min-height:44px;cursor:pointer;padding-block:.6rem}
.journey-tools>.reading-tabs {margin-top:1rem}
@media(max-width:700px){.guide-hero,.city-hero.rich,.region-hero {gap:1rem}.travel-reading [data-reading-panel] {padding-block:1rem}.reading-tab-nav {margin-inline:0}.reading-tab-nav a {padding-inline:.7rem}.guide-hero .guide-signal {padding:1rem}.guide-hero .fit-list {display:flex;flex-wrap:wrap;gap:.35rem}}
@media print {.place-background::details-content {display:block}.journey-tools [data-reading-panel] {display:block!important}}
.detail-support {max-width:1240px;margin:1rem auto 5rem;border-top:1px solid var(--line)}
.detail-support>summary {min-height:48px;padding:.75rem 1rem;cursor:pointer;font-weight:700}
.detail-support .related-services {margin-block:1rem}
@media print {.detail-support::details-content {display:block}}
.hero-background>summary {min-height:44px;cursor:pointer;padding:.5rem 0;font-weight:700}
.travel-reading .region-fit-band {display:block;padding:1rem 0}
.region-background>summary,.region-plan-details>summary {min-height:44px;padding:.65rem 0;cursor:pointer;font-weight:700}
.rich-region-page>.region-stage-desk {padding:.75rem 1rem;margin-block:1rem}
.rich-region-page>.region-stage-desk .region-quick-save {display:flex;margin:0}
.rich-region-page>.region-stage-desk [data-region-stage-status]:empty {display:none}
