/* O72: scoped to the customer collection; never changes shop price copy.
   O74: the collector pass - a value hero, one clear switch between MY BINDER and EXPLORE, a sticky tool bar,
   art-first card tiles, set sections with completion and their empty pockets, real empty and loading states. */
#collection-tracker{--ct-sticky:68px;min-width:0;margin:20px 0 32px;overflow-wrap:anywhere}
.ct-results,.ct-totals,#ct-set-browser,#ct-currency,.ct-bset{scroll-margin-top:150px}
#collection-tracker button{min-height:44px;padding:9px 14px;border:1px solid var(--line-2);border-radius:10px;background:var(--ink-2);color:var(--text);font:inherit;cursor:pointer;transition:background var(--t-1),border-color var(--t-1),transform var(--t-1)}
#collection-tracker button:hover:not(:disabled){border-color:rgba(226,180,67,.55);background:var(--ink-3)}
#collection-tracker button:disabled{opacity:.55;cursor:default}
#collection-tracker :is(button,input,select,a,summary):focus-visible{outline:2px solid var(--chase);outline-offset:3px}
#collection-tracker input[type=search],#collection-tracker input[type=number],#collection-tracker select{min-height:44px;border-radius:10px}

/* --- the value hero --- */
.ct-top{position:relative;margin-bottom:22px}
.ct-totals{padding:22px 24px;border:1px solid var(--line);border-radius:18px;background:
  radial-gradient(120% 140% at 0% 0%,rgba(226,180,67,.13),transparent 55%),linear-gradient(180deg,rgba(22,30,54,.92),rgba(16,22,42,.92));box-shadow:0 18px 40px rgba(0,0,0,.28)}
.ct-hero{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.6fr);gap:22px;align-items:end}
.ct-hero-main .kicker{margin:0 0 10px;padding-right:180px}
#ct-total-value .ct-money{margin:0}
#ct-total-value .ct-money>b{font:700 clamp(30px,4.6vw,46px)/1.05 var(--display);letter-spacing:.01em;font-variant-numeric:tabular-nums}
#ct-total-value .ct-money>small{color:var(--text-2);font-size:var(--fs-s)}
#ct-total-count{margin:10px 0 0;color:var(--text-2);font-size:var(--fs-s)}
.ct-splits{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0}
@media(min-width:901px){.ct-splits{padding-top:48px}} /* room for the currency switch above them */
.ct-splits>section{min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(10,14,24,.35)}
.ct-splits h3{margin:0;font:600 var(--fs-xs)/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ct-splits .ct-money{margin-top:6px}.ct-splits .ct-money>b{font-size:var(--fs-m)}
.ct-splits p{margin:4px 0 0;font-size:var(--fs-xs);color:var(--text-3)}
.ct-about{margin-top:14px}.ct-about summary{cursor:pointer;color:var(--text-3);font-size:var(--fs-xs);width:max-content;max-width:100%}
.ct-about p{margin:8px 0 0}
.ct-currency-label{position:absolute;top:16px;right:18px;display:flex;align-items:center;gap:8px;margin:0;font-size:var(--fs-xs);color:var(--text-3);text-transform:uppercase;letter-spacing:.08em}
.ct-currency-label select{width:auto;min-width:104px;min-height:36px!important;padding:4px 10px;font-size:var(--fs-s);text-transform:none;letter-spacing:0}

/* --- money --- */
.ct-money{display:grid;gap:2px;margin-top:6px}
.ct-money>b{font-variant-numeric:tabular-nums}
.ct-money>small{color:var(--text-3);font-size:var(--fs-xs);line-height:1.35}

/* --- the switch: MY BINDER | EXPLORE --- */
.ct-modes{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:6px;margin:0 0 16px;border:1px solid var(--line);border-radius:16px;background:rgba(10,14,24,.55)}
#collection-tracker .ct-modes button{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"k n" "s s";align-items:center;gap:2px 10px;text-align:left;padding:12px 16px;border:1px solid transparent;border-radius:12px;background:transparent;min-height:60px}
#collection-tracker .ct-modes button[aria-selected="true"]{background:linear-gradient(180deg,rgba(226,180,67,.18),rgba(226,180,67,.06));border-color:rgba(226,180,67,.55);box-shadow:0 6px 18px rgba(0,0,0,.25)}
.ct-tab-k{grid-area:k;font:700 var(--fs-l)/1.1 var(--display);letter-spacing:.02em}
.ct-modes button[aria-selected="true"] .ct-tab-k{color:var(--chase)}
.ct-tab-count{grid-area:n;justify-self:start;min-width:28px;padding:3px 8px;border-radius:999px;background:rgba(226,180,67,.18);color:var(--chase);font:700 var(--fs-xs)/1.2 var(--sans);text-align:center;font-variant-numeric:tabular-nums}
.ct-modes small{grid-area:s;color:var(--text-3);font-size:var(--fs-xs)}

/* --- the sticky tool bar --- */
.ct-toolbar{position:sticky;top:var(--ct-sticky);z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px;margin:0 0 10px;border:1px solid var(--line);border-radius:14px;background:rgba(13,18,34,.94);backdrop-filter:blur(10px);box-shadow:0 10px 26px rgba(0,0,0,.3)}
.ct-find{flex:1 1 260px;min-width:0;display:flex}
.ct-find input{width:100%;min-width:0}
.ct-search{display:flex;gap:8px;flex:1 1 320px;min-width:0;margin:0}
.ct-search input{min-width:0;flex:1;width:100%}
.ct-filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px;min-width:0}
.ct-filters select{min-width:0;max-width:100%;flex:1 1 180px}
.ct-switch{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 6px;cursor:pointer;color:var(--text-2);font-size:var(--fs-s);white-space:nowrap}
.ct-switch input{width:20px;height:20px;accent-color:var(--chase)}
.ct-count-line{margin:4px 2px 14px;color:var(--text-2);font-size:var(--fs-s)}
.ct-active-set{display:grid;gap:6px;margin:12px 0}
.ct-active-set:empty{display:none}

