:root{--bg: #2a1c1c;--surface: #3a2725;--ink: #f6eadb;--muted: #c9b2a1;--line: #55403a;--accent: #f28fb3;--accent-ink: #2a1c1c;--accent-soft: #53303c;--gold: #e6c27a;--gold-soft: #4b3226;--sage: #aecb9f;--sage-soft: #33402d;--page-glow: #432c27;--panel-shadow: rgba(10, 5, 5, .45);--soft-shadow: rgba(8, 4, 4, .5);--ribbon: #8f1d3f;--danger: #ff9d8f;--wine: #5c1f34;--card-pink: #f6d9e3;--outline: #160e0e;--board: #8c5f42;--board-edge: #4f3324;--sp-pink: #ec8db1;--sp-cream: #f7ead3;--sp-wine: #6d2941;--sp-gold: #d6b665;--sp-sage: #9db590;--sp-blue: #8eaabb;--sp-plum: #86607a;--sp-navy: #2f4a66;--sp-forest: #34523d;--sp-aubergine: #4b3460;--sp-cocoa: #5b3d2a;--sp-ink: #2a1a20;--sp-paper: #fbf3e6;--spine-w: 52px;--spine-gap: 6px;--more-w: 48px;--deco-w: 104px;--spine-max: 198px;--f-display: "Bodoni Moda", "Didot", "Bodoni 72", Georgia, serif;--f-body: "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;--f-mono: "DM Mono", ui-monospace, Menlo, monospace;--f-hand: "Caveat", "Segoe Print", "Bradley Hand", cursive;--margin-paper: #f4e8d6;--pencil: #3a2a26;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:radial-gradient(ellipse 120% 600px at 50% -120px,var(--page-glow),transparent 70%) no-repeat,var(--bg);color:var(--ink);font:15px/1.5 var(--f-body);padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}code{font-family:var(--f-mono);font-size:.9em}.muted{color:var(--muted)}.small{font-size:13px}.error{color:var(--danger);margin:0}.wordmark{font:500 clamp(36px,8vw,54px)/1 var(--f-display);letter-spacing:-.02em;margin:0}.wordmark em{font-style:italic;color:var(--accent);font-weight:500}.tagline{color:var(--muted);margin:0}.center-page{min-height:100vh;display:grid;place-items:center;padding:32px max(16px,env(safe-area-inset-right,0px)) 32px max(16px,env(safe-area-inset-left,0px))}.panel{width:100%;max-width:440px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:28px 24px;display:flex;flex-direction:column;gap:14px}.panel.wide{max-width:720px}.panel h2{font:500 24px/1.2 var(--f-display);margin:4px 0 0;text-wrap:balance}.panel h3{margin:0;font-size:16px}.panel p{margin:0}.two-up{display:grid;grid-template-columns:1fr 1fr;gap:24px}@media (max-width: 620px){.two-up{grid-template-columns:1fr}}.pill-note{background:var(--gold-soft);color:var(--gold);padding:8px 12px;border-radius:8px;font-size:14px}.sent{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.stack{display:flex;flex-direction:column;gap:10px}.stack-lg{display:flex;flex-direction:column;gap:20px}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field span{font:500 11px var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}input,select{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:9px 11px;min-width:0;width:100%}.btn{border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);border-radius:999px;padding:9px 18px;font-weight:600;cursor:pointer;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.ghost{background:transparent;color:var(--accent)}.btn.small{padding:4px 12px;font-size:13px}.btn.danger{background:transparent;border-color:var(--danger);color:var(--danger)}.linkish{background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line)}.page{max-width:1180px;margin:0 auto;padding-block:28px 72px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:24px}.top{display:flex;flex-direction:column;gap:14px}.top-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.account{display:flex;gap:14px;align-items:center;font-size:14px}.account.inline input{width:160px;padding:5px 9px}.groupbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding-block:12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.group-name{display:flex;align-items:baseline;gap:10px;min-width:0}.group-name select{width:auto;font-weight:600}.gname{font:italic 500 20px var(--f-display)}.group-actions{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap}.linkbox{flex-basis:100%;display:flex;flex-direction:column;gap:4px}.linkbox.inline{flex-direction:row;gap:8px}.search{font-size:20px;padding:14px 18px;border:1.5px solid var(--ink);border-radius:12px}.search::placeholder{color:var(--muted)}.filters{display:flex;flex-wrap:wrap;gap:6px}.filters button{background:transparent;border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:500;cursor:pointer}.filters button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.filters .count{margin-left:6px;opacity:.7;font-variant-numeric:tabular-nums}details.add{border:1px dashed var(--accent);border-radius:12px;padding:0 16px}details.add summary{cursor:pointer;padding:12px 0;font-weight:600;color:var(--accent);list-style:none}details.add summary::-webkit-details-marker{display:none}.add-form{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;padding-bottom:16px}@media (max-width: 580px){.add-form{grid-template-columns:1fr}}.list{display:flex;flex-direction:column;gap:14px}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:12px}.title{font:500 26px/1.15 var(--f-display);margin:0;text-wrap:balance}.author{margin:2px 0 0;color:var(--muted);font-style:italic}.copies{display:flex;flex-direction:column;border-top:1px solid var(--line)}.copy{display:flex;flex-direction:column;gap:8px;padding:12px 0;border-bottom:1px solid var(--line)}.copy-main{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.owner{font-weight:600}.ctrl{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px}.ctrl select{width:auto;max-width:190px;padding:5px 8px;font-size:13px}.inline{display:flex;gap:6px;align-items:center}.inline input{width:140px;padding:5px 8px;font-size:13px}.chip{font:500 11.5px var(--f-mono);letter-spacing:.05em;text-transform:uppercase;padding:3px 9px;border-radius:999px;white-space:nowrap}.chip.home{background:var(--accent-soft);color:var(--accent)}.chip.lent{background:var(--gold-soft);color:var(--gold);border:1px solid var(--gold)}.verdicts{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px;color:var(--muted)}.verdicts b{color:var(--ink);font-weight:600}.v.up:before,.v.good:before,.v.meh:before,.v.down:before{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;content:"";vertical-align:1px}.v.up:before{background:var(--accent)}.v.good:before{background:color-mix(in srgb,var(--accent) 50%,var(--surface))}.v.meh:before{background:var(--gold)}.v.down:before{background:var(--muted)}.mine-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}.segmented.verdict button[aria-pressed=true].good{background:color-mix(in srgb,var(--accent) 60%,var(--surface));color:var(--ink)}.segmented.verdict button[aria-pressed=true].meh{background:var(--gold);color:var(--bg)}.segmented.verdict button[aria-pressed=true].down{background:var(--muted);color:var(--bg)}.line{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:13px}.line-label{font:500 11px var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-right:2px}.line li:not(.line-label){display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:2px 4px 2px 3px}.line li.me{border-color:var(--accent)}.line .n{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--gold-soft);color:var(--gold);font:500 11px var(--f-mono);font-variant-numeric:tabular-nums}.line li:not(.line-label):not(:has(.line-ctrl)){padding-right:10px}.line-ctrl{display:inline-flex}.line-ctrl button{background:none;border:0;cursor:pointer;color:var(--muted);width:22px;height:22px;border-radius:50%;font-size:13px;line-height:1}.line-ctrl button:hover:not(:disabled){background:var(--accent-soft);color:var(--accent)}.line-ctrl button:disabled{opacity:.3;cursor:default}.place{font-size:13px;font-weight:600;color:var(--gold)}.owner-tools{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}.chip.off{background:transparent;color:var(--muted);border:1px dashed var(--muted)}.foryou{background:var(--gold-soft);border-radius:14px;padding:14px 18px}.foryou h2{font:italic 500 20px var(--f-display);margin:0 0 6px}.foryou ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.foryou li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;padding:8px 0;border-top:1px solid color-mix(in srgb,var(--gold) 25%,transparent)}.foryou li:first-child{border-top:0}.foryou li span{min-width:0}.foryou li.info{color:var(--muted);font-size:14px}.foryou li.info i,.foryou li.info b{color:var(--ink)}.segmented button{background:transparent;border:0;padding:5px 12px;font-size:13px;font-weight:500;cursor:pointer}.segmented button+button{border-left:1px solid var(--line)}.empty{text-align:center;color:var(--muted);padding:44px 16px;border:1px dashed var(--line);border-radius:14px}.empty strong{display:block;font:500 22px var(--f-display);color:var(--ink);margin-bottom:6px}.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%);background:var(--ink);color:var(--bg);padding:9px 16px;border-radius:999px;font-size:14px;max-width:calc(100% - 32px)}@media (prefers-reduced-motion: no-preference){.toast{animation:rise .2s ease-out}@keyframes rise{0%{opacity:0;transform:translate(-50%,8px)}}}.members{list-style:none;margin:0;padding:0;flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px}.members button{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px 12px;font-size:13px;font-weight:500;cursor:pointer}.members button:hover{border-color:var(--accent)}.members button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.shelf-head{display:flex;flex-direction:column;gap:10px}.shelf-title{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}.shelf-title h2{font:italic 500 26px/1.1 var(--f-display);margin:0}.star{display:inline-block;margin-left:10px;vertical-align:.3em;font:500 11px var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--gold);background:var(--gold-soft);border:1px solid var(--gold);border-radius:999px;padding:2px 9px;white-space:nowrap}.history{display:flex;flex-direction:column;gap:6px}.history>button{align-self:flex-start}.history-list{list-style:none;margin:0;padding:0 0 0 10px;border-left:2px solid var(--line);display:flex;flex-direction:column;gap:3px;font-size:13px}.history-list li{display:flex;flex-wrap:wrap;gap:4px 10px}.history-list b{font-weight:600}.members .pts{margin-left:7px;font:500 11px var(--f-mono);font-variant-numeric:tabular-nums;color:var(--gold);background:var(--gold-soft);border-radius:999px;padding:1px 6px}.members button[aria-pressed=true] .pts{background:color-mix(in srgb,var(--accent-ink) 22%,transparent);color:var(--accent-ink)}.scoreline{margin:0;display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px;color:var(--muted)}.scoreline b{color:var(--gold);font-weight:600}.edit-form{flex-basis:100%;display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:end}.edit-actions{display:flex;gap:6px}@media (max-width: 580px){.edit-form{grid-template-columns:1fr}}.segmented.tabs{align-self:stretch}.segmented.tabs button{flex:1;padding:8px 12px;font-size:14px}.segmented button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.login-links{display:flex;flex-wrap:wrap;gap:6px 16px}.account{flex-wrap:wrap}.account.inline input[type=password]{width:220px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.eyebrow{display:block;color:var(--accent);font:600 11px var(--f-body);letter-spacing:.13em;text-transform:uppercase;margin-bottom:8px}.hint{font-size:12.5px;color:var(--muted);margin:6px 0 0}.topbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px 24px;padding-bottom:16px;border-bottom:1px solid var(--line)}.topbar .wordmark{font-size:28px;white-space:nowrap}.topbar nav{display:flex;gap:28px}.topbar nav button{background:none;border:0;padding:6px 0;cursor:pointer;color:var(--muted);font-size:14px;font-weight:600;position:relative}.topbar nav button:hover{color:var(--ink)}.topbar nav button.active{color:var(--ink)}.topbar nav button.active:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--accent)}.user-actions{justify-self:end;display:flex;gap:14px;align-items:center}.icon-button{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;cursor:pointer}.icon-button:hover{border-color:var(--accent);color:var(--accent)}.intro{display:flex;align-items:flex-end;justify-content:space-between;gap:24px 32px;padding-block:00px 4px}.intro h1{font:600 clamp(42px,6vw,72px)/.98 var(--f-display);letter-spacing:-.03em;margin:0;max-width:680px;text-wrap:balance}.intro h1 em{color:var(--accent)}.intro p{color:var(--muted);font-size:16px;line-height:1.65;max-width:560px;margin:0}.btn.primary{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:0 22px;background:var(--ink);border-color:var(--ink);color:var(--bg);font-weight:700}.btn.primary svg{width:18px;height:18px}.view-title{font:600 clamp(32px,5vw,44px)/1 var(--f-display);letter-spacing:-.02em;margin:8px 0 0}.list-view{width:100%}.bookcase{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding-bottom:20px;overflow:hidden;box-shadow:0 18px 50px var(--panel-shadow),inset 0 1px color-mix(in srgb,var(--ink) 6%,transparent);background-image:linear-gradient(180deg,color-mix(in srgb,var(--ink) 3%,transparent),transparent 140px)}.bookcase-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px 20px;padding:26px 32px 6px}.bookcase-head h2{font:600 30px/1.1 var(--f-display);margin:0}.bookcase-head-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}.book-count{color:var(--muted);font-size:13px}.bookcase-msg{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:56px 16px;color:var(--muted)}.bookcase-msg strong{font:500 22px var(--f-display);color:var(--ink)}.person-shelf{position:relative}.shelf-label{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:16px 32px 0}.shelf-label h3{font:500 17px var(--f-display);margin:0}.shelf-label h3 strong{font-weight:700}.shelf-label small{color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums}.shelf-scene{position:relative;min-height:calc(var(--spine-max) + 34px);padding:14px 32px 0;display:flex;align-items:flex-end}.shelf-scene.is-empty{min-height:74px}.shelf-scene.measure{min-height:0;height:0;padding-top:0;overflow:hidden}.spines{flex:1;min-width:0;display:flex;align-items:flex-end;gap:var(--spine-gap);position:relative;z-index:2;padding-bottom:15px}.person-shelf.full .shelf-scene+.shelf-scene{margin-top:6px}.spine-list{list-style:none;margin:0;padding:0;display:flex;align-items:flex-end;gap:var(--spine-gap);min-width:0}.spine-list li{display:flex}.shelf-empty{margin:0 0 18px;color:var(--muted);font-size:13px;font-style:italic}.shelf-board{position:absolute;left:18px;right:18px;bottom:0;height:17px;z-index:3;background:var(--board);border:1.5px solid var(--outline);box-shadow:0 6px 0 var(--board-edge),0 16px 18px -4px var(--soft-shadow)}.spine{position:relative;width:var(--spine-w);height:calc(var(--h, .9) * var(--spine-max));border:1.5px solid var(--outline);border-radius:2px 2px 0 0;padding:10px 4px 8px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:6px;cursor:pointer;text-align:center;transition:transform .18s ease,box-shadow .18s ease;box-shadow:3px 0 6px -2px var(--soft-shadow)}.spine:before{content:"";position:absolute;left:0;right:0;top:7px;height:3px;border-block:1px solid color-mix(in srgb,currentColor 35%,transparent);pointer-events:none}.spine{--inner-len: calc(var(--h, .9) * var(--spine-max) - 3px);--inner-wid: calc(var(--spine-w) - 3px);--title-len: calc(var(--inner-len) * .7 - 12px);--author-len: calc(var(--inner-len) * .28 - 8px)}.spine.no-author{--title-len: calc(var(--inner-len) - 20px)}.spine-title,.spine-author{position:absolute;left:50%;display:flex;align-items:center;justify-content:center;text-align:center;transform:translate(-50%,-50%) rotate(-90deg);pointer-events:none}.spine-title{top:calc(12px + var(--title-len) / 2);width:var(--title-len);height:calc(var(--inner-wid) - 8px)}.spine-title>span{font:500 14px/1.08 var(--f-display);overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}.spine-author{top:calc(var(--inner-len) * .72 + var(--author-len) / 2);width:var(--author-len);height:12px;font:600 8px var(--f-body);letter-spacing:.08em;text-transform:uppercase}.spine-author>span{display:block;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.spine:hover,.spine.selected{transform:translateY(-9px)}.spine.selected{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--accent),0 10px 14px var(--soft-shadow)}.spine:hover{box-shadow:3px 8px 12px -2px var(--soft-shadow)}.spine:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.spine-ribbon{position:absolute;top:-1.5px;right:5px;width:11px;height:22px;background:var(--sp-paper);clip-path:polygon(0 0,100% 0,100% 100%,50% 72%,0 100%)}.spine-ribbon:after{content:"";position:absolute;top:0;right:1px;bottom:2px;left:1px;background:var(--ribbon);clip-path:polygon(0 0,100% 0,100% 100%,50% 72%,0 100%)}.legend{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}.legend-ribbon{width:8px;height:14px;background:var(--ribbon);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sp-paper) 70%,transparent);clip-path:polygon(0 0,100% 0,100% 100%,50% 72%,0 100%)}.more-books{flex:0 0 var(--more-w);width:var(--more-w);height:44px;align-self:center;background:transparent;border:0;border-radius:10px;cursor:pointer;color:var(--ink);font:600 22px var(--f-display);letter-spacing:.1em}.more-books:hover{color:var(--accent);background:var(--accent-soft)}.tone-pink{background:var(--sp-pink);color:var(--sp-ink)}.tone-cream{background:var(--sp-cream);color:var(--sp-ink)}.tone-wine{background:var(--sp-wine);color:var(--sp-paper)}.tone-gold{background:var(--sp-gold);color:var(--sp-ink)}.tone-sage{background:var(--sp-sage);color:var(--sp-ink)}.tone-blue{background:var(--sp-blue);color:var(--sp-ink)}.tone-plum{background:var(--sp-plum);color:var(--sp-paper)}.tone-navy{background:var(--sp-navy);color:var(--sp-paper)}.tone-forest{background:var(--sp-forest);color:var(--sp-paper)}.tone-aubergine{background:var(--sp-aubergine);color:var(--sp-paper)}.tone-cocoa{background:var(--sp-cocoa);color:var(--sp-paper)}.content-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(270px,.7fr);gap:24px;align-items:start}.content-grid.card-only>.library-card{grid-column:2}.listing{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:30px;display:grid;grid-template-columns:210px minmax(0,1fr);gap:32px;scroll-margin-top:16px}.listing.empty-listing{grid-template-columns:1fr}.listing.empty-listing h2{font:600 32px/1.1 var(--f-display);margin:0 0 8px}.listing.empty-listing .btn{margin-top:14px}.listing h2:focus{outline:none}.listing h2:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.cover{position:relative;aspect-ratio:.68;width:100%;max-width:210px;align-self:start;border:1.5px solid var(--outline);border-radius:2px 8px 8px 2px;box-shadow:0 18px 30px -6px var(--soft-shadow),0 3px 6px #08040459;padding:22px 18px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.cover:after{content:"";position:absolute;top:9px;right:9px;bottom:9px;left:9px;border:1px solid currentColor;opacity:.45;pointer-events:none}.cover span,.cover strong,.cover i{position:relative;z-index:1}.cover span{font:600 8px var(--f-body);letter-spacing:.16em}.cover strong{font:600 clamp(22px,2.6vw,31px)/1.04 var(--f-display);overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}.cover i{font:italic 500 14px var(--f-display)}.book-copy{min-width:0;padding-top:4px}.book-copy h2{font:600 clamp(30px,3.6vw,46px)/1.06 var(--f-display);margin:0;text-wrap:balance;overflow-wrap:anywhere}.book-copy .author{margin:8px 0 20px;font:italic 500 16px var(--f-display);color:var(--muted)}.tabs{display:flex;gap:24px;border-bottom:1px solid var(--line)}.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:0 0 11px;color:var(--muted);font-size:13.5px;font-weight:700;cursor:pointer}.tabs button.active{color:var(--ink);border-bottom-color:var(--accent)}.details-panel{display:flex;flex-direction:column;gap:16px;padding-top:18px}.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0}.facts div{min-width:0}.facts dt{font:600 10px var(--f-body);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:3px}.facts dd{margin:0;font-size:13.5px;font-weight:600;overflow-wrap:anywhere}.availability i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:1px;background:var(--sage)}.availability.out i{background:var(--gold)}.copy.compact{padding:0;border-bottom:0}.copy.compact .ctrl{margin-left:0}.choice-group>span{display:block;font:600 10px var(--f-body);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.choice-group>div{display:flex;flex-wrap:wrap;gap:6px}.choice-group button{background:transparent;border:1px solid var(--line);border-radius:999px;padding:7px 12px;font-size:12.5px;font-weight:500;cursor:pointer}.choice-group button:hover{border-color:var(--accent)}.choice-group button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.comments{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--line);padding-top:14px}.comment-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.reader-comment{border-left:3px solid var(--accent);background:var(--bg);padding:8px 12px;border-radius:0 8px 8px 0}.reader-comment p{margin:3px 0 0;font-size:14px;overflow-wrap:anywhere}.comment-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;font-size:13px}.comment-meta time{color:var(--muted);font-size:12px}.comment-meta>button,.comment-confirm{margin-left:auto}.comment-confirm{display:inline-flex;gap:10px}.danger-text{color:var(--danger)}.comment-form label{display:block;font:600 10px var(--f-body);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.comment-form>div{display:flex}.comment-form input{flex:1;border-radius:9px 0 0 9px;border-right:0}.comment-form button{border:0;border-radius:0 9px 9px 0;padding:0 16px;font-weight:700;cursor:pointer;background:var(--ink);color:var(--bg)}.comment-form button:disabled{opacity:.5;cursor:not-allowed}.log-panel{padding-top:8px}.log-list{list-style:none;margin:0;padding:0}.log-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.log-row p{margin:0;font-size:14px}.log-row time{color:var(--muted);font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.log-icon{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.log-row.borrowed .log-icon,.log-row.passed .log-icon{background:var(--gold-soft);color:var(--gold)}.log-row.returned .log-icon{background:var(--sage-soft);color:var(--sage)}.log-icon svg{width:15px;height:15px}.library-card{--ink: #2a1a20;--muted: #6a5059;--accent: #a3194f;--accent-soft: #f8dbe5;--surface: #fff7f9;--line: #e7c9d3;--sp-pink: #f6c1d4;color:var(--ink);background:var(--card-pink);border:1.5px solid var(--outline);border-radius:17px;overflow:hidden;transform:rotate(1deg);box-shadow:0 20px 36px -8px var(--soft-shadow),0 3px 8px #08040459}.card-top{background:var(--wine);color:#fff;padding:18px 22px;display:flex;justify-content:space-between;align-items:center;gap:12px}.card-mark{width:58px;height:58px;border-radius:50%;border:1px solid var(--sp-pink);flex-shrink:0;display:grid;place-items:center;font:italic 600 16px var(--f-display);color:var(--sp-pink)}.card-top p{margin:0;text-align:right;font-size:9px;line-height:1.5;letter-spacing:.08em;text-transform:uppercase;min-width:0;overflow-wrap:anywhere}.card-top p strong{font-size:11px}.card-no{font-family:var(--f-mono);letter-spacing:.04em;white-space:nowrap}.card-body{padding:24px 24px 18px;background-image:repeating-linear-gradient(0deg,transparent,transparent 27px,color-mix(in srgb,var(--ink) 9%,transparent) 28px)}.card-body h2{font:600 28px/1.1 var(--f-display);margin:0;overflow-wrap:anywhere}.points{display:flex;align-items:center;gap:14px;margin:20px 0 14px}.points strong{font:600 62px/.8 var(--f-display);color:var(--accent);font-variant-numeric:tabular-nums}.points span{font:700 9px var(--f-body);letter-spacing:.12em;text-transform:uppercase}.point-breakdown{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;font-size:12.5px}.point-breakdown span{color:var(--muted)}.card-footer{border-top:1.5px solid var(--outline);padding:14px 22px;display:flex;justify-content:space-between;align-items:flex-end;gap:12px}.card-footer>span{font-size:8.5px;letter-spacing:.12em}.barcode{font-family:var(--f-mono);letter-spacing:-2px;font-weight:700}@media (max-width: 900px){.topbar{grid-template-columns:1fr auto}.topbar nav{grid-column:1 / -1;grid-row:2;gap:22px;overflow-x:auto;padding-bottom:4px}.content-grid{grid-template-columns:1fr}.content-grid.card-only>.library-card{grid-column:auto}.library-card{max-width:440px;transform:none}}@media (max-width: 620px){:root{--spine-w: 42px;--spine-gap: 5px;--more-w: 40px;--deco-w: 66px;--spine-max: 150px}.topbar .wordmark{font-size:22px}.user-actions{gap:10px}.user-actions .account{font-size:13px;gap:10px}.intro{display:block}.intro .btn.primary{margin-top:22px}.bookcase-head{padding:22px 18px 4px}.shelf-label{padding-inline:18px}.shelf-scene{padding:14px 18px 0}.shelf-board{left:10px;right:10px}.spine-title>span{font-size:13px}.listing{grid-template-columns:1fr;padding:22px 18px;gap:26px}.cover{width:170px}.cover-col{gap:14px}.title-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.modal-backdrop{padding-inline:8px}.facts{grid-template-columns:1fr 1fr}}.avatar-badge{display:inline-grid;place-items:center;flex-shrink:0;overflow:hidden;position:relative;width:22px;height:22px;border-radius:50%;background:var(--surface);border:1px solid var(--line);font:600 11px var(--f-body);color:var(--muted)}.avatar-badge img{position:absolute;top:16%;right:16%;bottom:16%;left:16%;width:68%;height:68%;object-fit:contain}.avatar-badge.md{width:38px;height:38px;font-size:15px}.avatar-badge.lg{width:60px;height:60px;font-size:22px;border-color:var(--outline);background:var(--surface)}.avatar-badge.none{background:var(--accent-soft);color:var(--accent);border-color:transparent}.members button{display:inline-flex;align-items:center;gap:7px;padding-left:4px}.members .avatar-badge{margin-right:0}.avatar-button{background:none;border:0;padding:0;border-radius:50%;cursor:pointer;display:grid}.avatar-button:hover .avatar-badge{border-color:var(--accent)}.avatar-button[aria-expanded=true] .avatar-badge{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--accent)}.avatar-panel{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px 20px 20px;display:flex;flex-direction:column;gap:14px}.avatar-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.avatar-panel h2{font:600 22px/1.1 var(--f-display);margin:0 0 2px}.avatar-panel p{margin:0}.avatar-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}.panel .avatar-picker{grid-template-columns:repeat(4,minmax(0,1fr))}.avatar-picker{align-items:start}.avatar-picker button{position:relative;aspect-ratio:1;width:100%;padding:0;cursor:pointer;overflow:hidden;background:var(--bg);border:1.5px solid transparent;border-radius:14px;transition:transform .15s ease,border-color .15s ease}.avatar-picker button img{position:absolute;top:10%;right:10%;bottom:10%;left:10%;width:80%;height:80%;object-fit:contain}.avatar-picker button:hover{border-color:var(--line);transform:translateY(-2px)}.avatar-picker button.selected{border-color:var(--accent);background:var(--accent-soft)}.avatar-picker button:disabled{cursor:progress}.shelf-deco{flex:0 0 var(--deco-w);width:var(--deco-w);align-self:stretch;display:flex;align-items:flex-end;justify-content:center;position:relative;z-index:2;padding-bottom:14px;margin-left:10px}.shelf-object{display:block;max-width:100%;max-height:calc(var(--spine-max) * .62);object-fit:contain;filter:drop-shadow(2px 6px 5px var(--soft-shadow))}.deco-pick{width:100%;min-height:72px;margin-bottom:4px;padding:8px 6px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:transparent;border:1.5px dashed var(--muted);border-radius:12px;color:var(--muted);font-size:11.5px;font-weight:600;line-height:1.2;text-align:center}.deco-pick span{font:400 22px/1 var(--f-display)}.deco-pick:hover{border-color:var(--accent);color:var(--accent)}.card-member{display:flex;align-items:center;gap:14px}.card-member .eyebrow{margin-bottom:2px}.cover-col{display:flex;flex-direction:column;gap:18px;min-width:0}.margins{display:flex;flex-direction:column;gap:10px}.margins-toggle{display:flex;align-items:baseline;justify-content:space-between;gap:8px;width:100%;background:none;border:0;border-bottom:1px dashed var(--line);padding:4px 0 8px;cursor:pointer;text-align:left}.margins-label{font:600 14px/1.2 var(--f-body);color:var(--accent)}.margins-count{font-size:12px;color:var(--muted);white-space:nowrap}.margins-toggle:hover .margins-label{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.margin-notes{background:var(--margin-paper);color:var(--pencil);border-radius:3px 10px 10px 3px;padding:14px 14px 16px 18px;display:flex;flex-direction:column;gap:12px;background-image:linear-gradient(90deg,transparent 9px,color-mix(in srgb,#c0475f 35%,transparent) 9px 10px,transparent 10px),repeating-linear-gradient(0deg,transparent 0 25px,color-mix(in srgb,var(--pencil) 9%,transparent) 25px 26px);box-shadow:0 10px 22px -8px var(--soft-shadow)}.margin-notes .hint{color:color-mix(in srgb,var(--pencil) 70%,transparent);font-family:var(--f-hand);font-size:18px;line-height:1.2;margin:0}.note-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.margin-note{transform:rotate(-1.2deg);transform-origin:left center}.margin-note:nth-child(2n){transform:rotate(.9deg)}.note-body{margin:0;font:500 20px/1.15 var(--f-hand);overflow-wrap:anywhere;white-space:pre-wrap}.note-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;margin-top:3px;font:600 16px/1.1 var(--f-hand);color:color-mix(in srgb,var(--pencil) 75%,transparent)}.note-meta time{font:500 11px var(--f-body)}.note-meta .linkish{font:500 11px var(--f-body);color:color-mix(in srgb,var(--pencil) 70%,transparent);text-decoration-color:currentColor}.note-meta .danger-text{color:#a3243a}.margin-form{display:flex;flex-direction:column;gap:6px;border-top:1px dashed color-mix(in srgb,var(--pencil) 30%,transparent);padding-top:10px}.margin-form label{font:600 10px var(--f-body);letter-spacing:.09em;text-transform:uppercase;color:color-mix(in srgb,var(--pencil) 75%,transparent)}.margin-form textarea{font:500 20px/1.15 var(--f-hand);color:var(--pencil);resize:vertical;min-height:54px;background:transparent;border:0;border-bottom:1.5px solid color-mix(in srgb,var(--pencil) 35%,transparent);border-radius:0;padding:2px 0}.margin-form textarea::placeholder{color:color-mix(in srgb,var(--pencil) 45%,transparent)}.margin-form textarea:focus-visible{outline:2px solid #a3194f;outline-offset:3px}.margin-form .btn{align-self:flex-start;background:#a3194f;border-color:#a3194f;color:#fff}.title-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.title-grid li{display:flex;min-width:0}.title-tile{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;text-align:left;cursor:pointer;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;transition:border-color .15s ease,transform .15s ease}.title-tile:hover{border-color:var(--accent);transform:translateY(-1px)}.tile-title{font:500 17px/1.2 var(--f-display);overflow-wrap:anywhere}.tile-author{font-size:12.5px;color:var(--muted);font-style:italic;overflow-wrap:anywhere}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;overflow-y:auto;background:#0e0808b8;padding:calc(24px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) calc(24px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));display:flex;align-items:flex-start;justify-content:center}.modal-panel{width:100%;max-width:980px;display:flex;flex-direction:column;gap:10px}.modal-bar{display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-intro{margin:0;font:500 italic 18px/1.3 var(--f-display);color:var(--ink)}.modal-intro span{color:var(--sage);font-style:normal;margin-right:4px}.modal-close{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;cursor:pointer;background:var(--surface);border:1px solid var(--line);color:var(--ink)}.modal-close:hover{border-color:var(--accent);color:var(--accent)}.copy-switch{display:flex;flex-wrap:wrap;gap:6px}.copy-switch button{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:500;cursor:pointer}.copy-switch button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.modal-panel .listing{box-shadow:0 24px 60px #00000080}.give-form{flex-basis:100%;display:flex;flex-direction:column;gap:8px;max-width:420px}.give-form select{width:auto;max-width:100%}.give-note{margin:0;color:var(--muted)}.play-view{width:100%}.play-head .eyebrow{margin-bottom:4px}.play-sub{margin:10px 0 0;color:var(--muted);max-width:60ch}.stack-empty{background:var(--surface);border:1px dashed var(--line);border-radius:18px;padding:40px 20px;text-align:center;color:var(--muted)}.stack-wrap{display:flex;flex-direction:column;gap:10px;max-width:720px;width:100%;margin-inline:auto}.play-layout{display:grid;gap:28px;align-items:start}@media (min-width: 1000px){.play-layout{grid-template-columns:minmax(0,1fr) 290px}.play-layout .board{margin-top:42px}}.board{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px 18px 16px;box-shadow:0 10px 24px -14px var(--soft-shadow)}.board-title{margin:0 0 12px;font:600 22px/1.1 var(--f-display)}.board-note{margin:0;color:var(--muted);font-size:14px}.board-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.board-list li{display:grid;grid-template-columns:22px auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:7px 8px;border-radius:12px}.board-list li.is-me{background:var(--accent-soft)}.board-place{font:600 16px/1 var(--f-display);color:var(--muted);text-align:center;font-variant-numeric:tabular-nums}.board-list li:first-child .board-place{color:var(--accent)}.board-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-best{color:var(--muted);font-size:13px;white-space:nowrap}.board-best b{color:var(--ink);font:600 17px/1 var(--f-display);font-variant-numeric:tabular-nums;margin-right:1px}.board-waiting{margin:12px 0 0;padding-top:12px;border-top:1px dashed var(--line);color:var(--muted);font-size:13px}.board-waiting span{color:var(--ink)}.stack-hud{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:32px;color:var(--muted);font-size:13px}.stack-score b{font:600 26px/1 var(--f-display);color:var(--ink);font-variant-numeric:tabular-nums;margin-right:2px}.stack-hud-right{display:inline-flex;align-items:center;gap:12px}.stack-best b{color:var(--ink);font-variant-numeric:tabular-nums}.stack-pause{font:inherit;font-size:13px;color:var(--ink);background:var(--surface);cursor:pointer;border:1px solid var(--line);border-radius:999px;padding:4px 12px}.stack-pause:hover{border-color:var(--accent)}.stack-pause:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.stack-area{position:relative;height:min(70vh,560px);min-height:360px;overflow:hidden;cursor:pointer;border-radius:22px;border:1px solid var(--line);background:radial-gradient(ellipse 80% 60% at 50% 0%,color-mix(in srgb,var(--page-glow) 80%,transparent),transparent 70%),var(--surface);user-select:none;-webkit-user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.stack-area:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.stack-world{position:absolute;top:0;right:6%;bottom:0;left:6%;transition:transform .35s ease}.stack-base{position:absolute;left:-4%;right:-4%;bottom:0;background:var(--board);border-top:1.5px solid var(--outline);box-shadow:0 -10px 18px -10px var(--soft-shadow)}.stack-book{position:absolute;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1.5px solid var(--outline);border-radius:3px;padding:0 8px;box-shadow:0 4px 8px -4px var(--soft-shadow)}.stack-book:before{content:"";position:absolute;top:4px;bottom:4px;right:4px;width:5px;background:repeating-linear-gradient(0deg,color-mix(in srgb,var(--sp-paper) 85%,transparent) 0 1px,transparent 1px 3px);border-radius:1px;opacity:.55}.stack-book span{font:500 14px/1 var(--f-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;position:relative}.stack-book.moving{box-shadow:0 10px 16px -8px var(--soft-shadow)}.stack-book.falling{animation:stack-fall-right .9s ease-in forwards}.stack-book.falling.left{animation-name:stack-fall-left}@keyframes stack-fall-right{to{transform:translate(40px,260px) rotate(28deg);opacity:0}}@keyframes stack-fall-left{to{transform:translate(-40px,260px) rotate(-28deg);opacity:0}}.stack-flash{position:absolute;top:18%;left:50%;transform:translate(-50%);pointer-events:none;font:600 italic 28px var(--f-display);color:var(--accent);text-shadow:0 2px 10px var(--soft-shadow);animation:stack-flash .9s ease-out forwards}@keyframes stack-flash{0%{opacity:0;transform:translate(-50%,8px)}20%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-14px)}}.stack-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:20px;pointer-events:none;background:color-mix(in srgb,var(--bg) 35%,transparent)}.stack-overlay p{margin:0;color:var(--ink)}.stack-card{display:flex;flex-direction:column;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:20px 28px;box-shadow:0 18px 40px -10px var(--soft-shadow)}.stack-overlay-title{font:600 34px/1.1 var(--f-display)}.stack-overlay p.stack-card-note{color:var(--muted);font-size:14px}.stack-overlay p.stack-new-best{font:600 italic 18px var(--f-display);color:var(--accent);letter-spacing:.02em;animation:stack-flash-in .5s ease-out}@keyframes stack-flash-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}kbd{font:600 12px var(--f-mono);padding:2px 7px;border-radius:6px;border:1px solid var(--line);background:var(--surface);color:var(--ink)}@media (max-width: 620px){.stack-book span{font-size:12.5px}.stack-area{height:min(64vh,520px)}}@media (prefers-reduced-motion: reduce){.stack-world{transition:none}.stack-book.falling{animation:none;opacity:0}.stack-flash,.stack-overlay p.stack-new-best{animation:none}}.check{display:inline-flex;align-items:center;gap:7px;cursor:pointer}.check input{width:16px;height:16px;margin:0;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.check em{color:var(--muted);font-style:normal}.add-everywhere{grid-column:1 / -1;font-size:13.5px}@media (prefers-reduced-motion: reduce){.title-tile{transition:none}.title-tile:hover{transform:none}.margin-note,.margin-note:nth-child(2n){transform:none}.avatar-picker button{transition:none}.avatar-picker button:hover{transform:none}.spine{transition:none}.spine:hover,.spine.selected,.library-card{transform:none}}
