:root{color:var(--ink);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--bg:#f7f5ef;--surface:#eeece3;--ink:#202b24;--muted:#686b62;--accent:#254d3b;--line:#dddcd1;--nav:#f7f5eff5;--accent-hover:#285340;--accent-active:var(--accent);--accent-contrast:var(--bg);--focus:#ba8950;--reading-bg:#dbe2d2;--reading-ink:#254d3b;--favorite-bg:#14261edb;--favorite-ink:#fff;--backdrop:#07130fb0;--cover-shadow:inset 3px 0 5px #0002,0 6px 14px #0001;--disabled-opacity:.65;font-family:Arial,Helvetica,sans-serif}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#10251e;--surface:#1a342a;--ink:#f6f4e9;--muted:#bec6bb;--accent:#b9d5b7;--line:#355045;--nav:#10251ef7;--accent-hover:#c8e6c6;background:var(--bg);color:var(--ink)}*{box-sizing:border-box}body{background:var(--bg);min-width:320px;color:var(--ink);margin:0}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{cursor:pointer;color:inherit}button,a{touch-action:manipulation}button{border:0}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--focus);outline-offset:4px}a{color:inherit}h1,h2,p{margin:0}h1,h2,.brand strong,.book-title{font-family:Georgia,Times New Roman,serif;font-weight:400}h1{letter-spacing:-1.7px;margin-bottom:18px;font-size:clamp(36px,5.5vw,54px);line-height:1.07}h1:focus{outline:none}h1 em{color:var(--accent);font-style:normal}h2{letter-spacing:-.7px;font-size:28px;line-height:1.1}.app{max-width:920px;padding:calc(24px + max(env(safe-area-inset-top),var(--tg-inset-top,0px))) max(24px,var(--tg-inset-right,0px)) 110px max(24px,var(--tg-inset-left,0px));margin:auto}.header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:40px;display:flex}.brand{align-items:center;gap:12px;text-decoration:none;display:flex}.brand strong{font-size:23px;display:block}.brand small{color:var(--muted);letter-spacing:.3px;margin-top:5px;font-size:11px;display:block}.brand-mark{background:var(--accent);width:44px;height:44px;color:var(--accent-contrast);border-radius:50%;place-items:center;display:grid}.theme-toggle,.round{background:var(--surface);border-radius:50%;flex-shrink:0;place-items:center;width:44px;height:44px;display:grid}.intro{color:var(--muted);max-width:450px;margin-bottom:28px;font-size:17px;line-height:1.5}.page{animation:.25s ease-out appear}.featured{background:var(--surface);border-radius:16px;grid-template-columns:42% 1fr;align-items:center;gap:24px;margin:0 0 28px;padding:18px;display:grid}.cover{aspect-ratio:2/3;width:100%;box-shadow:var(--cover-shadow);background-image:none;background-size:300% 200%;border-radius:7px;display:block}.cover-0{background-position:0 0}.cover-1{background-position:50% 0}.cover-2{background-position:100% 0}.cover-3{background-position:0 100%}.cover-4{background-position:50% 100%}.cover-5{background-position:100% 100%}.cover-button{text-align:left;background:0 0;border-radius:7px;width:100%;padding:0;display:block}.featured-cover{max-width:230px}.featured-copy h2{margin:14px 0 8px;font-size:clamp(25px,4vw,38px)}.author{color:var(--muted);font-size:13px;line-height:1.5}.reading-label{background:var(--reading-bg);color:var(--reading-ink);border-radius:20px;align-items:center;gap:6px;padding:6px 9px;font-size:11px;display:inline-flex}.reading-label svg{width:15px;height:15px}.featured-description{color:var(--muted);max-width:310px;margin:14px 0 20px;font-size:15px;line-height:1.5}.primary{background:var(--accent);min-height:44px;color:var(--bg);border-radius:24px;justify-content:center;align-items:center;gap:12px;padding:12px 20px;font-size:14px;display:flex}.primary:hover{background:var(--accent-hover)}.primary:active{background:var(--accent-active)}.section-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.section-heading h2{font-size:26px}.book-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:28px 20px;display:grid}.book-card{min-width:0}.cover-wrap{position:relative}.cover-button:hover .cover{transform:translateY(-3px)}.cover{transition:transform .2s}.favorite{background:var(--favorite-bg);width:44px;height:44px;color:var(--favorite-ink);border-radius:50%;place-items:center;display:grid;position:absolute;top:6px;right:6px}.favorite svg{width:18px;height:18px}.favorite[aria-pressed=true] svg{fill:currentColor}.book-title{text-align:left;background:0 0;min-height:44px;padding:12px 0 4px;font-size:19px;line-height:1.15;display:block}.rating{color:var(--muted);align-items:center;gap:8px;margin-top:8px;font-size:11px;display:flex}.rating span:first-child{color:var(--accent)}.search{border:1px solid var(--line);height:49px;color:var(--muted);border-radius:28px;align-items:center;gap:12px;margin:26px 0 18px;padding:0 18px;display:flex}.search input{color:var(--ink);outline-offset:6px;background:0 0;border:0;width:100%;min-width:0}.search input::placeholder{color:var(--muted)}.chips{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.chips button{background:var(--surface);border-radius:25px;min-height:44px;padding:11px 17px;font-size:12px}.chips .active,.shelf-tabs .active{background:var(--accent);color:var(--bg)}.result-count{color:var(--muted);margin:0 0 18px;font-size:12px}.shelf-tabs{border:1px solid var(--line);border-radius:30px;gap:4px;margin:24px 0;padding:4px;display:flex}.shelf-tabs button{background:0 0;border-radius:25px;width:50%;min-height:44px;font-size:14px}.shelf-tabs span{opacity:.75;margin-left:6px;font-size:11px}.empty{text-align:center;padding:42px 10px}.empty h2{margin:14px 0}.empty p{color:var(--muted);margin-bottom:24px;line-height:1.6}.empty .primary{margin:auto}.demo-note{color:var(--muted);text-align:center;margin-top:36px;font-size:11px;line-height:1.6}.bottom-nav{z-index:5;width:min(100%,920px);padding:12px 16px calc(12px + max(env(safe-area-inset-bottom),var(--tg-inset-bottom,0px)));background:var(--nav);border-top:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:22px 22px 0 0;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav button{min-height:46px;color:var(--muted);background:0 0;flex-direction:column;flex:1;align-items:center;gap:7px;font-size:11px;display:flex}.bottom-nav button[aria-current]{color:var(--accent)}.bottom-nav button[aria-current] svg{stroke-width:2.6px}.sr-only{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}dialog{border:1px solid var(--line);background:var(--bg);color:var(--ink);overscroll-behavior:contain;border-radius:20px;width:min(440px,100% - 28px);max-height:calc(100dvh - 60px);padding:0}dialog::backdrop{background:var(--backdrop);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.book-detail{padding:28px;position:relative}.dialog-close{position:absolute;top:12px;right:12px}.detail-cover{width:150px;margin:0 auto 24px}.detail-genre{color:var(--accent);margin-bottom:8px;font-size:12px}.book-detail h2{margin-bottom:9px;font-size:32px}.book-detail>p:not(.author,.rating,.detail-genre){margin:20px 0;font-size:15px;line-height:1.7}.book-detail .primary,.secondary{width:100%;margin-top:12px}.secondary{border:1px solid var(--line);background:0 0;border-radius:24px;min-height:44px;padding:12px;font-size:13px}@media (width>=650px){.featured{grid-template-columns:210px 1fr;gap:36px;padding:24px}.home-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.header{margin-bottom:48px}.featured-copy .primary{max-width:240px}.featured-description{font-size:18px}}@media (width<=649px){.app{max-width:480px;padding-left:max(20px,var(--tg-inset-left,0px));padding-right:max(20px,var(--tg-inset-right,0px))}.header{margin-bottom:30px}.brand strong{font-size:19px}.brand-mark{width:37px;height:37px}.brand{gap:9px}h1{font-size:38px}.book-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 14px}.featured{gap:15px;padding:12px}.featured-copy h2{font-size:25px}.featured-description{margin:10px 0 14px;font-size:12px}.featured-copy .author{font-size:11px}.featured-copy .primary{gap:8px;padding:10px 13px;font-size:12px}.section-heading h2{font-size:24px}.book-title{font-size:19px}.bottom-nav{max-width:480px}}body{min-width:0}.catalog-more{margin:28px auto 0}button:disabled{cursor:not-allowed;opacity:var(--disabled-opacity)}@media (width<=359px){h1{font-size:33px}.app{padding-left:16px;padding-right:16px}.brand small{font-size:10px}.featured{grid-template-columns:40% 1fr;gap:10px}.featured-copy h2{font-size:22px}.reading-label{padding:5px 7px;font-size:10px}.featured-description{font-size:11px}.rating{gap:5px;font-size:10px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@keyframes appear{0%{opacity:.5;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.cloudflare-diagnostics{border-top:1px solid var(--line);max-width:450px;margin-top:24px;padding-top:16px}.cloudflare-diagnostics h2{letter-spacing:0;font-size:20px}.cloudflare-diagnostics p{color:var(--muted);overflow-wrap:anywhere;margin-top:8px;font-size:13px;line-height:1.5}.cloudflare-diagnostics .secondary{width:auto;max-width:100%;margin-top:12px}.source-switch{flex-wrap:wrap;align-items:center;gap:8px;min-height:44px;margin:0 0 24px;font-size:13px;display:flex}.source-switch input{accent-color:var(--accent);width:18px;height:18px}.source-switch small{color:var(--muted)}.cover-placeholder{background-image:none;background-color:var(--surface);color:var(--muted);text-align:center;border:1px solid var(--line);flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:12px;display:flex}.book-meta,.book-description{color:var(--muted);overflow-wrap:anywhere;margin-top:8px;font-size:12px;line-height:1.5}.book-description{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.sort-control{color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;margin:16px 0;font-size:13px;display:flex}.sort-control select{font:inherit;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:20px;max-width:100%;padding:12px}.book-title,.featured-copy h2{overflow-wrap:anywhere}.rating{flex-wrap:wrap}.page-catalog .book-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.catalog-card .book-title{-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:19px;display:-webkit-box;overflow:hidden}.catalog-card .rating{gap:4px 8px;font-size:12px;line-height:1.5}.book-tags{flex-wrap:wrap;gap:6px;min-width:0;margin-top:10px;display:flex}.book-tags span{background:var(--surface);color:var(--accent);overflow-wrap:anywhere;border-radius:12px;max-width:100%;padding:5px 9px;font-size:12px;line-height:1.4}.filter-triggers{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.filter-triggers button{border:1px solid var(--line);background:var(--surface);border-radius:24px;align-items:center;gap:12px;min-height:44px;padding:10px 16px;font-size:14px;display:flex}.filter-triggers button[aria-expanded=true]{border-color:var(--accent)}.selected-filters{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.selected-filters button{background:var(--accent);color:var(--accent-contrast);overflow-wrap:anywhere;text-align:left;border-radius:20px;align-items:center;gap:6px;max-width:100%;min-height:44px;padding:8px 12px;font-size:13px;display:inline-flex}.selected-filters svg{flex-shrink:0;width:16px;height:16px}.selected-filters .clear-filters{color:var(--muted);text-underline-offset:3px;background:0 0;text-decoration:underline}.catalog-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;min-height:44px;margin:16px 0 20px;display:flex}.catalog-toolbar .result-count,.catalog-toolbar .sort-control{margin:0}.catalog-toolbar .result-count{font-size:13px}.filter-panel[open]{flex-direction:column;animation:.2s ease-out appear;display:flex;overflow:hidden}.filter-panel{width:min(440px,100% - 32px);height:min(620px,100dvh - 64px);padding:20px}.filter-header{flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;display:flex}.filter-header h2{font-size:28px}.filter-search{flex-shrink:0;margin:16px 0 12px}.filter-hint,.filter-limit{color:var(--muted);flex-shrink:0;font-size:13px;line-height:1.5}.filter-limit:empty{display:none}.filter-limit{color:var(--accent);margin-top:8px}.filter-options{overscroll-behavior:contain;touch-action:pan-y;scrollbar-color:var(--line) var(--bg);scrollbar-width:thin;flex:1;min-height:0;margin:12px -4px;padding:4px;overflow-y:auto}.filter-option{cursor:pointer;overflow-wrap:anywhere;border-radius:12px;align-items:center;gap:12px;min-height:48px;padding:10px 12px;font-size:15px;line-height:1.4;display:flex}.filter-option input{width:18px;height:18px;accent-color:var(--accent);flex-shrink:0;margin:0}.filter-option.selected{background:var(--surface);color:var(--accent)}.filter-option:hover{background:var(--surface)}.filter-empty{color:var(--muted);padding:16px 8px;font-size:14px;line-height:1.6}.filter-footer{border-top:1px solid var(--line);flex-shrink:0;gap:12px;padding-top:16px;display:flex}.filter-footer .primary,.filter-footer .secondary{flex:1;width:auto;min-width:0;margin:0}.detail-tags{margin:16px 0}.book-detail .rating{color:var(--accent);font-size:14px;line-height:1.5}.book-detail>p.club-status{color:var(--accent);background:var(--surface);border-radius:12px;margin:16px 0;padding:10px 12px;font-size:13px}.book-detail .author{font-size:14px}.book-detail .dialog-close{float:right;z-index:1;margin:-16px -16px 0 0;position:sticky;top:0}.cover-placeholder svg{opacity:.8;width:32px;height:32px}dialog{scrollbar-color:var(--line) var(--bg);scrollbar-width:thin}input{caret-color:var(--accent)}::selection{background:var(--accent);color:var(--accent-contrast)}@media (width>=1000px){.page-catalog .book-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width<=649px){.page-catalog .book-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-panel{width:100%;max-width:none;height:min(620px,calc(100dvh - 24px - max(env(safe-area-inset-top),var(--tg-inset-top,0px))));max-height:none;padding:20px max(20px,var(--tg-inset-right,0px)) calc(20px + max(env(safe-area-inset-bottom),var(--tg-inset-bottom,0px))) max(20px,var(--tg-inset-left,0px));border-radius:20px 20px 0 0;margin:0;position:fixed;inset:auto 0 0}.filter-panel[open]{animation:.2s ease-out sheet-appear}}@keyframes sheet-appear{0%{opacity:.7;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
