@font-face{font-family:Sora;font-style:normal;font-weight:400 800;font-display:swap;
 src:url(vendor/fonts/sora/sora-latin.woff2) format('woff2');
 unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Sora;font-style:normal;font-weight:400 800;font-display:swap;
 src:url(vendor/fonts/sora/sora-latin-ext.woff2) format('woff2');
 unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
:root{--bg:#0E1626;--card:#17222F;--line:#24334A;--ink:#EAF1F7;--dim:#7E93AC;
 --green:#48D597;--gold:#F5B84C;--coral:#F0654F;--gl:#5B8DEF;--ul:#F5B84C;--bad:#F59A8B}
*{box-sizing:border-box;margin:0}
body{background:linear-gradient(180deg,#0B1220 0%,#0E1626 40%,#101A2E 100%);min-height:100vh;
 color:var(--ink);font:15px/1.5 -apple-system,system-ui,sans-serif;
 padding:14px;padding-top:calc(16px + env(safe-area-inset-top));padding-bottom:calc(84px + env(safe-area-inset-bottom))}
h1{font-family:Sora,sans-serif;font-weight:800;font-size:22px;letter-spacing:-.02em;
 display:flex;align-items:center;gap:9px}
h1 svg{flex:none}
.sub{color:var(--dim);font-size:12.5px;margin:2px 0 16px}
.row{display:flex;gap:10px;align-items:center;margin:10px 0;flex-wrap:wrap}
label{font-size:13px;color:var(--dim)}
input[type=number]{width:64px;background:var(--card);border:1px solid var(--line);
 border-radius:10px;color:var(--ink);padding:8px;font-size:16px}
select{background:var(--card);color:var(--ink);border:1px solid var(--line);
 border-radius:10px;padding:8px 10px;font-size:16px}
/* iOS Safari zooms the page when a focused field's text is under 16px, so every typing or picking control is 16px on touch
   screens; only mouse-and-keyboard devices get the compact sizes */
input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),select,textarea{font-size:16px}
@media (hover:hover) and (pointer:fine){
  select{font-size:14px}
  .add input,.rsearch input{font-size:14px}
  .kv .v input,#tname,#rsort{font-size:15px}
  .kv .v .mvsel{font-size:14.5px}
  .mv select{font-size:12px}
}
.btn{display:block;width:100%;text-align:center;border:none;border-radius:14px;
 padding:14px;font-size:15.5px;font-weight:700;font-family:Sora,sans-serif;
 background:linear-gradient(135deg,#3BC489,#2BA8A0);color:#062018;margin:8px 0}
.btn.sec{background:var(--card);color:var(--dim);border:1px solid var(--line);font-weight:600}
.tools{display:flex;gap:8px;margin:8px 0}
.tools .btn{margin:0;padding:10px;font-size:13px;border-radius:11px}
#panel{display:none;background:var(--card);border:1px solid var(--line);
 border-radius:16px;padding:4px 14px 12px;margin:8px 0}
#panel.open{display:block!important}
#prog{display:none;flex-direction:column;gap:8px;margin:12px 0}
/* the battle log's own loader: a recording read from the battle log shows here, never in the Scans page's card */
.prow{display:flex;align-items:center;gap:12px}
/* the importing card: a cancel cross in every state, and an expand button along the bottom that shows what the read has found so far */
.pcx{flex:none;width:30px;height:30px;padding:0;border:1px solid var(--line);border-radius:9px;background:transparent;color:var(--dim);font-size:14px;line-height:1;cursor:pointer}
.pcx:active{background:var(--line)}
.pex{width:100%;padding:5px 0;border:0;border-top:1px solid var(--line);background:transparent;color:var(--dim);font:inherit;font-size:12px;text-align:left;cursor:pointer}
.pev{max-height:148px;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;font-size:12px;line-height:1.5;color:var(--dim)}
.pev .ev:first-child{color:var(--ink)}   /* newest on top: the line being read now */
.pev[hidden]{display:none}.pev .ev{padding:1px 0;border-bottom:1px solid var(--line)}.pev .ev:last-child{border-bottom:0}
.pev .ev.none{opacity:.7;border-bottom:0}
/* "Did you know?" while an import runs: small, dim, fading in on each new tip */
.ptip{font-size:12px;line-height:1.4;color:var(--dim);animation:ptipIn .5s ease}.ptip[hidden]{display:none}
@keyframes ptipIn{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.ptip{animation:none}}
#implog{margin:6px 0 4px}#implog .hd{font-size:12px;color:var(--dim);cursor:pointer;display:flex;justify-content:space-between}#implog .hd a{color:var(--dim)}
.il{display:grid;grid-template-columns:44px 1fr;gap:8px;font-size:12px;color:var(--dim);padding:6px 0;border-top:1px solid var(--line);line-height:1.45}
.il .t{font-variant-numeric:tabular-nums}.il .r.ok{color:#7FE3B6}.il .r.err{color:var(--bad)}.il .f{color:var(--ink)}.il .d{font-family:ui-monospace,monospace;font-size:12px;word-break:break-word}
.bar{height:6px;background:var(--card);border-radius:3px;overflow:hidden}
.bar>div{height:100%;background:linear-gradient(90deg,#3BC489,#2BA8A0);width:0%;transition:width .3s}
#stat{font-size:12.5px;color:var(--dim);flex:1;min-width:0}
#count{color:var(--dim);font-size:13px}
.rsearch{display:flex;gap:6px;align-items:center;margin:0 0 8px}
.rsearch input{flex:1;min-width:0;background:var(--card);border:1px solid var(--line);border-radius:9px;color:var(--ink);padding:8px}
.row.rsort{margin:0 0 10px}

.mon{background:var(--card);border:1px solid var(--line);border-radius:18px;
 padding:14px 15px 12px;margin:10px 0}
.mon .top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.mon .name{font-family:Sora,sans-serif;font-weight:600;font-size:17px;letter-spacing:-.01em;display:flex;align-items:center;gap:8px;min-width:0}.mon .name .nt{min-width:0}
.mon .cp{color:var(--dim);font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.mon .cp b{color:var(--ink);font-size:15px}
.del{color:var(--dim);padding:2px 0 2px 10px;font-size:15px}
.pctbig{font-family:Sora,sans-serif;font-weight:800;font-size:21px;letter-spacing:-.02em;
 font-variant-numeric:tabular-nums}
.g .pctbig{color:var(--green)}.m .pctbig{color:var(--gold)}.b .pctbig{color:var(--coral)}
.bars{display:grid;grid-template-columns:32px 1fr 22px;gap:4px 8px;align-items:center;
 margin:9px 0 2px;font-size:12px;color:var(--dim)}
.tr{height:7px;background:#0E1626;border-radius:4px;overflow:hidden}
.tr>i{display:block;height:100%;border-radius:4px;background:var(--gold)}
.tr>i.max{background:linear-gradient(90deg,#F0654F,#F5885B)}
.iv{font-variant-numeric:tabular-nums;color:var(--ink);text-align:right}
.meta{font-size:12.5px;color:var(--dim);margin-top:7px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}
.chip{max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:12px;font-weight:600;padding:4px 9px;border-radius:999px;
 font-variant-numeric:tabular-nums;white-space:nowrap}
.chip.gl{background:rgba(91,141,239,.16);color:#9DBCF7}
.chip.ul{background:rgba(245,184,76,.14);color:#F5CE8A}
.chip.meta1{background:rgba(72,213,151,.13);color:#7FE3B6}
.chip.warn{background:rgba(240,101,79,.13);color:var(--bad)}
.chip.gold{background:rgba(245,184,76,.14);color:#F5CE8A}.chip.ok{background:rgba(72,213,151,.13);color:#7FE3B6}
.moves{font-size:12.5px;margin-top:8px;color:var(--dim)}
.moves b{color:var(--green);font-weight:600}
.moves s{color:var(--coral);text-decoration:none}
.alts{font-size:12.5px;color:var(--dim);margin-top:8px;font-family:ui-monospace,monospace;
 white-space:pre-wrap;display:none}
.mon.editing .alts{display:block}
.flag{font-size:12px;color:var(--gold)}
.mon.compact{padding:12px 15px 12px;cursor:pointer}
.ivrow{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.8fr) minmax(0,1.3fr);gap:10px;margin-top:8px;font-size:13.5px;align-items:end}
.ivrow>span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chips.row2{display:flex;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:8px}.chips.row2>span:first-child{display:flex;gap:6px;flex-wrap:wrap;min-width:0}.chips.row2>.chip{flex:none}
.ivrow small{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim)}
.ivrow b{font-family:Sora,sans-serif;font-weight:700;font-size:15px;font-variant-numeric:tabular-nums}
.ivrow .okc{color:var(--green);font-weight:700}.g .pctc{color:var(--green)}.m .pctc{color:var(--gold)}.b .pctc{color:var(--coral)}
.scanhero{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px 15px;margin:8px 0}
.scanhero .bars{margin-top:10px}.scanhero .kpis{margin-top:10px}
.scanhero .typerow{margin-top:8px}.scanhero .typerow+.typerow{margin-top:6px}.typerow .metar{margin-left:auto;font-size:12.5px;white-space:nowrap}
.gloss{font-size:12px;color:var(--dim);line-height:1.5;margin:6px 0 0}
.kv{display:grid;grid-template-columns:78px minmax(0,1fr);gap:9px 12px;align-items:start;font-size:13.5px;margin-top:12px;line-height:1.45}
.kv .k{color:var(--dim);font-size:12px;text-transform:uppercase;letter-spacing:.06em;padding-top:3px}.kv .v{min-width:0}.kv .v .mv{margin:0}.kv .v b{font-weight:600}.kv .v .okc{color:var(--green);font-weight:700}
.kv .v input{background:#0E1626;border:1px solid var(--line);border-radius:10px;color:var(--ink);padding:8px 10px}
.kv .v .mvsel{width:100%;min-width:0;padding:9px 10px;background:#0E1626;border:1px solid var(--line);border-radius:10px;color:var(--ink)}.kv .v .mvsel.empty{color:var(--dim);border-style:dashed}
.kv .v.cont{margin-top:-4px}
.kv .k:has(+ .v > .mvsel),.kv .k:has(+ .v > input){align-self:center;padding-top:0}
.team.row{display:flex;align-items:center;gap:10px;padding:9px 12px}.team.row .sc{margin:0;min-width:34px}.team.row .tx{flex:1;min-width:0}.team.row .nm{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team.row .dt{margin-top:1px}.team.row .go{color:var(--dim);font-size:18px;flex:none}
.team.row .dt b{font-weight:600}.team.row .dt .good{color:var(--green)}
.srch{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}.srchs .srch:first-child{border-top:none;padding-top:2px}.srch .lb{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);width:64px;flex:none;overflow:hidden;text-overflow:ellipsis}.srch .tx{flex:1;min-width:0}.srch code,.srchi code{font:13px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink);overflow-wrap:anywhere;background:#0E1626;border:1px solid var(--line);border-radius:8px;padding:5px 8px;display:inline-block;max-width:100%}.srch .dt{margin-top:2px}
.srch button,.srchi button{flex:none;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:7px 11px;font-size:13px;font-weight:600}.srchi{display:flex;align-items:center;gap:8px;margin:0 0 6px}.srchi code{flex:1;min-width:0}
.tchips{display:flex;gap:6px;overflow-x:auto;padding:2px 0 6px;margin:6px 0 2px;-webkit-overflow-scrolling:touch}.tchips .chip{flex:none;cursor:pointer;text-transform:capitalize}.tchips .chip.sel{border:1px solid #3BC489;color:var(--ink);background:rgba(72,213,151,.16)}
.tog{display:flex;align-items:center;gap:6px;color:var(--dim);font-size:12.5px;white-space:nowrap}.tog input{accent-color:#3BC489}
.rank.pve .rb{cursor:default}.pvb{display:grid;grid-template-columns:auto minmax(0,1fr) 38px auto minmax(0,1fr) 38px;gap:4px 6px;align-items:center;margin-top:6px;font-size:12px}.pvb .lb{color:var(--dim);letter-spacing:.06em;font-size:12px}.pvb .bar{height:6px;background:#0E1626;border-radius:3px;overflow:hidden}.pvb .bar i{display:block;height:100%;background:linear-gradient(90deg,#3BC489,#2BA8A0)}.pvb .bar i.t{background:linear-gradient(90deg,#5B8DEF,#7FA6F5)}.pvb .v{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}
.meter{margin:4px 0 0}.meter svg{width:100%;max-width:330px;height:auto;display:block;margin:0 auto;touch-action:none;cursor:pointer;overflow:visible}
.meter .track{fill:none;stroke:#1E2A3D;stroke-width:8;stroke-linecap:round}.meter .fill{fill:none;stroke:var(--green);stroke-width:8;stroke-linecap:round}.meter .fill.over{stroke:var(--coral)}
.meter .capt{stroke:#F5CE8A;stroke-width:2}.meter .capl{fill:#F5CE8A;font-size:8px;font-weight:700}.meter .cur{fill:#0E1626;stroke:var(--ink);stroke-width:2}.meter .knob{fill:#fff;stroke:var(--green);stroke-width:3}
.meter text.lbl{fill:var(--dim);font-size:9px;letter-spacing:.12em;font-weight:600}.meter text.cp{fill:var(--ink);font:800 32px Sora,sans-serif;letter-spacing:-.02em}.meter text.lv{fill:var(--dim);font-size:8px}
.meter .mi{text-align:center;font-size:12.5px;color:var(--dim);margin-top:2px;min-height:18px}.meter .mi.over{color:var(--bad)}
.use.raid .ur{grid-template-columns:18px minmax(0,1fr) 60px 54px}.use.raid .ur .nm{white-space:normal;line-height:1.25}.use.raid .ur .nm span{display:block}.use.raid .ur .nm .c{color:var(--dim);font-size:12px}.use.raid .ur.mine .nm .c{color:var(--ink)}
.typerow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.typerow .chips{display:inline-flex;gap:6px;flex-wrap:wrap}
.chip.weak{background:rgba(240,101,79,.13);color:var(--bad)}
.chip.t-normal{background:rgba(168,168,120,.2);color:#D6D6B8}.chip.t-fire{background:rgba(240,128,48,.2);color:#F7B27A}.chip.t-water{background:rgba(104,144,240,.2);color:#A9C0F7}.chip.t-grass{background:rgba(120,200,80,.2);color:#B3E39B}.chip.t-electric{background:rgba(248,208,48,.2);color:#F8E28A}.chip.t-ice{background:rgba(152,216,216,.2);color:#BFEAEA}.chip.t-fighting{background:rgba(192,48,40,.22);color:#F09A94}.chip.t-poison{background:rgba(160,64,160,.22);color:#D9A0D9}.chip.t-ground{background:rgba(224,192,104,.2);color:#EBD9A8}.chip.t-flying{background:rgba(168,144,240,.2);color:#CEC2F7}.chip.t-psychic{background:rgba(248,88,136,.2);color:#F7A6C0}.chip.t-bug{background:rgba(168,184,32,.2);color:#D3DC8A}.chip.t-rock{background:rgba(184,160,56,.22);color:#E0D3A0}.chip.t-ghost{background:rgba(112,88,152,.25);color:#C2B3DB}.chip.t-dragon{background:rgba(112,56,248,.22);color:#C3AEF8}.chip.t-dark{background:rgba(112,88,72,.3);color:#CDBDB2}.chip.t-steel{background:rgba(184,184,208,.2);color:#DCDCE8}.chip.t-fairy{background:rgba(238,153,172,.2);color:#F5C6D2}
.team.card .kv{margin-top:2px}.team.card .use{margin-top:8px}.team.card>.note{margin:8px 0 0}
.todo{list-style:none;margin:0;padding:10px 12px;background:#0E1626;border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;gap:8px}.todo li{display:flex;flex-direction:column;gap:1px;padding-left:18px;position:relative;font-size:13.5px}.todo li::before{content:'';position:absolute;left:2px;top:7px;width:8px;height:8px;border-radius:50%;background:var(--gold)}.todo li.scan::before,.todo li.check::before{background:#9DBCF7}.todo li.xl::before{background:var(--coral)}.todo li b{font-weight:600}.todo li span{color:var(--dim);font-size:12px}
.todo.ok{color:var(--ink);font-size:13.5px;border-color:#3BC489;flex-direction:row;gap:6px}
.tile.moves{border-color:var(--gold)}.tile.moves .st{color:#F5CE8A}
.tabs.sub.seg{margin:0;gap:4px}.tabs.sub.seg button{padding:5px 10px;font-size:12px;flex:none}
.pn{color:var(--green);text-decoration:underline dotted;font-weight:600}
.sec a{color:var(--dim);text-decoration:underline dotted;font-weight:500;font-family:-apple-system,system-ui,sans-serif}
.more{margin:8px 0 0;padding:10px 12px;border:1px dashed var(--line);border-radius:14px;color:var(--dim);font-size:13px;cursor:pointer}.more b{color:var(--ink);font-weight:600}
.members .mb{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}.members .mb:first-child{border-top:none;padding-top:2px}.members .rl{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);width:52px;flex:none}.members .mn{flex:1;min-width:0}.members .mn b{font-weight:600;cursor:pointer}.members .mn .dt{margin-top:1px}
.use{font-size:13px;color:var(--ink);margin-top:8px;background:#0E1626;border-radius:12px;padding:8px 10px 10px;line-height:1.4}
.use .uh{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin:6px 0 4px}.use .uh:first-child{margin-top:0}
.use .ur{display:grid;grid-template-columns:18px minmax(0,1fr) 72px 40px;gap:8px;align-items:center;padding:4px 0;border-top:1px solid var(--line)}
.use .ur .n{color:var(--dim);font-size:12px;font-variant-numeric:tabular-nums}.use .ur .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.use .ur.mine .nm{font-weight:600}
.use .bar{height:6px;background:var(--card);border-radius:3px;overflow:hidden}.use .bar i{display:block;height:100%;background:linear-gradient(90deg,#3BC489,#2BA8A0)}.use .ur:not(.mine) .bar i{opacity:.55}
.use .pc{text-align:right;font-variant-numeric:tabular-nums;font-size:12.5px}.use em{font-style:normal;font-weight:700}.use em.y{color:var(--green)}.use em.s{color:#9DBCF7}
.ctx{position:relative;flex:none}.ctx .dots{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:18px;font-weight:700;line-height:1;cursor:pointer;padding:0}
.ctx .menu{position:absolute;right:0;top:34px;background:#0E1626;border:1px solid var(--line);border-radius:12px;min-width:220px;z-index:6;box-shadow:0 10px 28px rgba(0,0,0,.45);padding:4px}
.ctx .menu button{display:block;width:100%;text-align:left;background:none;border:none;color:var(--ink);padding:10px 12px;font-size:14px;border-radius:8px}.ctx .menu button:active{background:var(--card)}.ctx .menu button.danger{color:var(--bad)}
.acts button.primary{background:linear-gradient(135deg,#3BC489,#2BA8A0);color:#062018;border:none;font-weight:700}
.monhead{gap:8px}.monhead .chips{flex:1;justify-content:flex-end}
.fix{margin-top:10px;display:none;gap:6px;flex-wrap:wrap}
.mon.editing .fix{display:flex}
.fix input{width:74px;background:#0E1626;border:1px solid var(--line);border-radius:9px;
 color:var(--ink);padding:7px;font-size:14px}
.fix button{background:var(--green);border:none;border-radius:9px;padding:7px 13px;
 font-weight:700;color:#062018}
canvas{display:none}
video{position:fixed;right:0;bottom:0;width:2px;height:2px;opacity:.01;pointer-events:none}
.tabs{display:flex;gap:6px;margin:0 0 10px}
.tabs button{flex:1;background:var(--card);border:1px solid var(--line);color:var(--dim);border-radius:12px;
 padding:10px 4px;font-weight:700;font-family:Sora,sans-serif;font-size:13.5px;min-width:0}
.tabs button.on{color:var(--ink);border-color:#3BC489;background:rgba(72,213,151,.10)}
.tabs.sub{margin:0 0 8px}.tabs.sub button{padding:8px;font-size:13px;border-radius:10px}
.role.slot{position:relative;cursor:pointer}.role.slot .x{position:absolute;top:4px;right:8px;color:var(--dim);font-size:12px}
.role.slot.empty{border:1px dashed var(--line);background:transparent}.role .rn.dim{color:var(--dim);font-size:20px}
.rank{display:flex;gap:10px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin:5px 0}
.rank .rk{font-family:Sora,sans-serif;font-weight:700;color:var(--dim);min-width:40px;font-size:13px}
.rank .rb{flex:1;min-width:0}.rank .rn{font-size:14px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.rank .dt{font-size:12px;color:var(--dim)}
.rank .ra{display:flex;flex-direction:column;gap:4px}.rank .ra button{background:#0E1626;color:var(--dim);border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:12px}
.view{display:none}.view.on{display:block}
.sec{margin:16px 0 6px;font-family:Sora,sans-serif;font-weight:700;font-size:14px;color:var(--ink)}
/* a section's subtitle sits under its title, not pushed to the right edge where it wrapped into a ragged column */
.sec small{display:block;margin-top:2px;color:var(--dim);font-weight:500;font-size:12px;line-height:1.35;font-family:-apple-system,system-ui,sans-serif}
.team{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin:6px 0;font-size:13.5px}
.team .sc{font-family:Sora,sans-serif;font-weight:800;font-size:17px;color:var(--green);font-variant-numeric:tabular-nums;margin-right:8px}
.team .nm{font-weight:600}
.team .dt{color:var(--dim);font-size:12px;margin-top:3px}
.team .dt b{color:var(--coral);font-weight:600}
.rlist{display:flex;flex-wrap:wrap;gap:6px}
.pill{display:inline-flex;align-items:center;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:999px;
 padding:5px 10px;font-size:12.5px}
.pill .x{color:var(--dim);cursor:pointer}
.pill.auto{border-style:dashed}
.add{display:flex;gap:6px;margin:6px 0;flex-wrap:wrap}
.add input{flex:1;min-width:120px;background:var(--card);border:1px solid var(--line);border-radius:9px;color:var(--ink);padding:8px}
.add button{background:var(--green);border:none;border-radius:9px;padding:7px 13px;font-weight:700;color:#062018}
.mv{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;margin:4px 0 8px}
.mv select{padding:5px;min-width:0;width:100%}
.own{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin:6px 0}
.own .h{display:flex;justify-content:space-between;gap:8px;font-size:13.5px;flex-wrap:wrap}
.own .h span{text-align:right;flex:1}
.own .h b{font-weight:600}
.own .h span{color:var(--dim);font-size:12px}
.plan{font-size:12px;color:var(--dim);margin-top:7px;line-height:1.55}
.plan b{color:var(--ink);font-weight:600}.plan .ok{color:var(--green)}.plan .no{color:var(--coral)}
.note{font-size:12px;color:var(--dim);margin:4px 0 8px}
h1 .help.prof{margin-left:auto;width:auto;padding:0 10px;gap:5px;font-size:12px;border-radius:15px}h1 .help.prof+.help{margin-left:0}
h1 .help.sync{margin-left:0}h1 .help.sync.on{color:var(--green);border-color:#3BC489}h1 .help.sync.err{color:var(--bad);border-color:#F0654F}
h1 .help.sync+.help{margin-left:0}h1 .help.sync.busy{color:var(--green);border-color:rgba(72,213,151,.5);animation:syncpulse 1.2s ease-in-out infinite}@keyframes syncpulse{50%{opacity:.55}}
h1 .help{margin-left:auto;width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--card);
 color:var(--dim);font:700 15px Sora,sans-serif;display:flex;align-items:center;justify-content:center}
#help{display:none;position:fixed;inset:0;background:rgba(6,10,20,.82);z-index:20;overflow:auto;
 padding:calc(14px + env(safe-area-inset-top)) 14px 40px}
#help.open{display:block}
#help .box{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px 18px;max-width:560px;margin:0 auto;font-size:14px}
#help h2{font-family:Sora,sans-serif;font-size:18px;margin:0 0 6px;display:flex;justify-content:space-between}
#help h3{font-family:Sora,sans-serif;font-size:14px;margin:16px 0 4px;color:var(--green)}
#help p,#help li{color:var(--ink);margin:4px 0;line-height:1.5}
#help ul{padding-left:18px}
#help .dim{color:var(--dim)}
div.empty{background:var(--card);border:1px dashed var(--line);border-radius:16px;padding:16px;margin:10px 0;font-size:14px;color:var(--dim);line-height:1.6}
.star{color:var(--dim);margin-right:6px;font-size:16px;cursor:pointer}.star.on{color:var(--gold)}
.mon.benched{opacity:.55}
.fix .sec2{background:var(--card);color:var(--dim);border:1px solid var(--line)}
.hero{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px 15px;margin:8px 0}
.hero .chip{white-space:normal;line-height:1.35}
.roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.role{background:#0E1626;border-radius:14px;padding:10px 6px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0}.role .rn,.role .rm,.role .rl{max-width:100%}.role .pi{margin:2px 0 1px}
.role .rl{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
.role .rn{font-family:Sora,sans-serif;font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.role .rm{font-size:12px;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scorebar{display:flex;align-items:center;gap:10px;margin-top:12px;font-size:12px}
.scorebar .big{font-family:Sora,sans-serif;font-weight:800;font-size:26px;color:var(--green);letter-spacing:-.02em}
.track{flex:1;height:8px;background:#0E1626;border-radius:4px;position:relative;overflow:hidden}
.track .fill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#3BC489,#2BA8A0);border-radius:4px}
.track .tick{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--dim)}
.team.move{display:flex;align-items:center;gap:10px;cursor:default}.team.move .mvt{flex:1;min-width:0}.team.faded{opacity:.65}.team.move .side{display:flex;align-items:center;gap:6px;flex:none}.team.move .side .chip{white-space:nowrap}
.team{cursor:pointer}
.core{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin:6px 0}
.core .ch{display:flex;justify-content:space-between;align-items:baseline;font-size:14px;font-weight:600}
.core .sc{font-family:Sora,sans-serif;font-weight:800;color:var(--green)}
.thirds{display:flex;gap:6px;overflow-x:auto;margin-top:8px;padding-bottom:2px}
.third{flex:none;background:#0E1626;border:1px solid var(--line);border-radius:10px;padding:6px 10px;display:flex;flex-direction:column;font-size:13px;min-width:84px}
.third small{color:var(--dim)}.third.best{border-color:#3BC489;background:rgba(72,213,151,.10)}.third.best small{color:#7FE3B6}
#profile{display:none;position:fixed;inset:0;background:rgba(6,10,20,.85);z-index:21;overflow:auto;padding:calc(14px + env(safe-area-inset-top)) 12px 40px}
#profile.open{display:block}#profile .box{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px 16px;max-width:560px;margin:0 auto;font-size:14px}
#profile h2{font-family:Sora,sans-serif;font-size:16px;margin:0 0 8px;display:flex;justify-content:space-between}#profile .x{color:var(--dim);cursor:pointer}
#profile h3{font-family:Sora,sans-serif;font-size:13px;margin:14px 0 4px;color:var(--green)}
.thr{font-size:12.5px;color:var(--dim);margin-top:5px;line-height:1.45}.thr b{color:var(--bad);font-weight:600}.thr .good,.dt .good{color:var(--green)}
.thr.av b{color:var(--ink)}.thr.av span:not(.good):not(.dim){color:#F5CE8A}.thr.av.now span:not(.good):not(.dim){color:#7FE3B6}
.avb{padding:8px 0 4px;border-top:1px solid var(--line);cursor:pointer}.team>.avb:first-of-type{border-top:none;padding-top:4px}
/* a card that is itself an .avb (How to get, the availability lists) keeps the card's own padding and border: the .avb
   rule above zeroed its sides, so its text ran into the edges of the box */
.team.avb{padding:10px 14px 12px;border-top:1px solid var(--line)}
.avh{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:14px}.avh b{font-weight:600}.avh .dim{font-size:12px}
.avl{display:grid;grid-template-columns:64px 1fr;gap:8px;font-size:12.5px;color:var(--dim);margin-top:3px;line-height:1.45}
.avl .lb{color:var(--dim);font-size:12px;text-transform:uppercase;letter-spacing:.06em;padding-top:2px}.avl .tx span:not(.good):not(.dim){color:#F5CE8A}.avl.now .tx span:not(.good):not(.dim){color:#7FE3B6}.avl .tx .dim{color:var(--dim)}
.monhead{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:2px 0 6px}
.back{background:none;border:none;color:var(--green);font:600 15px Sora,sans-serif;padding:6px 0;cursor:pointer}
.acts button.danger{color:var(--bad);border-color:rgba(240,101,79,.5)}
.team .nm a,.note a{color:var(--ink);text-decoration:underline dotted var(--dim)}.note a{color:var(--green)}
#syncbox{display:none;position:fixed;inset:0;background:rgba(6,10,20,.85);z-index:21;overflow:auto;padding:calc(14px + env(safe-area-inset-top)) 12px 40px}
#syncbox.open{display:block}#syncbox .box{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px 16px;max-width:560px;margin:0 auto;font-size:14px}
#syncbox h2{font-family:Sora,sans-serif;font-size:16px;margin:0 0 8px;display:flex;justify-content:space-between}#syncbox .x{color:var(--dim);cursor:pointer}#syncbox p{margin:6px 0;line-height:1.5}
#sheet{display:none;position:fixed;inset:0;background:rgba(6,10,20,.85);z-index:20;overflow:auto;padding:calc(14px + env(safe-area-inset-top)) 12px 40px}
#sheet.open{display:block}
#sheet .box{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px;max-width:560px;margin:0 auto}
#sheet h2{font-family:Sora,sans-serif;font-size:16px;margin:0 0 10px;display:flex;justify-content:space-between;gap:10px}
#sheet h2 .sc{color:var(--green);margin-left:6px}#sheet .x{color:var(--dim);cursor:pointer}
.cov{display:flex;flex-direction:column;gap:5px;font-size:13px}
.cr{display:grid;grid-template-columns:1.6fr repeat(3,minmax(0,1fr));gap:6px;align-items:center}
.cr.head{font-size:12px;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line);padding-bottom:6px}
.cr.head span:not(:first-child){text-align:center;text-transform:none;letter-spacing:0;font-size:12px;font-weight:600;color:var(--ink);font-family:Sora,sans-serif}
.cr.tint{background:rgba(240,101,79,.10);border-radius:10px;margin:0 -4px;padding:0 4px}.cr.tint>span{color:var(--bad)}
.cr i{display:block;height:28px;border-radius:8px}
.cr i.w{background:rgba(72,213,151,.65)}.cr i.e{background:rgba(126,147,172,.25)}.cr i.l{background:rgba(240,101,79,.55)}.cr i.est{opacity:.45}
.legend{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--dim);margin-top:6px;align-items:center}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;margin-right:4px}
.legend i.w{background:rgba(72,213,151,.65)}.legend i.e{background:rgba(126,147,172,.25)}.legend i.l{background:rgba(240,101,79,.55)}.legend i.est{opacity:.45}
/* a swap suggestion: the gain large on the left, the change on one line, Fixes / Opens labelled on lines of their own */
.nameideas{margin:10px 0 0}.nameideas .nh{display:flex;justify-content:space-between;align-items:center;color:var(--dim);font-size:12px;margin-bottom:6px}
.nameideas .nh small{margin-left:6px;opacity:.8}.nameideas .ntpl{margin:10px 0 0}.nameideas .ntpl .lb{color:var(--dim);font-size:12px}.nameideas .ntpl .dim{color:var(--dim);font-size:12px;margin-top:4px}
.team.row.nidea{padding:10px 14px;margin:0 0 6px}.team.row.nidea .nm{font-size:15px}.team.row.nidea .go{color:var(--green)}
.team.row.swaprow{align-items:flex-start}.team.row.swaprow .sc{min-width:46px;padding-top:1px}.team.row.swaprow .sc.neg{color:var(--bad)}
.team.row.swaprow .nm{white-space:normal;line-height:1.35}.team.row.swaprow .nm .pi{width:22px;height:22px;vertical-align:-6px;margin-right:3px}
/* a labelled line: a short dim label, then the fact (used by swap rows, members, threats, the builder hero) */
.kv2{display:flex;gap:8px;margin-top:3px}.kv2 .lb{flex:none;width:52px;color:var(--dim)}.kv2 .good{color:var(--green)}.kv2 .bad{color:var(--bad)}.kv2 .gold{color:var(--gold)}
.team.row.swaprow .meta2{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}.team.row.swaprow .meta2 .chip{margin:0}
.team.row.swaprow .good{color:var(--green)}.team.row.swaprow .bad{color:var(--bad)}.team.row.swaprow .go{align-self:center}
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.tile{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:3px;min-width:0;cursor:pointer}
.tile b{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile .ivl{align-self:flex-start;font-size:12px;font-variant-numeric:tabular-nums;color:var(--ink);background:#0E1626;border:1px solid var(--line);border-radius:6px;padding:1px 6px;letter-spacing:.02em}
.tile small{color:var(--dim);font-size:12px}.tile .st{font-size:12px;color:var(--dim)}
.tile.ready{border-color:#3BC489}.tile.ready .st{color:#7FE3B6}
.tile.power{border-color:var(--gold)}.tile.power .st{color:#F5CE8A}
.tile.pending{border-style:dashed;border-color:#5B8DEF}.tile.pending b,.tile.pending .st{color:#9DBCF7}
.tile.wanted{border-style:dashed}.tile.wanted b{color:var(--dim)}
.tile.xl .st,.tile.bench .st{color:var(--bad)}.tile.bench,.tile.xl{opacity:.6}
.tile.add{align-items:center;justify-content:center;border-style:dashed;color:var(--dim)}.tile.add b{font-size:22px;line-height:1;color:var(--dim)}
.tile.sel{outline:2px solid var(--ink)}
.pb{height:5px;background:#0E1626;border-radius:3px;overflow:hidden}.pb>div{height:100%;background:var(--gold)}
.detail{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px 15px;margin:10px 0;display:flex;flex-direction:column;gap:10px}
.detail .dh{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.detail .nm{font-family:Sora,sans-serif;font-weight:700;font-size:15px}
.kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.kpis>div{background:#0E1626;border-radius:12px;padding:8px 10px;display:flex;flex-direction:column;min-width:0}
.kpis small{color:var(--dim);font-size:12px;text-transform:uppercase;letter-spacing:.06em}
.kpis b{font-family:Sora,sans-serif;font-weight:700;font-size:15px;line-height:1.2;white-space:normal;overflow-wrap:anywhere}
.kpis .sub{display:block;font-family:-apple-system,system-ui,sans-serif;font-weight:500;font-size:12px;color:var(--dim);margin-top:2px}
.acts{display:flex;gap:6px;flex-wrap:wrap}
.acts button{background:#0E1626;color:var(--ink);border:1px solid var(--line);border-radius:9px;padding:7px 12px;font-size:13px}
.acts.small{margin-top:7px}.acts.small button{padding:5px 9px;font-size:12px;color:var(--dim)}
.team.done{display:flex;gap:10px;align-items:flex-start;cursor:default}
.tick{font-family:Sora,sans-serif;font-weight:800;font-size:16px;width:22px;text-align:center;flex:none}.tick.full{color:var(--green)}.tick.hollow{color:var(--dim)}
.team .dt a{color:var(--green)}
.empty b{color:var(--ink)}

/* ---------- navigation: bottom bar + side drawer ---------- */
.navbar{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;justify-content:center;gap:4px;padding:6px 10px calc(8px + env(safe-area-inset-bottom));
 background:rgba(11,18,32,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line)}
.navbar button{flex:1;max-width:170px;display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:none;color:var(--dim);font-size:12px;font-weight:600;padding:6px 4px;border-radius:12px}
.navbar button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.navbar button.on{color:var(--green)}
h1 .help.menu{margin-left:0;margin-right:2px}
#drawer{display:none;position:fixed;inset:0;background:rgba(6,10,20,.6);z-index:30}
#drawer.open{display:block}
.dr{position:absolute;left:0;top:0;bottom:0;width:min(84vw,320px);background:#0E1626;border-right:1px solid var(--line);padding:calc(14px + env(safe-area-inset-top)) 10px calc(14px + env(safe-area-inset-bottom));overflow:auto;
 box-shadow:14px 0 40px rgba(0,0,0,.5);animation:drin .18s ease-out;display:flex;flex-direction:column}
@keyframes drin{from{transform:translateX(-30px);opacity:0}to{transform:none;opacity:1}}
.dr .ttl{font-family:Sora,sans-serif;font-weight:800;font-size:18px;padding:4px 10px 10px;display:flex;align-items:center;justify-content:space-between}
.dr .ttl .x{color:var(--dim);font-weight:400;font-size:18px;cursor:pointer;padding:0 4px}
.dr .grp{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);padding:12px 10px 4px}
.dr a{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;padding:10px 10px;border-radius:12px;font-size:14.5px}
.dr a .ic{width:22px;text-align:center;color:var(--dim);font-size:15px;flex:none}
.dr a.on{background:rgba(72,213,151,.10);color:var(--green)}.dr a.on .ic{color:var(--green)}
.dr a:active{background:var(--card)}
.dr a small{margin-left:auto;color:var(--dim);font-size:12px}
.dr .ft{margin-top:auto;padding:14px 10px 0;color:var(--dim);font-size:12px;line-height:1.5}

/* ---------- lineage offer on a fresh scan ---------- */
.lin{background:rgba(72,213,151,.08);border:1px solid rgba(72,213,151,.35);border-radius:12px;padding:8px 10px;margin:0 0 8px;font-size:13px;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;justify-content:space-between}
.lin .q{flex:1;min-width:160px}.lin .a{display:flex;gap:6px}
.lin button{border:none;border-radius:9px;padding:6px 10px;font-size:12.5px;font-weight:700}
.lin .yes{background:var(--green);color:#062018}.lin .no{background:var(--card);color:var(--dim);border:1px solid var(--line)}

/* ---------- AI review card ---------- */
.team.card.review .verdict{font-size:14px;line-height:1.45;margin:0 0 6px}.team.card.review .verdict p{margin:0}
.team.card.review .rsec{font-size:13px;color:var(--dim);margin:6px 0 0;line-height:1.45}.team.card.review .rsec>b{display:block;color:var(--ink);font-size:12px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:2px}
.team.card.review .rsec ul,.team.card.review .verdict ul{margin:2px 0 0;padding-left:18px}.team.card.review p{margin:2px 0}
.team.row .dt .ai{color:var(--ink);opacity:.85;margin-top:3px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- Matchups page ---------- */
.mut{display:grid;gap:4px;align-items:stretch;margin:6px 0}
.mut .mh{font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--dim);text-align:center;padding:0 2px 2px;align-self:end}
.mut .mn{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 10px;min-width:0;cursor:pointer}
.mut .mn b{display:flex;align-items:center;gap:5px;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mut .mn small{color:var(--dim);font-size:12px}.mut .mn .good{color:var(--green)}.mut .mn .bad{color:var(--bad)}
.mut .mc{border-radius:10px;display:flex;align-items:center;justify-content:center;font-family:Sora,sans-serif;font-weight:700;font-size:14px;font-variant-numeric:tabular-nums}
.mut .mc.w{background:rgba(72,213,151,.22);color:#7FE3B6}.mut .mc.e{background:rgba(240,192,96,.18);color:#F0C060}.mut .mc.l{background:rgba(240,101,79,.2);color:var(--bad)}

/* ---------- Battle log ---------- */
.spark{display:block;width:100%;height:44px;margin-top:6px}.spark polyline{fill:none;stroke:var(--green);stroke-width:2;vector-effect:non-scaling-stroke}.spark circle{fill:var(--green)}
.wl{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.wl button{border:none;border-radius:14px;padding:16px 10px;font-family:Sora,sans-serif;font-weight:800;font-size:18px}
.wl .win{background:linear-gradient(135deg,#3BC489,#2BA8A0);color:#062018}.wl .loss{background:rgba(240,101,79,.22);color:var(--bad);border:1px solid rgba(240,101,79,.4)}

/* ---------- How to get: routes ---------- */
.avb .rt{padding:8px 0;border-top:1px solid var(--line)}.avb .rt:first-child{border-top:none;padding-top:2px}
.avb .rh{font-weight:700;font-size:14px;margin-bottom:4px}.avb .rh small{color:var(--dim);font-weight:500;font-size:12px;margin-left:4px}
.avb .rf{font-size:13px;line-height:1.45;margin:3px 0}.avb .rf.dim{color:var(--dim);font-size:12.5px}.avb .rf.good{color:var(--green)}
.avb .rf a{color:var(--green)}

/* ---------- roster cards for pieces you do not hold yet ---------- */
.mon.compact.ghost{border-style:dashed;padding:10px 15px}.mon.compact.ghost .name{font-size:15px;color:var(--dim)}
.chip.sel{outline:2px solid var(--ink)}
#syncbox .imp{margin-top:10px;border:1px dashed var(--line);border-radius:12px;padding:8px 12px}#syncbox .imp summary{cursor:pointer;font-weight:600;color:var(--ink)}
#syncbox .imp .add input{background:#0E1626;border:1px solid var(--line);border-radius:9px;color:var(--ink);padding:8px}
#syncbox .imp .add button{background:var(--green);border:none;border-radius:9px;padding:7px 13px;font-weight:700;color:#062018}
#syncbox .mini{background:transparent;border:1px solid var(--line);border-radius:6px;color:var(--dim);font-size:12px;padding:1px 7px;cursor:pointer;vertical-align:middle}
#syncbox #uid{font-size:12px;color:var(--dim);word-break:break-all}
/* folded lists: the hidden rest sits in a display:contents span so chips and rows flow as if inline; the toggle opens it in place */
.xm{display:contents}.xm[hidden]{display:none}
.xmore{cursor:pointer;user-select:none}.xmore.inl{color:var(--green);text-decoration:underline dotted}.chip.xmore{border-style:dashed;color:var(--dim)}div.xmore{font-size:12px;margin:6px 0 0}
.chip .xmore{color:var(--dim);margin-left:2px}
/* PokeScan Pro */
.chip.pro{background:linear-gradient(135deg,#8B6CFF,#3BC489);color:#0B1220;font-weight:700}
.team.card.pro-lock{cursor:pointer;border-style:dashed}
.pro-hero{padding:6px 2px 10px}.pro-hero .eyebrow{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--green);font-weight:700}
.pro-hero h2{font-family:Sora,sans-serif;font-size:24px;line-height:1.2;margin:4px 0 8px;text-wrap:balance}.pro-hero p{color:var(--dim);margin:0;line-height:1.5}
.team.card.pro-cta .price{display:flex;align-items:baseline;gap:10px;margin:0 0 10px}.team.card.pro-cta .price b{font-family:Sora,sans-serif;font-size:24px}
.team.card.pro-cta .btn.primary,.team.card.pro-cta a.btn{display:block;text-align:center;margin:0;background:linear-gradient(135deg,#8B6CFF 0%,#3BC489 100%);color:#0B1220;border:none;font-weight:700;text-decoration:none;padding:12px}
.team.card.pro-on{border-color:var(--green)}
/* the Pro page's feature rows. Scoped: the importing card's top row is also a .prow, and this border under it drew a
   second line right above the card's own divider */
#pro .prow{display:flex;gap:10px;padding:8px 2px;border-bottom:1px solid var(--line);font-size:14px}#pro .prow:last-of-type{border-bottom:none}#pro .prow .dt{margin-top:2px}#pro .prow .tick{flex:none;margin-top:2px}
/* getting started + milestones */
.team.card.start .step{display:flex;gap:10px;align-items:flex-start;padding:7px 2px;border-bottom:1px solid var(--line);cursor:pointer}.team.card.start .step:last-child{border-bottom:none}
.team.card.start .step.done{cursor:default;color:var(--dim)}.team.card.start .step.done b{font-weight:500}.team.card.start .step.next b{color:var(--green)}
.team.card.start .step .tx{flex:1;min-width:0}.team.card.start .step .go{color:var(--dim);font-size:18px;line-height:1}
.team.card.start .bar,.ms .bar{height:6px;background:#0E1626;border-radius:999px;overflow:hidden}.team.card.start .bar i,.ms .bar i{display:block;height:100%;background:linear-gradient(90deg,#3BC489,#48D597);border-radius:999px;transition:width .4s}
.ms{padding:8px 0;border-bottom:1px solid var(--line)}.ms:last-child{border-bottom:none}.ms .h{display:flex;justify-content:space-between;gap:8px;font-size:13.5px;margin:0 0 5px}.ms .dt{margin-top:4px;display:flex;justify-content:space-between;gap:8px}
.ms .dots{display:inline-flex;gap:4px;align-items:center}.ms .dots i{width:7px;height:7px;border-radius:50%;background:var(--line);display:inline-block}.ms .dots i.on{background:var(--green)}
#toast{position:fixed;left:50%;bottom:calc(72px + env(safe-area-inset-bottom));transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--card);border:1px solid var(--green);border-left-width:4px;color:var(--ink);border-radius:12px;padding:10px 14px;font-size:13.5px;max-width:min(92vw,420px);box-shadow:0 8px 24px rgba(0,0,0,.35);z-index:30;transition:opacity .25s,transform .25s}
#toast.on{opacity:1;transform:translate(-50%,0);pointer-events:auto;cursor:pointer}
@media (prefers-reduced-motion:reduce){#toast,.team.card.start .bar i,.ms .bar i{transition:none}}
/* shared screenshot cards (Share anything) */
#shared{display:grid;gap:8px;margin:8px 0}#shared:empty{display:none}
.team.card.share{position:relative}.team.card.share .x{position:absolute;right:12px;top:10px;color:var(--dim);cursor:pointer;font-size:14px}
.team.card.share .chips{margin-top:4px}.team.card.share .chip.dim{opacity:.6}
.team.card.share .fn{display:flex;gap:8px;font-size:13px;color:var(--dim);margin-top:4px;line-height:1.4}.team.card.share .fn .ts{flex:none;font-variant-numeric:tabular-nums;color:var(--green);font-weight:600;min-width:34px}

/* species page of a Pokémon you do not own: say so, and offer the scan that adds it */
.notown{display:flex;flex-direction:column;gap:8px;margin:6px 0 0;padding:10px 12px;border:1px dashed rgba(240,101,79,.5);border-radius:12px;background:rgba(240,101,79,.06)}
.notown b{display:block;color:var(--bad);font-size:13px;margin-bottom:2px}.notown .dt{display:block;font-size:12px;color:var(--dim);line-height:1.4}
.notown .btn{margin:0;align-self:flex-start;color:var(--ink)}
.rq{display:contents}.rq[hidden]{display:none}
/* import loader on any page but Scans (an update or add-a-scan started from a Pokémon page) */
#impfloat{position:fixed;left:14px;right:14px;bottom:calc(72px + env(safe-area-inset-bottom));z-index:29;display:flex;flex-direction:column;align-items:stretch;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 14px;box-shadow:0 8px 24px rgba(0,0,0,.35)}
#impfloat[hidden]{display:none}#fstat{font-size:12.5px;color:var(--dim);flex:1;min-width:0}#impfloat .pball{width:48px;height:48px}
#impfloat:not([hidden])+#toast{bottom:calc(140px + env(safe-area-inset-bottom))}   /* a toast during an import sits above the loader */

/* ---------- the Pokéball loader ---------- */
.pball{width:60px;height:60px;flex:none}.pball svg{width:100%;height:100%;overflow:visible;display:block}
.pball .track{fill:none;stroke:var(--line);stroke-width:3}
.pball .ring{fill:none;stroke:#48D597;stroke-width:3;stroke-linecap:round;transform:rotate(-90deg);transform-origin:32px 32px;transition:stroke-dashoffset .35s ease}
.pball .ball{transform-origin:32px 54px}
.pball .top{fill:#F0654F}.pball .bot{fill:#EAF1F7}.pball .band{fill:#141C2B}.pball .rim{fill:#141C2B}.pball .btn{fill:#F5F8FB}.pball .dot{fill:#141C2B;opacity:0}
.pball .shine{fill:none;stroke:rgba(255,255,255,.55);stroke-width:2.5;stroke-linecap:round}
.pball .star{fill:#F5B84C;opacity:0;transform-box:fill-box;transform-origin:center}
.pball.on .ball{animation:pbshake 1.6s cubic-bezier(.36,.07,.19,.97) infinite}
.pball.on .btn{animation:pbpulse 1.6s ease-in-out infinite}
.pball.done .btn{fill:#48D597}.pball.done .ball{animation:pbcaught .6s ease-out}
.pball.done .s1{animation:pbstar .9s ease-out .1s forwards}.pball.done .s2{animation:pbstar .9s ease-out .25s forwards}.pball.done .s3{animation:pbstar .9s ease-out .4s forwards}
.pball.err .btn{fill:#F0654F}.pball.err .ring{stroke:#F0654F}.pball.err .ball{animation:pbdrop .5s ease-out forwards}
@keyframes pbshake{0%,55%,100%{transform:rotate(0)}10%{transform:rotate(-16deg)}22%{transform:rotate(14deg)}33%{transform:rotate(-9deg)}43%{transform:rotate(5deg)}}
@keyframes pbpulse{0%,100%{fill:#F5F8FB}50%{fill:#F0654F}}
@keyframes pbcaught{0%{transform:scale(1)}40%{transform:scale(1.14)}70%{transform:scale(.96)}100%{transform:scale(1)}}
@keyframes pbstar{0%{opacity:0;transform:scale(.2)}35%{opacity:1;transform:scale(1.3) translateY(-3px)}100%{opacity:0;transform:scale(.8) translateY(-10px)}}
@keyframes pbdrop{0%{transform:rotate(0)}100%{transform:rotate(-24deg) translateY(2px)}}
@media (prefers-reduced-motion:reduce){.pball .ball,.pball .star,.pball .ring{animation:none!important}.pball.done .s1,.pball.done .s2,.pball.done .s3{opacity:1}}

/* ---------- Pokémon icons (icons/pokemon/*.webp, the game's renders) ---------- */
.pi{width:20px;height:20px;flex:none;object-fit:contain;vertical-align:middle;display:inline-block}
.pi.xs{width:16px;height:16px}.pi.s{width:20px;height:20px}.pi.m{width:28px;height:28px}.pi.l{width:40px;height:40px}.pi.xl{width:56px;height:56px}
.pi.ghost{opacity:.45;filter:grayscale(.6)}.pi.ph{opacity:.5}
.pi.sh{filter:drop-shadow(0 0 3px rgba(178,102,255,.95)) drop-shadow(0 0 1px rgba(178,102,255,.9))}   /* shadow Pokémon: the game's purple aura */
.trio{display:inline-flex;flex:none;align-items:center}.trio .pi+.pi{margin-left:-7px}
.chip .pi{margin:-3px 3px -3px -3px}
.members .mb .pi{margin-left:-4px}

/* ---------- team rows: rank badge, ownership rings on the trio, filters on the Meta teams page ---------- */
.team.row .sc.rk{color:var(--dim);font-size:13px;font-family:Sora,sans-serif;font-weight:700}
.team.row .trio .pi{width:24px;height:24px;border-radius:50%;background:var(--card);box-shadow:0 0 0 2px var(--card)}
.team.row .trio .pi+.pi{margin-left:-6px}
.pi.ow{box-shadow:0 0 0 2px var(--card),0 0 0 4px #3BC489!important}
.pi.pd{box-shadow:0 0 0 2px var(--card),0 0 0 4px #5B8DEF!important}
.pi.nt{opacity:.45;filter:grayscale(.7)}
.chip.mini{font-size:12px;padding:2px 7px;vertical-align:1px}
.tchips.mf{flex-wrap:wrap;overflow:visible}.tchips.mf .chip{text-transform:none;display:inline-flex;align-items:center;gap:5px}
.tchips.mf .chip.sel{border:1px solid var(--green)}.tchips.mf .chip.dim{opacity:.5}
.tchips.mf .chip.f .x{color:var(--dim);margin-left:2px;cursor:pointer}.tchips.mf .chip .pi{margin:-2px 0 -2px -3px}
.team.row .dt .gold{color:var(--gold)}.team.row .dt .bad{color:var(--bad)}
.mlist.allown .chip.mini{display:none}   /* the 'only teams I can build' filter already says it */
.avb .rf.need{color:var(--ink)}.avb .rf.need b{color:var(--gold)}.plan .need{color:var(--gold)}

/* ---------- Best IVs table on the Pokémon page ---------- */
.team.card.ivc{display:flex;align-items:center;gap:10px;cursor:pointer}.team.card.ivc .tx{flex:1;min-width:0}.team.card.ivc .go{color:var(--dim);font-size:16px;flex:none}
.team.card.ivc.open{display:block}
.ivt{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
.ivt th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);font-weight:600;text-align:left;padding:4px 6px 4px 0;border-bottom:1px solid var(--line)}
.ivt td{padding:5px 6px 5px 0;border-bottom:1px solid rgba(43,56,79,.5);white-space:nowrap}.ivt td:first-child{color:var(--dim);width:48px}.ivt td:last-child,.ivt th:last-child{text-align:right;padding-right:0}
.ivt tr.mine td{background:rgba(72,213,151,.08)}.ivt tr.mine td:first-child{color:var(--green)}
.ivt tr.sep td{color:var(--dim);font-size:12px;text-transform:uppercase;letter-spacing:.06em;padding-top:8px;border-bottom:none}
.ivt tr.xmore-row td{color:var(--dim);font-size:12.5px;cursor:pointer;border-bottom:none;padding-top:8px}
.ivc .dt b{color:var(--ink)}.ivc .dt b.hi{color:var(--green)}

/* team page: the app's order suggestion under the hero tiles; the review's one-tap reorder */
.hero .ord{margin-top:10px;font-size:12.5px;line-height:1.45}.hero .ord.dim{color:var(--dim)}
.hero .ord b{font-weight:600}.hero .ord .dim{font-size:12px;margin-top:2px}.hero .ord .btn{margin-top:10px;width:100%}
.hero .ord .oh{color:var(--dim);font-size:12px;margin-bottom:4px}.hero .ord .or{display:flex;gap:10px;padding:4px 0}
.hero .ord .or .lb{flex:none;width:52px;color:var(--dim);font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding-top:2px}
.hero .ord .or b{font-size:14px}.hero .ord .or .dim{margin-top:0}
.role .rl .mvs{display:inline-block;padding:2px 7px;margin:-2px 0;color:var(--dim);font-weight:700;font-size:13px;line-height:1;cursor:pointer}
.role .rl .mvs:active{color:var(--green)}
.btn.sec.mini{margin:0;padding:6px 10px;font-size:12px;flex:none;color:var(--ink);border-radius:9px}
.review .rsec .btn.mini{display:inline-block;margin-top:6px}
.team.card.review .rsec.plan{background:rgba(72,213,151,.07);border:1px solid rgba(72,213,151,.22);border-radius:10px;padding:8px 10px;color:var(--ink)}
.team.card.review .rsec.plan>b{color:var(--green)}.team.card.review .rsec.plan li>b{color:var(--green);font-weight:700;margin-right:2px}

/* page title: every top-level view names itself, since most are reachable only from the drawer */
.ptitle{margin:2px 0 10px;font-family:Sora,sans-serif;font-weight:800;font-size:19px;letter-spacing:-.02em;color:var(--ink);line-height:1.2}
.ptitle small{display:block;margin-top:2px;font-family:-apple-system,system-ui,sans-serif;font-weight:500;font-size:12.5px;letter-spacing:0;color:var(--dim)}
/* column header above a list of rows; each label carries an ⓘ that opens its explanation in the .chx line */
.colhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:0 12px 4px;margin:4px 0 0}
.colhead.rk{padding:0 11px 4px}
.colhead .ch{display:flex;align-items:center;gap:2px;flex:none;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
.colhead .ch.c1{min-width:42px}
.colhead.rk .ch.c1{min-width:50px}
.colhead .ch.c2{width:60px}
.colhead .ch.cx{flex:1;min-width:0}
.colhead .ch.ce{margin-left:auto}
.chq{background:none;border:0;padding:0 2px;font-size:12px;line-height:1;color:var(--dim);opacity:.7;cursor:pointer}
.chq.on{color:var(--green);opacity:1}
.chx{flex-basis:100%;width:100%;font-size:12px;line-height:1.45;color:var(--dim);padding:2px 0 4px}
.ivt th .chq{font-size:12px;vertical-align:middle}
.ivw .chx{padding:6px 0 0}

/* the same Pokéball on the AI review card: a review has no byte count, so the ring spins instead of filling */
.team.card.rvwait{display:flex;align-items:center;gap:12px}
.team.card.rvwait .rvtx{flex:1;min-width:0}
.team.card.rvwait .sec{margin:0 0 2px!important}
.pball.rv{width:44px;height:44px}
/* pballSVG() writes the dash pair as an inline style for the importer's JS-driven progress, so these must out-rank it.
   Only the thinking state spins: an idle card that is merely offering a review used to run the spinner for ever, which
   reads as a review that never arrives. */
.pball.rv .ring{stroke-dasharray:0 188.5!important;stroke-dashoffset:0!important;transition:none;animation:none}
.pball.rv.on .ring{stroke-dasharray:47 142!important;animation:pbspin 1.4s linear infinite}
.pball.rv.done .ring,.pball.rv.err .ring{stroke-dasharray:188.5!important;animation:none}
@keyframes pbspin{from{transform:rotate(-90deg)}to{transform:rotate(270deg)}}
/* the timeline of a battle read from a recording, opened under its row in the log */
.filmt{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 12px;margin:2px 0 6px;font-size:12px;line-height:1.6;color:var(--dim);font-variant-numeric:tabular-nums}
.filmt.page{border-radius:14px;padding:10px 12px;margin:6px 0}   /* on a battle's own page it is the card, not a box inside one */
.filmt .fsum{color:var(--ink);font-size:12.5px;margin-bottom:4px}
/* one battle's own page: both trios, and the chip row that says which party you played */
.bvs{display:flex;align-items:center;gap:10px;margin:2px 0 8px}
.bvs .bside{flex:1;min-width:0}
.bvs .bside .lb{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);margin-bottom:3px}
.bvs .bside .nm{font-size:12.5px;color:var(--ink);margin-top:3px;line-height:1.35}
.bvs .vs{color:var(--dim);font-size:12px;flex:none}
.tchips.bteam{margin:8px 0 0;align-items:center}
.tchips.bteam .lb{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);margin-right:2px}
.tchips.bteam .chip.sug{border-color:var(--green);color:var(--green)}
/* "played with": one line saying which party, that opens the picker sheet */
.tpick{display:inline-flex;align-items:center;gap:8px;min-width:0;cursor:pointer;color:var(--ink)}
.tpick .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tpick:not(.set) .nm{color:var(--dim)}
.tpick .go{color:var(--green);font-size:12px;flex:none}
#sheet .plist{display:grid;gap:8px}
#sheet .plist > *{min-width:0}
#sheet .prow{display:flex;align-items:center;gap:10px;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--bg);cursor:pointer}
#sheet .prow.on{border-color:var(--green)}
#sheet .prow .tx{flex:1;min-width:0}
#sheet .prow .tx b{font-size:13.5px}
#sheet .prow .dt{color:var(--dim);font-size:12px;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#sheet .prow .dt.why{white-space:normal}   /* the short reason may wrap; the list of Pokémon above it is clipped */
#sheet .prow .tick{color:var(--green);flex:none;font-size:15px}
#sheet .prow .sug{color:var(--green);font-size:12px;flex:none;border:1px solid var(--green);border-radius:8px;padding:1px 6px;white-space:nowrap}
/* a recording that has been read but not yet saved: the summary, the team pick, then Save */
.team.card.draft{border-color:rgba(72,213,151,.45)}
.draft .dcase{border-top:1px solid var(--line);padding:8px 0 2px;margin-top:6px}
.draft .dcase:first-of-type{border-top:0}
.draft .drow{display:flex;align-items:center;gap:10px}
.draft .drow .sc{font-family:Sora,sans-serif;font-weight:800;font-size:17px;min-width:20px}
.draft .drow .tx{flex:1;min-width:0}
.draft .drow .nm{display:block;font-size:13.5px;color:var(--ink)}
.draft .filmt{margin:6px 0 2px}
/* what the last battle imports did, on the battle log page */
.team.card.blog .il{display:flex;gap:10px;padding:6px 0;border-top:1px solid var(--line);font-size:12px;line-height:1.45}
.team.card.blog .il:first-of-type{border-top:0}
.team.card.blog .il .t{color:var(--dim);flex:none;font-variant-numeric:tabular-nums}
.team.card.blog .il > span:nth-child(2){flex:1;min-width:0}   /* so the line's ⋮ sits at the right edge */
.team.card.blog .il .ctx{flex:none;align-self:flex-start}
.team.card.blog .il .f{color:var(--ink)}
.team.card.blog .il .r.ok{color:#7FE3B6}.team.card.blog .il .r.err{color:var(--bad)}
.team.card.blog .il .d{color:var(--dim);font-size:12px}

/* a Pokémon on a battle page: tap for its page — yours to your scanned copy, theirs to the species */
a.bmon{color:inherit;text-decoration:underline;text-decoration-color:rgba(126,147,172,.45);text-underline-offset:2px}
a.bmon.mine{text-decoration-color:rgba(72,213,151,.6)}

/* If you evolve it: one small table per evolution, a row per league */
.team.evot{padding:10px 12px}.evc+.evc{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.evh{display:flex;align-items:center;gap:8px;margin-bottom:8px}.evh b{font-size:14px}.evh>.dim{margin-left:auto;font-size:12px;white-space:nowrap}
.evc>.dt{margin:-4px 0 8px}
.evg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.evx{border:1px solid var(--line);border-radius:10px;padding:7px 8px;min-width:0;font-variant-numeric:tabular-nums}
.evx.hit{border-color:color-mix(in srgb,var(--green) 55%,var(--line))}
.evx .evl{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--dim)}.evx .evl span{opacity:.7}
.evx>b{display:block;font-family:Sora,sans-serif;font-size:18px;margin:2px 0 1px}.evx>.dim{font-size:12px}
.evx .no{color:var(--coral);font-size:15px}.evx .xl{color:var(--gold);font-weight:700}
.evx .evm{margin-top:5px;font-size:12px}.evx.over{opacity:.8}
.team.evot .warnt{color:var(--gold);margin-bottom:6px}

.team .work{margin-top:4px;font-size:12.5px;color:var(--dim)}.team .work b{color:var(--ink);font-weight:600}.team .work .short{color:var(--coral)}
.note.have input,.have input{width:84px;background:var(--card);border:1px solid var(--line);border-radius:8px;color:var(--ink);padding:4px 6px}
.team .work .unk{color:var(--gold)}

.bcheck .bcg+.bcg{margin-top:10px}.bcheck .uh,.habits .uh{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--dim);margin-bottom:4px}
.bck{display:flex;gap:8px;padding:5px 0;font-size:13px;line-height:1.35}.bck+.bck{border-top:1px solid var(--line)}
.bck .bi{flex:0 0 18px;font-weight:700;text-align:center}.bck.bad .bi{color:var(--coral)}.bck.good .bi{color:var(--green)}.bck.warn .bi{color:var(--gold)}
.bck .fx,.hab .fx{color:var(--ink);opacity:.85;margin-top:2px;font-size:12.5px}
.bgrade{display:flex;align-items:center;gap:10px;margin:0 0 8px}.bgrade .gl{font-family:Sora,sans-serif;font-weight:800;font-size:26px;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--line)}
.bgrade .ga,.bgrade .gb{color:var(--green)}.bgrade .gc{color:var(--gold)}.bgrade .gd,.bgrade .ge,.bgrade .gf{color:var(--coral)}
.review .rsec.next{border-left:3px solid var(--green);padding-left:8px}
.hab{display:flex;gap:10px;padding:6px 0;font-size:13px}.hab+.hab{border-top:1px solid var(--line)}.hab .hn{font-family:Sora,sans-serif;font-weight:800;font-size:20px;min-width:26px;color:var(--coral)}
.metal{font-size:12.5px;color:var(--dim);margin:2px 0 0}.scanhero .metal{margin:4px 0 0}
.chip.strong{background:color-mix(in srgb,var(--green) 18%,transparent);color:var(--green)}
/* Today: events */
.evleague{font-size:13px;margin:4px 0 8px;padding:8px 12px;border-radius:12px;background:rgba(91,141,239,.10);border:1px solid rgba(91,141,239,.25)}.evleague .dim{font-size:12px}
.evhd{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);margin:10px 2px 2px;font-weight:600}
details.team.ev{padding:0}details.team.ev>summary{list-style:none;display:flex;gap:10px;align-items:flex-start;padding:10px 12px;cursor:pointer}
details.team.ev>summary::-webkit-details-marker{display:none}
details.team.ev.live{border-color:rgba(72,213,151,.35)}
details.team.ev .evtx{flex:1;min-width:0}details.team.ev .go{color:var(--dim);font-size:18px;flex:none;transition:transform .15s}
details.team.ev[open] .go{transform:rotate(90deg)}details.team.ev[open] .evtop{display:none}
.evimg{width:48px;height:48px;border-radius:10px;object-fit:cover;flex:none;background:var(--line)}
.evfor{font-size:12px;color:var(--gold);margin-top:4px}
.evbon{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.chip.bon{background:rgba(72,213,151,.13);color:#7FE3B6;font-weight:600}
.evmons{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;align-items:center}.evmons>.dim{font-size:12px}
.evmon{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:2px 8px 2px 4px;border-radius:999px;background:rgba(255,255,255,.05);border:1px solid var(--line)}
.evmon .pi.s{width:22px;height:22px}.evmon em{font-style:normal;font-size:12px;color:var(--dim)}
.evmon.want{border-color:rgba(245,184,76,.55)}.evmon.want em,.evmon.candy em{color:#F5CE8A}.evmon.candy{border-color:rgba(245,184,76,.35)}
.evbody{padding:0 12px 12px 12px}.evsub{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);margin:10px 0 0;font-weight:600}
.evgrp{font-size:12px;color:var(--ink);margin:6px 0 -2px}.evres{margin:4px 0 0;padding-left:18px;font-size:12.5px;color:var(--dim)}
.evabout{font-size:12.5px;line-height:1.4;color:var(--ink);opacity:.82;margin-top:5px}.evabout.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.evbody>.evabout:first-child{margin-top:0}
/* "Update with a new scan": outlined green, stands out from the grey buttons without being a filled one */
.btn.upd{margin:2px 0 0;padding:10px 12px;background:transparent;color:var(--green);border:1px solid rgba(72,213,151,.55);font-weight:600;font-size:14px}
.btn.upd:active{background:rgba(72,213,151,.10)}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}   /* iOS must not enlarge text in a block it thinks overflows */
.evbl{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:12.5px;line-height:1.4;color:var(--ink)}
.evbl li{position:relative;padding:5px 9px 5px 22px;border-radius:9px;background:rgba(72,213,151,.08);overflow-wrap:anywhere}
.evbl li::before{content:'✦';position:absolute;left:8px;top:5px;color:var(--green);font-size:12px}
.evbl li b{color:#7FE3B6;font-weight:600}.evbl li.evmore{background:none;padding-left:9px}.evbl li.evmore::before{content:none}
.evbon .evmore{font-size:12px;align-self:center}
/* Builder: picking a Pokémon for a slot, and the roster as a wrapping grid */
.pickbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 8px;padding:10px 12px;border-radius:12px;background:rgba(72,213,151,.10);border:1px solid rgba(72,213,151,.4);font-size:13.5px}
.pickbar button{flex:none;background:transparent;border:1px solid var(--line);color:var(--dim);border-radius:10px;padding:6px 12px;font-weight:600}
.rank.unr .rk{color:var(--dim)}
.pgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:6px 0 2px}
.ptile{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px 7px;border-radius:12px;background:var(--card);border:1px solid var(--line);cursor:pointer;min-width:0;text-align:center}
.ptile .pi{width:40px;height:40px}.ptile b{font-size:12px;font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ptile span{font-size:12px;color:var(--dim)}.ptile.ow{border-color:rgba(72,213,151,.45)}.ptile.pd{border-color:rgba(91,141,239,.45)}
.ptile:active{background:rgba(72,213,151,.08)}
.bfilt{margin:4px 0 2px;align-items:center}.bfilt .chip{border:1px solid var(--line);cursor:pointer}.bfilt .cnt{margin-left:auto;font-size:12px}
.ptile .pic{position:relative;display:inline-block}.ptile .b2{position:absolute;right:-6px;bottom:-2px;font-style:normal;font-size:12px;font-weight:700;line-height:15px;width:15px;height:15px;border-radius:50%;background:var(--green);color:#0B1220;text-align:center}
/* in-game nickname on the scan card */
.nickrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.nick{font-size:17px;font-weight:600;letter-spacing:.02em;color:var(--ink)}
.nickrow .copy{background:transparent;border:1px solid rgba(72,213,151,.55);color:var(--green);border-radius:9px;padding:4px 10px;font-weight:600;font-size:12.5px}
.nicksel,.nicktpl{display:block;width:100%;margin-top:6px;padding:7px 9px;background:#0E1626;border:1px solid var(--line);border-radius:10px;color:var(--ink);font-size:13px}
.yourscans .dt a{color:var(--green);text-decoration:none;font-weight:600}
/* cards the last import made or updated */
.chip.impnew{background:rgba(72,213,151,.16);color:#7FE3B6}.chip.impup{background:rgba(91,141,239,.16);color:#9DBCF7}
/* Game plan */
.gprk{font-size:13px;color:var(--dim)}.gprk b{color:var(--ink);font-family:Sora,sans-serif}
.gpbar{position:relative;height:14px;margin:10px 4px 2px;border-radius:7px;background:var(--line)}
.gpbar i{position:absolute;top:3px;width:2px;height:8px;margin-left:-1px;background:var(--dim);opacity:.7}
.gpbar b{position:absolute;top:-2px;width:8px;height:18px;margin-left:-4px;border-radius:4px;background:var(--green);box-shadow:0 0 0 2px var(--bg,#111)}
.gpl{display:flex;align-items:center;gap:8px;padding:7px 0;border-top:1px solid var(--line);cursor:pointer}.gpl:first-child{border-top:none;padding-top:0}
.gpl .gn{width:38%;min-width:0;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis}.gpl .gn .chip{font-size:12px;padding:1px 6px;margin-left:2px}
.gpl .ga{flex:1;min-width:0;display:flex;flex-direction:column}.gpl .ga b{font-size:13.5px}.gpl .ga small{color:var(--dim);font-size:12px;line-height:1.3}
.gpl.gk-stay .ga b{color:var(--green)}.gpl.gk-swap .ga b{color:#F0C060}.gpl.gk-none .ga b{color:var(--bad)}
.gpleads .mut{margin:2px 0 8px}
.gpt{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:7px 8px;margin:0 -8px;border-radius:8px;cursor:pointer;font-size:13.5px}.gpt.on{background:rgba(72,213,151,.1)}
.gpt .gn{flex:1;min-width:0;font-weight:600}.gpt .gs{font-family:Sora,sans-serif;font-weight:700}.gpt .gr{font-size:12px;color:var(--dim);min-width:72px;text-align:right}
.gpm{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:6px 0;border-top:1px solid var(--line)}.gpm:nth-child(2){border-top:none}
.gpm .gi{flex:1;min-width:0;display:flex;align-items:center;gap:3px}.gpm .gn{font-size:13px;margin-left:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gpm .dt{flex-basis:100%;margin-top:0}
.gpm .chip{font-size:12px}
.gphead{display:flex;align-items:center;gap:12px;padding:12px 14px;margin:0 0 10px;background:var(--card);border:1px solid var(--line);border-radius:16px;cursor:pointer}
.gphead .trio .pi+.pi{margin-left:-9px}.gphead .tx{flex:1;min-width:0}.gphead .tx b{font-family:Sora,sans-serif;font-size:16px}
.gphead .dt{color:var(--dim);font-size:12px;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gpchg,.gbl-go{flex:none;font-size:12.5px;font-weight:600;color:var(--green);background:none;border:1px solid rgba(72,213,151,.45);border-radius:10px;padding:6px 10px;cursor:pointer}.gbl-go{font-size:12px;padding:4px 10px}
/* type badges */
.ty{width:1.1em;height:1.1em;flex:none;display:inline-block;vertical-align:-.2em;margin-right:.3em}
.chip.tc{display:inline-flex;align-items:center;text-transform:capitalize}.chip.tc .ty{margin-right:.35em;margin-left:-.15em}
.mvh{white-space:nowrap}.mvh .ty{margin-right:.22em}
.why{display:flex;flex-wrap:wrap;gap:2px 10px;font-size:12px;color:var(--dim);margin-top:2px;line-height:1.35}.why b{color:var(--ink);font-weight:600}
.gpl .gn .gt{display:inline-flex;margin-left:4px;vertical-align:-.15em}.gpl .gn .gt .ty{margin-right:1px}
.gpm .gi .ty{margin:0 0 0 2px}
.bck .why{margin-top:3px}
/* cup conditions */
.cupc summary{list-style:none;cursor:pointer}.cupc summary::-webkit-details-marker{display:none}
.cupc .crules{margin:8px 0 4px}.cupc .crules b{font-size:12.5px;margin-right:6px}.cupc .crules .chip{margin:2px 4px 2px 0}
.cgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}
.cbar{display:flex;align-items:center;gap:6px;font-size:12px;margin:3px 0}.cbar .ct{width:76px;flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cbar .cb{flex:1;height:6px;border-radius:3px;background:var(--line);overflow:hidden}.cbar .cb i{display:block;height:100%;background:var(--green);border-radius:3px}.cbar .cn{width:18px;text-align:right;color:var(--dim);font-variant-numeric:tabular-nums}
.cl{display:flex;gap:8px;align-items:flex-start;font-size:13px;line-height:1.4;padding:6px 0;border-top:1px solid var(--line)}.cl:first-of-type{border-top:none}.cl .ty{margin:2px 0 0;flex:none}.cl .ty+.ty{margin-left:-4px}.cl span{flex:1}
.cupline .ty{margin:0 2px 0 0}
/* GO Battle League on Today */
.evleague .gbl-h{font-size:14px;margin-bottom:2px}
.evleague .gbl-when{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);margin:8px 0 2px}
.gbl-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-top:1px solid rgba(91,141,239,.18)}.gbl-when+.gbl-row{border-top:none}
.gbl-cap{flex:none;min-width:62px;font-size:12px;font-weight:700;font-family:Sora,sans-serif;color:#A9C0F7;background:rgba(91,141,239,.16);border-radius:8px;padding:3px 7px;text-align:center}
.gbl-nm{flex:1;min-width:0;font-size:13.5px;line-height:1.3}
.gbl-on{flex:none;font-size:12px;color:var(--green)}.gbl-row.on .gbl-nm{font-weight:600}
.bside .nm .bty{display:inline-flex;margin-left:3px;vertical-align:-.12em}.bside .nm .bty .ty{margin-right:1px;width:.95em;height:.95em}
.chip .eff{font-size:12px;font-weight:700}.chip .ty{margin-right:.25em}
/* Invest */
.inv{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;margin:0 0 8px;background:var(--card);border:1px solid var(--line);border-radius:14px;cursor:pointer}
.inv .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.inv .t1{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.inv .t1 b{font-size:14.5px;margin-right:2px}.inv .t1 .ty{margin-right:0}
.inv .t1 .chip{font-size:12px;padding:1px 7px;margin-left:2px}.inv .t1 .chip.pp{background:rgba(91,141,239,.16);color:#A9C0F7}.inv .t1 .chip.pp .ty{margin-right:3px}
.inv .t2{font-size:12.5px}.inv .t3{font-size:12px;color:var(--dim);line-height:1.35}
.inv.v-skip{opacity:.6}
.invplan .ip{display:flex;gap:10px;align-items:flex-start;padding:7px 0;border-top:1px solid var(--line);cursor:pointer}.invplan .ip:first-child{border-top:none;padding-top:0}
.invplan .n{flex:none;width:22px;height:22px;border-radius:11px;background:rgba(72,213,151,.18);color:var(--green);font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center}
.invplan .tx{flex:1;min-width:0;font-size:13.5px}
#idust{width:90px}

/* good / bad text, everywhere: the per-component copies below this line are gone */
:is(span,b,small,em,a).good,.gd{color:var(--green)}:is(span,b,small,em,a).bad,.bd{color:var(--bad)}:is(span,b,small,em).gold{color:var(--gold)}
.navbar.kbd{display:none}   /* iOS: the keyboard is up (scanner.js pinNav) */

/* ---------- accessibility (#19) ---------- */
/* keyboard users see where they are; mouse and touch stay clean (focus-visible, not focus) */
:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:4px}
.team.card:focus-visible,.tile:focus-visible,[role=button]:focus-visible{outline:2px solid var(--green);outline-offset:1px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--green);outline-offset:0}
/* close (✕), menu (⋮) and chip controls reach 44×44 through padding or an invisible hit area, without moving the layout */
.x,[aria-label=Close]{position:relative}
.x::after{content:'';position:absolute;left:50%;top:50%;width:44px;height:44px;transform:translate(-50%,-50%)}
.pill .x::after,.role.slot .x::after{width:32px;height:32px}   /* chips sit in rows: a full 44px hit area would swallow the neighbour */
/* type quiz */
.qlv{margin:0 0 8px}
.quiz .qtext{font-size:15px;line-height:1.5}.quiz .qtext .pi{vertical-align:-.3em;margin-right:3px}
.qvs{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin:12px 0 2px;text-align:center}.qside{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0}.qside b{font-size:14px;line-height:1.25}.qvs .qty{display:inline-flex;gap:2px}.qvs .qty .ty{margin:0}
.qopts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.qopt{background:var(--bg);border:1px solid var(--line);color:var(--ink);border-radius:12px;padding:10px 8px;font:inherit;font-size:13.5px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px;flex-wrap:wrap;text-align:center;min-height:46px}
.qopt .dim{font-size:12px}.qopt.right{border-color:var(--green);background:rgba(72,213,151,.14)}.qopt.wrong{border-color:var(--bad);background:rgba(245,154,139,.14)}.qopt.off{opacity:.55}
.qwhy{margin-top:10px;font-size:13px;line-height:1.5;color:var(--dim)}.qwhy b{color:var(--ink)}.qwhy.ok>b:first-child{color:var(--green)}.qwhy.no>b:first-child{color:var(--bad)}.qwhy .why{margin-top:4px}
.tchips.qown{margin:0 0 6px;align-items:center;gap:8px}
.qside .dim{font-size:12px}
/* no double-tap zoom (taps on answers, chips and buttons stay taps); pinch-zoom stays. touch-action is not inherited, but a
   touch's effective value is the intersection with its ancestors, so the root covers the page; controls carry it themselves too. */
html,body,button,a,input,select,textarea,[data-click],[role=button]{touch-action:manipulation}
.meter svg{touch-action:none}
/* credits (#8): what an AI request costs and what is left, next to the link that spends them */
.cost{display:inline-block;margin-left:4px;padding:1px 7px;border:1px solid var(--line);border-radius:999px;font-size:11.5px;color:var(--dim);white-space:nowrap}

/* team page: the name as the heading, what kind of team it is as one row of chips under it */
#team .hero .tname{font-family:Sora,sans-serif;font-weight:800;font-size:20px;line-height:1.2;color:var(--ink)}
#team .hero .ttags{margin:6px 0 12px}

/* readable team page: tile moves one per line, member moves wrapping without ·-runs, one threat per block */
.role .rm.mv2{display:flex;flex-direction:column;gap:1px;white-space:normal}.role .rm.mv2 span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.role .rn{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2}
.members .mvw{display:flex;flex-wrap:wrap;gap:2px 10px;margin-top:3px;font-size:12px;color:var(--dim)}
.threats .thr2{padding:8px 0;border-top:1px solid var(--line);font-size:12.5px}.threats .thr2:first-child{border-top:none;padding-top:2px}
.threats .thr2 .tn b{color:var(--ink);font-weight:600;cursor:pointer}
/* search strings: the label (team or member name) on its own line above its string, never cut off */
.srch{flex-wrap:wrap;row-gap:4px}.srch .lb{width:100%;overflow:visible;white-space:normal}
.kv2.need .lb{width:72px}
/* the "new version" bar: stays until tapped, above the bottom bar */
#upd{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(72px + env(safe-area-inset-bottom));z-index:31;display:flex;align-items:center;gap:12px;width:min(92vw,440px);background:var(--card);border:1px solid var(--green);border-left-width:4px;border-radius:12px;padding:10px 12px;box-shadow:0 8px 24px rgba(0,0,0,.35)}
#upd .ut{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px;font-size:13.5px}#upd .ut .dim{font-size:12px}#upd .btn{flex:0 0 auto;width:auto;margin:0;padding:8px 14px}
/* the "storage full" bar: like the update bar, in the warning colour */
#storefull{position:fixed;left:50%;transform:translateX(-50%);top:calc(10px + env(safe-area-inset-top));z-index:32;display:flex;align-items:center;gap:12px;width:min(92vw,440px);background:var(--card);border:1px solid var(--bad);border-left-width:4px;border-radius:12px;padding:10px 12px;box-shadow:0 8px 24px rgba(0,0,0,.35)}
#storefull .ut{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px;font-size:13.5px}#storefull .ut .dim{font-size:12px}#storefull .btn{flex:0 0 auto;width:auto;margin:0;padding:8px 12px}
/* owner dashboard: one hero number with its ceiling meter, four tiles, a bar chart, labelled rows */
.adays{margin:0 0 10px}.ahero .big{font-family:Sora,sans-serif;font-weight:800;font-size:44px;line-height:1.1;color:var(--ink);margin:2px 0 8px}
.ameter{height:10px;border-radius:5px;overflow:hidden;background:rgba(72,213,151,.16)}.ameter i{display:block;height:100%;border-radius:5px;background:var(--green)}
.ameter.gold{background:rgba(245,184,76,.18)}.ameter.gold i{background:var(--gold)}.ameter.bad{background:rgba(245,154,139,.18)}.ameter.bad i{background:var(--bad)}
.atiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0 4px}.atile{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.atile b{font-family:Sora,sans-serif;font-size:22px;font-weight:700;color:var(--ink)}.atile b.bad{color:var(--bad)}.atile span{font-size:12px;color:var(--dim)}
.achart{position:relative}.achart svg{width:100%;height:auto;display:block;touch-action:pan-y}.achart .gl{stroke:var(--line);stroke-width:1}.achart .ax{font-size:10px;fill:var(--dim)}
.achart .hit{fill:transparent;cursor:pointer}.achart .hit.on{fill:rgba(234,241,247,.06)}
.atip{position:absolute;top:-6px;width:150px;background:#0E1626;border:1px solid var(--line);border-radius:8px;padding:5px 8px;font-size:12px;display:flex;flex-direction:column;pointer-events:none;z-index:2}.atip span{color:var(--dim)}
.atable{margin-top:8px;font-size:12.5px}.atable summary{color:var(--dim);cursor:pointer}.atable table{width:100%;border-collapse:collapse;margin-top:6px}.atable th,.atable td{text-align:left;padding:3px 4px;border-top:1px solid var(--line)}.atable th{color:var(--dim);font-weight:600}
.team.row.arow{align-items:flex-start}.team.row.arow .sc{min-width:64px;font-size:16px}
.atip[hidden]{display:none}.acred .kv2 .lb,#admin .card .kv2 .lb{width:72px}
.amem .amail{font-family:Sora,sans-serif;font-weight:700;font-size:20px;line-height:1.25;color:var(--ink);overflow-wrap:anywhere;margin-bottom:4px}   /* Members: the e-mail is the key fact */
.amem .aid{overflow-wrap:anywhere;font-size:12.5px}.amem .amh{margin:12px 0 0;font-size:12.5px;font-weight:600}.amem .amh span{font-weight:400}
.amem .add input{max-width:110px;flex:0 1 110px;min-width:80px}.amem .apro{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.amem .apro .btn{margin:0;width:100%;padding:10px 8px;font-size:14px}.amem .apro .abad{grid-column:1/-1}.amem .agold{color:var(--gold);margin-top:10px}.btn.sec.abad{color:var(--bad);border-color:rgba(245,154,139,.45)}

/* Check this phone (#/check): the verdict large and coloured, then labelled lines with room for "Live version" */
.kv2.dk .lb{width:104px}.chk.good{color:var(--green)}.chk.bad{color:var(--bad)}.chk.gold{color:var(--gold)}.ahero .big.chk{font-size:26px;line-height:1.2}
.chkbtns{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.chkbtns .btn{flex:0 0 auto;width:auto}
.chkpre{white-space:pre-wrap;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--dim);margin:6px 0 0}
.arow .sc.bad{color:var(--bad)}.arow .sc.gold{color:var(--gold)}   /* the Phone checks verdicts: red means fails, gold means fixed */

/* special battle mechanics (mechanics.js): the species page card and the tiles' ✦ line */
.team.card.mech .mh{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}.team.card.mech .mh b{font-size:15px}.team.card.mech .mh .dim{font-size:12px}
.team.card.mech .mx,.role .rx{color:#B9A6FF}.team.card.mech .kv2{display:flex;gap:10px;margin-top:4px;line-height:1.4}
.team.card.mech .kv2 .lb{flex:none;width:70px;color:var(--dim)}.team.card.mech .good{color:var(--green)}.team.card.mech .gold{color:var(--gold)}
.role .rx{display:block;font-size:11px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}

/* Send feedback (#/feedback): a heading, the kind, the text, the e-mail, one button */
.fbcard .fbhead{font-family:Sora,sans-serif;font-weight:700;font-size:20px;line-height:1.25;color:var(--ink);margin-bottom:4px}
.fbcard .fbkind{margin:12px 0 10px}.fbcard .fbkind button{padding:7px 14px;font-size:13px}
.fbcard textarea,.fbcard input{width:100%;box-sizing:border-box;background:var(--bg);border:1px solid var(--line);border-radius:10px;color:var(--ink);padding:10px;font:inherit;font-size:16px}
.fbcard textarea{resize:vertical;min-height:120px}.fbcount{text-align:right;font-size:12px;margin:3px 0 10px}
.fblabel{display:block;font-size:13px;font-weight:600;margin-bottom:5px}.fbnote{font-size:12px;margin-top:4px}.fberr{color:var(--bad);margin-top:10px;font-size:14px}
.afb .fbmsg{white-space:pre-wrap;color:var(--ink);font-size:14px;line-height:1.4;margin-bottom:4px;overflow-wrap:anywhere}.afb .fbmsg.cut{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.afb .fbfull{white-space:pre-wrap;font-size:13px;color:var(--dim);margin-top:4px;overflow-wrap:anywhere}.arow .sc.good{color:var(--green)}

/* install button in the header (#install): green so it reads as the one thing to do, gone inside the home-screen app */
h1 .help.inst{color:#07130C;background:var(--green);border-color:var(--green);font-weight:700}h1 .help.inst+.help.prof{margin-left:0}h1 .help.inst[hidden]{display:none}
h1 .help.inst{padding:0 9px}@media (max-width:420px){.can-install h1 .help.prof:not(.inst) #proflbl{display:none}.can-install h1 .help.prof:not(.inst){padding:0 8px}}
.installcard{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--green);border-radius:14px;padding:12px 10px 12px 14px;margin:10px 0}
.installcard .ic{font-size:24px;flex:none}.installcard .tx{flex:1;min-width:0;white-space:normal}.installcard .tx b{display:block}.installcard .tx small{display:block;color:var(--dim);font-size:13px}
.installcard .go{flex:none;background:var(--green);color:#07130C;border:0;border-radius:10px;padding:10px 14px;font-weight:700;font-size:15px}
.installcard .later{flex:none;background:none;border:0;color:var(--dim);font-size:18px;width:36px;height:44px}

/* PokeScan moved (sync.js moved()): like the storage bar, in the app's green */
#movedbar,.movedbar{position:fixed;left:50%;transform:translateX(-50%);top:calc(10px + env(safe-area-inset-top));z-index:32;display:flex;align-items:center;gap:10px;width:min(92vw,440px);background:var(--card);border:1px solid var(--green);border-left-width:4px;border-radius:12px;padding:10px 12px;box-shadow:0 8px 24px rgba(0,0,0,.35)}
#movedbar .ut,.movedbar .ut{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px;font-size:13.5px}#movedbar .ut .dim,.movedbar .ut .dim{font-size:12px}
#movedbar .mvb,.movedbar .mvb{display:flex;flex-direction:column;gap:6px;flex:0 0 auto}#movedbar .btn,.movedbar .btn{width:auto;margin:0;padding:7px 12px;text-align:center;text-decoration:none}