/* --- card tiles --- */
.ct-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:14px}
.ct-card{position:relative;display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);border-radius:14px;padding:10px;background:linear-gradient(180deg,var(--ink-2),var(--ink-1));transition:transform var(--t-2) var(--ease-out),border-color var(--t-2),box-shadow var(--t-2)}
.ct-card:hover{transform:translateY(-3px);border-color:rgba(226,180,67,.45);box-shadow:0 14px 30px rgba(0,0,0,.35)}
.ct-card.is-owned{border-color:rgba(226,180,67,.32)}
#collection-tracker .ct-art{position:relative;display:block;width:100%;padding:0;margin:0;border:0;background:transparent;min-height:0;border-radius:10px;overflow:hidden}
.ct-art>.tcg-card{display:block;width:100%}
.ct-art img{display:block;width:100%;height:auto}
.ct-qty{position:absolute;top:8px;right:8px;padding:4px 9px;border-radius:999px;background:rgba(10,14,24,.88);border:1px solid rgba(226,180,67,.6);color:var(--chase);font:700 var(--fs-xs)/1.2 var(--sans);font-variant-numeric:tabular-nums}
.ct-select{position:absolute;top:16px;left:16px;z-index:2;width:22px;height:22px;margin:0;accent-color:var(--chase);cursor:pointer}
.ct-card-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px;padding:10px 2px 2px}
#collection-tracker .ct-card-title{padding:0;border:0;background:transparent;font-weight:700;font-size:var(--fs-m);line-height:1.25;min-height:0;text-align:left;white-space:normal;overflow-wrap:anywhere}
#collection-tracker .ct-card-title:hover{color:var(--chase);background:transparent}
.ct-meta{color:var(--text-2);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}
.ct-set-name,.ct-owned-label{color:var(--text-3);font-size:var(--fs-xs)}
/* O84: Ohara's own demand on the card face ("Pulled 12x on Ohara") - our openings, not market sales. */
.ct-pulled{color:var(--text-2);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}
.ct-view-compact .ct-pulled,.ct-view-list .ct-pulled{display:none}
.ct-card .ct-money{margin-top:auto;padding-top:6px}
.ct-card .ct-money>b{font-size:var(--fs-m)}
.ct-estimate{align-self:flex-start;margin-top:4px;padding:2px 7px;border-radius:999px;border:1px dashed var(--line-2);color:var(--text-3);font-size:10px;letter-spacing:.04em;text-transform:uppercase}
.ct-wheres{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.ct-where{padding:2px 7px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;background:rgba(255,255,255,.06);color:var(--text-2)}
.ct-where.is-vault{background:rgba(86,184,222,.16);color:#9fd8ee}.ct-where.is-shipped{background:rgba(171,144,244,.16);color:#cbbcf8}.ct-where.is-manual{background:rgba(76,199,154,.14);color:#93dcbf}

/* --- the binder: one section per set --- */
.ct-binder-body{display:grid;gap:22px}
.ct-bset{min-width:0;padding:18px;border:1px solid var(--line);border-radius:18px;background:rgba(10,14,24,.38);content-visibility:auto;contain-intrinsic-size:auto 900px}
.ct-bset-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 16px;align-items:center;margin-bottom:12px}
.ct-bset-title{display:flex;align-items:center;gap:10px;min-width:0}
.ct-bset-title h3{margin:0;font:700 var(--fs-l)/1.2 var(--display);letter-spacing:.01em}
.ct-set-code{flex:0 0 auto;padding:4px 9px;border-radius:8px;background:rgba(226,180,67,.14);border:1px solid rgba(226,180,67,.4);color:var(--chase);font:700 var(--fs-xs)/1.2 var(--mono);letter-spacing:.04em}
.ct-bset-stats{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px 14px;color:var(--text-2);font-size:var(--fs-s);text-align:right}
.ct-bset-stats .ct-money{margin:0;text-align:right}.ct-bset-stats .ct-money>small{display:none}
.ct-bset-pct{font:700 var(--fs-l)/1 var(--display);color:var(--chase)}
.ct-bset-shown{padding:2px 9px;border-radius:999px;border:1px solid rgba(226,180,67,.5);color:var(--chase);font-size:var(--fs-xs);font-weight:700}
.ct-bset-bar{grid-column:1/-1;width:100%;height:6px;accent-color:var(--chase)}
.ct-slotmap{display:flex;flex-wrap:wrap;gap:3px;margin:0 0 16px}
.ct-slotmap>span{width:9px;height:12px;border-radius:2px;background:rgba(255,255,255,.07);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.ct-slotmap>span.is-held{background:var(--chase);box-shadow:0 0 6px rgba(226,180,67,.45)}
#collection-tracker .ct-pocket{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;aspect-ratio:600/838;min-height:0;padding:12px;border:1.5px dashed rgba(214,204,176,.22);border-radius:14px;background:rgba(255,255,255,.02);color:var(--text-3);text-align:center}
#collection-tracker .ct-pocket:hover{border-color:rgba(226,180,67,.55);color:var(--text)}
.ct-pocket b{font:700 var(--fs-s)/1.2 var(--mono);color:var(--text-2)}.ct-pocket span{font-size:var(--fs-xs);line-height:1.3}.ct-pocket small{font-size:10px;text-transform:uppercase;letter-spacing:.05em}

/* --- empty, loading and error states --- */
.ct-empty{display:grid;justify-items:center;gap:10px;padding:36px 20px;border:1px dashed var(--line-2);border-radius:18px;text-align:center;background:rgba(10,14,24,.3)}
.ct-empty h3{margin:6px 0 0;font:700 var(--fs-xl)/1.1 var(--display)}
.ct-empty p{max-width:520px;margin:0;color:var(--text-2)}
.ct-empty-pockets{display:grid;grid-template-columns:repeat(3,26px);gap:5px}
.ct-empty-pockets span{height:36px;border-radius:5px;border:1.5px dashed rgba(214,204,176,.25)}
.ct-empty-pockets span:nth-child(5){border-style:solid;border-color:rgba(226,180,67,.7);background:rgba(226,180,67,.15)}
.ct-empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:6px}
#collection-tracker .ct-primary{background:linear-gradient(180deg,var(--signal-2),var(--signal));border-color:transparent;color:var(--signal-ink);font-weight:700}
.ct-ghost-link{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--line-2);border-radius:10px;color:var(--text);text-decoration:none}
.ct-empty-line{padding:22px;border:1px dashed var(--line-2);border-radius:14px;color:var(--text-2);text-align:center}
.ct-skeleton{display:grid;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:14px}
.ct-ghost{aspect-ratio:600/980;border-radius:14px;background:linear-gradient(100deg,rgba(255,255,255,.04) 30%,rgba(255,255,255,.09) 50%,rgba(255,255,255,.04) 70%);background-size:300% 100%;animation:ct-shimmer 1.4s linear infinite}
@keyframes ct-shimmer{from{background-position:100% 0}to{background-position:-100% 0}}
@media(prefers-reduced-motion:reduce){.ct-ghost{animation:none}.ct-card,.ct-card:hover{transition:none;transform:none}}
[aria-busy="true"].ct-results{opacity:.55;transition:opacity var(--t-2)}

