/* Pull Rate. The base layer (fonts, colours, page frame, panels, forms) came from the Living Dex app's style.css;
   the rest is Pull Rate's own. */
@font-face{font-family:Inter;src:url('/static/brand/Inter-Variable.ttf')}@font-face{font-family:Changa;src:url('/static/brand/ChangaOne-Italic.ttf');font-style:italic}@font-face{font-family:Mono;src:url('/static/brand/JetBrainsMono-Variable.ttf')}
:root{color-scheme:dark;--navy:#0b0b0b;--panel:#161616;--blue:#3478d4;--gold:#f7c84b;--ivory:#f7f4eb;--muted:#a8a8a8;--line:#262626;--line-hi:#4a4a4a;--surface:#111111;--surface-2:#181818;--surface-3:#222222;--radius:14px;--green:#3fd68f;--red:#ff6b6b}*{box-sizing:border-box}body{margin:0;background:#000;color:var(--ivory);font:15px/1.65 Inter,Arial,sans-serif}body:before{content:"";position:fixed;inset:0;background:url('/static/brand/pattern.svg') repeat;background-size:520px;opacity:.35;pointer-events:none;z-index:-1}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.45;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--gold);outline-offset:4px}.nav{max-width:1280px;margin:auto;padding:22px 32px;display:flex;align-items:center;gap:42px;border-bottom:1px solid var(--line)}.brand img{width:150px;display:block}.nav nav{display:flex;gap:32px;align-items:center;margin-left:auto}.nav nav a{color:var(--muted);font-size:14px;font-weight:650;padding:12px 0}.nav nav a.active{color:var(--ivory);border-bottom:2px solid var(--gold)}main{max-width:1280px;padding:0 32px;margin:auto;min-height:60vh}.eyebrow{font:11px Mono,monospace;letter-spacing:2px;text-transform:uppercase;color:var(--gold);display:flex;align-items:center;gap:10px}.eyebrow:before{content:"";width:22px;height:2px;background:var(--gold)}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.08}h1{font:italic 76px/.96 Changa,Impact,sans-serif;letter-spacing:-1px;margin-bottom:24px}h1 em{font-style:inherit;color:var(--gold)}h2{font:italic 36px/1.1 Changa,Impact,sans-serif;margin-bottom:12px}h3{font-family:Bahnschrift,Inter,sans-serif;font-size:19px}.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:25px}.btn{border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--ivory);padding:11px 20px;font-weight:700;font-size:13px;display:inline-flex;justify-content:center;align-items:center;gap:10px;min-height:44px}.btn.primary{background:var(--gold);border-color:var(--gold);color:#212121}.btn.ghost{background:transparent}.btn.danger{color:var(--red)}.progress-top{display:flex;justify-content:space-between;align-items:center;font:12px Mono;color:var(--muted)}.progress-caption{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin:12px 0}.progress-caption strong{color:var(--gold)}.bar{height:7px;border-radius:var(--radius);overflow:hidden;background:var(--surface)}.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),#74c7ff);border-radius:var(--radius);min-width:0}.toolbar{display:flex;gap:14px;justify-content:space-between;align-items:center;margin-bottom:22px}.search{width:320px;position:relative}.search input{width:100%;padding-left:40px}.search:before{content:"⌕";position:absolute;left:15px;top:4px;font-size:25px;color:var(--muted)}input,select,textarea{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:11px 12px;color:var(--ivory);min-height:44px;max-width:100%}input::placeholder,textarea::placeholder{color:#a3a3a3}textarea{resize:vertical;min-height:115px;width:100%}.filters{display:flex;padding:4px;gap:3px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.filters button{border:0;background:transparent;color:var(--muted);padding:8px 16px;min-height:38px;border-radius:5px;font-size:12px;font-weight:650}.filters button.active{background:var(--surface-3);color:var(--ivory)}.filters b{font:10px Mono;margin-left:7px;opacity:.7}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.collection-section{padding-bottom:38px}.grid-count{color:var(--muted);font:11px Mono;margin:18px 0}.empty{border:1px dashed var(--line-hi);border-radius:var(--radius);text-align:center;padding:40px 25px;color:var(--muted);background:#1c1c1c55}.empty .mini-icon{font-size:30px;color:var(--gold);margin-bottom:12px}.empty strong{display:block;color:var(--ivory);margin-bottom:8px;font-size:17px}.empty p{margin:0 auto;max-width:480px;font-size:13px}.tag{font:10px Mono;color:var(--gold);background:#f7c84b12;border:1px solid #f7c84b44;padding:5px 9px;border-radius:4px;display:inline-block;margin-bottom:12px}.page-head{padding:48px 0 28px}.page-head h1{font-size:54px}.page-head p{color:var(--muted);max-width:680px}.loading{padding:70px;color:var(--muted);text-align:center}.error{padding:15px;background:#a33b3022;border:1px solid #a33b3066;border-radius:6px;color:#ffc3bc}.admin-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,1fr);gap:28px;padding-bottom:50px}.panel{border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:25px;align-self:start}.panel h2{font-size:29px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field label,.field>span{font-size:12px;color:#cecece;font-weight:650}.field small,.muted{color:var(--muted);font-size:12px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:15px}.check{display:flex;gap:12px;font-size:12px;align-items:start;margin:15px 0}.check input{min-height:0;margin-top:5px;width:18px;height:18px;accent-color:var(--gold);flex:none}.catalog-search{display:grid;grid-template-columns:1fr 110px auto;gap:8px;margin-bottom:15px}
.catalog-card{background:var(--surface);color:var(--ivory);border:1px solid var(--line);border-radius:7px;padding:9px;text-align:left;font-size:11px}.catalog-card img{height:140px;width:100%;object-fit:contain;margin-bottom:8px}.catalog-card:hover{border-color:var(--gold)}.catalog-card strong,.catalog-card small{display:block}.catalog-card small{color:var(--muted)}.selected-card{display:flex;align-items:center;gap:15px;padding:15px;background:var(--surface);border:1px solid #b39238;border-radius:8px;margin-bottom:18px}.selected-card img{width:60px;height:85px;object-fit:contain}.selected-card small{display:block;color:var(--muted)}.login{max-width:440px;margin:60px auto}.tools{margin-top:24px;padding-top:24px;border-top:1px solid var(--line)}.tools .btn{margin:5px 5px 5px 0}.tools details{margin-top:15px}.tools summary{cursor:pointer;color:var(--muted)}footer{border-top:1px solid var(--line);max-width:1280px;margin:0 auto;padding:35px 32px;display:grid;grid-template-columns:130px 1fr auto;gap:25px;align-items:center}footer img{width:130px}footer p{margin:0;font-size:12px}footer p span{color:var(--muted)}footer div{display:flex;gap:24px;font-size:12px}footer small{grid-column:1/-1;color:#939393;font-size:10px;max-width:850px}.skip{position:absolute;left:20px;top:-100px;background:var(--gold);color:#191919;padding:12px;z-index:20}.skip:focus{top:10px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#f7f4eb;color:#191919;padding:14px 22px;border-radius:8px;box-shadow:0 5px 25px #0006;z-index:50;display:none;max-width:90vw;font-size:13px}dialog{width:min(800px,94vw);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ivory);padding:35px;max-height:90vh}dialog::backdrop{background:#0e0e0ebb;backdrop-filter:blur(6px)}.close{position:absolute;right:12px;top:8px;background:none;color:white;border:0;font-size:28px}.pager{display:flex;align-items:center;justify-content:center;gap:15px;margin-top:18px}body.overlay{background:transparent}body.overlay:before{display:none}
@media(min-width:1500px){main,.nav,footer{max-width:1600px}}
.day{border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:24px;margin-bottom:20px;scroll-margin-top:20px}
.day h2{font-size:26px;margin:6px 0 0}
.day .actions{margin-top:16px}
@media(max-width:1000px){h1{font-size:62px}.admin-layout{grid-template-columns:1fr}.nav{padding:18px 25px}.nav nav{gap:20px}.brand img{width:120px}}@media(max-width:650px){.nav{padding:14px 18px;gap:15px;flex-wrap:wrap}.nav .brand img{width:110px}.nav nav{order:3;width:100%;justify-content:space-between;border-top:1px solid #3f3f3f66;padding-top:8px}.nav nav a{font-size:12px;padding:5px 0}main{padding:0 18px}h1{font-size:56px}.toolbar{align-items:stretch;flex-direction:column}.search{width:100%}.filters button{flex:1;padding:9px}.grid{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:8px}.page-head h1{font-size:43px}.page-head{padding-top:32px}.field-row{grid-template-columns:1fr}.catalog-search{grid-template-columns:1fr 90px}.catalog-search button{grid-column:1/-1}.panel{padding:18px}.admin-layout{gap:20px}footer{padding:30px 18px;grid-template-columns:100px 1fr;gap:18px}footer img{width:100px}footer div{grid-column:1/-1}dialog{padding:30px 18px}.login{margin:30px auto}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Keep native selects and long catalog labels inside narrow phone columns. */
.panel,.field,.field-row,.catalog-search,.admin-layout>*{min-width:0}input,select,textarea{min-width:0;width:100%}.check input{width:18px}.selected-card strong{overflow-wrap:anywhere}#logout{white-space:nowrap;flex:none}@media(max-width:1000px){.admin-layout{grid-template-columns:minmax(0,1fr)}}
@media(max-width:650px){.day{padding:18px}.day h2{font-size:21px}}
[hidden]{display:none!important}
.back-fab{position:fixed;right:max(20px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom));z-index:40;width:52px;height:52px;border-radius:50%;border:1px solid var(--gold);background:#1d1d1dee;color:var(--gold);font-size:22px;line-height:1;display:grid;place-items:center;padding:0;box-shadow:0 6px 20px #0008;transition:background .18s,color .18s}.back-fab:hover{background:var(--gold);color:#212121}body.overlay .back-fab{display:none}@media(max-width:650px){.back-fab{right:14px;bottom:14px;width:48px;height:48px}}
/* Room at the bottom of every page for the floating back button, then the footer */
main{padding-bottom:72px}footer{padding-bottom:100px}
@media(max-width:650px){main{padding-bottom:56px}footer{padding-bottom:88px}}
body.overlay main{padding-bottom:0}

/* ---- Pull Rate ---- */
/* Collections: builds on the Living Dex stylesheet (/static/style.css). */
.nav .brand img{width:190px}footer{grid-template-columns:160px 1fr auto}footer img{width:160px}
@media(max-width:800px){.nav .brand img{width:150px}footer{grid-template-columns:130px 1fr}footer img{width:130px}}
.value-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:40px;align-items:center;padding:48px 0 32px}
.value-hero h1{font-size:54px;margin-bottom:10px}
.value-hero p{color:var(--muted);margin:0}
.bigvalue{font:italic 64px/1.1 Changa,Impact,sans-serif;color:var(--gold);margin:14px 0 6px;font-variant-numeric:tabular-nums}
.stats{display:flex;gap:26px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:14px}
.stats strong{display:block;color:var(--ivory);font:700 18px Inter,sans-serif;font-variant-numeric:tabular-nums}
.chart-card{border:1px solid var(--line-hi);border-radius:var(--radius);background:var(--surface);padding:20px 22px 14px;position:relative;min-width:0}
.chart-card .progress-top{margin-bottom:8px}
.chart{position:relative;height:190px}
.chart svg{display:block;width:100%;height:100%;overflow:visible}
.chart .grid-line{stroke:#3f3f3f;stroke-width:1}
.chart .axis-label{fill:#a3a3a3;font:10px Mono,monospace}
.chart .line{fill:none;stroke:var(--gold);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart .area{fill:url(#value-fill)}
.chart .cross{stroke:#b5b5b5;stroke-width:1;stroke-dasharray:3 3}
.chart .dot{fill:var(--gold);stroke:#1d1d1d;stroke-width:2}
.chart-tip{position:absolute;top:0;pointer-events:none;background:#f7f4eb;color:#191919;border-radius:6px;padding:6px 9px;font-size:12px;white-space:nowrap;transform:translateX(-50%);box-shadow:0 4px 16px #0006}
.chart-tip small{display:block;color:#575757;font-size:10px}
.chart-empty{height:190px;display:grid;place-items:center;text-align:center;color:var(--muted);font-size:13px;border:1px dashed var(--line-hi);border-radius:var(--radius)}
.set-list{display:flex;flex-direction:column;gap:12px;padding-bottom:50px}
.set-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto auto;gap:16px;align-items:center;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:14px 18px;transition:border-color .18s}
.set-row:hover{border-color:var(--line-hi)}
.set-row .symbol{width:44px;height:44px;display:grid;place-items:center;background:var(--surface);border-radius:9px}
.set-row .symbol img{max-width:30px;max-height:30px}
.set-row strong{display:block;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.set-row small{color:var(--muted);font-size:12px}
.set-row .set-value{font:700 17px Inter,sans-serif;color:var(--gold);text-align:right;font-variant-numeric:tabular-nums}
.set-row .set-value small{display:block;font-weight:400;font-size:10px}
.set-row .chev{color:var(--muted);font-size:18px}
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;padding-bottom:50px}
.col-card{display:flex;flex-direction:column;gap:5px;min-width:0;border:1px solid var(--line);border-radius:var(--radius);padding:11px;background:var(--surface);color:var(--ivory);text-align:left;position:relative;transition:border-color .18s,transform .18s}
button.col-card:hover{border-color:var(--line-hi);transform:translateY(-2px)}
.col-card img{width:100%;aspect-ratio:5/7;object-fit:contain}
.col-card strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.col-card small{font-size:11px;color:var(--muted)}
.col-card .price{font:700 15px Inter,sans-serif;color:var(--gold);font-variant-numeric:tabular-nums;margin-top:auto}
.col-card .price small{font-weight:400;color:var(--muted)}
.col-card-wrap{position:relative;display:flex;min-width:0}
.col-card-wrap>.col-card{flex:1}
.tile-del{position:absolute;top:6px;left:6px;width:30px;height:30px;border-radius:50%;border:1px solid #a33b3066;background:#191919dd;color:var(--red);font-size:18px;line-height:1;display:grid;place-items:center;padding:0}
.tile-del:hover{background:#a33b30;color:#fff}
.col-card .qty{position:absolute;top:8px;right:8px;background:var(--gold);color:#212121;font:700 11px Mono,monospace;border-radius:5px;padding:2px 7px}
.badges{display:flex;flex-wrap:wrap;gap:4px}
.badge{font:9px Mono,monospace;letter-spacing:.5px;border:1px solid var(--line-hi);border-radius:4px;padding:2px 6px;color:#cecece}
.badge.gold{border-color:#f7c84b66;color:var(--gold)}
.badge.green{border-color:#3fd68f66;color:var(--green)}
.crumbs{font-size:13px;color:var(--muted);padding-top:28px}
.crumbs a{color:var(--ivory);text-decoration:underline;text-underline-offset:3px}
.add-search{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) 100px auto;gap:8px;margin-bottom:14px}
.results{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;max-height:52vh;overflow:auto}
.who-tags{display:flex;gap:4px;flex-wrap:wrap}
.wanted-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.wanted-actions .btn{padding:5px 10px;min-height:32px;font-size:11px}
.rarity-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:2px 14px;margin-bottom:12px}
.rarity-checks .check{margin:6px 0}
.job{font:12px Mono,monospace;color:var(--muted)}
.job.running{color:var(--green)}
.footnote{font-size:12px;color:var(--muted);margin:-10px 0 18px}
@media(max-width:1000px){.value-hero{grid-template-columns:minmax(0,1fr);gap:24px}}
@media(max-width:650px){.value-hero{padding:28px 0 20px}
.value-hero h1{font-size:40px}
.bigvalue{font-size:48px}
.set-row{grid-template-columns:36px minmax(0,1fr) auto;gap:10px;padding:12px}
.set-row .symbol{width:36px;height:36px}
.set-row .chev{display:none}
.card-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.add-search{grid-template-columns:minmax(0,1fr) 90px}
.add-search select{grid-column:1/-1;order:3}
.add-search button{grid-column:1/-1;order:4}
.results{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}}
/* Sort and filter rows above the lists */
.controls{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:flex-end;margin:8px 0 6px}
.control{display:flex;flex-direction:column;gap:5px;min-width:0}
.control>span{font:10px Mono,monospace;letter-spacing:1.4px;text-transform:uppercase;color:var(--muted)}
.control .filters{flex-wrap:wrap}
.control .filters button{padding:7px 12px;min-height:36px}
.search-control{flex:1;min-width:200px}
.search-control .search{width:100%}
.search-control input{min-height:46px}
/* Each set folds open to show its cards */
.set-block{display:flex;flex-direction:column;gap:12px}
.set-block>summary{list-style:none;cursor:pointer}
.set-block>summary::-webkit-details-marker{display:none}
.set-block>summary .chev{transition:transform .18s}
.set-block[open]>summary .chev{transform:rotate(90deg)}
.set-block .card-grid{padding-bottom:0}
.set-link{align-self:flex-start;font-size:12px;color:var(--muted);text-decoration:underline;text-underline-offset:3px;margin-bottom:12px}
@media(max-width:650px){.controls{gap:10px}.control{width:100%}.control .filters{width:100%}.control .filters button{flex:1 1 auto}}
.gain{color:var(--green)}
.loss{color:var(--red)}
.col-card .pl{font:600 12px Inter,sans-serif;font-variant-numeric:tabular-nums;color:var(--muted)}
.col-card .pl.gain{color:var(--green)}
.col-card .pl.loss{color:var(--red)}
.col-card .pl small{font-weight:400;margin-left:2px}
.set-row .set-value small.gain{color:var(--green)}
.set-row .set-value small.loss{color:var(--red)}
.hero-pl{display:flex;flex-wrap:wrap;gap:8px 26px;align-items:flex-end;margin-top:14px}
.hero-pl span{display:flex;flex-direction:column}
.hero-pl small{font:10px Mono,monospace;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}
.hero-pl strong{font:700 20px Inter,sans-serif;font-variant-numeric:tabular-nums}
.hero-note{font-size:12px;color:var(--muted);margin:10px 0 0}
.hero-pl .hero-note{margin:0}
/* Openings and gainers & losers, side by side above the sets */
.overview-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr));gap:16px;margin:4px 0 22px}
.overview-panels>:only-child{grid-column:1/-1}
.overview-panels .panel{padding:20px 22px}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.panel-head h2{font-size:26px;margin:0}
.panel-head .filters button{padding:6px 12px;min-height:34px;white-space:nowrap}
.opening-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
.opening-row strong{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.opening-row small{display:block;color:var(--muted);font-size:11px}
.opening-nums{display:flex;gap:16px;font-variant-numeric:tabular-nums;font-size:13px;text-align:right}
.opening-nums span{display:flex;flex-direction:column}
.opening-row .btn{padding:6px 12px;min-height:36px;font-size:11px}
.movers-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.movers-cols h3{font-size:13px;font:10px Mono,monospace;letter-spacing:1.4px;text-transform:uppercase;color:var(--muted);margin:4px 0 6px}
.mover{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line);padding:8px 0;color:var(--ivory)}
.mover:hover strong{color:var(--gold)}
.mover img{width:34px;height:48px;object-fit:contain}
.mover strong{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mover small{display:block;color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mover b{font:700 13px Inter,sans-serif;text-align:right;font-variant-numeric:tabular-nums}
.mover b small{color:inherit;opacity:.8;font-weight:400}
.movers-total{margin:10px 0 0}
/* A card's details */
.card-detail{display:grid;grid-template-columns:200px minmax(0,1fr);gap:24px;margin-bottom:18px}
.cd-img img{width:100%;aspect-ratio:5/7;object-fit:contain}
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px 18px;margin:0 0 12px}
.facts div{min-width:0}
.facts dt{font:10px Mono,monospace;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}
.facts dd{margin:2px 0 0;font-weight:650;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.cd-history{border-top:1px solid var(--line);padding-top:16px}
.cd-variants{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px}
.cd-variants .filters button{padding:6px 12px;min-height:34px}
.cd-change{font:600 12px Inter,sans-serif;font-variant-numeric:tabular-nums}
.purchase{border:1px solid var(--line);border-radius:var(--radius);padding:14px 14px 0;margin:0 0 16px}
.purchase legend{font-size:12px;color:#cecece;font-weight:650;padding:0 6px}
.purchase .filters{margin-bottom:14px;width:max-content;max-width:100%}
.radio-pill{display:flex;cursor:pointer}
.radio-pill input{position:absolute;opacity:0;width:1px;height:1px;min-height:0}
.radio-pill span{padding:8px 14px;border-radius:5px;font-size:12px;font-weight:650;color:var(--muted)}
.radio-pill input:checked+span{background:var(--surface-3);color:var(--ivory)}
.radio-pill input:focus-visible+span{outline:3px solid var(--gold);outline-offset:2px}
@media(max-width:650px){
.card-detail{grid-template-columns:110px minmax(0,1fr);gap:14px}
.movers-cols{grid-template-columns:1fr}
.opening-row{grid-template-columns:minmax(0,1fr) auto}
.opening-nums{grid-column:1/-1;order:3;justify-content:space-between;text-align:left}}

/* PriceCharting, next to the TCGplayer price */
.col-card .pc-price{font:12px Inter,sans-serif;color:var(--muted);font-variant-numeric:tabular-nums}
.col-card .pc-price b{color:var(--ivory);font-weight:650}
.pc-total{margin:2px 0 0;color:var(--muted)}.pc-total b{color:var(--ivory)}
.pc-grades{display:inline-flex;flex-wrap:wrap;gap:4px 12px}.pc-grades b{color:var(--ivory);font-weight:650;font-variant-numeric:tabular-nums}
.pc-row a{color:var(--gold);white-space:nowrap}
a.link-btn,.prog-table td a.link-btn{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:6px;background:var(--surface-2);color:var(--ivory);padding:3px 9px;min-height:26px;font-size:11px;font-weight:700;line-height:1.3;white-space:nowrap;vertical-align:middle;transition:border-color .15s,color .15s}a.link-btn:hover,.prog-table td a.link-btn:hover{border-color:var(--gold);color:var(--gold)}
/* Prices → Progress: the running update and the latest run's table */
.progress-panel{margin:0 0 50px}
.prog-now{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,300px);gap:20px;align-items:center}
.prog-phase{font-weight:650;margin:4px 0 10px}
.prog-now .progress-caption{margin:0 0 8px;gap:12px;flex-wrap:wrap}
.prog-card{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:var(--radius);padding:10px;background:var(--surface)}
.prog-card img{width:54px;aspect-ratio:5/7;object-fit:contain}
.prog-card strong,.prog-card small{display:block}.prog-card small{font-size:11px;color:var(--muted)}
.prog-errors{margin-top:14px;border-left:3px solid var(--red);padding:6px 14px;font-size:12px}.prog-errors p{margin:4px 0;color:#ffc3bc}
.prog-summary{font-size:13px;color:var(--muted)}.prog-summary strong{color:var(--ivory)}
.prog-tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:18px 0 0}.prog-tools .filters{flex-wrap:wrap}.prog-tools .filters button{padding:6px 12px;min-height:36px}
.prog-tools .search{flex:1;min-width:200px;max-width:340px}.prog-tools select{width:auto;min-width:170px}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}
.prog-table{width:100%;border-collapse:collapse;font-size:12px;min-width:1100px}
.prog-table th{position:sticky;top:0;background:var(--surface);text-align:left;font:10px Mono,monospace;letter-spacing:1px;text-transform:uppercase;color:var(--muted);padding:10px;border-bottom:1px solid var(--line);white-space:nowrap}
.prog-table td{padding:8px 10px;border-bottom:1px solid #3f3f3f88;vertical-align:top}
.prog-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.prog-table caption{caption-side:bottom;padding:20px;text-align:center}
.prog-cardcell{display:flex;gap:8px;align-items:center;min-width:180px}.prog-cardcell img{width:30px;aspect-ratio:5/7;object-fit:contain}
.prog-cardcell strong,.prog-cardcell small,.prog-table td small{display:block}.prog-table td small{color:var(--muted);font-size:11px;max-width:260px}
.rs{font:600 10px Mono,monospace;letter-spacing:.5px;border:1px solid var(--line-hi);border-radius:4px;padding:2px 6px;white-space:nowrap}
.rs-changed .rs{color:var(--gold);border-color:#f7c84b66}.rs-failed .rs{color:var(--red);border-color:#ff6b6b66}.rs-unchanged .rs{color:var(--green);border-color:#3fd68f66}.rs-skipped .rs,.rs-no-price .rs,.rs-waiting .rs{color:var(--muted)}
.pc-list{display:flex;flex-wrap:wrap;gap:2px 10px;max-width:220px;font-variant-numeric:tabular-nums}.prog-table td a{color:var(--gold);font-size:11px}
.prog-table .btn{padding:4px 10px;min-height:32px;font-size:11px;white-space:nowrap}
.raw-json{white-space:pre-wrap;font:11px Mono,monospace;color:var(--muted);max-height:60vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:12px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media(max-width:800px){.prog-now{grid-template-columns:1fr}}
.prog-table td:nth-child(8),.prog-table td:nth-child(9){white-space:nowrap}

/* Adding: tick several cards, then they wait in Pending */
.catalog-card{position:relative}
.catalog-card .tick{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:800;background:#1c1c1ccc;border:1px solid var(--line);color:transparent}
.catalog-card.picked{border-color:var(--gold);box-shadow:0 0 0 2px #f7c84b55}
.catalog-card.picked .tick{background:var(--gold);border-color:var(--gold);color:#191919}
.pick-bar{position:sticky;bottom:-1px;display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:flex-end;margin:16px -4px 0;padding:12px 4px;background:var(--panel,#262626);border-top:1px solid var(--line)}
.pick-bar span{margin-right:auto;font-weight:650}
.nav-count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;margin-left:4px;border-radius:var(--radius);background:var(--gold);color:#191919;font-size:11px;font-weight:800}
.pend-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr));gap:18px;margin-bottom:50px}
.pend-card{display:flex;flex-direction:column;gap:12px}
.pend-head{display:flex;gap:14px;align-items:flex-start}
.pend-head img{width:84px;aspect-ratio:5/7;object-fit:contain;flex:none}
.pend-head strong,.pend-head small{display:block}.pend-head strong{font-size:17px;margin-top:6px}.pend-head small{color:var(--muted);font-size:12px;margin-top:3px}
.pend-head a{color:var(--gold)}.pend-card .purchase legend{font-size:12px;color:#cecece;font-weight:650;margin-bottom:6px}
.pend-card .actions{margin-top:auto}
/* sealed product: PriceCharting pictures are square on white */
.col-card.sealed-card img,.catalog-card.sealed img,.selected-card.sealed img,.cd-img.sealed img{aspect-ratio:1;object-fit:contain;background:#fff;border-radius:7px}
.col-card.sealed-card img.no-pic,.catalog-card.sealed img.no-pic,.selected-card.sealed img.no-pic,.cd-img.sealed img.no-pic{background:none;padding:22%}
.col-card .msrp{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.catalog-card.sealed small b{color:var(--gold)}
.add-search.sealed-search{grid-template-columns:minmax(0,1fr) auto}
.sealed-wanted{margin-top:26px}
.sealed-wanted .panel-head{margin-bottom:14px}
.facts dd small{display:block;font-weight:400;font-size:11px;color:var(--muted)}
.pend-all{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:18px 0 60px}.pend-all p{margin:0}
.where-pick{display:grid;gap:8px}.where-pick select,.where-pick input{width:100%}
/* selecting several of Dad's cards */
.col-card .tick{display:none}
.col-card.selectable .tick{display:grid;place-items:center;position:absolute;top:8px;left:8px;z-index:1;width:24px;height:24px;border-radius:50%;background:#1c1c1ccc;border:1px solid var(--line);color:transparent;font-size:13px;font-weight:800}
.col-card.picked{border-color:var(--gold);box-shadow:0 0 0 2px #f7c84b55}
.col-card.picked .tick{background:var(--gold);border-color:var(--gold);color:#191919}
.bulk-bar{position:sticky;bottom:12px;z-index:5;display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 24px;padding:12px 14px;border:1px solid var(--gold);border-radius:var(--radius);background:#202020f2;box-shadow:0 10px 30px #0008}
.bulk-bar span{margin-right:auto;font-weight:650}
/* set completion */
.set-progress{display:block;height:5px;margin-top:6px;max-width:220px;border-radius:3px;background:#ffffff1a;overflow:hidden}
.set-progress i{display:block;height:100%;background:var(--gold);border-radius:3px}
.missing-panel{margin:10px 0 40px}.missing-panel .panel-head{margin-bottom:8px}
.missing-grid{max-height:none;margin-top:12px}.missing-sub{margin:22px 0 0;font-size:14px}
.catalog-card.on-list{opacity:.6;cursor:default}
/* wanted price targets */
.col-card .target{color:var(--muted)}.col-card .target.hit{color:var(--green);font-weight:650}
.col-card.alert{border-color:#3fd68f;box-shadow:0 0 0 2px #3fd68f44}
/* sold and traded */
.sold-panel{margin:10px 0 40px}
/* sealed product as a section of each collection page */
.sealed-section{margin:48px 0 40px;padding-top:28px;border-top:1px solid var(--line);scroll-margin-top:80px}
.sealed-head{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:flex-end;justify-content:space-between;margin-bottom:16px}
.sealed-head h2{margin:0 0 4px}.sealed-head p{margin:0}.sealed-head .actions{margin:0}
.sealed-section .small-note{font-size:13px;margin:12px 0 0}
.sealed-section .panel{margin-top:24px}
/* Scan cards into Pending */
.scan-dialog{width:min(1040px,96vw)}.scan-dialog h2{margin:4px 0 6px}.scan-ready{font-size:13px;color:var(--muted);margin:0 0 16px;display:flex;flex-wrap:wrap;align-items:center;gap:10px}.scan-ready.ok{color:var(--green)}
.scan-body{display:grid;grid-template-columns:1.05fr 1fr;gap:22px;align-items:start}.scan-body:has(.scan-result[hidden]){grid-template-columns:minmax(0,640px)}
.scan-stage{position:relative;aspect-ratio:4/3;max-width:calc(56vh*4/3);margin:0 auto;background:#131313;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.scan-stage video,.scan-stage>img{width:100%;height:100%;object-fit:contain;display:block}.scan-stage canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.scan-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:24px;color:var(--muted);font-size:13px}.scan-placeholder strong{color:var(--ivory);font-size:15px}
.scan-status{font-size:13px;min-height:38px;margin:12px 0 8px;color:var(--muted)}.scan-status.match{color:var(--green)}.scan-status.error{color:var(--red)}
.scan-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.scan-file{position:relative;overflow:hidden;cursor:pointer}.scan-file input{position:absolute;inset:0;opacity:0;cursor:pointer}.scan-tools select{max-width:220px}
.scan-choices{display:grid;gap:8px;margin:8px 0 14px}.scan-choice{display:flex;align-items:center;gap:12px;text-align:left;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ivory);cursor:pointer}.scan-choice.selected{border-color:var(--gold)}.scan-choice img{width:44px;height:61px;object-fit:contain}.scan-choice b,.scan-choice small{display:block}.scan-choice small{color:var(--muted)}
.scan-card{display:grid;grid-template-columns:150px 1fr;gap:18px;align-items:start}.scan-art{width:100%;border-radius:7px}.scan-info h3{margin:2px 0 4px;font-size:22px}.scan-info .muted{margin:0 0 12px}
.scan-printing{border:0;padding:0;margin:0 0 12px}.scan-printing legend{font-size:11px;color:var(--muted);margin-bottom:6px;letter-spacing:.08em;text-transform:uppercase}.scan-printing .filters{display:flex;flex-wrap:wrap;gap:4px}
.scan-value{font-size:38px;font-weight:800;color:var(--gold);line-height:1.1}.scan-sources{margin:6px 0 2px;font-size:13px}.scan-note{font-size:11px;margin:0 0 14px}.scan-add{width:100%}
.scan-loading{display:flex;align-items:center;gap:12px;padding:18px 0;color:var(--muted);font-size:13px}.scan-spinner{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--gold);border-radius:50%;animation:scan-spin .8s linear infinite}@keyframes scan-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.scan-spinner{animation-duration:2.4s}}
.scan-again{margin-top:12px}.scan-foot{margin:16px 0 0;font-size:12px}
@media(max-width:800px){.scan-body,.scan-body:has(.scan-result[hidden]){grid-template-columns:1fr}.scan-dialog{padding:24px 14px;max-height:96vh}.scan-card{grid-template-columns:96px 1fr;gap:12px}.scan-value{font-size:30px}}
.scan-refresh{min-height:30px;padding:4px 10px;font-size:11px}

/* Trades: what we give against what we get */
.trade-list{margin-bottom:24px}
.trade-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:16px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
.trade-row:hover strong{color:var(--gold)}
.trade-row strong{display:block}.trade-row small{color:var(--muted);font-size:12px}
.verdict{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:3px 12px;font-size:12px;font-weight:700;white-space:nowrap}
.verdict.v-fair{color:var(--green);border-color:#3fd68f66}.verdict.v-close{color:var(--gold);border-color:#f7c84b66}
.verdict.v-uneven{color:var(--red);border-color:#ff6b6b66}.verdict.v-empty{color:var(--muted)}
.trade-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:32px;align-items:end;padding:28px 0 20px}
.trade-top h1{font-size:48px;margin-bottom:0}
.balance-card{border:1px solid var(--line-hi);border-radius:var(--radius);background:var(--surface);padding:18px 22px}
.balance-card.v-fair{border-color:#3fd68f88}.balance-card.v-uneven{border-color:#ff6b6b88}
.balance-nums{display:flex;justify-content:space-between;align-items:center;gap:12px}
.balance-nums small{display:block;color:var(--muted);font-size:11px}
.balance-nums strong{font:italic 30px/1.1 Changa,Impact,sans-serif;font-variant-numeric:tabular-nums}
.balance-nums span:last-child{text-align:right}
.balance-bar{display:flex;height:8px;border-radius:8px;overflow:hidden;background:var(--surface);margin:12px 0 10px;gap:2px}
.balance-bar i.give{background:#74a7e6}.balance-bar i.get{background:var(--gold)}
.balance-card p{margin:0;color:var(--muted);font-size:13px}
.trade-fields{display:grid;grid-template-columns:1fr 180px 1.4fr;gap:12px;margin-bottom:8px}
.trade-fields input{width:100%}
.trade-sides{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
.trade-side{padding:20px 22px}
.trade-side .side-total{font:700 18px Inter,sans-serif;color:var(--gold);font-variant-numeric:tabular-nums}
.trade-side .actions{margin-top:14px}
.trade-line{display:grid;grid-template-columns:52px minmax(0,1fr) auto 32px;grid-template-areas:"pic name name del" "pic nums value del";column-gap:12px;row-gap:8px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
.trade-line>img{grid-area:pic;width:52px;border-radius:5px;align-self:start}
.tl-name{grid-area:name;min-width:0}.tl-nums{grid-area:nums}.tl-value{grid-area:value}
.trade-line .tile-del{grid-area:del;position:static;align-self:start}
.trade-line:not([data-side]){grid-template-columns:52px minmax(0,1fr) auto;grid-template-areas:"pic name value"}
.trade-line.cash{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name value"}
.tl-name strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tl-name small{display:block;color:var(--muted);font-size:12px}
.tl-name .badge{margin-top:4px}
.tl-extra{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.tl-extra select,.tl-extra input{min-height:36px;padding:6px 8px;font-size:13px}
.tl-extra select{width:auto}.tl-extra .check input{margin-top:0}
.tl-extra .check{display:flex;gap:6px;align-items:center;font-size:13px;margin:0}
.tl-grade{width:70px}
.tl-nums{display:flex;gap:8px}
.tl-nums label small{display:block;color:var(--muted);font-size:11px;white-space:nowrap}
.tl-nums input{width:96px;min-height:38px;padding:6px 8px}
.tl-nums label:first-child input{width:64px}
.tl-value{text-align:right;min-width:90px;align-self:end}
.tl-value b{display:block;font-variant-numeric:tabular-nums}
.tl-value small{color:var(--muted);font-size:11px}
.trade-cash{margin-top:14px;max-width:220px}
.trade-cash input{width:100%}
.trade-actions{margin:24px 0 50px}
.pick-search{width:100%;margin-bottom:14px}
@media(max-width:1000px){.trade-top,.trade-sides{grid-template-columns:minmax(0,1fr)}}
@media(max-width:650px){.trade-top h1{font-size:36px}.trade-fields{grid-template-columns:1fr}
 .trade-row{grid-template-columns:minmax(0,1fr) auto}.trade-row .opening-nums{grid-column:1/-1;grid-row:2}
 .trade-line{grid-template-columns:44px minmax(0,1fr) 32px;grid-template-areas:"pic name del" "pic nums nums" "pic value value"}.trade-line>img{width:44px}
 .trade-line:not([data-side]){grid-template-columns:44px minmax(0,1fr);grid-template-areas:"pic name" "pic value"}.tl-value{text-align:left}
 .balance-nums strong{font-size:24px}}

/* Scanner: one card or several in one picture */
.scan-mode{display:flex;width:fit-content;gap:4px;margin:0 0 14px}
.scan-many{display:grid;gap:8px;margin:8px 0 4px;max-height:52vh;overflow:auto}
.scan-row{display:grid;grid-template-columns:auto 44px minmax(0,1fr);gap:4px 12px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.scan-row.off{opacity:.6}.scan-row img{width:44px;height:61px;object-fit:contain}
.scan-row select{grid-column:2/-1;max-width:100%;min-height:34px;padding:4px 8px;font-size:13px}
.scan-row:not(:has(img)){grid-template-columns:auto minmax(0,1fr)}
.scan-tick{display:flex;align-items:center;gap:8px;cursor:pointer}
.scan-num{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--gold);color:#191919;font-weight:800;font-size:12px}
.scan-row-name b,.scan-row-name small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scan-row-name small{color:var(--muted);font-size:12px}
.scan-row-name .badge{margin-top:4px}
@media(max-width:650px){.nav nav{flex-wrap:wrap;justify-content:flex-start;column-gap:18px;row-gap:0}}
.trade-even{margin-top:8px;min-height:36px;padding:6px 12px;font-size:13px}
/* Trades: a side's % of market, money fields with $, and the price breakdown */
.rate-tag{margin-left:auto;margin-right:12px;border:1px solid #f7c84b66;color:var(--gold);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700}
.trade-rate{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-4px 0 12px;font-size:13px}
.trade-rate .filters{display:flex;gap:2px}.trade-rate .filters button{padding:6px 10px;font-size:12px}
.money-in{position:relative;display:block}.money-in::before{content:'$';position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none;font-size:14px}
.money-in input{padding-left:22px!important;width:100%}
.tl-nums label .money-in input{width:96px}
.tl-info{display:inline-grid;place-items:center;width:20px;height:20px;margin-left:6px;vertical-align:middle;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--muted);font:italic 700 12px Georgia,serif;cursor:pointer;padding:0}
.tl-info:hover,.tl-info:focus-visible{color:var(--gold);border-color:var(--gold)}
.why{display:grid;margin:12px 0}
.why-row{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-top:1px solid var(--line)}
.why-row b{white-space:nowrap;font-variant-numeric:tabular-nums}.why-row small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.why-row:last-child{border-bottom:1px solid var(--line)}.why-row:last-child b{color:var(--gold)}
.why-foot{font-size:12px}
/* Price moves on tiles: ▲ green / ▼ red, the change per copy, % and the period */
.move{display:flex;align-items:baseline;gap:4px;font:600 12px Inter,sans-serif;font-variant-numeric:tabular-nums;color:var(--muted)}
.move.gain{color:var(--green)}
.move.loss{color:var(--red)}
.move span{font-size:10px}
.move small{font-weight:400;color:inherit;opacity:.85}
.move .move-period{margin-left:auto;font:10px Mono,monospace;color:var(--muted);opacity:1}
/* The ⋯ button on a tile and its little menu */
.tile-more{position:absolute;top:8px;left:8px;width:30px;height:30px;border-radius:50%;border:1px solid var(--line-hi);background:#0b0b0bd9;color:var(--ivory);font-size:16px;line-height:1;display:grid;place-items:center;padding:0;opacity:.85;transition:opacity .15s,background .15s}
.col-card-wrap:hover .tile-more,.tile-more:focus-visible,.tile-more[aria-expanded=true]{opacity:1;background:var(--surface-3)}
.tile-menu{position:absolute;top:44px;left:8px;z-index:20;min-width:160px;display:flex;flex-direction:column;padding:6px;background:var(--surface-2);border:1px solid var(--line-hi);border-radius:12px;box-shadow:0 12px 30px #000c}
.tile-menu button{border:0;background:none;color:var(--ivory);text-align:left;padding:9px 12px;border-radius:8px;font-size:13px;font-weight:600}
.tile-menu button:hover,.tile-menu button:focus-visible{background:var(--surface-3);outline:none}
.tile-menu button.danger{color:var(--red)}
/* Tiles: flat surface, lift on hover */
.col-card,.catalog-card{background:var(--surface);border-color:var(--line)}
button.col-card:hover{border-color:var(--line-hi);box-shadow:0 10px 26px #0009}
/* Skeletons: grey shapes that shimmer while a grid loads */
.skeleton-grid{pointer-events:none}
.sk-tile{display:flex;flex-direction:column;gap:8px;padding:11px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.sk-tile i,.sk-tile b,.sk-hero i,.sk-hero b{display:block;border-radius:8px;background:linear-gradient(90deg,var(--surface-2) 0%,var(--surface-3) 40%,var(--surface-2) 80%) 0 0/300% 100%;animation:sk 1.4s ease-in-out infinite}
.sk-tile i{aspect-ratio:5/7}
.sk-tile b{height:11px;width:80%}
.sk-tile b+b{width:45%}
.sk-hero{display:flex;flex-direction:column;gap:14px;padding:48px 0 32px}
.sk-hero i{height:54px;width:min(420px,80%)}
.sk-hero b{height:14px;width:min(300px,60%)}
@keyframes sk{from{background-position:100% 0}to{background-position:0 0}}
@media(prefers-reduced-motion:reduce){.sk-tile i,.sk-tile b,.sk-hero i,.sk-hero b{animation:none}}
/* Home: the total and its move, the value chart, then movers, deals and what's new */
.dash-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:40px;align-items:center;padding:44px 0 28px}
.dash-hero .bigvalue{margin:10px 0 4px}
.dash-move .move{font-size:16px;gap:6px}
.dash-move .move span{font-size:13px}
.dash-move .move .move-period{margin-left:8px;font-size:12px}
.dash-wait{font-size:13px;margin:0}
.dash-split{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.dash-split>*{flex:1 1 140px;display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.dash-split a:hover{border-color:var(--line-hi)}
.dash-split small{font:10px Mono,monospace;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}
.dash-split strong{font:700 19px Inter,sans-serif;font-variant-numeric:tabular-nums}
.dash-split span{font-size:12px;color:var(--muted)}
.dash-hero .chart-card .panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.dash-hero .chart-card .filters button{padding:5px 11px;min-height:32px}
.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;margin-bottom:16px}
.dash-panel{margin-bottom:16px}
.dash-grid .dash-panel{margin-bottom:0}
.dash-panel .panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.dash-panel h2{font-size:26px}
.link-more{font-size:13px;color:var(--muted)}
.link-more:hover{color:var(--ivory)}
.dash-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;width:100%;padding:8px;margin:0 -8px;border:0;border-radius:10px;background:none;color:var(--ivory);text-align:left}
.dash-row:hover{background:var(--surface-2)}
.dash-row+.dash-row{border-top:1px solid var(--line);border-radius:0}
.dash-row img{width:44px;aspect-ratio:5/7;object-fit:contain}
.dash-name{min-width:0;display:flex;flex-direction:column}
.dash-name strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-name small{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-end{display:flex;flex-direction:column;align-items:flex-end;font-variant-numeric:tabular-nums}
.dash-end b{font:700 14px Inter,sans-serif}
.dash-end .move{font-size:11px}
.dash-end .move .move-period{display:none}
.dash-recent{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.dash-tile{display:flex;flex-direction:column;gap:4px;min-width:0;padding:10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);color:var(--ivory);text-align:left}
.dash-tile:hover{border-color:var(--line-hi)}
.dash-tile img{width:100%;aspect-ratio:5/7;object-fit:contain}
.dash-tile strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-tile b{font:700 13px Inter,sans-serif;color:var(--gold);font-variant-numeric:tabular-nums}
@media(max-width:1000px){.dash-hero{grid-template-columns:minmax(0,1fr);gap:24px}.dash-recent{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.dash-hero{padding:24px 0 18px}.dash-grid{grid-template-columns:minmax(0,1fr)}.dash-recent{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px}.dash-tile{flex:0 0 42%;scroll-snap-align:start}}

/* ---- card page (/card/<key>, wide screens): image | history + prices | your copies ---- */
.cp-top{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;padding:14px 0 22px;border-bottom:1px solid var(--line);margin-bottom:22px}
.cp-top h1{margin:4px 0 8px;font-size:clamp(28px,3.4vw,44px)}
.cp-price{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.cp-price .bigvalue{font-size:clamp(30px,3.6vw,46px)}
.cp-grid{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr) minmax(240px,300px);gap:20px;align-items:start;padding-bottom:50px}
.cp-img img{width:100%;aspect-ratio:5/7;object-fit:contain;border-radius:12px;filter:drop-shadow(0 18px 32px #000c)}
.cp-main,.cp-rail{display:flex;flex-direction:column;gap:16px;min-width:0}
.cp-main .panel,.cp-rail .panel{margin:0}
.cp-pl{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;column-gap:12px;padding:10px 12px;margin-bottom:10px;border-radius:10px;background:var(--surface-2)}
.cp-pl small{color:var(--muted);font-size:12px}
.cp-pl strong{font:700 18px Inter,sans-serif;font-variant-numeric:tabular-nums}
.cp-pl strong.gain{color:var(--green)}.cp-pl strong.loss{color:var(--red)}
.cp-pl strong{white-space:nowrap}
.cp-rail .facts{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}
.cp-links{display:flex;flex-wrap:wrap;gap:8px}
/* Two columns: the picture keeps the left column, the rail goes under the charts. */
@media(max-width:1180px){.cp-grid{grid-template-columns:minmax(180px,240px) minmax(0,1fr)}.cp-img{grid-row:1/span 2}.cp-rail{grid-column:2}}

/* ---- Explore ---- */
.explore-head{padding-bottom:6px}
.explore-search{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 12px}
.explore-search input[name=q]{flex:1 1 260px;min-width:0}
.explore-search select{flex:0 1 240px;min-width:0}
.explore-search input[name=number]{flex:0 0 90px}
.explore-pills{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:16px}
.explore-sort{display:flex;align-items:center;gap:8px;margin-left:auto;font-size:13px;color:var(--muted)}
.ex-card{padding-bottom:48px}
.ex-acts{position:absolute;left:11px;right:11px;bottom:10px;display:flex;gap:6px}
.ex-btn{flex:1;height:30px;border-radius:999px;border:1px solid var(--line-hi);background:var(--surface-2);color:var(--ivory);font:600 16px Inter,sans-serif;cursor:pointer;transition:background .15s,border-color .15s}
.ex-btn:hover{background:var(--surface-3);border-color:var(--gold)}
.ex-btn[data-ex-want]{color:var(--gold)}
.ex-btn:disabled{opacity:.5;cursor:wait}
@media(max-width:650px){.explore-search select{flex:1 1 60%}.explore-sort{margin-left:0;width:100%}.explore-sort select{flex:1}}

/* ---- phone bottom bar (≤650px): Home · Collection · Scan · Wanted · More; the top bar keeps only the logo ---- */
.tabbar{display:none}
@media(max-width:650px){
 body.has-tabbar{padding-bottom:calc(76px + env(safe-area-inset-bottom))}
 body.has-tabbar #col-nav{display:none}
 .tabbar:not([hidden]){display:grid;grid-template-columns:repeat(5,1fr);align-items:end;position:fixed;left:0;right:0;bottom:0;z-index:45;padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:#0b0b0bf2;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line)}
 .tabbar a,.tabbar button{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0 4px;border:0;background:none;color:var(--muted);font:500 10.5px Inter,sans-serif;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
 .tabbar svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
 .tabbar .active{color:var(--gold)}
 .tabbar .has-count::after{content:"";position:absolute;top:4px;left:calc(50% + 8px);width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 2px #0b0b0b}
 .tabbar .tab-scan{justify-self:center;align-self:start;width:58px;height:58px;margin-top:-30px;padding:0;border-radius:50%;background:var(--gold);color:#141414;justify-content:center;box-shadow:0 8px 22px #000b,0 0 0 4px #0b0b0b}
 .tabbar .tab-scan svg{width:26px;height:26px;stroke-width:2.2}
 body.has-tabbar .back-fab{bottom:calc(88px + env(safe-area-inset-bottom))}
 body.has-tabbar #toast{bottom:calc(90px + env(safe-area-inset-bottom))}
 dialog.sheet{margin:auto 0 0;width:100%;max-width:none;border-radius:20px 20px 0 0;padding-bottom:calc(20px + env(safe-area-inset-bottom))}}
.more-sheet{display:flex;flex-direction:column;margin-top:10px}
.more-sheet a{display:flex;flex-direction:column;gap:2px;padding:13px 4px;border-bottom:1px solid var(--line);color:var(--ivory);text-decoration:none}
.more-sheet a:last-child{border-bottom:0}
.more-sheet small{color:var(--muted);font-size:12px}

/* ---- share link: controls on the Prices page, and the read-only page at /u/<token> ---- */
.share-panel{margin-bottom:20px}
/* Admin: accounts and the links made for them */
.accounts-panel{margin-bottom:28px}.admin-sub{margin:0 0 14px}.acct-sub{font-size:14px;margin:20px 0 0}
.acct-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:8px}
.acct-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2)}
.acct-list li.off{opacity:.6}.acct-list small{display:block;color:var(--muted);margin-top:4px}.acct-list .actions{margin:0}
.link-made{margin-top:14px;padding:12px 14px;border:1px solid #f7c84b66;border-radius:var(--radius)}
.share-link{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.share-link input{flex:1 1 280px;min-width:0;font:12px Mono,monospace}
.share-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,420px);gap:30px;align-items:center;padding:40px 0 34px;border-bottom:1px solid var(--line);margin-bottom:26px}
.share-hero h1{font-size:clamp(32px,4.4vw,58px);margin:6px 0 10px}
.share-fan{position:relative;height:240px}
.share-fan span{position:absolute;left:50%;bottom:0;width:140px;margin-left:-70px;transform-origin:50% 120%;transform:translateX(calc(var(--i) * 46px)) rotate(calc(var(--i) * 9deg));z-index:calc(10 - (var(--i) * var(--i)))}
.share-fan img{width:100%;aspect-ratio:5/7;object-fit:contain;filter:drop-shadow(0 14px 22px #000d)}
.share-set{margin-bottom:34px}
.share-set-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:8px}
.share-set-head h2{margin:0;font-size:20px}
.share-set-head strong{font:700 17px Inter,sans-serif;color:var(--gold);font-variant-numeric:tabular-nums}
.share-set .bar{margin:6px 0 4px}
.share-set .card-grid{margin-top:12px;padding-bottom:0}
@media(max-width:800px){.share-hero{grid-template-columns:1fr;padding-top:24px}.share-fan{height:190px}.share-fan span{width:104px;margin-left:-52px;transform:translateX(calc(var(--i) * 34px)) rotate(calc(var(--i) * 9deg))}}
.explore-pills .filters button{white-space:nowrap}
.cp-main>.panel,.cp-rail>.panel{align-self:stretch}
