:root {
  --bg:#0a0a0a;--bg2:#111;--bg3:#1a1a1a;--bg4:#222;
  --border:#2a2a2a;--border2:#333;
  --accent:#e84040;--accent2:#ff6060;
  --text:#e8e8e8;--text2:#999;--text3:#555;
  --green:#3dbb3d;--yellow:#f0c040;--blue:#4488ff;--red:#e84040;
  --purple:#9966ff;--crop:rgba(255,120,0,.9);
  --inv-zoom:1;
  --tbl-zoom:1;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:'Segoe UI',system-ui,sans-serif;height:100vh;overflow:hidden;display:flex;flex-direction:column}

#header{background:var(--bg2);border-bottom:1px solid var(--border);height:56px;padding:0 14px;display:flex;align-items:center;gap:10px;flex-shrink:0;z-index:50;overflow:hidden}
#header h1{font-size:22px;font-weight:700;color:var(--accent);white-space:nowrap;letter-spacing:.04em}
#header h1 span{color:var(--text3);font-weight:400}
#ai-badge{height:10px;min-width:10px;max-width:10px;border-radius:50%;overflow:hidden;padding:0;border:none;font-size:10px;font-weight:700;letter-spacing:.05em;white-space:nowrap;color:transparent;transition:max-width .3s ease,border-radius .25s,padding .25s;cursor:default;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}
#ai-badge:hover{max-width:90px;border-radius:12px;padding:1px 8px;color:#fff}
#ai-badge.claude{background:var(--blue)}
#ai-badge.ollama{background:var(--green)}
#ai-badge.noai{background:var(--yellow)}
#ai-badge.noai:hover{color:#333}
#ai-badge.loading{background:var(--purple);animation:pulse-ai 1.2s ease-in-out infinite}
@keyframes pulse-ai{0%,100%{opacity:.4}50%{opacity:1}}
#camera-select{background:var(--bg4);border:1px solid var(--border2);color:var(--text);padding:5px 8px;border-radius:6px;font-size:12px;max-width:200px}
#camera-select:focus{outline:none;border-color:var(--accent)}
.hdr-right{margin-left:auto;display:flex;align-items:center;gap:8px}
#count-badge{font-size:14px;color:var(--text2)}
.hbtn{background:var(--bg4);border:1px solid var(--border2);color:var(--text2);padding:10px 14px;border-radius:6px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:5px;white-space:nowrap}
.hbtn:hover{border-color:var(--accent);color:var(--text)}

#main{flex:1;overflow:hidden;position:relative}

/* ── TAB PANELS (all screens) ────────────────────────────────────── */
#cam-panel,#right{position:absolute;inset:0;display:none;flex-direction:column;overflow:auto}
body[data-tab="capture"] #cam-panel{display:flex}
body[data-tab="review"] #right,body[data-tab="collect"] #right{display:flex}
body[data-tab="review"] #inv-panel{display:none}
body[data-tab="collect"] #review{display:none!important}
body[data-tab="review"] #review{max-height:none;flex:1}

#cam-panel{background:#000}
#vid-wrap{flex:1;position:relative;overflow:hidden;background:#000}
#video{width:100%;height:100%;object-fit:cover;display:block}
#no-cam{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--text3)}
#no-cam p{font-size:13px;text-align:center;line-height:1.6}
#no-cam-icon{font-size:80px;line-height:1;user-select:none}

#crop{position:absolute;border:2px dashed var(--crop);cursor:move;user-select:none;box-shadow:0 0 0 9999px rgba(0,0,0,.38)}
.cc{position:absolute;width:14px;height:14px;border:3px solid var(--crop)}
.cc.tl{top:-3px;left:-3px;border-right:none;border-bottom:none}
.cc.tr{top:-3px;right:-3px;border-left:none;border-bottom:none}
.cc.bl{bottom:-3px;left:-3px;border-right:none;border-top:none}
.cc.br{bottom:-3px;right:-3px;border-left:none;border-top:none}
#crop-handle{position:absolute;bottom:-8px;right:-8px;width:22px;height:22px;background:var(--crop);border-radius:4px;cursor:se-resize;opacity:.85}