/* --- explore extras: sets, bulk bar, pager --- */
.ct-set-browser{margin:12px 0;padding:12px 16px;border:1px solid var(--line);border-radius:14px;background:rgba(10,14,24,.3)}
.ct-set-browser summary{cursor:pointer;font-weight:700}
.ct-sets{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:12px;margin:14px 0 4px}
.ct-set{min-width:0;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--ink-1)}
.ct-set.is-started{border-color:rgba(226,180,67,.35)}
#collection-tracker .ct-set-link{display:flex;align-items:center;gap:8px;width:100%;padding:0;border:0;background:transparent;white-space:normal;text-align:left;font-weight:700;min-height:36px}
/* O78: the set's own product art - the booster box or the starter deck - on its card */
.ct-set-art{margin:-2px 0 10px;padding:6px;border-radius:10px;background:radial-gradient(120% 130% at 50% 0%,rgba(226,180,67,.14),rgba(10,14,24,.55) 68%)}
.ct-set-art.is-empty{display:none}
.ct-set-art img{display:block;width:100%;height:112px;object-fit:contain;object-position:center;filter:drop-shadow(0 6px 12px rgba(0,0,0,.45))}
.ct-deck .ct-set-art img{height:126px}
.ct-set p{margin:8px 0 6px;color:var(--text-2);font-size:var(--fs-s)}
.ct-set progress{width:100%;accent-color:var(--chase)}
.ct-set small{color:var(--text-3);font-size:var(--fs-xs)}
.ct-pager{display:flex;gap:12px;justify-content:center;margin:22px 0}
.ct-bulk,.ct-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0}
.ct-bulk{padding:10px 12px;border:1px solid rgba(226,180,67,.4);border-radius:12px;background:rgba(226,180,67,.07);font-size:var(--fs-s)}
.ct-bulk.is-idle{display:none} /* O74 polish: shown once a card is ticked */
.ct-bulk label,.ct-quantity-label{display:flex;align-items:center;gap:8px}
.ct-bulk input,.ct-quantity-label input{width:84px;min-width:0}
#ct-status{color:var(--text-2);font-size:var(--fs-s)}

/* --- O74 R2: filters, sort, the hidden count --- */
.ct-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
#collection-tracker .ct-filter-btn{display:inline-flex;align-items:center;gap:8px;font-weight:700}
#collection-tracker .ct-filter-btn::before{content:'';width:16px;height:12px;background:linear-gradient(currentColor,currentColor) 0 0/100% 2px no-repeat,linear-gradient(currentColor,currentColor) 3px 5px/10px 2px no-repeat,linear-gradient(currentColor,currentColor) 6px 10px/4px 2px no-repeat;opacity:.85}
#collection-tracker .ct-filter-btn.is-on{border-color:rgba(226,180,67,.75);background:rgba(226,180,67,.12);color:var(--chase)}
.ct-badge:empty{display:none}
.ct-badge{min-width:20px;padding:2px 6px;border-radius:999px;background:var(--chase);color:#1a1204;font-size:var(--fs-xs);line-height:1.3;text-align:center}
.ct-sort{width:auto;min-width:0;max-width:100%;padding:0 10px}
.ct-count-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 16px;margin:4px 2px 12px}
.ct-count-row .ct-count-line,.ct-count-row #ct-status{margin:0}
.ct-hidden-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0;color:var(--chase);font-size:var(--fs-s)}
.ct-hidden-line[hidden]{display:none}
#collection-tracker .ct-linkbtn{min-height:32px;padding:4px 10px;border:1px solid rgba(226,180,67,.5);border-radius:999px;background:transparent;color:var(--chase);font-size:var(--fs-xs);font-weight:700}
/* O117: a card's market move since the day before, right under its price (and beside it on the card's own page, and
   under the shelf's value): green up, red down, grey for no change - the arrow and the sign say it too, and the
   small "vs <day>" names the day it is measured against */
