/* Isolated visual study: paper and ink, no content or interaction replacement. */
:root{--space-xs:8px;--space-sm:16px;--space-md:24px;--space-lg:40px;--space-xl:72px;--radius-control:8px;--radius-surface:14px;--reading-width:68ch;--motion-feedback:120ms;--paper:#f5f0e6;--surface:#fcf9f2;--surface-strong:#fffdf7;--ink:#202b27;--muted:#626f66;--line:rgba(32,43,39,.15);--teal:#245e53;--amber:#9b5b22;}
:root[data-theme=dark]{--paper:#151d1c;--surface:#1c2926;--surface-strong:#22332e;--ink:#e7eee7;--muted:#b0bfb6;--line:rgba(201,221,207,.19);--teal:#a3d4b9;--amber:#efbc81;}
body{font-size:1rem;}
.hero__content{width:min(680px,calc(100% - 96px));}
.hero__content h1{font-size:clamp(3.5rem,8.5vw,6.5rem);letter-spacing:-.04em;line-height:1.02;}
.hero__content .hero__headline{max-width:26em;font-size:clamp(1.25rem,2.2vw,1.75rem);line-height:1.5;font-weight:600;}
.hero__content p{max-width:var(--reading-width);line-height:1.85;}
.hero .button-link{backdrop-filter:none;box-shadow:none;background:rgba(250,247,235,.075);border-color:rgba(250,247,235,.3);border-radius:var(--radius-control);font-size:.9rem;}
.content-wrap{width:min(1080px,calc(100% - 48px));}
.profile-section{padding:clamp(56px,7vw,88px) 0;}
.profile-section:nth-child(even)::before{display:none;}
.section-heading{grid-template-columns:minmax(140px,.28fr) minmax(0,1fr);gap:32px;margin-bottom:36px;}
.section-heading h2{font-size:clamp(1.45rem,2.5vw,2rem);font-weight:550;line-height:1.5;max-width:32em;text-wrap:pretty;}
.section-heading p{font-size:.8rem;font-weight:600;letter-spacing:.04em;}
.item-grid{gap:24px;}
#projects .item-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
.item-card{min-height:0;padding:26px;border-radius:var(--radius-surface);background:var(--surface);box-shadow:none;transition:border-color var(--motion-feedback) ease,background var(--motion-feedback) ease;}
.item-card:hover{transform:none;box-shadow:none;border-color:var(--teal);}
.item-card h3{font-size:1.15rem;line-height:1.5;font-weight:650;}
.item-card p{line-height:1.8;font-size:1rem;}
.item-card__meta{font-size:.82rem;font-weight:550;}
.travel-section{padding-left:max(24px,calc((100% - 1080px)/2));padding-right:max(24px,calc((100% - 1080px)/2));}
.travel-heading{margin-bottom:32px;}
.travel-heading h2{font-size:clamp(2rem,4vw,3rem);letter-spacing:-.035em;}
.travel-index{gap:0 40px;}
.travel-card{padding:30px 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;}
.travel-card > a{font-size:clamp(1.4rem,2.3vw,1.85rem);font-weight:650;line-height:1.45;text-decoration-thickness:1px;text-underline-offset:5px;}
.travel-card p{max-width:var(--reading-width);}
.travel-date{font-size:.76rem;letter-spacing:.025em;font-variant-numeric:tabular-nums;}
.travel-summary{font-size:.96rem;line-height:1.85;}
.travel-card:focus-within{outline:2px solid var(--amber);outline-offset:6px;}
.gallery-strip{gap:28px;}
.gallery-controls{gap:8px;padding:8px 0;}
.gallery-controls button{font-size:.875rem;border-color:var(--line);border-radius:var(--radius-control);background:transparent;padding:8px 12px;transition:background var(--motion-feedback) ease;}
.gallery-controls button:hover{background:var(--surface);}
.gallery-original,.gallery-credit{font-size:.76rem;line-height:1.6;text-underline-offset:3px;}
@media(max-width:700px){.hero__content{width:calc(100% - 48px);}.hero__content h1{font-size:clamp(3.4rem,12vw,4rem);}.hero__content .hero__headline{font-size:1.25rem;line-height:1.6;}.hero__content p{font-size:1rem;line-height:1.9;}.section-heading{grid-template-columns:1fr;gap:14px;}.section-heading h2{font-size:1.55rem;line-height:1.55;}#projects .item-grid{grid-template-columns:1fr;}.item-card{padding:22px;}.travel-section{padding-left:24px;padding-right:24px;}.travel-index{grid-template-columns:1fr;}.travel-card{padding:26px 0;}}
@media(prefers-reduced-motion:reduce){.item-card,.gallery-controls button{transition:none;}}

.travel-heading > .eyebrow{color:var(--amber);}
.gallery-original{min-height:44px;display:inline-flex;align-items:center;}

.hero__content .eyebrow{font-size:.8rem;line-height:1.5;}
.hero__content .hero__summary{font-size:1.0625rem;line-height:1.85;}
@media(max-width:700px){.hero__content .hero__summary{font-size:1rem;line-height:1.9;}.hero__actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}}

/* The visual layer owns type, material and controls; base CSS owns scene/map geometry. */
:root{--motion-feedback:120ms;--motion-view:220ms;--ease-feedback:cubic-bezier(.2,.7,.2,1);--stroke-control:1px;--shadow-raised:0 12px 32px rgba(16,29,22,.12);}
:root[data-theme=dark]{--shadow-raised:0 12px 32px rgba(0,0,0,.28);}
.language-switch{backdrop-filter:none;border-radius:var(--radius-control);background:rgba(255,249,239,.075);}
.language-switch__button{height:38px;font-weight:650;border-radius:5px;}
.theme-toggle svg{stroke-width:1.75;}
.header-nav a{font-weight:550;text-underline-offset:6px;}
.header-nav a:hover{text-decoration:underline;text-decoration-thickness:1px;}
.signal-band{background:var(--band);}
.signal{border:1px solid var(--line);border-radius:5px;font-size:.8rem;font-weight:550;background:transparent;}
.research-log__list{max-width:100%;}
.research-log__list li{grid-template-columns:10rem minmax(0,1fr);gap:24px;padding:22px 0;}
.research-log__list a{line-height:1.8;font-weight:550;}
.research-log time{font-variant-numeric:tabular-nums;color:var(--muted);line-height:1.7;}
.research-log__status{font-size:.82rem;opacity:1;color:var(--muted);}
.gallery-position{font-size:.8rem;color:var(--muted);min-width:44px;text-align:center;align-self:center;font-variant-numeric:tabular-nums;white-space:nowrap;}
:is(.gallery-controls button,.back-top,.trip-explorer-open,.trip-place-card button,.japan-search button,.japan-filters select,.japan-search input,.japan-more,.japan-figure > button,.japan-attraction-card button,.route-dialog button:not(.route-map-pin)){
 border-radius:var(--radius-control);border:var(--stroke-control) solid var(--line);box-shadow:none;min-height:44px;line-height:1.45;font-size:.875rem;background:var(--surface);color:var(--ink);transition:background var(--motion-feedback) var(--ease-feedback),border-color var(--motion-feedback) var(--ease-feedback),color var(--motion-feedback) var(--ease-feedback);
}
:is(.gallery-controls button,.back-top,.trip-explorer-open,.trip-place-card button,.japan-search button,.japan-more,.japan-figure > button,.japan-attraction-card button,.route-dialog button:not(.route-map-pin)):hover{border-color:var(--teal);background:var(--surface-strong);}
:is(.gallery-controls button,.back-top,.trip-explorer-open,.trip-place-card button,.japan-search button,.japan-more,.japan-figure > button,.japan-attraction-card button,.route-dialog button:not(.route-map-pin)):active{background:var(--surface);}
:is(.travel-article,.japan-place-card,.japan-attraction-card,.trip-place-card){line-height:1.8;}
.travel-article > p,.travel-chapter p,.travel-days p{max-width:var(--reading-width);}
.travel-article > h2{font-size:clamp(2rem,4vw,3rem);line-height:1.35;letter-spacing:-.025em;}
.travel-article :is(h3,h4){line-height:1.5;}
.travel-pagination a{min-height:44px;display:inline-flex;align-items:center;text-underline-offset:4px;}
:is(.trip-place-card,.japan-place-card,.japan-attraction-card){border-radius:var(--radius-surface);background:var(--surface);border-color:var(--line);box-shadow:none;}
:is(.travel-map,.japan-map-preview){border-radius:var(--radius-surface);}
.japan-entry{border-radius:var(--radius-surface);line-height:1.5;font-weight:600;}
.japan-return{display:inline-flex;align-items:center;min-height:44px;text-underline-offset:4px;}
.japan-counts{margin-top:20px;gap:12px 20px;}
.japan-counts .japan-count{font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.04em;}
.japan-filters label{font-size:.875rem;line-height:1.5;}
.japan-place-card button{font-size:.875rem;min-height:44px;padding:8px 0;}
.japan-credit{font-size:.8125rem;line-height:1.8;}
.route-dialog{border-radius:16px;box-shadow:var(--shadow-raised);}
.route-dialog__header h2{font-size:1.05rem;font-weight:650;line-height:1.4;}
.route-dialog__header{gap:12px;padding:16px 20px;}
.route-map-help,.route-map-legend{font-size:.8125rem;line-height:1.6;}
.route-map-stage{border-radius:10px;}
.route-map-toolbar output{font-variant-numeric:tabular-nums;}
.route-map-sidebar{padding:20px;}
.route-map-details p,.route-map-list button{font-size:.875rem;line-height:1.8;}
.route-map-list button{min-height:44px;}
.route-dialog .route-map-pin::after{content:'';position:absolute;inset:-6px;border-radius:inherit;}
@media(max-width:700px){.research-log__list li{grid-template-columns:1fr;gap:6px;padding:20px 0;}.route-dialog{border-radius:0;}.route-dialog__header{padding:12px 16px;}.route-dialog__main{padding:12px;}.route-map-help{margin:12px 0;}.japan-counts .japan-count{font-size:3.25rem;}}
@media(prefers-reduced-motion:reduce){:is(.gallery-controls button,.back-top,.trip-explorer-open,.trip-place-card button,.japan-search button,.japan-more,.japan-figure > button,.japan-attraction-card button,.route-dialog button){transition:none;}}
.route-dialog[open]{display:flex;flex-direction:column;}
.route-dialog__header{flex:0 0 auto;}
.route-dialog__layout{height:auto;flex:1;min-height:0;}
.route-dialog__main{overflow:auto;}
/* Touch remains gesture-only; hidden pane controls never create a map hit area. */
@media(max-width:820px){.page-arrow:not([hidden]){pointer-events:none;}.page-arrow:focus-visible{pointer-events:auto;}}

.item-card > a{display:inline-flex;align-items:center;min-height:44px;max-width:100%;font-size:.875rem;text-underline-offset:4px;}
.language-switch__button{position:relative;}
.language-switch__button::after{content:'';position:absolute;inset:-3px 0;}
:disabled{cursor:not-allowed;opacity:.55;}
/* New opaque viewport reveals over the intact old viewport; never expose a live hero. */
html.content-transition::view-transition{pointer-events:none;}
html.content-transition::view-transition-group(root){animation:none;}
html.content-transition::view-transition-old(root){animation:none;opacity:1;mix-blend-mode:normal;}
html.content-transition::view-transition-new(root){animation:content-reveal var(--motion-view) cubic-bezier(.2,.7,.2,1) both;opacity:1;mix-blend-mode:normal;}
@keyframes content-reveal{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}
@media(prefers-reduced-motion:reduce){html.content-transition::view-transition-new(root){animation:none;}}
.travel-loading-indicator::after{content:'';display:inline-block;vertical-align:middle;margin-left:10px;width:12px;height:12px;border:2px solid var(--teal);border-right-color:transparent;border-radius:50%;animation:loading-turn 900ms linear infinite;}
@keyframes loading-turn{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.travel-loading-indicator::after{animation:none;}}
/* Waiting feedback stays out of flow, so the held old screen does not reflow. */
.travel-loading-indicator{position:relative;}
.travel-loading-indicator::after{position:absolute;right:-20px;top:50%;margin:0;transform:translateY(-50%);animation-name:loading-turn-fixed;}
.japan-entry.travel-loading-indicator::after{right:16px;}
@keyframes loading-turn-fixed{to{transform:translateY(-50%) rotate(360deg)}}

@media(prefers-reduced-motion:reduce){.travel-loading-indicator::after{animation:none;}}
/* Reserve photos, controls, link and credit before the gallery API mounts. */
.photo-wall__grid,.photo-wall__grid:not(.is-gallery){min-height:calc(clamp(210px,32vw,340px) + 193px);}
@media(max-width:520px){.photo-wall__grid,.photo-wall__grid:not(.is-gallery){min-height:calc(clamp(190px,60vw,260px) + 193px);}}
