:root{color-scheme:dark;--bg:#090f19;--panel:#111c2b;--panel-2:#162336;--panel-3:#1c2d42;--line:#28394c;--ink:#eef5f7;--muted:#91a5b6;--mint:#8ce5bf;--gold:#edce8d;--bad:#ffacac;--radius:.8rem;--shadow:0 1.5rem 4rem #0006;font-family:"Segoe UI",system-ui,sans-serif;font-size:clamp(12px,.9vw,22px)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);overflow:hidden}button,input,select{font:inherit}button{cursor:pointer;user-select:none;border:1px solid var(--line);border-radius:.5rem;background:var(--panel-2);color:var(--ink);padding:.65rem .95rem;transition:background .15s,border-color .15s,transform .15s}button:hover:not(:disabled){background:var(--panel-3);border-color:#54728a}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--mint);outline-offset:3px}input,select{width:100%;background:#0c1623;border:1px solid var(--line);border-radius:.5rem;color:var(--ink);padding:.78rem .9rem}input::placeholder{color:#607789}label{display:block;font-size:.85rem;font-weight:600;margin:1rem 0 .45rem}h1,h2,h3,p{margin:0}h2{font-size:1.5rem;font-weight:650;letter-spacing:-.035em}h3{font-size:1.05rem;font-weight:600}p{line-height:1.55}small,.small-text{font-size:.78rem}.hidden{display:none!important}.muted{color:var(--muted)}.eyebrow{color:var(--muted);font-size:.69rem;letter-spacing:.15em;font-weight:700}.primary{background:var(--mint);border-color:var(--mint);color:#103027;font-weight:700}.primary:hover:not(:disabled){background:#b9f1d8;border-color:#b9f1d8}.primary span{float:right}.secondary{background:#182638;font-size:.85rem}.quiet{background:transparent;color:var(--muted);border-color:transparent}.quiet:hover:not(:disabled){color:var(--ink);background:#1c2b3e}.small{font-size:.78rem;padding:.4rem .65rem}.wide{width:100%}.danger{color:var(--bad)}.icon-button{padding:0;width:2.2rem;height:2.2rem;font-size:1.25rem;background:transparent;display:grid;place-items:center}.pill{font-size:.65rem;letter-spacing:.08em;background:#233146;border:1px solid #33445b;border-radius:99px;padding:.3rem .55rem;white-space:nowrap;color:#b2c2d1}.pill.mint{background:#203c37;border-color:#355c4c;color:var(--mint)}kbd{font:600 .68rem "Segoe UI",sans-serif;border:1px solid #45607955;background:#cce7ff09;border-radius:.2rem;padding:.05rem .3rem;color:#a8bccb;vertical-align:middle;line-height:1.5}.emblem{height:2.2rem;width:2.2rem;border:2px solid var(--mint);border-radius:50%;display:block;position:relative;background:linear-gradient(0deg,transparent 46%,var(--mint) 47%,var(--mint) 53%,transparent 54%);flex-shrink:0}.emblem:after{content:"";position:absolute;inset:32%;border-radius:50%;background:var(--bg);border:2px solid var(--mint)}.emblem.large{width:4rem;height:4rem}.brand{display:flex;align-items:center;gap:.85rem;font-size:1.4rem;letter-spacing:.065em;font-weight:450}.brand b{color:var(--mint);font-weight:800}.brand small{display:block;font-size:.47rem;letter-spacing:.24em;margin-top:.25rem;color:var(--muted)}.boot{height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1.5rem}.boot h1{font-size:1.5rem;font-weight:450;letter-spacing:.15em}.boot b{color:var(--mint)}.boot p{color:var(--muted)}.login-screen{height:100dvh;display:grid;grid-template-columns:1.15fr 1fr;background:radial-gradient(ellipse at 10% 20%,#1a3140,transparent 70%),var(--bg);overflow:auto}.login-story{padding:3.5rem 4.5rem;display:flex;flex-direction:column;border-right:1px solid #213243;min-height:48rem}.hero-copy{margin:auto 0 2rem;max-width:36rem;padding-top:3rem}.hero-copy h1{font-size:clamp(3rem,4.8vw,7rem);line-height:1.02;letter-spacing:-.055em;font-weight:550;margin:1.2rem 0 1.4rem}.hero-copy em{font-style:normal;color:var(--mint)}.hero-copy p{color:#b1c0cb;max-width:31rem;font-size:1.03rem}.region-preview{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.region-preview article{border:1px solid #365149;border-radius:.8rem;overflow:hidden;background:#152736;position:relative;height:12.5rem}.region-preview img{width:100%;height:100%;object-fit:cover;image-rendering:pixelated;opacity:.8}.region-preview article>div{position:absolute;inset:auto 0 0;padding:2rem 1rem 1rem;background:linear-gradient(transparent,#07121ded)}.region-preview span{display:block;color:var(--mint);font-size:.65rem;letter-spacing:.17em;margin-bottom:.35rem}.region-preview strong{font-size:1.05rem}.login-foot{margin-top:2rem;display:flex;align-items:center;gap:1rem;font-size:.65rem;color:var(--muted)}.login-side{padding:2.5rem 4.5rem;display:flex;flex-direction:column;gap:1.5rem;max-width:45rem;width:100%;margin:auto;min-height:100vh}.connection-card{border:1px solid var(--line);border-radius:.6rem;display:flex;align-items:center;gap:.8rem;padding:.8rem 1rem;background:#14202ecc}.connection-card strong{font-size:.85rem;font-weight:550}.connection-card small{display:block;color:var(--muted);margin-top:.2rem;font-size:.68rem}.connection-card .icon-button{margin-left:auto}.status-dot{width:.5rem;height:.5rem;border-radius:50%;background:#c89d58;flex-shrink:0;box-shadow:0 0 .75rem #c89d5833}.status-dot.online{background:var(--mint);box-shadow:0 0 .75rem #8ce5bf44}.status-dot.offline{background:var(--bad)}.login-panel{margin:auto 0}.login-panel h2{font-size:2.05rem;margin:.7rem 0 .55rem}.login-panel>.muted{font-size:.88rem;margin-bottom:1.5rem}.segmented{padding:.25rem;background:#0e1826;border:1px solid var(--line);border-radius:.55rem;display:flex;gap:.25rem;margin:1.5rem 0}.segmented button{flex:1;border-color:transparent;background:transparent;color:var(--muted);font-size:.84rem;padding:.6rem}.segmented button.selected{background:#24374a;color:var(--ink)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.starter-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:.35rem}.starter-choice{display:flex;align-items:center;flex-direction:column;padding:.4rem .15rem;font-size:.57rem;background:transparent;border-color:var(--line);gap:.2rem}.starter-choice img{width:2.8rem;height:2.8rem;image-rendering:pixelated}.starter-choice.selected{border-color:var(--mint);background:#213d35;color:var(--mint)}.form-error{color:var(--bad);font-size:.8rem;min-height:1.2rem;margin:.8rem 0}.login-note{font-size:.72rem;color:#8ba0b1;margin:1rem 0}.build-note{padding:1rem;background:#111d2a;border:1px solid var(--line);border-radius:.6rem;display:flex;flex-direction:column;gap:.4rem}.build-note strong{font-size:.78rem;color:var(--gold)}.build-note span{font-size:.7rem;color:var(--muted);line-height:1.55}.game-shell{height:100dvh;display:flex;flex-direction:column}.topbar{height:4.4rem;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 1.6rem;gap:1.5rem;flex-shrink:0;background:#0d1724}.brand.compact{font-size:1.13rem}.brand.compact small{font-size:.43rem}.brand.compact .emblem{width:1.95rem;height:1.95rem}.world-presence,.account-head{display:flex;align-items:center;gap:.8rem;font-size:.78rem}.world-presence{color:#b2c4d2}.account-head{margin-left:auto}.account-head>#latency{color:var(--muted);font-size:.65rem}.account-head>#trainer-name{font-weight:600}.world-layout{display:grid;grid-template-columns:minmax(0,1fr) 21.5rem;gap:1rem;flex:1;min-height:0;padding:1rem 1rem .7rem}.world-column{display:flex;flex-direction:column;min-width:0;min-height:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#0f1a29}.map-toolbar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;gap:1rem;border-bottom:1px solid var(--line);flex-shrink:0}.map-toolbar h2{font-size:1.1rem;margin-top:.25rem}.map-toolbar .eyebrow{font-size:.57rem;color:var(--mint)}.toolbar-actions{display:flex;align-items:center;gap:.5rem;font-size:.78rem}.toolbar-actions .icon-button{height:1.7rem;width:1.7rem;font-size:1.05rem}.viewport{position:relative;flex:1;min-height:10rem;background:#122c2d;overflow:hidden}canvas#world-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;image-rendering:pixelated;outline:none}.world-hint{position:absolute;bottom:.8rem;left:.8rem;background:#07141dcc;border:1px solid #284045;border-radius:.35rem;padding:.4rem .7rem;font-size:.6rem;color:#b6c9d0;display:flex;align-items:center;gap:.45rem;pointer-events:none}.world-hint b{color:#4a7373}.key-cluster{border:1px solid #526768;border-radius:.25rem;padding:.12rem .3rem;letter-spacing:.1em;font-size:.55rem}.map-source{position:absolute;right:.8rem;top:.7rem;font-size:.55rem;letter-spacing:.06em;background:#0a172bbf;border:1px solid #34485288;color:#bccdc8;border-radius:.25rem;padding:.35rem .5rem;pointer-events:none}.map-loading{position:absolute;inset:0;background:#0e1c28dd;display:grid;place-items:center;color:var(--mint);font-size:1.3rem;z-index:3}.chat-panel{height:13rem;min-height:10rem;display:flex;flex-direction:column;background:#0d1723;border-top:1px solid var(--line);flex-shrink:0}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:.25rem .6rem;border-bottom:1px solid #243445}.chat-tabs{display:flex;gap:.25rem}.chat-tabs button{border:0;background:transparent;border-radius:.35rem;font-size:.78rem;padding:.4rem .6rem;color:var(--muted)}.chat-tabs button.selected{background:#1e3440;color:var(--mint)}.chat-tabs small{font-size:.45rem;letter-spacing:.12em;opacity:.6;margin-left:.3rem}.chat-caption{font-size:.58rem;color:#697f92;margin-right:.5rem}.chat-messages{flex:1;min-height:0;overflow-y:auto;padding:.6rem 1rem;font-size:.8rem;line-height:1.55;overflow-wrap:anywhere}.chat-line{display:flex;gap:.55rem;align-items:baseline}.chat-line time{font-size:.58rem;color:#587185;white-space:nowrap}.chat-line .chat-name{font-weight:650;color:var(--mint);flex-shrink:0}.chat-line.trade .chat-name{color:var(--gold)}.chat-line.system{color:#8a9dad;font-style:italic}.chat-panel form{display:flex;align-items:center;padding:.5rem .8rem;border-top:1px solid #1b2c3d;gap:.6rem}.chat-panel form>span{font-size:.55rem;letter-spacing:.08em;color:var(--mint)}.chat-panel input{padding:.35rem .5rem;border:0;border-radius:0;background:transparent;font-size:.8rem;min-width:0}.chat-panel input:focus-visible{outline:none}.sidebar{display:flex;flex-direction:column;gap:.8rem;min-height:0;overflow-y:auto}.trainer-card,.party-panel,.action-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.trainer-card{padding:1rem 1.1rem;background:linear-gradient(120deg,#1b3038,#142032 90%)}.trainer-card-head{display:flex;justify-content:space-between;align-items:center}.trainer-card h2{margin:.7rem 0 1rem;font-size:1.3rem}.trainer-card .pill{font-size:.5rem}.trainer-stats{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.trainer-stats span{display:block;color:var(--muted);font-size:.68rem;margin-bottom:.3rem}.trainer-stats strong{font-size:1rem;font-weight:600}.trainer-stats>div:first-child strong{color:var(--gold)}.party-panel{padding:.9rem .8rem}.section-heading{display:flex;justify-content:space-between;align-items:center}.section-heading h3{font-size:.87rem}.section-heading span{font-size:.7rem}.mini-note{font-size:.65rem;color:#7690a1;margin:.45rem 0 .8rem}.party-card{display:flex;align-items:center;gap:.65rem;padding:.48rem .55rem;border:1px solid #2c4054;border-radius:.55rem;background:#162536;margin:.45rem 0;position:relative}.party-card.lead{border-color:#507061;background:linear-gradient(100deg,#203b37,#172938)}.party-icon{width:3rem;height:3rem;image-rendering:pixelated;object-fit:contain;flex-shrink:0}.party-info{flex:1;min-width:0}.party-name{display:flex;justify-content:space-between;font-size:.8rem;gap:.5rem;align-items:center}.party-name strong{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.party-name span{font-size:.65rem;color:#a8bdc9;white-space:nowrap}.party-meta{display:flex;justify-content:space-between;align-items:center;font-size:.57rem;color:#99afbd;margin:.28rem 0}.party-meta .lead-label{font-size:.48rem;letter-spacing:.12em;color:var(--mint)}.hp-track{height:.28rem;border-radius:3px;background:#0b1723;overflow:hidden}.hp-fill{height:100%;background:var(--mint);width:100%;transition:width .25s}.hp-fill.low{background:#ffba87}.hp-fill.critical{background:#f38c8c}.xp-track{height:2px;margin-top:3px;background:#0c1825;overflow:hidden}.xp-fill{height:100%;background:#73bcd5}.party-empty{font-size:.65rem;color:#577083;padding:.7rem;border:1px dashed #283b4e;border-radius:.45rem;margin:.4rem 0;text-align:center}.party-panel>.quiet{font-size:.7rem;margin-top:.4rem}.action-panel{padding:.65rem}.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}.action-grid .secondary{font-size:.69rem;padding:.65rem .3rem}.utility-row{display:flex;align-items:center;justify-content:space-between;margin-top:.5rem}.utility-row .small{font-size:.64rem;padding:.4rem .35rem}.alpha-note{margin-top:auto;padding:.5rem .65rem;color:#657c8f}.alpha-note .eyebrow{font-size:.5rem;color:#99a083}.alpha-note p{font-size:.62rem;margin-top:.4rem}.statusbar{display:flex;align-items:center;justify-content:space-between;color:#5d788d;font-size:.53rem;letter-spacing:.06em;gap:1rem;padding:.2rem 1.3rem .65rem;flex-shrink:0}.statusbar>span:first-child{color:#7ba48f}.context-menu{position:fixed;min-width:12rem;max-width:19rem;background:#152537;border:1px solid #456075;border-radius:.65rem;padding:.4rem;box-shadow:var(--shadow);z-index:150}.context-menu .menu-title{padding:.55rem .65rem .65rem;border-bottom:1px solid var(--line);font-size:.83rem;color:var(--mint);margin-bottom:.3rem;overflow-wrap:anywhere}.context-menu button{display:block;width:100%;text-align:left;font-size:.8rem;background:transparent;border:0}.toast-stack{position:fixed;right:1.5rem;top:5rem;z-index:150;display:flex;flex-direction:column;gap:.65rem;width:min(26rem,80vw);pointer-events:none}.toast{background:#1a3240f5;border:1px solid #4d736d;border-left:3px solid var(--mint);box-shadow:0 .5rem 2rem #0005;padding:.9rem 1rem;border-radius:.5rem;font-size:.85rem;line-height:1.45;overflow-wrap:anywhere;animation:appear .2s ease-out}.toast.error{border-color:#865858;border-left-color:var(--bad);background:#3b242dfa}.toast.warn{border-left-color:var(--gold)}@keyframes appear{from{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:none}}dialog{background:#101d2c;border:1px solid #3a536a;border-radius:1rem;color:var(--ink);padding:0;width:min(54rem,91vw);max-height:90dvh;box-shadow:0 2rem 7rem #000b;overflow:hidden}dialog::backdrop{background:#020711bb;backdrop-filter:blur(5px)}dialog[open]{display:flex;flex-direction:column}.modal-header{padding:1.25rem 1.5rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:1rem;background:#152437;flex-shrink:0}.modal-header h2{margin-top:.4rem;font-size:1.4rem}#modal-body{padding:1.3rem 1.5rem;overflow-y:auto;min-height:0}.modal-actions{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1.2rem;flex-wrap:wrap}.modal-description{color:var(--muted);font-size:.85rem;margin-bottom:1rem;white-space:pre-line}.content-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:.7rem}.atlas-controls{display:flex;gap:.6rem;margin-bottom:1rem}.atlas-controls input{flex:2;min-width:0}.atlas-controls select{flex:1}.map-card{padding:.75rem;text-align:left;display:flex;flex-direction:column;gap:.4rem;min-height:5.5rem}.map-card .eyebrow{font-size:.55rem}.map-card strong{font-size:.83rem;font-weight:550}.map-card small{font-size:.63rem;color:var(--muted)}.map-card.featured{border-color:#517362;background:#1c3733}.collection-card{display:flex;flex-direction:column;align-items:center;padding:.8rem;border:1px solid var(--line);border-radius:.6rem;background:#162436;gap:.4rem}.collection-card img{height:4.3rem;width:4.3rem;object-fit:contain;image-rendering:pixelated}.collection-card strong{font-size:.85rem}.collection-card>span{font-size:.7rem;color:var(--muted)}.collection-card .hp-track{width:100%}.collection-card .row{display:flex;gap:.4rem;width:100%}.collection-card button{font-size:.65rem;padding:.4rem;flex:1}.item-row{padding:1rem;background:#182a3a;border:1px solid var(--line);border-radius:.6rem;display:flex;align-items:center;gap:1rem;margin:.6rem 0}.item-row>div:first-child{flex:1}.item-row h3{font-size:.9rem}.item-row p{font-size:.72rem;color:var(--muted);margin-top:.35rem}.item-actions{display:flex;gap:.4rem}.item-actions button{font-size:.72rem;padding:.5rem}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:.9rem}.help-grid>div{background:#192b3c;padding:1rem;border:1px solid var(--line);border-radius:.5rem}.help-grid h3{margin-bottom:.5rem}.help-grid p{font-size:.8rem;color:var(--muted)}.trade-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.trade-side{padding:1rem;background:#162839;border:1px solid var(--line);border-radius:.7rem}.trade-side h3{font-size:.94rem;margin-bottom:.6rem}.trade-offer{min-height:7rem}.trade-offer .offer-mon{display:flex;gap:.5rem;align-items:center;padding:.25rem;font-size:.8rem}.offer-mon img{height:2.5rem;width:2.5rem;image-rendering:pixelated}.offer-item{font-size:.75rem;color:var(--gold);margin:.35rem 0}.trade-status{border-top:1px solid var(--line);margin-top:.8rem;padding-top:.6rem;font-size:.67rem;color:var(--mint)}.trade-editor{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line)}.trade-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.5rem;margin:.6rem 0}.trade-picker label{margin:0;font-size:.72rem;display:flex;gap:.5rem;align-items:center;padding:.5rem;background:#1b2c3d;border-radius:.4rem}.trade-picker input{width:auto}.trade-numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem}.trade-numbers label{font-size:.68rem;margin:.25rem 0}.trade-numbers input{padding:.45rem;font-size:.8rem}.digest-note{font-size:.6rem;color:#829ba9;margin-top:1rem;overflow-wrap:anywhere}.trade-warning{border:1px solid #665d45;background:#352f22;border-radius:.5rem;color:var(--gold);padding:.75rem;font-size:.75rem;line-height:1.5;margin-bottom:1rem}#battle-dialog{width:min(65rem,94vw);padding:0}#battle-content{overflow-y:auto;min-height:0}.battle-head{padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;background:#182638;border-bottom:1px solid var(--line)}.battle-head h2{font-size:1.05rem;margin-top:.3rem}.battle-head>.pill{color:var(--gold)}.battle-stage{height:23rem;min-height:15rem;position:relative;overflow:hidden;background:radial-gradient(ellipse at 72% 50%,#90ba8b 0%,#3f786855 22%,transparent 50%),linear-gradient(#b5d7b6 0%,#cae2c2 43%,#699d73 44%,#aac391 73%,#547d62 100%)}.battle-stage:before,.battle-stage:after{content:"";position:absolute;border-radius:50%;background:#799769;box-shadow:0 .25rem 0 #56735255}.battle-stage:before{width:34%;height:13%;left:7%;bottom:4%}.battle-stage:after{width:27%;height:10%;right:11%;top:48%}.battle-sprite{position:absolute;width:13rem;height:13rem;object-fit:contain;image-rendering:pixelated;z-index:1}.battle-sprite.you{left:7%;bottom:0;width:15rem;height:15rem}.battle-sprite.enemy{right:13%;top:3%}.combat-card{position:absolute;background:#0b1a29ed;border:1px solid #91b09a99;box-shadow:0 .5rem 1.5rem #10212144;border-radius:.6rem;padding:.9rem 1rem;width:39%;z-index:2}.combat-card.you{left:3%;top:8%}.combat-card.enemy{right:3%;bottom:8%}.combat-card .party-name{font-size:1rem}.combat-card .party-name span{font-size:.8rem}.combat-card .party-meta{font-size:.7rem;margin:.5rem 0}.combat-card .hp-track{height:.38rem}.battle-controls{display:grid;grid-template-columns:1.05fr 1fr;gap:1.1rem;padding:1.2rem 1.4rem;background:#111f2e}.battle-log{font-size:.8rem;color:#b4c5d2;line-height:1.7;max-height:15rem;overflow-y:auto;background:#0a1623;border:1px solid #24394d;border-radius:.5rem;padding:.8rem 1rem}.move-grid{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}.move-button{text-align:left;padding:.75rem;background:#1a3043}.move-button strong{display:block;font-size:.85rem;font-weight:600}.move-button small{display:flex;justify-content:space-between;margin-top:.6rem;color:var(--muted);font-size:.65rem}.battle-options{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.65rem}.battle-options button,.battle-options select{font-size:.72rem;padding:.5rem .65rem}.battle-options select{flex:1;min-width:6rem;width:auto}.battle-wait{padding:.75rem;background:#213a38;border:1px solid #496b56;border-radius:.5rem;color:var(--mint);font-size:.83rem}.battle-result{font-size:1.2rem;color:var(--mint);margin-bottom:.8rem}.disconnect-overlay{position:fixed;inset:0;z-index:200;background:#020711d9;backdrop-filter:blur(6px);display:grid;place-items:center}.disconnect-card{padding:2rem;border:1px solid #405a70;background:#122234;border-radius:1rem;max-width:31rem;box-shadow:var(--shadow)}.disconnect-card h2{margin:.8rem 0 1rem}.disconnect-card p{font-size:.88rem;margin:1rem 0}.disconnect-card .primary{margin-top:1rem}*{scrollbar-width:thin;scrollbar-color:#39516a #101d2d}
@media(max-width:1150px){.login-story{padding:2.5rem}.login-side{padding:2rem 2.5rem}.world-layout{grid-template-columns:minmax(0,1fr) 19.5rem;gap:.6rem;padding:.6rem}.topbar{padding:0 1rem;gap:.8rem}.world-presence #world-title{display:none}.world-hint{font-size:.53rem}.chat-panel{height:12rem}.region-preview article{height:11rem}.statusbar{font-size:.48rem}.sidebar{gap:.6rem}.alpha-note{display:none}}
@media(max-height:800px){.chat-panel{height:10.5rem;min-height:8rem}.login-story{min-height:42rem}.login-side{padding-top:1.5rem;padding-bottom:1.5rem;gap:1rem}.hero-copy{padding-top:2rem}.login-panel h2{font-size:1.8rem}.build-note{padding:.7rem}.party-card{padding:.3rem .45rem}.party-empty{padding:.45rem}.trainer-card{padding:.8rem}.trainer-card h2{margin:.5rem 0 .7rem}.alpha-note{display:none}.battle-stage{height:19rem}.battle-log{max-height:12rem}}
@media(max-width:850px){.login-screen{grid-template-columns:1fr}.login-story{display:none}.login-side{max-width:38rem}.world-layout{grid-template-columns:minmax(0,1fr) 17rem}.world-hint{display:none}.topbar{height:3.9rem}.world-presence{display:none}.statusbar>span:nth-child(2){display:none}.toolbar-actions #coords{display:none}.help-grid{grid-template-columns:1fr}.battle-controls{grid-template-columns:1fr}.battle-log{max-height:6rem}.trade-grid{gap:.5rem}.battle-stage{height:17rem}.battle-sprite{width:10rem;height:10rem}.battle-sprite.you{width:12rem;height:12rem}}

/* Native-sized controls retain readable labels at high DPI and within battles. */
.sound-entry{display:flex;align-items:center;justify-content:space-between;gap:.7rem;width:100%;padding:.4rem 0;margin:.4rem 0 .8rem;text-align:left;font-size:.75rem}.sound-entry .sound-state{font-size:.62rem;color:var(--muted);font-weight:400}#audio-dialog{width:min(32rem,94vw);max-height:88dvh}.audio-body{padding:1.15rem 1.5rem;overflow-y:auto}.audio-status-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin:.4rem 0 1.3rem;padding:.7rem;border:1px solid var(--line);border-radius:.5rem;background:#162738}.audio-status-row span{font-size:.73rem;color:var(--mint)}.audio-status-row button{font-size:.7rem;white-space:nowrap}.audio-slider{display:grid;grid-template-columns:1fr auto;gap:.4rem .8rem;margin:1rem 0}.audio-slider label{font-size:.82rem;margin:0;color:var(--ink)}.audio-slider output{font-size:.76rem;font-variant-numeric:tabular-nums;color:var(--mint)}.audio-slider input[type=range]{grid-column:1/-1;accent-color:var(--mint);height:1.6rem;padding:0;margin:0;cursor:pointer;border:0;background:transparent}.audio-options{display:flex;flex-direction:column;gap:.65rem;border-top:1px solid var(--line);margin-top:1.1rem;padding-top:1.1rem}.audio-options label{display:flex;align-items:center;gap:.6rem;font-size:.76rem;margin:0;color:var(--ink)}.audio-options input[type=checkbox]{width:1rem;height:1rem;margin:0;accent-color:var(--mint)}#audio-persistence{margin:.95rem 0 .1rem;line-height:1.5}#audio-dialog:focus-visible{outline:2px solid var(--mint)}

/* Adventure journal, field records and Pokémon Center services. */
.pokemon-summary{display:flex;align-items:center;gap:1.5rem;margin-bottom:1.1rem}.pokemon-summary>img{width:7rem;height:7rem;object-fit:contain;image-rendering:pixelated;flex-shrink:0}.pokemon-summary h3{font-size:1.4rem;margin:.35rem 0}.pokemon-summary p{color:var(--muted);font-size:.77rem;margin:.3rem 0}.pokemon-summary+.hp-track{margin-bottom:1.2rem}.growth-panel{border:1px solid #4a6f65;border-radius:.7rem;background:linear-gradient(125deg,#1b3736,#142536);padding:1.15rem;margin-top:1rem}.growth-panel>.eyebrow{color:var(--mint);font-size:.6rem}.growth-panel h3{margin:.55rem 0;font-size:1.05rem}.growth-panel .modal-actions{margin-top:.8rem}.growth-tag{display:block;font-size:.58rem;color:var(--gold);margin-top:.25rem}.evolution-choice{display:flex;align-items:center;gap:1rem}.evolution-choice>img{height:5rem;width:5rem;image-rendering:pixelated;object-fit:contain;flex-shrink:0}.collection-grid{margin-top:.7rem}.empty-state{grid-column:1/-1;text-align:center;padding:2rem 1rem;color:var(--muted);font-size:.85rem;line-height:1.7;border:1px dashed var(--line);border-radius:.7rem;background:#102030}.journal-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.65rem;margin:1.2rem 0 1.6rem}.journal-summary>div{padding:1.1rem;background:#192e3a;border:1px solid #34504f;border-radius:.65rem;text-align:center}.journal-summary strong{display:block;font-size:1.5rem;color:var(--mint);font-weight:650;font-variant-numeric:tabular-nums}.journal-summary span{display:block;color:var(--muted);font-size:.72rem;margin-top:.35rem}.journal-region{margin:1.25rem 0}.journal-region>.section-heading h3{font-size:1rem}.badge-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem;margin-top:.8rem}.badge-card{display:flex;align-items:center;flex-direction:column;padding:.8rem .3rem;gap:.35rem;border:1px solid var(--line);border-radius:.6rem;background:#142230;text-align:center}.badge-card.earned{background:linear-gradient(130deg,#24362d,#1c3039);border-color:#657757}.badge-symbol{height:2.35rem;width:2.35rem;display:grid;place-items:center;font-size:1rem;font-weight:650;color:#7893a3;border:1px solid #466173;border-radius:50%;background:#112131;margin-bottom:.2rem}.earned .badge-symbol{color:var(--gold);border-color:#ad955b;background:#433b24}.badge-card strong{font-size:.74rem;line-height:1.4}.badge-card>span:not(.badge-symbol){color:var(--muted);font-size:.65rem}.badge-card small{color:#678294;font-size:.5rem;letter-spacing:.1em;margin-top:.2rem}.badge-card.earned small{color:var(--mint)}.next-gym{font-size:.75rem;color:var(--mint);border-left:2px solid #5e9b84;padding:.25rem .65rem;margin:.9rem 0}.journal-heading{padding-top:.8rem;border-top:1px solid var(--line);font-size:1.05rem}.goal-card{padding:1rem;margin:.8rem 0;border:1px solid #395266;border-radius:.65rem;background:#17283a}.goal-card.claimed{background:#142731;border-color:#344d4a}.goal-card .section-heading{gap:.6rem}.goal-card .section-heading h3{font-size:.87rem}.goal-card>p{font-size:.77rem;color:var(--muted);line-height:1.6;margin:.55rem 0}.goal-track{height:.3rem;background:#0b1826;border-radius:1rem;overflow:hidden;margin:.8rem 0}.goal-track>div{height:100%;background:var(--mint);transition:width .25s}.goal-reward{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.goal-reward>span{font-size:.72rem;color:var(--gold);line-height:1.5}.goal-reward button{flex-shrink:0}.dex-summary{grid-template-columns:repeat(2,1fr);max-width:25rem;margin:1rem auto 1.4rem}.dex-grid{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr))}.dex-card{display:flex;align-items:center;flex-direction:column;padding:1rem .6rem;gap:.4rem;background:#172b3b;border:1px solid #334c60;min-height:11rem}.dex-card>img{width:4.5rem;height:4.5rem;image-rendering:pixelated;object-fit:contain}.dex-card>strong{font-size:.85rem}.dex-card>span{font-size:.58rem;letter-spacing:.07em}.dex-card>small{font-size:.64rem;color:var(--muted)}.caught-mark{color:var(--mint)}.nurse-care{display:flex;align-items:center;gap:1rem;padding:1rem;background:#342d3a;border:1px solid #785967;border-radius:.65rem}.care-symbol{display:grid;place-items:center;width:2.5rem;height:2.5rem;flex-shrink:0;color:#f4b0c3;border:1px solid #a36b81;border-radius:50%;font-size:1.4rem}.nurse-care h3{font-size:.9rem;margin-bottom:.4rem}.nurse-care p{font-size:.8rem;color:#d0b9c4;line-height:1.6}
@media(max-width:650px){.badge-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.journal-summary{gap:.35rem}.journal-summary>div{padding:.8rem .35rem}.journal-summary strong{font-size:1.1rem}.journal-summary span{font-size:.6rem}.goal-reward{align-items:flex-start;flex-direction:column}.pokemon-summary{gap:.8rem}.pokemon-summary>img{height:5rem;width:5rem}.pokemon-summary h3{font-size:1.1rem}.modal-header{padding:1rem}#modal-body{padding:1rem}.atlas-controls{flex-direction:column}.atlas-controls select,.atlas-controls input{flex:auto}.evolution-choice{gap:.5rem}.growth-panel{padding:.8rem}.growth-panel .move-grid{grid-template-columns:1fr}.game-shell{height:auto;min-height:100dvh}.world-layout{grid-template-columns:minmax(0,1fr)}.world-column{height:75dvh;min-height:32rem}.sidebar{overflow:visible}.topbar{gap:.5rem;padding:0 .65rem}.account-head{gap:.3rem}.account-head>#latency{display:none}.brand.compact{font-size:.9rem}.brand.compact .emblem{display:none}.account-head>#trainer-name{max-width:7rem;overflow:hidden;text-overflow:ellipsis}.map-toolbar{padding:.7rem}.map-toolbar .toolbar-actions{gap:.25rem}.map-toolbar h2{font-size:.95rem}.map-toolbar #atlas-button{font-size:.67rem;padding:.4rem}.statusbar{padding:.6rem;font-size:.5rem}.party-panel{display:block}}
@media(prefers-reduced-motion:reduce){.goal-track>div,.hp-fill{transition:none}.toast{animation:none}}

/* Level-up planning and explicit recovery of forgotten moves. */
.learnset-panel{margin:1.1rem 0;padding:1rem;border:1px solid var(--line);border-radius:.65rem;background:#132332}.learnset-panel>h3{margin:.35rem 0 .6rem}.next-move{font-size:.92rem;font-weight:600;color:var(--mint)}.learnset-table{width:100%;border-collapse:collapse;font-size:.8rem;text-align:left;margin:.6rem 0}.learnset-table th{color:var(--muted);font-size:.68rem;font-weight:600}.learnset-table th,.learnset-table td{padding:.55rem .3rem;border-bottom:1px solid #28394c88}.learnset-table th:first-child,.learnset-table td:first-child{width:4.8rem;white-space:nowrap}.learnset-table td:nth-child(2){font-weight:600}.learnset-status{font-size:.7rem;color:var(--muted)}.learnset-status.known{color:var(--mint)}.learnset-status.pending{color:var(--gold)}.learnset-panel>.mini-note:last-child{margin-bottom:0}.reminder-choices{margin:1rem 0}.reminder-confirmation{margin-top:1.3rem}.reminder-confirmation h3{margin:.5rem 0}.reminder-choices .move-button{text-align:left;min-height:3rem}
@media(max-width:650px){.learnset-panel{padding:.8rem}.learnset-table{font-size:.74rem}.learnset-table th:first-child,.learnset-table td:first-child{width:3.8rem}.learnset-status{font-size:.64rem}.reminder-choices{grid-template-columns:1fr}}

/* Battle feedback uses the original ROM sprites at native pixel filtering. */
.battle-choice-panel{border:0;padding:0;margin:0;min-width:0}.battle-choice-panel:disabled .move-button{opacity:.58}.battle-presentation-status{color:var(--mint);font-size:.75rem;letter-spacing:.025em;margin:0 0 .7rem}.battle-sprite{will-change:transform;transform-origin:50% 75%}.battle-float{position:absolute;z-index:5;pointer-events:none;display:flex;align-items:center;flex-direction:column;gap:.1rem;padding:.35rem .65rem;border-radius:.55rem;background:#101b26eb;border:1px solid #ffd4bc77;color:#fff0dd;box-shadow:0 .35rem .85rem #09231f44;min-width:4rem;max-width:13rem;text-align:center;text-shadow:0 1px 2px #000;font-variant-numeric:tabular-nums}.battle-float.you{left:12%;bottom:39%}.battle-float.enemy{right:14%;top:14%}.battle-float strong{font-size:1.75rem;line-height:1.15;font-weight:800}.battle-float span{font-size:.7rem;line-height:1.35;font-weight:650}.battle-float.super{color:#ffe4a2;border-color:#f7cd64}.battle-float.resisted,.battle-float.immune{color:#d2e3f6;border-color:#82aaca}.battle-float.recover{color:#a7f3d0;border-color:#83dab8}.battle-float.move-name{background:#102820de;border-color:#8bcfb780;box-shadow:none;padding:.25rem .6rem}.battle-float.move-name.you{bottom:4%;left:18%}.battle-float.move-name.enemy{top:3%;right:17%}.battle-float.move-name strong{font-size:.74rem;font-weight:650}.battle-float.immune strong,.battle-float.recover strong{font-size:1rem}.battle-float.normal strong{font-size:1.55rem}
@media(prefers-reduced-motion:reduce){.battle-sprite,.battle-float{animation:none!important;transition:none!important;will-change:auto}.combat-card .hp-fill{transition:none}}
@media(max-width:650px){.battle-float{max-width:10rem;padding:.3rem .5rem}.battle-float strong{font-size:1.35rem}.battle-float.enemy{right:9%;top:12%}.battle-float.you{left:10%;bottom:36%}}

/* Owner-only HM field progress, matching the adventure panels. */
.field-move-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;padding:.8rem 0;border-bottom:1px solid var(--line,#ffffff18)}
.field-move-row p{flex-basis:100%;margin:0;color:var(--muted,#a5b4c6)}
.field-move-note{padding:.9rem 1rem;border-left:3px solid var(--accent,#71dcb2);background:#71dcb20a;border-radius:.4rem;color:var(--muted,#a5b4c6);line-height:1.55}
.cut-tree-button:disabled{opacity:.48;cursor:not-allowed;filter:grayscale(.8);box-shadow:none}

/* Variety identity is cosmetic; bounded images and layout preserve battle usability. */
/* Only the player's slot on front art is flipped to face the enemy; a real back sprite already faces it. */
.battle-sprite.you.front-art{transform:scaleX(-1)}
.battle-sprite{object-fit:contain;max-width:42%;max-height:86%;image-rendering:pixelated}
/* Ancient/metallic/mystic/shadow only publish front art, and the player's slot draws the plain
   back sprite (anim-back) so the partner faces the enemy. The colour therefore rides on a filter
   fitted against each variety's own front art, so the partner keeps the variety palette while the
   shiny - which does publish a back animation - stays untouched. */
.battle-sprite.you:not(.front-art)[data-variety="ancient"]{filter:sepia(1) saturate(2.97) hue-rotate(-13deg) brightness(.57)}
.battle-sprite.you:not(.front-art)[data-variety="metallic"]{filter:sepia(.25) saturate(.4) hue-rotate(-5deg) brightness(.98)}
.battle-sprite.you:not(.front-art)[data-variety="mystic"]{filter:saturate(.5) hue-rotate(4deg) brightness(1.33)}
.battle-sprite.you:not(.front-art)[data-variety="shadow"]{filter:sepia(1) saturate(.9) hue-rotate(-157deg) brightness(.62)}
.variety-badge,.dex-variety{display:inline-flex;align-items:center;gap:.25em;color:var(--variety-color,var(--ink));border:1px solid currentColor;border-radius:999px;font-size:.66rem;line-height:1.3;padding:.18rem .48rem;max-width:100%;overflow-wrap:anywhere}
.variety-badge{align-self:center;background:#0c1827}
.dex-varieties{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.45rem}
.dex-variety{opacity:.72;font-size:.6rem}.dex-variety.owned{opacity:1;background:#152539}
.collection-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(8rem,.5fr);gap:.6rem;align-items:center}
.collection-controls input,.collection-controls select{min-width:0;width:100%}
.variety-art-note{border-left:3px solid #e1b65b;padding:.6rem .8rem;color:var(--muted);font-size:.78rem;line-height:1.5}
.party-name strong{min-width:0;overflow-wrap:anywhere}.party-name>span{white-space:nowrap}
.combat-card .party-name{gap:.4rem}.combat-card .party-name strong{line-height:1.25}
@media(max-width:520px){.collection-controls{grid-template-columns:1fr}.combat-card .party-name{flex-wrap:wrap}}

.collection-card .variety-badge,.dex-card .dex-variety{color:var(--variety-color,var(--ink))}

.ai-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-bottom:1rem}.ai-kpis>div{padding:.9rem;border:1px solid var(--line);border-radius:.65rem;background:#132534}.ai-kpis span{display:block;color:var(--muted);font-size:.58rem;letter-spacing:.08em}.ai-kpis strong{display:block;margin-top:.3rem;font-size:1.05rem;color:var(--mint)}.ai-tabs{margin:.6rem 0 1rem}.ai-list{display:grid;gap:.55rem;max-height:60vh;overflow:auto;padding-right:.25rem}.ai-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border:1px solid #314b5d;border-radius:.65rem;background:#142737}.ai-row p{margin:.25rem 0;color:#c5d2dc;font-size:.76rem}.ai-row small{color:var(--muted)}.rating-delta{font-weight:700}.rating-delta.up{color:var(--mint)}.rating-delta.down{color:#f3a7a7}.ladder-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto}.rank-number{font-weight:700;color:var(--gold);min-width:2.7rem}.rating-number{font-variant-numeric:tabular-nums}.menu-meta{padding:.35rem .65rem;color:var(--muted);font-size:.7rem}@media(max-width:650px){.ai-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.ladder-row{grid-template-columns:auto minmax(0,1fr) auto}.ladder-row>.rating-number{display:none}}
.ai-human-pill{display:inline-flex;align-items:center;justify-content:center;min-width:4.2rem;padding:.38rem .62rem;border:1px solid var(--line);border-radius:999px;font-size:.68rem;font-weight:800;letter-spacing:.08em;opacity:.78}

/* Item actions stay within the existing dialog and viewport. No asset sizing changes. */
.bag-items{display:grid;gap:.75rem;margin-top:1rem}.item-row>div:first-child{min-width:0}.item-row p{overflow-wrap:anywhere}.item-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.battle-item-detail{flex:1 1 100%;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.battle-item-detail .mini-note{flex-basis:100%;margin:.25rem 0}.battle-item-detail:empty{display:none}.battle-item-detail select{max-width:100%;min-width:0}.tera-option{display:flex;align-items:center;gap:.5rem;margin:.5rem 0}.tera-option input{width:auto}.bag-items .pill{white-space:normal}#modal-body>label{display:grid;gap:.5rem;margin:.75rem 0}#modal-body>label select,#modal-body>input{width:100%;max-width:100%}

/* Bag: native item artwork, stable pocket navigation and one clear action area. */
#modal[data-view="bag"] .modal-header{background:linear-gradient(115deg,#1b343d,#152437 65%)}
#modal[data-view="bag"] #modal-body{padding:1.2rem 1.4rem 1.4rem;background:radial-gradient(ellipse at 4% 0%,#17383344,transparent 56%),#101d2c}
.bag-summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.bag-kicker{color:#8ce5bf;font-size:.57rem;letter-spacing:.15em;margin:0 0 .5rem}.bag-summary-copy>p:last-child{font-size:.83rem;color:#9ab1c1;margin:0}.bag-summary-copy strong{color:#e2edf4;font-weight:600}.bag-wallet{text-align:right}.bag-wallet>span{display:block;font-size:.54rem;letter-spacing:.13em;color:#9bb2c2}.bag-wallet>strong{display:block;font-size:1.3rem;color:#f3d184;font-variant-numeric:tabular-nums;margin-top:.25rem;white-space:nowrap}
.bag-status{display:flex;justify-content:space-between;gap:.5rem 1rem;flex-wrap:wrap;align-items:center;margin:0 0 1.25rem;font-size:.68rem;color:#b1c1ce}.bag-location{display:flex;align-items:center;gap:.5rem}.bag-status-dot{height:.38rem;width:.38rem;border-radius:50%;background:#6d8495}.bag-location.available{color:#a3e7c9}.bag-location.available .bag-status-dot{background:#8ce5bf;box-shadow:0 0 .5rem #8ce5bf33}.bag-repel{color:#c4d0f3;background:#30436155;border:1px solid #51668177;border-radius:999px;padding:.2rem .55rem;font-variant-numeric:tabular-nums}
.bag-pockets{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.4rem;margin:0 0 1rem}.bag-pocket{display:flex;align-items:center;justify-content:center;gap:.4rem;min-height:3.3rem;padding:.6rem .3rem;background:#152738;border:1px solid #304557;font-size:.72rem;color:#a9bfce;font-weight:500}.bag-pocket.selected{border-color:#74b79a;color:#d1f8e5;background:linear-gradient(120deg,#2b4941,#203d3a);box-shadow:inset 0 1px #b4ffdb12}.bag-pocket-symbol{display:grid;place-items:center;width:1.5rem;height:1.5rem;flex:none;border:1px solid #4f6d7488;border-radius:.45rem;font-size:.63rem;color:#abd6c3;background:#18333a66}.bag-pocket-count{font-variant-numeric:tabular-nums;color:#859fae;font-size:.62rem;margin-left:.1rem}.bag-pocket.selected .bag-pocket-count{color:#a6d5bf}
.bag-toolbar{display:flex;gap:.6rem;align-items:center}.bag-search-wrap{position:relative;flex:1;min-width:9rem;display:flex;align-items:center}.bag-search-wrap input{width:100%;padding:.72rem 3.7rem .72rem 2.2rem;font-size:.78rem;background:#0d1b29;border-color:#354c5f;min-width:0}.bag-search-symbol{position:absolute;left:.75rem;color:#93b0c0;font-size:1.3rem;line-height:1;pointer-events:none}.bag-search-clear{position:absolute;right:.35rem;font-size:.65rem;padding:.3rem;color:#a2bfcd}.bag-search-clear:disabled{visibility:hidden}.bag-toolbar>select{width:auto;max-width:13rem;font-size:.72rem;padding:.73rem .6rem;background:#152738;flex-shrink:0}.bag-modes{display:flex;padding:.25rem;border:1px solid #354b5f;border-radius:.55rem;background:#0d1a28;flex-shrink:0;gap:.2rem}.bag-modes button{white-space:nowrap;padding:.48rem .65rem;background:transparent;border:1px solid transparent;font-size:.72rem;color:#9fb4c2}.bag-modes button.selected{background:#2a4051;border-color:#476070;color:#ecf5fa}
.bag-result-count{font-size:.65rem;color:#a2b8c8;margin:.8rem 0 .65rem;min-height:1em}.bag-workspace{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:1rem;align-items:stretch;min-height:25rem}.bag-list-panel{border:1px solid #314a5d;background:#0c1a27;border-radius:.8rem;overflow:hidden;min-width:0}.bag-list-heading{display:flex;justify-content:space-between;gap:1rem;padding:.72rem 1rem;color:#9bb4c6;font-size:.54rem;letter-spacing:.13em;border-bottom:1px solid #2d4455;background:#152636}.bag-list{display:flex;flex-direction:column;gap:.3rem;overflow-y:auto;max-height:32rem;min-height:12rem;padding:.5rem;scrollbar-gutter:stable}.bag-list-item{position:relative;display:flex;align-items:center;gap:.75rem;width:100%;flex-shrink:0;padding:.68rem .75rem;text-align:left;border:1px solid transparent;border-radius:.55rem;background:transparent;min-height:4.25rem}.bag-list-item:hover{background:#1b3041;border-color:#476170}.bag-list-item.selected{background:linear-gradient(95deg,#23423f,#1b343b);border-color:#639c87;box-shadow:inset .18rem 0 #8ce5bf}.bag-list-copy{flex:1;min-width:0}.bag-list-copy strong{display:block;font-size:.84rem;color:#e9f2f8;font-weight:600;line-height:1.3;overflow-wrap:anywhere}.bag-list-copy small{display:block;font-size:.6rem;color:#94afc0;margin-top:.35rem;line-height:1.4}.bag-list-item.selected .bag-list-copy small{color:#a8cebd}.bag-quantity{min-width:3rem;text-align:right;font-size:.76rem;font-weight:600;color:#b4cbda;font-variant-numeric:tabular-nums;white-space:nowrap}
.bag-icon{display:grid;place-items:center;width:2.8rem;height:2.8rem;flex-shrink:0;border:1px solid #48667966;border-radius:.6rem;background:radial-gradient(circle,#38516388,#23364988);font-size:.8rem;font-weight:700;color:#bed8dd}.bag-icon>img{width:2.4rem;height:2.4rem;object-fit:contain;image-rendering:pixelated}.bag-icon.large{width:5.1rem;height:5.1rem;border-radius:1rem;background:radial-gradient(circle,#41677377,#20374799);border-color:#6e99a155;font-size:1.4rem;box-shadow:inset 0 1px #b6e5e510}.bag-icon.large>img{width:4.5rem;height:4.5rem}.bag-icon.pocket-berries{background:radial-gradient(circle,#435a3e99,#213b34);color:#c3ddac}.bag-icon.pocket-balls{background:radial-gradient(circle,#633b4988,#283543);color:#f1bec4}.bag-icon.pocket-machines{background:radial-gradient(circle,#354a7199,#25334b);color:#bfcaed}.bag-icon.pocket-key{background:radial-gradient(circle,#5f553688,#34392f);color:#e4d59c}
.bag-detail{display:flex;flex-direction:column;align-items:stretch;min-width:0;padding:1.35rem 1.4rem;border:1px solid #3c5669;border-radius:.8rem;background:linear-gradient(145deg,#203848 0%,#182c3d 50%,#172938 100%);box-shadow:inset 0 1px #a3cbd512}.bag-detail-top{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.1rem}.bag-detail-stock{text-align:right;color:#93b1c4}.bag-detail-stock strong{display:block;color:#edf7fd;font-size:2rem;line-height:1.1;font-weight:650;font-variant-numeric:tabular-nums}.bag-detail-stock span{display:block;font-size:.55rem;letter-spacing:.16em;margin-top:.3rem}.bag-item-tags{display:flex;gap:.4rem;flex-wrap:wrap;margin:0 0 .6rem}.bag-item-tags span{display:inline-flex;font-size:.56rem;line-height:1.3;letter-spacing:.035em;color:#aed1c6;border:1px solid #5d887d77;border-radius:999px;padding:.25rem .5rem;background:#162f3288}.bag-detail>h3{font-size:1.55rem;line-height:1.2;letter-spacing:-.025em;font-weight:600;overflow-wrap:anywhere;margin:0 0 .7rem}.bag-item-description{font-size:.82rem;line-height:1.75;color:#c0d2de;margin:0 0 1.15rem;white-space:pre-line}.bag-usage-note{align-self:flex-start;border:1px solid #607c9499;background:#233c5188;color:#c4deed;font-size:.57rem;letter-spacing:.07em;border-radius:.4rem;padding:.5rem .65rem;margin:0 0 .9rem;line-height:1.5}.bag-context-note{font-size:.72rem;line-height:1.65;color:#b0c7d3;border-left:2px solid #729285;padding:.25rem .75rem;margin:0 0 1rem}.bag-detail-actions{display:flex;align-items:stretch;gap:.55rem;margin-top:auto}.bag-detail-actions:empty{display:none}.bag-detail-actions>button{flex:1;min-height:2.9rem;font-size:.77rem;padding:.7rem .8rem}.bag-detail-actions>button:first-child:not(:disabled){border-color:#78b89d;background:#305649;color:#d0f8e2}.bag-value{display:flex;align-items:center;justify-content:space-between;gap:.6rem;border-top:1px solid #49657766;padding-top:.9rem;margin-top:1rem}.bag-value>div>span{display:block;font-size:.5rem;letter-spacing:.1em;color:#9ab4c6}.bag-value strong{font-size:.79rem;font-weight:550;color:#e7d49e;display:block;margin-top:.25rem}.bag-value>button{font-size:.75rem;padding:.5rem .75rem}.bag-no-sale{font-size:.62rem;color:#9eb3c4;margin:1rem 0 0;line-height:1.5}.bag-purchase{border-top:1px solid #49657766;margin-top:1rem;padding-top:1rem}.bag-purchase-heading{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.65rem}.bag-purchase-heading span{font-size:.53rem;letter-spacing:.1em;color:#a5becc}.bag-purchase-heading strong{font-size:.75rem;color:#ecd497;font-weight:550}.bag-buy-controls{display:flex;gap:.7rem;align-items:flex-end}.bag-buy-controls>label{display:flex;flex-direction:column;gap:.3rem;margin:0;color:#acc4d2;font-size:.6rem;width:5.2rem;flex-shrink:0}.bag-buy-controls input{font-size:.83rem;padding:.65rem .55rem;text-align:center;font-variant-numeric:tabular-nums;width:100%;height:2.8rem}.bag-buy-action{flex:1}.bag-buy-action button{width:100%;min-height:2.8rem;font-size:.76rem;padding:.65rem}.bag-purchase>p{font-size:.64rem;color:#adc1ce;margin:.6rem 0 0;line-height:1.5}.bag-list-empty{display:grid;place-items:center;align-content:center;min-height:15rem;padding:1.5rem;text-align:center;gap:.65rem}.bag-list-empty strong{font-size:.88rem;color:#c4d6e1}.bag-list-empty p{font-size:.74rem;line-height:1.6;color:#8faabc}.bag-list-empty button{font-size:.75rem}.bag-detail-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;margin:auto;max-width:22rem;padding:2rem .5rem;gap:1rem}.bag-detail-empty>span{font-size:3rem;color:#80a89e;line-height:1}.bag-detail-empty h3{font-size:1.1rem;color:#cfe1e8;font-weight:550}.bag-detail-empty p{font-size:.78rem;line-height:1.7;color:#a3becc}.bag-move{display:flex;align-items:center;flex-wrap:wrap;gap:.45rem;padding:.85rem;margin:0 0 1rem;background:#11283799;border:1px solid #3f5b72;border-radius:.6rem}.bag-move>strong{font-size:.8rem;flex:1}.bag-move>span{font-size:.57rem;text-transform:uppercase;color:#acd3ee;letter-spacing:.07em}.bag-move>div{display:flex;justify-content:space-between;flex-basis:100%;gap:.5rem;margin-top:.5rem;font-size:.48rem;color:#9fbbc9;letter-spacing:.04em}.bag-move b{font-size:.7rem;color:#ddebf2;display:block;margin-top:.22rem;letter-spacing:0;font-variant-numeric:tabular-nums}
#modal[data-view="bag"] :is(button,input,select):focus-visible{outline:2px solid #c5fbe3;outline-offset:3px}#modal[data-view="bag"] button:disabled{opacity:.43;cursor:not-allowed}.bag-action-intro{display:flex;align-items:center;gap:1rem;padding:1rem;border:1px solid #3a566b;background:#193042;border-radius:.7rem;margin-bottom:1.2rem}.bag-action-intro p{font-size:.8rem;line-height:1.65;color:#bdd1dd;margin:0}.bag-action-intro strong{color:#dcf1e7;font-size:.71rem;display:block;margin-top:.5rem}.item-pending-note{font-size:.73rem;color:#b8e2d0;line-height:1.6;padding:.7rem .9rem;border:1px solid #557f6f;border-radius:.5rem;background:#243f37;margin:.8rem 0}
@media(min-width:1500px){.bag-list{max-height:38rem}}
@media(max-width:1000px){.bag-pockets{gap:.3rem}.bag-pocket{font-size:.66rem;gap:.3rem}.bag-pocket-symbol{display:none}.bag-toolbar{flex-wrap:wrap}.bag-search-wrap{flex:1 1 60%}.bag-toolbar>select{max-width:none;flex:1 1 25%}.bag-modes{margin-left:auto}.bag-detail{padding:1.1rem}.bag-workspace{gap:.75rem}.bag-list-item{padding:.65rem .55rem;gap:.5rem}.bag-list-copy strong{font-size:.77rem}.bag-quantity{min-width:2.5rem;font-size:.7rem}}
@media(max-width:650px){#modal[data-view="bag"] #modal-body{padding:1rem .75rem}.bag-summary{align-items:flex-start}.bag-summary-copy>p:last-child{font-size:.72rem}.bag-summary-copy>p:last-child>span{display:block;margin-top:.3rem}.bag-wallet>strong{font-size:1.1rem}.bag-kicker{font-size:.47rem;letter-spacing:.1em}.bag-status{font-size:.62rem;margin-bottom:1rem}.bag-pockets{grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem}.bag-pocket{min-height:2.6rem;font-size:.69rem;padding:.5rem .3rem}.bag-pocket-symbol{display:grid;width:1.2rem;height:1.2rem;font-size:.5rem}.bag-toolbar{gap:.5rem}.bag-search-wrap{flex-basis:100%}.bag-toolbar>select{flex:1;max-width:50%;font-size:.67rem}.bag-modes button{font-size:.65rem;padding:.5rem}.bag-workspace{grid-template-columns:minmax(0,1fr);min-height:0}.bag-list{max-height:15rem;min-height:6rem}.bag-list-item{min-height:3.6rem}.bag-list-copy strong{font-size:.82rem}.bag-detail{padding:1.1rem}.bag-detail-top{margin-bottom:.8rem}.bag-detail>h3{font-size:1.35rem}.bag-detail-actions{margin-top:.2rem}.bag-icon.large{width:4.5rem;height:4.5rem}.bag-icon.large>img{width:4rem;height:4rem}.bag-detail-empty{padding:1.4rem .5rem}.bag-list-empty{min-height:8rem;padding:1rem}.bag-icon{width:2.5rem;height:2.5rem}.bag-icon>img{width:2.2rem;height:2.2rem}.bag-result-count{font-size:.6rem}}
@media(max-width:650px){.bag-pocket-symbol>img{width:1.2rem;height:1.2rem}}
@media(forced-colors:active){.bag-pocket.selected,.bag-list-item.selected,.bag-modes button.selected{outline:2px solid Highlight;outline-offset:-2px}.bag-status-dot{background:CanvasText}.bag-icon{border-color:CanvasText}}
.npc-gift{display:flex;align-items:center;gap:.85rem;padding:1rem;margin:.7rem 0;border:1px solid #3b5869;border-radius:.65rem;background:#19313f}.npc-gift>div{flex:1;min-width:0}.npc-gift strong{font-size:.85rem}.npc-gift p{font-size:.73rem;line-height:1.5;color:#a9c3d0;margin:.3rem 0 0}.npc-gift>button{font-size:.75rem}@media(max-width:520px){.npc-gift{flex-wrap:wrap}.npc-gift>button{width:100%}}
.coin-balance{border:1px solid #766c48;background:linear-gradient(120deg,#3d3b2c,#283540);border-radius:.7rem;padding:1.2rem;text-align:center;margin-bottom:1rem}.coin-balance span{display:block;color:#cebd86;font-size:.58rem;letter-spacing:.13em}.coin-balance strong{display:block;color:#f4dda0;font-size:1.65rem;margin-top:.35rem;font-variant-numeric:tabular-nums}.coin-prizes-title{margin:1.6rem 0 .8rem;font-size:1rem}.coin-prize{display:flex;align-items:center;gap:.8rem;padding:.85rem;border:1px solid #3e566a;border-radius:.65rem;margin:.5rem 0;background:#192e3e}.coin-prize>div{flex:1;min-width:0}.coin-prize strong{font-size:.84rem}.coin-prize p{font-size:.73rem;color:#dcc895;margin:.25rem 0}.coin-prize small{font-size:.63rem;color:#a2bccb}.coin-prize button{font-size:.73rem}.coin-pokemon{width:2.8rem;height:2.8rem;object-fit:contain;image-rendering:pixelated}
.bag-icon>img{width:24px;height:24px}.bag-icon.large>img{width:48px;height:48px}.bag-pocket-symbol>img{width:1.5rem;height:1.5rem;object-fit:contain;image-rendering:pixelated}.hud-icon>img,.hud-sprite{width:24px;height:24px;object-fit:contain;image-rendering:pixelated;pointer-events:none}.held-mail{margin:1rem 0;padding:1rem 1.1rem;border-left:3px solid #c8b585;background:#3a3b2c55;border-radius:.4rem}.held-mail>span{font-size:.55rem;letter-spacing:.12em;color:#d7c58d}.held-mail>p{font-size:.85rem;line-height:1.75;color:#e1e5d6;white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0 0}.safari-summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem 1rem;border:1px solid #648862;background:#29463a;border-radius:.6rem;margin-bottom:.7rem}.safari-summary>span{font-size:.59rem;letter-spacing:.13em;color:#bbe0b6}.safari-summary>strong{font-size:.88rem;color:#e6f5d6}.safari-actions>button{min-height:3rem}.safari-stage .battle-sprite.you,.safari-stage .combat-card.you{display:none}.safari-stage-label{position:absolute;left:8%;bottom:15%;padding:1rem 1.4rem;color:#cae5c4;font-size:.6rem;letter-spacing:.13em;background:#12291ddf;border:1px solid #99c28e88;border-radius:.65rem}.safari-stage-label>strong{font-size:1.2rem;display:block;letter-spacing:0;margin-top:.5rem;color:#e4f8dd}

/* Touch joystick, map fullscreen and speak bubbles (mobile-first, additive). */
.joystick{position:absolute;left:1rem;bottom:1rem;width:8.5rem;height:8.5rem;z-index:6;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;opacity:.92}
.joystick.hidden{display:none}
.joystick-base{position:absolute;inset:0;border-radius:50%;border:1px solid #6fd3a966;background:radial-gradient(circle at 50% 45%,#183a38cc,#0c1e26b3);box-shadow:inset 0 0 1.4rem #0007,0 .2rem 1rem #0006}
.joystick-base:before{content:"";position:absolute;inset:26%;border-radius:50%;border:1px dashed #6fd3a933}
.joystick-knob{position:absolute;left:50%;top:50%;width:3.4rem;height:3.4rem;margin:-1.7rem 0 0 -1.7rem;border-radius:50%;display:grid;place-items:center;font-size:.95rem;color:#bff0dc;background:radial-gradient(circle at 42% 36%,#2f6154,#16332f);border:1px solid #74c8a877;box-shadow:0 .25rem .6rem #0008,inset 0 1px #ffffff1a;transition:transform .05s linear;will-change:transform}
.joystick.active .joystick-knob{background:radial-gradient(circle at 42% 36%,#3d7a68,#1c403a);border-color:#93e3c1aa}
.map-overlay-actions{position:absolute;right:.8rem;bottom:.8rem;z-index:6;display:flex;gap:.5rem}
.map-fab{width:2.9rem;height:2.9rem;padding:0;display:grid;place-items:center;border-radius:.6rem;background:#0d1d2ae6;border:1px solid #3d5a70;color:#d5e8f2;font-size:1.05rem;box-shadow:0 .3rem .9rem #0007}
.map-fab:hover:not(:disabled){background:#16303f;border-color:#6fd3a9}
.map-fab-icon{line-height:1;font-size:1.15rem}
.viewport:fullscreen,.viewport.pseudo-fullscreen{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;border-radius:0;z-index:120;background:#0d1a29}
.viewport:fullscreen .joystick,.viewport.pseudo-fullscreen .joystick{left:1.4rem;bottom:1.4rem}
body.has-pseudo-fullscreen{overflow:hidden}
.chat-panel{background:rgba(13,23,35,.34);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
.chat-messages{text-shadow:0 1px 2px #0009}
.chat-line .chat-name{text-shadow:0 1px 3px #000c}
@media(hover:none) and (pointer:coarse){.world-hint{display:none}}
@media(max-width:850px){.joystick{width:7.6rem;height:7.6rem}}

/* Refactor: integrated HUD (floating icons, E button, chat overlay, dialogs). */
.world-layout{grid-template-columns:minmax(0,1fr)}
.hud-icons{position:absolute;left:.8rem;top:.7rem;z-index:6;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}
.hud-icons .hud-icon{pointer-events:auto}
.hud-icon{width:2.6rem;height:2.6rem;padding:0;display:grid;place-items:center;border-radius:.8rem;background:#0d1d2ad9;border:1px solid #3d5a7080;font-size:1.15rem;line-height:1;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);box-shadow:0 .25rem .7rem #0006;transition:transform .08s ease}
.hud-icon:hover{background:#16303f;border-color:#6fd3a9;transform:translateY(-1px)}
.action-e{position:absolute;left:1.2rem;bottom:10.2rem;width:3rem;height:3rem;padding:0;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:1.05rem;color:#eafff4;background:radial-gradient(circle at 42% 36%,#2f6154,#14302b);border:1.5px solid #6fd3a999;box-shadow:0 .3rem .8rem #0008,inset 0 1px #ffffff22}
.action-e.hidden{display:none}
.action-e:active{transform:scale(.94)}
.chat-hud{position:absolute;left:50%;bottom:.8rem;transform:translateX(-50%);z-index:7;display:flex;flex-direction:column;align-items:center;gap:.5rem;width:min(34rem,calc(100% - 2rem));pointer-events:none}
.chat-hud>*{pointer-events:auto}
/* O histórico flutua ACIMA da barra de chat: fica fora do fluxo, então abrir o
   chat não empurra a barra (nem o botão Dizer) para baixo quando o HUD já foi
   posicionado pelo jogador. */
.chat-expanded{position:absolute;left:0;right:0;bottom:calc(100% + .45rem);margin:0 auto;max-width:34rem;max-height:16rem;display:flex;flex-direction:column;overflow:hidden;background:#0d1d2acc;border:1px solid #3d5a7080;border-radius:.9rem;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.chat-expanded.hidden{display:none}
.chat-expanded .chat-tabs{flex-shrink:0;padding:.45rem .45rem 0}
.chat-expanded .chat-messages{min-height:5rem}
#chat-form{width:100%;max-width:20rem;display:flex;align-items:center;gap:.45rem;padding:.32rem .4rem .32rem .95rem;background:#0d1d2a99;border:1px solid #3d5a7080;border-radius:2rem;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 .3rem 1rem #000a}
#chat-input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:#eaf4ff;font:inherit;font-size:.95rem}
#chat-input::placeholder{color:#8fb3c8}
#chat-send{flex-shrink:0;padding:.4rem .95rem;border-radius:1.4rem;font-weight:600;background:#1d3b33;border:1px solid #4aa37f66;color:#c9f3df}
#chat-send:hover{background:#2a5547}
.passport-body,.settings-body{padding:1.1rem 1.2rem 1.3rem;display:flex;flex-direction:column;gap:1rem;max-height:70vh;overflow-y:auto}
.settings-row{display:flex;align-items:center;gap:.8rem;cursor:pointer;padding:.4rem 0}
.settings-row input{width:1.15rem;height:1.15rem;accent-color:#4aa37f}
.settings-row span{display:flex;flex-direction:column;gap:.15rem}
.settings-row strong{font-size:.95rem}
.settings-row small{color:#8fb3c8}
#passport-dialog,#settings-dialog{width:min(24rem,94vw)}
/* Painel do administrador: só aparece no HUD quando o servidor confirma que a
   conta está em [console] panel_admins. A lista de comandos vem do próprio
   catálogo do servidor, nunca do cliente. */
#admin-dialog{width:min(64rem,96vw);max-height:92dvh}
.admin-body{display:flex;flex-direction:column;gap:.7rem;padding:1.1rem 1.4rem 1.3rem;min-height:0;overflow-y:auto}
.admin-tools{display:flex;gap:.6rem;flex-wrap:wrap}
.admin-tools input{flex:1 1 14rem}
.admin-split{display:grid;grid-template-columns:minmax(12rem,17rem) minmax(0,1fr);gap:.9rem;min-height:0}
.admin-command-list{list-style:none;margin:0;padding:.25rem;max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:.65rem;background:#0d1a27}
.admin-command{display:flex;align-items:center;justify-content:space-between;gap:.6rem;width:100%;padding:.4rem .55rem;border:0;border-radius:.5rem;background:transparent;color:var(--ink);text-align:left;font-size:.78rem}
.admin-command:hover{background:#16303f}
.admin-command-name{font-weight:700;letter-spacing:.02em}
.admin-command small{color:var(--muted);font-size:.6rem;letter-spacing:.05em;text-transform:uppercase}
.admin-work{display:flex;flex-direction:column;gap:.6rem;min-width:0}
.admin-summary{margin:0;color:var(--muted);font-size:.74rem;line-height:1.55}
.admin-run{display:flex;gap:.5rem}
.admin-run input{flex:1 1 auto;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.78rem}
.admin-output{margin:0;padding:.7rem .8rem;min-height:11rem;max-height:38vh;overflow:auto;white-space:pre-wrap;word-break:break-word;border:1px solid var(--line);border-radius:.65rem;background:#08131e;color:#d7e7ee;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.74rem;line-height:1.55}
.admin-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.admin-tabs{display:flex;gap:.35rem;padding:1rem 1.4rem 0}
.admin-tabs button{padding:.4rem .9rem;border:1px solid var(--line);border-radius:.6rem .6rem 0 0;background:#0d1a27;color:var(--muted);font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.admin-tabs button.selected{background:#16303f;color:var(--ink)}
.admin-detail{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .75rem;padding:.6rem .7rem;border:1px solid var(--line);border-radius:.65rem;background:#0d1a27;font-size:.74rem;color:var(--muted)}
.admin-detail strong{color:var(--ink);font-size:.84rem}
.admin-tag{padding:.12rem .42rem;border-radius:.4rem;background:#16303f;color:#9fe3c9;font-size:.6rem;letter-spacing:.06em;text-transform:uppercase}
.admin-tag.warn{background:#3a2222;color:#ffb3a7}
.admin-groups{display:flex;flex-direction:column;gap:.5rem;max-height:26vh;overflow:auto}
.admin-group{border:1px solid var(--line);border-radius:.6rem;background:#0b1723}
.admin-group>span{display:block;padding:.35rem .55rem;border-bottom:1px solid var(--line);color:var(--muted);font-size:.6rem;letter-spacing:.08em;text-transform:uppercase}
.admin-group-actions{display:flex;flex-wrap:wrap;gap:.35rem;padding:.45rem .55rem}
.admin-action{padding:.28rem .55rem;border:1px solid var(--line);border-radius:.45rem;background:#122436;color:var(--ink);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.68rem}
.admin-action:hover{background:#1d3c50}
.admin-action em{color:var(--muted);font-style:normal}
.admin-page{align-self:center;color:var(--muted);font-size:.72rem}
@media(max-width:820px){#admin-dialog{width:min(32rem,96vw)}.admin-split{grid-template-columns:minmax(0,1fr)}.admin-command-list{max-height:11rem}.admin-body{padding:.9rem .9rem 1.1rem}.admin-groups{max-height:none}}

/* ===== Painel de administração: formulários por categoria ===== */
.admin-forms-head{display:flex;flex-direction:column;gap:.55rem}
.admin-mode-bar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.admin-cat-tabs{display:flex;gap:.35rem;overflow-x:auto;padding-bottom:.2rem}
.admin-cat{white-space:nowrap;font-size:.7rem;padding:.34rem .6rem}
.admin-cat.selected{background:#16303f;color:var(--ink);border-color:#2b5d74}
.admin-target-bar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.admin-target-bar input{flex:1 1 12rem}
.admin-cli{display:flex;flex-direction:column;gap:.7rem}
.admin-forms{display:flex;flex-direction:column;gap:.8rem;max-height:56vh;overflow:auto;padding-right:.15rem}
.admin-form-group>h3{font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 .45rem}
.admin-card{display:flex;flex-direction:column;gap:.5rem;padding:.7rem .8rem;border:1px solid var(--line);border-radius:.6rem;background:#0b1723}
.admin-card-developer{border-style:dashed}
.admin-card-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.admin-card-head strong{font-size:.86rem}
.admin-usage{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.66rem;color:var(--muted);overflow-wrap:anywhere}
.admin-note{color:var(--muted);font-size:.68rem;line-height:1.5}
.admin-hint{color:#5f7b8f;font-size:.6rem;margin-left:.35rem}
.admin-card-body{display:flex;flex-direction:column;gap:.45rem}
.admin-label{font-size:.64rem;letter-spacing:.06em;text-transform:uppercase;color:#9db1c1;font-weight:650}
.admin-input{width:100%;padding:.4rem .55rem;border:1px solid var(--line);border-radius:.45rem;background:#0a1420;color:var(--ink);font-size:.78rem}
.admin-field-inputs,.admin-field-number,.admin-field-player,.admin-field-species,.admin-field-dictionary,.admin-field-pokemon{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}
.admin-field-inputs input,.admin-field-player input,.admin-field-dictionary input{flex:1 1 9rem}
.admin-field-number input[type=number]{flex:0 0 5.5rem}
.admin-slider{flex:1 1 100%;padding:0;height:1.3rem}
.admin-seg-row{display:flex;gap:.3rem;flex-wrap:wrap}
.admin-seg{text-transform:capitalize}
.admin-seg.selected{background:#16303f;color:var(--ink);border-color:#2b5d74}
.admin-species-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.1rem,1fr));gap:.3rem;max-height:15rem;overflow:auto;padding:.35rem;border:1px solid var(--line);border-radius:.5rem;background:#0a1420}
.admin-sprite{display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.25rem .15rem;border:1px solid transparent;border-radius:.45rem;background:transparent}
.admin-sprite.selected{border-color:#2b5d74;background:#16303f}
.admin-sprite img{width:2.5rem;height:2.5rem;object-fit:contain;image-rendering:pixelated}
.admin-sprite small{font-size:.55rem;color:var(--muted);max-width:4.2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-item-preview img{width:1.5rem;height:1.5rem;object-fit:contain;image-rendering:pixelated}
.admin-card-foot{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap}
.admin-preview{flex:1 1 14rem;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.7rem;color:var(--mint);background:#0a1420;border:1px solid var(--line);border-radius:.4rem;padding:.35rem .5rem;overflow-x:auto;white-space:pre}
.admin-console{display:flex;flex-direction:column;gap:.5rem;border-top:1px solid var(--line);padding-top:.6rem}
.admin-console.collapsed .admin-output{min-height:2.4rem;max-height:5.5rem;overflow:hidden}
.admin-history{display:flex;gap:.3rem;flex-wrap:wrap}
.admin-history-item{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.6rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-output{min-height:8rem}
@media(max-width:820px){.admin-forms{max-height:none}.admin-species-grid{grid-template-columns:repeat(auto-fill,minmax(3.7rem,1fr));max-height:12rem}.admin-target-bar input{flex:1 1 100%}}

/* ===== Full-viewport world (map fills the screen, no dark side bars) ===== */
.world-layout{padding:0;gap:0}
.world-column{border:0;border-radius:0;background:#0a1420;height:auto;min-height:0}
.viewport{background:#0a1420}

/* ===== E button wrapper (draggable) ===== */
.action-e-wrap{position:absolute;left:1.2rem;bottom:10.2rem;width:3rem;height:3rem;z-index:6}
.action-e-wrap.hidden{display:none}
.action-e{position:static;left:auto;bottom:auto;width:100%;height:100%}

/* ===== Draggable HUD grips ===== */
.hud-grip{width:1.3rem;height:1.3rem;border-radius:.45rem;background-color:#0d1d2ae6;border:1px solid #4aa37f55;cursor:grab;display:grid;place-items:center;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;box-shadow:0 .15rem .5rem #0007;background-image:radial-gradient(#8fd8ba 1.1px,transparent 1.25px);background-size:.32rem .32rem;background-position:center;opacity:.9;pointer-events:auto;z-index:20}
.hud-grip:hover{background-color:#16303f;border-color:#6fd3a9}
.hud-grip:active{cursor:grabbing}
.hud-icons .hud-grip{position:static;align-self:center;margin-bottom:.1rem}
.joystick-grip{position:absolute;top:-.55rem;left:50%;transform:translateX(-50%)}
.action-e-grip{position:absolute;top:-.6rem;left:50%;transform:translateX(-50%)}
.map-overlay-actions .hud-grip{position:absolute;top:-.6rem;left:50%;transform:translateX(-50%)}
.chat-grip{position:absolute;right:-.5rem;top:-.5rem}

/* ===== GBA Pokemon Bag theme ===== */
#modal[data-view="bag"] .modal-header{background:linear-gradient(180deg,#5fd18a,#2e8f57);border-bottom:3px solid #1d5c36}
#modal[data-view="bag"] .modal-header .eyebrow,#modal[data-view="bag"] .modal-header h2{color:#fff}
#modal[data-view="bag"] .modal-header .icon-button{color:#fff;border-color:#ffffff44}
#modal[data-view="bag"] .bag-pocket{background:#eaf0e8;border:1px solid #b8c8bc;color:#4a5a52}
#modal[data-view="bag"] .bag-pocket.selected{background:#fff;border-color:#3a78d0;color:#1c5a9c;box-shadow:inset 0 -2px #3a78d0}
#modal[data-view="bag"] .bag-pocket-symbol{background:#d6e6da;border-color:#a9c2b2;color:#2f6a4a}
#modal[data-view="bag"] .bag-pocket.selected .bag-pocket-count{color:#1c5a9c}
#modal[data-view="bag"] .bag-list-panel{background:#f2f5ee;border-color:#c2cfc6}
#modal[data-view="bag"] .bag-list-heading{background:#e3ebe2;color:#4a6a58;border-bottom:1px solid #c2cfc6}
#modal[data-view="bag"] .bag-list{background:#f2f5ee}
#modal[data-view="bag"] .bag-list-item:hover{background:#dce8dd;border-color:#a9c2b2}
#modal[data-view="bag"] .bag-list-item.selected{background:#3a78d0;border-color:#2c5da6;box-shadow:inset .18rem 0 #d8ecff}
#modal[data-view="bag"] .bag-list-copy strong{color:#22303c}
#modal[data-view="bag"] .bag-list-copy small{color:#5a7284}
#modal[data-view="bag"] .bag-quantity{color:#4a6a58}
#modal[data-view="bag"] .bag-list-item.selected .bag-list-copy strong{color:#fff}
#modal[data-view="bag"] .bag-list-item.selected .bag-list-copy small{color:#d4e6ff}
#modal[data-view="bag"] .bag-list-item.selected .bag-quantity{color:#fff}
#modal[data-view="bag"] .bag-icon{background:#e4eee4;border-color:#b8ccc0;color:#4a6a58}

/* ===== Pokédex entry ===== */
#modal[data-view="dex-entry"] #modal-body{padding:1.2rem 1.4rem 1.4rem}
.dex-entry-hero{display:flex;align-items:center;gap:1.1rem;padding:1.1rem;border:1px solid #314a5d;border-radius:.8rem;background:radial-gradient(circle at 12% 30%,#1d3a3c,#101d2c);margin-bottom:1rem}
.dex-entry-hero img{width:5.5rem;height:5.5rem;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 .3rem .6rem #0008);flex-shrink:0}
.dex-entry-title{min-width:0}
.dex-entry-title .eyebrow{margin-bottom:.3rem}
.dex-entry-title h3{font-size:1.5rem;margin:.1rem 0 .3rem;overflow-wrap:anywhere}
.dex-entry-section{margin:1.1rem 0 0}
.dex-entry-section h3{font-size:.62rem;letter-spacing:.12em;color:#8fb3c8;margin:0 0 .55rem;font-weight:700}
.dex-entry-stats{display:grid;gap:.5rem}
.dex-stat-row{display:grid;grid-template-columns:4.6rem minmax(0,1fr) 2.2rem;align-items:center;gap:.6rem;font-size:.72rem}
.dex-stat-row>span{color:#a9c0cc}
.dex-stat-track{height:.55rem;border-radius:.3rem;background:#1b3445;overflow:hidden;border:1px solid #314a5d}
.dex-stat-track i{display:block;height:100%;background:linear-gradient(90deg,#4fb56e,#8ce5bf);border-radius:.3rem}
.dex-stat-row b{text-align:right;font-variant-numeric:tabular-nums;color:#e2edf4;font-weight:600}
.dex-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}
.dex-facts>div{display:flex;flex-direction:column;gap:.15rem;padding:.65rem .8rem;border:1px solid #314a5d;border-radius:.55rem;background:#142737}
.dex-facts strong{font-size:.54rem;letter-spacing:.09em;color:#8fb3c8;font-weight:700}
.dex-facts span{font-size:.86rem;color:#e7f2f7;font-weight:550}
@media(max-width:520px){.dex-entry-hero{flex-wrap:wrap;justify-content:center;text-align:center}.dex-entry-hero img{width:4.6rem;height:4.6rem}}

/* ===== "Ajustar HUD" editor mode =====
   Alças de arrastar e controles +/- ficam 100% ocultos no jogo normal e só
   aparecem quando o modo editor está ativo (body.hud-editing). */
.hud-grip{display:none}
body.hud-editing .hud-grip{display:grid}
.hud-scale{position:absolute;top:-1.9rem;left:50%;transform:translateX(-50%);display:none;align-items:center;gap:.22rem;z-index:24;pointer-events:auto;white-space:nowrap}
body.hud-editing .hud-scale{display:inline-flex}
.hud-icons .hud-scale{top:auto;bottom:-1.9rem;left:0;transform:none}
.map-overlay-actions .hud-scale{left:auto;right:0;transform:none}
.hud-scale-btn{width:1.4rem;height:1.4rem;padding:0;border-radius:.42rem;display:grid;place-items:center;font:800 1rem/1 system-ui,sans-serif;color:#d9f7ea;background:#0d1d2ae6;border:1px solid #4aa37f77;box-shadow:0 .15rem .5rem #0008;cursor:pointer}
.hud-scale-btn:hover{background:#16303f;border-color:#6fd3a9}
.hud-scale-btn:active{transform:translateY(1px)}
.hud-scale-value{min-width:2.5rem;text-align:center;font:700 .66rem/1 system-ui,sans-serif;color:#a9e7cd;background:#0d1d2ae6;border:1px solid #4aa37f55;border-radius:.42rem;padding:.26rem .3rem;font-variant-numeric:tabular-nums}
body.hud-editing .hud-icons,body.hud-editing .joystick,body.hud-editing .action-e-wrap,body.hud-editing .map-overlay-actions,body.hud-editing .chat-hud{outline:1px dashed #6fd3a999;outline-offset:3px;border-radius:.5rem}
body.hud-editing .hud-icons .hud-scale,body.hud-editing .chat-hud .hud-scale{pointer-events:auto}
.hud-editor-bar{position:fixed;top:.6rem;left:50%;transform:translateX(-50%);z-index:200;display:flex;align-items:center;gap:.55rem;padding:.45rem .7rem;border-radius:1rem;background:linear-gradient(180deg,#10283af2,#0a1a26f2);border:1px solid #4aa37f88;box-shadow:0 1rem 2.4rem #000b;color:#d9f2e7;font-size:.82rem;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.hud-editor-bar.hidden{display:none!important}
.hud-editor-title{font-weight:800;color:#8fe6bd;white-space:nowrap}
.hud-editor-hint{color:#9fb8c9;white-space:nowrap}
@media(max-width:860px){.hud-editor-hint{display:none}}
/* Latency chip: green / amber / red so a slow link is obvious at a glance. */
#latency[data-state=good]{color:#7ce7a6}
#latency[data-state=fair]{color:#f2c14e}
#latency[data-state=bad]{color:#ff8f8f}
/* The map is only tapped, never double tapped: no accidental page zoom. */
#world-canvas{touch-action:manipulation}
/* Phones and short/landscape screens: the app owns the visible area and scrolls only
   inside its own boxes (login screen, dialogs, panels). A scrollable document used to
   creep downwards and grow on its own here — the HUD is anchored to the bottom of the
   viewport and the canvas sized itself from the document, so every resize pushed the
   page a bit taller. --app-h is set by index.html while the on-screen keyboard is up,
   so the map (and the chat box) stay above it instead of the page scrolling. */
@media(max-width:650px),(max-height:640px),(pointer:coarse){
 html,body{height:100%;overflow:hidden;overscroll-behavior:none}
 .game-shell{height:var(--app-h,100dvh);min-height:0}
}
/* 12a rodada - a cadeia de evolução na entrada da Pokédex. Cada linha da lista é um
   caminho da família: os estágios separados por uma seta com a condição ("Nível 16",
   "Pedra Trovão", "Troca") e a etiqueta "Forma final" fechando a linha. */
.dex-evolutions .dex-evo-list{display:flex;flex-direction:column;gap:.55rem}
.dex-evo-flow{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.dex-evo-node{display:flex;flex-direction:column;align-items:center;gap:.15rem;width:4.9rem;padding:.3rem .2rem;background:var(--panel-2);border:1px solid var(--line);border-radius:.55rem;color:var(--ink)}
.dex-evo-node img{width:3.4rem;height:3.4rem;object-fit:contain;image-rendering:pixelated}
.dex-evo-node .dex-evo-name{font-size:.62rem;line-height:1.15;text-align:center;color:var(--muted)}
.dex-evo-node:hover:not(:disabled){background:var(--panel-3);border-color:#54728a}
.dex-evo-node.current{background:var(--panel-3);border-color:var(--mint)}
.dex-evo-node.current .dex-evo-name{color:var(--ink);font-weight:700}
.dex-evo-step{max-width:5rem;padding:.22rem .35rem;background:#0c1623;border:1px dashed var(--line);border-radius:.45rem;font-size:.6rem;line-height:1.2;text-align:center;color:var(--gold)}
.dex-evo-final{padding:.22rem .4rem;background:var(--panel-2);border:1px solid var(--line);border-radius:.45rem;font-size:.6rem;line-height:1.2;color:var(--muted)}
@media(max-width:650px){
 .dex-evo-node{width:4.2rem}
 .dex-evo-node img{width:2.9rem;height:2.9rem}
 .dex-evo-flow{gap:.3rem}
}
/* ---- Aparências de treinador: a mesma lista na criação da conta e no perfil ---- */
.appearance-field{display:grid;gap:.3rem;margin-top:.5rem}
.field-tip{font-size:.68rem;line-height:1.35;color:var(--muted)}
.appearance-chosen{font-weight:600;color:var(--gold)}
.appearance-body{display:grid;gap:.45rem;min-width:0}
.appearance-body.locked{opacity:.5;pointer-events:none}
.appearance-search{width:100%;box-sizing:border-box;padding:.5rem .6rem;background:#0c1623;border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);font:inherit}
.appearance-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.4rem,1fr));gap:.4rem;max-height:15rem;overflow-y:auto;padding:.4rem;background:#0a121d;border:1px solid var(--line);border-radius:var(--radius)}
.appearance-option{display:grid;gap:.2rem;justify-items:center;padding:.3rem .2rem;background:var(--panel-2);border:1px solid transparent;border-radius:.55rem;color:inherit;font:inherit;cursor:pointer}
.appearance-option:hover{border-color:var(--line);background:var(--panel-3)}
.appearance-option.selected{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}
.appearance-option[hidden]{display:none}
/* A caixa recorta um quadro; o <img> é esticado para ``colunas x linhas`` caixas e fica no canto. */
.appearance-thumb{position:relative;display:block;overflow:hidden;border-radius:.3rem;background:#0e1a27}
.appearance-thumb img{position:absolute;left:0;top:0;max-width:none;image-rendering:pixelated}
.appearance-thumb.thumb-strip{width:1.5rem;height:3rem}
.appearance-thumb.thumb-grid{width:3rem;height:3rem}
.appearance-name{max-width:100%;overflow:hidden;font-size:.6rem;line-height:1.15;color:var(--muted);text-align:center;text-overflow:ellipsis;white-space:nowrap}
.appearance-option.selected .appearance-name{color:var(--ink)}
.appearance-empty{margin:0;font-size:.7rem;color:var(--muted)}
@media(max-width:650px){
 .appearance-grid{grid-template-columns:repeat(auto-fill,minmax(3.5rem,1fr));max-height:11rem}
 .appearance-thumb.thumb-strip{width:1.2rem;height:2.4rem}
 .appearance-thumb.thumb-grid{width:2.4rem;height:2.4rem}
}

/* Correio: the letter button, the unread badge, the friend list and the mailbox. */
#hud-mail{position:relative}
.hud-badge{position:absolute;top:-.3rem;right:-.3rem;min-width:1rem;height:1rem;padding:0 .22rem;border-radius:1rem;background:#d4584b;color:#fff6e3;font-size:.58rem;font-weight:700;line-height:1rem;text-align:center;box-shadow:0 0 0 2px #0f1a29}
#hud-mail.has-mail{box-shadow:0 0 0 2px #d4584b88}
.mail-form{display:flex;gap:.5rem;align-items:center;margin:.65rem 0}
.mail-form input,.mail-form select{flex:1;min-width:0;padding:.55rem .7rem;border:1px solid var(--line);border-radius:.5rem;background:#0d1a28;color:var(--ink)}
.mail-form select{flex:0 0 34%}
.friend-dot{width:.6rem;height:.6rem;flex:0 0 auto;border-radius:50%;background:#5c6a75;margin-top:.35rem}
.friend-dot.online{background:#63c46b;box-shadow:0 0 0 3px #63c46b22}
.party-card.mail-row{align-items:flex-start;cursor:pointer}
.party-card.mail-row.unread{border-color:#d4584b;background:#2a1d20}
.mail-text{margin:.3rem 0 0;font-size:.82rem;line-height:1.5;color:#e1e5d6;overflow-wrap:anywhere;white-space:pre-wrap}
.unread-count{min-width:1.1rem;height:1.1rem;margin-left:.4rem;padding:0 .3rem;border-radius:1rem;background:#d4584b;color:#fff6e3;font-size:.62rem;font-weight:700;line-height:1.1rem;text-align:center}
.thread-head{display:flex;gap:.6rem;align-items:center;margin:.4rem 0 .2rem;flex-wrap:wrap}
.thread-head .party-info{flex:1;min-width:0}
.thread-head button{font-size:.75rem;padding:.45rem .6rem;white-space:nowrap}
.mail-thread{display:flex;flex-direction:column;gap:.4rem;max-height:46vh;overflow-y:auto;padding:.2rem;margin:.5rem 0}
.bubble{max-width:78%;padding:.5rem .7rem;border:1px solid var(--line);border-radius:.7rem;background:#132332;align-self:flex-start}
.bubble.mine{align-self:flex-end;border-color:#3c6b4a;background:#1b3325}
.bubble time{display:block;margin-top:.25rem;font-size:.6rem;letter-spacing:.04em;color:#8b978d;text-align:right}

/* ============================================================================
   "Vidro" (glass skin): a caixa de chat e a referencia do visual leve e
   semi-transparente. Aqui o mesmo tratamento (fundo escuro de baixa opacidade +
   backdrop-filter) vale para TODOS os paineis que o jogador abre: passaporte,
   equipe, mochila, Pokedex, diario, correio, configuracoes, admin, audio,
   batalha, o modal generico e a tela de queda. Este bloco fica no fim do
   arquivo de proposito: ele vence por ordem as superficies opacas definidas
   acima, sem alterar nenhuma regra existente.
   ============================================================================ */
/* ---- os dialogos e a moldura ---- */
dialog{background:rgba(13,26,40,.6);border:1px solid #4a6b86a8;box-shadow:0 2rem 7rem #000b,inset 0 1px 0 #ffffff14;backdrop-filter:blur(16px) saturate(1.18);-webkit-backdrop-filter:blur(16px) saturate(1.18)}
dialog::backdrop{background:#020711a6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.modal-header{background:linear-gradient(180deg,#ffffff14,#ffffff05);border-bottom:1px solid #ffffff24}
.modal-header .icon-button{background:#ffffff0f;border:1px solid #ffffff1f;border-radius:.55rem}
.modal-header .icon-button:hover{background:#ffffff1f}
/* ---- campos e botoes discretos ---- */
input,select,textarea{background:rgba(8,17,28,.55);border-color:#ffffff24}
.secondary{background:rgba(255,255,255,.07);border-color:#ffffff22}
.secondary:hover:not(:disabled){background:rgba(255,255,255,.13);border-color:#8ce5bf66}
/* ---- cards: um filme claro translucido no lugar do bloco opaco ---- */
.item-row,.collection-card,.help-grid>div,.trade-side,.trade-picker label,.map-card,.party-card,.audio-status-row,.held-mail,.safari-summary,.dex-evo-node,.dex-evo-final,.move-button,.coin-prize,.npc-gift,.bag-detail{background:#ffffff0d;border-color:#ffffff1f}
.map-card.featured{background:#8ce5bf1c;border-color:#8ce5bf55}
.party-card.lead{background:linear-gradient(100deg,#8ce5bf1f,#ffffff0a);border-color:#8ce5bf55}
.party-card.mail-row.unread{background:#d4584b26;border-color:#d4584b}
.dex-evo-step{background:#ffffff0a;border-style:dashed}
.bubble{background:#ffffff0d}
.bubble.mine{background:#8ce5bf1c;border-color:#8ce5bf4d}
.learnset-panel,.battle-wait{background:#ffffff0d;border-color:#ffffff1f}
/* ---- consoles e registros: translucido, mas escuro para o texto mono ---- */
.battle-log,.battle-controls,.admin-command-list,.admin-detail,.admin-group,.admin-card,.admin-input,.admin-species-grid{background:rgba(6,14,22,.34);border-color:#ffffff1f}
.admin-output,.admin-preview{background:rgba(4,10,17,.42);border-color:#ffffff1f}
.combat-card{background:rgba(8,20,32,.62);border-color:#ffffff26}
/* ---- mochila: o tema GBA claro tambem entra no vidro ---- */
#modal[data-view="bag"] .modal-header{background:linear-gradient(180deg,#5fd18a4d,#2e8f5733);border-bottom:1px solid #8ce5bf66}
#modal[data-view="bag"] .modal-header .eyebrow,#modal[data-view="bag"] .modal-header h2{color:#eafff4}
#modal[data-view="bag"] .modal-header .icon-button{color:#eafff4;border-color:#ffffff33;background:#ffffff14}
#modal[data-view="bag"] #modal-body{background:radial-gradient(ellipse at 4% 0%,#8ce5bf1a,transparent 56%)}
#modal[data-view="bag"] .bag-pocket{background:#ffffff12;border:1px solid #ffffff26;color:#cfe3d6}
#modal[data-view="bag"] .bag-pocket.selected{background:#5fd18a2e;border-color:#8ce5bf;color:#eafff4;box-shadow:inset 0 -2px #8ce5bf}
#modal[data-view="bag"] .bag-pocket-symbol{background:#ffffff12;border-color:#ffffff2e;color:#bff0dc}
#modal[data-view="bag"] .bag-pocket-count,#modal[data-view="bag"] .bag-pocket.selected .bag-pocket-count{color:#bcd6c6}
#modal[data-view="bag"] .bag-list-panel{background:#ffffff08;border-color:#ffffff1f}
#modal[data-view="bag"] .bag-list-heading{background:#ffffff12;color:#bcd6c6;border-bottom:1px solid #ffffff1f}
#modal[data-view="bag"] .bag-list{background:transparent}
#modal[data-view="bag"] .bag-list-item:hover{background:#ffffff14;border-color:#ffffff2e}
#modal[data-view="bag"] .bag-list-item.selected{background:#5fd18a2e;border-color:#8ce5bf;box-shadow:inset .18rem 0 #8ce5bf}
#modal[data-view="bag"] .bag-list-copy strong{color:#eef5f7}
#modal[data-view="bag"] .bag-list-copy small{color:#a9c0cc}
#modal[data-view="bag"] .bag-quantity{color:#bcd6c6}
#modal[data-view="bag"] .bag-list-item.selected .bag-list-copy strong{color:#fff}
#modal[data-view="bag"] .bag-list-item.selected .bag-list-copy small{color:#d6f2e4}
#modal[data-view="bag"] .bag-list-item.selected .bag-quantity{color:#fff}
#modal[data-view="bag"] .bag-icon{background:#ffffff12;border-color:#ffffff2e;color:#bff0dc}
#modal[data-view="bag"] .bag-detail{background:linear-gradient(145deg,#ffffff12,#ffffff07);border-color:#ffffff24}
#modal[data-view="bag"] .bag-toolbar>select,#modal[data-view="bag"] .bag-search-wrap input{background:rgba(8,17,28,.55);border-color:#ffffff24}
#modal[data-view="bag"] .bag-modes{background:rgba(8,17,28,.45);border-color:#ffffff1f}
#modal[data-view="bag"] .bag-modes button.selected{background:#ffffff1f;border-color:#8ce5bf66;color:#eafff4}
#modal[data-view="bag"] .bag-action-intro{background:#ffffff0d;border-color:#ffffff24}
#modal[data-view="bag"] .bag-move{background:#ffffff0a;border-color:#ffffff24}
.item-pending-note{background:#8ce5bf22;border-color:#8ce5bf59}
/* ---- tela de queda ---- */
.disconnect-card{background:rgba(13,26,40,.72);border-color:#4a6b86a8;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
/* ---- joystick: base com anel/guia e a pokebola no lugar da seta ---- */
.joystick-base{border:1.5px solid #6fd3a96b;background:radial-gradient(circle at 50% 42%,#1c4340d6,#0d2129c4 58%,#0a181fb8);box-shadow:inset 0 0 1.5rem #000a,inset 0 0 0 .3rem #0f2a2a4d,0 .35rem 1.1rem #0007,0 0 0 1px #ffffff0a}
.joystick-base:before{inset:20%;border:1px dashed #6fd3a94d}
.joystick-base:after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;background:linear-gradient(#8fe6bd26,#8fe6bd26) center/1.5px 44% no-repeat,linear-gradient(#8fe6bd26,#8fe6bd26) center/44% 1.5px no-repeat}
.joystick-knob{background:radial-gradient(circle at 42% 32%,#2c5b4f,#122a26);border:1px solid #74c8a866;box-shadow:0 .3rem .8rem #0009,inset 0 1px #ffffff1f,0 0 0 .22rem #6fd3a91a}
.joystick.active .joystick-knob{background:radial-gradient(circle at 42% 32%,#3a7a66,#16352f);border-color:#93e3c1aa;box-shadow:0 .3rem .9rem #000a,inset 0 1px #ffffff2e,0 0 0 .26rem #8ce5bf33}
.joystick-ball{display:block;width:2.5rem;height:2.5rem;border-radius:50%;position:relative;background:linear-gradient(180deg,#ef5350 0 46%,#15181c 46% 54%,#f2f5f7 54% 100%);border:1.5px solid #0a1116;box-shadow:0 .14rem .36rem #0009,inset 0 .1rem .3rem #ffffff59}
.joystick-ball:after{content:"";position:absolute;left:50%;top:50%;width:.74rem;height:.74rem;margin:-.37rem 0 0 -.37rem;border-radius:50%;background:#f6f9fb;border:1.5px solid #0a1116;box-shadow:inset 0 -.08rem .16rem #b9c4ca}
/* ---- botao E ---- */
.action-e{font-size:1.12rem;color:#f2fff9;letter-spacing:.02em;text-shadow:0 1px 2px #000a;background:radial-gradient(circle at 40% 30%,#4a9a72,#2c6b4f 48%,#123328);border:1.5px solid #8ce5bfcc;box-shadow:0 .35rem .95rem #0009,0 0 0 .3rem #6fd3a91f,inset 0 1px #ffffff3d,inset 0 -.45rem .8rem #06301f66;transition:transform .08s ease,box-shadow .15s ease}
.action-e:hover:not(:disabled){border-color:#a9f2d0;box-shadow:0 .4rem 1.1rem #000a,0 0 0 .34rem #6fd3a92e,0 0 1.1rem #6fd3a94d,inset 0 1px #ffffff4d;transform:translateY(-1px)}
.action-e:active:not(:disabled){transform:translateY(1px) scale(.97);box-shadow:0 .18rem .5rem #0009,0 0 0 .28rem #6fd3a91f,inset 0 .3rem .6rem #05291b80}

/* ---- editor da HUD: os +/- do joystick e do botao E precisam ser clicaveis ----
   O joystick e o botao E sao irmaos com o mesmo z-index (6) e o botao E vem
   depois no HTML, entao ele pintava por cima do bloco +/- do joystick (o
   z-index:24 do .hud-scale so vale DENTRO do contexto de empilhamento do pai).
   Com o modo editor ligado subimos o joystick um degrau para os seus botoes
   ficarem por cima do botao E. Nao ha sobreposicao dos seus quadros, entao o
   botao E continua clicavel normalmente. */
body.hud-editing #joystick{z-index:7}
/* O bloco +/- do botao E era centralizado num alvo de 3rem encostado na borda
   esquerda, entao ele vazava para fora da tela (x negativo) e os botoes ficavam
   inalcancaveis. Alinhamos a esquerda, igual ao bloco dos icones da HUD. */
.action-e-wrap .hud-scale{left:0;transform:none}
/* O puxador do chat ficava no canto superior direito da caixa do chat e, em
   telas estreitas, caia em cima do bloco +/- do menu do mapa (o botao + nao
   respondia). Levamos o puxador para o canto superior esquerdo, que fica livre. */
body.hud-editing .chat-grip{left:-.5rem;right:auto}

/* ── PWA: balão flutuante de instalação (tela de login) ── */
.install-banner{position:fixed;left:50%;bottom:1.4rem;transform:translateX(-50%);z-index:300;width:min(24rem,calc(100vw - 1.5rem))}
.install-banner-card{position:relative;display:flex;align-items:center;gap:.8rem;padding:.95rem 2.5rem .95rem 1rem;background:#14202ef5;border:1px solid #3a536a;border-radius:1rem;box-shadow:0 1rem 3rem #000c;backdrop-filter:blur(8px)}
.install-banner-emoji{font-size:1.8rem;line-height:1;flex-shrink:0}
.install-banner-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}
.install-banner-text strong{font-size:.92rem;font-weight:650}
.install-banner-text span{font-size:.73rem;color:var(--muted);line-height:1.45}
.install-banner-action{flex-shrink:0;background:var(--mint);border-color:var(--mint);color:#103027;font-weight:700;font-size:.8rem;padding:.55rem .85rem;border-radius:.5rem}
.install-banner-action:hover:not(:disabled){background:#b9f1d8;border-color:#b9f1d8}
.install-banner-x{position:absolute;top:.35rem;right:.4rem;width:1.7rem;height:1.7rem;font-size:1.05rem;line-height:1;display:grid;place-items:center;background:transparent;border:0;color:var(--muted);border-radius:50%}
.install-banner-x:hover{color:var(--ink);background:#ffffff14}

/* ── Barra inferior de status removida (era só informativa: FPS / mundo) ── */
.statusbar{display:none}
