.agreement-page{max-width:var(--maxw)}.agreement-version{color:var(--text-faint);font-size:.8rem;margin:0 0 var(--s-4)}.agreement-gate-intro{color:var(--text-dim);margin:0 0 var(--s-4)}.agreement-body{color:var(--text-dim);line-height:1.6;font-size:.95rem}.agreement-body h3{color:var(--text);font-size:1rem;margin:var(--s-5) 0 var(--s-2)}.agreement-body p{margin:0 0 var(--s-3)}.agreement-check{display:flex;align-items:flex-start;gap:var(--s-3);text-align:left;font-size:.9rem;margin:var(--s-3) 0 var(--s-4);cursor:pointer}.agreement-check input[type=checkbox]{width:22px;height:22px;margin-top:1px;flex-shrink:0;accent-color:var(--accent)}.agreement-inline{max-height:320px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3) var(--s-4);margin-bottom:var(--s-4);background:var(--surface)}.auth{min-height:100vh;display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding:var(--s-7) var(--s-5);padding-bottom:calc(var(--s-7) + var(--safe-bottom));text-align:center}.auth-lang{align-self:flex-end}.auth-hero{margin-top:8vh}.auth-logo{font-size:3.6rem;filter:drop-shadow(0 0 16px rgba(217,154,78,.4))}.auth h1{font-size:2.2rem;margin:var(--s-3) 0 var(--s-1)}.auth-tagline{color:var(--text-dim);letter-spacing:.03em;margin:0}.auth-action{width:100%;max-width:360px}.auth-scroll{justify-content:flex-start}.auth-hero-compact{margin-top:4vh}.auth-form{text-align:left}.auth-form .field{margin-bottom:var(--s-3)}.auth-switch{margin-top:var(--s-4);color:var(--text-dim);font-size:.9rem}.auth-switch a{color:var(--accent);font-weight:600}.auth-forgot{margin-top:var(--s-3);font-size:.85rem}.auth-forgot a{color:var(--accent);font-weight:600}.auth-footer{margin-top:var(--s-3);font-size:.8rem}.auth-footer a{color:var(--text-dim)}.auth-hint{color:var(--text-dim);font-size:.85rem}.auth-notice{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-4);margin-bottom:var(--s-3)}.auth-notice p{margin:var(--s-2) 0 var(--s-3);color:var(--text-dim);font-size:.9rem}.link-button{background:none;border:none;padding:0;color:var(--accent);font:inherit;font-weight:600;text-decoration:underline;cursor:pointer}.library-controls{display:flex;gap:var(--s-3);margin-bottom:var(--s-4)}.library-search{position:relative;flex:1 1 auto}.library-search-icon{position:absolute;left:var(--s-3);top:50%;transform:translateY(-50%);color:var(--text-faint);font-size:.9rem;pointer-events:none}.library-search input{width:100%;min-height:var(--tap);padding:var(--s-3) var(--s-3) var(--s-3) var(--s-6);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:1rem}.library-filter-btn{flex:0 0 auto;align-self:stretch}.library-filter-btn.has-filters{border-color:var(--accent);color:var(--accent)}.library-support-link{text-align:center;margin:var(--s-6) 0 0;font-size:.85rem}.library-support-link a{color:var(--text-dim)}.book-list{display:flex;flex-direction:column;gap:var(--s-3)}@media (min-width: 700px){.book-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--s-4)}}@media (min-width: 1000px){.library-controls,.library-support-link{max-width:var(--maxw-read)}}.book-card{display:flex;gap:var(--s-3);align-items:flex-start;padding:var(--s-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);color:inherit}.book-card:active{background:var(--surface-2)}.book-card-main{min-width:0;flex:1 1 auto}.book-card-title{margin:0;font-size:1rem;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-card-author{margin:2px 0 var(--s-2);font-size:.85rem;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-card-meta{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.book-detail-head{display:flex;gap:var(--s-4);margin-bottom:var(--s-5)}.book-detail-headtext{min-width:0}.book-detail-title{margin:0;font-size:1.4rem;line-height:1.2}.book-detail-author{margin:var(--s-2) 0 var(--s-3);color:var(--text-dim)}.book-detail-chips{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.reading-controls{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-4);margin-bottom:var(--s-5)}.reading-finished{margin:0 0 var(--s-3);color:var(--good);font-weight:600}.reading-actions{display:flex;flex-direction:column;gap:var(--s-3)}.reading-finish-panel{display:flex;flex-direction:column}.book-detail-meta{margin-bottom:var(--s-5)}.book-detail-desc{color:var(--text-dim);line-height:1.6;margin:0 0 var(--s-4)}.meta-grid{display:grid;grid-template-columns:auto 1fr;gap:var(--s-2) var(--s-4);margin:0}.meta-grid dt{color:var(--text-faint);font-size:.85rem}.meta-grid dd{margin:0;color:var(--text)}.comment-add textarea{width:100%;min-height:72px;padding:var(--s-3);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:1rem;resize:vertical}.comment{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3) var(--s-4)}.comment-date{color:var(--text-faint);font-size:.78rem}.comment-edited{font-style:italic}.comment-actions{display:flex;gap:var(--s-3)}.comment-actions .link-button{font-size:.85rem}.comment-edit textarea{width:100%;min-height:72px;padding:var(--s-3);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);color:var(--text);font-size:1rem;margin-bottom:var(--s-2)}.stats-hero{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-4);margin-bottom:var(--s-5)}.stats-hero-label{margin:0 0 var(--s-3);font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--accent)}.stats-hero-book{display:flex;gap:var(--s-4);align-items:center;color:inherit}.stats-hero-title{margin:0;font-size:1.15rem}.stats-hero-author{margin:var(--s-2) 0 0;color:var(--text-dim);font-size:.9rem}.stats-hero-empty{width:100%;min-height:var(--tap);border:1px dashed var(--border);border-radius:var(--r-md);background:transparent;color:var(--text-dim);font-size:.95rem}.stats-metrics{display:flex;flex-direction:column;gap:var(--s-3)}.stats-metric{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-4);padding:var(--s-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.stats-metric-value{font-size:1.8rem;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}.stats-metric-label{color:var(--text-dim);font-size:.95rem;text-align:right}@media (min-width: 700px){.stats-metrics{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--s-4)}}@media (min-width: 1000px){.stats-hero{max-width:var(--maxw-read)}}.support-intro{color:var(--text-dim);font-size:.95rem;line-height:1.5;margin-bottom:var(--s-4)}.support-success{text-align:center;padding:var(--s-6) var(--s-4)}.support-success-icon{font-size:2.6rem;margin-bottom:var(--s-3)}.support-success h2{margin:0 0 var(--s-2)}.settings-group{margin-bottom:var(--s-5)}.settings-group-title{margin:0 0 var(--s-2);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint)}.settings-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}.settings-card .settings-row+.settings-row{border-top:1px solid var(--border)}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);width:100%;min-height:var(--tap);padding:var(--s-3) var(--s-4);text-align:left}.settings-row-static{background:transparent}.settings-row-link{background:transparent;border:0;color:var(--text);cursor:pointer;font:inherit}.settings-row-link:active{background:var(--surface-2)}.settings-row-text{display:flex;flex-direction:column;gap:2px;min-width:0}.settings-row-label{color:var(--text);font-size:1rem}.settings-row-hint{color:var(--text-dim);font-size:.85rem}.settings-row-chevron{color:var(--text-faint);font-size:1.4rem;line-height:1;flex-shrink:0}.admin-tabs{display:flex;gap:var(--s-1);padding:var(--s-1);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-pill);margin-bottom:var(--s-4)}.admin-tab{flex:1;min-height:40px;border-radius:var(--r-pill);background:transparent;color:var(--text-dim);font-size:.9rem;font-weight:600}.admin-tab.active{background:var(--accent);color:var(--accent-ink)}.admin-center{display:flex;flex-direction:column;align-items:center;gap:var(--s-3);padding:var(--s-6) var(--s-4);text-align:center}.admin-section-title{margin:0 0 var(--s-3);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint)}.admin-stats-grid{display:flex;flex-direction:column;gap:var(--s-3)}.admin-stat{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-4);padding:var(--s-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.admin-stat-value{font-size:1.6rem;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}.admin-stat-label{color:var(--text-dim);font-size:.95rem;text-align:right}.admin-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-3)}.admin-user{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-3);padding:var(--s-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.admin-user-main{display:flex;flex-direction:column;gap:var(--s-1);min-width:0}.admin-user-name{font-weight:700;color:var(--text)}.admin-user-email{color:var(--text-dim);font-size:.9rem;word-break:break-all}.admin-user-meta{color:var(--text-faint);font-size:.8rem}.admin-user-action{flex-shrink:0}.admin-badges{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:var(--s-1) 0}.admin-badge{display:inline-block;padding:2px var(--s-2);border-radius:var(--r-pill);font-size:.72rem;font-weight:700;border:1px solid var(--border);color:var(--text-dim);background:var(--surface-2);text-transform:lowercase}.admin-badge-role-admin{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.admin-badge-ok{color:var(--good);border-color:color-mix(in srgb,var(--good) 40%,transparent)}.admin-badge-muted{color:var(--text-faint)}.admin-badge-danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,transparent)}.admin-filters{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-bottom:var(--s-4)}.admin-support-row{padding:var(--s-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.admin-support-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-2)}.admin-support-from{font-size:.85rem;color:var(--text-dim);min-width:0;word-break:break-word}.admin-support-message{margin:0 0 var(--s-2);color:var(--text);white-space:pre-wrap;word-break:break-word}.admin-support-meta{display:flex;flex-wrap:wrap;gap:var(--s-3);color:var(--text-faint);font-size:.78rem;margin-bottom:var(--s-3)}.admin-support-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.admin-support-working{font-size:.85rem}.admin-badge-status-open{color:var(--reading);border-color:color-mix(in srgb,var(--reading) 40%,transparent)}.admin-badge-status-replied{color:var(--score);border-color:color-mix(in srgb,var(--score) 40%,transparent)}.admin-badge-status-resolved{color:var(--good);border-color:color-mix(in srgb,var(--good) 40%,transparent)}@media (min-width: 700px){.admin-stats-grid,.admin-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--s-4)}.admin-tabs{max-width:520px}}.admin-pager{display:flex;align-items:center;justify-content:center;gap:var(--s-4);margin-top:var(--s-4)}.admin-pager-info{color:var(--text-dim);font-size:.9rem;font-variant-numeric:tabular-nums}.club-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-3)}.club-card{display:grid;grid-template-columns:1fr auto;align-items:start;gap:var(--s-1) var(--s-3);padding:var(--s-4);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);color:var(--text);text-decoration:none}.club-card-name{font-weight:700;font-size:1.05rem}.club-card-desc{grid-column:1 / 2;color:var(--text-dim);font-size:.9rem}.club-role-chip{grid-column:2 / 3;grid-row:1 / 2;align-self:center;justify-self:end;padding:2px 10px;border-radius:var(--r-pill);font-size:.75rem;font-weight:600;text-transform:capitalize;background:var(--surface-2);color:var(--text-dim)}.club-role-chip.admin{background:var(--accent);color:var(--accent-ink)}.club-invites{margin-bottom:var(--s-5);padding:var(--s-4);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2)}.club-invite-list,.invite-pending-list{list-style:none;margin:var(--s-2) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--s-2)}.club-invite-row,.invite-pending-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.invite-card{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap;padding:var(--s-4);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface)}.invite-card-text{display:flex;flex-direction:column;gap:2px}.club-detail-title{margin:0 0 var(--s-2);font-size:1.5rem}.club-detail-desc{margin:0 0 var(--s-4);color:var(--text-dim)}.club-actions{margin-bottom:var(--s-5)}.club-section{margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--border)}.club-section-title{font-size:1.15rem;margin:0 0 var(--s-3)}.roster-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-2)}.roster-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:var(--s-2) 0}.roster-name{font-weight:600}.form-success{margin:var(--s-2) 0;color:var(--good);font-size:.9rem}.event-section{margin-top:var(--s-5)}.event-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-3)}.event-card{width:100%;display:grid;grid-template-columns:1fr auto;gap:var(--s-1) var(--s-3);padding:var(--s-4);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.event-card-name{font-weight:700;font-size:1.05rem}.event-card-when{grid-column:1 / 2;color:var(--text-dim);font-size:.9rem}.event-card-meta{grid-column:2 / 3;grid-row:1 / 3;align-self:center;display:flex;flex-direction:column;align-items:flex-end;gap:var(--s-1)}.event-card-place{color:var(--text-faint);font-size:.8rem}.event-status-chip{padding:2px 10px;border-radius:var(--r-pill);font-size:.75rem;font-weight:600;text-transform:capitalize;background:var(--surface-2);color:var(--text-dim)}.event-status-chip.scheduled{background:var(--reading);color:var(--accent-ink)}.event-status-chip.cancelled{background:var(--danger);color:#fff}.event-detail-title{margin:0 0 var(--s-2);font-size:1.5rem}.event-detail-chips{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap;margin-bottom:var(--s-4)}.event-detail-meta{display:grid;grid-template-columns:auto 1fr;gap:var(--s-2) var(--s-4);margin:0 0 var(--s-5)}.event-detail-meta dt{color:var(--text-faint);font-size:.85rem}.event-detail-meta dd{margin:0;color:var(--text)}.event-rsvp{margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--border)}.rsvp-buttons{display:flex;gap:var(--s-3);margin-bottom:var(--s-4)}.rsvp-btn{flex:1}.rsvp-btn.active{background:var(--accent);color:var(--accent-ink)}.rsvp-lists{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-4)}.rsvp-col-title{font-size:.95rem;margin:0 0 var(--s-2);color:var(--text-dim)}.rsvp-name-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-1)}.rsvp-name-list li{padding:var(--s-1) 0}.comments{margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--border)}.comments-heading{font-size:1.15rem;margin:0 0 var(--s-3)}.comment-add textarea{width:100%;min-height:72px;padding:var(--s-3);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:1rem;font-family:inherit;resize:vertical}.comment-post-btn{margin-top:var(--s-2)}.comments-empty{margin:var(--s-3) 0}.comment-list{list-style:none;margin:var(--s-4) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--s-3)}.comment{padding:var(--s-3);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface)}.comment-body{margin:0 0 var(--s-2);white-space:pre-wrap;word-break:break-word}.comment-meta{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.comment-author{font-weight:600;font-size:.85rem}.comment-date{color:var(--text-faint);font-size:.8rem}.poll-option-list{list-style:none;margin:var(--s-4) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--s-4)}.poll-option{padding:var(--s-4);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface)}.poll-option.winner{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.poll-option-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap;margin-bottom:var(--s-3)}.poll-option-when{font-weight:700;font-size:1.05rem}.poll-winner-chip{padding:2px 10px;border-radius:var(--r-pill);font-size:.75rem;font-weight:600;background:var(--accent);color:var(--accent-ink)}.poll-vote-buttons{display:flex;gap:var(--s-3);margin-bottom:var(--s-3)}.poll-vote-btn{flex:1}.poll-vote-btn.available{background:var(--good);color:#fff}.poll-vote-btn.unavailable{background:var(--danger);color:#fff}.poll-tally-summary{margin:0 0 var(--s-3);color:var(--text-dim);font-size:.9rem}.poll-tally-lists{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-4)}.poll-tally-col-title{font-size:.95rem;margin:0 0 var(--s-2);color:var(--text-dim)}.poll-name-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-1)}.poll-name-list li{padding:var(--s-1) 0}.poll-schedule-btn{margin-top:var(--s-4)}.poll-options-field{border:none;margin:0 0 var(--s-3);padding:0}.poll-options-field legend{font-size:.85rem;color:var(--text-faint);margin-bottom:var(--s-2);padding:0}.poll-option-input-row{display:flex;align-items:center;gap:var(--s-3);margin-bottom:var(--s-2)}.poll-option-input-row input{flex:1}@media (min-width: 600px){.club-list,.event-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--s-4)}}:root{--bg: #13110f;--surface: #211d18;--surface-2: #2a251f;--surface-raised: #342e26;--border: #463d31;--text: #f3ece0;--text-dim: #b3a892;--text-faint: #847a68;--accent: #d99a4e;--accent-ink: #21160a;--score: #e8b84b;--danger: #e3796b;--good: #8bc28a;--reading: #7fb0e0;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--r-sm: 8px;--r-md: 12px;--r-lg: 18px;--r-pill: 999px;--maxw: 640px;--maxw-wide: 1180px;--maxw-read: 760px;--bp-tablet: 700px;--bp-desktop: 1000px;--bottomnav-h: 60px;--topbar-h: 56px;--safe-bottom: env(safe-area-inset-bottom, 0px);--z-topbar: 10;--z-bottomnav: 10;--z-fab: 20;--z-sheet: 40;--z-modal: 50;--z-toast: 60;--tap: 44px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;touch-action:manipulation}#root{min-height:100vh}button{font-family:inherit;cursor:pointer}a{color:var(--accent);text-decoration:none}.app-shell{width:100%;max-width:var(--maxw);margin:0 auto;min-height:100vh;position:relative}@media (min-width: 700px){.app-shell{max-width:900px;padding:0 var(--s-5)}}@media (min-width: 1000px){.app-shell{max-width:var(--maxw-wide);padding:0 var(--s-6)}}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}.screen-pad{padding:var(--s-4);padding-bottom:calc(var(--bottomnav-h) + var(--safe-bottom) + var(--s-6))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-4);border-radius:var(--r-md);border:none;font-size:1rem;font-weight:600;color:var(--accent-ink);background:var(--accent);transition:transform .08s ease,opacity .15s ease}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-block{width:100%}.btn-secondary{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-danger{background:var(--danger);color:#2a0f0c}.btn-lg{min-height:52px;font-size:1.05rem}.btn-sm{min-height:36px;padding:0 var(--s-3);font-size:.85rem}.form-error{color:var(--danger);margin:0 0 var(--s-3);font-size:.9rem}.lang-switch{display:inline-flex;border:1px solid var(--border);border-radius:var(--r-pill);overflow:hidden}.lang-switch-btn{min-height:32px;padding:0 var(--s-3);background:transparent;border:none;color:var(--text-dim);font-size:.8rem;font-weight:700;letter-spacing:.03em}.lang-switch-btn.active{background:var(--accent);color:var(--accent-ink)}.lang-switch-compact .lang-switch-btn{min-height:28px;padding:0 var(--s-2);font-size:.72rem}.topbar{position:sticky;top:0;z-index:var(--z-topbar);height:var(--topbar-h);display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:0 var(--s-4);background:#13110fe0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.topbar-title{display:flex;align-items:center;gap:var(--s-2);min-width:0;color:var(--text);font-size:1.1rem;font-weight:700}.topbar-logo{font-size:1.2rem}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);border-radius:var(--r-md);border:1px solid transparent;background:none;color:var(--text);font-size:1.25rem}.icon-btn:active{background:var(--surface-2)}.bottomnav{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:var(--maxw);z-index:var(--z-bottomnav);display:flex;height:calc(var(--bottomnav-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--surface);border-top:1px solid var(--border)}.bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--tap);color:var(--text-dim);font-size:.7rem;font-weight:600}.bottomnav a.active{color:var(--accent)}.bottomnav .nav-icon{font-size:1.2rem}.status-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-dim);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.status-chip.status-read{color:var(--good)}.status-chip.status-reading{color:var(--reading)}.status-chip.status-current{color:var(--accent);background:#d99a4e29}.rating-stars{display:inline-flex;align-items:center;gap:2px}.rating-readonly .star{color:var(--text-faint);font-size:.9rem}.rating-readonly .star.on{color:var(--score)}.star-btn{width:var(--tap);height:var(--tap);background:none;border:none;color:var(--text-faint);font-size:1.6rem;line-height:1;padding:0}.star-btn.on{color:var(--score)}.rating-clear{margin-left:var(--s-2);background:none;border:none;color:var(--text-dim);font-size:.8rem;text-decoration:underline}.book-cover{border-radius:var(--r-sm);object-fit:cover;flex:0 0 auto;background:var(--surface-2)}.book-cover-sm{width:48px;height:68px}.book-cover-lg{width:96px;height:136px}.book-cover-placeholder{display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--surface-raised),var(--surface-2));border:1px solid var(--border);color:var(--accent);font-weight:800}.book-cover-sm.book-cover-placeholder span{font-size:1.3rem}.book-cover-lg.book-cover-placeholder span{font-size:2.4rem}.empty{text-align:center;padding:var(--s-7) var(--s-4);color:var(--text-dim)}.empty-icon{font-size:2.6rem;margin-bottom:var(--s-3)}.empty h2{color:var(--text);margin:0 0 var(--s-2)}.field{display:block;margin-bottom:var(--s-4)}.field label{display:block;margin-bottom:var(--s-2);font-size:.85rem;color:var(--text-dim);font-weight:600}.field input[type=text],.field input[type=email],.field input[type=password],.field input[type=url],.field input[type=number],.field input[type=date],.field input[type=search],.field textarea{width:100%;min-height:var(--tap);padding:var(--s-3);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:1rem}.field textarea{min-height:88px;resize:vertical}.field .field-error,.field-error{color:var(--danger);font-size:.8rem;margin-top:var(--s-2)}.field .field-hint,.field-hint{color:var(--text-faint);font-size:.78rem;margin-top:var(--s-1)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3)}@media (max-width: 380px){.field-row{grid-template-columns:1fr}}.chip-toggle{min-height:var(--tap);padding:0 var(--s-4);border-radius:var(--r-pill);border:1px solid var(--border);background:var(--surface);color:var(--text-dim);font-size:.85rem;font-weight:600}.chip-toggle.active{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#05040299;z-index:var(--z-sheet);display:flex;align-items:flex-end;justify-content:center}.scrim.center{align-items:center;padding:var(--s-4)}.sheet{width:100%;max-width:var(--maxw);background:var(--surface);border-radius:var(--r-lg) var(--r-lg) 0 0;padding:var(--s-4);padding-bottom:calc(var(--s-5) + var(--safe-bottom));border-top:1px solid var(--border);animation:sheet-up .18s ease}.modal{width:100%;max-width:420px;background:var(--surface);border-radius:var(--r-lg);padding:var(--s-5);border:1px solid var(--border)}@keyframes sheet-up{0%{transform:translateY(16px);opacity:.6}}.sheet-handle{width:40px;height:4px;border-radius:var(--r-pill);background:var(--border);margin:0 auto var(--s-4)}.sheet-title{margin:0 0 var(--s-4);font-size:1.2rem}.settings-label{font-size:.85rem;color:var(--text-dim);font-weight:600;margin:0 0 var(--s-3)}.filter-status-row{display:flex;flex-wrap:wrap;gap:var(--s-2)}.toast-host{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--bottomnav-h) + var(--safe-bottom) + var(--s-4));z-index:var(--z-toast);width:calc(100% - 2 * var(--s-4));max-width:calc(var(--maxw) - 2 * var(--s-4));display:flex;flex-direction:column;gap:var(--s-2);pointer-events:none}.toast{padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--surface-raised);border:1px solid var(--border);font-size:.9rem;box-shadow:0 6px 20px #0006;animation:sheet-up .18s ease}.toast.toast-error{border-color:var(--danger);color:var(--danger)}.toast.toast-success{border-color:var(--good);color:var(--good)}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--accent);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.row{display:flex;align-items:center;gap:var(--s-2)}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2)}.muted{color:var(--text-dim)}.screen-title{margin:var(--s-2) 0 var(--s-4);font-size:1.5rem}.link-button{background:none;border:none;padding:0;color:var(--accent);font:inherit;font-weight:600;cursor:pointer}.link-button.link-danger{color:var(--danger)}.topnav{display:none}@media (min-width: 700px){.screen-pad{max-width:var(--maxw-read);margin-inline:auto}.screen-pad.screen-wide{max-width:none}}@media (min-width: 1000px){.topnav{display:flex;align-items:center;gap:var(--s-2);margin-left:var(--s-5);margin-right:auto}.topnav-link{display:inline-flex;align-items:center;min-height:38px;padding:0 var(--s-3);border-radius:var(--r-md);color:var(--text-dim);font-size:.95rem;font-weight:600}.topnav-link:hover{color:var(--text);background:var(--surface-2)}.topnav-link.active{color:var(--accent);background:#d99a4e24}.bottomnav{display:none}.screen-pad{padding-bottom:var(--s-6)}.toast-host{bottom:var(--s-5);max-width:420px}}
