/* Pocket collection concept; application state lives in the existing frontend. */
:root{--bg-0:#f1f3f7;--bg-top:#f1f3f7;--bg-1:#fff;--bg-2:#e7ecf3;--panel:#fff;--panel-2:#eef2f8;--line:#cbd3df;--line-strong:#9cabbf;--ink:#19222e;--ink-dim:#526071;--ink-faint:#526071;--cyan:#b73715;--cyan-soft:#a33318;--gold:#826211;--gold-deep:#795910;--shadow:none;--radius:12px;--font-display:'Barlow Condensed',sans-serif}
html{height:100%;background:#dbe0e7}body{height:100vh;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#dbe0e7;color:var(--ink);font-family:'DM Sans',sans-serif;padding:0;margin:0;min-height:0}button,input,select{font-family:inherit}button{touch-action:manipulation}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #274dd0;outline-offset:3px}::selection{background:#ffbc9c;color:#19222e}.app-shell{max-width:980px;margin:auto;background:#f1f3f7;min-height:100vh;padding:0 0 155px}.preview-ribbon{background:#19222e;color:#fff;text-align:center;padding:8px 12px;font-size:11px;line-height:1.4;max-width:980px;margin:auto}.site-header{padding:32px 20px 18px}.site-title{font:800 44px/.95 var(--font-display);color:var(--ink);background:none;-webkit-text-fill-color:currentColor;text-shadow:none}.site-sub{color:var(--ink-dim);font-size:14px;line-height:1.5}.site-footer{font-size:11px;color:var(--ink-dim);padding:24px 20px;margin:0}.pocket-top{display:flex;justify-content:space-between;align-items:center;padding:16px 22px 8px}.pocket-brand{font:800 22px var(--font-display)}.board-name-chip{padding:4px 8px 4px 4px;min-height:44px;background:#fff;border:1px solid var(--line);border-radius:30px;gap:6px}.board-name-chip b{color:var(--ink);font-size:12px}.name-avatar{width:32px;height:32px;box-shadow:none;background:#e2e9f3;color:var(--ink)}.name-avatar.has-sprite,.picker-avatar.has-sprite{box-shadow:none;background:#e6ebf3;border:0}.pocket-hero{position:relative;padding:12px 22px 22px;overflow:hidden;max-width:580px}.pocket-hero h1{font:800 66px/.83 var(--font-display);letter-spacing:-1.6px;margin:6px 0 20px;max-width:240px}.pocket-hero h1 em{font-style:normal;color:#ca3e1a}.pocket-hero>img{position:absolute;right:8px;top:0;width:158px;height:164px;object-fit:contain;transform:rotate(9deg);filter:drop-shadow(0 12px 9px #00000022)}.pocket-progress{display:flex;justify-content:space-between;font-size:12px;position:relative;gap:12px}.pocket-progress strong{font-weight:500;color:var(--ink-dim)}.pocket-progress-track{height:5px;background:#c9d1dd;margin-top:11px;overflow:hidden}.pocket-progress-track:before{content:'';display:block;height:100%;width:calc(var(--p,0)*1%);background:#ca3e1a}.pocket-toolbar{display:flex;gap:9px;padding:12px 18px;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f1f3f7;position:sticky;top:0;z-index:20}.pocket-toolbar button{min-height:44px;padding:9px 12px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--ink);font-size:12px;font-weight:700}.pocket-toolbar #open-filters{text-align:left;border:0;background:none;margin-right:auto;padding:2px 0}.toolbar-detail{display:block;font-size:11px;color:var(--ink-dim);font-weight:400;margin-top:3px}#season-caption{font-size:15px}.pocket-toolbar svg{width:19px;height:19px;display:block}.pocket-toolbar button[aria-pressed=true]{background:#19222e;color:white}.pocket-search{padding:12px 18px;background:#e7edf5}.pocket-search input{width:100%;min-height:46px;background:#fff;color:var(--ink);border:1px solid var(--line-strong);border-radius:8px;padding:10px 12px;font-size:16px}.gesture-tip{padding:12px 18px 0;margin:0;color:var(--ink-dim);font-size:11px;line-height:1.5}.lock-bar{display:none!important}.controls{background:transparent;border:0;box-shadow:none;display:flex;flex-direction:column;padding:0;margin:0;gap:16px}.filter-group{display:grid;grid-template-columns:repeat(3,1fr);width:100%;gap:8px}.filter-btn,.filter-btn.seg-icon{min-height:46px;flex:initial;width:auto;padding:10px;border:1px solid var(--line);border-radius:8px;font-size:13px;color:var(--ink);background:#f1f3f7;justify-content:center;display:flex;align-items:center;gap:5px}.filter-btn.seg-icon::before{display:none}.filter-btn[data-filter=mastered]{margin:0}.filter-btn.is-active,.filter-btn[data-filter=mastered].is-active,.filter-btn[data-filter=lost].is-active{background:#19222e;color:#fff;border-color:#19222e}.filter-selects{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%}#filter-season{grid-column:1/-1}.filter-select{min-height:46px;background:#f1f3f7;color:var(--ink);border:1px solid var(--line-strong);border-radius:8px;font-size:16px;padding:10px;width:100%;appearance:auto}.controls-right{display:none}.unreleased-toggle{margin:18px 0;min-height:44px;font:500 14px 'DM Sans',sans-serif;letter-spacing:0;text-transform:none;color:var(--ink)}.legend{margin:16px 0;border:0;background:none;padding:0;gap:12px;box-shadow:none}.legend-title{display:none}.legend-item{font:400 12px 'DM Sans',sans-serif;text-transform:none;letter-spacing:0}.legend .lg{box-shadow:none}.season-note{margin:12px 18px;font-size:12px;line-height:1.5;background:#e5ebf4;border:0;color:var(--ink-dim);padding:12px}.codes-banner{display:none}.grid{display:grid;grid-template-columns:1fr;gap:0;max-width:none;margin:0}.sprite-row{border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;box-shadow:none;padding:22px 18px 24px;gap:14px}.row-head{display:grid;grid-template-columns:minmax(0,1fr) 44px auto;gap:0 6px;align-items:center}.row-dot{display:none}.sprite-name{font:800 36px/1 var(--font-display);letter-spacing:-.5px;white-space:normal;overflow:visible;grid-column:1;grid-row:1}.rarity-tag{grid-column:1;grid-row:2;padding:0;margin-top:6px;background:none;border:0;transform:none;color:color-mix(in srgb,var(--rarity) 45%,#19222e);font:600 11px 'DM Sans',sans-serif;letter-spacing:0;text-transform:none;align-self:auto}.rarity-tag span{transform:none}.row-count{grid-column:3;grid-row:1/3;font:500 12px 'DM Sans',sans-serif;letter-spacing:0;color:var(--ink-dim);min-width:50px;text-align:right}.row-count .mini-count{font-size:18px;font-weight:700}.row-count:after{content:' collected';display:block;font-size:10px;margin-top:3px}.info-btn{grid-column:2;grid-row:1/3;min-width:44px;min-height:44px;width:44px;height:44px;border:0;background:transparent;color:var(--ink-dim);font:600 17px Georgia,serif;transform:none}.row-body{display:block}.row-body .portrait{display:none}.variant-cells{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible;gap:13px 10px;padding:0}.variant-cells .cell{width:100%;min-width:0;gap:0;align-items:stretch;border:0;color:var(--ink);text-align:left}.cell{--tile-color:#bce0fb}.cell.variant-gold{--tile-color:#f5d877}.cell.variant-cheatmaster{--tile-color:#c4e3b0}.cell.variant-loothacker{--tile-color:#d1cdfc}.cell.variant-bountyhunter{--tile-color:#efc6e9}.cell.variant-candy{--tile-color:#f4c1da}.cell.variant-galaxy{--tile-color:#c9c1f2}.cell.variant-gem{--tile-color:#c7e6db}.cell.variant-holofoil{--tile-color:#bcdfdc}.cell.variant-cube{--tile-color:#cbb6e5}.cell.variant-quack{--tile-color:#f5e6ad}.cell .tile,.cell.is-owned .tile,.cell.is-mastered .tile,.cell.is-lost .tile,.cell.is-unreleased:not(.is-owned) .tile,.cell:hover .tile,.grid.readonly .cell:hover .tile{width:100%;height:116px;background:var(--tile-color);border:1px solid #19222e15;border-radius:9px;transform:none;box-shadow:none;padding:0;position:relative;overflow:hidden}.cell .tile-inner{height:100%;transform:none;display:flex;align-items:center;justify-content:center}.cell img,.cell.is-owned img,.cell.is-mastered img,.cell.is-lost img{width:100%;height:108px;object-fit:contain;filter:drop-shadow(0 6px 5px #00000020);opacity:1;transform:none}.cell .tile-lock{display:none}.cell .cell-label,.cell.variant-gold .cell-label,.cell.variant-candy .cell-label,.cell.variant-galaxy .cell-label,.cell.variant-holofoil .cell-label,.cell.is-lost .cell-label{font:700 11px/1.3 'DM Sans',sans-serif;letter-spacing:-.1px;text-transform:none;color:var(--ink);text-align:left;white-space:normal;margin-top:7px}.cell:after{content:'Missing';font-size:11px;line-height:1.4;color:var(--ink-dim);margin-top:2px}.cell.is-owned:after{content:'Owned'}.cell.is-mastered:after{content:'Mastered'}.cell.is-lost:after{content:'Lost';color:#a53226}.cell .badge{top:auto;bottom:6px;right:6px;width:24px;height:24px;border:0;background:#19222e;color:#fff;box-shadow:none;transform:none!important;font-size:13px}.cell .crown svg{width:14px;height:14px}.cell.is-lost .lostmark{background:#9d352b}.cell:not(.is-owned):not(.is-lost) .tile-inner:after{content:'';position:absolute;bottom:6px;right:6px;width:22px;height:22px;border-radius:50%;background:#ffffff9c;border:1.5px dashed #526170}.cell.is-mastered .tile{border-color:#9b7617}.cell.is-lost .tile{border-style:dashed;border-color:#a53226}.cell-level{background:#19222e;padding:6px;top:5px;left:5px;border-radius:5px}.cell-level .pip{box-shadow:none;background:#f5d877}.soon-chip{font-size:11px;transform:translateX(-50%);font-style:normal;background:#bceadd;color:#194939}.set-remainder{padding:9px;display:flex;flex-direction:column;justify-content:center;gap:7px;color:var(--ink-dim)}.set-remainder strong{font:700 34px/.95 var(--font-display);color:#ca3e1a}.set-remainder span{font-size:12px;line-height:1.4}.info-panel{background:#e6ecf5;border:0;padding:16px;border-radius:8px;font-size:13px;line-height:1.5}.info-panel .find b,.info-panel .variant-bonuses b{color:var(--ink)}.stat-strip{padding:18px;margin:0;background:none;border:0;border-bottom:1px solid var(--line);box-shadow:none;flex-wrap:wrap;gap:12px}.mastered-line{color:#735616}.lost-line{color:#a53226}.rarity-chip{background:#e5eaf2;border-color:var(--line);font-size:12px}.rarity-chip .rc-name{font-size:11px;color:var(--ink-dim)}.pocket-bottom{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:980px;background:#f1f3f7;border-top:1px solid #b6c2d2;z-index:30;padding-bottom:env(safe-area-inset-bottom)}.edit-strip{padding:10px 18px;display:flex;justify-content:space-between;gap:12px;align-items:center;border-bottom:1px solid var(--line)}#preview-save{font-size:11px;color:var(--ink-dim)}#pocket-edit{min-height:44px;padding:10px 18px;border-radius:8px;border:0;background:#19222e;color:#fff;font-size:13px;font-weight:700}#pocket-edit.editing{background:#ca3e1a}.pocket-bottom nav{display:grid;grid-template-columns:repeat(5,1fr);padding:7px 8px 9px}.pocket-bottom nav button{min-height:51px;display:flex;align-items:center;justify-content:center;gap:5px;flex-direction:column;background:none;border:0;color:var(--ink-dim);font-size:10px;font-weight:600;border-radius:8px}.pocket-bottom nav button svg{width:21px;height:21px}.pocket-bottom nav button[aria-current=page]{color:#b73715;background:#f9e5dd}body:not([data-view=board]) .edit-strip,body.guide-mode .edit-strip{display:none}body[data-view=picker] .pocket-bottom,body[data-view=pin] .pocket-bottom{display:none}.preview-dialog{border:0;border-radius:22px 22px 0 0;width:min(100%,520px);max-width:100%;max-height:90vh;margin:auto auto 0;padding:20px;background:#fff;color:var(--ink);overflow-y:auto}.preview-dialog::backdrop{background:#19222e77}.preview-dialog>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.preview-dialog h2{font:800 30px var(--font-display);margin:0}.dialog-close{width:44px;height:44px;background:#eef2f7;border:0;border-radius:50%;font-size:24px;color:var(--ink)}.preview-dialog .btn-block{min-height:48px;margin-top:16px}.sheet{padding:0;place-items:end center}.sheet-scrim{background:#19222e77;backdrop-filter:none}.sheet-card{width:min(100%,540px);max-height:90vh;border:0;border-radius:22px 22px 0 0;background:#fff;box-shadow:0 -12px 40px #00000020;padding:20px 20px calc(24px + env(safe-area-inset-bottom))}.sheet-title{font:800 30px var(--font-display);letter-spacing:-.3px}.sheet-head .btn-icon{width:44px;height:44px;min-width:44px;background:#eef2f7;color:var(--ink);border:0;border-radius:50%}.sheet-section{font-size:13px;color:var(--ink);letter-spacing:0;text-transform:none}.screen-hint{font-size:13px;line-height:1.5}.btn,.btn-ghost,.btn-reset{min-height:44px;border:1px solid var(--line-strong);background:#fff;color:var(--ink);box-shadow:none;border-radius:8px}.btn-add{background:#19222e;color:#fff;border-color:#19222e}.btn-reset{color:#a53226}.btn-icon{min-width:44px;min-height:44px;background:#fff;color:var(--ink-dim);border:1px solid var(--line);box-shadow:none}.pin-input{background:#f1f3f7;color:var(--ink);border-color:var(--line-strong);box-shadow:none}.screen-error{color:#a53226}.screen-ok{color:#267343}.screen-card{background:#fff;border:1px solid var(--line);box-shadow:none;margin:12px 18px;padding:24px 18px;max-width:none}.screen-title{font:800 34px/1.05 var(--font-display)}.picker-list{grid-template-columns:1fr 1fr;gap:12px}.picker-chip{background:#edf1f7;border:1px solid var(--line);padding:20px 12px;box-shadow:none}.picker-chip:hover{box-shadow:none}.picker-avatar{background:#dde7f6;color:var(--ink);box-shadow:none}.picker-avatar.has-sprite{background:transparent}.demo-pin{font-size:13px;color:var(--ink-dim)}.avatar-pick{background:#e8edf6;border:1px solid var(--line);box-shadow:none;width:auto;min-width:0}.avatar-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.avatar-pick.is-current{border-color:#b73715;box-shadow:0 0 0 2px #b73715}.avatar-pick img{height:52px}.state-pop{top:auto!important;bottom:0!important;left:50%!important;transform:translateX(-50%);width:min(100%,480px);max-height:88vh;overflow:auto;padding:22px 20px calc(24px + env(safe-area-inset-bottom));background:#fff;border:1px solid var(--line);border-radius:22px 22px 0 0;box-shadow:0 -16px 80px #00000044;grid-template-columns:1fr 1fr;gap:10px;z-index:100}.state-pop-title{grid-column:1/-1;font:800 27px var(--font-display);text-transform:none;letter-spacing:0;color:var(--ink);padding:0 60px 12px 0}.state-pop button{min-height:46px;background:#eef2f7;color:var(--ink);border:1px solid var(--line);font-size:13px}.state-pop button.is-current{outline:2px solid #19222e;background:#e5ebf3}.state-pop button.pop-close{position:absolute;top:15px;right:16px;min-width:54px;border:0;background:none;padding:10px}.state-pop .lvl-row,.state-pop .pop-avatar{grid-column:1/-1}.lvl-label{font-size:12px}.lvl-val{color:var(--ink);font-style:normal}.lvl-btn{justify-content:center!important;width:44px}.state-pop .opt-swatch{box-shadow:none}.hold-code{grid-column:1/-1;padding:14px;background:#f7e8dd;border:1px solid #ddc3af;border-radius:8px;display:flex;flex-direction:column;gap:8px}.hold-code span{font-size:12px;color:#684735}.hold-code code{font-size:17px;font-weight:700;word-break:break-all;user-select:text}.sprite-tip{background:#fff;color:var(--ink);box-shadow:0 8px 25px #00000022}.guide{display:none;margin:0;padding:24px 18px}.guide-mode .guide{display:block}.guide-mode #grid,.guide-mode .pocket-hero,.guide-mode .gesture-tip,.guide-mode .stat-strip,.guide-mode .board-danger,.guide-mode .season-note,.guide-mode .pocket-search{display:none}.guide-title{font:800 32px/1.1 var(--font-display);color:var(--ink);text-align:left;margin-bottom:22px}.guide-grid{grid-template-columns:1fr;gap:0}.guide-card{padding:20px 0;border:0;border-bottom:1px solid var(--line);background:none;border-radius:0;box-shadow:none}.guide-card h3{color:var(--ink);font-size:17px}.guide-card li{font-size:14px;line-height:1.6}.guide-card p{line-height:1.6;font-size:14px}.ref-title{margin-top:28px}.ref-table-wrap{background:none;border:0;overflow:visible}.ref-table,.ref-table tbody{display:block;min-width:0}.ref-table thead{display:none}.ref-table tr{display:grid;grid-template-columns:1fr auto;padding:18px 0;border-bottom:1px solid var(--line);gap:10px}.ref-table td{display:block;border:0;padding:0;line-height:1.5;font-size:13px}.ref-table td:nth-child(n+3){grid-column:1/-1}.ref-table td:nth-child(3):before{content:'Ability · ';font-weight:700}.ref-table td:nth-child(4):before{content:'Find · ';font-weight:700}.ref-table .ref-name{white-space:normal}.ref-table .ref-rarity{color:var(--ink-dim)!important;padding-top:8px}.board-danger{margin:22px 18px}.codes-icon-badge{background:#f9e5dd;color:#9c3218;border:0;box-shadow:none}.codes-cat-filter{display:flex;gap:7px;flex-wrap:wrap;overflow:visible}.codes-cat-btn{font:600 12px 'DM Sans',sans-serif;text-transform:none;letter-spacing:0;min-height:44px;background:#edf1f7;color:var(--ink);padding:8px 11px;border-color:var(--line)}.codes-cat-btn.is-active{background:#19222e;color:#fff;border-color:#19222e;box-shadow:none}.code-card,.code-card.is-used,.code-card.is-expired{background:#f1f3f7;border:1px solid var(--line);box-shadow:none;padding:14px;opacity:1}.code-card.is-used{background:#e8f1e9}.code-card.is-expired{background:#e9ebef}.code-card-target{gap:9px;flex-wrap:wrap}.code-thumb-wrap{background:#dde7f4;box-shadow:none;border:0;width:52px;height:52px;border-radius:8px}.code-target-info{flex:1;min-width:110px}.code-target-name{font-size:14px;line-height:1.4;color:var(--ink)}.code-target-sub,.code-variant-label,.code-rarity-tag{font-size:11px;color:var(--ink-dim)!important}.btn-code-toggle,.btn-code-toggle.is-used{min-height:44px;background:#fff;color:var(--ink);border:1px solid var(--line-strong);padding:9px 10px;font-size:12px;box-shadow:none}.code-val,.code-card.is-used .code-val,.code-card.is-expired .code-val{background:#fff;color:var(--ink);border-color:var(--line);font-size:16px;padding:12px;display:block;word-break:break-all;letter-spacing:.4px;user-select:text}.code-expired-tag{font-size:11px;background:#f6dede;color:#893128;border:0;padding:6px}.code-icon-generic svg{stroke:#614b7a}.code-val-row{margin:0}.codes-sheet-card>.screen-hint{color:var(--ink-dim)}.hint-toast{background:#19222e;color:#fff;border:0;box-shadow:0 8px 20px #00000022;bottom:150px;font-size:13px;max-width:90vw}.save-state{font-size:12px}.save-state.saved{color:#267343}.save-state.error{color:#a53226}.save-state.saving{color:var(--ink-dim)}.gesture-tip{max-width:none}.collection-empty{margin:25px 18px;padding:20px;border:1px dashed var(--line-strong);text-align:center;font-size:14px;color:var(--ink-dim)}.provisional-tag{font-size:11px}.celebrate-banner{background:#fff;color:var(--ink);border:1px solid var(--line);box-shadow:0 12px 60px #00000033}.cb-pct{color:#b73715;background:none;-webkit-text-fill-color:currentColor;text-shadow:none}.cb-word,.cb-sub{color:var(--ink);text-shadow:none}.celebrate::before,.celebrate::after,.celebrate-banner::before{display:none}.celebrate-close{background:#fff;color:var(--ink);border:1px solid var(--line)}
@media(min-width:740px){.grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.sprite-row{border-right:1px solid var(--line);min-height:390px}.pocket-hero{max-width:480px;margin:auto}.pocket-top{padding-left:26px;padding-right:26px}.guide{max-width:780px}.screen-card{max-width:460px;margin:20px auto}.edit-strip{justify-content:flex-end}.pocket-bottom nav{max-width:600px;margin:auto}.pocket-bottom{border-left:1px solid var(--line);border-right:1px solid var(--line)}}
@media(max-width:359px){.pocket-hero h1{font-size:56px}.pocket-hero>img{width:138px;right:0}.pocket-hero{padding-left:16px;padding-right:16px}.sprite-row{padding-left:12px;padding-right:12px}.variant-cells{gap:12px 8px}.cell .tile{height:102px!important}.cell img{height:95px!important}.sprite-name{font-size:31px}.pocket-bottom nav button{font-size:10px}.edit-strip{padding:8px 12px}.sheet-card{padding-left:14px;padding-right:14px}.row-count{min-width:44px}.pocket-toolbar{padding-left:12px;padding-right:12px}}
.site-title{filter:none;transform:none;-webkit-text-stroke:0}
.filter-group{background:none;padding:0;border-radius:0}
.filter-btn,.filter-btn.seg-icon{font-family:'DM Sans',sans-serif;font-style:normal;letter-spacing:0;text-transform:none;box-shadow:none}
.cell.is-mastered .tile{box-shadow:none!important;border-color:#9b7617!important}
.code-target-name{font-family:'DM Sans',sans-serif;font-style:normal;letter-spacing:0;text-transform:none}
.code-card:hover,.code-card.is-used:hover{box-shadow:none;border-color:var(--line-strong)}
.avatar-grid{max-height:250px;overflow-y:auto;padding:4px 4px 12px;scrollbar-color:#9cabbf #eef2f7;scrollbar-width:thin}
.avatar-img{filter:none}.avatar-pick{min-height:64px}
#preview-logout{margin:0 0 18px}
.row-count:after,.pocket-bottom nav button{font-size:11px}
.guide-mode #search-toggle,.guide-mode #quick-missing{display:none}
.legend .lg{background:#e4e9f2;color:#19222e;border:1px solid #9cabbf}
.legend .lg-mastered{background:#f5d877}.legend .lg-lost{color:#a53226;border-style:dashed}
.ut-track{background:#cbd3df;border-color:#9cabbf}.ut-knob{background:#fff;box-shadow:none}
.unreleased-toggle input:checked+.ut-track{background:#19222e;border-color:#19222e}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Keep editing with the collection tools; bottom navigation stays one row. */
.app-shell{padding-bottom:calc(88px + env(safe-area-inset-bottom))}
.pocket-toolbar{gap:8px}
.pocket-toolbar #pocket-edit{min-width:52px;flex-shrink:0;background:var(--ink);color:#fff;border-color:var(--ink)}
.pocket-toolbar #pocket-edit.editing{background:#ca3e1a;border-color:#ca3e1a}
.pocket-toolbar #search-toggle{padding:9px 11px}
.guide-mode #pocket-edit{display:none}
#preview-save{position:fixed;bottom:calc(82px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:35;max-width:calc(100% - 32px);padding:8px 14px;border-radius:8px;background:#19222e;color:#fff;box-shadow:0 4px 12px #19222e22;pointer-events:none}
#preview-save.error{background:#a53226}
.hint-toast{bottom:calc(82px + env(safe-area-inset-bottom))}
@media(max-width:359px){.pocket-toolbar button{padding-inline:9px}.pocket-toolbar #open-filters{min-width:0}.toolbar-detail{font-size:10px}}

/* The longer Runners headline keeps clear of its season artwork. */
.pocket-hero[data-season="c7s3"] h1{font-size:52px;line-height:1.05;letter-spacing:-1px}
@media(max-width:359px){.pocket-hero[data-season="c7s3"] h1{font-size:44px}}

/* Safari chrome changes the visible viewport while its bars expand/collapse. */
.sheet{height:100dvh;bottom:auto;grid-template-rows:minmax(0,1fr);overflow:hidden}
.sheet-card{min-height:0;max-height:calc(100dvh - max(16px, env(safe-area-inset-top)));overscroll-behavior:contain}

.pocket-bottom nav{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
.pocket-bottom nav button[hidden]{display:none}

/* Compare both directions together{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}



/* Trade uses the production panels, mini-card grid, and live animations. */
#view-trade{padding:22px 18px}

/* Codes and You are normal pages in the same navigation as the collection. */
.tab-page{padding:24px 18px;max-width:740px;margin:auto}
.tab-page .sheet-card{width:100%;max-height:none;min-height:0;overflow:visible;padding:0;background:none;border:0;border-radius:0;box-shadow:none;animation:none}
.tab-page .sheet-head{margin-bottom:24px}
.tab-page .sheet-title{font-size:40px;font-style:normal}
#me-close,#codes-close{display:none}
.codes-intro{font-size:14px;line-height:1.5;color:var(--ink-dim);margin:0 0 20px}
#me-sheet .sheet-head{gap:18px;align-items:center;padding:12px 0 28px;margin:0}
#me-avatar{width:88px;height:88px;flex:0 0 88px;border-radius:18px}
#me-avatar img{width:80px;height:80px;object-fit:contain}
.profile-label{font-size:13px;color:var(--ink-dim);margin:0 0 4px}
.profile-description{font-size:13px;line-height:1.5;color:var(--ink-dim);margin:6px 0 0}
.profile-section{border-top:1px solid var(--line);padding:0 0 20px}
.profile-section summary{cursor:pointer;min-height:72px;padding:20px 0;font-weight:700;font-size:17px}
.profile-section summary span{display:block;font-weight:400;font-size:13px;color:var(--ink-dim);margin:4px 0 0 18px}
.profile-section .avatar-grid{max-height:none;overflow:visible;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px;padding:4px}
.profile-section .avatar-pick{min-height:68px}
.profile-section .pin-change{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;max-width:400px;margin-top:18px}
.profile-section .pin-change label{font-size:13px;font-weight:600;margin-top:8px}
.profile-section .pin-input{width:100%;font-size:20px;text-align:left;letter-spacing:4px;min-height:48px}
.profile-switch{border-top:1px solid var(--line);padding-top:24px}
.profile-switch h3{font-size:17px;margin:0 0 8px}
.profile-switch p{font-size:13px;color:var(--ink-dim);margin:0 0 16px}
.tab-page .sheet-title{overflow-wrap:anywhere;white-space:normal}

/* Let the sprite artwork sit directly inside the profile pill. */
.board-name-chip{padding:4px 12px 4px 6px;gap:8px}
.board-name-chip .name-avatar.has-sprite{background:transparent;border-radius:50%;overflow:hidden}
.board-name-chip .avatar-img{filter:drop-shadow(0 2px 2px #19222e20)}

/* viewport-fit=cover includes the iOS status bar: reserve it on every page. */
:root{--safe-top:env(safe-area-inset-top,0px)}
.app-shell{padding-top:var(--safe-top)}
.pocket-toolbar{top:var(--safe-top)}
body::before{content:'';position:fixed;top:0;left:0;right:0;height:var(--safe-top);background:var(--bg-0);z-index:40;pointer-events:none}

/* Calendar-day countdown; follows the selected season and the active theme. */
.season-countdown{position:relative;display:flex;align-items:center;gap:8px;width:fit-content;max-width:100%;padding:8px 11px;margin-bottom:20px;border-radius:7px;background:#e8e2de;color:#684735;font-size:12px;font-weight:600;line-height:1.4}
.season-countdown[hidden]{display:none}
.season-countdown svg{width:14px;height:14px;flex-shrink:0}
:root[data-theme=dark] .season-countdown{background:#322820;color:#f2c8a8}

/* PIN entry + change PIN: one focus ring, readable placeholders, even spacing. */
.pin-form{gap:12px}
.pin-form .pin-input,.pin-confirm-wrap{width:100%;max-width:240px}
.pin-confirm-wrap{display:grid;gap:6px;justify-items:center}
.pin-confirm-wrap[hidden]{display:none}
.pin-label{font-size:13px;font-weight:600;color:var(--ink-dim)}
.pin-input::placeholder{color:var(--ink-faint);opacity:.6}
.pin-input:focus,.pin-input:focus-visible{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px color-mix(in srgb,var(--ink) 14%,transparent)}
.pin-form .btn-block{margin-top:6px}
#pin-back{margin-top:10px}
.profile-section .pin-change{justify-items:stretch;gap:6px}
.profile-section .pin-change label{text-align:left;margin-top:10px}
.profile-section .pin-change .pin-input{max-width:none;padding:12px 14px;text-indent:0;letter-spacing:6px}
.profile-section .pin-change .pin-input::placeholder{letter-spacing:0;font-size:16px;font-weight:500}
.profile-section .pin-change .btn-block{margin-top:14px;min-height:48px}

/* Season & filters: a real button, with a chevron so it reads as tappable. */
.pocket-toolbar #open-filters{position:relative;min-height:44px;padding:6px 32px 6px 12px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;text-align:left;overflow:hidden}
.pocket-toolbar #open-filters::after{content:'';position:absolute;right:13px;top:50%;width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-70%) rotate(45deg)}
.pocket-toolbar #open-filters>span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pocket-toolbar #open-filters .toolbar-detail{margin-top:1px}

/* Tapping a tile while locked flashes Edit: the button you need to press. */
#pocket-edit.is-flash{animation:edit-flash .9s ease}
@keyframes edit-flash{0%,100%{transform:none;box-shadow:none}15%,55%{transform:scale(1.08);background:#ca3e1a;box-shadow:0 0 0 4px #ca3e1a44,0 0 18px #ca3e1a88}35%,75%{transform:none;box-shadow:0 0 0 3px #ca3e1a33}}
@media (prefers-reduced-motion:reduce){#pocket-edit.is-flash{animation:none;background:#ca3e1a;box-shadow:0 0 0 4px #ca3e1a55}}

/* Opt-in banner for Home Screen install and notifications. Sits above the tab bar. */
.push-banner{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(96px + env(safe-area-inset-bottom));width:min(calc(100% - 24px),520px);z-index:40;background:var(--bg-1);color:var(--ink);border:1px solid var(--line-strong);border-radius:14px;box-shadow:0 10px 30px #00000026;padding:14px 14px 12px}
.push-banner-text{margin:0 0 10px;font-size:14px;font-weight:600;line-height:1.4}
.push-steps{margin:0 0 12px;padding-left:20px;font-size:13px;line-height:1.6;color:var(--ink-dim)}
.push-banner-actions{display:flex;gap:8px}
.push-banner-actions .btn{flex:1;min-height:44px}
/* Login card: type-ahead name box + inline PIN boxes (find.js) */
.login-find .screen-hint{display:block;text-align:left;font-weight:700;color:var(--ink);margin:0 0 6px}
.find-input{display:block;width:100%;box-sizing:border-box;min-height:48px;padding:11px 12px;font-size:16px;color:var(--ink);background:var(--bg-1);border:1.5px solid var(--ink);border-radius:10px}
.find-list{margin-top:6px;border:1px solid var(--line);border-radius:10px;background:var(--bg-1);overflow:hidden;text-align:left;box-shadow:0 8px 20px #19222e1a}
.find-row{display:flex;align-items:center;gap:10px;flex:1;min-width:0;min-height:48px;padding:8px 12px;border:0;background:transparent;color:var(--ink);font:inherit;font-size:15px;text-align:left;cursor:pointer}
.find-item{display:flex;align-items:center;border-top:1px solid var(--line)}
.find-item:first-child{border-top:0}
.find-item.is-active,.find-item:hover{background:#f9e5dd;color:#19222e}
.find-row .picker-avatar{width:30px;height:30px;flex:0 0 30px;font-size:13px;box-shadow:none}
.find-row .avatar-img{width:30px;height:30px}
.find-name b{font-weight:800}
.find-empty{padding:14px 12px;color:var(--ink-dim);font-size:14px}
.login-who{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1.5px solid var(--ink);border-radius:10px;background:var(--bg-1);text-align:left}
.login-who .picker-avatar{width:30px;height:30px;flex:0 0 30px;font-size:13px;box-shadow:none}
.login-who .avatar-img{width:30px;height:30px}
.login-who-name{font-weight:700}
.login-dot{color:var(--ink-dim)}
.login-notyou{margin-left:auto;min-height:44px;padding:0 6px;border:0;background:none;color:#b73715;font:600 13px 'DM Sans',sans-serif;cursor:pointer}
.login-pin .screen-hint{margin:16px 0 0;text-align:center}
.pin-boxes{display:flex;gap:10px;justify-content:center;margin:12px 0 8px}
.pin-box{width:46px;height:56px;box-sizing:border-box;padding:0;text-align:center;font-size:26px;font-weight:700;color:var(--ink);background:var(--bg-1);border:1.5px solid var(--line-strong);border-radius:10px;caret-color:transparent}
.pin-box:focus{border-color:var(--ink);box-shadow:0 0 0 3px #19222e22}
.pin-boxes.is-shaking{animation:pin-shake .35s}
@keyframes pin-shake{20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}
@media (prefers-reduced-motion:reduce){.pin-boxes.is-shaking{animation:none}}
.login-pin:not([hidden]){animation:login-open .22s ease-out}
@keyframes login-open{from{opacity:0;transform:translateY(-6px)}}
@media (prefers-reduced-motion:reduce){.login-pin:not([hidden]){animation:none}}
.login-find,.login-pin{margin-top:18px}
/* Trade chooser: favourites chips + find box */
.trade-chooser{padding:4px 18px 0;text-align:left}
.trade-chooser .trade-sec{display:block;text-align:left;font-weight:700;color:var(--ink);margin:14px 0 6px}
.fav-chips{display:flex;flex-wrap:wrap;gap:8px}
.fav-chip{display:flex;align-items:center;gap:7px;min-height:44px;padding:5px 14px 5px 6px;border:1px solid var(--line-strong);border-radius:30px;background:var(--bg-1);color:var(--ink);font:600 14px 'DM Sans',sans-serif;cursor:pointer}
.fav-chip .picker-avatar{width:30px;height:30px;flex:0 0 30px;font-size:12px;box-shadow:none}
.fav-chip .avatar-img{width:30px;height:30px}
.fav-star{margin-left:auto;min-width:44px;min-height:44px;padding:0;border:0;background:none;color:#9cabbf;font-size:22px;line-height:1;cursor:pointer}
.fav-star[aria-pressed=true]{color:#b73715}
.trade-head .fav-star{margin-left:0}
.trade-head>div{flex:1;min-width:0}
/* Admin panel: the entry button on the You sheet, and the Admin sheet itself. */
.admin-open{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:64px;margin:6px 0 20px;padding:12px 16px;border:1.5px solid var(--ink);border-radius:12px;background:#fff;color:var(--ink);font:700 16px 'DM Sans',sans-serif;text-align:left}
.admin-open[hidden]{display:none}
.admin-open small{display:block;font-weight:400;font-size:13px;color:var(--ink-dim);margin-top:2px}
.admin-open b{font-size:22px}
.admin-sec{font:700 13px 'DM Sans',sans-serif;margin:20px 0 8px;color:var(--ink)}
.admin-add{display:flex;gap:8px}
.admin-input{flex:1;min-width:0;min-height:48px;border:1.5px solid var(--line-strong);border-radius:10px;padding:10px 12px;font-size:16px;background:#f1f3f7;color:var(--ink)}
.admin-add .btn{padding:0 18px;min-width:64px}
.admin-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line)}
.admin-av{width:36px;height:36px;flex:0 0 36px;font-size:14px}
.admin-who{min-width:0;flex:1}
.admin-who b{display:block;font-size:15px;overflow-wrap:anywhere}
.admin-who small{display:block;font-size:12px;color:var(--ink-dim)}
.admin-acts{display:flex;gap:6px;flex:0 0 auto}
.admin-btn{min-height:44px;padding:0 10px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--ink);font:700 12px 'DM Sans',sans-serif}
.admin-btn.admin-red{color:#a53226}
.admin-row.is-archived .admin-who,.admin-row.is-archived .admin-av{opacity:.6}
.admin-archived{margin-top:20px}
.admin-archived summary{min-height:44px;display:flex;align-items:center;font:700 13px 'DM Sans',sans-serif;cursor:pointer}
.admin-sheet-card button:disabled,#admin-sheet button:disabled,#admin-sheet input:disabled{opacity:.5}
.admin-confirm{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(24px + env(safe-area-inset-bottom));width:calc(100% - 32px);max-width:420px;box-sizing:border-box;background:#19222e;color:#fff;border-radius:14px;padding:16px;z-index:60;box-shadow:0 10px 40px #0006}
.admin-confirm[hidden]{display:none}
.admin-confirm p{margin:6px 0 0;font-size:14px;line-height:1.45}
.admin-confirm-btns{display:flex;gap:8px;margin-top:12px}
.admin-confirm .btn{flex:1;background:#fff;color:#19222e;border-color:#fff;font-weight:700}
.admin-confirm .btn.admin-go{background:#ca3e1a;color:#fff;border-color:#ca3e1a}

/* Trade: favourites as big sprite bubbles in a sideways row, and big sprites in
   search results, so you pick people by their sprite at a glance. */
#view-trade .fav-chips{flex-wrap:nowrap;gap:14px;overflow-x:auto;padding:2px 2px 6px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none}
#view-trade .fav-chips::-webkit-scrollbar{display:none}
#view-trade .fav-chip{flex:0 0 76px;flex-direction:column;gap:6px;min-height:0;padding:0;border:0;border-radius:0;background:none;scroll-snap-align:start}
#view-trade .fav-ring{width:72px;height:72px;flex:0 0 72px;border-radius:50%;background:var(--bg-1);border:2.5px solid #ca3e1a;display:grid;place-items:center;overflow:hidden;font:800 30px var(--font-display);box-shadow:none}
#view-trade .fav-ring .avatar-img{width:60px;height:60px;object-fit:contain}
#view-trade .fav-name{max-width:76px;font:600 13px 'DM Sans',sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#view-trade .find-row .picker-avatar{width:56px;height:56px;flex:0 0 56px;border-radius:12px;font:800 24px var(--font-display)}
#view-trade .find-row .avatar-img{width:54px;height:54px;object-fit:contain}
#view-trade .find-row{font-size:16px;font-weight:700}

/* Account activity stays readable beside a name; phone actions get their own row. */
.admin-row{display:grid;grid-template-columns:36px minmax(0,1fr);gap:4px 10px;padding:14px 0;align-items:start}
.admin-row .admin-av{margin-top:2px}
.admin-who b{line-height:1.4}
.admin-activity{font-size:13px;color:var(--ink-dim);line-height:1.4}
.admin-activity summary{min-height:44px;display:flex;align-items:center;gap:6px;cursor:pointer;list-style:none;overflow-wrap:anywhere}
.admin-activity summary::-webkit-details-marker{display:none}
.admin-activity summary::after{content:'⌄';font-size:16px;flex:none}
.admin-activity[open] summary::after{content:'⌃'}
.admin-activity summary:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:4px}
.admin-activity time{display:block;padding:0 0 10px;overflow-wrap:anywhere;font-size:12px}
.admin-who .admin-activity-empty{margin:10px 0;font-size:13px}
.admin-row .admin-acts{grid-column:2;flex-wrap:wrap;gap:8px}
@media(min-width:600px){
  .admin-row{grid-template-columns:36px minmax(0,1fr) auto;align-items:center}
  .admin-row .admin-av{margin-top:0}
  .admin-row .admin-acts{grid-column:3;grid-row:1}
}
