/* Hakken adventure UI: common materials, activity-specific layouts. */
:root{--game-jade:#102e2b;--game-panel:#173e37;--game-line:#466b53;--game-gold:#edc46f;--game-text:#fff0ce;--game-muted:#bfd0ad}
:is(.location-panel,.action-dialog){color:var(--game-text);background:var(--game-jade);border:2px solid #bc9f61;box-shadow:0 0 0 4px #193b33,0 0 0 6px #7d8259,0 18px 50px #071d24aa;width:min(1040px,94vw);height:fit-content;max-height:90dvh}.location-panel[open]{display:flex}.location-panel>.panel-content{flex:0 1 auto;max-height:calc(90dvh - 86px);min-height:0}.action-dialog{width:min(700px,94vw)}
:is(.location-panel,.action-dialog) .panel-header{padding:15px 22px;border-bottom:2px solid #8f814e;background:linear-gradient(90deg,#234f41,#183d36)}.panel-header h1{font-size:22px;margin:3px 0}.panel-header h2{font-size:19px}.panel-header .pixel{font-size:8px;color:#c3b986}.panel-header .close-button{min-height:36px;font-size:10px;background:#163b32;border:1px solid #708362;box-shadow:0 2px #071f1a}
:is(.location-panel,.action-dialog) .panel-content{padding:22px;background-image:repeating-linear-gradient(0deg,#ffffff01 0 2px,transparent 2px 5px);scrollbar-color:#718666 #18352e}.panel-content :is(h2,h3){color:var(--game-text)}.panel-content h2{font-size:24px}.panel-content h3{font-size:16px;line-height:1.55}.panel-content p{line-height:1.65}.panel-content .eyebrow{color:var(--game-gold);font-size:9px;line-height:1.7}.quiet{color:var(--game-muted);font-size:12px;line-height:1.7}.game-icon{width:26px;height:26px;flex:0 0 26px;color:var(--game-gold);shape-rendering:crispEdges;vertical-align:middle}.fighter-art,.resident-art{display:block;image-rendering:pixelated;overflow:hidden;flex-shrink:0}.fighter-art{width:110px;height:138px}.resident-art{width:70px;height:100px}
.panel-content .pixel-button{font-size:11px;line-height:1.5;border:2px solid #102c25;padding:10px 14px;min-height:41px;gap:8px;box-shadow:0 3px #09261e,inset 0 2px #8bad65;background:#4d774b;color:#fff2cd}.panel-content .pixel-button:hover{background:#65945c;transform:translateY(-1px)}.panel-content .pixel-button.secondary{background:#204b3d;border-color:#637d58;box-shadow:0 3px #102b24,inset 0 1px #54765c;color:#e5e6c1}.panel-content button:disabled{opacity:.45;cursor:not-allowed}.panel-content :is(input,select){background:#0c2c25;color:#fff1d4;border:2px solid #698568;padding:10px;max-width:100%;min-width:0}.panel-content .field label{color:#e9d6ab}.panel-content .notice{background:#614b292e;border-left:3px solid #e3b862;color:#ebd4a2;font-size:13px}.panel-content .play-form-error{background:#66322b;color:#ffe0cf;border-left-color:#e9a07c}.play-chip{background:#2f6549;color:#ecedc6;border:1px solid #638565}.play-rarity{width:max-content}.play-row{background:#1c4439;color:var(--game-text);border:1px solid #476a4e;box-shadow:0 3px #0d2b23;margin-bottom:10px;padding:14px}.play-row p,.play-stat span,.play-tile span,.play-row details{color:#c6d4b3}.play-row strong{font-size:15px}.play-row>.play-actions{max-width:50%}.play-actions{gap:10px;margin-top:12px}.play-hero{box-shadow:none;background:#244e3c;border:1px solid #6e845b}.play-tabs{gap:5px;margin:16px 0}.play-tabs button{background:#153c31;color:#d6ddbb;border:1px solid #5b7754;font:10px HakkenPixel,monospace;padding:9px 14px}.play-tabs button[aria-pressed=true]{background:#d2b166;color:#193b2b;border-color:#f0d187;box-shadow:0 3px #8f7542}.game-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:170px;padding:26px;color:#becdae;border:1px dashed #57714e;background:#18382e}.game-empty .game-icon{width:38px;height:38px;opacity:.7;margin-bottom:16px}.game-empty p{max-width:390px;margin:0}.play-empty{background:#173d31;color:#c5d4af;border-color:#5c7752}
.location-panel[data-place=menu]{width:min(770px,94vw)}.player-banner{display:flex;align-items:center;gap:22px;padding:12px 20px;margin-bottom:24px;background:linear-gradient(90deg,#2e5b3e,#1a3d31);border-bottom:2px solid #6e7d49}.player-banner .fighter-art{width:96px;height:120px;filter:drop-shadow(4px 4px #09281d88)}.player-banner>div{flex:1;min-width:0}.player-banner h2{margin:3px 0;font-size:20px;overflow-wrap:anywhere}.player-banner p{color:#d1dcb9;margin:5px 0;font-size:14px}.player-banner progress{width:min(250px,100%);height:9px;accent-color:#d9be67}.adventure-menu{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.adventure-menu>button{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;min-height:130px;padding:20px 8px;background:linear-gradient(135deg,#234d39,#17382c);border:2px solid #69855c;color:#f3e7bb;font:11px HakkenPixel,monospace;box-shadow:0 4px #092b20,inset 0 2px #426b48}.adventure-menu>button:hover{background:#365d3d;border-color:#ebc875;transform:translateY(-2px)}.adventure-menu .game-icon{width:40px;height:40px}.menu-world{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:24px;padding:22px;background:linear-gradient(90deg,#122f27f5,#122f2799),url('./assets/pixel/plaza-v20.webp') center 60%/cover;border:1px solid #58774d;image-rendering:pixelated}.menu-world p{margin:4px 0}.menu-world .eyebrow{margin:0}
.location-panel[data-place=missions]{width:min(1100px,95vw);height:min(780px,90dvh)}.pool-strip{display:flex;align-items:center;gap:13px;padding:12px 16px;background:#244c36;border:1px solid #687e50}.pool-strip>div{display:flex;gap:6px;flex-direction:column}.pool-strip>div>span{font:8px HakkenPixel,monospace;color:#c2c794}.pool-strip strong{font:14px HakkenPixel,monospace;color:#f0d28b}.pool-strip>details{margin-left:auto;text-align:right;position:relative;font-size:12px;color:#c1d3aa}.pool-strip summary{cursor:pointer}.pool-strip>details[open]{max-width:50%}.pool-strip p{font-size:11px}.quest-browser{display:grid;grid-template-columns:320px minmax(0,1fr);gap:20px;align-items:start}.quest-list{display:flex;flex-direction:column;gap:7px;max-height:410px;overflow:auto;padding-right:5px;scrollbar-color:#719261 #122f27}.quest-list>button{display:flex;align-items:center;gap:11px;text-align:left;min-height:74px;padding:9px;background:#1a3d30;border:1px solid #4b694c;color:#f2e7c3;box-shadow:0 2px #0d2922}.quest-list>button[aria-pressed=true]{background:#355a36;border-color:#d5b568}.quest-list .resident-art{width:35px;height:50px}.quest-list>button>span{min-width:0;flex:1}.quest-list strong{display:block;font-size:14px;line-height:1.4}.quest-list small{display:block;color:#c1ce9e;font-size:11px;margin-bottom:5px}.quest-list .game-icon{width:18px;height:18px;flex-basis:18px}.quest-detail{padding:21px;background:#244a35;border:1px solid #76835b;box-shadow:0 4px #0b2a21;min-height:380px}.quest-detail header{display:flex;align-items:center;gap:15px;border-bottom:1px solid #718257;padding-bottom:15px}.quest-detail header .resident-art{height:85px;width:52px}.quest-detail h3{font-size:17px;margin:5px 0}.quest-detail>p{font-size:14px;color:#d9dfbf}.quest-requirement{display:flex;gap:12px;padding:12px 0;margin:15px 0;border-top:1px dashed #6c7e55;border-bottom:1px dashed #6c7e55;color:#d6dfb9}.quest-requirement p{font-size:13px;margin:4px 0}.quest-requirement b{font-size:13px;color:#efd391}.quest-reward{display:flex;align-items:center;flex-wrap:wrap;gap:11px;margin-top:17px}.quest-reward strong{color:#f6d68b;font-size:18px}.quest-reward>span{color:#bdd89d;font-size:13px}.quest-active{background:#294f36;border:2px solid #b4a15e;padding:18px 20px;margin-top:16px}.quest-active h3{margin:3px 0 8px}.quest-current{font-size:15px;color:#f3eccb}.quest-progress{display:flex;gap:12px;flex-wrap:wrap;color:#b6d39e;font-size:12px}.quest-meta{display:flex;justify-content:space-between;gap:14px;margin:12px 0;font-size:13px;color:#e2c984}.quest-active details{font-size:13px;color:#c5d5af;margin:10px 0}.quest-active>.quiet{display:block;margin-top:15px}
.location-panel[data-place=npc]{width:min(1190px,96vw);height:fit-content;position:fixed;inset:auto 0 4dvh;margin:0 auto;background:transparent;border:0;box-shadow:none;overflow:visible}.location-panel[data-place=npc]::backdrop{background:#071e1f66}.location-panel[data-place=npc]>.panel-header{position:absolute;right:15px;top:12px;border:0;background:transparent;padding:0;z-index:2}.location-panel[data-place=npc]>.panel-header>div{display:none}.location-panel[data-place=npc]>.panel-content{padding:0;background:none;max-height:90dvh;overflow:auto;border:2px solid #b6a368;box-shadow:0 6px #09271f,0 0 0 4px #183d32}.conversation-scene{display:grid;grid-template-columns:270px minmax(0,1fr);gap:10px;min-height:390px;padding:62px 24px 24px;background:linear-gradient(0deg,#102b24f0,#102b24a0 60%,#102b2433),url('./assets/pixel/interior-arena.webp') center/cover;image-rendering:pixelated}.conversation-lian{background-image:linear-gradient(0deg,#102b24fa,#102b24b0 60%,#102b2455),url('./assets/pixel/interior-dojo.webp')}.conversation-keira{background-image:linear-gradient(0deg,#102b24fa,#102b24b0 60%,#102b2455),url('./assets/pixel/interior-marketplace.webp')}.conversation-renzo{background-image:linear-gradient(0deg,#102b24fa,#102b24b0 60%,#102b2455),url('./assets/pixel/interior-mint.webp')}.conversation-nyra{background-image:linear-gradient(0deg,#102b24fa,#102b24b0 60%,#102b2455),url('./assets/pixel/district-v3-waterfall-gardens.webp')}.conversation-ardan{background-image:linear-gradient(0deg,#102b24fa,#102b24b0 60%,#102b2455),url('./assets/pixel/district-v3-bamboo-heights.webp')}.conversation-irena{background-image:linear-gradient(0deg,#102b24fa,#102b24b0 60%,#102b2455),url('./assets/pixel/district-v3-old-town.webp')}.conversation-taejin{background-image:linear-gradient(0deg,#102b24fa,#102b24b0 60%,#102b2455),url('./assets/pixel/district-v3-riverfront.webp')}.conversation-person{align-self:end;display:flex;align-items:center;flex-direction:column;gap:12px}.conversation-person>.resident-art{width:185px;height:320px;filter:drop-shadow(8px 8px #061c1866)}.conversation-person>span{font:8px HakkenPixel,monospace;color:#dfd7ac;text-align:center}.conversation-box{align-self:end;min-width:0;padding:22px 26px;background:#173d32f2;border:2px solid #a6a16a;box-shadow:0 4px #082b20;image-rendering:auto}.conversation-box header h2{font-size:25px;margin:0 0 13px}.conversation-line{font-size:17px;color:#fff0d1;max-width:650px}.conversation-choices{display:flex;gap:10px;flex-wrap:wrap;padding-top:16px;border-top:1px solid #506e4f}.conversation-hint{display:block;text-align:right;color:#a4be99;margin-top:18px;font-size:10px}.conversation-detail{margin:17px 0;max-height:47dvh;overflow:auto;scrollbar-color:#74875e #14392c}.conversation-detail .quest-active{margin:0}.npc-quest-offer{padding:18px 0;border-top:1px solid #587651}.npc-quest-offer>strong{color:#e8cc87}.npc-quest-offer:first-child{border:0;padding-top:0}.npc-quest-offer h3{margin:4px 0}.npc-quest-offer p{font-size:14px;color:#d0dbb8}.training-room{display:grid;grid-template-columns:110px 1fr;gap:14px;align-items:center}.training-room>.fighter-art{height:190px;width:110px}.training-choices{display:grid;gap:12px}.training-choices>article{display:flex;align-items:center;gap:12px;padding:13px;background:#244a35;border:1px solid #6c8052}.training-choices>article>div{flex:1;min-width:0}.training-choices h3{font:13px HakkenPixel,monospace;margin:0 0 5px}.training-choices p{font-size:12px;margin:0}.training-choices small{font-size:11px;color:#d8c182}.training-choices .pixel-button{font-size:9px;max-width:130px}
.bag-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:25px;align-items:start}.equipment-belt{display:flex;gap:13px;padding:14px 0;margin-bottom:14px;border-bottom:1px solid #5e7854}.equipment-belt>div{display:flex;gap:9px;align-items:center;font-size:12px;color:#d8deb9}.bag-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.bag-slot{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;min-height:110px;padding:7px;background:#102f25;border:2px solid #4a6c48;color:#e2dfbc;box-shadow:inset 0 3px #0a281f}.bag-slot .fish-art{width:62px;height:62px;flex-basis:62px;border:0;background-color:transparent}.bag-slot>small{font-size:9px;line-height:1.35;text-align:center}.bag-slot[aria-pressed=true]{border-color:#efcf76;background:#2b5032}.bag-slot.rarity-border-Rare{border-color:#648e9a}.bag-slot.rarity-border-Epic{border-color:#92729c}.bag-slot.rarity-border-Legendary{border-color:#c4a253}.empty-slot{opacity:.5}.bag-detail{align-self:start;background:#284a33;padding:25px 20px;border:1px solid #7c8658;min-height:280px}.bag-detail .fish-entry{flex-direction:column;text-align:center}.bag-detail .fish-art{width:125px;height:125px;flex-basis:125px}.bag-detail .fish-entry strong{display:block;margin-top:8px}.bag-detail>p{font-size:13px;color:#d4daba}.bag-detail .play-actions{flex-direction:column;align-items:stretch}.shop-banner{display:flex;align-items:center;gap:27px;background:linear-gradient(90deg,#183a2bd9,#183a2bba),url('./assets/pixel/interior-marketplace.webp') center/cover;border-bottom:2px solid #899264;padding:20px}.shop-banner .resident-art{width:90px;height:145px}.shop-banner h2{font-size:23px;margin:4px 0}.shop-banner p{color:#d4ddbb;font-size:14px}.shop-shelves,.gear-shelves{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin:20px 0}.gear-shelves{grid-template-columns:repeat(2,1fr)}.shop-item{padding:22px 17px;display:flex;flex-direction:column;align-items:center;text-align:center;background:linear-gradient(#20472f,#183b2b);border:1px solid #6a8255;box-shadow:0 5px #0c2b1d,inset 0 -5px #34543a}.shop-item .fish-entry{flex-direction:column}.shop-item .fish-art{width:100px;height:100px;flex-basis:100px}.shop-item .fish-entry strong{display:block;font-size:16px;margin-top:8px}.fish-entry p{font-size:11px;color:#c5d5ad;margin:5px 0}.shop-item>p{font-size:12px;color:#c1d0a9}.item-price{color:#edcc7e;font-size:15px;margin:10px 0 17px}.shop-item .game-icon.large-item{width:75px;height:75px;margin-bottom:20px}.shop-item h3{font-size:14px;margin:8px 0}.arena-intro{display:flex;align-items:center;gap:25px;padding:20px;border-bottom:2px solid #6d7952;margin-bottom:22px;background:linear-gradient(90deg,#18382bdb,#16352888),url('./assets/pixel/duel-courtyard.webp') center/cover}.arena-intro .fighter-art{width:130px;height:180px}.arena-intro p{font-size:14px;color:#d7ddba}.arena-intro small{color:#c5cb9a}.rival-list{display:grid;grid-template-columns:1fr 1fr;gap:14px}.rival-list>article{display:flex;align-items:center;gap:14px;background:#244a35;padding:15px;border:1px solid #688256}.rival-list .fighter-art{width:56px;height:78px}.rival-list>article>div{flex:1}.rival-list p{font-size:12px;color:#c3d2a9}.duel-preview{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;text-align:center;padding:15px 0;background:linear-gradient(#18372c66,#153328e8),url('./assets/pixel/duel-courtyard.webp') center/cover}.duel-preview .fighter-art{width:145px;height:210px;margin:auto}.duel-preview h3{font-size:16px;margin:10px 0}.duel-preview>strong{font:28px HakkenPixel,monospace;color:#e8c377}.duel-preview p{font-size:12px;color:#c3d2a9}
.balance-purse{text-align:center;padding:32px 20px;background:radial-gradient(ellipse at top,#395936,#193a2a);border:1px solid #77845b}.balance-purse>.game-icon{width:65px;height:65px;display:block;margin:0 auto 22px}.balance-purse>.eyebrow{display:block}.balance-purse h2{font-size:29px;margin:12px 0}.balance-purse p{color:#cdd9b1;font-size:13px}.balance-purse .play-actions{justify-content:center}.receipt-book{margin-top:22px;padding:15px;background:#16372b;border-top:1px solid #748158}.receipt-book>summary{cursor:pointer;font:12px HakkenPixel,monospace;color:#e8ce8b;margin-bottom:16px}.leaderboard-title{display:flex;align-items:center;gap:20px;padding:10px 0 20px}.leaderboard-title>.game-icon{width:50px;height:50px}.leaderboard-title p{margin:0;color:#c6d5af;font-size:13px}.rank-entry{display:flex;align-items:center;gap:20px;padding:18px;margin-bottom:8px;border:1px solid #54714e;background:#234832}.rank-entry:first-of-type{border-color:#d0ad63;background:#3c5430}.rank-number{font:21px HakkenPixel,monospace;color:#d4ba7b;min-width:40px}.rank-entry>div{flex:1}.rank-entry strong{display:block;font-size:15px}.rank-entry span{display:block;color:#c9d7ae;font-size:13px;margin-top:4px}.rank-entry small{color:#a7bd99;font-size:11px}.guide-pages{display:grid;grid-template-columns:1fr 1fr;gap:20px}.guide-pages>article{padding:23px;background:#224832;border:1px solid #5f7d51}.guide-pages h3{font-size:15px;margin:16px 0 10px}.guide-pages p{font-size:14px;color:#d2ddba;margin:0}
.walker-sprite{height:auto;aspect-ratio:4/5;display:flex;align-items:end;justify-content:center}.walker-sprite canvas{display:block;width:100%;height:auto;image-rendering:pixelated}.walkers{gap:8px;align-items:end}.walker.pending .walker-sprite{visibility:visible;opacity:.3}.walker-name{font-size:8px}.title-description{max-width:410px;font-size:14px;color:#435e50;margin:-11px 0 20px}.title-core .title-tagline{font-size:clamp(17px,1.6vw,24px);margin-top:12px}.title-footer>span:last-child{font-size:10px}.avatar-grid>button{background:#254d37;border-color:#66815a;color:#e6e5bd;box-shadow:0 3px #0b2c20}.avatar-grid>button[aria-pressed=true],.avatar-grid>button:hover{background:#e9cb83;color:#244330;border-color:#ffe4a3;box-shadow:0 3px #8d7641}.avatar-preview h3{color:#f2dfaa}.avatar-preview p{color:#d6dcbd}.avatar-confirm{padding-bottom:3px}
.city-player small{font-size:8px!important}.city-location{top:auto!important;bottom:20px!important;left:50%!important;transform:translateX(-50%)!important;min-width:0;padding:7px 12px!important;gap:12px!important;border-width:1px!important;opacity:.9;pointer-events:none}.city-location>strong{font-size:9px!important}.city-location>span,.city-location p>span{display:none!important}.city-location p{font-size:9px!important}.city-channel,.hud-bottom-left,.hud-bottom-right{display:none!important}.hud-brand{width:130px}.city-player{top:75px!important;left:20px!important;right:auto!important}.hud-top-right .hud-button{font-size:11px;padding:11px 15px}.city-minimap{width:155px;right:22px;bottom:22px;border-width:2px}.city-minimap canvas{height:106px}.minimap-heading{font-size:7px;padding:8px}.city-wayfinding-mobile{display:none!important}.city-context{bottom:70px!important}.objective-hud{position:absolute;left:22px;top:151px;max-width:280px;background:#133a2dda;border:1px solid #9c9e65;color:#f0e5bd;pointer-events:auto}.objective-hud>button{display:flex;align-items:center;gap:10px;width:100%;background:transparent;color:#ead393;border:0;padding:10px 13px;text-align:left;font:8px HakkenPixel,monospace}.objective-hud p{font-size:12px;margin:0;padding:0 13px 12px;line-height:1.55}.objective-hud p button{color:#efd180;background:transparent;border:0;font:inherit;text-decoration:underline;margin-top:7px;display:inline-block;margin-right:12px}.objective-hud p #objective-skip{color:#b8c99e;font-size:10px}.objective-hud.collapsed>div{display:none}.test-build-badge{position:fixed;left:10px;bottom:7px;font:7px HakkenPixel,monospace;color:#e1ddad;background:#143a2ab0;padding:3px 5px;pointer-events:none;z-index:9}
.action-dialog:has(.atlas-map) { width: min(1120px, 94vw, 84dvh); }
.action-dialog:has(.atlas-map) > .panel-content { padding: 0; }
.atlas-map {
  --atlas-cream: #fff4d1;
  --atlas-gold: #ffda78;
  --atlas-ink: #152e26;
  background: #173d32;
}
.atlas-toolbar, .atlas-caption, .atlas-shortcuts {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 9px 14px;
}
.atlas-toolbar { justify-content: space-between; background: #14382e; }
.atlas-tabs, .atlas-tools { display: flex; gap: 6px; }
.atlas-control, .atlas-place, .atlas-exit, .atlas-node, .atlas-clear {
  color: var(--atlas-cream);
  border: 1px solid #788e66;
  background: #254b3e;
  font: 10px/1.5 HakkenPixel, monospace;
  cursor: pointer;
}
.atlas-control { min-height: 36px; min-width: 34px; padding: 5px 9px; }
.atlas-control:hover, .atlas-place:hover, .atlas-exit:hover, .atlas-node:hover {
  background: #3e6652;
}
.atlas-control:focus-visible, .atlas-place:focus-visible, .atlas-exit:focus-visible,
.atlas-node:focus-visible, .atlas-clear:focus-visible, .world-atlas:focus-visible {
  outline: 2px solid var(--atlas-gold);
  outline-offset: 2px;
}
.atlas-control[aria-pressed="true"] { background: var(--atlas-gold); color: var(--atlas-ink); }
.atlas-guide {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr);
  gap: 8px;
  padding: 8px 14px 11px;
  background: #173d32;
}
.atlas-guide > div {
  min-width: 0;
  padding: 8px 11px;
}
.atlas-guide small, .atlas-guide strong, .atlas-guide span { display: block; }
.atlas-guide small { color: #cbd7af; font: 8px/1.5 HakkenPixel, monospace; }
.atlas-guide strong { font-size: 16px; line-height: 1.25; color: var(--atlas-cream); margin-top: 4px; }
.atlas-guide span { color: #d9e1bf; font-size: 11px; margin-top: 3px; }
.atlas-next small, .atlas-next strong { color: var(--atlas-gold); }
.world-atlas {
  position: relative;
  width: 100%;
  height: min(52dvh, 620px);
  overflow: hidden;
  background: #102f28;
  border-block: 1px solid #738968;
  touch-action: none;
  cursor: grab;
}
.world-atlas:active { cursor: grabbing; }
.atlas-plane { position: absolute; transform-origin: center; }
.atlas-plane > img, .atlas-roads { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.atlas-plane > img { image-rendering: pixelated; user-select: none; filter: brightness(.86); }
.atlas-overview .atlas-plane > img { filter: brightness(.49) saturate(.85); }
.atlas-roads polyline, .atlas-links line {
  fill: none;
  vector-effect: non-scaling-stroke;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.atlas-route-outline { stroke: var(--atlas-ink); stroke-width: 8; }
.atlas-route-line { stroke: var(--atlas-gold); stroke-width: 4; }
.atlas-links line { stroke: #d9d5a0; stroke-width: 2; stroke-dasharray: 4 5; }
.atlas-you, .atlas-goal, .atlas-exit, .atlas-node { position: absolute; transform: translate(-50%, -50%); }
.atlas-you, .atlas-exit { display: grid; place-items: center; }
.atlas-you {
  z-index: 3;
  width: 25px;
  height: 25px;
  border-radius: 50%;
  border: 2px solid var(--atlas-cream);
  background: #13666d;
  box-shadow: 0 0 0 2px var(--atlas-ink);
  pointer-events: none;
}
.atlas-you i {
  width: 12px;
  height: 13px;
  background: var(--atlas-cream);
  clip-path: polygon(50% 0, 100% 100%, 50% 73%, 0 100%);
}
.atlas-you b {
  position: absolute;
  top: calc(100% + 4px);
  left: 50%;
  transform: translateX(-50%);
  color: var(--atlas-cream);
  font: 700 10px/1 system-ui, sans-serif;
  text-shadow: 0 1px 2px #101f18, 0 0 4px #101f18;
}
.atlas-goal {
  z-index: 2;
  width: 17px;
  height: 17px;
  transform: translate(-50%, -50%) rotate(45deg);
  background: var(--atlas-gold);
  border: 2px solid #fff0b1;
  box-shadow: 0 0 0 2px var(--atlas-ink);
  pointer-events: none;
}
.atlas-exit {
  width: 25px;
  height: 25px;
  padding: 0;
  font: bold 17px/1 system-ui, sans-serif;
  box-shadow: 0 2px var(--atlas-ink);
}
.atlas-node {
  max-width: 28%;
  width: max-content;
  min-height: 35px;
  padding: 5px 7px;
  border: 0;
  background: transparent;
  font: 700 12px/1.2 system-ui, sans-serif;
  text-shadow: 0 1px 2px #101f18, 0 0 4px #101f18;
}
.atlas-node:hover, .atlas-node:focus-visible { background: transparent; text-decoration: underline; }
.atlas-node-you { color: #a8ede2; text-decoration: underline; text-underline-offset: 3px; }
.atlas-node-goal { color: var(--atlas-gold); text-decoration: underline; text-underline-offset: 3px; }
.atlas-fishing-mark { fill: #ffe295; stroke: #16342f; stroke-width: 1.2; vector-effect: non-scaling-stroke; }
.atlas-legend-fishing { width: 9px; height: 9px; border-radius: 50%; background: #ffe295; }
.atlas-caption { color: #e4e6bd; font-size: 11px; flex-wrap: wrap; }
.atlas-caption > span { display: inline-flex; align-items: center; gap: 6px; }
.atlas-legend-you, .atlas-legend-goal { display: inline-block; width: 10px; height: 10px; }
.atlas-legend-you { border: 1px solid var(--atlas-cream); border-radius: 50%; background: #13666d; }
.atlas-legend-goal { background: var(--atlas-gold); transform: rotate(45deg); }
.atlas-clear { margin-left: auto; padding: 4px 0 4px 6px; background: none; border: 0; color: var(--atlas-gold); text-decoration: underline; }
.atlas-shortcuts { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); padding-top: 1px; padding-bottom: 12px; }
.atlas-place { display: flex; align-items: center; justify-content: center; gap: 5px; padding: 4px 5px; min-height: 43px; }
.atlas-place .game-icon { width: 18px; height: 18px; flex-basis: 18px; color: var(--atlas-gold); }
#city-map-next { display: block; color: #ffe59f; font: 10px/1.45 system-ui, sans-serif; margin-top: 4px; }
#city-map-next:empty { display: none; }
#city-map-button { max-width: min(185px, 47vw); }
#city-wayfinding { color: #ffe59f; }
@media (max-width: 600px) {
  .action-dialog:has(.atlas-map) { width: calc(100vw - 20px); }
  .world-atlas { height: auto; aspect-ratio: 3 / 2; max-height: 51dvh; }
  .atlas-toolbar, .atlas-caption, .atlas-shortcuts { padding-inline: 9px; gap: 6px; }
  .atlas-control { min-height: 40px; font-size: 8px; padding: 5px 7px; }
  .atlas-guide { padding-inline: 9px; }
  .atlas-guide > div { padding: 7px 8px; }
  .atlas-guide strong { font-size: 13px; }
  .atlas-guide small, .atlas-node, .atlas-place { font-size: 8px; }
  .atlas-node { padding: 4px 5px; }
  .atlas-shortcuts { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.fish-adventure{width:min(1220px,96vw);max-width:none;margin:0 auto;padding:18px 12px}.lake-playground{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:18px;align-items:stretch}.lake-playground .lake-scene{align-self:center;border:2px solid #bca262;box-shadow:0 5px #092b23}.lake-water,.lake-rod{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.lake-fighter{position:absolute;left:24%;top:48%;width:9%;height:18%;image-rendering:pixelated;overflow:hidden;filter:drop-shadow(1px 2px #163b2b77)}.lake-gameplay{background:#183b2f;border:2px solid #a59a61;padding:20px;display:flex;flex-direction:column;color:#fff0c9}.lake-help .eyebrow{font-size:8px}.lake-help h2{font:14px/1.5 HakkenPixel,monospace;color:#f4dfaa;margin:8px 0 13px}.lake-help p{font-size:13px;line-height:1.7;color:#cfdab8}.lake-reel-area{display:flex;gap:18px;align-items:center;flex:1;min-height:270px;margin:10px 0}.vertical-reel{position:relative;width:72px;height:270px;flex:0 0 72px;background:linear-gradient(#164652,#092b36);border:3px solid #c2a96c;box-shadow:inset 3px 0 #041e26,0 3px #09291f;overflow:hidden}.reel-grid{position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 24px,#86b1a316 24px 25px)}.player-catch-zone{position:absolute;left:5px;right:5px;bottom:32%;height:37%;border:2px solid #c6df88;background:#7ea25ca8;box-shadow:inset 0 0 0 2px #325c38}.player-catch-zone.in-zone{background:#a1cd7bcb;border-color:#eaf7b5}.reel-fish-icon{position:absolute;left:50%;bottom:50%;transform:translate(-50%,50%);width:28px;height:18px;background:#f9d37b;border:2px solid #563e24;color:#563e24;font-size:9px;text-align:center;line-height:14px;clip-path:polygon(0 0,20% 30%,35% 0,80% 0,100% 50%,80% 100%,35% 100%,20% 70%,0 100%)}.reel-up,.reel-down{position:absolute;left:50%;transform:translateX(-50%);color:#ecdda6;font-size:18px;opacity:.6}.reel-up{top:3px}.reel-down{bottom:3px}.catch-status{display:flex;flex-direction:column;gap:12px;min-width:0}.catch-status .eyebrow{font-size:8px}.catch-status progress{width:100%;height:19px;accent-color:#9bbf6c}.catch-status strong{font-size:13px;color:#e3d7a7;min-height:40px}.catch-status>span:last-child{font-size:12px;color:#b7cca4;min-height:18px}.lake-gameplay .lake-controls{display:flex;flex-direction:column;align-items:stretch;flex-wrap:nowrap;padding:12px 0 0;border-top:1px solid #698052;min-height:140px;justify-content:end;margin-top:auto}.lake-controls .lake-bait{flex:none;display:flex;align-items:center;gap:9px;font-size:11px;min-height:27px;text-align:left}.lake-bait>input{margin:0;width:15px;height:15px;flex-shrink:0}.lake-bait>span{display:inline!important}.lake-primary{width:100%;min-height:54px;font-size:11px;line-height:1.5;touch-action:none;user-select:none}.lake-primary.held{background:#cbb363;color:#163d2c}.lake-primary.bite-ready{background:#e4bc58;color:#203e2b;border-color:#f8e5a7}.lake-key-hint{font:6px/1.7 HakkenPixel,monospace;text-align:center;color:#a9bb94}.lake-catch{padding:21px;border-color:#d9bc78;background:#143b30f2;box-shadow:0 4px #092b23;max-width:70%;gap:11px}.lake-catch>.fish-art{width:90px;height:90px;border:0;background-color:transparent}.lake-catch>strong{font:13px/1.5 HakkenPixel,monospace}.lake-catch>span{color:#d6e0b8;font-size:12px}.lake-call{bottom:3%;font-size:13px;left:3%;right:3%;background:#12392df0;border:1px solid #ad9f68;padding:11px}.lake-invitation{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:230px;margin-bottom:24px;padding:25px;background:linear-gradient(90deg,#143b2dea,#143b2d77),url('./assets/pixel/fishing-lake.webp') center/cover;border:1px solid #6a855a}.lake-invitation .fighter-art{width:150px;height:195px}.lake-invitation h2{margin:6px 0 13px}.lake-invitation p{font-size:14px;color:#d2dbb5}.play-channel-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.play-channel{padding:14px;background:#244d35;border:1px solid #668152;color:#eee4bd;display:flex;flex-direction:column;gap:9px}.play-channel.current{border-color:#e5c475;background:#3c5c36}.play-channel strong{font:11px HakkenPixel,monospace}.play-channel span{font-size:12px;color:#c3d3a6}
@media(max-width:850px){.quest-browser{grid-template-columns:250px 1fr;gap:13px}.shop-shelves{grid-template-columns:1fr 1fr}.bag-layout{grid-template-columns:1fr 250px;gap:15px}.conversation-scene{grid-template-columns:190px 1fr;padding:58px 17px 17px}.conversation-person>.resident-art{width:155px;height:270px}.conversation-box{padding:18px}.training-room{grid-template-columns:1fr}.training-room>.fighter-art{display:none}.bag-grid{grid-template-columns:repeat(3,1fr)}.lake-playground{grid-template-columns:minmax(0,1fr) 245px;gap:12px}.lake-gameplay{padding:15px}.vertical-reel{height:235px;width:60px;flex-basis:60px}.lake-reel-area{gap:12px;min-height:240px}.lake-help h2{font-size:12px}.lake-help p{font-size:12px}}
@media(max-width:600px){:is(.location-panel,.action-dialog){max-height:94dvh;width:calc(100vw - 20px);max-width:calc(100vw - 20px)}.location-panel>.panel-content{max-height:calc(94dvh - 70px);padding:15px}.action-dialog>.panel-content{padding:16px}.panel-header{padding:12px 15px!important}.panel-header h1{font-size:17px}.panel-header .close-button{font-size:0;min-width:34px}.panel-header .close-button span{font-size:23px}.player-banner{gap:13px;padding:8px 11px;margin-bottom:17px}.player-banner .fighter-art{width:64px;height:95px}.player-banner h2{font-size:15px}.player-banner p{font-size:12px}.player-banner>.pixel-button{font-size:8px;padding:7px}.adventure-menu{gap:10px}.adventure-menu>button{font-size:8px;min-height:100px;padding:13px 5px;gap:13px}.adventure-menu .game-icon{width:30px;height:30px}.menu-world{padding:15px;gap:11px}.menu-world p{font-size:12px}.menu-world .pixel-button{font-size:9px}.pool-strip{padding:10px;gap:9px;flex-wrap:wrap}.pool-strip strong{font-size:11px}.pool-strip>details{width:100%;text-align:left;margin-left:35px;font-size:11px}.pool-strip>details[open]{max-width:none}.quest-browser{display:flex;flex-direction:column}.quest-list{display:grid;grid-auto-flow:column;grid-auto-columns:210px;max-width:100%;overflow-x:auto;padding-bottom:7px;max-height:none}.quest-list>button{min-height:66px}.quest-list .resident-art{height:44px;width:26px}.quest-list strong{font-size:12px}.quest-detail{width:100%;min-height:0;padding:16px}.quest-detail header .resident-art{width:38px;height:65px}.quest-detail h3{font-size:14px}.quest-detail>p,.quest-requirement p{font-size:13px}.quest-active{padding:15px}.quest-current{font-size:13px}.quest-meta{font-size:11px}.quest-reward strong{font-size:16px}.conversation-scene{display:block;padding:56px 12px 12px;min-height:0}.conversation-person{position:absolute;right:38px;top:6px;pointer-events:none}.conversation-person>.resident-art{width:36px;height:58px}.conversation-person>span{display:none}.conversation-box{padding:17px 15px}.conversation-box header h2{font-size:21px;margin-bottom:10px}.conversation-line{font-size:15px}.conversation-detail{max-height:52dvh}.conversation-choices .pixel-button{font-size:9px;padding:9px 11px}.conversation-hint{font-size:9px}.training-choices>article{gap:9px;flex-wrap:wrap}.training-choices .game-icon{width:22px;height:22px;flex-basis:22px}.training-choices .pixel-button{margin-left:31px;max-width:none;font-size:10px}.bag-layout{display:flex;flex-direction:column}.bag-layout>section,.bag-detail{width:100%}.bag-grid{grid-template-columns:repeat(4,1fr);gap:7px}.bag-slot{min-height:85px;padding:5px}.bag-slot .fish-art{width:45px;height:45px;flex-basis:45px}.bag-slot>small{font-size:8px}.bag-detail{min-height:0;padding:17px}.bag-detail .fish-entry{flex-direction:row;text-align:left}.bag-detail .fish-art{width:75px;height:75px;flex-basis:75px}.bag-detail .play-actions{flex-direction:row}.shop-banner{padding:16px;gap:15px}.shop-banner .resident-art{height:105px;width:62px}.shop-banner h2{font-size:17px}.shop-shelves,.gear-shelves{gap:12px}.shop-item{padding:16px 10px}.shop-item .fish-art{width:75px;height:75px;flex-basis:75px}.shop-item .fish-entry strong{font-size:13px}.shop-item .pixel-button{font-size:9px;padding:8px 10px}.item-price{font-size:12px}.arena-intro{gap:14px;padding:15px}.arena-intro .fighter-art{width:75px;height:120px}.arena-intro h2{font-size:17px}.arena-intro small{font-size:11px}.rival-list{grid-template-columns:1fr}.duel-preview .fighter-art{width:105px;height:160px}.duel-preview h3{font-size:13px}.duel-preview>strong{font-size:21px}.balance-purse{padding:22px 12px}.balance-purse h2{font-size:22px}.guide-pages{grid-template-columns:1fr;gap:12px}.guide-pages>article{padding:17px}.guide-pages p{font-size:13px}.rank-entry{gap:13px;padding:13px}.rank-entry .pixel-button{font-size:8px;padding:8px}.rank-number{font-size:16px;min-width:24px}.rank-entry small{font-size:9px}.play-row{padding:13px;flex-wrap:wrap}.play-row>.play-actions{max-width:100%}.city-location{bottom:13px!important;max-width:200px;display:none!important}.hud-brand{width:110px!important;left:12px!important}.city-player{top:67px!important;left:12px!important;max-width:180px!important}.city-player small{font-size:6px!important;text-align:left!important}.hud-top-right{top:17px!important;right:12px!important;gap:7px!important}.hud-top-right .hud-button{font-size:9px!important;padding:9px!important;min-height:44px!important}.objective-hud{left:12px;top:128px;max-width:230px}.objective-hud>button{font-size:7px;padding:9px}.objective-hud p{font-size:11px}.city-map-button{bottom:17px!important;left:auto!important;right:15px;transform:none!important;min-height:42px}.city-context{left:auto!important;right:16px!important;bottom:88px!important;transform:none!important;max-width:55vw}.city-joystick{bottom:22px!important;left:18px!important}.city-minimap{display:none}.walker-name{font-size:7px}.walkers{max-width:420px;gap:10px}.loading-progress{margin-top:20px}.test-build-badge{font-size:6px}.title-description{font-size:11px;max-width:280px;margin:0 0 9px}.title-core .title-tagline{font-size:16px;margin:4px 0 6px}.title-roster{top:43%}.title-footer>span:last-child{font-size:7px}.fish-adventure{width:100%;padding:12px 10px}.lake-playground{display:flex;flex-direction:column;gap:12px}.lake-playground .lake-scene{width:100%;max-height:36dvh;aspect-ratio:3/2}.lake-scene>img{height:100%;object-fit:cover}.lake-gameplay{display:grid;grid-template-columns:85px minmax(0,1fr);gap:10px 16px;padding:14px}.lake-help{grid-column:2;grid-row:1}.lake-help .eyebrow{display:none}.lake-help h2{font-size:11px;margin:0 0 9px}.lake-help p{font-size:12px;margin:0}.lake-reel-area{grid-column:1;grid-row:1/3;flex-direction:column;min-height:0;gap:8px;margin:0}.vertical-reel{width:65px;height:225px;flex-basis:225px}.catch-status{gap:5px;width:80px;text-align:center}.catch-status .eyebrow{font-size:5px;margin:0}.catch-status strong{font-size:10px;min-height:24px}.catch-status>span:last-child{font-size:10px;min-height:12px}.catch-status progress{height:12px}.lake-gameplay .lake-controls{grid-column:2;grid-row:2;min-height:140px;align-self:end;gap:11px;padding-top:10px}.lake-primary{font-size:10px;min-height:58px}.lake-key-hint{font-size:5px}.lake-catch{padding:13px;gap:5px;min-width:170px;top:28%;max-width:68%}.lake-catch>.fish-art{width:55px;height:55px}.lake-catch>strong{font-size:11px}.lake-catch>span{font-size:10px}.lake-call{font-size:11px;padding:7px}.lake-fighter{top:46%;height:20%;width:10%}.lake-invitation{padding:18px;gap:10px;min-height:0}.lake-invitation .fighter-art{width:90px;height:145px}.lake-invitation p{font-size:13px}.play-channel-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-height:650px) and (min-width:601px){.conversation-person>.resident-art{height:230px;width:140px}.conversation-scene{grid-template-columns:180px 1fr;min-height:300px}.conversation-line{font-size:14px}.conversation-box{padding:16px}.conversation-box header h2{font-size:20px}.conversation-detail{max-height:40dvh}.walkers{max-height:190px}.walker-sprite{max-height:160px}.walker-sprite canvas{max-height:160px;width:auto;max-width:100%}.objective-hud{top:125px}.location-panel>.panel-content{max-height:calc(90dvh - 80px)}}
@media(max-height:540px) and (orientation:landscape){.fish-adventure{max-width:100%;width:94vw;padding:5px}.lake-playground{grid-template-columns:minmax(0,1fr) 250px}.lake-gameplay{padding:9px 13px;display:grid;grid-template-columns:55px 1fr;gap:5px 12px}.lake-help{grid-column:2}.lake-help .eyebrow{display:none}.lake-help h2{font-size:10px;margin:0 0 7px}.lake-help p{font-size:10px;line-height:1.5;margin:0}.lake-reel-area{grid-column:1;grid-row:1/3;flex-direction:column;gap:4px;min-height:0;margin:0}.vertical-reel{height:150px;width:50px;flex-basis:150px}.catch-status .eyebrow,.catch-status>span:last-child{display:none}.catch-status strong{font-size:8px;min-height:20px}.catch-status progress{height:10px}.lake-gameplay .lake-controls{grid-column:2;min-height:100px;padding:6px 0 0;gap:7px}.lake-primary{font-size:9px;min-height:43px}.lake-key-hint{display:none}.lake-controls .lake-bait{font-size:9px;min-height:22px}.lake-call{font-size:10px;padding:6px}.lake-catch{padding:10px;gap:4px}.lake-catch>.fish-art{width:45px;height:45px}.lake-catch>strong{font-size:10px}}

/* Gameplay labels stay readable when the camera or the display scale changes. */
.city-player small, .city-location > strong, .minimap-heading, .city-minimap > span,
.objective-hud > button, .atlas-guide small {
  font-family: system-ui, sans-serif;
  font-weight: 650;
}
.city-player small { font-size: 11px !important; }
.city-location { left: 22px !important; transform: none !important; }
.city-location > strong { font-size: 11px !important; }
.city-location, #city-profile {
  background: transparent;
  border-color: transparent;
  box-shadow: none;
  text-shadow: 0 1px 2px #101f18, 0 0 4px #101f18;
}
#city-profile:hover { background: transparent; }
#city-profile:hover #city-player-name { text-decoration: underline; }
.minimap-heading, .city-minimap > span { font-size: 10px; }
.minimap-heading { position: absolute; inset: 0 0 auto; background: transparent; text-shadow: 0 1px 2px #101f18, 0 0 4px #101f18; }
.minimap-heading:hover { background: transparent; }
.city-minimap > #city-wayfinding { background: transparent; text-shadow: 0 1px 2px #101f18; }
.city-minimap canvas { height: auto; aspect-ratio: 3 / 2; image-rendering: auto; }
.objective-hud > button { font-size: 12px; }
.atlas-guide small { font-size: 10px; letter-spacing: .035em; }
#city-interact, #city-retry { font: 650 12px/1.4 system-ui, sans-serif; }
body:has(#world-screen:not([hidden])) .toast-root {
  bottom: calc(150px + env(safe-area-inset-bottom, 0px));
  width: min(460px, calc(100vw - 28px));
}
@media (max-width: 720px) {
  .city-player small { font-size: 10px !important; }
  #city-interact, #city-retry { font-size: 11px !important; }
  body:has(#world-screen:not([hidden])) .toast-root {
    bottom: calc(176px + env(safe-area-inset-bottom, 0px));
  }
}
