:root{--bg: #ffffff;--surface: #f5f6f7;--segment-active: #ffffff;--text: #1a1c1e;--muted: #59616b;--border: #dde1e5;--accent: #1d6b58;--accent-text: #ffffff;--accent-soft: #dcefe9;--danger: #b3261e;--star: #b7791f;--shadow: rgb(0 0 0 / .14);--radius: 14px;--tabbar-height: 62px;color-scheme:light}:root[data-theme=dark]{--bg: #17150f;--surface: #211e17;--segment-active: #211e17;--text: #efe9dc;--muted: #a59d8b;--border: #37322a;--accent: #7fbfa8;--accent-text: #10201a;--accent-soft: #263a33;--danger: #ef8f7f;--star: #f0c04a;--shadow: rgb(0 0 0 / .5);color-scheme:dark}@media (prefers-color-scheme: dark){:root:not([data-theme]){--bg: #17150f;--surface: #211e17;--segment-active: #211e17;--text: #efe9dc;--muted: #a59d8b;--border: #37322a;--accent: #7fbfa8;--accent-text: #10201a;--accent-soft: #263a33;--danger: #ef8f7f;--star: #f0c04a;--shadow: rgb(0 0 0 / .5);color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.45}h1,h2,p{margin:0}button,input{font:inherit;color:inherit}.app{max-width:640px;margin:0 auto;min-height:100dvh}.app--signed-in{padding-bottom:calc(var(--tabbar-height) + env(safe-area-inset-bottom))}.topbar{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(14px + env(safe-area-inset-top)) 16px 6px}.topbar__title{font-family:Georgia,Times New Roman,serif;font-size:1.5rem;font-weight:700}.menu-button{display:grid;place-items:center;width:44px;height:44px;margin-right:-10px;border:0;border-radius:50%;background:none;cursor:pointer}.menu-button svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20}.menu{position:absolute;top:calc(100% + 2px);right:12px;z-index:21;display:grid;min-width:220px;padding:6px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);box-shadow:0 8px 28px var(--shadow)}.menu__user{padding:10px 12px;margin-bottom:4px;border-bottom:1px solid var(--border);color:var(--muted);font-size:.88rem;overflow-wrap:anywhere}.menu__item{display:block;min-height:46px;padding:11px 12px;border:0;border-radius:9px;background:none;color:var(--text);text-align:left;text-decoration:none;cursor:pointer}.menu__item:hover,.menu__item.router-link-exact-active{background:var(--surface)}.content{padding:10px 16px 24px}.tabbar{position:fixed;inset:auto 0 0 0;z-index:10;display:flex;justify-content:center;padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--border)}.tabbar__item{flex:1;max-width:213px;height:var(--tabbar-height);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);font-size:.75rem;text-decoration:none}.tabbar__item svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.tabbar__item.router-link-exact-active{color:var(--accent);font-weight:600}.button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 18px;border:1px solid var(--accent);border-radius:999px;background:var(--accent);color:var(--accent-text);font-weight:600;text-decoration:none;cursor:pointer}.button--secondary{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--text)}.button--ghost{background:transparent;border-color:var(--border);color:var(--text)}.button--small{min-height:38px;padding:0 14px;font-size:.9rem}.button:disabled{opacity:.55;cursor:default}.link-button{padding:8px 0;border:0;background:none;color:var(--accent);font-size:.9rem;text-align:left;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.link-button--danger{color:var(--danger)}input[type=text],input[type=password],input[type=number]{min-height:46px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}label{font-size:.9rem;color:var(--muted)}.hint{padding:18px 0;color:var(--muted);text-align:center}.error{padding:8px 0;color:var(--danger)}.empty{display:grid;justify-items:center;gap:16px;padding:48px 0;color:var(--muted)}.segments{display:flex;gap:4px;padding:4px;margin-bottom:14px;border-radius:999px;background:var(--border)}.segments__item{flex:1;min-height:38px;padding:0 6px;border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:.9rem;white-space:nowrap;cursor:pointer}.segments__item[aria-selected=true]{background:var(--segment-active);color:var(--text);font-weight:600}.segments__count{font-variant-numeric:tabular-nums;opacity:.7}.login{display:grid;gap:8px;max-width:340px;margin:0 auto;padding-top:18vh}.login h1{margin-bottom:20px;font-family:Georgia,Times New Roman,serif;font-size:2.2rem;text-align:center}.login .button{margin-top:12px}.account{display:grid;gap:8px;max-width:340px}.account h1{margin-bottom:8px;font-family:Georgia,Times New Roman,serif;font-size:1.3rem}.account .button{margin-top:12px}.account__note{color:var(--muted);font-size:.88rem}.account__success{padding:8px 0;color:var(--accent);font-weight:600}.setting{display:grid;gap:8px;padding:12px 0}.setting label{color:var(--text);font-size:1rem}.setting small{display:block;color:var(--muted);font-size:.85rem}select{min-height:46px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);font:inherit}.switch{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;color:var(--text);font-size:1rem;cursor:pointer}.switch small{display:block;color:var(--muted);font-size:.85rem}.switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:none;position:relative;width:52px;height:32px;margin:0;border-radius:999px;background:color-mix(in srgb,var(--muted) 60%,var(--bg));cursor:pointer;transition:background .2s}.switch input:after{content:"";position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000004d;transition:translate .2s}.switch input:checked{background:var(--accent)}.switch input:checked:after{translate:20px 0}.cover{aspect-ratio:2 / 3;overflow:hidden;border-radius:6px;background:var(--accent-soft);box-shadow:0 2px 8px var(--shadow)}.cover img{display:block;width:100%;height:100%;object-fit:cover}.cover__placeholder{display:grid;place-items:center;height:100%;color:var(--accent);font-family:Georgia,Times New Roman,serif;font-size:2rem;text-transform:uppercase}.book-list{display:grid;gap:12px}.book{display:grid;grid-template-columns:84px minmax(0,1fr);gap:14px;align-items:start;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.book__title{font-family:Georgia,Times New Roman,serif;font-size:1.08rem;line-height:1.25;overflow-wrap:anywhere}.book__meta{margin-top:2px;color:var(--muted);font-size:.88rem}.book__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.book__menu{display:grid;justify-items:start;margin-top:6px}.rating{grid-column:1 / -1;display:grid;gap:2px}.rating__stars{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));max-width:400px}.rating__star{display:grid;place-items:center;height:40px;padding:0;border:0;background:none;color:var(--muted);cursor:pointer}.rating__star svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}.rating__star--on{color:var(--star)}.rating__star--on svg{fill:currentColor}.rating__label{color:var(--muted);font-size:.85rem}.progress{height:8px;margin-top:12px;overflow:hidden;border-radius:999px;background:var(--border)}.progress__bar{height:100%;border-radius:999px;background:var(--accent);transition:width .3s}.page-form{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}.page-form input{width:84px;min-height:38px;font-variant-numeric:tabular-nums}.page-form__total{color:var(--muted);font-size:.88rem;font-variant-numeric:tabular-nums}.details{display:grid;gap:22px;margin-top:8px}.details__head{display:grid;grid-template-columns:116px minmax(0,1fr);gap:16px;align-items:start}.details__title{font-family:Georgia,Times New Roman,serif;font-size:1.3rem;line-height:1.25;overflow-wrap:anywhere}.details__status{display:block;margin-top:10px;color:var(--accent);font-size:.9rem;font-weight:600}.details__action{margin-top:12px}.details__heading{margin-bottom:6px;color:var(--muted);font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.details__description{max-width:65ch;white-space:pre-line}.details__facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 18px;margin:0}.details__facts dt{color:var(--muted)}.details__facts dd{margin:0;overflow-wrap:anywhere}.details__subjects{display:flex;flex-wrap:wrap;gap:6px;padding:0;margin:0;list-style:none}.details__subjects li{padding:4px 10px;border-radius:999px;background:var(--accent-soft);font-size:.85rem}.book__title a,.suggestion__link{color:inherit;text-decoration:none}.suggestion__link{display:flex;flex-direction:column;gap:4px}.scanner{position:relative;aspect-ratio:4 / 3;overflow:hidden;border-radius:var(--radius);background:#000}.scanner video{width:100%;height:100%;object-fit:cover}.scanner__frame{position:absolute;top:30%;right:10%;bottom:30%;left:10%;border:3px solid #fff;border-radius:12px;box-shadow:0 0 0 100vmax #00000059}.manual{display:grid;gap:6px;margin-top:8px}.manual__row{display:flex;gap:8px}.manual__row input{flex:1;min-width:0}.scan-result{display:grid;justify-items:center;gap:6px;padding-top:8px;text-align:center}.scan-result .cover{width:150px;margin:10px 0}.scan-result__note{color:var(--accent);font-weight:600}.scan-result__actions{display:grid;gap:10px;width:100%;max-width:320px;margin-top:16px}.suggestions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 14px}@media (min-width: 520px){.suggestions{grid-template-columns:repeat(3,minmax(0,1fr))}}.suggestion{display:flex;flex-direction:column;gap:4px}.suggestion .cover{margin-bottom:6px}.suggestion__title{font-family:Georgia,Times New Roman,serif;font-size:.98rem;line-height:1.25;overflow-wrap:anywhere}.suggestion__reason{color:var(--muted);font-size:.8rem}.suggestion .button{margin-top:auto;align-self:flex-start}
