html{overflow-x:hidden}.ds-body{--paper:#f4eee3;--paper-2:#fbf7ee;--paper-3:#ece3d2;--ink:#1e1a15;--ink-2:#3a332a;--ink-3:#6e6457;--rule:rgba(30,26,21,.1);--rule-2:rgba(30,26,21,.06);--accent:oklch(0.70 0.13 33);--accent-soft:oklch(0.93 0.04 33);--accent-ink:oklch(0.30 0.07 33);--shadow-1:0 1px 0 rgba(30,26,21,.04),0 2px 6px rgba(30,26,21,.04);--shadow-2:0 1px 0 rgba(30,26,21,.04),0 12px 30px -10px rgba(30,26,21,.18);--shadow-cover:0 1px 0 rgba(30,26,21,.06),0 30px 60px -20px rgba(30,26,21,.35),0 12px 24px -12px rgba(30,26,21,.2);--serif:"Cormorant Garamond",Georgia,serif;--sans:"Manrope",system-ui,sans-serif;--mono:"JetBrains Mono",monospace;background:var(--paper)!important;color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;line-height:1.5;margin:0;padding:0;text-rendering:optimizeLegibility}.ds-grain{background-image:radial-gradient(rgba(30,26,21,.025) 1px,transparent 0),radial-gradient(hsla(0,0%,100%,.04) 1px,transparent 0);background-position:0 0,1px 2px;background-size:3px 3px,5px 5px;inset:0;mix-blend-mode:multiply;opacity:.7;pointer-events:none;position:fixed;z-index:0}.ds-app{min-height:100vh;position:relative;z-index:1}.ds-app,.ds-main{display:flex;flex-direction:column}.ds-main{flex:1;min-width:0}.ds-topbar-avatar{border-radius:999px;box-shadow:inset 0 0 0 1.5px hsla(0,0%,100%,.18),0 1px 2px rgba(0,0,0,.08);color:#fff;display:grid;flex-shrink:0;font-family:var(--sans);font-size:13px;font-weight:600;height:36px;overflow:hidden;place-items:center;text-decoration:none;width:36px}.ds-topbar-avatar img{height:100%;object-fit:cover;width:100%}@media (max-width:991.98px){input,select,textarea{font-size:16px!important}}.ds-body h1,.ds-body h2,.ds-body h3,.ds-body h4,.ds-serif{font-family:var(--serif);font-weight:500;letter-spacing:-.01em;margin:0}.ds-h1{font-size:clamp(38px,5.5vw,80px);letter-spacing:-.02em;line-height:.98;margin:0}.ds-h2{font-size:clamp(26px,3vw,42px);line-height:1.05;margin:0}.ds-h3{font-size:clamp(19px,1.6vw,26px);line-height:1.15;margin:0}.ds-eyebrow{font-family:var(--sans);font-weight:600;letter-spacing:.18em;text-transform:uppercase}.ds-eyebrow,.ds-mono{color:var(--ink-3);font-size:11px}.ds-mono{font-family:var(--mono);letter-spacing:.02em}.ds-card{background:var(--paper-2);border:1px solid var(--rule-2);border-radius:20px;box-shadow:var(--shadow-1)}.ds-btn{align-items:center;border:1px solid transparent;border-radius:999px;cursor:pointer;display:inline-flex;font-family:var(--sans);font-size:14px;font-weight:600;gap:10px;letter-spacing:-.005em;line-height:1;padding:13px 22px;text-decoration:none;transition:transform .15s ease,background .2s ease,box-shadow .2s ease}.ds-btn:active{transform:translateY(1px)}.ds-btn-primary{background:var(--ink);color:var(--paper-2)}.ds-btn-primary:hover{background:#000;color:var(--paper-2)}.ds-btn-accent{background:var(--accent);color:#fff}.ds-btn-accent:hover{color:#fff;filter:brightness(1.06)}.ds-btn-ghost{background:transparent;border-color:var(--rule);color:var(--ink)}.ds-btn-ghost:hover{background:var(--paper-2);color:var(--ink)}.ds-btn-sm{font-size:13px;padding:9px 16px}.ds-btn-icon{align-items:center;background:var(--paper-2);border:1px solid var(--rule);border-radius:999px;color:var(--ink-2);cursor:pointer;display:inline-flex;font-family:var(--sans);height:44px;justify-content:center;padding:0;text-decoration:none;transition:background .15s,box-shadow .15s;width:44px}.ds-btn-icon:hover{background:#fff;box-shadow:var(--shadow-1)}.ds-pill{align-items:center;background:var(--paper-2);border:1px solid var(--rule);border-radius:999px;color:var(--ink-2);display:inline-flex;font-size:12px;font-weight:500;gap:6px;padding:5px 12px}.ds-status-dot{background:var(--accent);border-radius:999px;height:6px;width:6px}.ds-status-badge{align-items:center;border-radius:999px;display:inline-flex;font-size:11px;font-weight:600;gap:4px;letter-spacing:.03em;padding:3px 10px}.ds-status-reading{background:oklch(.94 .05 250);color:oklch(.32 .1 250)}.ds-status-finished{background:oklch(.94 .05 150);color:oklch(.32 .1 150)}.ds-status-to_read{background:oklch(.94 .04 60);color:oklch(.38 .08 60)}.ds-status-wishlist{background:oklch(.94 .05 330);color:oklch(.32 .1 330)}.ds-status-lent{background:oklch(.94 .05 30);color:oklch(.38 .1 30)}.ds-cover{background:var(--paper-3);border-radius:4px 6px 6px 4px;box-shadow:var(--shadow-cover);display:block;isolation:isolate;overflow:hidden;position:relative}.ds-cover:before{background:linear-gradient(90deg,rgba(0,0,0,.18),transparent 60%,hsla(0,0%,100%,.06));inset:0 auto 0 0;width:10%;z-index:2}.ds-cover:after,.ds-cover:before{content:"";pointer-events:none;position:absolute}.ds-cover:after{background:linear-gradient(135deg,hsla(0,0%,100%,.04),rgba(0,0,0,.06));inset:0;z-index:1}.ds-cover img{display:block;height:100%;object-fit:cover;width:100%}.ds-cover-placeholder{align-items:center;background:var(--paper-3);color:var(--ink-3);display:flex;font-family:var(--serif);font-size:48px;height:100%;justify-content:center;min-height:200px;width:100%}.ds-section-header{align-items:flex-end;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:22px}.ds-stat-num{color:var(--ink);font-family:var(--serif);font-size:clamp(28px,3vw,40px);font-weight:500;line-height:1}.ds-stat-label{color:var(--ink-3);font-size:11px;letter-spacing:.08em;margin-top:6px;text-transform:uppercase}.ds-progress-track{background:var(--paper-3);border-radius:999px;height:5px;overflow:hidden}.ds-progress-fill{background:var(--accent);border-radius:999px;height:100%}.ds-tabs{border-bottom:1px solid var(--rule);display:flex;gap:28px;margin-bottom:24px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.ds-tabs::-webkit-scrollbar{display:none}.ds-tab-btn{background:none;border:none;border-bottom:2px solid transparent;color:var(--ink-3);cursor:pointer;flex-shrink:0;font-family:var(--sans);font-size:13px;font-weight:600;margin-bottom:-1px;padding:12px 0;transition:color .15s;white-space:nowrap}.ds-tab-btn.active{border-bottom-color:var(--accent);color:var(--ink)}.ds-tab-panel{display:none}.ds-tab-panel.active{display:block}@media (max-width:600px){.ds-tabs{gap:20px}}.ds-flash-wrap{display:flex;flex-direction:column;gap:8px;margin-left:auto;margin-right:auto;padding:12px 1.5rem 0;width:100%}@media (min-width:576px){.ds-flash-wrap{max-width:540px}}@media (min-width:768px){.ds-flash-wrap{max-width:720px}}@media (min-width:992px){.ds-flash-wrap{max-width:960px}}@media (min-width:1200px){.ds-flash-wrap{max-width:1140px}}@media (min-width:1400px){.ds-flash-wrap{max-width:1320px}}.ds-flash{align-items:center;border-radius:12px;display:flex;font-size:13px;font-weight:500;justify-content:space-between;padding:12px 16px}.ds-flash-success{background:oklch(.93 .06 150);color:oklch(.28 .1 150)}.ds-flash-danger,.ds-flash-error{background:oklch(.93 .06 25);color:oklch(.28 .1 25)}.ds-flash-warning{background:oklch(.93 .06 75);color:oklch(.33 .1 75)}.ds-flash-close{background:none;border:none;color:inherit;cursor:pointer;font-size:15px;opacity:.6;padding:0 4px}.ds-book-mini{align-items:center;border-bottom:1px solid var(--rule-2);color:inherit;display:flex;gap:14px;padding:14px 0;text-decoration:none;transition:opacity .15s}.ds-book-mini:last-child{border-bottom:none}.ds-book-mini:hover{opacity:.8}.ds-page-wrap{margin-left:auto;margin-right:auto;padding:32px 1.5rem 80px;width:100%}@media (min-width:576px){.ds-page-wrap{max-width:540px}}@media (min-width:768px){.ds-page-wrap{max-width:720px}}@media (min-width:992px){.ds-page-wrap{max-width:960px}}@media (min-width:1200px){.ds-page-wrap{max-width:1140px}}@media (min-width:1400px){.ds-page-wrap{max-width:1320px}}.ds-hero-grid{align-items:center;display:grid;gap:48px;grid-template-columns:1fr 1fr;padding:24px 0 56px}@media (max-width:980px){.ds-hero-grid{grid-template-columns:1fr}.ds-hero-visual{display:none}}.ds-features-row{display:grid;gap:16px;grid-template-columns:repeat(3,1fr);margin-bottom:64px}@media (max-width:860px){.ds-features-row{grid-template-columns:1fr}}.ds-dash-grid{display:grid;gap:40px;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}@media (max-width:1080px){.ds-dash-grid{grid-template-columns:1fr}}.ds-recent-grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}.ds-detail-grid{align-items:start;display:grid;gap:60px;grid-template-columns:minmax(220px,.75fr) minmax(0,1.25fr);margin-bottom:56px}@media (max-width:900px){.ds-detail-grid{gap:32px;grid-template-columns:1fr}}.ds-detail-cols{display:grid;gap:48px;grid-template-columns:1.2fr .8fr}@media (max-width:700px){.ds-detail-cols{grid-template-columns:1fr}}.ds-rating-summary{align-items:center;border-bottom:1px solid var(--rule);display:flex;flex-wrap:wrap;gap:32px;margin-bottom:24px;padding:0 0 24px}.ds-rating-big{align-items:center;display:flex;flex-shrink:0;gap:16px}.ds-rating-num{color:var(--ink);font-family:var(--serif);font-size:56px;font-weight:500;line-height:1}.ds-rating-meta{display:flex;flex-direction:column;gap:4px}.ds-rating-stars{color:var(--accent);font-size:18px;letter-spacing:1px}.ds-rating-count{color:var(--ink-3);font-family:var(--mono);font-size:12px}.ds-rating-bars{display:flex;flex:1;flex-direction:column;gap:6px;min-width:180px}.ds-rating-bar-row{align-items:center;display:flex;gap:8px}.ds-rating-bar-label{color:var(--ink-3);flex-shrink:0;font-size:11px;text-align:right;width:8px}.ds-rating-bar-track{background:var(--paper-3);border-radius:999px;flex:1;height:5px;overflow:hidden}.ds-rating-bar-fill{background:var(--accent);border-radius:999px;height:100%}.ds-rating-bar-count{color:var(--ink-3);flex-shrink:0;font-family:var(--mono);font-size:11px;width:16px}@media (max-width:600px){.ds-rating-summary{gap:20px}.ds-rating-num{font-size:44px}.ds-rating-bars{min-width:140px}}.ds-pull-quote{background:var(--paper-2);border:1px solid var(--rule-2);border-radius:16px;overflow:hidden;padding:28px 20px 22px 32px;position:relative}.ds-pull-quote:before{color:var(--accent);content:"\201C";font-family:var(--serif);font-size:88px;left:10px;line-height:1;opacity:.22;pointer-events:none;position:absolute;top:4px;user-select:none}@media (max-width:600px){.ds-pull-quote{padding:22px 16px 18px 20px}.ds-pull-quote:before{font-size:64px;left:6px;top:2px}}.ds-page .review-card{background:transparent;border:none;border-radius:0;box-shadow:none;padding:0}.ds-page .review-card h6{display:none}.ds-page .review-item{background:var(--paper-2);border:1px solid var(--rule-2);border-radius:16px;border-top:none;margin-bottom:10px;padding:18px 20px}.ds-page .review-item:last-child{margin-bottom:0}.ds-page .reviewer-avatar{border-radius:50%!important;height:40px!important;object-fit:cover;width:40px!important}.ds-page .reviewer-avatar-initials{background:var(--accent);border-radius:50%;color:#fff;display:grid;flex-shrink:0;font-family:var(--sans);font-size:14px;font-weight:600;height:40px;place-items:center;width:40px}.ds-page .reviewer-name{color:var(--ink);font-size:14px;font-weight:600;text-decoration:none}.ds-page .reviewer-name:hover{text-decoration:underline}.ds-page .reviewer-date{color:var(--ink-3);font-family:var(--mono);font-size:11px}.ds-page .review-text{color:var(--ink-2);font-family:var(--serif);font-size:16px;font-style:italic;line-height:1.6;margin:0}.ds-page .comment-text{color:var(--ink-2);font-size:13px;line-height:1.5;margin:0}.ds-page .comment-avatar{background:var(--accent);border-radius:50%;color:#fff;display:grid;flex-shrink:0;font-family:var(--sans);font-size:10px;font-weight:600;height:24px;place-items:center;width:24px}.ds-page .btn-reply{background:transparent;border:1px solid var(--rule);border-radius:999px;color:var(--ink-2);cursor:pointer;font-family:var(--sans);font-size:12px;font-weight:500;padding:4px 12px;transition:background .15s}.ds-page .btn-reply:hover{background:var(--paper-3)}.ds-page .btn-comment-send{background:var(--ink);border:none;border-radius:999px;color:var(--paper-2);cursor:pointer;flex-shrink:0;font-family:var(--sans);font-size:12px;font-weight:600;padding:8px 18px;transition:background .15s}.ds-page .btn-comment-send:hover{background:#000}.ds-page .comment-form-input{background:var(--paper-2);border:1px solid var(--rule);border-radius:14px;color:var(--ink);font-family:var(--sans);font-size:13px;outline:none;padding:10px 14px;resize:none;width:100%}.ds-page .comment-form-input:focus{border-color:var(--accent)}.ds-page .review-public-toggle{align-items:center;color:var(--ink-2);cursor:pointer;display:flex;font-size:13px;gap:8px}.ds-page .review-public-toggle input{accent-color:var(--accent)}.ds-page .star.review-star{cursor:pointer;font-size:26px}.ds-page .book-in-library{background:oklch(.93 .05 150);border-radius:999px;color:oklch(.28 .1 150);font-size:13px;margin-bottom:10px;padding:8px 16px}.ds-page .book-detail-btn-add,.ds-page .book-in-library{align-items:center;display:inline-flex;font-weight:600;gap:8px}.ds-page .book-detail-btn-add{background:var(--ink);border:none;border-radius:999px;color:var(--paper-2);cursor:pointer;font-family:var(--sans);font-size:14px;padding:13px 22px;transition:background .2s}.ds-page .book-detail-btn-add:hover{background:#000}.ds-page .book-detail-btn-remove{align-items:center;background:transparent;border:1px solid var(--rule);border-radius:999px;color:var(--ink);cursor:pointer;display:inline-flex;font-family:var(--sans);font-size:14px;font-weight:600;gap:8px;padding:13px 22px;transition:background .2s}.ds-page .book-detail-btn-remove:hover{background:var(--paper-3)}.ds-page .book-detail-status-select{background:var(--paper-2);border:1px solid var(--rule);border-radius:999px;color:var(--ink);cursor:pointer;font-family:var(--sans);font-size:13px;outline:none;padding:12px 16px}.ds-page .book-category-badge{align-items:center;background:var(--accent-soft);border-radius:999px;color:var(--accent-ink);display:inline-flex;font-size:12px;font-weight:500;margin-bottom:4px;margin-right:4px;padding:4px 12px}.ds-row-scroll{overflow-x:auto;padding-bottom:12px;scrollbar-color:var(--rule) transparent;scrollbar-width:thin}.ds-row-scroll::-webkit-scrollbar{height:5px}.ds-row-scroll::-webkit-scrollbar-thumb{background:var(--rule);border-radius:999px}.ds-input{background:var(--paper-2);border:1px solid var(--rule);border-radius:10px;box-sizing:border-box;color:var(--ink);font-family:var(--sans);font-size:14px;outline:none;padding:11px 14px;transition:border-color .15s;width:100%}.ds-input:focus{border-color:var(--accent)}.ds-input:disabled,.ds-input[readonly]{background:var(--paper-3);color:var(--ink-3);cursor:not-allowed}.ds-select{background:var(--paper-2);border:1px solid var(--rule);border-radius:10px;color:var(--ink);cursor:pointer;font-family:var(--sans);font-size:13px;outline:none;padding:10px 14px}.ds-select:focus{border-color:var(--accent)}.ds-label{color:var(--ink-3);display:block;font-size:12px;font-weight:600;letter-spacing:.04em;margin-bottom:6px;text-transform:uppercase}.ds-auth-wrap{align-items:center;display:flex;justify-content:center;min-height:calc(100vh - 73px);padding:40px 20px}.ds-auth-card{background:var(--paper-2);border:1px solid var(--rule-2);border-radius:24px;box-shadow:var(--shadow-2);max-width:440px;padding:40px;width:100%}.ds-auth-icon{background:var(--paper-3);border-radius:14px;color:var(--ink-2);display:grid;height:52px;margin:0 auto 20px;place-items:center;width:52px}.ds-lib-filter{align-items:center;background:var(--paper-2);border:1px solid var(--rule);border-radius:999px;color:var(--ink-2);display:inline-flex;font-size:13px;font-weight:600;gap:6px;padding:8px 16px;text-decoration:none;transition:background .15s,color .15s;white-space:nowrap}.ds-lib-filter:hover{background:var(--paper-3);color:var(--ink)}.ds-lib-filter.active{background:var(--ink);border-color:var(--ink);color:var(--paper-2)}.ds-lib-card-wrap{border-bottom:1px solid var(--rule-2)}.ds-lib-card-wrap:last-child{border-bottom:none}.ds-lib-card{align-items:center;display:flex;gap:18px;padding:18px 0}.ds-btn-disabled{opacity:.35;pointer-events:none}.ds-profile-grid{display:grid;gap:28px;grid-template-columns:280px 1fr}@media (max-width:900px){.ds-profile-grid{grid-template-columns:1fr}}.ds-form-grid-2{display:grid;gap:14px;grid-template-columns:1fr 1fr}@media (max-width:480px){.ds-form-grid-2{grid-template-columns:1fr}}.ds-page .btn-add-library{align-items:center;background:var(--ink);border:none;border-radius:999px;color:var(--paper-2);cursor:pointer;display:inline-flex;font-family:var(--sans);font-size:13px;font-weight:600;gap:6px;padding:9px 18px;transition:background .15s}.ds-page .btn-add-library:hover{background:#000}.ds-page .btn-remove-library{align-items:center;background:var(--accent-soft);border:1px solid oklch(.85 .06 33);border-radius:999px;color:var(--accent-ink);cursor:pointer;display:inline-flex;font-family:var(--sans);font-size:13px;font-weight:600;gap:6px;padding:9px 18px;transition:filter .15s}.ds-page .btn-remove-library:hover{filter:brightness(.95)}.ds-page .status-select-sm{background:var(--paper-2);border:1px solid var(--rule);border-radius:999px;color:var(--ink);cursor:pointer;font-family:var(--sans);font-size:12px;outline:none;padding:7px 14px}.ds-page .profile-avatar-img{border-radius:50%;box-shadow:0 0 0 3px var(--paper-2),0 0 0 5px var(--rule);display:block;height:80px;margin:0 auto 12px;object-fit:cover;width:80px}.ds-page .profile-avatar-circle{align-items:center;background:oklch(.4 .07 33);border-radius:50%;color:#fff;display:flex;font-family:var(--sans);font-size:1.8rem;font-weight:600;height:80px;justify-content:center;margin:0 auto 12px;width:80px}.ds-page .profile-book-mini{align-items:center;border-bottom:1px solid var(--rule-2);display:flex;gap:10px;padding:8px 0}.ds-page .profile-book-mini:last-child{border-bottom:none}.ds-page .profile-book-cover{border-radius:3px;box-shadow:1px 2px 6px rgba(30,26,21,.15);flex-shrink:0;height:48px;object-fit:cover;width:32px}.ds-page .profile-book-cover-placeholder{background:var(--paper-3);border-radius:3px;flex-shrink:0;height:48px;width:32px}.ds-page .profile-stat-badge{border-radius:999px;font-size:10px;font-weight:600;padding:2px 8px}.ds-page .profile-badge-blue,.ds-page .profile-badge-green,.ds-page .profile-badge-red,.ds-page .profile-badge-yellow{background:var(--accent-soft);color:var(--accent-ink)}.ds-page .profile-avatar-predefined{border:2px solid transparent;border-radius:50%;cursor:pointer;height:56px;object-fit:cover;transition:border-color .2s;width:56px}.ds-page .profile-avatar-predefined.selected{border-color:var(--accent)}.pwd-checklist{background:var(--paper-2);border:1px solid var(--rule-2);border-radius:10px;display:flex;flex-direction:column;gap:5px;list-style:none;margin:8px 0 0;padding:10px 14px}.pwd-rule{align-items:center;color:var(--ink-3);display:flex;font-size:12px;gap:8px;transition:color .2s}.pwd-rule[data-met="1"]{color:oklch(.4 .13 145)}.pwd-rule-dot{align-items:center;border:1.5px solid;border-radius:50%;color:transparent;display:flex;flex-shrink:0;font-size:9px;font-weight:700;height:14px;justify-content:center;transition:background .2s,border-color .2s,color .2s;width:14px}.pwd-rule[data-met="1"] .pwd-rule-dot{background:oklch(.4 .13 145);border-color:oklch(.4 .13 145);color:#fff}.pwd-rule-dot:after{content:"✓";line-height:1}.hero{background:#1e3a5f;padding:4rem 2rem;text-align:center}.hero h1{color:#fff;font-size:2.5rem;font-weight:700;margin:0 0 1rem}.hero p{color:#93c5fd;font-size:1.1rem;margin:0 auto 2rem;max-width:600px}.badge-pill{background:#2563eb;border-radius:50px;color:#bfdbfe;display:inline-block;font-size:.8rem;font-weight:500;margin-bottom:1.5rem;padding:.3rem 1rem}.btn-white{background:#fff;border:none;border-radius:50px;color:#1e3a5f}.btn-outline,.btn-white{cursor:pointer;display:inline-block;font-size:1rem;font-weight:600;margin:0 .5rem;padding:.75rem 2rem;text-decoration:none}.btn-outline{background:transparent;border:2px solid hsla(0,0%,100%,.6);border-radius:50px;color:#fff}.btn-white:hover{background:#f0f7ff;color:#1e3a5f}.btn-outline:hover{background:hsla(0,0%,100%,.1);color:#fff}.stats-section{background:#fff;border-bottom:1px solid #e5e7eb;display:flex;flex-wrap:wrap;gap:3rem;justify-content:center;padding:2rem}.stat{text-align:center}.stat-num{color:#1e3a5f;font-size:1.8rem;font-weight:700}.stat-label{color:#6b7280;font-size:.85rem}.features-section{background:#f0f7ff;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));padding:3rem 2rem}.feature-card{background:#fff;border:1px solid #dbeafe;border-radius:16px;padding:1.5rem}.feature-icon{align-items:center;border-radius:12px;display:flex;font-size:1.5rem;height:48px;justify-content:center;margin-bottom:1rem;width:48px}.feature-card h3{color:#1e3a5f;font-size:1rem;font-weight:600;margin:0 0 .5rem}.feature-card p{color:#6b7280;font-size:.875rem;line-height:1.6;margin:0}.cta-section{background:#1e3a5f;padding:3rem 2rem;text-align:center}.cta-section h2{color:#fff;font-size:1.8rem;font-weight:700;margin:0 0 1rem}.cta-section p{color:#93c5fd;margin:0 0 2rem}.lp-steps{align-items:start;display:grid;grid-template-columns:1fr auto 1fr auto 1fr}.lp-step{background:var(--paper-2);border:1px solid var(--rule-2);border-radius:20px;padding:28px 24px;position:relative;text-align:center}.lp-step-num{background:var(--ink);border-radius:999px;color:var(--paper-2);display:grid;font-family:var(--sans);font-size:12px;font-weight:700;height:28px;left:50%;place-items:center;position:absolute;top:-14px;transform:translateX(-50%);width:28px}.lp-step-icon{font-size:28px;margin-bottom:16px;margin-top:8px}.lp-step-arrow{align-items:center;color:var(--ink-3);display:flex;font-size:20px;justify-content:center;margin-top:60px;padding:0 12px}@media (max-width:860px){.lp-steps{gap:28px;grid-template-columns:1fr}.lp-step-arrow{margin:-8px auto;transform:rotate(90deg)}}.lp-testimonials{display:grid;gap:20px;grid-template-columns:repeat(3,1fr)}.lp-testimonial-card{display:flex;flex-direction:column;padding:28px}@media (max-width:860px){.lp-testimonials{grid-template-columns:1fr}}.lp-cta{padding:56px 48px}@media (max-width:600px){.lp-cta{border-radius:20px;padding:40px 24px}}.suggestions-grid{display:grid;gap:14px;grid-template-columns:repeat(4,1fr)}@media (max-width:576px){.suggestions-grid{grid-template-columns:repeat(2,1fr)}}.register-page{background:#f7f5f0;min-height:100vh;padding:2rem 0}.register-container{margin:0 auto;max-width:480px;padding:0 1rem}.register-header{margin-bottom:2rem;text-align:center}.register-icon{align-items:center;background:#dbeafe;border-radius:50%;display:flex;height:48px;justify-content:center;margin:0 auto 1rem;width:48px}.register-form{background:#fff;border:1px solid #dbeafe;border-radius:16px;padding:1.5rem}.register-submit{background:#1e3a5f;border:none;border-radius:50px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:12px;transition:background .2s;width:100%}.register-submit:hover{background:#2563eb}.login-page{background:#f7f5f0;min-height:100vh;padding:2rem 0}.login-container{margin:0 auto;max-width:420px;padding:0 1rem}.login-icon{align-items:center;background:#dbeafe;border-radius:50%;display:flex;height:48px;justify-content:center;margin:0 auto 1rem;width:48px}.login-form{background:#fff;border:1px solid #dbeafe;border-radius:16px;padding:1.5rem}.login-submit{background:#1e3a5f;border:none;border-radius:50px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:12px;transition:background .2s;width:100%}.login-submit:hover{background:#2563eb}@keyframes isbn-scan{0%{top:10%}50%{top:85%}to{top:10%}}.isbn-scan-overlay{border-radius:12px;inset:0;overflow:hidden;pointer-events:none;position:absolute}.isbn-scan-line{animation:isbn-scan 2s ease-in-out infinite;background:oklch(.65 .22 142);box-shadow:0 0 8px 2px oklch(.65 .22 142/.6);height:2px;left:0;position:absolute;right:0}.search-page{background:#f7f5f0;min-height:100vh;padding:2rem 0}.search-header h1{color:#1e3a5f;font-size:1.8rem;font-weight:700;margin:0 0 .25rem}.search-header p{color:#6b7280;font-size:.9rem;margin:0 0 1.5rem}.search-bar{background:#fff;border:1px solid #dbeafe;border-radius:16px;margin-bottom:1.5rem;padding:1rem 1.25rem}.search-bar .form-select{background-color:#f0f7ff;color:#1e3a5f;max-width:150px}.search-bar .form-control,.search-bar .form-select{border:1px solid #dbeafe;border-radius:8px}.search-bar .form-control:focus{border-color:#1e3a5f;box-shadow:0 0 0 3px rgba(30,58,95,.1)}.search-bar .btn-search{background:#1e3a5f;border:none;border-radius:8px;color:#fff;font-weight:600;padding:8px 20px;transition:background .2s}.search-bar .btn-search:hover{background:#2563eb;color:#fff}.search-bar .btn-scan{background:#f0f7ff;border:1px solid #dbeafe;border-radius:8px;color:#1e3a5f;font-weight:500;transition:background .2s}.search-bar .btn-scan:hover{background:#dbeafe}.book-card{background:#fff;border:1px solid #dbeafe;border-radius:16px;margin-bottom:1rem;overflow:hidden;transition:box-shadow .2s}.book-card:hover{box-shadow:0 4px 12px rgba(30,58,95,.1)}.book-card .book-cover{border-radius:8px;height:150px;object-fit:cover;width:100px}.book-card .book-title{color:#1e3a5f;font-size:1rem;font-weight:600;text-decoration:none}.book-card .book-title:hover{color:#2563eb}.book-card .book-author{color:#6b7280;font-size:.85rem;font-weight:500;margin-bottom:8px}.book-card .book-desc{color:#6b7280;font-size:.8rem;line-height:1.5}.btn-add-library{background:#1e3a5f;border:none;border-radius:50px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:6px 16px;transition:background .2s}.btn-add-library:hover{background:#2563eb;color:#fff}.btn-remove-library{background:#fee2e2;border:none;border-radius:50px;color:#991b1b;cursor:pointer;font-size:13px;font-weight:600;padding:6px 16px;transition:background .2s}.btn-remove-library:hover{background:#fecaca}.status-select-sm{background:#f0f7ff;border:1px solid #dbeafe;border-radius:50px;color:#1e3a5f;font-size:12px;outline:none;padding:5px 10px}.search-pagination .page-link{border-color:#dbeafe;border-radius:8px!important;color:#1e3a5f;margin:0 2px}.search-pagination .page-item.active .page-link{background:#1e3a5f;border-color:#1e3a5f;color:#fff}.search-pagination .page-link:hover{background:#f0f7ff;color:#1e3a5f}.library-page{background:#f7f5f0;min-height:100vh;padding:2rem 0}.library-header h1{color:#1e3a5f;font-size:1.8rem;font-weight:700;margin:0 0 .25rem}.library-header p{color:#6b7280;font-size:.9rem;margin:0 0 1.5rem}.library-stat-card{align-items:center;background:#fff;border:1px solid #dbeafe;border-radius:12px;display:flex;gap:12px;padding:1rem}.library-stat-icon{align-items:center;border-radius:10px;display:flex;flex-shrink:0;font-size:1.2rem;height:40px;justify-content:center;width:40px}.library-stat-num{color:#1e3a5f;font-size:1.4rem;font-weight:700;line-height:1}.library-stat-label{color:#6b7280;font-size:.75rem}.library-filter-btn{background:#fff;border:1px solid #dbeafe;border-radius:50px;color:#1e3a5f;cursor:pointer;font-size:13px;font-weight:500;padding:6px 16px;text-decoration:none;transition:all .2s}.library-filter-btn:hover{background:#f0f7ff;color:#1e3a5f}.library-filter-btn.active{background:#1e3a5f;border-color:#1e3a5f;color:#fff}.library-book-card{align-items:center;background:#fff;border:1px solid #dbeafe;border-radius:16px;display:flex;gap:1rem;margin-bottom:.75rem;padding:1rem;transition:box-shadow .2s}.library-book-card:hover{box-shadow:0 4px 12px rgba(30,58,95,.1)}.library-book-cover{border-radius:8px;flex-shrink:0;height:95px;object-fit:cover;width:65px}.library-book-title{color:#1e3a5f;font-size:.95rem;font-weight:600;text-decoration:none}.library-book-title:hover{color:#2563eb}.library-book-author{color:#6b7280;font-size:.8rem;margin:4px 0 8px}.library-badge{border-radius:50px;display:inline-block;font-size:11px;font-weight:600;padding:3px 10px}.library-badge-reading{background:#d1fae5;color:#065f46}.library-badge-finished{background:#dbeafe;color:#1e3a5f}.library-badge-toread{background:#fef3c7;color:#92400e}.library-badge-wishlist{background:#fee2e2;color:#991b1b}.library-badge-lent{background:#ffedd5;color:#9a3412}.library-status-select{background:#f0f7ff;border:1px solid #dbeafe;border-radius:8px;color:#1e3a5f;font-size:12px;outline:none;padding:4px 8px;width:100%}.library-btn-remove{background:none;border:1px solid #fecaca;border-radius:8px;color:#991b1b;cursor:pointer;font-size:12px;padding:4px 12px;transition:background .2s;width:100%}.library-btn-remove:hover{background:#fee2e2}.library-empty{background:#fff;border:1px solid #dbeafe;border-radius:16px;padding:3rem;text-align:center}.library-empty h5{color:#1e3a5f;font-weight:600}.library-empty p{color:#6b7280;font-size:.9rem}.lib-filters{display:flex;gap:8px;margin-bottom:20px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:4px}.lib-filters::-webkit-scrollbar{display:none}.lib-filters .ds-lib-filter{flex-shrink:0}.lib-toolbar{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.lib-search-row{align-items:center;display:flex;gap:8px}.lib-search-row .lib-search-input-wrap{flex:1;min-width:0;position:relative}.lib-sort-row{align-items:center;display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;padding-bottom:2px}.lib-sort-row::-webkit-scrollbar{display:none}.lib-sort-row .ds-btn,.lib-sort-row span{flex-shrink:0}@media (min-width:640px){.lib-toolbar{align-items:center;flex-direction:row}.lib-search-row{flex:1;min-width:0}.lib-sort-row{overflow-x:visible}}.ds-btn-ghost.active{background:var(--ink);border-color:var(--ink);color:var(--paper-2)}.ds-btn-ghost.active:hover{background:#000;color:var(--paper-2)}@media (max-width:480px){.ds-lib-card{gap:12px}.lib-card-actions .ds-select{min-width:100px}}.detail-page{background:#f7f5f0;min-height:100vh;padding:2rem 0}.book-hero{background:#fff;border:1px solid #dbeafe;border-radius:20px;margin-bottom:1.5rem;padding:2rem}.book-hero-cover{box-shadow:0 4px 12px rgba(30,58,95,.15);object-fit:cover}.book-hero-cover,.book-hero-cover-placeholder{border-radius:12px;flex-shrink:0;height:210px;width:140px}.book-hero-cover-placeholder{align-items:center;background:#dbeafe;display:flex;font-size:3rem;justify-content:center}.book-hero-title{color:#1e3a5f;font-size:1.6rem;font-weight:700;margin:0 0 .5rem}.book-hero-author{color:#6b7280;font-size:1rem;margin:0 0 1rem}.book-category-badge{background:#dbeafe;border-radius:50px;color:#1e3a5f;display:inline-block;font-size:12px;font-weight:500;margin-bottom:6px;margin-right:6px;padding:3px 12px}.book-meta-item{background:#f0f7ff;border-radius:8px;color:#1e3a5f;display:inline-block;font-size:13px;margin-bottom:8px;margin-right:8px;padding:6px 12px}.book-description{color:#374151;font-size:.9rem;line-height:1.7;margin:1rem 0}.book-in-library{background:#d1fae5;border-radius:8px;color:#065f46;display:inline-block;font-size:13px;font-weight:500;margin-bottom:12px;padding:8px 16px}.book-in-library-label{color:#9ca3af;font-size:11px;font-weight:600;letter-spacing:.08em;margin:0 0 10px;text-transform:uppercase}.book-status-pills{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.book-status-pill{background:transparent;border:1.5px solid #dbeafe;border-radius:50px;color:#6b7280;cursor:pointer;font-size:13px;font-weight:500;padding:7px 18px;transition:border-color .15s,color .15s,background .15s}.book-status-pill:hover:not(:disabled){background:#f0f7ff;border-color:#1e3a5f;color:#1e3a5f}.book-status-pill.active{background:#1e3a5f;border-color:#1e3a5f;color:#fff;cursor:default}.book-detail-status-select{background:#f0f7ff;border:1px solid #dbeafe;border-radius:50px;color:#1e3a5f;font-size:14px;outline:none;padding:8px 16px}.book-detail-btn-add{background:#1e3a5f;border:none;border-radius:50px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 24px;transition:background .2s}.book-detail-btn-add:hover{background:#2563eb;color:#fff}.book-detail-btn-remove{background:#fee2e2;border:none;border-radius:50px;color:#991b1b;cursor:pointer;font-size:14px;font-weight:600;padding:10px 24px;transition:background .2s}.book-detail-btn-remove:hover{background:#fecaca}.review-card{background:#fff;border:1px solid #dbeafe;border-radius:20px;margin-bottom:1.5rem;padding:1.5rem}.review-card h6{color:#1e3a5f;font-size:1rem;font-weight:600;margin-bottom:1rem}.review-star{color:#e5e7eb;cursor:pointer;font-size:1.5rem;transition:color .1s}.review-item{border-top:1px solid #f0f7ff;margin-top:1rem;padding-top:1rem}.review-item:first-child{border-top:none;margin-top:0;padding-top:0}.reviewer-avatar{object-fit:cover}.reviewer-avatar,.reviewer-avatar-initials{border-radius:50%;flex-shrink:0;height:36px;width:36px}.reviewer-avatar-initials{align-items:center;background:#dbeafe;color:#1e3a5f;display:flex;font-size:12px;font-weight:600;justify-content:center}.reviewer-name{color:#1e3a5f;font-size:14px;font-weight:600;text-decoration:none}.reviewer-name:hover{color:#2563eb}.reviewer-date{color:#9ca3af;font-size:12px}.review-text{color:#374151;font-size:14px;line-height:1.6;margin:8px 0}.comment-item{background:#f0f7ff;border-radius:10px;margin-bottom:6px;padding:10px 12px}.comment-avatar{align-items:center;background:#dbeafe;border-radius:50%;color:#1e3a5f;display:flex;flex-shrink:0;font-size:10px;font-weight:600;height:24px;justify-content:center;width:24px}.comment-text{color:#374151;font-size:13px;margin:0}.btn-reply{background:none;border:none;color:#6b7280;cursor:pointer;font-size:12px;padding:0;transition:color .2s}.btn-reply:hover{color:#1e3a5f}.comment-form-input{border:1px solid #dbeafe;border-radius:8px;font-size:13px;outline:none;overflow:hidden;padding:8px 12px;resize:none;transition:border-color .2s;width:100%}.comment-form-input:focus{border-color:#1e3a5f}.btn-comment-send{background:#1e3a5f;border:none;border-radius:8px;color:#fff;cursor:pointer;flex-shrink:0;font-size:13px;font-weight:600;padding:6px 16px;transition:background .2s}.btn-comment-send:hover{background:#2563eb}.review-public-toggle{align-items:center;color:#6b7280;cursor:pointer;display:flex;font-size:13px;gap:6px}.profile-page{background:#f7f5f0;min-height:100vh;padding:2rem 0}.profile-card{background:#fff;border:1px solid #dbeafe;border-radius:20px;margin-bottom:1rem;padding:1.5rem}.profile-avatar-circle{align-items:center;background:#1e3a5f;color:#fff;display:flex;font-size:2rem;font-weight:700;justify-content:center}.profile-avatar-circle,.profile-avatar-img{border-radius:50%;height:90px;margin:0 auto 1rem;width:90px}.profile-avatar-img{display:block;object-fit:cover}.profile-name{color:#1e3a5f;font-size:1.1rem;font-weight:700;margin:0;text-align:center}.profile-email{color:#9ca3af;margin:4px 0 0}.profile-email,.profile-pseudo{font-size:.8rem;text-align:center}.profile-pseudo{color:#6b7280;margin:2px 0 0}.profile-section-title{color:#1e3a5f;font-size:.95rem;font-weight:600;margin:0 0 1rem}.profile-stat-row{align-items:center;border-bottom:1px solid #f0f7ff;display:flex;justify-content:space-between;padding:6px 0}.profile-stat-row:last-child{border-bottom:none}.profile-stat-label{color:#6b7280;font-size:13px}.profile-stat-badge{border-radius:50px;font-size:11px;font-weight:600;padding:2px 10px}.profile-badge-blue{background:#dbeafe;color:#1e3a5f}.profile-badge-green{background:#d1fae5;color:#065f46}.profile-badge-yellow{background:#fef3c7;color:#92400e}.profile-badge-red{background:#fee2e2;color:#991b1b}.profile-book-mini{align-items:center;display:flex;gap:8px;margin-bottom:8px}.profile-book-cover{object-fit:cover}.profile-book-cover,.profile-book-cover-placeholder{border-radius:4px;flex-shrink:0;height:45px;width:30px}.profile-book-cover-placeholder{background:#dbeafe}.profile-form-label{color:#6b7280;display:block;font-size:13px;margin-bottom:6px}.profile-btn-primary{background:#1e3a5f;border:none;border-radius:50px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:8px 20px;transition:background .2s}.profile-btn-primary:hover{background:#2563eb;color:#fff}.profile-danger-zone{background:#fff;border:1px solid #fecaca;border-radius:20px;margin-bottom:1rem;padding:1.5rem}.profile-danger-title{color:#991b1b;font-size:.95rem;font-weight:600;margin:0 0 .5rem}.profile-btn-danger{background:#fee2e2;border:1px solid #fecaca;border-radius:50px;color:#991b1b;cursor:pointer;font-size:14px;font-weight:600;padding:8px 20px;transition:background .2s}.profile-btn-danger:hover{background:#fecaca}.profile-avatar-predefined{border:3px solid transparent;border-radius:50%;cursor:pointer;height:60px;object-fit:cover;transition:border-color .2s;width:60px}.profile-avatar-predefined.selected{border-color:#1e3a5f}.navbar-custom{background:var(--paper-2,#fbf7ee);border-bottom:1px solid var(--rule,rgba(30,26,21,.1));box-shadow:0 1px 0 rgba(30,26,21,.04),0 2px 6px rgba(30,26,21,.04);padding:.75rem 0}.navbar-brand-custom{align-items:center;display:flex;font-family:var(--serif,"Cormorant Garamond",Georgia,serif);font-size:1.2rem;font-weight:600;gap:10px;letter-spacing:-.01em;text-decoration:none}.navbar-brand-custom,.navbar-brand-custom:hover{color:var(--ink,#1e1a15)}.navbar-brand-icon{align-items:center;background:var(--accent-soft,oklch(.93 .04 33));border:1px solid var(--rule,rgba(30,26,21,.1));border-radius:10px;display:flex;flex-shrink:0;font-size:1rem;height:34px;justify-content:center;width:34px}.nav-link-custom{border-radius:999px;color:var(--ink-3,#6e6457);font-family:var(--sans,"Manrope",system-ui,sans-serif);font-size:13px;font-weight:600;padding:6px 14px;text-decoration:none;transition:background .15s,color .15s}.nav-link-custom.active,.nav-link-custom:hover{background:var(--paper-3,#ece3d2);color:var(--ink,#1e1a15)}.nav-link-admin{background:oklch(.93 .04 33);color:oklch(.3 .07 33)}.nav-link-admin:hover{background:oklch(.88 .06 33);color:oklch(.25 .07 33)}.btn-nav-outline{background:transparent;border:1px solid var(--rule,rgba(30,26,21,.1));border-radius:999px;color:var(--ink-2,#3a332a);cursor:pointer;font-family:var(--sans,"Manrope",system-ui,sans-serif);font-size:13px;font-weight:600;padding:7px 18px;text-decoration:none;transition:background .15s,color .15s}.btn-nav-outline:hover{background:var(--paper-3,#ece3d2);border-color:var(--rule,rgba(30,26,21,.1));color:var(--ink,#1e1a15)}.btn-nav-solid{background:var(--ink,#1e1a15);border:none;border-radius:999px;color:var(--paper-2,#fbf7ee);cursor:pointer;font-family:var(--sans,"Manrope",system-ui,sans-serif);font-size:13px;font-weight:600;padding:7px 18px;text-decoration:none;transition:background .15s,color .15s}.btn-nav-solid:hover{background:#000;color:var(--paper-2,#fbf7ee)}.avatar-nav{background:var(--accent,oklch(.7 .13 33));border-radius:999px;box-shadow:inset 0 0 0 1.5px hsla(0,0%,100%,.18),0 1px 2px rgba(30,26,21,.08);color:#fff;display:grid;flex-shrink:0;font-family:var(--sans,"Manrope",system-ui,sans-serif);font-size:12px;font-weight:600;height:34px;overflow:hidden;place-items:center;text-decoration:none;transition:opacity .15s;width:34px}.avatar-nav:hover{opacity:.85}.avatar-nav img{height:100%;object-fit:cover;width:100%}.navbar-toggler-custom{background:none;border:1px solid var(--rule,rgba(30,26,21,.1));border-radius:10px;color:var(--ink-2,#3a332a);cursor:pointer;font-size:1.1rem;padding:6px 10px}.burger-menu{border-top:1px solid var(--rule,rgba(30,26,21,.08));display:flex;flex-direction:column;gap:4px;margin-top:8px;padding:12px 0 4px}.burger-profile-card{align-items:center;background:var(--paper-3,#ece3d2);border-radius:14px;display:flex;gap:12px;margin-bottom:4px;padding:12px 14px;text-decoration:none;transition:background .15s}.burger-profile-card:hover{background:oklch(.88 .04 33)}.burger-profile-avatar{background:oklch(.4 .07 33);border-radius:50%;box-shadow:inset 0 0 0 1.5px hsla(0,0%,100%,.18);color:#fff;display:grid;flex-shrink:0;font-size:14px;font-weight:700;height:44px;overflow:hidden;place-items:center;width:44px}.burger-profile-avatar img{height:100%;object-fit:cover;width:100%}.burger-profile-info{display:flex;flex-direction:column;gap:2px;min-width:0}.burger-profile-name{color:var(--ink,#1e1a15);font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.burger-profile-cta,.burger-profile-name{font-family:var(--sans,"Manrope",system-ui,sans-serif)}.burger-profile-cta{color:var(--ink-3,#6e6457);font-size:12px;font-weight:500}.burger-nav-section{display:flex;flex-direction:column;gap:2px;padding:4px 0}.burger-nav-link{align-items:center;border-radius:10px;color:var(--ink-2,#3a332a);display:flex;font-family:var(--sans,"Manrope",system-ui,sans-serif);font-size:14px;font-weight:600;gap:10px;padding:10px 14px;text-decoration:none;transition:background .15s,color .15s;-webkit-tap-highlight-color:transparent}.burger-nav-link svg{color:var(--ink-3,#6e6457);flex-shrink:0}.burger-nav-link:hover{background:var(--paper-3,#ece3d2);color:var(--ink,#1e1a15)}.burger-nav-link--admin{color:oklch(.3 .07 33)}.burger-nav-link--admin:hover{background:oklch(.93 .04 33)}.burger-footer{border-top:1px solid var(--rule,rgba(30,26,21,.08));margin-top:4px;padding:8px 0 4px}.burger-logout-btn{align-items:center;background:none;border:none;border-radius:10px;color:#c0392b;cursor:pointer;display:flex;font-family:var(--sans,"Manrope",system-ui,sans-serif);font-size:14px;font-weight:600;gap:10px;padding:10px 14px;transition:background .15s;width:100%;-webkit-tap-highlight-color:transparent;text-align:left}.burger-logout-btn:hover{background:#fdf0ee}.bottom-nav{background:var(--paper-2,#fbf7ee);border-top:1px solid var(--rule,rgba(30,26,21,.1));bottom:0;box-shadow:0 -2px 12px rgba(30,26,21,.07);left:0;padding-bottom:env(safe-area-inset-bottom);position:fixed;right:0;z-index:1030}.bottom-nav-items{align-items:stretch;display:flex;height:64px}.bottom-nav-item{align-items:center;color:var(--ink-3,#6e6457);display:flex;flex:1;flex-direction:column;font-family:var(--sans,"Manrope",system-ui,sans-serif);font-size:10px;font-weight:600;gap:3px;justify-content:center;letter-spacing:.02em;text-decoration:none;transition:color .15s;-webkit-tap-highlight-color:transparent;position:relative}.bottom-nav-item:hover{color:var(--ink-2,#3a332a)}.bottom-nav-item.active{color:var(--accent-ink,oklch(.3 .07 33))}.bottom-nav-item.active .bottom-nav-icon svg{stroke:var(--accent,oklch(.7 .13 33))}.bottom-nav-dot{background:var(--accent,oklch(.7 .13 33));border-radius:0 0 4px 4px;height:3px;left:50%;opacity:0;position:absolute;top:0;transform:translateX(-50%);transition:opacity .15s;width:28px}.bottom-nav-item.active .bottom-nav-dot{opacity:1}.bottom-nav-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}@media (min-width:992px){.bottom-nav{display:none}}@media (max-width:991.98px){.ds-main{padding-bottom:calc(64px + env(safe-area-inset-bottom))}.navbar-primary-links{display:none!important}}.footer-custom{background:var(--paper-3,#ece3d2);border-top:1px solid var(--rule,rgba(30,26,21,.1));margin-top:auto;padding:3rem 0 1.5rem}.footer-brand{align-items:center;color:var(--ink,#1e1a15);display:flex;font-family:var(--sans,system-ui,sans-serif);font-size:1.1rem;font-weight:700;gap:8px;margin-bottom:.75rem;text-decoration:none}.footer-brand:hover{color:var(--ink,#1e1a15);opacity:.75}.footer-brand-icon{align-items:center;background:var(--accent,oklch(.7 .13 33));border-radius:8px;display:flex;flex-shrink:0;font-size:1rem;height:32px;justify-content:center;width:32px}.footer-desc{font-size:13px;line-height:1.6;margin:0;max-width:280px}.footer-desc,.footer-title{color:var(--ink-3,#6e6457);font-family:var(--sans,system-ui,sans-serif)}.footer-title{font-size:11px;font-weight:600;letter-spacing:.12em;margin-bottom:1rem;text-transform:uppercase}.footer-link{color:var(--ink-2,#3a332a);display:block;font-family:var(--sans,system-ui,sans-serif);font-size:13px;margin-bottom:8px;text-decoration:none;transition:color .2s}.footer-link:hover{color:var(--accent,oklch(.7 .13 33))}.footer-copy{color:var(--ink-3,#6e6457);font-family:var(--sans,system-ui,sans-serif);font-size:12px;margin:0}@media (max-width:991.98px){.footer-desc{max-width:100%}.footer-custom{padding-bottom:calc(1.5rem + 64px + env(safe-area-inset-bottom))}}.cat-picker{margin-top:8px}.cat-picker-chips{align-items:center;display:flex;flex-wrap:wrap;gap:6px}.cat-chip{align-items:center;background:var(--accent-soft);border-radius:999px;color:var(--accent-ink);display:inline-flex;font-size:11px;font-weight:500;gap:4px;line-height:1.4;padding:3px 4px 3px 10px}.cat-chip:not(:has(.cat-chip-remove)){padding-right:10px}.cat-chip-remove{background:transparent;border:none;border-radius:999px;color:inherit;cursor:pointer;display:inline-grid;font-size:13px;height:16px;line-height:1;opacity:.6;padding:0;place-items:center;width:16px}.cat-chip-remove:focus-visible,.cat-chip-remove:hover{background:rgba(30,26,21,.08);opacity:1}.cat-chip-add{background:transparent;border:1px dashed var(--rule);border-radius:999px;color:var(--ink-3);cursor:pointer;font-size:11px;font-weight:500;line-height:1.4;padding:3px 10px}.cat-chip-add:focus-visible,.cat-chip-add:hover,.cat-chip-add[aria-expanded=true]{border-color:var(--accent);color:var(--accent-ink)}.cat-picker-panel{background:var(--paper-2);border:1px solid var(--rule);border-radius:10px;color:var(--ink);margin:8px 0 0;max-width:360px;padding:0;position:static;width:100%}.cat-picker-body{padding:10px}.cat-picker-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.cat-picker-title{color:var(--ink-3);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.cat-picker-close{background:transparent;border:none;border-radius:6px;color:var(--accent-ink);cursor:pointer;font-size:12px;font-weight:600;padding:2px 6px}.cat-picker-close:focus-visible,.cat-picker-close:hover{background:var(--accent-soft)}.cat-picker-input{box-sizing:border-box;font-size:13px;width:100%}.cat-picker-suggestions{list-style:none;margin:6px 0 0;max-height:220px;overflow-y:auto;padding:0}.cat-picker-option{align-items:center;border-radius:6px;color:var(--ink);cursor:pointer;display:flex;font-size:13px;gap:8px;justify-content:space-between;padding:7px 10px}.cat-picker-option.is-active,.cat-picker-option:hover{background:var(--accent-soft);color:var(--accent-ink)}.cat-picker-option.is-create{color:var(--accent-ink);font-weight:600}.cat-picker-count{color:var(--ink-3);font-size:11px;white-space:nowrap}.cat-picker-empty{color:var(--ink-3);font-size:12px;padding:7px 10px}.cat-picker-create{border-top:1px solid var(--rule);margin-top:6px;padding-top:8px}.cat-picker-create-btn{background:transparent;border:none;border-radius:6px;color:var(--accent-ink);cursor:pointer;font-size:13px;font-weight:600;padding:7px 10px;text-align:left;width:100%}.cat-picker-create-btn:focus-visible,.cat-picker-create-btn:hover{background:var(--accent-soft)}.cat-picker-create-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.cat-picker-create-actions .ds-btn{font-size:12px}.cat-picker-hint{color:var(--ink-3);font-size:11px;margin:8px 2px 0}.cat-picker-error{color:oklch(.5 .16 25);font-size:12px;margin:6px 2px 0}.book-categories{margin-bottom:16px}.book-categories .cat-picker{margin-top:0}@media (max-width:640px){.cat-picker-panel:modal{animation:cat-sheet-in .22s ease-out;border:none;border-radius:18px 18px 0 0;box-shadow:0 -10px 40px rgba(30,26,21,.18);inset:auto 0 0 0;margin:0;max-height:85dvh;max-width:none;overflow:hidden;position:fixed;width:100%}.cat-picker-panel::backdrop{background:rgba(30,26,21,.45)}.cat-picker-panel:modal .cat-picker-body{box-sizing:border-box;max-height:85dvh;overflow-y:auto;overscroll-behavior:contain;padding:8px 16px calc(16px + env(safe-area-inset-bottom))}.cat-picker-panel:modal .cat-picker-body:before{background:var(--rule);border-radius:999px;content:"";display:block;height:4px;margin:0 auto 10px;width:36px}.cat-picker-panel:modal .cat-picker-header{margin-bottom:12px}.cat-picker-panel:modal .cat-picker-title{color:var(--ink);font-family:var(--serif);font-size:19px;font-weight:500;letter-spacing:0;text-transform:none}.cat-picker-panel:modal .cat-picker-close{font-size:15px;padding:8px 10px}.cat-picker-panel:modal .cat-picker-suggestions{margin-top:8px;max-height:none}.cat-picker-panel:modal .cat-picker-create-btn,.cat-picker-panel:modal .cat-picker-option{font-size:15px;min-height:44px;padding:10px 12px}.cat-picker-panel:modal .cat-picker-count{font-size:12px}.cat-picker-panel:modal .cat-picker-create-actions .ds-btn{font-size:14px;min-height:40px;padding-inline:16px}.cat-picker-panel:modal .cat-picker-error,.cat-picker-panel:modal .cat-picker-hint{font-size:13px}.cat-chip-remove{font-size:15px;height:22px;width:22px}}@keyframes cat-sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.cat-picker-panel:modal{animation:none}}body.cat-picker-lock{overflow:hidden}.admin-layout{--paper:#f4eee3;--paper-2:#fbf7ee;--paper-3:#ece3d2;--ink:#1e1a15;--ink-2:#3a332a;--ink-3:#6e6457;--rule:rgba(30,26,21,.1);--rule-2:rgba(30,26,21,.06);--accent:oklch(0.70 0.13 33);--accent-soft:oklch(0.93 0.04 33);--accent-ink:oklch(0.30 0.07 33);--shadow-1:0 1px 0 rgba(30,26,21,.04),0 2px 6px rgba(30,26,21,.04);--shadow-2:0 1px 0 rgba(30,26,21,.04),0 12px 30px -10px rgba(30,26,21,.18);--serif:"Cormorant Garamond",Georgia,serif;--sans:"Manrope",system-ui,sans-serif;background:var(--paper);color:var(--ink);display:flex;font-family:var(--sans);min-height:calc(100vh - 57px)}.admin-sidebar{background:#0c1f3c;color:hsla(0,0%,100%,.7);display:flex;flex-direction:column;flex-shrink:0;height:100vh;overflow-y:auto;padding:1.5rem 0 0;position:sticky;top:0;width:250px}.admin-sidebar-brand{align-items:center;border-bottom:1px solid hsla(0,0%,100%,.08);color:#fff;display:flex;font-family:var(--serif);font-size:19px;font-weight:500;gap:10px;letter-spacing:-.01em;margin-bottom:.75rem;padding:0 1.25rem 1.25rem;text-decoration:none}.admin-sidebar-brand:hover{color:#fff}.admin-nav-section{color:hsla(0,0%,100%,.3);font-size:10px;font-weight:700;letter-spacing:.16em;padding:.5rem 1.25rem .25rem;text-transform:uppercase}.admin-nav-link{align-items:center;border-left:3px solid transparent;color:hsla(0,0%,100%,.62);display:flex;font-size:13.5px;font-weight:500;gap:10px;line-height:1.3;padding:.6rem 1.25rem;text-decoration:none;transition:color .15s,background .15s}.admin-nav-link:hover{background:hsla(0,0%,100%,.06);color:hsla(0,0%,100%,.9)}.admin-nav-link.active{background:hsla(0,0%,100%,.09);border-left-color:#3b82f6;color:#fff}.admin-nav-link svg{flex-shrink:0;opacity:.7}.admin-nav-link.active svg{opacity:1}.admin-nav-link:hover svg{opacity:.9}.admin-sidebar-bottom{border-top:1px solid hsla(0,0%,100%,.08);margin-top:auto;padding:1rem 0}.admin-main{background:var(--paper);flex:1;min-width:0;overflow:auto;padding:2rem 2.25rem}.admin-page-header{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between;margin-bottom:2rem}.admin-page-title{color:var(--ink);font-family:var(--serif);font-size:clamp(1.6rem,2.5vw,2.25rem);font-weight:500;letter-spacing:-.01em;line-height:1.1;margin:0 0 .3rem}.admin-page-subtitle{color:var(--ink-3);font-size:13.5px;margin:0}.admin-kpi-grid{display:grid;gap:1rem;grid-template-columns:repeat(4,1fr);margin-bottom:2rem}.admin-kpi-card{align-items:center;background:var(--paper-2);border:1px solid var(--rule);border-radius:14px;box-shadow:var(--shadow-1);display:flex;gap:1rem;padding:1.25rem;transition:box-shadow .2s,transform .2s}.admin-kpi-card:hover{box-shadow:var(--shadow-2);transform:translateY(-1px)}.admin-kpi-card--featured{background:#0c1f3c;border-color:transparent;color:#fff}.admin-kpi-icon{border-radius:12px;display:grid;flex-shrink:0;height:48px;place-items:center;width:48px}.admin-kpi-icon--amber{background:oklch(.93 .04 33);color:oklch(.3 .07 33)}.admin-kpi-icon--green{background:oklch(.94 .05 150);color:oklch(.32 .1 150)}.admin-kpi-icon--blue{background:oklch(.94 .05 250);color:oklch(.32 .1 250)}.admin-kpi-icon--violet{background:oklch(.94 .05 290);color:oklch(.32 .1 290)}.admin-kpi-body{min-width:0}.admin-kpi-value{color:var(--ink);font-size:2rem;font-variant-numeric:tabular-nums;font-weight:700;line-height:1;margin-bottom:3px}.admin-kpi-card--featured .admin-kpi-value{color:#fff}.admin-kpi-label{color:var(--ink-3);font-size:12.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-kpi-card--featured .admin-kpi-label{color:hsla(0,0%,100%,.55)}.admin-section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.875rem}.admin-section-title{color:var(--ink);font-family:var(--serif);font-size:1.35rem;font-weight:500;letter-spacing:-.01em;margin:0}.admin-section-meta{color:var(--ink-3);font-size:12.5px}.admin-section-link{color:var(--accent-ink);font-size:13px;font-weight:600;text-decoration:none}.admin-section-link:hover{text-decoration:underline}.admin-status-grid{display:grid;gap:1rem;grid-template-columns:repeat(4,1fr);margin-bottom:2.25rem}.admin-status-card{background:var(--paper-2);border:1px solid var(--rule);border-radius:14px;box-shadow:var(--shadow-1);padding:1.25rem;transition:box-shadow .2s}.admin-status-card:hover{box-shadow:var(--shadow-2)}.admin-status-badge{align-items:center;border-radius:999px;display:inline-flex;font-size:11.5px;font-weight:600;gap:6px;margin-bottom:.875rem;padding:3px 10px 3px 8px}.admin-status-dot{background:currentColor;border-radius:50%;height:6px;opacity:.6;width:6px}.admin-status-badge--reading{background:oklch(.94 .05 250);color:oklch(.32 .1 250)}.admin-status-badge--finished{background:oklch(.94 .05 150);color:oklch(.32 .1 150)}.admin-status-badge--to-read{background:oklch(.94 .04 60);color:oklch(.38 .08 60)}.admin-status-badge--wishlist{background:oklch(.94 .05 330);color:oklch(.32 .1 330)}.admin-status-count{color:var(--ink);font-size:2rem;font-variant-numeric:tabular-nums;font-weight:700;line-height:1;margin-bottom:3px}.admin-status-label{color:var(--ink-3);font-size:12.5px;margin-bottom:.875rem}.admin-status-bar{background:var(--rule);border-radius:999px;height:4px;overflow:hidden}.admin-status-bar-fill{border-radius:999px;height:100%;min-width:4px;transition:width .6s ease}.admin-status-bar-fill--reading{background:oklch(.6 .12 250)}.admin-status-bar-fill--to-read{background:oklch(.65 .1 60)}.admin-status-bar-fill--finished{background:oklch(.6 .12 150)}.admin-status-bar-fill--wishlist{background:oklch(.6 .12 330)}.admin-table-wrapper{background:var(--paper-2);border:1px solid var(--rule);border-radius:14px;box-shadow:var(--shadow-1);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.admin-table{border-collapse:collapse;font-size:13.5px;width:100%}.admin-table thead{background:var(--paper-3)}.admin-table th{border-bottom:1px solid var(--rule);color:var(--ink-3);font-size:10.5px;font-weight:700;letter-spacing:.1em;padding:.7rem 1rem;text-align:left;text-transform:uppercase;white-space:nowrap}.admin-table td{border-bottom:1px solid var(--rule-2);color:var(--ink-2);padding:.75rem 1rem;vertical-align:middle;word-break:break-word}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table tbody tr:hover{background:rgba(30,26,21,.025)}.admin-badge{align-items:center;border-radius:999px;display:inline-flex;font-size:11px;font-weight:600;padding:2px 9px;white-space:nowrap}.admin-badge--admin{background:oklch(.93 .04 33);color:oklch(.3 .07 33)}.admin-badge--user{background:var(--paper-3);color:var(--ink-3)}.admin-badge--verified{background:oklch(.94 .05 150);color:oklch(.32 .1 150)}.admin-badge--unverified{background:oklch(.94 .04 60);color:oklch(.38 .08 60)}.admin-badge--suspended{background:oklch(.94 .06 25);color:oklch(.35 .12 25)}.admin-user-avatar{align-items:center;background:oklch(.93 .04 33);border:1.5px solid var(--rule);border-radius:50%;color:oklch(.3 .07 33);display:inline-flex;flex-shrink:0;font-size:11px;font-weight:700;height:34px;justify-content:center;overflow:hidden;width:34px}.admin-user-avatar img{height:100%;object-fit:cover;width:100%}.admin-actions{align-items:center;display:flex;flex-wrap:wrap;gap:5px}.admin-btn{align-items:center;background:none;border:1px solid transparent;border-radius:6px;cursor:pointer;display:inline-flex;font-family:var(--sans);font-size:11.5px;font-weight:600;gap:3px;line-height:1.4;padding:3px 9px;transition:opacity .15s,transform .1s;white-space:nowrap}.admin-btn:hover{opacity:.78;transform:translateY(-1px)}.admin-btn:active{transform:translateY(0)}.admin-btn--promote{background:oklch(.94 .05 250);border-color:oklch(.84 .07 250);color:oklch(.32 .1 250)}.admin-btn--demote{background:oklch(.93 .04 33);border-color:oklch(.83 .05 33);color:oklch(.3 .07 33)}.admin-btn--suspend{background:oklch(.94 .04 60);border-color:oklch(.84 .06 60);color:oklch(.38 .08 60)}.admin-btn--restore{background:oklch(.94 .05 150);border-color:oklch(.84 .07 150);color:oklch(.32 .1 150)}.admin-btn--danger{background:oklch(.94 .06 25);border-color:oklch(.84 .08 25);color:oklch(.35 .12 25)}.admin-btn--cancel{background:var(--paper-3);border-color:var(--rule);color:var(--ink-3)}.admin-btn--confirm-danger{background:oklch(.55 .18 25);border-color:transparent;color:#fff;font-size:13px;padding:6px 16px}.admin-btn--confirm-danger:hover{opacity:.88}.admin-flash{border:1px solid transparent;border-radius:10px;font-size:13.5px;font-weight:500;margin-bottom:1rem;padding:.75rem 1.1rem}.admin-flash--success{background:oklch(.94 .05 150);border-color:oklch(.84 .07 150);color:oklch(.28 .1 150)}.admin-flash--error{background:oklch(.94 .06 25);border-color:oklch(.84 .08 25);color:oklch(.32 .12 25)}.admin-modal-backdrop{align-items:center;background:rgba(12,31,60,.45);display:flex;inset:0;justify-content:center;padding:1rem 1rem calc(1rem + env(safe-area-inset-bottom));position:fixed;z-index:1050}.admin-modal-backdrop[hidden]{display:none}.admin-modal{background:var(--paper-2);border:1px solid var(--rule);border-radius:16px;box-shadow:var(--shadow-2);max-width:440px;padding:2rem;width:100%}.admin-modal-title{color:var(--ink);font-family:var(--serif);font-size:1.4rem;font-weight:500;letter-spacing:-.01em;margin:0 0 .75rem}.admin-modal-body{color:var(--ink-2);font-size:14px;line-height:1.6;margin:0 0 1.5rem}.admin-modal-actions{align-items:center;display:flex;gap:8px;justify-content:flex-end}.admin-modal-actions form{margin:0}@media (max-width:1200px){.admin-kpi-grid,.admin-status-grid{grid-template-columns:repeat(2,1fr)}}.admin-mobile-nav{display:none}@media (max-width:900px){.admin-layout{flex-direction:column}.admin-sidebar{display:none}.admin-main{padding:1.25rem}.admin-mobile-nav{align-items:stretch;background:#0c1f3c;display:flex;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;flex-shrink:0}.admin-mobile-nav::-webkit-scrollbar{display:none}.admin-mobile-nav-link{align-items:center;border-bottom:2px solid transparent;color:hsla(0,0%,100%,.6);display:flex;flex-direction:column;font-size:11px;font-weight:600;gap:4px;letter-spacing:.02em;padding:.6rem 1.1rem;text-decoration:none;transition:color .15s,border-color .15s;white-space:nowrap}.admin-mobile-nav-link svg{flex-shrink:0;opacity:.7}.admin-mobile-nav-link:hover{background:hsla(0,0%,100%,.06);color:hsla(0,0%,100%,.9)}.admin-mobile-nav-link:hover svg{opacity:.9}.admin-mobile-nav-link.active{border-bottom-color:#3b82f6;color:#fff}.admin-mobile-nav-link.active svg{opacity:1}}@media (max-width:640px){.admin-kpi-grid,.admin-status-grid{grid-template-columns:1fr 1fr}}@media (max-width:480px){.admin-kpi-grid,.admin-status-grid{grid-template-columns:1fr}.admin-main{padding:1rem}.admin-btn{font-size:12px;min-height:34px;padding:6px 12px}}