.journey{position:relative}.map-stage{border-bottom:1px solid var(--line);background:#0a161c;height:clamp(560px,100vh - 110px,900px);position:relative;overflow:hidden}.map-svg{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.map-3d{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.has-3d .caravan .figure,.has-3d .caravan .fig-shadow,.has-3d .bandits{display:none}.map-vignette{pointer-events:none;background:radial-gradient(at 50% 45%,#0000 55%,#050403a6 100%),linear-gradient(90deg,#0b0806b3 0%,#0000 30% 68%,#0b08068c 100%),linear-gradient(#0000 78%,#0b0806d9 100%);position:absolute;inset:0}.lbl{font-family:var(--display);paint-order:stroke;stroke:#080604bf;stroke-linejoin:round;pointer-events:none}.lbl-region{fill:#e8cd9666;font-size:calc(24px * var(--ls,1));letter-spacing:.45em;stroke-width:0;font-weight:600}.lbl-sea{fill:#8cbec899;font-size:calc(15px * var(--ls,1));letter-spacing:.3em;stroke-width:0;font-style:italic}.lbl-mountain{fill:#cdaf78bf;font-size:calc(10px * var(--ls,1));letter-spacing:.25em;stroke-width:calc(2.4px * var(--ls,1))}.lbl-desert{fill:#e8c482b8;font-size:calc(11.5px * var(--ls,1));letter-spacing:.3em;stroke-width:calc(2.4px * var(--ls,1));font-style:italic}.lbl-water{fill:#8cbec8b3;font-size:calc(9.5px * var(--ls,1));letter-spacing:.2em;stroke-width:calc(2px * var(--ls,1));font-style:italic}.route-base{fill:none;stroke:#f4dfa680;stroke-width:calc(2px / var(--z,1));stroke-dasharray:calc(1px / var(--z,1)) calc(7px / var(--z,1));stroke-linecap:round}.route-done{fill:none;stroke:url(#route-gold);stroke-width:calc(3.4px / var(--z,1));stroke-linecap:round;filter:drop-shadow(0 0 3px #ffd278e6)}.sea-base{fill:none;stroke:#96d7e6b3;stroke-width:calc(2px / var(--z,1));stroke-dasharray:calc(6px / var(--z,1)) calc(5px / var(--z,1));stroke-linecap:round;animation:2.4s linear infinite sea-flow}@keyframes sea-flow{to{stroke-dashoffset:calc(-22px / var(--z,1))}}.sea-done{fill:none;stroke:#bdf0ff;stroke-width:calc(3.2px / var(--z,1));stroke-linecap:round;filter:drop-shadow(0 0 3px #96e6ffe6)}.lbl-sealane{fill:#aae1eed9;font-size:calc(11px * var(--ls,1));letter-spacing:.3em;stroke-width:calc(2.4px * var(--ls,1));font-style:italic}.ship-wrap{display:none}.at-sea .ship-wrap{display:inline}.at-sea .caravan>g:not(.ship-wrap){display:none}.ship .hull{fill:#6b3f22;stroke:#24140a;stroke-width:.6px}.ship .hull-trim{stroke:#d8b36a;stroke-width:.6px}.ship .castle{fill:#7e4a28;stroke:#24140a;stroke-width:.5px}.ship .mast,.ship .yard{stroke:#3a2414;stroke-width:.9px;stroke-linecap:round}.ship .sail{fill:#efe2c2;stroke:#6b5534;stroke-width:.5px;transform-box:fill-box;transform-origin:50% 0;animation:2.6s ease-in-out infinite sail}.ship .sail-stripe{fill:#a3281b}.ship .pennant{fill:#b02e1c;stroke:#f4dfa6;stroke-width:.3px}.ship .rock{transform-box:fill-box;transform-origin:50% 100%;animation:3s ease-in-out infinite rock}.ship .wake path{fill:none;stroke:#e1f5ffbf;stroke-width:.8px;stroke-linecap:round;stroke-dasharray:3 3;animation:.9s linear infinite wake}@keyframes rock{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes sail{50%{transform:scaleX(1.06)}}@keyframes wake{to{stroke-dashoffset:6px}}.stop-sea{background:#5aaac81a;border-left:2px solid #7fc6d8;gap:9px;padding:10px 12px;display:flex;font-size:15px!important}.stop-sea svg{color:#9fd8e6;flex:none;margin-top:3px}.wp{opacity:clamp(0, calc((var(--z,1) - 1.35) * 1.6), 1);transition:opacity .4s}.wp circle{fill:#f4dfa6;stroke:#2a1b10;stroke-width:1px}.wp text{fill:#e9dcbb;font:italic 10px var(--body);paint-order:stroke;stroke:#080604d9;stroke-width:3px}.stop-marker{cursor:pointer}.stop-ring{fill:#140c06d9;stroke:#f0cf86;stroke-width:2px}.stop-core{fill:#f0cf86;transition:fill .3s}.stop-pulse{fill:none;stroke:#f0cf86;stroke-width:1.5px;transform-box:fill-box;transform-origin:50%;animation:2.6s ease-out infinite stop-pulse}.stop-marker.is-here .stop-core{fill:#ff7a52}.stop-marker.is-here .stop-pulse{stroke:#ff7a52;animation-duration:1.4s}@keyframes stop-pulse{0%{opacity:.9;transform:scale(.9)}to{opacity:0;transform:scale(2.6)}}.stop-name{fill:#fff0c8;font:700 13px var(--display);letter-spacing:.14em;paint-order:stroke;stroke:#0a0603e6;stroke-width:4px;stroke-linejoin:round}.stop-marker:hover .stop-name{fill:#ffd98a}.fig-shadow{fill:#0000006b}.caravan-halo{transform-box:fill-box;transform-origin:50%;transform:scale(calc(var(--ms,1) * 1.6));opacity:clamp(0, calc((2.2 - var(--z,1)) * .9), 1)}.figure path,.figure circle,.figure rect,.figure ellipse{stroke-linejoin:round}.figure .skin{fill:#e3be95;stroke:#2a1b10;stroke-width:.35px}.figure .leg,.figure .arm{transform-box:fill-box;transform-origin:50% 0}.camel .hide{fill:url(#g-hide);stroke:#2a1b10;stroke-width:.6px}.camel .wool{fill:none;stroke:#9b7d4c;stroke-width:.6px;stroke-linecap:round}.camel .tail,.camel .ear,.camel .rein,.camel .rope{fill:none;stroke:#2a1b10;stroke-width:.8px;stroke-linecap:round}.camel .rein,.camel .rope{stroke:#4a3018;stroke-width:.4px}.camel .eye{fill:#1a110a}.camel .cloth{fill:#a3281b;stroke:#2a1b10;stroke-width:.4px}.camel .cloth-jade{fill:#2f7a68;stroke:#2a1b10;stroke-width:.4px}.camel .trim{stroke:#e3bf74;stroke-width:.6px}.camel .bale{fill:#8a5a2b;stroke:#2a1b10;stroke-width:.5px}.camel .leg{fill:#c9ab76;stroke:#2a1b10;stroke-width:.45px}.camel .leg-far{fill:#8f7547}.walker .leg{stroke:#120c08;stroke-width:.35px}.walker .leg-far{filter:brightness(.7)}.walker .arm{stroke:#120c08;stroke-width:.3px}.walker .arm-b{filter:brightness(.72)}.hunter .armor{fill:url(#g-armor);stroke:#2a2f33;stroke-width:.4px}.hunter .armor-band{stroke:#6d757b;stroke-width:.35px}.hunter .tasset{fill:#5d646b;stroke:#9e2416;stroke-width:.45px}.hunter .arm-armor,.hunter .arm-armor-far{fill:#b9c0c5}.hunter .cape{fill:#9e2416;stroke:#4a0f08;stroke-width:.35px;transform-box:fill-box;transform-origin:100% 0;animation:1.2s ease-in-out infinite cape}.hunter .shield{fill:#8e979d;stroke:#2a2f33;stroke-width:.5px}.hunter .shield-boss{fill:#b02e1c}.hunter .plume{fill:none;stroke:#c9341f;stroke-width:1.1px;stroke-linecap:round}.hunter .spear{stroke:#5a3d22;stroke-width:.7px;stroke-linecap:round}.hunter .spear-tip{fill:#dfe5e8}.hunter .pennant{fill:#b02e1c;stroke:#f4dfa6;stroke-width:.3px;transform-box:fill-box;transform-origin:0;animation:1.6s ease-in-out infinite pennant}.merchant .silk{fill:url(#g-silk);stroke:#3d2140;stroke-width:.4px}.merchant .silk-trim,.merchant .sash{stroke:#e3bf74;stroke-width:.6px}.merchant .sleeve,.merchant .sleeve-far{fill:#c9a2c6}.merchant .hair{fill:#1b1416}.merchant .lute{fill:#8a5a2b;stroke:#3a2414;stroke-width:.4px}.merchant .lute-neck{stroke:#3a2414;stroke-width:.6px;stroke-linecap:round}.merchant .crown{fill:#e3bf74;stroke:#7a4a18;stroke-width:.3px}.merchant .feather{fill:#f4f0e6;stroke:#b8ab8f;stroke-width:.25px}.sneak{transform-box:fill-box;transform-origin:50% 100%;transform:rotate(7deg)}.thief .dark-armor{fill:url(#g-dark-armor);stroke:#15191c;stroke-width:.4px}.thief .armor-band{stroke:#c9d3ce;stroke-width:.3px}.thief .arm-dark,.thief .arm-dark-far{fill:#6b747a}.thief .cloak{fill:url(#g-cloak);stroke:#0b1612;stroke-width:.35px}.thief .mask{fill:#2a2f33}.thief .hat{fill:#7a857f;stroke:#2a2f2c;stroke-width:.4px}.thief .hat-rim{stroke:#d6dfda;stroke-width:.4px}.thief .blade{stroke:#e3e8ea;stroke-width:.7px;stroke-linecap:round}@keyframes pennant{50%{transform:skewY(-8deg)scaleX(.9)}}@keyframes cape{50%{transform:skew(6deg)scaleY(.95)}}.bandit .cloak{fill:url(#g-cloak);stroke:#d8b36a;stroke-width:.45px}.bandit .face{fill:#0d0910}.bandit .scarf{fill:none;stroke:#7d1a12;stroke-width:1.1px;stroke-linecap:round}.bandit .leg{fill:#2a2030;stroke:#120c16}.bandit .blade{stroke:#e3e8ea;stroke-width:.7px;stroke-linecap:round}.dust circle{fill:#debe8c73;opacity:0}.is-walking .dust circle{animation:.9s ease-out infinite dust}.is-walking .dust circle:nth-child(2){animation-delay:.3s}.is-walking .dust circle:nth-child(3){animation-delay:.6s}@keyframes dust{0%{opacity:.6;transform:translate(0)scale(.6)}to{opacity:0;transform:translate(-6px,-3px)scale(1.6)}}.is-walking .leg-a,.is-walking .arm-b,.bandits .leg-a{animation:.8s ease-in-out infinite leg-a}.is-walking .leg-b,.is-walking .arm-a,.bandits .leg-b{animation:.8s ease-in-out infinite leg-b}.is-walking .bob,.bandits .bob{animation:.4s ease-in-out infinite bob}@keyframes leg-a{0%,to{transform:rotate(16deg)}50%{transform:rotate(-16deg)}}@keyframes leg-b{0%,to{transform:rotate(-16deg)}50%{transform:rotate(16deg)}}@keyframes bob{50%{transform:translateY(-.6px)}}.patrol{animation:9s linear infinite patrol}.patrol-late{animation-delay:-4s}@keyframes patrol{0%{transform:translate(0)scaleX(1)}48%{transform:translate(26px)scaleX(1)}50%{transform:translate(26px)scaleX(-1)}98%{transform:translate(0)scaleX(-1)}to{transform:translate(0)scaleX(1)}}.map-hud{pointer-events:none;max-width:420px;position:absolute;top:28px;left:max(20px,50vw - 600px)}.map-hud h1{background:linear-gradient(#fff6da 0%,#ecc983 48%,#9c6d2c 100%);color:#0000;font:700 clamp(40px, 5vw, 64px) / 1 var(--display);filter:drop-shadow(0 3px #0009);-webkit-background-clip:text;background-clip:text;margin:12px 0 2px}.map-hud p{color:#dccfb2;text-shadow:0 1px 3px #000;margin:0;font-size:18px}.hud-stats{gap:26px;margin:18px 0 0;display:flex}.hud-stats div{display:grid}.hud-stats dt{color:var(--muted);font:600 11px var(--display);letter-spacing:.24em;text-transform:uppercase}.hud-stats dd{color:var(--text);margin:2px 0 0;font-size:16px}.hud-stats b{color:var(--gold-hi);font:700 26px var(--display)}.stop-card-wrap{z-index:5;width:min(380px,40vw);position:absolute;top:28px;right:max(20px,50vw - 600px)}.stop-card{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:card-slide .6s var(--ease) both;background:linear-gradient(#1e160ef0,#100c08f0);padding:22px 24px}@keyframes card-slide{0%{opacity:0;transform:translate(30px)}}.stop-card h2{color:var(--gold-hi);margin:10px 0 2px;font-size:32px}.stop-card p{color:#d5c8ab;margin:12px 0 0;font-size:16px}.stop-card .stop-real{color:var(--jade);margin-top:0;font-style:italic}.stop-card-road{padding-block:16px}.stop-card-road h2{font-size:22px}.stop-stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:16px 0 0;padding:12px 0;display:grid}.stop-stats dt{color:var(--faint);font-size:12.5px}.stop-stats dd{color:var(--gold-hi);font:700 15px var(--display);margin:2px 0 0}.stop-tip{border-left:2px solid var(--red-hi);background:#7f170f2e;gap:9px;padding:10px 12px;display:flex;font-size:15px!important}.stop-tip svg{color:#f0a08e;flex:none;margin-top:3px}.stop-actions{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.stop-next{color:var(--muted);align-items:center;gap:8px;font-size:15px;display:inline-flex}.map-controls{z-index:5;align-items:center;gap:26px;max-width:1240px;margin:0 auto;padding:0 20px;display:flex;position:absolute;bottom:22px;left:0;right:0}.control-buttons{gap:8px;display:flex}.icon-btn{border:1px solid var(--line-strong);width:44px;height:44px;color:var(--gold-hi);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:border-color .25s, transform .25s var(--ease), background .25s;background:#0a0705bf;border-radius:50%;place-items:center;display:grid}.icon-btn:hover{border-color:var(--gold);background:#7f170f8c;transform:translateY(-2px)}.icon-btn:disabled{opacity:.4;cursor:default;transform:none}.icon-btn.is-attention{border-color:var(--gold);background:#7f170fb3;animation:1.6s ease-in-out infinite attention;box-shadow:0 0 0 4px #d8b36a2e}@keyframes attention{50%{box-shadow:0 0 0 8px #d8b36a00}}.map-stage{cursor:grab;touch-action:none}.map-stage.is-dragging{cursor:grabbing}.map-stage.is-dragging .map-svg{pointer-events:none}.map-zoom{z-index:5;gap:8px;display:grid;position:absolute;bottom:110px;right:max(20px,50vw - 600px)}.map-hint{z-index:6;border:1px solid var(--line-strong);color:var(--gold-hi);opacity:0;pointer-events:none;transition:opacity .3s, transform .3s var(--ease);background:#0a0705d9;border-radius:20px;padding:9px 16px;font-size:14.5px;position:absolute;bottom:110px;left:50%;transform:translate(-50%,8px)}.map-hint.is-visible{opacity:1;transform:translate(-50%)}.stop-fork{border-left:2px solid var(--jade);background:#63b29c1a;padding:10px 12px;font-size:15px!important}.route-schematic{flex:1;height:64px;position:relative}.route-schematic svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.sch-base,.sch-fill{stroke-linecap:round;vector-effect:non-scaling-stroke}.sch-base{stroke:#f4dfa638;stroke-width:3px}.sch-fill{stroke:#f0c56d;stroke-width:3px;filter:drop-shadow(0 0 4px #ffd278cc)}.sch-sea,.sch-sea-fill{stroke-linecap:round;vector-effect:non-scaling-stroke}.sch-sea{stroke:#96d7e673;stroke-width:3px;stroke-dasharray:4 4}.sch-sea-fill{stroke:#bdf0ff;stroke-width:3px;filter:drop-shadow(0 0 4px #96e6ffcc)}.sch-stop{color:var(--muted);font:600 11.5px var(--display);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;padding:4px;display:flex;position:absolute;transform:translate(-50%,-50%)}.sch-stop span{position:absolute;top:22px;left:50%;transform:translate(-50%)}.sch-stop.is-branch{transform:translate(-11px,-50%)}.sch-stop.is-branch span{position:static;transform:none}.sch-stop i{width:13px;height:13px;transition:background .3s, border-color .3s, transform .3s var(--ease);background:#120d09;border:2px solid #f4dfa68c;border-radius:50%}.sch-stop:hover,.sch-stop.is-here{color:var(--gold-hi)}.sch-stop.is-here i{background:#ff7a52;border-color:#ff9a74;transform:scale(1.35)}.route-below{border-bottom:1px solid var(--line)}.route-below-inner{gap:26px;max-width:1240px;margin:0 auto;padding:56px 20px 64px;display:grid}.section-title{max-width:720px;color:var(--gold-hi);margin:14px 0 10px;font-size:clamp(26px,3vw,36px);line-height:1.2}.stop-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;display:grid}.stop-tile{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-alt);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:border-color .3s, transform .35s var(--ease), background .3s;gap:4px;padding:18px 16px;display:grid}.stop-tile:hover{border-color:var(--gold);background:#7f170f38;transform:translateY(-4px)}.stop-tile-n{color:var(--faint);font:700 12px var(--display)}.stop-tile b{color:var(--gold-hi);font:700 17px var(--display)}.stop-tile span{color:var(--muted);font-size:14px}.stop-tile em{color:var(--jade);font-size:14px;font-style:normal}.route-cta{flex-wrap:wrap;gap:14px;display:flex}@media (max-width:1100px){.stop-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:820px){.map-stage{height:62vh;min-height:420px}.map-hud{top:18px}.map-hud p,.hud-stats dt{display:none}.hud-stats{gap:16px;margin-top:8px}.hud-stats b{font-size:20px}.stop-card-wrap{width:auto;margin-top:-40px;padding:0 16px;position:static}.map-controls{padding:22px 16px 6px;position:static}.sch-stop:not(.is-branch) span{display:none}.map-zoom,.map-hint{bottom:16px}.stop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
