:root{--ink: #2C2436;--parchment: #F6F3FC;--surface: #FFFFFF;--border: #E1D9F0;--primary: #B9A6E8;--primary-dark: #4A3B6B;--primary-on: #3B2E52;--accent-bg: #FBEADC;--accent-text: #8A5A33;--success: #A9CDB0;--success-bg: #E9F3EA;--success-text: #2F4A34;--danger: #D98CA0;--danger-on: #4B1F2A;--danger-bg: #FBE7EC;--danger-text: #A84867;--font-display: "Fraunces", Georgia, serif;--font-body: "Inter", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--parchment);color:var(--ink);font-family:var(--font-body);-webkit-tap-highlight-color:transparent}button,input{font-family:inherit}:focus-visible{outline:3px solid var(--primary);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}.app-shell{display:flex;flex-direction:column;height:100%;max-width:640px;margin:0 auto}.app-header{display:flex;align-items:baseline;justify-content:space-between;padding:1rem 1.25rem .75rem;border-bottom:1px solid var(--border)}.app-title{font-family:var(--font-display);font-weight:600;font-size:1.3rem;color:var(--primary-dark)}.link-button{background:none;border:none;color:var(--ink);opacity:.6;font-size:.85rem;cursor:pointer;padding:.25rem}.link-button:hover{opacity:1}.app-main{flex:1;overflow-y:auto;padding:1rem 1.25rem 1.5rem}.tab-bar{display:flex;border-top:1px solid var(--border);background:var(--surface)}.tab{flex:1;text-align:center;padding:.85rem 0;text-decoration:none;color:var(--ink);opacity:.55;font-size:.95rem}.tab.active{opacity:1;color:var(--primary-dark);font-weight:600;border-top:2px solid var(--primary);margin-top:-1px}.login-page{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem;gap:.5rem}.login-page h1{font-family:var(--font-display);color:var(--primary-dark);margin-bottom:0}.login-page p{max-width:32ch;opacity:.75;margin-top:0;margin-bottom:1.5rem}.primary,.secondary{border-radius:8px;padding:.7rem 1.2rem;font-size:.95rem;font-weight:600;border:1px solid transparent;cursor:pointer}.primary{background:var(--primary);color:var(--primary-on)}.primary:disabled{background:#dcd3f0;cursor:default}.secondary{background:transparent;border-color:var(--border);color:var(--ink)}.danger{background:var(--danger);color:var(--danger-on)}.danger:disabled{background:#f2d6de;cursor:default}.link-button.danger-link{color:var(--danger-text);opacity:.8;display:block;margin:.9rem auto 0;text-align:center;font-size:.82rem}.link-button.danger-link:hover{opacity:1}.scan-page{display:flex;flex-direction:column;gap:.85rem;min-height:calc(100% - 1px)}.scanner-viewport{width:100%;border-radius:12px;overflow:hidden;border:1px solid var(--border);background:#000;min-height:260px}.scanner-error{color:var(--danger-text)}.scan-hint{text-align:center;opacity:.65;font-size:.9rem}.scan-hint.centered{margin-top:3rem}.scan-status{text-align:center;font-size:.9rem;opacity:.7;margin:0}.scan-status-error{color:var(--danger-text);opacity:1}.debug-panel{margin-top:auto;border-top:1px solid var(--border);padding-top:.5rem}.debug-panel-toggle{width:100%;text-align:left;background:none;border:none;color:var(--ink);opacity:.55;font-size:.8rem;padding:.35rem 0;cursor:pointer}.debug-panel-toggle:hover{opacity:.85}.debug-panel-body{max-height:40vh;overflow-y:auto;font-size:.75rem}.debug-empty{opacity:.5}.debug-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.debug-entry{border:1px solid var(--border);border-radius:6px;padding:.4rem .55rem;background:var(--surface)}.debug-entry-head{display:flex;gap:.5rem;align-items:baseline;font-family:monospace}.debug-isbn{font-weight:600}.debug-time{margin-left:auto;opacity:.5}.debug-outcome{text-transform:lowercase;padding:.05rem .4rem;border-radius:999px;font-size:.68rem}.debug-outcome-hit{background:var(--success-bg);color:var(--success-text)}.debug-outcome-miss{background:var(--accent-bg);color:var(--accent-text)}.debug-outcome-duplicate{background:#ededed;color:var(--ink);opacity:.75}.debug-outcome-error{background:var(--danger-bg);color:var(--danger-text)}.debug-detail{margin:.35rem 0 0;white-space:pre-wrap;word-break:break-word;font-size:.72rem;opacity:.8}.toast{position:fixed;bottom:4.5rem;left:50%;transform:translate(-50%);background:var(--success);color:var(--success-text);padding:.6rem 1.1rem;border-radius:999px;font-size:.85rem;z-index:10;max-width:85vw;text-align:center}.correction-form{display:flex;flex-direction:column;gap:.35rem}.correction-form label{font-size:.8rem;opacity:.7;margin-top:.5rem}.correction-form input{padding:.6rem .7rem;border-radius:8px;border:1px solid var(--border);background:var(--surface);font-size:1rem}.correction-form input:disabled{opacity:.6}.correction-cover{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem}.correction-cover img{width:88px;height:128px;object-fit:cover;border-radius:6px;border:1px solid var(--border)}.photo-button{border:1px dashed var(--border);border-radius:8px;padding:.6rem .9rem;font-size:.85rem;cursor:pointer;color:var(--primary-dark)}.form-error{color:var(--danger-text);font-size:.85rem}.form-actions{display:flex;gap:.75rem;margin-top:1rem}.form-actions .primary,.form-actions .secondary{flex:1}.empty-state{text-align:center;opacity:.6;margin-top:3rem}.library-group{margin-bottom:1.5rem}.library-group-heading{font-family:var(--font-display);font-size:1.1rem;color:var(--primary-dark);border-bottom:1px solid var(--border);padding-bottom:.35rem;margin-bottom:.6rem}.book-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.9rem}.book-card-item{list-style:none}.book-card{display:flex;flex-direction:column;gap:.4rem;width:100%;background:none;border:none;padding:0;text-align:left;cursor:pointer;color:inherit;font-family:inherit}.book-cover{aspect-ratio:2 / 3;border-radius:6px;overflow:hidden;border:1px solid var(--border);background:var(--surface)}.book-cover img{width:100%;height:100%;object-fit:cover;display:block}.book-cover-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:1.8rem;color:var(--primary-dark);background:var(--primary)}.book-cover-placeholder.large{width:88px;height:128px;border-radius:6px;font-size:1.6rem}.book-title{font-size:.88rem;font-weight:600;margin:0;line-height:1.3}.book-volume{font-weight:400;opacity:.7}.book-author{font-size:.78rem;opacity:.65;margin:0}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#23232380;display:flex;align-items:flex-end;justify-content:center;z-index:20;padding:0}.modal-box{background:var(--parchment);width:100%;max-width:640px;max-height:88vh;overflow-y:auto;border-radius:16px 16px 0 0;padding:1.25rem 1.25rem 1.5rem}.modal-heading{font-family:var(--font-display);color:var(--primary-dark);margin:0 0 .75rem;font-size:1.15rem}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#23232399;display:flex;align-items:center;justify-content:center;z-index:30;padding:1.5rem}.dialog-box{background:var(--surface);border-radius:12px;padding:1.25rem;max-width:380px}.dialog-box h2{font-family:var(--font-display);font-size:1.05rem;margin:0 0 .5rem;color:var(--primary-dark)}.dialog-box p{font-size:.9rem;margin:0 0 1rem;opacity:.85}.dialog-actions{display:flex;gap:.6rem}.dialog-actions .secondary,.dialog-actions .danger{flex:1}
