:root{--paper: oklch(.975 .006 80);--paper-raised: oklch(.99 .004 80);--ink: oklch(.24 .01 60);--ink-2: oklch(.45 .01 60);--ink-3: oklch(.48 .01 60);--muted: oklch(.5 .01 60);--muted-2: oklch(.6 .01 60);--line: oklch(.88 .008 80);--line-header: oklch(.9 .008 80);--line-strong: oklch(.86 .008 80);--line-dash: oklch(.82 .01 80);--chip: oklch(.94 .008 80);--track: oklch(.91 .008 80);--accent: oklch(.58 .14 40);--accent-ink: oklch(.5 .14 40);--accent-ink-hover: oklch(.4 .14 40);--accent-wash: oklch(.96 .02 50);--ok: oklch(.58 .12 150);--danger: oklch(.55 .16 25);--overlay-ink: oklch(.24 .01 60 / .8);--placeholder: repeating-linear-gradient(45deg, oklch(.93 .006 80) 0 6px, oklch(.96 .006 80) 6px 12px);--placeholder-sm: repeating-linear-gradient(45deg, oklch(.93 .006 80) 0 4px, oklch(.96 .006 80) 4px 8px);--placeholder-lg: repeating-linear-gradient(45deg, oklch(.93 .006 80) 0 8px, oklch(.96 .006 80) 8px 16px);--serif: "Instrument Serif", Georgia, serif;--sans: "IBM Plex Sans", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}a{color:var(--accent-ink)}a:hover{color:var(--accent-ink-hover)}button{font:inherit;color:inherit;cursor:pointer}@keyframes spin{to{transform:rotate(360deg)}}.app{min-height:100vh;display:flex;flex-direction:column}.header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 28px;border-bottom:1px solid var(--line-header)}.wordmark{font-family:var(--serif);font-size:28px;line-height:1;letter-spacing:-.01em;background:none;border:none;padding:0;margin:0}.header-right{display:flex;align-items:center;gap:16px;font-size:14px}.not-saved{color:var(--muted)}.btn-signin{font-size:14px;padding:8px 14px;border:1px solid var(--line-strong);background:transparent;border-radius:8px}.btn{display:inline-flex;align-items:center;justify-content:center;font-size:15px;font-weight:500;padding:12px 20px;min-height:44px;border-radius:10px;border:none;white-space:nowrap}.btn-primary{background:var(--ink);color:#faf8f5}.btn-secondary{background:var(--paper-raised);border:1px solid var(--line-strong)}.btn-accent{background:var(--accent);color:#fff;font-size:16px;padding:14px 24px;min-height:48px;align-self:flex-start}.btn-outline-ink{font-size:14px;padding:10px 16px;min-height:44px;border:1px solid var(--ink);background:transparent;transition:background .15s,color .15s}.btn-outline-ink:hover{background:var(--ink);color:#faf8f5}.btn-sm-dark{font-size:14px;padding:10px 16px;min-height:44px;background:var(--ink);color:#faf8f5}.btn-sm-outline{font-size:14px;font-weight:400;padding:10px 14px;min-height:44px;border:1px solid var(--line-strong);background:transparent}.btn-text{border:none;background:none;font-size:13px;color:var(--muted);padding:4px}.btn[disabled]{opacity:.6;cursor:default}.upload{flex:1;width:100%;max-width:760px;margin:0 auto;padding:64px 24px 80px;display:flex;flex-direction:column;gap:32px}.upload-intro{display:flex;flex-direction:column;gap:12px}.upload h1{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(40px,6vw,60px);line-height:1.02;letter-spacing:-.02em;text-wrap:pretty}.upload-sub{margin:0;font-size:17px;line-height:1.55;color:var(--ink-2);max-width:520px;text-wrap:pretty}.dropzone{border:1.5px dashed var(--line-dash);background:var(--paper-raised);border-radius:16px;padding:48px 24px;display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center;transition:background .15s,border-color .15s}.dropzone.dragging{border-color:var(--accent);background:var(--accent-wash)}.dropzone-text{display:flex;flex-direction:column;gap:6px}.dropzone-title{font-size:18px;font-weight:500}.dropzone-hint{font-size:14px;color:var(--muted)}.dropzone-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.error-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 16px;padding:14px 16px;border-radius:10px;border:1px solid oklch(.85 .06 25);background:#fff1f0;background:oklch(.97 .02 25);color:var(--ink);font-size:14px;line-height:1.5}.error-banner strong{font-weight:500}.pages{display:flex;flex-direction:column;gap:14px}.pages-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.pages-count{font-size:14px;font-weight:500}.pages-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:12px}.page-tile{display:flex;flex-direction:column;gap:6px;min-width:0}.page-thumb{position:relative;aspect-ratio:8.5 / 11;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:var(--placeholder)}.page-thumb-img{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center}.page-thumb-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;color:var(--muted)}.page-remove{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:12px;border:none;background:var(--overlay-ink);color:#fff;font-size:14px;line-height:1;padding:0}.page-name{font-family:var(--mono);font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.empty-hint{font-size:14px;color:var(--muted)}.processing{flex:1;display:flex;align-items:center;justify-content:center;padding:48px 24px}.processing-inner{width:100%;max-width:420px;display:flex;flex-direction:column;gap:28px}.processing h2{margin:0;font-family:var(--serif);font-weight:400;font-size:40px;line-height:1.05;letter-spacing:-.01em}.steps{display:flex;flex-direction:column;gap:16px}.step{display:flex;align-items:center;gap:14px;font-size:16px}.step.pending{color:var(--muted-2)}.step-icon{width:22px;height:22px;flex:none;display:flex;align-items:center;justify-content:center}.step-done{width:22px;height:22px;border-radius:11px;background:var(--ok);color:#fff;font-size:13px;display:flex;align-items:center;justify-content:center}.step-spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--accent);animation:spin .8s linear infinite}.step-dot{width:8px;height:8px;border-radius:4px;background:var(--line-strong)}.guide{flex:1;width:100%;max-width:1120px;margin:0 auto;padding:48px 24px 96px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:48px;align-items:start}.guide-aside{display:flex;flex-direction:column;gap:24px;max-width:340px}.guide-main{display:flex;flex-direction:column;gap:40px;grid-column:span 2;min-width:0}@media(max-width:640px){.guide-main{grid-column:auto}}.cover-block{display:flex;flex-direction:column;gap:10px}.cover{position:relative;aspect-ratio:8.5 / 11;border-radius:10px;overflow:hidden;border:1px solid var(--line);cursor:zoom-in;background:var(--placeholder);padding:0;width:100%;text-align:inherit}.cover-img{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center}.cover-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:12px;color:var(--muted)}.cover-badge{position:absolute;right:8px;bottom:8px;font-family:var(--mono);font-size:11px;padding:3px 7px;border-radius:5px;background:var(--overlay-ink);color:#fff}.thumbs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.thumb{position:relative;aspect-ratio:8.5 / 11;border-radius:5px;overflow:hidden;cursor:pointer;border:1px solid var(--line);background:var(--placeholder-sm);padding:0}.thumb.selected{border:2px solid var(--accent)}.thumb-img{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center}.thumb-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10px;color:var(--muted)}.label-block{display:flex;flex-direction:column;gap:8px}.label-block.chips{gap:10px}.eyebrow{font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.eyebrow.accent{color:var(--accent-ink)}.source-text{font-size:14px;line-height:1.5}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:13px;padding:5px 10px;border-radius:999px;background:var(--chip)}.guide-title-block{display:flex;flex-direction:column;gap:10px}.guide h1{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(36px,5vw,52px);line-height:1.04;letter-spacing:-.02em;text-wrap:pretty}.section{display:flex;flex-direction:column;gap:16px}.section-head{display:flex;flex-direction:column;gap:4px}.section h2{margin:0;font-size:20px;font-weight:600}.section-desc{margin:0;font-size:15px;color:var(--ink-3)}.set-list{display:flex;flex-direction:column;border-top:1px solid var(--line)}.set-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px 24px;padding:20px 0;border-bottom:1px solid var(--line)}.set-num{font-family:var(--mono);font-size:13px;color:#76706c;width:24px}.set-body{flex:1 1 260px;min-width:0;display:flex;flex-direction:column;gap:4px}.set-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.set-title{font-size:17px;font-weight:500}.set-tag{font-family:var(--mono);font-size:11px;padding:3px 7px;border-radius:5px;border:1px solid var(--line-strong);color:var(--ink-2)}.set-desc{font-size:14px;line-height:1.5;color:var(--ink-3);text-wrap:pretty}.set-error{font-size:13px;color:var(--danger)}.set-action{flex:0 0 220px;display:flex;justify-content:flex-end}.set-ready{display:flex;gap:8px}.progress{width:100%;display:flex;flex-direction:column;gap:8px}.progress-meta{display:flex;justify-content:space-between;font-size:13px;color:var(--ink-2)}.progress-pct{font-family:var(--mono)}.progress-track{height:4px;border-radius:2px;background:var(--track);overflow:hidden}.progress-fill{height:100%;background:var(--accent);transition:width .2s}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;background:#1a1512d9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px 16px}.overlay-bar{width:100%;max-width:720px;display:flex;justify-content:space-between;align-items:center;gap:12px;color:#fff}.overlay-meta{font-family:var(--mono);font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-overlay{font-size:14px;padding:8px 14px;border:1px solid oklch(1 0 0 / .5);border-radius:8px;background:transparent;color:#fff}.btn-overlay-light{font-size:14px;padding:8px 14px;border:none;border-radius:8px;background:#fff;color:var(--ink);text-decoration:none;display:inline-flex;align-items:center}.viewer-stage{display:flex;align-items:center;gap:12px;width:100%;max-width:720px;justify-content:center;min-height:0}.viewer-nav{flex:none;width:44px;height:44px;border-radius:22px;border:none;background:#ffffff26;color:#fff;font-size:20px}.viewer-page{position:relative;height:min(78vh,820px);aspect-ratio:8.5 / 11;max-width:calc(100% - 112px);background:var(--placeholder-lg);box-shadow:0 20px 60px #00000059}.viewer-img{position:absolute;top:0;right:0;bottom:0;left:0;background-size:contain;background-repeat:no-repeat;background-position:center;background-color:#fff}.viewer-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:13px;color:var(--muted)}.preview-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;background:#1a15128c;display:flex;justify-content:center;overflow:auto;padding:32px 16px}.preview-col{width:100%;max-width:680px;display:flex;flex-direction:column;gap:12px;height:max-content}.preview-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;color:#fff}.preview-name{font-size:15px;font-weight:500}.preview-actions{display:flex;gap:8px}.preview-sheet{background:#fff;aspect-ratio:8.5 / 11;width:100%;box-shadow:0 20px 60px #0000004d;overflow:hidden}.preview-sheet iframe,.preview-sheet object{width:100%;height:100%;border:none;display:block}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);background:var(--ink);color:#fff;font-size:14px;padding:12px 18px;border-radius:10px;z-index:20}a.btn,a.btn:hover{text-decoration:none;color:inherit}.preview-fallback{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;color:#555;font-size:14px}.account{position:relative}.account-placeholder{display:inline-block;width:72px;height:34px}.account-avatar{width:36px;height:36px;border-radius:50%;overflow:hidden;padding:0;display:flex;align-items:center;justify-content:center;border:1px solid var(--accent);background:transparent;color:var(--accent-ink);font-family:var(--serif);font-size:18px;line-height:1;transition:background .15s,box-shadow .15s}.account-avatar:hover,.account-avatar[aria-expanded=true]{background:var(--accent-wash);box-shadow:0 0 0 4px #bd583326}.account-avatar.small{width:32px;height:32px;font-size:16px;flex:none}.account-avatar-img{width:100%;height:100%;object-fit:cover;display:block}.account-avatar-initial{display:block;padding-top:1px}.menu{position:absolute;right:0;top:calc(100% + 8px);z-index:15;width:272px;padding:6px;border-radius:12px;border:1px solid var(--line);background:var(--paper-raised);box-shadow:0 12px 40px #0000001f;font-size:14px}.menu-identity{display:flex;align-items:center;gap:12px;width:100%;padding:8px;border:none;border-radius:8px;background:none;text-align:left}.menu-identity:hover,.menu-item:hover{background:var(--chip)}.menu-identity-text{display:flex;flex-direction:column;min-width:0}.menu-identity-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-identity-email{font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-sep{height:1px;margin:4px 0;background:var(--line)}.menu-item{display:block;width:100%;padding:8px;border:none;border-radius:8px;background:none;text-align:left}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#1a15128c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-end;justify-content:center}.modal-panel{width:100%;max-width:440px;max-height:92vh;overflow-y:auto;overscroll-behavior:contain;padding:28px 24px 24px;background:var(--paper-raised);border:1px solid var(--line);border-radius:16px 16px 0 0;box-shadow:0 24px 80px #00000040}@media(min-width:560px){.modal-overlay{align-items:center;padding:24px}.modal-panel{border-radius:16px}}.signin{display:flex;flex-direction:column;align-items:center;width:100%}.signin-already{gap:16px;text-align:center}.signin-title{margin:0;font-family:var(--serif);font-weight:400;font-size:30px;line-height:1.1;letter-spacing:-.01em;text-align:center;text-wrap:balance}.signin-text{margin:0;font-size:15px;color:var(--ink-2)}.signin-form{display:flex;flex-direction:column;gap:16px;width:100%;margin-top:24px}.signin-primary{width:100%;margin-top:4px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;font-weight:500;color:var(--ink-2)}.field-hint{margin:0;font-size:12px;color:var(--muted)}.field-input{width:100%;min-height:46px;padding:0 14px;font:inherit;font-size:16px;color:var(--ink);border:1px solid var(--line-strong);border-radius:8px;background:var(--paper-raised)}.field-input::placeholder{color:var(--muted-2)}.field-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #bd583333}.field-input:disabled{opacity:.6}.field-input-code{letter-spacing:.3em;font-family:var(--mono)}.field-static{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:46px;padding:0 14px;font-size:16px;border:1px solid var(--line);border-radius:8px;background:var(--chip)}.field-static-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field-static-action{flex:none;border:none;background:none;padding:0;font-size:12px;font-weight:600;color:var(--ink-2)}.field-static-action:hover{color:var(--ink)}.signin-link{border:none;background:none;padding:0;font-size:inherit;color:var(--ink);text-decoration:underline;text-decoration-color:var(--line-dash);text-underline-offset:3px}.signin-link:hover{color:var(--accent-ink);text-decoration-color:var(--accent-ink)}.signin-link:disabled{opacity:.5}.signin-resend{align-self:center;margin:0;font-size:14px;color:var(--muted)}.signin-error{width:100%;margin-top:16px}.signin-divider{display:flex;align-items:center;gap:14px;width:100%;margin-top:28px;font-size:13px;color:var(--muted)}.signin-divider span{flex:1;height:1px;background:var(--line)}.signin-social{display:grid;grid-template-columns:1fr;gap:12px;width:100%;margin-top:18px}.signin-social.two{grid-template-columns:1fr 1fr}.signin-social-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;height:80px;border-radius:10px;border:1px solid var(--line-strong);background:var(--paper-raised);font-size:15px;font-weight:500;transition:border-color .15s}.signin-social-btn:hover{border-color:var(--ink)}.signin-social-btn:disabled{opacity:.5;cursor:default}.signin-social-logo{width:18px;height:18px}.signin-switch{margin:28px 0 0;font-size:15px;color:var(--ink-2)}.account-actions{display:flex;justify-content:space-between;gap:12px;margin-top:4px}.header-left{display:flex;align-items:center;gap:12px;min-width:0}.app-body{display:flex;flex:1;min-height:0;align-items:stretch}.app-content{flex:1;min-width:0;display:flex;flex-direction:column}.sidebar{flex:none;width:272px;padding:20px 14px 24px;display:flex;flex-direction:column;gap:16px;border-right:1px solid var(--line-header);background:var(--paper)}.sidebar-top{display:flex;align-items:center;gap:8px}.sidebar-new{flex:1;font-size:14px;min-height:42px;padding:10px 14px}.sidebar-close{display:none}.sidebar-eyebrow{padding:0 10px}.sidebar-empty{margin:0;padding:0 10px;font-size:14px;line-height:1.5;color:var(--muted);text-wrap:pretty}.sidebar-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;overflow-y:auto}.sidebar-item{position:relative;border-radius:10px;transition:background .12s}.sidebar-item:hover,.sidebar-item:focus-within,.sidebar-item.active{background:var(--chip)}.sidebar-link{display:flex;flex-direction:column;gap:3px;width:100%;padding:10px 12px 6px;border:none;background:none;text-align:left;border-radius:10px}.sidebar-title{font-size:14px;font-weight:500;line-height:1.35;text-wrap:pretty;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.sidebar-item.active .sidebar-title{color:var(--accent-ink)}.sidebar-meta{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-actions{display:flex;gap:2px;padding:0 8px 6px;visibility:hidden}.sidebar-item:hover .sidebar-actions,.sidebar-item:focus-within .sidebar-actions,.sidebar-item.active .sidebar-actions{visibility:visible}.sidebar-action{border:none;background:none;padding:3px 6px;font-size:12px;color:var(--muted);border-radius:6px}.sidebar-action:hover{color:var(--ink);background:var(--track)}.sidebar-action.danger:hover{color:var(--danger)}.sidebar-rename{display:block;width:100%;font:inherit;font-size:14px;font-weight:500;color:var(--ink);padding:9px 11px;border:1px solid var(--accent);border-radius:10px;background:var(--paper-raised)}.sidebar-rename:focus{outline:none;box-shadow:0 0 0 3px #bd583333}.sidebar-backdrop{display:none}.sidebar-toggle{display:none;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--line-strong);border-radius:8px;background:transparent;color:var(--ink)}@media(max-width:900px){.sidebar-toggle{display:inline-flex}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:25;width:min(300px,86vw);overflow-y:auto;border-right:1px solid var(--line);transform:translate(-100%);transition:transform .2s ease}.sidebar.open{transform:none;box-shadow:0 0 60px #00000040}.sidebar-close{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;padding:0;border:none;border-radius:8px;background:none;font-size:22px;line-height:1}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:24;background:#1a151273}.sidebar-actions{visibility:visible}}.loading-screen{gap:14px;color:var(--muted);font-size:15px}.loading-screen .step-spinner{width:20px;height:20px}
