.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}.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;background:radial-gradient(circle at top,rgba(56,189,248,.15),transparent 38%),linear-gradient(180deg,#0f172afa,#020617);display:flex;justify-content:center;padding:1rem;overflow:hidden}.progress-container .back-button{position:absolute;top:calc(env(safe-area-inset-top,0px) + 1rem);left:1rem;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#0f172a9e;border:1px solid rgba(148,163,184,.2);border-radius:50%;color:#fff;cursor:pointer;transition:background .2s,border-color .2s;z-index:2}.progress-container .back-button:hover{background:#1e293be0;border-color:#94a3b866}.progress-container .back-button svg{width:24px;height:24px}.progress-shell{width:min(100%,1180px);height:100%;display:flex;flex-direction:column;gap:1rem;padding-top:calc(env(safe-area-inset-top,0px) + 3.75rem);padding-bottom:calc(env(safe-area-inset-bottom,0px) + .25rem);min-height:0}.progress-header{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:1rem;align-items:start}.progress-heading{display:flex;align-items:flex-start;gap:1rem;min-width:0}.progress-icon{width:64px;height:64px;padding:1rem;border-radius:20px;color:#bae6fd;background:#0ea5e929;border:1px solid rgba(125,211,252,.2);flex-shrink:0}.progress-icon svg{width:100%;height:100%}.progress-copy{display:flex;flex-direction:column;gap:.45rem;min-width:0}.progress-title{font-size:clamp(1.6rem,2vw,2rem);font-weight:700;color:var(--text-primary);line-height:1.05}.progress-subtitle{font-size:.98rem;color:var(--text-secondary);line-height:1.5}.status-box{display:flex;flex-direction:column;gap:.85rem;padding:1rem 1.125rem;background:#0f172aad;border:1px solid rgba(59,130,246,.28);border-radius:18px;min-width:0;box-shadow:0 18px 45px #02061747}.status-spinner{display:flex;align-items:center;justify-content:flex-start}.spinner{width:24px;height:24px;border:3px solid rgba(59,130,246,.2);border-top-color:var(--primary);border-radius:50%;animation:spin .9s linear infinite}.status-message{font-size:1rem;font-weight:600;color:var(--text-primary);line-height:1.45}.status-pills{display:flex;flex-wrap:wrap;gap:.55rem}.status-pill{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .85rem;border-radius:999px;font-size:.82rem;font-weight:600}.status-pill.success{background:#22c55e24;color:#86efac}.status-pill.ready{background:#38bdf824;color:#7dd3fc}.books-icon{font-size:1rem}.step-indicators{display:flex;align-items:center;justify-content:center;gap:0;padding:.25rem 0}.step-item{display:flex;align-items:center}.step-circle{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#1e293be6;border:2px solid var(--text-muted);border-radius:50%;color:var(--text-muted);font-size:.78rem;font-weight:700;transition:all .3s}.step-circle.active{background:var(--primary);border-color:var(--primary);color:#fff;animation:pulse 2s ease-in-out infinite}.step-circle.completed{background:var(--success);border-color:var(--success);color:#fff}.step-circle svg{width:14px;height:14px}.step-line{width:36px;height:2px;background:#64748b99;transition:background .3s}.step-line.completed{background:var(--success)}.progress-layout{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:1rem}.progress-image-panel,.progress-detections-panel{min-height:0;background:#0f172ac2;border:1px solid rgba(148,163,184,.14);border-radius:22px;box-shadow:0 22px 54px #0206174d}.progress-image-panel{display:flex;padding:1rem;min-height:0}.progress-image-frame{position:relative;flex:1;min-height:0;width:100%;border-radius:18px;overflow:hidden;background:radial-gradient(circle at top,rgba(56,189,248,.14),transparent 48%),#020617;box-shadow:inset 0 0 0 1px #ffffff0d}.progress-image{width:100%;height:100%;object-fit:contain;display:block}.progress-scan-sweep{position:absolute;inset:-25%;background:linear-gradient(115deg,transparent 30%,rgba(125,211,252,.05) 44%,rgba(56,189,248,.32) 50%,rgba(125,211,252,.05) 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{fill:#fff;font-size:24px;font-weight:700;text-shadow:0 1px 4px rgba(0,0,0,.8)}.progress-image-caption{position:absolute;right:.9rem;bottom:.9rem;display:flex;flex-direction:column;gap:.2rem;padding:.7rem .85rem;max-width:min(80%,24rem);background:#020617c7;border:1px solid rgba(148,163,184,.18);border-radius:14px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.progress-image-caption-label{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#7dd3fc}.progress-image-caption-detail{font-size:.9rem;font-weight:600;color:var(--text-primary)}.progress-detections-panel{display:flex;flex-direction:column;padding:1rem;overflow:hidden}.progress-panel-header{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.9rem}.progress-panel-header h2{font-size:1rem;font-weight:700;color:var(--text-primary)}.progress-panel-header p{font-size:.9rem;color:var(--text-secondary);line-height:1.45}.progress-detection-list{display:flex;flex-direction:column;gap:.7rem;overflow-y:auto;padding-right:.125rem;min-height:0}.progress-detection-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.85rem;width:100%;padding:.9rem 1rem;background:#1e293bb8;border:1px solid rgba(148,163,184,.12);border-radius:18px;color:inherit;text-align:left;cursor:pointer;transition:transform .18s ease,border-color .18s ease,background .18s ease}.progress-detection-card:hover{transform:translateY(-1px);border-color:#7dd3fc47}.progress-detection-card.active{background:#0ea5e929;border-color:#7dd3fc6b}.progress-detection-index{width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#0f172ae0;border:1px solid rgba(148,163,184,.2);color:#e2e8f0;font-size:.9rem;font-weight:700;flex-shrink:0}.progress-detection-copy{display:flex;flex-direction:column;gap:.2rem;min-width:0}.progress-detection-title{font-size:.98rem;font-weight:700;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.progress-detection-subtitle{font-size:.84rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.progress-detection-status{display:inline-flex;align-items:center;justify-content:center;padding:.42rem .7rem;border-radius:999px;font-size:.74rem;font-weight:700;white-space:nowrap}.progress-detection-status.detected{background:#facc1524;color:#fde68a}.progress-detection-status.working{background:#38bdf829;color:#7dd3fc}.progress-detection-status.ready{background:#22c55e29;color:#86efac}.progress-empty-state{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.85rem;color:var(--text-secondary);text-align:center;padding:1rem}.progress-empty-spinner{width:2.25rem;height:2.25rem;border:3px solid rgba(56,189,248,.18);border-top-color:#38bdf8;border-radius:50%;animation:spin .9s linear infinite}.progress-bar-container{width:100%}.progress-bar{width:100%;height:10px;background:#1e293bf2;border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#0ea5e9,#38bdf8);border-radius:999px;transition:width .45s ease-out}.progress-text{margin-top:.55rem;font-size:.875rem;color:var(--text-muted);text-align:center}@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-shell{gap:.9rem}}@media(max-width:640px){.progress-container{padding:.5rem}.progress-shell{padding-top:calc(env(safe-area-inset-top,0px) + 3.4rem);gap:.75rem}.progress-heading{gap:.75rem}.progress-icon{width:56px;height:56px;border-radius:16px}.progress-title{font-size:1.45rem}.progress-subtitle{font-size:.92rem}.progress-image-panel,.progress-detections-panel{border-radius:18px}.progress-image-panel,.progress-detections-panel,.status-box{padding:.85rem}.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-image-panel{min-height:0}.progress-detections-panel{min-height:14rem}.progress-image-caption{left:.75rem;right:.75rem;bottom:.75rem;max-width:none}}.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{--results-image-collapse: 0;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{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem 1rem;background:#3b82f61f;border-bottom:1px solid rgba(59,130,246,.2);color:var(--text-secondary);font-size:.875rem;flex-shrink:0}.live-status-spinner{width:14px;height:14px;margin-top:.15rem;border:2px solid rgba(59,130,246,.2);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}.live-status-copy{display:flex;flex-direction:column;gap:.45rem;min-width:0}.live-status-message{color:var(--text-primary);font-weight:600}.live-status-meta{display:flex;flex-wrap:wrap;gap:.375rem}.live-status-pill{padding:.2rem .45rem;border-radius:999px;background:#3b82f624;color:var(--text-muted);font-size:.75rem}.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;width:100%;height:100%;object-fit:contain;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)}.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}@media(max-width:640px){.results-header{padding:.625rem .75rem}.results-title{font-size:1.02rem}.new-scan-button{margin-left:auto}}@media(max-width:640px)and (orientation:portrait){.results-container{--results-portrait-image-expanded-height: min(60svh, 32rem);--results-portrait-image-collapsed-height: 6.5rem;--results-portrait-image-height-range: calc( var(--results-portrait-image-expanded-height) - var(--results-portrait-image-collapsed-height) );--results-portrait-image-current-height: clamp( var(--results-portrait-image-collapsed-height), calc( var(--results-portrait-image-expanded-height) - (var(--results-image-collapse) * var(--results-portrait-image-height-range)) ), var(--results-portrait-image-expanded-height) )}.results-content{gap:calc(.625rem - (var(--results-image-collapse) * .2rem));padding:.4rem}.image-section{padding:calc(.5rem - (var(--results-image-collapse) * .125rem));border-radius:calc(14px - (var(--results-image-collapse) * 1px));border-color:#ffffff0a}.image-stage{min-height:var(--results-portrait-image-current-height);height:var(--results-portrait-image-current-height)}.books-section{padding:.5rem;border-radius:14px;border-color:#ffffff0a}}@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}
