.toolbar{gap:4px;padding:10px 16px;background:var(--ink);border-bottom:1px solid hsla(0,0%,100%,.06);position:relative;z-index:20;min-height:56px;flex-shrink:0}.toolbar,.toolbar__brand{display:flex;align-items:center}.toolbar__brand{gap:10px;margin-right:16px}.toolbar__logo{width:30px;height:30px;background:var(--accent);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.toolbar__title{font-family:var(--font-display);font-size:16px;font-weight:600;color:#fff;letter-spacing:-.3px;white-space:nowrap}.toolbar__divider{width:1px;height:28px;background:hsla(0,0%,100%,.12);margin:0 8px;flex-shrink:0}.toolbar__group{gap:2px}.toolbar__btn,.toolbar__group{display:flex;align-items:center}.toolbar__btn{gap:6px;padding:6px 10px;border-radius:var(--radius-sm);color:hsla(0,0%,100%,.7);font-size:13px;font-weight:500;transition:background .15s,color .15s;white-space:nowrap}.toolbar__btn:hover:not(:disabled){background:hsla(0,0%,100%,.08);color:#fff}.toolbar__btn:disabled{opacity:.35;cursor:not-allowed}.toolbar__btn--active{background:rgba(200,75,47,.25);color:#ff8a72}.toolbar__btn--active:hover:not(:disabled){background:rgba(200,75,47,.35);color:#ff8a72}.toolbar__btn--primary{background:var(--accent);color:#fff;padding:6px 14px}.toolbar__btn--primary:hover:not(:disabled){background:#b8401f;color:#fff}.toolbar__spacer{flex:1}.toolbar__file-name{font-family:var(--font-mono);font-size:11px;color:hsla(0,0%,100%,.4);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbar__zoom{display:flex;align-items:center;gap:2px;background:hsla(0,0%,100%,.06);border-radius:var(--radius-sm);padding:2px}.toolbar__zoom-val{font-family:var(--font-mono);font-size:12px;color:hsla(0,0%,100%,.6);width:40px;text-align:center}.sidebar{width:200px;flex-shrink:0;background:var(--paper-warm);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.sidebar__header{padding:14px 16px 8px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.sidebar__label{font-size:10px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-muted)}.sidebar__count{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);background:var(--paper-dark);padding:2px 6px;border-radius:99px}.sidebar__hint{padding:5px 16px 6px;font-size:10px;color:var(--ink-muted);opacity:.6;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:5px}.sidebar__hint:before{content:"⇅";font-size:11px}.sidebar__pages{flex:1;overflow-y:auto;padding:8px 6px;gap:0}.sidebar__page,.sidebar__pages{display:flex;flex-direction:column}.sidebar__page{position:relative;cursor:grab;user-select:none;padding:3px 0}.sidebar__page:active{cursor:grabbing}.sidebar__page-inner{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 6px;border-radius:var(--radius-md);border:2px solid transparent;background:transparent;transition:background .12s,border-color .12s,opacity .12s;position:relative}.sidebar__page:hover .sidebar__page-inner{background:var(--paper-dark)}.sidebar__page--active .sidebar__page-inner{border-color:var(--accent);background:rgba(200,75,47,.05)}.sidebar__page--dragging .sidebar__page-inner{opacity:.35;border-color:var(--accent);border-style:dashed}.sidebar__drag-handle{position:absolute;top:6px;right:6px;color:var(--ink-muted);opacity:0;transition:opacity .15s;padding:2px;border-radius:3px;pointer-events:none}.sidebar__page:hover .sidebar__drag-handle{opacity:.5}.sidebar__drop-line{height:0;position:relative;z-index:10;pointer-events:none;transition:height .1s;overflow:visible}.sidebar__drop-line--before{margin-bottom:0}.sidebar__drop-line--after{margin-top:0}.sidebar__page--drop-after .sidebar__drop-line--after:after,.sidebar__page--drop-before .sidebar__drop-line--before:after{content:"";display:block;height:3px;background:var(--accent);border-radius:99px;margin:0 6px;box-shadow:0 0 6px var(--accent-glow);animation:drop-line-in .1s ease}@keyframes drop-line-in{0%{opacity:0;transform:scaleX(.7)}to{opacity:1;transform:scaleX(1)}}.sidebar__thumb{width:130px;height:90px;background:#fff;border-radius:3px;box-shadow:var(--shadow-sm);overflow:hidden;display:flex;align-items:center;justify-content:center;position:relative;transition:box-shadow .15s}.sidebar__page--active .sidebar__thumb{box-shadow:var(--shadow-md)}.sidebar__thumb-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;color:var(--paper-dark)}.sidebar__page-num{font-family:var(--font-mono);font-size:10px;color:var(--ink-muted)}.sidebar__page--active .sidebar__page-num{color:var(--accent);font-weight:600}.sidebar__drag-ghost{position:fixed;top:-100px;left:-100px;background:var(--ink);color:#fff;font-family:var(--font-mono);font-size:12px;padding:6px 14px;border-radius:var(--radius-md);pointer-events:none;z-index:9999;box-shadow:var(--shadow-md);white-space:nowrap}.sidebar__empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center;gap:10px;color:var(--ink-muted)}.sidebar__empty-icon{opacity:.3}.sidebar__empty p{font-size:12px;line-height:1.5}.viewer{flex:1;overflow:auto;display:flex;align-items:flex-start;justify-content:center;padding:32px 24px;background:var(--paper);background-image:radial-gradient(circle at 20% 80%,rgba(200,75,47,.03) 0,transparent 60%),radial-gradient(circle at 80% 20%,rgba(47,110,200,.03) 0,transparent 60%);position:relative}.viewer__canvas-wrap{position:relative;box-shadow:var(--shadow-lg),0 0 0 1px var(--border);border-radius:2px;background:#fff;cursor:crosshair;transition:box-shadow .2s;user-select:none}.viewer__canvas-wrap:hover{box-shadow:0 20px 60px rgba(0,0,0,.18),0 0 0 1px var(--border-strong)}.viewer__canvas-wrap--text{cursor:text}.viewer__canvas-wrap--select{cursor:default}.viewer__canvas-wrap--eraser{cursor:cell}.viewer__canvas{display:block}.viewer__overlay{position:absolute;inset:0;pointer-events:none}.annotation,.viewer__overlay--interactive{pointer-events:all}.annotation{position:absolute}.annotation--text{border:1.5px solid rgba(0,0,0,.08);border-radius:var(--radius-sm);padding:4px 7px;font-size:13px;font-family:var(--font-body);color:var(--ink);cursor:move;box-shadow:0 2px 8px rgba(0,0,0,.08);transition:box-shadow .15s,border-color .15s;min-width:60px;min-height:24px;white-space:pre-wrap;word-break:break-word}.annotation--text.selected,.annotation--text:hover{box-shadow:0 4px 16px rgba(0,0,0,.14);border-color:var(--accent)}.annotation--highlight{background:rgba(255,230,0,.35);border-radius:2px;cursor:pointer;transition:background .15s}.annotation--highlight:hover{background:rgba(255,230,0,.55)}.annotation__delete{position:absolute;top:-10px;right:-10px;width:20px;height:20px;background:var(--accent);color:#fff;border-radius:50%;font-size:11px;display:none;align-items:center;justify-content:center;cursor:pointer;border:none}.annotation.selected .annotation__delete,.annotation:hover .annotation__delete{display:flex}.viewer__draw-canvas{position:absolute;inset:0;pointer-events:none}.viewer__draw-canvas--active{pointer-events:all}.viewer__empty{flex-direction:column;width:100%;min-height:400px;gap:20px;text-align:center}.viewer__empty,.viewer__empty-icon{display:flex;align-items:center;justify-content:center}.viewer__empty-icon{width:80px;height:80px;background:var(--paper-warm);border:2px dashed var(--border-strong);border-radius:var(--radius-xl);color:var(--ink-muted);opacity:.7}.viewer__empty h2{font-family:var(--font-display);font-size:28px;font-weight:300;color:var(--ink);letter-spacing:-.5px}.viewer__empty p{font-size:14px;color:var(--ink-muted);max-width:300px;line-height:1.6}.viewer__page-badge{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:hsla(0,0%,100%,.8);font-family:var(--font-mono);font-size:11px;padding:5px 12px;border-radius:99px;pointer-events:none;opacity:0;transition:opacity .3s;z-index:10}.viewer__page-badge--visible{opacity:1}.props-panel{width:220px;flex-shrink:0;background:var(--paper-warm);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.props-panel__header{padding:14px 16px 10px;border-bottom:1px solid var(--border)}.props-panel__label{font-size:10px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-muted)}.props-panel__body{flex:1;overflow-y:auto;padding:14px;gap:16px}.props-panel__body,.props-section{display:flex;flex-direction:column}.props-section{gap:8px}.props-section__title{font-size:10px;font-weight:600;letter-spacing:.8px;text-transform:uppercase;color:var(--ink-muted);padding-bottom:4px;border-bottom:1px solid var(--border)}.props-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.props-row__label{font-size:12px;color:var(--ink-muted);white-space:nowrap}.props-input{border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 8px;font-size:12px;font-family:var(--font-mono);background:#fff;color:var(--ink);width:80px;transition:border-color .15s}.props-input:focus{outline:none;border-color:var(--accent)}.props-input--full{width:100%}.props-color-row{display:flex;align-items:center;gap:6px}.props-color{width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--border);cursor:pointer;overflow:hidden;padding:2px}.props-color input[type=color]{width:100%;height:100%;border:none;cursor:pointer;background:none;padding:0}.props-swatches{display:flex;gap:4px;flex-wrap:wrap}.props-swatch{width:20px;height:20px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .1s,border-color .1s}.props-swatch:hover{transform:scale(1.15)}.props-swatch--active{border-color:var(--ink)}.props-slider{width:100%;accent-color:var(--accent)}.props-btn-group{display:flex;gap:4px}.props-btn{flex:1;padding:6px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;color:var(--ink-muted);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.props-btn:hover{background:var(--paper-dark);color:var(--ink)}.props-btn--active{background:var(--ink);color:#fff;border-color:var(--ink)}.annotation-list{display:flex;flex-direction:column;gap:4px}.annotation-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:var(--radius-sm);background:#fff;border:1px solid var(--border);cursor:pointer;transition:border-color .15s,background .15s;font-size:12px}.annotation-item:hover{border-color:var(--accent);background:rgba(200,75,47,.03)}.annotation-item__icon{color:var(--ink-muted);flex-shrink:0}.annotation-item__text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-soft)}.annotation-item__del{color:var(--ink-muted);padding:2px;border-radius:3px;transition:background .1s,color .1s;flex-shrink:0}.annotation-item__del:hover{background:rgba(200,75,47,.1);color:var(--accent)}.props-empty{text-align:center;padding:20px 10px;color:var(--ink-muted);font-size:12px;line-height:1.6}.props-panel__drop-area{margin:14px;border:2px dashed var(--border-strong);border-radius:var(--radius-lg);padding:20px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;display:flex;flex-direction:column;align-items:center;gap:8px}.props-panel__drop-area--drag,.props-panel__drop-area:hover{border-color:var(--accent);background:rgba(200,75,47,.04)}.props-panel__drop-area p{font-size:11px;color:var(--ink-muted);line-height:1.5}.dropzone{position:absolute;inset:0;justify-content:center;z-index:50;background:hsla(40,37%,97%,.92);backdrop-filter:blur(8px);transition:opacity .2s;cursor:pointer}.dropzone,.dropzone__card{display:flex;align-items:center}.dropzone__card{background:#fff;border:2px dashed var(--border-strong);border-radius:var(--radius-xl);padding:60px 80px;flex-direction:column;gap:16px;text-align:center;transition:border-color .2s,box-shadow .2s;max-width:460px;box-shadow:var(--shadow-md)}.dropzone--active .dropzone__card,.dropzone__card:hover{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow),var(--shadow-lg)}.dropzone__icon{width:64px;height:64px;background:var(--paper-warm);border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;color:var(--ink-muted);transition:color .2s,background .2s}.dropzone--active .dropzone__icon,.dropzone__card:hover .dropzone__icon{background:rgba(200,75,47,.08);color:var(--accent)}.dropzone__title{font-family:var(--font-display);font-size:26px;font-weight:600;color:var(--ink);letter-spacing:-.5px}.dropzone__sub{font-size:14px;color:var(--ink-muted);line-height:1.5}.dropzone__sub strong{color:var(--accent);font-weight:600}.dropzone__note{font-family:var(--font-mono);font-size:11px;color:var(--paper-dark);background:var(--ink-soft);padding:5px 12px;border-radius:99px}.dropzone__btn{margin-top:4px;padding:10px 28px;background:var(--ink);color:#fff;border-radius:var(--radius-md);font-size:14px;font-weight:500;cursor:pointer;border:none;transition:background .15s,transform .1s}.dropzone__btn:hover{background:var(--ink-soft);transform:translateY(-1px)}.dropzone__btn:active{transform:translateY(0)}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden;animation:app-in .35s ease}@keyframes app-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.app__body{display:flex;flex:1;overflow:hidden;position:relative}.loading-overlay{position:absolute;inset:0;background:hsla(40,37%,97%,.85);backdrop-filter:blur(4px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:100}.loading-spinner{width:36px;height:36px;border:3px solid var(--paper-dark);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.loading-text{font-size:13px;color:var(--ink-muted);font-family:var(--font-mono)}.toast{position:fixed;bottom:28px;right:28px;background:var(--ink);color:#fff;padding:10px 18px;border-radius:var(--radius-md);font-size:13px;font-weight:500;box-shadow:var(--shadow-md);z-index:999;display:flex;align-items:center;gap:8px;animation:toast-in .25s cubic-bezier(.34,1.56,.64,1)}.toast--success{background:var(--success)}.toast--error{background:var(--accent)}@keyframes toast-in{0%{opacity:0;transform:translateY(12px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}