@font-face{font-family:WorldItalic;src:url('assets/fonts/playfair-italic.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap}
:root{--sky:#27486a;--cream:#f5edd8;--ink:#2b443e;--paper:#f3f0e3;--road-y:83vh;--scene-scale:1;color-scheme:light}
*{box-sizing:border-box}html{overscroll-behavior:none;scrollbar-width:none}html::-webkit-scrollbar{display:none}html,body,#journey,#viewport{overflow-anchor:none}body{margin:0;background:var(--sky);color:var(--cream);font-family:Arial,"PingFang SC",sans-serif}button{font:inherit;cursor:pointer;touch-action:manipulation}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid currentColor;outline-offset:5px}[hidden]{display:none!important}#viewport{position:fixed;inset:0;overflow:hidden;isolation:isolate;background:var(--sky)}.sky-wash{position:absolute;inset:0;background:linear-gradient(180deg,#142e501f,transparent 50%,#dfc7930d);pointer-events:none}.sky-wash:after{content:"";position:absolute;inset:0;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.25' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:soft-light}.world-layer,#world{position:absolute;left:0;top:var(--road-y);height:0;width:8400px;transform-origin:0 0;will-change:transform}.world-layer>svg{position:absolute;left:-1800px;top:-1100px;width:10200px;height:2200px;overflow:visible}#far-world{z-index:0}#trail-world{z-index:1;pointer-events:none}#world{z-index:2}#foreground{z-index:4;pointer-events:none}.place{position:absolute;width:470px;height:410px;padding:0;border:0;background:none;color:var(--ink);transform:translate(-50%,-100%);display:flex;align-items:flex-end;justify-content:center;isolation:isolate}.place:not(.nearby){visibility:hidden}.place-object{display:block;position:absolute;bottom:27px;width:440px;height:350px;transform-origin:50% 100%;transition:transform .32s cubic-bezier(.2,.65,.3,1);filter:drop-shadow(8px 14px 8px #132b382a);pointer-events:none}.place[data-place=projects] .place-object{width:390px;height:390px;bottom:13px}.place[data-place=experience] .place-object{width:350px;height:335px}.place[data-place=content] .place-object{width:390px;height:320px}.place[data-place=thoughts] .place-object{width:365px;height:340px;bottom:14px}.place[data-place=contact] .place-object{width:350px;height:340px;bottom:18px}.display-plinth{position:absolute;bottom:13px;width:330px;height:31px;background:#c1c7a3;border-radius:50%;box-shadow:0 10px 0 #ded8bc,4px 18px 12px #1d364234;transform:rotate(-3deg);pointer-events:none}.place[data-place=projects] .display-plinth{width:300px;background:#d5d2b5;border-radius:18px;transform:skewX(-17deg);height:23px;bottom:16px}.place[data-place=experience] .display-plinth{background:#b4c1ab;border-radius:3px;transform:skewY(-5deg);height:26px;width:300px}.place[data-place=content] .display-plinth{width:300px;background:#b8a888;border-radius:3px;transform:rotate(2deg);box-shadow:0 8px 0 #e1d6b8,4px 16px 12px #1d364233}.place[data-place=life] .display-plinth{width:340px;height:34px;background:#b8c6bc;box-shadow:0 8px 0 #dcd7be,4px 15px 12px #1d364233}.place[data-place=thoughts] .display-plinth{background:#d1d0df;box-shadow:0 8px 0 #eee5d5,4px 15px 12px #1d364233;width:270px}.place[data-place=contact] .display-plinth{width:280px;background:#ddd7d5;box-shadow:0 8px 0 #eee8d5,4px 15px 12px #1d364233}.place:hover .place-object,.place:focus-visible .place-object{transform:translateY(-7px) rotate(-1deg)}.place-caption{position:relative;z-index:3;display:flex;align-items:center;gap:12px;padding:10px 16px;background:#f2ecd7f5;border:1px solid #fff8e178;border-radius:3px;bottom:-30px;box-shadow:2px 5px 0 #233b4420;color:#354b44;white-space:nowrap;transition:transform .2s}.place-number{font-size:9px;color:#7f8b73;letter-spacing:.5px}.place-title{font:19px Georgia,serif;letter-spacing:-.5px}.place-arrow{font-size:19px;color:#849575;padding-left:3px}.place-sublabel{position:absolute;bottom:-52px;font-size:8px;letter-spacing:1.8px;color:#e2e1c6a6;text-transform:uppercase;pointer-events:none}.place:focus-visible{outline:none}.place:focus-visible .place-caption{outline:2px solid var(--cream);outline-offset:5px}.place:hover .place-caption{transform:translateY(-3px)}
#rider{position:absolute;z-index:3;width:220px;height:252px;left:40vw;top:var(--road-y);transform:translate(-50%,-239px) scale(var(--scene-scale));transform-origin:110px 239px;pointer-events:none;will-change:transform,top}.bicycle{position:absolute;left:0;bottom:0;width:220px;height:140px;overflow:visible;filter:drop-shadow(1px 3px 1px #163c392a)}.tire{stroke:#243d38;stroke-width:6;fill:#163a3005}.rim{stroke:#d8ceb0;stroke-width:1.8}.spokes{stroke:#d7d4bb;stroke-width:1;opacity:.8}.hub{fill:#294a40;stroke:#ccc8a7;stroke-width:1.2}.frame-shadow{stroke:#214940;stroke-width:5}.bike-frame{stroke:#bfd0b7;stroke-width:3}.saddle{stroke:#29443c;stroke-width:5}.fender{stroke:#e6d7b1;stroke-width:2}#crank{stroke:#e3d5b0;stroke-width:2;fill:#45694e}.stella-sprite{position:absolute;width:185px;height:215px;left:36px;top:12px;object-fit:contain;object-position:center bottom;filter:drop-shadow(1px 2px 1px #223c3a25);transform-origin:50% 75%}.rider-shadow{position:absolute;bottom:9px;left:0;width:220px;height:16px;background:#173d3647;filter:blur(6px);border-radius:50%;transform:skewX(-24deg)}.rider-name{position:absolute;bottom:-17px;left:83px;font:italic 13px Georgia,serif;color:#e6e4c3bd;letter-spacing:.3px}.rider-name span{font-size:9px;margin-left:3px}.world-vignette{position:absolute;inset:0;z-index:5;pointer-events:none;background:linear-gradient(0deg,#183a45aa,transparent 21%),linear-gradient(90deg,#18334c0c,transparent 40%,transparent 80%,#1d34400c)}
.masthead{position:absolute;z-index:7;left:4.5%;right:4.5%;top:29px;display:flex;align-items:center;gap:23px}.wordmark{display:flex;align-items:center;gap:10px;text-decoration:none;font:22px/1.3 Georgia,serif;letter-spacing:-.5px}.brand-star{font-size:28px;line-height:1;color:#e5d19a}.masthead>p{font-size:10px;letter-spacing:1.6px;margin:4px 0 0;color:#dedfcebf}.masthead>button{display:flex;gap:25px;align-items:center;border:0;border-bottom:1px solid #e4e0c94d;padding:8px 0;margin-left:auto;color:var(--cream);font-size:10px;letter-spacing:.3px;background:none}.masthead>button>span{font-size:20px}.story{position:absolute;z-index:6;left:6.2%;top:18%;width:min(400px,34vw);pointer-events:none}.chapter{display:flex;align-items:center;gap:12px;font-size:9px;letter-spacing:2px;color:#e5dcb3b8;margin:0 0 18px}.chapter>span{opacity:.5}#narration{font:400 clamp(32px,3vw,43px)/1.12 Georgia,serif;letter-spacing:-1.35px;text-wrap:balance;color:#f4edd6;margin:0;transition:opacity .18s,transform .18s}#narration>span{display:block}#narration em{display:block;font:italic .72em/1.26 WorldItalic,Georgia,serif;letter-spacing:-.6px;color:#dfd3ae;margin-top:13px}#narration.fading{opacity:0;transform:translateY(5px)}.story-link{pointer-events:auto;display:inline-flex;align-items:center;gap:30px;border:0;border-bottom:1px solid #d9d5b55c;color:#f0e9ce;background:none;padding:11px 0 9px;margin-top:18px;font-size:11px;letter-spacing:.2px}.story-link>span{font-size:19px}.story-link:hover{color:#fff4c8;border-bottom-color:#f2e5b7}#end-message{position:absolute;z-index:6;top:41%;left:6.2%;width:350px;pointer-events:none;color:#e3d8ae}#end-message>span{font:italic 25px/1.25 WorldItalic,Georgia,serif;letter-spacing:-.5px}#end-message>small{display:block;font-size:9px;color:#e2ddc2a6;line-height:1.6;margin-top:13px}.at-end .story-link{display:none}.at-end .story{top:16%}.at-end #narration{font-size:37px}
.journey-footer{position:absolute;z-index:7;left:4.5%;right:4.5%;bottom:30px;display:grid;grid-template-columns:190px 1fr 125px;gap:30px;align-items:end;color:#eee7cb}.ride-hint{display:flex;gap:13px;align-items:center;font-size:11px;line-height:1.5}.ride-hint small{display:block;font-size:8px;color:#dedfc8b0;margin-top:3px}.scroll-mark{font-size:28px;line-height:1;font-weight:100;color:#dfd2a6}#route{display:flex;justify-content:space-between;align-items:center;gap:6px;position:relative;padding-bottom:10px}#route:before{content:"";position:absolute;left:6px;right:6px;top:4px;height:1px;background:#dce1c34a}#route button{display:flex;align-items:center;flex-direction:column;gap:10px;position:relative;z-index:1;min-width:40px;padding:0 4px;border:0;background:none;color:#e6e7d5;font-size:11px;letter-spacing:.1px}#route button:before{content:"";width:7px;height:7px;border:1px solid #dce4c7ad;border-radius:50%;background:#809487;transition:background .2s,transform .2s;box-shadow:0 0 0 4px #435e5d2b}#route button[aria-current=step]{color:#f9e6b5}#route button[aria-current=step]:before{background:#f0dca4;border-color:#f0dca4;transform:scale(1.3)}#route button:hover{color:#fff1c1}.journey-count{display:flex;gap:8px;align-items:center;justify-content:flex-end;text-align:right}.journey-count>span:first-child{font:30px/1 Georgia,serif;letter-spacing:-1px;color:#ecdfb7}.journey-count>span:last-child{font-size:9px;line-height:1.1;color:#e1dec39c}.journey-count small{display:block;font-size:7px;letter-spacing:.8px;margin-top:5px}.progress-track{position:absolute;bottom:0;left:0;right:0;height:3px;z-index:10;background:#1e394b70}#progress-fill{height:100%;width:100%;background:#d6c390;transform:scaleX(0);transform-origin:left;will-change:transform}.modal-open #viewport{pointer-events:none}.modal-open{overscroll-behavior:none}
@media(min-width:1700px){.story{width:440px}#narration{font-size:48px}}
@media(max-width:1050px){.masthead>p{display:none}.story{width:35vw}#narration{font-size:35px}.chapter{font-size:8px;letter-spacing:1.5px}.journey-footer{grid-template-columns:150px 1fr 80px;gap:22px}#route button{font-size:10px;min-width:34px}.journey-count small{display:none}#end-message{width:32vw}#end-message>span{font-size:22px}}
@media(max-width:700px){.masthead{top:22px;left:6%;right:6%;gap:10px}.wordmark{font-size:17px;gap:7px}.brand-star{font-size:25px}.masthead>button{font-size:0;gap:0;border:0;padding:0}.masthead>button>span{font-size:23px}.story{left:7%;top:13.5%;width:82%;max-width:350px}.chapter{font-size:8px;letter-spacing:1.8px;margin-bottom:11px}#narration{font-size:31px;line-height:1.1;letter-spacing:-.8px;max-width:350px}#narration em{font-size:22px;line-height:1.25;margin-top:8px}.story-link{font-size:10px;gap:21px;padding:7px 0;margin-top:12px}.story-link>span{font-size:17px}.place{width:430px}.place-object{width:400px;height:320px;bottom:25px}.place[data-place=projects] .place-object{width:370px;height:370px;bottom:18px}.place[data-place=experience] .place-object{width:330px;height:310px}.place[data-place=content] .place-object{width:360px;height:300px}.place[data-place=thoughts] .place-object{width:340px;height:310px}.place[data-place=contact] .place-object{width:320px;height:310px}.place-caption{bottom:-32px;padding:10px 14px;gap:11px}.place-title{font-size:20px}.place-number{font-size:9px}.place-sublabel{display:none}.journey-footer{bottom:23px;left:6%;right:6%;display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between}.ride-hint{order:0;font-size:10px;gap:9px}.ride-hint small{font-size:8px;max-width:215px;line-height:1.4}.scroll-mark{font-size:25px}.journey-count{order:1}.journey-count>span:first-child{font-size:27px}.journey-count small{display:none}#route{order:2;flex:0 0 100%;gap:2px;padding:0}#route button{font-size:9px;min-width:28px;gap:8px;letter-spacing:0;padding:0}#route button:before{width:6px;height:6px}#route:before{top:3px}#end-message{left:7%;top:34%;width:77%;max-width:340px}#end-message>span{font-size:22px}#end-message>small{display:none}.at-end .story{top:13%}.at-end #narration{font-size:29px}.at-end #narration em{font-size:20px}}
@media(max-height:680px) and (min-width:701px){.masthead{top:22px}.story{top:18%}#narration{font-size:34px}#narration em{font-size:24px;margin-top:10px}.chapter{margin-bottom:12px}.story-link{margin-top:12px}.place-object{width:370px;height:300px}.place[data-place=projects] .place-object{width:320px;height:320px}.place[data-place=experience] .place-object{width:300px;height:280px}.place[data-place=content] .place-object{width:320px;height:270px}.place[data-place=thoughts] .place-object{width:300px;height:275px}.place[data-place=contact] .place-object{width:290px;height:280px}.journey-footer{bottom:23px}#end-message{top:44%}#end-message>span{font-size:20px}.at-end #narration{font-size:32px}}
@media(max-height:650px) and (max-width:700px){.masthead{top:16px}.story{top:13%}#narration{font-size:25px;max-width:290px}#narration em{font-size:18px;margin-top:6px}.chapter{margin-bottom:8px}.story-link{display:none}.place-object{width:300px;height:245px;bottom:22px}.place[data-place=projects] .place-object{width:260px;height:260px;bottom:18px}.place[data-place=experience] .place-object{width:260px;height:240px}.place[data-place=content] .place-object{width:280px;height:240px}.place[data-place=thoughts] .place-object{width:260px;height:240px}.place[data-place=contact] .place-object{width:230px;height:230px}.display-plinth{width:270px!important}.place-caption{padding:8px 12px;bottom:-30px}.place-title{font-size:19px}.journey-footer{bottom:17px;gap:13px}.ride-hint small{display:none}.rider-name{display:none}.at-end .story{top:12%}.at-end #narration{font-size:23px}.at-end #narration em{font-size:17px}#end-message{top:32%}#end-message>span{font-size:17px;line-height:1.2}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Keep the changing landscape in view; the narration behaves like a quiet game caption. */
@media(min-width:701px){
 .story,.at-end .story{top:auto;bottom:165px;width:25vw;max-width:360px}
 #narration,.at-end #narration{font-size:32px;letter-spacing:-.8px;line-height:1.14}
 #narration em{font-size:23px;line-height:1.25;margin-top:10px}
 .chapter{margin-bottom:13px}.story-link{margin-top:12px}
 .story:before{content:"";position:absolute;inset:-19px -15px -16px -22px;z-index:-1;pointer-events:none;background:linear-gradient(90deg,#233d548a,#233d5433 75%,transparent);border-radius:4px}
 #end-message{top:21%;width:350px}
}
@media(max-height:650px) and (max-width:700px){
 .place-object{width:220px;height:190px}.place[data-place=projects] .place-object{width:220px;height:220px}
 .place[data-place=experience] .place-object{width:210px;height:190px}.place[data-place=content] .place-object{width:220px;height:185px}
 .place[data-place=thoughts] .place-object{width:190px;height:170px}.place[data-place=contact] .place-object{width:190px;height:180px}
 .display-plinth{width:225px!important}
}

/* A single character: asleep in the meadow, then an articulated cyclist. */
body[data-departure=sleeping],body[data-departure=waking]{overflow:hidden}
.stella-upper,.stella-legs{position:absolute;inset:0;width:220px;height:252px;overflow:visible;pointer-events:none;transition:opacity .45s}
.stella-upper{z-index:3}.far-leg{z-index:0}.bicycle{z-index:1;transition:translate .85s cubic-bezier(.22,.65,.3,1)}.near-leg{z-index:4}
.trouser{fill:none;stroke:#77705a;stroke-width:19;stroke-linecap:round;stroke-linejoin:round}.far-leg .trouser{stroke:#635f4b}.trouser-crease{fill:none;stroke:#514f40;stroke-width:1.25;opacity:.55;stroke-linejoin:round}.shoe{fill:#efe4d0;stroke:#62594a;stroke-width:1;stroke-linejoin:round}.shoe path+path{fill:none;stroke:#8d8270;stroke-width:.8}
#crank #pedal-far,#crank #pedal-near{stroke:#374b3e;stroke-width:4}
#sleeper{position:absolute;z-index:4;border:0;background:none;width:310px;height:155px;padding:0;color:var(--cream);transform:translate(-50%,-100%) scale(var(--sleep-scale,1));transform-origin:50% 100%;transition:opacity .55s,translate .8s;cursor:pointer}
#sleeper>img{position:absolute;width:100%;height:100%;object-fit:contain;inset:0;filter:drop-shadow(0 7px 3px #183b3433)}
.sleep-grass{position:absolute;left:-20px;right:-20px;bottom:5px;height:50px;background:#b3bd83;border-radius:50%;box-shadow:0 8px 0 #7b9562;transform:rotate(-3deg)}
.sleep-zzz{position:absolute;right:34px;top:10px;font:italic 18px Georgia,serif;color:#efe0aa;animation:nap 3s ease-in-out infinite}.sleep-zzz i{position:absolute;left:13px;top:-20px;font-size:23px}.sleep-zzz b{position:absolute;left:27px;top:-45px;font-size:29px;font-weight:400}.sleep-invite{position:absolute;left:55px;bottom:-34px;font:italic 15px Georgia,serif;white-space:nowrap;color:#f3e7bb}.sleep-invite>span{margin-left:12px}
body[data-departure=sleeping] .stella-upper,body[data-departure=sleeping] .stella-legs{opacity:0}
body[data-departure=sleeping] .bicycle{translate:170px 0}
body[data-departure=sleeping] .rider-shadow{translate:170px 0}
body[data-departure=sleeping] .rider-name,body[data-departure=waking] .rider-name{opacity:0}
body[data-departure=waking] #sleeper{opacity:0;translate:125px -30px;pointer-events:none}
body[data-departure=waking] .stella-upper,body[data-departure=waking] .stella-legs{transition-delay:.45s}
body[data-departure=sleeping] .story,body[data-departure=waking] .story{top:24%;bottom:auto;width:min(440px,34vw);max-width:440px}
body[data-departure=sleeping] #narration,body[data-departure=waking] #narration{font-size:42px}
body[data-departure=sleeping] .story:before,body[data-departure=waking] .story:before{display:none}
body[data-departure=sleeping] #narration em,body[data-departure=waking] #narration em{font-size:24px;line-height:1.4;max-width:350px}
.at-end .story-link{display:inline-flex}
.about-without-portrait{display:block!important;max-width:780px;margin:auto}.about-without-portrait .about-notebook{width:100%}
@keyframes nap{0%,100%{transform:translateY(0);opacity:.55}50%{transform:translateY(-8px);opacity:1}}
@media(max-width:700px){
 body[data-departure=sleeping] .story,body[data-departure=waking] .story{top:16%;left:7%;width:86%;max-width:360px}
 body[data-departure=sleeping] #narration,body[data-departure=waking] #narration{font-size:36px}
 body[data-departure=sleeping] #narration em,body[data-departure=waking] #narration em{font-size:22px;max-width:300px}
 #sleeper{width:300px;height:155px;translate:30px 0}.sleep-invite{font-size:18px;bottom:-39px;left:35px}
 body[data-departure=sleeping] .bicycle{translate:180px 0}
 body[data-departure=sleeping] .rider-shadow{translate:180px 0}
}
@media(max-height:650px){body[data-departure=sleeping] .story,body[data-departure=waking] .story{top:16%}body[data-departure=sleeping] #narration,body[data-departure=waking] #narration{font-size:30px}body[data-departure=sleeping] #narration em,body[data-departure=waking] #narration em{font-size:19px}body[data-departure=sleeping] .story-link{display:inline-flex}}
/* A clipped fixed stage must never become an inner scroll container on focus. */
#viewport{overflow:clip}
body[data-departure=sleeping] .bicycle,body[data-departure=sleeping] .rider-shadow{translate:280px 0}
@media(max-width:700px){#sleeper{width:370px;height:190px}body[data-departure=sleeping] .bicycle,body[data-departure=sleeping] .rider-shadow{translate:340px 0}}

/* A brighter day: clear blue, living greens and little warm notes. */
:root{--sky:#2468b2;--cream:#fff4d7;--ink:#23483c}
.sky-wash{background:linear-gradient(180deg,#0b458b0a,transparent 55%,#ffd97a0a)}
.world-vignette{background:linear-gradient(0deg,#124b6899,transparent 20%)}
.brand-star,.scroll-mark{color:#ffda7b}.wordmark{color:#fff6df}
#narration{color:#fff7e2}#narration em{color:#fff0be}.chapter{color:#f9e7b7}
.story-link{color:#fff7dc;border-bottom-color:#fff1bd80}
.masthead>p{color:#fff0d4cc}.masthead>button{color:#fff7df;border-bottom-color:#fff1bd66}
#route button{color:#eff8ea}#route button:before{background:#48967e;border-color:#e1f4d0}
#route button[aria-current=step]{color:#ffdf81}#route button[aria-current=step]:before{background:#ffcf63;border-color:#ffe3a0}
.progress-track{background:#134f7699}#progress-fill{background:#ffd16c}
.sleep-grass{background:#b7d75e;box-shadow:0 8px 0 #7ba346}
.sleep-invite,.sleep-zzz{color:#fff0b3}.journey-count>span:first-child{color:#ffe59b}
#end-message{color:#ffe69d}#end-message>small{color:#fff0c4cc}
@media(min-width:701px){.story:before{background:linear-gradient(90deg,#174d777a,#174d7726 75%,transparent)}}
@media(max-width:700px){.world-vignette{background:linear-gradient(0deg,#164b75ee,#164b75c4 11%,transparent 27%)}}
@media(max-width:700px) and (max-height:650px){#end-message{display:none!important}}
@media(min-width:701px){.story:before{right:-28px;background:linear-gradient(90deg,#16476cee,#16476cdd)}}

/* ============================================================
   collage-9 · crayon-book pass
   Hand-lettered type (Caveat for display, Shantell for labels),
   a taped paper card behind the riding narration, and a stronger
   crayon grain in the sky. Inner rooms and content untouched.
   ============================================================ */
@font-face{font-family:Caveat;src:url('assets/fonts/caveat-latin.woff2') format('woff2');font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:Shantell;src:url('assets/fonts/shantell-latin.woff2') format('woff2');font-weight:400 700;font-style:normal;font-display:swap}

/* — hand-lettered masthead — */
.wordmark{font-family:Caveat,cursive;font-weight:700;font-size:27px;letter-spacing:.2px}
.masthead>p{font-family:"Kaiti SC","STKaiti","KaiTi",serif;font-size:12px;letter-spacing:2px}
.masthead>button{font-family:Shantell,sans-serif;font-weight:600;font-size:13px;letter-spacing:.3px;border-bottom:0;text-decoration:underline wavy #ffe3a066;text-underline-offset:7px;text-decoration-thickness:1.5px}
.masthead>button:hover{text-decoration-color:#ffd166cc}

/* — chapter micro-label: hand-stamped, no tracked-out caps — */
.chapter{font-family:Shantell,sans-serif;font-weight:600;font-size:13px;letter-spacing:.4px;text-transform:lowercase;gap:9px}

/* — the big narration, written by hand — */
#narration{font-family:Caveat,cursive;font-weight:700;letter-spacing:0;line-height:1.02;font-size:clamp(44px,3.6vw,56px)}
#narration em{font-family:Caveat,cursive;font-style:normal;font-weight:600;font-size:.78em;letter-spacing:.2px;margin-top:8px;color:#ffd97a}
body[data-departure=sleeping] #narration,body[data-departure=waking] #narration{font-size:56px;letter-spacing:.2px}
body[data-departure=sleeping] #narration em,body[data-departure=waking] #narration em{font-size:32px}

/* — crayon underlines instead of hairline rules — */
.story-link{font-family:Shantell,sans-serif;font-weight:600;font-size:14px;letter-spacing:.2px;border-bottom:0;text-decoration:underline wavy #ffe6a880;text-underline-offset:7px;text-decoration-thickness:1.5px;gap:14px}
.story-link>span{font-size:17px}
.story-link:hover{text-decoration-color:#ffd166;color:#fff3cf}

/* — riding chapters sit on a taped sheet of paper — */
@media(min-width:701px){
 body[data-departure=riding] .story:before{inset:-30px -34px -26px -36px;background:#fbf2d9 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.05' filter='url(%23n)'/%3E%3C/svg%3E");border-radius:8px 44px 10px 48px/40px 10px 46px 12px;box-shadow:4px 7px 0 #17365a2e;transform:rotate(-.8deg)}
 body[data-departure=riding] .story:after{content:"";position:absolute;top:-36px;left:36%;width:96px;height:23px;background:#ffd166ad;transform:rotate(-3.5deg);border-radius:2px;box-shadow:0 1px 2px #17365a14;pointer-events:none}
 body[data-departure=riding] #narration{color:#22405f;font-size:46px}
 body[data-departure=riding] #narration em{color:#e0572f;font-size:34px}
 body[data-departure=riding] .chapter{color:#c07f3e}
 body[data-departure=riding] .story-link{color:#22405f;text-decoration-color:#e0572f66}
 body[data-departure=riding] .story-link:hover{color:#e0572f;text-decoration-color:#e0572f}
}

/* — footer & counters — */
.ride-hint{font-family:Shantell,sans-serif;font-weight:500;font-size:13px}
.ride-hint small{font-family:Shantell,sans-serif;font-size:9px}
#route button{font-family:Shantell,sans-serif;font-weight:500;font-size:12px;letter-spacing:.2px}
.journey-count>span:first-child{font-family:Caveat,cursive;font-weight:700;font-size:40px;letter-spacing:0}
.journey-count>span:last-child{font-family:Shantell,sans-serif;font-size:10px}
.journey-count small{font-family:Shantell,sans-serif;font-size:8px;letter-spacing:1px;text-transform:lowercase}

/* — station captions become little taped placards — */
.place-caption{background:#fbf2d9f7;border:1px solid #efe2bb;border-radius:16px 5px 18px 6px/6px 18px 5px 16px;transform:rotate(-1.2deg);box-shadow:2px 5px 0 #17365a26}
.place:hover .place-caption,.place:focus-visible .place-caption{transform:rotate(-.4deg) translateY(-3px)}
.place-title{font:700 24px/1 Caveat,cursive;letter-spacing:.2px;color:#22405f}
.place-number{font-family:Shantell,sans-serif;font-weight:700;font-size:10px;letter-spacing:.4px;color:#c07f3e}
.place-arrow{font-size:16px;color:#e0572f}
.place-sublabel{font-family:Shantell,sans-serif;font-weight:500;font-size:10px;letter-spacing:1px;text-transform:none;color:#fff0c4d9}

/* — the sleeping girl, the end line — */
.sleep-invite{font-family:Caveat,cursive;font-style:normal;font-weight:600;font-size:20px}
.sleep-zzz{font-family:Caveat,cursive;font-style:normal}
.rider-name{font-family:Caveat,cursive;font-style:normal;font-weight:600;font-size:17px;letter-spacing:.3px}
#end-message>span{font-family:Caveat,cursive;font-style:normal;font-weight:600;font-size:32px;letter-spacing:.2px}
#end-message>small{font-family:Shantell,sans-serif;font-size:11px;letter-spacing:.3px}

/* — a sky with visible crayon strokes — */
.sky-wash:after{opacity:.34;background-image:repeating-linear-gradient(118deg,transparent 0 30px,#ffffff07 30px 34px,transparent 34px 72px,#0a2c4d0d 72px 77px),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.3' filter='url(%23n)'/%3E%3C/svg%3E")}

/* — size retune: handwriting reads smaller than Georgia — */
@media(min-width:1700px){body[data-departure=riding] #narration{font-size:54px}}
@media(max-width:1050px){body[data-departure=riding] #narration{font-size:40px}body[data-departure=riding] #narration em{font-size:29px}}
@media(max-width:700px){
 .wordmark{font-size:20px;white-space:nowrap}
 #narration{font-size:44px;max-width:340px}
 #narration em{font-size:30px}
 body[data-departure=sleeping] #narration,body[data-departure=waking] #narration{font-size:48px}
 body[data-departure=sleeping] #narration em,body[data-departure=waking] #narration em{font-size:29px}
 .chapter{font-size:11px}
 .story-link{font-size:12px}
 .place-title{font-size:23px}
 #route button{font-size:10px}
}
@media(max-height:680px) and (min-width:701px){body[data-departure=riding] #narration{font-size:38px}body[data-departure=riding] #narration em{font-size:27px}body[data-departure=riding] .story:after{top:-33px}}
@media(max-height:650px) and (max-width:700px){#narration{font-size:34px}#narration em{font-size:24px}body[data-departure=sleeping] #narration,body[data-departure=waking] #narration{font-size:38px}body[data-departure=sleeping] #narration em{font-size:24px}}

/* 2026-11-07: the sleeping character is the invitation. */
body[data-departure=sleeping] #peek-current,body[data-departure=waking] #peek-current{display:none}
body[data-departure=sleeping] .ride-hint,body[data-departure=waking] .ride-hint{visibility:hidden}
.wake-arrow{position:absolute;right:25px;top:-53px;width:90px;height:100px;pointer-events:none;filter:drop-shadow(1px 2px 0 #204e7955)}
.wake-arrow svg{display:block;width:100%;height:100%;overflow:visible}
.wake-arrow path{stroke:#ffe59a;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
body[data-departure=waking] .wake-arrow{opacity:0}