.ct-dm{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 5px;color:var(--text-3);font:700 var(--fs-xs)/1.35 var(--sans);font-variant-numeric:tabular-nums}
.ct-dm.is-up{color:var(--ok)}.ct-dm.is-down{color:var(--bad)}
.ct-dm>small{color:var(--text-3);font-size:inherit;font-weight:500}
.ct-dm>b,.ct-dm>em{font-style:normal;font-weight:700;white-space:nowrap}
.ct-dm.is-up>b::before{content:"\25B2\00a0";content:"\25B2\00a0" / ""}
.ct-dm.is-down>b::before{content:"\25BC\00a0";content:"\25BC\00a0" / ""}
.ct-dm-detail,.ct-dm-hero{font-size:var(--fs-s)}
#ct-total-move{margin:8px 0 0}
.ct-flat{padding-top:18px}
/* the filter sheet: a side sheet on a desktop, a bottom sheet on a phone */
.ct-sheet{position:fixed;inset:0 0 0 auto;margin:0;width:min(440px,100vw);max-width:100vw;height:100dvh;max-height:100dvh;padding:0;border:0;border-left:1px solid var(--line-2);background:linear-gradient(180deg,#161e36,#0f1528);color:var(--text);box-shadow:-30px 0 80px rgba(0,0,0,.55);overflow:hidden}
.ct-sheet[open]{display:flex;flex-direction:column;animation:ct-sheet-in var(--t-3) var(--ease-out)}
.ct-sheet::backdrop{background:rgba(4,6,12,.6);backdrop-filter:blur(2px)}
@keyframes ct-sheet-in{from{transform:translateX(40px);opacity:0}to{transform:none;opacity:1}}
.ct-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 20px 12px;border-bottom:1px solid var(--line)}
.ct-sheet-head h2{margin:0;font:700 var(--fs-xl)/1.1 var(--display)}
.ct-sheet-head small{color:var(--text-3);font-size:var(--fs-xs)}
.ct-sheet-body{flex:1;overflow:auto;padding:6px 20px 20px}
.ct-fgroup{margin:16px 0 0;padding:0;border:0;min-width:0}
.ct-fgroup legend{padding:0;margin-bottom:4px;font:700 var(--fs-s)/1.3 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--text-2)}
.ct-fnote{margin:0 0 8px;color:var(--text-3);font-size:var(--fs-xs);line-height:1.45}
.ct-chips{display:flex;flex-wrap:wrap;gap:8px}
.ct-sheet .ct-chip{display:inline-flex;flex-direction:column;align-items:flex-start;gap:1px;min-height:44px;padding:7px 12px;border:1px solid var(--line-2);border-radius:12px;background:var(--ink-2);color:var(--text);font:600 var(--fs-s)/1.2 var(--sans);cursor:pointer;text-align:left}
.ct-sheet .ct-chip small{color:var(--text-3);font-size:10.5px;font-weight:500}
.ct-sheet .ct-chip[aria-pressed="true"]{border-color:var(--chase);background:rgba(226,180,67,.16);color:var(--chase)}
.ct-sheet .ct-chip[aria-pressed="true"] small{color:rgba(226,180,67,.85)}
.ct-sheet button:focus-visible{outline:2px solid var(--chase);outline-offset:2px}
.ct-sheet-foot{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:14px 20px;border-top:1px solid var(--line);background:rgba(10,14,24,.6)}
.ct-sheet-foot p{flex:1 1 140px;margin:0;color:var(--text-2);font-size:var(--fs-s)}
.ct-sheet-foot button,.ct-sheet-head button{min-height:44px;padding:9px 14px;border:1px solid var(--line-2);border-radius:10px;background:var(--ink-2);color:var(--text);font:inherit;font-weight:700;cursor:pointer}
.ct-sheet-foot button:disabled{opacity:.5;cursor:default}
.ct-sheet-foot .ct-primary{background:linear-gradient(180deg,var(--signal-2),var(--signal));border-color:transparent;color:var(--signal-ink)}
@media(max-width:600px){
  .ct-sheet{inset:auto 0 0 0;width:100vw;height:auto;max-height:88dvh;border-left:0;border-top:1px solid var(--line-2);border-radius:18px 18px 0 0}
  @keyframes ct-sheet-in{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
  .ct-tools{width:100%}
  .ct-tools .ct-sort{flex:1 1 140px}
}

/* --- O74 R4: quantity in place, view modes, the hover zoom --- */
#collection-tracker .ct-quick{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:8px;min-height:40px;padding:6px 10px;border-color:rgba(226,180,67,.45);background:rgba(226,180,67,.08);color:var(--chase);font-weight:700;font-size:var(--fs-s)}
#collection-tracker .ct-quick>span:first-child{font-size:18px;line-height:1}
#collection-tracker .ct-quick:hover:not(:disabled){background:rgba(226,180,67,.18)}
.ct-stepper{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:8px;padding:3px;border:1px solid var(--line);border-radius:10px;background:rgba(10,14,24,.4)}
#collection-tracker .ct-step{min-width:36px;min-height:36px;padding:0;border-radius:8px;font-size:18px;line-height:1;font-weight:700}
.ct-step-n{color:var(--text-2);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}
.ct-views{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line-2);border-radius:10px;background:var(--ink-2)}
#collection-tracker .ct-view-btn{min-width:38px;min-height:38px;padding:0;border:0;border-radius:8px;background:transparent;display:grid;place-items:center}
#collection-tracker .ct-view-btn[aria-pressed="true"]{background:rgba(226,180,67,.18);color:var(--chase)}
.ct-view-ico{display:block;width:16px;height:16px;color:currentColor}
.is-grid .ct-view-ico{background:linear-gradient(currentColor,currentColor) 0 0/7px 7px no-repeat,linear-gradient(currentColor,currentColor) 9px 0/7px 7px no-repeat,linear-gradient(currentColor,currentColor) 0 9px/7px 7px no-repeat,linear-gradient(currentColor,currentColor) 9px 9px/7px 7px no-repeat}
.is-compact .ct-view-ico{background:radial-gradient(circle,currentColor 0 1.9px,transparent 2.1px) 0 0/5.33px 5.33px}
.is-list .ct-view-ico{background:linear-gradient(currentColor,currentColor) 0 1px/16px 2.5px no-repeat,linear-gradient(currentColor,currentColor) 0 7px/16px 2.5px no-repeat,linear-gradient(currentColor,currentColor) 0 13px/16px 2.5px no-repeat}
/* compact tiles: a denser wall, the essentials only */
.ct-view-compact .ct-grid,.ct-view-compact .ct-skeleton{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:10px}
.ct-view-compact .ct-card{padding:6px;border-radius:12px}
.ct-view-compact .ct-card-copy{padding-top:6px;gap:2px}
#collection-tracker.ct-view-compact .ct-card-title{font-size:var(--fs-s)}
.ct-view-compact .ct-set-name,.ct-view-compact .ct-owned-label,.ct-view-compact .ct-money>small,.ct-view-compact .ct-wheres,.ct-view-compact .ct-estimate{display:none}
.ct-view-compact .ct-card .ct-money>b{font-size:var(--fs-s)}
.ct-view-compact .ct-card .ct-dm>small{display:none}
.ct-view-compact .ct-quick>span:last-child{display:none}
.ct-view-compact .ct-step-n{font-size:10px}
/* the list: one row per printing, scan by name, number and value */
.ct-view-list .ct-grid{grid-template-columns:minmax(0,1fr);gap:6px}
.ct-view-list .ct-card{flex-direction:row;align-items:center;gap:12px;padding:8px 12px;border-radius:12px}
.ct-view-list .ct-card:hover{transform:none}
#collection-tracker.ct-view-list .ct-art{flex:none;width:46px;border-radius:5px}
.ct-view-list .ct-qty{top:-6px;right:-8px;padding:1px 6px;font-size:10px}
.ct-view-list .ct-dm{flex:none}
.ct-view-list .ct-select{position:static;flex:none;order:-1}
.ct-view-list .ct-card-copy{flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 14px;padding:0}
.ct-view-list .ct-card-title{flex:1 1 200px;min-width:0}
.ct-view-list .ct-card .ct-money{margin:0 0 0 auto;padding:0;text-align:right}
.ct-view-list .ct-set-name,.ct-view-list .ct-estimate{display:none}
.ct-view-list .ct-wheres{margin:0}
#collection-tracker.ct-view-list .ct-quick,.ct-view-list .ct-stepper{width:auto;margin:0}
/* the list view has the whole row to spend, so the two Explore controls sit side by side again */
#collection-tracker.ct-view-list .ct-quick-row{flex-direction:row;align-items:center;width:auto;margin:0}
#collection-tracker.ct-view-list .ct-quick-row .ct-quick{width:auto}
#collection-tracker.ct-view-list .ct-want{width:auto;min-height:34px}
.ct-view-list .ct-quick>span:last-child{display:none}
#collection-tracker.ct-view-list .ct-pocket{aspect-ratio:auto;flex-direction:row;justify-content:flex-start;gap:12px;min-height:52px;padding:8px 12px;text-align:left}
.ct-view-list .ct-skeleton{grid-template-columns:minmax(0,1fr)}.ct-view-list .ct-ghost{aspect-ratio:auto;height:62px}
/* the hover zoom (pointer devices only) */
.ct-zoom{position:fixed;z-index:60;width:300px;padding:10px;border:1px solid var(--line-2);border-radius:16px;background:rgba(13,18,34,.97);box-shadow:0 24px 60px rgba(0,0,0,.6);pointer-events:none;display:grid;gap:4px;animation:ct-zoom-in var(--t-2) var(--ease-out)}
.ct-zoom[hidden]{display:none}
.ct-zoom img{display:block;width:100%;height:auto;border-radius:10px}
.ct-zoom b{margin-top:6px;font-size:var(--fs-m)}.ct-zoom small{color:var(--text-3);font-size:var(--fs-xs)}
@keyframes ct-zoom-in{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.ct-zoom{animation:none}}

