:root{--bg:#fff;--surface:#faf9f7;--surface-2:#f4f3f0;--border:#e4e2dd;--border-subtle:#eeece7;--text:#1a1917;--text-muted:#6f6c66;--text-faint:#8a8781;--accent:#1d5c46;--accent-hover:#164a38;--accent-tint:#eaf1ec;--warn-tint:#fdf3e3;--warn-text:#8a5a12;--danger:#a83a32;--danger-tint:#f9ebe9;--muted:var(--text-muted);--oak:#d7c09b;--oak-edge:#b7a077;--shadow-card:0 1px 2px #1a19170f, 0 8px 20px -12px #1a191747;--shadow-hover:0 2px 4px #1a191712, 0 18px 34px -16px #1a191766;--display:"Newsreader", "Iowan Old Style", Georgia, serif;--ui:"DM Sans", "Segoe UI", system-ui, -apple-system, sans-serif;font-family:var(--ui);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:16px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);min-height:100%;overflow-x:clip}h1,h2,h3,.appbar-brand{font-family:var(--display);letter-spacing:-.01em;color:var(--text);font-weight:500}a{color:var(--accent);text-decoration:none}a:hover{text-underline-offset:2px;text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:10px;padding:.5rem .95rem;font-size:.9rem;transition:background .17s,border-color .17s,color .17s,transform .17s,box-shadow .17s}button:hover{background:var(--surface);border-color:var(--text-faint)}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}button.danger{color:var(--danger);background:0 0;border-color:#a83a3266}button.danger:hover{background:var(--danger-tint);border-color:var(--danger)}button.ghost{color:var(--text-muted);background:0 0;border-color:#0000}button.ghost:hover{background:var(--surface-2);color:var(--text);border-color:#0000}input,textarea,select{letter-spacing:normal;text-transform:none;background:var(--bg);width:100%;color:var(--text);border:1px solid var(--border);border-radius:12px;outline:none;padding:.58rem .85rem;font-family:inherit;font-size:.9375rem;font-weight:400;line-height:1.4;transition:border-color .17s,box-shadow .17s}input::placeholder,textarea::placeholder{color:var(--text-faint)}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #1d5c4614}label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin-top:1rem;margin-bottom:.5rem;font-size:.75rem;font-weight:600;display:block}.app{flex-direction:column;min-height:100vh;display:flex}.container{width:100%;max-width:1400px;margin:0 auto;padding:2.25rem 40px 4rem}.appbar{z-index:50;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border-subtle);background:#ffffffdb;position:sticky;top:0}.appbar-inner{align-items:center;gap:1.25rem;max-width:1400px;height:68px;margin:0 auto;padding:0 40px;display:flex}.appbar-brand{color:var(--text);align-items:baseline;gap:.45rem;font-size:1.2rem;display:inline-flex}.appbar-brand:hover{color:var(--text);text-decoration:none}.appbar-logo{font-size:1.05rem;line-height:1}.appbar-nav{gap:.25rem;display:flex}.appbar-nav a{color:var(--text-muted);border-radius:8px;align-items:center;padding:7px 14px;font-size:.92rem;font-weight:500;transition:background .17s,color .17s;display:inline-flex}.appbar-nav a:hover{color:var(--text);background:#f7f6f4;text-decoration:none}.appbar-nav a.active{color:var(--text);background:var(--surface-2)}.appbar-spacer{flex:auto}.appbar-add{white-space:nowrap;height:38px;padding:0 1.05rem}.head-actions{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.head-actions button{height:40px;padding:0 1.05rem}.view-toggle{background:var(--surface-2);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.view-toggle button{color:var(--text-muted);background:0 0;border:none;border-radius:8px;padding:.38rem .95rem;font-size:.875rem;transition:background .17s,color .17s,box-shadow .17s}.view-toggle button:hover{color:var(--text)}.view-toggle button.active{color:var(--text);background:#fff;font-weight:600;box-shadow:0 1px 2px #1a19171a}.room-toggle{background:var(--bg);border:1px solid var(--border);color:var(--text-muted);border-radius:10px;align-items:center;gap:.4rem;padding:.36rem .85rem;font-size:.85rem;display:inline-flex}.room-toggle:hover{color:var(--text);border-color:var(--accent)}.room-toggle.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.room-glyph{font-size:.92rem;line-height:1}.icon-link{border:1px solid var(--border);color:var(--text);background:0 0;border-radius:10px;align-items:center;gap:.4rem;padding:.45rem .75rem;font-size:.9rem;display:inline-flex}.icon-link:hover{border-color:var(--accent);background:var(--surface)}.icon-link-emoji{font-size:1rem;line-height:1}.icon-link-caret{color:var(--text-muted);font-size:.85rem}.account-menu{position:relative}.account-trigger{background:0 0;border:none;border-radius:50%;align-items:center;padding:0;display:inline-flex}.account-trigger:hover{background:0 0}.account-trigger .avatar{background:var(--accent-tint);width:32px;height:32px;color:var(--accent);letter-spacing:.02em;border-radius:50%;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;transition:box-shadow .17s;display:inline-flex}.account-trigger:hover .avatar{box-shadow:0 0 0 3px var(--surface-2)}.account-dropdown{background:var(--bg);border:1px solid var(--border-subtle);min-width:180px;box-shadow:var(--shadow-hover);z-index:20;border-radius:12px;padding:.35rem;position:absolute;top:calc(100% + .4rem);right:0}.account-dropdown .account-name{color:var(--text-muted);padding:.5rem .6rem .4rem;font-size:.8rem}.account-dropdown .menu-item{text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-radius:8px;padding:.5rem .6rem;font-size:.9rem;display:block}.account-dropdown .menu-item:hover{background:var(--surface-2)}.account-dropdown .menu-sep{background:var(--border-subtle);height:1px;margin:.2rem 0}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:1rem;margin-bottom:28px;display:flex}.page-head h1{letter-spacing:-.02em;margin:0 0 .35rem;font-size:clamp(2.1rem,1.6rem + 1.8vw,2.875rem);font-weight:400;line-height:1.05}.page-head p{color:var(--text-muted);margin:0;font-size:.9375rem}.card{background:var(--bg);box-shadow:var(--shadow-card);border-radius:12px;padding:1.5rem}.bookcase-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.25rem;display:grid}.mini-case{text-align:center;cursor:pointer;color:var(--text);border:10px solid var(--oak);box-shadow:inset 0 0 26px #78644424, inset 0 0 0 1px var(--oak-edge), var(--shadow-card);background:#f4efe4;border-radius:8px;flex-direction:column;padding:1.1rem 1rem 0;transition:transform .17s,box-shadow .17s;display:flex}.mini-case:hover{border-color:var(--oak);box-shadow:inset 0 0 26px #78644424, inset 0 0 0 1px var(--oak-edge), var(--shadow-hover);background:#f4efe4;transform:translateY(-3px)}.mini-case:active{transform:translateY(-1px)}.mini-case-head{display:block}.mini-case-name{font-family:var(--display);font-size:1.35rem;font-weight:500;line-height:1.2;display:block}.mini-case-desc{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:.2rem;font-size:.82rem;display:block;overflow:hidden}.mini-case-count{margin:.7rem 0 .2rem;display:block}.mini-count-num{font-family:var(--display);font-variant-numeric:tabular-nums;font-size:2.8rem;font-weight:500;line-height:1;display:block}.mini-count-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin-top:.2rem;font-size:.75rem;font-weight:600;display:block}.mini-shelves{margin-top:.75rem;display:block}.mini-shelf{border-bottom:9px solid var(--oak);justify-content:center;align-items:flex-end;gap:2px;height:58px;padding:0 6px;display:flex;overflow:hidden;box-shadow:inset 0 -1px #7864441a}.mini-shelf:last-child{border-bottom:none}.mini-spine{border-radius:2px 2px 0 0;flex:none;box-shadow:inset -2px 0 3px -1px #00000038,0 1px 1px #1a19172e}.book-grid{grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:34px 24px;margin-top:34px;display:grid}.book-tile{cursor:pointer;-webkit-user-select:none;user-select:none;transition:transform .17s;position:relative}.book-tile.draggable{cursor:grab}.book-tile-inner{border-radius:8px;transition:transform .18s,box-shadow .18s;position:relative}.book-tile.draggable:active{cursor:grabbing}.book-tile:hover .book-tile-inner{transform:translateY(-4px)}.book-tile:hover .book-cover{box-shadow:var(--shadow-hover)}.book-tile.selected .book-tile-inner{outline:3px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 6px var(--accent-tint)}.tile-caption{margin-top:.55rem}.tile-caption .cap-title{color:var(--text);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.875rem;line-height:1.3;display:-webkit-box;overflow:hidden}.tile-caption .cap-authors{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:.1rem;font-size:.8125rem;overflow:hidden}.cover-badge{z-index:2;color:var(--warn-text);letter-spacing:.07em;text-transform:uppercase;pointer-events:none;background:#ffffffeb;border-radius:6px;padding:4px 8px;font-size:.75rem;font-weight:600;position:absolute;top:8px;right:8px}.cover-badge.badge-reading{color:var(--accent)}.cover-badge.badge-below{top:36px}.book-shelf{border-bottom:7px solid var(--oak);border-radius:2px;flex-wrap:wrap;align-items:flex-end;gap:6px;padding:0 .25rem .55rem;display:flex}.book-tile.spine-mode{margin:0;transform:none}.book-tile.spine-mode:hover{transform:none}.book-spine{width:var(--spine-w,30px);height:var(--spine-h,200px);background:var(--cloth,#e7ede8);border-radius:3px;transition:transform .17s,box-shadow .17s;position:relative;overflow:hidden;box-shadow:inset -3px 0 6px -3px #00000040}.book-tile.spine-mode:hover .book-spine{box-shadow:inset -3px 0 6px -3px #00000040, var(--shadow-card);transform:translateY(-10px)}.book-tile.spine-mode.selected .book-spine{outline:3px solid var(--accent);outline-offset:2px}.spine-text{writing-mode:vertical-rl;text-orientation:mixed;color:var(--foil,#1d5c46);flex-direction:column;justify-content:center;align-items:center;gap:.25rem;padding:1rem 0;display:flex;position:absolute;inset:0}.spine-title{font-family:var(--display);letter-spacing:.01em;text-overflow:ellipsis;white-space:nowrap;max-height:100%;font-size:.8rem;font-weight:500;line-height:1.05;overflow:hidden}.spine-author{opacity:.75;text-overflow:ellipsis;white-space:nowrap;max-height:100%;font-size:.75rem;line-height:1.05;overflow:hidden}.book-tile.spine-mode .tile-menu-btn{width:22px;height:22px;font-size:.9rem;top:.2rem;left:50%;transform:translate(-50%)}.ghost-spine{border-radius:3px;flex-direction:column;width:34px;height:190px}.ghost-spine .ghost-label{writing-mode:vertical-rl;font-size:.75rem}.ghost-tile{aspect-ratio:2/3;border:1.5px dashed var(--border);color:var(--text-faint);cursor:pointer;background:0 0;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;padding:0;transition:border-color .17s,color .17s,background .17s,transform .17s;display:flex}.ghost-tile:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-tint);transform:translateY(-2px)}.ghost-tile .ghost-plus{font-size:2.25rem;font-weight:300;line-height:1}.ghost-tile .ghost-label{letter-spacing:.02em;font-size:.85rem}.book-cover{aspect-ratio:2/3;background:var(--surface-2);box-shadow:var(--shadow-card);border-radius:8px;transition:transform .18s,box-shadow .18s;position:relative;overflow:hidden}.book-cover img{object-fit:cover;width:100%;height:100%;display:block}.book-cover .placeholder{background:var(--tint,var(--surface-2));color:var(--tint-ink,var(--text));text-align:left;flex-direction:column;justify-content:space-between;padding:16px 14px;display:flex;position:absolute;inset:0}.book-cover .placeholder .ph-title{font-family:var(--display);-webkit-line-clamp:5;-webkit-box-orient:vertical;font-size:1rem;font-weight:500;line-height:1.25;display:-webkit-box;overflow:hidden}.book-cover .placeholder.has-badge .ph-title{padding-right:52px}.book-cover .placeholder .ph-foot{flex:none}.book-cover .placeholder .ph-rule{opacity:.5;background:currentColor;width:22px;height:1px;margin-bottom:.45rem;display:block}.book-cover .placeholder .ph-author{letter-spacing:.06em;text-transform:uppercase;opacity:.85;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;font-weight:600;display:block;overflow:hidden}.book-overlay{color:#faf9f7;opacity:0;pointer-events:none;background:#1a1917d1;padding:.65rem .75rem;transition:opacity .17s,transform .17s;position:absolute;bottom:0;left:0;right:0;transform:translateY(8px)}.book-tile:hover .book-overlay{opacity:1;transform:translateY(0)}.book-overlay .ov-title{font-family:var(--display);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.9rem;font-weight:500;line-height:1.25;display:-webkit-box;overflow:hidden}.book-overlay .ov-authors{color:#faf9f7bf;-webkit-line-clamp:1;-webkit-box-orient:vertical;margin-top:.15rem;font-size:.75rem;display:-webkit-box;overflow:hidden}.tile-menu-btn{border:1px solid var(--border);width:28px;height:28px;color:var(--text);opacity:0;z-index:2;background:#fffffff0;border-radius:8px;justify-content:center;align-items:center;padding:0;font-size:1.1rem;line-height:1;transition:opacity .17s,border-color .17s;display:flex;position:absolute;top:.4rem;left:.4rem}.book-tile:hover .tile-menu-btn,.tile-menu-btn:focus-visible{opacity:1}.tile-menu-btn:hover{border-color:var(--accent)}@media (hover:none) and (pointer:coarse){.tile-menu-btn{display:none}}.tile-menu{background:var(--bg);border:1px solid var(--border-subtle);box-shadow:var(--shadow-hover);z-index:9000000;border-radius:12px;min-width:232px;max-height:min(60vh,400px);padding:.35rem;position:absolute;top:2.2rem;left:.4rem;overflow-y:auto}.tile-menu.flip-up{top:auto;bottom:calc(100% - .4rem)}.tile-menu.flip-right{left:auto;right:.4rem}.book-tile.menu-open{z-index:9000000;position:relative}.tile-menu .menu-head{border-bottom:1px solid var(--border-subtle);font-family:var(--display);color:var(--text);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 .3rem;padding:.4rem .6rem .5rem;font-size:.9rem;font-weight:500;line-height:1.3;display:-webkit-box;overflow:hidden}.tile-menu .menu-group+.menu-group{margin-top:.15rem}.tile-menu .menu-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin:0;padding:.45rem .6rem .25rem;font-size:.75rem;font-weight:600}.tile-menu .menu-item{text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-radius:8px;grid-template-columns:1.15rem 1fr .9rem;align-items:center;gap:.55rem;padding:.45rem .6rem;font-size:.875rem;display:grid}.tile-menu .menu-item:hover{background:var(--surface-2)}.tile-menu .menu-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.tile-menu .menu-icon{color:var(--text-faint);justify-content:center;align-items:center;display:inline-flex}.tile-menu .menu-item-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.tile-menu .menu-item:hover .menu-icon{color:var(--text)}.tile-menu .menu-item[aria-checked=true]{color:var(--accent);font-weight:600}.tile-menu .menu-item[aria-checked=true] .menu-icon{color:var(--accent)}.tile-menu .menu-tick{color:var(--accent);text-align:right;font-size:.8rem}.tile-menu .menu-item.danger{color:var(--danger);grid-template-columns:1.15rem 1fr}.tile-menu .menu-item.danger .menu-icon,.tile-menu .menu-item.danger:hover .menu-icon{color:var(--danger)}.tile-menu .menu-item.danger:hover{background:var(--danger-tint)}.tile-menu .menu-sep{background:var(--border-subtle);height:1px;margin:.35rem 0 .15rem}.bulk-bar{z-index:9000;background:var(--bg);border:1px solid var(--border-subtle);box-shadow:var(--shadow-hover);border-radius:12px;align-items:center;gap:1.25rem;padding:.6rem .6rem .6rem 1.1rem;display:flex;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%)}.bulk-count{color:var(--accent);white-space:nowrap;font-size:.88rem;font-weight:700}.bulk-actions{align-items:center;gap:.5rem;display:flex}.bulk-move{position:relative}.bulk-move-backdrop{z-index:9001;position:fixed;inset:0}.bulk-move-menu{z-index:9002;background:var(--bg);border:1px solid var(--border-subtle);min-width:200px;max-height:280px;box-shadow:var(--shadow-hover);border-radius:12px;padding:.35rem;position:absolute;bottom:calc(100% + .5rem);right:0;overflow-y:auto}.bulk-move-menu .menu-item{text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-radius:8px;padding:.45rem .6rem;font-size:.85rem;display:block}.bulk-move-menu .menu-item:hover{background:var(--surface-2)}.bulk-move-menu .menu-label{color:var(--text-muted);padding:.45rem .6rem;font-size:.78rem}.shelves{flex-direction:column;gap:2rem;display:flex}.shelf-row-block{border:1.5px dashed #0000;border-radius:12px;flex-direction:column;gap:.75rem;margin:-.5rem;padding:.5rem;transition:border-color .17s,background .17s;display:flex}.shelf-row-block.drop-over{border-color:var(--accent);background:var(--accent-tint)}.shelf-row-block.drop-over .shelf-row-label{color:var(--accent)}.shelf-row-block.muted .shelf-row-label{color:var(--text-faint)}.shelf-row-head{align-items:center;gap:.75rem;display:flex}.shelf-row-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text);white-space:nowrap;font-size:.75rem;font-weight:600}.shelf-row-rule{background:var(--border-subtle);flex:1;height:1px}.drag-ghost{cursor:grabbing;display:inline-block;position:relative;transform:rotate(-1.5deg)}.drag-ghost.covers{width:100%}.drag-ghost .ghost-face{transform-origin:50% 100%;width:100%;height:100%;transform:rotate(calc(var(--depth) * 5deg)) translate(calc(var(--depth) * 8px), calc(var(--depth) * -4px));filter:brightness(calc(1 - var(--depth) * .14));position:absolute;top:0;left:0}.drag-ghost .ghost-face-top{filter:none;z-index:3;position:relative;transform:none}.drag-ghost .book-cover,.drag-ghost .book-spine{box-shadow:var(--shadow-hover)}.bookcase-frame{border:14px solid var(--oak);box-shadow:inset 0 0 34px #78644429, inset 0 0 0 1px var(--oak-edge), var(--shadow-card);background:#f2ede1;border-radius:8px}.shelf-plank{border-bottom:12px solid var(--oak);flex-wrap:wrap;align-items:flex-end;padding:2rem 1rem 0;transition:background .17s,box-shadow .17s;display:flex;position:relative}.shelf-plank:last-child{border-bottom:none}.shelf-plank.spines{gap:6px;min-height:190px}.shelf-plank.covers{gap:.65rem;min-height:200px}.shelf-plank.covers .book-tile{width:104px}.shelf-plank .tile-caption{display:none}.shelf-plank.drop-over{background:var(--accent-tint);box-shadow:inset 0 0 0 2px var(--accent)}.shelf-name-tag{z-index:3;color:var(--text-muted);letter-spacing:.07em;text-transform:uppercase;opacity:0;pointer-events:none;background:#ffffffeb;border-radius:6px;padding:4px 8px;font-size:.75rem;font-weight:600;transition:opacity .17s;position:absolute;top:.55rem;left:.65rem}.shelf-plank:hover .shelf-name-tag,.shelf-plank.drop-over .shelf-name-tag{opacity:1}.shelf-empty-hint{color:#6f6c66b3;align-self:center;margin:auto;padding-bottom:2rem;font-size:.82rem;font-style:italic}.shelf-plank.drop-over .shelf-empty-hint{color:var(--accent)}.add-shelf-plank{color:#786444a6;background:0 0;border:none;border-radius:0;justify-content:center;align-items:center;gap:.4rem;width:100%;padding:.9rem;font-size:.85rem;font-style:italic;transition:background .17s,color .17s;display:flex}.add-shelf-plank:hover:not(:disabled){color:var(--accent);background:#1d5c4614;border:none}.room{margin:0}.room-stage{background:var(--surface-2);height:clamp(420px,74vh,860px);box-shadow:inset 0 0 0 1px var(--border-subtle);border-radius:12px;position:relative;overflow:hidden}.room-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.room-building{color:var(--text-muted);place-items:center;margin:0;font-size:.9rem;font-style:italic;display:grid;position:absolute;inset:0}.room-card{z-index:3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border-subtle);width:max-content;max-width:250px;box-shadow:var(--shadow-card);opacity:0;pointer-events:none;will-change:transform;background:#fffffff2;border-radius:12px;align-items:center;gap:.6rem;padding:.45rem .7rem .45rem .45rem;transition:opacity .17s;display:flex;position:absolute;left:0;translate:-50%}.room-card[data-row=top]{top:14px;bottom:auto}.room-card[data-row=bottom]{top:auto;bottom:14px}.room-card img{object-fit:cover;width:34px;height:51px;box-shadow:var(--shadow-card);border-radius:3px}.room-card-text{flex-direction:column;min-width:0;display:flex}.room-card-title{font-family:var(--display);text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;font-weight:500;line-height:1.2;overflow:hidden}.room-card-authors{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;overflow:hidden}.room-card-shelf{letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-top:.15rem;font-size:.75rem;font-weight:600}.room-scroll{z-index:4;border:1px solid var(--border);width:30px;height:30px;color:var(--text);box-shadow:var(--shadow-card);background:#fffffff0;border-radius:8px;place-items:center;padding:0;font-size:1.15rem;line-height:1;display:grid;position:absolute;translate:-50% -50%}.room-scroll:hover{border-color:var(--accent);color:var(--accent);background:#fff}.room-scroll-up,.room-scroll-down{left:50%;translate:-50%}.room-scroll-up{top:12px}.room-scroll-down{bottom:12px}.room-hint{text-align:center;color:var(--text-muted);margin:.85rem 0 0;font-size:.82rem}.bookcase-footer{justify-content:center;margin-top:2rem;display:flex}.bookcase-footer .ghost-danger{background:0 0}.settings-section{margin-top:.5rem}.settings-section-head{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.settings-section-head h3{margin:0;font-size:1.05rem}.shelf-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.shelf-row{background:var(--surface);border:1px solid var(--border-subtle);border-radius:10px;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .75rem;display:flex}.shelf-name{font-size:.95rem}.shelf-actions{gap:.4rem;display:flex}.shelf-actions .ghost,.shelf-actions .danger{padding:.3rem .65rem;font-size:.82rem}.shelf-edit-form{gap:.4rem;width:100%;display:flex}.shelf-edit-form input{flex:1}.empty-state{text-align:center;border:1.5px dashed var(--border);color:var(--text-muted);background:var(--surface);border-radius:12px;padding:3.25rem 2rem}.empty-state h3{color:var(--text);margin:0 0 .5rem;font-size:1.2rem}.empty-state p{margin:0 0 1.25rem}.no-match{text-align:center;padding:4rem 2rem}.no-match h3{font-family:var(--display);margin:0 0 .5rem;font-size:1.625rem;font-weight:400}.no-match p{color:var(--text-muted);margin:0 0 1.25rem;font-size:.9375rem}.modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;background:#1a191747;justify-content:center;align-items:center;padding:1rem;animation:.16s ease-out fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg);width:100%;max-width:560px;max-height:90vh;box-shadow:var(--shadow-hover);border-radius:12px;padding:1.75rem;overflow:auto}.modal h2{margin:0 0 .25rem;font-size:1.5rem;font-weight:500}.modal .modal-sub{color:var(--text-muted);margin:0 0 1.5rem;font-size:.9rem}.modal-actions{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.tabs{border-bottom:1px solid var(--border-subtle);margin-bottom:1.25rem;display:flex}.tab{color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:.65rem 1rem}.tab:hover{background:var(--surface);color:var(--text);border-color:#0000}.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.row{align-items:flex-end;gap:.75rem;display:flex}.row>*{flex:1}.preview-card{background:var(--surface);border-radius:12px;grid-template-columns:90px 1fr;gap:1rem;margin-top:1rem;padding:1rem;display:grid}.preview-card img{aspect-ratio:2/3;object-fit:cover;border-radius:4px;width:100%}.preview-card .title{font-family:var(--display);margin-bottom:.25rem;font-weight:500}.preview-card .meta{color:var(--text-muted);font-size:.85rem}.bulk-progress{align-items:center;gap:.75rem;margin-top:.75rem;display:flex}.bulk-progress-track{background:var(--surface-2);border-radius:4px;flex:1;height:8px;overflow:hidden}.bulk-progress-fill{background:var(--accent);border-radius:4px;height:100%;transition:width .25s}.bulk-progress-text{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.85rem}.bulk-results{border:1px solid var(--border-subtle);background:var(--surface);border-radius:10px;max-height:40vh;margin:.75rem 0 0;padding:0;list-style:none;overflow-y:auto}.bulk-result{grid-template-columns:auto 1fr auto;align-items:baseline;gap:.75rem;padding:.5rem .75rem;font-size:.85rem;display:grid}.bulk-result+.bulk-result{border-top:1px solid var(--border-subtle)}.bulk-result .bulk-isbn{font-variant-numeric:tabular-nums;color:var(--text-muted)}.bulk-result .bulk-title{font-family:var(--display);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.bulk-result .bulk-status{color:var(--text-muted)}.bulk-result.added .bulk-status{color:var(--accent)}.bulk-result.invalid .bulk-status,.bulk-result.not_found .bulk-status{color:var(--danger)}.library-picker{flex-direction:column;gap:.4rem;max-height:50vh;display:flex;overflow-y:auto}.library-row{background:var(--surface);border:1px solid var(--border-subtle);text-align:left;width:100%;color:var(--text);border-radius:10px;grid-template-columns:44px 1fr auto;align-items:center;gap:.75rem;padding:.5rem .65rem;display:grid}.library-row:hover:not(:disabled){border-color:var(--accent);background:var(--bg)}.lib-cover{background:var(--surface-2);width:44px;height:66px;color:var(--text-muted);border-radius:3px;justify-content:center;align-items:center;font-size:.75rem;display:flex;overflow:hidden}.lib-cover img{object-fit:cover;width:100%;height:100%}.lib-title{font-family:var(--display);font-size:.95rem;font-weight:500;line-height:1.2}.lib-authors{color:var(--text-muted);margin-top:.15rem;font-size:.8rem}.lib-note{color:var(--warn-text);margin-top:.2rem;font-size:.75rem}.lib-add{color:var(--accent);padding-right:.25rem;font-size:1.4rem}.error{background:var(--danger-tint);color:var(--danger);border:1px solid #a83a324d;border-radius:12px;margin-top:.75rem;padding:.65rem .9rem;font-size:.9rem}.success{background:var(--accent-tint);color:var(--accent);border:1px solid #1d5c464d;border-radius:12px;margin-top:.75rem;padding:.65rem .9rem;font-size:.9rem}.auth-page{place-items:center;min-height:100vh;padding:2rem 1rem;display:grid}.auth-card{background:var(--bg);width:100%;max-width:420px;box-shadow:var(--shadow-card);border-radius:12px;padding:2.25rem}.auth-card h1{margin:0 0 .25rem;font-size:1.75rem;font-weight:500}.auth-card .sub{color:var(--text-muted);margin-bottom:1.5rem}.auth-card .switch{text-align:center;color:var(--text-muted);margin-top:1.5rem;font-size:.9rem}.google-signin{justify-content:center;min-height:44px;display:flex}.auth-divider{color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:.75rem;margin:1.25rem 0;font-size:.75rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border-subtle);flex:1;height:1px}.spinner{vertical-align:-2px;border:2px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;margin-right:.5rem;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.full-loading{height:60vh;color:var(--text-muted);place-items:center;display:grid}.author-chip{pointer-events:none;font:inherit;color:inherit;cursor:pointer;text-underline-offset:2px;background:0 0;border:none;border-radius:0;padding:0;-webkit-text-decoration:underline #faf9f759;text-decoration:underline #faf9f759;transition:color .17s}.author-chip:hover{color:#cfe4da;background:0 0;text-decoration-color:#cfe4da}.book-tile:hover .author-chip{pointer-events:auto}.tile-caption .author-chip{pointer-events:auto;color:inherit;text-decoration:none}.tile-caption .author-chip:hover{color:var(--accent);text-decoration:underline}.author-filter{background:var(--bg);width:auto;max-width:220px;padding:.52rem .75rem}.author-combobox{position:relative}.author-combobox .author-filter{width:200px}.combo-menu{z-index:60;background:var(--bg);border:1px solid var(--border-subtle);width:max-content;min-width:100%;max-width:320px;max-height:280px;box-shadow:var(--shadow-hover);border-radius:12px;padding:.3rem;position:absolute;top:calc(100% + 6px);left:0;overflow-y:auto}.combo-option{text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-radius:8px;padding:.45rem .6rem;font-size:.88rem;display:block}.combo-option.active{background:var(--surface-2)}.combo-option.current{color:var(--accent);font-weight:600}.combo-empty{color:var(--text-muted);margin:0;padding:.45rem .6rem;font-size:.85rem}.search-box{flex:280px;min-width:280px;max-width:440px;position:relative}.search-box .search-glyph{color:var(--text-faint);pointer-events:none;font-size:1rem;line-height:1;position:absolute;top:50%;left:15px;translate:0 -50%}.search-box input{border-radius:12px;height:44px;padding-left:2.5rem}.quick-search{width:220px;max-width:100%;padding:.52rem .75rem}.chip-row{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.chip{background:var(--bg);border:1px solid var(--border);height:36px;color:var(--text);border-radius:99px;align-items:center;gap:.4rem;padding:0 .95rem;font-size:.875rem;font-weight:400;display:inline-flex}.chip:hover{border-color:var(--text-faint);background:var(--bg)}.chip.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:500}.chip.active:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.filters-bar{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1.5rem;display:flex}.filters-bar .filters-spacer{flex:auto}.sort-menu{position:relative}.sort-pop{z-index:70;background:var(--bg);border:1px solid var(--border-subtle);min-width:190px;box-shadow:var(--shadow-hover);border-radius:12px;padding:.35rem;position:absolute;top:calc(100% + 6px);right:0}.sort-pop .menu-item{text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-radius:8px;align-items:center;gap:.5rem;padding:.45rem .6rem;font-size:.875rem;display:flex}.sort-pop .menu-item:hover{background:var(--surface-2)}.sort-pop .menu-item[aria-checked=true]{color:var(--accent);font-weight:600}.sort-pop .menu-tick{color:var(--accent);margin-left:auto;font-size:.8rem}.notice{background:var(--accent-tint);color:var(--accent);border:1px solid #1d5c4659;border-radius:12px;margin-bottom:1.25rem;padding:.75rem 1rem}.book-tile.public-tile{cursor:pointer}.inspect-btn{z-index:3;color:#fff;opacity:0;background:#1a1917a6;border:none;border-radius:8px;place-items:center;width:2rem;height:2rem;padding:0;font-size:.9rem;line-height:1;transition:opacity .17s,background .17s;display:grid;position:absolute;top:.5rem;left:.5rem}.book-tile:hover .inspect-btn,.inspect-btn:focus-visible{opacity:1}.inspect-btn:hover{background:#1a1917d9}.pick-mark{z-index:2;background:var(--accent);color:#fff;border:2px solid var(--bg);width:1.6rem;height:1.6rem;box-shadow:var(--shadow-card);pointer-events:none;border-radius:8px;place-items:center;font-size:.85rem;font-weight:700;display:grid;position:absolute;top:.5rem;right:.5rem}.request-book-list{margin:0 0 .5rem;padding-left:1.2rem}.request-book-list li{margin:.2rem 0}.request-book-authors{color:var(--text-muted);font-size:.88rem}.share-card{background:var(--bg);box-shadow:var(--shadow-card);border-radius:12px;margin-bottom:2rem;padding:1.25rem 1.4rem}.share-card h2{margin:0 0 .35rem;font-size:1.05rem}.share-card p{color:var(--text-muted);margin:0 0 .9rem}.share-link-row{flex-wrap:wrap;gap:.5rem;display:flex}.share-link-row input{flex:280px;font-size:.88rem}.requests-heading{margin:0 0 .9rem;font-size:1.05rem}.request-list{flex-direction:column;gap:1rem;display:flex}.request-card{background:var(--bg);box-shadow:var(--shadow-card);border-radius:12px;padding:1.1rem 1.4rem}.request-card.unseen{box-shadow:var(--shadow-card), 0 0 0 2px var(--accent)}.request-card-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.75rem;display:flex}.request-card-head p{margin:0}.request-date{color:var(--text-muted);white-space:nowrap;font-size:.85rem}.request-delete{border-radius:8px;justify-content:center;align-self:center;align-items:center;width:28px;height:28px;padding:0;line-height:1;display:inline-flex}.request-delete:hover{color:var(--danger);background:var(--danger-tint)}.request-books{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.request-books li{align-items:center;gap:.75rem;display:flex}.request-cover{flex:none;width:40px}.request-book-main{flex:auto;min-width:0}.request-item-action{text-align:right;flex:none;align-items:center;gap:.6rem;display:flex}.request-item-action button{white-space:nowrap;padding:.4rem .8rem;font-size:.85rem}.loan-note{color:var(--text-muted);font-size:.82rem}.loan-note.muted{font-style:italic}.nav-badge{background:var(--accent);color:#fff;border-radius:99px;place-items:center;min-width:1.25rem;height:1.25rem;margin-left:.4rem;padding:0 .3rem;font-size:.75rem;font-weight:700;line-height:1;display:inline-grid}.drawer-scrim{z-index:8400;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1a191747;animation:.16s ease-out fade;position:fixed;inset:0}.book-detail{z-index:8500;background:var(--bg);border-left:1px solid var(--border-subtle);width:min(400px,92vw);padding:28px;animation:.18s detail-in;position:fixed;top:0;bottom:0;right:0;overflow-y:auto;box-shadow:-24px 0 60px -30px #1a191773}@keyframes detail-in{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:none}}.book-detail-close{background:var(--surface-2);border:none;border-radius:8px;place-items:center;width:32px;height:32px;padding:0;font-size:.95rem;line-height:1;display:grid;position:absolute;top:.9rem;right:.9rem}.book-detail-close:hover{background:var(--border-subtle)}.book-detail-cover{width:132px;margin:.75rem auto 1.25rem}.book-detail-cover .book-cover{box-shadow:0 10px 26px -14px #1a191780}.book-detail-title{text-align:center;margin:0 0 .25rem;font-size:1.6875rem;font-weight:400;line-height:1.15}.book-detail-authors{color:var(--text-muted);text-align:center;margin:0 0 1.25rem}.status-band{border-radius:12px;justify-content:space-between;align-items:center;gap:.75rem;margin:0 0 1.25rem;padding:.75rem .9rem;font-size:.9rem;display:flex}.status-band p{margin:0;line-height:1.45}.status-band button{flex:none;padding:.4rem .85rem;font-size:.85rem}.status-band.lent{background:var(--warn-tint);color:var(--warn-text)}.status-band.reading{background:var(--accent-tint);color:var(--accent)}.book-detail-section{margin:0 0 1.25rem}.book-detail-section h3{font-family:var(--ui);letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 .35rem;font-size:.75rem;font-weight:600}.book-detail-synopsis{margin:0;font-size:.9rem;line-height:1.55}.book-detail-synopsis.empty{color:var(--text-muted);font-style:italic}.book-detail-facts{border-top:1px solid var(--border-subtle);margin:0}.book-detail-fact{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:baseline;gap:1rem;padding:.6rem 0;display:flex}.book-detail-fact dt{color:var(--text-muted);font-size:.85rem}.book-detail-fact dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-size:.9rem;font-weight:500}.book-detail-placement label{margin:0}.book-detail-placement label+label{margin-top:1rem}.book-detail-placement select{margin-top:.35rem}.book-detail-remove{width:100%;margin-top:1.5rem}.book-detail-flag-btn{width:100%;margin-top:.75rem;font-size:.85rem}.book-detail-flag{margin-top:.75rem}.book-detail-flag label{margin-top:0}.book-detail-flag-actions{justify-content:flex-end;gap:.5rem;margin-top:.6rem;display:flex}.book-detail-flag-error{color:var(--danger);margin:.5rem 0 0;font-size:.85rem}.book-detail-flag-done{text-align:center;color:var(--text-muted);margin:.75rem 0 0;font-size:.85rem;font-style:italic}.book-tile.co-moving{opacity:.3}.book-tile.co-moving .tile-menu-btn{display:none}.drag-count{z-index:4;background:var(--accent);color:#fff;border:2px solid var(--bg);min-width:1.6rem;height:1.6rem;box-shadow:var(--shadow-card);pointer-events:none;border-radius:99px;justify-content:center;align-items:center;padding:0 .4rem;font-size:.8rem;font-weight:700;line-height:1;display:inline-flex;position:absolute;top:-.5rem;right:-.5rem}.scan-panel{margin-top:.25rem}.scanner-frame{aspect-ratio:4/3;width:100%;box-shadow:var(--shadow-card);background:#1a1917;border-radius:12px;position:relative;overflow:hidden}.scanner-video{object-fit:cover;width:100%;height:100%;display:block}.scanner-reticle{border:2px solid #ffffffd9;border-radius:10px;position:absolute;inset:22% 10%;box-shadow:0 0 0 100vmax #0f0f0d52}.scanner-hint{color:#ffffffd1;place-items:center;font-size:.9rem;display:grid;position:absolute;inset:0}.scanner-torch{color:#fff;background:#1a1917b8;border-color:#ffffff40;border-radius:10px;width:40px;height:40px;padding:0;font-size:1.1rem;line-height:1;position:absolute;top:.5rem;right:.5rem}.scanner-torch.on{background:var(--warn-tint);border-color:var(--warn-tint);color:var(--warn-text)}.scanner-status{margin:.75rem 0 0}.scan-feed{flex-direction:column;gap:.3rem;max-height:220px;margin:.75rem 0 0;padding:0;list-style:none;display:flex;overflow-y:auto}.scan-entry{background:var(--surface);border:1px solid var(--border-subtle);border-radius:10px;align-items:center;gap:.6rem;padding:.5rem .6rem;font-size:.9rem;display:flex}.scan-entry .scan-icon{text-align:center;flex:none;width:1.2rem}.scan-entry.added .scan-icon{color:var(--accent)}.scan-entry.duplicate .scan-icon,.scan-entry.notbook .scan-icon,.scan-entry.unknown .scan-icon{color:var(--warn-text)}.scan-entry.error .scan-icon{color:var(--danger)}.scan-entry.removed{opacity:.55}.scan-text{flex-direction:column;flex:auto;min-width:0;display:flex}.scan-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.scan-note{color:var(--text-muted);font-size:.78rem}.scan-page{flex-direction:column;gap:.75rem;max-width:640px;min-height:100dvh;margin:0 auto;padding:1rem;display:flex}.scan-page-head{flex:none;align-items:center;gap:.75rem;display:flex}.scan-page-head h1{margin:0;font-size:1.35rem}.scan-page .scan-panel{flex-direction:column;flex:auto;min-height:0;margin-top:0;display:flex}.scan-page .scanner-frame,.scan-page .scanner-status{flex:none}.scan-page .scan-feed{flex:auto;min-height:0;max-height:none}.scan-page-actions{flex:none}.scan-page-actions .primary{width:100%}@media (width<=640px){.scan-page{gap:.6rem;padding:.75rem}.scan-page .scanner-frame{aspect-ratio:auto;border-radius:0;height:42vh;margin:0 -.75rem}.appbar-inner{gap:.6rem;height:56px;padding:0 1rem}.appbar-brand span:not(.appbar-logo){display:none}.appbar-nav{scrollbar-width:none;flex:auto;min-width:0;overflow-x:auto}.appbar-nav::-webkit-scrollbar{display:none}.appbar-nav a{white-space:nowrap;padding:.35rem .7rem;font-size:.88rem}.appbar-spacer{display:none}.appbar-add{height:34px;padding:0 .8rem;font-size:.85rem}.container{padding:1.25rem 1rem 4rem}.room-stage{height:clamp(320px,52vh,460px)}.page-head{gap:.6rem;margin-bottom:.9rem}.page-head h1{font-size:1.55rem}.head-actions button{height:36px;padding:0 .85rem;font-size:.85rem}.filters-bar{gap:.5rem;margin-bottom:1rem}.search-box{flex:200px;min-width:0}.chip{height:32px;padding:0 .75rem;font-size:.82rem}.book-grid{gap:24px 16px;margin-top:20px}.book-detail{border-left:none;border-top:1px solid var(--border-subtle);width:100%;max-height:84dvh;padding:1.9rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;animation:.2s detail-up;inset:auto 0 0;box-shadow:0 -24px 48px -26px #1a191780}.book-detail:before{content:"";background:var(--border);border-radius:99px;width:38px;height:4px;position:absolute;top:.55rem;left:50%;translate:-50%}.book-detail-cover{width:110px;margin:.25rem auto 1rem}}@keyframes detail-up{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}.link-btn{font:inherit;color:var(--accent);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;border-radius:0;padding:0;text-decoration:underline}.link-btn:hover{color:var(--accent-hover);background:0 0}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.admin-tabs{background:var(--surface-2);border-radius:10px;gap:2px;margin-bottom:1.75rem;padding:3px;display:inline-flex}.admin-tabs button{color:var(--text-muted);background:0 0;border:none;border-radius:8px;padding:.4rem 1.1rem;font-size:.9rem;transition:background .17s,color .17s}.admin-tabs button:hover{color:var(--text)}.admin-tabs button.active{color:var(--text);background:#fff;font-weight:600;box-shadow:0 1px 2px #1a19171a}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.9rem;margin-bottom:2.25rem;display:grid}.stat-grid.compact{grid-template-columns:repeat(2,minmax(110px,1fr));margin:0}.stat-tile{background:var(--bg);box-shadow:var(--shadow-card);border-radius:12px;padding:1rem 1.15rem;transition:box-shadow .17s}.stat-tile:hover{box-shadow:var(--shadow-hover)}.stat-value{font-family:var(--display);font-size:1.9rem;font-weight:500;line-height:1.1}.stat-label{color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;margin-top:.3rem;font-size:.75rem;font-weight:600}.admin-subhead{margin:2rem 0 .75rem;font-size:1.15rem}.table-scroll{background:var(--bg);box-shadow:var(--shadow-card);border-radius:12px;overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:.9rem}.admin-table th{text-align:left;white-space:nowrap;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);border-bottom:1px solid var(--border);background:var(--surface);padding:.7rem .9rem;font-size:.75rem;font-weight:600}.admin-table td{border-bottom:1px solid var(--border-subtle);text-overflow:ellipsis;white-space:nowrap;vertical-align:baseline;max-width:26ch;padding:.6rem .9rem;overflow:hidden}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table .num{text-align:right;font-variant-numeric:tabular-nums}.admin-table .row-link{cursor:pointer}.admin-table .row-link:hover td{background:var(--accent-tint)}.admin-table .row-actions{text-align:right;white-space:nowrap;max-width:none}.admin-table .row-actions button{margin-left:.35rem;padding:.25rem .6rem;font-size:.8rem}.admin-table .table-empty{text-align:center;color:var(--text-muted);max-width:none;padding:2rem}.review-edit{gap:.6rem;max-width:32rem;padding:.5rem 0 .75rem;display:grid}.review-edit label{gap:.25rem;font-size:.85rem;display:grid}.review-edit .modal-actions{margin-top:0}.cell-null{color:var(--text-faint)}.cell-mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.82rem}.cell-title{font-weight:600}.badge{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;margin-left:.45rem;padding:.08rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.badge:first-child{margin-left:0}.badge+.badge{margin-left:.3rem}.badge-gilt{color:var(--warn-text);background:var(--warn-tint);border-color:#8a5a1259}.admin-search{max-width:340px}.admin-user-card{background:var(--bg);box-shadow:var(--shadow-card);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;margin-top:1rem;padding:1.25rem 1.5rem;display:flex}.admin-user-card h2{margin:0 0 .35rem;font-size:1.35rem}.admin-user-card p{color:var(--text-muted);margin:0;font-size:.92rem}.table-chips{flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem;display:flex}.table-chips button{border-radius:99px;padding:.35rem .85rem;font-size:.85rem}.table-chips button.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.table-chips .chip-count{opacity:.65;font-variant-numeric:tabular-nums;margin-left:.25rem;font-size:.78rem}.pager{color:var(--text-muted);justify-content:center;align-items:center;gap:1rem;margin-top:1rem;font-size:.88rem;display:flex}
