@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Space+Grotesk:wght@400;500;600;700&display=swap";html{min-width:320px}body{font-family:Space Grotesk,sans-serif}:root{--ink:#182326;--muted:#718083;--line:#d9e2df;--paper:#f4f7f4;--pokemon-yellow:#ffde00;--pokemon-blue:#0075be;--pokemon-red:#ee1515;--pokemon-navy:#003a70;--red-deep:#b60d0d;--nav-height:62px;--shadow-retro:3px 3px 0 #000000d9}*{box-sizing:border-box}body{color:var(--ink);background:#eef5f4;margin:0;font-family:Space Grotesk,system-ui,sans-serif}button,a{font:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:0}.app-shell{min-height:100dvh;padding-bottom:calc(var(--nav-height) + env(safe-area-inset-bottom));background:linear-gradient(135deg,#eef6f3 0%,#f9fbfa 48%,#e7f0f6 100%)}.app-header{z-index:30;min-height:54px;padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top));padding-left:max(12px, env(safe-area-inset-left));padding-right:max(12px, env(safe-area-inset-right));background:linear-gradient(160deg, var(--pokemon-red) 0%, var(--red-deep) 90%);border-bottom:3px solid var(--ink);justify-content:space-between;align-items:center;gap:10px;display:flex;position:sticky;top:0;box-shadow:inset 0 2px #ffffff40,0 4px 14px #18232640}.app-header-title{align-items:center;gap:10px;min-width:0;padding-left:12px;display:flex}.app-header-title img{filter:drop-shadow(1px 1px #0006);width:26px;height:26px}.app-menu-button{cursor:pointer;background:#0000002e;border:2px solid #ffffff8c;border-radius:50%;flex-shrink:0;place-items:center;width:40px;height:40px;padding:0;transition:transform .15s,background .15s;display:grid}.app-menu-button img{width:28px;height:28px;transition:transform .25s}.app-menu-button:hover,.app-menu-button.open{background:#0000004d}.app-menu-button:hover img,.app-menu-button.open img{transform:rotate(-20deg)}.app-menu-button:active{transform:scale(.92)}.app-menu-button:focus-visible{outline:3px solid var(--pokemon-yellow);outline-offset:2px}.app-header-title h1{color:#fff;letter-spacing:.01em;text-transform:uppercase;text-shadow:1px 1px #00000073;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:17px;font-weight:800;overflow:hidden}.trainer-hud{flex-shrink:0;gap:4px;display:flex}.hud-chip{border:1.5px solid var(--ink);background:#fffffff0;border-radius:99px;align-items:center;gap:4px;min-height:28px;padding:2px 6px;font:700 11px DM Mono,monospace;display:inline-flex;box-shadow:1.5px 1.5px #00000080}.hud-chip small{color:#8a9691;font-size:9px}.hud-pokeball{border:1.5px solid var(--ink);background:linear-gradient(180deg, var(--pokemon-red) 0 44%, var(--ink) 44% 56%, white 56% 100%);border-radius:50%;width:13px;height:13px}.hud-berry{font-size:12px;font-style:normal}.hud-berry.regular{color:#268a43}.hud-chip .berry-bonus{color:#23733a;white-space:nowrap;font-weight:800}.berry-qr-status{color:#47735b;margin:10px 0;font:11px DM Mono,monospace}.hud-dex{color:var(--pokemon-blue);font-size:11px;font-style:normal}.inventory{gap:18px;min-width:0;display:grid}.inventory-tabs,.pokemon-view-tabs{background:#e9efec;border:1px solid #ccd9d4;border-radius:7px;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;padding:3px;display:grid}.inventory-tabs button,.pokemon-view-tabs button{color:#61716b;background:0 0;border-radius:5px;min-height:42px;padding:5px 3px;font:700 10px DM Mono,monospace}.inventory-tabs button.active,.pokemon-view-tabs button.active{color:var(--ink);background:#fff;box-shadow:0 1px 3px #1823261f}.pokemon-view-tabs{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px}.inventory-section-heading{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.inventory-section-heading h2{margin:0;font-size:19px}.inventory-section-heading>span{color:#6b7d73;font:10px DM Mono,monospace}.inventory-supply-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:10px;display:grid}.inventory-item{border:1px solid #cfd9d4;border-top:3px solid var(--pokemon-red);background:#fff;border-radius:8px;min-width:0;padding:10px}.inventory-berries{border-top-color:#64a06c}.inventory-item-head{grid-template-columns:36px minmax(0,1fr);align-items:center;gap:8px;min-height:46px;margin-bottom:8px;display:grid}.inventory-item-head>img{object-fit:contain;width:36px;height:40px}.inventory-item-head>div{min-width:0}.inventory-item h3,.inventory-box-item h3{overflow-wrap:anywhere;margin:0 0 3px;font-size:12px}.inventory-item-count{font:800 21px DM Mono,monospace;display:block}.inventory-item-count>small{color:#76847e;font-size:8px;font-weight:400}.inventory-balance,.inventory-bonus{justify-content:space-between;align-items:baseline;gap:6px;font:10px DM Mono,monospace;display:flex}.inventory-balance>small{color:var(--ink);white-space:nowrap;margin-left:auto;font:700 10px DM Mono,monospace}.inventory-balance>span{color:#65766e}.inventory-bonus{color:#2b6646;margin-top:6px}.inventory-bonus-capacity::-webkit-meter-bar{background:#e7eeea;border:none;border-radius:4px}.inventory-bonus-capacity::-webkit-meter-optimum-value{background:#429665;border-radius:4px}.inventory-capacity{width:100%;height:8px;accent-color:var(--pokemon-red);margin-top:3px;display:block}.inventory-berries .inventory-capacity{accent-color:#429665}.inventory-capacity::-webkit-meter-bar{background:#e7eeea;border:none;border-radius:4px}.inventory-capacity::-webkit-meter-optimum-value{background:var(--pokemon-red);border-radius:4px}.inventory-berries .inventory-capacity::-webkit-meter-optimum-value{background:#429665}.inventory-box-item{background:repeating-linear-gradient(135deg,#fffdf2 0 12px,#fffbed 12px 24px);border:1px solid #d7c67a;border-radius:8px;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;display:grid}.inventory-box-item>img{object-fit:contain;width:46px;height:50px}.inventory-box-item .primary-action{width:auto;min-width:80px;min-height:38px;margin:0;padding:6px 8px;font-size:10px}.inventory-accessory-grid{gap:8px;display:grid}.inventory-accessory{background:linear-gradient(135deg,#f4fbff,#fff);border:1px solid #b9d6e3;border-left:4px solid #3f8fb8;border-radius:8px;grid-template-columns:52px minmax(0,1fr);align-items:center;gap:10px;padding:10px;display:grid}.inventory-accessory>img,.inventory-accessory-fallback{object-fit:contain;width:52px;height:52px}.inventory-accessory-fallback{color:#3f8fb8;background:#dceef6;border-radius:50%;place-items:center;font-size:24px;display:grid}.inventory-accessory h3{margin:0 0 3px;font-size:13px}.inventory-accessory p{color:#4e5f58;margin:0 0 4px;font-size:11px;line-height:1.35}.inventory-accessory small{color:#3f8fb8;text-transform:uppercase;font:700 9px DM Mono,monospace}.inventory-accessory.missing{background:#f4f6f5;border-color:#d6dcd9 #d6dcd9 #d6dcd9 #a9b4af}.inventory-accessory.missing>img{filter:brightness(0)opacity(.25)}.inventory-accessory.missing small{color:#7d8a84}.inventory-reward{border-top:1px solid #cddccf;border-bottom:1px solid #cddccf;align-items:center;gap:12px;padding:12px 0;display:flex}.inventory-reward>img{object-fit:contain;width:46px;height:46px}.inventory-reward>div{flex:1;gap:5px;min-width:0;display:grid}.inventory-reward strong{overflow-wrap:anywhere;font-size:14px}.inventory-reward small{color:#63786c;font-size:10px}.mystery-reveal-dialog{color:#fff;text-align:center;background:#17332d;border:1px solid #557565;border-radius:10px;justify-items:center;width:min(430px,100vw - 28px);max-width:none;max-height:min(90dvh,760px);margin:0;padding:22px;display:grid;position:fixed;inset:50% auto auto 50%;overflow-y:auto;transform:translate(-50%,-50%);box-shadow:0 18px 64px #10251e77}.mystery-reveal-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#10231dcc}.mystery-reveal-dialog>.eyebrow{color:#f5d76c;margin:0;font:800 10px DM Mono,monospace}.mystery-reveal-dialog>h2{margin:5px 0 0;font-size:22px}.mystery-reveal-detail{color:#d1e1d6;margin:6px 0 0;font-size:12px;line-height:1.4}.mystery-reveal-stage{isolation:isolate;place-items:center;width:min(62vw,220px);height:min(55vw,190px);min-height:150px;margin:12px 0 4px;display:grid;position:relative}.mystery-reveal-flash{z-index:-1;aspect-ratio:1;opacity:0;background:#f4d452;border-radius:50%;width:70%;position:absolute;transform:scale(.2)}.mystery-reveal-stage img{object-fit:contain;filter:drop-shadow(0 8px 10px #08181288);width:74%;height:90%;position:absolute}.mystery-reveal-box{transform:scale(1)}.mystery-reveal-item{opacity:0;transform:scale(.25)rotate(-12deg)}.mystery-reveal-stage.revealed .mystery-reveal-box{animation:.85s cubic-bezier(.2,.75,.3,1) both mystery-box-transform}.mystery-reveal-stage.revealed .mystery-reveal-item{animation:.85s cubic-bezier(.2,.8,.3,1.2) both mystery-item-reveal}.mystery-reveal-stage.revealed .mystery-reveal-flash{animation:.85s both mystery-reward-flash}.mystery-reveal-actions{justify-content:center;align-items:center;gap:18px;width:100%;margin-top:16px;display:flex}.mystery-reveal-actions .primary-action{min-width:150px;margin:0}.mystery-reveal-actions .text-action{color:#e3eedd}@keyframes mystery-box-transform{0%{opacity:1;transform:scale(1)rotate(0)}40%{opacity:1;transform:scale(1.12)rotate(5deg)}to{opacity:0;transform:scale(.25)rotate(18deg)}}@keyframes mystery-item-reveal{0%,30%{opacity:0;transform:scale(.2)rotate(-12deg)}65%{opacity:1;transform:scale(1.13)rotate(4deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes mystery-reward-flash{0%,25%{opacity:0;transform:scale(.2)}55%{opacity:.85;transform:scale(1.2)}to{opacity:.2;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.mystery-reveal-stage.revealed .mystery-reveal-box,.mystery-reveal-stage.revealed .mystery-reveal-item,.mystery-reveal-stage.revealed .mystery-reveal-flash{animation-duration:.2s}}.inventory .egg-center-header{border-bottom:none;padding-bottom:0}.inventory .egg-center-header small{color:#61766a;margin-top:5px;font:10px DM Mono,monospace;display:block}.egg-hatching{gap:6px;display:grid}.egg-hatching-header{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.egg-hatching-header h3{margin:0;font-size:12px}.egg-hatching-header>span{color:#677d70;font:9px DM Mono,monospace}.egg-hatching .egg-slot{text-align:center;border-radius:7px;gap:3px;min-height:84px;padding:5px 3px}.egg-hatching .egg-slot-art{width:32px;height:34px}.egg-hatching .egg-slot-open:hover:not(:disabled){border-style:solid;border-color:#baaa4e}.egg-hatching .egg-slot-open:disabled{cursor:not-allowed;opacity:.6}.egg-slot.base{background:#f2f8f7;border-color:#80a7a4}.egg-slot.bonus{background:#fffdf2;border-color:#c9b65e}.egg-slot.occupied{border-style:solid}.egg-slot.used{opacity:.55}.egg-slot-art{object-fit:contain;width:32px;height:34px;margin:0 auto;display:block}.egg-slot-art.empty{filter:grayscale();opacity:.35}.egg-slot-open-action{color:#28563a;white-space:nowrap;background:#e4f3df;border:1px solid #6e9c86;border-radius:4px;max-width:100%;min-height:20px;padding:2px 4px;font:700 7px DM Mono,monospace}.egg-start-select{width:100%;min-width:0;min-height:34px;color:var(--ink);background:#fff;border:1px solid #b9cdc2;border-radius:5px;padding:4px 6px;font:10px DM Mono,monospace}.egg-get-eggs{justify-self:center;min-height:28px;padding:3px 6px;font-size:10px}.egg-choice-dialog{width:min(760px,100vw - 28px);max-width:none;max-height:min(90dvh,820px);color:var(--ink);background:#f7faf7;border:1px solid #b9cdc2;border-radius:10px;margin:0;padding:20px;position:fixed;inset:50% auto auto 50%;overflow-y:auto;transform:translate(-50%,-50%);box-shadow:0 18px 60px #10261f55}.egg-choice-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#10231dcc}.egg-choice-header{justify-content:space-between;align-items:flex-start;gap:14px;padding-right:34px;display:flex}.egg-choice-header .eyebrow{color:#5f7d68;margin:0 0 4px}.egg-choice-header h2{margin:0;font-size:21px}.egg-choice-header .pokemon-dialog-close{position:absolute;top:12px;right:12px}.egg-choice-intro{color:#5f7068;margin:12px 0 16px;font-size:12px;line-height:1.45}.egg-choice-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.egg-choice-card{min-width:0;color:var(--ink);text-align:left;background:#fff;border:1.5px solid #cbd8d1;border-top:4px solid #70a975;border-radius:8px;align-content:start;gap:9px;padding:12px;transition:border-color .15s,box-shadow .15s,transform .15s;display:grid}.egg-choice-card:hover{transform:translateY(-2px)}.egg-choice-card.uncommon{border-top-color:#609ac0}.egg-choice-card.rare{border-top-color:#c5a333}.egg-choice-card.selected{border-color:#3c8054;box-shadow:0 0 0 2px #3c805433}.egg-choice-card.uncommon.selected{border-color:#4a89b0;box-shadow:0 0 0 2px #4a89b033}.egg-choice-card.rare.selected{border-color:#a78822;box-shadow:0 0 0 2px #a7882233}.egg-choice-top{align-items:center;gap:8px;min-width:0;display:flex}.egg-choice-top>img{object-fit:contain;flex:none;width:44px;height:48px}.egg-choice-top>div{gap:3px;min-width:0;display:grid}.egg-choice-top strong{font-size:13px}.egg-choice-top span{color:#718078;font:9px DM Mono,monospace}.egg-choice-range{color:#356344;background:#edf5ed;border-radius:4px;justify-self:start;padding:4px 7px;font:800 11px DM Mono,monospace}.egg-choice-card.uncommon .egg-choice-range{color:#356b90;background:#edf4f9}.egg-choice-card.rare .egg-choice-range{color:#836718;background:#faf3dc}.egg-choice-card>p{color:#52635a;min-height:52px;margin:0;font-size:11px;line-height:1.4}.egg-choice-odds{color:#315f43;font:800 10px DM Mono,monospace}.egg-choice-epic-note{color:#55436c;background:#f2eff8;border-left:3px solid #70529a;margin:12px 0 0;padding:8px 10px;font-size:10px}.egg-choice-examples{border-top:1px solid #e2e9e4;justify-content:space-between;align-items:center;gap:3px;min-height:60px;padding-top:5px;display:flex}.egg-choice-examples img{object-fit:contain;width:min(29%,58px);height:54px}.egg-choice-footer{border-top:1px solid #d9e3dc;justify-content:flex-end;align-items:center;gap:12px;margin-top:16px;padding-top:12px;display:flex}.egg-choice-footer .primary-action{min-width:190px;margin:0}.egg-slot-art.standard{filter:hue-rotate(85deg)}.egg-slot-art.rare{filter:hue-rotate(-70deg)}.egg-bonus-empty{color:#879083;margin:0;padding:10px 0;font:11px DM Mono,monospace}.bonus-egg-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;display:grid}.bonus-egg-token{background:#f7faf4;border:1px solid #d3e0d3;border-radius:6px;place-items:center;min-height:54px;display:grid}.bonus-egg-token img{object-fit:contain;width:38px;height:44px;display:block}@media (width<=520px){.inventory-item-count>small{display:none}.egg-choice-dialog{padding:16px}.egg-choice-grid{grid-template-columns:1fr;gap:7px}.egg-choice-card{grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:5px 9px;padding:9px}.egg-choice-top{grid-column:1/3}.egg-choice-top>img{width:38px;height:42px}.egg-choice-range{grid-area:1/3}.egg-choice-card>p{grid-column:1/-1;min-height:0}.egg-choice-odds{grid-column:1/3}.egg-choice-examples{border:0;grid-area:3/3;justify-content:flex-end;min-height:42px;padding:0}.egg-choice-examples img{width:30px;height:38px}.egg-choice-footer{justify-content:space-between}.egg-choice-footer .primary-action{flex:1;min-width:0}}@media (width<=340px){.inventory-supply-grid{grid-template-columns:1fr}}.bottom-nav{z-index:30;height:calc(var(--nav-height) + env(safe-area-inset-bottom));padding:0 4px env(safe-area-inset-bottom);border-top:2px solid var(--ink);background:#fff;grid-template-rows:minmax(0,1fr);grid-template-columns:repeat(5,minmax(0,1fr));display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 16px #1823261f}.bottom-nav-item{color:#7d8d89;background:0 0;border-radius:10px;align-content:end;justify-items:center;gap:3px;min-width:0;margin:6px 1px 2px;padding:2px 0;display:grid}.bottom-nav-item>span{font-size:18px;line-height:1}.bottom-nav-icon{width:23px;height:23px}.bottom-nav-item small{text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;font:700 9px DM Mono,monospace}.bottom-nav-item.active{color:var(--pokemon-blue);background:#e8f2fb}.bottom-nav-catch{margin-top:-16px;position:relative}.nav-pokeball{border:2.5px solid var(--ink);background:linear-gradient(180deg, var(--pokemon-red) 0 44%, var(--ink) 44% 56%, white 56% 100%);border-radius:50%;width:44px;height:44px;transition:transform .15s;position:relative;box-shadow:0 3px 8px #18232659,0 0 0 4px #fff}.nav-pokeball:after{content:"";border:2.5px solid var(--ink);background:#fff;border-radius:50%;width:12px;height:12px;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.bottom-nav-catch.active .nav-pokeball,.bottom-nav-catch:active .nav-pokeball{transform:scale(1.08)rotate(-8deg)}.bottom-nav-catch small{color:var(--pokemon-red)}.bottom-nav-catch.active{background:0 0}.more-menu-backdrop{z-index:39;background:0 0;position:fixed;inset:0}.more-menu{right:10px;bottom:calc(var(--nav-height) + env(safe-area-inset-bottom) + 8px);z-index:40;border:1.5px solid var(--ink);background:#fff;border-radius:9px;gap:4px;width:min(260px,100vw - 20px);padding:10px;animation:.16s both sheet-up;display:grid;position:fixed;box-shadow:4px 4px #00000047}.more-menu .eyebrow{margin:0 4px 3px}.more-menu button{min-height:44px;color:var(--ink);text-align:left;background:#fbfcfb;border:1px solid #e0e8e4;border-radius:6px;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:8px;padding:5px 8px;display:grid}.more-menu button.active{background:#edf6ef;border-color:#9cbcac}.more-menu button>span{color:#467657;text-align:center;font-size:17px}.more-menu button strong{font-size:11px}.more-menu button small{color:#77847f;font:8px DM Mono,monospace}.notification-bell{border:1.5px solid var(--ink);color:#344943;background:#fff;border-radius:50%;flex:0 0 34px;place-items:center;width:34px;height:32px;font-size:19px;display:grid;position:relative;box-shadow:1.5px 1.5px #0000006b}.notification-bell.has-unread{background:#fff6d7;border-color:#a87e12}.notification-bell>b{color:#fff;text-align:center;background:#c5342c;border-radius:99px;min-width:16px;height:16px;padding:1px 3px;font:800 8px DM Mono,monospace;position:absolute;top:-6px;right:-7px}@media (width<=520px){.trainer-hud .hud-chip:nth-child(3){display:none}}.content{width:min(100%,720px);margin:0 auto;padding:12px 12px 32px}.eyebrow{color:#80908f;letter-spacing:.14em;margin:0 0 10px;font:10px DM Mono,monospace}h1,h2,h3,p{margin-top:0}h2{letter-spacing:-.02em;margin:0;font-size:22px;font-weight:800}.trainer-card{margin-bottom:12px}.signed-in{background:#fff;border:1.5px solid #cfdeda;border-radius:12px;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.trainer-avatar{border:2px solid var(--ink);background:var(--pokemon-yellow);border-radius:50%;place-items:center;width:40px;height:40px;font-size:17px;font-weight:800;display:grid}.trainer-card-copy{min-width:0;display:grid}.trainer-card-copy strong{font-size:14px}.trainer-card-copy span{color:#7d8d89;text-overflow:ellipsis;white-space:nowrap;font:10px DM Mono,monospace;overflow:hidden}.sign-in{color:var(--ink);background:0 0;border:1px solid #b9c8c3;border-radius:6px;padding:8px 10px;font-size:11px}.test-session{color:#54736a;border:1px solid #b9c8c3;border-radius:8px;padding:11px 15px;font:11px DM Mono,monospace}.test-session-dot{background:#75a691;border-radius:50%;width:6px;height:6px;margin-right:8px;display:inline-block}.action-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.action-card{border:2px solid var(--ink);text-align:left;min-height:118px;color:var(--ink);box-shadow:var(--shadow-retro);border-radius:14px;align-content:space-between;justify-items:start;gap:8px;padding:12px;transition:transform .12s,box-shadow .12s;display:grid}.action-card:active{transform:translate(2px,2px);box-shadow:1px 1px #000000d9}.action-catch{background:linear-gradient(150deg,#ffe882,#ffd94d)}.action-battle{background:linear-gradient(150deg,#cbe4f8,#a9d2f0)}.action-training{background:linear-gradient(150deg,#d3ecca,#b7e0aa)}.action-pokedex{background:linear-gradient(150deg,#e4daf6,#cfbfec)}.action-icon{border:1.5px solid var(--ink);background:#ffffffa6;border-radius:10px;place-items:center;width:38px;height:38px;font-size:19px;display:grid}.action-card strong{text-transform:uppercase;font-size:15px;line-height:1.1}.action-card small{color:#182326a6;font:10px/1.35 DM Mono,monospace}.squad-strip{background:#fff;border:1.5px solid #cfdeda;border-radius:12px;padding:12px}.squad-strip .eyebrow{margin-bottom:8px}.squad-scroll{scrollbar-width:none;gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.squad-scroll::-webkit-scrollbar{display:none}.squad-slot{background:0 0;flex:0 0 62px;justify-items:center;gap:2px;display:grid;position:relative}.squad-slot img{object-fit:contain;background:#eef5f2;border:1.5px solid #cfdeda;border-radius:50%;width:56px;height:56px;padding:4px}.squad-slot small{color:#63756f;font:700 9px DM Mono,monospace}.squad-slot:active img{transform:scale(.94)}.primary-action{background:var(--pokemon-yellow);color:#1a1300;box-shadow:var(--shadow-retro);border:2px solid #1a1300;border-radius:4px;margin-top:21px;padding:13px 16px;font-size:12px;font-weight:700}.section-heading{justify-content:space-between;align-items:end;margin-bottom:12px;display:flex}.section-heading a{color:#5b7370;font:11px DM Mono,monospace;text-decoration:none}.section-heading a span{margin-left:12px}.auth-screen{min-height:100dvh;padding:20px;padding-top:calc(20px + env(safe-area-inset-top));padding-bottom:calc(20px + env(safe-area-inset-bottom));background:linear-gradient(160deg, var(--pokemon-navy) 0%, var(--pokemon-blue) 100%);justify-content:center;align-items:center;display:flex}.auth-card{border:3px solid var(--ink);text-align:center;background:#fff;border-radius:10px;width:100%;max-width:360px;padding:32px 24px;box-shadow:5px 5px #000000d9}.auth-logo{width:72px;height:72px;margin:0 auto 14px;display:block}.auth-card h1{text-transform:uppercase;letter-spacing:-.01em;font-size:24px}.auth-tagline{color:var(--muted);margin:8px 0 28px;font-size:14px}.auth-invite{border:2px solid var(--ink);background:#fff6c8;border-radius:12px;margin:-14px 0 22px;padding:10px 14px;font-size:14px}.auth-hint{color:var(--muted);text-align:center;margin:12px 0 0;font-size:12px}.auth-choice{flex-direction:column;gap:14px;display:flex}.trainer-btn{text-transform:uppercase;letter-spacing:.02em;border:2px solid var(--ink);width:100%;box-shadow:var(--shadow-retro);border-radius:8px;padding:18px 16px;font-size:16px;font-weight:800}.trainer-btn-login{background:var(--pokemon-blue);color:#fff}.trainer-btn-join{background:var(--pokemon-yellow,#ffcb05);color:var(--ink)}.auth-form{text-align:left;flex-direction:column;gap:12px;display:flex}.auth-form input{border:1px solid var(--line);font:inherit;border-radius:6px;width:100%;padding:14px;font-size:16px}.username-field{gap:6px;font-size:14px;font-weight:800;display:grid}.username-field span small{color:var(--muted);font-size:12px;font-weight:500;display:block}.username-field>small{color:var(--muted);font-size:11px;font-weight:500}.auth-back{color:var(--muted);text-align:center;background:0 0;padding:6px;font-size:13px}.auth-install{color:var(--ink);background:#fffdf2;border:2px dashed #b9b49a;border-radius:999px;margin:-10px auto 18px;padding:6px 12px;font-size:13px;font-weight:600;display:block}.turnstile-widget{justify-content:center;display:flex}.auth-error{color:#b0463f;width:100%;margin:0;font-size:12px}.otp-hint{color:#63756f;text-align:center;margin:0 0 8px;font-size:14px}.auth-form input.otp-input{text-align:center;letter-spacing:.4em;padding:12px 8px 12px calc(8px + .4em);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:28px;font-weight:800}.catch-section{margin-bottom:24px}.scanner-shell{gap:10px;display:grid}.camera-permission{border:2px solid var(--ink);box-shadow:var(--shadow-retro);background:linear-gradient(150deg,#e8f2fb,#d7e9f8);border-radius:14px;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:8px 12px;padding:14px;display:grid}.camera-permission .primary-action{grid-column:1/-1;width:100%;margin-top:4px}.camera-permission-denied{background:#fff3ef;border-color:#efc9bc}.camera-permission-icon{color:#245873;background:#b9d9ef;border-radius:10px;place-items:center;width:40px;height:40px;font-size:22px;font-weight:800;display:grid}.camera-permission-denied .camera-permission-icon{color:#702a1b;background:#ee9e87}.camera-permission strong{font-size:15px;display:block}.camera-permission p{color:#63756f;margin:5px 0 0;font-size:12px;line-height:1.45}.camera-frame{aspect-ratio:4/3;border:3px solid var(--ink);background:#101719;border-radius:14px;width:min(100%,620px);margin:auto;position:relative;overflow:hidden}.camera-frame video{object-fit:cover;width:100%;height:100%}.scan-reticle{aspect-ratio:1;border:3px solid var(--pokemon-yellow);width:54%;position:absolute;top:13%;left:23%;box-shadow:0 0 0 999px #00000057}.scanner-cancel{border:2px solid var(--ink);box-shadow:var(--shadow-retro);background:#fff;padding:10px 14px;position:absolute;bottom:14px;right:14px}.manual-qr{color:#657773;border:1px dashed #9aaba6;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font:10px DM Mono,monospace;display:flex}.manual-qr label{flex:1}.manual-qr div{gap:6px;display:flex}.manual-qr input{border:1px solid #9aaba6;border-radius:6px;width:76px;padding:8px;font:13px DM Mono,monospace}.manual-qr button{background:var(--pokemon-navy);color:#fff;border-radius:6px;padding:8px 12px}.dev-simulation{color:#657773;background:#f4f7f4;border:1px dashed #9aaba6;border-radius:8px;justify-self:start;padding:7px 10px;font:10px DM Mono,monospace}.encounter-stage{border:2.5px solid var(--ink);box-shadow:var(--shadow-retro);background:linear-gradient(#bfe0d2 0%,#dcefe4 55%,#f2f8f3 56%,#e7f2ea 100%);border-radius:16px;position:relative;overflow:hidden}.encounter-stage>p{padding:30px}.encounter-art{background:radial-gradient(at 50% 88%,#18232624 0 26%,#0000 27%);place-items:center;padding:20px 16px 6px;display:grid;position:relative}.encounter-art span{border:1.5px solid var(--ink);color:var(--ink);background:#fff;border-radius:99px;padding:3px 8px;font:800 10px DM Mono,monospace;position:absolute;top:12px;left:14px}.encounter-art img{object-fit:contain;filter:drop-shadow(0 14px 10px #1d363040);width:min(62%,220px);height:185px;animation:2.6s ease-in-out infinite matchup-bob}.encounter-agitated .encounter-art img{filter:drop-shadow(0 10px 12px #b7683644);animation:.65s ease-in-out infinite wild-pokemon-agitated}.encounter-calmed .encounter-art img{filter:drop-shadow(0 10px 12px #46926044)}.encounter-mood{color:#73431e;background:#fff1dc;border-left:3px solid #ad6426;border-radius:4px;gap:3px;margin:0 0 10px;padding:9px 11px;display:grid}.encounter-mood strong{font-size:13px}.encounter-mood span{font-size:11px;line-height:1.4}.encounter-mood.calm{color:#315f3c;background:#edf7ed;border-color:#488958}.encounter-berry-shortage{color:#805427;font-size:11px}.thrown-berry{z-index:3;object-fit:contain;width:44px;height:44px;animation:.8s ease-in both berry-to-pokemon;position:absolute;bottom:20px;left:8%}.berry-calm-ring{pointer-events:none;border:3px solid #72b583;border-radius:50%;width:110px;height:110px;animation:1s ease-out .65s both berry-calm-wave;position:absolute;top:calc(8% + 8px);left:calc(75% - 118px)}.berry-calmed .throw-pokemon{animation:1.2s both berry-pokemon-settle}@keyframes berry-to-pokemon{0%{opacity:1;bottom:20px;left:8%;transform:rotate(-20deg)scale(1)}45%{opacity:1;bottom:58%;left:38%;transform:rotate(75deg)scale(.85)}85%{opacity:1;bottom:calc(92% - 85px);left:calc(75% - 85px);transform:rotate(150deg)scale(.55)}to{opacity:0;bottom:calc(92% - 85px);left:calc(75% - 85px);transform:rotate(175deg)scale(.2)}}@keyframes berry-calm-wave{0%{opacity:.9;transform:scale(.55)}to{opacity:0;transform:scale(1.5)}}@keyframes berry-pokemon-settle{0%{transform:translateY(0)}35%{transform:translateY(-7px)}60%{transform:translateY(2px)}to{transform:translateY(0)}}@keyframes wild-pokemon-agitated{0%,to{transform:translate(0)rotate(0)}25%{transform:translate(-3px)rotate(-2deg)}65%{transform:translate(3px)rotate(2deg)}}@media (prefers-reduced-motion:reduce){.encounter-agitated .encounter-art img{animation:none}.thrown-berry,.berry-calm-ring,.berry-calmed .throw-pokemon{animation-duration:.15s;animation-delay:0s}}.encounter-copy{text-align:center;padding:8px 16px 16px}.encounter-copy h3{text-transform:uppercase;margin:0 0 2px;font-size:28px}.encounter-copy>p:not(.eyebrow):not(.auth-error){color:#506560;margin-bottom:12px;font:11px DM Mono,monospace}.encounter-copy .eyebrow{margin-bottom:4px}.encounter-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.encounter-actions .primary-action{grid-column:1/-1;min-height:52px;margin:0;font-size:14px}.encounter-actions .secondary-action,.encounter-actions .text-action{min-height:46px;margin:0}@media (width<=520px){.encounter-art{padding:8px 12px 0}.encounter-art img{height:clamp(80px,20dvh,140px)}.encounter-copy{padding:6px 12px 10px}.encounter-copy h3{margin-bottom:6px;font-size:22px}.encounter-copy .eyebrow{letter-spacing:.06em;margin:0 0 3px;font-size:9px;line-height:1.3}.encounter-mood{gap:2px;margin-bottom:6px;padding:6px 8px}.encounter-copy .encounter-supplies{margin:6px 0 8px}.encounter-actions{gap:6px}.encounter-actions .primary-action{min-height:44px;padding:8px}.encounter-actions .secondary-action,.encounter-actions .text-action{min-height:44px;padding:8px;font-size:12px}.encounter-actions .text-action{grid-column:1/-1}}.text-action{color:#536d65;background:0 0;text-decoration:underline}.secondary-action{border:2px solid var(--ink);color:var(--ink);background:#fff7dd;border-radius:4px;margin-top:10px;padding:12px 14px;font-size:12px;font-weight:700}.minigame-panel{border:2.5px solid var(--ink);box-shadow:var(--shadow-retro);background:#fff7dd;border-radius:16px;padding:18px 16px}.minigame-panel h3{text-transform:uppercase;margin:5px 0 8px;font-size:22px}.minigame-panel>p:not(.eyebrow){color:#506560;font-size:13px}.timing-track{border:2px solid var(--ink);background:#dcebe5;height:28px;margin:28px 0 22px;position:relative}.timing-zone{background:var(--pokemon-yellow);width:16%;height:100%;position:absolute;left:42%}.timing-marker{background:var(--pokemon-red);width:5px;height:38px;position:absolute;top:-7px;transform:translate(-50%)}.minigame-selection{background:#eef5f4}.minigame-options{gap:10px;margin:18px 0;display:grid}.minigame-options button{text-align:left;background:#fff;border:1px solid #cbded9;border-radius:9px;gap:5px;padding:14px;display:grid}.minigame-options small{color:#71837f}.reflex-field{border:2px solid var(--ink);background:#dcebe5;height:190px;margin:18px 0;position:relative;overflow:hidden}.reflex-target{background:var(--pokemon-yellow);border:2px solid var(--ink);border-radius:50%;width:48px;height:48px;font-size:22px;position:absolute;transform:translate(-50%,-50%)}.quiz-options{grid-template-columns:repeat(3,1fr);gap:8px;margin:20px 0;display:grid}.quiz-options button{border:2px solid var(--ink);background:#fff;padding:13px 8px}.throw-stage{text-align:center;border:2.5px solid var(--ink);min-height:420px;box-shadow:var(--shadow-retro);background:linear-gradient(#bfe0d2,#dcebe5);border-radius:16px;padding:18px 14px}.throw-stage h3{text-transform:uppercase;margin:15px 0 8px;font-size:24px}.throw-stage>p:not(.eyebrow){color:#63756f}.throw-field{background:repeating-linear-gradient(45deg,#ffffff59 0 1px,#0000 1px 18px);height:260px;position:relative;overflow:hidden}.throw-pokemon{object-fit:contain;width:190px;height:190px;position:absolute;top:12%;right:14%}.throw-ball{border:3px solid var(--ink);width:54px;height:54px;color:var(--pokemon-red);background:#fff;border-radius:50%;place-items:center;font-size:37px;display:grid;position:absolute;bottom:22px;left:12%}.throw-throw .throw-ball{animation:.55s ease-in forwards pokeball-flight}.throw-shake .throw-pokemon{animation:.2s ease-in-out 4 pokemon-shake}.throw-shake .throw-ball{animation:.35s ease-in-out 3 pokeball-shake;bottom:45px;left:50%}@keyframes pokeball-flight{to{bottom:150px;left:68%;transform:rotate(540deg)}}@keyframes pokeball-shake{0%,to{transform:rotate(0)}50%{transform:rotate(18deg)}}@keyframes pokemon-shake{0%,to{transform:translate(0)}50%{transform:translate(8px)}}.throw-stage{min-height:360px;padding:20px}.throw-pokemon{width:135px;height:135px;top:8%;right:25%}.throw-ball{width:48px;height:48px;font-size:31px;bottom:18px;left:10%}.throw-waiting{color:#314540;font-weight:700}.precision-meter{border:2px solid var(--ink);background:#ffffffb8;position:absolute}.precision-center{background:#ffe67a;position:absolute}.precision-marker{background:var(--pokemon-red);display:block;position:absolute}.axis-controls{justify-content:center;align-items:center;gap:18px;display:flex}.axis-controls .primary-action{margin-top:0}.throw-field{height:230px}.throw-pokemon{z-index:1;width:125px;height:125px;top:8%;right:25%}.throw-ball{z-index:4;bottom:70px;left:8%}.precision-meter{opacity:.35;z-index:2;transition:opacity .15s}.precision-meter.precision-active{opacity:1}.precision-x{height:20px;bottom:20px;left:18%;right:18%}.precision-y{width:20px;top:10%;bottom:36%;right:7%}.precision-x .precision-center{width:16%;top:0;bottom:0;left:42%}.precision-y .precision-center{height:16%;top:42%;left:0;right:0}.precision-x .precision-marker{width:5px;height:32px;top:-7px;transform:translate(-50%)}.precision-y .precision-marker{width:32px;height:5px;left:-7px;transform:translateY(-50%)}.throw-struggle .throw-ball{animation:.35s ease-in-out infinite pokeball-shake;bottom:48px;left:48%}.throw-throw .throw-ball{animation:.7s ease-in forwards pokeball-to-pokemon;bottom:70px;left:8%}.throw-struggle .throw-ball{bottom:calc(92% - 86.5px);left:calc(75% - 86.5px)}.throw-struggle .throw-pokemon{animation:.8s ease-in forwards pokemon-capture}@keyframes pokeball-to-pokemon{to{bottom:calc(92% - 86.5px);left:calc(75% - 86.5px);transform:rotate(540deg)}}@keyframes pokemon-capture{0%,35%{opacity:1;transform:scale(1)}55%{transform:translate(5px)scale(.95)}to{opacity:0;transform:scale(.25)}}.catch-success{color:#286348;background:#e2f1e9;border-left:4px solid #3d8b65;margin:12px 0 0;padding:12px 14px;font-size:13px}.collection-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 0;display:grid}.pokemon-card-tile{min-width:0;color:var(--ink);text-align:left;background:#fff;border:1.5px solid #ccdbd6;border-radius:10px;align-content:start;gap:5px;padding:8px 8px 9px;transition:transform .1s;display:grid;position:relative}.pokemon-card-tile:active{transform:scale(.97)}.pokemon-card-tile img{object-fit:contain;background:radial-gradient(circle at 50% 62%,#f6faf8 0 58%,#e8f1ed 59% 100%);border-radius:6px;width:100%;height:64px}.pokemon-card-image{height:64px;display:block;position:relative}.pokemon-card-image .pokemon-rarity-tag{position:absolute;top:2px;right:2px}.pokemon-card-number{color:#50665d;background:#f6faf8;border-radius:3px;padding:1px 3px;font:9px DM Mono,monospace;position:absolute;bottom:2px;left:2px}.pokemon-card-level{border:1px solid var(--ink);background:var(--pokemon-yellow);border-radius:99px;padding:1px 5px;font:800 8px DM Mono,monospace;position:absolute;top:2px;left:2px}.pokemon-card-evolution-badge{z-index:1;color:#205e39;background:#e0f5dc;border:1px solid #2d7149;border-radius:4px;padding:2px 4px;font:800 7px DM Mono,monospace;position:absolute;bottom:2px;right:2px}.pokemon-card-status{z-index:1;color:#38564e;background:#e5eeeb;border:1px solid #58746c;border-radius:4px;padding:2px 4px;font:800 7px DM Mono,monospace;position:absolute;bottom:2px;right:2px}.pokemon-card-tile.unavailable{cursor:not-allowed;opacity:.7;background:#f0f4f2;border-color:#bdcac6}.pokemon-card-tile.unavailable:active{transform:none}.pokemon-card-info{gap:3px;min-width:0;display:grid}.pokemon-card-info strong{overflow-wrap:anywhere;font-size:11px;line-height:1.15}.pokemon-card-info small{color:#7d8d89;overflow-wrap:anywhere;font:9px DM Mono,monospace}.pokemon-rarity-tag{color:#315f3c;background:#edf6e9;border:1px solid #7eaa84;border-radius:4px;align-items:center;width:fit-content;padding:2px 5px;font:800 7px/1.2 DM Mono,monospace;display:inline-flex}.pokemon-rarity-tag.uncommon{color:#315f7b;background:#edf4f9;border-color:#82a9c3}.pokemon-rarity-tag.rare{color:#80691e;background:#faf4dd;border-color:#c5ad5b}.pokemon-rarity-tag.epic{color:#5e4879;background:#f2eff8;border-color:#9984b6}.pokemon-card-hp{background:#e2e9e6;border-radius:99px;height:5px;overflow:hidden}.pokemon-card-hp i{background:#36a269;border-radius:99px;height:100%;display:block}.pokemon-card-hp.mid i{background:#e0a526}.pokemon-card-hp.low i{background:#d64032}.pokemon-card-tile.uncaught img{filter:grayscale()brightness(.55)contrast(.85);opacity:.8}.pokemon-card-tile.uncaught.discovered img{filter:none;opacity:1}.pokemon-card-tile.selected{outline:2.5px solid var(--pokemon-blue);border-color:var(--pokemon-blue);box-shadow:0 0 0 4px #0075be26}.pokemon-card-tile:focus-visible{outline:3px solid var(--pokemon-blue);outline-offset:2px}.pokedex-controls{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.pokedex-search{width:100%;min-height:44px;font:inherit;background:#fff;border:1.5px solid #9aaba6;border-radius:10px;padding:10px 12px;font-size:16px}.pokedex-progress{background:#e2e9e6;border:1px solid #c3d2cd;border-radius:99px;height:6px;margin-top:8px;overflow:hidden}.pokedex-progress i{background:linear-gradient(90deg, var(--pokemon-red), #ff7043);border-radius:99px;height:100%;display:block}.encounter-section .section-heading{flex-wrap:wrap;align-items:center;gap:12px}.pokemon-dialog{width:100%;max-width:560px;max-height:86dvh;padding:10px 16px calc(16px + env(safe-area-inset-bottom));border:2.5px solid var(--ink);color:var(--ink);background:#fff;border-bottom:0;border-radius:20px 20px 0 0;margin:auto auto 0;animation:.22s sheet-up;overflow-y:auto}.pokemon-dialog::backdrop{background:#182326ad}.pokemon-dialog:before{content:"";background:#ccd8d4;border-radius:99px;width:44px;height:5px;margin:2px auto 10px;display:block}@keyframes sheet-up{0%{opacity:.4;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@media (width>=640px){.pokemon-dialog{border-bottom:2.5px solid var(--ink);border-radius:14px;margin:auto;box-shadow:6px 6px #000000b3}.pokemon-dialog:before{display:none}}.pokemon-dialog-close{background:#edf5f2;border-radius:50%;width:40px;height:40px;font-size:26px;position:absolute;top:10px;right:10px}.pokemon-dialog-head{grid-template-columns:108px minmax(0,1fr);align-items:center;gap:14px;padding:0 36px 12px 0;display:grid}.pokemon-dialog-head img{aspect-ratio:1;object-fit:contain;background:radial-gradient(circle at 50% 62%,#f6faf8 0 58%,#e8f1ed 59% 100%);border:1.5px solid #dbe6e2;border-radius:12px;width:100%}.pokemon-dialog-head h2{text-transform:uppercase;overflow-wrap:anywhere;font-size:22px}.pokemon-name-heading{align-items:center;gap:7px;min-width:0;display:flex}.pokemon-name-heading h2{min-width:0;margin:0}.nickname-edit-button{color:#395850;background:#f1f6f4;border:1.5px solid #b9c8c3;border-radius:50%;flex:0 0 32px;place-items:center;width:32px;height:32px;font-size:16px;display:grid}.pokemon-inline-nickname{grid-template-columns:minmax(0,1fr) 34px 34px;gap:4px;width:100%;display:grid}.pokemon-inline-nickname input{border:1.5px solid #9aaba6;border-radius:6px;width:100%;min-width:0;height:36px;padding:5px 8px;font:700 15px Space Grotesk,sans-serif}.pokemon-inline-nickname button{border:1.5px solid var(--ink);background:var(--pokemon-yellow);border-radius:6px;width:34px;height:36px;font-weight:800}.pokemon-inline-nickname button:last-child{background:#edf3f1}.pokemon-dialog-head p:not(.eyebrow){color:#71837f;margin:4px 0;font-size:12px}.pokemon-dialog-head .eyebrow{margin-bottom:5px}.pokemon-types{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.pokemon-type{text-transform:uppercase;background:#e5ece9;border:1px solid #18232647;border-radius:99px;padding:4px 8px;font:700 9px DM Mono,monospace}.pokemon-type-normal{background:#e3e0d1}.pokemon-type-fire{background:#ffcfae}.pokemon-type-water{background:#bfe0fa}.pokemon-type-electric{background:#ffef9e}.pokemon-type-grass{background:#c9ecba}.pokemon-type-ice{background:#c7ecec}.pokemon-type-fighting{background:#f4bcb1}.pokemon-type-poison{background:#e4c1ea}.pokemon-type-ground{background:#ecdcb2}.pokemon-type-flying{background:#d4d4f7}.pokemon-type-psychic{background:#fdc4d4}.pokemon-type-bug{background:#dbe6a2}.pokemon-type-rock{background:#ded4ad}.pokemon-type-ghost{background:#cfc3e3}.pokemon-type-dragon{background:#c3b8f7}.pokemon-type-dark{background:#c9beb7}.pokemon-type-steel{background:#d8dee2}.pokemon-type-fairy{background:#fad2e2}.pokemon-health{border-top:1px solid var(--line);padding:10px 0}.pokemon-health div{justify-content:space-between;font:12px DM Mono,monospace;display:flex}.pokemon-health meter{width:100%;height:12px;margin-top:7px;display:block}.evolution-panel{background:linear-gradient(145deg,#fff9d9,#fffdf3);border:1.5px solid #d2c27b;border-radius:10px;margin:2px 0 10px;padding:10px}.evolution-panel>header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px;display:flex}.evolution-panel>header .eyebrow{color:#8b7633;margin:0 0 2px}.evolution-panel>header strong{text-transform:uppercase;font-size:12px}.evolution-panel>header>small{color:#746a4b;white-space:nowrap;font:9px DM Mono,monospace}.evolution-options{gap:6px;display:grid}.evolution-option{background:#ffffffd1;border:1px solid #e4ddbd;border-radius:8px;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px;display:grid}.evolution-option>img{object-fit:contain;background:#f4f5ed;border-radius:50%;width:40px;height:40px}.evolution-option-info{gap:3px;min-width:0;display:grid}.evolution-option-info strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.evolution-option-info small{color:#7b7766;font:8px DM Mono,monospace}.evolution-progress{background:#ece8d7;border-radius:99px;height:4px;overflow:hidden}.evolution-progress i{border-radius:inherit;background:#d4a900;height:100%;transition:width .2s;display:block}.evolution-option.ready{background:#f5fbf0;border-color:#a6c99d}.evolution-option.ready .evolution-progress i{background:#45a363}.evolution-option>button{color:#204d2d;background:#dff1d8;border:1.5px solid #29452f;border-radius:6px;min-width:56px;min-height:34px;padding:4px 7px;font-size:9px;font-weight:800}.evolution-option>button:disabled{color:#9aa19d;background:#f1f2ef;border-color:#ddd}.evolution-rule-note{color:#847b5f;margin-top:6px;font:8px DM Mono,monospace;display:block}.evolution-confirm-dialog{border:2.5px solid var(--ink);width:min(100% - 24px,480px);max-height:calc(100dvh - 24px);color:var(--ink);background:#fffef8;border-radius:12px;margin:auto;padding:18px;animation:.18s outcome-in;overflow-y:auto;box-shadow:7px 7px #000000b3}.evolution-confirm-dialog::backdrop{background:#121f1dc2}.evolution-confirm-dialog header{text-align:center}.evolution-confirm-dialog header .eyebrow{color:#796719;margin:0 0 4px}.evolution-confirm-dialog header h2{margin:0;font-size:21px}.evolution-preview-forms{grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);align-items:center;gap:4px;margin:14px 0;display:grid}.evolution-preview-forms figure{text-align:center;min-width:0;margin:0}.evolution-preview-forms img{object-fit:contain;background:radial-gradient(circle at 50% 62%,#fff 0 52%,#e7f0ec 53% 100%);border:1px solid #d5dfdb;border-radius:8px;width:100%;height:112px}.evolution-preview-forms figcaption{overflow-wrap:anywhere;text-transform:uppercase;margin-top:5px;font-size:11px;font-weight:800}.evolution-preview-forms>span{color:#988018;text-align:center;font-size:25px;font-weight:800}.evolution-level-reward{background:#fff4b9;border:1.5px solid #d8bd44;border-radius:7px;justify-content:space-between;align-items:center;gap:10px;padding:9px 10px;display:flex}.evolution-level-reward span{text-transform:uppercase;font:9px DM Mono,monospace}.evolution-level-reward strong{text-align:right;font-size:12px}.evolution-stat-preview{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:10px 0;display:grid}.evolution-stat-preview>div{background:#fff;border:1px solid #d7e2de;border-radius:7px;min-width:0;padding:8px}.evolution-stat-preview dt{color:#63756f;text-transform:uppercase;margin-bottom:4px;font:9px DM Mono,monospace}.evolution-stat-preview dd{align-items:baseline;gap:4px;margin:0;font-size:11px;display:flex}.evolution-stat-preview dd span{color:#84908c}.evolution-stat-preview dd b{color:#9aa5a1}.evolution-stat-preview dd strong{font-size:15px}.evolution-stat-preview dd em{color:#287449;margin-left:auto;font:800 10px DM Mono,monospace}.evolution-stat-preview dd em.loss{color:#a63c35}.evolution-preserved-note{color:#687873;text-align:center;margin:0;font-size:10px;line-height:1.45}.evolution-confirm-actions{grid-template-columns:minmax(90px,.7fr) minmax(150px,1.3fr);gap:8px;margin-top:14px;display:grid}.evolution-confirm-actions button{min-height:46px;margin:0}.evolution-confirm-actions .primary-action{background:var(--pokemon-yellow);color:var(--ink)}.pokemon-evolution-scene{z-index:1000;color:#fff;text-align:center;background:#172b28;align-content:center;justify-items:center;gap:8px;padding:24px;animation:.24s both evolution-scene-in;display:grid;position:fixed;inset:0;overflow:hidden}.pokemon-evolution-scene:before{content:"";pointer-events:none;background:repeating-linear-gradient(135deg,#0000 0 28px,#ffffff09 29px 30px);position:absolute;inset:0}.pokemon-evolution-copy,.pokemon-evolution-stage,.pokemon-evolution-target-name{z-index:1;position:relative}.pokemon-evolution-copy .eyebrow{color:#f6d967;margin:0 0 5px}.pokemon-evolution-copy h2{overflow-wrap:anywhere;max-width:90vw;margin:0;font-size:24px}.pokemon-evolution-stage{aspect-ratio:1.2;isolation:isolate;place-items:center;width:min(72vw,290px);display:grid;position:relative}.pokemon-evolution-stage:before{z-index:-1;aspect-ratio:1;content:"";clip-path:polygon(50% 0%,61% 34%,95% 5%,70% 41%,100% 50%,70% 59%,95% 95%,61% 66%,50% 100%,39% 66%,5% 95%,30% 59%,0 50%,30% 41%,5% 5%,39% 34%);opacity:0;background:#f4d452;width:78%;animation:2.65s both evolution-burst;position:absolute}.pokemon-evolution-stage img{object-fit:contain;filter:drop-shadow(0 10px 12px #00000057);width:72%;height:88%;position:absolute}.pokemon-evolution-source{animation:2.65s both pokemon-form-exit}.pokemon-evolution-target{opacity:0;animation:2.65s both pokemon-form-reveal}.pokemon-evolution-target-name{color:#f6d967;text-transform:uppercase;margin:0;font:800 16px DM Mono,monospace}@keyframes evolution-scene-in{0%{opacity:0}to{opacity:1}}@keyframes evolution-burst{0%,34%{opacity:0;transform:rotate(-20deg)scale(.1)}47%{opacity:1;transform:rotate(18deg)scale(1.2)}66%{opacity:.78;transform:rotate(80deg)scale(.94)}to{opacity:.34;transform:rotate(135deg)scale(.76)}}@keyframes pokemon-form-exit{0%,31%{opacity:1;transform:scale(1)rotate(0)}42%{opacity:1;transform:scale(1.08)rotate(-5deg)}51%,to{opacity:0;transform:scale(.2)rotate(18deg)}}@keyframes pokemon-form-reveal{0%,42%{opacity:0;filter:brightness(5)drop-shadow(0 0 18px #fff);transform:scale(.2)rotate(-12deg)}52%{opacity:1;filter:brightness(2.5)drop-shadow(0 0 18px #fff);transform:scale(.78)rotate(8deg)}68%{opacity:1;filter:brightness(1.25)drop-shadow(0 10px 12px #00000057);transform:scale(1.08)rotate(-3deg)}82%,to{opacity:1;filter:drop-shadow(0 10px 12px #00000057);transform:scale(1)rotate(0)}}@media (prefers-reduced-motion:reduce){.pokemon-evolution-scene,.pokemon-evolution-stage:before,.pokemon-evolution-source,.pokemon-evolution-target{animation-duration:.6s}}.pokemon-detail-stats{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 14px;margin:0;padding:10px 0 2px;display:grid}.pokemon-detail-stats div{border-bottom:1px dotted #dbe4e1;justify-content:space-between;align-items:baseline;gap:8px;min-width:0;padding:4px 0;display:flex}.pokemon-detail-stats dt{color:#63756f;font:10px DM Mono,monospace}.pokemon-detail-stats dd{overflow-wrap:anywhere;margin:0;font-size:14px;font-weight:800}.pokemon-progression{border-top:1px solid var(--line);gap:8px;padding:11px 0 2px;display:grid}.pokemon-progression>header{justify-content:space-between;align-items:end;gap:10px;display:flex}.pokemon-progression>header .eyebrow{margin:0 0 2px}.pokemon-progression>header h3{margin:0;font-size:18px}.pokemon-progression>header>small{color:#687873;text-align:right;max-width:58%;font:8px DM Mono,monospace}.pokemon-progression>article{background:#f8fbfa;border:1px solid #d4e0dc;border-radius:8px;gap:5px;padding:9px 10px;display:grid}.pokemon-progression>article>div:first-child{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.pokemon-progression>article strong{font-size:12px}.pokemon-progression>article span{color:#667873;font:9px DM Mono,monospace}.pokemon-progression>article>small{color:#6e7d79;font:8px DM Mono,monospace}.progress-track{background:#e0e9e6;border:1px solid #bdcdc7;border-radius:99px;height:8px;overflow:hidden}.progress-track i{border-radius:inherit;background:var(--pokemon-blue);height:100%;transition:width .2s;display:block}.pokemon-progression>article:nth-of-type(2) .progress-track i{background:#cf3d32}.pokemon-progression>article.complete .progress-track i{background:#3a9b61}.pokemon-combat-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin:1px 0 0;display:grid}.pokemon-combat-stats div{text-align:center;border:1px solid #dde6e3;border-radius:6px;padding:7px}.pokemon-combat-stats dt{color:#75847f;text-transform:uppercase;font:8px DM Mono,monospace}.pokemon-combat-stats dd{margin:2px 0 0;font-size:14px;font-weight:800}.pokemon-catch-date{color:#8a9691;margin:10px 0 0;font:10px DM Mono,monospace}.pokemon-action-error{color:#8f2d27;background:#fff0ed;border-left:3px solid #b0463f;margin:8px 0 0;padding:8px 10px;font-size:12px}.pokemon-nap-notice{color:#36564d;background:#edf4f1;border-left:3px solid #55776d;margin:8px 0 0;padding:9px 10px;font-size:11px}.pokemon-dialog-actions{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-top:12px;padding-top:12px;display:grid}.pokemon-dialog-actions .primary-action,.pokemon-dialog-actions .secondary-action{min-height:48px;margin:0}.pokemon-dialog-actions .feed-berry-action{color:#174e31;background:#dff3d6;border-color:#26633c}.pokemon-dialog-actions .feed-berry-action:disabled{color:#88938f;background:#edf1ef;border-color:#c4ceca}.pokemon-dialog-actions button:disabled{opacity:.5;cursor:not-allowed}.release-action{color:#8d2020;background:#fff4f3;border:2px solid #a52c2c;border-radius:4px;min-height:48px;margin:0;font-weight:700}.pokedex-toggle{background:#e8f0ed;border:1px solid #d1e0db;border-radius:8px;gap:3px;padding:3px;display:inline-flex}.pokedex-toggle button{color:#71837f;background:0 0;border-radius:6px;padding:8px 11px;font-size:11px}.pokedex-toggle button.active{color:var(--ink);background:#fff;box-shadow:0 1px 3px #1823261f}.available-list .is-uncaught{opacity:.58;filter:grayscale(.7)}.available-list .is-caught{border-color:#94c6ae}.collection-empty{color:#879694;grid-column:1/-1}.battle-section{margin-top:4px}.empty-view{background:#ffffffdb;border:1px solid #d7e4e0;border-radius:12px;margin-top:36px;padding:34px;box-shadow:0 8px 24px #28504b0f}.empty-view h2{margin-bottom:10px}.empty-view>p:not(.eyebrow){color:#71837f}.training-section{margin-top:4px}.training-lede{color:#71837f;margin-bottom:4px;font-size:12px}.training-empty{color:#71837f;background:#fff;border:1px solid #d7e4e0;border-radius:10px;padding:22px}.nickname-action{margin-top:7px;padding:0;font-size:10px;display:block}.nickname-form{gap:5px;margin-top:6px;display:flex}.nickname-form input{border:1px solid #cbded9;border-radius:4px;width:110px;padding:5px;font-size:11px}.nickname-form button{color:#314540;background:#dcebe5;border-radius:4px;padding:5px 8px;font-size:11px}.training-games{background:#eef5f4;border:1px solid #cbded9;border-radius:10px;padding:20px}.training-games h3{margin:5px 0 8px}.training-games>p:not(.eyebrow){color:#71837f}.training-game-options{gap:9px;margin:15px 0;display:grid}.training-game-options button{text-align:left;background:#fff;border:1px solid #cbded9;border-radius:8px;gap:5px;padding:13px;display:grid}.training-game-options small{color:#71837f}.training-tap-button{border:3px solid var(--ink);width:140px;height:140px;box-shadow:var(--shadow-retro);background:#ffe67a;border-radius:50%;margin:18px auto;font-weight:800;display:block}.training-reflex-field{border:2px solid var(--ink);background:#dcebe5;height:180px;margin:16px 0;position:relative}.training-reflex-target{border:2px solid var(--ink);background:#bfe1b8;border-radius:50%;width:48px;height:48px;position:absolute;transform:translate(-50%,-50%)}.training-timing-track{border:2px solid var(--ink);background:#dcebe5;height:28px;margin:20px 0;position:relative;overflow:hidden}.training-timing-track span{background:#ffe67a;width:16%;height:100%;position:absolute;left:42%}.training-timing-button{border:2px solid var(--ink);background:#fff;padding:12px 16px}.battle-arena{gap:14px;display:grid}.battle-roster,.battle-open-list{background:#ffffffb8;border:1px solid #cbd9d4;padding:20px}.battle-roster h3,.battle-open-list h3{margin:3px 0 0;font-size:20px}.battle-selected{color:#285f48;text-transform:uppercase;background:#e5f2eb;border:1px solid #8fb7a7;padding:7px 10px;font:10px DM Mono,monospace}.battle-pokemon-picker{min-width:0}.battle-choice-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));margin-top:0}.ai-difficulty{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:2px 0 14px;display:grid}.ai-difficulty button{min-width:0;min-height:82px;color:var(--ink);text-align:left;background:#f7faf9;border:1.5px solid #c7d4d0;border-radius:7px;align-content:start;gap:3px;padding:9px 7px;display:grid}.ai-difficulty button.active{border-color:var(--pokemon-blue);background:#e8f5fb;box-shadow:0 0 0 2px #0075be21}.ai-difficulty strong{font-size:12px}.ai-difficulty small{color:#657670;font-size:9px;line-height:1.25}.ai-difficulty span{color:#30634e;margin-top:auto;font:8px/1.25 DM Mono,monospace}.battle-roster>.primary-action{margin-top:16px}.battle-empty,.battle-hint{color:#71837f}.battle-hint{margin-top:10px;font:11px DM Mono,monospace}.battle-open-list ul{gap:10px;margin:12px 0 0;padding:0;list-style:none;display:grid}.challenge-card{border:2px solid var(--ink);background:#fff;grid-template-columns:74px minmax(0,1fr) auto auto;align-items:center;gap:16px;padding:14px;display:grid;box-shadow:3px 3px #0000009e}.challenge-card img{object-fit:contain;background:#eef3f0;width:74px;height:74px}.challenge-card p,.challenge-card small{color:#657773;margin:2px 0;font-size:10px;display:block}.challenge-card strong{margin:4px 0;font-size:18px;display:block}.challenge-versus{color:var(--pokemon-red);font:800 18px DM Mono,monospace}.challenge-card>.primary-action{min-width:160px;margin:0}.battle-waiting-room{border:2px solid var(--ink);box-shadow:var(--shadow-retro);background:#fff7d9;grid-template-columns:110px minmax(0,1fr) auto;align-items:center;gap:20px;padding:20px;display:grid}.battle-waiting-room img{object-fit:contain;width:110px;height:110px}.battle-waiting-room h3{text-transform:uppercase;margin:3px 0 8px;font-size:23px}.battle-waiting-room p:not(.eyebrow){color:#5e6865;max-width:540px}.battle-waiting-room .text-action{grid-column:2/-1;justify-self:start}.battle-searching{gap:6px;display:flex}.battle-searching i{background:var(--pokemon-red);border-radius:50%;width:9px;height:9px;animation:1.2s ease-in-out infinite battle-pulse}.battle-searching i:nth-child(2){animation-delay:.15s}.battle-searching i:nth-child(3){animation-delay:.3s}@keyframes battle-pulse{0%,to{opacity:.25;transform:translateY(0)}45%{opacity:1;transform:translateY(-4px)}}.battle-active{border:2px solid var(--ink);background:#f7f8f4;overflow:hidden;box-shadow:5px 5px #000000b3}.battle-round-header{background:var(--pokemon-navy);color:#fff;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.battle-round-header h2{margin:2px 0 0;font-size:22px}.battle-round-header span{color:#ffe36d;text-transform:uppercase;font:11px DM Mono,monospace}.battle-stage{background-color:#dcebe5;background-image:repeating-linear-gradient(0deg,#0000 0 31px,#254a4112 31px 32px);grid-template-columns:minmax(0,1fr) 46px minmax(0,1fr);align-items:center;min-height:280px;padding:20px;display:grid}.battle-fighter{grid-template-columns:minmax(0,1fr) minmax(100px,180px);align-items:center;gap:10px;min-width:0;display:grid}.battle-fighter-opponent{direction:rtl}.battle-fighter-opponent>*{direction:ltr}.battle-fighter img{aspect-ratio:1;object-fit:contain;filter:drop-shadow(0 12px 8px #1d363033);width:100%;max-height:180px}.battle-fighter h3{text-transform:uppercase;overflow-wrap:anywhere;margin:4px 0;font-size:24px}.battle-fighter-copy{min-width:0}.battle-versus{border:2px solid var(--ink);background:var(--pokemon-yellow);width:46px;height:46px;color:var(--ink);border-radius:50%;place-items:center;font:800 15px DM Mono,monospace;display:grid}.battle-health{background:#ffffffe0;border:1px solid #aac0b8;grid-column:1/-1;padding:9px 11px}.battle-health>div:first-child{justify-content:space-between;font:10px DM Mono,monospace;display:flex}.battle-health-track{background:#d9dfdc;height:8px;margin-top:6px;overflow:hidden}.battle-health-track i{background:#36a269;height:100%;transition:width .45s;display:block}.battle-turn-feed{background:#fff9df;border-top:1px solid #cbd9d4;border-bottom:1px solid #cbd9d4;padding:14px 20px}.battle-turn-feed p:not(.eyebrow){margin:5px 0 0;font:11px DM Mono,monospace}.battle-turn-feed .super-effective{color:#a32626;font-weight:700}.battle-command-panel{padding:20px}.battle-command-panel h3{text-transform:uppercase;margin:3px 0 0;font-size:20px}.battle-waiting{color:#536d65;margin:16px 0 0;font:12px DM Mono,monospace}.move-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:16px;display:grid}.move-button{--move-color:#75817d;border:1px solid #bccac5;border-left:6px solid var(--move-color);min-height:92px;color:var(--ink);text-align:left;background:#fff;gap:5px;padding:11px 12px;display:grid}.move-button span{font-size:14px;font-weight:800}.move-button small{color:var(--move-color);text-transform:uppercase;font:9px DM Mono,monospace}.move-button em{color:#64736f;font-size:10px;font-style:normal;font-weight:400}.move-button:hover:not(:disabled){border-color:var(--move-color);background:#fffbea;transform:translateY(-1px)}.move-fire{--move-color:#bd482e}.move-water{--move-color:#2877a7}.move-grass{--move-color:#438640}.move-electric{--move-color:#9b7900}.move-ice{--move-color:#408c9d}.move-fighting{--move-color:#a84632}.move-poison{--move-color:#864e98}.move-ground{--move-color:#8b682d}.move-flying{--move-color:#5575aa}.move-psychic{--move-color:#b43f68}.move-bug{--move-color:#687f24}.move-rock{--move-color:#77672a}.move-ghost{--move-color:#625783}.move-dragon{--move-color:#5540a4}.move-dark{--move-color:#514843}.move-steel{--move-color:#63777d}.move-fairy{--move-color:#a84976}.battle-result{border:2px solid var(--ink);box-shadow:var(--shadow-retro);padding:28px}.battle-result-win{background:#e2f2e5}.battle-result-loss{background:#f7e8e4}.battle-result h3{text-transform:uppercase;margin:4px 0 12px;font-size:25px}.battle-result .primary-action{margin-top:18px}.battle-mode-grid{gap:7px;display:grid}.arena-choices{gap:18px;max-width:560px;display:grid}.arena-choice-group{gap:7px;display:grid}.arena-training-choice{border-top:1px solid #d6e0dc;padding-top:12px}.arena-choices-heading{margin-bottom:10px}.arena-choices-heading .eyebrow{margin-bottom:3px}.arena-choices-heading h2{text-transform:uppercase;font-size:19px}.battle-mode-tile{min-width:0;min-height:72px;color:var(--ink);text-align:left;background:#fffffff5;border:1.5px solid #cbd9d4;border-radius:12px;grid-template-columns:42px minmax(0,1fr) auto 16px;align-items:center;gap:10px;padding:10px 12px;transition:transform .12s,box-shadow .12s,border-color .12s;display:grid;position:relative;box-shadow:0 2px 7px #1823260f}.battle-mode-tile:hover,.battle-mode-tile:focus-visible{border-color:#7b9d92;box-shadow:0 4px 12px #1823261f}.battle-mode-tile:active{transform:scale(.99)}.battle-mode-ai .battle-mode-emblem{color:#c45d1d;background:#fff1df}.battle-mode-pvp .battle-mode-emblem{color:var(--pokemon-blue);background:#e6f2fb}.battle-mode-join .battle-mode-emblem{color:#32834c;background:#e6f3e4}.battle-mode-emblem{border:1px solid #d6e0dc;border-radius:50%;place-items:center;width:40px;height:40px;font:800 11px DM Mono,monospace;display:grid}.battle-mode-copy{min-width:0}.battle-mode-copy strong{text-transform:uppercase;overflow-wrap:anywhere;font-size:13px;line-height:1.15;display:block}.battle-mode-copy small{color:#6f807b;margin-top:4px;font-size:10px;line-height:1.25;display:block}.battle-mode-tile em{color:#657773;text-align:right;text-transform:uppercase;white-space:nowrap;font:800 8px DM Mono,monospace}.battle-mode-arrow{color:#82918f;font-size:18px;font-weight:500}.training-roster{margin-top:4px}.battle-step-trail{align-items:center;gap:12px;display:flex}.battle-step-trail .text-action{margin:0}.battle-step-trail span{color:#5f706b;text-transform:uppercase;font:700 11px DM Mono,monospace}.battle-open-list .challenge-card{width:100%;color:var(--ink);text-align:left;cursor:pointer;grid-template-columns:74px minmax(0,1fr) auto}.battle-open-list .challenge-card span{min-width:0}.battle-open-list .challenge-card:hover{transform:translate(-1px,-1px);box-shadow:4px 4px #0000009e}.battle-matchup{border:2px solid var(--ink);background:radial-gradient(circle at 25% 60%,#fff7c2 0 22%,#0000 23%),radial-gradient(circle at 75% 40%,#d7ecff 0 22%,#0000 23%),#e6f0ec;grid-template-columns:minmax(0,1fr) 40px minmax(0,1fr);align-items:center;gap:8px;margin-bottom:18px;padding:16px 10px;display:grid}.battle-matchup>div{text-align:center;justify-items:center;min-width:0;display:grid}.battle-matchup img{object-fit:contain;filter:drop-shadow(0 8px 5px #1d363033);width:104px;height:104px;animation:2.4s ease-in-out infinite matchup-bob}.battle-matchup>div:last-child img{animation-delay:-1.2s}.battle-matchup strong{text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;max-width:100%;overflow:hidden}.battle-matchup small{color:#5f706b;font:9px DM Mono,monospace}.battle-matchup>b{border:2px solid var(--ink);background:var(--pokemon-red);color:#fff;border-radius:50%;place-items:center;width:40px;height:40px;font:800 12px DM Mono,monospace;display:grid}.battle-matchup-unknown{color:#18232659;place-items:center;width:104px;height:104px;font:800 54px DM Mono,monospace;display:grid}@keyframes matchup-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.battle-start-action{width:100%;min-height:52px;font-size:14px}.battle-confirm-dialog{border:2.5px solid var(--ink);width:min(100% - 24px,520px);max-height:calc(100dvh - 24px);color:var(--ink);background:#fffef8;border-radius:12px;margin:auto;padding:18px;overflow-y:auto;box-shadow:7px 7px #000000b3}.battle-confirm-dialog::backdrop{background:#121f1dc2}.battle-confirm-dialog h2{text-align:center;margin:0 0 14px;font-size:21px}.battle-confirm-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px;display:grid}.battle-confirm-actions button{min-height:48px;margin:0}.arena-menu{inset:auto 12px calc(var(--nav-height) + env(safe-area-inset-bottom) + 20px) auto;border:2px solid var(--ink);width:min(280px,100vw - 24px);color:var(--ink);box-shadow:var(--shadow-retro);background:#fff;border-radius:10px;margin:0;padding:8px;position:fixed}.arena-menu::backdrop{background:#121f1d59}.arena-menu nav{gap:6px;display:grid}.arena-menu button{width:100%;min-height:52px;color:var(--ink);text-align:left;background:#f4f7f4;border:1px solid #bdcec8;border-radius:6px;padding:12px 16px;font-size:15px;font-weight:700}.arena-menu button:focus-visible{outline:3px solid var(--pokemon-blue);outline-offset:1px}.arena-menu .arena-menu-close{color:#657773;text-align:center;background:0 0;border:0;min-height:44px;margin-top:8px;font-size:12px}.arena-record-tabs button{color:#5f706b;background:#fff;border:1px solid #bdcec8;min-width:0;min-height:48px;padding:8px;font-weight:700}.arena-record-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.arena-record-tabs button.active{color:#285f48;background:#e5f2eb;border-color:#97b4a8}@media (width>=620px){.arena-menu{right:max(12px,50vw - 348px)}}.arena-battle-tabs{border-bottom:2px solid #bdcec8;gap:0;min-width:0;display:flex}.arena-battle-tabs button{color:#657773;background:0 0;border:1px solid #0000;border-bottom-width:3px;border-radius:7px 7px 0 0;flex:1;min-width:0;min-height:48px;margin-bottom:-2px;padding:10px;font-size:14px;font-weight:700}.arena-battle-tabs button.active{border-color:#bdcec8;border-bottom-color:var(--pokemon-blue);color:var(--pokemon-blue);background:#fff}.arena-pvp-filters{margin:0}.arena-pvp-filters button{min-height:62px}.arena-availability-filter{color:#657773;align-items:center;gap:8px;min-height:44px;margin-bottom:8px;font-size:11px;display:flex}.arena-availability-filter input{width:18px;height:18px}.pokemon-card-training,.pokemon-card-battle{background:#e5ece9;border-radius:99px;height:5px;display:block;overflow:hidden}.pokemon-card-training i,.pokemon-card-battle i{background:var(--pokemon-blue);border-radius:99px;height:100%;display:block}.pokemon-card-battle i{background:#ae7931}.arena-tab-count{background:#d4e6db;border-radius:8px;margin-left:5px;padding:1px 5px;font-size:9px;display:inline-block}.arena-roster-note{color:#657773;margin:4px 0 12px;font-size:11px;line-height:1.5}.battle-roster-card{min-width:0}.battle-roster-card .pokemon-card-tile{width:100%;height:100%}.battle-roster-card.in-battle .pokemon-card-tile{background:#fff8df;border-color:#b38a2f}.battle-roster-card.in-battle .pokemon-card-status{z-index:1;color:#ffe36d;text-align:center;background:#23312deb;border:0;border-radius:0;padding:4px 2px;font:800 10px DM Mono,monospace;inset:24px 0 auto}.arena-completion-notice{background:#e5f2eb;border:1px solid #97b4a8;border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:10px;font-size:12px;display:flex}.arena-completion-notice .text-action{margin:0}.arena-cancel-preview{text-align:center;justify-items:center;display:grid}.arena-cancel-preview img{object-fit:contain;width:112px;height:112px}.arena-cancel-preview p{color:#657773;font-size:12px}.training-game-controls{border:0;min-width:0;margin:0;padding:0}.battle-level{border:1px solid var(--ink);background:var(--pokemon-yellow);color:var(--ink);letter-spacing:.02em;vertical-align:middle;white-space:nowrap;margin:2px 0;padding:2px 6px;font:800 9px DM Mono,monospace;display:inline-block}.replay-fighter .battle-level{justify-self:center}.healing-center{gap:10px;display:grid}.healing-lede{color:#657773;margin:0;font-size:11px}.healing-roster{gap:7px;display:grid}.healing-row{background:#fff;border:1.5px solid #cbd9d4;border-radius:12px;grid-template-columns:58px minmax(0,1fr) 76px;align-items:center;gap:8px;min-width:0;padding:8px;display:grid}.healing-row>img{object-fit:contain;background:#eff5f2;border-radius:10px;width:58px;height:58px}.healing-pokemon-info{min-width:0}.healing-pokemon-name,.healing-hp-copy{justify-content:space-between;align-items:baseline;gap:6px;display:flex}.healing-pokemon-name strong{text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;min-width:0;font-size:12px;overflow:hidden}.healing-pokemon-name span{color:#5f706b;flex:none;font:9px DM Mono,monospace}.healing-hp-copy{color:#657773;margin-top:6px;font:9px DM Mono,monospace}.healing-hp-copy b{color:var(--ink)}.healing-hp-track{background:#e5ece9;border-radius:99px;height:5px;margin-top:4px;overflow:hidden}.healing-hp-track i{background:#36a269;border-radius:99px;height:100%;display:block}.healing-hp-track.mid i{background:#e0a526}.healing-hp-track.low i{background:#d64032}.healing-feed-button{color:#205c34;background:#e5f4df;border:1.5px solid #4f8059;border-radius:9px;justify-items:center;gap:1px;min-height:58px;padding:4px;display:grid}.healing-feed-button>span{font-size:9px}.healing-feed-button strong{font:800 12px DM Mono,monospace}.healing-feed-button small{white-space:nowrap;font-size:8px}.healing-feed-button:disabled{color:#89938f;background:#edf1ef;border-color:#d4ddda}.healing-actions{gap:4px;display:grid}.healing-actions .healing-feed-button{min-height:42px}.healing-actions .healing-feed-button>span{display:none}.healing-actions .healing-nap-button{color:#315149;background:#edf4f1;border:1px solid #5a7770;border-radius:7px;min-height:34px;padding:3px;font:700 8px DM Mono,monospace}.healing-actions .healing-nap-button:disabled{color:#75817d;background:#edf1ef;border-color:#d4ddda}.healing-empty,.healing-all-well{color:#657773;background:#fff;border:1.5px solid #cbd9d4;border-radius:12px;padding:18px}.healing-all-well{text-align:center;justify-items:center;gap:4px;padding:28px 16px;display:grid}.healing-all-well>span{color:#247545;background:#dff1d7;border-radius:50%;place-items:center;width:42px;height:42px;font-size:23px;display:grid}.healing-all-well strong{color:var(--ink);font-size:15px}.healing-all-well small,.healing-no-berries{color:#74827e;font-size:11px}.healing-no-berries{background:#fff4dc;border-radius:8px;margin:0;padding:10px}.egg-center{gap:10px;display:grid}.egg-center-header{border-bottom:1px solid #cfdcd7;justify-content:space-between;align-items:center;gap:10px;padding-bottom:10px;display:flex}.egg-center-header .eyebrow{color:#617d70;margin:0 0 2px}.egg-center-header h2{margin:0;font-size:19px}.egg-center-header>span{color:#285d3d;white-space:nowrap;background:#e5f5e9;border:1px solid #8bb69b;border-radius:99px;padding:5px 8px;font:700 9px DM Mono,monospace}.egg-center-lede{color:#63756f;margin:0;font-size:11px}.egg-slot-grid{grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:6px;display:grid}.egg-slot{min-width:0;min-height:84px;color:var(--ink);background:#ffffffc7;border:1.5px dashed #aabbb4;border-radius:7px;align-content:center;justify-items:center;gap:3px;padding:5px 3px;display:grid}.egg-slot.occupied{background:#fffbea;border-style:solid;border-color:#c8b755}.egg-slot-number{color:#75837e;white-space:nowrap;font:7px DM Mono,monospace}.egg-slot strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:9px;overflow:hidden}.egg-slot small{color:#667772;white-space:nowrap;font:7px DM Mono,monospace}.egg-hatch-progress{background:#e8e5d3;border-radius:99px;width:100%;height:4px;overflow:hidden}.egg-hatch-progress i{border-radius:inherit;background:#d2ad21;height:100%;transition:width .5s linear;display:block}.egg-inventory-heading{justify-content:space-between;align-items:baseline;margin-top:4px;display:flex}.egg-inventory-heading h3{margin:0;font-size:14px}.egg-inventory-heading span{color:#71817a;font:9px DM Mono,monospace}.egg-inventory{gap:6px;display:grid}.egg-item{background:#fff;border:1px solid #d0ddd7;border-radius:8px;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:9px;padding:8px;display:grid}.egg-item-mark{color:#537b62;background:#f4f8f6;border:1px solid #b9c8c1;border-radius:50%;place-items:center;width:36px;height:36px;font-size:25px;display:grid}.egg-item-mark.standard{color:#3273a3;background:#edf6ff}.egg-item-mark.rare{color:#a47a11;background:#fff4ce}.egg-item-copy{gap:3px;min-width:0;display:grid}.egg-item-copy strong{font-size:11px}.egg-item-copy small{color:#74837e;font:8px DM Mono,monospace}.egg-item>button{color:#28563a;background:#e4f3df;border:1.5px solid #355c43;border-radius:6px;min-width:64px;min-height:38px;padding:5px 8px;font-size:10px;font-weight:800}.egg-item>button:disabled{opacity:.55}.egg-item-status{color:#8b761a;font:9px DM Mono,monospace}.egg-empty{color:#708079;text-align:center;border:1px dashed #c4d2cc;border-radius:8px;padding:14px;font-size:11px}.egg-reveal-backdrop{z-index:90;background:#101f1bc7;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.egg-reveal{border:2px solid var(--ink);text-align:center;background:#fffdf5;border-radius:12px;width:min(100%,380px);padding:22px;animation:.24s both outcome-in;box-shadow:6px 6px #00000073}.egg-reveal>.eyebrow{color:#917516;margin:0}.egg-reveal h2{margin:6px 0;font-size:21px}.egg-reveal>p:not(.eyebrow){color:#697872;font:9px DM Mono,monospace}.egg-reveal-art{place-items:center;width:180px;height:150px;margin:8px auto;display:grid;position:relative}.egg-reveal-art:before{content:"";background:#fff0a8;border-radius:50%;animation:.8s both egg-shell-break;position:absolute;inset:15px}.egg-reveal-art img{object-fit:contain;width:100%;height:100%;animation:.8s cubic-bezier(.2,.8,.3,1.2) both egg-pokemon-pop;position:relative}.egg-reveal .primary-action{width:100%;margin:14px 0 0}.egg-reveal-backdrop{animation:.18s both evolution-scene-in}@keyframes egg-shell-break{0%{opacity:.2;clip-path:inset(0);transform:scale(.5)}45%{opacity:1;transform:scale(1.1)}to{opacity:.55;clip-path:polygon(0 0,100% 0,100% 42%,56% 42%,53% 55%,49% 45%,45% 58%,42% 47%,0 48%);transform:scale(1.25)}}@keyframes egg-pokemon-pop{0%{opacity:0;filter:brightness(3);transform:translateY(20px)scale(.25)}65%{opacity:1;filter:brightness(1.3);transform:translateY(-8px)scale(1.08)}to{opacity:1;filter:none;transform:translateY(0)scale(1)}}.trade-center{gap:10px;display:grid}.trade-center-header{border-bottom:1px solid #d1ddd8;justify-content:space-between;align-items:center;gap:10px;padding-bottom:9px;display:flex}.trade-center-header .eyebrow{color:#637a70;margin:0 0 2px}.trade-center-header h2{margin:0;font-size:19px}.mystery-box-button{color:#483b14;text-align:left;background:#fff3bd;border:1.5px solid #ac8c20;border-radius:7px;grid-template-columns:20px auto;align-items:center;gap:0 5px;min-width:92px;padding:6px 8px;display:grid}.mystery-box-button>span{grid-row:span 2;font-size:18px}.mystery-box-button strong{font:800 13px DM Mono,monospace}.mystery-box-button small{font-size:8px}.mystery-box-button b{text-align:center;text-transform:uppercase;grid-column:1/-1;padding-top:4px;font-size:9px}.mystery-box-button:disabled{opacity:.58}.trade-tabs{background:#e9efec;border:1px solid #ccd9d4;border-radius:7px;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;padding:3px;display:grid}.trade-tabs button{color:#61716b;background:0 0;border-radius:5px;min-height:44px;padding:7px 4px;font:700 10px/1.4 DM Mono,monospace}.trade-tabs button.active{color:var(--ink);background:#fff;box-shadow:0 1px 3px #1823261f}.trade-first-come{color:#665922;background:#fff8dc;border-left:3px solid #d0ac2b;margin:0;padding:8px 10px;font-size:10px}.trade-notice{color:#2d6343;background:#eaf6e9;border-left:3px solid #368556;margin:0;padding:8px 10px;font-size:10px}.trade-pokemon-row button:disabled{color:#78847f;cursor:not-allowed;background:#edf1ef;border-color:#c8d0cd}.trade-columns{gap:10px;display:grid}.trade-panel{background:#ffffffe0;border:1px solid #d1ddd8;border-radius:8px;min-width:0;padding:11px}.trade-panel>header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:9px;display:flex}.trade-panel>header .eyebrow{color:#74847e;margin:0 0 2px}.trade-panel>header h3{margin:0;font-size:13px}.trade-panel>header>span{color:#71817a;font:9px DM Mono,monospace}.trade-own-list,.trade-offer-list{gap:5px;max-height:420px;display:grid;overflow-y:auto}.trade-pokemon-row{background:#fff;border:1px solid #e0e7e4;border-radius:6px;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:7px;min-width:0;padding:6px;display:grid}.trade-pokemon-row img,.trade-request-row img{object-fit:contain;background:#eff5f2;border-radius:6px;width:42px;height:42px}.trade-pokemon-row>span{gap:3px;min-width:0;display:grid}.trade-pokemon-row strong{text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.trade-pokemon-row small{color:#74837d;font:8px DM Mono,monospace}.trade-pokemon-row button,.trade-request-form button,.trade-request-row button{color:#315a3c;background:#e8f4e5;border:1px solid #53765e;border-radius:5px;min-height:34px;padding:4px 7px;font-size:8px;font-weight:800}.trade-pokemon-row .trade-cancel-button,.trade-request-row .trade-cancel-button{color:#596862;background:#f1f4f3;border-color:#c8d0cd}.trade-empty{color:#73817c;text-align:center;margin:0;padding:14px 8px;font-size:10px}.trade-request-form{gap:6px;display:grid}.trade-request-form label{color:#677771;text-transform:uppercase;font:9px DM Mono,monospace}.trade-request-form select{width:100%;min-height:40px;color:var(--ink);background:#fff;border:1px solid #bdcdc6;border-radius:5px;padding:6px 8px;font:11px Space Grotesk,sans-serif}.trade-request-form button{min-height:40px;font-size:10px}.trade-request-form button:disabled{opacity:.5}.trade-list-heading{justify-content:space-between;margin:13px 0 5px;font-size:10px;display:flex}.trade-list-heading span{color:#71817a;font:9px DM Mono,monospace}.trade-request-row{border-top:1px solid #e4eae7;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:7px;padding:6px 0;display:grid}.trade-request-row img{width:34px;height:34px}.trade-request-row strong{font-size:9px;line-height:1.3}.trade-request-row .trade-can-help{color:#34764c;grid-column:2/-1;font:8px DM Mono,monospace}.trade-stat-section{gap:12px;display:grid}.trade-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.trade-stat-grid article{background:#fff;border:1px solid #d7e2de;border-radius:7px;gap:4px;padding:10px;display:grid}.trade-stat-grid span{color:#687a73;font-size:9px}.trade-stat-grid strong{font:800 18px DM Mono,monospace}.trade-achievements{gap:6px;display:grid}.trade-achievements h3{margin:0 0 2px;font-size:12px}.trade-achievements span{color:#7c8984;background:#f3f6f5;border:1px solid #d6dfdc;border-radius:6px;padding:8px 10px;font:9px DM Mono,monospace}.trade-achievements span.earned{color:#2b6841;background:#e9f6e8;border-color:#82b88e}.pokedex-summary{color:#6a7b75;align-items:baseline;gap:12px;margin-top:8px;font:9px DM Mono,monospace;display:flex}.pokedex-summary strong{color:var(--ink);font-size:12px}.pokedex-summary b{color:#316d4a;margin-left:auto;font-size:11px}.notifications-center{gap:10px;display:grid}.notifications-header{border-bottom:1px solid #d3ded9;justify-content:space-between;align-items:center;gap:10px;padding-bottom:8px;display:flex}.notifications-header .eyebrow{margin:0 0 2px}.notifications-header h2{margin:0;font-size:19px}.notifications-read-all{color:#39584b;background:#fff;border:1px solid #b9c9c2;border-radius:5px;min-height:36px;padding:5px 9px;font-size:9px;font-weight:700}.notifications-lede{color:#71817a;margin:0;font-size:10px}.notification-list{gap:6px;display:grid}.notification-item{background:#fff;border:1px solid #dce5e1;border-radius:7px;grid-template-columns:34px minmax(0,1fr) 20px;align-items:start;gap:9px;padding:10px;display:grid}.notification-item.unread{background:#fffdf5;border-left:3px solid #d5ac25}.notification-mark{color:#426b54;background:#eef4f1;border-radius:50%;place-items:center;width:32px;height:32px;font-size:15px;display:grid}.notification-mark.battle_completed{color:#34678f;background:#e8f1fb}.notification-mark.egg_hatched{color:#967217;background:#fff4cf}.notification-mark.nap_completed{color:#397148;background:#e9f4e5}.notification-copy{min-width:0}.notification-copy>div{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.notification-copy strong{font-size:11px}.notification-copy time{color:#89958f;flex:none;font:8px DM Mono,monospace}.notification-copy p{color:#5f706a;margin:4px 0 0;font-size:10px;line-height:1.4}.notification-open-battle{color:#356849;background:0 0;margin-top:6px;padding:0;font-size:9px;font-weight:800;text-decoration:underline}.notification-mark-read{color:#fff;background:#d2a52a;border-radius:50%;width:18px;height:18px;padding:0;font-size:7px}.notifications-empty{background:#ffffffa6;border:1px dashed #cad7d1;border-radius:8px;justify-items:center;gap:5px;padding:28px 12px;display:grid}.notifications-empty>span{color:#587563;font-size:25px}.notifications-empty strong{font-size:12px}.notifications-empty small{color:#788680;font-size:9px}@media (width>=720px){.trade-columns{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}.replay-fighter.hit img{animation:.55s replay-hit}.replay-fighter.fainted img{opacity:.35;filter:grayscale();transition:all .5s;transform:translateY(10px)}@keyframes replay-hit{0%{filter:none;transform:translate(0)}20%{filter:brightness(2.4);transform:translate(-8px)}40%{transform:translate(7px)}60%{filter:brightness(1.8);transform:translate(-4px)}to{filter:none;transform:translate(0)}}.replay-hp.mid span{background:#e0a526}.replay-hp.low span{background:#d64032}.replay-outcome{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);justify-content:space-between;align-items:baseline;gap:12px;padding:14px 18px;animation:.4s outcome-in;display:flex}.replay-outcome strong{text-transform:uppercase;font-size:24px}.replay-outcome span{font:700 11px DM Mono,monospace}.replay-outcome.victory{background:var(--pokemon-yellow)}.replay-outcome.defeat{background:#f3d9d3}@keyframes outcome-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.battle-tabs{background:#dce7e3;border:1px solid #bdcec8;grid-template-columns:repeat(3,1fr);gap:3px;padding:3px;display:grid}.battle-tabs button{color:#5f706b;text-transform:uppercase;background:0 0;min-height:42px;font:700 11px DM Mono,monospace}.battle-tabs button.active{color:var(--ink);background:#fff;box-shadow:0 1px 4px #17342f29}.battle-mode-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px;display:grid}.battle-mode-actions button{width:100%;margin:0}.battle-ai-action{background:var(--pokemon-yellow);color:var(--ink)}.battle-xp-note{color:#687b75;margin:10px 0 0;font:10px DM Mono,monospace}.battle-history-list{gap:8px;display:grid}.battle-history-row{width:100%;min-height:70px;color:var(--ink);text-align:left;background:#fff;border:1px solid #bdcec8;grid-template-columns:74px minmax(0,1fr) auto;align-items:center;gap:12px;padding:11px 13px;display:grid}.battle-history-row:hover{border-color:var(--ink);transform:translateY(-1px);box-shadow:2px 2px #00000080}.battle-history-result{text-align:center;text-transform:uppercase;border:1px solid;padding:5px 7px;font:800 9px DM Mono,monospace}.battle-history-result.victory{color:#20744e;background:#e4f4e9}.battle-history-result.defeat{color:#9a332b;background:#f9e8e4}.battle-history-main{min-width:0}.battle-history-main strong,.battle-history-main small{display:block}.battle-history-main strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.battle-history-main small{color:#687b75;margin-top:5px;font:9px DM Mono,monospace}.battle-history-date{color:#687b75;font:10px DM Mono,monospace}.battle-stats-view{border:2px solid var(--ink);box-shadow:var(--shadow-retro);background:#fff}.battle-stat-score{background:#fff5bd;border-bottom:1px solid #bdcec8;align-items:baseline;gap:12px;padding:20px;display:flex}.battle-stat-score strong{font-size:38px}.battle-stat-score span{color:#5c6864;text-transform:uppercase;font:10px DM Mono,monospace}.battle-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.battle-stat-grid>div{border-bottom:1px solid #dbe4e1;justify-content:space-between;align-items:center;gap:12px;padding:13px 16px;display:flex}.battle-stat-grid>div:nth-child(odd){border-right:1px solid #dbe4e1}.battle-stat-grid dt{color:#687b75;text-transform:uppercase;font:10px DM Mono,monospace}.battle-stat-grid dd{margin:0;font-size:18px;font-weight:800}.battle-stat-favorite{background:#e5f1ec;justify-content:space-between;gap:12px;padding:15px 16px;display:flex}.battle-stat-favorite span{color:#687b75;text-transform:uppercase;font:10px DM Mono,monospace}.battle-stat-note{color:#687b75;margin:0;padding:12px 16px;font-size:11px}.battle-replay{border:2px solid var(--ink);box-shadow:var(--shadow-retro);background:#f7f8f4;overflow:hidden}.replay-header{background:var(--pokemon-navy);justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;display:flex}.replay-back-button{border:2px solid var(--ink);min-height:48px;color:var(--pokemon-navy);text-align:left;background:#fff;border-radius:7px;justify-content:center;align-items:center;gap:8px;padding:10px 12px;font-size:13px;font-weight:700;display:inline-flex;box-shadow:2px 2px #00000080}.replay-back-button>span{font-size:20px}.replay-back-button:active:not(:disabled){transform:translate(1px,1px);box-shadow:1px 1px #00000080}.replay-back-button:focus-visible{outline:3px solid var(--pokemon-yellow);outline-offset:3px}.replay-back-button:disabled{opacity:.6;cursor:not-allowed}.replay-title{text-align:center;padding:16px 18px 0}.replay-title span{color:#687b75;text-transform:uppercase;font:9px DM Mono,monospace}.replay-title h3{text-transform:uppercase;margin:5px 0 0;font-size:21px}.replay-stage{background-color:#dcebe5;background-image:repeating-linear-gradient(0deg,#0000 0 31px,#254a4112 31px 32px);grid-template-columns:minmax(0,1fr) 34px minmax(0,1fr);align-items:center;gap:8px;min-height:250px;padding:16px;display:grid}.replay-stage>b{border:2px solid var(--ink);background:var(--pokemon-yellow);border-radius:50%;place-items:center;width:34px;height:34px;font:800 11px DM Mono,monospace;display:grid}.replay-fighter{text-align:center;min-width:0;display:grid}.replay-fighter img{object-fit:contain;filter:drop-shadow(0 8px 5px #1d36302e);width:100%;height:128px}.replay-fighter strong{overflow-wrap:anywhere;text-transform:uppercase}.replay-fighter small{color:#52655f;margin-top:4px;font:9px DM Mono,monospace}.replay-hp{background:#cbd6d2;border:1px solid #94aaa2;height:8px;margin-top:8px;overflow:hidden}.replay-hp span{background:#36a269;height:100%;transition:width .35s;display:block}.replay-controls{grid-template-columns:repeat(3,1fr);gap:6px;padding:12px 16px 6px;display:grid}.replay-controls button{min-height:42px;color:var(--ink);background:#fff;border:1px solid #aabbb5}.replay-controls button.primary{border-color:var(--ink);background:var(--pokemon-yellow);font-weight:800}.replay-slider{width:calc(100% - 32px);accent-color:var(--pokemon-red);margin:5px 16px 12px}.replay-turn{background:#fff;border:1px solid #bdcec8;margin:0 16px 16px}.replay-turn-heading{border-bottom:1px solid #dbe4e1;justify-content:space-between;padding:10px 12px;display:flex}.replay-turn-heading span{color:#687b75;font:9px DM Mono,monospace}.replay-action{border-bottom:1px solid #e2e8e6;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:10px;padding:11px 12px;display:grid}.replay-action:last-child{border-bottom:0}.replay-action p{color:#687b75;margin:3px 0 0;font-size:10px}.replay-action>b{font:800 12px DM Mono,monospace}.move-type{text-align:center;text-transform:uppercase;background:#edf1ef;border-left:4px solid #667773;padding:4px;font:800 8px DM Mono,monospace}@media (width<=760px){.battle-roster,.battle-open-list{padding:14px}.challenge-card{grid-template-columns:58px minmax(0,1fr) auto;gap:10px}.challenge-card img{width:58px;height:58px}.challenge-versus{display:none}.challenge-card>.primary-action{grid-column:1/-1;width:100%;min-width:0}.battle-waiting-room{grid-template-columns:78px minmax(0,1fr);gap:12px}.battle-waiting-room img{width:78px;height:78px}.battle-searching,.battle-waiting-room .text-action{grid-column:1/-1}.battle-stage{grid-template-columns:1fr 30px 1fr;min-height:235px;padding:14px 8px}.battle-fighter{text-align:center;grid-template-columns:1fr}.battle-fighter-opponent{direction:ltr}.battle-fighter img{grid-row:1;max-height:112px}.battle-fighter h3{font-size:15px}.battle-fighter .pokemon-types{justify-content:center}.battle-versus{width:30px;height:30px;font-size:11px}.battle-health{padding:7px}.move-grid{grid-template-columns:1fr}.move-button{min-height:82px}}@media (width<=520px){.battle-mode-actions{grid-template-columns:1fr}.battle-history-row{grid-template-columns:65px minmax(0,1fr)}.battle-history-date{grid-column:2}.battle-stat-grid{grid-template-columns:1fr}.battle-stat-grid>div:nth-child(odd){border-right:0}.replay-stage{min-height:220px;padding:10px 7px}.replay-fighter img{height:105px}.replay-action{grid-template-columns:50px minmax(0,1fr)}.replay-action>b{grid-column:2}.battle-replay{margin:0 -2px}}@media (width>=800px){.content{padding:20px 24px 40px}.bottom-nav{border:2px solid var(--ink);border-bottom:0;border-radius:16px 16px 0 0;width:100%;max-width:720px;left:50%;right:auto;transform:translate(-50%)}}@media (width>=620px){.collection-list{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px}.action-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width<=360px){.trainer-hud{gap:2px}.hud-chip{padding-inline:4px}.battle-mode-tile{grid-template-columns:36px minmax(0,1fr) auto 12px;gap:7px;padding-inline:8px}.battle-mode-emblem{width:34px;height:34px}.battle-mode-tile em{font-size:7px}}@media (width>=620px){.healing-roster{grid-template-columns:repeat(2,minmax(0,1fr))}.arena-choices{max-width:600px}}.adventure-gate{max-width:420px}.adventure-gate .auth-form{margin-top:8px}.adventure-gate-account{color:var(--muted);justify-content:center;align-items:center;gap:6px;margin:18px 0 0;display:flex}.adventure-list{text-align:left;gap:8px;margin:0 0 18px;padding:0;list-style:none;display:grid}.adventure-option{width:100%;color:var(--ink);border:2px solid var(--ink);box-shadow:var(--shadow-retro);text-align:left;background:#fff;border-radius:8px;gap:2px;padding:12px 14px;display:grid}.adventure-option strong{font-size:14px}.adventure-option small{color:var(--muted);font:10px DM Mono,monospace}.adventure-option.selected{background:#fff8cc}.adventure-option:disabled{opacity:.55;box-shadow:none}.team-picker{border:0;gap:8px;margin:4px 0;padding:0;display:grid}.team-picker legend{margin-bottom:6px;font-size:12px;font-weight:700}.team-option{--team-color:#3b82f6;border:2px solid var(--line);border-left:8px solid var(--team-color);cursor:pointer;background:#fff;border-radius:8px;grid-template-columns:auto 1fr;align-items:center;column-gap:10px;padding:10px 12px;display:grid}.team-option input{opacity:0;pointer-events:none;position:absolute}.team-option.selected{border-color:var(--team-color);box-shadow:0 0 0 2px var(--team-color);background:#fbfdfb}.team-option:focus-within{outline:2px solid var(--pokemon-blue);outline-offset:2px}.team-option-text{text-align:left;flex-direction:column;gap:2px;min-width:0;display:flex}.team-option-text strong{font-size:15px;line-height:1.2}.team-option-text small{color:var(--muted);font-size:12px;font-style:italic;line-height:1.3}.team-swatch{background:var(--team-color,#3b82f6);border:2px solid var(--ink);border-radius:50%;width:16px;height:16px;display:inline-block}.team-chip{--team-color:#3b82f6;background:var(--team-color);color:#fff;letter-spacing:.02em;text-shadow:1px 1px #00000059;white-space:nowrap;text-overflow:ellipsis;border:2px solid #0006;border-radius:999px;max-width:100%;padding:4px 12px;font-size:14px;font-weight:800;display:inline-block;overflow:hidden}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.trainer-card-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.starter-banner{border:3px solid var(--ink);box-shadow:var(--shadow-retro);background:#fff8cc;border-radius:10px;margin-bottom:16px;padding:18px}.starter-banner h2{margin:0 0 6px;font-size:18px}.starter-banner p{margin:0;font-size:13px}.starter-banner .primary-action{margin-top:14px}.admin-page{max-width:1320px;color:var(--ink);margin:0 auto;padding:0 24px 60px}.admin-topbar{z-index:5;border-bottom:2px solid var(--ink);background:#eef5f4;align-items:center;gap:14px;margin-bottom:14px;padding:12px 0;display:flex;position:sticky;top:0}.admin-crumbs{flex:1;align-items:center;gap:8px;min-width:0;font-size:14px;display:flex}.admin-crumbs strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.admin-brand{text-transform:uppercase;letter-spacing:.02em;white-space:nowrap;font-weight:800}.admin-link{color:var(--pokemon-blue,#2f5fd0);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:700;text-decoration:underline}.admin-badge{border:2px solid var(--ink);white-space:nowrap;background:#fff;border-radius:999px;padding:3px 8px;font:700 11px DM Mono,monospace}.admin-badge.super{background:var(--pokemon-yellow)}.admin-flash{border:2px solid;border-radius:8px;margin:0 0 14px;padding:8px 12px;font-size:13px;font-weight:700}.admin-flash.ok{color:#2f7d3b;background:#eaf6ea;border-color:#2f7d3b}.admin-flash.error{color:#a3322b;background:#fdecea;border-color:#a3322b}.admin-editor{grid-template-columns:230px minmax(0,1fr);align-items:start;gap:20px;display:grid}.admin-sidebar{border:2px solid var(--ink);box-shadow:var(--shadow-retro);background:#fff;border-radius:10px;padding:12px;position:sticky;top:74px}.admin-sidebar-head{border-bottom:1px solid var(--line);gap:4px;margin-bottom:8px;padding-bottom:10px;display:grid}.admin-sidebar-head code{color:var(--muted);font-size:11px}.admin-sidebar-head .admin-pill{justify-self:start}.admin-sidebar nav{gap:2px;display:grid}.admin-sidebar nav button{color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:space-between;align-items:center;padding:8px 10px;font-size:13px;font-weight:600;display:flex}.admin-sidebar nav button:hover{background:#f2f6f5}.admin-sidebar nav button.active{background:var(--pokemon-yellow)}.admin-sidebar nav small{color:var(--muted);font:11px DM Mono,monospace}.admin-content{min-width:0}.admin-section{border:2px solid var(--ink);box-shadow:var(--shadow-retro);background:#fff;border-radius:10px;margin-bottom:16px;padding:16px 18px}.admin-section-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.admin-section h2{text-transform:uppercase;margin:0;font-size:15px}.admin-section h3{margin:0 0 6px;font-size:13px}.admin-form{gap:12px;display:grid}.admin-form label,.admin-panel label{gap:4px;font-size:12px;font-weight:700;display:grid}.admin-form input,.admin-form select,.admin-form textarea,.admin-panel select,.admin-search,.admin-table input,.admin-table select{font:inherit;border:1px solid var(--line);background:#fff;border-radius:6px;padding:7px 10px;font-size:14px}.admin-form input[type=color]{width:64px;height:36px;padding:2px}.admin-grid-2{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}.admin-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end}.admin-span{grid-column:1/-1}.admin-timers{align-items:start}.admin-timers small{color:var(--muted);font-weight:400}.admin-button,.admin-form button,.admin-row button,.admin-table button,.admin-panel button,.admin-chips button,.admin-section>button{border:2px solid var(--ink);background:var(--pokemon-yellow);color:#1a1300;cursor:pointer;white-space:nowrap;border-radius:6px;justify-self:start;padding:7px 12px;font-size:12px;font-weight:700}.admin-page button.secondary,.admin-chips button{background:#fff}.admin-page button.danger{color:#7a1d17;background:#f7d4d1}.admin-chips button.active{background:var(--ink);color:#fff}.admin-page button:disabled{opacity:.5;cursor:default}.admin-check{align-items:center;gap:6px;display:flex!important}.admin-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.admin-toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.admin-search{flex:280px;max-width:420px}[data-testid=admin-picker] .admin-search{box-sizing:border-box;width:100%;margin-bottom:12px;display:block}.admin-chips{flex-wrap:wrap;gap:6px;display:flex}.admin-chips button{border-radius:999px;padding:5px 10px}.admin-hint{color:var(--muted);margin:0 0 12px;font-size:12px}.admin-hint code{word-break:break-all}.admin-code-box{border:1px dashed var(--line);word-break:break-all;background:#f7faf9;border-radius:6px;flex:1;min-width:0;padding:7px 10px;font-size:13px}.admin-qr{flex-direction:column;align-items:center;gap:6px;margin-top:12px;display:flex}.admin-qr img{border:1px solid var(--line);image-rendering:pixelated;background:#fff;border-radius:8px}.admin-panel{border:2px dashed var(--line);background:#fbfdfc;border-radius:8px;gap:10px;margin-top:14px;padding:14px;display:grid}.admin-panel.danger{background:#fff6f5;border-color:#d48a84}.admin-panel h3{margin:0}.admin-stats{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-bottom:16px;display:grid}.admin-stat{border:2px solid var(--ink);box-shadow:var(--shadow-retro);text-align:left;cursor:pointer;color:var(--ink);background:#fff;border-radius:10px;gap:2px;padding:12px;display:grid}.admin-stat strong{font-size:24px}.admin-stat span{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:700}.admin-pill{background:#e7ecea;border-radius:999px;padding:1px 8px;font:700 11px DM Mono,monospace;display:inline-block}.admin-pill.active{color:#22612c;background:#dff1df}.admin-pill.archived,.admin-pill.suspended{color:#8a2a23;background:#f7e0de}.admin-tag{text-transform:uppercase;background:#e7ecea;border-radius:4px;margin-left:6px;padding:0 6px;font-size:10px;font-weight:700;display:inline-block}.admin-tag.admin{background:var(--pokemon-yellow);border:1px solid var(--ink)}.admin-sub{color:var(--muted);text-overflow:ellipsis;max-width:420px;font-size:11px;display:block;overflow:hidden}.admin-species-grid{border:1px solid var(--line);border-radius:6px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:4px;min-height:240px;max-height:calc(100vh - 330px);padding:6px;display:grid;overflow:auto}.admin-species-grid label{border-radius:4px;align-items:center;gap:6px;padding:3px 6px;font-size:12px;display:flex}.admin-species-grid label.on{background:#eaf6ea}.admin-gym-island{text-transform:capitalize;font-weight:700}.admin-gym-table input,.admin-gym-table select{box-sizing:border-box;width:100%;min-width:120px}.admin-gym-raids ul{gap:2px;margin:0;padding:0;font-size:13px;list-style:none;display:grid}.admin-gym-raids small{color:#667}.admin-team-dot{vertical-align:middle;border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.admin-table-wrap{overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:13px}.admin-table th{text-transform:uppercase;color:var(--muted);background:#f4f8f7;font-size:11px;position:sticky;top:0}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:middle;padding:8px 10px}.admin-table .num{text-align:right}.admin-table td.admin-wrap{white-space:normal;min-width:180px}.admin-table tr.inactive td{opacity:.6}.admin-table select{padding:4px 6px;font-size:13px}.admin-table .admin-actions{gap:6px;display:flex}.admin-table button{padding:4px 10px}.admin-clickable{cursor:pointer}.admin-clickable:hover td{background:#fffbe0}.admin-email{font-weight:600}@media (width<=820px){.admin-page{padding:0 12px 40px}.admin-topbar{flex-wrap:wrap;gap:8px}.admin-brand{display:none}.admin-editor{grid-template-columns:1fr}.admin-sidebar{position:static}.admin-sidebar nav{display:flex;overflow-x:auto}.admin-grid-2,.admin-grid-3{grid-template-columns:1fr}}.notification-item.battle-won{background:#f5fbf6;border-left:3px solid #398153}.notification-item.battle-lost{background:#fff8f6;border-left:3px solid #b85a51}.battle-won .notification-mark{color:#28663e;background:#deefdf}.battle-lost .notification-mark{color:#994239;background:#f7e3df}.notification-mark svg{width:21px;height:21px}.notification-outcome{letter-spacing:.06em;border:1px solid;border-radius:4px;margin-top:5px;padding:2px 6px;font:800 9px DM Mono,monospace;display:inline-block}.notifications-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.notifications-actions button{min-height:44px}.notifications-actions button:disabled{opacity:.55;cursor:wait}.trade-request-row .trade-offer-button{min-height:44px;padding:6px 12px;font-size:10px}.trade-pokemon-row .trade-claim-button:disabled{opacity:.55;cursor:not-allowed}.battle-won .notification-outcome{color:#28663e;background:#deefdf;border-color:#a9ceb0}.battle-lost .notification-outcome{color:#994239;background:#f7e3df;border-color:#e5b4ad}@media (display-mode:standalone){html,body{overscroll-behavior:none}.admin-page{padding-top:env(safe-area-inset-top)}dialog.island-encounter-dialog,dialog.island-gym-dialog,dialog.evolution-confirm-dialog,dialog.battle-confirm-dialog,dialog.share-transfer-dialog{max-height:calc(100dvh - 16px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}}.share-transfer-dialog{box-sizing:border-box;color:#203047;text-align:center;background:#f6f3df;border:3px solid #263449;border-radius:16px;width:min(560px,100vw - 32px);max-height:calc(100dvh - 32px);padding:24px;font-family:monospace;overflow:auto;box-shadow:0 20px 80px #0006}.share-transfer-dialog::backdrop{background:#102137b8}.share-transfer-dialog h2{margin:8px 0;font-size:clamp(18px,4vw,26px)}.link-eyebrow{letter-spacing:2px;color:#31766a;font:700 11px monospace}.link-scene{align-items:center;padding:68px 0 12px;display:flex;position:relative}.link-trainer{z-index:1;width:30%;min-width:0}.link-trainer svg{width:min(100%,100px);height:120px}.link-trainer.receiving svg{transform:scaleX(-1)}.link-trainer strong{overflow-wrap:anywhere;font-size:14px;display:block}.link-trainer small{margin-top:4px;font-size:11px;display:block}.link-gap{flex:1}.link-cable{border:5px solid #263449;border-top:0;border-radius:0 0 12px 12px;height:18px;position:absolute;top:155px;left:21%;right:21%}.link-cable span{border-bottom:2px solid #42b9ac;animation:.65s steps(2,end) infinite link-pulse;display:block;position:absolute;inset:2px 0 -2px}.link-travelling-ball{z-index:3;opacity:0;width:20px;height:20px;animation:link-travel var(--link-duration) linear forwards;position:absolute;top:159px;left:calc(21% - 10px)}.link-capsule{z-index:3;opacity:0;width:32px;height:32px;position:absolute;top:18px;overflow:visible}.link-capsule.sending{animation:link-load-ball var(--link-duration) linear forwards;left:calc(15% - 16px)}.link-capsule.receiving{animation:link-unload-ball var(--link-duration) linear forwards;left:calc(85% - 16px)}.sending .link-ball-lid{animation:link-close-ball var(--link-duration) linear forwards}.receiving .link-ball-lid{animation:link-open-ball var(--link-duration) linear forwards}.link-release-glow{opacity:0;width:68px;height:68px;animation:link-release var(--link-duration) linear forwards;background:radial-gradient(circle,#fff 10%,#b4dc8999 45%,#0000 70%);border-radius:50%;position:absolute;top:0;right:calc(15% - 34px)}.link-pokemon{object-fit:contain;width:68px;height:68px;position:absolute;top:0}.link-pokemon.departing{z-index:4;animation:link-depart var(--link-duration) linear forwards;left:calc(15% - 34px)}.link-pokemon.arriving{z-index:4;opacity:0;animation:link-arrive var(--link-duration) linear forwards;right:calc(15% - 34px)}.link-transfer-status{overflow-wrap:anywhere;min-height:48px;font-weight:700}.link-transfer-confirmed{color:#536271;font-size:12px}.share-transfer-dialog button{color:#fff;cursor:pointer;background:#276b61;border:2px solid #263449;border-radius:8px;padding:10px 18px;font:700 14px monospace}.share-transfer-dialog button:focus-visible{outline-offset:3px;outline:3px solid #ee6a67}.share-transfer-dialog.arrived .link-cable span{animation:none}.share-transfer-dialog.arrived .departing{opacity:0;animation:none}.share-transfer-dialog.arrived .arriving{opacity:1;animation:none;transform:none}.share-transfer-dialog.arrived .link-travelling-ball,.share-transfer-dialog.arrived .link-capsule,.share-transfer-dialog.arrived .link-release-glow,.share-transfer-dialog.reduced-motion .link-travelling-ball,.share-transfer-dialog.reduced-motion .link-capsule,.share-transfer-dialog.reduced-motion .link-release-glow,.share-transfer-dialog.reduced-motion .departing{display:none}.share-transfer-dialog.reduced-motion .arriving{opacity:1;animation:none}.share-transfer-dialog.reduced-motion .link-cable span{animation:none}.share-transfer-banner{color:#203047;background:#edf8f4;border:1px solid #42b9ac;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:12px 0;padding:12px 16px;display:flex}.share-transfer-banner p{margin:0}@keyframes link-pulse{to{opacity:.25}}@keyframes link-depart{0%,12%{opacity:1;filter:brightness();transform:scale(1)}18%{opacity:1;filter:brightness(3)}26%,to{opacity:0;filter:brightness(3);transform:scale(.05)}}@keyframes link-load-ball{0%,12%{opacity:0}16%,30%{opacity:1;top:18px;left:calc(15% - 16px);transform:scale(1)}34%{opacity:1;top:18px;left:calc(15% - 16px);transform:rotate(-12deg)}38%{opacity:1;top:18px;left:calc(15% - 16px);transform:rotate(12deg)}43%{opacity:1;top:143px;left:calc(21% - 16px);transform:scale(.4)}44%,to{opacity:0;top:143px;left:calc(21% - 16px);transform:scale(.4)}}@keyframes link-close-ball{0%,16%{transform:translateY(-12px)}28%,to{transform:translateY(0)}}@keyframes link-travel{0%,43%{opacity:0;left:calc(21% - 10px)}44%{opacity:1;left:calc(21% - 10px)}68%{opacity:1;left:calc(79% - 10px)}70%,to{opacity:0;left:calc(79% - 10px)}}@keyframes link-unload-ball{0%,69%{opacity:0;top:143px;left:calc(79% - 16px);transform:scale(.4)}70%{opacity:1;top:143px;left:calc(79% - 16px);transform:scale(.4)}80%,88%{opacity:1;top:18px;left:calc(85% - 16px);transform:scale(1)}94%,to{opacity:0;top:18px;left:calc(85% - 16px);transform:scale(1)}}@keyframes link-open-ball{0%,80%{transform:translateY(0)}86%,to{transform:translateY(-14px)}}@keyframes link-release{0%,80%{opacity:0;transform:scale(.1)}86%{opacity:1;transform:scale(1.3)}to{opacity:0;transform:scale(1.6)}}@keyframes link-arrive{0%,84%{opacity:0;filter:brightness(3);transform:scale(.05)}90%{opacity:1;filter:brightness(2);transform:scale(.6)}to{opacity:1;filter:brightness();transform:scale(1)}}@media (prefers-reduced-motion:reduce){.share-transfer-dialog .link-travelling-ball,.share-transfer-dialog .departing,.share-transfer-dialog .link-capsule,.share-transfer-dialog .link-release-glow{display:none}.share-transfer-dialog .arriving{opacity:1;animation:none}.share-transfer-dialog .link-cable span{animation:none}}.welcome-intro{border:3px solid var(--ink);width:min(440px,100vw - 24px);color:var(--ink);box-shadow:var(--shadow-retro);background:#f7f3df;border-radius:14px;padding:0;overflow:hidden}.welcome-intro::backdrop{background:#0a161ab8}.welcome-skip{z-index:1;color:#5d6b67;text-transform:uppercase;background:0 0;padding:4px 8px;font:700 11px DM Mono,monospace;text-decoration:underline;position:absolute;top:10px;right:12px}.welcome-slide{text-align:center;justify-items:center;gap:4px;padding:30px 24px 8px;animation:.22s both welcome-slide-in;display:grid}.welcome-slide .eyebrow{margin:6px 0 0}.welcome-slide h2{margin:0 0 4px;font-size:22px;line-height:1.2}.welcome-slide p{margin:0;line-height:1.5}.welcome-slide ul{text-align:left;gap:6px;width:100%;margin:12px 0 0;padding:0;list-style:none;display:grid}.welcome-slide li{background:#fff;border:2px solid #d5d0b4;border-radius:8px;padding:8px 10px 8px 30px;font-size:14px;position:relative}.welcome-slide li:before{content:"▸";color:var(--pokemon-red);position:absolute;left:11px}.welcome-icon{border:3px solid var(--ink);background:var(--pokemon-yellow);width:64px;height:64px;color:var(--pokemon-navy);box-shadow:var(--shadow-retro);border-radius:50%;place-items:center;font-size:30px;display:grid}.sign-image{object-fit:contain;border:3px solid var(--ink);width:96px;height:96px;box-shadow:var(--shadow-retro);background:#dceef6;border-radius:50%;padding:8px}.welcome-first-stop{background:#fff8cc;border:2px dashed #c9a400;border-radius:8px;padding:10px 12px;margin-top:12px!important}.welcome-dots{justify-content:center;gap:8px;margin:14px 0 4px;padding:0;list-style:none;display:flex}.welcome-dots li{border:2px solid var(--ink);background:#fff;border-radius:50%;width:9px;height:9px}.welcome-dots li.active{background:var(--pokemon-red)}.welcome-actions{justify-content:space-between;align-items:center;gap:10px;padding:12px 20px 18px;display:flex}.welcome-actions .primary-action{min-width:150px}.welcome-actions .text-action:disabled{visibility:hidden}@keyframes welcome-slide-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.welcome-slide{animation:none}}.sign-actions{justify-content:center;padding-top:18px}.more-menu{width:min(420px,100vw);padding:0 0 calc(10px + env(safe-area-inset-bottom));border:3px solid var(--ink);color:var(--ink);box-shadow:var(--shadow-retro);background:#fff;border-bottom:0;border-radius:16px 16px 0 0;margin:auto auto 0}.more-menu::backdrop{background:#0a161a8c}.more-menu header{border-bottom:2px solid var(--line);align-items:center;gap:10px;padding:14px 16px;display:flex}.more-menu header div{flex:1;min-width:0;display:grid}.more-menu header strong{font-size:15px}.more-menu header small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.more-menu nav{padding:6px 8px;display:grid}.more-menu nav button{color:var(--ink);text-align:left;background:0 0;border-radius:8px;grid-template-columns:28px 1fr;align-items:center;gap:8px;padding:12px 10px;font-weight:700;display:grid}.more-menu nav button:hover,.more-menu nav button[aria-current=page]{color:var(--pokemon-blue);background:#e8f2fb}.more-menu nav button span{text-align:center;font-size:18px}.more-menu .more-close{color:#5d6b67;text-transform:uppercase;background:0 0;padding:6px 10px;font:700 11px DM Mono,monospace;text-decoration:underline}.username-form{padding:14px 16px 6px}.username-form>small{color:var(--muted);font-size:12px}.install-guide{max-height:calc(100dvh - 24px);overflow-y:auto}.install-slide{gap:8px;padding-top:22px}.install-app-icon{border:3px solid var(--ink);width:64px;height:64px;box-shadow:var(--shadow-retro);border-radius:16px}.install-why,.install-intro,.install-note{font-size:14px}.install-intro{text-align:left;background:#fff8cc;border:2px dashed #c9a400;border-radius:8px;padding:8px 10px}.install-note{color:#4c5a56;margin-top:4px!important;font-size:13px!important}.install-native{width:100%;margin-top:4px!important}.install-platform{text-align:left;text-transform:uppercase;color:#5d6b67;gap:4px;width:100%;font:700 11px DM Mono,monospace;display:grid}.install-platform select{border:2px solid var(--ink);min-height:40px;color:var(--ink);text-transform:none;background:#fff;border-radius:8px;padding:6px 8px;font:600 14px inherit}.welcome-slide ol.install-steps{counter-reset:install-step;text-align:left;gap:6px;width:100%;margin:4px 0 0;padding:0;list-style:none;display:grid}.install-steps li{counter-increment:install-step;background:#fff;border:2px solid #d5d0b4;border-radius:8px;min-height:34px;padding:8px 10px 8px 40px;font-size:14px;line-height:1.45;position:relative}.install-steps li:before{content:counter(install-step);background:var(--pokemon-red);color:#fff;border-radius:50%;place-items:center;width:22px;height:22px;font:700 12px DM Mono,monospace;display:grid;position:absolute;top:8px;left:9px}.install-glyph{vertical-align:-4px;fill:none;stroke:#007aff;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px;margin:0 2px;display:inline-block}.install-key{text-align:center;background:#f2efe0;border:2px solid #b9b49a;border-radius:6px;min-width:22px;padding:0 5px;font:700 13px DM Mono,monospace;display:inline-block}.install-copy{align-items:center;gap:8px;width:100%;display:flex}.install-copy code{text-overflow:ellipsis;white-space:nowrap;background:#fff;border:2px solid #d5d0b4;border-radius:8px;flex:1;min-width:0;padding:8px;font-size:12px;overflow:hidden}.install-banner{z-index:40;left:50%;bottom:calc(var(--nav-height,64px) + env(safe-area-inset-bottom,0px) + 8px);border:3px solid var(--ink);width:min(460px,100vw - 16px);color:var(--ink);box-shadow:var(--shadow-retro);background:#f7f3df;border-radius:12px;grid-template-columns:40px 1fr auto;align-items:center;gap:4px 10px;padding:10px 12px;animation:.25s both install-banner-in;display:grid;position:fixed;transform:translate(-50%)}.install-banner img{border-radius:10px;width:40px;height:40px}.install-banner p{margin:0;font-size:13px;line-height:1.3;display:grid}.install-banner-actions{gap:6px;display:flex}.install-banner-actions button,.install-copy button{margin:0}.install-banner-actions button{min-height:36px;padding:6px 10px;font-size:13px}.install-banner-never{color:#5d6b67;background:0 0;grid-column:2/-1;justify-self:start;padding:0;font:700 11px DM Mono,monospace;text-decoration:underline}@keyframes install-banner-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.install-banner{animation:none}}@media (width<=380px){.install-banner{grid-template-columns:34px 1fr}.install-banner img{width:34px;height:34px}.install-banner-actions{grid-column:1/-1}.install-banner-actions button{flex:1}}
