/* Approved Tensura composition. Scenery, targets and moving cast remain separate. */
.ts-world-switch{display:flex;gap:12px;margin:28px 0 24px;flex-wrap:wrap}
.ts-world-switch a{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-height:48px;padding:12px 18px;border-radius:12px;border:1px solid #6e8f8c;color:#eaf7f1;background:linear-gradient(140deg,#304e4f,#23383e);box-shadow:inset 0 1px #ffffff30,0 3px #122b32;text-decoration:none;font:500 16px/1.6 Mitr,sans-serif}
.ts-world-switch a[aria-current=page]{border-color:#efd692;background:linear-gradient(140deg,#f6df9a,#d8b66a);color:#302515;box-shadow:inset 0 1px #fff4c7,0 3px #8d7035}
.ts-world-switch a span{font:400 14px/1.5 Sarabun,sans-serif}
html[data-theme=light] .ts-world-switch a:not([aria-current=page]){background:linear-gradient(140deg,#f0f8f0,#d3e3d7);color:#244338;box-shadow:inset 0 1px white,0 3px #8ca69c}
.ts-world[hidden],[data-journey][hidden],[data-ts-main-guide][hidden]{display:none!important}
.ts-world{--ts-ink:#f4f6ed;--ts-muted:#d1dcd7;--ts-surface:#213d3e;--ts-line:#7a9a8b;--jr-ink:var(--ts-ink);--jr-muted:var(--ts-muted);--jr-panel:var(--ts-surface);--jr-line:var(--ts-line);--jr-btn-top:#365a5c;--jr-btn-low:#254142;--jr-btn-edge:#769d9b;--jr-btn-base:#122e30;--jr-btn-ink:#f0faf7;color:var(--ts-ink);font:400 16px/1.65 Sarabun,sans-serif;margin-top:32px}
html[data-theme=light] .ts-world{--ts-ink:#203e35;--ts-muted:#465c51;--ts-surface:#f5f9ef;--ts-line:#7b9586}
html[data-theme=light] .ts-world{--jr-btn-top:#edf7f0;--jr-btn-low:#ccdfd3;--jr-btn-edge:#75978a;--jr-btn-base:#8ba799;--jr-btn-ink:#244639}
.ts-world button,.ts-dialog button{font-family:inherit;cursor:pointer}
.ts-world :focus-visible,.ts-dialog :focus-visible,.ts-world-switch :focus-visible{outline:3px solid #28bde0;outline-offset:4px}
.ts-intro{display:flex;justify-content:space-between;align-items:end;gap:22px;margin-bottom:20px}
.ts-title{display:flex;align-items:center;gap:12px;font:600 clamp(25px,3vw,38px)/1.5 Mitr,sans-serif;margin:5px 0}
.ts-title .ak-px{flex-shrink:0}
.ts-eyebrow{font:500 14px/1.5 Mitr,sans-serif;color:var(--ts-muted)}
.ts-intro p{margin:5px 0 0;color:var(--ts-muted)}
.ts-explore-state{display:inline-flex;white-space:nowrap;align-items:center;gap:8px;font-size:14px;color:var(--ts-muted)}
.ts-explore-state i{width:8px;height:8px;border-radius:50%;background:#6fd2b1}
.ts-city-rail{display:flex;gap:10px;overflow-x:auto;padding:4px 3px 14px;scrollbar-width:none;margin-bottom:8px}
.ts-city-rail::-webkit-scrollbar{display:none}
.ts-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 15px;flex-shrink:0;border:1px solid #7da4a0;border-radius:10px;background:linear-gradient(140deg,#355b5e,#233d43);color:#f2faf5;box-shadow:inset 0 1px #ffffff35,0 3px #102c32;text-decoration:none;font:500 15px/1.5 Mitr,sans-serif;transition:translate .15s,filter .15s}
.ts-btn:hover:not(:disabled){translate:0 -1px;filter:brightness(1.1)}.ts-btn:active:not(:disabled){translate:0 2px;box-shadow:inset 0 1px #ffffff35,0 1px #102c32}
html[data-theme=light] .ts-btn{background:linear-gradient(140deg,#f4faf1,#d3e3d7);color:#244136;border-color:#7b998b;box-shadow:inset 0 1px white,0 3px #91aa9c}
.ts-btn:disabled{background:#485a54;color:#dae3dc;border-color:#7b8f84;box-shadow:none;cursor:default;translate:none;filter:none}
html[data-theme=light] .ts-btn:disabled{background:#e0e6df;color:#536359;box-shadow:none}
.ts-city-rail .ts-btn[aria-pressed=true]{border-color:#c9a85b;background:linear-gradient(140deg,#f3dfa5,#dfbd70);color:#342a19;box-shadow:inset 0 1px #fff6d3,0 3px #917337}
.ts-world .jr-map{touch-action:none;position:relative;isolation:isolate;border-color:#a38e56;background:#28454a;cursor:grab;box-sizing:content-box}
.ts-world .jr-map:active{cursor:grabbing}
.ts-world .jr-canvas{aspect-ratio:1586/992;position:relative;transform-origin:top left}
.ts-world .jr-img{display:block;width:100%;height:100%;object-fit:fill;pointer-events:none}
.ts-region-context{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 14px;min-height:44px}.ts-region-context p{margin:0;font:500 16px/1.6 Mitr,sans-serif;color:var(--ts-ink)}
.ts-world [hidden]{display:none!important}
.ts-view-switch{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 22px;padding-bottom:18px;border-bottom:1px solid var(--ts-line)}
.ts-view-switch [aria-pressed=true]{border-color:#c9a85b;background:linear-gradient(140deg,#f3dfa5,#dfbd70);color:#342a19;box-shadow:inset 0 1px #fff6d3,0 3px #917337}
.ts-itinerary{margin:26px 0 32px}.ts-route-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.ts-route-heading h3,.ts-timeline h3{font:500 25px/1.5 Mitr,sans-serif;margin:5px 0}.ts-itinerary>p,.ts-timeline>p{color:var(--ts-muted);margin:10px 0 18px;max-width:75ch}
.ts-route-list,.ts-time-list{list-style:none;padding:0;margin:16px 0}.ts-route-list{border-left:2px solid var(--ts-line);margin-left:20px;padding-left:22px}
.ts-arc-row>button,.ts-checkpoint>button,.ts-history-row{width:100%;display:flex;align-items:center;gap:16px;text-align:left;border:0;border-bottom:1px solid #82988b66;background:transparent;color:var(--ts-ink);padding:17px 0;min-height:64px;font:inherit}
.ts-arc-row>button:hover,.ts-checkpoint>button:hover,.ts-history-row:hover{background:#7ea79012}.ts-arc-row b{display:grid;place-items:center;width:38px;height:38px;flex-shrink:0;border:2px solid #8d9c99;border-radius:50%;background:var(--ts-surface);margin-left:-42px;font:500 18px/1 Mitr,sans-serif}
.ts-arc-row strong,.ts-checkpoint strong,.ts-history-row strong{display:block;font-weight:600;font-size:18px;line-height:1.6}.ts-arc-row small,.ts-checkpoint small,.ts-history-row small{display:block;font-size:14px;color:var(--ts-muted);margin-top:3px}.ts-lock-tag{font:400 13px/1.5 Sarabun,sans-serif;color:var(--ts-muted);flex-shrink:0;margin-left:auto}
.ts-checkpoint>button{padding-left:8px}.ts-check-icon{display:grid;place-items:center;flex-shrink:0;width:34px;height:34px;border:1px solid #ba7872;border-radius:9px;color:#ffd9d3;background:#582f32}.ts-route-guide{font-size:14px}
.ts-encounter-map{position:absolute;z-index:3;translate:-50% -50%;scale:calc(1 / var(--jr-camera-scale,1));width:44px;height:44px;padding:5px;border:0;background:transparent;border-radius:50%;color:#ffe1da;display:grid;place-items:center}.ts-encounter-map>span{display:grid;place-items:center;width:29px;height:29px;border:2px solid #c1a4a1;border-radius:9px;background:#693f42;box-shadow:0 2px #44292d;font-size:20px}.ts-encounter-map.is-final>span{border-color:#d5b17d;background:#704b37}.ts-encounter-map small{position:absolute;right:0;bottom:0;font-size:10px}.ts-world.jr-camera-overview .ts-encounter-map{display:none}
.ts-timeline{margin:8px 0 32px}.ts-date-key{font-size:14px}.ts-search{display:block;color:var(--ts-ink);font-weight:600;margin:24px 0 12px;max-width:600px}.ts-search input{display:block;width:100%;box-sizing:border-box;min-height:48px;border:1px solid var(--ts-line);border-radius:9px;padding:10px 14px;margin-top:8px;background:var(--ts-surface);color:var(--ts-ink);font:400 17px/1.5 Sarabun,sans-serif}.ts-search input::placeholder{color:var(--ts-muted);opacity:1}
.ts-history-row time{color:var(--ts-muted);flex:0 0 175px;font-size:15px}.ts-event-date{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}.ts-event-date time{padding:5px 12px;border:1px solid #b69c67;border-radius:7px;background:#6d583a33;font-weight:600}.ts-event-date>span{align-self:center;color:var(--ts-muted)}
.ts-source-list ul{padding-left:20px}.ts-source-list a{color:var(--ts-ink);text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}.ts-source-list li{margin:12px 0}.ts-source-list small{display:block;color:var(--ts-muted);font-size:14px}.ts-time-neighbors{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:24px 0}.ts-time-neighbors .ts-btn{display:block;text-align:left;white-space:normal;min-width:0}.ts-time-neighbors small{display:block;color:inherit;font-size:12px;margin-bottom:6px}.ts-time-neighbors span{display:block;font:400 15px/1.6 Sarabun,sans-serif}.ts-guide-faq h3{font:500 20px/1.5 Mitr,sans-serif;margin-top:26px}
html[data-theme=light] .ts-check-icon{background:#f5e1df;color:#703b39;border-color:#ab7670}
@media(max-width:760px){.ts-view-switch{gap:10px}.ts-view-switch .ts-btn{font-size:14px;padding:10px 12px}.ts-route-heading{align-items:start;flex-wrap:wrap}.ts-route-heading h3,.ts-timeline h3{font-size:22px}.ts-route-list{padding-left:18px;margin-left:17px}.ts-arc-row b{margin-left:-37px;width:34px;height:34px}.ts-arc-row>button,.ts-checkpoint>button{flex-wrap:wrap;gap:8px 12px}.ts-arc-row>button>span:not(.ts-lock-tag),.ts-checkpoint>button>span:not(.ts-lock-tag):not(.ts-check-icon){flex:1;min-width:140px}.ts-lock-tag{margin-left:0;flex-basis:100%;padding-left:0}.ts-arc-row strong,.ts-checkpoint strong,.ts-history-row strong{font-size:17px}.ts-history-row{display:grid;grid-template-columns:1fr;gap:5px}.ts-history-row time{font-size:14px}.ts-history-row .ts-lock-tag{font-size:12px}.ts-time-neighbors{grid-template-columns:1fr}.ts-route-guide{line-height:1.8}}
.ts-syllabus{margin:0 0 18px;padding:8px 0 12px;border-bottom:1px solid var(--ts-line);color:var(--ts-muted)}.ts-syllabus summary{cursor:pointer;min-height:36px;font-weight:600}.ts-syllabus ul{display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;padding-left:22px;margin:10px 0}.ts-syllabus p{font-size:14px;margin:10px 0 0}
/* Localized strokes follow painted water and lamps; no moving wash over roads or targets. */
.ts-ambient{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;overflow:hidden;contain:paint}
.ts-falls path{fill:none;stroke:#ecfcff;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:6 11 2 17;opacity:.32;animation:tsCascade 2.8s linear infinite;animation-delay:var(--ts-delay)}
.ts-rivers path{fill:none;stroke:#d7faff;stroke-width:1.6;stroke-linecap:round;stroke-dasharray:10 39 4 31;opacity:.25;animation:tsRiver 11s linear infinite;animation-delay:var(--ts-delay)}
.ts-lights circle{fill:#ffd582;opacity:.2;animation:tsLantern var(--ts-time) ease-in-out infinite;animation-delay:var(--ts-delay)}
.ts-magic{stroke:#bde9ff;fill:none;stroke-width:1.4;opacity:.4}.ts-rune{transform-box:fill-box;transform-origin:center;animation:tsRune 10s ease-in-out infinite}.ts-beam{stroke-width:2;animation:tsGleam 9s ease-in-out infinite}.ts-fountain{animation:tsGleam 7s ease-in-out infinite}.ts-mote{fill:#e5faff;stroke:none;animation:tsMote 6s ease-out infinite}
@keyframes tsCascade{to{stroke-dashoffset:-36}}@keyframes tsRiver{to{stroke-dashoffset:-84}}@keyframes tsLantern{0%,100%{opacity:.12}45%{opacity:.5}65%{opacity:.28}}@keyframes tsRune{0%,100%{transform:scale(.94);opacity:.3}50%{transform:scale(1.08);opacity:.65}}@keyframes tsGleam{0%,100%{opacity:.2}50%{opacity:.65}}@keyframes tsMote{0%{transform:translateY(0);opacity:0}30%{opacity:.6}100%{transform:translateY(-18px);opacity:0}}
html[data-theme=light] .ts-lights{opacity:.24}html[data-theme=light] .ts-magic{opacity:.24}html[data-theme=light] .ts-falls path{opacity:.26}
html[data-motion=paused] .ts-ambient *,html.ts-hidden .ts-ambient *,.ts-offscreen .ts-ambient *,.ts-scene-offscreen .ts-ambient *,.ts-world[hidden] .ts-ambient *{animation-play-state:paused!important}
.ts-world.has-image-error .ts-ambient{display:none}
@media(prefers-reduced-motion:reduce){.ts-ambient *{animation:none!important}}
@media(max-width:760px){.ts-region-context{align-items:start;flex-wrap:wrap;gap:10px}.ts-region-context p{font-size:15px}.ts-syllabus ul{grid-template-columns:1fr}}
.ts-city-label{position:absolute;z-index:2;translate:-50% -50%;min-height:44px;padding:5px 12px;border:1px solid #d6bd72;border-radius:8px;background:linear-gradient(140deg,#164f46,#123d3b);color:#fff1c9;box-shadow:inset 0 1px #ffffff2b,0 2px #182f26;font:500 14px/1.4 Mitr,sans-serif;text-align:center;white-space:nowrap}
.ts-city-label small{display:block;font:400 12px/1.5 Sarabun,sans-serif;color:#e6f4e9}
.ts-city-label,.ts-node{scale:calc(1 / var(--jr-camera-scale,1))}
.ts-world.jr-camera-overview .ts-node,.ts-world.jr-camera-overview .ts-cast-btn,.ts-world.jr-camera-overview .ts-player{display:none}
.ts-world.jr-camera-overview [data-ts-region=dwargon],.ts-world.jr-camera-overview [data-ts-region=dragon]{translate:-10% -50%;transform-origin:10% 50%}
.ts-world.jr-camera-overview [data-ts-region=lubelius],.ts-world.jr-camera-overview [data-ts-region=eldorado]{translate:-90% -50%;transform-origin:90% 50%}
.ts-world.jr-camera-overview .ts-city-label small{display:none}
.ts-world.jr-camera-overview [data-ts-region=tempest]{top:60%!important}
.ts-world.jr-camera-overview [data-ts-region=dragon],.ts-world.jr-camera-overview [data-ts-region=eldorado]{top:86%!important}
.ts-node{position:absolute;z-index:3;translate:-50% -50%;width:44px;height:44px;padding:0;border:0;background:transparent;border-radius:50%;display:grid;place-items:center;color:#f5f7f8}
.ts-node b{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:2px solid #ccd2d5;background:radial-gradient(circle at 30% 20%,#657078,#3b454c 75%);color:#fff;font:600 14px/1 Outfit,sans-serif;box-shadow:0 2px #26363b}
.ts-node.is-open b{background:radial-gradient(circle at 30% 20%,#fbe7a5,#dab85c);color:#332812;border-color:#fff1bb;box-shadow:0 2px #8e6e29}
.ts-node.is-current b{background:radial-gradient(circle at 30% 20%,#256c7b,#123b50);border-color:#b7f4ff;color:#fff;box-shadow:0 0 0 4px #58cfe55e,0 2px #163a48}
.ts-node.is-current::after{content:'อยู่ที่นี่';position:absolute;top:100%;white-space:nowrap;padding:1px 6px;border-radius:4px;background:#123d50;color:#e7faff;font:500 11px/1.5 Mitr,sans-serif}
.ts-node .ts-node-lock{position:absolute;right:0;bottom:1px;font-size:10px;background:#273b3f;border-radius:50%;width:16px;height:16px}
.ts-node:hover b,.ts-node:focus-visible b{outline:2px solid #fff4d1;outline-offset:3px}
.ts-cast-btn{position:absolute;z-index:4;translate:-50% -100%;width:66px;height:85px;border:0;background:transparent;padding:0;isolation:isolate;display:flex;justify-content:center;align-items:end}
.ts-cast-btn::before{content:'';position:absolute;z-index:-1;bottom:0;left:6px;width:54px;height:18px;border-radius:50%;border:2px solid #a5e8ff;background:#48baf34d;box-shadow:0 0 9px #43b7f6a0}
.ts-cast-btn.is-boss::before{border-color:#ffc0b7;background:#f3514b54;box-shadow:0 0 9px #f34e5590}
.ts-cast-btn .ts-role-mark{position:absolute;right:-4px;bottom:0;display:grid;place-items:center;border:1px solid #b1e7fa;border-radius:50%;width:23px;height:23px;background:#1c526c;color:white;font-size:12px}
.ts-cast-btn.is-boss .ts-role-mark{background:#802b30;border-color:#f7b1a7}
.ts-cast{display:block;width:74px;height:74px;background-image:url('/assets/journey/tensura/cast.png');background-size:400% 600%;background-position:0 var(--ts-row);background-repeat:no-repeat;animation:tsAction 3.6s steps(1,end) infinite;filter:drop-shadow(0 2px 2px #0005);pointer-events:none}
@keyframes tsAction{0%,24%{background-position-x:0}25%,49%{background-position-x:33.3333%}50%,74%{background-position-x:66.6667%}75%,100%{background-position-x:100%}}
.ts-cast-btn:hover .ts-cast,.ts-cast-btn:focus-visible .ts-cast{animation-duration:1.8s}
.ts-world .ts-player{position:absolute;z-index:5;translate:-50% -100%;margin:0;width:44px;height:44px;padding:0;border:0;background:transparent;pointer-events:auto;transition:left .55s ease-out,top .55s ease-out}
.ts-world .ts-player>.jr-avatar{position:relative;bottom:auto;left:auto;translate:none;padding:0;border:0;background:none}
.ts-world .ts-player .jr-avatar,.ts-world .ts-player .jr-cast{display:block;width:44px;height:44px}
.ts-player::after{display:none}
.ts-caption{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px;color:var(--ts-muted);font-size:14px}
.ts-legend{display:flex;gap:16px;flex-wrap:wrap}.ts-legend span{display:inline-flex;align-items:center;gap:6px}.ts-legend i{display:block;width:10px;height:10px;border-radius:50%;background:#5ccdf6}.ts-legend .boss{background:#fa6e65}.ts-legend .lock{background:#829098}
.ts-world .jr-map-controls{margin:16px 0 26px}
.ts-world .jr-map-controls button{font:500 14px/1.5 Mitr,sans-serif}
.ts-guide-strip{display:flex;align-items:center;gap:18px;padding:22px 0;border-top:1px solid var(--ts-line);border-bottom:1px solid var(--ts-line)}
.ts-guide-strip .ts-cast{width:85px;height:85px;flex-shrink:0}
.ts-guide-strip h3{font:500 20px/1.5 Mitr,sans-serif;margin:0 0 4px}.ts-guide-strip p{color:var(--ts-muted);margin:0;font-size:16px}.ts-guide-strip .ts-btn{margin-left:auto}
.ts-index{margin-top:26px}.ts-index summary{min-height:44px;cursor:pointer;font:500 17px/1.6 Mitr,sans-serif;color:var(--ts-ink)}
.ts-index ul{list-style:none;padding:0;margin:12px 0}.ts-index li{border-bottom:1px solid var(--ts-line)}.ts-index button{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;width:100%;min-height:48px;text-align:left;border:0;background:transparent;color:var(--ts-ink);font-size:16px}.ts-index small{font-size:13px;color:var(--ts-muted);white-space:nowrap}
.ts-dialog{--ts-ink:#f3f6ed;--ts-muted:#d3ded7;color:var(--ts-ink);background:linear-gradient(130deg,#254445,#162e36);border:2px solid #b79b58;border-radius:14px;box-shadow:inset 0 0 0 5px #ffffff08,0 7px #0c242b;width:min(760px,calc(100% - 28px));max-height:calc(100dvh - 36px);padding:0;overflow:auto;font:400 17px/1.7 Sarabun,sans-serif}
.ts-dialog{margin:auto;inset:0}
.ts-dialog::backdrop{background:#081d2dcc;backdrop-filter:blur(4px)}
html[data-theme=light] .ts-dialog{--ts-ink:#263d32;--ts-muted:#4d6054;background:linear-gradient(130deg,#fff8e6,#eaf2e8);color:var(--ts-ink);box-shadow:inset 0 0 0 5px #ffffff60,0 7px #82988a}
html[data-theme=light] .ts-dialog::backdrop{background:#b6d1d9a6}
.ts-dialog[open]{animation:tsUnfold .22s ease-out}@keyframes tsUnfold{from{clip-path:inset(0 0 20%);opacity:.7}to{clip-path:inset(0);opacity:1}}
.ts-dlg-art{height:160px;position:relative;background-size:cover;background-position:var(--ts-art-pos,50% 50%);border-bottom:2px solid #b79b58;overflow:hidden}
.ts-dlg-art::before{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#102d3599,transparent 75%)}
.ts-dlg-art>.ts-cast{position:absolute;right:30px;bottom:6px;width:115px;height:115px}
.ts-close{position:absolute;right:12px;top:12px;z-index:2;display:grid;place-items:center;min-width:44px;height:44px;border-radius:50%;border:1px solid #d9d29a;background:#153b43;color:#fff6d2;font-size:24px}
.ts-dlg-body{padding:26px 30px 30px}.ts-dlg-body h2{display:flex;gap:12px;align-items:flex-start;font:600 28px/1.5 Mitr,sans-serif;margin:6px 0 14px}.ts-dlg-body h2 .ak-px{flex-shrink:0;margin-top:5px}.ts-dlg-body p{margin:12px 0;color:var(--ts-muted)}
.ts-dlg-body .ts-eyebrow{color:var(--ts-muted)}.ts-status{display:inline-flex;align-items:center;gap:7px;padding:4px 10px;border:1px solid #8ca99b;border-radius:7px;font-size:14px;color:var(--ts-ink)}
.ts-topic-list{padding:0;list-style:none;margin:18px 0}.ts-topic-list li{padding:12px 0;border-bottom:1px solid #82988b66}.ts-topic-list a{color:var(--ts-ink);text-decoration:underline;text-underline-offset:4px}
.ts-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:22px}.ts-actions a{flex-grow:0}
.ts-dlg-body details{border-top:1px solid #82988b66;padding:14px 0}.ts-dlg-body summary{cursor:pointer;font-weight:600;min-height:32px}.ts-dlg-body details p{font-size:16px}
.ts-art-error{display:none;padding:18px;background:#233f43;color:#fff3d2}.ts-world.has-image-error .ts-art-error{display:block}
.ts-offscreen .ts-cast,.ts-world[hidden] .ts-cast,.ts-dialog:not([open]) .ts-cast,html[data-motion=paused] .ts-cast,html.ts-hidden .ts-cast{animation:none!important}
@media(prefers-reduced-motion:reduce){.ts-cast,.ts-dialog[open]{animation:none!important}.ts-player,.ts-btn{transition:none!important}}
@media(max-width:760px){.ts-world-switch{display:grid;grid-template-columns:1fr;margin-top:24px}.ts-world-switch a{font-size:15px}.ts-world{margin-top:24px}.ts-intro{display:block}.ts-title{font-size:26px}.ts-explore-state{margin-top:12px}.ts-guide-strip{gap:12px;flex-wrap:wrap}.ts-guide-strip>div{flex:1;min-width:150px}.ts-guide-strip .ts-btn{margin-left:0}.ts-dlg-body{padding:22px 20px}.ts-dlg-body h2{font-size:25px}.ts-dlg-art{height:130px}.ts-caption{display:block}.ts-legend{gap:12px;margin-top:10px}.ts-world .jr-map-controls{gap:12px}.ts-index button{align-items:start}.ts-index small{font-size:12px}}

/* Two generated four-action strips; preserve their native 3:1 sheet aspect. */
.ts-cast-extra{width:55.5px;height:74px;background-size:400% 100%;background-position:0 0}.ts-dlg-art>.ts-cast-extra{width:86.25px;height:115px}
.ts-cast-btn.is-boss::before{animation:tsBossAura 3.2s ease-in-out infinite}
@keyframes tsBossAura{0%,100%{opacity:.7;transform:scale(.94)}50%{opacity:1;transform:scale(1.08)}}
html[data-motion=paused] .ts-cast-btn.is-boss::before,html.ts-hidden .ts-cast-btn.is-boss::before,.ts-offscreen .ts-cast-btn.is-boss::before,.ts-world[hidden] .ts-cast-btn.is-boss::before{animation:none!important}
@media(prefers-reduced-motion:reduce){.ts-cast-btn.is-boss::before{animation:none!important}}

/* The five-city scene is a hub. Each chosen city owns a separate illustrated board. */
.ts-hub-scene{position:relative;isolation:isolate;aspect-ratio:1586/992;overflow:hidden;border:2px solid #b59a5b;border-radius:15px;box-shadow:0 4px #6d5934}
.ts-hub-img{width:100%;height:100%;display:block;object-fit:fill}
.ts-hub-scene .ts-city-label{scale:1;width:max-content;max-width:31%;white-space:normal;padding:8px 12px;translate:-50% -50%}
.ts-hub-scene .ts-city-label strong{display:block;font:500 15px/1.55 Mitr,sans-serif}
.ts-hub-scene [data-ts-city=dwargon],.ts-hub-scene [data-ts-city=dragon]{left:2%!important;translate:0 -50%}
.ts-hub-scene [data-ts-city=lubelius],.ts-hub-scene [data-ts-city=eldorado]{left:98%!important;translate:-100% -50%}
.ts-hub-help{font-size:15px;color:var(--ts-muted);margin:14px 0 26px}
.ts-region-title{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:14px 0 22px}
.ts-region-title h3{font:500 28px/1.6 Mitr,sans-serif;margin:4px 0}.ts-region-title p{margin:4px 0;color:var(--ts-muted);font-size:14px}
.ts-region-map-wrapper .jr-map{border:2px solid #b59a5b;border-radius:15px;box-shadow:0 4px #6d5934;overflow:hidden}
.ts-region-map-wrapper .jr-canvas{aspect-ratio:3/2}
.ts-region-road{opacity:.94}.ts-region-road .jr-road-shadow{stroke-width:18}.ts-region-road .jr-road-edge{stroke-width:16;stroke:#866c4a}.ts-region-road .jr-road-surface{stroke-width:12;stroke:#e9d9b4}.ts-region-road .jr-road-center{stroke-width:5;stroke:#fff7df90;stroke-dasharray:1 6}
.ts-region-road .ts-challenge-spurs path{fill:none;stroke:#af6a59;stroke-width:3;stroke-dasharray:3 5;stroke-linecap:round}
.ts-event-stop{position:absolute;z-index:3;translate:-50% -50%;width:44px;height:44px;display:grid;place-items:center;border:0;background:none;padding:0;scale:calc(1 / var(--jr-camera-scale,1));color:#fff;isolation:isolate}
.ts-event-stop b{display:grid;place-items:center;width:29px;height:29px;border:2px solid #c0c4c4;border-radius:50%;background:radial-gradient(circle at 30% 20%,#788183,#414b50);font:500 14px/1 Outfit,sans-serif;box-shadow:0 2px #29363a,0 0 0 1px #37464c}
.ts-event-stop>span{position:absolute;right:0;bottom:0;font-size:10px;line-height:14px;filter:grayscale(1)}
.ts-event-stop>i{position:absolute;top:calc(100% + 5px);left:50%;translate:-50% 0;display:none;width:max-content;max-width:200px;padding:5px 9px;background:#193e40;color:#f3f8e9;border:1px solid #c0b180;border-radius:7px;font:500 13px/1.6 Sarabun,sans-serif;text-align:center;pointer-events:none;box-shadow:0 3px #122e30}
.ts-event-stop i small{display:block;font-size:12px;color:#dce8df}.ts-event-stop:hover,.ts-event-stop:focus-visible{z-index:8}.ts-event-stop:hover>i,.ts-event-stop:focus-visible>i{display:block}
.ts-region-map-wrapper .ts-cast-btn{width:calc(var(--jr-author-width) * .1);height:calc(var(--jr-author-width) * .12)}
.ts-region-map-wrapper .ts-cast-btn .ts-cast{width:100%;height:100%}.ts-region-map-wrapper .ts-cast-btn .ts-cast-extra{width:75%;height:100%}
.ts-region-map-wrapper .ts-cast-btn::before{left:10%;width:80%;height:20%;bottom:0}
.ts-cast-name{position:absolute;top:calc(100% + 4px);white-space:nowrap;padding:2px 7px;background:#613039;color:#fff0e8;border:1px solid #eab4a8;border-radius:5px;font:500 12px/1.5 Sarabun,sans-serif}
.ts-route-helper .ts-cast-name{background:#17465b;border-color:#a1dfee;color:#f1fcff}
.ts-region-map-wrapper .ts-player{width:calc(var(--jr-author-width) * .065);height:calc(var(--jr-author-width) * .065);margin-top:-13px}
.ts-region-map-wrapper .ts-player .jr-avatar{width:100%;height:100%}
.ts-region-map-wrapper .ts-route-mini{width:calc(var(--jr-author-width) * .06);height:calc(var(--jr-author-width) * .06);scale:1;min-width:44px;min-height:44px}
.ts-region-map-wrapper .ts-route-mini>span{width:75%;height:75%;border-color:#e2a49e;background:radial-gradient(circle at 30% 20%,#a75453,#672c34);box-shadow:0 3px #44292d,0 0 15px #ef4d4d70}
.ts-start-ring{position:absolute;z-index:2;translate:-50% -50%;width:45px;height:25px;border:2px solid #b3eeff;border-radius:50%;background:#20738e;box-shadow:0 0 14px #3bd4ef80}
.ts-start-ring::after{content:'';position:absolute;inset:-7px;border:2px dashed #86e8ff;border-radius:50%;animation:jrCurrentRing 2.8s ease-out infinite}
.ts-region-map-wrapper.jr-camera-overview .ts-event-stop{scale:1;width:25px;height:25px;pointer-events:none}.ts-region-map-wrapper.jr-camera-overview .ts-event-stop b{width:20px;height:20px;font-size:10px}.ts-region-map-wrapper.jr-camera-overview .ts-event-stop>span{display:none}
.ts-region-map-wrapper.jr-camera-overview .ts-route-mini{min-width:0;min-height:0}
.ts-region-map-wrapper .ts-overview-note{display:none}.ts-region-map-wrapper.jr-camera-overview .ts-overview-note{display:block;color:var(--ts-ink);font-weight:600}
[data-ts-hub][hidden] .ts-ambient *{animation-play-state:paused!important}
.ts-world .jr-map-controls{margin-bottom:4px}
html[data-motion=paused] .ts-start-ring::after,html.ts-hidden .ts-start-ring::after,.ts-offscreen .ts-start-ring::after,.ts-region-map-wrapper[hidden] .ts-cast,.ts-region-map-wrapper[hidden] .ts-start-ring::after,.ts-scene-offscreen .ts-cast,.ts-scene-offscreen .ts-start-ring::after{animation:none!important}
@media(prefers-reduced-motion:reduce){.ts-start-ring::after{animation:none}}
@media(max-width:760px){.ts-region-title{display:block}.ts-region-title h3{font-size:24px}.ts-region-title>.ts-btn{margin-top:10px}.ts-hub-scene{aspect-ratio:auto;overflow:visible;background:var(--ts-surface);display:grid;grid-template-columns:1fr 1fr;gap:0;border-radius:12px}.ts-hub-img{grid-column:1/-1;aspect-ratio:1586/992;height:auto;border-radius:10px 10px 0 0}.ts-hub-scene .ts-ambient{height:auto;aspect-ratio:1586/992;top:0;bottom:auto}.ts-hub-scene .ts-city-label{position:static;width:auto;translate:none!important;max-width:none;border:0;border-bottom:1px solid #819b8866;box-shadow:none;background:transparent;border-radius:0;padding:13px 10px;text-align:left;min-height:76px}.ts-hub-scene .ts-city-label strong{font-size:14px}.ts-hub-scene .ts-city-label small{font-size:12px}.ts-hub-scene .ts-city-label:last-child{grid-column:1/-1}.ts-hub-help{font-size:14px}.ts-city-rail .ts-btn{font-size:13px;padding:8px 12px}}
html[data-theme=light] .ts-hub-scene .ts-city-label{color:#254438}
@media(min-width:761px){html[data-theme=light] .ts-hub-scene .ts-city-label{color:#fff1c9}}
@media(max-width:760px){html[data-theme=light] .ts-hub-scene .ts-city-label small{color:#4b675a}}

/* City signposts: a geographic pin and an explicit action, with one suggested start. */
.ts-hub-scene .ts-city-label{border:2px solid #cdb16d;border-radius:10px 10px 4px 4px;padding:10px 16px;min-width:205px;max-width:29%;cursor:pointer;box-shadow:inset 0 1px #ffffff40,0 4px #102a30;text-align:left;transition:transform .18s ease-out,box-shadow .18s ease-out}
.ts-hub-scene .ts-city-label::before{content:'';position:absolute;width:2px;height:12px;bottom:-14px;left:50%;background:#dfc88e;pointer-events:none}
.ts-hub-scene .ts-city-label::after{content:'';position:absolute;width:10px;height:10px;bottom:-21px;left:50%;translate:-40% 0;border:2px solid #f1dc9f;border-radius:50%;background:#26615c;box-shadow:0 0 0 3px #153a36a0;pointer-events:none}
.ts-city-action{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-top:5px;font:500 13px/1.5 Mitr,sans-serif;color:#ffe49d}
.ts-city-action b{font-size:21px;line-height:1;transition:transform .18s ease-out}
.ts-hub-scene .ts-city-label:hover{transform:translateY(-3px);box-shadow:inset 0 1px #ffffff50,0 7px #102a30}
.ts-hub-scene .ts-city-label:focus-visible{outline:3px solid #b1efff;outline-offset:5px;transform:translateY(-3px)}
.ts-hub-scene .ts-city-label:is(:hover,:focus-visible) .ts-city-action b{transform:translateX(4px)}
.ts-hub-scene .ts-city-label:active{transform:translateY(3px);box-shadow:inset 0 1px #ffffff40,0 1px #102a30}
.ts-hub-scene [data-ts-city=tempest]{background:linear-gradient(135deg,#ffe7a6,#d6b05a);border-color:#ffe9b0;color:#352707}
.ts-hub-scene [data-ts-city=tempest] small,.ts-hub-scene [data-ts-city=tempest] .ts-city-action{color:#4c3812}
.ts-start-cue{position:absolute;bottom:calc(100% + 7px);left:50%;translate:-50% 0;white-space:nowrap;border-radius:5px;padding:3px 10px;background:#ffe5a0;color:#3e2a04;font:500 12px/1.6 Mitr,sans-serif;pointer-events:none}
.ts-start-cue::after{content:'↓';display:inline-block;margin-left:7px;animation:tsStartCue 2.8s ease-in-out infinite}
@keyframes tsStartCue{0%,70%,100%{transform:translateY(0)}35%{transform:translateY(3px)}}
.ts-guide-strip{margin:12px 0 8px;padding:10px 0;gap:14px;border-top:0}
.ts-guide-strip .ts-cast{width:64px;height:72px}.ts-guide-strip h3{font-size:17px}.ts-guide-strip p{font-size:14px}
html[data-motion=paused] .ts-start-cue::after,html.ts-hidden .ts-start-cue::after,.ts-offscreen .ts-start-cue::after,.ts-scene-offscreen .ts-start-cue::after,.ts-world[hidden] .ts-start-cue::after,[data-ts-hub][hidden] .ts-start-cue::after{animation:none}
html[data-theme=light] .ts-hub-scene [data-ts-city=tempest]{color:#352707}
html[data-theme=light] .ts-hub-scene [data-ts-city=tempest] small{color:#4c3812}
@media(max-width:760px){
 .ts-hub-scene{grid-template-columns:1fr}
 .ts-hub-scene .ts-city-label{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:12px;min-width:0;max-width:none;border:0;border-bottom:1px solid #819b8866;box-shadow:none;border-radius:0;padding:12px 14px;min-height:78px;transition:background .18s ease-out}
 .ts-hub-scene .ts-city-label::before,.ts-hub-scene .ts-city-label::after{display:none}
 .ts-hub-scene .ts-city-label strong,.ts-hub-scene .ts-city-label small{grid-column:1}
 .ts-hub-scene .ts-city-label .ts-city-action{grid-column:2;grid-row:1/span 2;gap:8px;margin:0;font-size:12px}
 .ts-hub-scene .ts-city-label:hover,.ts-hub-scene .ts-city-label:active,.ts-hub-scene .ts-city-label:focus-visible{transform:none;box-shadow:none}
 .ts-hub-scene .ts-city-label:focus-visible{outline-offset:-4px}
 .ts-hub-scene [data-ts-city=tempest]{padding-top:34px;background:linear-gradient(135deg,#ffe7a6,#d6b05a)}
 .ts-start-cue{bottom:auto;top:7px;left:14px;translate:none;padding:0;background:none;font-size:11px}
 .ts-guide-strip{display:grid;grid-template-columns:54px minmax(0,1fr);gap:8px 12px}
 .ts-guide-strip .ts-cast{grid-row:1/span 2;width:54px;height:64px}
 .ts-guide-strip>div{min-width:0}.ts-guide-strip h3{font-size:15px}.ts-guide-strip p{font-size:13px}
 .ts-guide-strip .ts-btn{grid-column:2;justify-self:start;min-height:44px;font-size:13px}
 html[data-theme=light] .ts-hub-scene .ts-city-action{color:#36573f}
 html[data-theme=light] .ts-hub-scene [data-ts-city=tempest] .ts-city-action{color:#4c3812}
 html[data-theme=light] .ts-hub-scene .ts-city-label:focus-visible{outline-color:#20516c}
}
@media(prefers-reduced-motion:reduce){.ts-start-cue::after{animation:none}.ts-hub-scene .ts-city-label,.ts-city-action b{transition:none}}
