.sg-lead{color:var(--color-faint);margin:8px 0 36px;max-width:60ch}.sg-note{color:var(--color-faint);font-size:14px;margin:0 0 16px}.sg-subhead{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-muted);margin:32px 0 16px}.sg-subhead:first-of-type{margin-top:8px}.sg-note code{font-family:var(--font-mono);font-size:13px}.sg-reader-demo{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--elev-1);padding:24px 28px;max-width:680px}.sg-reader-demo h2{margin-top:0}.sg-section{margin-bottom:44px;padding-bottom:32px;border-bottom:1px solid var(--color-border)}.sg-section>h2{font-size:22px;line-height:1.2;margin-bottom:20px}.sg-row{display:flex;flex-wrap:wrap;gap:16px;align-items:center}.sg-type{display:flex;flex-direction:column;gap:20px}.sg-type small{color:var(--color-muted);font-family:var(--font-mono);font-size:12px}.sg-swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}.sg-swatch{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--elev-1);overflow:hidden}.sg-swatch-chip{height:72px;border-bottom:1px solid var(--color-border)}.sg-swatch-info{padding:12px;display:flex;flex-direction:column;gap:3px}.sg-swatch-info strong{font-size:14px}.sg-swatch-info code{font-size:12px;color:var(--color-faint)}.sg-token{color:var(--color-muted)!important}.sg-elev{background:var(--color-surface);border-radius:var(--radius-md);padding:20px;min-width:150px;display:flex;flex-direction:column;gap:6px}.sg-elev code{font-size:11px}.sg-radius{display:flex;flex-direction:column;align-items:center;gap:6px}.sg-radius-box{width:80px;height:80px;background:linear-gradient(135deg,var(--color-primary),var(--color-accent))}.sg-radius code{font-size:12px;color:var(--color-faint)}.sg-spacing{display:flex;flex-direction:column;gap:10px}.sg-space-row{display:flex;align-items:center;gap:12px}.sg-space-bar{height:18px;background:var(--color-primary);border-radius:2px}.sg-space-row code{font-size:12px;color:var(--color-faint)}.app{min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;height:60px;padding:0 24px;background-color:#ffffffb8;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--color-border)}@media (prefers-color-scheme: dark){.topbar{background-color:#0c0a09b8}}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--color-ink)}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:var(--radius-sm);background-color:var(--color-primary);color:#fff;font-family:var(--font-display);font-weight:700;font-size:20px}.brand-name{font-family:var(--font-display);font-weight:700;font-size:22px}.main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:48px 24px 80px;animation:fadeInBlur .45s var(--ease) both}.main-home{padding-left:0;padding-right:0}.library-head{display:flex;align-items:center;gap:16px;margin-bottom:48px}.library-head>h1{flex:1 1 0;min-width:0}.library-filters{flex:1 1 0;display:flex;justify-content:flex-end;gap:8px}.view-tabs{display:inline-flex;align-items:center;gap:2px;height:28px;padding:2px;border-radius:24px;background:var(--color-subtle)}.view-tab{display:grid;place-items:center;width:28px;height:24px;border:none;border-radius:20px;background:none;color:var(--color-muted);cursor:pointer;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}.view-tab:hover{color:var(--color-ink)}.view-tab.active{background:var(--color-surface);box-shadow:var(--elev-1);color:var(--color-ink)}.filter{position:relative}.filter-pill{display:inline-flex;align-items:center;gap:2px;height:28px;padding:0 8px 0 12px;border:none;border-radius:24px;background:var(--color-subtle);color:var(--color-muted);font-family:var(--font-ui);font-size:14px;font-weight:500;cursor:pointer;transition:background-color var(--dur) var(--ease)}.filter-pill:hover{background:var(--color-border)}.filter-pill svg{color:var(--color-muted);transition:transform var(--dur) var(--ease)}.filter-pill.open svg{transform:rotate(180deg)}.filter-menu{position:absolute;top:calc(100% + 6px);z-index:20;min-width:100%;display:flex;flex-direction:column;gap:2px;padding:4px;border-radius:8px;background:var(--color-surface);box-shadow:0 0 0 1px var(--color-border),var(--elev-4);animation:fadeInBlur .14s var(--ease) both}.filter-menu-left{left:0}.filter-menu-right{right:0}.filter-option{display:flex;align-items:center;justify-content:space-between;gap:16px;height:28px;padding:0 8px;border:none;border-radius:6px;background:none;font-family:var(--font-ui);font-size:14px;font-weight:500;color:var(--color-muted);white-space:nowrap;cursor:pointer;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}.filter-option:hover,.filter-option.selected{background:var(--color-subtle);color:var(--color-ink)}.filter-option svg{color:var(--color-ink)}.shelf{display:grid;grid-template-columns:repeat(4,1fr);gap:56px 40px}@media (max-width: 880px){.shelf.shelf-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 640px){.shelf.shelf-grid{grid-template-columns:repeat(2,1fr)}}.shelf-rows{display:flex;flex-direction:column;gap:80px;padding-top:8px}.shelf-row{position:relative}.shelf-row-books{position:relative;z-index:1;display:flex;align-items:flex-end;justify-content:flex-start;column-gap:26px;padding:0}.shelf-row .book-card{flex:0 0 calc((100% - 104px)/5);width:auto;display:flex;flex-direction:column;background:none;border-radius:0;box-shadow:none;overflow:visible;transform:translateY(-14px)}.shelf-row .book-card:hover{transform:translateY(-14px);box-shadow:none}.shelf-row .book-body,.shelf-row .book-badge,.shelf-row .book-menu{display:none}.shelf-board{position:relative;z-index:0;height:16px;margin:-3px -44px 0;border-radius:0 0 3px 3px;background-color:#5a3f27;background-image:linear-gradient(180deg,#d6aa784d 0,#d6aa7800 5px),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='30'%3E%3Cfilter id='wl'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.009 0.5' numOctaves='3' seed='3'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.7 0 0 0 0 0.54 0 0 0 0 0.36 0 0 0 0.18 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23wl)'/%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='30'%3E%3Cfilter id='wd'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.006 0.4' numOctaves='4' seed='11'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.18 0 0 0 0 0.11 0 0 0 0 0.06 0 0 0 0.5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23wd)'/%3E%3C/svg%3E"),linear-gradient(180deg,#6f4e30 0,#5e4127 55%,#47331f);background-size:auto,100% 100%,100% 100%,auto;box-shadow:0 14px 22px #00000073,inset 0 -2px 4px #00000059}.shelf-board:before{content:"";position:absolute;left:0;right:0;bottom:100%;height:24px;transform-origin:bottom center;transform:perspective(220px) rotateX(25deg);background-color:#3a2a1a;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='44'%3E%3Cfilter id='tl'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.008 0.45' numOctaves='3' seed='6'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.55 0 0 0 0 0.4 0 0 0 0 0.25 0 0 0 0.14 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23tl)'/%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='44'%3E%3Cfilter id='td'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.006 0.35' numOctaves='4' seed='4'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.08 0 0 0 0 0.05 0 0 0 0 0.02 0 0 0 0.55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23td)'/%3E%3C/svg%3E"),linear-gradient(180deg,#2c1f12,#43301d);background-size:100% 100%,100% 100%,auto}.shelf.shelf.shelf-list{display:flex;flex-direction:column;grid-template-columns:none;gap:20px;max-width:760px}.shelf.shelf-list .book-card{flex-direction:row;align-items:center;gap:20px}.shelf.shelf-list .book-cover3d{flex:0 0 70px;width:70px}.shelf.shelf-list .book-body{flex:1;min-width:0}.shelf.shelf-list .book-body h3{font-size:20px}.skel-card{display:flex;flex-direction:column;gap:12px}.skel{background:linear-gradient(90deg,var(--color-subtle) 25%,var(--color-border) 37%,var(--color-subtle) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:var(--radius-sm)}.skel-cover{aspect-ratio:184 / 264;border-radius:3px 10px 10px 3px}.skel-line{height:12px;margin-top:2px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.shelf .book-card{position:relative;display:flex;flex-direction:column;gap:16px;background:none;border-radius:0;box-shadow:none;overflow:visible;text-decoration:none;color:var(--color-ink);transition:transform var(--dur) var(--ease)}.shelf .book-card:hover{transform:none;box-shadow:none}.book-cover3d{position:relative;width:100%;aspect-ratio:184 / 264;perspective:1400px}.book-cover3d .book-pages{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:3px 10px 10px 3px;background:linear-gradient(90deg,#c9c2b3,#efe9dd 9%,#f7f2e9 55%,#efe7d8);box-shadow:inset 0 0 0 1px #0000000f}.book-cover3d .book-pages:after{content:"";position:absolute;top:6%;right:4%;bottom:6%;left:16%;background-image:repeating-linear-gradient(to right,rgba(0,0,0,.05) 0 1px,transparent 1px 4px);border-radius:2px}.book-cover3d .book-cover{position:absolute;top:0;right:0;bottom:0;left:0;height:auto;padding:0;border-radius:3px 10px 10px 3px;background:#242424 center / cover no-repeat;box-shadow:var(--elev-4),inset 0 0 0 1px #ffffff0f,inset 0 0 30px #0000002e;transform-origin:left center;transform:rotateY(0);transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s var(--ease);backface-visibility:hidden;overflow:hidden}.book-cover3d:hover .book-cover{transform:rotateY(-22deg);box-shadow:14px 18px 36px #00000080}.book-cover3d .book-spine{position:absolute;left:0;top:0;bottom:0;width:32px;pointer-events:none;z-index:1;background:linear-gradient(to right,#00000042 0,#0000001f 12px,#fff3 15px,#fff3 16px,#00000029 19px,#0000 26px)}.book-cover3d .book-sheen{position:absolute;top:-10%;right:-20%;bottom:-10%;left:-20%;pointer-events:none;z-index:1;background:linear-gradient(108deg,#fff0 30%,#ffffff5c,#fff0 70%),radial-gradient(140% 80% at 70% -10%,rgba(255,255,255,.22),transparent 45%),repeating-linear-gradient(26deg,rgba(0,0,0,.05) 0 1px,transparent 1px 3px);mix-blend-mode:soft-light;transform:translate(0);transition:transform .5s cubic-bezier(.2,.7,.2,1)}.book-cover3d:hover .book-sheen,.cta-card:hover .book-sheen{transform:translate(22%)}.book-menu{position:absolute;top:8px;left:8px;z-index:4}.book-menu-btn{display:grid;place-items:center;width:28px;height:28px;border:none;border-radius:999px;background:var(--color-surface);box-shadow:0 0 0 1px var(--color-border) inset,var(--elev-1);color:var(--color-muted);cursor:pointer;opacity:0;transition:opacity var(--dur) var(--ease),color var(--dur) var(--ease)}.book-card:hover .book-menu-btn,.book-menu-btn:focus-visible{opacity:1}.book-menu-btn:hover{color:var(--color-ink)}.book-menu-list{position:absolute;top:calc(100% + 6px);left:0;min-width:140px;display:flex;flex-direction:column;gap:2px;padding:4px;border-radius:8px;background:var(--color-surface);box-shadow:0 0 0 1px var(--color-border),var(--elev-4);animation:fadeInBlur .14s var(--ease) both}.book-menu-item{display:flex;align-items:center;height:28px;padding:0 8px;border:none;border-radius:6px;background:none;font-family:var(--font-ui);font-size:14px;font-weight:500;color:var(--color-muted);text-align:left;cursor:pointer;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}.book-menu-item:hover{background:var(--color-subtle);color:var(--color-ink)}.book-menu-item.destructive{color:#e5484d}.book-menu-item.destructive:hover{background:#e5484d1f;color:#e5484d}.shelf .book-body{display:flex;flex-direction:column;gap:16px;padding:0}.book-titlegroup{display:flex;flex-direction:column;gap:0}.shelf .book-body h3{font-size:25px;line-height:1.12}.shelf .book-author{margin:0;font-family:var(--font-read);font-size:14px;color:var(--color-muted)}.shelf .book-meta{padding:0;border:none;text-transform:none;letter-spacing:0;font-family:var(--font-read);font-size:14px;color:var(--color-faint)}.book-badge{position:absolute;top:8px;right:8px;z-index:3;display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 8px 0 12px;border-radius:999px;background:var(--color-surface);box-shadow:0 0 0 1px var(--color-border) inset,var(--elev-1);font-family:var(--font-ui);font-size:14px;color:var(--color-muted)}.book-badge-ring{width:14px;height:14px;border-radius:50%;background:conic-gradient(var(--color-primary) calc(var(--p) * 360deg),var(--color-border-strong) 0);-webkit-mask:radial-gradient(closest-side,transparent 58%,#000 60%);mask:radial-gradient(closest-side,transparent 58%,#000 60%)}.book-card{position:relative;display:flex;flex-direction:column;background-color:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--elev-1);overflow:hidden;text-decoration:none;color:var(--color-ink);transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}.book-card:hover{box-shadow:var(--elev-8);transform:translateY(-3px)}.book-cover{position:relative;height:180px;background:linear-gradient(135deg,var(--color-primary),var(--color-accent));display:flex;align-items:flex-end;padding:18px}.book-cover .spine{font-family:var(--font-display);font-weight:700;font-size:22px;line-height:1.15;letter-spacing:-.02em;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.25)}.book-body{padding:16px;flex:1}.book-body h3{font-size:18px;line-height:1.25;margin-bottom:8px}.book-excerpt{font-size:14px;line-height:20px;color:var(--color-faint);margin:0}.book-meta{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--color-border);font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted)}.book-delete{position:absolute;top:10px;right:10px;width:30px;height:30px;border-radius:50%;border:none;background:var(--color-surface);box-shadow:var(--elev-2);color:var(--color-primary);font-size:16px;line-height:1;display:grid;place-items:center;opacity:0;transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}.book-delete:hover{transform:scale(1.08)}.book-card:hover .book-delete{opacity:1}.dropzone{border:1px dashed var(--color-border-strong);border-radius:var(--radius-lg);background-color:var(--color-subtle);padding:40px 24px;text-align:center;margin-bottom:32px;transition:border-color var(--dur) var(--ease),background-color var(--dur) var(--ease)}.dropzone.drag{border-color:var(--color-primary);background-color:#fb2c360a}.dropzone h3{font-size:20px;margin-bottom:6px}.dropzone p{color:var(--color-faint);margin:0 0 18px}.empty{text-align:center;padding:60px 20px;color:var(--color-faint)}.topbar-reader{height:60px;padding:0 24px}.topbar-inner{width:100%;max-width:680px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.topbar-home{height:60px;padding:0 24px;justify-content:center}.topbar-inner-wide{max-width:1200px;height:100%}.topbar-search{display:flex;align-items:flex-end;gap:16px;align-self:stretch;height:calc(100% + 1px);border-bottom:1px solid var(--color-border)}.topbar-search-bar{width:1px;height:16px;background:var(--color-border)}.topbar-search.active{border-bottom-color:var(--color-primary)}.topbar-search.active .topbar-search-bar{background:var(--color-primary)}.topbar-search-field{position:relative;display:flex;align-items:center;gap:12px;height:100%}.topbar-search-icon{flex:0 0 auto;color:var(--color-faint)}.topbar-search.active .topbar-search-icon{color:var(--color-ink)}.topbar-search-clear{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;padding:0;border:none;background:none;color:var(--color-faint);cursor:pointer;transition:color var(--dur) var(--ease)}.topbar-search-clear:hover{color:var(--color-ink)}.topbar-search-sizer{position:absolute;visibility:hidden;white-space:pre;pointer-events:none;font-family:var(--font-ui);font-size:16px;letter-spacing:-.01em}.topbar-search-input{width:0;max-width:60vw;height:auto;box-sizing:border-box;padding:0;caret-color:transparent;line-height:1.4;border:none;background:none;outline:none;text-align:center;font-family:var(--font-ui);font-size:16px;color:var(--color-ink);letter-spacing:-.01em}.topbar-search-input::placeholder{color:var(--color-faint);opacity:.6}.topbar-search-input::-webkit-search-cancel-button{-webkit-appearance:none}.search-inputwrap{position:relative;display:inline-flex;align-items:center}.search-caret{position:absolute;top:50%;transform:translateY(-50%);width:2px;height:18px;border-radius:999px;background:var(--color-primary);pointer-events:none;animation:caret-blink 1.1s steps(1) infinite}@keyframes caret-blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.upload-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:28px;padding:0 12px;border:none;border-radius:999px;background:linear-gradient(180deg,#ff683f,#f65b31);color:#fff;font-family:var(--font-ui);font-size:14px;font-weight:500;cursor:pointer;box-shadow:0 2px 4px #0000001f,inset 0 1px #ffffff52;transition:filter var(--dur) var(--ease),transform var(--dur) var(--ease)}.upload-btn:hover{filter:brightness(1.04)}.upload-btn:active{transform:translateY(1px)}.brand-logo{display:block;height:32px;width:auto}.brand-logo-dark{display:none}@media (prefers-color-scheme: dark){.brand-logo-light{display:none}.brand-logo-dark{display:block}}@property --p{syntax: "<number>"; inherits: true; initial-value: 0;}.reading-pill{position:relative;display:inline-flex;align-items:center;justify-content:center;width:104px;height:28px;padding:0 12px;border-radius:999px;background:var(--color-surface);transition:--p .12s linear}.reading-pill:before,.reading-pill:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;padding:1px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.reading-pill:before{background:var(--color-border)}.reading-pill:after{background:conic-gradient(from -90deg,transparent 0deg,var(--color-primary) min(20deg,calc(var(--p) * 360deg)),var(--color-primary) calc(var(--p) * 360deg),transparent calc(var(--p) * 360deg),transparent 360deg)}.reading-pill-label{position:relative;z-index:1;display:inline-flex;align-items:baseline;font-family:var(--font-ui);font-size:13px;line-height:1;letter-spacing:-.01em;color:var(--color-muted);white-space:pre}.reading-pill.completed{background:#ff8b1a1a}.reading-pill.completed:before{background:#ff8b1a29}.reading-pill.completed:after{display:none}.reading-pill.completed .reading-pill-label{font-size:14px;font-weight:500;color:var(--color-accent)}.roll{display:inline-flex}.roll-digit{display:inline-block;height:1em;overflow:hidden;line-height:1}.roll-col{display:flex;flex-direction:column;transition:transform .4s cubic-bezier(.22,1,.36,1)}.roll-col>span{height:1em;line-height:1;text-align:center;font-variant-numeric:tabular-nums}@media (prefers-reduced-motion: reduce){.roll-col{transition:none}}.toc{position:fixed;top:108px;left:24px;width:210px;max-height:calc(100vh - 132px);display:flex;flex-direction:column;gap:24px;padding:8px;z-index:5}.toc-back{display:inline-flex;align-items:center;gap:8px;height:28px;font-family:var(--font-ui);font-size:14px;font-weight:500;color:var(--color-muted);text-decoration:none;transition:color var(--dur) var(--ease)}.toc-back:hover{color:var(--color-ink)}.toc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;position:relative;min-height:0;flex:1;overflow-y:auto;scroll-padding-block:36px;scrollbar-width:none}.toc-ruler{position:absolute;left:0;top:0;width:16px;pointer-events:none}.toc-tick-line{position:absolute;left:0;height:1px;background:var(--color-border-strong);transition:width .22s var(--ease),background-color .22s var(--ease)}.toc-tick-line.active{background:var(--color-primary)}.toc-list::-webkit-scrollbar{width:0;height:0;display:none}.toc-list.fade-top.fade-bottom{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 28px,#000 calc(100% - 28px),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 28px,#000 calc(100% - 28px),transparent 100%)}.toc-list.fade-top:not(.fade-bottom){-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 28px);mask-image:linear-gradient(to bottom,transparent 0,#000 28px)}.toc-list.fade-bottom:not(.fade-top){-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 28px),transparent 100%);mask-image:linear-gradient(to bottom,#000 calc(100% - 28px),transparent 100%)}.toc-item{display:flex;align-items:center;gap:8px;width:100%;min-height:28px;padding:0;background:none;border:none;text-align:left;font-family:var(--font-ui);font-size:14px;font-weight:500;line-height:1.2;color:var(--color-faint);cursor:pointer;transition:color var(--dur) var(--ease)}.toc-tick{flex:0 0 16px;height:16px}.toc-list>li{position:relative;z-index:1}.toc-item:hover,.toc-item.active{color:var(--color-ink)}@media (max-width: 1180px){.toc{display:none}}.reader{max-width:680px;margin:0 auto}.cta-card{display:flex;align-items:center;gap:48px;margin-top:56px;padding:24px;background:var(--color-surface);border-radius:20px;box-shadow:var(--elev-2);text-decoration:none;color:inherit;cursor:pointer;transform:perspective(1000px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) scale(var(--s, 1));transform-style:preserve-3d;transition:transform .35s cubic-bezier(.22,1,.36,1),box-shadow .35s var(--ease);will-change:transform}.cta-card:hover{--s: 1.015;box-shadow:var(--elev-8)}.cta-card:hover .book-cover3d .book-cover{transform:rotateY(-22deg);box-shadow:14px 18px 36px #00000080}.cta-book{flex:0 0 200px;width:200px}.cta-body{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:24px}.cta-text{display:flex;flex-direction:column;gap:12px}.cta-title{margin:0;font-family:var(--font-display);font-weight:700;font-size:25px;letter-spacing:-.02em;color:var(--color-ink)}.cta-author{margin:0;font-family:var(--font-read);font-size:16px;color:var(--color-muted)}.cta-buy{display:inline-flex;align-items:center;justify-content:center;height:36px;padding:4px 16px;border:none;border-radius:999px;background:linear-gradient(180deg,#ff683f,#f65b31);color:#fff;font-family:var(--font-ui);font-size:16px;font-weight:500;text-decoration:none;cursor:pointer;box-shadow:0 2px 4px #0000001f,inset 0 1px #ffffff52;transition:filter var(--dur) var(--ease),transform var(--dur) var(--ease)}.cta-buy:hover{filter:brightness(1.04)}.cta-buy:active{transform:translateY(1px)}@media (max-width: 599px){.cta-card{flex-direction:column;align-items:flex-start;gap:20px}}.reader-nav{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:48px;padding:32px 0;border-top:1px solid var(--color-border)}.reader-nav-link{display:inline-flex;align-items:center;gap:8px;min-width:0;font-family:var(--font-ui);font-size:16px;font-weight:500;line-height:1.7;color:var(--color-muted);text-decoration:none;transition:color var(--dur) var(--ease)}.reader-nav-link:hover{color:var(--color-ink)}.reader-nav-arrow{flex:0 0 auto}.reader-nav-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:38vw}.reader-header{display:flex;flex-direction:column;align-items:flex-start;gap:24px;margin-bottom:40px}.reader-header h1{width:100%}.reader-header .reader-meta{width:100%;font-family:var(--font-read);font-size:16px;line-height:1;letter-spacing:-.01em;text-transform:none;color:var(--color-faint)}.reader-author{width:100%;padding:20px 0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);font-family:var(--font-read);font-size:21px;line-height:1.7;color:var(--color-muted)}.reader-content{font-family:var(--font-read);font-size:21px;line-height:1.7;letter-spacing:-.02em;color:var(--color-muted)}.reader-content h1,.reader-content h2,.reader-content h3{font-family:var(--font-display);margin:1.6em 0 .6em}.reader-content h1{font-size:50px}.reader-content h2{font-size:35px}.reader-content h3{font-size:25px;font-weight:700;margin-top:1.7em;margin-bottom:.5em;padding-bottom:.5em;border-bottom:1px solid var(--color-border);line-height:1.3}.reader-content p{margin:0 0 1.1em}.reader-content a{color:var(--color-primary)}.reader-content blockquote{margin:1.2em 0;padding:4px 0 4px 20px;border-left:5px solid var(--color-primary);color:var(--color-faint);font-style:italic}.reader-content img{max-width:100%;border-radius:var(--radius-sm)}.reader-content code{font-family:var(--font-mono);background:var(--color-subtle);box-shadow:0 0 0 1px var(--color-border) inset;padding:2px 6px;border-radius:var(--radius-sm);font-size:.85em}.reader-content pre{background:#1c1917;color:#f5f5f4;font-family:var(--font-mono);padding:16px;border-radius:var(--radius-md);overflow-x:auto}.reader-content pre code{background:none;padding:0;color:inherit}.reader-content ul,.reader-content ol{padding-left:1.4em;margin:0 0 1.1em}.reader-content li{margin-bottom:.4em}.reader-content ul{list-style:none;padding-left:1.2em}.reader-content ul li{position:relative}.reader-content ul li:before{content:"";position:absolute;left:-1em;top:.65em;width:7px;height:7px;border-radius:50%;background:var(--color-accent)}.reader-content hr{border:none;border-top:1px solid var(--color-border);margin:2em 0}@media (max-width: 599px){.main{padding:20px 16px 64px}h1{font-size:30px;line-height:1.15}h2{font-size:26px}h3{font-size:20px}.reader-header h1{font-size:36px}.reader-content{font-size:18.5px}.reader-content h1{font-size:36px}.reader-content h2{font-size:28px}.reader-content h3{font-size:23px}.reader-author{font-size:18.5px}.reader-header{gap:16px;margin-bottom:32px}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:24px;background:#00000080;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fadeIn .15s var(--ease) both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.upload-modal{width:100%;max-width:940px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:30px;box-shadow:var(--elev-8);overflow:hidden}.upload-modal-body{display:flex}.upload-left{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:40px 40px 56px;border-right:1px solid var(--color-border)}.upload-title{margin:0;font-family:var(--font-display);font-weight:700;font-size:25px;letter-spacing:-.02em;color:var(--color-ink)}.upload-drop{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:80px;padding:12px 16px;border:1.5px dashed var(--color-border-strong);border-radius:16px;background:var(--color-subtle);color:var(--color-faint);font-family:var(--font-ui);font-size:14px;cursor:pointer;transition:border-color var(--dur) var(--ease),color var(--dur) var(--ease)}.upload-drop:hover{border-color:var(--color-primary);color:var(--color-ink)}.upload-drop.drag{border-color:var(--color-primary);background:#ee5a3214;color:var(--color-ink)}.upload-drop svg{flex:0 0 auto}.upload-right{display:flex;align-items:center;justify-content:center;padding:40px}.upload-book{position:relative;width:300px;max-width:100%;border-radius:8px;transition:box-shadow var(--dur) var(--ease)}.upload-book.drag{box-shadow:0 0 0 2px var(--color-primary),0 0 0 6px #ee5a3226}.upload-cover-btn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:3;display:inline-flex;align-items:center;gap:6px;height:28px;padding:4px 12px;border:none;border-radius:999px;background:var(--color-subtle);color:var(--color-ink);font-family:var(--font-ui);font-size:14px;font-weight:500;cursor:pointer;box-shadow:0 2px 4px #00000040,inset 0 1px #ffffff1f}.upload-cover-btn:hover{filter:brightness(1.08)}.upload-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;height:64px;padding:14px 16px;border-top:1px solid var(--color-border)}.modal-btn-text{height:28px;padding:4px 12px;border:none;border-radius:999px;background:none;color:var(--color-muted);font-family:var(--font-ui);font-size:14px;font-weight:500;cursor:pointer;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}.modal-btn-text:hover{background:var(--color-subtle);color:var(--color-ink)}.modal-btn-primary{height:28px;padding:4px 12px;border:none;border-radius:999px;background:linear-gradient(180deg,#ff683f,#f65b31);color:#fff;font-family:var(--font-ui);font-size:14px;font-weight:500;cursor:pointer;box-shadow:0 2px 4px #0000001f,inset 0 1px #ffffff52;transition:filter var(--dur) var(--ease)}.modal-btn-primary:hover{filter:brightness(1.04)}.modal-btn-primary:disabled{opacity:.45;cursor:not-allowed;filter:none}.modal-btn-text:disabled{opacity:.45;cursor:not-allowed}.modal-error{margin-right:auto;align-self:center;font-family:var(--font-ui);font-size:13px;color:#e5484d}.modal-btn-danger{height:28px;padding:4px 12px;border:none;border-radius:999px;background:#e5484d;color:#fff;font-family:var(--font-ui);font-size:14px;font-weight:500;cursor:pointer;box-shadow:0 2px 4px #00000040,inset 0 1px #ffffff40;transition:filter var(--dur) var(--ease)}.modal-btn-danger:hover{filter:brightness(1.06)}.confirm-modal{width:100%;max-width:420px;padding:24px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:20px;box-shadow:var(--elev-8)}.confirm-title{margin:0 0 8px;font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:-.02em;color:var(--color-ink)}.confirm-text{margin:0;font-family:var(--font-read);font-size:15px;line-height:1.5;color:var(--color-muted)}.confirm-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}@media (max-width: 720px){.upload-modal-body{flex-direction:column}.upload-left{border-right:none;border-bottom:1px solid var(--color-border)}}.toast-host{position:fixed;right:24px;bottom:24px;z-index:200;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;max-width:360px;padding:10px 14px;border-radius:var(--radius-md);background:var(--color-surface);box-shadow:0 0 0 1px var(--color-border),var(--elev-4);font-family:var(--font-ui);font-size:14px;color:var(--color-ink);cursor:pointer;pointer-events:auto}.toast-icon{flex:0 0 auto}.toast-success .toast-icon{color:#2e9e5b}.toast-error .toast-icon{color:#e5484d}.toast-msg{line-height:1.3}@font-face{font-family:Exposure;src:url(/assets/Exposure-300-h7-rF9YG.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Exposure;src:url(/assets/Exposure-400-Ost3FkNC.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Exposure;src:url(/assets/Exposure-400-Ost3FkNC.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Exposure;src:url(/assets/Exposure-700-I6Ei6kch.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Exposure;src:url(/assets/Exposure-Italic-DlBy5aB4.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Exposure Read;src:url(/assets/Exposure-Read-VahKb2AG.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--color-bg: #ffffff;--color-surface: #ffffff;--color-subtle: #fafaf9;--color-primary: #ee5a32;--color-primary-alt: #e40014;--color-accent: #fe6e00;--color-ink: #1c1917;--color-muted: #3a3630;--color-faint: #88827e;--color-border: #e7e5e4;--color-border-strong: #d6d3d1;--color-link: #1447e6;--ring: 0 0 0 1px rgba(0, 0, 0, .18) inset;--elev-1: 0 1px 2px rgba(0, 0, 0, .04), 0 0 0 1px rgba(0, 0, 0, .06);--elev-2: 0 1px 3px rgba(0, 0, 0, .06), 0 0 0 1px rgba(0, 0, 0, .06);--elev-4: 0 4px 12px rgba(0, 0, 0, .08), 0 0 0 1px rgba(0, 0, 0, .06);--elev-8: 0 12px 32px rgba(0, 0, 0, .12), 0 0 0 1px rgba(0, 0, 0, .06);--font-display: "Exposure", "Geist", system-ui, sans-serif;--font-ui: "Geist", system-ui, sans-serif;--font-read: "Inter", system-ui, sans-serif;--font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--ease: cubic-bezier(.4, 0, .2, 1);--dur: .15s}@media (prefers-color-scheme: dark){:root{--color-bg: #0c0a09;--color-surface: #1c1917;--color-subtle: #292524;--color-primary: #ee5a32;--color-primary-alt: #ff6568;--color-accent: #ff8b1a;--color-ink: #fafaf9;--color-muted: #b5afaa;--color-faint: #79716b;--color-border: #292524;--color-border-strong: #44403b;--color-link: #54a2ff;--ring: 0 0 0 1px rgba(255, 255, 255, .12) inset;--elev-1: 0 1px 2px rgba(0, 0, 0, .4), 0 0 0 1px rgba(255, 255, 255, .06);--elev-2: 0 1px 3px rgba(0, 0, 0, .5), 0 0 0 1px rgba(255, 255, 255, .06);--elev-4: 0 4px 12px rgba(0, 0, 0, .55), 0 0 0 1px rgba(255, 255, 255, .07);--elev-8: 0 12px 32px rgba(0, 0, 0, .6), 0 0 0 1px rgba(255, 255, 255, .08);color-scheme:dark}}@keyframes fadeInBlur{0%{opacity:0;transform:translateY(8px);filter:blur(8px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-ui);font-size:16px;line-height:24px;letter-spacing:-.01em;color:var(--color-ink);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{font-family:var(--font-display);color:var(--color-ink);font-weight:700;letter-spacing:-.02em;margin:0}h1{font-size:50px;line-height:1.1}h2{font-size:45px;line-height:1.15}h3{font-size:25px;line-height:1.2}a{color:var(--color-link);text-decoration-color:#1447e64d;text-underline-offset:2px}button{font-family:var(--font-ui);cursor:pointer}.btn{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 16px;font-family:var(--font-ui);font-size:14px;font-weight:500;letter-spacing:-.01em;border-radius:var(--radius-sm);border:none;transition:background-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),color var(--dur) var(--ease),transform var(--dur) var(--ease)}.btn:active{transform:translateY(.5px) scale(.99)}.btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn-filled{background-color:var(--color-ink);color:var(--color-bg);box-shadow:var(--elev-2)}.btn-filled:hover{background-color:var(--color-ink);filter:brightness(1.15);box-shadow:var(--elev-4)}@media (prefers-color-scheme: dark){.btn-filled:hover{filter:brightness(.92)}}.btn-outlined{background-color:var(--color-surface);color:var(--color-ink);box-shadow:var(--ring)}.btn-outlined:hover{background-color:var(--color-subtle);box-shadow:0 0 0 1px #00000047 inset}.btn-text{background:transparent;color:var(--color-muted);box-shadow:none;padding:0 10px}.btn-text:hover{background-color:var(--color-subtle);color:var(--color-ink)}