/* --- printing detail --- */
.ct-detail{box-sizing:border-box;width:min(820px,calc(100% - 24px));max-height:90dvh;overflow:auto;border:1px solid var(--line-2);border-radius:18px;padding:22px;background:linear-gradient(180deg,#161e36,#10162a);color:var(--text,#fff);box-shadow:0 30px 80px rgba(0,0,0,.6)}
.ct-detail::backdrop{background:rgba(4,6,12,.78);backdrop-filter:blur(3px)}
.ct-detail h2{margin:4px 0 16px;font:700 var(--fs-xl)/1.15 var(--display)}
#collection-tracker .ct-close{float:right;margin:0 0 8px 12px}
.ct-detail-body{clear:both;display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr);gap:24px}.ct-detail-body>.tcg-card{width:100%;align-self:start}.ct-detail-info{min-width:0;overflow-wrap:anywhere}
.ct-detail-info>p{margin:0 0 10px;color:var(--text-2)}
.ct-detail-info .ct-money>b{font-size:var(--fs-xl);color:var(--text)}
.ct-detail-info h3{margin:18px 0 10px;font:700 var(--fs-m)/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}
/* O74 polish: the detail's head (name, identity chips, close), value block and provenance list */
.ct-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}
.ct-detail-head h2{margin:2px 0 8px}
#collection-tracker .ct-detail-head .ct-close{float:none;margin:0;flex:none}
.ct-idchips{display:flex;flex-wrap:wrap;gap:6px;margin:0}
.ct-idchip{padding:3px 9px;border-radius:999px;border:1px solid var(--line-2);background:rgba(255,255,255,.04);color:var(--text-2);font:600 var(--fs-xs)/1.3 var(--sans);letter-spacing:.02em}
.ct-idchip:first-child{border-color:rgba(226,180,67,.45);color:var(--chase);font-family:var(--mono)}
.ct-idchip.is-nm{border-color:rgba(76,199,154,.5);color:#93dcbf}
.ct-detail-value{display:grid;gap:6px;margin:6px 0 12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(10,14,24,.4)}
.ct-detail-value .ct-money{margin:0}
.ct-detail-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px}
/* the price line: the collector's 3M / 6M / 9M / 12M view of what the shop has recorded */
.ct-chart{display:grid;gap:8px;margin:0 0 14px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(10,14,24,.4)}
.ct-chart-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ct-chart-title{font:600 var(--fs-xs)/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}
.ct-chart-ranges{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}
.ct-range{padding:3px 9px;border:1px solid var(--line-2);border-radius:999px;background:transparent;color:var(--text-2);font:600 var(--fs-xs)/1.2 var(--mono);cursor:pointer}
.ct-range[aria-pressed="true"]{border-color:rgba(226,180,67,.55);color:var(--chase);background:rgba(226,180,67,.10)}
.ct-chart-move{font:700 var(--fs-sm)/1 var(--mono);color:var(--text-2)}
.ct-chart-move[data-dir="up"]{color:var(--ok)}.ct-chart-move[data-dir="down"]{color:var(--bad)}
.ct-chart-plot{min-height:96px;position:relative}
.ct-chart-readout{top:0}
.ct-plot{display:block;width:100%;height:auto}
.ct-chart-empty{margin:0;padding:22px 0;text-align:center;color:var(--text-3);font-size:var(--fs-xs)}
.ct-chart-note{margin:0;color:var(--text-3);font-size:var(--fs-xs);line-height:1.45}
.ct-prov{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:3px 10px;margin:0 0 12px}
.ct-prov dt{color:var(--text-3);font-weight:600}.ct-prov dd{margin:0;color:var(--text-2);overflow-wrap:anywhere}
/* O74 R3: the packs that carry a printing, each drawn as the shop draws it */
.ct-packs{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:10px;margin:0;padding:0;list-style:none}
.ct-pack{display:flex;align-items:center;gap:12px;min-width:0;padding:10px;border:1px solid var(--line);border-radius:12px;background:rgba(10,14,24,.35);color:var(--text);text-decoration:none;transition:border-color var(--t-1),background var(--t-1)}
.ct-pack:hover{border-color:rgba(226,180,67,.55);background:rgba(226,180,67,.06)}
.ct-pack-art{flex:none;display:block;width:54px;min-height:72px;line-height:0;border-radius:6px;background:radial-gradient(circle at 50% 40%,rgba(226,180,67,.18),transparent 70%)}
.ct-pack-art .pack-object,.ct-pack-art .pack-face,.ct-pack-art .pack-shot{display:block;width:100%;height:auto}
.ct-pack-copy{display:grid;gap:3px;min-width:0}.ct-pack-copy b{font-size:var(--fs-s)}.ct-pack-copy small{color:var(--text-3);font-size:var(--fs-xs)}
.ct-pack-note{color:var(--warn)!important}

