:root{--forest:#244c3e;--ink:#26352e;--muted:#687268;--paper:#fafaf6;--line:#dfe3d9;--soft:#eef0e8;--serif:Georgia,'Times New Roman',serif;--sans:Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-optical-sizing:auto;font-size:16px;line-height:1.5}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button:disabled{cursor:wait;opacity:.6}button:focus-visible,a:focus-visible{outline:3px solid #c08530;outline-offset:4px}a:hover{color:#52775b}button:hover{outline:1px solid currentColor;outline-offset:2px}.skip{position:absolute;left:12px;top:-80px;background:white;padding:12px;z-index:2000}.skip:focus{top:10px}.header{height:100px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 4%;background:#fafbf7}.brand{display:flex;gap:16px;align-items:center}.brand svg{width:74px;fill:none;stroke:var(--forest);stroke-width:2.3;stroke-linejoin:round}.brand strong{font-size:26px;display:block;line-height:1.2}.brand small,.footer-brand small{display:block;font-family:var(--sans);font-size:10px;letter-spacing:3.2px;margin-top:9px}.header nav{display:flex;gap:32px;height:100%;align-items:center}.header nav a{font-size:16px;position:relative;padding:12px 0}.header nav a.active:after{content:'';height:2px;background:var(--forest);position:absolute;bottom:3px;left:0;right:0}.tracking{display:flex;align-items:center;gap:10px}.tracking strong{font-size:14px;font-weight:normal;display:block}.tracking small{font-size:12px;color:var(--muted);display:block;margin-top:2px}.status-dot{width:9px;height:9px;flex-shrink:0;background:#a18952;border-radius:50%}.status-dot.live{background:#397f40;box-shadow:0 0 0 4px #e2eddf}.hero{height:330px;position:relative;background:#eef0e8;color:#fff;display:flex;align-items:center}.hero:before{content:none}.hero-inner{position:relative;margin-left:5%;padding:24px 0}.eyebrow{font:11px/1.5 var(--sans);letter-spacing:2.4px;color:var(--forest);margin:0 0 9px}.hero .eyebrow{color:#e4e9dd;letter-spacing:3px}.hero h1{font-size:58px;letter-spacing:-1.5px;font-weight:normal;line-height:1.05;margin:15px 0 9px}.hero-subtitle{font-size:30px;margin:0}.hero-rule{width:55px;height:1px;background:#dfd9ba;margin:24px 0 15px}.hero-quote{font-size:16px;font-style:italic;margin:0}.hero-caption{position:absolute;right:4%;bottom:24px;font:11px var(--sans);letter-spacing:1.5px;color:#fff}main{max-width:1500px;margin:auto;padding:30px 3.2% 0}.section-heading,.small-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.section-heading{margin:0 0 23px}.section-heading h2{font-size:29px;font-weight:normal;margin:0}.section-heading>a{font-size:14px;color:var(--forest)}.section-heading>a span{margin-left:12px}.journey-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(315px,1fr);gap:27px}.map-panel{height:690px;position:relative;border:1px solid #d5ddcf;border-radius:7px;overflow:hidden;isolation:isolate;background:#e2e8df}#map{height:100%;width:100%;z-index:0}.map-toolbar{position:absolute;z-index:500;left:14px;top:14px;display:flex;border-radius:5px;overflow:hidden;box-shadow:0 2px 12px #24382d20;max-width:calc(100% - 28px)}.map-toolbar button{background:#fffef9;border:0;padding:12px 18px;font-size:14px;border-right:1px solid #e2e5dc}.map-toolbar button.selected{background:var(--forest);color:white}.leaflet-top.leaflet-left{top:65px;left:4px}.leaflet-control-zoom a{color:var(--ink)!important}.leaflet-control-attribution{font-size:10px!important}.map-center{position:absolute;z-index:500;top:151px;left:14px;width:34px;height:34px;border:1px solid #c9d1c7;border-radius:4px;background:#fffef9;font-size:25px;line-height:1}.map-key{position:absolute;bottom:29px;left:16px;background:#fffffff2;z-index:500;padding:7px 10px;font:11px var(--sans);border-radius:3px}.map-key span{display:inline-block;width:19px;height:3px;background:#bb513c;vertical-align:middle;margin-right:6px}.map-notice{position:absolute;bottom:70px;left:15px;right:15px;z-index:500;background:#fffef3;padding:12px 16px;box-shadow:0 2px 8px #233a2422;font-size:14px}.location-card{background:var(--soft);border:1px solid #e8eadf;border-radius:7px;padding:23px 24px 14px}.location-heading{display:flex;gap:16px}.pin{font-size:36px;line-height:1.1;color:var(--forest)}.location-card .eyebrow{font-size:10px;letter-spacing:1.7px;margin:0 0 4px}.location-card h2{font-size:21px;margin:0 0 5px;font-weight:normal}#coordinates{font-family:var(--sans);font-size:14px;letter-spacing:.2px}#coordinates[href]:after{content:' ↗'}#location-time{font-size:12px;margin:6px 0 0}.muted{color:var(--muted);font-size:14px}.stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #dce1d5;margin-top:19px;padding-top:16px;gap:10px}.stats span{font-size:12px;color:var(--muted);display:block}.stats strong{font-size:21px;display:block;margin-top:4px;font-weight:normal}.stats-note{font-size:11px;color:var(--muted);margin:12px 0 0}.journal{padding:25px 3px 0}.small-heading h2{font-size:22px;font-weight:normal;margin:0}.text-button{background:none;border:0;padding:5px 0;color:var(--forest);font-size:13px}.entry{padding:0 0 24px 26px;border-left:1px solid #ced5c9;position:relative;margin-left:7px}.entry:first-child{margin-top:24px}.entry:before{content:'';width:9px;height:9px;border:4px solid var(--paper);background:#60755c;border-radius:50%;position:absolute;left:-9px;top:2px}.entry time{font:12px var(--sans);color:var(--muted)}.entry h3{font-size:19px;margin:5px 0}.entry p{font-size:15px;line-height:1.5;margin:0;white-space:pre-line}.entry:last-child{padding-bottom:0}.quote-card{background:var(--soft);border-radius:6px;padding:20px;margin:24px 0 0;text-align:center}.quote-card svg{width:45px;fill:none;stroke:var(--forest);stroke-width:2}.quote-card p{font-style:italic;font-size:19px;margin:7px 0 0;line-height:1.4}.gallery-section{padding:32px 0}.gallery{margin-top:18px;display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.gallery button{padding:0;border:0;background:none;text-align:left;color:var(--ink)}.gallery img{width:100%;height:165px;object-fit:cover;border-radius:5px;display:block}.gallery button:hover,.entry-photo:hover{outline:none}.gallery button:hover img,.entry-photo:hover img{outline:1px solid #7c9482;outline-offset:3px}.gallery button:hover span{color:var(--forest)}.gallery button span{display:block;margin-top:8px;font-size:14px}.gallery-empty{grid-column:1/-1;display:flex;gap:20px;align-items:center;background:var(--soft);border-radius:5px;padding:23px}.gallery-empty strong{display:block;font-size:19px;font-weight:normal}.gallery-empty p{margin:4px 0 0;color:var(--muted);font-size:14px}.about{border-top:1px solid var(--line);padding:34px 0;display:grid;grid-template-columns:1fr 1fr;gap:70px}.about h2{font-size:28px;max-width:390px;font-weight:normal;line-height:1.3;margin:10px 0}.about p{margin-top:0}footer{border-top:1px solid #dce0d5;background:#e8eae2;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:26px 4%;font-size:12px;color:#596353}.footer-brand{font-size:21px;color:var(--ink)}.footer-brand small{font-size:9px;letter-spacing:2px}footer p{margin:0}dialog{border:0;padding:16px;background:var(--paper);border-radius:6px;max-width:90vw}dialog::backdrop{background:#10251be0}dialog img{display:block;max-width:85vw;max-height:75vh;object-fit:contain}dialog p{margin:12px 35px 0 0}#close-lightbox{position:absolute;right:20px;top:20px;border:0;width:36px;height:36px;font-size:25px;background:white;border-radius:50%}.noscript{padding:20px}.position-marker{background:var(--forest);border:3px solid #fff;border-radius:50%;box-shadow:0 1px 9px #162d2a80;width:20px;height:20px}.leaflet-popup-content{font-family:var(--serif);font-size:14px}.empty-note{border:1px solid var(--line);border-radius:5px;padding:18px;margin-top:20px}
@media(min-width:1450px){.header{padding-left:5%;padding-right:5%}.hero-inner{margin-left:max(5%,calc((100vw - 1400px)/2))}.map-panel{height:730px}}
@media(max-width:1100px){.header{height:90px;gap:16px}.brand svg{width:52px}.brand strong{font-size:23px}.header nav{gap:20px}.tracking{display:none}.journey-grid{gap:20px;grid-template-columns:minmax(0,1.6fr) minmax(290px,1fr)}.location-card{padding:20px 16px}.map-toolbar button{padding:12px}.hero h1{font-size:50px}}
@media(max-width:760px){.header{height:auto;min-height:120px;flex-wrap:wrap;padding:16px 5% 0;gap:10px}.brand strong{font-size:25px}.brand small{font-size:9px}.header nav{justify-content:space-between;width:100%;height:44px;gap:10px}.header nav a{font-size:14px}.hero{height:300px}.hero h1{font-size:40px;letter-spacing:-.8px}.hero-subtitle{font-size:25px}.hero-caption{display:none}main{padding:25px 5% 0}.section-heading{align-items:flex-end}.section-heading h2{font-size:26px}.section-heading>a{max-width:115px;font-size:12px;text-align:right}.journey-grid{grid-template-columns:1fr}.map-panel{height:480px}.map-toolbar button{font-size:13px;padding:11px 13px}.location-card{padding:23px}.journal{padding-top:25px}.quote-card{display:none}.gallery{grid-template-columns:repeat(2,1fr)}.gallery img{height:140px}.about{grid-template-columns:1fr;gap:10px;padding:28px 0}.about h2{font-size:26px}.gallery-empty{padding:20px}.small-heading{gap:12px}.small-heading h2{font-size:22px}footer{flex-direction:column;align-items:flex-start;padding:25px 5%;gap:17px}.gallery-section{padding-top:28px}.stats strong{font-size:23px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

.map-key b{font-weight:normal}.text-button{white-space:nowrap;flex-shrink:0}

.journal-filter{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;font-size:14px}.journal-filter select{max-width:65%;font:inherit;color:var(--ink);border:1px solid #ced5c9;border-radius:4px;background:var(--paper);padding:8px 10px}.journal-help{font-size:12px;color:var(--muted);line-height:1.5;margin:10px 0 16px}.entry-source{display:block;font:11px var(--sans);color:var(--muted);margin-top:4px}.entry-map{display:block;margin-top:7px}.journal-pagination{display:flex;justify-content:space-between;gap:12px}.journal-pagination[hidden]{display:none}.journal-pagination button{padding:9px 12px;border:1px solid #ced5c9;border-radius:4px;background:var(--paper);color:var(--forest);font-size:14px}.journal-pagination button:disabled{cursor:default;opacity:.4}#journal-count{font-size:12px;margin-top:18px}.journal-filter select:focus-visible{outline:3px solid #c08530;outline-offset:3px}

.day-marker{border:2px solid white;box-shadow:0 2px 5px #152b2544;border-radius:5px;text-align:center;color:white;font-family:var(--sans);line-height:1}.day-start{background:#244c3e}.day-end{background:#a74d34}.day-marker b{display:block;font-size:13px;padding-top:3px}.day-marker span{display:block;font-size:10px;margin-top:2px}.day-key{display:grid;grid-template-columns:max-content max-content;align-items:center;column-gap:13px;row-gap:7px;margin-top:8px}.map-key-item{display:inline-flex!important;align-items:center;gap:6px;width:auto!important;height:auto!important;background:none!important;margin:0!important}.map-key-item img{display:block;width:25px;height:25px}.map-key-current{grid-column:1/-1}.current-position-key{position:relative;display:block;width:20px;height:20px;border:3px solid #fff;border-radius:50%;background:var(--forest);box-shadow:0 1px 5px #162d2a70}.current-position-status{font:normal 10px var(--sans);color:#267349}.map-key-route{display:flex;align-items:center}.map-key small{display:block;font-size:10px;color:var(--muted);margin-top:5px}

.entry-photo{display:block;padding:0;border:0;background:none;margin-top:12px}.entry-photo img{display:block;max-width:100%;max-height:160px;border-radius:5px;object-fit:cover}

.photo-marker{background:#fff;border:2px solid var(--forest);border-radius:5px;box-shadow:0 2px 6px #132a2544;text-align:center;font-size:18px;line-height:26px}.gallery small{display:block;color:var(--muted);font-size:12px;margin-top:4px}

.day-marker,.photo-marker{border-width:2px;border-radius:5px}.photo-marker{overflow:hidden;line-height:1}.photo-marker img{display:block;width:100%;height:100%;object-fit:contain}

.hero-inner{text-shadow:0 1px 5px #0009}@media(max-width:760px){.hero{background-position:38% 55%}}

.hero{isolation:isolate;background-image:none}.hero::after{content:"";position:absolute;inset:0;z-index:-2;background-image:none;background-size:cover;background-position:var(--hero-position,inherit);transform:var(--hero-transform,scaleX(-1))}.hero::before{z-index:-1}

.trip-bar{display:flex;align-items:center;gap:24px;padding:12px 5% 9px;background:#eef0e8;border-bottom:1px solid var(--line);overflow:hidden}.trip-bar-title{font:10px var(--sans);letter-spacing:2px;white-space:nowrap}.trip-buttons{display:flex;align-items:center;gap:10px;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;padding:2px 3px 7px;scroll-snap-type:x proximity;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#aab6a9 transparent}.trip-buttons::-webkit-scrollbar{height:4px}.trip-buttons::-webkit-scrollbar-thumb{background:#aab6a9;border-radius:4px}.trip-bar button{display:flex;align-items:center;gap:10px;flex:0 0 auto;scroll-snap-align:start;border:1px solid #c9d1c7;border-radius:5px;padding:8px 15px;background:#fafaf6;color:var(--forest)}.trip-bar button.planned{background:#f6f1e3;border-color:#d8c99c}.trip-bar button.ongoing{background:#f1f6ef;border-color:#9bb49f}.trip-bar button em{font:normal 8px var(--sans);letter-spacing:1.2px;color:#765f25;background:#e8dcae;border-radius:9px;padding:3px 7px}.trip-bar button em.running{display:inline-flex;align-items:center;gap:5px;color:#28623e;background:#d8eadc}.trip-bar button em.running:before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}.trip-bar button.selected{background:var(--forest);color:white;border-color:var(--forest)}.trip-bar button.selected em{color:#fff;background:#a58a3e}.trip-bar button.selected em.running{color:#215d3c;background:#e7f2e7}.trip-empty #map,.trip-empty .map-toolbar,.trip-empty .map-center,.trip-empty .map-key{visibility:hidden}.trip-empty .map-notice{top:40%;bottom:auto;text-align:center;box-shadow:none;background:transparent}.section-heading>a[hidden]{display:none}@media(max-width:760px){.trip-bar{display:block;padding:12px 5% 8px}.trip-bar-title{display:block;padding:0 0 8px}.trip-buttons{padding-bottom:6px}.trip-bar button{padding:9px 12px}}

.marker-leader,.marker-origin{pointer-events:none}.map-key span{background:#d52f32;height:4px}
.map-key span.planned{height:3px;background:repeating-linear-gradient(90deg,#d52f32 0 7px,transparent 7px 11px)}
.map-key [hidden]{display:none!important}

.camp-marker{background:#244c3e}.camp-marker svg{display:block;width:29px;height:22px;margin:1px auto 0;fill:none;stroke:white;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.camp-marker span{font-size:9px;margin-top:0}

.stats{grid-template-columns:1fr .9fr 1.4fr}#duration{font-size:16px;line-height:1.4;white-space:pre-line}

.camp-night{white-space:pre-line}

.photo-stack{background:none;border:0}.photo-stack-cards{position:relative;width:100%;height:100%}.photo-stack-cards img{position:absolute;display:block;object-fit:contain;background:#fff;border:2px solid var(--forest);border-radius:5px;width:38px;height:38px;box-shadow:0 2px 5px #132a2533;left:0;top:0}.photo-stack-cards img:nth-last-of-type(3){left:10px;top:0;transform:rotate(8deg)}.photo-stack-cards img:nth-last-of-type(2){left:5px;top:4px;transform:rotate(4deg)}.photo-stack-cards img:last-of-type{top:8px}.photo-stack-count{position:absolute;right:-4px;bottom:-4px;background:var(--forest);color:white;border:2px solid white;border-radius:12px;min-width:22px;padding:1px 4px;text-align:center;font: bold 11px/16px var(--sans)}.photo-stack:focus-visible{outline:2px solid var(--forest);outline-offset:6px}#lightbox-controls:not([hidden]){display:flex;align-items:center;justify-content:center;gap:20px;margin-top:12px}#lightbox-controls button{background:var(--forest);color:white;border:0;border-radius:5px;width:44px;height:40px}#lightbox-controls button:disabled{cursor:default;opacity:.35}#lightbox-position{font:14px var(--sans);min-width:45px;text-align:center}

.route-mode-toggle{position:absolute;z-index:500;right:14px;bottom:28px;display:flex;border:1px solid #c9d1c7;border-radius:5px;overflow:hidden;box-shadow:0 2px 12px #24382d20;background:#fffef9}.route-mode-toggle[hidden]{display:none}.route-mode-toggle button{border:0;background:#fffef9;color:var(--forest);padding:9px 13px;font:12px var(--sans)}.route-mode-toggle button+button{border-left:1px solid #dce1d8}.route-mode-toggle button.selected{background:var(--forest);color:#fff}.route-mode-toggle button:disabled{cursor:default;color:#98a197;background:#f2f3ed;opacity:1}
.endpoint-symbol{display:block!important;position:relative;width:18px;height:18px;margin:1px auto 0;padding:0!important;line-height:1}.endpoint-symbol>i{display:block;position:absolute;inset:2px;padding:0!important;border:2px solid #fff;border-radius:50%}.endpoint-end>i:after{content:'';position:absolute;inset:3px;background:#fff;border-radius:50%}.day-marker .endpoint-symbol+span{margin-top:0}.day-key>i{width:23px;height:23px;padding:2px}.day-key>i .endpoint-symbol{transform:scale(.72);transform-origin:center;margin:0 auto}.plan-endpoint .endpoint-symbol{margin-top:3px}
@media(max-width:620px){.route-mode-toggle{right:12px}}
.plan-camp-marker svg{margin:2px auto 0;width:31px;height:23px}
.custom-stay-marker{background:#fff;color:var(--forest);padding-top:2px}.custom-stay-marker img{display:block;width:32px;height:32px;margin:0 auto;object-fit:contain}.custom-stay-marker span{font-size:9px;font-weight:bold;margin-top:1px}

/* Compact dated overnight symbols match the original camp footprint. */
.custom-stay-marker{padding-top:0}
.custom-stay-marker img{width:28px;height:26px;margin:0 auto;object-fit:contain}
.custom-stay-marker span{font-size:9px;margin-top:0;white-space:nowrap}

.custom-stay-marker.finnish-stay-marker{background:#244c3e;color:#fff}

/* Norwegian route symbols invert Finnish colors; hut colors stay unchanged. */
.day-marker.norway-route-marker:not(.custom-stay-marker){background:#fff;color:#244c3e}
.day-marker.norway-route-marker.day-end{color:#a74d34}
.norway-route-marker .endpoint-symbol>i{border-color:currentColor}
.norway-route-marker .endpoint-end>i:after{background:currentColor}
.norway-route-marker.camp-marker:not(.custom-stay-marker) svg{stroke:#244c3e}

/* One shared date line and illustration slot for all overnight types/countries. */
.day-marker.camp-marker{padding-top:0}
.day-marker.camp-marker>div{display:grid;grid-template-rows:23px 11px;justify-items:center;align-items:center}
.day-marker.camp-marker svg{width:29px;height:22px;margin:0}
.day-marker.custom-stay-marker img{width:28px;height:26px;margin:0;object-fit:contain}
.day-marker.camp-marker span,.day-marker .endpoint-symbol+span{font:400 9px/11px Arial,sans-serif;letter-spacing:0;margin:0;white-space:nowrap}

/* Detached, country-colored date badge below the exact planning icon. */
.detached-date-marker{background:none;border:0;box-shadow:none}
.detached-marker-content{display:flex;flex-direction:column;align-items:center;gap:4px}
.detached-marker-content img{display:block;flex:none;max-width:none}
.detached-marker-content span{display:block;font:400 9px/12px Arial,sans-serif;letter-spacing:0;white-space:nowrap;padding:1px 5px;border-radius:4px;box-shadow:0 1px 3px #14241d30}

/* The newest GPS point stays on the route; nearby markers yield to it. */
.position-marker-live{background:#267349;box-shadow:0 1px 9px #163d2d99}
.position-marker-live:after{content:'';position:absolute;inset:-8px;border:2px solid #267349;border-radius:50%;pointer-events:none;animation:position-pulse 2s ease-out infinite}
.current-position-key.live{background:#267349}.current-position-key.live:after{content:'';position:absolute;inset:-6px;border:1.5px solid #267349;border-radius:50%;pointer-events:none;animation:position-pulse 2s ease-out infinite}
@keyframes position-pulse{0%{transform:scale(.55);opacity:.75}72%,100%{transform:scale(1.5);opacity:0}}
@media(prefers-reduced-motion:reduce){.position-marker-live:after,.current-position-key.live:after{animation:none;inset:-5px;opacity:.4}}

/* Seasonal photographs retain their original orientation and individual crop. */
@media(max-width:760px){.hero::after{background-position:var(--hero-mobile-position,var(--hero-position,inherit))}}
.hero-inner{max-width:90%;isolation:isolate}

/* Per-photo text colors; no dark overlay. */
.hero{color:var(--hero-text,#fff)}
.hero .eyebrow{color:inherit}
.hero-inner{text-shadow:var(--hero-shadow,0 1px 5px #0009)}
.hero-rule{background:currentColor}
@media(max-width:760px){.hero{color:var(--hero-mobile-text,var(--hero-text,#fff))}.hero-inner{text-shadow:var(--hero-mobile-shadow,var(--hero-shadow,0 1px 5px #0009))}}

/* Serve the HDR JPEG directly, retaining its gain map. */
.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--hero-position,50% 58%);transform:var(--hero-transform,none);z-index:-2}
.hero:has(.hero-photo)::after{display:none}
@media(max-width:760px){.hero-photo{object-position:var(--hero-mobile-position,var(--hero-position,50% 58%))}}

/* Reserve space without painting a temporary image or mismatched text. */
.hero[data-hero-loading]:not([data-hero-image]){background:#eef0e8}
.hero[data-hero-loading]:not([data-hero-image])::after{display:none}
.hero[data-hero-loading]:not([data-hero-image]) .hero-inner{visibility:hidden}

/* Keep the photographic header sharp and aligned on very wide displays. */
.header,.hero,.trip-bar{width:100%;max-width:1500px;margin-inline:auto}
.hero{height:clamp(330px,calc(15vw + 195px),420px)}
.hero-inner{margin-left:5%}
main{padding-inline:min(3.2vw,48px)}
@media(max-width:760px){.hero{height:300px}main{padding-inline:5%}}
