/* A camera over a shared, illustrated world. HUD and hand stay on the screen. */
.expedition .journey-viewport{position:absolute;inset:84px 0 156px;overflow:hidden;display:block;outline:none;cursor:grab;touch-action:none;isolation:isolate}
.expedition .journey-viewport.panning{cursor:grabbing}
.expedition .journey-world{position:absolute;left:0;top:0;width:1800px;height:1100px;max-width:none;min-width:0;aspect-ratio:auto;transform-origin:0 0;container-type:normal;will-change:transform;filter:none}
.expedition .journey-world:before{display:none}
.journey-terrain{position:absolute;inset:-180px;background:radial-gradient(ellipse at 75% 75%,#a9381925,transparent 35%),radial-gradient(ellipse at 65% 15%,#5cbdce25,transparent 40%),url('assets/arena-landscape.png') center/cover;mask-image:radial-gradient(ellipse,#000 45%,transparent 74%);pointer-events:none}
.expedition .journey-world>svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.journey-edge{stroke:#ead3a9;stroke-width:2.3;stroke-dasharray:3 5;filter:drop-shadow(0 2px 2px #07141c);vector-effect:non-scaling-stroke}
.shortcut-edge{stroke:#ef925e;stroke-width:3;stroke-dasharray:5 5}
.region-marker{position:absolute;transform:translate(-50%,-50%);display:flex;gap:12px;align-items:center;pointer-events:none;opacity:.78;color:#f3e0b9;text-shadow:0 3px 7px #000;font:700 24px Georgia;letter-spacing:2px}
.region-marker .element-seal{width:45px;height:45px;flex-shrink:0}
.expedition .map-node{width:58px;height:58px;border-radius:50%;border:2px solid #ba9c67;background:radial-gradient(circle at 40% 25%,#35504b,#102a2b 70%)!important;box-shadow:inset 0 0 0 3px #0b1e23,0 4px #091b23,0 7px 10px #0009;overflow:visible;padding:12px;transition:box-shadow .15s,filter .15s;z-index:3;transform:translate(-50%,-50%)}
.expedition .map-node:after{display:none}
.expedition .map-node .element-rune{display:block;width:100%;height:100%;color:var(--tile);filter:drop-shadow(0 1px 2px #000)}
.node-number{position:absolute;right:-5px;bottom:-5px;display:grid;place-items:center;min-width:22px;height:22px;border:1px solid #b99b63;border-radius:50%;background:#142b2c;color:#f4e5bb;font:700 11px Arial}
.node-tooltip{position:absolute;bottom:calc(100% + 12px);left:50%;transform:translateX(-50%);white-space:nowrap;padding:7px 10px;background:#10232bec;border:1px solid #c4a365;border-radius:5px;font:700 13px Arial;color:#f3e3bd;opacity:0;pointer-events:none}
.map-node:is(:hover,:focus-visible) .node-tooltip{opacity:1}
.expedition .map-node.occupied-mine{outline:2px solid #9ee8da;outline-offset:5px;box-shadow:0 0 27px #7de7d1a0,0 5px #061b20}
.expedition .map-node.danger-node{border-color:#e59a6a;box-shadow:inset 0 0 0 3px #492d25,0 4px #2d1a1f,0 0 24px #f2693a55}
.expedition .map-node.map-fork{border-color:#f6d786;outline:2px solid #caaa5a80;outline-offset:4px;background:radial-gradient(circle,#6a5732,#182c2a)!important}
.expedition .map-node.map-portal{width:112px;height:90px;border:3px solid #ffe7a1;box-shadow:inset 0 0 0 6px #8e682d,0 6px #4b361a,0 0 48px #eeb348a6;background:radial-gradient(ellipse,#f8e6a5,#2c796a 48%,#153f3c 65%)!important;animation:portal-breathe 3s ease-in-out infinite}
.map-portal .element-rune{opacity:.9}
.map-portal .node-number{display:none}
.portal-label{position:absolute;left:50%;top:calc(100% + 19px);transform:translateX(-50%);width:242px;padding:12px;text-align:center;border:2px solid #dfba70;background:linear-gradient(#203f35ed,#112e2beb);box-shadow:0 5px 20px #0008;border-radius:7px;color:#ffe4a6;text-shadow:0 2px 3px #000}
.portal-label b{display:block;font:800 19px Georgia;letter-spacing:3px;margin-bottom:5px}.portal-label strong{display:block;font:800 14px Arial;letter-spacing:.8px}
.expedition .journey-world .exp-token{width:120px;height:120px;translate:-50% -92%;z-index:7}
.expedition .journey-world .exp-token.mine{z-index:9}
.expedition .journey-world .exp-token small{font-size:13px;max-width:150px}
.expedition .journey-world .token-count{font-size:14px;width:27px;height:27px}
.map-controls{position:absolute;z-index:17;right:20px;top:110px;display:flex;flex-direction:column;align-items:center;gap:7px;padding:9px;background:#0a202bdd;border:1px solid #b29258;border-radius:12px;box-shadow:0 7px 20px #0006}
.map-controls button{min-width:40px;padding:8px 9px;font-size:12px;background:#19302e;color:#f6e3b4;border:1px solid #b89c62;border-radius:6px}
.map-controls button:is(#map-zoom-in,#map-zoom-out){font-size:24px;line-height:1;min-width:44px}
#map-zoom-label{font:700 11px Arial;color:#e0d1ad}
.journey-help{position:absolute;bottom:143px;left:20px;margin:0;padding:7px 10px;color:#e2d5b4;background:#102524bd;border-radius:5px;font-size:11px;pointer-events:none}
.expedition:has(.encounter-scene) .map-controls{left:18px;right:auto;top:100px}
.expedition:has(.encounter-scene) .journey-help{display:none}
.encounter-scene{position:absolute;z-index:20;inset:84px 0 156px 28%;display:grid;grid-template-columns:minmax(180px,30%) minmax(0,1fr);border-left:2px solid #c6a469;box-shadow:-15px 0 40px #0007;background:#191c24;color:#eee1c6;overflow:hidden;animation:encounter-enter .22s ease-out}
.encounter-story{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;padding:30px 24px;border-right:1px solid #b1956266;overflow:hidden}
.encounter-story:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,#191c24 6%,#191c24b3 50%,#191c2433),var(--event-art) center/cover;opacity:.8}
.encounter-story .eyebrow{font-size:11px;line-height:1.5;letter-spacing:2px;color:#e7c177}
.encounter-story h2{font:500 clamp(24px,2.3vw,38px)/1.15 Georgia;color:#f0c783;margin:18px 0}
.encounter-story p{font:17px/1.5 Georgia;color:#e2d9c2;margin:0 0 24px}
.encounter-story button{font-size:13px;padding:10px 15px}
.encounter-emblem{position:relative;width:76px;height:76px;padding:17px;border:2px solid #d4b26c;background:#132a2ce0;border-radius:20px;box-shadow:0 0 30px #d4a45355;margin-top:35px;color:var(--tile)}
.encounter-emblem svg{width:100%;height:100%}
.encounter-decision{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:18px;padding:25px 24px 18px;min-width:0;min-height:0}
.encounter-decision>header{position:static;display:block;min-height:0;max-width:none;margin:0;padding:0;background:none;border:0;text-align:left;box-shadow:none}
.encounter-decision>header .eyebrow{font-size:10px;letter-spacing:2px;color:#d7b777}
.encounter-decision h2{font:500 clamp(20px,1.9vw,30px)/1.2 Georgia;color:#f0e5cf;margin:9px 0 0}
.event-options{display:flex;align-content:flex-start;justify-content:center;align-items:flex-start;gap:15px;flex-wrap:wrap;min-height:0;overflow:auto;padding:10px 5px;scrollbar-width:thin}
.event-option{position:relative;flex:1 1 160px;max-width:235px;min-height:235px;padding:0;background:#121d24;border:1px solid #9f967e;border-radius:0;color:#e3d7bc;overflow:hidden;text-align:left;box-shadow:0 7px 18px #0005;transition:border-color .15s,transform .15s}
.event-option>img{display:block;width:100%;height:130px;object-fit:cover;object-position:center 30%;opacity:.85;mask-image:linear-gradient(#000 65%,transparent)}
.event-option>div{padding:0 15px 16px}
.event-option h3{font:500 21px/1.15 Georgia;color:#f5d697;margin:5px 0 12px}
.event-option p{font:15px/1.4 Georgia;margin:0;color:#e1d4b9}
.event-option:is(:hover,:focus-visible),.event-energy:is(:hover,:focus-visible),.event-rival:is(:hover,:focus-visible){border-color:#ffe2a1;filter:brightness(1.1)}
.event-option.picked,.event-energy.picked,.event-rival.picked{border-color:#ffdc91;outline:2px solid #e5bd72;outline-offset:3px;box-shadow:0 0 25px #e1b76444}
.event-energies{width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:15px;padding:4px;align-items:start}
.event-energy{max-width:170px;justify-self:center;width:100%;padding:0;border:1px solid #b8a178;border-radius:8px;background:#10272d;overflow:hidden;color:#f3e1bc;touch-action:none}
.event-energy img{display:block;width:100%;aspect-ratio:2/3;object-fit:cover}
.event-energy span{display:block;padding:8px 2px;font:700 11px Arial}
.event-recipient{flex-basis:100%;display:flex;gap:10px;align-items:center;font:14px Arial;line-height:1.5;color:#e8d6b1;margin:0 0 10px}
.event-recipient .avatar{width:40px;height:40px;flex-shrink:0}
.event-rival{display:flex;flex-direction:column;align-items:center;gap:10px;width:140px;min-height:175px;padding:20px 10px;border:1px solid #93866c;background:#14272d;color:#f4dfb6}
.event-rival .avatar{width:65px;height:65px}.event-rival span{font-size:11px}
.encounter-decision>footer{position:static;display:flex;flex-direction:column;align-items:center;gap:10px;padding-top:12px;border-top:1px solid #9c805044}
.encounter-decision>footer p{margin:0;font:12px/1.4 Arial;color:#bdb6a7;text-align:center}
.encounter-decision>footer button{font-size:14px;min-width:210px;max-width:100%;padding:12px 20px}
.encounter-decision>footer button:disabled{opacity:.45}
.lap-reward{position:fixed;z-index:100;left:50%;top:20%;transform:translateX(-50%);padding:25px 45px;display:flex;flex-direction:column;gap:12px;text-align:center;background:linear-gradient(135deg,#244d3aed,#112f2ded);border:2px solid #ffe5a2;box-shadow:0 0 80px #e5bc5d66,0 20px 50px #0009;border-radius:12px;color:#ffe4a2;pointer-events:none;animation:lap-appear 4.2s both}
.lap-reward strong{font:800 20px Georgia;letter-spacing:2px}.lap-reward b{font:800 38px Georgia}.lap-reward span{font:14px Arial;color:#eee1bf}
.score-table>div{grid-template-columns:minmax(130px,1.5fr) repeat(5,minmax(65px,1fr))}
@keyframes portal-breathe{50%{box-shadow:inset 0 0 0 6px #8e682d,0 6px #4b361a,0 0 70px #eeb348ce}}
@keyframes encounter-enter{from{opacity:0;translate:25px 0}to{opacity:1;translate:0 0}}
@keyframes lap-appear{0%{opacity:0;scale:.85}12%,82%{opacity:1;scale:1}100%{opacity:0;scale:1.03}}
@media(max-height:800px){.encounter-story{padding:20px}.encounter-emblem{width:54px;height:54px;padding:12px;margin-top:12px}.encounter-story h2{font-size:26px;margin:12px 0}.encounter-story p{font-size:15px;margin-bottom:15px}.encounter-decision{padding:18px;gap:9px}.event-option{min-height:210px;max-width:200px}.event-option>img{height:88px}.event-option h3{font-size:19px}.event-option p{font-size:14px}.encounter-decision>footer button{padding:9px 14px}}
@media(prefers-reduced-motion:reduce){.map-portal,.encounter-scene,.lap-reward{animation:none}}

/* Reset inherited board-label styles on the portal plaque. */
.expedition .map-portal .portal-label{display:block;height:auto;margin:0;color:#ffe4a6;font-size:14px;line-height:1.2}
.expedition .map-portal .portal-label>b{position:static;display:block;margin:0 0 6px;color:#ffe4a6;font:800 19px/1.2 Georgia;letter-spacing:3px}
.expedition .map-portal .portal-label>strong{position:static;color:#ffe4a6;font:800 14px/1.2 Arial;letter-spacing:.8px}
.expedition .journey-world .map-node:not(.map-portal){transform:translate(-50%,-50%) rotateX(24deg)}

.encounter-scene{animation:none;z-index:29}.encounter-scene.encounter-new{animation:encounter-enter .22s ease-out}
.encounter-story:before{background-size:cover,auto 170%;background-position:center,center 62%}
.expedition:has(.encounter-scene) .exp-energy:is(:hover,:focus-visible,.selected){transform:rotate(var(--angle));box-shadow:0 4px 14px #0008}
.encounter-decision>footer .event-back-option{font-size:12px;padding:8px 12px;min-width:0;border:1px solid #9a8763;background:#172a2b;color:#e6d6b4}
.encounter-decision>footer .event-back-option.picked{border-color:#ffe1a4;box-shadow:0 0 10px #d5ad5244}
.event-options .event-energies{grid-template-columns:repeat(auto-fit,minmax(98px,1fr))}
@media(prefers-reduced-motion:reduce){.encounter-scene.encounter-new{animation:none}}

/* One landscape, entirely attached to the camera. The outer stage stays neutral. */
.battle.expedition{background:radial-gradient(ellipse at 50% 40%,#2e443d,#10232b 80%)}
.battle.expedition:before{background:linear-gradient(#10232b55,#081b22);filter:none}
.journey-terrain{inset:-400px;mask-image:none;background:linear-gradient(#0b282c12,#0c242a20),url('assets/arena-landscape.png') center/100% 100% no-repeat}
.journey-world.is-following{transition:transform 1.7s ease-in-out}
.journey-status{position:absolute;z-index:18;bottom:165px;left:50%;transform:translateX(-50%);padding:12px 22px;border:1px solid #d8b674;border-radius:7px;background:#102b2be6;box-shadow:0 4px 16px #0007;color:#ffe4aa;font:700 14px Arial;pointer-events:none;white-space:nowrap}
.guardian-sprite.lucas-clean{background:none!important;clip-path:none!important;mask-image:none!important;--selection-clip:none;--selection-size:100% 100%;--selection-position:center;overflow:visible}
.guardian-sprite.lucas-clean>img{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.selection-character-card{position:absolute;left:calc(50% + 130px);top:46%;width:clamp(170px,21vw,330px);height:auto;transform:translate(-50%,-50%) rotate(12deg);opacity:.42;border-radius:18px;box-shadow:0 0 0 2px #d9b46a77,0 20px 50px #0008;filter:saturate(.75);pointer-events:none;animation:card-backdrop-enter .35s ease-out}
.selection-character-card.confirmed{opacity:.68;filter:saturate(.9);box-shadow:0 0 0 2px #efcf89,0 0 45px #deb04a44}
@keyframes card-backdrop-enter{from{opacity:0;translate:18px 8px}to{translate:0 0}}
@media(prefers-reduced-motion:reduce){.journey-world.is-following{transition:none}.selection-character-card{animation:none}}

.expedition:has(.journey-status) .exp-hand,.expedition:has(.journey-status) .map-controls{pointer-events:none}
.guide-adventure{max-width:1180px;margin:0 auto;color:#f0e2c6}
.guide-adventure-heading{position:static;display:block;min-height:0;margin:0;padding:0;text-align:center;border:0;background:none;box-shadow:none}
.guide-adventure-heading h1{font:700 clamp(26px,3vw,40px) Georgia;color:#f3d491;margin:7px 0}
.guide-adventure-heading p{font-size:13px;color:#c9d2c7;margin:8px 0 15px}
.guide-chapters{display:flex;justify-content:center;gap:10px;margin-bottom:20px}
.guide-chapters button{display:flex;align-items:center;gap:9px;padding:9px 14px;border:1px solid #af935a;background:#142b2ceb;color:#dbcba7;font-size:13px;border-radius:7px}
.guide-chapters button b{width:23px;height:23px;display:grid;place-items:center;border:1px solid #917947;border-radius:50%;font-size:12px}
.guide-chapters button.current{background:#cfab63;color:#172a26;border-color:#ffe5a2;box-shadow:0 0 20px #e3b76033}
.guide-spread{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(0,1.1fr);gap:35px;align-items:center;min-height:330px;padding:25px 35px;border:1px solid #b59960;border-radius:16px;background:linear-gradient(135deg,#18322eea,#101f2af5);box-shadow:0 15px 40px #0005}
.guide-playground{position:relative;min-height:280px;display:flex;align-items:center;justify-content:center;gap:15px;isolation:isolate}
.guide-hero-pair{position:relative;width:100%;height:300px}
.guide-hero-card{position:absolute;left:18%;top:2%;height:90%;width:auto;border-radius:12px;transform:rotate(-12deg);opacity:.65;box-shadow:0 15px 20px #0006}
.guide-hero-avatar{position:absolute;left:27%;top:3%;width:75%;height:100%}
.guide-story h2{font:500 clamp(23px,2.3vw,34px)/1.15 Georgia;margin:12px 0 18px;color:#f5d99d}
.guide-story>p{font:18px/1.6 Arial;margin:0 0 20px;color:#f0e5ce}
.guide-story aside{padding:14px 18px;border-left:3px solid #cda75f;background:#081c2280;border-radius:0 7px 7px 0}
.guide-story aside>b{color:#edca81;font-size:12px;letter-spacing:.5px}
.guide-story aside p{font:14px/1.5 Arial;color:#ced7cb;margin:7px 0 0}
.guide-pages{position:static;display:flex;justify-content:space-between;align-items:center;padding:17px 0 5px;gap:20px}
.guide-pages button{padding:9px 18px;font-size:13px;color:#efdcaf;background:#142b2d;border:1px solid #b09359}
.guide-pages span{font-size:12px;color:#ddd1ad}.guide-pages button:disabled{opacity:.3}
.rules-scene .rules-reading{max-width:1200px;width:calc(100% - 60px);padding:85px 15px 110px;margin:0 auto;overflow:auto}
#help:has(.guide-adventure){max-width:1160px;width:calc(100% - 60px);padding:25px 35px}
.guide-dice{width:120px;height:120px;border:3px solid #dbbc7b;border-radius:24px;background:linear-gradient(135deg,#fff2c6,#ba9958);box-shadow:9px 13px #695239,15px 20px 30px #0007;transform:rotate(-12deg);display:grid;grid-template-columns:1fr 1fr;gap:25px;padding:25px;margin-bottom:65px}
.guide-dice i{border-radius:50%;background:#243830;box-shadow:inset 0 2px 3px #0007}
.guide-mini-path{position:absolute;left:0;right:0;bottom:10px;display:flex;justify-content:center;align-items:center;gap:12px;color:#d9c38c}
.guide-mini-path b{display:grid;place-items:center;width:35px;height:35px;border:1px solid #d6b67b;border-radius:50%;background:#24443a}
.guide-route-card{width:46%;max-width:180px;min-height:240px;padding:18px 15px;border:1px solid #a4b475;background:#17362d;border-radius:12px;text-align:center}
.guide-route-card .element-seal{width:65px;height:65px;display:block;margin:0 auto 18px}
.guide-route-card h3{font:500 21px Georgia;color:#f1dfb2;margin:8px 0 15px}
.guide-route-card>b{font-size:12px;color:#e1cea4}.guide-route-card p{font-size:13px;line-height:1.5;color:#d2d9c6}
.guide-route-card.risky{background:#402b27;border-color:#d89365}
.guide-speech{position:absolute;top:0;left:5%;right:5%;padding:17px;background:#f1dfb0;color:#20332e;border-radius:16px 16px 16px 2px;font:700 16px Georgia;text-align:center}
.guide-answer-fan{display:flex;gap:7px;align-self:flex-end;margin:75px 0 10px}
.guide-answer-fan>div{position:relative;width:80px;height:145px;transform:rotate(var(--a));border:2px solid #c3a66c;border-radius:9px;background:linear-gradient(0deg,#102626 10%,#10262666),var(--art) center/cover;display:flex;align-items:flex-end;justify-content:center;box-shadow:0 7px 15px #0007}
.guide-answer-fan b{position:absolute;top:7px;left:7px;color:#ffe5ad;font-size:15px}.guide-answer-fan span{font-size:11px;color:#f2e1b7;margin-bottom:10px}
.guide-portal{width:205px;height:205px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:3px solid #e4c37b;border-radius:50%;background:radial-gradient(circle,#45816d,#193e39 55%,#112a2c);box-shadow:0 0 45px #d6b35d66,inset 0 0 20px #d6b35d66;margin-bottom:35px;color:#ffe2a0}
.guide-portal>span{font-size:27px}.guide-portal strong{font:800 65px Georgia}.guide-portal>b{font-size:10px;letter-spacing:1px}
.guide-score-chips{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:center;gap:7px}.guide-score-chips span{padding:6px 8px;border:1px solid #907b50;border-radius:5px;font-size:10px;background:#112928}
@media(max-height:800px){.rules-scene .rules-reading{padding-top:65px;padding-bottom:85px}.guide-adventure-heading h1{font-size:28px}.guide-chapters{margin-bottom:12px;gap:7px}.guide-spread{min-height:260px;padding:18px 25px;gap:25px}.guide-playground{min-height:245px}.guide-hero-pair{height:250px}.guide-story h2{font-size:25px;margin:8px 0 12px}.guide-story>p{font-size:16px;line-height:1.45;margin-bottom:12px}.guide-story aside{padding:10px 14px}.guide-route-card{min-height:220px}.guide-pages{padding-top:12px}}

.guardian-sprite.lucas-clean>img{object-position:center bottom;transform:scale(1.13);transform-origin:center bottom}
.walking .lucas-clean>img{animation:lucas-footstep .26s ease-in-out infinite alternate}
.selection-character-card{max-height:calc(100dvh - 310px);width:auto;max-width:330px;top:50%}
#help:has(.guide-adventure)>.row h2{color:#edce91;font:700 20px Georgia}
@keyframes lucas-footstep{from{transform:translateY(0) rotate(-2deg) scale(1.13)}to{transform:translateY(-7px) rotate(2deg) scale(1.13)}}
@media(max-height:800px){.rules-scene .rules-reading{padding-top:42px}.guide-adventure-heading p{margin-bottom:10px}}
@media(prefers-reduced-motion:reduce){.walking .lucas-clean>img{animation:none}}
