/* style.css — scoped rules; shared reading tokens live in layout.css. */
:root {--paper:#fbf2e5; --white:#fffdf8; --ink:#443329; --muted:#685747; --red:#a3422d; --red-soft:#f4dfd1; --gold:#aa7b35; --line:#e8d8c1; --accent:#846139; --serif:'Noto Serif SC','Songti SC','STSong','SimSun',serif; --sans:-apple-system,BlinkMacSystemFont,'Segoe UI','Microsoft YaHei','PingFang SC',sans-serif; font:15px var(--sans); color:var(--ink); background:var(--paper); color-scheme:light}
* {box-sizing:border-box}
body {margin:0; line-height:1.65}
button, input, select, textarea {font:inherit}
button, a, input, summary, select {touch-action:manipulation}
button {color:inherit; cursor:pointer; border:0; background:none}
a {color:inherit; text-decoration:none}
a:hover, button:hover {color:var(--red)}
p, h1, h2, h3, h4 {margin:0}
h1, h2, h3, h4 {line-height:1.4; text-wrap:pretty}
p {overflow-wrap:anywhere}
h1, h2 {font-family:var(--serif); font-weight:650}
h1 {font-size:2.6rem}
h2 {font-size:1.65rem}
h3 {font-size:1.1rem}
small {font-size:.82rem}
ul, ol {padding-left:21px; margin:0}
li+li {margin-top:10px}
img {display:block; width:100%; height:auto; object-fit:cover}
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible, textarea:focus-visible {outline:3px solid #a87529; outline-offset:4px}
summary {cursor:pointer; list-style:none; min-height:44px; position:relative; padding-right:30px}
summary::-webkit-details-marker {display:none}
summary:after {content:'+'; font-size:1.25rem; position:absolute; right:0; top:50%; transform:translateY(-50%); color:var(--muted)}
details[open]>summary:after {content:'−'}
summary:hover {color:var(--red)}
.wrap {max-width:1160px; margin-inline:auto; padding-inline:28px}
.icon {width:19px; height:19px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; vertical-align:middle; flex-shrink:0}
.muted {color:var(--muted)}
.eyebrow {font-size:.7rem; letter-spacing:.17em; line-height:1.6; color:var(--red); font-weight:650}
.btn, .text-link, .text-button {display:inline-flex; align-items:center; justify-content:center; gap:7px; min-height:44px; line-height:1.5}
.btn {border:1px solid var(--line); background:var(--white); border-radius:9px; padding:9px 15px; font-size:.9rem}
.btn:hover {border-color:#ac9e86; background:#f4efe4}
.btn.primary {background:var(--red); color:white; border-color:var(--red)}
.btn.small {font-size:.84rem; padding:7px 11px}
.text-link, .text-button {font-size:.86rem; color:var(--red); font-weight:550}
.icon-button {width:44px; height:44px; padding:0; border:0; background:transparent}
.pill {display:inline-block; font-size:.72rem; line-height:1.45; padding:3px 7px; border-radius:4px; background:#f0e5d3; color:var(--muted)}
.pill.gold {background:#f3ead6; color:#7a5b25}
.pill.green {background:#efe5cc; color:#725a30}
.map-note, .page-note {font-size:.79rem; color:var(--muted); line-height:1.8}
.page-note {padding:30px 0; border-top:1px solid var(--line); margin-top:36px}
.skip {position:fixed; z-index:99; left:12px; top:-80px; background:white; padding:12px; border:2px solid var(--red)}
.skip:focus {top:8px}
.site-header {border-bottom:1px solid var(--line); background:var(--paper)}
.header-inner {display:flex; align-items:center; gap:30px; min-height:78px}
.brand {display:flex; align-items:center; gap:10px; margin-right:auto}
.brand-seal {background:var(--red); color:#fffbeb; font-family:var(--serif); font-size:22px; width:36px; height:40px; display:grid; place-items:center; border-radius:3px}
.brand strong {display:block; font-family:var(--serif); font-size:1.15rem; letter-spacing:.08em}
.brand small {display:block; font-size:.62rem; letter-spacing:.08em; color:var(--muted); margin-top:2px}
.main-nav {display:flex; gap:8px}
.main-nav a {display:flex; gap:8px; align-items:center; justify-content:center; min-width:94px; min-height:44px; font-size:.93rem; border-radius:8px; color:var(--muted)}
.main-nav a.active {background:var(--red-soft); color:var(--red); font-weight:650}
.foot {margin-top:34px; padding-top:22px; padding-bottom:25px; border-top:1px solid var(--line); display:flex; justify-content:space-between; gap:20px; font-size:.72rem; color:var(--muted)}
.storage-warning {padding:8px 20px; background:#f8eacb; color:#754c20; font-size:.85rem; text-align:center}
.overview-hero {padding:42px 0 38px; display:grid; grid-template-columns:1.1fr 1fr; gap:45px; align-items:center}
.overview-hero h1 {font-size:3.3rem; margin:10px 0 13px}
.hero-sub {color:var(--muted); font-size:.97rem}
.trip-date {margin-top:23px; font-size:.92rem; font-weight:550}
.trip-date span {margin-left:14px; color:var(--muted); font-weight:400}
.trip-facts {display:flex; gap:23px; margin-top:16px; font-size:.8rem; color:var(--muted)}
.trip-facts strong {font-family:var(--serif); font-size:1.8rem; color:var(--ink); margin-right:3px}
.hero-links {display:flex; gap:24px; margin-top:13px}
.hero-photos {display:grid; grid-template-columns:1.1fr 1fr; gap:12px; height:290px}
.hero-photos>div {position:relative; overflow:hidden; border-radius:90px 90px 6px 6px}
.hero-photos>div+div {margin-top:42px}
.hero-photos img {height:100%}
.hero-photos span {position:absolute; bottom:0; left:0; right:0; color:white; font-size:.8rem; text-align:center; padding:34px 10px 13px; background:linear-gradient(transparent,#0009)}
.section-title {display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:22px}
.section-title h2 {margin-top:4px}
.section-title>.muted {font-size:.78rem}
.day-grid {display:grid; grid-template-columns:repeat(4,minmax(0,1fr))}
.day-card {display:block; background:var(--white); border-radius:12px; overflow:hidden; border:1px solid var(--line); transition:transform .18s,box-shadow .18s}
.day-card:hover {transform:translateY(-3px); color:inherit; box-shadow:0 8px 25px #44332910}
.day-card-photo {height:148px; position:relative}
.day-card-photo img {height:100%}
.day-card-photo:after {position:absolute; inset:0; content:''; background:linear-gradient(#0003,transparent 50%,#0006)}
.day-number {position:absolute; top:8px; left:12px; font-family:var(--serif); font-size:1.8rem; color:#fff; z-index:1}
.card-date {position:absolute; bottom:10px; left:14px; color:white; font-size:.83rem; font-weight:600; z-index:1}
.day-card-copy {padding:15px 15px 10px}
.card-cities {font-size:.66rem; line-height:1.55; color:var(--red); min-height:22px}
.day-card h3 {font-family:var(--serif); font-size:1.25rem; margin:3px 0 6px}
.day-card-theme {font-size:.81rem; color:var(--muted); min-height:42px}
.card-practical {border-top:1px solid #f0e2ce; margin-top:12px; padding-top:9px; display:flex; flex-direction:column; gap:5px; font-size:.73rem; color:var(--muted); min-height:68px}
.card-practical span:last-child {color:var(--accent); font-variant-numeric:tabular-nums}
.card-enter {font-size:.77rem; color:var(--red); display:flex; justify-content:flex-end; align-items:center; padding:8px 0 4px}
.card-enter .icon {width:15px; height:15px}
.trip-map-section {margin-top:54px; scroll-margin-top:20px}
.map-layout {display:grid; grid-template-columns:minmax(0,1fr) 270px; gap:25px}
.embedded-map {border:1px solid var(--line); border-radius:14px; overflow:hidden; background:#e9ece4; min-height:440px}
.embedded-map iframe {display:block; width:100%; height:100%; min-height:440px; border:0}
.trip-connections {padding:12px 0}
.trip-connections>p {font-size:.8rem; color:var(--red); margin-bottom:6px}
.trip-connections h3 {font-family:var(--serif); font-size:1.45rem; line-height:1.5; margin-bottom:16px}
.trip-connections>div {display:flex; gap:14px; padding:10px 0; border-bottom:1px solid var(--line)}
.trip-connections>div>span {font-size:.72rem; color:var(--red); width:42px; flex-shrink:0; padding-top:3px}
.trip-connections strong {font-size:.89rem; font-weight:500; display:block}
.trip-connections small {color:var(--muted); display:block; font-size:.75rem}
.trip-map-section>.map-note {margin:12px 0 44px}
.stays {display:grid; grid-template-columns:1fr 1fr; gap:20px}
.stay-card {background:var(--white); border:1px solid var(--line); border-radius:12px; overflow:hidden; display:grid; grid-template-columns:150px 1fr; gap:22px; align-items:center; padding-right:16px}
.stay-card>div {padding:17px 0}
.stay-card h3 {margin:6px 0 7px; font-size:1rem; line-height:1.5}
.stay-card p:not(.eyebrow) {font-size:.79rem; color:var(--muted)}
.stay-photo {height:100%; min-height:178px; border-radius:0!important}
.stay-photo img {height:100%}
.stay-photo>span {display:none}
.flight-card {border:1px solid var(--line); border-radius:12px; margin-top:20px; padding:6px 22px 16px; background:var(--white)}
.flight-card>summary {display:flex; gap:13px; align-items:center; min-height:52px; font-weight:600}
.flight-grid {display:grid; grid-template-columns:1fr 1fr; gap:32px; padding:12px 0}
.flight-grid>div+div {border-left:1px solid var(--line); padding-left:32px}
.flight-grid p {font-size:.75rem; color:var(--red); margin-bottom:6px}
.flight-grid>div>div {display:flex; align-items:center; justify-content:space-between; gap:14px}
.flight-grid strong {font-size:1.6rem; font-weight:500; font-variant-numeric:tabular-nums}
.flight-grid small {font-weight:400; font-size:.75rem; color:var(--muted); display:block}
.date-nav {display:flex; overflow-x:auto; padding:14px 0 11px; position:sticky; top:0; z-index:8; background:var(--paper); border-bottom:1px solid var(--line)}
.date-link {flex:1; text-align:center; color:var(--muted); white-space:nowrap}
.date-link strong {font-size:.98rem; display:block; font-variant-numeric:tabular-nums; line-height:1.4}
.date-link span {font-size:.72rem}
.date-link.active {background:var(--red); color:white}
.day-heading {display:grid; grid-template-columns:minmax(0,1fr) 180px; gap:24px; align-items:center; padding:27px 0 22px}
.day-heading h1 {font-size:2.3rem; margin:4px 0 7px}
.day-heading>div>p:not(.eyebrow) {font-size:.98rem}
.intensity {display:block; font-size:.77rem; color:var(--muted); margin-top:10px}
.day-heading-photo {height:133px; overflow:hidden; padding:0; border-radius:12px}
.day-heading-photo img {height:100%}
.day-facts {display:grid; grid-template-columns:1fr 1fr; border-radius:9px; padding:13px 19px; gap:20px}
.day-facts>div {display:flex; align-items:baseline; gap:15px; flex-wrap:wrap}
.day-facts>div+div {border-left:1px solid #dfc9a8; padding-left:20px}
.day-facts span {font-size:.75rem; color:var(--accent)}
.day-facts strong {font-size:.92rem; font-weight:600; line-height:1.5; font-variant-numeric:tabular-nums}
.daily-toolbar {display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line)}
.view-tabs {display:flex}
.view-tab {display:flex; align-items:center; gap:7px; border-bottom:3px solid transparent; color:var(--muted)}
.view-tab.active {border-bottom-color:var(--red); font-weight:600}
.toolbar-note {font-size:.75rem; color:var(--muted)}
.day-key {font-size:.84rem; line-height:1.75; padding:16px 0 20px}
.selected-choice {display:flex; align-items:center; gap:8px; color:var(--red); font-size:.79rem; padding:12px 0 0}
.day-layout {display:grid; grid-template-columns:minmax(0,1fr) 268px; align-items:start}
.day-main {min-width:0}
.progress-area {display:flex; align-items:center; font-size:.76rem; color:var(--muted)}
.progress-area strong {color:var(--accent); font-weight:500}
.progress-track {height:4px; flex:1; border-radius:3px; overflow:hidden; max-width:150px}
.progress-track span {display:block; height:100%; background:var(--accent)}
.timeline-note {font-size:.73rem; color:var(--muted); line-height:1.75; margin:10px 0 15px}
.timeline-phase>h2 {font-family:var(--sans); font-size:.89rem; color:var(--red); font-weight:600; padding:15px 0 14px; display:flex; align-items:center; gap:14px}
.timeline-phase>h2:after {content:''; height:1px; background:var(--line); flex:1}
.event {position:relative; display:grid; grid-template-columns:35px minmax(0,1fr); gap:11px; padding:0 0 20px}
.event:before {content:''; position:absolute; left:17px; top:31px; bottom:0; width:1px; background:var(--line)}
.event-check {width:35px; height:44px; position:relative; display:grid; place-items:center; cursor:pointer; margin-top:2px}
.event-check input {position:absolute; opacity:0; width:100%; height:100%; margin:0; cursor:pointer}
.event-check>span {width:21px; height:21px; border:1px solid #c9b696; border-radius:50%; display:grid; place-items:center; background:var(--paper); pointer-events:none}
.event-check .icon {width:13px; height:13px; opacity:0}
.event-check input:checked+span {background:var(--accent); border-color:var(--accent); color:white}
.event-check input:checked+span .icon {opacity:1}
.event-check input:focus-visible+span {outline:3px solid var(--gold); outline-offset:4px}
.event-content {background:var(--white); border:1px solid var(--line); padding:15px 18px; min-width:0}
.event-meta {display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:7px}
.event-time {font-weight:650; color:var(--red); font-variant-numeric:tabular-nums}
.event-type {font-size:.7rem; color:var(--muted); border-left:1px solid var(--line); padding-left:8px}
.event h3 {line-height:1.65; font-weight:600}
.event.done .event-content {background:#f5ead8; border-color:#dfceb1}
.event.done h3, .event.done .event-time {color:#7b6b57}
.transport-event .event-content, .rest-event .event-content {background:transparent; border-color:transparent; border-bottom:1px solid var(--line); border-radius:0; padding-top:11px; padding-bottom:15px}
.rest-event h3 {color:var(--accent); font-weight:500}
.event.optional .event-content {border-style:dashed; border-color:#bfa87b; background:#fbf5e8}
.event-photos {overflow-x:auto; scrollbar-width:thin; margin:12px 0 6px; padding-bottom:5px}
.photo-button {display:block; position:relative; overflow:hidden; padding:0; text-align:left; border-radius:7px; flex:0 0 136px; background:#e9e5da}
.photo-button img {height:100%}
.photo-button>span {position:absolute; inset:auto 0 0; padding:24px 8px 7px; background:linear-gradient(transparent,#000b); color:white; font-size:.78rem; line-height:1.35}
.single-photo .photo-button {flex:1; height:164px}
.event-places {display:flex; align-items:center; gap:2px 10px; flex-wrap:wrap; margin-top:5px}
.place-link {min-height:36px; display:inline-flex; align-items:center; gap:2px; padding:3px 0; font-size:.8rem; color:#656e61; text-align:left}
.place-link .icon {width:13px; height:13px; color:#a29e8f}
.place-map {margin-left:auto; min-height:40px; display:flex; align-items:center; gap:4px; color:var(--red); font-size:.8rem}
.place-map .icon {width:16px; height:16px}
.condition {padding:9px 12px; background:#f3ede1; color:#765e37; border-radius:5px; font-size:.8rem; margin-top:11px; line-height:1.75}
.selection-note {padding:9px 12px; border-radius:5px; font-size:.8rem; margin-top:11px; line-height:1.75}
.selection-note {background:var(--red-soft); color:var(--red)}
.event-detail {font-size:.82rem; margin-top:5px}
.event-detail summary {display:flex; align-items:center; border-top:1px solid var(--line); color:var(--accent); padding-top:4px}
.detail-body {padding-top:13px; line-height:1.8; font-size:.84rem}
.detail-body p+p {margin-top:9px}
.detail-body a {color:var(--red)}
.meal-preview {font-size:.83rem; margin:10px 0 7px}
.meal-preview>span {color:var(--red); font-size:.72rem; margin-right:3px}
.meal-preview small {display:block; color:var(--muted); margin-top:4px; font-size:.76rem}
.food-row {padding:14px 0; border-bottom:1px solid var(--line)}
.food-row:first-child {padding-top:0}
.food-row:last-child {border-bottom:0}
.food-row h4 {font-size:.95rem; margin:4px 0 6px}
.food-row p {font-size:.81rem; margin-top:4px}
.food-priority {font-size:.73rem; color:var(--red)}
.food-row .budget {color:var(--accent); font-weight:550}
.food-actions {gap:6px 15px}
.food-actions .text-link, .food-actions .text-button {font-size:.76rem}
.day-end {display:flex; align-items:center; justify-content:space-between; gap:12px; border-top:1px solid var(--line); padding-top:12px; font-size:.76rem; color:var(--muted)}
.day-end .text-button {color:var(--muted); font-size:.77rem}
.prev-next {display:flex; justify-content:space-between; gap:20px; margin-top:33px; padding-top:20px; border-top:1px solid var(--line)}
.day-support {position:sticky; min-width:0}
.support-heading {font-size:.74rem; color:var(--muted); letter-spacing:.08em; margin-bottom:12px}
.support-card {border-top:1px solid var(--line); padding:7px 0}
.support-card summary {padding-block:8px; display:flex; justify-content:center; flex-direction:column; min-height:56px}
.support-card summary span {font-size:.91rem; font-weight:550}
.support-card summary small {font-size:.74rem; color:var(--muted); margin-top:2px}
.support-card .detail-body {padding:6px 0 16px}
.support-card ul.detail-body, .support-card ol.detail-body {padding-left:20px}
.hotel-shortcut {display:flex; align-items:center; gap:11px; text-align:left; border:1px solid var(--line); border-radius:9px; padding:10px; margin:15px 0; width:100%; background:var(--white)}
.hotel-shortcut img {width:58px; height:72px; flex-shrink:0; border-radius:5px}
.hotel-shortcut small {display:block; color:var(--muted); font-size:.7rem}
.hotel-shortcut strong {font-size:.77rem; display:block; margin:4px 0}
.full-guide {max-height:600px; overflow:auto}
.table-scroll {overflow:auto}
.full-guide table {border-collapse:collapse; min-width:550px; font-size:.78rem}
.full-guide td, .full-guide th {border:1px solid var(--line); padding:8px; vertical-align:top}
.full-guide p {margin-bottom:12px}
.full-guide a {overflow-wrap:anywhere}
.full-guide code {font-family:inherit; background:#eeece3; padding:1px 4px}
.route-head {display:flex; justify-content:space-between; align-items:baseline; gap:15px}
.route-head h2 {font-size:1.35rem}
.route-head>span {font-size:.72rem; color:var(--muted)}
.route-filters {display:flex; gap:6px; flex-wrap:wrap; margin:14px 0 7px}
.filter {padding:7px 14px; min-height:40px; display:grid; place-items:center; font-size:.8rem; border-radius:7px; background:#f0e2ce; color:var(--muted)}
.filter.active {background:var(--accent); color:white}
.route-stops {list-style:none; padding:0}
.route-stop {position:relative; padding-left:38px; margin:0!important}
.route-stop:before {content:''; position:absolute; left:13px; top:0; bottom:0; width:1px; background:#ccd2c3}
.route-stop:last-child:before {bottom:50%}
.route-item {display:grid; grid-template-columns:68px minmax(0,1fr) 43px; align-items:center; gap:14px; padding:15px 0}
.route-number {position:absolute; left:0; display:grid; place-items:center; width:27px; height:27px; border:1px solid #d4ba91; border-radius:50%; background:var(--paper); font-size:.73rem; color:var(--accent)}
.route-phase {padding:19px 0 2px; font-size:.76rem; color:var(--red); font-weight:650}
.route-photo {padding:0; width:68px; height:68px; border-radius:9px; overflow:hidden}
.route-photo img {height:100%}
.route-copy {min-width:0}
.route-copy>button {display:block; text-align:left; padding:0; min-height:32px; font-weight:550; font-size:.97rem}
.route-copy>small {display:block; font-size:.73rem; color:var(--muted); overflow-wrap:anywhere}
.return-label {display:inline-block; font-size:.69rem; color:#766137; margin-top:3px; margin-right:7px}
.route-map {display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:48px; color:var(--red); font-size:.69rem; border:1px solid var(--line); border-radius:7px}
.route-map .icon {width:18px; height:18px}
.route-leg {border-bottom:1px solid var(--line); padding-bottom:4px}
.route-leg .text-link {min-height:30px; font-size:.73rem; font-weight:400; color:var(--muted)}
.route-stop.optional .route-item {border:1px dashed #c5ae78; border-radius:8px; padding-inline:9px; background:#f9f1df}
.route-stops+.map-note {margin-top:21px}
.return-stop .route-photo {opacity:.85}
.prep-heading {padding:38px 0 30px}
.prep-heading h1 {font-size:2.4rem; margin:6px 0 11px}
.prep-heading>p:last-child {font-size:.88rem}
.prep-layout {display:grid; grid-template-columns:minmax(0,1.7fr) minmax(250px,1fr); gap:40px}
.todo-card {background:var(--white); border:1px solid var(--line); padding:22px; border-radius:12px}
.todo-card .section-title {margin-bottom:10px; align-items:center}
.todo-card h2 {font-size:1.4rem}
.todo-card .section-title>span {font-size:.83rem; color:var(--accent)}
.todo-row {display:flex; gap:13px; padding:15px 0; border-top:1px solid var(--line); align-items:flex-start; font-size:.85rem; line-height:1.85; cursor:pointer}
.todo-row input {flex:0 0 20px; width:20px; height:20px; accent-color:var(--accent); margin:4px 0 0}
.todo-row:has(input:checked)>span {color:#838b7e; text-decoration:line-through}
.prep-note {background:#f2e2c8; padding:23px; border-radius:12px; margin-bottom:22px}
.prep-note h2 {font-size:1.4rem; margin:5px 0 13px}
.prep-note ul {font-size:.83rem}
.prep-note .condition {background:#f6f4e9}
.word-row {display:flex; align-items:center; justify-content:space-between; gap:13px; font-size:.85rem; padding:6px 0}
.word-row span {overflow-wrap:anywhere}
.forecast-row {padding:13px 0; border-bottom:1px solid var(--line)}
.forecast-row h3 {margin-bottom:6px}
.place-index {margin-top:35px}
.index-links {display:flex; flex-wrap:wrap; gap:2px 21px; margin:5px 0 16px}
.index-links .place-link {min-height:44px}
.index-links~h3 {margin-top:15px}
dialog {width:min(620px,calc(100vw - 32px)); max-height:90dvh; border:0; padding:0; border-radius:15px; background:var(--white); color:var(--ink); overflow:auto; overscroll-behavior:contain; box-shadow:0 24px 100px #1d251c55}
dialog::backdrop {background:#26302580; backdrop-filter:blur(3px)}
body:has(dialog[open]) {overflow:hidden}
.dialog-top {position:sticky; top:0; z-index:2; display:flex; justify-content:space-between; gap:18px; align-items:center; padding:17px 23px; background:var(--white); border-bottom:1px solid var(--line)}
.dialog-top h2 {font-size:1.4rem; margin-top:3px}
.dialog-top .eyebrow {font-size:.67rem}
.dialog-image {width:100%; height:300px; object-fit:contain; background:#e8e5db}
.dialog-body {padding:20px 24px 25px}
.dialog-body>p {font-size:.87rem; margin-bottom:13px}
.dialog-body .jp-name {font-size:1.1rem; font-weight:600; margin-bottom:11px}
.place-note {padding:12px; background:#f6ead7; border-radius:7px}
.dialog-actions {display:flex; gap:10px; margin:18px 0 13px}
.dialog-actions>a, .dialog-actions>button {flex:1}
.dialog-body .map-note {font-size:.74rem}
.photo-credit {font-size:.74rem; color:var(--muted); border-top:1px solid var(--line); padding-top:7px}
.photo-credit summary {display:flex; align-items:center}
.photo-credit p {margin:8px 0}
.photo-credit a {color:var(--red)}
.option-fields {padding:8px 0 19px}
.option-fields>p {font-size:.84rem; line-height:1.8; margin-bottom:17px}
.option-row {display:grid; grid-template-columns:22px minmax(0,1fr); column-gap:13px; align-items:start; padding:15px 13px; margin:9px 0; border:1px solid var(--line); border-radius:9px; font-size:.94rem; cursor:pointer}
.option-row:has(input:checked) {border-color:#bb926f; background:#f8f0e4}
.option-row input {width:19px; height:19px; margin:3px 0; accent-color:var(--red)}
.option-row small {grid-column:2; color:var(--muted); font-size:.79rem; margin-top:4px; line-height:1.8}
.option-select {display:block; width:100%; min-height:46px; padding:8px 35px 8px 12px; border:1px solid #cbc9be; background:var(--white); color:var(--ink); border-radius:7px; margin:7px 0 16px; font-size:.9rem}
.option-fields>label.small {font-size:.82rem; color:var(--muted); display:block; margin-top:15px}
.dialog-footer {border-top:1px solid var(--line); padding-top:20px; margin-top:15px}
.dialog-footer button {width:100%}
.options-dialog .dialog-body>details {border-top:1px solid var(--line); margin-top:5px; padding-top:5px}
.options-dialog summary {display:flex; align-items:center; font-size:.87rem}
.options-dialog .event-photos {margin-bottom:15px}
#toast {position:fixed; left:50%; bottom:24px; transform:translate(-50%,20px); max-width:calc(100vw - 32px); background:#4a3529; color:#fffdf3; border-radius:9px; padding:12px 17px; box-shadow:0 5px 20px #0002; opacity:0; pointer-events:none; transition:opacity .2s,transform .2s; z-index:100; font-size:.85rem; width:max-content; line-height:1.65}
#toast.show {opacity:1; transform:translate(-50%,0); pointer-events:auto}
#toast button {color:#fff0b6; font-weight:600; text-decoration:underline; margin-left:14px; min-height:32px}
@media(max-width:960px) {
  .wrap {padding-inline:22px}
  .overview-hero {gap:28px}
  .overview-hero h1 {font-size:2.6rem}
  .hero-photos {height:255px}
  .day-grid {grid-template-columns:repeat(2,minmax(0,1fr))}
  .day-card-photo {height:185px}
  .map-layout {grid-template-columns:minmax(0,1fr) 230px; gap:20px}
  .stay-card {grid-template-columns:110px 1fr; gap:15px}
  .day-layout {gap:24px}
  .day-heading {grid-template-columns:minmax(0,1fr) 160px}
  .day-facts>div {display:block}
  .day-facts strong {display:block; margin-top:3px}
  .prep-layout {gap:24px; grid-template-columns:1.4fr 1fr}
}
@media(max-width:720px) {
  .wrap {padding-inline:19px}
  .header-inner {min-height:61px; gap:12px}
  .brand-seal {width:27px; height:31px; font-size:19px}
  .brand strong {font-size:.99rem; letter-spacing:.03em}
  .brand small {font-size:.57rem}
  .brand {gap:8px}
  .main-nav {position:fixed; z-index:20; left:0; right:0; bottom:0; gap:0; padding:4px 12px calc(5px + env(safe-area-inset-bottom)); border-top:1px solid var(--line); background:#fff8edfa; box-shadow:0 -4px 16px #44332907; backdrop-filter:blur(8px)}
  .main-nav a {flex:1; min-height:53px; min-width:0; border-radius:8px; flex-direction:column; gap:2px; font-size:.71rem}
  .main-nav a.active {background:transparent; color:var(--red)}
  .main-nav a.active .icon {background:var(--red-soft); box-shadow:0 0 0 5px var(--red-soft); border-radius:4px}
  .main-nav .icon {width:21px; height:21px; margin-bottom:3px}
  .foot {padding-bottom:calc(85px + env(safe-area-inset-bottom)); flex-direction:column; gap:4px; font-size:.68rem; margin-top:20px}
  .overview-hero {grid-template-columns:1fr; gap:22px; padding:26px 0 29px}
  .overview-hero h1 {font-size:2.4rem; margin:8px 0 11px}
  .hero-sub {font-size:.83rem}
  .trip-date {font-size:.81rem; margin-top:16px}
  .trip-facts {gap:18px; font-size:.73rem; margin-top:10px}
  .trip-facts strong {font-size:1.5rem}
  .hero-links {margin-top:8px; gap:19px}
  .hero-links a {font-size:.77rem; min-height:38px}
  .hero-photos {height:133px; grid-template-columns:1.3fr 1fr; gap:10px}
  .hero-photos>div {border-radius:8px}
  .hero-photos>div+div {margin-top:0}
  .hero-photos span {font-size:.7rem; padding:22px 10px 7px}
  .hero-copy>.eyebrow {font-size:.61rem}
  .section-title {gap:12px; margin-bottom:15px; align-items:flex-start}
  .section-title h2 {font-size:1.4rem; margin-top:3px}
  .section-title>.muted {font-size:.67rem; max-width:99px; text-align:right; padding-top:8px}
  .section-title .eyebrow {font-size:.61rem}
  .day-card {border-radius:9px}
  .day-card-photo {height:116px}
  .day-number {font-size:1.5rem; top:5px; left:9px}
  .card-date {font-size:.72rem; left:10px; bottom:7px}
  .card-cities {min-height:31px}
  .day-card h3 {margin:2px 0 6px}
  .day-card-theme {min-height:46px; line-height:1.6}
  .card-practical {font-size:.65rem; gap:6px; margin-top:9px; padding-top:8px; min-height:82px; line-height:1.65}
  .trip-map-section {margin-top:34px}
  .map-layout {grid-template-columns:1fr; gap:8px}
  .embedded-map {min-height:370px; border-radius:10px}
  .embedded-map iframe {min-height:370px}
  .trip-connections {padding:14px 0 0}
  .trip-connections h3 {font-size:1.15rem; line-height:1.6; margin:5px 0 13px}
  .trip-connections>div {gap:16px; padding:11px 0}
  .trip-connections strong {font-size:.86rem}
  .trip-connections small {font-size:.74rem}
  .trip-map-section>.map-note {margin-top:13px; margin-bottom:30px; font-size:.73rem}
  .stays {grid-template-columns:1fr; gap:13px}
  .stay-card {grid-template-columns:105px 1fr; gap:16px; padding-right:13px}
  .stay-card h3 {font-size:.94rem}
  .stay-photo {min-height:162px}
  .stay-card>div {padding:15px 0}
  .stay-card .text-link {font-size:.75rem}
  .flight-card {padding:5px 15px 15px; margin-top:14px}
  .flight-card>summary {font-size:.88rem; gap:9px}
  .flight-grid {grid-template-columns:1fr; gap:17px}
  .flight-grid>div+div {border-left:0; border-top:1px solid var(--line); padding:14px 0 0}
  .flight-grid>div>div {justify-content:flex-start}
  .flight-card>.map-note {font-size:.72rem; margin-top:8px}
  .page-note {font-size:.72rem; margin-top:26px; padding:24px 0 5px}
  .date-nav {margin-inline:-19px; padding:9px 15px 7px; gap:5px; scrollbar-width:none; scroll-padding:15px}
  .date-nav::-webkit-scrollbar {display:none}
  .date-link {flex:0 0 74px; padding:6px 2px; line-height:1.6}
  .day-heading {grid-template-columns:minmax(0,1fr) 87px; gap:15px; padding:21px 0 17px}
  .day-heading .eyebrow {letter-spacing:.06em}
  .day-heading h1 {margin:4px 0 6px}
  .day-heading>div>p:not(.eyebrow) {line-height:1.7}
  .day-heading-photo {height:109px; border-radius:8px}
  .intensity {line-height:1.6; margin-top:6px}
  .day-facts {gap:12px; padding:11px 13px; border-radius:8px; grid-template-columns:.95fr 1.15fr}
  .day-facts>div+div {padding-left:12px}
  .day-facts strong {line-height:1.7; margin-top:1px}
  .daily-toolbar {margin-top:9px}
  .daily-toolbar .btn {font-size:.76rem; padding:6px 10px; min-height:37px}
  .daily-toolbar .icon {width:16px; height:16px}
  .toolbar-note {font-size:.66rem}
  .day-key {line-height:1.75; padding:11px 0 16px}
  .selected-choice {font-size:.73rem; padding-top:9px; line-height:1.75; align-items:flex-start}
  .day-layout {grid-template-columns:1fr; gap:27px}
  .progress-track {height:3px}
  .timeline-note {margin:8px 0 11px; line-height:1.8}
  .timeline-phase>h2 {padding:12px 0; gap:11px}
  .event {padding-bottom:14px}
  .event:before {left:13px}
  .event-check {width:28px; height:44px}
  .event-check>span {width:20px; height:20px}
  .event-content {border-radius:9px}
  .event-meta {gap:5px 7px; margin-bottom:5px}
  .event-time {line-height:1.8}
  .event-type {padding-left:7px}
  .event h3 {line-height:1.75}
  .event .pill {font-size:.63rem; padding:2px 5px}
  .condition, .selection-note {padding:8px 10px}
  .transport-event .event-content, .rest-event .event-content {padding:9px 9px 11px}
  .event-photos {margin-top:10px}
  .event-photos .photo-button {flex-basis:118px}
  .single-photo .photo-button {flex:1; height:147px}
  .photo-button>span {padding:22px 8px 6px}
  .event-places {gap:1px 9px; margin-top:3px}
  .place-link {min-height:35px; font-size:.74rem}
  .place-map {font-size:.74rem; min-height:36px}
  .event-detail summary {min-height:42px}
  .meal-preview {font-size:.79rem; line-height:1.8}
  .meal-preview small {font-size:.7rem}
  .food-priority {font-size:.7rem}
  .food-actions {gap:2px 12px}
  .food-actions .text-link, .food-actions .text-button {font-size:.7rem; min-height:40px}
  .day-end {align-items:flex-start; flex-direction:column; gap:2px}
  .day-support {position:static; border-top:1px solid var(--line); padding-top:19px}
  .support-card summary {min-height:60px}
  .support-card summary span {font-size:.85rem}
  .support-card summary small {font-size:.71rem}
  .support-card .detail-body {line-height:1.9; padding-bottom:15px}
  .hotel-shortcut {margin-top:13px; padding:10px; gap:13px}
  .hotel-shortcut img {width:61px; height:69px}
  .hotel-shortcut small {font-size:.73rem}
  .hotel-shortcut strong {font-size:.87rem}
  .prev-next {margin-top:25px; padding-top:12px}
  .prev-next a {font-size:.79rem}
  .route-head h2 {font-size:1.2rem}
  .route-head>span {font-size:.65rem; max-width:112px; text-align:right}
  .route-filters {gap:5px; margin-top:12px}
  .filter {padding:6px 12px}
  .route-stop {padding-left:29px}
  .route-stop:before {left:10px}
  .route-number {width:22px; height:22px; font-size:.66rem}
  .route-item {grid-template-columns:55px minmax(0,1fr) 39px; gap:10px; padding:12px 0}
  .route-photo {width:55px; height:60px; border-radius:7px}
  .route-copy>button {min-height:30px; line-height:1.6}
  .route-copy>small {line-height:1.65}
  .return-label {font-size:.63rem}
  .route-map {font-size:.63rem; min-height:46px}
  .route-phase {font-size:.71rem; padding-top:16px}
  .route-stops+.map-note {font-size:.71rem}
  .prep-heading {padding:28px 0 25px}
  .prep-heading h1 {font-size:1.95rem}
  .prep-heading>p:last-child {font-size:.8rem}
  .prep-layout {grid-template-columns:1fr; gap:25px}
  .todo-card {padding:17px 15px}
  .todo-card h2 {font-size:1.25rem}
  .todo-row {gap:12px; padding:15px 0; font-size:.79rem}
  .prep-note {padding:21px}
  .prep-note h2 {font-size:1.3rem}
  .prep-note ul {font-size:.8rem}
  .place-index {margin-top:20px}
  .index-links {gap:2px 16px}
  .index-links .place-link {font-size:.77rem}
  .index-links~h3 {font-size:.95rem}
  dialog {width:100%; max-width:100%; max-height:92dvh; margin:auto 0 0; border-radius:18px 18px 0 0; padding-bottom:env(safe-area-inset-bottom)}
  .dialog-top {padding:14px 18px}
  .dialog-top h2 {font-size:1.26rem}
  .dialog-top .eyebrow {font-size:.62rem}
  .dialog-top .icon-button {width:39px; min-height:39px}
  .dialog-image {height:240px}
  .dialog-body {padding:17px 20px 25px}
  .dialog-body>p {font-size:.83rem}
  .dialog-body .jp-name {font-size:1rem}
  .dialog-actions {gap:9px}
  .dialog-actions .btn {font-size:.82rem; padding:9px 10px; min-height:45px}
  .dialog-body .map-note {font-size:.7rem}
  .photo-credit {font-size:.72rem}
  .option-row {font-size:.87rem; padding:14px 11px; column-gap:10px}
  .option-row small {font-size:.75rem; line-height:1.85}
  .option-fields>p {font-size:.79rem}
  .option-select {font-size:16px}
  .options-dialog summary {font-size:.8rem}
  #toast {bottom:calc(79px + env(safe-area-inset-bottom)); font-size:.78rem; padding:11px 14px}
  body:has(dialog[open]) #toast {bottom:25px}
}
@media(max-width:370px) {
  .wrap {padding-inline:15px}
  .date-nav {margin-inline:-15px}
  .day-heading {grid-template-columns:minmax(0,1fr) 75px; gap:12px}
  .day-heading h1 {font-size:1.7rem}
  .day-heading-photo {height:100px}
  .day-facts strong {font-size:.74rem}
  .event-content {padding-inline:11px}
  .day-grid {gap:10px}
  .day-card-copy {padding-inline:9px}
  .trip-facts {gap:14px}
  .trip-date span {margin-left:8px}
  .hero-links {gap:16px}
}
.google-map-preview {display:block; border:1px solid var(--line); border-radius:12px; overflow:hidden; align-self:start; background:var(--white)}
.google-map-preview img {width:100%; height:auto; object-fit:contain}
.google-map-preview>span {display:flex; align-items:center; justify-content:space-between; gap:15px; min-height:50px; padding:10px 15px; font-size:.76rem; color:var(--muted)}
.google-map-preview em {font-style:normal; color:var(--red)}
.meal-map .text-link {font-size:.79rem}
.map-layout {align-items:start}
.trip-connections h3 br:after {content:' '}
@media(max-width:720px) {
  .google-map-preview>span {font-size:.7rem; padding:10px 12px; gap:8px}
  .trip-map-section .section-title {display:block}
  .trip-map-section .section-title>.muted {display:block; max-width:none; text-align:left; margin-top:5px}
  .trip-connections h3 br {display:block}
  .meal-map .text-link {font-size:.75rem}
}
@media print {
  .google-map-preview {display:none!important}
}
.event-photos {display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); overflow:visible; gap:8px}
.event-photos:has(>button:nth-child(2):last-child) {grid-template-columns:repeat(2,minmax(0,1fr))}
.event-photos .photo-button {width:100%; height:112px; min-width:0}
.event-photos.single-photo {display:grid; grid-template-columns:minmax(0,1fr)}
.event-photos.single-photo .photo-button {height:164px}
.event-photos .photo-button>span {overflow-wrap:anywhere}
.event-places:empty {display:none}
@media(max-width:720px) {
  .event-photos {gap:7px}
  .event-photos .photo-button>span {font-size:.73rem; padding:25px 6px 6px}
  .event-photos.single-photo .photo-button {height:148px}
  .event-photos:has(>button:nth-child(2):last-child) .photo-button {height:100px}
}
@media print {
  @page {size:A4;margin:13mm}
  :root {font-size:10pt; background:white; color:#111}
  body {background:white}
  .wrap {max-width:none; padding:0}
  .site-header, .main-nav, .date-nav, .daily-toolbar, .view-tabs, .prev-next, .foot, .btn, .text-button, .hero-photos, .day-heading-photo, .photo-button, .event-photos, .event-check, .route-photo, .route-map, .route-leg, .embedded-map, .hotel-shortcut, #toast, dialog, .skip, .day-end {display:none!important}
  main {padding:0!important}
  .prep-layout, .map-layout, .stays, .overview-hero {display:block}
  .day-heading {display:block; padding:0 0 12px}
  .day-heading h1 {font-size:23pt}
  .day-facts {padding:10px; border:1px solid #bbb; background:white; margin-bottom:12px}
  .day-key {padding:7px 0}
  .event {display:block; padding:0 0 7px; break-inside:avoid}
  .event:before, .route-stop:before {display:none}
  .event-content {padding:8px 12px; background:white!important; border:1px solid #ccc!important}
  .event-content .event-places {display:none}
  .event-time {color:#222}
  .event-type {color:#555}
  .timeline-phase>h2 {font-size:12pt; padding:10px 0}
  .day-support {margin-top:15px}
  .support-card {break-inside:avoid}
  .support-card:not([open]), .support-heading {display:none}
  .full-guide {max-height:none; overflow:visible}
  .table-scroll {overflow:visible}
  .full-guide table {min-width:0; width:100%}
  .route-item {grid-template-columns:1fr; padding:8px 0}
  .route-number {position:static; display:inline-block}
  .route-stop {padding-left:0; break-inside:avoid}
  .route-copy small {font-size:9pt}
  .route-filters {display:none}
  .todo-row {break-inside:avoid; font-size:10pt; padding:9px 0}
  .todo-card {border:0; padding:0}
  .prep-heading {padding:0 0 15px}
  .prep-note {background:white; border:1px solid #ccc; margin-top:15px}
  .place-index {display:none}
  .day-grid {grid-template-columns:repeat(2,1fr); gap:10px}
  .day-card {break-inside:avoid}
  .day-card-photo {height:auto; background:#eee; min-height:35px}
  .day-card-photo img, .day-card-photo:after {display:none}
  .card-date, .day-number {position:static; display:inline-block; color:#111; margin-left:12px}
  .day-number {font-size:13pt}
  .day-card-copy {padding:10px}
  .day-card-theme, .card-practical {min-height:0}
  .day-card h3 {font-size:13pt}
  .card-enter, .hero-links {display:none}
  .overview-hero {padding:0 0 15px}
  .overview-hero h1 {font-size:25pt}
  .section-title, .trip-map-section {margin-top:15px}
  .trip-connections {columns:2}
  .trip-connections>div, .flight-card {break-inside:avoid}
  .stay-card {display:block; padding:14px}
  .page-note {margin-top:15px; padding:10px 0}
  a {color:inherit!important}
}
.night-options {border:0; padding:0; margin:0; min-width:0}
.night-options legend {font-size:.86rem; font-weight:600; padding:0 0 8px}
.option-row:has(input:disabled) {opacity:.55}
.night-facts {display:flex; flex-wrap:wrap; gap:5px 10px; margin:12px 0 5px; font-size:.82rem; color:var(--accent)}
.night-facts span {color:var(--muted); font-size:.73rem}
.night-adjust {font-size:.79rem; color:var(--red); text-align:left}
#event-kodaiji_night .photo-button img {object-position:50% 64%}
@media print {
  .night-adjust {display:none!important}
}

/* pilgrimage.css — scoped rules; shared reading tokens live in layout.css. */
:root {--dock-height:84px; --toolbar-height:62px}
.date-nav {height:var(--dock-height); align-items:center; padding-block:10px; scrollbar-width:none; gap:6px}
.date-nav::-webkit-scrollbar {display:none}
.date-link {min-width:78px; padding:8px 6px; border-radius:10px}
.date-link.active {box-shadow:0 3px 9px #a3422d17}
.daily-toolbar {position:sticky; top:var(--dock-height); z-index:7; background:var(--paper); min-height:var(--toolbar-height); margin-top:12px; padding-block:7px; gap:12px}
.view-tabs {padding:4px; gap:3px; background:#efdfca; border-radius:11px}
.view-tab {min-height:40px; min-width:92px; border:0; border-radius:8px; padding:7px 16px; font-size:.9rem}
.view-tab.active {color:var(--red); background:var(--white); box-shadow:0 2px 5px #4534210a}
.day-heading h1 {letter-spacing:.02em}
.day-heading .intensity {max-width:650px}
.day-facts {background:#f3e3cb}
.day-key {padding-block:14px 20px; color:#846139}
.day-layout {gap:30px}
.day-support {top:calc(var(--dock-height) + var(--toolbar-height) + 20px)}
.event, .shot-card, #day-support {scroll-margin-top:calc(var(--dock-height) + var(--toolbar-height) + 18px)}
.event-content {box-shadow:0 3px 14px #4a3b2203; border-radius:14px}
.event-time {font-size:.89rem}
.event h3 {font-size:1.06rem}
.event-detail summary {min-height:46px}
.transport-event .event-content, .rest-event .event-content {box-shadow:none}
.day-grid {gap:20px}
.day-card {box-shadow:0 5px 20px #4a3b2205}
.day-card-photo {overflow:hidden}
.day-card h3 {letter-spacing:.015em}
@media(hover:hover) {
  .day-card:hover {border-color:#c4ac94; box-shadow:0 8px 24px #4a3b220b}
  .shot-image:hover {border-color:#b59c80}
  .shot-index a:hover {background:#f6e8d6}
}
.view-pilgrimage .day-layout {display:block}
.view-pilgrimage .day-heading-photo {height:105px}
.view-pilgrimage .day-heading h1 {font-size:2.05rem}
.pilgrimage-intro {display:flex; justify-content:space-between; align-items:center; gap:16px; padding:5px 0 0}
.pilgrimage-intro h2 {font-size:1.65rem; letter-spacing:.04em}
.pilgrimage-intro p {font-size:.83rem; color:var(--muted); margin-top:5px}
.shot-progress {white-space:nowrap; font-size:.82rem; color:var(--accent); padding:8px 12px; background:#f1e5ce; border-radius:8px}
.shot-progress strong {font-variant-numeric:tabular-nums; margin-left:5px}
.shot-map-note {font-size:.78rem; color:var(--muted); margin:10px 0 23px}
.pilgrimage-layout {display:grid; grid-template-columns:210px minmax(0,1fr); gap:28px; align-items:start}
.shot-index {position:sticky; top:calc(var(--dock-height) + var(--toolbar-height) + 18px); max-height:calc(100dvh - var(--dock-height) - var(--toolbar-height) - 35px); overflow:auto; padding:4px 13px 8px 0}
.shot-index>p {font-size:.77rem; color:var(--muted); margin:0 0 10px 10px; letter-spacing:.06em}
.shot-index a {display:flex; gap:10px; align-items:center; padding:10px; border-radius:8px; min-height:46px; font-size:.85rem; line-height:1.7; margin-bottom:3px}
.shot-index a>span:first-child {color:var(--gold); font-size:.73rem; font-variant-numeric:tabular-nums; align-self:start; padding-top:3px}
.shot-index a>span:nth-child(2) {flex:1}
.shot-index a>small {color:var(--accent); font-size:.8rem}
.shot-index a[aria-current] {background:var(--red-soft); color:var(--red)}
.shot-index a.complete>span:first-child {color:var(--accent)}
.shot-index a.index-return {margin-top:13px; border-top:1px solid var(--line); border-radius:0; color:var(--red)}
.shot-mobile-jump {display:none}
.shot-card {background:var(--white); border:1px solid var(--line); border-radius:17px; margin-bottom:26px; padding:24px; box-shadow:0 5px 18px #54432c04; overflow:hidden}
.shot-heading {display:flex; justify-content:space-between; align-items:center; gap:12px}
.shot-heading>div {min-width:0}
.shot-work {display:flex; align-items:center; gap:9px; color:var(--red); font-size:.78rem; margin-bottom:6px}
.shot-work>span {color:var(--gold); font-variant-numeric:tabular-nums; font-size:.8rem}
.shot-work em {font-style:normal; font-size:.7rem; color:#795b26; background:#f4ecd9; padding:1px 6px; border-radius:4px}
.shot-heading h4 {font-family:var(--serif); font-size:1.45rem; line-height:1.55}
.shot-check {display:inline-flex; align-items:center; gap:7px; flex-shrink:0; font-size:.79rem; color:var(--muted); min-height:44px; padding:7px 10px; border:1px solid var(--line); border-radius:8px; cursor:pointer; background:#fcf5e9}
.shot-check input {width:18px; height:18px; margin:0; accent-color:var(--accent)}
.shot-done {border-color:#baa17b}
.shot-done .shot-check {background:#f1e5ce; color:var(--accent); border-color:#dac49d}
.shot-scene {font-size:.84rem; line-height:1.85; color:var(--muted); margin:8px 0 17px}
.shot-pair {display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:12px}
.shot-image {padding:0; display:block; border:1px solid var(--line); border-radius:9px; overflow:hidden; background:#f3e8d8; width:100%; min-width:0; text-align:left}
.shot-image img {width:100%; height:auto; aspect-ratio:16/10; object-fit:contain}
.shot-image>span {display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 11px; background:#faf0e1; color:var(--ink); font-size:.8rem}
.shot-image small {color:var(--red); font-size:.74rem}
.shot-caption {font-size:.79rem; color:var(--muted); line-height:1.8; margin:10px 0 0; padding-left:10px; border-left:2px solid #d8b984}
.shot-direction {display:flex; align-items:baseline; gap:13px; font-size:.88rem; line-height:1.95; margin:18px 0}
.shot-direction>span {flex-shrink:0; color:var(--accent); font-size:.76rem; font-weight:600}
.shot-direction>p {flex:1}
.shot-actions {display:flex; flex-wrap:wrap; gap:9px; align-items:center}
.shot-actions .btn {font-size:.85rem; padding:9px 13px}
.shot-return {margin-left:auto; display:inline-flex; align-items:center; gap:5px; font-size:.8rem; color:var(--muted); min-height:44px}
.shot-return .icon {width:15px}
.shot-evidence {margin-top:16px; border-top:1px solid var(--line); overflow-wrap:anywhere}
.shot-evidence summary {font-size:.79rem; color:var(--muted); display:flex; align-items:center; min-height:46px}
.shot-evidence>div {font-size:.8rem; line-height:1.8; color:var(--muted); padding:0 0 4px}
.shot-evidence p {margin:8px 0}
.shot-evidence a {color:var(--red)}
.evidence-actions {display:flex; align-items:center; gap:14px; margin-block:10px}
.shot-missing {min-height:180px; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:8px; padding:20px; background:#f3e8d8; border-radius:7px; font-size:.8rem; color:var(--muted)}
.optional-shots>summary, .shot-coverage>summary {font-size:.9rem; font-weight:600; padding:16px 30px 16px 0; border-top:1px solid var(--line)}
.optional-shots>summary small {color:var(--muted); margin-left:8px}
.optional-shots>.map-note {margin:3px 0 16px}
.optional-shots>.shot-card {border-style:dashed}
.shot-coverage>p {font-size:.84rem; color:var(--muted); margin:10px 0}
.pilgrimage-event-links {border-top:1px solid var(--line); margin-top:12px; padding-top:8px; display:flex; flex-wrap:wrap; gap:2px 12px; align-items:center}
.pilgrimage-event-links>span {font-size:.75rem; color:var(--muted); width:100%}
.pilgrimage-event-links>a {font-size:.84rem; color:var(--red); min-height:44px; display:inline-flex; align-items:center}
.place-pilgrimage {margin-top:22px}
.place-pilgrimage>h3 {margin-bottom:14px}
.place-pilgrimage .shot-card {padding:15px; box-shadow:none}
.place-pilgrimage .shot-heading h4 {font-size:1.2rem}
.place-pilgrimage .shot-direction {display:block}
.place-pilgrimage .shot-direction>span {display:block; margin-bottom:4px}
.shot-zoom-dialog {width:min(1100px,96vw); max-width:96vw; padding:0; border:1px solid var(--line); border-radius:16px; max-height:94dvh; overflow:auto; overscroll-behavior:contain; background:var(--white)}
.shot-zoom-dialog>img {width:100%; height:auto; max-height:64dvh; object-fit:contain; background:#302720}
.shot-zoom-dialog>p {padding:13px 20px; font-size:.8rem}
.shot-zoom-dialog .dialog-top h2 {font-size:1.2rem}
.shot-zoom-dialog::backdrop {background:#302219c9}
.zoom-switch {display:flex; justify-content:center; gap:6px; padding:10px; background:var(--white)}
.zoom-switch button {min-height:44px; padding:8px 25px; border-radius:8px; color:var(--muted); font-size:.88rem}
.zoom-switch button[aria-pressed=true] {background:var(--red-soft); color:var(--red); font-weight:600}
.shot-print-coordinate {display:none}
@media(max-width:960px) {
  .day-layout {grid-template-columns:minmax(0,1fr)}
  .day-support {position:static; border-top:1px solid var(--line); padding-top:20px}
  .pilgrimage-layout {grid-template-columns:minmax(0,1fr)}
  .shot-index {display:none}
  .shot-mobile-jump {display:flex; align-items:center; gap:14px; margin-bottom:0}
  .shot-mobile-jump label {font-size:.8rem; color:var(--muted); white-space:nowrap}
  .shot-mobile-jump select {min-width:0; flex:1; min-height:46px; background:var(--white); color:var(--ink); border:1px solid var(--line); border-radius:8px; padding:10px; font-size:16px}
  .shot-image img {aspect-ratio:16/10}
  .shot-direction {font-size:.91rem}
}
@media(max-width:720px) {
  :root {--dock-height:76px; --toolbar-height:60px}
  .daily-toolbar {gap:8px; padding-block:7px}
  .view-tab {min-width:0; padding:8px 10px; font-size:.86rem; min-height:42px; gap:5px}
  .view-tabs {padding:3px; gap:0}
  .daily-toolbar>.btn {min-height:44px; padding:7px 9px; font-size:.77rem}
  .daily-toolbar .toolbar-note {display:none}
  .date-link {min-width:70px; flex-basis:70px}
  .date-link span {font-size:.7rem}
  .date-link strong {font-size:.97rem}
  .day-heading h1 {font-size:1.9rem}
  .day-heading>div>p:not(.eyebrow) {font-size:.89rem}
  .intensity {font-size:.79rem}
  .day-heading .eyebrow {font-size:.69rem}
  .day-facts strong {font-size:.87rem}
  .day-facts span {font-size:.78rem}
  .day-key {font-size:.85rem; padding-block:12px 18px}
  .event h3 {font-size:1rem}
  .event-time {font-size:.86rem}
  .event-type {font-size:.74rem}
  .event-detail {font-size:.85rem}
  .detail-body, .support-card .detail-body {font-size:.87rem}
  .condition, .selection-note {font-size:.82rem}
  .timeline-note {font-size:.77rem}
  .timeline-phase>h2 {font-size:.88rem}
  .event-content {padding:14px}
  .event {grid-template-columns:26px minmax(0,1fr); gap:5px}
  .event-photos {grid-template-columns:repeat(2,minmax(0,1fr))}
  .event-photos .photo-button {height:112px}
  .food-row p, .food-row h4 {font-size:.84rem}
  .photo-button>span {font-size:.78rem}
  .route-copy>small {font-size:.75rem}
  .route-copy>button {font-size:.96rem}
  .route-leg .text-link {font-size:.79rem; min-height:44px}
  .filter {min-height:44px; font-size:.82rem}
  .view-pilgrimage .day-heading h1 {font-size:1.8rem}
  .pilgrimage-intro h2 {font-size:1.38rem}
  .pilgrimage-intro p {font-size:.79rem}
  .shot-progress {font-size:.76rem; padding:7px 9px}
  .shot-progress strong {margin-left:2px}
  .shot-map-note {font-size:.79rem; margin:10px 0 17px}
  .pilgrimage-layout {gap:18px}
  .shot-card {padding:17px 15px 5px; border-radius:14px; margin-bottom:20px}
  .shot-heading {align-items:start; gap:10px}
  .shot-heading h4 {font-size:1.26rem}
  .shot-work {font-size:.77rem; gap:7px}
  .shot-check {font-size:.75rem; padding:7px; gap:5px}
  .shot-check input {width:17px; height:17px}
  .shot-scene {font-size:.84rem; margin:9px 0 14px}
  .shot-pair {grid-template-columns:minmax(0,1fr); gap:10px}
  .shot-image img {aspect-ratio:16/9; max-height:300px}
  .shot-image>span {padding:7px 10px; font-size:.81rem}
  .shot-image small {font-size:.76rem}
  .shot-caption {font-size:.79rem}
  .shot-direction {display:block; margin:15px 0; font-size:.88rem}
  .shot-direction>span {display:block; margin-bottom:3px; font-size:.78rem}
  .shot-actions {gap:7px}
  .shot-actions .btn {font-size:.82rem; padding:8px 10px}
  .shot-return {font-size:.77rem; gap:3px}
  .shot-return .icon {width:13px}
  .shot-evidence {margin-top:13px}
  .shot-evidence summary {font-size:.8rem}
  .shot-evidence>div {font-size:.82rem}
  .shot-zoom-dialog {width:100%; max-width:100%; max-height:95dvh; border-radius:16px 16px 0 0}
  .shot-zoom-dialog>img {max-height:62dvh}
  .shot-zoom-dialog .dialog-top h2 {font-size:1.12rem}
  .shot-zoom-dialog>p {font-size:.8rem}
  .day-card-theme {font-size:.79rem}
  .card-cities {font-size:.73rem}
  .day-card .card-practical {font-size:.76rem}
  .day-card-copy {padding:12px 11px}
  .day-grid {gap:13px}
  .day-card h3 {font-size:1.1rem}
  .card-enter {font-size:.76rem}
  .day-end {font-size:.78rem}
  .day-end .text-button {font-size:.8rem}
}
@media(max-width:370px) {
  .shot-actions {gap:5px}
  .shot-actions .btn {padding-inline:8px}
  .shot-return {width:100%; justify-content:flex-end}
  .pilgrimage-intro {gap:8px}
  .shot-progress {padding-inline:6px}
  .view-tab {padding-inline:7px}
  .daily-toolbar>.btn {padding-inline:7px}
}
@media print {
  .shot-index, .shot-mobile-jump, .shot-check, .shot-actions, .shot-evidence, .pilgrimage-event-links, .shot-coverage, .optional-shots, .shot-progress {display:none!important}
  .pilgrimage-layout {display:block}
  .shot-card {break-inside:avoid; padding:12px; margin-bottom:14px; border:1px solid #aaa; box-shadow:none}
  .shot-pair {grid-template-columns:1fr 1fr}
  .shot-image {display:block!important}
  .shot-image img {height:150px!important; object-fit:contain!important}
  .shot-image small {display:none}
  .shot-heading h4 {font-size:13pt}
  .shot-scene, .shot-caption, .shot-direction {font-size:9pt}
  .shot-direction {display:block; margin-block:8px}
  .shot-print-coordinate {display:block; font-size:8pt; margin:7px 0}
  .pilgrimage-intro {padding-bottom:10px}
  .pilgrimage-page .day-end {display:none}
  .day-layout {display:block}
  .day-support {position:static}
  .event-content {box-shadow:none}
}
.shot-card[tabindex].keyboard-focus:focus, .event[tabindex].keyboard-focus:focus {outline:2px solid #c8b790; outline-offset:4px; border-radius:14px}
@media print {
  .shot-card[tabindex].keyboard-focus:focus, .event[tabindex].keyboard-focus:focus {outline:none}
}
.view-pilgrimage .day-heading>div>p:not(.eyebrow), .view-route .day-heading>div>p:not(.eyebrow), .view-pilgrimage>.day-key, .view-route>.day-key {display:none}
.view-pilgrimage .daily-toolbar, .view-route .daily-toolbar {margin-bottom:23px}
.pilgrimage-intro {margin-bottom:23px}
.view-pilgrimage .day-heading, .view-route .day-heading {padding-block:17px}
.view-route .day-heading-photo {height:105px}
@media(max-width:720px) {
  .view-pilgrimage .day-heading, .view-route .day-heading {padding-block:14px; grid-template-columns:minmax(0,1fr) 76px}
  .view-pilgrimage .day-heading-photo, .view-route .day-heading-photo {height:80px}
  .view-route .day-heading h1 {font-size:1.8rem}
  .view-pilgrimage .daily-toolbar, .view-route .daily-toolbar {margin-bottom:17px}
  .pilgrimage-intro {margin-bottom:17px}
  .shot-mobile-jump {gap:10px}
}
.place-back {margin:-5px 0 12px; padding:7px 0; min-height:44px}
.copy-dialog {width:min(480px,calc(100vw - 32px))}
.copy-dialog textarea {display:block; width:100%; min-height:105px; border:1px solid var(--line); border-radius:8px; padding:13px; font-size:16px; color:var(--ink); background:var(--paper); resize:vertical}
html {scroll-padding-bottom:80px}
@media print {
  html {scroll-padding:0}
  .place-back {display:none!important}
}
.copy-dialog {margin:auto}

/* journey.css — scoped rules; shared reading tokens live in layout.css. */
.progress-area {min-height:40px; gap:12px}
.progress-track {background:#ead9bf}
.phase-heading {padding:18px 0 14px}
.phase-heading h2 {font-family:var(--sans); font-size:1rem; font-weight:650; color:var(--accent)}
.phase-heading h2:before {content:''; display:inline-block; width:4px; height:15px; background:var(--gold); border-radius:3px; margin-right:10px; vertical-align:-2px}
.timeline-phase, #route-content {scroll-margin-top:calc(var(--dock-height) + var(--toolbar-height) + 18px)}
.timeline-phase[tabindex].keyboard-focus:focus {outline:0}
.timeline-phase[tabindex].keyboard-focus:focus>.phase-heading, #route-content[tabindex].keyboard-focus:focus {outline:2px solid var(--gold); outline-offset:4px; border-radius:6px}
.scene-entry {display:flex; align-items:center; gap:12px; clear:both; background:#faf0e0; border:1px solid #ecd6b8; border-radius:9px; padding:12px; margin:13px 0 4px; min-height:66px}
.scene-entry:hover {background:#f5e5ce; border-color:#cba46e}
.scene-entry-icon {width:33px; height:36px; display:grid; place-items:center; color:var(--red); background:var(--white); border-radius:8px; flex-shrink:0}
.scene-entry>span:nth-child(2) {min-width:0; flex:1}
.scene-entry strong {display:block; font-size:.91rem; font-weight:600; color:var(--red)}
.scene-entry strong small {font-size:.76rem; color:var(--muted); font-weight:400; margin-left:9px; white-space:nowrap}
.scene-entry>span>span {font-size:.77rem; color:var(--muted); display:block; line-height:1.7; margin-top:3px}
.scene-entry>.icon {width:16px; color:var(--red)}
.scene-index-group>span {display:block; font-size:.75rem; color:var(--muted); letter-spacing:.06em; margin:12px 10px 4px; padding-top:8px; border-top:1px solid var(--line)}
.scene-index-group:first-of-type>span {margin-top:0}
.scene-section-heading {margin:0 0 13px; padding-block:12px}
.scene-section-heading h3 {font-family:var(--sans); font-size:1rem; color:var(--accent)}
.scene-section+.scene-section {margin-top:34px}
.shot-index {scrollbar-width:thin; scrollbar-color:#d4ba91 transparent}
.shot-index a>span:nth-child(2) {white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
@media(min-width:721px) {
  .event-photos:has(>button:nth-child(4):last-child) {grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:720px) {
  .progress-area {gap:10px; font-size:.79rem}
  .progress-track {max-width:100px}
  .phase-heading {padding:10px 0}
  .phase-heading h2 {font-size:.94rem; line-height:1.7}
  .phase-heading h2:before {margin-right:8px}
  .scene-entry {padding:10px; gap:9px}
  .scene-entry strong {font-size:.88rem}
  .scene-entry>span>span {font-size:.79rem}
  .scene-entry strong small {font-size:.73rem; margin-left:7px}
  .scene-entry-icon {width:29px; height:34px}
  .scene-section-heading h3 {font-size:.95rem}
  .scene-section+.scene-section {margin-top:27px}
}
@media print {
  :root {--paper:#fff; --white:#fff; --ink:#111; --muted:#555; --line:#ccc; --accent:#333; --red:#333; --gold:#666}
  .scene-entry {display:none!important}
  .progress-area {border:0; min-height:0}
  .phase-heading {padding:10px 0}
  .phase-heading h2 {font-size:12pt}
  .phase-heading h2:before {display:none}
  .scene-section-heading h3 {font-size:12pt}
  .scene-section {break-inside:auto}
  .timeline-phase[tabindex].keyboard-focus:focus>.phase-heading, #route-content[tabindex].keyboard-focus:focus {outline:none}
}
.route-groups>.route-phase {font-size:.88rem; font-weight:600; color:var(--accent); padding:16px 2px 10px}
.route-window {border:1px solid var(--line); border-radius:13px; background:var(--white); overflow:hidden; margin-bottom:16px}
.route-window-time {padding:12px 18px; background:#f5e6d0; border-bottom:1px solid var(--line)}
.route-time {display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 10px; line-height:1.65}
.route-time+.route-time {margin-top:4px}
.route-time strong {font-size:.94rem; font-weight:650; font-variant-numeric:tabular-nums; color:var(--red); overflow-wrap:anywhere}
.route-time>span {font-size:.74rem; color:var(--muted)}
.route-window .route-stops {margin:0; padding:0 18px; list-style:none}
.route-window .route-stop {padding-left:37px; margin:0}
.route-window .route-stop:before {left:12px; top:0; bottom:0; border-color:var(--line)}
.route-window .route-stop:first-child:before {top:35px}
.route-window .route-stop:last-child:before {bottom:35px}
.route-window .route-item {align-items:center; grid-template-columns:64px minmax(0,1fr) 48px; gap:14px; padding:12px 0; border:0}
.route-window .route-photo {width:64px; height:64px; border-radius:8px}
.route-window .route-number {width:25px; height:25px; background:var(--white); font-size:.72rem}
.route-window .route-copy>button {font-size:1rem; line-height:1.5; text-align:left; min-height:32px; padding:0}
.route-window .route-copy>small {font-size:.76rem; line-height:1.55; margin-top:3px}
.route-window .route-stop+.route-stop {border-top:1px solid var(--line)}
.route-actions {grid-column:3; grid-row:1; display:flex; flex-wrap:wrap; gap:0 14px; align-items:center}
.route-actions .route-map {display:inline-flex; flex-direction:row; align-items:center; justify-content:flex-start; gap:5px; min-height:44px; min-width:44px; font-size:13px; color:var(--red); padding:0; border:0; background:none}
.route-actions .icon {width:16px; height:16px}
.route-extra-time {margin-top:7px}
.route-extra-time .route-time strong {font-size:.8rem}
.route-extra-time .route-time>span {font-size:.7rem}
@media(max-width:720px) {
  .route-window {border-radius:11px; margin-bottom:13px}
  .route-window-time {padding:11px 13px}
  .route-time strong {font-size:.88rem}
  .route-time>span {font-size:.73rem}
  .route-window .route-stops {padding-inline:12px}
  .route-window .route-stop {padding-left:26px}
  .route-window .route-stop:before {left:9px}
  .route-window .route-number {width:20px; height:20px; font-size:.65rem}
  .route-window .route-item {grid-template-columns:48px minmax(0,1fr) 48px; gap:9px; padding:10px 0}
  .route-window .route-photo {width:48px; height:56px}
  .route-window .route-copy>button {font-size:.92rem}
  .route-window .route-copy>small {font-size:.72rem; overflow-wrap:anywhere}
  .route-window .route-map {min-width:35px}
  .route-extra-time .route-time {display:block}
  .route-actions {gap:0 12px}
}
@media print {
  .route-window {border:1px solid #ccc; border-radius:0; overflow:visible; break-inside:auto}
  .route-window-time {background:white; padding:8px 10px; break-after:avoid}
  .route-time strong {color:#222; font-size:10pt}
  .route-time>span {font-size:8pt}
  .route-window .route-stop {padding-left:0}
  .route-window .route-item {grid-template-columns:1fr; padding:7px 0}
  .route-window .route-number {display:none}
  .route-window .route-stops {padding-inline:10px}
}
.heading-intensity {display:inline-block; margin-left:12px; color:var(--muted); font:400 12px var(--sans); letter-spacing:0; line-height:1.6}
.progress-note {margin-left:auto; color:var(--muted); font-size:12px; white-space:nowrap}
.shot-background {padding-bottom:8px; border-bottom:1px solid var(--line); margin-bottom:10px}
@media screen {
  .btn, .shot-check, .shot-mobile-jump select {min-height:44px}
  .day-heading, .view-pilgrimage .day-heading, .view-route .day-heading {padding-block:16px; grid-template-columns:minmax(0,1fr) 120px}
  .day-heading-photo, .view-pilgrimage .day-heading-photo, .view-route .day-heading-photo {height:88px}
  .day-heading h1 {margin:4px 0 5px}
  .day-facts {gap:16px}
  .day-facts>div {display:flex; align-items:baseline; flex-wrap:wrap; gap:3px 10px}
  .day-facts strong {margin:0}
  .day-facts span {font-size:12px}
  .day-key {padding:9px 0 11px}
  .progress-area {min-height:30px}
  .progress-track {max-width:100px}
  .phase-heading {padding:10px 0}
  .phase-heading h2 {font-size:1rem}
  .view-pilgrimage .daily-toolbar, .view-route .daily-toolbar {margin-bottom:14px}
  .pilgrimage-intro {margin-bottom:12px; padding:0}
  .pilgrimage-intro h2 {font-size:1.4rem}
  .shot-progress {padding:6px 10px; font-size:12px}
  .scene-section-heading {padding-block:5px; margin-bottom:10px}
  .scene-section-heading h3 {font-size:14px}
  .day-card-theme {min-height:0}
  .card-practical {min-height:0}
  .day-card-copy {display:flex; flex-direction:column}
  .day-card .card-practical {margin-top:auto; padding-top:12px}
  .day-card-theme {margin-bottom:12px}
  .shot-scene {line-height:1.7}
  .shot-direction {line-height:1.75}
  .shot-caption {line-height:1.7}
  .route-extra-time .route-time>span {font-size:12px}
  .route-window .route-map:hover {text-decoration:underline; text-underline-offset:4px}
}
@media screen and (max-width:720px) {
  .brand-seal {width:30px; height:34px; font-size:21px}
  .date-nav {height:var(--dock-height); padding-block:5px}
  .daily-toolbar {margin-top:5px}
  .day-heading, .view-pilgrimage .day-heading, .view-route .day-heading {padding-block:11px; grid-template-columns:minmax(0,1fr) 68px; gap:12px}
  .day-heading-photo, .view-pilgrimage .day-heading-photo, .view-route .day-heading-photo {height:72px; border-radius:9px}
  .day-heading h1, .view-pilgrimage .day-heading h1, .view-route .day-heading h1 {margin:4px 0}
  .day-heading .eyebrow {font-size:10px; letter-spacing:.03em}
  .heading-intensity {margin-left:8px}
  .day-heading>div>p:not(.eyebrow) {line-height:1.6}
  .day-facts {grid-template-columns:1fr 1.15fr}
  .day-facts>div {gap:0 6px}
  .day-facts strong {line-height:1.5}
  .day-key {line-height:1.65}
  .selected-choice {font-size:12px; padding-top:7px}
  .progress-area {gap:9px; min-height:30px}
  .progress-track {max-width:55px}
  .phase-heading {padding:8px 0}
  .phase-heading h2 {font-size:14px}
  .event-photos .photo-button>span {font-size:12px; line-height:1.5; padding:23px 7px 7px}
  .shot-caption, .shot-evidence summary, .shot-evidence>div {font-size:12px}
  .view-pilgrimage .daily-toolbar, .view-route .daily-toolbar {margin-bottom:12px}
  .pilgrimage-intro {margin-bottom:10px}
  .pilgrimage-intro h2 {font-size:20px}
  .shot-progress {padding:5px 8px}
  .pilgrimage-layout {gap:10px}
  .shot-mobile-jump {gap:8px}
  .shot-mobile-jump label {font-size:12px}
  .shot-mobile-jump select {min-height:44px; padding:7px 8px}
  .scene-section-heading {margin:0 0 8px; padding:4px 0}
  .scene-section-heading h3 {font-size:14px}
  .shot-work {font-size:12px}
  .shot-scene {font-size:13px; margin:7px 0 12px}
  .shot-direction {margin:12px 0}
  .shot-direction>span {font-size:12px}
  .shot-image small, .shot-return {font-size:12px}
  .overview-hero {gap:14px; padding:18px 0 20px}
  .overview-hero h1 {font-size:32px; margin:5px 0 6px}
  .hero-sub {font-size:13px}
  .trip-date {font-size:13px; margin-top:10px}
  .trip-facts {margin-top:7px; gap:18px; font-size:12px}
  .trip-facts strong {font-size:22px}
  .hero-links {margin-top:3px}
  .hero-links a {font-size:12px; min-height:44px}
  .hero-photos {height:112px}
  .hero-photos span {font-size:12px}
  .day-card-theme {line-height:1.65; margin-bottom:10px}
  .day-card .card-practical {line-height:1.65; padding-top:9px; gap:5px}
  .route-filters {margin-top:10px}
  .route-groups>.route-phase {font-size:14px; padding-top:12px}
}
@media screen and (max-width:350px) {
  .progress-track {display:none}
  .route-actions {gap:0 8px}
  .route-actions .route-map {font-size:12px}
  .day-grid {grid-template-columns:1fr}
  .day-card-photo {height:150px}
}
@media print {
  .heading-intensity {font-size:9pt}
  .progress-note, .route-actions {display:none!important}
  .shot-background {border:0}
}
.timeline-phase[tabindex]:focus:not(.keyboard-focus), #route-content[tabindex]:focus:not(.keyboard-focus), .shot-card[tabindex]:focus:not(.keyboard-focus), .event[tabindex]:focus:not(.keyboard-focus) {outline:none}
@media screen {
  .route-head>span {max-width:none; white-space:nowrap}
  .route-actions a:focus-visible {outline:3px solid var(--gold); outline-offset:3px; border-radius:5px}
}
@media screen {
  .view-tab, .daily-toolbar>.btn {white-space:nowrap}
}
@media screen and (max-width:350px) {
  .view-tabs {flex-shrink:0}
  .daily-toolbar>.btn .icon {display:none}
  .view-tab {padding-inline:12px}
  .daily-toolbar>.btn {padding-inline:9px}
}
@media screen {
  .day-card {display:flex; flex-direction:column}
  .day-card-copy {flex:1}
  .day-card-photo {flex-shrink:0}
}
@media screen and (min-width:721px) {
  .route-window .route-item {grid-template-columns:64px minmax(0,1fr) auto; gap:14px}
  .route-actions {grid-column:3; grid-row:1; justify-content:flex-end; gap:12px}
}
@media screen {
  .route-photo img {width:100%; height:100%; object-fit:cover}
  .event-content .event-photos .photo-button {aspect-ratio:4/3; height:auto; min-height:0}
  .event-content .event-photos.single-photo .photo-button {aspect-ratio:16/9; height:auto}
  .event-content .compact-photos.single-photo .photo-button {aspect-ratio:4/3}
  #event-kodaiji_night .event-photos.single-photo .photo-button {aspect-ratio:16/9; height:auto; max-height:320px}
  .event-photos .photo-button img {height:100%; width:100%; object-fit:cover}
  .route-window:has(.route-stop:only-child) {margin-bottom:12px}
  .route-window:has(.route-stop:only-child) .route-window-time {padding-block:9px}
  .route-window:has(.route-stop:only-child) .route-item {padding-block:8px}
  .route-window:has(.route-stop:only-child) .route-stop:before {display:none}
}
@media screen and (max-width:720px) {
  .route-window:has(.route-stop:only-child) {margin-bottom:10px}
  .route-window:has(.route-stop:only-child) .route-window-time {padding-block:8px}
  #event-kodaiji_night .event-photos.single-photo .photo-button {max-height:none}
}
@media screen {
  .event-content .event-photos:has(>button:nth-child(2):last-child) .photo-button {height:auto; aspect-ratio:4/3}
}

/* blog-theme.css — scoped rules; shared reading tokens live in layout.css. */
.blog-backdrop, .desktop-day-index, .sidebar-trip-title {display:none}
@media screen {
  :root {--gold:#efb075; --serif:'Songti SC','Noto Serif SC','STZhongsong','STKaiti','KaiTi','SimSun',serif; --sans:'PingFang SC','Microsoft YaHei',Roboto,Arial,sans-serif; --dock-height:0px; --toolbar-height:60px; color-scheme:dark; color:var(--ink); background:#303030; font-family:var(--sans)}
  body {background:transparent}
  #app {isolation:isolate}
  .blog-backdrop {display:block; position:fixed; inset:0; z-index:-1; pointer-events:none; background:#303030}
  .blog-backdrop img {width:100%; height:100%; object-fit:cover; object-position:center}
  .blog-backdrop:after {content:''; position:absolute; inset:0}
  .site-header {position:fixed; left:0; top:0; bottom:0; width:236px; z-index:20; border:0; border-right:1px solid #ffffff14; overflow-y:auto}
  .header-inner {display:flex; flex-direction:column; gap:0; align-items:stretch; min-height:100%; padding:31px 22px 20px; margin:0}
  .brand {display:block; margin:0; text-align:center; color:#f2f2f2; padding:2px 0 19px; border-bottom:1px solid var(--line)}
  .brand strong {font:900 21px/1.6 var(--serif); letter-spacing:.03em}
  .brand small {font:12px/1.8 var(--sans); margin-top:5px; display:block}
  .brand:hover strong {color:var(--red)}
  .sidebar-trip-title {display:block; margin:22px 0 15px; font:700 17px var(--serif); text-align:center}
  .sidebar-trip-title small {display:block; font:11px/1.8 var(--sans); margin-top:8px}
  .main-nav {display:flex; gap:4px; padding:4px 0 18px; position:static; border-bottom:1px solid var(--line)}
  .main-nav a {flex:1; flex-direction:column; min-width:0; min-height:55px; font-size:12px; gap:5px; border-radius:3px}
  .main-nav a:hover {background:#26384f; color:var(--red)}
  .main-nav .icon {width:21px; height:21px}
  .desktop-day-index {display:block; padding-top:20px}
  .desktop-day-index>p {font-size:11px; letter-spacing:.1em; margin:0 8px 10px}
  .desktop-day-index a {display:flex; align-items:baseline; gap:9px; min-height:44px; padding:10px 8px; border-left:2px solid transparent}
  .desktop-day-index a>span {min-width:33px; font-variant-numeric:tabular-nums}
  .desktop-day-index strong {font-weight:500}
  .desktop-day-index a:hover {color:var(--red); background:#ffffff06}
  .desktop-day-index .active {color:#ffd0a1; border-left-color:#efb075; background:#ffffff08}
  .desktop-day-index .active>span {color:#ffd0a1}
  #main {margin:0 16px 0 252px; padding:29px 38px 30px; max-width:none; min-height:calc(100vh - 100px); border:0; border-radius:0; box-shadow:none}
  .foot {margin:0 24px 0 270px; padding:22px 16px 26px; max-width:none; color:#e0e5ec; border-color:#ffffff30; font-size:11px}
  .foot a {color:var(--red)}
  h1, h2 {font-weight:900; color:var(--ink)}
  h3, h4 {color:var(--ink)}
  .section-title h2 {font-size:24px; font-weight:700}
  .eyebrow {color:var(--muted); letter-spacing:.08em}
  .muted {color:var(--muted)}
  .section-title {border-bottom:1px solid #ffffff2b; padding-bottom:11px}
  .page-note {border-color:var(--line)}
  .blog-hero {display:flex; flex-direction:column; gap:24px; padding:0 0 28px; margin:0 0 8px; min-height:0; border-radius:0; background:none; color:var(--ink); position:relative; isolation:auto}
  .blog-hero:after {display:none}
  .blog-hero .hero-copy {max-width:none; width:100%; text-align:center}
  .blog-hero h1 {font:900 30px/1.6 var(--serif); margin:5px 0 8px; letter-spacing:.05em; text-shadow:none}
  .blog-hero .eyebrow {font-size:11px}
  .blog-hero .hero-sub {font-size:13px}
  .blog-hero .trip-date {font-size:12px; font-weight:400; margin-top:14px}
  .blog-hero .trip-date span {color:var(--muted)}
  .blog-hero .trip-facts {justify-content:center; font-size:12px; gap:25px; margin-top:9px}
  .blog-hero .trip-facts strong {font-family:var(--sans); font-size:17px; font-weight:500; color:#f0f3f8}
  .blog-hero .hero-links {justify-content:center; gap:27px; margin-top:9px}
  .blog-hero .hero-links a {min-height:38px}
  .blog-hero .hero-photos {position:relative; inset:auto; display:block; height:224px; width:100%; margin:0; z-index:auto}
  .blog-hero .hero-photos>div {height:100%; border-radius:3px; margin:0}
  .blog-hero .hero-photos img {height:100%; object-fit:cover; object-position:center 45%}
  .blog-hero .hero-photos span {display:block; text-align:right; font-size:11px; padding:22px 14px 8px; color:#fff; background:linear-gradient(transparent,#0007)}
  .day-grid {grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px}
  .day-card {border:1px solid #ffffff0f; border-radius:3px; box-shadow:none}
  .day-card:hover {border-color:#6396c273; box-shadow:none; transform:translateY(-2px)}
  .day-card-photo {height:124px}
  .day-card-copy {padding:13px 12px 9px}
  .day-card h3 {font:700 19px/1.5 var(--serif)}
  .card-cities {min-height:30px}
  .day-card-theme {font-size:12px}
  .card-practical {border-color:var(--line); color:#b4c1d3}
  .day-number {font-weight:500}
  .trip-map-section {margin-top:32px}
  .trip-connections h3 {color:var(--ink)}
  .trip-connections strong {color:#d9e3ef}
  .trip-connections>p, .trip-connections>div>span {color:#97c6f3}
  .daily-page>.date-nav {display:none}
  .daily-toolbar {position:sticky; top:0; z-index:7; border-bottom:1px solid var(--line); padding:8px 0; margin-top:4px}
  .view-tabs {background:transparent; padding:0; gap:18px; border-radius:0}
  .view-tab {background:transparent; border-radius:0; border:0; border-bottom:2px solid transparent; box-shadow:none; padding:7px 0; min-width:56px; min-height:44px}
  .view-tab.active {background:transparent; box-shadow:none; border-bottom-color:var(--red)}
  .day-heading, .view-route .day-heading, .view-pilgrimage .day-heading {padding:0 0 18px}
  .day-heading h1, .view-pilgrimage .day-heading h1, .view-route .day-heading h1 {color:#f1f3f7; font-size:28px; line-height:1.5}
  .day-heading>div>p:not(.eyebrow) {font-size:13px}
  .day-heading-photo {border-radius:3px}
  .day-facts {border-radius:3px; border:1px solid #ffffff12; padding:10px 15px}
  .day-facts>div+div {border-color:#ffffff24}
  .phase-heading h2:before {background:#e9a86d; width:3px}
  .progress-track {background:#343c50}
  .progress-track span {background:#5794c7}
  .event-content {border-radius:3px; border:1px solid #ffffff0e; box-shadow:none}
  .event-type {border-color:#ffffff30}
  .event.done h3, .event.done .event-time {color:#adc7bb}
  .event-check>span {border-color:#9caec2; background:#1b1f2e}
  .event-check input:checked+span {background:#346e9b; border-color:#70b5ed; color:#fff}
  .transport-event .event-content, .rest-event .event-content {border:0; border-bottom:1px solid var(--line); box-shadow:none}
  .event.optional .event-content {border-color:#b49a7188}
  .condition {border-radius:3px}
  .photo-button {background:#252b3d; border-radius:3px}
  .photo-button>span {color:#fff}
  .place-link .icon {color:#a9cdee}
  .place-map {color:var(--red)}
  .food-priority {color:#eac39f}
  .food-row .budget {color:#b6cfea}
  .food-row {border-color:var(--line)}
  .event .pill {background:#343b4e; color:#d8e2ed}
  .route-window {border:1px solid #ffffff14; border-radius:3px; overflow:hidden}
  .route-window .route-stops {padding-inline:16px}
  .route-window .route-stop+.route-stop {border-color:#ffffff18}
  .route-window .route-copy>button:hover {color:var(--red)}
  .route-window .route-photo {border-radius:3px}
  .route-actions .route-map {white-space:nowrap; min-width:48px}
  .route-filters {gap:6px}
  .filter {border:1px solid #ffffff12; border-radius:3px; min-height:42px}
  .filter:hover {color:#fff; background:#304666}
  .scene-entry {border-radius:3px}
  .scene-entry:hover {background:#29455f; border-color:#6c96ba}
  .scene-entry-icon {color:#b9deff; border-radius:3px}
  .shot-progress {border-radius:3px}
  .shot-index a:hover {color:#cee7ff}
  .shot-index a[aria-current] {background:#253e58; color:#f3c598; border-color:#efb075}
  .shot-index {scrollbar-color:#4c6380 transparent}
  .shot-card {border-radius:3px; box-shadow:none}
  .shot-card h4 {color:#eef3fa}
  .shot-background {border-color:#ffffff1f}
  .shot-direction>span {color:#e9b887}
  .shot-image {border-color:#ffffff20; border-radius:3px}
  .shot-image:hover {border-color:#70afe2}
  .shot-check {border-color:#61728a; border-radius:3px}
  .shot-check input {accent-color:#61aff0}
  .shot-evidence {border-color:#ffffff22}
  .shot-mobile-jump select {border-color:#526780; border-radius:3px}
  .shot-map-note {color:#b6c5d5}
  .shot-pair {gap:12px}
  .btn {border-radius:3px}
  .btn:hover {border-color:#80a6cb}
  .btn.primary:hover {background:#2d779f}
  .text-button, .text-link {color:var(--red)}
  button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible, textarea:focus-visible {outline-color:#81c5ff}
  .pill {background:#303b4e; color:#cfdded}
  .pill.gold, .pill.green {background:#3c3440; color:#f2c99e}
  .stay-card, .flight-card, .todo-card {border-radius:3px}
  .hotel-shortcut {border-color:#ffffff20; border-radius:3px}
  .stay-card h3, .flight-grid strong, .todo-card h2 {color:#e8eff8}
  .prep-note {border:1px solid #ffffff1a; border-radius:3px}
  .prep-note .condition {background:#38303c}
  .todo-row {border-color:#ffffff1d}
  .todo-row input {accent-color:#67b8f5}
  .support-card {border-color:#ffffff22}
  .hotel-shortcut strong {color:#dfebf7}
  .full-guide th, .full-guide td {border-color:#5c6c85}
  .full-guide th {background:#2c3548}
  .full-guide a {color:#88c4fa}
  dialog {color:var(--ink); border:1px solid #58697f; border-radius:6px}
  dialog::backdrop {background:#0b1220ba; backdrop-filter:blur(4px)}
  .dialog-top {border-color:#ffffff25}
  .dialog-footer {border-color:#ffffff20}
  .copy-field, textarea {background:#161e2c; color:#eef4fc; border-color:#62738b}
  .zoom-pair-tabs {background:#273043}
  .word-row {border-color:#ffffff22}
  #toast {background:#edf4fb; color:#203b50}
  .skip {background:#1b1f2e; color:#dcecff}
}
@media screen and (min-width:1440px) {
  #main {padding-inline:clamp(32px,2vw,48px)}
  .day-layout {grid-template-columns:minmax(0,1fr) clamp(280px,20vw,380px); gap:32px}
  .event-content .event-photos .photo-button {max-height:320px}
}
@media screen and (min-width:1025px) and (max-width:1280px) {
  #main {padding-inline:27px}
  .day-layout {grid-template-columns:minmax(0,1fr) 230px; gap:24px}
  .day-card-copy {padding-inline:10px}
  .day-grid {gap:12px}
}
@media screen and (min-width:721px) and (max-width:1024px) {
  .site-header {width:196px}
  .header-inner {padding-inline:14px}
  #main {margin-left:208px; margin-right:12px; padding:24px}
  .foot {margin-left:220px}
  .brand strong {font-size:19px}
  .day-grid {grid-template-columns:repeat(2,minmax(0,1fr))}
  .day-layout, .map-layout, .prep-layout, .stays {grid-template-columns:1fr}
  .day-support {position:static}
  .pilgrimage-layout {grid-template-columns:1fr}
  .shot-index {display:none}
  .shot-mobile-jump {display:flex}
  .day-card-photo {height:140px}
  .view-tab {min-width:48px}
  .blog-hero .hero-photos {height:180px}
}
@media screen and (max-width:720px) {
  .blog-backdrop img {object-position:center}
  .blog-backdrop:after {background:#11182b73}
  .site-header {position:static; width:auto; overflow:visible; border:0; border-bottom:1px solid var(--line)}
  .header-inner {padding:9px 16px; min-height:60px; flex-direction:row; align-items:center; gap:12px}
  .brand {border:0; text-align:left; flex:1; padding:0}
  .brand strong {font-size:16px; line-height:1.5}
  .brand small {margin:0; line-height:1.6}
  .sidebar-trip-title, .desktop-day-index {display:none}
  .main-nav {position:fixed; z-index:20; inset:auto 0 0; display:flex; flex-direction:row; gap:0; padding:4px 12px calc(5px + env(safe-area-inset-bottom)); border:0; border-top:1px solid #738da24d; backdrop-filter:blur(10px); box-shadow:0 -2px 15px #0002}
  .main-nav a.active {color:#8ecbff}
  .main-nav a.active .icon {background:transparent; box-shadow:none}
  .main-nav .icon {margin:0}
  #main {margin:8px 8px 0; padding:19px 16px 22px; min-height:calc(100vh - 190px); border-radius:0; max-width:none}
  .foot {margin:0 16px; padding:19px 0 calc(85px + env(safe-area-inset-bottom)); border-color:#ffffff25}
  .blog-hero {padding:0 0 21px; gap:18px; margin-bottom:4px}
  .blog-hero .hero-copy {text-align:center}
  .blog-hero h1 {font-size:26px; margin:4px 0 5px}
  .blog-hero .trip-date {margin-top:10px}
  .blog-hero .trip-date span {margin-left:8px}
  .blog-hero .trip-facts {gap:15px; margin-top:7px}
  .blog-hero .trip-facts strong {font-size:16px}
  .blog-hero .hero-links {margin-top:7px; gap:20px}
  .blog-hero .hero-links a {min-height:36px}
  .blog-hero .hero-photos {height:138px}
  .blog-hero .hero-photos span {font-size:10px; padding:17px 10px 6px}
  .section-title {padding-bottom:9px; margin-bottom:14px}
  .section-title h2 {font-size:21px}
  .section-title>.muted {max-width:105px}
  .day-grid {grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px}
  .day-card-photo {height:107px}
  .day-card-copy {padding:11px 10px 7px}
  .day-card h3 {font-size:17px}
  .day-card-theme {font-size:12px}
  .trip-map-section {margin-top:26px}
  .daily-page>.date-nav {display:flex; margin:-19px -16px 0; position:sticky; top:0; border-color:var(--line)}
  .date-link {border-radius:3px}
  .date-link.active {color:#eff7ff; box-shadow:none}
  .day-heading, .view-route .day-heading, .view-pilgrimage .day-heading {padding:14px 0 12px}
  .day-heading h1, .view-pilgrimage .day-heading h1, .view-route .day-heading h1 {font-size:23px}
  .day-facts {padding:8px 10px; gap:9px}
  .day-facts>div+div {padding-left:9px}
  .day-key {padding:8px 0}
  .daily-toolbar {margin:0 -16px 0; padding:6px 16px; gap:8px}
  .view-tabs {gap:12px}
  .view-tab {min-width:0; padding:7px 1px; border-radius:0}
  .daily-toolbar>.btn {padding:7px 9px}
  .daily-toolbar>.btn .icon {display:none}
  .progress-area {font-size:11px}
  .route-head>span {font-size:10px}
  .route-head h2 {font-size:17px}
  .route-filters {gap:5px}
  .filter {padding:6px 10px; min-height:40px}
  .route-actions .route-map {min-width:48px}
  .event-content {padding:12px}
  .scene-entry {padding:9px; gap:8px}
  .scene-entry strong {font-size:13px}
  .shot-card {padding:13px 11px 5px}
  .shot-image>span {font-size:12px}
  .shot-mobile-jump select {font-size:16px}
}
@media screen and (max-width:350px) {
  #main {margin-inline:4px; padding-inline:12px}
  .daily-page>.date-nav, .daily-toolbar {margin-inline:-12px}
  .daily-toolbar {padding-inline:12px; gap:6px}
  .view-tabs {gap:10px}
  .view-tab {font-size:12px}
  .view-tab .icon {display:none}
  .day-heading h1, .view-route .day-heading h1, .view-pilgrimage .day-heading h1 {font-size:21px}
  .heading-intensity {display:block; margin-left:0}
  .day-card-copy {padding-inline:9px}
  .day-card h3 {font-size:16px}
  .day-card .card-practical {font-size:10px}
  .day-grid {gap:8px}
  .route-window .route-copy>button {font-size:13px}
  .route-window .route-item {grid-template-columns:36px minmax(0,1fr) 43px; gap:6px}
  .route-window .route-photo {width:36px}
  .route-actions .route-map {min-width:43px}
  .route-actions .icon {width:14px}
  .progress-note {font-size:10px}
}
@media(prefers-reduced-motion:reduce) {
  .day-card {transition:none}
  .day-card:hover {transform:none}
}
@media print {
  .blog-backdrop, .desktop-day-index, .sidebar-trip-title {display:none!important}
  .blog-hero {color:#111; background:white}
  .blog-hero:after {display:none}
}
@media screen {
  :root {--paper:#252e41; --white:#303c52; --ink:#f5f7fb; --muted:#c9d3e2; --line:#ffffff2b; --accent:#c6d8ec; --red:#8acaff; --red-soft:#304f70}
  .site-header {background:#202a3bf5}
  .brand small {color:#a9d8ff}
  .sidebar-trip-title small, .desktop-day-index>p {color:#c6d2e3}
  .desktop-day-index a {color:#dbe4f0; font-size:13px}
  .desktop-day-index a>span {color:#afd5f7; font-size:12px}
  .desktop-day-index a.active {color:#ffdaa9}
  .main-nav a {color:#d3deee}
  .main-nav a.active {color:#a6d8ff; background:#304b6980}
  .blog-hero .eyebrow, .blog-hero .hero-sub, .blog-hero .trip-facts {color:#d3dceb}
  .blog-hero .hero-links a {font-size:13px; color:#99d0ff}
  .day-card:hover {background:#374861}
  .day-card h3 {color:#bddfff}
  .day-card-theme {color:#e1e7f1}
  .card-cities {color:#c6d1e2}
  .day-card .card-practical {color:#cad5e4; font-size:12px}
  .card-practical span:last-child {color:#f4d7b6}
  .card-enter {color:#a0d5ff}
  .view-tab {color:#d0dbea}
  .view-tab.active {color:#a3d7ff}
  .day-heading .eyebrow, .heading-intensity {color:#cbd6e4}
  .day-heading>div>p:not(.eyebrow) {color:#e0e7f1}
  .day-facts span {color:#cfd9e8}
  .day-facts strong {color:#ffe0b7}
  .day-key {color:#f1d2b4}
  .progress-note, .timeline-note {color:#c8d5e6}
  .phase-heading h2, .scene-section-heading h3 {color:#e3eaf4}
  .event-content {background:#303c52; border-color:#8295b02d}
  .transport-event .event-content, .rest-event .event-content {background:transparent}
  .event h3 {color:#f5f7fb}
  .event-type {color:#d3deec}
  .rest-event h3 {color:#dbe6f2}
  .condition {background:#493d47; color:#ffe0b7}
  .selection-note {background:#314c66; color:#d1e9ff}
  .event-detail summary {color:#bddfff}
  .place-link {color:#b9dbfa}
  .meal-preview small {color:#d1dceb}
  .route-time>span, .route-window .route-copy>small {color:#d2deed}
  .route-actions .route-map {color:#a4d8ff}
  .route-window .route-copy>button {color:#f7f9fd}
  .filter {background:#303e55; color:#d5e1f1; border-color:#768da73b}
  .filter.active {background:#35628c; color:#fff; border-color:#8ebce0}
  .route-groups>.route-phase {color:#dae4f2}
  .route-window .route-number {background:#354760; color:#eef4fc; border-color:#a1bbd9}
  .shot-scene, .shot-direction, .shot-caption {color:#dbe4f1}
  .shot-work {color:#c2e2ff}
  .shot-image>span {background:#3a4962; color:#f2f6fc}
  .shot-image small {color:#b4dfff}
  .shot-image {background:#1b2435}
  .shot-evidence summary {color:#d0dfee}
  .scene-entry strong {color:#d2ecff}
  .scene-entry strong small, .scene-entry>span>span {color:#d4e2f0}
  .shot-progress {background:#354962; color:#e2effb}
  .shot-check {background:#3d4c63; color:#eef5fc}
  .shot-mobile-jump select {background:#33435a; color:#f0f6fd}
  .shot-index a {color:#cadcf0}
  .shot-index a:hover {background:#365271}
  .scene-index-group>span, .shot-index>p {color:#c5d5e6}
  .btn {background:#3a4b65; border-color:#9bb2cf66; color:#f1f6fd}
  .btn:hover {background:#465f81; color:white}
  .btn.primary {background:#3379aa; border-color:#91c6ed; color:#fff}
  .support-card summary {color:#e7eef8}
  .support-card summary small {color:#c5d3e4}
  .hotel-shortcut {background:#303c52}
  .prep-note {background:#303b51}
  .flight-grid small, .stay-card p:not(.eyebrow), .hotel-shortcut small {color:#cbd8e8}
  .map-note, .page-note {color:#cbd5e2}
  .support-heading {color:#c6d2e2}
  dialog, .dialog-top {background:#2b374d}
  .dialog-body {color:#e5edf7}
  .dialog-top h2 {color:#fff}
  .jp-name {color:#d3e7fb}
  .place-note {background:#38475e; color:#eaf2fa}
  .full-guide code {background:#43516a; color:white}
  .shot-switch {background:#34455f}
  .shot-switch button {color:#dfebf8}
  .shot-switch button[aria-pressed=true] {background:#397bad; color:white}
}
@media screen and (max-width:720px) {
  #main {background:#252e41fd}
  .site-header {background:#202a3bf7}
  .main-nav {background:#243148fa}
  .main-nav a.active {background:transparent}
  .daily-page>.date-nav, .daily-toolbar {background:#252e41}
  .date-link {color:#d3dfed}
  .date-link.active {background:#35648d}
  .blog-hero .hero-sub {font-size:12px}
  .day-heading>div>p:not(.eyebrow) {font-size:13px}
  .route-time strong {font-size:14px}
  .route-time>span, .route-window .route-copy>small {font-size:12px}
  .map-note, .timeline-note {font-size:12px}
}
@media screen {
  .option-row {border-color:#7b91ad55; color:#e5edf7; border-radius:4px}
  .option-row:has(input:checked) {background:#3a5574; border-color:#9bccf0; color:#fff}
  .option-row small {color:#d0dff0}
  .option-row input {accent-color:#7ec7ff}
  .option-row:has(input:disabled) {opacity:.65}
  .route-stop.optional .route-item {background:#3e3b48; border-color:#b8a185}
  .shot-done .shot-check {background:#315748; color:#e3f8ee; border-color:#92c5ac}
  .shot-missing {background:#344057; color:#d9e5f4}
  .dialog-image {background:#1d2738}
  .shot-work em {background:#5c4b3c; color:#ffe0b8}
}

/* layout.css — scoped rules; shared reading tokens live in layout.css. */
@media screen {
  .day-main, .event-content, .event-summary, .route-copy, .shot-heading>div {min-width:0}
  .event .event-content {display:block; padding:20px; border:1px solid var(--line); border-radius:4px; box-shadow:none}
  .event.done .event-content {background:#293f39; border-color:#709e8966}
  .event.optional .event-content {background:#383641; border-style:dashed}
  .event-meta {display:flex; align-items:baseline; flex-wrap:wrap; gap:6px 10px; margin-bottom:8px}
  .event h3 {margin:0; font-size:var(--type-body); line-height:1.65; overflow-wrap:anywhere}
  .event-time {font-variant-numeric:tabular-nums; line-height:1.6}
  .event-body {margin-top:14px}
  .event-body:not(:has(img,a,button,p)) {display:none}
  .event-body.has-single-photo {display:grid; grid-template-columns:208px minmax(0,1fr); gap:20px; align-items:start}
  .event-body .event-photos {display:grid; grid-template-columns:repeat(var(--photo-columns,3),minmax(0,1fr)); float:none; width:100%; max-width:none; margin:0; padding:0; gap:12px; overflow:visible}
  .event-body .event-photos.single-photo {float:none; width:100%; max-width:none; margin:0; grid-template-columns:minmax(0,1fr)}
  .event .event-body .event-photos .photo-button, #event-kodaiji_night .event-body .event-photos .photo-button {width:100%; height:auto; min-height:0; max-height:none; aspect-ratio:4/3; border-radius:4px}
  .event .event-body:not(.has-single-photo) .event-photos .photo-button {aspect-ratio:16/10; max-height:260px}
  .event-body .photo-button img {height:100%; width:100%; object-fit:cover}
  .event-summary {display:flex; flex-direction:column; align-items:stretch; gap:10px}
  .event-summary:not(:has(*)) {display:none}
  .event-body:not(.has-single-photo) .event-summary:has(*) {margin-top:12px}
  .event-summary .scene-entry {margin:0; clear:none; min-height:60px}
  .event-summary .meal-preview {margin:0; font-size:15px; line-height:1.8}
  .event-summary .meal-preview small {display:block; font-size:13px; margin-top:4px}
  .event-summary .event-places {margin:0; min-height:0; display:flex; flex-wrap:wrap; gap:8px 16px; justify-content:flex-start}
  .event-summary .meal-map {margin:0}
  .event-summary .place-map, .event-summary .text-link {display:inline-flex; align-items:center; justify-content:flex-start; gap:7px}
  .event-summary .place-map {margin-left:0}
  .event-content>.event-detail {clear:none; margin-top:16px; border-top:1px solid var(--line)}
  .event-detail summary {padding-block:10px; min-height:46px}
  .event-content>.condition, .event-content>.selection-note, .event-content>.night-facts {margin-top:12px}
  .night-adjust {margin-top:8px}
  .route-window .route-copy>button {display:block; text-align:left; overflow-wrap:anywhere}
  .route-copy>small, .hotel-shortcut strong, .stay-card h3 {overflow-wrap:anywhere}
  .route-actions {align-self:center}
  .shot-heading {align-items:flex-start; flex-wrap:wrap}
  .shot-heading>div {flex:1 1 180px}
  .shot-image {display:flex; flex-direction:column}
  .shot-image>span {margin-top:auto; flex-wrap:wrap}
  .shot-image img {flex:none; object-fit:contain}
  .shot-actions, .food-actions {gap:8px 14px}
  .shot-actions>.btn {min-height:44px}
  .scene-entry strong small {display:inline-block; margin-left:6px}
  dialog {overscroll-behavior:contain}
}
@media screen and (max-width:1024px) {
  .event-body.has-single-photo {grid-template-columns:160px minmax(0,1fr); gap:16px}
}
@media screen and (max-width:720px) {
  .event h3 {font-size:var(--type-body)}
  .event-meta {gap:4px 8px; margin-bottom:6px}
  .event-body.has-single-photo {grid-template-columns:minmax(0,1fr); gap:12px}
  .event-body .event-photos {grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px}
  .event-body .event-photos.single-photo {grid-template-columns:minmax(0,1fr)}
  .event .event-body .event-photos .photo-button, #event-kodaiji_night .event-body .event-photos .photo-button {aspect-ratio:4/3; max-height:none}
  .event .event-body .event-photos.single-photo .photo-button {aspect-ratio:16/10}
  .event-content>.event-detail {margin-top:12px}
  .shot-direction {display:block}
  .shot-direction>span {display:block; margin-bottom:4px}
  .shot-heading>div {flex-basis:140px}
  .shot-return {margin-left:0}
}
@media (prefers-reduced-motion:reduce) {
  *, *::before, *::after {scroll-behavior:auto!important; transition:none!important; animation:none!important}
}
.food-idea {margin-top:16px; padding-top:16px; border-top:1px solid var(--line); min-width:0}
.food-idea.with-photo {display:grid; grid-template-columns:176px minmax(0,1fr); gap:18px; align-items:start}
.food-idea h4 {margin:6px 0; font-size:16px; line-height:1.6}
.food-idea p {font-size:14px; line-height:1.85; margin:8px 0; overflow-wrap:anywhere}
.food-idea .food-name {color:var(--muted); font-size:12px}
.food-idea small {display:block; color:var(--muted); line-height:1.7}
.food-idea-photo, .food-row-photo {width:100%; height:auto; aspect-ratio:4/3; border-radius:4px; overflow:hidden}
.food-idea-photo img, .food-row-photo img {width:100%; height:100%; object-fit:cover}
.food-idea-photo span {font-size:12px}
.food-ideas .food-idea:first-child {margin-top:0; border-top:0; padding-top:0}
.food-ideas .food-idea.with-photo {grid-template-columns:minmax(0,1fr)}
.food-ideas .food-idea-photo {max-height:230px}
.food-actions {display:flex; flex-wrap:wrap; align-items:center; margin-top:8px}
.food-row-photo {max-width:240px; display:block; margin:12px 0}
.flight-overview {padding:20px; margin-top:20px}
#trip-map {margin-bottom:36px}
.flight-heading {display:flex; align-items:baseline; gap:12px; margin-bottom:16px}
.flight-heading h3 {margin:0; font-size:17px}
.flight-heading>span {font-size:13px; color:var(--muted)}
.flight-grid>div>p {display:flex; justify-content:space-between; gap:12px}
.flight-grid>div>p b {font-variant-numeric:tabular-nums; color:var(--text)}
.flight-grid strong small {display:block; white-space:normal; font-size:12px; line-height:1.7}
@media(max-width:720px) {
  .food-idea.with-photo {grid-template-columns:minmax(0,1fr); gap:10px}
  .food-idea-photo {aspect-ratio:16/10}
  .flight-overview {padding:16px}
  .flight-grid>div>div {gap:10px}
  .flight-grid strong {font-size:22px}
}
@media screen {
  .event.compact-event .event-content {padding:14px 20px; background:transparent; border-color:transparent; border-bottom-color:var(--line)}
  .event.compact-event.done .event-content {background:#293f39}
  .compact-event .event-body {margin-top:6px}
  .compact-event .event-content>.event-detail {margin-top:8px}
  .event.compact-event h3 {font-size:var(--type-body); font-weight:500}
  .compact-event .event-places .place-link {font-size:13px; min-height:44px}
  .event-content .food-actions>a, .event-content .food-actions>button {font-size:13px; line-height:1.6; min-height:44px}
  .food-suggestions .food-idea {margin:0; padding:0; border:0}
  .food-suggestions .food-idea-photo {max-width:176px; aspect-ratio:4/3}
  .food-suggestions small, .food-row .food-priority, .event-type, .event-detail summary, .condition, .selection-note {font-size:13px}
  .food-suggestions .detail-body {padding-top:12px}
  .map-layout {grid-template-columns:minmax(240px,400px) minmax(0,1fr); gap:32px}
  .google-map-preview {max-width:400px; width:100%}
  .trip-connections {padding-top:0}
  .trip-connections>div {padding:8px 0}
  .night-options {min-width:0}
  .checkin-address {font-size:14px; line-height:1.8}
  .checkin-address p {color:var(--muted); font-size:13px; margin:6px 0}
  .event-content>.condition, .event-content>.selection-note {padding:0; border:0; background:transparent; color:var(--muted); line-height:1.8}
  .route-transport {margin-top:24px}
  .day-end {justify-content:flex-end}
  .day-layout {margin-top:20px}
  .card-cities, .card-practical, .card-enter, .heading-intensity, .toolbar-note, .route-head>span, .route-copy>small, .route-time>span, .return-label, .food-idea small, .pill, .eyebrow, .photo-credit, .progress-area {font-size:12px}
}
@media screen and (max-width:1024px) {
  .map-layout {grid-template-columns:1fr}
  .google-map-preview {justify-self:center}
}
@media screen and (max-width:720px) {
  :root {--dock-height:52px; --toolbar-height:48px}
  .daily-page>.date-nav {height:52px; padding:3px 10px}
  .date-link {min-height:44px; padding:2px 8px; min-width:65px}
  .date-link strong {font-size:14px; line-height:20px}
  .date-link span {font-size:12px; line-height:18px}
  .daily-toolbar {top:var(--dock-height); min-height:48px; padding-block:2px}
  .view-tab, .daily-toolbar>.btn {min-height:44px; padding-block:6px}
  .main-nav a {min-height:44px; font-size:12px; gap:1px}
  .main-nav .icon {width:18px; height:18px}
  .event.compact-event .event-content {padding:10px 14px}
  .event.compact-event h3 {font-size:var(--type-body)}
  .event-body.restaurant-photo {grid-template-columns:96px minmax(0,1fr); gap:12px}
  .event .event-body.restaurant-photo .event-photos.single-photo .photo-button {aspect-ratio:1; max-height:96px}
  .restaurant-photo .photo-button span {display:none}
  .food-suggestions .food-idea.with-photo {grid-template-columns:1fr}
  .food-suggestions .food-idea-photo {width:140px}
  .food-suggestions .food-idea-photo span {display:none}
  .day-card .card-practical, .card-cities, .card-enter, .brand small, .foot, .blog-hero .eyebrow, .blog-hero .trip-date, .blog-hero .trip-facts, .blog-hero .hero-links a, .section-title>.muted, .day-facts span, .heading-intensity, .progress-note, .route-actions .route-map, .filter, .scene-entry strong small, .scene-entry>span>span, .shot-check, .shot-progress {font-size:12px}
  .day-card .card-practical {min-height:0}
  .card-cities {min-height:38px}
  .event-type {font-size:12px}
  .event-time {font-size:var(--type-body)}
  .day-key {font-size:13px}
  .food-row p, .detail-body p, .detail-body li {line-height:1.85}
}
@media screen {
  :root {--type-body:16px; --type-secondary:14px; --type-meta:12px; --surface-page:#293246; --surface-card:#323e53; --surface-soft:#303b50; --border-quiet:#ffffff14}
  #main {background:var(--surface-page)}
  .blog-backdrop img {opacity:.35}
  .blog-backdrop:after {background:#1e283866}
  .daily-toolbar, .daily-page>.date-nav {background:var(--surface-page)}
  .event .event-content, .day-card, .shot-card, .stay-card, .flight-card, .todo-card {background:var(--surface-card); border-color:var(--border-quiet)}
  .route-window {background:var(--surface-card); border-color:transparent}
  .route-window-time, .day-facts {background:var(--surface-soft); border-color:var(--border-quiet)}
  .scene-entry {background:#354a61; border-color:transparent}
  .scene-entry-icon {background:transparent}
  .event .event-content>.condition, .event .event-content>.selection-note {font-size:var(--type-secondary)}
  .event-time, .route-time strong {color:#ffd29e; font-size:var(--type-body)}
  .route-window .route-copy>button {font-size:var(--type-body); min-height:44px}
  .route-window .route-copy>small {font-size:13px; line-height:1.65}
  .route-actions .route-map, .event-summary .place-map, .event-summary .text-link, .food-actions>a, .food-actions>button {font-size:var(--type-secondary); min-height:44px}
  .route-window .route-item {grid-template-columns:56px minmax(0,1fr) auto; gap:12px}
  .route-window .route-photo {width:56px; aspect-ratio:1; height:auto}
  .repeated-place {display:grid; place-items:center; color:var(--muted); background:transparent}
  .event .event-detail summary {font-size:var(--type-secondary)}
  .day-facts strong {font-size:var(--type-body)}
  .shot-direction, .shot-scene {font-size:var(--type-secondary)}
  .day-support .support-card summary {min-height:48px}
  .day-facts>div {min-width:0; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:1px}
  .stay-access {display:grid; grid-template-columns:minmax(0,1fr) 16px; align-content:center; gap:1px 6px; width:100%; min-height:44px; padding:0; border:0; border-radius:3px; background:transparent; color:inherit; font:inherit; text-align:left; cursor:pointer}
  .stay-access>span, .stay-access>strong {grid-column:1}
  .stay-access>.icon {grid-column:2; grid-row:1 / 3; width:15px; height:15px; align-self:center; color:#8ecbff}
  .stay-access:hover strong {text-decoration:underline; text-underline-offset:4px}
  .stay-access:focus-visible {outline:2px solid #8ecbff; outline-offset:4px}
  .archive-note {color:var(--muted); font-size:var(--type-secondary); margin:0 0 16px}
}
@media screen and (max-width:720px) {
  #main {margin-inline:0; padding-inline:16px}
  .route-window .route-stops {padding-inline:10px}
  .route-window .route-item {grid-template-columns:40px minmax(0,1fr) 48px; gap:8px}
  .route-window .route-photo {width:40px}
  .route-window .route-stop {padding-left:22px}
  .route-window .route-map {min-width:44px; font-size:14px}
  .route-window .route-copy>button {font-size:16px}
  .event-summary .meal-preview, .shot-direction, .food-row p, .detail-body p, .detail-body li {font-size:15px}
  .day-facts strong {font-size:14px}
  .view-tab {font-size:14px}
  .daily-toolbar>.btn {font-size:13px}
  .event .event-content {padding:13px}
  .event-body {margin-top:10px}
  .event .event-photos {gap:8px}
}
