:root{--ink:#14241f;--paper:#f4f0e7;--cream:#e8e0d0;--jade:#89a79c;--orange:#d48a58;--line:rgba(20,36,31,.14);--serif:Georgia,"Songti SC","SimSun",serif;--sans:Inter,"PingFang SC","Microsoft YaHei",sans-serif;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#ede9df;color:var(--ink);font-family:var(--sans);min-height:100vh}.site-header{height:74px;position:sticky;top:0;z-index:20;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 clamp(18px,4vw,64px);border-bottom:1px solid var(--line);background:rgba(244,240,231,.92);backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none;width:max-content}.brand-mark{width:38px;height:38px;display:grid;place-items:center;border-radius:7px;background:var(--ink);color:#f3f5ef;font:700 19px var(--serif)}.brand>span:last-child{display:flex;flex-direction:column}.brand b{font-size:17px}.brand small{font-size:7px;letter-spacing:.18em;color:#83918c}.folder-status{display:flex;align-items:center;gap:8px;max-width:42vw;color:#718079;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:#56a178;box-shadow:0 0 0 4px rgba(86,161,120,.12)}.quiet-button{justify-self:end;border:1px solid var(--line);border-radius:22px;padding:9px 14px;background:transparent;color:var(--ink);cursor:pointer}.quiet-button:hover{background:var(--ink);color:white}.library-shell{width:min(1440px,100%);margin:auto;padding:0 clamp(18px,5vw,76px) 80px}.hero{min-height:420px;display:grid;grid-template-columns:1fr auto;align-items:center;padding:60px 4vw;border-bottom:1px solid var(--line);position:relative;overflow:hidden}.hero:after{content:"READ";position:absolute;right:5%;bottom:-52px;font:700 clamp(120px,20vw,300px)/.75 var(--serif);color:rgba(20,36,31,.035);pointer-events:none}.eyebrow,.section-heading>div>span{font-size:9px;letter-spacing:.24em;color:#8c9994}.hero h1{margin:16px 0 20px;font:500 clamp(48px,7vw,92px)/.95 var(--serif);letter-spacing:-.04em}.hero p{max-width:600px;margin:0;color:#6d7974;font-size:14px;line-height:1.9}.hero p b{color:var(--ink)}.library-count{z-index:1;width:190px;height:190px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;align-content:center;text-align:center;background:rgba(244,240,231,.45)}.library-count strong{font:500 56px/1 var(--serif)}.library-count span{margin-top:10px;color:#73817b;font-size:9px;line-height:1.5;letter-spacing:.1em}.collection-section{padding:54px 0}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:34px}.section-heading h2{margin:8px 0 0;font:500 34px var(--serif)}.search-box{width:min(280px,45vw);height:42px;display:flex;align-items:center;gap:9px;border-bottom:1px solid var(--line)}.search-box span{font-size:22px}.search-box input{width:100%;border:0;outline:0;background:transparent;color:var(--ink);font:12px var(--sans)}.shelf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:40px 30px}.magazine-card{min-width:0;border:0;background:transparent;padding:0;text-align:left;color:inherit;cursor:pointer}.cover-wrap{position:relative;width:100%;aspect-ratio:var(--cover-ratio,.707);display:grid;place-items:center;padding:10px 10px 17px;transition:transform .32s ease}.cover-wrap:before{content:"";position:absolute;inset:10px 8px 15px 13px;background:#d8d1c2;box-shadow:8px 8px 0 #c7c0b2,0 22px 35px rgba(35,43,39,.2);transform:rotate(1deg)}.cover-page{position:relative;width:100%;height:100%;overflow:hidden;background:#f5f1e8;box-shadow:0 1px 2px rgba(0,0,0,.15);transition:transform .35s ease;transform-origin:left center}.magazine-card:hover .cover-wrap{transform:translateY(-8px)}.magazine-card:hover .cover-page{transform:perspective(900px) rotateY(-5deg)}.cover-element{position:absolute;white-space:pre-line;overflow:hidden;line-height:1.08;display:flex;flex-direction:column;justify-content:center}.cover-element img{width:100%;height:100%;object-fit:cover}.card-info{padding:15px 5px 0}.card-info h3{font:600 18px/1.35 var(--serif);margin:0 0 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-meta{display:flex;justify-content:space-between;color:#83908a;font-size:9px;letter-spacing:.05em}.music-tag{color:#a96a42}.loading-state,.empty-state{min-height:300px;display:grid;place-items:center;align-content:center;color:#7b8882}.loading-state i{width:34px;height:34px;border:2px solid #c9d1cd;border-top-color:var(--ink);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:14px}.empty-state{border:1px dashed #b9c0bc;text-align:center;padding:35px}.empty-mark{width:48px;height:48px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line);font-size:24px}.empty-state h3{font:500 24px var(--serif);margin:16px 0 5px}.empty-state p{font-size:12px;color:#7b8882}.empty-state code{max-width:90%;padding:10px 14px;background:#e2ddd2;border-radius:6px;overflow-wrap:anywhere}.file-errors{padding:12px 15px;margin-bottom:20px;border-left:3px solid #b6684e;background:#f0dfd8;color:#814c3b;font-size:11px;line-height:1.7}.reader{position:fixed;inset:0;z-index:100;background:#11201b;color:#f2f5f1;display:grid;grid-template-rows:66px minmax(0,1fr) 58px;overflow:hidden}.reader[hidden]{display:none}.reader-header{display:grid;grid-template-columns:1fr auto;align-items:center;padding:0 clamp(12px,3vw,38px);border-bottom:1px solid rgba(255,255,255,.1);background:#142620}.reader-brand{display:flex;align-items:center;gap:10px;min-width:0}.reader-brand>span{width:30px;height:30px;display:grid;place-items:center;background:#edf3ef;color:var(--ink);border-radius:5px;font:700 15px var(--serif)}.reader-brand b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}.reader-brand small{color:#789087;font-size:8px}.reader-actions{display:flex;gap:7px}.reader-actions button{border:1px solid rgba(255,255,255,.16);border-radius:18px;background:transparent;color:#dce7e2;padding:8px 11px;font-size:9px;cursor:pointer}.reader-actions button:hover{background:#edf3ef;color:var(--ink)}.reader-stage{position:relative;min-height:0;display:flex;align-items:center;justify-content:center;gap:22px;padding:18px;overflow:hidden;perspective:1800px}.book-host{flex:0 0 auto;position:relative;filter:drop-shadow(0 22px 30px rgba(0,0,0,.42))}.page-arrow{z-index:30;width:44px;height:44px;flex:0 0 auto;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:rgba(255,255,255,.05);color:white;font-size:27px;cursor:pointer}.page-arrow:disabled{opacity:.2;cursor:default}.flip-page{background:transparent}.page-surface{position:absolute;inset:0;overflow:hidden}.page-surface:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset -1px 0 rgba(60,52,44,.08)}.flip-page.blank-page,.flip-page.blank-page .page-surface{background:transparent!important;box-shadow:none!important}.book-host.reader-landscape.is-first-page .stf__item.--left:not(.blank-page){display:none!important}.book-host.reader-landscape.is-first-page .blank-page{visibility:hidden!important;opacity:0!important}.page-element{position:absolute;white-space:pre-line;overflow:hidden;line-height:1.08;display:flex;flex-direction:column;justify-content:center}.page-element img{width:100%;height:100%;object-fit:cover}.reader-footer{display:grid;grid-template-columns:90px 1fr 220px;align-items:center;gap:20px;padding:0 clamp(16px,3vw,36px);border-top:1px solid rgba(255,255,255,.1);color:#92a49e;font-size:9px}.reading-progress{height:2px;background:rgba(255,255,255,.12)}.reading-progress i{display:block;width:0;height:100%;background:var(--orange);transition:width .35s}.reader-footer>span:last-child{text-align:right}.toast{position:fixed;z-index:200;left:50%;bottom:30px;transform:translateX(-50%);padding:11px 16px;border-radius:7px;background:#f2f5f1;color:var(--ink);font-size:11px;box-shadow:0 12px 40px rgba(0,0,0,.25)}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:760px){.site-header{grid-template-columns:1fr auto;height:64px}.folder-status{display:none}.brand small{display:none}.library-shell{padding-inline:16px}.hero{min-height:350px;padding:46px 4px;grid-template-columns:1fr}.hero p{font-size:12px}.library-count{display:none}.shelf-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:25px 12px}.cover-wrap{padding:6px 6px 12px}.card-info h3{font-size:14px}.section-heading{margin-bottom:22px}.reader{grid-template-rows:56px minmax(0,1fr) 48px}.reader-header{padding:0 9px}.reader-brand small,.reader-actions #fullscreenButton{display:none}.reader-actions button{padding:7px 8px}.reader-stage{padding:7px;gap:0}.page-arrow{position:absolute;top:50%;transform:translateY(-50%);width:34px;height:34px;background:rgba(10,24,19,.68)}.page-arrow.left{left:5px}.page-arrow.right{right:5px}.reader-footer{grid-template-columns:auto 1fr auto;gap:8px;padding:0 10px}.reader-footer>span:last-child{max-width:92px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-host{max-width:none}.stf__parent{touch-action:none}}@media(max-width:420px){.reader-brand b{max-width:120px}.reader-actions button{font-size:0}.reader-actions #musicButton:before{content:"♫";font-size:14px}.reader-actions #closeReader:before{content:"×";font-size:16px}.search-box{width:42vw}.shelf-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

[hidden]{display:none!important}.library-shell{padding-top:0}.collection-section{padding:34px 0 70px}.bookshelf-toolbar{position:relative;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:28px;padding:0 0 25px;margin-bottom:28px;border-bottom:1px solid var(--line)}.library-intro>span{font-size:8px;letter-spacing:.22em;color:#8c9994}.library-intro>div{display:flex;align-items:baseline;gap:14px}.library-intro h1{margin:6px 0 0;font:500 34px var(--serif)}.library-intro em{font-style:normal;color:#83908a;font-size:10px}.library-intro em b{font:600 14px var(--serif);color:var(--ink)}.library-controls{display:flex;align-items:center;gap:10px}.library-controls .search-box{width:min(340px,38vw);height:42px;padding:0 13px;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.32)}.library-controls .search-box:focus-within{border-color:#76978c;background:rgba(255,255,255,.6)}.date-filter{position:relative}.filter-button{height:42px;min-width:128px;display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;padding:0 12px;background:rgba(255,255,255,.32);color:var(--ink);cursor:pointer}.filter-button b{font-size:11px;font-weight:600;white-space:nowrap}.filter-button i{font-style:normal;margin-left:auto;color:#89958f}.filter-button.active{background:var(--ink);color:white}.date-filter-panel{position:absolute;right:0;top:50px;width:370px;padding:18px;border:1px solid var(--line);border-radius:10px;background:#f6f2e9;box-shadow:0 18px 55px rgba(28,40,35,.18)}.filter-panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.filter-panel-head>div{display:flex;flex-direction:column}.filter-panel-head span{font-size:7px;letter-spacing:.2em;color:#8c9994}.filter-panel-head b{font:500 17px var(--serif);margin-top:4px}.filter-panel-head button{border:0;background:transparent;color:#9a6546;font-size:10px;cursor:pointer}.date-selects{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:8px}.date-selects label{font-size:9px;color:#74817b}.date-selects select{width:100%;margin-top:6px;border:1px solid #d4d4cd;border-radius:6px;background:white;padding:9px 7px;color:var(--ink);outline:0}.date-filter-panel>p{margin:12px 0 0;color:#8a9691;font-size:8px}.loading-state{min-height:76px;display:flex;align-items:center;justify-content:center;gap:10px}.loading-state i{width:18px;height:18px;margin:0}.compact-empty{min-height:112px;display:flex;align-items:center;justify-content:flex-start;gap:15px;text-align:left;padding:22px 26px;margin-bottom:20px}.compact-empty .empty-mark{width:40px;height:40px;flex:0 0 auto}.compact-empty h3{font:500 18px var(--serif);margin:0 0 4px}.compact-empty p{margin:0}.compact-empty code{padding:3px 6px}.no-results{min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px dashed #bec5c1;color:#78857f}.no-results b{font:500 20px var(--serif)}.no-results span{font-size:10px;margin:7px 0 12px}.no-results button{border:1px solid var(--line);border-radius:6px;background:transparent;padding:8px 12px;color:var(--ink);cursor:pointer}@media(max-width:760px){.collection-section{padding-top:22px}.bookshelf-toolbar{align-items:flex-start;flex-direction:column;gap:16px;margin-bottom:20px;padding-bottom:18px}.library-intro h1{font-size:28px}.library-controls{width:100%}.library-controls .search-box{width:auto;flex:1;max-width:none}.filter-button{min-width:44px;padding:0 10px}.filter-button b{display:none}.filter-button i{display:none}.date-filter-panel{right:0;width:min(370px,calc(100vw - 32px))}.date-selects{grid-template-columns:1fr}.compact-empty{align-items:flex-start}.shelf-grid{margin-top:4px}}

/* PageFlip owns the cover and back-cover edge states. Never force hidden
   historical pages back into view; that creates duplicate covers and flashes. */
.book-host .stf__item,.book-host .stf__block{backface-visibility:hidden;transform-style:preserve-3d}
.book-host:not(.is-page-turning) .stf__item{will-change:auto}
.book-host.reader-landscape.is-first-page.is-page-turning .stf__item.--left[data-project-index="1"]{display:block!important;visibility:visible!important;opacity:1!important}

.reader-opening{position:absolute;inset:0;z-index:90;display:grid;place-items:center;align-content:center;gap:9px;background:rgba(17,32,27,.96);color:#edf3ef;text-align:center}.reader-opening[hidden]{display:none}.reader-opening i,.page-loading-indicator i{width:32px;height:32px;border:2px solid rgba(255,255,255,.22);border-top-color:#d48a58;border-radius:50%;animation:spin .8s linear infinite}.reader-opening b{font:500 18px var(--serif);letter-spacing:.08em}.reader-opening span{color:#8fa39b;font-size:10px}.page-loading-indicator{position:absolute;inset:0;z-index:60;display:grid;place-items:center;align-content:center;gap:10px;background:rgba(244,240,231,.96);color:#64736d;transition:opacity .22s ease,visibility .22s ease}.page-loading-indicator i{border-color:rgba(20,36,31,.18);border-top-color:#d48a58}.page-loading-indicator span{font-size:10px}.page-surface.page-ready .page-loading-indicator{opacity:0;visibility:hidden;pointer-events:none}.page-loading-indicator.is-slow span{color:#8b5c44}.reader-actions #musicButton.needs-user-action{border-color:#d48a58;color:#ffd3b6;box-shadow:0 0 0 3px rgba(212,138,88,.1)}
