:root{--ground: #0E1116;--surface: #171B21;--surface-2: #1E232A;--shelf: #12161B;--ink: #E7EBF1;--ink-2: #A3AEBB;--ink-3: #79838F;--line: #262D36;--line-2: #1D232A;--accent: #59A6E8;--ok: #3FBF8C;--warn: #D9A23F;--out: #E0765A;--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--pad: 16px;--tap: 44px;--bar: 61px;--art-r: 5.2% / 4.1%}@media(min-width:700px){:root{--pad: 24px;--bar: 69px}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--bar) + 12px)}body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);line-height:1.55;-webkit-font-smoothing:antialiased}img{max-width:100%}button,input,select,textarea{font:inherit;color:inherit}button{background:none;border:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.wrap{width:100%;max-width:1220px;margin:0 auto;padding-left:max(var(--pad),env(safe-area-inset-left));padding-right:max(var(--pad),env(safe-area-inset-right))}.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--ground) 92%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line-2);padding-top:env(safe-area-inset-top)}.top-in{display:flex;align-items:center;gap:10px;max-width:1220px;margin:0 auto;padding-block:8px;padding-left:max(var(--pad),env(safe-area-inset-left));padding-right:max(var(--pad),env(safe-area-inset-right))}@media(min-width:700px){.top-in{gap:18px;padding-block:12px}}.brand{font-family:var(--mono);font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);font-weight:600;white-space:nowrap;flex:none}.spacer{flex:1}.backbtn{display:inline-flex;align-items:center;gap:8px;height:var(--tap);margin-left:-8px;padding:0 8px;flex:none;font-family:var(--mono);font-size:12px;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--ink);border-radius:8px}.backbtn svg{width:15px;height:15px;flex:none}.backbtn:active{background:var(--surface)}.searchwrap{position:relative;display:flex;align-items:center;flex:1;min-width:0}.searchwrap .ico{position:absolute;left:12px;width:15px;height:15px;color:var(--ink-3);pointer-events:none}.search{width:100%;min-width:0;height:var(--tap);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:0 40px 0 34px;color:var(--ink);font-family:var(--mono);font-size:16px;appearance:none;-webkit-appearance:none}.search::placeholder{color:var(--ink-3)}.search::-webkit-search-cancel-button,.search::-webkit-search-decoration{-webkit-appearance:none}.search:focus{border-color:var(--line)}.search-clear{position:absolute;top:0;right:0;width:var(--tap);height:var(--tap);display:grid;place-items:center;color:var(--ink-3);border-radius:0 10px 10px 0}.search-clear svg{width:13px;height:13px}.search-clear:active{background:var(--surface-2)}@media(min-width:700px){.searchwrap{flex:none;width:300px;margin-left:auto}}@media(min-width:700px)and (hover:hover)and (pointer:fine){.search{height:38px;font-size:13px}.search-clear{height:38px;width:38px}}.modes{display:flex;flex:none;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface)}.modes button{display:flex;align-items:center;justify-content:center;gap:7px;height:var(--tap);min-width:var(--tap);padding:0 12px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.modes button svg{width:15px;height:15px;flex:none}.modes button[aria-pressed=true]{background:var(--surface-2);color:var(--ink)}.modes .lab{display:none}@media(min-width:420px){.modes .lab{display:inline}}@media(min-width:700px){.modes button{padding:0 14px}.modes button svg{display:none}.modes .lab{display:inline}}@media(min-width:700px)and (hover:hover)and (pointer:fine){.modes button{height:38px}}.shelfline{display:flex;align-items:center;gap:12px;padding:14px 0 2px;min-height:var(--tap)}.shelfline .count{font-family:var(--mono);font-size:11.5px;color:var(--ink-3);letter-spacing:.04em;min-width:0}.shelfline .count b{color:var(--ink-2);font-weight:600}.addbtn{display:inline-flex;align-items:center;justify-content:center;gap:6px;margin-left:auto;flex:none;height:var(--tap);padding:0 16px;border:1px solid var(--line);border-radius:9px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);text-decoration:none}.addbtn svg{width:12px;height:12px}.addbtn:active{background:var(--surface);color:var(--ink)}.bd{position:relative;transform-style:preserve-3d;width:var(--w);height:var(--h)}.bd .fc{position:absolute;background:#0b0b0c;overflow:hidden;backface-visibility:hidden}.bd .fc img{width:100%;height:100%;object-fit:cover;display:block}.bd .front,.bd .back{border-radius:var(--art-r)}.bd .front{inset:0;transform:translateZ(calc(var(--d) / 2))}.bd .back{inset:0;transform:rotateY(180deg) translateZ(calc(var(--d) / 2))}.bd .spine,.bd .edge{top:0;left:calc(50% - var(--d) / 2);width:var(--d);height:var(--h)}.bd .spine{transform:rotateY(-90deg) translateZ(calc(var(--w) / 2))}.bd .edge{transform:rotateY(90deg) translateZ(calc(var(--w) / 2));background:#15161a}.bd .top,.bd .bot{left:0;top:calc(50% - var(--d) / 2);width:var(--w);height:var(--d);background:#1a1c21}.bd .top{transform:rotateX(90deg) translateZ(calc(var(--h) / 2))}.bd .bot{transform:rotateX(-90deg) translateZ(calc(var(--h) / 2))}.spine-img{width:100%;height:100%;object-fit:cover;display:block}.spine-art{width:100%;height:100%;background-color:var(--sp-base, #16161b);background-image:linear-gradient(90deg,rgba(0,0,0,.72),transparent 42%,transparent 60%,rgba(0,0,0,.78));display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:9px 0;border-left:1px solid var(--sp-edge, #2a2a2e);border-right:1px solid var(--sp-edge, #2a2a2e);transition:background-color .45s ease}.spine-t{writing-mode:vertical-rl;font-family:var(--mono);font-size:var(--st, 9px);letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:#fffffff2;white-space:nowrap;overflow:hidden;text-shadow:0 1px 2px rgba(0,0,0,.5)}.spine-b{writing-mode:vertical-rl;font-family:var(--mono);font-size:6.5px;letter-spacing:.14em;text-transform:uppercase;color:#8a8f98}.cover-missing{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:12px;text-align:center;background:var(--surface-2)}.cover-missing span{font-size:12px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}.cover-missing small{font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px;padding:12px 0 calc(48px + env(safe-area-inset-bottom))}@media(min-width:380px){.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 10px}.tile-title{font-size:12.5px}.tile-sub{font-size:10px}}@media(min-width:520px){.grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:24px 18px}.tile-title{font-size:13px}.tile-sub{font-size:10.5px}}@media(min-width:700px){.grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}@media(min-width:900px){.grid{gap:26px 22px;padding:20px 0 60px}}.tile{display:flex;flex-direction:column;align-items:stretch;text-align:left;min-width:0}.tile-art{position:relative;aspect-ratio:1 / 1.26;border-radius:var(--art-r);overflow:hidden;background:var(--surface-2);border:1px solid var(--line);box-shadow:0 8px 16px #00000059;transition:transform .22s cubic-bezier(.33,.02,.2,1),box-shadow .22s}.tile-art img{width:100%;height:100%;object-fit:cover;display:block}.tile:active .tile-art{transform:scale(.97)}@media(hover:hover)and (pointer:fine){.tile:hover .tile-art,.tile:focus-visible .tile-art{transform:translateY(-5px) scale(1.02);box-shadow:0 18px 30px #00000080}.tile:active .tile-art{transform:translateY(-2px) scale(1)}}.tile-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:8px;font-size:13px;font-weight:600;line-height:1.32;overflow-wrap:anywhere}.tile-sub{display:block;margin-top:3px;font-family:var(--mono);font-size:10.5px;line-height:1.4;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;padding:4px 8px;border-radius:3px;background:#080a0dd1;backdrop-filter:blur(4px);display:flex;align-items:center;gap:5px;white-space:nowrap}.status i{width:5px;height:5px;border-radius:50%;background:currentColor;flex:none}.tile-art .status{position:absolute;bottom:6px;left:6px}.dt .status{display:inline-flex;vertical-align:middle;padding:3px 7px}.s-ok{color:var(--ok)}.s-out{color:var(--out)}.s-res{color:var(--warn)}.stackbox{--stk-w: min(340px, calc(100vw - (2*max(var(--pad), env(safe-area-inset-left))) - 26px) );--sd: 34px;background:var(--shelf);border:1px solid var(--line);border-radius:10px;padding:16px 12px;margin:8px 0 18px;display:flex;flex-direction:column;align-items:center;gap:3px}@media(min-width:700px){.stackbox{--stk-w: 320px;--sd: 30px;padding:40px 30px;margin:20px 0 26px}}.stk{position:relative;width:var(--stk-w);max-width:100%;height:var(--sd);flex:none;overflow:hidden;border-radius:2px;padding:0;background-color:var(--sp-base, #1b1f26);--stk-edges: inset 8px 0 10px -7px rgba(0, 0, 0, .8), inset -8px 0 10px -7px rgba(0, 0, 0, .8), inset 0 1px 0 rgba(255, 255, 255, .1), inset 0 -1px 0 rgba(0, 0, 0, .38);box-shadow:var(--stk-edges),0 1px #0000004d;transition:transform .3s cubic-bezier(.33,.02,.2,1),box-shadow .3s,background-color .45s ease}.stk img{position:absolute;top:50%;left:50%;z-index:1;width:var(--sd);height:var(--stk-w);transform:translate(-50%,-50%) rotate(-90deg);display:block;object-fit:fill}.stk.real{--stk-edges: inset 7px 0 9px -7px rgba(0, 0, 0, .42), inset -7px 0 9px -7px rgba(0, 0, 0, .42), inset 0 1px 0 rgba(255, 255, 255, .07), inset 0 -1px 0 rgba(0, 0, 0, .3)}.stk:focus-visible{transform:translate(28px);z-index:3;box-shadow:var(--stk-edges),-9px 3px 17px #00000061}.stk:active{transform:translate(6px)}.stk-gen{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:0 11px;font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;pointer-events:none}@media(min-width:700px){.stk-gen{font-size:9px}}.stk-gen-t{font-weight:600;color:#fffffff0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;text-shadow:0 1px 2px rgba(0,0,0,.45)}.stk-gen-f{flex:none;font-size:8.5px;letter-spacing:.16em;white-space:nowrap;color:#fff9;text-shadow:0 1px 2px rgba(0,0,0,.45);overflow:hidden;max-width:14em;opacity:1;transition:max-width .3s cubic-bezier(.33,.02,.2,1),opacity .2s ease}@media(min-width:700px){.stk-gen-f{font-size:8px}}.stk:focus-visible .stk-gen-f{max-width:0;opacity:0}@media(hover:hover)and (pointer:fine){.stk:hover{transform:translate(28px);z-index:3;box-shadow:var(--stk-edges),-9px 3px 17px #00000061}.stk:hover .stk-gen-f{max-width:0;opacity:0}.stk:active{transform:translate(28px)}}.stack-cap{font-family:var(--mono);font-size:11px;color:var(--ink-3);margin:0 0 calc(48px + env(safe-area-inset-bottom));text-align:center;text-wrap:balance}.hover-only{display:none}@media(hover:hover)and (pointer:fine){.hover-only{display:inline}.touch-only{display:none}}.detail{padding:8px 0 calc(48px + env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr;gap:26px}@media(min-width:860px){.detail{grid-template-columns:auto 1fr;gap:52px;padding:34px 0 70px}}.fscene{perspective:1200px;width:min(320px,100%);margin-inline:auto}@media(min-width:860px){.fscene{margin-inline:0}}.fcard{width:100%;aspect-ratio:1 / 1.2625;position:relative;transform-style:preserve-3d;cursor:pointer;transition:transform .8s cubic-bezier(.33,.02,.2,1)}.fcard.flip{transform:rotateY(180deg)}.fface{position:absolute;inset:0;backface-visibility:hidden;border-radius:var(--art-r);overflow:hidden;background:#0b0b0c;border:1px solid var(--line);box-shadow:0 24px 34px #0009}.fface img{width:100%;height:100%;object-fit:cover;display:block}.fface.rear{transform:rotateY(180deg)}.fface.rear .noback{display:flex;align-items:center;justify-content:center;height:100%;font-family:var(--mono);font-size:11px;color:var(--ink-3);text-align:center;padding:26px;line-height:1.7}.flip-hint{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);text-align:center;margin:14px 0 0}.dt{min-width:0}.dt h1{font-size:clamp(22px,5.6vw,30px);line-height:1.18;margin:0 0 6px;letter-spacing:-.01em;overflow-wrap:anywhere}.dt .sub{font-family:var(--mono);font-size:12px;color:var(--ink-3);margin-bottom:20px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}.kv{width:100%;border-collapse:collapse;font-size:14px;max-width:560px;table-layout:fixed}.kv th,.kv td{text-align:left;padding:10px 0;border-bottom:1px solid var(--line-2)}.kv th{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:500;width:104px;padding-right:14px;vertical-align:top}.kv td{font-variant-numeric:tabular-nums;overflow-wrap:anywhere}@media(min-width:520px){.kv th{width:130px;padding-right:18px;font-size:10px}}.back-link{display:inline-flex;align-items:center;gap:8px;min-height:var(--tap);margin-top:12px;padding:0 14px 0 12px;border:1px solid var(--line);border-radius:9px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.back-link svg{width:13px;height:13px}.back-link:active{background:var(--surface);color:var(--ink)}@media(hover:hover)and (pointer:fine){.back-link:hover{color:var(--ink);border-color:var(--line)}}.borrow{margin-top:24px;padding:15px 18px;border:1px solid var(--line);border-radius:8px;background:var(--surface);max-width:560px}.borrow p{margin:0;font-size:13.5px;color:var(--ink-2)}.empty,.loading{padding:64px 0;text-align:center;font-family:var(--mono);font-size:12px;color:var(--ink-3);line-height:1.9;overflow-wrap:anywhere}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.admin,.admin-gate{padding-block:24px calc(60px + env(safe-area-inset-bottom))}@media(min-width:700px){.admin,.admin-gate{padding-block:40px 80px}}.admin-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:18px}.admin h1,.admin-gate h1{font-size:clamp(21px,5.4vw,26px);margin:0;letter-spacing:-.01em}.admin-head .back-link{margin-top:0}.admin-gate p{color:var(--ink-2);font-size:14px;max-width:46ch}.admin-gate form{display:flex;flex-direction:column;gap:10px;margin:18px 0 24px;max-width:520px}@media(min-width:520px){.admin-gate form{flex-direction:row;align-items:center}}.search.wide{width:100%;max-width:520px;height:var(--tap);padding:0 14px;font-size:16px}.btn{border:1px solid var(--line);border-radius:10px;height:var(--tap);min-width:var(--tap);padding:0 18px;flex:none;background:var(--surface-2);font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}.btn:active{border-color:var(--accent);color:var(--accent)}@media(hover:hover)and (pointer:fine){.btn:hover{border-color:var(--accent);color:var(--accent)}.addbtn:hover{color:var(--accent);border-color:var(--accent)}}.admin-meta{font-family:var(--mono);font-size:11.5px;color:var(--ink-3);margin:16px 0 18px;overflow-wrap:anywhere}.admin-meta code{color:var(--ink-2)}.admin-err{font-family:var(--mono);font-size:12px;color:var(--out);border:1px solid var(--out);border-radius:8px;padding:10px 14px;margin:16px 0;max-width:560px;overflow-wrap:anywhere}.cand-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:12px;margin-bottom:36px}@media(min-width:520px){.cand-grid{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:16px}}.cand{display:flex;flex-direction:column;gap:6px;padding:0;min-width:0}.cand-art{position:relative;aspect-ratio:1 / 1.26;border-radius:var(--art-r);overflow:hidden;border:1px solid var(--line);background:var(--surface-2);transition:transform .18s,border-color .18s}.cand:not(:disabled):active .cand-art{transform:scale(.96);border-color:var(--accent)}@media(hover:hover)and (pointer:fine){.cand:not(:disabled):hover .cand-art{transform:translateY(-4px);border-color:var(--accent)}}.cand-art img{width:100%;height:100%;object-fit:cover;display:block}.cand-id{font-family:var(--mono);font-size:9.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}.cand:disabled{cursor:default}.cand.done .cand-art{opacity:.45}.cand-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#080a0db8;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink)}.cand-state.ok{color:var(--ok)}.added{border-top:1px solid var(--line-2);padding-top:22px}.added h2{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:0 0 12px;font-weight:500}.added ul{list-style:none;margin:0;padding:0}.added li{display:flex;align-items:baseline;gap:10px 14px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--line-2);font-size:13.5px}.added li b{min-width:0;overflow-wrap:anywhere}.added li span{color:var(--ink-3);font-size:12px}.added li em{margin-left:auto;font-style:normal;font-family:var(--mono);font-size:10.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}.filters{border-bottom:1px solid var(--line-2);background:color-mix(in srgb,var(--ground) 94%,transparent)}.filters-bar{display:flex;align-items:center;gap:10px;padding-block:10px}.filters-toggle{display:inline-flex;align-items:center;gap:8px;flex:none;height:38px;padding:0 14px;border:1px solid var(--line);border-radius:9px;background:var(--surface);font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}.filters-toggle:active{background:var(--surface-2)}.filters-n{font-style:normal;display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--accent);color:#06121f;font-size:10px;font-weight:700}.filters-clear{flex:none;height:38px;padding:0 13px;border:1px solid var(--line);border-radius:9px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.filters-clear:active{background:var(--surface-2)}.filters-panel{display:none;flex-direction:column;gap:14px;padding-block:2px 14px}.filters-panel.open{display:flex}.fg{display:flex;flex-direction:column;gap:8px;min-width:0}.fg-t{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-weight:500}.fg-chips{display:flex;flex-wrap:wrap;gap:7px;min-width:0}.chip{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:0 13px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink-2);font-size:13px}.chip-l{line-height:1.2;white-space:nowrap}.chip-c{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}.chip.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--surface));color:var(--ink)}.chip.on .chip-c{color:var(--accent)}.chip.zero{opacity:.42}.chip-more{border-style:dashed;color:var(--ink-3);font-family:var(--mono);font-size:11px}@media(min-width:700px){.filters-bar{padding-block:9px}.filters-toggle{display:none}.filters-bar:not(:has(.filters-clear)){display:none}.filters-panel{display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-start;gap:11px 26px;padding-block:4px 15px}.fg{flex-direction:row;align-items:baseline;gap:11px}.fg-t{padding-top:6px}}@media(hover:hover)and (pointer:fine){.chip:hover{border-color:var(--ink-3);color:var(--ink)}.filters-toggle:hover{border-color:var(--accent);color:var(--accent)}.filters-clear:hover{border-color:var(--out);color:var(--out)}}.kv-filter{display:inline-flex;align-items:center;gap:4px;padding:0;font:inherit;color:inherit;vertical-align:baseline;border-bottom:1px dashed var(--line)}.kv-filter-i{font-size:.8em;color:var(--ink-3)}.kv-filter:focus-visible{color:var(--accent);border-color:var(--accent)}.kv-filter:focus-visible .kv-filter-i{color:var(--accent)}@media(hover:hover)and (pointer:fine){.kv-filter:hover{color:var(--accent);border-color:var(--accent)}.kv-filter:hover .kv-filter-i{color:var(--accent)}}.linkish{font:inherit;color:var(--accent);text-decoration:underline;text-underline-offset:2px}