@media(max-width:900px){.ct-hero{grid-template-columns:minmax(0,1fr)}.ct-hero-main .kicker{padding-right:0}.ct-currency-label{position:static;margin:0 0 12px;justify-content:flex-end}.ct-top{display:flex;flex-direction:column-reverse}}
@media(max-width:1180px){#collection-tracker{--ct-sticky:118px}}
@media(max-width:600px){
  .ct-totals{padding:16px 14px}
  /* O74 R5 (phone pass): the three holdings side by side, berries still beside every figure */
  .ct-hero{gap:14px}
  .ct-splits{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .ct-splits>section{padding:8px 8px 9px;border-radius:10px}
  .ct-splits h3{font-size:9.5px;letter-spacing:.05em}
  .ct-splits .ct-money{margin-top:4px}.ct-splits .ct-money>b{font-size:var(--fs-s)}
  .ct-splits .ct-money>small{font-size:9.5px;line-height:1.3}
  .ct-splits p{font-size:10px}
  /* a four-row tool bar would cover a third of a phone screen if it stuck: it scrolls with the page here */
  .ct-toolbar{position:static;padding:8px;gap:8px}
  .ct-bulk{gap:6px;padding:8px}
  #collection-tracker .ct-bulk button{min-height:40px;padding:6px 10px;font-size:13px}
  #collection-tracker .ct-modes button{padding:10px 12px;min-height:56px}
  .ct-tab-k{font-size:var(--fs-m)}
  .ct-grid,.ct-skeleton{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .ct-card{padding:8px}
  .ct-view-compact .ct-grid,.ct-view-compact .ct-skeleton{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .ct-view-compact .ct-card{padding:5px}
  .ct-view-list .ct-grid,.ct-view-list .ct-skeleton{grid-template-columns:minmax(0,1fr);gap:6px}
  .ct-view-list .ct-card{gap:10px;padding:8px}
  .ct-view-list .ct-card-title{flex-basis:100%}
  .ct-view-list .ct-card .ct-money{margin-left:0;text-align:left}
  .ct-bset{padding:14px 12px}
  .ct-bset-head{grid-template-columns:minmax(0,1fr)}
  .ct-bset-stats{justify-content:flex-start;text-align:left}
  .ct-bset-stats .ct-money{text-align:left}
  .ct-search{flex-basis:100%}
  .ct-detail{padding:16px}
  .ct-detail-body{grid-template-columns:minmax(0,1fr)}.ct-detail-body>:first-child{max-width:170px;margin:auto}
}

/* O74 polish: on a phone the binder's page head is slimmer - a smaller title, and the vault's own Refresh / Open more
   packs actions step back (the binder's empty state carries its own way to a pack) */
@media(max-width:600px){body.is-binder .page-head .page-title{font-size:clamp(38px,11vw,52px)}body.is-binder .page-head-actions{display:none}body.is-binder .page-head{padding-bottom:10px}}

/* O75: starter decks as decks, a card's copies one by one */
.ct-set-numbers{color:var(--text-2);font-size:var(--fs-s)}
.ct-deck-ok{color:#9fe0b0}
.ct-deck-partial{color:#f0c97a}
.ct-deck-dialog{width:min(920px,96vw)}
.ct-deck-body{display:grid;gap:12px;padding:4px 2px 8px}
.ct-deck-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;margin:0;padding:0;list-style:none}
.ct-deck-list li{display:grid;grid-template-columns:56px 44px 1fr;grid-template-rows:auto auto;align-items:center;gap:2px 10px;padding:6px 8px;border:1px solid var(--line);border-radius:12px;background:var(--ink-2)}
.ct-deck-list li.is-held{border-color:rgba(159,224,176,.5)}
#collection-tracker .ct-deck-card,.ct-deck-dialog .ct-deck-card{grid-row:1/3;min-height:0;padding:0;border:0;background:none}
.ct-deck-card img{display:block;width:56px;height:auto;border-radius:5px}
.ct-deck-qty{grid-row:1/3;font:700 20px/1 var(--display);font-variant-numeric:tabular-nums;text-align:center}
.ct-deck-name{display:grid;min-width:0}
.ct-deck-name small,.ct-deck-held{color:var(--text-2);font-size:var(--fs-s)}
.ct-deck-held{grid-column:3}
.ct-copies{display:grid;gap:4px;margin:6px 0;padding:0;list-style:none}
.ct-copies li{display:grid;padding:6px 10px;border-left:3px solid var(--line-2);background:var(--ink-2);border-radius:6px}
.ct-copies li[data-state=owned_by_customer]{border-left-color:#9fe0b0}
.ct-copies li[data-state=shipped],.ct-copies li[data-state=packed]{border-left-color:#8ab4f8}
.ct-copies li small{color:var(--text-2)}
.ct-copies .ct-copies-head{border:0;background:none;padding:0;font-weight:700}
.ct-copies .ct-copies-note{border:0;background:none;padding:0}
@media(max-width:600px){.ct-deck-list{grid-template-columns:1fr}}/* O77 (the owner, 24 Oct): the binder is three lists - what Ohara holds, what the collector
   added themselves, and what they want. Each list gets its own heading; a wanted card is never
   drawn like a held one. */
.ct-binder-body .ct-bgroup{display:grid;gap:14px}
.ct-bgroup-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;padding:0 2px 8px;border-bottom:1px solid var(--line)}
.ct-bgroup-head h2{margin:0;font:700 var(--fs-l)/1.2 var(--display);letter-spacing:.01em}
.ct-bgroup.is-ohara .ct-bgroup-head h2{color:var(--chase)}
.ct-bgroup.is-mine .ct-bgroup-head h2{color:#93dcbf}
.ct-bgroup.is-want .ct-bgroup-head h2{color:#cbbcf8}
.ct-bgroup-count{margin-left:auto;padding:2px 10px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--text-2);font-size:var(--fs-xs);font-weight:700}
.ct-bgroup-hint{flex-basis:100%;margin:0;color:var(--text-3);font-size:var(--fs-xs)}
.ct-bgroup-body{display:grid;gap:18px;min-width:0}
.ct-bgroup.is-want .ct-bset{opacity:.94}

/* a card in Explore: add it as yours, or bookmark it as wanted.
   O80 (the owner, 24 Oct): the shelf name can be any length a collector types, so these two controls
   STACK instead of sharing one row. Side by side on a 176px tile the want button was squeezed to a
   sliver and its label broke into one letter per line ("W / a / n / t"); stacked, each control gets
   the full card width and neither label is ever wrapped or cut short. */
.ct-quick-row{display:flex;flex-direction:column;align-items:stretch;gap:6px;margin-top:8px}
.ct-quick-row .ct-quick{flex:0 0 auto;margin:0;width:100%;min-width:0}
#collection-tracker .ct-want{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:0 0 auto;width:100%;min-width:0;min-height:36px;padding:5px 10px;white-space:nowrap;border:1px solid rgba(171,144,244,.45);border-radius:10px;background:rgba(171,144,244,.08);color:#cbbcf8;font-weight:700;font-size:var(--fs-s);cursor:pointer}
.ct-want-text{white-space:nowrap}
.ct-want-star{flex:0 0 auto}
/* O80: a card you already hold reads "Another to <shelf>", which needs the whole button, so the plus
   steps aside (the compact and list views draw the plus alone, so there it always stays). */
#collection-tracker .ct-quick[data-have="1"]>span:first-child{display:none}
.ct-view-compact #collection-tracker .ct-quick[data-have="1"]>span:first-child,
.ct-view-list #collection-tracker .ct-quick[data-have="1"]>span:first-child{display:inline-block}
#collection-tracker .ct-want:hover:not(:disabled){background:rgba(171,144,244,.18)}
#collection-tracker .ct-want.is-on{border-color:rgba(171,144,244,.85);background:rgba(171,144,244,.26);color:#efe7ff}
#collection-tracker .ct-want:disabled{opacity:.55;cursor:default}
.ct-want-star{font-size:15px;line-height:1}
.ct-want-label{align-self:flex-start;padding:1px 8px;border-radius:999px;border:1px solid rgba(171,144,244,.45);background:rgba(171,144,244,.12);color:#cbbcf8;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.ct-actions-want{align-items:center;margin-top:4px}
.ct-want-note{flex:1 1 200px;color:var(--text-3);font-size:var(--fs-xs);line-height:1.35}
/* O79 (the owner, 24 Oct): the binder's tabs. "From Ohara" holds what Ohara itself has for you, each
   named binder is a shelf you keep, Wanted is the bookmark list, and the + makes another one. The
   chosen tab is the one Explore files into, so it is the shelf that has to read as "in use". */
.ct-bindertabs{display:flex;align-items:center;gap:6px;overflow-x:auto;padding:6px;margin:0 0 10px;border:1px solid var(--line);border-radius:14px;background:rgba(10,14,24,.55);scrollbar-width:thin}
#collection-tracker .ct-btab{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;min-height:40px;padding:8px 14px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--text-2);font-weight:700;font-size:var(--fs-s);cursor:pointer;white-space:nowrap}
#collection-tracker .ct-btab:hover{background:rgba(255,255,255,.05);color:var(--text)}
#collection-tracker .ct-btab[aria-selected="true"]{background:linear-gradient(180deg,rgba(226,180,67,.18),rgba(226,180,67,.05));border-color:rgba(226,180,67,.55);color:var(--chase)}
.ct-btab-name{max-width:22ch;overflow:hidden;text-overflow:ellipsis}
.ct-btab-count{min-width:24px;padding:2px 7px;border-radius:999px;background:rgba(255,255,255,.07);color:var(--text-3);font:700 var(--fs-xs)/1.3 var(--sans);text-align:center;font-variant-numeric:tabular-nums}
.ct-btab[aria-selected="true"] .ct-btab-count{background:rgba(226,180,67,.22);color:var(--chase)}
/* O80 (the owner, 24 Oct: "all binders must have their own separate price at the top. So it shows how
   much value they have in each binder"): every tab carries the value of its own shelf, and the chosen
   binder spells its figure out at the top of its panel. */
.ct-btab-value{color:var(--text-3);font:700 var(--fs-xs)/1.3 var(--sans);font-variant-numeric:tabular-nums;white-space:nowrap}
.ct-btab[aria-selected="true"] .ct-btab-value{color:var(--chase)}
/* O88: the portfolio's own line - today's figure, the move, and the recorded days behind it */
.ct-portfolio{display:grid;gap:10px;margin:0 0 12px;padding:12px 16px;border:1px solid var(--line);border-radius:14px;background:rgba(10,14,24,.34)}
.ct-pf-head{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap}
.ct-pf-fig{display:grid;gap:2px}
.ct-pf-fig .kicker{margin:0}
.ct-pf-amount .ct-money{margin:0}
.ct-pf-amount .ct-money>b{font-size:var(--fs-l);font-variant-numeric:tabular-nums}
.ct-pf-move{margin:0;font:600 var(--fs-s)/1.3 var(--mono);color:var(--text-2)}
.ct-pf-move[data-dir="up"]{color:var(--ok)}.ct-pf-move[data-dir="down"]{color:var(--bad)}
.ct-pf-ranges{display:flex;gap:4px;margin-left:auto}
.ct-pf-plot{min-height:120px;position:relative}
/* O89: the day readout the plot follows the pointer with - the whole chart is the sensor, so this is what
   tells you what a day three days back was worth without having to land on a 2px dot. */
.ct-pf-readout{position:absolute;top:2px;z-index:2;display:grid;gap:1px;padding:6px 9px;border:1px solid var(--line);border-radius:9px;background:rgba(8,11,20,.94);box-shadow:0 6px 18px rgba(0,0,0,.35);pointer-events:none;white-space:nowrap;font-variant-numeric:tabular-nums;transform:translateX(-50%)}
.ct-pf-readout[data-edge="start"]{transform:translateX(-8px)}
.ct-pf-readout[data-edge="end"]{transform:translateX(-100%) translateX(8px)}
.ct-pf-readout b{font-family:var(--mono);font-size:var(--fs-xs);font-weight:600;line-height:1.2;color:var(--text-3);letter-spacing:.04em;text-transform:uppercase}
.ct-pf-readout span{font-size:var(--fs-s);font-weight:700;line-height:1.2;color:var(--text)}
.ct-pf-readout small{font-family:var(--mono);font-size:var(--fs-xs);font-weight:600;line-height:1.2;color:var(--text-2)}
.ct-pf-readout small.is-up{color:var(--ok)}
.ct-pf-readout small.is-down{color:var(--bad)}
.ct-pf-note{margin:0;color:var(--text-3);font-size:var(--fs-xs);line-height:1.45}
@media (max-width:640px){.ct-portfolio{padding:10px 12px}.ct-pf-ranges{margin-left:0;flex-wrap:wrap}}
.ct-binder-value{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:0 0 10px;padding:12px 16px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,rgba(226,180,67,.10),rgba(226,180,67,.02))}
.ct-bv-head{display:grid;gap:2px}
.ct-bv-head .kicker{margin:0}
.ct-bv-tab{font-weight:700;font-size:var(--fs-m);color:var(--text)}
.ct-binder-value .ct-money{margin:0}
.ct-binder-value .ct-money>b{font-size:var(--fs-l);font-variant-numeric:tabular-nums}
.ct-bv-count{margin:0;color:var(--text-2);font-size:var(--fs-s)}
.ct-bv-est{flex:1 1 240px;color:var(--text-3);font-size:var(--fs-xs);line-height:1.35}
@media (max-width:640px){.ct-binder-value{gap:10px;padding:10px 12px}}
#collection-tracker .ct-btab-add{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;min-height:40px;margin-left:auto;padding:8px 14px;border:1px dashed rgba(226,180,67,.5);border-radius:10px;background:transparent;color:var(--chase);font-weight:700;font-size:var(--fs-s);cursor:pointer;white-space:nowrap}
#collection-tracker .ct-btab-add:hover{background:rgba(226,180,67,.12)}
.ct-binder-tabedit{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:-4px 0 12px;padding:0 4px}
.ct-binder-filing{color:var(--text-3);font-size:var(--fs-xs)}
#collection-tracker .ct-linkbtn.is-danger{color:#f0a2a2}
#collection-tracker .ct-linkbtn.is-danger:hover{color:#ffc4c4}
.ct-binder-field{display:grid;gap:6px}
.ct-binder-field span{color:var(--text-3);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em}
.ct-binder-field input{min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.05);color:var(--text);font-size:var(--fs-m)}
.ct-sheet-note{margin:10px 0 0;min-height:18px;color:#f0a2a2;font-size:var(--fs-xs)}
/* O80: the add button now has the whole card width, so the shelf name gets all of it - it only ever
   shortens when a collector has named a binder longer than the tile can hold. */
.ct-quick-label{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.ct-quick-want{margin-top:8px}
@media (max-width:520px){.ct-btab-name{max-width:14ch}}
