@property --book-h{syntax: "<number>"; inherits: true; initial-value: 36;}@property --book-s{syntax: "<percentage>"; inherits: true; initial-value: 86%;}@property --book-l{syntax: "<percentage>"; inherits: true; initial-value: 66%;}:root{color-scheme:dark light;--book-h: 36;--book-s: 86%;--book-l: 66%;--book-accent: var(--book-h) var(--book-s) var(--book-l);transition:--book-h 1.6s var(--ease),--book-s 1.6s var(--ease),--book-l 1.6s var(--ease);--r-xs: 8px;--r-sm: 12px;--r: 16px;--r-lg: 22px;--r-xl: 30px;--r-pill: 999px;--blur: 28px;--ease: cubic-bezier(.22, .61, .36, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--spring: linear( 0, .061 2.4%, .233 5.3%, .52 9.9%, .817 15.4%, .976 20.3%, 1.055 25.4%, 1.08 29.9%, 1.064 35.7%, 1.024 44.5%, .998 55%, .994 66%, 1 );--dur-fast: .14s;--dur: .26s;--dur-slow: .52s;--font: -apple-system, BlinkMacSystemFont, "Segoe UI Variable Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, system-ui, sans-serif;--font-book: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", "URW Palladio L", P052, "Noto Serif", Georgia, serif;--shell-max: 1180px;--miniplayer-h: 76px}@supports not (transition-timing-function: linear(0,1)){:root{--spring: var(--ease-out)}}:root,[data-theme=dark]{--field: #0b1124;--field-a: #101a3a;--field-b: #1b1240;--orb-s: 82%;--orb-l: 56%;--orb-alpha: .62;--glass-fill: linear-gradient(135deg, rgba(255, 255, 255, .17), rgba(255, 255, 255, .05) 60%), linear-gradient(rgba(11, 17, 36, .28), rgba(11, 17, 36, .28));--glass-solid: rgba(24, 32, 64, .95);--glass-ring: linear-gradient( 135deg, rgba(255, 255, 255, .62), rgba(255, 255, 255, .14) 28%, rgba(255, 255, 255, .03) 52%, rgba(255, 255, 255, .12) 78%, rgba(255, 255, 255, .34) );--glass-shadow: 0 18px 50px -18px rgba(0, 0, 0, .6), 0 2px 10px -4px rgba(0, 0, 0, .3);--glass-lift: 0 30px 60px -22px rgba(0, 0, 0, .7), 0 4px 14px -6px rgba(0, 0, 0, .35);--glass-hover: rgba(255, 255, 255, .1);--sheen: rgba(255, 255, 255, .16);--scrolled-tint: rgba(11, 17, 36, .45);--well: rgba(3, 7, 22, .32);--well-edge: rgba(255, 255, 255, .08);--track: rgba(255, 255, 255, .17);--skeleton-lo: rgba(255, 255, 255, .07);--skeleton-hi: rgba(255, 255, 255, .15);--cover-shadow: 0 16px 30px -16px rgba(0, 0, 0, .85), 0 2px 6px rgba(0, 0, 0, .3);--text: #f1f3fa;--text-dim: #bcc5d9;--text-faint: #8590a8;--accent: hsl(var(--book-h) max(var(--book-s), 60%) 64%);--accent-text: hsl(var(--book-h) 95% 80%);--on-accent: #0b1124;--good: #5ee09a;--warn: #ffb27a;--scrim: rgba(5, 8, 20, .5)}[data-theme=light]{--field: #eef1f9;--field-a: #f6f7fc;--field-b: #f3ecf7;--orb-s: 88%;--orb-l: 74%;--orb-alpha: .6;--glass-fill: linear-gradient(135deg, rgba(255, 255, 255, .8), rgba(255, 255, 255, .42) 60%), linear-gradient(rgba(255, 255, 255, .1), rgba(255, 255, 255, .1));--glass-solid: rgba(250, 251, 254, .96);--glass-ring: linear-gradient( 135deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, .7) 30%, rgba(255, 255, 255, .25) 55%, rgba(40, 52, 110, .08) 80%, rgba(255, 255, 255, .7) );--glass-shadow: 0 16px 44px -18px rgba(40, 52, 110, .32), 0 2px 8px -4px rgba(40, 52, 110, .14);--glass-lift: 0 28px 56px -22px rgba(40, 52, 110, .42), 0 4px 12px -6px rgba(40, 52, 110, .18);--glass-hover: rgba(255, 255, 255, .55);--sheen: rgba(255, 255, 255, .7);--scrolled-tint: rgba(246, 247, 252, .55);--well: rgba(40, 52, 110, .06);--well-edge: rgba(255, 255, 255, .8);--track: rgba(20, 28, 51, .13);--skeleton-lo: rgba(20, 28, 51, .06);--skeleton-hi: rgba(20, 28, 51, .13);--cover-shadow: 0 14px 26px -14px rgba(40, 52, 110, .55), 0 2px 6px rgba(40, 52, 110, .14);--text: #141c33;--text-dim: #444f6b;--text-faint: #7a849c;--accent: hsl(var(--book-h) max(var(--book-s), 60%) 60%);--accent-text: hsl(var(--book-h) 80% 30%);--on-accent: #0b1124;--good: #12784b;--warn: #a2400f;--scrim: rgba(20, 28, 51, .28)}.glass,.tile{position:relative;background:var(--glass-fill);border:0;box-shadow:inset 0 1px #ffffff1f,var(--glass-shadow)}.glass{-webkit-backdrop-filter:blur(var(--blur)) saturate(180%);backdrop-filter:blur(var(--blur)) saturate(180%)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.glass{background:var(--glass-solid)}}.glass:before,.tile:before{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;padding:1px;background:var(--glass-ring);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;pointer-events:none}.glass:after,.tile:after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;background:radial-gradient(280px circle at var(--mx, 50%) var(--my, -40%),var(--sheen),transparent 62%);opacity:0;transition:opacity .45s var(--ease);pointer-events:none}@media(hover:hover){.glass:hover:after,.tile:hover:after{opacity:1}}.well{background:var(--well);border:1px solid var(--well-edge);box-shadow:inset 0 1px 3px #0000002e}.press{cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;transition:background-color var(--dur) var(--ease-out),box-shadow var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--spring),color var(--dur-fast) linear,filter var(--dur) var(--ease-out)}.press:active:not(:disabled){transform:scale(.95);transition-duration:var(--dur-fast);transition-timing-function:var(--ease-out)}.press[data-active=true]{color:var(--accent-text);background:hsl(var(--book-h) 85% 62% / .2);box-shadow:inset 0 0 0 1px hsl(var(--book-h) 90% 72% / .55),0 6px 18px -8px hsl(var(--book-h) 85% 55% / .6)}.press:disabled,.press[aria-disabled=true]{cursor:not-allowed;opacity:.38;transform:none}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--accent-text);outline-offset:3px}@keyframes rise-in{0%{opacity:0;transform:translateY(16px) scale(.98)}}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:scale(.9)}}@media(prefers-reduced-motion:reduce){:root{transition:none}*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}.press:active{transform:none}}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}html{background-color:var(--field);-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;font-family:var(--font);font-style:normal;color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior-y:none}button{font:inherit;color:inherit;border:0;background:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.cover{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}h1,h2,h3,p{margin:0}ul{margin:0;padding:0;list-style:none}img{display:block;max-width:100%}.tnum{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.ambient{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:linear-gradient(165deg,var(--field-a),var(--field) 50%,var(--field-b))}.orb{position:absolute;width:70vmax;height:70vmax;border-radius:50%;opacity:var(--orb-alpha);animation:drift 38s ease-in-out infinite alternate}@media(max-width:520px){.orb--d{display:none}}.orb--a{top:-32vmax;right:-18vmax;background:radial-gradient(closest-side,hsl(var(--book-h) var(--orb-s) var(--orb-l)),hsl(var(--book-h) var(--orb-s) var(--orb-l) / 0))}.orb--b{top:18vh;left:-34vmax;width:60vmax;height:60vmax;background:radial-gradient(closest-side,hsl(calc(var(--book-h) + 50) var(--orb-s) var(--orb-l)),hsl(calc(var(--book-h) + 50) var(--orb-s) var(--orb-l) / 0));animation-duration:46s;animation-delay:-12s}.orb--c{bottom:-38vmax;left:10vw;width:80vmax;height:80vmax;background:radial-gradient(closest-side,hsl(calc(var(--book-h) - 48) var(--orb-s) calc(var(--orb-l) - 6%)),hsl(calc(var(--book-h) - 48) var(--orb-s) calc(var(--orb-l) - 6%) / 0));animation-duration:52s;animation-delay:-26s}.orb--d{top:38vh;right:-24vmax;width:46vmax;height:46vmax;opacity:calc(var(--orb-alpha) * .75);background:radial-gradient(closest-side,hsl(calc(var(--book-h) + 170) calc(var(--orb-s) - 20%) var(--orb-l)),hsl(calc(var(--book-h) + 170) calc(var(--orb-s) - 20%) var(--orb-l) / 0));animation-duration:42s;animation-delay:-6s}@keyframes drift{0%{transform:translateZ(0) scale(1)}50%{transform:translate3d(-6vmax,5vmax,0) scale(1.08)}to{transform:translate3d(5vmax,-4vmax,0) scale(.95)}}.ambient:after{content:"";position:absolute;inset:0;opacity:.06;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.ambient__art{position:absolute;inset:-15%;background-size:cover;background-position:center;filter:blur(90px) saturate(1.6);opacity:.5;animation:fade-in 1.4s var(--ease-out) both}[data-theme=light] .ambient__art{opacity:.38}.shell{min-height:100vh;display:flex;flex-direction:column;padding:0 max(clamp(14px,4vw,40px),env(safe-area-inset-right)) 0 max(clamp(14px,4vw,40px),env(safe-area-inset-left));padding-bottom:calc(var(--miniplayer-h) + 40px + env(safe-area-inset-bottom))}.shell__inner{width:100%;max-width:var(--shell-max);margin:0 auto;flex:1}@supports not (view-transition-name: none){.route{animation:rise-in var(--dur-slow) var(--ease-out) both}}.topbar{position:sticky;top:max(10px,env(safe-area-inset-top));z-index:30;display:flex;align-items:center;gap:14px;margin:max(12px,env(safe-area-inset-top)) 0 clamp(18px,3vw,28px);padding:9px 9px 9px 12px;border-radius:var(--r-xl);background-color:transparent;transition:background-color var(--dur-slow) var(--ease),box-shadow var(--dur-slow) var(--ease);animation:drop-in .7s var(--spring) both}.topbar[data-scrolled]{background-color:var(--scrolled-tint);box-shadow:inset 0 1px #ffffff1f,var(--glass-lift)}@keyframes drop-in{0%{opacity:0;transform:translateY(-14px) scale(.98)}}.topbar__brand{display:flex;align-items:center;gap:12px;min-width:0;margin-right:auto}.topbar__mark{flex:none;width:42px;height:42px;border-radius:12px;box-shadow:0 8px 18px -8px #0000008c,0 0 0 1px #ffffff1f}.topbar__names{display:flex;flex-direction:column;min-width:0}.topbar__title{font-family:var(--font-book);font-size:25px;font-weight:600;line-height:1.02;letter-spacing:-.005em}.topbar__sub{margin-top:2px;font-size:12.5px;font-weight:550;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar__actions{display:flex;align-items:center;gap:2px;padding:3px;border-radius:var(--r-pill);flex:none;background:var(--well);border:1px solid var(--well-edge)}::view-transition-old(root){animation:vt-out .28s var(--ease) both}::view-transition-new(root){animation:vt-in .42s var(--ease-out) both}@keyframes vt-out{to{opacity:0;transform:scale(.985)}}@keyframes vt-in{0%{opacity:0;transform:translateY(10px) scale(1.01)}}::view-transition-group(book-art){animation-duration:.62s;animation-timing-function:var(--spring);z-index:10}::view-transition-old(book-art),::view-transition-new(book-art){height:100%;object-fit:cover;animation-duration:.3s}html.theme-switching::view-transition-old(root),html.theme-switching::view-transition-new(root){animation:none;mix-blend-mode:normal}*{scrollbar-width:thin;scrollbar-color:var(--track) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--track);border-radius:var(--r-pill);border:3px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-track{background:transparent}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;border-radius:var(--r-pill);font-size:14.5px;font-weight:620;color:var(--text)}@media(hover:hover){.btn:hover:not(:disabled){background-color:var(--glass-hover)}}.btn--sm{padding:8px 15px;font-size:13.5px}.btn--lg{padding:14px 26px;font-size:16px}.btn--primary,.btn--primary:hover:not(:disabled){color:var(--on-accent);background:var(--accent);border-color:hsl(var(--book-h) 90% 82% / .6);box-shadow:inset 0 1px #fff6,0 10px 24px -12px hsl(var(--book-h) 80% 50% / .7)}@media(hover:hover){.btn--primary:hover:not(:disabled){filter:brightness(1.06)}}.iconbtn{display:grid;place-items:center;border-radius:50%;color:var(--text);flex:none}@media(hover:hover){.iconbtn:hover:not(:disabled){background-color:var(--glass-hover)}}.iconbtn--bare{background:transparent;border:1px solid transparent}.chip{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:var(--r-pill);font-size:13.5px;font-weight:600;color:var(--text-dim);white-space:nowrap;background:var(--well);border:1px solid var(--well-edge)}@media(hover:hover){.chip:hover:not(:disabled):not([data-active=true]){color:var(--text);background-color:var(--glass-hover)}}.linkbtn{padding:0;font-size:14px;font-weight:600;color:var(--accent-text);cursor:pointer;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.sheet{border-radius:var(--r-lg);padding:22px 24px}.cover{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r-xs);display:block}.cover--generated{position:relative;display:grid;align-content:end;gap:9px;padding:13% 11%;overflow:hidden;text-align:left}.cover--generated:after{content:"";position:absolute;inset:0;background:radial-gradient(80% 60% at 18% 8%,rgba(255,255,255,.28),transparent 70%),linear-gradient(90deg,rgba(0,0,0,.16),transparent 9%);pointer-events:none}.cover__rule{width:24px;height:2px;border-radius:1px;background:#fffc}.cover__title{font-family:var(--font-book);font-size:clamp(14px,1.6vw,19px);font-weight:600;line-height:1.18;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.3);display:-webkit-box;-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.resume{display:grid;grid-template-columns:1fr auto;align-items:center;gap:clamp(16px,2.6vw,28px);padding:clamp(14px,2vw,20px);margin-bottom:clamp(18px,3vw,28px);border-radius:var(--r-xl);background:radial-gradient(55% 140% at 0% 50%,hsl(var(--book-h) var(--book-s) 60% / .34),transparent 72%),var(--glass-fill);animation:rise-in .8s var(--spring) .08s both}.resume__open{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:clamp(16px,2.6vw,28px);min-width:0;padding:0;text-align:left;cursor:pointer;border-radius:var(--r-lg)}.resume__cover{display:block;width:clamp(88px,14vw,128px);box-shadow:var(--cover-shadow),0 18px 40px -18px hsl(var(--book-h) 80% 50% / .6);border-radius:var(--r-xs);transition:transform var(--dur-slow) var(--spring)}@media(hover:hover){.resume__open:hover .resume__cover{transform:translateY(-3px) rotate(-1.5deg)}}.resume__cover .cover{border-radius:var(--r-xs)}.resume__text{min-width:0;display:flex;flex-direction:column;gap:5px}.resume__title{font-family:var(--font-book);font-size:clamp(20px,2.8vw,30px);font-weight:600;line-height:1.12;overflow-wrap:anywhere}.resume__author{font-size:14px;color:var(--text-dim)}.resume__progress{display:flex;align-items:center;gap:12px;margin-top:8px;font-size:13px;font-weight:600;color:var(--text-dim)}.resume__progress .progline{flex:1;max-width:320px}.resume__device{font-size:12.5px;color:var(--text-dim)}.resume__play{width:60px;height:60px;border-radius:50%;display:grid;place-items:center;color:var(--on-accent);background:var(--accent);border:1px solid hsl(var(--book-h) 90% 82% / .6);box-shadow:inset 0 1px #ffffff73,0 12px 28px -12px hsl(var(--book-h) 80% 50% / .8)}@media(hover:hover){.resume__play:hover:not(:disabled){filter:brightness(1.06)}}.resume__play-label{display:none}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:clamp(16px,2.4vw,26px);padding-bottom:8px}.grid>li{animation:tile-in .75s var(--spring) both;animation-delay:calc(var(--i, 0) * 38ms)}@keyframes tile-in{0%{opacity:0;transform:translateY(22px) scale(.94)}}.bookcard{width:100%;height:100%;display:flex;flex-direction:column;gap:5px;padding:10px 10px 13px;text-align:left;color:var(--text);border-radius:var(--r-lg)}@media(hover:hover){.bookcard:hover:not(:active){transform:translateY(-5px);box-shadow:inset 0 1px #ffffff24,var(--glass-lift)}}.bookcard__frame{display:block;position:relative;isolation:isolate;margin-bottom:7px;border-radius:var(--r-sm);box-shadow:var(--cover-shadow)}.bookcard__frame>.cover,.bookcard__frame>.mosaic{border-radius:var(--r-sm)}.bookcard__title,.bookcard__author,.bookcard__where,.bookcard__foot{padding:0 3px}.bookcard--pile .bookcard__frame:before,.bookcard--pile .bookcard__frame:after{content:"";position:absolute;inset:0;z-index:-1;border-radius:var(--r-sm);background:var(--glass-fill);box-shadow:inset 0 0 0 1px #ffffff38,0 8px 18px -10px #00000080;transition:transform var(--dur-slow) var(--spring)}.bookcard--pile .bookcard__frame:before{transform:translate(5px,-5px) rotate(2.5deg)}.bookcard--pile .bookcard__frame:after{transform:translate(9px,-9px) rotate(5deg);opacity:.55}@media(hover:hover){.bookcard--pile:hover .bookcard__frame:before{transform:translate(8px,-7px) rotate(4deg)}}@media(hover:hover){.bookcard--pile:hover .bookcard__frame:after{transform:translate(15px,-12px) rotate(8deg)}}.bookcard__done{position:absolute;right:8px;bottom:8px;width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:var(--good);color:#08281a;box-shadow:0 4px 12px #00000059;animation:pop-in var(--dur) var(--spring) both}.bookcard__count,.eq{position:absolute;display:inline-flex;align-items:center;border-radius:var(--r-pill);color:#fff;background:#0a10226b;border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(10px) saturate(160%);backdrop-filter:blur(10px) saturate(160%)}.bookcard__count{top:8px;right:8px;gap:5px;padding:3px 9px;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}.eq{left:8px;bottom:8px;align-items:flex-end;gap:3px;height:26px;padding:6px 8px;animation:pop-in var(--dur) var(--spring) both}.eq__bar{width:3px;border-radius:2px;background:#fff;transform-origin:bottom;animation:eq-bounce .9s var(--ease) infinite alternate}.eq__bar:nth-child(1){height:60%}.eq__bar:nth-child(2){height:100%;animation-delay:.16s}.eq__bar:nth-child(3){height:45%;animation-delay:.32s}.eq__bar:nth-child(4){height:80%;animation-delay:90ms}@keyframes eq-bounce{0%{transform:scaleY(.34)}to{transform:scaleY(1)}}.eq[data-paused=true] .eq__bar{animation-play-state:paused;opacity:.65}.bookcard__title{font-family:var(--font-book);font-size:16.5px;font-weight:600;line-height:1.22;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.bookcard[data-current] .bookcard__title{color:var(--accent-text)}.bookcard__author,.bookcard__where{font-size:13px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bookcard__where{display:flex;align-items:center;gap:5px}.bookcard__where svg{flex:none}.bookcard__foot{margin-top:auto;padding-top:6px;display:flex;flex-direction:column;gap:7px}.bookcard__status{font-size:12px;font-weight:600;color:var(--text-dim)}.bookcard--skeleton{pointer-events:none}.bookcard--skeleton .bookcard__frame,.skeleton-line{background:linear-gradient(100deg,transparent 30%,var(--skeleton-hi) 50%,transparent 70%),var(--skeleton-lo);background-size:220% 100%;animation:shimmer 1.6s linear infinite}.bookcard--skeleton .bookcard__frame{aspect-ratio:1;box-shadow:none}.skeleton-line{height:11px;margin:3px 3px 0;border-radius:var(--r-pill)}@keyframes shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}.mosaic{display:grid;grid-template-columns:1fr 1fr;gap:2px;aspect-ratio:1;border-radius:var(--r-xs);overflow:hidden}.mosaic .cover{border-radius:0}.search{margin-bottom:clamp(18px,3vw,28px);border-radius:var(--r-pill);animation:rise-in .8s var(--spring) .14s both;transition:box-shadow var(--dur-slow) var(--ease-out)}.search:focus-within{box-shadow:inset 0 1px #ffffff1f,0 0 0 2px hsl(var(--book-h) 90% 70% / .7),0 0 30px -6px hsl(var(--book-h) 90% 60% / .55),var(--glass-shadow)}.search__icon{position:absolute;z-index:2;left:18px;top:50%;transform:translateY(-50%);color:var(--text-dim);pointer-events:none}.search__input{position:relative;z-index:2;width:100%;padding:15px 50px;border:0;border-radius:var(--r-pill);background:transparent;font:inherit;font-size:16px;color:var(--text);-webkit-appearance:none;appearance:none}.search__input:focus-visible{outline:none}.search__input::placeholder{color:var(--text-dim)}.search__input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.search__clear{position:absolute;z-index:2;right:8px;top:50%;transform:translateY(-50%);width:36px;height:36px;display:grid;place-items:center;border-radius:50%;color:var(--text-dim);cursor:pointer}@media(hover:hover){.search__clear:hover{color:var(--text);background:var(--glass-hover)}}.search__count{margin:-12px 0 18px 8px;font-size:13px;font-weight:600;color:var(--text-dim)}.shelfhead{display:flex;align-items:center;gap:14px;margin-bottom:clamp(16px,2.6vw,24px)}.shelfhead__text{display:flex;flex-direction:column;gap:3px;min-width:0}.shelfhead__crumbs{font-size:12.5px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shelfhead__crumbs .linkbtn{font-size:12.5px}.shelfhead__title{font-family:var(--font-book);font-size:clamp(24px,3vw,32px);font-weight:600;line-height:1.1;overflow-wrap:anywhere}.shelfhead__sub{font-size:13px;font-weight:550;color:var(--text-dim)}.progline{position:relative;height:4px;border-radius:var(--r-pill);overflow:hidden;background:var(--track)}.progline__fill{height:100%;border-radius:var(--r-pill);background:var(--accent);transition:width var(--dur-slow) var(--ease-out)}.seekbar{position:relative;height:32px;display:flex;align-items:center;cursor:pointer;touch-action:none;padding:0 9px}.seekbar[aria-disabled=true]{cursor:default;opacity:.5}.seekbar__track{position:relative;width:100%;height:6px;border-radius:var(--r-pill);background:var(--track);transition:height var(--dur) var(--ease-out)}.seekbar[data-dragging] .seekbar__track{height:9px}@media(hover:hover){.seekbar:hover .seekbar__track{height:9px}}.seekbar__fill{height:100%;border-radius:var(--r-pill);background:var(--accent);box-shadow:0 0 14px hsl(var(--book-h) 90% 60% / .45)}.seekbar__thumb{position:absolute;top:50%;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 0 0 4px hsl(var(--book-h) 90% 70% / .28),0 3px 10px #00000059;transform:translate(-50%,-50%);pointer-events:none;transition:transform var(--dur) var(--spring)}@media(hover:hover){.seekbar:hover .seekbar__thumb{transform:translate(-50%,-50%) scale(1.12)}}.seekbar[data-dragging] .seekbar__thumb{transform:translate(-50%,-50%) scale(1.25)}.player{position:relative;max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:clamp(16px,2.6vw,24px);padding:max(14px,env(safe-area-inset-top)) 0 12px}.player__head{display:flex;align-items:center;gap:14px}.player__art{width:clamp(150px,calc(100dvh - 390px),min(340px,74vw));margin:4px auto 0;border-radius:var(--r-lg);box-shadow:0 50px 80px -36px hsl(var(--book-h) 80% 40% / .75),0 30px 60px -30px #000000b3,0 0 0 1px #ffffff1a}.player__art[data-playing=true]{animation:art-breathe 7s ease-in-out .7s infinite}@keyframes art-breathe{50%{transform:scale(1.015)}}.player__cover{border-radius:var(--r-lg)}.player__titles,.player__deck,.player__book-progress{animation:rise-in .7s var(--spring) both}.player__deck{animation-delay:.06s}.player__book-progress{animation-delay:.12s}.player__titles{text-align:center;display:flex;flex-direction:column;gap:6px}.player__title{font-family:var(--font-book);font-size:clamp(25px,3.6vw,32px);font-weight:600;line-height:1.12;overflow-wrap:anywhere}.player__author{font-size:15px;color:var(--text-dim)}.player__chapter{font-size:14px;font-weight:620;color:var(--accent-text);margin-top:2px;animation:fade-in var(--dur) var(--ease) both}.player__error{align-items:center}.player__deck{display:flex;flex-direction:column;gap:14px;padding:14px clamp(12px,3vw,22px) 18px;border-radius:var(--r-xl)}.player__scrub{display:flex;flex-direction:column;gap:0}.player__times{display:flex;justify-content:space-between;padding:0 10px;font-size:12.5px;font-weight:600;color:var(--text-dim)}.player__times--dim{font-weight:500}.player__times-right{text-align:right}.player__transport{display:flex;align-items:center;justify-content:center;gap:clamp(4px,2.4vw,16px)}.player__tools{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.player__book-progress{display:flex;flex-direction:column;gap:9px;padding:0 4px}.playbtn{position:relative;width:96px;height:96px;flex:none}.playbtn__ring{position:absolute;inset:0;transform:rotate(-90deg);pointer-events:none}.playbtn__groove{fill:none;stroke:var(--track);stroke-width:3}.playbtn__arc{fill:none;stroke:var(--accent);stroke-width:3.5;stroke-linecap:round;transition:stroke-dashoffset var(--dur) linear}.playbtn__hit{position:absolute;inset:9px;border-radius:50%;display:grid;place-items:center;color:var(--on-accent);background:var(--accent);border:1px solid hsl(var(--book-h) 90% 82% / .6);box-shadow:inset 0 1px #ffffff73,0 14px 30px -12px hsl(var(--book-h) 80% 50% / .85);overflow:hidden}@media(hover:hover){.playbtn__hit:hover:not(:disabled){filter:brightness(1.06)}}.playbtn[data-playing=true] .playbtn__hit:not([data-busy]){animation:play-glow 2.8s ease-in-out infinite}@keyframes play-glow{50%{box-shadow:inset 0 1px #ffffff73,0 14px 44px -8px hsl(var(--book-h) 85% 55% / .95)}}.playbtn__hit[data-busy]{animation:breathe 1.4s var(--ease) infinite}@keyframes breathe{50%{opacity:.7}}.playglyph{grid-area:1 / 1;transition:opacity var(--dur) var(--ease),transform var(--dur) var(--spring)}.playglyph[data-hidden=true]{opacity:0;transform:scale(.6)}.panel{border-radius:var(--r-lg);padding:16px 18px;display:flex;flex-direction:column;gap:12px;animation:panel-in .5s var(--ease-out) both;transform-origin:top center}@keyframes panel-in{0%{opacity:0;transform:translateY(-10px) scale(.98);clip-path:inset(0 0 100% 0 round var(--r-lg))}to{clip-path:inset(0 0 0 0 round var(--r-lg))}}.panel__label{font-size:14px;font-weight:650;color:var(--text)}.panel__hint{font-weight:600;color:var(--accent-text)}.panel__row{display:flex;flex-wrap:wrap;gap:8px}.chapters{display:flex;flex-direction:column;gap:2px;max-height:336px;overflow-y:auto;overscroll-behavior:contain;margin:0 -6px;padding:0 6px}.chapters__item{position:relative;width:100%;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:11px 14px;border-radius:var(--r);text-align:left;color:var(--text);border:1px solid transparent}@media(hover:hover){.chapters__item:hover{background:var(--glass-hover)}}.chapters__item[data-active=true]{color:var(--accent-text)}.chapters__num{font-size:12px;font-weight:650;color:var(--text-faint)}.chapters__item[data-active=true] .chapters__num{color:var(--accent-text)}.chapters__title{font-size:14.5px;font-weight:560;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chapters__len{font-size:12.5px;font-weight:600;color:var(--text-dim)}.mini{position:fixed;left:50%;bottom:calc(14px + env(safe-area-inset-bottom));transform:translate(-50%);width:min(calc(100% - 28px - env(safe-area-inset-left) - env(safe-area-inset-right)),680px);height:var(--miniplayer-h);border-radius:var(--r-xl);display:flex;align-items:center;gap:12px;padding:0 12px 0 10px;overflow:hidden;z-index:40;animation:mini-in .8s var(--spring) both}@keyframes mini-in{0%{opacity:0;transform:translate(-50%,26px) scale(.96)}}.mini__progress{position:absolute;left:0;bottom:0;height:3px;width:100%;transform-origin:left center;background:var(--accent);transition:transform .35s linear}.mini__open{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:0;cursor:pointer;text-align:left;border-radius:var(--r-sm)}.mini__frame{display:block;flex:none;width:54px;height:54px;border-radius:var(--r-sm);box-shadow:0 8px 16px -8px #0009;overflow:hidden}.mini__meta{min-width:0;display:flex;flex-direction:column;gap:2px}.mini__title{font-family:var(--font-book);font-size:16px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini__chapter{font-size:12.5px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini__controls{display:flex;align-items:center;gap:4px;flex:none}.mini__play,.mini__play:hover:not(:disabled){color:var(--on-accent);background:var(--accent);border:1px solid hsl(var(--book-h) 90% 82% / .6)}.scrim{position:fixed;inset:0;z-index:60;display:grid;padding:max(24px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));overflow:auto;overscroll-behavior:contain;background:var(--scrim);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fade-in var(--dur) var(--ease) both}.scrim>*{margin:auto;min-width:0}.dialog{width:min(430px,100%);border-radius:var(--r-xl);padding:26px;display:flex;flex-direction:column;gap:12px;animation:dialog-in .6s var(--spring) both}@keyframes dialog-in{0%{opacity:0;transform:translateY(24px) scale(.92)}}.dialog__icon{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;color:var(--accent-text)}.dialog__title{font-family:var(--font-book);font-size:23px;font-weight:600;line-height:1.15}.dialog__body{font-size:14.5px;line-height:1.58;color:var(--text-dim)}.dialog__body strong{color:var(--text);font-weight:650}.dialog__actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.notice{display:flex;align-items:flex-start;gap:14px;padding:18px 20px;border-radius:var(--r-lg);margin-bottom:20px;color:var(--text-dim);animation:rise-in var(--dur) var(--ease-out) both}.notice>svg{flex:none;margin-top:2px}.notice--error{color:var(--warn)}.notice--warn{align-items:center}.notice__title{font-family:var(--font-book);font-size:19px;font-weight:600;color:var(--text);margin-bottom:4px}.notice__body{font-size:14px;line-height:1.58}.notice__action{margin-left:auto;flex:none;align-self:center}.settings{max-width:640px;margin:0 auto;display:flex;flex-direction:column;gap:18px;padding:max(14px,env(safe-area-inset-top)) 0 12px}.settings__heading{font-family:var(--font-book);font-size:clamp(28px,4vw,36px);font-weight:600;line-height:1.1;margin:6px 0 4px}.settings__card{display:flex;flex-direction:column;gap:13px}.settings__title{font-family:var(--font-book);font-size:21px;font-weight:600}.settings__hint{font-size:13.5px;line-height:1.58;color:var(--text-dim);margin-top:-4px}.kv{display:grid;grid-template-columns:minmax(96px,auto) 1fr;gap:10px 20px;margin:0;font-size:14px}.kv dt{font-weight:600;color:var(--text-dim)}.kv dd{margin:0;display:flex;align-items:center;gap:7px;overflow-wrap:anywhere}.field{display:flex;flex-direction:column;gap:8px}.field__label{font-size:13.5px;font-weight:620;color:var(--text-dim)}.field__input{width:100%;padding:13px 16px;border-radius:var(--r);font:inherit;font-size:16px;color:var(--text)}.field__input::placeholder{color:var(--text-faint)}.rule{border:0;height:1px;margin:4px 0;background:var(--track)}.settings__warn{display:flex;align-items:flex-start;gap:10px;font-size:13.5px;line-height:1.58;color:var(--warn)}.settings__warn svg{flex:none;margin-top:2px}.dialog--wide{width:min(540px,100%);max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px)}.dialog--wide>*{flex-shrink:0}.picker__head{display:flex;align-items:center;gap:12px}.picker__title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker__path{font-size:12.5px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker__list{border-radius:var(--r-lg);padding:8px;max-height:330px;min-height:96px;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:2px}.dialog--wide>.picker__list{flex-shrink:1}.picker__item{display:flex;align-items:center;gap:12px;width:100%;padding:11px 13px;border-radius:var(--r);text-align:left;color:var(--text);border:1px solid transparent}@media(hover:hover){.picker__item:hover{background:var(--glass-hover)}}.picker__item svg{flex:none;color:var(--text-dim)}.picker__item-name{font-size:14.5px;font-weight:560;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker__empty{display:flex;align-items:center;gap:9px;padding:22px 14px;font-size:13.5px;color:var(--text-dim)}.picker__empty--error{color:var(--warn)}.picker__hint{font-size:12.5px;line-height:1.5;color:var(--text-dim)}.picker__choose{min-width:0}.picker__choose>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:520px){:root{--miniplayer-h: 70px}.grid{grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:22px 16px}.bookcard__title{font-size:15.5px}.topbar__title{font-size:22px}.topbar__mark{width:36px;height:36px}.resume{grid-template-columns:1fr}.resume__play{justify-self:stretch;width:auto;height:50px;border-radius:var(--r-pill);display:flex;justify-content:center;gap:8px;font-size:15.5px;font-weight:650}.resume__play-label{display:inline}.playbtn{width:88px;height:88px}.sheet{padding:19px 18px}}@media(pointer:coarse){.iconbtn{min-width:44px;min-height:44px}.btn,.btn--sm{min-height:44px}.chip{min-height:44px;padding:10px 16px}.seekbar{height:44px}.chapters__item,.picker__item{min-height:48px}.search__clear{width:44px;height:44px;right:4px}.linkbtn{padding:12px 2px;margin:-12px -2px}}@media(orientation:landscape)and (max-height:520px){.player{max-width:920px;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);column-gap:clamp(18px,4vw,44px);row-gap:14px;align-items:start}.player>*{grid-column:2}.player__head{grid-column:1}.player__titles{grid-row:1;padding-top:4px}.player__art{grid-column:1;grid-row:2 / span 8;width:min(100%,calc(100dvh - 96px));margin:0 auto;position:sticky;top:12px}.player__titles{text-align:left}.player__title{font-size:24px}.player__deck{padding:10px 16px 14px;gap:8px}.playbtn{width:80px;height:80px}.resume__cover{width:96px}}
