/* Four columns, two rows at every size. */
.site-footer { display:flex; min-height:6.5rem; height:auto; max-height:none; padding:.8rem 3vw; gap:1.6rem; overflow:visible; }
.footer-skills { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); align-items:stretch; gap:.4rem .6rem; flex:1; width:100%; }
.footer-skills > span { white-space:normal; min-width:0; min-height:32px; line-height:1.3; }
.footer-skills svg { flex:0 0 16px; }
.alignment-region { bottom:8rem; }
.journey-nav { bottom:8rem; }
.planet-labels { position:fixed; inset:0; z-index:9; pointer-events:none; }
.planet-label { position:absolute; top:0; left:0; font-family:inherit; font-size:.73rem; font-weight:500; line-height:1.3; color:#45404d; padding:.35rem .55rem; border:1px solid #7567d83b; border-radius:5px; background:#fafbf5ed; white-space:nowrap; }
button.planet-label { pointer-events:auto; cursor:pointer; min-height:32px; }
button.planet-label:hover { border-color:#3d998f; color:#287b72; }
.planet-label[hidden] { display:none; }
body.spatial-ready #world { opacity:1; background:transparent; }
body.spatial-ready.experience-active #world { opacity:.15; }
body.spatial-ready .vignette { opacity:.2; }
body.spatial-ready .decision-space > svg,body.spatial-ready .alignment-map,body.spatial-ready .perspective-node,body.spatial-ready .map-label { visibility:hidden; }
body.spatial-ready .decision-space { height:min(52vh,470px); aspect-ratio:auto; margin:0 auto 2.8rem; }
body.spatial-ready .alignment-copy .scene-result,body.spatial-ready .alignment-copy .shared-decision { position:static; transform:none; width:auto; text-align:left; padding:1rem 0 0; margin:1rem 0 0; background:none; border-top:1px solid var(--line); }
body.spatial-ready .alignment-copy .scene-result h3,body.spatial-ready .alignment-copy .shared-decision h3 { margin:.3rem 0 .5rem; font-size:1.12rem; }
body.spatial-ready .alignment-copy .scene-result p,body.spatial-ready .alignment-copy .shared-decision p { font-size:.77rem; line-height:1.55; margin:.5rem 0; }
body.spatial-ready .alignment-copy .decision-label { font-size:.62rem; }
body.spatial-ready .alignment-copy .illustration-note { font-size:.6rem; }
body.spatial-ready.research-active #world { opacity:.4; }
body.spatial-ready .research-stage { padding-top:0; }
body.spatial-ready .research-detail { padding:2rem; background:rgba(249,250,252,.82); }
body.spatial-ready .research-detail p { font-size:.95rem; line-height:1.75; }
body.spatial-ready .research-detail h3 { font-size:1.65rem; }
body.world-fallback #world { opacity:0; }
body.world-fallback .planet-labels { display:none; }
body.reduced-preview *,body.reduced-preview *::before,body.reduced-preview *::after { animation:none!important; transition:none!important; }
button.planet-label[aria-pressed=true] { border-color:#3d998f; background:#e6f1ed; }
@media(max-width:800px) {
 .site-footer { display:block; padding:.6rem .8rem; }
 .skills-label { display:block; margin:0 0 .4rem; }
 .footer-skills { gap:.3rem; }
 .footer-skills > span { padding:.35rem .3rem; font-size:.6rem; align-items:flex-start; gap:.25rem; }
 .footer-skills svg { width:13px; height:13px; flex-basis:13px; }
 .alignment-region { bottom:9rem; } .journey-nav { bottom:9rem; }
}
.alignment-region,.journey-nav { bottom:calc(var(--footer-height,120px) + 1.2rem); }
/* Quiet annotation typography; the objects carry the visual interest. */
.planet-label { background:transparent; border:0; border-radius:0; padding:.45rem .35rem; color:#50465e; font-size:.74rem; letter-spacing:.02em; text-shadow:0 1px 5px #f5f6f8,0 0 12px #f5f6f8; }
button.planet-label { min-height:36px; border-bottom:1px solid transparent; }
button.planet-label:hover,button.planet-label[aria-pressed=true] { border-color:#3d998f80; background:transparent; color:#286f65; }
body.spatial-ready .decision-space { height:min(62vh,600px); }
body.spatial-ready .about-thesis { width:100%; padding:2rem 1.2rem; }
/* One document scroll; no nested chapter viewport or invisible scroll spacer. */
html { scroll-snap-type:none; }
@media(prefers-reduced-motion:reduce) { html.journey-snapping { scroll-snap-type:none; scroll-behavior:auto; } }
html.journey-snapping:has(body.reduced-preview) { scroll-snap-type:none; scroll-behavior:auto; }
body.natural-journey main#journey { position:relative; inset:auto; visibility:visible; pointer-events:auto; padding:96px 0 calc(var(--footer-height,120px) + 4rem); }
body.natural-journey .scroll-space { display:none; }
body.natural-journey .alignment-region { position:relative; inset:auto; margin:0 8rem 0 4vw; min-height:calc(100svh - 96px); height:auto; padding:2rem 0 calc(var(--footer-height,120px) + 3rem); overflow:visible; box-sizing:border-box; }
body.natural-journey .journey-nav { position:fixed; top:6rem; bottom:calc(var(--footer-height,120px) + 1rem); right:.65rem; width:3rem; z-index:20; overflow:visible; }
body.natural-journey .rail-markers { gap:0; }
@media(max-width:800px) {
 body.natural-journey .alignment-region { margin:0 3.6rem 0 1rem; grid-template-columns:minmax(0,1fr); gap:1.5rem; padding-top:1rem; }
 body.natural-journey .journey-nav { right:.2rem; width:2.8rem; }
 body.natural-journey .rail-label { display:none; }
 body.natural-journey .rail-markers button[aria-current=step] .rail-label { display:block; max-width:8rem; right:42px; top:-1.6rem; }
 body.natural-journey .decision-space { height:auto; min-height:270px; aspect-ratio:1; margin:0 0 3rem; }
 body.natural-journey .alignment-copy .perspectives { grid-template-columns:1fr; }
 body.natural-journey .topbar { display:flex; justify-content:space-between; gap:.5rem; padding:0 .75rem; }
 body.natural-journey .brand-copy small { font-size:.6rem; }
 body.natural-journey .profile-actions a { font-size:0; padding:.5rem; gap:0; }
 body.natural-journey .profile-actions svg { width:18px; height:18px; }
 body.natural-journey .research-detail { padding:1.1rem; }
}
@media(max-height:620px) { body.natural-journey .journey-nav { top:5rem; bottom:1rem; } body.natural-journey .rail-markers button { width:30px; height:30px; min-height:30px; } body.natural-journey .site-footer { position:relative; } }
/* Desktop scroll is a narrative driver, not physical chapter movement. */
body.pinned-journey main#journey { position:fixed; inset:0; padding:0; pointer-events:none; }
body.pinned-journey .alignment-region { position:absolute; inset:6.2rem 8rem calc(var(--footer-height,120px) + 1.2rem) 4vw; margin:0; min-height:0; padding:0; pointer-events:auto; }
body.pinned-journey .alignment-region[hidden] { display:none; }
body.pinned-journey .scroll-space { display:block; height:900svh; }
body.pinned-journey .decision-space { height:min(58vh,540px); }
body.pinned-journey .experience-timeline { padding-top:0; }
body.pinned-journey .experience-timeline li { margin-bottom:1.2rem; }
/* Approved migration refinement: a quieter, wider opening statement. */
.alignment-region.about-region .alignment-copy h1 { font-size:clamp(1.5rem,2.05vw,2.3rem); font-weight:400; line-height:1.22; max-width:none; }
@media(min-width:801px) { .alignment-region.about-region .alignment-copy h1 { width:calc(100% + 3rem); } }
.preserved-projects { display:flex; flex-wrap:wrap; gap:.5rem 1rem; margin-top:1rem; }
.preserved-projects a { color:#287b72; font-size:.8rem; text-underline-offset:.2em; }
/* Mobile rail: center the icon stack, and align labels to their own icon. */
.resume-preview { width:min(1000px,calc(100vw - 4rem)); height:88dvh; max-height:calc(100dvh - 2rem); padding:0; border:1px solid #7567d840; border-radius:10px; background:#f5f6f8; color:#17181c; box-shadow:0 24px 80px #25213640; }
.resume-preview[open] { display:flex; flex-direction:column; }
.resume-preview::backdrop { background:#25213670; }
.resume-preview header { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.65rem 1.2rem; border-bottom:1px solid #7567d830; }
.resume-preview h2 { font-size:1rem; font-weight:500; line-height:1.4; max-width:none; letter-spacing:0; }
.resume-preview header div { display:flex; align-items:center; gap:1.25rem; }
.resume-preview a,.resume-preview button { color:#287b72; font:inherit; font-size:.85rem; }
.resume-preview button { min-height:44px; border:0; padding:.5rem; background:none; cursor:pointer; }
.resume-pages { flex:1; min-height:0; overflow:auto; padding:16px; background:#e8e9ed; overscroll-behavior:contain; }
.resume-page { margin:0 auto 1.25rem; max-width:960px; }
.resume-page canvas { display:block; width:100%; height:auto; background:white; box-shadow:0 5px 18px #25213618; }
.resume-page details { background:#fff; padding:.75rem; font-size:.85rem; }
.resume-page summary { cursor:pointer; color:#287b72; }
.resume-page details p { white-space:pre-wrap; line-height:1.6; }
@media(max-width:800px) { .resume-preview { width:calc(100vw - 1rem); height:94dvh; max-height:94dvh; } .resume-preview header { padding:.5rem .75rem; } .resume-preview header div { gap:.5rem; } .resume-preview h2 { font-size:.85rem; } }
html.resume-preview-open { overflow:hidden; }
@media(max-width:800px) {
 body.natural-journey .journey-nav { left:auto; justify-content:center; align-items:stretch; }
 body.natural-journey .journey-nav .rail-markers button .rail-label { display:none; top:50%; right:46px; transform:translateY(-50%); max-width:min(10rem,calc(100vw - 5rem)); margin:0; text-align:right; }
 body.natural-journey .journey-nav .rail-markers button[aria-current=step] .rail-label,
 body.natural-journey .journey-nav .rail-markers button:focus-visible .rail-label { display:block; opacity:1; }
}
