.camera-container{position:fixed;inset:0;background:#000;display:flex;flex-direction:column}.camera-video{width:100%;height:100%;object-fit:cover}.camera-flash{position:absolute;inset:0;background:#ffffff29;animation:cameraFlash .18s ease-out forwards;pointer-events:none}.camera-loading,.camera-uploading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000c;color:#fff;gap:1rem;z-index:12}.loading-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}.camera-error{display:flex;align-items:center;justify-content:center;background:var(--bg-dark)}.error-content{display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding:2rem;text-align:center}.error-icon{width:80px;height:80px;color:var(--text-muted)}.error-icon svg{width:100%;height:100%}.error-message{color:var(--text-secondary);font-size:1rem;max-width:280px}.file-button{display:flex;align-items:center;gap:.5rem;padding:1rem 1.5rem;background:var(--primary);color:#fff;border:none;border-radius:12px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s}.file-button:hover{background:var(--primary-dark)}.file-button svg{width:20px;height:20px}.fallback-actions{width:min(100%,340px);display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem}.fallback-action-button{min-height:2.875rem;padding:.75rem 1rem;border-radius:999px;border:1px solid rgba(148,163,184,.3);background:#0f172ac2;color:var(--text-primary);font-size:.95rem;font-weight:600;cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}.fallback-action-button:hover{transform:translateY(-1px);border-color:#60a5fa8c;background:#1e293be6}.camera-controls{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:2rem;padding:2rem;background:linear-gradient(transparent,#0009)}.camera-permission-prompt{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:1.25rem;padding-top:calc(env(safe-area-inset-top,0px) + 8rem);padding-bottom:calc(env(safe-area-inset-bottom,0px) + 6.5rem);z-index:8}.camera-permission-card{width:min(100%,25rem);display:flex;flex-direction:column;gap:.875rem;padding:1rem;border-radius:20px;background:#080f1ec7;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid rgba(148,163,184,.18);box-shadow:0 20px 48px #0206176b}.camera-permission-eyebrow{margin:0;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#bfdbfecc}.camera-permission-title{margin:0;font-size:1.3rem;line-height:1.2;color:#fff}.camera-permission-copy{margin:0;font-size:.92rem;line-height:1.5;color:#e2e8f0cc}.camera-permission-actions{display:flex;flex-direction:column;gap:.625rem}.enable-camera-button,.permission-gallery-button{min-height:3rem;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.875rem 1rem;border-radius:999px;font-size:.95rem;font-weight:700;cursor:pointer;transition:transform .15s ease,opacity .15s ease,border-color .15s ease}.enable-camera-button{border:none;background:linear-gradient(135deg,#3b82f6fa,#0ea5e9e0);color:#fff}.permission-gallery-button{border:1px solid rgba(148,163,184,.22);background:#0f172ab3;color:#e2e8f0eb}.enable-camera-button:hover,.permission-gallery-button:hover{transform:translateY(-1px)}.enable-camera-button svg{width:18px;height:18px}.control-button{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:#fff3;border:none;border-radius:50%;color:#fff;cursor:pointer;transition:background .2s}.control-button:hover{background:#ffffff4d}.control-button:disabled{opacity:.5;cursor:not-allowed}.control-button svg{width:24px;height:24px}.capture-button{width:72px;height:72px;padding:4px;background:#fff;border:none;border-radius:50%;cursor:pointer;transition:transform .1s}.capture-button:active{transform:scale(.95)}.capture-button:disabled{opacity:.5;cursor:not-allowed}.capture-button-inner{width:100%;height:100%;background:#fff;border:3px solid #333;border-radius:50%;transition:background .1s}.capture-button:active .capture-button-inner{background:#e5e5e5}.camera-guide{position:absolute;bottom:calc(env(safe-area-inset-bottom,0px) + 8rem);left:0;right:0;padding:1rem;text-align:center}.camera-guide p{display:inline-block;max-width:min(26rem,calc(100vw - 2rem));padding:.5rem .95rem;background:#00000094;color:#fff;border-radius:20px;font-size:.875rem;line-height:1.35}.hidden-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.top-buttons{position:absolute;top:1rem;left:1rem;right:1rem;display:flex;align-items:center;gap:.625rem;z-index:10}.top-button{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#00000080;border:none;border-radius:50%;color:#fff;cursor:pointer;transition:background .2s}.top-button:hover{background:#000000b3}.top-button:disabled{opacity:.5;cursor:not-allowed}.top-button svg{width:22px;height:22px}.account-button{position:relative}.account-button-status{position:absolute;right:7px;bottom:7px;width:9px;height:9px;border-radius:50%;border:2px solid rgba(8,15,30,.88);background:#94a3b8eb}.account-button.authenticated .account-button-status{background:#22c55ef5}.scan-mode{position:absolute;top:calc(env(safe-area-inset-top,0px) + 4.5rem);left:1rem;right:1rem;z-index:10}.item-type-panel{display:flex;flex-direction:column;gap:.625rem;padding:.875rem;border-radius:18px;background:#080f1ead;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(148,163,184,.18)}.item-type-panel-static{width:min(100%,340px)}.item-type-heading{font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#e2e8f0c2}.item-type-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.item-type-chip{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:2.5rem;padding:.6rem .75rem;border-radius:999px;border:1px solid rgba(148,163,184,.24);background:#0f172ab8;color:#e2e8f0eb;font-size:.84rem;font-weight:600;cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}.item-type-chip:hover{transform:translateY(-1px);border-color:#60a5fa80}.item-type-chip.active{background:linear-gradient(135deg,#3b82f6eb,#0ea5e9d1);border-color:#bfdbfebf;color:#fff}.item-type-chip:disabled{opacity:.55;cursor:not-allowed;transform:none}.item-type-note{font-size:.75rem;color:#cbd5e1b8}@media(max-height:780px){.scan-mode{top:calc(env(safe-area-inset-top,0px) + 4rem)}.camera-guide{bottom:calc(env(safe-area-inset-bottom,0px) + 7.5rem)}}@media(max-width:640px){.top-buttons{top:.75rem;left:.75rem;right:.75rem}.top-button{width:40px;height:40px}.top-button svg{width:20px;height:20px}.scan-mode{top:calc(env(safe-area-inset-top,0px) + 4rem);left:.75rem;right:.75rem}.item-type-panel{gap:.55rem;padding:.72rem;border-radius:15px;border-color:#94a3b81f}.item-type-grid{gap:.4rem}.item-type-chip{min-height:2.3rem;padding:.55rem .65rem;font-size:.8rem}.camera-permission-prompt{padding:.875rem;padding-top:calc(env(safe-area-inset-top,0px) + 7rem);padding-bottom:calc(env(safe-area-inset-bottom,0px) + 5.75rem)}.camera-permission-card{gap:.75rem;padding:.9rem;border-radius:16px;border-color:#94a3b81f}.camera-permission-title{font-size:1.12rem}.camera-permission-copy{font-size:.86rem}.camera-controls{gap:1.4rem;padding:1.2rem 1rem}.camera-guide{bottom:calc(env(safe-area-inset-bottom,0px) + 6.5rem);padding:.75rem}.camera-guide p{font-size:.82rem}}@media(max-width:380px){.fallback-actions{grid-template-columns:1fr}}@keyframes cameraFlash{0%{opacity:1}to{opacity:0}}.account-view{position:fixed;inset:0;overflow:auto;background:radial-gradient(circle at top,rgba(56,189,248,.16),transparent 38%),linear-gradient(180deg,#07111f,#0f172a 42%,#162033)}.account-view__glow{position:fixed;inset:-20%;background:radial-gradient(circle at 20% 18%,rgba(14,165,233,.18),transparent 24%),radial-gradient(circle at 82% 22%,rgba(59,130,246,.14),transparent 20%),radial-gradient(circle at 50% 100%,rgba(56,189,248,.08),transparent 30%);pointer-events:none}.account-view__content{position:relative;z-index:1;width:min(100%,34rem);min-height:100%;margin:0 auto;padding:max(1rem,env(safe-area-inset-top)) 1rem max(1.25rem,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:1rem}.account-view__header{display:flex;gap:.875rem;align-items:flex-start;padding:1rem;border:1px solid rgba(148,163,184,.14);border-radius:24px;background:#0a1221cc;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);animation:fadeIn .28s ease-out}.account-back-button{width:2.75rem;height:2.75rem;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(148,163,184,.18);border-radius:999px;background:#0f172ae0;color:var(--text-primary);cursor:pointer}.account-back-button svg{width:1.25rem;height:1.25rem}.account-view__title-block{display:flex;flex-direction:column;gap:.5rem}.account-view__title-block h1{font-size:clamp(1.9rem,5vw,2.5rem);line-height:1;letter-spacing:-.04em}.account-view__title-block p{color:#e2e8f0c7;line-height:1.55}.account-view__eyebrow,.account-status-card__eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#7dd3fceb}.account-status-card,.account-panel{padding:1.25rem;border-radius:24px;border:1px solid rgba(148,163,184,.14);background:#090f1bd1;box-shadow:0 22px 60px #02061747;animation:fadeIn .32s ease-out}.account-status-card{display:flex;flex-direction:column;gap:.5rem}.account-status-card.authenticated{background:linear-gradient(135deg,#082f49eb,#0f172af0),#090f1bd1}.account-status-card.guest{background:linear-gradient(135deg,#1e293bf2,#0a1221f0),#090f1bd1}.account-status-card h2,.account-panel__copy h2{font-size:1.35rem;line-height:1.1}.account-status-card p,.account-panel__copy p,.account-footnote{color:#e2e8f0c2;line-height:1.55}.account-panel{display:flex;flex-direction:column;gap:1rem}.account-panel__copy{display:flex;flex-direction:column;gap:.5rem}.account-mode-toggle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;padding:.4rem;border-radius:999px;background:#0f172ae6}.account-mode-toggle__button{min-height:2.75rem;border:none;border-radius:999px;background:transparent;color:#e2e8f0b3;font-size:.92rem;font-weight:700;letter-spacing:.01em;cursor:pointer}.account-mode-toggle__button.active{background:linear-gradient(135deg,#3b82f6f0,#0ea5e9d6);color:#fff}.account-form{display:flex;flex-direction:column;gap:.875rem}.account-field{display:flex;flex-direction:column;gap:.45rem}.account-field span{color:#e2e8f0d6;font-size:.88rem;font-weight:600}.account-field input{width:100%;min-height:3rem;padding:.9rem 1rem;border:1px solid rgba(148,163,184,.2);border-radius:14px;background:#0f172ae0;color:var(--text-primary);font-size:1rem}.account-field input::placeholder{color:#94a3b8b8}.account-submit-button{min-height:3rem;border:none;border-radius:16px;background:linear-gradient(135deg,#2563eb,#0ea5e9);color:#fff;font-size:1rem;font-weight:700;cursor:pointer}.account-submit-button--secondary{background:#0f172ae0;border:1px solid rgba(148,163,184,.22)}.account-submit-button:disabled,.account-mode-toggle__button:disabled,.account-field input:disabled{opacity:.6;cursor:not-allowed}.account-error{padding:.85rem 1rem;border-radius:16px;background:#7f1d1d52;border:1px solid rgba(248,113,113,.3);color:#fecaca}.account-footnote{font-size:.92rem}@media(max-width:520px){.account-view__content{padding-left:.875rem;padding-right:.875rem}.account-view__header,.account-status-card,.account-panel{border-radius:22px}}.progress-container{position:fixed;inset:0;display:flex;justify-content:center;padding:1rem;overflow:hidden;background:linear-gradient(180deg,#0b0f14,#05070a)}.progress-container .back-button{position:absolute;top:calc(env(safe-area-inset-top,0px) + 1rem);left:1rem;z-index:2;display:flex;align-items:center;justify-content:center;width:44px;height:44px;color:var(--text-primary);cursor:pointer;background:#0f172abd;border:1px solid rgba(148,163,184,.22);border-radius:50%;transition:background .2s,border-color .2s}.progress-container .back-button:hover{background:#1e293beb;border-color:#94a3b86b}.progress-container .back-button svg{width:24px;height:24px}.progress-shell{display:flex;flex-direction:column;gap:1rem;width:min(100%,1180px);height:100%;min-height:0;padding-top:calc(env(safe-area-inset-top,0px) + 3.75rem);padding-bottom:calc(env(safe-area-inset-bottom,0px) + .25rem)}.progress-shell.processing{width:min(100%,1440px)}.progress-header{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,360px);gap:1rem;align-items:end}.progress-copy{display:flex;flex-direction:column;gap:.45rem;min-width:0}.progress-kicker{display:inline-flex;gap:.5rem;align-items:center;width:fit-content;max-width:100%;overflow:hidden;font-size:.85rem;font-weight:700;color:#93c5fd;text-overflow:ellipsis;white-space:nowrap}.progress-kicker span{flex-shrink:0}.progress-title{font-size:clamp(1.75rem,2.2vw,2.4rem);font-weight:750;line-height:1.05;color:var(--text-primary)}.progress-message{max-width:48rem;overflow:hidden;font-size:.98rem;line-height:1.45;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap}.progress-meter{display:flex;flex-direction:column;gap:.55rem;min-width:0;padding:.85rem;background:#111827d1;border:1px solid rgba(148,163,184,.18);border-radius:8px}.progress-meter-topline{display:flex;align-items:center;justify-content:space-between;gap:1rem;font-size:.84rem;font-weight:700;color:var(--text-primary)}.progress-meter-topline span:last-child,.progress-meter-caption{color:var(--text-secondary)}.progress-meter-caption{overflow:hidden;font-size:.82rem;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.progress-bar{width:100%;height:8px;overflow:hidden;background:#1e293bf2;border-radius:999px}.progress-fill{height:100%;background:linear-gradient(90deg,#22c55e,#38bdf8);border-radius:999px;transition:width .45s ease-out}.progress-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);flex:1;gap:1rem;min-height:0}.progress-layout.processing{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto}.progress-image-panel,.progress-detections-panel{min-height:0;background:#0f172aad;border:1px solid rgba(148,163,184,.14);border-radius:8px}.progress-image-panel{display:flex;padding:.75rem}.progress-image-frame{position:relative;flex:1;width:100%;min-height:0;overflow:hidden;background:#030712;border-radius:6px;box-shadow:inset 0 0 0 1px #ffffff0a}.progress-image{display:block;width:100%;height:100%;object-fit:contain}.progress-scan-sweep{position:absolute;inset:-25%;background:linear-gradient(115deg,transparent 30%,rgba(125,211,252,.04) 44%,rgba(56,189,248,.26) 50%,rgba(125,211,252,.04) 56%,transparent 70%);animation:progress-scan-sweep 2.4s linear infinite}.progress-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.progress-bbox{transition:fill .2s ease,stroke-width .2s ease,opacity .2s ease}.progress-bbox.highlighted{animation:progress-box-pulse 1.2s ease-in-out infinite}.progress-bbox-label{font-size:24px;font-weight:700;fill:#fff;text-shadow:0 1px 4px rgba(0,0,0,.8)}.progress-detections-panel{display:flex;flex-direction:column;gap:.8rem;padding:.85rem;overflow:hidden}.progress-detections-panel.compact{gap:.7rem}.progress-panel-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:baseline}.progress-panel-header h2{overflow:hidden;font-size:.98rem;font-weight:750;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap}.progress-panel-header p{overflow:hidden;font-size:.82rem;color:var(--text-secondary);text-align:right;text-overflow:ellipsis;white-space:nowrap}.progress-detection-list{display:flex;flex-direction:column;gap:.55rem;min-height:0;padding-right:.125rem;overflow-y:auto}.progress-detection-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.75rem;align-items:center;width:100%;padding:.75rem;color:inherit;text-align:left;cursor:pointer;background:#1e293ba3;border:1px solid rgba(148,163,184,.12);border-radius:8px;transition:transform .18s ease,border-color .18s ease,background .18s ease}.progress-detection-card:hover{background:#1e293bd1;border-color:#7dd3fc47;transform:translateY(-1px)}.progress-detection-card.active{background:#0ea5e929;border-color:#7dd3fc6b}.progress-detection-index{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:.9rem;font-weight:750;color:#e2e8f0;background:#0f172ae0;border:1px solid rgba(148,163,184,.2);border-radius:50%}.progress-detection-copy{display:flex;flex-direction:column;gap:.2rem;min-width:0}.progress-detection-title{overflow:hidden;font-size:.95rem;font-weight:750;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap}.progress-detection-subtitle{overflow:hidden;font-size:.82rem;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap}.progress-detection-status{display:inline-flex;align-items:center;justify-content:center;padding:.36rem .62rem;font-size:.72rem;font-weight:750;white-space:nowrap;border-radius:999px}.progress-detection-status.detected{color:#fde68a;background:#facc1524}.progress-detection-status.working{color:#7dd3fc;background:#38bdf829}.progress-detection-status.ready{color:#86efac;background:#22c55e29}.progress-empty-state{display:flex;flex:1;flex-direction:column;gap:.85rem;align-items:center;justify-content:center;min-height:0;padding:1rem;color:var(--text-secondary);text-align:center}.progress-empty-state.compact{flex:initial;flex-direction:row;justify-content:flex-start;min-height:auto;padding:0;text-align:left}.progress-empty-spinner{flex-shrink:0;width:2rem;height:2rem;border:3px solid rgba(56,189,248,.18);border-top-color:#38bdf8;border-radius:50%;animation:spin .9s linear infinite}@keyframes progress-scan-sweep{0%{transform:translate(-18%)}to{transform:translate(18%)}}@keyframes progress-box-pulse{0%,to{filter:drop-shadow(0 0 0 rgba(125,211,252,.2))}50%{filter:drop-shadow(0 0 14px rgba(125,211,252,.55))}}@media(max-width:960px){.progress-header,.progress-layout{grid-template-columns:minmax(0,1fr)}.progress-layout.processing{grid-template-rows:minmax(0,1fr) auto}.progress-shell{gap:.9rem}}@media(max-width:640px){.progress-container{padding:.5rem}.progress-shell{gap:.75rem;padding-top:calc(env(safe-area-inset-top,0px) + 3.4rem)}.progress-title{font-size:1.55rem}.progress-message{white-space:normal}.progress-meter{padding:.75rem}.progress-image-panel,.progress-detections-panel{padding:.65rem}.progress-panel-header{grid-template-columns:minmax(0,1fr);gap:.25rem}.progress-panel-header p{text-align:left}.progress-detection-card{grid-template-columns:auto minmax(0,1fr);align-items:start}.progress-detection-status{grid-column:2;justify-self:start}}@media(max-width:640px)and (orientation:portrait){.progress-layout{grid-template-rows:minmax(0,.9fr) minmax(0,1.1fr)}.progress-layout.processing{grid-template-rows:minmax(0,1fr) auto}.progress-detections-panel{min-height:14rem}.progress-detections-panel.compact{min-height:auto}}.book-card{display:block;padding:.875rem .875rem .875rem 1.125rem;background:var(--bg-card);border-radius:12px;border:2px solid transparent;border-left:4px solid;transition:border-color .3s,background .3s;animation:fadeIn .3s ease-out}.book-card.highlighted{border-color:var(--primary);background:#3b82f61a}.book-index{position:absolute;top:-8px;left:-8px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:.75rem;font-weight:700;color:#fff}.book-card{position:relative}.book-card.expandable{touch-action:manipulation}.book-summary{position:relative;min-width:0}.book-summary:after{content:"";display:block;clear:both}.book-summary.tappable{cursor:pointer}.book-summary.tappable:active{opacity:.94}.book-summary.with-collection-action{padding-right:3rem}.book-lead-media{float:left;width:84px;height:122px;margin:.125rem .875rem .5rem 0;border-radius:10px;overflow:hidden;background:linear-gradient(180deg,#0f172af5,#1e293be0);box-shadow:0 14px 28px #0f172a47,inset 0 0 0 1px #ffffff14;shape-outside:inset(0 round 10px);cursor:pointer;transition:transform .15s ease,opacity .15s ease,box-shadow .15s ease}.book-lead-media:hover{opacity:.92;transform:translateY(-1px);box-shadow:0 18px 30px #0f172a52,inset 0 0 0 1px #ffffff1a}.book-lead-media:active{opacity:.82;transform:translateY(0)}.book-thumbnail{background:linear-gradient(180deg,#3b82f62e,#0f172aeb),var(--bg-dark)}.book-cover{background:#0f172af5}.book-cover img,.book-thumbnail img{width:100%;height:100%;object-fit:cover}.thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:transparent;font-size:1.5rem}.book-info{min-width:0}.book-title{font-size:1rem;font-weight:600;color:var(--text-primary);line-height:1.3;margin:0;overflow-wrap:anywhere}.book-author{font-size:.875rem;color:var(--text-secondary);margin:.15rem 0 0;overflow-wrap:anywhere}.book-series-callout{display:inline-flex;align-items:center;margin:.375rem 0 0;padding:.26rem .6rem;border-radius:999px;background:#0ea5e929;color:#bae6fd;font-size:.74rem;font-weight:700;letter-spacing:.01em}.book-badges{margin-top:.375rem;line-height:1.95}.badge{display:inline-flex;align-items:center;padding:.25rem .5rem;margin:0 .375rem .375rem 0;background:#ffffff1a;border-radius:4px;font-size:.75rem;color:var(--text-secondary);white-space:nowrap}.badge-success{background:#22c55e33;color:var(--success)}.badge-warning{background:#f59e0b33;color:var(--warning)}.badge-error{background:#ef444433;color:var(--error)}.badge-muted{background:transparent;color:var(--text-muted)}.badge-rating{background:#fbbf2433;color:#fbbf24}.badge-series{background:#0ea5e92e;color:#7dd3fc}.rating-count{opacity:.7;font-size:.65rem}.no-metadata{display:flex;align-items:center;gap:.375rem;margin-top:.5rem;font-size:.75rem;color:var(--warning)}.warning-icon{font-size:.875rem}.book-abstract{font-size:.8rem;line-height:1.4;color:var(--text-secondary);margin:.375rem 0 0}.book-recommendation{display:inline-flex;align-items:center;margin:.45rem 0 0;padding:.28rem .55rem;border-radius:999px;background:#22c55e1f;color:#86efac;font-size:.72rem;font-weight:600;letter-spacing:.01em}.book-details-expanded{clear:both;margin-top:.625rem;padding-top:.5rem;border-top:1px solid rgba(255,255,255,.08)}.book-description{font-size:.875rem;line-height:1.5;color:var(--text-secondary);margin:0 0 .5rem}.book-metadata-grid{display:flex;flex-direction:column;gap:.25rem;margin-top:.5rem;padding:.5rem;background:#ffffff08;border-radius:6px}.metadata-row{display:flex;align-items:baseline;gap:.5rem}.metadata-label{font-size:.68rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;min-width:60px;flex-shrink:0}.metadata-value{font-size:.8rem;color:var(--text-secondary);font-family:ui-monospace,monospace;letter-spacing:-.02em}.expand-hint,.collapse-hint{display:inline-flex;align-items:center;gap:.2rem;font-size:.72rem;color:var(--text-muted);opacity:.6;margin-top:.3rem;font-weight:600;letter-spacing:.01em;text-transform:uppercase}.collapse-hint{justify-content:center;width:100%;margin-top:.5rem;padding-top:.375rem;padding-right:0;padding-bottom:0;padding-left:0;background:transparent;border-right:none;border-bottom:none;border-left:none;border-top:1px solid rgba(255,255,255,.05);cursor:pointer;text-align:center}.hint-chevron{width:.95rem;height:.95rem;flex-shrink:0}.book-actions{position:absolute;top:0;right:0;z-index:1}.add-shelf-button{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;background:linear-gradient(180deg,var(--primary),var(--primary-dark));border:1px solid rgba(255,255,255,.14);border-radius:999px;color:#fff;cursor:pointer;box-shadow:0 10px 18px #2563eb47;transition:transform .1s,opacity .15s,box-shadow .15s}.add-shelf-button:hover{opacity:.94;box-shadow:0 14px 24px #2563eb57}.add-shelf-button:active{transform:scale(.98)}.badge-in-collection{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;background:#22c55e29;border:1px solid rgba(34,197,94,.3);border-radius:999px;color:#22c55e;box-shadow:0 8px 18px #22c55e24}.book-categories{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.3rem}.badge-category{margin:0;padding:.16rem .42rem;background:#8b5cf61f;border:1px solid rgba(167,139,250,.18);color:#c4b5fd;font-size:.62rem;line-height:1.2}.badge-category-overflow{background:transparent;border-color:#94a3b838;color:var(--text-muted)}@media(max-width:768px){.book-lead-media{width:78px;height:112px;margin-right:.75rem}}@media(max-width:480px){.book-card{padding:.8rem .8rem .8rem .95rem;border-width:1px;border-left-width:3px;border-radius:10px}.book-index{top:-7px;left:-7px;width:22px;height:22px;font-size:.7rem}.book-lead-media{width:72px;height:104px;margin-right:.675rem;margin-bottom:.375rem}.book-title{font-size:1.0625rem;line-height:1.35}.book-author{font-size:.95rem}.book-badges{margin-top:.35rem}.badge{padding:.24rem .48rem;font-size:.78rem}.book-abstract{margin-top:.35rem;font-size:.875rem;line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.book-recommendation{font-size:.74rem}.badge-category{font-size:.68rem;padding:.2rem .42rem}.expand-hint,.collapse-hint{font-size:.72rem}.book-summary.with-collection-action{padding-right:2.6rem}.add-shelf-button,.badge-in-collection{width:1.85rem;height:1.85rem}}.results-container{position:fixed;inset:0;background:var(--bg-dark);display:flex;flex-direction:column;overflow:hidden}.results-header{display:flex;align-items:center;gap:.75rem;padding:.75rem .875rem;background:var(--bg-card);border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0;flex-wrap:wrap}.results-header .back-button{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;border-radius:8px;transition:background .2s}.results-header .back-button:hover{background:#ffffff1a}.results-header .back-button svg{width:24px;height:24px}.results-title{flex:1;min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;font-size:1rem;font-weight:600;color:var(--text-primary);line-height:1.25}.success-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:var(--success);border-radius:50%;font-size:.7rem;color:#fff}.filtered-note{font-size:.7rem;font-weight:400;color:var(--text-secondary);opacity:.7}.new-scan-button{padding:.45rem .875rem;background:var(--primary);border:none;border-radius:8px;color:#fff;font-size:.8125rem;font-weight:600;cursor:pointer;transition:background .2s}.new-scan-button:hover{background:var(--primary-dark)}.live-status-banner{position:absolute;top:.75rem;right:.75rem;z-index:5;display:inline-flex;align-items:center;gap:.75rem;max-width:min(22rem,calc(100% - 1.5rem));padding:.75rem .9rem;background:#020617c2;border:1px solid rgba(59,130,246,.28);border-radius:14px;box-shadow:0 12px 28px #0206174d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--text-secondary);font-size:.875rem;pointer-events:none;overflow:hidden;transition:gap .22s ease,max-width .22s ease,padding .22s ease,border-radius .22s ease,background .22s ease,box-shadow .22s ease}.live-status-banner.compact{gap:.55rem;max-width:calc(100% - 1.5rem);padding:.45rem .7rem;border-radius:999px;background:#020617e0;box-shadow:0 10px 24px #02061757}.live-status-spinner{width:14px;height:14px;border:2px solid rgba(59,130,246,.2);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}.live-status-copy{display:flex;flex-direction:column;gap:.22rem;min-width:0;max-width:14rem;overflow:hidden;transition:max-width .22s ease,opacity .18s ease}.live-status-banner.compact .live-status-copy{max-width:0;opacity:0}.live-status-message{color:var(--text-primary);font-weight:600}.live-status-detail{color:var(--text-secondary);font-size:.75rem}.live-status-counter{display:inline-flex;align-items:center;justify-content:center;min-width:2.9rem;padding:.28rem .55rem;border-radius:999px;background:#3b82f624;color:var(--text-primary);font-size:.75rem;font-weight:700;line-height:1;flex-shrink:0}.live-status-banner.compact .live-status-counter{min-width:auto;padding:0;background:transparent}.results-content{flex:1;min-height:0;display:flex;flex-direction:column;gap:.75rem;padding:.75rem;overflow:hidden}.image-section{background:var(--bg-card);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:.75rem;display:flex;flex-direction:column;gap:.625rem;flex-shrink:0;transition:padding .18s ease,border-radius .18s ease}.image-stage{width:100%;min-height:220px;height:min(46svh,25rem);display:flex;align-items:center;justify-content:center;transition:height .18s ease,min-height .18s ease}.image-wrapper{position:relative;width:100%;height:100%;border-radius:16px;overflow:hidden;background:radial-gradient(circle at top,rgba(59,130,246,.18),transparent 62%),#020617;box-shadow:inset 0 0 0 1px #ffffff0f,0 14px 34px #0f172a5c}.bookshelf-image{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:fill;border-radius:inherit}.bbox-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;touch-action:manipulation}.bbox-overlay g{touch-action:manipulation}.bbox-rect{fill:#3b82f633;stroke:var(--primary);stroke-width:3;cursor:pointer;pointer-events:all;transition:fill .2s,stroke-width .2s}.bbox-rect:hover,.bbox-rect.highlighted{fill:#3b82f666;stroke-width:5}.bbox-label{fill:#fff;font-size:24px;font-weight:700;pointer-events:none;text-shadow:0 1px 3px rgba(0,0,0,.8)}.bbox-rating-layer{position:absolute;inset:0;z-index:3;pointer-events:none}.bbox-rating-pill{position:absolute;transform:translate(-50%,.45rem);display:inline-flex;align-items:center;justify-content:center;max-width:min(7rem,42vw);padding:.32rem .52rem;border:1px solid color-mix(in srgb,var(--bbox-color, var(--primary)) 78%,white 22%);border-radius:999px;background:#020617d1;color:#f8fafc;box-shadow:0 8px 18px #02061757;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:.78rem;font-weight:800;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.highlight-dimmer{pointer-events:none}.dimmer-rect{transition:opacity .3s ease}.image-hint{font-size:.75rem;color:var(--text-muted);text-align:center}.books-section{flex:1;min-height:0;padding:.875rem;background:var(--bg-card);border:1px solid rgba(255,255,255,.08);border-radius:16px;display:flex;flex-direction:column;overflow:hidden}.section-heading{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.875rem}.section-title{font-size:1rem;font-weight:600;color:var(--text-secondary)}.section-note{font-size:.8rem;color:var(--text-muted);margin-bottom:.75rem}.book-list{display:flex;flex-direction:column;gap:.75rem;padding-bottom:.25rem;padding-right:.125rem;flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}.book-list>div{scroll-margin-top:4.5rem}@media(max-width:640px){.results-header{padding:.625rem .75rem}.results-title{font-size:1.02rem}.new-scan-button{margin-left:auto}.live-status-banner{top:.5rem;right:.5rem;max-width:min(18rem,calc(100% - 1rem));padding:.65rem .75rem}.live-status-banner.compact{max-width:calc(100% - 1rem);padding:.42rem .65rem}}@media(max-width:640px)and (orientation:portrait){.results-container{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.results-header{position:sticky;top:0;z-index:20}.results-content{flex:none;min-height:auto;gap:.5rem;padding:.3rem;overflow:visible}.image-section{min-height:calc(100svh - 4.6rem);padding:.375rem;border-radius:14px;border-color:#ffffff0a}.image-stage{min-height:clamp(32rem,calc(100svh - 5.5rem),54rem);height:calc(100svh - 5.5rem)}.books-section{flex:none;min-height:auto;padding:.5rem;border-radius:14px;border-color:#ffffff0a;overflow:visible}.book-list{flex:none;min-height:auto;overflow:visible;padding-bottom:1rem}}@media(orientation:landscape)and (min-width:768px){.results-header{padding:.625rem .875rem}.results-content{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);align-items:stretch}.image-section,.books-section{min-height:0}.image-section{padding:.875rem}.image-stage{flex:1;min-height:0;height:auto}}.app{height:100%;width:100%}.error-view{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg-dark);padding:2rem}.error-content{display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center;max-width:320px}.error-icon{width:64px;height:64px;display:flex;align-items:center;justify-content:center;background:var(--error);border-radius:50%;font-size:2rem;font-weight:700;color:#fff}.error-content h2{font-size:1.25rem;font-weight:600;color:var(--text-primary)}.error-content p{font-size:.875rem;color:var(--text-secondary);line-height:1.5}.retry-button{margin-top:.5rem;padding:.75rem 1.5rem;background:var(--primary);border:none;border-radius:8px;color:#fff;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s}.retry-button:hover{background:var(--primary-dark)}*{margin:0;padding:0;box-sizing:border-box}:root{--primary: #3b82f6;--primary-dark: #2563eb;--success: #22c55e;--warning: #f59e0b;--error: #ef4444;--bg-dark: #0f172a;--bg-card: #1e293b;--text-primary: #f8fafc;--text-secondary: #94a3b8;--text-muted: #64748b}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg-dark);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none}.safe-area-top{padding-top:env(safe-area-inset-top,0)}.safe-area-bottom{padding-bottom:env(safe-area-inset-bottom,0)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.animate-spin{animation:spin 1s linear infinite}.animate-pulse{animation:pulse 2s ease-in-out infinite}.animate-fadeIn{animation:fadeIn .3s ease-out}.animate-scaleIn{animation:scaleIn .2s ease-out}.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}
