:root{--color-bg: #ffffff;--color-surface: #ffffff;--color-text: #17150f;--color-muted: #6e685b;--color-line: #e6dfd1;--color-primary: #6f7c4e;--color-primary-strong: #5f6b42;--color-primary-soft: #eef0e6;--color-accent: #d9962f;--color-accent-strong: #c4831f;--color-accent-soft: #f8e9cf;--color-chip: #efe8d9;--color-chip-strong: #e5dcc8;--color-danger: #b3502f;--color-forest: #2f4a34;--color-white: #ffffff;--shadow-rgb: 24 20 12;--font-display: "Lora", "Iowan Old Style", Georgia, serif;--font-body: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--text-xs: 12px;--text-sm: 13px;--text-base: 15px;--text-md: 16px;--text-lg: 20px;--text-xl: 28px;--text-2xl: 34px;--text-hero: clamp(34px, 6.2vw, 54px);--text-brand: 26px;--weight-regular: 400;--weight-bold: 700;--leading-tight: 1.12;--leading-snug: 1.3;--leading-body: 1.5;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--space-8: 40px;--space-9: 56px;--space-10: 72px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--shadow-sm: 0 1px 3px rgb(var(--shadow-rgb) / .1);--shadow-md: 0 10px 28px rgb(var(--shadow-rgb) / .14);--page-max: 1200px;--gutter: var(--space-6);--topbar-h: 72px;--card-w: 132px;--badge-gap: var(--space-3);--control-h: 40px}@media(min-width:640px){:root{--card-w: 150px}}@media(min-width:900px){:root{--card-w: 168px;--gutter: var(--space-7);--topbar-h: 80px}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-body);-webkit-font-smoothing:antialiased}img{display:block;max-width:100%}button{font:inherit;color:inherit}.app{max-width:var(--page-max);margin:0 auto;padding:0 var(--gutter) var(--space-10)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);height:var(--topbar-h);background:var(--color-bg)}.brand{font-family:var(--font-display);font-size:var(--text-brand);font-weight:var(--weight-regular);letter-spacing:-.01em;color:var(--color-text);text-decoration:none}.account{position:relative}.avatar{width:44px;height:44px;border-radius:var(--radius-pill);border:none;background:var(--color-primary);color:var(--color-white);display:grid;place-items:center;cursor:pointer;font-weight:var(--weight-bold);font-size:var(--text-md);transition:background .15s ease}.avatar:hover{background:var(--color-primary-strong)}.account-menu{position:absolute;right:0;top:calc(100% + var(--space-2));min-width:220px;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--space-2);z-index:30}.account-menu__email{display:block;padding:var(--space-2) var(--space-3);font-size:var(--text-sm);color:var(--color-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-menu__item{display:block;width:100%;text-align:left;border:none;background:transparent;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-base);cursor:pointer}.account-menu__item:hover{background:var(--color-chip)}.hero{padding:var(--space-6) 0 var(--space-5)}.hero h1{font-family:var(--font-display);font-size:var(--text-hero);font-weight:var(--weight-regular);line-height:var(--leading-tight);letter-spacing:-.015em;margin:0 0 var(--space-3)}.hero__sub{margin:0;max-width:60ch;color:var(--color-muted);font-size:var(--text-lg)}.filterbar{position:sticky;top:0;z-index:15;display:flex;flex-direction:column;gap:var(--space-3);margin:0 calc(var(--gutter) * -1);padding:var(--space-3) var(--gutter) var(--space-5);background:var(--color-bg);border-bottom:1px solid var(--color-line)}.controls-row{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap}.seg{order:1;flex:0 0 auto;display:inline-grid;grid-template-columns:auto auto;padding:0;min-height:var(--control-h);border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);overflow:hidden}.seg__opt{display:grid;place-items:center;border:none;background:transparent;color:var(--color-text);font-size:var(--text-base);font-weight:var(--weight-regular);padding:0 var(--space-4);border-radius:calc(var(--radius-md) - 1px);cursor:pointer;transition:background .15s ease,color .15s ease}.seg__opt:hover{color:var(--color-primary-strong)}.seg__opt--on,.seg__opt--on:hover{background:var(--color-primary);color:var(--color-white);font-weight:var(--weight-bold)}.wait-row{order:2;display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:240px;min-height:var(--control-h)}.wait-row__label{font-size:var(--text-base);color:var(--color-text);white-space:nowrap}.spin{animation:spin .9s linear infinite;display:block}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spin{animation:none}}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.wait-slider__wrap{position:relative;display:flex;align-items:center;flex:1;min-width:120px}.wait-slider__ticks{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.wait-slider__tick{position:absolute;top:50%;width:6px;height:6px;margin-left:-3px;border-radius:var(--radius-pill);background:var(--color-bg);transform:translateY(-50%)}.wait-slider__tick--on{background:var(--color-primary)}.wait-slider{flex:1;min-width:120px;height:4px;border-radius:var(--radius-pill);-moz-appearance:none;appearance:none;-webkit-appearance:none;background:linear-gradient(to right,var(--color-primary) 0 var(--fill),var(--color-chip-strong) var(--fill) 100%);cursor:pointer}.wait-slider::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:var(--radius-pill);background:var(--color-primary);border:3px solid var(--color-surface);box-shadow:var(--shadow-sm);cursor:pointer}.wait-slider::-moz-range-thumb{width:20px;height:20px;border-radius:var(--radius-pill);background:var(--color-primary);border:3px solid var(--color-surface);box-shadow:var(--shadow-sm);cursor:pointer}.wait-slider:disabled{opacity:.4;cursor:default}.wait-slider__value{font-size:var(--text-base);color:var(--color-text);min-width:64px;text-align:right;white-space:nowrap}.wait-row__stat{order:3;display:inline-flex;align-items:center;gap:var(--space-2);margin-left:auto;font-size:var(--text-base);color:var(--color-muted);white-space:nowrap}.libs-row{display:flex;align-items:center;gap:var(--space-2)}.libs-row__pills{flex:1 1 auto;min-width:0;display:flex;flex-wrap:nowrap;align-items:center;gap:var(--space-3);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:2px;cursor:grab}.libs-row__pills::-webkit-scrollbar{display:none}.libs-row__pills.is-dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.lib-pill{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--control-h);background:var(--color-chip);border-radius:var(--radius-md);padding:0 var(--space-3)}.lib-pill__name{border:none;background:transparent;font-size:var(--text-base);color:var(--color-text);cursor:pointer;padding:0;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-pill__remove{border:none;background:transparent;color:var(--color-muted);font-size:var(--text-sm);line-height:1;cursor:pointer;padding:0}.lib-pill__remove:hover{color:var(--color-danger)}.lib-add{display:inline-flex;align-items:center;flex:0 0 auto;white-space:nowrap;min-height:var(--control-h);border:none;background:transparent;color:var(--color-accent);font-size:var(--text-base);padding:0 var(--space-2);cursor:pointer}.lib-add:hover{color:var(--color-accent-strong)}.row{border-top:1px solid var(--color-line);padding-top:var(--space-6);margin-top:var(--space-6);content-visibility:auto;contain-intrinsic-size:auto 390px}main>.row:first-of-type{border-top:none;padding-top:var(--space-3)}.row__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4)}.row__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-regular);line-height:var(--leading-snug);margin:0;letter-spacing:-.01em}.row__note{margin-left:var(--space-3);font-family:var(--font-body);font-size:var(--text-base);color:var(--color-muted);letter-spacing:0;text-transform:uppercase}.row__actions{display:flex;align-items:center;gap:var(--space-4);flex:0 0 auto}.row__track{position:relative}.row__track>.track{position:relative;z-index:0}.row__nav{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);display:none;align-items:center;justify-content:space-between;padding:0;pointer-events:none;z-index:2}.nav-btn{pointer-events:auto;width:48px;height:48px;border:none;background:transparent;color:var(--color-text);font-size:38px;line-height:1;cursor:pointer}.nav-btn:hover:not(:disabled){color:var(--color-accent-strong)}.nav-btn:disabled{visibility:hidden}.see-all{display:inline-flex;align-items:center;gap:var(--space-2);border:none;background:transparent;color:var(--color-accent);font-size:var(--text-md);cursor:pointer;padding:var(--space-1) 0;white-space:nowrap}.see-all:hover{color:var(--color-accent-strong)}.track{display:flex;gap:var(--space-4);overflow-x:auto;scroll-snap-type:none;padding-bottom:var(--space-2);scrollbar-width:none;cursor:grab}.track.is-dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}@media(hover:none){.track{scroll-snap-type:x proximity}}.track::-webkit-scrollbar{display:none}.row__track:before,.row__track:after{content:"";position:absolute;top:0;bottom:0;width:64px;z-index:1;pointer-events:none;opacity:0;transition:opacity .15s ease}.row__track:before{left:0;background:linear-gradient(to right,var(--color-bg),transparent)}.row__track:after{right:0;background:linear-gradient(to left,var(--color-bg),transparent)}.row__track.fade-left:before,.row__track.fade-right:after{opacity:1}.track--grid{flex-wrap:wrap;overflow:visible}.row__empty{color:var(--color-muted);font-size:var(--text-base);padding:var(--space-5) 0}.card{position:relative;flex:0 0 auto;width:var(--card-w);scroll-snap-align:start;display:flex;flex-direction:column}.card__art{position:relative}.cover{width:100%;aspect-ratio:3 / 4;object-fit:cover;border-radius:var(--radius-md);background:var(--color-chip);box-shadow:var(--shadow-sm)}.cover--empty{display:grid;place-items:center;padding:var(--space-3);font-size:var(--text-xs);color:var(--color-muted);text-align:center}.card__open{display:block;width:100%;padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--radius-md)}.card__open:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.bookmark{position:absolute;top:var(--space-2);right:var(--space-2);z-index:2;width:34px;height:34px;display:grid;place-items:center;border:none;border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm);cursor:pointer;transition:color .15s ease,transform .15s ease}.bookmark:hover{transform:scale(1.06)}.bookmark--on{color:var(--color-primary)}.card__title{font-size:var(--text-md);font-weight:var(--weight-bold);line-height:var(--leading-snug);margin:var(--space-3) 0 var(--space-1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card__author{font-size:var(--text-base);color:var(--color-muted);margin:0 0 var(--space-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pill{display:inline-flex;align-items:center;gap:var(--space-2);border-radius:var(--radius-pill);padding:var(--space-2) var(--space-3);font-size:var(--text-base);font-weight:var(--weight-bold);line-height:1.2;white-space:nowrap}.card .pill{margin-top:auto;align-self:flex-start}.pill--available{background:var(--color-primary);color:var(--color-white)}a.pill{text-decoration:none}a.pill:hover{filter:brightness(1.06)}.pill--wait{background:var(--color-accent);color:var(--color-white)}.pill--muted{background:var(--color-chip);color:var(--color-muted)}.pill--pending{width:84px;height:30px;padding:0;background:var(--color-chip);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.55}}.skeleton{flex:0 0 auto;width:var(--card-w)}.skeleton__cover{width:100%;aspect-ratio:3 / 4;border-radius:var(--radius-md)}.skeleton__line{height:10px;border-radius:var(--radius-sm);margin-top:var(--space-3)}.skeleton__line--title{width:82%}.skeleton__line--author{width:55%;margin-top:var(--space-2)}.skeleton__line--badge{width:48px;height:22px;border-radius:var(--radius-pill);margin-top:var(--space-3)}.skeleton__cover,.skeleton__line{background:var(--color-chip);animation:pulse 1.4s ease-in-out infinite}.primary-btn{border:none;border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-white);font-size:var(--text-base);font-weight:var(--weight-bold);padding:var(--space-3) var(--space-5);cursor:pointer}.primary-btn:hover{background:var(--color-primary-strong)}.primary-btn:disabled{opacity:.6;cursor:default}.ghost-btn{border:none;background:transparent;color:var(--color-muted);font-size:var(--text-base);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-sm)}.ghost-btn:hover{color:var(--color-text);background:var(--color-chip)}.link-btn{border:none;background:transparent;color:var(--color-accent);font-size:var(--text-sm);cursor:pointer;padding:var(--space-3) 0 0;text-align:left}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:rgb(var(--shadow-rgb) / .35);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:var(--space-5)}.sheet{width:100%;max-width:560px;max-height:78vh;display:flex;flex-direction:column;background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-md)}.sheet--narrow{max-width:400px}.sheet__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}.sheet__head h2{font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-regular);margin:0 0 var(--space-1)}.sheet__hint{margin:0;font-size:var(--text-sm);color:var(--color-muted)}.sheet__foot{padding-top:var(--space-4);border-top:1px solid var(--color-line);margin-top:var(--space-3)}.text-input{width:100%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-line);background:var(--color-surface);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);outline:none}.text-input:focus{border-color:var(--color-primary)}.auth-form{display:flex;flex-direction:column;gap:var(--space-3)}.text-input--code{text-align:center;font-family:var(--font-mono, monospace);font-size:var(--text-lg, 1.25rem);letter-spacing:.4em}.auth-actions{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.lib-list{list-style:none;margin:var(--space-3) 0 0;padding:0;overflow-y:auto;flex:1}.lib-item{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);border:none;background:transparent;font-size:var(--text-base);text-align:left;border-radius:var(--radius-sm);cursor:pointer}.lib-item:hover{background:var(--color-chip)}.lib-item--on{color:var(--color-primary-strong);font-weight:var(--weight-bold)}.lib-item__mark{color:var(--color-muted);font-size:var(--text-sm)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:rgb(var(--shadow-rgb) / .45);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;align-items:start;justify-items:center;padding:var(--space-7) var(--space-5);overflow-y:auto}.dialog{position:relative;width:100%;max-width:720px;max-height:86vh;overflow-y:auto;background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-md)}.dialog__close{position:absolute;top:var(--space-5);right:var(--space-6);width:34px;height:34px;border:none;border-radius:var(--radius-pill);background:var(--color-chip);color:var(--color-text);font-size:var(--text-sm);cursor:pointer}.dialog__close:hover{background:var(--color-chip-strong)}.dialog__head{display:flex;gap:var(--space-5)}.dialog__cover{flex:0 0 auto;width:140px;aspect-ratio:3 / 4;object-fit:cover;background:var(--color-chip);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.dialog__meta{flex:1 1 auto;min-width:0}.dialog__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-regular);line-height:var(--leading-snug);letter-spacing:-.01em;margin:0 0 var(--space-1);padding-right:var(--space-8)}.dialog__author{margin:0 0 var(--space-3);font-size:var(--text-md);color:var(--color-muted)}.dialog__status{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin-left:auto}.dialog__rating-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-3)}.dialog__rating{display:flex;align-items:center;gap:var(--space-3)}.stars{display:inline-flex;gap:2px;font-size:var(--text-md);line-height:1}.star{background:linear-gradient(to right,var(--color-accent) var(--fill),var(--color-chip-strong) var(--fill));-webkit-background-clip:text;background-clip:text;color:transparent}.dialog__rating-count{font-size:var(--text-sm);color:var(--color-muted)}.dialog__chips{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.dialog__chip{background:var(--color-chip);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3);font-size:var(--text-sm)}.dialog__awards{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}.award{display:inline-flex;align-items:center;gap:var(--space-2);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3);font-size:var(--text-sm);background:var(--color-forest);color:var(--color-white)}.award--win{font-weight:var(--weight-bold)}.dialog__body{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-5)}.dialog__description{margin:var(--space-5) 0 0;font-size:var(--text-base);color:var(--color-muted)}.dialog__para{margin:0;font-size:var(--text-base);line-height:var(--leading-body)}.dialog__praise{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-line)}.dialog__para--caps{font-size:var(--text-sm);letter-spacing:.02em;color:var(--color-muted)}.dialog__para--quote{padding-left:var(--space-3);border-left:2px solid var(--color-line);color:var(--color-muted);font-style:italic}.dialog__status .ghost-btn{display:inline-flex;align-items:center;gap:var(--space-2)}.icon-btn{width:34px;height:34px;flex:0 0 auto;display:grid;place-items:center;border:none;border-radius:var(--radius-pill);background:var(--color-chip);color:var(--color-text);cursor:pointer;transition:background .15s ease,color .15s ease}.icon-btn:hover{background:var(--color-chip-strong)}.icon-btn--on,.icon-btn--on:hover{background:var(--color-primary-soft);color:var(--color-primary)}a.primary-btn{display:inline-flex;align-items:center;text-decoration:none}.primary-btn--block{display:flex;width:100%;justify-content:center;padding-block:var(--space-3)}.ghost-btn--on{color:var(--color-primary-strong)}@media(max-width:560px){.dialog-overlay{padding:0;place-items:stretch}.dialog{max-width:none;max-height:none;height:100%;border-radius:0;padding:var(--space-5)}.dialog__close{top:var(--space-4);right:var(--space-5)}.dialog__head{gap:var(--space-4)}.dialog__cover{width:104px}.dialog__title{font-size:var(--text-lg)}}.muted{color:var(--color-muted);font-size:var(--text-base)}.error-text{color:var(--color-danger);font-size:var(--text-sm);margin:var(--space-3) 0 0}.footer{margin-top:var(--space-9);padding-top:var(--space-5);border-top:1px solid var(--color-line);color:var(--color-muted);font-size:var(--text-xs)}.footer-hint{margin-top:var(--space-6)}@media(min-width:900px){.seg{width:auto;max-width:none;grid-template-columns:auto auto}.seg__opt{padding:0 var(--space-5);font-size:var(--text-base)}}@media(min-width:640px){.row__nav{display:flex}}@media(max-width:560px){.seg{width:64%;grid-template-columns:1fr 1fr}.wait-row{order:3;flex-wrap:nowrap;gap:var(--space-3)}.wait-row__stat{order:2;width:auto;margin-left:auto;text-align:right;font-size:var(--text-sm)}.row__note{display:none}}