#barcode-overlay{position:absolute;inset:0;display:none;pointer-events:none;align-items:center;justify-content:center}
#barcode-overlay.on{display:flex}
.bc-target{position:relative;width:70%;height:28%;border:2px solid rgba(61,187,61,.7);border-radius:4px;overflow:hidden;transition:width .2s,height .2s}
.bc-scanline{position:absolute;left:0;right:0;height:2px;background:rgba(61,187,61,.9);box-shadow:0 0 8px var(--green);animation:scan 1.5s ease-in-out infinite}
@keyframes scan{0%,100%{top:5%}50%{top:90%}}
@keyframes scan-hit{0%,100%{border-color:rgba(61,187,61,.7)}50%{border-color:#3f3;box-shadow:0 0 18px 6px rgba(61,187,61,.6)}}
.bc-target.hit{animation:scan-hit .5s ease}
.bc-corner{position:absolute;width:14px;height:14px;border-color:var(--green);border-style:solid}
.bc-corner.tl{top:-1px;left:-1px;border-width:3px 0 0 3px}
.bc-corner.tr{top:-1px;right:-1px;border-width:3px 3px 0 0}
.bc-corner.bl{bottom:-1px;left:-1px;border-width:0 0 3px 3px}
.bc-corner.br{bottom:-1px;right:-1px;border-width:0 3px 3px 0}
.bc-label{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.75);color:var(--green);font-size:11px;padding:3px 10px;border-radius:20px;font-weight:700;letter-spacing:.05em;white-space:nowrap}
.bc-zoom-ctrl{position:absolute;bottom:36px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;background:rgba(0,0,0,.75);border-radius:20px;padding:4px 12px;pointer-events:auto;white-space:nowrap}
.bc-zoom-btn{background:none;border:1px solid rgba(61,187,61,.6);color:var(--green);width:22px;height:22px;border-radius:50%;cursor:pointer;font-size:15px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center}
.bc-zoom-btn:hover{background:rgba(61,187,61,.2)}
.bc-photo-btn{width:auto!important;padding:0 8px!important;font-size:14px!important}
#bc-zoom-label{color:var(--green);font-size:11px;min-width:32px;text-align:center;font-weight:700}

#cam-ctrl{background:var(--bg2);border-top:1px solid var(--border);padding:10px 14px;display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap}
.cam-ctrl-break{flex:0 0 100%;height:0;margin:0;padding:0}
#btn-cap{background:var(--accent);border:none;color:#fff;font-size:16px;font-weight:700;padding:16px 26px;border-radius:8px;cursor:pointer;letter-spacing:.03em}
#btn-cap:hover{background:var(--accent2)}
#btn-cap:disabled{opacity:.4;cursor:not-allowed}
.ctrl-btn{background:var(--bg4);border:1px solid var(--border2);color:var(--text2);padding:14px 16px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600}
.ctrl-btn:hover{border-color:var(--accent);color:var(--text)}
.ctrl-btn.active{border-color:var(--green);color:var(--green);background:rgba(61,187,61,.1)}
#file-input{display:none}
.key-hint{font-size:11px;color:var(--text3)}
#upload-prog{font-size:11px;color:var(--purple);display:none}
#thumb-wrap{margin-left:auto;display:none;flex-direction:column;align-items:flex-end;gap:3px}
#thumb-img{width:80px;height:56px;object-fit:cover;border-radius:4px;border:1px solid var(--border2)}
#thumb-wrap span{font-size:10px;color:var(--text3)}

#queue-strip{position:absolute;top:0;left:0;right:0;z-index:20;background:rgba(17,17,17,.92);border-bottom:1px solid var(--border);padding:8px 12px;display:none;align-items:center;gap:8px;overflow:hidden;backdrop-filter:blur(4px)}
#queue-strip.on{display:flex}
.q-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.q-imgs{display:flex;align-items:center;gap:8px;overflow-x:auto;flex:1;padding:2px 0}
.q-imgs::-webkit-scrollbar{height:3px}
.q-imgs::-webkit-scrollbar-track{background:transparent}
.q-imgs::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}
.q-item{position:relative;flex-shrink:0}
.q-item img{width:60px;height:42px;object-fit:cover;border-radius:4px;border:1px solid var(--border2);display:block}
.q-rm{position:absolute;top:-5px;right:-5px;background:var(--red);border:none;color:#fff;width:16px;height:16px;border-radius:50%;cursor:pointer;font-size:10px;line-height:16px;text-align:center;padding:0}
.q-rm:hover{background:var(--accent2)}
#btn-process-q{background:var(--accent);border:none;color:#fff;padding:7px 14px;border-radius:7px;cursor:pointer;font-size:12px;font-weight:700;white-space:nowrap;flex-shrink:0}
#btn-process-q:hover{background:var(--accent2)}
#btn-clear-q{background:var(--bg4);border:1px solid var(--border2);color:var(--text2);padding:7px 10px;border-radius:7px;cursor:pointer;font-size:12px;flex-shrink:0}
#btn-clear-q:hover{border-color:var(--accent);color:var(--text)}
.q-count{font-size:11px;color:var(--text3);white-space:nowrap}

#right{flex:1;flex-direction:column}

#review{background:var(--bg2);border-bottom:1px solid var(--border);display:none;flex-direction:column;padding:12px 14px;gap:8px;max-height:56%;overflow:auto;flex-shrink:0}
#review.on{display:flex}
#rev-hdr{display:flex;align-items:center;gap:8px}
#rev-hdr h2{font-size:13px;font-weight:700;color:var(--yellow);flex:1}
#rev-bulk{display:none;gap:6px}
#rev-bulk.on{display:flex}
.spin-row{display:flex;align-items:center;gap:8px;color:var(--text2);font-size:13px}
.spin{width:15px;height:15px;border:2px solid var(--border2);border-top-color:var(--accent);border-radius:50%;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

.rev-card{background:var(--bg3);border:1px solid var(--border2);border-radius:8px;overflow:hidden;margin-bottom:6px;transition:transform .15s ease,opacity .15s ease,background .1s}
.rev-card.swiping{transition:none!important}
.rev-card.expanded{border-color:rgba(232,64,64,.5)}
.swipe-hint{position:absolute;top:50%;transform:translateY(-50%);font-size:28px;opacity:0;pointer-events:none;transition:opacity .1s;z-index:10}
.swipe-hint-ok{left:16px;color:var(--green)}
.swipe-hint-x{right:16px;color:var(--red)}
.card-hdr{display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;user-select:none;min-width:0}
.card-hdr:hover{background:rgba(255,255,255,.03)}
.card-num{font-size:10px;color:var(--text3);font-family:monospace;flex-shrink:0}
.card-hdr-thumb{width:36px;height:26px;object-fit:cover;border-radius:3px;border:1px solid var(--border2);flex-shrink:0}
.card-hdr-ph{width:36px;height:26px;border-radius:3px;background:var(--bg4);border:1px solid var(--border2);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:13px}
.card-hdr-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;overflow:hidden}
.card-title-txt{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-title-txt.empty{color:var(--text3);font-style:italic;font-weight:400}
.card-meta-txt{font-size:10px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-chev{font-size:9px;color:var(--text3);flex-shrink:0;transition:transform .15s}
.rev-card.expanded .card-chev{transform:rotate(180deg)}
.card-body{display:none;padding:10px 12px 12px;border-top:1px solid var(--border);gap:10px}
.rev-card.expanded .card-body{display:grid;grid-template-columns:180px 1fr}
.rev-card.expanded .card-body.no-thumb{display:flex;flex-direction:column}
.card-thumb{width:180px;min-height:120px;max-height:280px;object-fit:contain;border-radius:6px;border:1px solid var(--border);background:#000;align-self:start;flex-shrink:0}
.card-body-right{display:flex;flex-direction:column;gap:10px;min-width:0}
.rev-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.rev-grid .full{grid-column:1/-1}
.fg{display:flex;flex-direction:column;gap:3px}
.fg label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.06em}
.fg input,.fg select,.fg textarea{background:var(--bg4);border:1px solid var(--border2);color:var(--text);padding:6px 8px;border-radius:5px;font-size:12px;font-family:inherit}
.fg textarea{resize:none;height:44px}
.fg input:focus,.fg select:focus,.fg textarea:focus{outline:none;border-color:var(--accent)}
.card-acts{display:flex;gap:6px}
.btn{padding:8px 16px;border-radius:7px;border:none;cursor:pointer;font-size:13px;font-weight:600}
.btn-sm{padding:5px 11px;font-size:12px}
.btn-ok{background:var(--green);color:#000}
.btn-x{background:var(--bg4);color:var(--text2);border:1px solid var(--border2)}
.btn-del{background:rgba(232,64,64,.15);color:var(--red);border:1px solid rgba(232,64,64,.3)}
.btn:hover{filter:brightness(1.12)}
.btn-lookup{background:var(--bg4);border:1px solid var(--border2);color:var(--blue);padding:5px 9px;border-radius:5px;cursor:pointer;font-size:11px;font-weight:600;white-space:nowrap;flex-shrink:0;line-height:1}
.btn-lookup:hover{border-color:var(--blue);background:rgba(68,136,255,.1)}
.btn-lookup:disabled{opacity:.4;cursor:not-allowed}
#rev-err{color:var(--red);font-size:12px;padding:4px 0}
#m-revalidate .modal{gap:0}

#inv-panel{flex:1;display:flex;flex-direction:column;position:relative;min-height:0;}

#search{background:var(--bg4);border:1px solid var(--border2);color:var(--text);padding:8px 11px;border-radius:6px;font-size:13px;flex:1;min-width:100px}
#search:focus{outline:none;border-color:var(--accent)}
#sort-sel{background:var(--bg4);border:1px solid var(--border2);color:var(--text2);padding:8px 10px;border-radius:6px;cursor:pointer;white-space:nowrap;flex-shrink:0}
#sort-sel:focus{outline:none;border-color:var(--accent)}
#btn-wall.active{border-color:var(--accent);color:var(--accent)}
/* ── COLUMN FILTERS ─────────────────────────────────────────────── */
.col-f{width:100%;background:var(--bg3);border:1px solid var(--border2);color:var(--text);padding:3px 5px;border-radius:4px;font-size:11px;font-family:inherit;box-sizing:border-box;min-width:0}
.col-f:focus{outline:none;border-color:var(--accent)}
.th-sort{cursor:pointer;user-select:none;white-space:nowrap}
.th-sort:hover{background:var(--bg4)}
.sort-arr{font-size:9px;opacity:.35;margin-left:2px}
.sort-arr.on{opacity:1;color:var(--accent)}
.th-lbl{cursor:inherit}
.th-fp-btn{background:none;border:none;color:var(--text3);cursor:pointer;font-size:9px;padding:1px 3px;border-radius:3px;opacity:.4;vertical-align:middle;line-height:1;margin-left:2px}
.th-fp-btn:hover{opacity:1;color:var(--accent)}
.th-fp{display:none;position:absolute;top:calc(100% + 2px);left:0;min-width:140px;background:var(--bg3);border:1px solid var(--border2);border-radius:6px;padding:6px;z-index:100;box-shadow:0 4px 16px rgba(0,0,0,.55)}
.th-fp .col-f{width:100%}
.th-fp .yr-dual{min-width:160px}
.yr-dual{position:relative;height:32px;min-width:80px}
.yr-lbl{font-size:9px;color:var(--accent);text-align:center;position:absolute;top:0;left:0;right:0;white-space:nowrap;line-height:1.2}
.yr-track{position:absolute;bottom:4px;left:4px;right:4px;height:3px;background:var(--border2);border-radius:2px}
.yr-slider{position:absolute;bottom:0;left:0;width:100%;height:14px;margin:0;-webkit-appearance:none;appearance:none;background:transparent;pointer-events:none}
.yr-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:11px;width:11px;border-radius:50%;background:var(--accent);cursor:pointer;pointer-events:all;border:2px solid var(--bg)}
.yr-slider::-moz-range-thumb{height:9px;width:9px;border-radius:50%;background:var(--accent);cursor:pointer;pointer-events:all;border:2px solid var(--bg);box-sizing:border-box}

#inv-list{flex:1;overflow-y:auto;overflow-x:auto;padding-bottom:48px;position:relative;z-index:10}
#empty-state{flex:1}
.tape-row{cursor:pointer}
.row-thumb{width:80px;height:22px;object-fit:cover;border-radius:3px;background:var(--bg4);flex-shrink:0}
.row-thumb-ph{width:80px;height:22px;border-radius:3px;background:var(--bg4);display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0}
.tape-row:hover{background:var(--bg3)}
.tape-row.sel{background:rgba(68,136,255,.08);border-bottom-color:rgba(68,136,255,.2)}
.tape-row.bulk-sel{background:rgba(240,192,64,.1);outline:1px solid rgba(240,192,64,.4);outline-offset:-1px}
.tape-row input[type=checkbox]{width:15px;height:15px;cursor:pointer;accent-color:var(--blue);flex-shrink:0}
.tid{font-size:11px;color:var(--text3);font-family:monospace}
#bulk-bar{display:none;padding:8px 14px;background:var(--bg2);border-top:1px solid rgba(68,136,255,.3);flex-shrink:0;gap:8px;align-items:center;flex-wrap:wrap}
#bulk-bar.on{display:flex}
#bulk-bar select{background:var(--bg4);border:1px solid var(--border2);color:var(--text);padding:5px 8px;border-radius:6px;font-size:12px}
#bulk-bar select:focus{outline:none;border-color:var(--blue)}
.tinfo h3{font-size:13px;font-weight:600;margin-bottom:2px}
.tmeta{font-size:11px;color:var(--text3)}
.stat-chip{cursor:pointer;text-decoration:underline;text-underline-offset:2px;white-space:nowrap}
.stat-chip:hover{opacity:.7}
#btn-clear-filter{background:none;border:1px solid rgba(232,64,64,.35);color:var(--red);padding:3px 9px;border-radius:5px;font-size:11px;cursor:pointer;white-space:nowrap;flex-shrink:0}
#btn-clear-filter:hover{background:rgba(232,64,64,.1)}
.badge{font-size:10px;padding:2px 7px;border-radius:20px;font-weight:700;white-space:nowrap}
.b-in_collection{background:rgba(61,187,61,.15);color:#3dbb3d}
.b-for_sale{background:rgba(240,192,64,.15);color:#f0c040}
.b-sold{background:rgba(100,100,100,.15);color:#777}
.b-donated{background:rgba(68,136,255,.15);color:#4488ff}
.b-missing{background:rgba(232,64,64,.15);color:#e84040}
.b-wanted{background:rgba(153,102,255,.15);color:#9966ff}
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:10px;color:var(--text3);padding:40px;text-align:center;font-size:13px;line-height:1.6}

#wall-view{flex:1;overflow-y:auto;display:none;padding:10px;gap:10px;flex-wrap:wrap;align-content:flex-start}
#wall-view.on{display:flex}
/* ── SPINE WALL (landscape / hotdog orientation) ─────────────── */
#wall-view.spine-mode{gap:3px;padding:8px;align-content:flex-start}
/* ── STACKSUP (upright spines, books-on-shelf) ────────────────── */
#wall-view.stacksup-mode{gap:4px;padding:10px;align-content:flex-start;align-items:flex-end}
/* ── COVERS (face/portrait art) ──────────────────────────────── */
#wall-view.covers-mode{gap:8px;padding:10px;align-content:flex-start}
.cover-card{width:calc(110px * var(--inv-zoom));display:flex;flex-direction:column;cursor:pointer;border-radius:5px;border:1px solid var(--border);overflow:hidden;background:var(--bg3);transition:border-color .15s;flex-shrink:0;position:relative}
.cover-card:hover{border-color:var(--accent2);box-shadow:0 2px 8px rgba(0,0,0,.4)}
.cover-card.sel{border-color:var(--blue);background:rgba(68,136,255,.06)}
.cover-card.bulk-sel{border-color:var(--yellow);background:rgba(240,192,64,.1)}
.cover-img{width:100%;aspect-ratio:2/3;object-fit:cover;display:block;flex-shrink:0}
.cover-ph{width:100%;aspect-ratio:2/3;background:var(--bg4);display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}
.cover-ph-txt{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);font-size:9px;color:var(--text2);padding:4px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-height:140px}
.cover-lbl{font-size:7px;color:var(--text3);padding:2px 3px;text-align:center;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:var(--bg2);line-height:1.3;flex-shrink:0}
.su-card{width:calc(58px * var(--inv-zoom));height:calc(186px * var(--inv-zoom));display:flex;flex-direction:column;cursor:pointer;border-radius:4px;border:1px solid var(--border);overflow:hidden;background:var(--bg3);transition:border-color .15s;flex-shrink:0;position:relative}
.su-card:hover{border-color:var(--accent2);box-shadow:0 2px 8px rgba(0,0,0,.4)}
.su-card.sel{border-color:var(--blue);background:rgba(68,136,255,.06)}
.su-card.bulk-sel{border-color:var(--yellow);background:rgba(240,192,64,.1)}
.su-img{width:58px;flex:1;object-fit:cover;display:block}
/* Spine photo rotated 90° CW so it reads correctly in the stacked-up shelf view */
.su-img-spine{width:calc(186px * var(--inv-zoom));height:calc(58px * var(--inv-zoom));object-fit:cover;flex:none;display:block;transform:rotate(90deg);transform-origin:center;position:relative;left:calc((58px - 186px) * var(--inv-zoom) / 2);top:calc((186px - 58px) * var(--inv-zoom) / 2)}
.su-ph{width:58px;flex:1;background:var(--bg4);display:flex;align-items:center;justify-content:center;overflow:hidden}
.su-ph-txt{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);font-size:8px;color:var(--text2);padding:4px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-height:160px}
.su-lbl{font-size:7px;color:var(--text3);padding:2px 3px;text-align:center;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:var(--bg2);line-height:1.3;flex-shrink:0}
.spine-card{width:calc(188px * var(--inv-zoom));height:calc(56px * var(--inv-zoom));display:flex;flex-direction:column;cursor:pointer;border-radius:5px;border:1px solid var(--border);overflow:hidden;background:var(--bg3);transition:border-color .15s;flex-shrink:0;position:relative}
.spine-card:hover{border-color:var(--accent2)}
.spine-card.sel{border-color:var(--blue);background:rgba(68,136,255,.06)}
.spine-card.bulk-sel{border-color:var(--yellow);background:rgba(240,192,64,.1)}
.spine-img{width:calc(188px * var(--inv-zoom));height:calc(44px * var(--inv-zoom));object-fit:cover;display:block;flex-shrink:0}
.spine-ph-txt{width:calc(188px * var(--inv-zoom));height:calc(44px * var(--inv-zoom));background:var(--bg4);display:flex;align-items:center;padding:0 8px;font-size:10px;color:var(--text2);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex-shrink:0}
.spine-lbl{font-size:8px;color:var(--text3);padding:2px 5px;text-align:left;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:var(--bg2);line-height:1.3;flex:1}
/* Desktop: bigger edit/delete action buttons */
.tbl-del,.tbl-edit{padding:6px 10px;font-size:14px;background:var(--bg4);border:1px solid var(--border2);color:var(--text2);border-radius:5px;cursor:pointer;line-height:1}
.tbl-del:hover{color:var(--red);border-color:rgba(232,64,64,.4)}
.tbl-edit:hover{color:var(--text);border-color:var(--accent)}
.tbl-save,.tbl-cancel{padding:5px 9px;font-size:13px;background:var(--bg4);border:1px solid var(--border2);color:var(--text2);border-radius:5px;cursor:pointer}
.tbl-save:hover{color:var(--green);border-color:rgba(61,187,61,.5)}
.tbl-cancel:hover{color:var(--red);border-color:rgba(232,64,64,.4)}
/* Mobile: icon-only for btn-txt labels; swipe replaces edit/delete buttons */
@media (max-width:700px){
  .btn-txt{display:none}
  .bulk-del-txt{display:none}
  .bulk-del-ico{display:inline!important}
  .tbl-del,.tbl-edit{display:none}
}
/* Swipe feedback on mobile rows */
.tape-row{transition:background .1s}
.tape-row.swipe-delete{background:rgba(232,64,64,.18)!important}
.tape-row.swipe-select{background:rgba(68,136,255,.18)!important}

.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:200}
.modal{background:var(--bg2);border:1px solid var(--border2);border-radius:12px;padding:22px;width:90%;max-width:480px;max-height:88vh;overflow-y:auto;display:flex;flex-direction:column;gap:14px}
.modal h2{font-size:15px;font-weight:700}
.modal-acts{display:flex;gap:8px;justify-content:flex-end;margin-top:4px;flex-wrap:wrap}
.m-acts-left{margin-right:auto}
.dfield{display:flex;flex-direction:column;gap:3px}
.dfield label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.06em}
.dfield input,.dfield select,.dfield textarea{background:var(--bg4);border:1px solid var(--border2);color:var(--text);padding:7px 9px;border-radius:5px;font-size:13px;font-family:inherit}
.dfield textarea{resize:none;height:52px}
.dfield input:focus,.dfield select:focus,.dfield textarea:focus{outline:none;border-color:var(--accent)}
.dfield input[readonly]{color:var(--text3)}
.dgrid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.dgrid .full{grid-column:1/-1}
#detail-thumb{width:100%;max-height:110px;object-fit:contain;border-radius:5px;border:1px solid var(--border);background:#000;display:none}
.dup-box{background:var(--bg3);border:1px solid var(--border2);border-radius:7px;padding:11px;font-size:13px}
.dup-box strong{color:var(--yellow)}
.sfield{display:flex;flex-direction:column;gap:5px}
.sfield label{font-size:12px;color:var(--text2)}
.sfield input,.sfield select{background:var(--bg4);border:1px solid var(--border2);color:var(--text);padding:7px 11px;border-radius:5px;font-size:13px;font-family:inherit}
.sfield input:focus,.sfield select:focus{outline:none;border-color:var(--accent)}
.shint{font-size:11px;color:var(--text3);line-height:1.5}
.ssep{border:none;border-top:1px solid var(--border);margin:2px 0}
.srow{display:flex;gap:8px}
.srow .sfield{flex:1}
.ai-status-row{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:6px;background:var(--bg3);border:1px solid var(--border2);font-size:12px}
.ai-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.ai-dot.ok{background:var(--green)}
.ai-dot.off{background:var(--text3)}
.ai-dot.spin2{background:var(--purple);animation:pulse 1s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.exp-wrap{position:relative}
.exp-dd{position:absolute;top:calc(100% + 4px);right:0;background:var(--bg2);border:1px solid var(--border2);border-radius:8px;padding:4px;min-width:130px;z-index:300;display:none}
.exp-dd.on{display:block}
.exp-dd button{display:block;width:100%;text-align:left;background:none;border:none;color:var(--text);padding:7px 11px;font-size:12px;cursor:pointer;border-radius:4px}
.exp-dd button:hover{background:var(--bg4)}
::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}
.tag-wrap{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.tag-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:20px;font-size:10px;font-weight:600;cursor:pointer;user-select:none;border:1px solid var(--border2);background:var(--bg4);color:var(--text3);transition:all .12s}
.tag-chip.on{background:rgba(68,136,255,.18);border-color:rgba(68,136,255,.5);color:var(--blue)}
.tag-chip:hover{border-color:var(--blue);color:var(--blue)}
.tag-add-input{background:var(--bg4);border:1px solid var(--border2);color:var(--text);padding:2px 7px;border-radius:20px;font-size:11px;width:90px;font-family:inherit}
.tag-add-input:focus{outline:none;border-color:var(--accent)}
#toast-wrap{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;gap:6px;align-items:center;pointer-events:none}
.toast{background:var(--bg2);border:1px solid var(--border2);color:var(--text);padding:8px 18px;border-radius:20px;font-size:12px;box-shadow:0 4px 16px rgba(0,0,0,.5);animation:toastin .2s ease;pointer-events:none}
.toast.ok{border-color:rgba(61,187,61,.4);color:var(--green)}
.toast.err{border-color:rgba(232,64,64,.4);color:var(--red)}
#db-dot{width:7px;height:7px;border-radius:50%;display:none;margin-left:4px;vertical-align:middle;flex-shrink:0;transition:background .3s}
#db-dot.err{display:inline-block;background:var(--red);cursor:pointer;box-shadow:0 0 4px var(--red)}
@keyframes toastin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes card-confirm-out{0%{opacity:1;transform:translateY(0)}20%{background:rgba(61,187,61,.18)}100%{opacity:0;transform:translateY(-8px)}}
.rev-card.confirming{animation:card-confirm-out .28s ease-out forwards;pointer-events:none}
@keyframes row-flash-in{0%{background:rgba(61,187,61,.28);outline:2px solid rgba(61,187,61,.5)}80%{background:rgba(61,187,61,.06)}100%{background:transparent;outline:none}}
.tape-row.just-added{animation:row-flash-in 1.5s ease-out}

/* ── NO-CAM permission UI ───────────────────────────────────────── */
#btn-enable-cam{background:var(--accent);color:#fff;border:none;padding:10px 22px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:700;margin-top:4px}
#btn-enable-cam:hover{background:var(--accent2)}

/* ── CROP PRESETS ────────────────────────────────────────────────── */
#crop-presets{display:flex;gap:10px;align-items:center;margin-left:4px}
.preset-btn{background:var(--bg4);border:1px solid var(--border2);color:var(--text2);border-radius:5px;padding:12px 12px;cursor:pointer;font-size:14px;line-height:1;white-space:nowrap}
.preset-btn:hover{border-color:var(--accent);color:var(--accent)}
.preset-btn.active{border-color:var(--accent);color:var(--accent);background:rgba(90,80,255,.12)}
/* Multispine divider lines (5 slices = 4 dividers) */
#crop[data-preset="multispine"]::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(to right,transparent 20%,rgba(255,120,0,.7) 20%,rgba(255,120,0,.7) calc(20% + 1.5px),transparent calc(20% + 1.5px),transparent 40%,rgba(255,120,0,.7) 40%,rgba(255,120,0,.7) calc(40% + 1.5px),transparent calc(40% + 1.5px),transparent 60%,rgba(255,120,0,.7) 60%,rgba(255,120,0,.7) calc(60% + 1.5px),transparent calc(60% + 1.5px),transparent 80%,rgba(255,120,0,.7) 80%,rgba(255,120,0,.7) calc(80% + 1.5px),transparent calc(80% + 1.5px));}

/* ── QUEUE STATUS ────────────────────────────────────────────────── */
#queue-status{position:absolute;bottom:0;left:0;right:0;z-index:20;padding:5px 12px;font-size:11px;display:flex;align-items:center;gap:8px;background:rgba(17,17,17,.88);border-top:1px solid var(--border);backdrop-filter:blur(4px)}
.qs-badge{padding:2px 7px;border-radius:10px;font-weight:700;font-size:10px}
.qs-pending{background:rgba(240,192,64,.15);color:var(--yellow);border:1px solid rgba(240,192,64,.3)}
.qs-proc{background:rgba(153,102,255,.15);color:var(--purple);border:1px solid rgba(153,102,255,.3)}
.qs-failed{background:rgba(232,64,64,.15);color:var(--red);border:1px solid rgba(232,64,64,.3)}

/* ── CRT SCANLINES ──────────────────────────────────────────────── */
#crt-overlay{display:none;position:fixed;inset:0;pointer-events:none;z-index:9998;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.13) 2px,rgba(0,0,0,.13) 3px),radial-gradient(ellipse at center,transparent 50%,rgba(0,0,0,.42) 100%)}
body.crt-on #crt-overlay{display:block}
.hbtn.active{border-color:var(--accent);color:var(--accent);background:rgba(232,64,64,.08)}
.hbr-section-last{border-bottom:none;padding-bottom:0;margin-bottom:0}

/* ── TV STATIC CANVAS ───────────────────────────────────────────── */
#static-canvas{display:none;position:fixed;inset:0;z-index:10000;pointer-events:none}

/* ── FBI WARNING ─────────────────────────────────────────────────── */
#fbi-overlay{display:none;position:fixed;inset:0;z-index:10001;background:#00003a;color:#fff;font-family:'Courier New',monospace;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px;cursor:pointer;overflow:hidden}
#fbi-overlay.active{display:flex}
#fbi-overlay.youtube-mode #fbi-inner{display:none}
#fbi-overlay.youtube-mode #fbi-youtube-wrap{display:flex}
#fbi-scanlines{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(0,0,0,.18) 3px,rgba(0,0,0,.18) 4px),radial-gradient(ellipse at center,transparent 40%,rgba(0,0,0,.65) 100%);z-index:1}
#fbi-inner{max-width:500px;width:90%;position:relative;z-index:2}
#fbi-badge{display:flex;justify-content:center;margin-bottom:12px}
#fbi-badge-ring{width:64px;height:64px;border-radius:50%;border:3px solid #ffdd80;box-shadow:0 0 0 2px rgba(255,221,128,.3),inset 0 0 0 2px rgba(255,221,128,.15),0 0 20px rgba(255,221,128,.2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:rgba(0,0,58,.7)}
#fbi-badge-star{font-size:22px;color:#ffdd80;line-height:1;text-shadow:0 0 8px rgba(255,221,128,.7)}
#fbi-badge-text{font-size:4.5px;color:#ffdd80;letter-spacing:.12em;text-transform:uppercase;font-weight:700;line-height:1.3;text-align:center;max-width:52px}
#fbi-warn{font-size:26px;font-weight:900;letter-spacing:.2em;color:#ffdd80;margin:0 0 10px;text-shadow:0 0 12px rgba(255,221,128,.5);white-space:nowrap}
#fbi-warn strong{font-size:1.1em;letter-spacing:.05em;margin-right:4px}
.fbi-rule{border-top:1px solid rgba(255,221,128,.5);margin:10px 0}
.fbi-body{font-size:10.5px;line-height:1.75;text-transform:uppercase;letter-spacing:.04em;color:rgba(255,255,255,.88)}
#fbi-cite{font-size:9px;color:rgba(255,221,128,.7);margin-top:12px;text-transform:uppercase;letter-spacing:.12em}
#fbi-tape-label{font-size:14px;color:#ffdd80;margin-top:16px;font-style:italic;opacity:.85;text-shadow:0 0 6px rgba(255,221,128,.4)}
#fbi-loading{margin-top:10px;font-size:10px;color:rgba(255,221,128,.5);letter-spacing:.1em;animation:fbi-blink 1.2s ease-in-out infinite}
@keyframes fbi-blink{0%,100%{opacity:.5}50%{opacity:1}}
#fbi-youtube-wrap{display:none;position:absolute;inset:0;z-index:3;background:#000;align-items:center;justify-content:center}
#fbi-youtube-wrap iframe{width:100%;height:100%;border:none;max-width:900px;max-height:506px;margin:auto}
#fbi-youtube-close{position:absolute;top:12px;right:12px;z-index:10;background:rgba(0,0,0,.75);color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:50%;width:38px;height:38px;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;transition:background .15s}
#fbi-youtube-close:hover{background:rgba(200,0,0,.8)}
#fill-review-status{padding:7px 14px;font-size:12px;color:var(--text2);background:rgba(240,192,64,.08);border-bottom:1px solid rgba(240,192,64,.2);gap:8px;align-items:center;flex-shrink:0}
/* Fixed capture-zone size per role, matching the real display aspect ratio
   (2:3 portrait for cover/face art, ~4.27:1 landscape for the spine strip)
   so the pan/zoom preview here matches what Wall view actually shows —
   previously this had no size at all and was sized by the source image's
   own intrinsic dimensions instead. */
#crop-frame{transition:cursor .1s;width:200px;height:300px}
#crop-frame.crop-frame-spine{width:260px;height:61px}
#crop-frame:active{cursor:grabbing}

/* ── MATRIX GLITCH ───────────────────────────────────────────────── */
#m-detail.matrix-mode{background:rgba(0,0,0,.97)}
#m-detail.matrix-mode .modal{border:1px solid #00ff44;box-shadow:0 0 24px rgba(0,255,68,.25)}
#m-detail.matrix-mode h2{color:#00ff44}
#m-detail.matrix-mode input,#m-detail.matrix-mode select{color:#00ff44!important;border-color:#00ff44!important;background:#001400!important;font-family:'Courier New',monospace!important}

/* ── VHS STICKER TOAST ───────────────────────────────────────────── */
.toast.vhs-sticker{background:#f0c030;color:#1a0f00;font-weight:700;font-size:14px;border:2px dashed #b08000;transform:rotate(-1.5deg);font-family:'Courier New',monospace;box-shadow:2px 3px 10px rgba(0,0,0,.5)}

/* ── GHOSTBUSTERS SLIME FLASH ────────────────────────────────────── */
@keyframes gb-flash-anim{0%{box-shadow:0 0 0 0 rgba(0,200,60,.0)}40%{box-shadow:0 0 12px 4px rgba(0,220,60,.55),inset 0 0 8px rgba(0,220,60,.25)}100%{box-shadow:0 0 0 0 rgba(0,200,60,.0)}}
.gb-flash{animation:gb-flash-anim .6s ease-out;border-color:rgba(0,220,60,.6)!important}

/* ── MODAL TABS (detail form) ────────────────────────────────────── */
.modal-tabs{display:flex;gap:4px;margin-bottom:10px;border-bottom:1px solid var(--border2);padding-bottom:6px}
.modal-tab{background:none;border:1px solid transparent;color:var(--text3);padding:5px 14px;border-radius:5px 5px 0 0;cursor:pointer;font-size:13px;font-weight:600;transition:color .15s,border-color .15s}
.modal-tab:hover{color:var(--text)}
.modal-tab.active{color:var(--text);border-color:var(--border2) var(--border2) var(--bg3);background:var(--bg3);margin-bottom:-7px}
.modal-tab-pane{display:none}
.modal-tab-pane.active{display:block}

/* ── HAMBURGER (always visible) ─────────────────────────────────── */
#hdr-right-desktop{display:none!important}
.hdr-right-mob{display:flex;align-items:center;gap:8px;margin-left:auto}
#btn-menu{background:var(--bg4);border:1px solid var(--border2);color:var(--text);border-radius:6px;padding:10px 14px;cursor:pointer;font-size:20px;line-height:1}
#db-dot-mob{width:7px;height:7px;border-radius:50%;display:none;margin-left:4px;vertical-align:middle;flex-shrink:0;transition:background .3s}
#db-dot-mob.err{display:inline-block;background:var(--red);cursor:pointer;box-shadow:0 0 4px var(--red)}
/* Camera flip lives in cam-ctrl now */
#btn-cam-flip{background:var(--bg4);border:1px solid var(--border2);color:var(--text);border-radius:8px;padding:14px 16px;cursor:pointer;font-size:18px;line-height:1;font-weight:700}
#hbr-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:199}
#hbr-drawer{display:none;position:fixed;top:0;right:0;bottom:0;width:240px;background:var(--bg2);border-left:1px solid var(--border);z-index:200;flex-direction:column;padding:16px 12px;gap:6px;overflow-y:auto}
#hbr-drawer.open,#hbr-backdrop.open{display:flex}
.hbr-section{display:flex;flex-direction:column;gap:6px;padding-bottom:10px;border-bottom:1px solid var(--border);margin-bottom:4px}
.hbr-label{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;padding:2px 0}
#hbr-drawer .hbtn{width:100%;text-align:left;padding:8px 10px;font-size:13px}
#hbr-drawer .exp-dd{position:static;margin-top:2px;display:none;flex-direction:column}
#hbr-drawer .exp-dd.open{display:flex}
#hbr-drawer .exp-dd button{width:100%;text-align:left;padding:7px 12px;font-size:12px}

/* ── SEARCH / FILTER BAR ─────────────────────────────────────────── */
#inv-ctrl-bar{display:flex;align-items:center;gap:6px;padding:6px 12px;border-bottom:1px solid var(--border);background:var(--bg2)}
#inv-ctrl-bar input{flex:1;background:var(--bg3);border:1px solid var(--border2);color:var(--text);padding:6px 10px;border-radius:6px;font-size:13px;min-width:0}
#btn-filter-tray{flex-shrink:0;font-size:11px;padding:6px 10px;display:none}
#inv-ctrl.tray-hidden{display:none}

/* ── TAB NAV (in header) ─────────────────────────────────────────── */
#tab-nav{flex:1;display:flex;align-self:stretch;background:none;border:none;justify-content:center;min-width:0}
.tab-btn{flex:0 1 90px;height:100%;background:none;border:none;border-bottom:2px solid transparent;color:var(--text3);cursor:pointer;font-size:11px;font-weight:700;letter-spacing:.04em;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px 6px;transition:color .15s;white-space:nowrap}
#tab-collect{flex-direction:row;gap:4px}
#tab-collect .tab-lbl{font-size:13px;font-weight:700;letter-spacing:0;line-height:1}
.tab-ico-wrap{position:relative;display:inline-block;line-height:1}
.tab-btn .tab-ico{font-size:18px;line-height:1;display:block}
.tab-btn:hover{color:var(--text)}
.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}
.tab-badge{position:absolute;top:-4px;right:-10px;background:var(--red);color:#fff;border-radius:8px;font-size:8px;padding:1px 4px;min-width:13px;text-align:center;line-height:13px;pointer-events:none;font-weight:700}
.tab-lbl{font-size:10px;font-weight:700;letter-spacing:.04em}
/* ── COLLECT SUBHEADER ───────────────────────────────────────────── */
#collect-subhdr{background:var(--bg2);border-bottom:1px solid var(--border);padding:6px 10px;display:flex;flex-direction:column;gap:5px;flex-shrink:0;position:sticky;top:0;z-index:15}
.csh-row1{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.csh-row2{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.csh-row1 #search{flex:1;min-width:100px;background:var(--bg4);border:1px solid var(--border2);color:var(--text);padding:6px 9px;border-radius:6px;font-size:13px;font-family:inherit}
.csh-row1 #search:focus{outline:none;border-color:var(--accent)}
.csh-row1 #btn-search{background:var(--bg4);border:1px solid var(--border2);color:var(--text2);padding:6px 10px;border-radius:6px;cursor:pointer;font-size:13px}
.csh-row1 #btn-search:hover{border-color:var(--accent);color:var(--text)}
.csh-row1 #sort-sel{background:var(--bg4);border:1px solid var(--border2);color:var(--text);padding:6px 8px;border-radius:6px;font-size:12px;font-family:inherit;flex-shrink:0}
#auth-slot-toolbar{display:flex;align-items:center}
/* Consistent-width view toggle + AI buttons */
.hbtn-view{min-width:68px;justify-content:center}
/* Fill AI — gold accent */
.hbtn-fill{color:var(--yellow);border-color:rgba(240,192,64,.3)}
.hbtn-fill:hover{border-color:var(--yellow);background:rgba(240,192,64,.08);color:var(--yellow)}
.hbtn-fill:disabled{opacity:.4;cursor:not-allowed}
/* Check AI — purple accent */
.hbtn-check{color:var(--purple);border-color:rgba(153,102,255,.3)}
.hbtn-check:hover{border-color:var(--purple);background:rgba(153,102,255,.08);color:var(--purple)}
.hbtn-check:disabled{opacity:.4;cursor:not-allowed}

/* ── INLINE TABLES ──────────────────────────────────────────────── */
.tape-table{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}
.tape-table th{position:sticky;top:0;background:var(--bg3);border-bottom:2px solid var(--border2);padding:7px 8px;text-align:left;font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;z-index:10;overflow:hidden}
.tape-table td{border-bottom:1px solid var(--border);padding:4px 6px;vertical-align:middle}
.tape-table .editable{cursor:pointer}
.tape-table .editable:hover{background:rgba(255,255,255,.04)}
.tbl-input{background:var(--bg3);border:1px solid var(--blue);color:var(--text);padding:2px 5px;border-radius:3px;font-size:12px;font-family:inherit;width:100%;min-width:60px;box-sizing:border-box;outline:none}
.tbl-sel{background:var(--bg4);border:1px solid var(--border2);color:var(--text);padding:3px 4px;border-radius:4px;font-size:11px;font-family:inherit;width:100%}
.tbl-del{background:none;border:none;color:var(--text3);cursor:pointer;font-size:16px;padding:2px 6px;border-radius:3px;line-height:1}
.tbl-del:hover{color:var(--red);background:rgba(232,64,64,.12)}
.tbl-edit{background:none;border:none;color:var(--text3);cursor:pointer;font-size:13px;padding:2px 5px;border-radius:3px;line-height:1}
.tbl-edit:hover{color:var(--blue);background:rgba(68,136,255,.12)}
.tbl-save{background:none;border:none;color:var(--green);cursor:pointer;font-size:15px;padding:2px 5px;border-radius:3px;font-weight:700}
.tbl-save:hover{background:rgba(61,187,61,.15)}
.tbl-cancel{background:none;border:none;color:var(--text3);cursor:pointer;font-size:13px;padding:2px 5px;border-radius:3px}
.tbl-cancel:hover{color:var(--red);background:rgba(232,64,64,.1)}
/* Editing row */
.tape-row.editing{background:rgba(68,136,255,.05);outline:1px solid rgba(68,136,255,.2)}
.tape-row.editing .tbl-input{cursor:text}
/* Pending change indicator */
.tbl-td-pending{background:rgba(240,192,64,.07)!important}
.tbl-input.pending,.tbl-sel.pending{border-color:var(--yellow)!important;background:rgba(240,192,64,.08)!important}
/* Save-confirmation flash */
@keyframes row-saved{0%{background:rgba(61,187,61,.28);outline:2px solid rgba(61,187,61,.5)}80%{background:rgba(61,187,61,.06)}100%{background:transparent;outline:none}}
.tape-row.just-saved{animation:row-saved 1.4s ease-out}
/* Column resize handle */
.tape-table th{position:relative}
.col-rh{position:absolute;right:0;top:0;bottom:0;width:5px;cursor:col-resize;z-index:12;opacity:0;border-right:2px solid var(--accent);transition:opacity .15s}
.tape-table th:hover .col-rh{opacity:.5}
.col-rh:hover,.col-rh:active{opacity:1!important}
.tbl-thumb{width:calc(180px * var(--tbl-zoom));height:calc(54px * var(--tbl-zoom));object-fit:cover;border-radius:3px;display:block}
.tbl-thumb-ph{width:calc(180px * var(--tbl-zoom));height:calc(54px * var(--tbl-zoom));border-radius:3px;background:var(--bg4);display:flex;align-items:center;justify-content:center;font-size:16px}
.tag-sm{display:inline-block;background:rgba(68,136,255,.1);color:var(--blue);border:1px solid rgba(68,136,255,.2);border-radius:10px;padding:1px 6px;font-size:9px;margin:1px;white-space:nowrap}
#zoom-bar{display:flex;align-items:center;gap:6px;padding:4px 12px;border-top:1px solid var(--border);flex-shrink:0;justify-content:flex-end;background:var(--bg2);position:fixed;bottom:0;left:0;right:0;z-index:20;pointer-events:auto}
#zoom-slider{width:90px;accent-color:var(--accent);cursor:pointer}
/* Review table */
.rev-table{width:100%;border-collapse:collapse;font-size:12px;table-layout:auto}
.rev-table th{position:sticky;top:0;background:var(--bg3);border-bottom:2px solid var(--border2);padding:7px 8px;text-align:left;font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;z-index:10}
.rev-table td{border-bottom:1px solid var(--border);padding:5px 6px;vertical-align:middle}
.rev-table .c-f{background:var(--bg4);border:1px solid var(--border2);color:var(--text);padding:4px 6px;border-radius:4px;font-size:12px;font-family:inherit;width:100%;min-width:50px;box-sizing:border-box}
.rev-table .c-f:focus{outline:none;border-color:var(--accent)}
.rev-table select.c-f{padding:3px 4px}
.rev-thumb-wrap{width:162px;height:54px;position:relative;overflow:hidden;border-radius:3px;flex-shrink:0;background:var(--bg4)}
.rev-thumb{width:54px;height:162px;object-fit:cover;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-90deg)}
/* Processing state — fields locked except title */
.rev-card.card-processing{opacity:.8}
.rev-card.card-processing .c-f.locked{pointer-events:none;opacity:.35;background:transparent;border-color:transparent}
.rev-card.card-processing select.locked{pointer-events:none;opacity:.35}
/* Queued state — dimmer, waiting for server slot */
.rev-card.card-queued{opacity:.5}
.rev-card.card-queued .c-f.locked{pointer-events:none;opacity:.25;background:transparent;border-color:transparent}
.rev-card.card-queued select.locked{pointer-events:none;opacity:.25}
/* Failed state — red left border, error reason visible */
.rev-card.card-failed{box-shadow:inset 3px 0 0 var(--red)}
.fail-reason{font-size:10px;color:var(--red);margin-top:3px}
.btn-retry{background:var(--bg4);border:1px solid var(--border2);color:var(--text2);padding:4px 8px;border-radius:5px;cursor:pointer;font-size:11px}
.btn-retry:hover{border-color:var(--accent);color:var(--text)}

/* Button text hidden on mobile (icon-only) */
.btn-txt{}

/* ── RESPONSIVE ─────────────────────────────────────────────────── */
@media (max-width:700px){
  body{overflow:auto;height:auto;min-height:100dvh}
  #header{width:auto;height:auto;flex-wrap:nowrap;padding:8px 10px;gap:4px}
  #header h1{font-size:16px;white-space:nowrap}
  .tab-lbl{display:none}
  #tab-collect .tab-lbl{display:inline;font-size:12px;font-weight:700;color:var(--text2);line-height:1}
  .tab-btn{flex:0 1 44px;padding:4px 2px}
  .tab-btn .tab-ico{font-size:20px}
  #tab-collect{flex:0 1 56px}
  #btn-filter-tray{display:flex}
  #inv-ctrl{display:none}
  #inv-ctrl.tray-open{display:block;position:fixed;bottom:0;left:0;right:0;z-index:150;background:var(--bg2);border-top:2px solid var(--accent);border-radius:16px 16px 0 0;padding:12px;max-height:60vh;overflow-y:auto;box-shadow:0 -8px 32px rgba(0,0,0,.5)}
  .key-hint{display:none}
  #thumb-wrap{display:none!important}
  .tid{display:none}
  .tinfo h3{font-size:12px}
  .modal{max-height:90dvh;overflow-y:auto;width:calc(100vw - 24px)}
  .dgrid{grid-template-columns:1fr}
  .dfield.full{grid-column:1}
  .rev-grid{grid-template-columns:1fr}
  .rev-grid .full{grid-column:1}
  /* 2-col card: on mobile, stack vertically */
  .rev-card.expanded .card-body{display:flex;flex-direction:column}
  .card-thumb{width:100%;max-height:200px}
  /* Mobile table: column paging */
  #sort-sel{display:none}
  #inv-list{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:48px}
  .tbl-thumb{width:100%;height:56px;object-fit:cover}
  .tbl-thumb-ph{width:100%;height:56px;font-size:14px}
  .btn-txt{display:none}
  /* Mobile: show only thumb (mc-2) and title (mc-3) */
  .tape-table .mc-4,.tape-table .mc-5,.tape-table .mc-6,
  .tape-table .mc-7,.tape-table .mc-8,.tape-table .mc-9,
  .tape-table .mc-10,.tape-table .mc-11,.tape-table .mc-12{display:none}
  /* Mobile checkboxes: grey unselected (browser default), red when checked */
  .tape-table .row-check{accent-color:var(--red)}
}
@media (max-width:700px) and (orientation:landscape){
  #cam-panel{height:160px}
}
/* ── LANDSCAPE SIDEBAR NAV ──────────────────────────────────────── */
@media (orientation:landscape) and (max-height:600px){
  body{flex-direction:row;height:100dvh;overflow:hidden}
  #header{width:60px;height:100dvh;flex-direction:column;justify-content:flex-start;padding:8px 0;gap:0;border-bottom:none;border-right:1px solid var(--border);flex-shrink:0;overflow:visible}
  #header h1{display:none}
  #camera-select{display:none!important}
  #tab-nav{flex:1;flex-direction:column;justify-content:flex-start;align-self:stretch;gap:0;background:none;border:none;min-width:0}
  #tab-collect{flex-direction:column;gap:2px}
  .tab-btn{flex:0 0 56px;width:100%;height:56px;border-bottom:none!important;border-right:3px solid transparent;flex-direction:column;padding:4px 2px}
  .tab-btn.active{border-right-color:var(--accent)!important;border-bottom-color:transparent!important}
  .tab-btn .tab-ico{font-size:22px}
  .tab-lbl{display:none!important}
  #tab-collect .tab-lbl{display:block!important;font-size:9px;font-weight:700;color:var(--text2);line-height:1}
  .hdr-right-mob{flex-direction:column;margin-left:0;margin-top:auto;gap:8px;padding-bottom:10px;align-items:center}
  #main{flex:1;min-width:0;overflow:hidden}
  /* Capture: move buttons from bottom to right sidebar */
  #cam-panel{flex-direction:row}
  #cam-ctrl{flex-direction:column;width:148px;flex-shrink:0;height:100%;border-top:none;border-left:1px solid var(--border);overflow-y:auto;flex-wrap:nowrap;padding:8px 6px;gap:6px;justify-content:flex-start;align-items:stretch}
  .cam-ctrl-break{display:none}
  #crop-presets{flex-direction:column;align-items:stretch}
  .preset-btn{width:100%;justify-content:center}
  #btn-cap{padding:12px 8px;font-size:14px}
  /* Modals fill screen in landscape mobile */
  .modal{width:100vw!important;max-width:100vw!important;max-height:100dvh!important;border-radius:0;overflow-y:auto}
  .backdrop{align-items:flex-start}
  /* FBI overlay landscape fix */
  #fbi-inner{max-width:100%;width:95%}
  #fbi-warn{font-size:20px}
  .fbi-body{font-size:9px;line-height:1.5}
  /* Fullscreen button visible in landscape */
  #btn-fullscreen{display:flex}
}
@media (max-width:499px){
  /* Still 2 tiles — just tighter padding */
  .wall-card{width:calc(50% - 6px);padding:4px}
  .wall-meta,.wall-val{display:none}
}

/* ── COVER WRAP — image-only container for genre effects ────────── */
/* overflow:hidden clips pseudo-elements to the image area only      */
.cover-wrap{position:relative;overflow:hidden;flex-shrink:0;width:100%}
.wall-card>.cover-wrap{border-radius:5px}
/* su-card needs cover-wrap to flex-fill the card height */
.su-card>.cover-wrap{flex:1;min-height:0;display:flex;flex-direction:column;overflow:visible}
.su-card .su-img,.su-card .su-ph{flex:1}
.su-card .su-img-spine{flex:none}

/* ── GENRE EASTER EGGS ───────────────────────────────────────────── */
/* All ::after emojis are on .cover-wrap — clipped to the image area  */
/* filter/box-shadow hover effects are also scoped to .cover-wrap     */
/* Card-level animations (shake, bounce) stay on the card element     */

/* HORROR — red inset glow on cover + zombie hand rising from bottom */
[data-genres~="horror"]:hover .cover-wrap, [data-genres~="horror"].egg-active .cover-wrap{box-shadow:inset 0 0 0 2px rgba(180,0,0,.6),inset 0 0 28px rgba(180,0,0,.25)}
[data-genres~="horror"] .cover-wrap::after{content:'🧟';position:absolute;bottom:-28px;left:50%;transform:translateX(-50%);font-size:22px;line-height:1;transition:bottom .35s ease;pointer-events:none;z-index:3}
[data-genres~="horror"]:hover .cover-wrap::after, [data-genres~="horror"].egg-active .cover-wrap::after{bottom:3px}

/* THRILLER — darken cover + knife drops from top */
[data-genres~="thriller"]:hover .cover-wrap, [data-genres~="thriller"].egg-active .cover-wrap{filter:contrast(1.1) brightness(.82)}
[data-genres~="thriller"] .cover-wrap::after{content:'🔪';position:absolute;top:-24px;right:7px;font-size:16px;transition:top .35s ease;pointer-events:none;z-index:3;opacity:.85;transform:rotate(20deg)}
[data-genres~="thriller"]:hover .cover-wrap::after, [data-genres~="thriller"].egg-active .cover-wrap::after{top:5px}

/* SCI-FI — cyan border on cover + alien slides in from right */
[data-genres~="scifi"]:hover .cover-wrap, [data-genres~="scifi"].egg-active .cover-wrap{box-shadow:inset 0 0 0 2px rgba(0,200,255,.55)}
[data-genres~="scifi"] .cover-wrap::after{content:'👾';position:absolute;top:50%;right:-26px;transform:translateY(-50%);font-size:18px;transition:right .3s ease;pointer-events:none;z-index:3}
[data-genres~="scifi"]:hover .cover-wrap::after, [data-genres~="scifi"].egg-active .cover-wrap::after{right:5px}
@keyframes scifi-glitch{0%,90%{transform:none}92%{transform:translateX(-3px) skewX(-2deg)}95%{transform:translateX(3px) skewX(2deg)}100%{transform:none}}
[data-genres~="scifi"]:hover, [data-genres~="scifi"].egg-active{animation:scifi-glitch .35s ease}

/* FANTASY — gold shimmer on cover + fairy floats in from right */
@keyframes fantasy-pulse{0%,100%{box-shadow:0 0 6px rgba(255,215,0,.3),inset 0 0 0 1px rgba(255,215,0,.15)}50%{box-shadow:0 0 16px rgba(255,215,0,.55),inset 0 0 0 1px rgba(255,215,0,.4)}}
[data-genres~="fantasy"] .cover-wrap{animation:fantasy-pulse 2.8s ease-in-out infinite}
[data-genres~="fantasy"] .cover-wrap::after{content:'🧚';position:absolute;top:50%;right:-26px;transform:translateY(-50%);font-size:18px;transition:right .4s ease;pointer-events:none;z-index:3}
[data-genres~="fantasy"]:hover .cover-wrap::after, [data-genres~="fantasy"].egg-active .cover-wrap::after{right:5px}

/* ACTION — card shake + explosion appears on cover */
@keyframes action-shake{0%,100%{transform:none}20%{transform:rotate(-2.5deg) translateX(-3px)}45%{transform:rotate(2deg) translateX(2px)}70%{transform:rotate(-1deg) translateX(-1px)}85%{transform:rotate(.5deg)}}
[data-genres~="action"]:hover, [data-genres~="action"].egg-active{animation:action-shake .4s ease}
[data-genres~="action"] .cover-wrap::after{content:'💥';position:absolute;top:4px;right:4px;font-size:18px;opacity:0;transition:opacity .15s ease;pointer-events:none;z-index:3}
[data-genres~="action"]:hover .cover-wrap::after, [data-genres~="action"].egg-active .cover-wrap::after{opacity:1}

/* COMEDY — card bounce + laugh emoji rises into cover from top */
@keyframes comedy-bounce{0%,100%{transform:translateY(0)}25%{transform:translateY(-7px)}55%{transform:translateY(-2px)}75%{transform:translateY(-4px)}}
[data-genres~="comedy"]:hover, [data-genres~="comedy"].egg-active{animation:comedy-bounce .5s ease}
[data-genres~="comedy"] .cover-wrap::after{content:'😂';position:absolute;top:-26px;left:50%;transform:translateX(-50%);font-size:18px;transition:top .3s ease;pointer-events:none;z-index:3}
[data-genres~="comedy"]:hover .cover-wrap::after, [data-genres~="comedy"].egg-active .cover-wrap::after{top:4px}

/* ROMANCE — pink glow on cover + heart rises from bottom */
@keyframes heart-float{0%,100%{transform:translateX(-50%) scale(1)}50%{transform:translateX(-50%) scale(1.25)}}
[data-genres~="romance"]:hover .cover-wrap, [data-genres~="romance"].egg-active .cover-wrap{box-shadow:inset 0 0 0 2px rgba(255,100,150,.5),inset 0 0 20px rgba(255,100,150,.12)}
[data-genres~="romance"] .cover-wrap::after{content:'❤️';position:absolute;bottom:-26px;left:50%;transform:translateX(-50%);font-size:18px;transition:bottom .3s ease;pointer-events:none;z-index:3}
[data-genres~="romance"]:hover .cover-wrap::after, [data-genres~="romance"].egg-active .cover-wrap::after{bottom:4px;animation:heart-float .7s ease-in-out infinite}

/* ANIMATION — rainbow glow on cover cycles + palette drops from top */
@keyframes rainbow{0%{box-shadow:0 0 0 2px rgba(255,80,80,.5)}16%{box-shadow:0 0 0 2px rgba(255,180,0,.5)}33%{box-shadow:0 0 0 2px rgba(255,230,0,.5)}50%{box-shadow:0 0 0 2px rgba(60,200,60,.5)}66%{box-shadow:0 0 0 2px rgba(60,120,255,.5)}83%{box-shadow:0 0 0 2px rgba(180,60,255,.5)}100%{box-shadow:0 0 0 2px rgba(255,80,80,.5)}}
[data-genres~="animation"] .cover-wrap{animation:rainbow 2.8s linear infinite}
[data-genres~="animation"] .cover-wrap::after{content:'🎨';position:absolute;top:-24px;right:5px;font-size:16px;transition:top .3s ease;pointer-events:none;z-index:3}
[data-genres~="animation"]:hover .cover-wrap::after, [data-genres~="animation"].egg-active .cover-wrap::after{top:4px}

/* WESTERN — sepia filter on cover + cowboy hat drops */
[data-genres~="western"]:hover .cover-wrap, [data-genres~="western"].egg-active .cover-wrap{filter:sepia(.75) contrast(1.1) brightness(.95)}
[data-genres~="western"] .cover-wrap::after{content:'🤠';position:absolute;top:-24px;left:50%;transform:translateX(-50%);font-size:18px;transition:top .3s ease;pointer-events:none;z-index:3}
[data-genres~="western"]:hover .cover-wrap::after, [data-genres~="western"].egg-active .cover-wrap::after{top:4px}

/* DOCUMENTARY — desaturate cover + film clapper drops */
[data-genres~="documentary"]:hover .cover-wrap, [data-genres~="documentary"].egg-active .cover-wrap{filter:saturate(.4) contrast(1.15)}
[data-genres~="documentary"] .cover-wrap::after{content:'🎬';position:absolute;top:-24px;left:6px;font-size:16px;transition:top .3s ease;pointer-events:none;z-index:3}
[data-genres~="documentary"]:hover .cover-wrap::after, [data-genres~="documentary"].egg-active .cover-wrap::after{top:4px}

/* MUSICAL / MUSIC — note floats in from right edge */
[data-genres~="musical"] .cover-wrap::after,[data-genres~="music"] .cover-wrap::after{content:'🎵';position:absolute;top:50%;right:-24px;transform:translateY(-50%);font-size:16px;transition:right .3s ease;pointer-events:none;z-index:3}
[data-genres~="musical"]:hover .cover-wrap::after,[data-genres~="music"]:hover .cover-wrap::after, [data-genres~="musical"].egg-active .cover-wrap::after,[data-genres~="music"].egg-active .cover-wrap::after{right:5px}

/* ADVENTURE — warm gold ambient glow on cover + map drops */
@keyframes adventure-glow{0%,100%{box-shadow:0 0 6px rgba(255,200,0,.2)}50%{box-shadow:0 0 14px rgba(255,200,0,.5)}}
[data-genres~="adventure"] .cover-wrap{animation:adventure-glow 2.5s ease-in-out infinite}
[data-genres~="adventure"] .cover-wrap::after{content:'🗺️';position:absolute;top:-24px;left:6px;font-size:16px;transition:top .3s ease;pointer-events:none;z-index:3}
[data-genres~="adventure"]:hover .cover-wrap::after, [data-genres~="adventure"].egg-active .cover-wrap::after{top:4px}

/* WAR — desaturate cover + medal drops */
[data-genres~="war"]:hover .cover-wrap, [data-genres~="war"].egg-active .cover-wrap{filter:grayscale(.65) contrast(1.1)}
[data-genres~="war"] .cover-wrap::after{content:'🎖️';position:absolute;top:-24px;right:6px;font-size:16px;transition:top .3s ease;pointer-events:none;z-index:3}
[data-genres~="war"]:hover .cover-wrap::after, [data-genres~="war"].egg-active .cover-wrap::after{top:4px}

/* CRIME — dark inset on cover + gun drops */
[data-genres~="crime"]:hover .cover-wrap, [data-genres~="crime"].egg-active .cover-wrap{box-shadow:inset 0 0 24px rgba(0,0,0,.75)}
[data-genres~="crime"] .cover-wrap::after{content:'🔫';position:absolute;top:-24px;right:6px;font-size:16px;transition:top .3s ease;pointer-events:none;z-index:3;transform:rotate(-20deg)}
[data-genres~="crime"]:hover .cover-wrap::after, [data-genres~="crime"].egg-active .cover-wrap::after{top:4px}

/* DRAMA — brighten cover + masks rise from bottom */
[data-genres~="drama"]:hover .cover-wrap, [data-genres~="drama"].egg-active .cover-wrap{filter:brightness(1.12) saturate(1.2)}
[data-genres~="drama"] .cover-wrap::after{content:'🎭';position:absolute;bottom:-24px;left:50%;transform:translateX(-50%);font-size:16px;transition:bottom .3s ease;pointer-events:none;z-index:3}
[data-genres~="drama"]:hover .cover-wrap::after, [data-genres~="drama"].egg-active .cover-wrap::after{bottom:4px}

/* MYSTERY — darken cover + magnifying glass slides up */
[data-genres~="mystery"]:hover .cover-wrap, [data-genres~="mystery"].egg-active .cover-wrap{filter:brightness(.75) contrast(1.2)}
[data-genres~="mystery"] .cover-wrap::after{content:'🔍';position:absolute;bottom:-24px;right:6px;font-size:16px;transition:bottom .3s ease;pointer-events:none;z-index:3}
[data-genres~="mystery"]:hover .cover-wrap::after, [data-genres~="mystery"].egg-active .cover-wrap::after{bottom:4px}

/* SPORT — card bounce + ball pops into cover */
@keyframes sport-bounce{0%,100%{transform:translateY(0)}30%{transform:translateY(-5px)}60%{transform:translateY(-2px)}}
[data-genres~="sport"]:hover, [data-genres~="sport"].egg-active{animation:sport-bounce .4s ease}
[data-genres~="sport"] .cover-wrap::after{content:'⚽';position:absolute;top:-24px;right:6px;font-size:16px;transition:top .3s ease;pointer-events:none;z-index:3}
[data-genres~="sport"]:hover .cover-wrap::after, [data-genres~="sport"].egg-active .cover-wrap::after{top:4px}

/* HISTORY — sepia cover + scroll drops */
[data-genres~="history"]:hover .cover-wrap, [data-genres~="history"].egg-active .cover-wrap{filter:sepia(.5) brightness(.9)}
[data-genres~="history"] .cover-wrap::after{content:'📜';position:absolute;top:-24px;left:6px;font-size:16px;transition:top .3s ease;pointer-events:none;z-index:3}
[data-genres~="history"]:hover .cover-wrap::after, [data-genres~="history"].egg-active .cover-wrap::after{top:4px}

/* BIOGRAPHY — gold brightening on cover + trophy drops */
[data-genres~="biography"]:hover .cover-wrap, [data-genres~="biography"].egg-active .cover-wrap{filter:brightness(1.08) saturate(.85)}
[data-genres~="biography"] .cover-wrap::after{content:'🏆';position:absolute;top:-24px;right:6px;font-size:15px;transition:top .3s ease;pointer-events:none;z-index:3}
[data-genres~="biography"]:hover .cover-wrap::after, [data-genres~="biography"].egg-active .cover-wrap::after{top:4px}

/* ── AUTH ────────────────────────────────────────────────────────────── */
#auth-slot{display:flex;align-items:center}

.auth-chip{display:flex;align-items:center;gap:6px}
.auth-avatar{width:26px;height:26px;border-radius:50%;object-fit:cover;border:1px solid var(--border2);flex-shrink:0}
.auth-name{font-size:12px;color:var(--text2);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.auth-share-btn{color:var(--blue);border-color:rgba(68,136,255,.3)}
.auth-share-btn:hover{border-color:var(--blue);background:rgba(68,136,255,.08)}
.auth-out-btn{font-size:14px;padding:10px 10px}
.auth-signin-btn{color:var(--blue);border-color:rgba(68,136,255,.3);text-decoration:none}
.auth-signin-btn:hover{border-color:var(--blue);background:rgba(68,136,255,.08);color:var(--text)}

/* share panel */
.share-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;user-select:none}
.share-toggle-label{font-size:13px;color:var(--text)}
.share-toggle-track{width:40px;height:22px;border-radius:11px;background:var(--bg4);border:1px solid var(--border2);position:relative;flex-shrink:0;transition:background .2s,border-color .2s;outline:none}
.share-toggle-track.on{background:var(--green);border-color:var(--green)}
.share-toggle-track.saving{opacity:.6}
.share-toggle-track:focus-visible{box-shadow:0 0 0 2px var(--blue)}
.share-toggle-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .2s;pointer-events:none}
.share-toggle-track.on .share-toggle-thumb{left:20px}
.share-link-block{display:flex;gap:8px;align-items:center}
.share-link-input{flex:1;background:var(--bg4);border:1px solid var(--border2);color:var(--text2);padding:8px 10px;border-radius:6px;font-size:12px;font-family:monospace;min-width:0;cursor:text}
.share-link-input:focus{outline:none;border-color:var(--blue)}

/* mobile auth section */
#auth-slot-mob{display:flex;flex-direction:column;gap:6px;padding:8px 0}
#auth-slot-mob .auth-chip{flex-direction:column;align-items:flex-start;gap:4px;padding:0 2px}
#auth-slot-mob .auth-name{max-width:none;font-size:13px}
#auth-slot-mob .auth-avatar{width:32px;height:32px}
#auth-slot-mob .hbtn{width:100%;text-align:left}
#auth-slot-mob .auth-signin-btn{width:100%;text-align:center;display:flex;justify-content:center}
