:root{color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;--background:#120e0d;--surface:#211b19;--surface-raised:#2d2420;--wood:#39251b;--wood-edge:#795335;--wine:#702c43;--wine-light:#a24866;--forest:#293e34;--brass:#c8a575;--ivory:#f3e9d8;--muted:#bcb0a1;--sage:#a7c3ad;--danger:#efacaa;--line:#6f59423f;--display:Georgia,"Times New Roman",serif;--radius:14px;color:var(--ivory);background:var(--background)}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 5% 8%,#55351f33,transparent 45%),var(--background);min-width:0}button,input,textarea,select{font:inherit}button{cursor:pointer;touch-action:manipulation;min-height:46px;border:1px solid transparent;border-radius:var(--radius);padding:12px 16px;font-weight:550;transition:background .16s,transform .16s;color:var(--ivory);background:var(--surface-raised)}button:active{transform:scale(.98)}button:disabled{cursor:wait;opacity:.55}a{color:var(--brass)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--brass);outline-offset:4px}svg{width:24px;height:24px;flex-shrink:0}input,select,textarea{width:100%;padding:13px 14px;border:1px solid #786650;background:#191513;color:var(--ivory);border-radius:12px;font-size:16px;min-height:48px}input::placeholder,textarea::placeholder{color:#afa293}input[type=file]{font-size:14px;padding:10px;max-width:100%}input::file-selector-button{border:1px solid #8b7357;border-radius:7px;background:var(--surface-raised);color:var(--ivory);padding:10px;margin-right:8px}textarea{resize:vertical;min-height:135px;line-height:1.7;background:repeating-linear-gradient(transparent 0 26px,#ab947518 26px 27px),#191513}label{display:block;font-size:14px;font-weight:550;margin:20px 0 8px;color:var(--muted)}.primary{background:linear-gradient(140deg,#80384f,var(--wine));color:var(--ivory);border:1px solid #ac5b70;box-shadow:0 3px 15px #0003}.secondary{background:var(--surface);border:1px solid #74634e;color:var(--ivory)}.danger{background:#432227;color:var(--danger);border:1px solid #95646666}.hidden{display:none!important}h1,h2,h3{font-family:var(--display);font-weight:400}h2{font-size:28px;margin:0}h3{font-size:27px;line-height:1.25;overflow-wrap:anywhere}.eyebrow{font-size:10px;letter-spacing:.17em;text-transform:uppercase;color:var(--brass);margin:0 0 8px;line-height:1.5}header{padding:calc(22px + env(safe-area-inset-top)) 20px 16px;border-bottom:1px solid var(--line);background:radial-gradient(ellipse at 50% 0,#86502b25,transparent 75%),#19120e}header .inner{max-width:1020px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:15px}.identity h1{font-size:30px;line-height:1.05;letter-spacing:.035em;margin:0;text-transform:uppercase}.identity h1 span{display:block;font-size:38px;letter-spacing:-.025em;text-transform:none;font-style:italic}.identity .ornament{width:150px;height:20px;display:block;color:var(--brass);margin-top:10px}.header-add{display:flex;align-items:center;gap:6px;color:var(--brass);background:#22180f;border-color:#6c5037}.home-header .inner{position:relative;justify-content:center}.home-header .identity{text-align:center}.home-header .identity .ornament{margin:12px auto 0;width:210px}.home-header .identity h1{font-size:34px}.home-header .identity h1 span{font-size:48px}.home-header .eyebrow{font-size:9px}.home-header .header-add{position:absolute;right:0;top:0;width:46px;padding:10px;justify-content:center}.home-header .header-add span{display:none}main{max-width:1060px;margin:auto;padding:22px 18px calc(110px + env(safe-area-inset-bottom))}.home-intro{padding:0 0 32px}.library-note{font:italic 16px var(--display);color:var(--muted);text-align:center;margin:0 0 22px}.collection-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}.collection-stats button{display:flex;flex-direction:column;align-items:center;gap:7px;padding:16px 8px;border:1px solid #67513b;background:radial-gradient(ellipse at 50% 100%,#73503022,transparent),linear-gradient(130deg,#29221c,#191513);box-shadow:0 4px 12px #0003}.collection-stats svg{color:var(--brass);height:25px}.collection-stats button:nth-child(2) svg{color:var(--sage)}.collection-stats span{font-size:12px;color:var(--ivory)}.collection-stats b{font:24px var(--display);color:var(--brass)}.home-scan{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;font-family:var(--display);font-size:21px;min-height:55px;border-radius:28px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 2px 18px}.section-heading h2{font-size:29px}.section-heading .eyebrow{font-size:9px}.count{color:var(--muted);font-size:12px;white-space:nowrap}.toolbar{display:flex;margin:0 0 14px}.search-wrap{position:relative;width:100%}.search-wrap input{padding-left:46px;background:#201b17;border:1px solid #8a7158;border-radius:25px}.search-icon{position:absolute;left:15px;top:14px;color:var(--muted);pointer-events:none}.search-icon svg{width:20px;height:20px}.status-filters{display:flex;gap:6px;margin:0 0 22px}.status-filters button{min-height:44px;padding:9px 12px;font-size:12px;background:transparent;color:var(--muted);border:1px solid var(--line);border-radius:22px;flex:1}.status-filters button[aria-pressed=true]{background:var(--wine);color:var(--ivory);border-color:#a05c6b}.bookcase{border:7px solid #342319;border-radius:6px;background:#21170f;box-shadow:0 18px 30px #0005,inset 0 0 20px #0008;overflow:hidden}.shelf{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:end;gap:26px;padding:30px 26px 66px;min-height:280px;background:radial-gradient(ellipse at 50% 0,#bf8b4930,transparent 60%),repeating-linear-gradient(90deg,transparent 0 4px,#0001 5px,#ffffff03 7px,transparent 9px),linear-gradient(#18110e,#352318);border-bottom:1px solid #000}.shelf:after{content:"";position:absolute;left:0;right:0;bottom:52px;height:15px;background:repeating-linear-gradient(2deg,transparent 0 3px,#25140855 4px,transparent 5px),linear-gradient(#ae7a44,#674228 40%,#392115);border-top:2px solid #bd915750;box-shadow:0 5px 12px #000b,0 -2px 5px #b47b4020;pointer-events:none}.book{position:relative;display:block;padding:0;background:transparent;color:var(--ivory);border:0;border-radius:3px;min-width:0;width:100%;transition:transform .16s;z-index:1}.book:hover{transform:translateY(-4px)}.cover{position:relative;aspect-ratio:2/3;width:100%;border-radius:2px 5px 5px 2px;box-shadow:5px 4px 9px #0009;overflow:hidden;display:flex;align-items:center;justify-content:center;border-left:3px solid #ffffff12;background:#30251e}.cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;background:#17110f}.fallback[hidden]{display:none}.fallback{display:flex;flex-direction:column;justify-content:space-between;gap:12px;width:calc(100% - 16px);height:calc(100% - 18px);padding:22px 7px 17px;text-align:center;border:1px solid #c5a375a3;color:var(--ivory);font-family:var(--display);background:repeating-linear-gradient(45deg,transparent 0 2px,#0001 3px,transparent 4px);overflow:hidden}.fallback:before{content:"❧";color:var(--brass);font-size:23px;line-height:1}.fallback b{font-weight:400;font-size:18px;line-height:1.25;overflow-wrap:anywhere}.fallback small{font-family:inherit;font-size:12px;line-height:1.3;overflow-wrap:anywhere}.book-caption{position:absolute;top:calc(100% + 20px);left:-5px;right:-5px;font-size:12px;font-weight:400;line-height:1.35;text-align:left;color:#dfcdb8;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.shelf-status{position:absolute;right:7px;top:8px;z-index:1;border-radius:14px;font-size:10px;box-shadow:0 1px 6px #0006}.shelf-status:empty{display:none}.shelf-status.reading{background:#20352de8;color:#d7ebd8;padding:5px 8px;border:1px solid #7a9b80}.shelf-status.finished{background:#273b2fe8;color:#dae6c8;width:25px;height:25px;padding:5px}.empty{margin:auto;text-align:center;color:var(--ivory);padding:55px 20px;max-width:430px;min-height:320px}.empty>svg{color:var(--brass);width:40px;height:40px;margin-bottom:20px}.empty h2{font-size:28px;margin:0 0 14px}.empty p{line-height:1.65;color:var(--muted);font-size:15px;margin:0 0 24px}.footnote{color:var(--muted);font-size:12px;line-height:1.6;margin:23px 2px 0}.build-version{margin-left:6px;white-space:nowrap}.install{display:flex;gap:12px;align-items:center;margin-top:18px;border-top:1px solid var(--line);padding-top:16px}.install p{flex:1;margin:0;font-size:12px;line-height:1.7;color:var(--muted)}.offline{background:#373024;color:#eee0c8;padding:12px 18px;font-size:13px;line-height:1.5;border-bottom:1px solid #7c6644}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:3;display:flex;justify-content:center;gap:4px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:#17120ff5;border-top:1px solid #84613f;box-shadow:0 -5px 24px #0005}.bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:53px;width:90px;border-radius:12px;background:transparent;color:var(--muted);font-size:10px}.bottom-nav button[aria-current]{color:var(--brass);background:#3c2b1b66}.bottom-nav .nav-add{color:var(--ivory);background:var(--wine);margin:0 5px;width:72px;border:1px solid #ab6273}.bottom-nav svg{width:22px;height:22px}dialog{border:1px solid #806345;padding:0;background:var(--background);color:var(--ivory);width:min(94vw,580px);max-height:92vh;max-height:92dvh;border-radius:20px;box-shadow:0 20px 90px #000a;overflow:auto}dialog::backdrop{background:#090606d9}.panel-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:17px 22px;background:#18120f;border-bottom:1px solid var(--line)}.panel-head h2{margin:0;font-size:23px}.close{background:transparent;color:var(--muted);font-size:27px;width:46px;padding:0;flex-shrink:0;border:1px solid var(--line)}.panel-body{padding:24px 22px 32px}.intro-copy{font:italic 18px/1.6 var(--display);color:var(--muted);text-align:center;margin:0 0 25px}.tabs{display:flex;gap:8px;margin:22px 0}.tabs button{flex:1;background:var(--surface);padding:10px 7px;font-size:14px;border:1px solid var(--line)}.tabs button[aria-pressed=true]{background:var(--forest);border-color:#749481;color:var(--ivory)}.scan-button{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;font-size:18px;min-height:60px}.inline{display:flex;gap:8px;align-items:end}.inline input{flex:1;min-width:0}.inline button{flex-shrink:0;padding:12px}.message{padding:14px 15px;margin:16px 0;background:#353022;color:#e6d5b9;font-size:14px;line-height:1.6;border:1px solid #92714766;border-radius:12px;overflow-wrap:anywhere}.message.error{background:#3a1d20;color:#f6c5be;border-color:#ad686666}.message.duplicate{background:#3b3020;color:#f3d6a2;font-weight:650}.small{font-size:13px;line-height:1.65;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.form-grid .wide{grid-column:1/-1}.form-intro{color:var(--muted);font-size:13px;border-top:1px solid var(--line);padding-top:20px;margin-top:25px}.actions{display:flex;gap:10px;margin-top:24px}.actions button{flex:1;line-height:1.3}.detail-top{display:flex;flex-direction:column;align-items:center;text-align:center;gap:24px;margin-bottom:28px}.detail-cover{width:180px;flex-shrink:0}.detail-top h3{margin:0 0 12px;font-size:29px}.book-author{font:18px/1.5 var(--display);color:var(--muted);margin:6px 0}.series{font-size:13px;line-height:1.5;color:var(--brass)}.edition-summary{font-size:13px;line-height:1.7;color:var(--muted);overflow-wrap:anywhere}.found-hero{display:flex;gap:19px;align-items:center}.found-hero h3{font-size:25px;margin:0 0 8px}.found-hero .eyebrow{font-size:9px}.found-hero .book-author{font-size:16px}.editor-cover{width:118px;flex-shrink:0;margin:0 auto 18px}.found-hero .editor-cover{margin:0}.rating-control{display:flex;flex-direction:column;gap:10px}.rating-stars{display:flex;gap:7px}.rating-stars button{flex:1;padding:0;font-size:30px;min-height:47px;color:#aaa092;background:var(--surface);border:1px solid var(--line)}.rating-stars button.selected{color:#e2b76c;background:#4a35243b}.rating-control select{font-size:14px;min-height:44px}details summary{cursor:pointer;min-height:44px;padding:13px 0;line-height:1.4;color:var(--brass);font-size:13px}details p{line-height:1.65}.book-metadata{margin-top:25px;border-block:1px solid var(--line)}dl{margin:0 0 20px}dl div{display:grid;grid-template-columns:80px 1fr;gap:16px;margin:13px 0;font-size:13px;line-height:1.5}dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere}.provenance{margin-top:16px}.camera{background:#171210;border-radius:14px;position:relative;overflow:hidden;aspect-ratio:3/4}.camera video{display:block;width:100%;height:100%;object-fit:cover}.scan-guide{position:absolute;inset:34% 6%;border:3px solid #da7994;border-radius:9px;pointer-events:none;box-shadow:0 0 0 200px #0004}.scan-guide span{position:absolute;top:calc(100% + 20px);left:0;right:0;font-size:12px;text-align:center;line-height:1.4;color:#fff;text-shadow:0 1px 3px black}dialog[data-screen=scanner]{background:#0d0a09}.result-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}.result{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);padding:12px}.result img{width:50px;height:75px;object-fit:contain;flex-shrink:0}.result span{min-width:0}.result b{display:block;font:18px/1.35 var(--display);overflow-wrap:anywhere}.result small{display:block;font-size:13px;font-weight:400;line-height:1.5;margin-top:6px;color:var(--muted)}.loading{padding:60px 20px;text-align:center;font:22px var(--display)}#toast{position:fixed;bottom:calc(95px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:var(--forest);color:var(--ivory);border:1px solid #96b89c;max-width:90vw;width:max-content;padding:14px 20px;border-radius:14px;z-index:5;box-shadow:0 6px 25px #0008;display:none;font-size:14px}#toast.visible{display:block}.warning-text{color:var(--danger)}@media(max-width:650px){header{padding-left:18px;padding-right:18px}main{padding-left:14px;padding-right:14px}.shelf{grid-template-columns:repeat(2,minmax(0,1fr));gap:23px;padding:25px 18px 66px}.bookcase{border-width:6px}.identity h1{font-size:22px}.identity h1 span{font-size:30px}.header-add{padding:11px;font-size:12px}.home-header .header-add{right:-7px;top:-8px}.home-header .identity h1{font-size:28px}.home-header .identity h1 span{font-size:42px}.panel-body{padding:22px 18px 30px}.panel-head{padding:14px 18px}.form-grid{gap:0 10px}dialog{width:100%;height:100%;max-width:none;max-height:100%;max-height:100dvh;border:0;border-radius:0;margin:0}.panel-head{padding-top:calc(12px + env(safe-area-inset-top))}.panel-body{padding-bottom:calc(30px + env(safe-area-inset-bottom))}.found-hero{gap:16px}.found-hero h3{font-size:23px}.editor-cover{width:105px}.detail-cover{width:174px}.shelf-status{font-size:9px}.status-filters button{font-size:11px}.collection-stats{gap:8px}}@media(min-width:651px)and (max-width:1000px){.shelf{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:1001px){.home-intro{max-width:600px;margin:auto}.home-header .identity h1 span{font-size:54px}.home-header .header-add{right:15px;top:30px}.home-header .header-add span{display:inline}.home-header .header-add{width:auto}.camera{aspect-ratio:4/3}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}.found-add{width:100%;margin-top:24px;min-height:54px;font-family:var(--display);font-size:19px;border-radius:28px}.fallback{display:grid;grid-template-rows:18px minmax(0,1fr) 32px;padding:10px 5px;gap:8px}.fallback:before{font-size:18px}.fallback b{align-self:center;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}.fallback small{align-self:end;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:11px}.long-title .fallback b{font-size:14px;line-height:1.2}.fallback b{max-height:100%}.book .fallback b{font-size:14px;line-height:1.2}.book .fallback{grid-template-rows:minmax(0,1fr) 32px;gap:8px}.book .fallback:before{display:none}#library-data{display:block;margin:1rem auto}#backup-file{overflow-wrap:anywhere}#backup-file .secondary,.recovery-choice{display:block;margin:.75rem 0;width:100%}.backup-download{text-align:center;text-decoration:none;padding:14px;border-radius:8px}.panel-body h3{margin-top:1.5rem}
