@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Outfit:wght@400;500;600;700;800&display=swap');
:root{font-family:'DM Sans',sans-serif;color:#203e32;background:#f7f8f2;font-synthesis:none;--green:#285b40;--orange:#f4a74c}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #dd812d;outline-offset:5px}button:disabled{cursor:default}header{height:91px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #dfe5d8;padding:0 5.2%;background:#fffefb}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:#244f37;font-family:Outfit,sans-serif;font-size:35px;font-weight:800;line-height:.85}.brand-cookie{font-size:41px;transform:rotate(-16deg)}.brand-small{display:block;font:700 10px 'DM Sans',sans-serif;letter-spacing:3.5px;margin-top:8px}.header-note{font-size:14px;color:#708073}.quiet{border:1px solid #dfe6d8;padding:10px 15px;border-radius:30px;background:transparent;color:#526855;font-size:14px}main{max-width:1530px;margin:auto;padding:34px 5.2% 0}.heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px}.eyebrow{font-size:11px;letter-spacing:1.7px;font-weight:800;color:#6c816d}h1,h2,h3{font-family:Outfit,sans-serif;letter-spacing:-.6px;margin:0}h1{font-size:clamp(27px,2.65vw,41px);margin-top:9px;font-weight:600}em{font-style:normal;color:#518457}p{color:#728074;font-size:15px;line-height:1.55;margin:9px 0 0}.journey{display:flex;gap:9px}.level{border:1px solid #dce4d4;background:#fffefb;border-radius:16px;padding:10px 14px;min-width:78px;color:#748170;font-size:12px;line-height:1.8}.level b{display:block;font:600 19px Outfit}.level.active{background:var(--green);color:white;border-color:var(--green);box-shadow:0 5px 0 #d8e1d2}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:23px;align-items:start}.board-wrap{border:1px solid #dbe2d4;border-radius:23px;background:white;overflow:hidden;box-shadow:0 8px 22px #293c2910}.board-top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:19px 23px;font-size:14px}.live-dot{display:inline-block;width:8px;height:8px;background:#83aa64;border-radius:50%;margin-right:9px}.board-caption{color:#8a9487;font-size:12px}#stop-count{color:#6c7b67;font-size:12px;background:#f1f5eb;padding:5px 10px;border-radius:14px}.board{position:relative;aspect-ratio:1000/680;background:#d4e7bd;isolation:isolate;overflow:hidden}.map-art,.map-shade{position:absolute;inset:0;z-index:-2}.map-art{background:#d5e6bd url('village.png') center/cover}.map-shade{z-index:-1;background:linear-gradient(180deg,#edfae323,transparent 70%,#31644618)}.map-tag{position:absolute;top:22px;left:25px;font-size:10px;letter-spacing:2px;color:#44643e;opacity:.8}#routes{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}#routes path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}#your-path{stroke:#e48b32;stroke-width:5;filter:drop-shadow(0 2px 0 #fff9)}#optimal-path{stroke:#225e51;stroke-width:5;stroke-dasharray:9 9;opacity:.95}.pin{position:absolute;transform:translate(-50%,-50%);width:47px;height:47px;border:3px solid #fff9;border-radius:50%;background:#fff9dc;box-shadow:0 4px 0 #88571c50,0 7px 20px #4d58262b;display:grid;place-items:center;font-size:26px;transition:transform .2s,background .2s}.pin:hover:not(:disabled){transform:translate(-50%,-60%) scale(1.12)}.pin.selected{background:#f5ad4e;border-color:white}.pin small{position:absolute;right:-6px;top:-6px;background:#2c5740;border:2px solid #fffde9;color:white;border-radius:50%;font-size:12px;width:22px;height:22px;display:grid;place-items:center;font-weight:700}.pin .pin-name{position:absolute;top:49px;font-size:11px;font-weight:700;background:#fffff0e8;color:#42563b;padding:3px 7px;border-radius:6px;white-space:nowrap}.pin.home{background:#285b40;font-size:23px;border-color:white;width:53px;height:53px}.pin.collected{opacity:.45}.map-hint{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);background:#fffff0eb;padding:11px 18px;border:1px solid #ffffffb0;border-radius:30px;font-size:12px;font-weight:500;white-space:nowrap;box-shadow:0 3px 12px #47713e0a}.compass{position:absolute;right:24px;top:20px;text-align:center;font-size:12px;color:#648059;line-height:1.2}.compass::first-line{font-size:10px}.board-bottom{display:flex;gap:19px;align-items:center;padding:15px 21px;color:#7a8675;font-size:11px}.legend-line{width:19px;border-top:3px solid #e48b32;display:inline-block;vertical-align:middle;margin-right:7px}.legend-line.best{border-color:#225e51;border-top-style:dashed}.distance-note{margin-left:auto}.plan-card{background:#fffefb;border:1px solid #dfe5d8;border-radius:23px;padding:25px 23px}.plan-card h2{font-size:27px;margin-top:10px}.plan-card p{font-size:14px}.route-summary{display:flex;justify-content:space-between;align-items:center;margin-top:25px;font-size:10px;letter-spacing:1px;font-weight:700;color:#7e8b79}.text-button{border:0;background:none;color:#658160;font-size:12px;letter-spacing:0}.text-button:disabled{opacity:.35}.order{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:13px 0 22px;min-height:39px}.order-chip{width:29px;height:32px;display:grid;place-items:center;background:#f2f3e9;border:1px dashed #d9decd;border-radius:8px;font-size:12px;color:#9fa591}.order-chip.filled{background:#fff0d6;border:1px solid #f2d7a6;color:#9b621f;font-weight:700}.order-arrow{font-size:11px;color:#a8af9c}.metrics{display:flex;justify-content:space-between;border-top:1px solid #e9ecdf;padding-top:20px;margin-bottom:23px}.metrics span{font-size:11px;color:#7c8976}.metrics strong{display:block;font:600 29px Outfit;margin-top:5px}.metrics strong span{font:inherit;color:inherit}.metrics small{font-size:14px;color:#9aa18f;font-weight:400}.capture-count{text-align:right}.primary{width:100%;background:var(--green);color:white;border:0;border-radius:13px;padding:16px 18px;text-align:left;font-weight:600;font-size:14px;box-shadow:0 4px 0 #173e2a;transition:transform .15s,background .15s}.primary span{float:right}.primary:hover:not(:disabled){background:#36704b;transform:translateY(-2px)}.primary:disabled{background:#e6eadb;color:#8a947e;box-shadow:none}.reset{display:block;margin:15px auto 0;background:none;border:0;font-size:12px;color:#8a937f}.lesson-card{display:flex;gap:12px;padding:23px 12px 0}.lesson-icon{font-size:25px;color:#d29442}.lesson-card .eyebrow{font-size:9px;letter-spacing:1.1px}.lesson-card h3{font-size:17px;margin-top:7px}.lesson-card p{font-size:12px;margin-top:6px}.insight{display:flex;align-items:center;justify-content:space-between;gap:24px;background:#edf1e4;border:1px solid #e1e7d6;border-radius:20px;padding:22px 29px;margin-top:27px}.insight h2{font-size:22px;margin-top:7px}.growth{display:flex;align-items:center;gap:25px;text-align:center}.growth strong{font:600 24px Outfit;margin-right:4px}.growth span{font-size:11px;color:#829077}.growth b{display:block;font-size:12px;color:#4d6a43;margin-top:5px}.growth-arrow{font-size:21px!important}.growth .wild b{color:#b77731}footer{display:flex;justify-content:space-between;font-size:10px;color:#9aA08f;padding:23px 0}footer b{font-weight:400;color:#75836d}#courier{position:absolute;display:none;transform:translate(-50%,-50%);font-size:33px;z-index:5;filter:drop-shadow(0 3px 3px #283c3944)}.result:empty{display:none}.result{margin-top:19px;border-top:1px solid #e4e9d9;padding-top:16px}.stars{color:#e4a235;font-size:25px;letter-spacing:4px}.result h3{font-size:21px;margin:5px 0}.result p{font-size:12px}.result-stats{display:flex;justify-content:space-between;margin:15px 0;font-size:12px;line-height:1.8}.result-stats b{display:block;font-size:20px}.result .primary{margin-top:10px}.reveal-button{border:1px solid #aabf9d;background:#edf3e5;color:#2c5740;border-radius:10px;padding:12px;width:100%;font-weight:600;font-size:13px}.celebrate{animation:pop .45s ease-out}@keyframes pop{50%{transform:translate(-50%,-50%) scale(1.5)}}@media(min-width:1500px){.game-layout{grid-template-columns:minmax(0,1fr) 350px}.plan-card{padding:30px}.board{max-height:650px}}@media(max-width:1100px){main{padding:27px 3% 0}.game-layout{grid-template-columns:minmax(0,1fr) 290px;gap:16px}.heading h1{font-size:29px}.insight{padding:20px}.growth{gap:14px}.distance-note{display:none}.board{aspect-ratio:1.2}.plan-card{padding:21px 18px}.header-note{display:none}}@media(max-width:760px){header{height:77px;padding:0 5%}main{padding:24px 4% 0}.heading{display:block;margin-bottom:20px}.heading h1{font-size:30px;max-width:360px}.heading p{font-size:14px}.journey{margin-top:19px}.level{flex:1;padding:6px 10px}.level b{display:inline;margin-right:6px;font-size:16px}.game-layout{grid-template-columns:1fr}.board{aspect-ratio:1.2}.board-top{padding:15px}.board-bottom{padding:13px 16px}.pin{width:40px;height:40px;font-size:23px}.pin .pin-name{top:43px;font-size:10px}.map-hint{font-size:10px;padding:10px 12px;bottom:15px}.map-tag{font-size:8px;left:17px;top:17px}.plan-card{padding:23px}.lesson-card p{font-size:14px}.lesson-card .eyebrow{font-size:10px}.insight{display:block;margin-top:25px;padding:22px}.growth{justify-content:space-between;gap:6px;margin-top:22px}.growth strong{display:block}.growth b{font-size:10px}.insight h2{font-size:23px}footer{gap:20px;line-height:1.6;font-size:10px}.board-caption{display:none}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Readable supporting labels at every viewport. */
.eyebrow,.route-summary,.metrics span,.board-bottom,.map-hint,.lesson-card .eyebrow,.growth span,.growth b,footer{font-size:12px}.lesson-card p,.plan-card p{font-size:14px}.heading p{font-size:16px}.result p{font-size:14px}.order{gap:5px}.order-chip{width:26px}.map-tag{background:#f5ffeaad;padding:6px 9px;border-radius:7px}
/* Seven destinations: the map is the playable road graph. */
.heading{flex-wrap:wrap}.heading>div:first-child{width:100%}.journey{width:100%;gap:9px}.level{flex:1;display:flex;align-items:center;justify-content:center;gap:10px;padding:10px;font-size:14px}.level b{font-size:19px}.board{aspect-ratio:1000/680}.board[data-theme]:not([data-theme="village"]) .map-art{background:var(--map-ground);background-image:radial-gradient(var(--map-dot) 1px,transparent 1px);background-size:16px 16px}.board[data-theme="byblos"]{--map-ground:#eae2c6;--map-dot:#d7ceac;--road:#f9f3dd;--edge:#bcae89}.board[data-theme="beirut"]{--map-ground:#cbded9;--map-dot:#b0cec8;--road:#fff1d6;--edge:#8eaa9e}.board[data-theme="rome"]{--map-ground:#edd6c3;--map-dot:#ddc0a7;--road:#fff2da;--edge:#bb9473}.board[data-theme="paris"]{--map-ground:#d8e2ce;--map-dot:#c2cfb5;--road:#fff9e9;--edge:#a4b29a}.board[data-theme="dubai"]{--map-ground:#f0dcb6;--map-dot:#e0c69a;--road:#fff3dc;--edge:#b99e73}.board[data-theme="tokyo"]{--map-ground:#d4dcec;--map-dot:#bdc8de;--road:#f7f4ff;--edge:#9ca8c1}#street-map{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#street-map path{fill:none;stroke-linecap:round;stroke-linejoin:round}#street-casing{stroke:var(--edge);stroke-width:24}#street-fill{stroke:var(--road);stroke-width:19}#street-center{stroke:var(--edge);stroke-width:1.2;stroke-dasharray:5 8;opacity:.6}#junctions{fill:var(--road)}#river{stroke:#80bed1;stroke-width:60;stroke-linecap:butt!important}.board:not([data-theme="village"]) .map-shade{display:none}.district{position:absolute;color:#526054;font-size:10px;font-weight:700;letter-spacing:2px;opacity:.65}.district-0{left:13%;top:7%}.district-1{left:42%;top:92%}.district-2{right:9%;top:7%}.map-tag{top:auto;bottom:13px;left:15px;font-size:10px}.map-hint{bottom:45px;max-width:92%;white-space:normal;text-align:center}.compass{top:8px;right:15px}#city-note{font-size:12px;line-height:1.5;padding:0 20px 15px;color:#6c7c69}.order-chip{width:27px;flex-shrink:0}.order{row-gap:9px}.board-bottom{flex-wrap:wrap}.distance-note{margin-left:0}.game-layout{grid-template-columns:minmax(0,1fr) 340px}.board[data-theme="tokyo"] .map-tag{background:#f3f0ffcc}.board[data-theme="dubai"] .map-tag{background:#fff3d9cc}@media(max-width:1100px){.game-layout{grid-template-columns:minmax(0,1fr) 300px}.level{font-size:12px;gap:6px;min-width:0}.level b{font-size:16px}.map-hint{font-size:11px}.board{aspect-ratio:1000/760}}@media(max-width:760px){.game-layout{grid-template-columns:1fr}.journey{display:grid;grid-template-columns:repeat(4,1fr)}.level{padding:9px 5px;font-size:12px}.board{aspect-ratio:1000/900}.pin{width:34px;height:34px;font-size:20px;border-width:2px}.pin.home{width:40px;height:40px}.pin .pin-name{display:none}.pin small{width:20px;height:20px;font-size:11px;right:-8px;top:-7px}.map-hint{bottom:25px;padding:7px 9px;max-width:95%;font-size:10px}.map-tag{display:none}.district{font-size:8px;letter-spacing:1px}.district-1{top:92%}.board-top{font-size:13px}#city-note{font-size:12px}.growth{flex-wrap:wrap}}
.junction-button{position:absolute;transform:translate(-50%,-50%);width:38px;height:38px;border-radius:50%;border:2px solid #fff;background:#3e9148;color:white;font-size:28px;line-height:1;box-shadow:0 0 0 5px #3e914830;z-index:2;transition:background .15s,box-shadow .15s}.junction-button:disabled{width:12px;height:12px;background:#a1b299;border:2px solid #ffffe7;box-shadow:none;opacity:.7;pointer-events:none}.junction-button:hover:not(:disabled){background:#24592d;box-shadow:0 0 0 8px #3e914825}.pin.reachable{box-shadow:0 0 0 5px #3e914845,0 4px 12px #234a3050;border-color:#3e9148}.pin.collected{opacity:.7}.pin.collected.reachable{opacity:1}#courier{pointer-events:none;font-size:25px;background:#fffceb;border:3px solid #285b40;border-radius:50%;width:37px;height:37px;display:grid!important;place-items:center;box-shadow:0 2px 8px #203e3250;z-index:6}#courier[style*="display: none"]{display:none!important}.map-hint{pointer-events:none}.detour-breakdown{background:#edf1e4;padding:12px;border-radius:10px}.junction-button:focus-visible{outline:3px solid #dd812d;outline-offset:6px}@media(max-width:760px){.junction-button{width:34px;height:34px}.pin.reachable{box-shadow:0 0 0 4px #3e914830}#courier{width:30px;height:30px;font-size:20px}}
/* One colorful miniature world, from village to metropolis. */
.board,.board[data-theme]{height:650px;max-height:78vh;aspect-ratio:auto;overflow:auto;overscroll-behavior:contain;cursor:grab;background:#cce6aa;scrollbar-color:#82a269 #e3edce;scrollbar-width:thin}.board:active{cursor:grabbing}#map-world{position:relative;isolation:isolate;overflow:hidden;min-width:100%;--world-scale:1}.board .map-art,.board[data-theme]:not([data-theme="village"]) .map-art{background:radial-gradient(ellipse at 24% 38%,#c5e797 0 13%,transparent 34%),radial-gradient(ellipse at 73% 73%,#9dd9a9 0 10%,transparent 34%),linear-gradient(140deg,#d6edb1,#a2d7a3);background-size:auto}.board[data-theme="byblos"] .map-art,.board[data-theme="beirut"] .map-art{background:linear-gradient(100deg,#65ccd7 0 4%,#f4dfa6 5% 8%,transparent 9%),radial-gradient(ellipse at 70% 40%,#c5e69a,transparent 60%),#b6d99d}.board[data-theme="rome"] .map-art{background:radial-gradient(ellipse at 50% 50%,#f4d2a8,transparent 65%),#b6d9a0}.board[data-theme="paris"] .map-art{background:radial-gradient(ellipse at 70% 20%,#f6deed,transparent 40%),#c9e3ab}.board[data-theme="dubai"] .map-art{background:linear-gradient(110deg,#6fd4d7 0 5%,#f3e0b0 6% 12%,transparent 14%),radial-gradient(ellipse at 65% 65%,#f6d5a1,transparent 70%),#eddea9}.board[data-theme="tokyo"] .map-art{background:radial-gradient(ellipse at 70% 30%,#f2c6df,transparent 40%),radial-gradient(ellipse at 20% 60%,#b1e0c3,transparent 45%),#d3deb2}.map-shade{display:none!important}#street-casing{stroke:#b59f77;stroke-width:17}#street-fill{stroke:#fff1ca;stroke-width:13}#street-center{stroke:#b4a381;stroke-width:1;stroke-dasharray:4 7}#river{stroke:#71c7e0;stroke-width:29}.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 15px;background:#f1f6e8;border-top:1px solid #e1e8d6;color:#63815d;font-size:12px}.map-toolbar>div{display:flex;gap:5px;flex-shrink:0}.map-toolbar button{background:#fffefa;border:1px solid #cbdabd;color:#35583b;border-radius:8px;padding:7px 10px;font-size:12px}.map-toolbar button:disabled{opacity:.4}#scenery{position:absolute;inset:0;pointer-events:none}.scenery-item{position:absolute;transform:translate(-50%,-50%);width:70px;height:70px;pointer-events:none;filter:drop-shadow(0 3px 2px #42583222)}.atlas-sprite{display:block;width:100%;height:100%;background-image:url('city-atlas.png');background-size:400% 400%;background-position:var(--sx) var(--sy);background-repeat:no-repeat}.scenery-item.small-building{width:49px;height:49px}.scenery-item.tree{width:68px;height:68px}.scenery-item.landmark{width:102px;height:102px;top:7%!important}.scenery-item.bakery{width:88px;height:88px}.landmark-label{position:absolute;top:90%;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:12px;font-weight:700;color:#536341;background:#fffcecd9;border:1px solid #fff9;border-radius:8px;padding:4px 9px}.district{font-size:12px;letter-spacing:1.4px;color:#546e46;background:#fffde4b8;border-radius:20px;padding:6px 11px;opacity:1;pointer-events:none}.district-0{left:10%;top:4%}.district-1{left:65%;top:93%}.district-2{right:8%;top:5%}.map-hint{position:absolute;bottom:9px;z-index:8}.map-tag{display:none}.pin{width:37px;height:37px;font-size:23px;border-width:2px}.pin.home{width:42px;height:42px;background:#327849}.pin small{width:19px;height:19px;font-size:10px}.pin .pin-name{display:none}.junction-button{width:32px;height:32px;font-size:23px}.junction-button:disabled{width:9px;height:9px}.traffic-car{position:absolute;width:29px;height:29px;pointer-events:none;animation:car-cruise 8s ease-in-out infinite alternate;filter:drop-shadow(0 2px 1px #384b4033)}@keyframes car-cruise{0%,10%{transform:translate(-50%,-50%)}90%,100%{transform:translate(calc(-50% + var(--tx)*var(--world-scale)),calc(-50% + var(--ty)*var(--world-scale)))}}#traffic{pointer-events:none}.game-layout{grid-template-columns:minmax(0,1fr) 330px}.board-wrap{box-shadow:0 10px 30px #32562913}.pin.reachable{box-shadow:0 0 0 4px #3e914845,0 4px 12px #234a3050}.scenery-item,.traffic-car{user-select:none}@media(max-width:1100px){.game-layout{grid-template-columns:minmax(0,1fr) 290px}.map-toolbar{flex-wrap:wrap}}@media(max-width:760px){.game-layout{grid-template-columns:1fr}.board,.board[data-theme]{height:530px;max-height:70vh}.map-toolbar{font-size:12px}.map-toolbar button{padding:8px 11px}.scenery-item{width:62px;height:62px}.map-hint{font-size:12px}.pin,.junction-button{min-width:32px}.junction-button:disabled{min-width:0}}
/* Hand-curated city sets: every visible scenic object has a unique identity. */
#map-world .scenery-item{width:var(--prop-size);height:var(--prop-size);filter:drop-shadow(3px 7px 3px #26382324);transform:translate(-50%,-50%)}#map-world .atlas-sprite{background-image:var(--sheet);background-size:500% 500%;background-position:var(--sx) var(--sy)}#map-world .scenery-item.landmark{top:7%!important}.landmark-label{background:#fff9e9f2;border:1px solid #c9bb94;box-shadow:0 3px 0 #455b2812;padding:5px 12px;font-size:12px;letter-spacing:.3px}.traffic-car{width:33px;height:33px}#street-casing{stroke:#fff7d9;stroke-width:18;filter:drop-shadow(0 2px 1px #39452b35)}#street-fill{stroke:#80847a;stroke-width:12}#street-center{stroke:#fff6d9;stroke-width:.9;stroke-dasharray:3 7;opacity:.8}#junctions{fill:#80847a}.board[data-theme="village"] #street-fill,.board[data-theme="byblos"] #street-fill{stroke:#c0a67e}.board[data-theme="village"] #junctions,.board[data-theme="byblos"] #junctions{fill:#c0a67e}.board[data-theme="rome"] #street-fill{stroke:#b6a58f}.board[data-theme="paris"] #street-fill{stroke:#929a99}.board[data-theme="dubai"] #street-fill{stroke:#707d80}.board[data-theme="tokyo"] #street-fill{stroke:#6f788c}#your-path{stroke:#ffa834;stroke-width:5;filter:drop-shadow(0 0 2px #fff4cc)}#optimal-path{stroke:#075e56;stroke-width:5}.board-wrap{border:5px solid #fffdf3;box-shadow:0 0 0 1px #c4d3b4,0 18px 48px #24492e1c;border-radius:25px}.board-top{padding:15px 20px;background:#fffdf4}.board-top strong{font-family:Outfit,sans-serif;font-size:21px;letter-spacing:-.3px}.map-toolbar{background:#203f34;color:#e4ead2;border:0;padding:11px 16px}.map-toolbar button{background:#355447;border-color:#58705c;color:#fff9e9}.map-toolbar button:hover{background:#4c6a52}.map-toolbar button:focus-visible{outline:3px solid #ffd18a}.district{font-family:Outfit,sans-serif;background:#fff9e9e0;color:#3d5142;border:1px solid #c7c9a7;font-size:12px;letter-spacing:1.1px;box-shadow:0 3px 8px #2f512718}.district-0{left:13%;top:1%}.district-2{right:8%;top:1%}.district-1{top:97%;left:61%}.board-bottom{background:#fffdf4}.map-hint{bottom:5px;font-size:12px;border:1px solid #a7bd94;box-shadow:0 4px 14px #25472622;padding:8px 15px;z-index:8}.junction-button:disabled{opacity:.4;width:7px;height:7px;border-width:1px}.junction-button:not(:disabled){box-shadow:0 0 0 5px #fff8bd88,0 3px 8px #193c3950;background:#277652;border:2px solid #fffbe9}.pin:not(.home){background:#fff4c7}.pin.collected{background:#d6e6c7}.pin.home{background:#a97536}#courier{border-color:#b46b24;background:#fff5c8}.plan-card{background:#fffdf4;box-shadow:0 7px 24px #29492809}.primary{background:#285b40}.board[data-theme="paris"] .map-art{background:radial-gradient(ellipse at 72% 26%,#f5dfd0,transparent 50%),radial-gradient(ellipse at 20% 80%,#a9cc94,transparent 44%),#d5e1b9}.board[data-theme="tokyo"] .map-art{background:radial-gradient(ellipse at 70% 30%,#edc7d8,transparent 45%),radial-gradient(ellipse at 20% 60%,#a6ceba,transparent 45%),#c9d5c0}@media(min-width:1300px){main{max-width:1680px;padding-left:3%;padding-right:3%}.game-layout{grid-template-columns:minmax(0,1fr) 320px;gap:23px}.heading{margin-bottom:22px}.heading h1{font-size:34px}}@media(max-width:760px){.board-wrap{border-width:3px}.board-top strong{font-size:18px}.map-toolbar{padding:10px}.district{font-size:12px}.map-toolbar>span{display:none}.map-toolbar>div{width:100%;justify-content:space-between}}
.traffic-car.stationed{animation:none;transform:translate(-50%,-50%);width:43px;height:43px}
/* Ground → water → scenery → streets → agents: water never covers landmarks. */
#water-map{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}#water-map #river{fill:none;stroke:#74bdd0;stroke-width:29;stroke-linejoin:round;stroke-linecap:butt;filter:drop-shadow(2px 0 0 #e6dcb4)}
#map-world #courier{width:52px;height:67px;border:0;border-radius:0;background:none;box-shadow:none;filter:none;transform:translate(-50%,-84%);--avatar-x:0%;--avatar-y:50%;display:block!important}.walker{position:absolute;inset:0;background:url('art/pokemon/ash.png') var(--avatar-x) var(--avatar-y)/300% 300% no-repeat;filter:drop-shadow(0 2px 1px #213f3333)}.avatar-shadow{position:absolute;bottom:8px;left:14px;width:26px;height:9px;background:#243e3540;filter:blur(2px);border-radius:50%;transform:rotate(-12deg)}#map-world #courier.walking .walker{animation:walking-step .3s ease-in-out infinite alternate}#map-world #courier[style*="display: none"]{display:none!important}@keyframes walking-step{from{transform:translateY(0) rotate(-1deg)}to{transform:translateY(-2px) rotate(1deg)}}
.pin:not(.home){width:35px;height:35px;border:1px solid #d9b777;background:#fff9e6e8;box-shadow:0 2px 5px #6e562b26}.pin:not(.home).reachable{border:2px solid #478360;box-shadow:0 0 0 4px #77b89344,0 2px 5px #31573933}.pin.collected{opacity:.5;font-size:17px;color:#42624b}.pin small{width:17px;height:17px;background:#345948;font-size:10px;border-width:1px;right:-5px;top:-7px}.pin.home{width:36px;height:36px;border:1px solid #fff1c9;background:#816a47;font-size:21px}.capture-pop{position:absolute;z-index:12;pointer-events:none;padding:5px 10px;background:#fff8e3;color:#4b653e;font-size:12px;font-weight:700;border-radius:12px;box-shadow:0 3px 10px #29493222;animation:capture-pickup 1s ease-out forwards}@keyframes capture-pickup{0%{opacity:0;transform:translate(-50%,-45px)}20%{opacity:1}100%{opacity:0;transform:translate(-50%,-85px)}}
#map-world .traffic-car{animation:none!important;width:36px;height:36px;transform:translate(-50%,-62%) scaleX(var(--vehicle-facing,1)) rotate(var(--vehicle-lean,0deg));filter:drop-shadow(2px 5px 2px #203a3545);will-change:left,top}#map-world .traffic-car.stationed{width:43px;height:43px;transform:translate(-50%,-50%)}
header{height:76px}.heading{gap:15px;margin-bottom:19px}.heading>div:first-child{width:auto}.heading h1{font-size:30px;letter-spacing:-.6px}.heading .eyebrow{font-size:11px;letter-spacing:1.5px}.heading p{font-size:14px;margin-top:6px}.journey{gap:7px;margin-top:5px}.level{border-radius:11px;padding:10px;font-size:13px}.level.active{box-shadow:0 3px 0 #d6dfd0}.board-wrap{border-width:3px;border-radius:18px}.board-top strong{font-size:19px}.map-toolbar{padding:8px 13px}.map-toolbar button{font-size:12px;border-radius:6px}.plan-card{border-radius:18px;padding:23px}.plan-card h2{font-size:25px}.insight{border-radius:15px;margin-top:22px;padding:21px 25px}.insight h2{font-size:21px}.map-hint{background:#fffdf0ee;color:#56634c;border-color:#c3ccb4;box-shadow:0 2px 6px #20392314}.junction-button:not(:disabled){width:29px;height:29px;box-shadow:0 0 0 4px #e7f4d79c,0 2px 5px #2c533637;font-size:21px}.district{font-size:11px;letter-spacing:1.3px;padding:5px 9px}.landmark-label{border-radius:5px;box-shadow:none;font-weight:600}.board[data-theme="paris"] .district-0{left:11%}.board[data-theme="paris"] .district-2{right:13%}@media(min-width:1100px){aside{position:sticky;top:18px}}@media(max-width:760px){main{padding-top:20px}header{height:68px}.heading h1{font-size:27px}.heading p{font-size:14px}.journey{margin-top:10px}.level{font-size:12px;padding:8px 5px}.pin:not(.home){min-width:35px}.junction-button:not(:disabled){min-width:34px;width:34px;height:34px}#map-world #courier{width:47px;height:60px}}
#map-world .scenery-item{width:calc(var(--prop-size)*var(--world-scale));height:calc(var(--prop-size)*var(--world-scale))}.landmark-label{font-size:11px}.board-top .board-caption{font-size:12px}
/* Ash’s Route Quest */
:root{--green:#315a83;color:#233e58;background:#f1f4f5}header{background:#fffef9;border-bottom-color:#d6dfe7}.brand{font-size:26px;letter-spacing:-.7px;color:#244c75;line-height:1}.brand-small{font-size:10px;letter-spacing:2px;color:#b85146;margin-top:7px}.brand-ball{width:43px!important;height:43px!important;flex-shrink:0}.header-note{color:#7d8fa0}.eyebrow{color:#73889b}em{color:#cf514a}.level.active{background:#315a83;border-color:#315a83;box-shadow:0 3px 0 #cbd6e0}.level{background:#fffefa;border-color:#d5dfe7;color:#6b8094}.map-toolbar{background:#233f5a}.map-toolbar button{background:#355671;border-color:#526d85}.map-toolbar button:hover{background:#486d8a}.primary{background:#cc5148;box-shadow:0 4px 0 #9a3b38}.primary:hover:not(:disabled){background:#df665b}.plan-card{border-color:#d8e0e6}.plan-card h2{color:#2a4663}.lesson-card{color:#34516d}.lesson-icon{color:#d4554c}.lesson-card .eyebrow{color:#7890a2}.insight{background:#e7edf2;border-color:#d6e0e8}.growth b{color:#466786}.board-wrap{box-shadow:0 0 0 1px #c6d3df,0 18px 48px #24496316}.metrics strong{color:#315374}.result-stats b{color:#315374}.stars{color:#e9b941}.reveal-button{background:#e6eef5;border-color:#acc0d0;color:#365d7c}.detour-breakdown{background:#e9eff4}.order-chip{background:#f0f3f5;border-color:#d7dfe5}.order-chip.filled{background:#fff8db;border-color:#ecdca0}.text-button,.reset{color:#657f94}.walker{background-image:url('art/pokemon.png');background-size:500% 500%}.pokemon-art,.pokeball-art,.center-art{display:block;background-image:url('art/pokemon.png');background-size:500% 500%;background-repeat:no-repeat}.pokemon-art{background-position:var(--creature-x) var(--creature-y);width:38px;height:38px;filter:drop-shadow(0 2px 1px #28412f30)}.pokeball-art{background-position:0% 100%;width:27px;height:27px}.center-art{width:100%;height:100%;background-position:25% 100%}.mini-pokemon{width:27px;height:29px}.pin:not(.home){width:42px;height:42px;background:#fffef0ed;border:1px solid #c3d4dd;box-shadow:0 2px 7px #23476829}.pin:not(.home).reachable{border:2px solid #e6b840;box-shadow:0 0 0 4px #ffd95944,0 2px 6px #2a47702a}.pin.home{background:#cb514a;border-color:white;font-size:22px}.pin.collected{background:#e7edf5;opacity:.6}.pin.collected.reachable{opacity:1}.pin small{background:#31567a;border-color:#fffefa}.pin .pin-name{display:block;top:44px;max-width:90px;font-size:10px;font-weight:600;color:#3c5670;background:#fffef5ed;padding:2px 5px;border:1px solid #d6dedf;pointer-events:none}.pin.home .pin-name{display:none}.junction-button:not(:disabled){background:#39668b;border-color:#fff8de;box-shadow:0 0 0 4px #dcecf58c}.capture-pop{color:#315879;background:#fff5cd;border:1px solid #e8ce75}.map-hint{color:#3e5974}.brand .pokeball-art{transform:rotate(-12deg)}.route-summary{letter-spacing:1.4px}.pin.collected .pin-name{opacity:.7}@media(max-width:760px){.brand{font-size:21px}.brand-small{font-size:9px}.brand-ball{width:36px!important;height:36px!important}.pin:not(.home){width:39px;height:39px}.pokemon-art{width:35px;height:35px}.pin .pin-name{font-size:9px;top:40px}.mini-pokemon{width:27px;height:29px}}
/* Locally stored classic Pokémon sprites. */
.walker{background-image:url('art/pokemon/ash.png');background-size:contain;background-position:center;background-repeat:no-repeat;image-rendering:pixelated;transform:scaleX(var(--ash-facing,1))}.pokemon-art{background-image:var(--pokemon-image);background-size:145% 145%;background-position:center;image-rendering:pixelated}.pokeball-art{background-image:url('art/pokemon/poke-ball.png');background-position:center;background-size:contain;image-rendering:pixelated}.center-art{background-image:url('art/pokemon/poke-ball.png');background-position:center;background-size:60% 60%;image-rendering:pixelated;filter:drop-shadow(0 6px 4px #2c415d35)}#map-world #courier.walking .walker{animation:ash-step .28s ease-in-out infinite alternate}@keyframes ash-step{from{transform:scaleX(var(--ash-facing,1)) translateY(0)}to{transform:scaleX(var(--ash-facing,1)) translateY(-3px)}}
.walker{background-size:160% auto;background-position:center bottom}#map-world #courier{--ash-facing:1}.mini-pokemon{background-size:170% 170%}.trainer-center .landmark-label{background:#fdf7ee;border-color:#d4b6ad;color:#87413f}
/* Pokémon stand above small capture markers. Hit areas remain touch-friendly. */
#pins .pin:not(.home){width:44px;height:44px;border:0;background:transparent;box-shadow:none;overflow:visible}#pins .pin:not(.home)::before{content:'';position:absolute;width:19px;height:19px;left:50%;bottom:0;transform:translateX(-50%);background:url('art/pokemon/poke-ball.png') center/contain no-repeat;image-rendering:pixelated;filter:drop-shadow(0 2px 2px #263e5340)}#pins .pin:not(.home).reachable::before{filter:drop-shadow(0 0 4px #edba43)}#pins .pin:not(.home)>.pokemon-art{position:absolute;left:50%;bottom:7px;transform:translateX(-50%);width:68px;height:68px;background-size:145% 145%;pointer-events:none}#pins .pin small{width:15px;height:15px;top:auto;bottom:0;right:-1px;font-size:9px;border:1px solid white}#pins .pin .pin-name{top:46px;font-size:10px;z-index:1}#pins .pin.collected{opacity:.65}#pins .pin.collected::before{display:none}#pins .pin.collected>.pokeball-art{position:absolute;width:24px;height:24px;left:50%;bottom:0;transform:translateX(-50%)}#pins .pin:focus-visible{outline:2px solid #d79724;outline-offset:5px;border-radius:8px}
#map-world{min-width:0;margin:auto}.play-destination{display:none}#play-toggle{background:#f6cf5d;border-color:#f6cf5d;color:#243d52;font-weight:700}#play-toggle:hover{background:#ffe291}.play-active{overflow:hidden}.game-layout.play-mode{position:fixed;inset:0;z-index:1000;background:#edf1f3;display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:0;width:100%;height:100dvh;padding:0;overflow:hidden}.play-mode .board-wrap{display:flex;flex-direction:column;min-width:0;min-height:0;border:0;border-radius:0;box-shadow:none}.play-mode .board-top{padding:10px 16px;flex-shrink:0}.play-mode .board,.play-mode .board[data-theme]{flex:1;height:auto;max-height:none;min-height:0;display:flex;align-items:center}.play-mode .map-toolbar{flex-shrink:0;gap:8px;flex-wrap:wrap}.play-mode .map-toolbar>span{display:none}.play-mode .play-destination{display:flex;align-items:center;gap:8px;color:#d7e4ed;font-size:12px}.play-destination select{max-width:165px;background:#fffdf4;border:0;border-radius:6px;padding:7px 9px;color:#294c6b;font:inherit}.play-mode #city-note{display:none}.play-mode .board-bottom{padding:8px 14px;flex-shrink:0}.play-mode aside{position:static;min-height:0;overflow:auto;border-left:1px solid #cdd9e1;background:#fffdf4}.play-mode .plan-card{border:0;border-radius:0;box-shadow:none;padding:22px 18px}.play-mode .lesson-card{display:none}.play-mode .plan-card h2{font-size:23px}.play-mode .map-hint{font-size:11px}.play-mode .map-toolbar>div{display:flex;gap:5px;flex-wrap:wrap}.play-mode .distance-note{display:none}.heading h1{font-size:30px;font-weight:600}.heading .eyebrow{font-size:11px;letter-spacing:1.2px}.insight h2{font-size:20px}.reveal-button{line-height:1.5;text-wrap:pretty}footer a{color:#526e83;text-decoration-color:#a9b8c2}.quiet{font-size:13px}@media(max-width:900px){.game-layout.play-mode{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto}.play-mode aside{max-height:33dvh;border-left:0;border-top:1px solid #cdd9e1}.play-mode .plan-card{padding:12px 16px;display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}.play-mode #level-label,.play-mode #plan-title,.play-mode #instructions,.play-mode .route-summary,.play-mode #order{display:none}.play-mode .metrics{border:0;padding:0;margin:0;gap:20px}.play-mode .metrics strong{font-size:22px}.play-mode .metrics span{font-size:11px}.play-mode #go{align-self:center;padding:12px}.play-mode #reset{margin:0;font-size:12px;text-align:left}.play-mode #result{grid-column:1 / -1;margin:0;padding-top:8px}.play-mode .result-stats{margin:8px 0}.play-mode .board-top{padding:7px 12px}.play-mode .board-top strong{font-size:16px}.play-mode .board-caption{display:none}.play-mode .board-bottom{font-size:10px;padding:5px 12px}.play-mode .map-toolbar{padding:6px 10px}.play-mode .play-destination{width:auto}.play-mode .map-toolbar>div{width:auto;margin-left:auto}.play-mode #locate{display:none}.play-mode .map-toolbar button{padding:7px 8px;font-size:11px}#pins .pin:not(.home)>.pokemon-art{width:62px;height:62px}}@media(max-width:520px){.play-mode .play-destination{width:100%}.play-mode .map-toolbar>div{width:100%;justify-content:space-between}.play-mode .board-top #stop-count{font-size:10px}.play-mode .plan-card{grid-template-columns:1fr 1fr;gap:8px}.play-mode .metrics{gap:10px}.play-mode .metrics strong{font-size:20px}}
#map-world{flex:0 0 auto}.play-only{display:none}.play-mode .play-only{display:inline-block}
#pins .pin:not(.home)>.pokemon-art{pointer-events:auto}
/* Fullscreen field with a compact control dock, no separate sidebar. */
#game-shell{--play-ground:#bfdba8;--play-panel:#d3e7bddd;--play-ink:#294839;--play-line:#829a7166}#game-shell[data-theme="byblos"],#game-shell[data-theme="beirut"]{--play-ground:#b6d99d;--play-panel:#d1e2b7ed}#game-shell[data-theme="rome"]{--play-ground:#d6d3a7;--play-panel:#e5dbbaed}#game-shell[data-theme="paris"]{--play-ground:#d5e1b9;--play-panel:#e0e8ceed}#game-shell[data-theme="dubai"]{--play-ground:#eddea9;--play-panel:#f1e2bced;--play-ink:#5b503a;--play-line:#b3a16b66}#game-shell[data-theme="tokyo"]{--play-ground:#c9d5c0;--play-panel:#d9e1d3ed;--play-ink:#344d48}
#game-shell.play-mode{display:grid;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;background:var(--play-ground)}.play-mode .board-wrap{background:var(--play-ground);overflow:hidden}.play-mode .board-top{display:none}.play-mode .map-toolbar{background:var(--play-panel);color:var(--play-ink);border-bottom:1px solid var(--play-line);padding:9px 16px;gap:12px;justify-content:space-between;backdrop-filter:blur(12px)}.play-mode .play-destination{color:var(--play-ink);font-size:12px;font-weight:600}.play-mode .play-destination select{background:#ffffff50;color:var(--play-ink);border:1px solid var(--play-line);font-size:13px;max-width:210px}.play-mode .map-toolbar button{color:var(--play-ink);background:#ffffff3d;border:1px solid var(--play-line);padding:7px 11px}.play-mode .map-toolbar button:hover{background:#ffffff80}.play-mode #play-toggle{background:#ffffff6b;font-weight:600}.play-mode #play-undo:disabled{opacity:.4}.play-mode .board,.play-mode .board[data-theme]{background:var(--play-ground);align-items:flex-start;display:block;scrollbar-width:none}.play-mode #map-world{margin:0}.play-mode .board-bottom{position:absolute;bottom:12px;left:16px;z-index:10;background:var(--play-panel);border:1px solid var(--play-line);border-radius:8px;padding:7px 10px;color:var(--play-ink);font-size:10px;pointer-events:none}.play-mode .board-wrap{position:relative}.play-mode .map-hint{bottom:10px;left:auto;right:14px;transform:none;max-width:55%;font-size:11px;background:var(--play-panel);border:1px solid var(--play-line);color:var(--play-ink)}
.play-mode aside{position:static;border:0;border-top:1px solid var(--play-line);background:var(--play-ground);max-height:38dvh;min-height:0;overflow:auto;box-shadow:0 -5px 24px #26412a10}.play-mode .plan-card{background:transparent;padding:12px 20px;display:grid;grid-template-columns:minmax(195px,1fr) minmax(180px,1fr) minmax(180px,250px) auto;align-items:center;gap:8px 22px;border:0;box-shadow:none}.play-mode #level-label,.play-mode #plan-title,.play-mode #instructions,.play-mode .route-summary{display:none}.play-mode #order{display:flex;grid-column:2;grid-row:1;margin:0;gap:4px;min-height:0;justify-content:center}.play-mode .metrics{grid-column:1;grid-row:1;margin:0;padding:0;border:0;justify-content:flex-start;gap:26px}.play-mode .metrics span{font-size:11px;color:var(--play-ink)}.play-mode .metrics strong{font-size:24px;color:var(--play-ink);margin-top:2px}.play-mode #go{grid-column:3;grid-row:1;align-self:center;padding:12px 15px;font-size:13px}.play-mode #reset{grid-column:4;grid-row:1;margin:0;color:var(--play-ink);font-size:12px}.play-mode #result{grid-column:1 / -1;grid-row:2;margin:0;padding:12px 0 4px;border-color:var(--play-line);max-width:900px;justify-self:center;width:100%}.play-mode #result:empty{display:none}.play-mode .order-chip{border-color:var(--play-line);background:#ffffff3d}.play-mode .order-chip.filled{background:#ffffff65}.play-mode .primary:disabled{background:#ffffff4a;color:#637764}.play-mode .detour-breakdown{background:#ffffff45}.play-mode .reveal-button{background:#ffffff60;border-color:var(--play-line);color:var(--play-ink)}.play-mode .lesson-card{display:none}
@media(max-width:1000px){.play-mode .plan-card{grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto;gap:8px 14px;padding:10px 15px}.play-mode #order{display:none}.play-mode #go{grid-column:2}.play-mode #reset{grid-column:3}.play-mode .metrics{gap:18px}.play-mode .board-bottom{bottom:8px;left:10px}.play-mode .map-toolbar{padding:7px 10px;gap:7px}.play-mode .map-toolbar button{padding:7px 9px}.play-mode #locate{display:inline-block}}
@media(max-width:600px){.play-mode .plan-card{grid-template-columns:1fr 1fr;padding:9px 12px;gap:7px 12px}.play-mode #reset{grid-column:2;grid-row:2;justify-self:end}.play-mode #result{grid-row:3}.play-mode .metrics{gap:14px}.play-mode .metrics strong{font-size:21px}.play-mode .metrics small{font-size:12px}.play-mode #go{font-size:12px;padding:11px 10px}.play-mode .map-toolbar{padding:6px 10px}.play-mode .play-destination{width:100%;justify-content:space-between}.play-mode .play-destination select{max-width:none;flex:1;margin-left:6px}.play-mode .map-toolbar>div{width:100%;gap:4px}.play-mode .map-toolbar button{font-size:11px;padding:6px 7px}.play-mode #locate{display:none}.play-mode .board-bottom{display:none}.play-mode .map-hint{right:50%;transform:translateX(50%);max-width:92%;white-space:nowrap;font-size:10px;padding:5px 9px;bottom:6px}.play-mode aside{max-height:36dvh}}

/* Keep the field and HUD in separate, bounded layout tracks. */
.map-stage{position:relative;min-width:0;min-height:0;isolation:isolate}
#game-shell.play-mode{align-items:stretch;grid-template-rows:minmax(0,1fr) auto}
.play-mode .board-wrap{display:grid;grid-template-rows:auto minmax(0,1fr);height:100%;min-height:0;align-self:stretch}
.play-mode .map-stage{height:100%;overflow:hidden}
.play-mode .map-stage .board{height:100%;max-height:none;min-height:0}
.play-mode aside{z-index:20;isolation:isolate;align-self:stretch;overflow-x:hidden;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior:contain}
.play-mode .plan-card{min-height:96px;padding:16px 24px max(16px,env(safe-area-inset-bottom));align-content:center}
.play-mode .metrics{min-width:0;flex-wrap:wrap;row-gap:4px}
.play-mode #order{min-width:0;flex-wrap:wrap;padding:4px 0}
.play-mode #go{min-height:48px;line-height:1.4}
.play-mode #reset{min-height:44px;padding:8px;white-space:nowrap}
.play-mode #result{scroll-margin-top:12px}
.play-invitation{position:absolute;inset:0;z-index:30;display:grid;place-items:center;pointer-events:none;background:linear-gradient(180deg,transparent 15%,#163e3425 55%,transparent 90%);transition:background .2s}
.play-invitation button{pointer-events:auto;display:grid;justify-items:center;gap:7px;padding:22px 36px;border:1px solid #ffffff90;border-radius:22px;background:#163d35ee;color:#fffaf0;box-shadow:0 10px 0 #102e2870,0 18px 60px #123a3450;backdrop-filter:blur(12px);transition:transform .2s,background .2s}
.play-invitation strong{font:600 clamp(24px,3vw,36px) Outfit,sans-serif;letter-spacing:-.5px}
.play-invitation button>span:last-child{font-size:14px;color:#d1e4cf}
.expand-icon{font-size:35px;line-height:1}
.map-stage:hover .play-invitation button,.play-invitation button:focus-visible{transform:translateY(-4px);background:#164a3ef5}
.play-mode .play-invitation{display:none}
@media(max-width:600px){.play-mode .plan-card{min-height:100px;padding:12px 14px max(12px,env(safe-area-inset-bottom));gap:4px 10px}.play-mode .metrics{gap:8px}.play-mode #reset{min-height:32px;padding:3px}.play-invitation button{padding:20px 24px}.play-invitation button>span:last-child{font-size:13px}}

/* The southern expedition shares the miniature-world palette. */
#game-shell[data-theme="damascus"]{--play-ground:#d8d1ad;--play-panel:#e7dfbff2;--play-ink:#4b5140;--play-line:#9e9e7366}
#game-shell[data-theme="cairo"]{--play-ground:#e5cc9d;--play-panel:#eddbb8f2;--play-ink:#5b4937;--play-line:#b09a6b66}
#game-shell[data-theme="sidi"]{--play-ground:#badcdd;--play-panel:#d8edf0f2;--play-ink:#215875;--play-line:#5b9fab66}
#game-shell[data-theme="casablanca"]{--play-ground:#c5ddd0;--play-panel:#dce9dbf2;--play-ink:#305c55;--play-line:#79a39466}
.board[data-theme="damascus"] .map-art{background:radial-gradient(ellipse at 30% 30%,#c6d694,transparent 40%),radial-gradient(ellipse at 75% 70%,#d6bc91,transparent 45%),#dfd8b4}
.board[data-theme="cairo"] .map-art{background:radial-gradient(ellipse at 38% 55%,#b4cc94,transparent 34%),linear-gradient(120deg,#eddbb4,#dcbc85)}
.board[data-theme="sidi"] .map-art{background:linear-gradient(100deg,#68bed3 0 4%,#dedfbd 5% 9%,transparent 10%),radial-gradient(ellipse at 60% 35%,#f4eed3,transparent 65%),#b8d9ce}
.board[data-theme="casablanca"] .map-art{background:linear-gradient(100deg,#69c0c4 0 4%,#e5d7a8 5% 8%,transparent 10%),radial-gradient(ellipse at 70% 30%,#ead8b1,transparent 65%),#bdd9b7}
.journey{display:flex;overflow-x:auto;padding:3px 2px 10px;scrollbar-width:thin;scroll-snap-type:x proximity}
.journey .level{flex:0 0 auto;min-width:100px;min-height:52px;padding:9px 13px;scroll-snap-align:start}
.touch-moves{display:none}
.map-toolbar button,.play-destination select{min-height:44px;touch-action:manipulation}
.board{touch-action:pan-x pan-y; -webkit-overflow-scrolling:touch}
#pins .pin:not(.home){touch-action:manipulation}
@media(pointer:coarse),(max-width:760px){
 .play-mode .touch-moves{display:flex;align-items:center;gap:8px;overflow-x:auto;padding:10px 12px;border-bottom:1px solid var(--play-line);background:var(--play-panel);scrollbar-width:none;min-height:66px}
 .play-mode .touch-moves:empty{display:none}
 .touch-moves button{display:flex;align-items:center;justify-content:center;gap:8px;flex:0 0 auto;min-height:44px;padding:9px 13px;border-radius:12px;border:1px solid var(--play-line);background:#ffffffa0;color:var(--play-ink);font-weight:600;font-size:14px;touch-action:manipulation}
 .touch-moves button span{font-size:22px;line-height:1}
 .junction-button:not(:disabled){width:44px;height:44px}
 .play-mode .map-toolbar button{min-width:44px;min-height:44px;font-size:13px;padding:8px}
 .play-mode #locate{display:inline-block}
 .play-mode .map-hint{display:none}
 .play-mode aside{max-height:46dvh}
 .play-mode .plan-card{min-height:90px}
 .play-mode .metrics span{font-size:12px}
 .play-mode #go{font-size:13px;min-height:44px}
 .play-mode #reset{min-height:44px;font-size:13px}
}
@media(max-width:760px){
 header{height:72px;padding:0 16px;gap:12px}.brand{font-size:24px}.brand-small{font-size:9px;letter-spacing:2px}.brand-ball{width:36px;height:36px}header .quiet{font-size:12px;padding:9px 11px;min-height:44px}
 main{padding:20px 12px 0}.heading{margin-bottom:12px}.heading h1{font-size:28px}.heading p{font-size:14px;line-height:1.5}.journey{margin-top:16px;gap:7px}.journey .level{min-width:108px;font-size:13px}.level b{font-size:17px}
 .board,.board[data-theme]{height:56svh;min-height:320px;max-height:620px}.board-top{padding:12px}.board-caption{display:none}
 .map-toolbar{flex-wrap:wrap;gap:8px;padding:8px}.map-toolbar>span{display:none}.map-toolbar>div{width:100%;justify-content:space-between;gap:5px}.map-toolbar button{font-size:12px;padding:8px}
 .game-layout{gap:16px}.plan-card{padding:20px}.insight{padding:18px}.growth{gap:10px}footer{flex-direction:column;gap:8px;font-size:12px}
 #game-shell.play-mode{height:100dvh;padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
 .play-mode .map-toolbar{padding:6px 10px;gap:6px}.play-mode .play-destination{width:100%;font-size:13px}.play-mode .play-destination select{font-size:14px;min-height:40px}
 .play-mode .map-stage .board{min-height:0}.play-mode #play-toggle{font-size:0}.play-mode #play-toggle::after{content:'Exit';font-size:13px}.play-mode #play-sound{display:none}
 .play-mode .plan-card{grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:10px 12px max(10px,env(safe-area-inset-bottom));gap:4px 10px}
 .play-mode .metrics{grid-column:1;grid-row:1;gap:10px}.play-mode .metrics strong{font-size:20px}.play-mode #go{grid-column:2;grid-row:1;line-height:1.35}.play-mode #reset{grid-column:2;grid-row:2}.play-mode #order{display:none}.play-mode #result{grid-column:1/-1;grid-row:3}.play-mode .board-bottom{display:none}
}
@media(max-height:500px) and (orientation:landscape){
 .play-mode .map-toolbar{flex-wrap:nowrap;padding:4px 10px}.play-mode .play-destination{width:auto}.play-mode .play-destination select{max-width:160px;min-height:36px}.play-mode .map-toolbar>div{width:auto}.play-mode .map-toolbar button{min-height:36px}
 .play-mode aside{max-height:42dvh}.play-mode .touch-moves{min-height:52px;padding:4px 10px}.play-mode .plan-card{min-height:64px;grid-template-columns:1fr 1fr auto;padding:6px 12px;gap:4px 10px}.play-mode #reset{grid-column:3;grid-row:1}.play-mode #result{grid-row:2}.play-mode .metrics strong{font-size:18px}
}

@media(max-width:760px){.play-mode #zoom-fit,.play-mode #locate{font-size:0;width:44px;min-width:44px;padding:6px}.play-mode #zoom-fit::after{content:'Fit';font-size:13px}.play-mode #locate::after{content:'⌖';font-size:23px}.play-mode .map-toolbar>div{gap:4px}.play-mode .map-toolbar button{flex-shrink:0}}

.touch-status{display:flex;align-items:center;min-height:44px;color:var(--play-ink);font-size:14px;padding:0 8px}
