@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_next/static/media/nunito-cyrillic-ext-wght-normal.61774f03.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_next/static/media/nunito-cyrillic-wght-normal.529dd11c.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_next/static/media/nunito-vietnamese-wght-normal.0dc71c53.woff2) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_next/static/media/nunito-latin-ext-wght-normal.abd45177.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_next/static/media/nunito-latin-wght-normal.5cc7ff84.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/fraunces-vietnamese-soft-normal.9efed48f.woff2) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/fraunces-latin-ext-soft-normal.8521430a.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/fraunces-latin-soft-normal.4e1b819b.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root,[data-theme=bambou]{--h:150;--c:0.11}[data-theme=ocean]{--h:245;--c:0.13}[data-theme=lavande]{--h:295;--c:0.12}[data-theme=terracotta]{--h:40;--c:0.13}[data-theme=cerise]{--h:355;--c:0.15}[data-theme=encre]{--h:260;--c:0.015}:root,[data-theme]{--bg:oklch(98.6% calc(var(--c) * 0.07) var(--h));--surface:oklch(100% 0 0);--surface-2:oklch(96.5% calc(var(--c) * 0.22) var(--h));--fg:oklch(22% calc(var(--c) * 0.15) var(--h));--muted:oklch(50% calc(var(--c) * 0.2) var(--h));--line:oklch(25% calc(var(--c) * 0.2) var(--h)/0.09);--line-strong:oklch(25% calc(var(--c) * 0.2) var(--h)/0.17);--accent:oklch(54% var(--c) var(--h));--accent-strong:oklch(45% var(--c) var(--h));--accent-fg:oklch(99% 0.005 var(--h));--accent-soft:oklch(54% var(--c) var(--h)/0.13);--glass:oklch(99.5% calc(var(--c) * 0.04) var(--h)/0.78);--glass-strong:oklch(99.5% calc(var(--c) * 0.04) var(--h)/0.9);--glass-edge:oklch(25% calc(var(--c) * 0.2) var(--h)/0.08);--blob-1:oklch(88% calc(var(--c) * 0.9) var(--h)/0.45);--blob-2:oklch(92% calc(var(--c) * 0.7) calc(var(--h) + 50)/0.35);--blob-3:oklch(94% calc(var(--c) * 0.5) calc(var(--h) - 40)/0.3);--lent:oklch(55% 0.13 65);--lent-soft:oklch(75% 0.15 75/0.2);--late:oklch(55% 0.2 27);--late-soft:oklch(62% 0.2 27/0.14);--ok:oklch(52% 0.13 150);--ok-soft:oklch(65% 0.15 150/0.16);--shadow:0 1px 2px oklch(25% 0.03 var(--h)/0.05),0 4px 16px oklch(25% 0.03 var(--h)/0.05);--shadow-lift:0 2px 6px oklch(25% 0.03 var(--h)/0.07),0 16px 36px oklch(25% 0.04 var(--h)/0.11);color-scheme:light;--logo-bg:oklch(52% calc(var(--c) * 1.05) var(--h));--logo-ink:oklch(38% var(--c) var(--h));--logo-soft:oklch(90% calc(var(--c) * 0.35) var(--h))}.logo{flex:none}.auth-head .logo{margin:0 auto 12px;display:block}@media (prefers-color-scheme:dark){:root:not([data-mode=light]),:root:not([data-mode=light]) [data-theme]{--bg:oklch(15% calc(var(--c) * 0.1) var(--h));--surface:oklch(19.5% calc(var(--c) * 0.12) var(--h));--surface-2:oklch(24% calc(var(--c) * 0.16) var(--h));--fg:oklch(95% calc(var(--c) * 0.04) var(--h));--muted:oklch(72% calc(var(--c) * 0.15) var(--h));--line:oklch(100% 0 0/0.08);--line-strong:oklch(100% 0 0/0.15);--accent:oklch(74% calc(var(--c) * 1.05) var(--h));--accent-strong:oklch(84% calc(var(--c) * 0.85) var(--h));--accent-fg:oklch(16% calc(var(--c) * 0.3) var(--h));--accent-soft:oklch(74% var(--c) var(--h)/0.18);--glass:oklch(17% calc(var(--c) * 0.1) var(--h)/0.78);--glass-strong:oklch(19% calc(var(--c) * 0.12) var(--h)/0.9);--glass-edge:oklch(100% 0 0/0.1);--blob-1:oklch(35% calc(var(--c) * 0.9) var(--h)/0.35);--blob-2:oklch(30% calc(var(--c) * 0.7) calc(var(--h) + 50)/0.3);--blob-3:oklch(28% calc(var(--c) * 0.6) calc(var(--h) - 40)/0.25);--lent:oklch(83% 0.12 80);--lent-soft:oklch(75% 0.14 75/0.18);--late:oklch(74% 0.16 25);--late-soft:oklch(65% 0.18 25/0.2);--ok:oklch(80% 0.14 150);--ok-soft:oklch(70% 0.15 150/0.18);--shadow:0 1px 1px oklch(0% 0 0/0.2),0 8px 24px oklch(0% 0 0/0.3);--shadow-lift:0 2px 4px oklch(0% 0 0/0.3),0 18px 40px oklch(0% 0 0/0.45);color-scheme:dark}}:root[data-mode=dark],:root[data-mode=dark] [data-theme]{--bg:oklch(15% calc(var(--c) * 0.1) var(--h));--surface:oklch(19.5% calc(var(--c) * 0.12) var(--h));--surface-2:oklch(24% calc(var(--c) * 0.16) var(--h));--fg:oklch(95% calc(var(--c) * 0.04) var(--h));--muted:oklch(72% calc(var(--c) * 0.15) var(--h));--line:oklch(100% 0 0/0.08);--line-strong:oklch(100% 0 0/0.15);--accent:oklch(74% calc(var(--c) * 1.05) var(--h));--accent-strong:oklch(84% calc(var(--c) * 0.85) var(--h));--accent-fg:oklch(16% calc(var(--c) * 0.3) var(--h));--accent-soft:oklch(74% var(--c) var(--h)/0.18);--glass:oklch(17% calc(var(--c) * 0.1) var(--h)/0.78);--glass-strong:oklch(19% calc(var(--c) * 0.12) var(--h)/0.9);--glass-edge:oklch(100% 0 0/0.1);--blob-1:oklch(35% calc(var(--c) * 0.9) var(--h)/0.35);--blob-2:oklch(30% calc(var(--c) * 0.7) calc(var(--h) + 50)/0.3);--blob-3:oklch(28% calc(var(--c) * 0.6) calc(var(--h) - 40)/0.25);--lent:oklch(83% 0.12 80);--lent-soft:oklch(75% 0.14 75/0.18);--late:oklch(74% 0.16 25);--late-soft:oklch(65% 0.18 25/0.2);--ok:oklch(80% 0.14 150);--ok-soft:oklch(70% 0.15 150/0.18);--shadow:0 1px 1px oklch(0% 0 0/0.2),0 8px 24px oklch(0% 0 0/0.3);--shadow-lift:0 2px 4px oklch(0% 0 0/0.3),0 18px 40px oklch(0% 0 0/0.45);color-scheme:dark}:root{--font:"Nunito Variable",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,system-ui,sans-serif;--font-display:"Fraunces Variable",Georgia,"Times New Roman",serif;--font-mono:ui-monospace,"SF Mono",Menlo,monospace;--radius:18px;--radius-sm:12px;--blur:blur(20px) saturate(160%)}*{box-sizing:border-box}body,html{margin:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font);font-size:16px;line-height:1.5;letter-spacing:0;-webkit-font-smoothing:antialiased;min-height:100dvh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{font-family:var(--font-display);text-wrap:balance;margin:0;line-height:1.15}.book-title,.brand-text strong,.choice-name,.site-step-n,.slip strong,.spine,h1,h2,h3{font-variation-settings:"SOFT" 100}h1{font-size:clamp(1.9rem,1.5rem + 1.6vw,2.5rem);letter-spacing:-.015em}h1,h2{font-weight:650}h2{font-size:1.25rem;letter-spacing:-.018em}ul{padding-left:1.2em}.muted{color:var(--muted)}.small{font-size:.875rem}.label{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}.stack{display:flex;flex-direction:column;gap:14px}::selection{background:var(--accent-soft)}.glass{background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--glass-edge);box-shadow:var(--shadow)}@supports not (((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))) or (-webkit-backdrop-filter:blur(1px))){.glass{background:var(--surface)}}.backdrop{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(70vmax 34vmax at 12% -6%,var(--blob-1),transparent 70%),radial-gradient(50vmax 28vmax at 100% 0,var(--blob-2),transparent 70%),radial-gradient(60vmax 30vmax at 50% 110%,var(--blob-3),transparent 70%),var(--bg)}.app{position:relative;isolation:isolate}.wrap{max-width:1120px;margin:0 auto;padding:28px 20px 64px}.narrow{max-width:440px}.page-title{margin:6px 0 22px}.title-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.title-action,.title-row .page-title{margin-bottom:22px}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;border-width:0 0 1px;border-color:var(--line);border-radius:0;box-shadow:none}.topbar-in{max-width:1120px;margin:0 auto;padding:10px 20px;gap:16px}.brand,.topbar-in{display:flex;align-items:center}.brand{gap:10px;color:inherit;min-width:0}.brand:hover{text-decoration:none}.brand-text{display:flex;flex-direction:column;line-height:1.15;min-width:0}.brand-text strong{font-family:var(--font-display);font-size:1.1rem;font-weight:700;letter-spacing:-.02em}.brand-text span{font-size:.8rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-text .brand-family{font-size:.95rem;font-weight:600;color:var(--accent)}.nav{gap:2px;margin-left:auto;padding:3px;border-radius:999px;border:1px solid var(--line);background:var(--surface)}.nav,.nav a{display:flex}.nav a{position:relative;align-items:center;gap:7px;padding:7px 14px;border-radius:999px;color:var(--muted);font-weight:590;font-size:.9rem;white-space:nowrap;transition:background .2s,color .2s}.nav a:hover{color:var(--fg);text-decoration:none}.nav a[aria-current=page]{background:var(--accent-soft);color:var(--accent-strong)}.nav a[aria-current=page] svg{color:var(--accent)}.tab-icon{display:inline-flex}.topbar-actions{display:flex;gap:2px}.icon-btn{display:grid;place-items:center;width:38px;height:38px;min-height:0;padding:0;border-radius:999px;border:0;background:none;color:var(--muted);cursor:pointer;box-shadow:none}.icon-btn:hover,.icon-btn[aria-current=page]{background:var(--accent-soft);color:var(--accent-strong)}.count{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:oklch(63% .22 27);color:#fff;font-size:.7rem;line-height:18px;text-align:center;font-weight:700}.tabbar{display:none}@media (min-width:761px) and (max-width:1060px){.topbar-in{flex-wrap:wrap;row-gap:8px}.brand{flex:1 1 auto}.topbar-actions{margin-left:auto}.nav{order:3;flex:1 1 100%;margin-left:0}.nav a{flex:1 1;justify-content:center}}@media (max-width:420px){.topbar .brand,.topbar-in{gap:8px}.topbar .brand .logo{width:36px;height:36px}.topbar .brand-text strong{white-space:nowrap;font-size:1rem}.topbar-actions{gap:0}.topbar-actions .icon-btn{width:32px;height:36px}}@media (max-width:760px){.wrap{padding:18px 16px calc(96px + env(safe-area-inset-bottom))}.topbar-in{padding:8px 16px}.brand-text .brand-family{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.85rem;line-height:1.2}.title-action{position:fixed;z-index:31;right:16px;bottom:calc(88px + env(safe-area-inset-bottom));margin:0}.title-action .add-link{width:58px;height:58px;padding:0;border-radius:999px;justify-content:center;box-shadow:var(--shadow-lift)}.title-action .add-link span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.topbar-actions{margin-left:auto}.nav{display:none}.tabbar{position:fixed;z-index:30;left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));display:flex;justify-content:space-around;padding:6px;border-radius:28px;background:var(--glass-strong);border:1px solid var(--line);box-shadow:var(--shadow-lift)}.tabbar a{position:relative;flex:1 1;display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 2px 4px;border-radius:22px;color:var(--muted);font-size:.68rem;font-weight:600}.tabbar a:hover{text-decoration:none}.tabbar a[aria-current=page]{color:var(--accent);background:var(--accent-soft)}.tabbar .count{position:absolute;top:2px;left:calc(50% + 6px)}}.btn,button{font:inherit;font-weight:650;font-size:.94rem;cursor:pointer;border:1px solid var(--line-strong);background:var(--surface);color:var(--fg);border-radius:999px;padding:9px 18px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:background .2s,border-color .2s,transform .1s,filter .2s}.btn:hover,button:hover{background:var(--surface-2);border-color:color-mix(in oklch,var(--accent) 35%,var(--line-strong));text-decoration:none}.btn:active,button:active{transform:scale(.97)}button:disabled{opacity:.55;cursor:progress}:focus-visible{outline:3px solid color-mix(in oklch,var(--accent) 50%,transparent);outline-offset:2px}.btn.primary,button.primary{background:var(--accent);border-color:transparent;color:var(--accent-fg);box-shadow:0 1px 2px color-mix(in oklch,var(--accent) 30%,transparent),0 6px 16px color-mix(in oklch,var(--accent) 22%,transparent)}.btn.primary:hover,button.primary:hover{background:var(--accent);border-color:transparent;filter:brightness(1.07)}button.tinted{background:var(--accent-soft);border-color:transparent;color:var(--accent-strong)}button.ghost{background:none;border-color:transparent;color:var(--accent)}button.ghost:hover{background:var(--accent-soft);border-color:transparent}button.danger{color:var(--late)}input,select,textarea{font:inherit;font-size:16px;color:var(--fg);background-color:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:10px 14px;min-height:44px;min-width:0;width:100%;transition:box-shadow .2s,background .2s}input::placeholder,textarea::placeholder{color:var(--muted)}input:hover,select:hover,textarea:hover{border-color:color-mix(in oklch,var(--accent) 30%,var(--line-strong))}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:38px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%238b938d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:14px}input:focus,select:focus,textarea:focus{outline:none;background-color:var(--surface);box-shadow:0 0 0 4px var(--accent-soft);border-color:var(--accent)}label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:.88rem;color:var(--muted)}form.inline{display:inline}.row{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.row>label{flex:1 1 180px}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:22px}.toolbar .filter select{width:auto}.search{position:relative;flex:1 1 240px;display:flex}.search svg{position:absolute;left:14px;top:50%;translate:0 -50%;color:var(--muted);pointer-events:none}.search input{padding-left:42px;background:var(--surface);border-radius:999px;box-shadow:var(--shadow)}.toolbar .filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;flex-basis:100%}.toolbar .filter select{border-radius:999px;padding:8px 34px 8px 14px;font-size:.92rem;box-shadow:var(--shadow)}.toolbar .filter.on select{border-color:var(--accent);background-color:var(--accent-soft);color:var(--accent-strong);font-weight:600}.toolbar .clear-filters{font-size:.9rem;font-weight:600;padding:0 6px;white-space:nowrap}@media (max-width:640px){.toolbar .filters{flex-grow:0;flex-shrink:0;flex-basis:calc(100% + 32px);flex-wrap:nowrap;overflow-x:auto;margin:-6px -16px;padding:6px 16px;scrollbar-width:none}.toolbar .filter{flex:none}}.notice{color:var(--fg);border-radius:var(--radius);padding:14px 18px;margin-bottom:20px}.notice:not(.glass){background:var(--accent-soft)}.notice.glass{background:var(--surface);border-left:4px solid var(--accent)}.notice.warn{background:var(--lent-soft)}.notice h2{margin-bottom:4px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}details.add{margin-bottom:16px}details.add>summary{list-style:none}details.add>summary::-webkit-details-marker{display:none}details.add[open]>summary{margin-bottom:12px}.shelf{margin-bottom:36px}.shelf-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:14px}.books{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr));grid-gap:14px;gap:14px}.book{display:grid;grid-template-columns:54px 1fr;grid-gap:16px;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;min-width:0;box-shadow:var(--shadow);transition:box-shadow .3s,transform .3s,border-color .3s}@media (hover:hover){.book:hover{box-shadow:var(--shadow-lift);transform:translateY(-2px);border-color:color-mix(in oklch,var(--accent) 25%,var(--line))}}.spine{width:54px;height:78px;border-radius:5px 10px 10px 5px;display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--font-display);font-weight:700;letter-spacing:.02em;text-shadow:0 1px 1px rgb(0 0 0/.25);background-image:linear-gradient(90deg,rgb(0 0 0/.2) 0 5px,rgb(255 255 255/.14) 5px 7px,transparent 7px),linear-gradient(160deg,rgb(255 255 255/.22),transparent 60%);box-shadow:0 6px 14px rgb(0 0 0/.18)}.book-body{min-width:0;display:flex;flex-direction:column;gap:3px}.book-title{font-family:var(--font-display);font-weight:650;font-size:1.04rem;line-height:1.25;letter-spacing:-.015em;overflow-wrap:anywhere}.book-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:center}.book details>summary,.book-actions button{min-height:32px;padding:5px 14px;font-size:.85rem}.book details>summary{list-style:none;display:inline-flex;align-items:center;border-radius:999px;border:1px solid var(--line-strong);font-weight:600;cursor:pointer}.book details>summary::-webkit-details-marker{display:none}.book details.lend>summary{background:var(--accent-soft);border-color:transparent;color:var(--accent-strong)}.book details.remove>summary{background:none;border-color:transparent;color:var(--muted)}.book details[open]{flex-basis:100%;order:2}.book details[open]>summary{background:var(--surface-2);color:var(--fg)}.book details form{margin-top:8px;display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm)}.book details form input,.book details form select{background-color:var(--surface)}.pill{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:600;padding:3px 10px;border-radius:999px}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.pill.free{background:var(--ok-soft);color:var(--ok)}.pill.lent{background:var(--lent-soft);color:var(--lent)}.pill.late{background:var(--late-soft);color:var(--late)}.pill.asked{background:var(--accent-soft);color:var(--accent-strong)}.slips{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));grid-gap:14px;gap:14px;margin-bottom:32px}.slip{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:8px;min-width:0;box-shadow:var(--shadow)}.slip.late{box-shadow:inset 0 0 0 1.5px var(--late),var(--shadow)}.slip strong{font-family:var(--font-display);font-size:1.08rem;font-weight:650;letter-spacing:-.015em}.slip-row{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid var(--line);padding-bottom:6px}.stamp{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:590;font-size:.9rem}.stamp.late{color:var(--late)}.section-title{margin:8px 0 14px;display:flex;align-items:center;gap:10px}.empty{color:var(--muted);padding:24px;margin:0 0 28px;border-radius:var(--radius);text-align:center;border:1.5px dashed var(--line-strong)}.code{font-family:var(--font-mono);font-size:1.25rem;font-weight:700;letter-spacing:.15em;background:var(--accent-soft);color:var(--accent-strong);padding:6px 14px;border-radius:var(--radius-sm);display:inline-block;align-self:flex-start}.error{color:var(--late);font-size:.9rem;margin:0}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));grid-gap:16px;gap:16px;align-items:start}.list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column}.list li{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 0;border-bottom:1px solid var(--line)}.list li:last-child{border-bottom:0}.avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--accent-soft);color:var(--accent-strong);font-family:var(--font-display);font-weight:650;flex:none}.list .grow{flex:1 1 160px;min-width:0;display:flex;flex-direction:column}.auth{position:relative;isolation:isolate;min-height:100dvh;display:grid;place-items:center;padding:24px 16px}.auth-card{width:100%;max-width:420px}.auth-head{text-align:center;margin-bottom:20px}.auth-head p{margin:8px 0 0}.auth .panel{padding:24px}.auth .panel button.primary{width:100%}.choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,136px),1fr));grid-gap:10px;gap:10px}.choice{position:relative;display:flex;flex-direction:column;gap:8px;text-align:left;align-items:stretch;padding:10px 10px 12px;border-radius:18px;background:var(--surface);border:1px solid var(--line);min-height:0;font-weight:400;box-shadow:var(--shadow)}.choice[aria-pressed=true]{box-shadow:0 0 0 3px var(--accent),var(--shadow)}.choice-name{font-family:var(--font-display);font-weight:650;font-size:.98rem;display:flex;align-items:center;justify-content:space-between;padding:0 4px}.choice-name svg{color:var(--accent)}.choice-hint{color:var(--muted);font-size:.82rem;padding:0 4px}.preview{position:relative;height:64px;border-radius:12px;overflow:hidden;background:radial-gradient(60% 90% at 15% 10%,var(--blob-1),transparent 70%),radial-gradient(60% 90% at 90% 30%,var(--blob-2),transparent 70%),var(--bg)}.preview span{position:absolute;left:10px;right:10px;bottom:10px;height:22px;border-radius:999px;background:var(--accent)}.segmented{display:inline-flex;flex-wrap:wrap;gap:2px;padding:3px;background:var(--surface);border:1px solid var(--line);border-radius:999px;align-self:flex-start}.segmented button{background:none;border-color:transparent;color:var(--muted);min-height:34px;padding:6px 16px}.segmented button:hover{background:var(--surface-2);border-color:transparent;color:var(--fg)}.segmented button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent-strong)}.reminders ul{margin:6px 0 8px;padding-left:18px}.reminders li{margin:2px 0}a.book-title{color:inherit;text-decoration:none}a.book-title:hover{text-decoration:underline;text-underline-offset:3px}textarea{resize:vertical;min-height:88px}.stars{color:oklch(78% .16 75);letter-spacing:1px}.stars .off{color:var(--line)}.back-link{display:inline-block;margin-bottom:14px}.book-page{display:flex;flex-direction:column;gap:16px;max-width:760px}.book-hero{display:grid;grid-template-columns:auto 1fr;grid-gap:22px;gap:22px;align-items:start}.book-hero p{margin:0}.cover.big,.spine.big{width:120px;height:176px;font-size:1.6rem}@media (max-width:480px){.book-hero{grid-template-columns:1fr;justify-items:start}}.book-page-title{font-size:1.6rem;line-height:1.15;margin:0;letter-spacing:-.02em}.description{white-space:pre-line;margin:8px 0 0;line-height:1.55}.rate{border:0;padding:0;margin:0;display:inline-flex;flex-direction:row-reverse;justify-content:flex-end;gap:2px}.rate legend{width:100%;margin-bottom:4px}.rate input{position:absolute;opacity:0;width:1px;height:1px}.rate label{font-size:2rem;line-height:1;cursor:pointer;color:var(--line);transition:color .15s,transform .15s;padding:2px}.rate span:has(input:checked) label,.rate span:has(input:checked)~span label,.rate span:hover label,.rate span:hover~span label{color:oklch(78% .16 75)}.rate input:focus-visible+label{outline:2px solid var(--accent);border-radius:6px}.reviews li{align-items:flex-start}.reviews .grow{gap:2px}.review-text{white-space:pre-line;overflow-wrap:anywhere}.notice.install{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}.notice.install p{margin:4px 0 0}.share{display:flex;flex-direction:column;gap:6px;align-items:flex-start}.share-url{overflow-wrap:anywhere;-webkit-user-select:all;-moz-user-select:all;user-select:all}.add-link{display:inline-flex;align-items:center;gap:8px}.cover{width:54px;height:78px;object-fit:cover;border-radius:4px 8px 8px 4px;box-shadow:0 6px 14px rgb(0 0 0/.18);background:var(--surface-2)}.page-title{letter-spacing:-.025em}.shelf-head h2{font-size:1.35rem}.segmented.modes{display:grid;grid-template-columns:repeat(4,1fr);width:100%;max-width:620px;border-radius:16px}.segmented.modes button{display:flex;align-items:center;justify-content:center;gap:8px;border-radius:13px;padding:8px 6px}@media (max-width:560px){.segmented.modes button{flex-direction:column;gap:2px;font-size:.75rem;min-height:54px;white-space:nowrap;padding:8px 2px}}.scanner{position:relative;display:none;overflow:hidden;border-radius:var(--radius);background:#000;aspect-ratio:4/3;max-height:60vh}.scanner.on{display:block}.scanner video{width:100%;height:100%;object-fit:cover;display:block}.scan-line{position:absolute;left:10%;right:10%;top:50%;height:2px;background:var(--accent);box-shadow:0 0 12px var(--accent);animation:scan 1.6s ease-in-out infinite alternate}@keyframes scan{0%{top:30%}to{top:70%}}.file-btn{position:relative;align-self:flex-start}.file-btn input{position:absolute;inset:0;opacity:0;cursor:pointer}.file-btn.disabled{opacity:.55;pointer-events:none}.shelf-photo{max-width:100%;max-height:280px;align-self:flex-start;border-radius:var(--radius-sm);box-shadow:var(--shadow)}.spinner{display:inline-block;width:14px;height:14px;margin-right:6px;vertical-align:-2px;border:2px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{rotate:1turn}}.checklist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.checklist li{display:grid;grid-template-columns:auto 54px 1fr;grid-gap:12px;gap:12px;align-items:center;padding:10px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface)}.checklist li.done{opacity:.6}.checklist input[type=checkbox]{width:22px;height:22px;min-height:0;accent-color:var(--accent)}.checklist .grow{min-width:0}.checklist input:not([type]){min-height:36px;padding:6px 10px;background:var(--surface)}.stack-tight{display:flex;flex-direction:column;gap:6px}.search.grow{flex:1 1 240px}.site{position:relative;isolation:isolate}.site-nav{display:flex;gap:6px;margin-left:auto;align-items:center}.site .topbar-in{padding-top:12px;padding-bottom:12px}.site .brand{gap:12px}.site-nav .btn{white-space:nowrap}.site-nav .narrow-only{display:none}.site .brand-text strong{white-space:nowrap;font-size:1.75rem;font-weight:750;letter-spacing:-.025em;color:var(--accent-strong)}.btn.ghost-link{background:none;border-color:transparent;color:var(--accent)}.btn.ghost-link:hover{background:var(--accent-soft);border-color:transparent}.btn.big{min-height:50px;padding:12px 24px;font-size:1.02rem}.site-hero{display:grid;grid-template-columns:1.1fr 1fr;grid-gap:48px;gap:48px;align-items:center;padding-top:72px;padding-bottom:48px}.site-hero h1{font-size:clamp(2.3rem,1.6rem + 3vw,3.9rem);letter-spacing:-.02em;margin:10px 0 18px}.site-lead{font-size:1.2rem;line-height:1.5;margin:0 0 28px;max-width:34em}.site-cta{display:flex;flex-wrap:wrap;gap:10px}.site-free{display:flex;align-items:center;gap:6px;margin:16px 0 0}.site-free svg{color:var(--accent)}.site-shelf{border-radius:28px;padding:22px;background:var(--surface-2);border:1px solid var(--line);box-shadow:var(--shadow-lift);rotate:1.5deg}.site-books{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.site-books .book{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none;grid-template-columns:72px 1fr;align-items:center}.sample-cover{display:block;width:72px;height:104px;overflow:hidden}.site-section{padding-top:40px;padding-bottom:40px}.site-h2{font-size:clamp(1.6rem,1.3rem + 1.2vw,2.2rem);letter-spacing:-.025em;margin-bottom:24px}.site-features{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));grid-gap:16px;gap:16px}.site-features h3,.site-steps h3{font-size:1.1rem;font-weight:650;letter-spacing:-.015em;margin:14px 0 6px}.site-features p,.site-steps p{margin:0}.site-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:var(--accent-soft);color:var(--accent-strong)}.site-steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));grid-gap:24px;gap:24px}.site-step-n{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--accent);color:var(--accent-fg);font-family:var(--font-display);font-weight:700;font-size:1.1rem}.site-faq .panel{padding:6px 22px;max-width:820px}.site-faq details{border-bottom:1px solid var(--line)}.site-faq details:last-child{border-bottom:0}.site-faq summary{cursor:pointer;padding:16px 0;font-weight:620;list-style:none;display:flex;justify-content:space-between;gap:12px}.site-faq summary::-webkit-details-marker{display:none}.site-faq summary:after{content:"+";color:var(--accent);font-size:1.3rem;line-height:1;transition:rotate .2s}.site-faq details[open] summary:after{rotate:45deg}.site-faq details p{margin:0 0 16px}.site-final{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;padding:44px 22px}.site-final .site-h2{margin-bottom:0}.site-final p{margin:0 0 14px}.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;padding-top:24px;padding-bottom:40px;border-top:1px solid var(--line)}@media (max-width:860px){.site-hero{grid-template-columns:1fr;gap:36px;padding-top:40px}.site-shelf{rotate:0deg}}@media (max-width:760px){.site .wrap{padding-bottom:32px}.site-nav .ghost-link{display:none}.site .brand-text strong{font-size:1.35rem}.site .brand{gap:8px}.site .brand .logo{width:44px;height:auto}.site-nav .wide-only{display:none}.site-nav .narrow-only{display:inline}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}@media (prefers-reduced-transparency:reduce){.book,.glass,.panel,.search input,.slip{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.admin-stats{list-style:none;padding:0;margin:0 0 16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,170px),1fr));grid-gap:12px;gap:12px}.admin-stats li{display:flex;flex-direction:column;gap:2px;padding:16px 18px}.admin-stats strong{font-family:var(--font-display);font-variation-settings:"SOFT" 100;font-size:2rem;line-height:1.1}.late-text{color:var(--late)}.admin-accounts{margin-top:16px}.admin-accounts .list li{flex-wrap:wrap}.admin-badge{margin-left:8px;font-size:.75rem;padding:1px 8px;vertical-align:middle}.admin-actions>summary{cursor:pointer;list-style:none;padding:5px 14px;border-radius:999px;border:1px solid var(--line-strong);font-size:.9rem;font-weight:600}.admin-actions>summary::-webkit-details-marker{display:none}.admin-actions[open]{flex-basis:100%;display:flex;flex-direction:column;gap:14px;padding:14px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm)}.admin-actions[open]>summary{align-self:flex-start;background:var(--surface)}.admin-actions input{background:var(--surface)}.auto-select select{width:auto}.list .grow>.small{overflow-wrap:anywhere}.owner-picker{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.owner-picker select{min-height:36px;padding:6px 34px 6px 12px;background-position:right 10px center}.edit-book>summary{cursor:pointer;font-weight:600}.edit-book[open]>summary{margin-bottom:16px}.prefixed{display:flex;align-items:center;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding-left:14px;transition:box-shadow .2s}.prefixed:focus-within{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.prefixed .prefix{font-weight:600;font-size:16px;color:var(--muted)}.prefixed input,.prefixed input:focus{border:0;box-shadow:none;background-color:transparent;padding-left:6px}.icon-btn{position:relative}.icon-btn .count{position:absolute;top:-2px;right:-4px}.kind-choice{display:flex;flex-wrap:wrap;gap:8px;border:0;padding:0;margin:0}.kind-choice label{flex-direction:row;align-items:center;gap:8px;padding:9px 16px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);color:var(--fg);cursor:pointer;font-size:.95rem}.kind-choice label:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.kind-choice input{width:18px;height:18px;min-height:0;padding:0;margin:0;accent-color:var(--accent);box-shadow:none;flex:none}.feedback-form>button{align-self:flex-start}.feedback-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:0;gap:0}.feedback-list>li{display:flex;flex-direction:column;gap:8px;padding:16px 0;border-top:1px solid var(--line)}.feedback-list>li:first-child{border-top:0;padding-top:4px}.feedback-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.feedback-meta .pill{align-self:center}.feedback-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.feedback-response{border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 12px 12px 0;padding:10px 14px;display:flex;flex-direction:column;gap:4px}.pill.muted-pill{background:var(--surface-2);color:var(--muted)}