@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-display:swap;src:url(/assets/fonts/bricolage-grotesque-latin-wght-normal.woff2) format("woff2")}@font-face{font-family:"Instrument Serif";font-style:italic;font-weight:400;font-display:swap;src:url(/assets/fonts/instrument-serif-latin-400-italic.woff2) format("woff2")}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fonts/geist-latin-wght-normal.woff2) format("woff2")}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fonts/geist-mono-latin-wght-normal.woff2) format("woff2")}:root{--bg: #06050a;--bg-soft: rgba(255,255,255,.045);--bg-panel: rgba(20,16,32,.55);--bg-input: rgba(8,6,14,.55);--ink: #ece8f4;--ink-mute: #b3acc2;--ink-dim: #8d879c;--line: rgba(255,255,255,.09);--line-bold: rgba(255,255,255,.2);--yellow: #ffd60a;--yellow-soft: rgba(255,214,10,.16);--yellow-deep: #f5c400;--yellow-wash: rgba(255,214,10,.07);--text: #f6f2ff;--text-2: #c9c2d8;--text-3: #aaa3ba;--muted: #8d879c;--faint: #6f6980;--accent: #ffd60a;--accent-hover: #fff1a8;--local: #8fe3c0;--glass: rgba(20,16,32,.55);--line-2: rgba(255,255,255,.12);--line-3: rgba(255,255,255,.16);--font-display: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;--font-serif: "Instrument Serif", Georgia, "Times New Roman", serif;--font-body: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:14.5px;line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,select{font:inherit;color:inherit}::selection{background:var(--yellow);color:var(--bg)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}select option{background:#16121f;color:var(--text)}input::placeholder{color:var(--faint)}*{scrollbar-color:rgba(255,255,255,.18) transparent}.app{display:grid;grid-template-rows:auto 1fr;height:100vh;height:100dvh;background:radial-gradient(70% 55% at 78% 0%,#4e288c52,#06050a00 70%),radial-gradient(50% 45% at 8% 100%,#ffd60a0d,#06050a00 70%),var(--bg)}.topbar{display:flex;align-items:center;gap:10px 22px;padding:14px clamp(16px,3vw,40px);border-bottom:1px solid var(--line);background:#06050a8c;flex-wrap:wrap;position:relative;z-index:10}.topbar .brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);min-width:0}.topbar .brand-dot{width:11px;height:11px;border-radius:50%;flex:0 0 auto;background:var(--accent);box-shadow:0 0 18px 4px #ffd60a8c}.topbar .brand-word{font-family:var(--font-display);font-size:21px;font-weight:700;letter-spacing:-.03em;color:var(--text)}.topbar .brand-crumb{font-family:var(--font-serif);font-style:italic;font-size:20px;color:var(--muted);margin-left:2px;white-space:nowrap}.topbar .spacer{flex:1;min-width:0}.topbar .top-links{display:flex;align-items:center;gap:clamp(12px,2vw,26px);font-size:14.5px}.topbar .top-links a{color:#bdb6cc;text-decoration:none;transition:color .2s}.topbar .top-links a:hover{color:#fff}.topbar .file-info{font-family:var(--font-mono);font-size:12px;color:var(--text-3);display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:4px 4px 4px 14px;border:1px solid var(--line-2);border-radius:999px;background:#ffffff09;min-width:0}.topbar .file-info .dot{color:var(--local);font-size:9px;line-height:1}.topbar .file-info .btn{padding:4px 11px;font-size:11.5px}.workspace{display:grid;grid-template-columns:240px 1fr;min-height:0}.sidebar{background:#14102073;border-right:1px solid var(--line);padding:20px 14px;overflow-y:auto}.sidebar h4,.form-sidebar-header h4{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 14px;font-weight:500}.sidebar-about{color:var(--text-3);font-size:13.5px;line-height:1.6;margin:0}.viewer{position:relative;overflow:auto;background:transparent;padding:20px clamp(14px,2.4vw,32px);min-width:0}.empty{min-height:100%;display:grid;place-items:center}.empty .drop{width:min(600px,100%);padding:56px 28px;border:1.5px dashed rgba(255,214,10,.45);border-radius:28px;background:radial-gradient(80% 90% at 50% 40%,#ffd60a12,#0000),#1410208c;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);text-align:center;transition:border-color .2s,background .2s}.empty .drop:hover{border-color:#ffd60acc}.empty .drop.over{border-style:solid;border-color:var(--accent);background:radial-gradient(80% 90% at 50% 40%,#ffd60a29,#0000),#1410208c}.empty h2{font-family:var(--font-serif);font-style:italic;font-weight:400;font-size:clamp(32px,3.4vw,42px);line-height:1.1;letter-spacing:-.02em;color:var(--text);margin:0 0 10px}.empty p{color:var(--text-3);margin:0 auto 26px;max-width:420px;font-size:15px;line-height:1.55}.drop-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.empty .drop .error{margin-top:18px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 15px;background:#ffffff0a;border:1px solid var(--line-3);border-radius:999px;color:var(--text);cursor:pointer;font-size:13.5px;font-weight:500;line-height:1.2;white-space:nowrap;transition:background .2s,border-color .2s,color .2s}.btn:hover:not(:disabled){border-color:#ffd60a99;background:#ffffff12;color:#fff}.btn:active:not(:disabled){background:#ffffff1a}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--bg);font-weight:600}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:var(--bg)}.btn.ghost{background:transparent;border-color:var(--line-2);color:var(--text-2)}.btn.ghost:hover:not(:disabled){background:#ffffff0d;border-color:#ffd60a99;color:#fff}.btn.icon{padding:6px 11px;min-width:32px;font-family:var(--font-mono);font-size:13px;font-weight:500}.controls{display:flex;align-items:center;gap:10px;padding:10px 12px 10px 18px;margin-bottom:14px;background:#141020b8;border:1px solid rgba(255,255,255,.1);border-radius:24px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);position:sticky;top:0;z-index:5;flex-wrap:wrap}.controls .group{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.controls .label{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:500;margin-right:2px}.controls input.page-input{width:52px;background:var(--bg-input);border:1px solid var(--line-2);border-radius:999px;padding:6px 8px;text-align:center;font-family:var(--font-mono);font-weight:500;color:var(--text)}.controls input.page-input:focus,.scale-select:focus{outline:none;border-color:#ffd60ab3}.scale-select{background:var(--bg-input);border:1px solid var(--line-2);border-radius:999px;padding:6px 12px;font-family:var(--font-mono);font-size:12.5px;font-weight:500;color:var(--text);cursor:pointer}.controls .total{font-family:var(--font-mono);font-size:12.5px;color:var(--text-3)}.controls .spacer{flex:1;min-width:0}.pages{display:flex;flex-direction:column;align-items:center;gap:34px;padding:10px 0 48px}.page-frame{background:#fff;border-radius:3px;box-shadow:0 0 0 1px #ffffff0f,0 30px 60px -24px #000000d9,0 10px 24px -12px #0009;position:relative;max-width:100%;transition:box-shadow .2s}.page-frame canvas{display:block;border-radius:3px;max-width:100%;height:auto}.page-frame .page-label{position:absolute;bottom:-24px;left:50%;transform:translate(-50%);font-family:var(--font-mono);font-size:11px;color:var(--muted);letter-spacing:.08em;white-space:nowrap}.page-frame.active{box-shadow:0 0 0 2px #ffd60abf,0 0 36px -6px #ffd60a59,0 30px 60px -24px #000000d9}.page-frame.active .page-label{color:var(--accent)}.thumbs{display:flex;flex-direction:column;gap:4px}.thumb-insert-line{height:3px;background:var(--accent);box-shadow:0 0 10px #ffd60a99;border-radius:2px;margin:1px 4px}.thumb-wrap{position:relative;border-radius:16px;border:1px solid transparent;transition:border-color .15s,background .15s}.thumb-wrap:hover{border-color:var(--line-2);background:#ffffff08}.thumb-wrap.active{border-color:#ffd60a8c;background:#ffd60a12}.thumb-wrap[draggable]{cursor:grab}.thumb-wrap[draggable]:active{cursor:grabbing}.thumb{display:flex;align-items:center;gap:12px;padding:8px 10px;border:none;border-radius:14px;background:transparent;text-align:left;width:100%;color:var(--text-3);font-family:var(--font-mono);font-size:12px;cursor:pointer}.thumb-wrap.active .thumb{color:var(--text)}.thumb .num{flex:0 0 24px;text-align:right;color:var(--muted)}.thumb-wrap.active .thumb .num{color:var(--accent)}.thumb canvas{background:#fff;border-radius:2px;width:60px;height:auto;display:block;box-shadow:0 8px 18px -8px #000c,0 0 0 1px #ffffff0f}.thumb-controls{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:grid;grid-template-columns:repeat(2,auto);gap:4px;opacity:0;pointer-events:none;transition:opacity .12s}.thumb-wrap:hover .thumb-controls,.thumb-wrap:focus-within .thumb-controls{opacity:1;pointer-events:auto}.thumb-ctrl{padding:3px 7px!important;min-width:26px!important;font-size:12px!important}.thumb-del{color:var(--text-3)}.thumb-del:hover:not(:disabled){color:var(--accent)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#06050a9e;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;z-index:100;padding:16px}.dialog{background:#161222eb;border:1px solid rgba(255,255,255,.12);border-radius:28px;padding:28px 28px 24px;width:min(440px,100%);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);box-shadow:0 40px 90px -30px #000000f2;color:var(--ink)}.dialog-title{font-family:var(--font-display);font-size:24px;font-weight:500;letter-spacing:-.03em;color:var(--text);margin:0 0 8px}.dialog-sub{font-size:14px;color:var(--text-3);margin:0 0 20px;line-height:1.55}.dialog-row{display:flex;gap:14px;margin-bottom:12px}.dialog-label{display:flex;flex-direction:column;gap:8px;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);flex:1}.dialog-label .scale-select{text-transform:none;letter-spacing:0;padding:9px 14px;font-size:13px}.dialog-input{width:100%;border:1px solid var(--line-2);border-radius:14px;padding:10px 12px;font-family:var(--font-mono);font-size:15px;font-weight:500;text-align:center;color:var(--text);background:var(--bg-input);letter-spacing:0}.dialog-input:focus{outline:none;border-color:#ffd60ab3}.dialog-err{color:var(--accent);font-size:13px;font-weight:500;margin-bottom:10px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;flex-wrap:wrap}.file-input{display:none}.error{margin:0 0 14px;padding:11px 16px;border:1px solid rgba(255,214,10,.45);background:#ffd60a14;border-radius:16px;color:var(--accent);font-size:13.5px;font-weight:500}.loading{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12.5px;color:inherit;font-weight:500}.loading:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.05)}}.ann-toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px;margin-bottom:18px;background:#1410208c;border:1px solid rgba(255,255,255,.1);border-radius:24px;flex-wrap:wrap}.ann-group{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.ann-group[aria-label=Color]{gap:8px;padding:0 4px}.ann-sep{width:1px;height:22px;background:var(--line-2);margin:0 4px}.ann-tool.active,.ann-width.active,.ann-tool.active:hover:not(:disabled),.ann-width.active:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:var(--bg)}.color-swatch{width:22px;height:22px;border-radius:50%;border:1px solid rgba(255,255,255,.28);cursor:pointer;padding:0;transition:transform .12s ease,box-shadow .12s ease}.color-swatch.active{transform:scale(1.12);box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--text)}.color-swatch:hover:not(.active){transform:scale(1.1)}.ann-text-opts{gap:6px}.ann-font{font-family:inherit;font-size:13px;padding:6px 12px;border:1px solid var(--line-2);border-radius:999px;background:var(--bg-input);color:var(--text);cursor:pointer}.ann-size{display:inline-flex;align-items:center;gap:4px}.ann-size input{width:48px;font-family:var(--font-mono);font-size:13px;text-align:center;padding:6px 4px;border:1px solid var(--line-2);border-radius:999px;background:var(--bg-input);color:var(--text)}.ann-font:focus,.ann-size input:focus{outline:none;border-color:#ffd60ab3}.ann-tool{font-size:15px;min-width:34px}.ann-bold{font-weight:800}.ann-bold.active,.ann-shadow.active,.ann-bold.active:hover:not(:disabled),.ann-shadow.active:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:var(--bg)}.ann-shadow{font-size:12.5px;padding:6px 12px}.annotation-overlay{display:block}.back{font-family:var(--font-mono);font-size:12px;color:var(--muted);text-decoration:none;padding:4px 8px;border-radius:999px}.back:hover{color:var(--accent)}@media (max-width: 1100px){.app.is-open .topbar .top-links{display:none}}@media (max-width: 800px){.workspace{grid-template-columns:1fr}.sidebar{display:none}.viewer{padding:14px}.controls{padding:8px 10px;gap:8px;border-radius:20px;position:static}.controls .group{gap:4px}.pages{gap:30px}}@media (max-width: 640px){.topbar{padding:12px 16px;gap:10px 14px}.topbar .top-links{display:none}.topbar .brand-crumb{font-size:17px}.topbar .file-info{order:3;flex:1 1 100%;justify-content:flex-start}.topbar .file-info .btn{margin-left:auto}}@media (max-width: 480px){.topbar .brand-word{font-size:19px}.topbar .file-info{font-size:11px;gap:6px}.empty .drop{padding:40px 18px;border-radius:24px}.empty h2{font-size:30px}.controls .label{display:none}.btn{padding:7px 12px;font-size:13px}.ann-toolbar{padding:8px 10px;border-radius:20px}.ann-sep{display:none}}.workspace.with-form{grid-template-columns:240px 1fr 280px}.form-sidebar{background:#14102073;border-left:1px solid var(--line);padding:20px 16px;overflow-y:auto}.form-sidebar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.form-sidebar-header h4{margin:0}.form-panel-inner{display:flex;flex-direction:column;gap:14px}.form-field-row{display:flex;flex-direction:column;gap:6px}.form-field-label{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.form-input,.form-select{width:100%;border:1px solid var(--line-2);border-radius:12px;padding:8px 12px;background:var(--bg-input);color:var(--text);font-family:var(--font-mono);font-size:13px}.form-select{cursor:pointer}.form-input:focus,.form-select:focus{outline:none;border-color:#ffd60ab3}.form-checkbox{width:16px;height:16px;cursor:pointer;accent-color:var(--accent)}.form-radio-group{display:flex;flex-direction:column;gap:6px}.form-radio-group input{accent-color:var(--accent)}.form-radio-label{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2);cursor:pointer}.form-flatten-row{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:6px}.flatten-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--text);cursor:pointer}.flatten-label input{accent-color:var(--accent)}.flatten-hint{font-size:11.5px;color:var(--muted);line-height:1.45}.form-empty-msg{font-size:13.5px;color:var(--text-3);line-height:1.6;margin:0}.form-warn{font-size:12px;color:var(--accent);background:#ffd60a12;border:1px solid rgba(255,214,10,.35);border-radius:14px;padding:10px 12px;line-height:1.45}.image-dialog{width:min(520px,100%);max-height:84vh;overflow-y:auto}.img-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;max-height:240px;overflow-y:auto}.img-item{display:flex;align-items:center;gap:12px;padding:8px 8px 8px 10px;border:1px solid var(--line);border-radius:16px;background:#ffffff0a}.img-preview{width:48px;height:48px;object-fit:contain;border-radius:8px;flex-shrink:0;background:#fff}.img-name{flex:1;min-width:0;font-size:12px;font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-3)}.img-remove{flex-shrink:0}.viewer.img-drag-over:after{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1.5px dashed var(--accent);border-radius:22px;background:radial-gradient(80% 90% at 50% 40%,#ffd60a1f,#ffd60a08);pointer-events:none}@media (max-width: 800px){.workspace.with-form{grid-template-columns:1fr}.form-sidebar{display:none}}.compress-panel{background:#1410208c;border:1px solid rgba(255,255,255,.1);border-radius:24px;padding:18px 18px 16px;margin-bottom:14px}.compress-header{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}.compress-label{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.compress-orig{font-family:var(--font-mono);font-size:12px;color:var(--text-3)}.compress-modes{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.compress-mode{position:relative;display:flex;flex-direction:column;gap:3px;flex:1;min-width:150px;padding:12px 14px;border:1px solid var(--line-2);border-radius:18px;background:#ffffff08;cursor:pointer;transition:border-color .15s,background .15s}.compress-mode input[type=radio]{position:absolute;opacity:0;pointer-events:none}.compress-mode.selected{border-color:#ffd60aa6;background:#ffd60a14}.compress-mode:hover:not(.selected){border-color:var(--line-bold)}.compress-mode:focus-within{outline:2px solid rgba(255,214,10,.6);outline-offset:2px}.compress-mode-name{font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:-.02em;color:var(--text)}.compress-mode-desc{font-size:12px;color:var(--text-3);line-height:1.45}.compress-mode-est{font-family:var(--font-mono);font-size:11px;color:var(--muted);margin-top:4px}.compress-mode.selected .compress-mode-est{color:var(--accent)}.compress-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.compress-result{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;padding:10px 10px 10px 16px;border:1px solid rgba(255,214,10,.45);background:#ffd60a14;border-radius:18px;color:var(--text);font-size:13.5px;font-weight:500}.compress-result>span{flex:1;min-width:0}.compress-warn{width:100%;font-size:12px;font-weight:400;color:var(--accent)}@media (max-width: 480px){.compress-modes{flex-direction:column}.compress-mode{min-width:unset}}.coffee-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#06050a9e;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:coffee-fade .16s ease-out}@keyframes coffee-fade{0%{opacity:0}to{opacity:1}}.coffee-card{position:relative;background:radial-gradient(90% 70% at 85% 0%,#ffd60a1f,#0000 70%),#161222f0;color:var(--ink);border:1px solid rgba(255,214,10,.3);border-radius:28px;box-shadow:0 40px 90px -30px #000000f2;padding:26px 26px 20px;max-width:440px;width:100%;text-align:left;font-family:var(--font-body);animation:coffee-pop .2s cubic-bezier(.2,.9,.3,1.1)}@keyframes coffee-pop{0%{transform:translateY(8px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.coffee-title{font-family:var(--font-display);font-weight:500;font-size:26px;letter-spacing:-.035em;color:var(--text);margin-bottom:8px}.coffee-body{font-size:15px;line-height:1.55;margin:0 0 20px;color:var(--text-2)}.coffee-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}.coffee-actions .btn{font-size:14px;padding:11px 18px}.coffee-foot{font-family:var(--font-mono);font-size:11.5px;color:var(--muted);line-height:1.5}@media (max-width: 480px){.coffee-card{padding:22px 18px 16px;border-radius:24px}.coffee-title{font-size:22px}.coffee-actions{flex-direction:column}.coffee-actions .btn{width:100%;justify-content:center}}
