@import "https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css";*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}:root{--key:#2a2826;--key-light:#eeeceb;--key-mid:#a09a96;--text:#1a1614;--sub:#8a8380;--bg:#feffff;--card:#fff;--border:#e0dedd;--radius:16px;--shadow:0 4px 24px #2a28261a}body{background:var(--bg);color:var(--text);overflow-anchor:none;max-width:430px;min-height:100vh;margin:0 auto;font-family:Pretendard,sans-serif;position:relative;overflow-x:clip}body:before{content:"";height:env(safe-area-inset-top,0px);background:var(--bg);z-index:100;pointer-events:none;position:fixed;top:0;left:0;right:0}.screen{flex-direction:column;min-height:100vh;padding:0 0 100px;animation:.22s fadeIn;display:flex}.screen-fixed{background:var(--bg);overscroll-behavior-y:none;z-index:10;flex-direction:column;padding:0 0 100px;display:flex;position:fixed;inset:0;overflow-y:auto}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.topbar{padding:20px 20px 16px;padding-top:calc(env(safe-area-inset-top,0px) + 20px);justify-content:center;align-items:center;display:flex;position:relative}.logo{color:var(--key);letter-spacing:-.5px;font-size:22px;font-weight:800}.topbar-action{right:20px;top:calc(env(safe-area-inset-top,0px) + 14px);background:var(--key);cursor:pointer;color:#fff;border:none;border-radius:48% 52% 54% 46%/46% 54%;padding:10px;font-size:16px;line-height:1;transition:border-radius .3s;position:absolute}.topbar-back{left:20px;top:calc(env(safe-area-inset-top,0px) + 14px);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:8px;line-height:1;display:flex;position:absolute}.section-header{align-items:center;gap:8px;padding:20px 20px 12px;display:flex}.section-title{color:var(--text);font-size:15px;font-weight:700}.icon-btn{background:var(--key);cursor:pointer;color:#fff;border:none;border-radius:52% 48% 45% 55%/54% 46%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:18px;line-height:1;transition:transform .15s,box-shadow .15s;display:flex;box-shadow:0 2px 8px #2a282640}.icon-btn:hover{transform:scale(1.08)}.book-grid{grid-template-columns:repeat(3,1fr);gap:16px;padding:0 20px;display:grid}.book-item{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;flex-direction:column;align-items:center;gap:6px;display:flex}.book-cover{aspect-ratio:2/3;background:var(--key-light);border-radius:8px;justify-content:center;align-items:center;width:100%;transition:transform .18s,box-shadow .18s;display:flex;position:relative;overflow:hidden;box-shadow:0 4px 16px #0000001f,-3px 0 #0000000f}@media (hover:hover){.book-item:hover .book-cover{transform:translateY(-4px)scale(1.03);box-shadow:0 10px 28px #0000002e,-3px 0 #0000000f}}.book-cover img{object-fit:cover;-webkit-user-drag:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100%;height:100%}.book-cover-default{width:100%;height:100%;color:var(--key);text-align:center;word-break:keep-all;justify-content:center;align-items:center;padding:12px;font-size:11px;font-weight:700;line-height:1.4;display:flex}.book-name{color:var(--text);text-align:center;word-break:keep-all;font-size:12px;font-weight:600;line-height:1.3}.book-author{color:var(--sub);text-align:center;font-size:10px}.empty{color:var(--sub);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:60px 20px;display:flex}.empty-icon{opacity:.4;font-size:48px}.empty-text{font-size:14px;font-weight:500}.form-screen{padding:0 20px 40px}.cover-selector{aspect-ratio:2/3;background:var(--key-light);border:2px dashed var(--key-mid);cursor:pointer;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:6px;width:120px;margin:20px auto;transition:background .15s;display:flex;position:relative;overflow:hidden}.cover-selector:hover{background:var(--key-mid)}.cover-selector img{object-fit:cover;width:100%;height:100%}.cover-selector-label{color:var(--key);font-size:11px;font-weight:600}.cover-options{justify-content:center;gap:10px;margin-bottom:20px;display:flex}.cover-opt-btn{border:1.5px solid var(--border);color:var(--text);cursor:pointer;background:#fff;padding:10px 12px;font-family:Pretendard,sans-serif;font-size:12px;font-weight:600;transition:all .15s}.cover-opt-btn.active{border-color:var(--key);background:var(--key);color:#fff}.field{margin-bottom:16px}.field label{color:var(--sub);letter-spacing:.3px;margin-bottom:6px;font-size:12px;font-weight:700;display:block}.field input{border:1.5px solid var(--border);width:100%;color:var(--text);background:#fff;border-radius:12px;outline:none;padding:13px 16px;font-family:Pretendard,sans-serif;font-size:15px;transition:border-color .15s}.field input:focus{border-color:var(--key)}.btn-primary{background:var(--key);color:#fff;cursor:pointer;border:none;border-radius:54% 46% 48% 52%/47% 53%;padding:14px;font-family:Pretendard,sans-serif;font-size:14px;font-weight:700;transition:opacity .15s,border-radius .35s}.btn-primary:hover{opacity:.88;border-radius:46% 54% 54% 46%/53% 47%}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.book-page-header{text-align:center;padding:20px 20px 0}.book-page-title{color:var(--text);font-size:20px;font-weight:800}.book-page-author{color:var(--sub);margin-top:4px;font-size:13px}.divider{background:var(--border);height:1px;margin:16px 20px}.excerpts-list{flex-direction:column;padding:4px 30px 20px;display:flex}.excerpt-block{scroll-margin-top:calc(env(safe-area-inset-top,0px) + 8px);position:relative}.excerpt-block+.excerpt-block{border-top:1px solid var(--border);padding-top:20px}.excerpt-body{padding:0 0 28px}.excerpt-text{color:var(--text);cursor:text;white-space:pre-wrap;text-align:justify;word-break:break-word;border-radius:6px;margin:-2px -5px;padding:2px 5px;font-size:16px;font-weight:500;line-height:1.82;transition:background .14s}.excerpt-meta{flex-wrap:wrap;align-items:flex-start;gap:8px;margin-top:9px;display:flex}.excerpt-page{color:var(--key);cursor:text;background:var(--key-light);letter-spacing:.2px;border-radius:5px;padding:2px 7px;font-size:11px;font-weight:700;transition:background .14s;display:inline-block}.excerpt-memo{color:var(--sub);cursor:text;text-align:justify;word-break:break-word;white-space:pre-wrap;word-break:break-word;border-radius:5px;margin:-2px -5px;padding:2px 5px;font-size:14px;font-style:italic;line-height:1.75;transition:background .14s;display:block}.inline-edit{background:var(--key-light);resize:none;width:100%;font-family:Pretendard,sans-serif;font-size:inherit;line-height:inherit;color:var(--text);border:none;border-radius:6px;outline:none;padding:3px 7px}.inline-edit-memo{color:var(--sub);font-size:14px;font-style:italic;line-height:1.75;overflow:hidden}.fab-wrap{bottom:max(32px, calc(32px + env(safe-area-inset-bottom)));z-index:200;width:0;height:54px;position:fixed;left:50%;transform:translate(-50%)}.fab{background:var(--key);color:#fff;white-space:nowrap;cursor:pointer;border:none;border-radius:48% 52% 52% 48%/46% 54%;justify-content:center;align-items:center;width:54px;height:54px;padding:0;font-size:26px;font-weight:300;transition:opacity .18s,transform .18s;display:flex;position:absolute;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #2a282661}.fab.open{opacity:0;pointer-events:none;transform:translate(-50%)scale(.7)}.fab:hover{transform:translate(-50%)scale(1.06);box-shadow:0 10px 32px #2a282673}.fab-options{white-space:nowrap;pointer-events:none;flex-direction:row;align-items:flex-end;gap:10px;display:flex;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.fab-opt-btn{background:var(--key);color:#fff;white-space:nowrap;cursor:pointer;opacity:0;pointer-events:none;border:none;padding:20px;font-family:Pretendard,sans-serif;font-size:14px;font-weight:700;transition:opacity .25s,transform .25s cubic-bezier(.34,1.56,.64,1);transform:translateY(20px)scale(.75);box-shadow:0 6px 20px #2a282659}.fab-opt-btn.visible{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.fab-opt-btn:first-child{border-radius:48% 52% 54% 46%/55% 45% 52% 48%}.fab-opt-btn:nth-child(2){border-radius:55% 45% 46% 54%/47% 53%}.fab-opt-btn:nth-child(3){border-radius:46% 54% 55% 45%/53% 47% 54% 46%}.fab-opt-btn.visible:first-child{transition-delay:80ms}.fab-opt-btn.visible:nth-child(2){transition-delay:40ms}.fab-opt-btn.visible:nth-child(3){transition-delay:0s}.fab-backdrop{z-index:150;position:fixed;inset:0}.modal-overlay{z-index:200;background:#00000073;justify-content:center;align-items:flex-end;animation:.18s fadeIn;display:flex;position:fixed;inset:0}.modal-sheet{background:#fff;border-radius:24px 24px 0 0;width:100%;max-width:430px;padding:12px 0 40px;animation:.22s slideUp}@keyframes slideUp{0%{opacity:0;transform:translateY(60px)}to{opacity:1;transform:translateY(0)}}.modal-handle{background:var(--border);border-radius:2px;width:36px;height:4px;margin:0 auto 20px}.modal-option{cursor:pointer;align-items:center;gap:16px;padding:16px 28px;font-size:16px;font-weight:600;transition:background .12s;display:flex}.modal-option:hover{background:var(--bg)}.modal-option-icon{background:var(--key-light);border-radius:14px;justify-content:center;align-items:center;width:44px;height:44px;font-size:22px;display:flex}.excerpt-screen{flex-direction:column;flex:1;display:flex}.excerpt-content{flex:1;padding:16px 20px;overflow-y:auto}.ocr-status{text-align:center;color:var(--sub);flex-direction:column;align-items:center;gap:12px;padding:40px;font-size:14px;display:flex}.spinner{border:3px solid var(--key-light);border-top-color:var(--key);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dolmeng-spin{object-fit:contain;width:48px;height:48px;animation:2s ease-in-out infinite dolmeng-roll}@keyframes dolmeng-roll{0%{transform:translate(-30px)rotate(0)}50%{transform:translate(30px)rotate(360deg)}to{transform:translate(-30px)rotate(0)}}.ocr-result{color:var(--text);white-space:pre-wrap;-webkit-user-select:none;user-select:none;border:1.5px solid var(--border);background:#fff;border-radius:14px;margin-bottom:16px;padding:16px;font-size:15px;line-height:1.85;position:relative}.selection-handle{z-index:20;pointer-events:none;background:#2a2826;border-radius:50%;width:10px;height:10px;position:absolute;transform:translate(-50%)}.selected-excerpt-preview{background:var(--key-light);border:1.5px solid var(--key-mid);color:var(--text);white-space:pre-wrap;border-radius:14px;margin-bottom:16px;padding:14px 16px;font-size:14px;line-height:1.7}.excerpt-meta-fields{flex-direction:column;gap:10px;margin-bottom:16px;display:flex}.meta-input{border:1.5px solid var(--border);color:var(--text);background:#fff;border-radius:10px;outline:none;padding:11px 14px;font-family:Pretendard,sans-serif;font-size:14px}.meta-input:focus{border-color:var(--key)}.meta-textarea{resize:none;min-height:44px;line-height:1.6;overflow:hidden}.keyboard-toolbar{border-top:1px solid var(--border);background:#f2f2f7;justify-content:flex-end;padding:10px 20px;display:flex}.direct-textarea{border:1.5px solid var(--border);resize:vertical;background:#fff;border-radius:12px;outline:none;width:100%;min-height:140px;margin-bottom:12px;padding:14px;font-family:Pretendard,sans-serif;font-size:15px;line-height:1.75}.direct-textarea:focus{border-color:var(--key)}.camera-screen{background:#000;flex-direction:column;flex:1;display:flex;position:relative}.camera-viewfinder{cursor:crosshair;flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.camera-viewfinder video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.camera-hint{color:#ffffffb3;z-index:10;pointer-events:none;font-size:14px}.camera-flash{opacity:0;pointer-events:none;z-index:20;background:#fff;transition:opacity .1s;position:absolute;inset:0}.camera-flash.active{opacity:1}.camera-thumbnails{background:#000000d9;align-items:center;gap:10px;padding:12px 16px;display:flex;overflow-x:auto}.camera-thumb{object-fit:cover;border:2px solid #ffffff4d;border-radius:8px;flex-shrink:0;width:56px;height:56px}.camera-add-btn{color:#fff;cursor:pointer;background:#ffffff26;border:2px dashed #fff6;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;font-size:24px;display:flex}.camera-bottom{background:#000000e6;justify-content:space-between;align-items:center;padding:16px 20px 32px;display:flex}.camera-close-btn{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:53% 47% 47% 53%/55% 45%;padding:10px 18px;font-family:Pretendard,sans-serif;font-size:14px;font-weight:600;transition:border-radius .3s}.camera-extract-btn{background:var(--key);color:#fff;cursor:pointer;border:none;border-radius:47% 53% 53% 47%/45% 55%;padding:10px 22px;font-family:Pretendard,sans-serif;font-size:14px;font-weight:700;transition:border-radius .3s}::selection{background:#2a282640}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:0 0;border-radius:2px;transition:background-color .25s}body.scrolling::-webkit-scrollbar-thumb{background:var(--key-mid)}body.scrolling ::-webkit-scrollbar-thumb{background:var(--key-mid)}.check-btn{background:var(--key);color:#fff;cursor:pointer;border:none;border-radius:20px;align-items:center;gap:6px;margin-top:10px;padding:8px 16px;font-family:Pretendard,sans-serif;font-size:13px;font-weight:700;transition:opacity .15s;display:inline-flex}.check-btn:hover{opacity:.88}.selection-tip{color:var(--sub);margin-bottom:8px;font-size:12px}.color-chip{background:var(--key);border-radius:50%;width:12px;height:12px;margin-right:4px;display:inline-block}.excerpt-delete-btn{background:var(--key-light);color:var(--key);cursor:pointer;letter-spacing:.2px;border:none;border-radius:5px;padding:2px 7px;font-family:Pretendard,sans-serif;font-size:11px;font-weight:700;transition:background .14s;animation:.15s fadeIn}.excerpt-delete-btn:hover{background:var(--key-mid)}.confirm-overlay{z-index:500;background:#2a282673;justify-content:center;align-items:flex-end;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.confirm-sheet{background:var(--bg);padding:32px 36px max(48px, calc(48px + env(safe-area-inset-bottom)));border-radius:22px 22px 0 0;flex-direction:column;align-items:center;gap:28px;width:100%;max-width:480px;animation:.22s slideUp;display:flex;box-shadow:0 8px 32px #2a28262e}.confirm-msg{color:var(--text);text-align:center;margin:0;font-size:16px;font-weight:600}.confirm-actions{justify-content:center;gap:16px;display:flex}.confirm-cancel,.confirm-ok{cursor:pointer;border:none;justify-content:center;align-items:center;width:48px;height:48px;font-family:Pretendard,sans-serif;font-size:13px;font-weight:700;transition:opacity .15s,border-radius .3s;display:flex}.confirm-cancel{background:var(--key-light);color:var(--key);border-radius:53% 47% 46% 54%/55% 45%}.confirm-cancel:hover{opacity:.8;border-radius:47% 53% 54% 46%/45% 55%}.confirm-ok{background:var(--key);color:#fff;border-radius:48% 52% 54% 46%/46% 54%}.confirm-ok:hover{opacity:.85;border-radius:52% 48% 46% 54%/54% 46%}@keyframes scaleIn{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}@keyframes bookWiggle{0%{transform:rotate(0)}20%{transform:rotate(-2.2deg)}50%{transform:rotate(2.2deg)}80%{transform:rotate(-1.2deg)}to{transform:rotate(0)}}
