*{box-sizing:border-box}body{margin:0;background:#142820;color:#fff4d3;font:16px/1.4 Georgia,serif}main{max-width:840px;margin:auto;padding:14px}h1{margin:0;font-size:25px}header p{margin:4px 0 10px}.toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:10px}button{min-height:44px;border:2px solid #d1ab64;border-radius:5px;background:#523720;color:#fff4d3;padding:8px 14px;font:bold 15px Georgia,serif;cursor:pointer}button:hover{background:#74502f}button:focus-visible,summary:focus-visible,.node:focus-visible{outline:3px solid #fff;outline-offset:3px}button:disabled{opacity:.5;cursor:not-allowed}#position{font-weight:bold}#map-viewport{overflow:auto;max-height:75vh}#map{position:relative;width:100%;aspect-ratio:760/660;overflow:hidden;background:#2b5139;border:3px solid #a17e49}#swf,#nodes{position:absolute;inset:0}ruffle-player{display:block;width:100%;height:100%}#nodes{pointer-events:none}.node{position:absolute;width:4.5%;height:5.2%;transform:translate(-50%,-50%);border:0;border-radius:50%;background:transparent;padding:0;pointer-events:auto}.node:hover,.node:focus-visible{outline:2px solid #fff6cf;outline-offset:1px;background:#ffda572e}.node.current{outline:2px solid #f2c95d;outline-offset:1px}.node.visited:not(.current){box-shadow:inset 0 0 0 2px #b8dd8d8a}#avatar{position:absolute;z-index:2;width:3.8%;height:4.1%;transform:translate(-50%,-90%);pointer-events:none;transition:left .6s linear,top .6s linear;filter:drop-shadow(1px 2px 2px #172116)}#avatar span{display:block;width:100%;height:100%;background:url('archive/assets/world/locationIcon.png') center/contain no-repeat}#location{position:absolute;z-index:4;width:min(280px,52%);padding:10px 12px;background:#252b29f2;border:2px solid #c3a268;color:#fff7dd;box-shadow:3px 5px 8px #161a18a8}#location h2{font-size:19px;margin:0 0 6px}#location p{font-size:13px;margin:4px 0}#location-art{display:block;width:100%;height:75px;object-fit:cover;border:1px solid #a79769}#location-art[hidden]{display:none}.panel-actions{display:flex;gap:6px;margin-top:10px}.panel-actions button{min-height:38px;padding:5px 9px;font-size:13px}#status{min-height:26px;font-weight:bold}details{border:1px solid #8d794d;padding:0 12px;margin-top:10px}summary{cursor:pointer;min-height:44px;padding-top:10px}dialog{max-width:min(90vw,430px);background:#222d28;color:#fff4d3;border:3px solid #cfaf6b}dialog::backdrop{background:#101a17a8}@media(max-width:560px){main{padding:8px}#map{width:760px;height:660px;aspect-ratio:auto}#location{width:280px}#location p{font-size:13px}.panel-actions button{min-height:44px}.node{width:44px;height:44px}}

/* The original SWFs supply the panel and walking marker artwork. */
#avatar{width:56px;height:62px;transform:translate(-50%,-82%);overflow:hidden;transition:left .65s linear,top .65s linear}
#marker-swf{position:absolute;width:550px;height:400px;left:-247px;top:-290px;pointer-events:none}
#marker-moga{position:absolute;width:34px;height:34px;left:11px;top:1px;overflow:hidden;pointer-events:none}
#marker-moga ruffle-player{width:100%;height:100%}
#location{width:280px;min-height:220px;padding:12px 16px;border:0;background:transparent;box-shadow:none;isolation:isolate}
#location-swf{position:absolute;inset:0;z-index:-1;pointer-events:none}
#location-content{position:relative}
#location h2{font-size:16px;line-height:1.1;margin:0 0 4px}
#location p{font-size:12px;margin:3px 0}
#location-art{height:60px}
#location .panel-actions{margin-top:5px}
#location .panel-actions button{min-height:30px;font-size:12px}
#marker-swf{display:none}
#avatar{width:42px;height:56px;overflow:visible;transform:translate(-50%,-88%)}
#marker-moga{left:4px;top:0;width:34px;height:34px;background-position:center;background-size:contain;background-repeat:no-repeat;filter:drop-shadow(1px 2px 2px #112)}
#location .location-content{position:relative;background:#222825f5;margin:-3px;padding:4px 5px 7px;min-height:190px}
#location{pointer-events:none}
#location button{pointer-events:auto}
#location{width:240px;min-height:200px;padding:12px 14px}
#location .location-content{min-height:190px}
#marker-moga{left:4px}

#swf{pointer-events:auto}
#avatar{width:48px;height:73px;transform:translate(-50%,-90%);transition:left var(--walk-ms,850ms) linear,top var(--walk-ms,850ms) linear;z-index:3}
#marker-moga{left:4px;top:0;width:40px;height:42px;background-size:contain;background-position:center bottom}
#avatar #marker-arrow{display:block;position:absolute;left:14px;top:42px;width:19px;height:23px;background:url('assets/current-location-arrow.png') center/19px 23px no-repeat}
#avatar.walking #marker-moga{animation:map-moga-step .38s ease-in-out infinite alternate}
@keyframes map-moga-step{from{transform:translateY(0) rotate(-3deg)}to{transform:translateY(-3px) rotate(3deg)}}

#location{width:240px;height:316px;min-height:0;padding:0;pointer-events:none;filter:drop-shadow(2px 4px 4px #1119)}
#location .location-card{position:relative;width:240px;height:316px;background:#08090a url('assets/locationInfo-frame.png') 0 0/240px 200px no-repeat;border:3px solid #08090a;border-radius:8px;overflow:hidden;pointer-events:none}
#location button{pointer-events:auto}
#location-photo{display:block}
#location .location-photo{position:absolute;left:7px;top:7px;width:220px;height:140px;overflow:hidden;background:#303733}
#location-art,#location-art[hidden]{display:block;width:220px;height:140px;object-fit:cover;border:0}
#location .location-caption{position:absolute;left:0;right:0;bottom:0;min-height:30px;padding:11px 5px 2px;background:linear-gradient(transparent,#171914e8);display:flex;justify-content:space-between;align-items:end;gap:5px}
#location h2{margin:0;font:700 13px/1.1 Arial,sans-serif;color:#e4f2cb;text-shadow:1px 1px #111}
#location-difficulty{font:italic 900 15px/1 Arial,sans-serif;color:#e94c74;text-shadow:1px 1px #24080e;text-transform:uppercase}
#location-difficulty.easy{color:#72dd46}#location-difficulty.medium{color:#f6cf45}
#location #close{position:absolute;z-index:2;right:1px;top:0;width:28px;height:28px;min-height:28px;padding:0;border:0;border-radius:50%;background:transparent;color:transparent;font-size:20px}
#location #close:focus-visible{outline:2px solid #fff;outline-offset:-1px}
#location .location-reward{position:absolute;left:5px;right:5px;top:194px;height:77px;padding:6px 5px;background:#303136;color:#f1f2ee;font:11px/1.2 Arial,sans-serif;overflow:hidden}
#location .location-reward p{margin:0 0 3px;font:inherit}
#location .location-reward #location-mogas{color:#d5e9e5}
#location .location-reward #location-demo{color:#76e7ed}
#location #go{position:absolute;left:72px;bottom:8px;width:96px;height:29px;min-height:29px;padding:2px 5px;border:1px solid #266a83;border-radius:5px;background:linear-gradient(#3e8399,#17617b);font:bold 15px Arial,sans-serif;color:#e4fafb;box-shadow:0 2px 2px #000}
#location #go:hover{filter:brightness(1.18)}
#location #go:disabled{filter:grayscale(1);opacity:.65}
#avatar{transition:none}
#location .mastery-row{position:absolute;inset:0;z-index:1;pointer-events:none}
#mastery-stars{position:absolute;left:12px;top:156px;display:flex;gap:7px;color:#f7d17e;font:26px/30px Arial,sans-serif;text-shadow:1px 1px #111}
#mastery-stars span{width:23px;text-align:center}
#location .mastery-track{position:absolute;left:106px;top:162px;width:124px;height:17px;background:#5d5d5d;box-shadow:inset 0 0 0 1px #171717}
#mastery-fill{display:block;height:100%;background:url('assets/locationInfo-frame.png') -106px -162px/240px 200px no-repeat;transition:width .2s}
#location #close{z-index:5;color:transparent;border:0;background:url('assets/locationInfo-frame.png') -208px 0/240px 200px no-repeat}
#location #close:hover{filter:brightness(1.2)}
#location{width:240px;height:290px;padding:0;filter:drop-shadow(2px 4px 4px #1119)}
#location-swf,#location-swf ruffle-player{display:block;width:240px;height:290px;pointer-events:none}
#location #close{position:absolute;top:0;right:0;z-index:5;width:33px;height:33px;min-height:33px;padding:0;background:transparent;border:0;color:transparent;cursor:pointer}
#location #card-go{position:absolute;left:94px;top:253px;z-index:5;width:74px;height:30px;min-height:30px;padding:0;background:transparent;border:0;color:transparent;cursor:pointer}
#location #card-go:focus-visible,#location #close:focus-visible{outline:2px solid #fff;outline-offset:-2px}
#location.locked,#location.locked #location-swf,#location.locked #location-swf ruffle-player{height:320px}
#location.locked #card-go{top:283px}
#location-swf{clip-path:inset(3px 3px 0 3px round 5px)}
#surprise-effect{position:absolute;z-index:4;width:200px;height:200px;pointer-events:none}
#surprise-effect[hidden]{display:none}
.node:hover,.node.current,.node.visited:not(.current){background:transparent;outline:0;box-shadow:none}
#battle-frame{display:block;width:100%;border:0;min-height:900px;background:#172925}#transition{position:absolute;z-index:50;pointer-events:none}#transition ruffle-player{width:100%;height:100%;background:transparent}#battle-view.preparing{position:absolute;left:-10000px;top:0;width:800px}
#dex-stage{width:100%;aspect-ratio:760/660;border:3px solid #a17e49;background:#000}#dex-stage ruffle-player{width:100%;height:100%}#dex-view.preparing{position:absolute;left:-10000px;top:0;width:800px}
#home-stage{width:100%;aspect-ratio:760/660;border:3px solid #a17e49;background:#000}#home-stage ruffle-player{width:100%;height:100%}#home-view.preparing{position:absolute;left:-10000px;top:0;width:800px}#travel-layer{position:absolute;z-index:40}#travel-layer ruffle-player{width:100%;height:100%;background:transparent}
#location.home,#location.home #location-swf{height:199px;overflow:hidden}#location.home #card-go{top:165px}
/* One screen: every view (map, Dex, Home, battle) uses the same 760x660 stage, scaled to fit the window. */
:root{--stage-w:min(calc(100vw - 16px),calc((100vh - 16px) * 760 / 660));--stage-h:calc(var(--stage-w) * 660 / 760)}
main{max-width:none;padding:8px}
#map-viewport{max-height:none;overflow:visible}
#map,#dex-stage,#home-stage{width:var(--stage-w);height:var(--stage-h);aspect-ratio:auto;margin:0 auto;border-width:0}
#battle-frame{width:var(--stage-w);height:var(--stage-h);min-height:0;margin:0 auto}
.toolbar,#status,header,details{max-width:var(--stage-w);margin-left:auto;margin-right:auto}
@media(max-width:560px){#map-viewport{overflow:auto;max-height:75vh}#map{width:760px;height:660px;margin:0}}
/* Public play (not localhost / ?dev=1): only the game screen, no HTML text or controls. */
.play-only .toolbar,.play-only header,.play-only details{display:none!important}
.play-only body{overflow:hidden}
.play-only #status{display:none!important}
/* Sign-in (account.js): the original title screen with the login panels, same stage as every other view. */
#login-stage{width:var(--stage-w);height:var(--stage-h);margin:0 auto;background:#000}#login-stage ruffle-player{width:100%;height:100%}
.signing-in #map-view,.signing-in #status{display:none!important}
