.pe-root{--pe-toolbar-h:44px;--pe-status-h:32px;--pe-sidebar-w:200px}.pe-root{display:flex;flex-direction:column;height:calc(100vh - 200px);min-height:500px;border:1px solid var(--hairline,rgba(15,0,0,.12));background:var(--canvas,#fdfcfc)}.pe-toolbar{display:flex;align-items:center;gap:2px;min-height:var(--pe-toolbar-h);padding:4px 6px;border-bottom:1px solid var(--hairline,rgba(15,0,0,.12));background:var(--surface-soft,#f8f7f7);flex-shrink:0;flex-wrap:wrap}.pe-tbar-btn{display:inline-flex;align-items:center;justify-content:center;height:26px;min-width:26px;padding:0 5px;border:none;background:transparent;color:var(--ink,#201d1d);font-family:inherit;font-size:12px;cursor:pointer;border-radius:4px;white-space:nowrap}.pe-tbar-btn:hover{background:var(--surface-card,#f1eeee)}.pe-tbar-btn:disabled{opacity:.35;cursor:default}.pe-tbar-btn.pe-active{background:var(--ink,#201d1d);color:var(--canvas,#fdfcfc)}.pe-tbar-sep{width:1px;height:18px;background:var(--hairline,rgba(15,0,0,.12));margin:0 2px;flex-shrink:0}.pe-tbar-page-input{width:36px;height:26px;text-align:center;border:1px solid var(--hairline,rgba(15,0,0,.12));border-radius:4px;font-family:inherit;font-size:12px;background:var(--canvas,#fdfcfc);color:var(--ink,#201d1d)}.pe-tbar-label{font-size:11px;color:var(--mute,#888);white-space:nowrap;flex-shrink:0}.pe-body{display:flex;flex:1;overflow:hidden}.pe-sidebar{width:var(--pe-sidebar-w);border-right:1px solid var(--hairline,rgba(15,0,0,.12));display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;background:var(--surface-soft,#f8f7f7)}.pe-sidebar-tabs{display:flex;border-bottom:1px solid var(--hairline,rgba(15,0,0,.12));flex-shrink:0}.pe-sidebar-tab{flex:1;text-align:center;padding:6px 0;font-size:12px;cursor:pointer;border:none;background:transparent;color:var(--mute,#888);font-family:inherit}.pe-sidebar-tab.pe-active{color:var(--ink,#201d1d);border-bottom:2px solid var(--ink,#201d1d)}.pe-thumbs{flex:1;overflow-y:auto;padding:8px}.pe-thumb{margin-bottom:8px;cursor:pointer;border:2px solid transparent;border-radius:2px;position:relative;display:flex;justify-content:center;background:var(--canvas,#fdfcfc)}.pe-thumb.pe-active{border-color:var(--ink,#201d1d)}.pe-thumb.pe-selected{border-color:var(--accent,#007aff)}.pe-thumb canvas{display:block;max-width:100%;height:auto}.pe-thumb-num{position:absolute;bottom:2px;right:4px;font-size:10px;color:var(--ink,#201d1d);background:rgba(253,252,252,.85);padding:0 3px;border-radius:2px}.pe-thumb-drag-handle{position:absolute;top:2px;left:2px;font-size:10px;color:var(--mute,#888);cursor:grab;padding:2px;opacity:0;transition:opacity .15s}.pe-thumb:hover .pe-thumb-drag-handle{opacity:1}.pe-thumb.pe-dragging{opacity:.5}.pe-thumb.pe-drag-over{border-color:var(--accent,#007aff);border-style:dashed}.pe-bookmarks{flex:1;overflow-y:auto;padding:8px;display:none}.pe-bookmarks.visible{display:block}.pe-bookmark-item{padding:4px 8px;font-size:12px;cursor:pointer;color:var(--ink,#201d1d);border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pe-bookmark-item:hover{background:var(--surface-card,#f1eeee)}.pe-bookmark-item.pe-l2{padding-left:20px;font-size:11px}.pe-viewer{flex:1;overflow:auto;display:flex;flex-direction:column;align-items:center;background:var(--hairline,rgba(15,0,0,.06));position:relative}.pe-viewer.pe-continuous{display:block}.pe-page-wrap{margin:16px auto;box-shadow:0 1px 4px rgba(0,0,0,.12);position:relative;display:flex}.pe-page-wrap canvas{display:block;background:#fff}.pe-two-page-row{display:flex;justify-content:center;gap:4px}.pe-status{display:flex;align-items:center;gap:8px;height:var(--pe-status-h);padding:0 8px;border-top:1px solid var(--hairline,rgba(15,0,0,.12));font-size:12px;color:var(--mute,#888);flex-shrink:0;background:var(--surface-soft,#f8f7f7)}.pe-status span{flex-shrink:0}.pe-status-fill{flex:1}.pe-search-panel{display:none;align-items:center;gap:4px;padding:4px 8px;border-bottom:1px solid var(--hairline,rgba(15,0,0,.12));background:var(--surface-soft,#f8f7f7)}.pe-search-panel.visible{display:flex}.pe-search-input{flex:1;height:28px;border:1px solid var(--hairline,rgba(15,0,0,.12));border-radius:4px;padding:0 8px;font-family:inherit;font-size:13px;background:var(--canvas,#fdfcfc);color:var(--ink,#201d1d)}.pe-search-count{font-size:12px;color:var(--mute,#888);min-width:60px;text-align:center}.pe-drop-overlay{display:none;position:absolute;inset:0;background:rgba(253,252,252,.9);z-index:10;align-items:center;justify-content:center;font-size:24px;color:var(--ink,#201d1d)}.pe-drop-overlay.visible{display:flex}.pe-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;height:100%;color:var(--mute,#888);cursor:pointer}.pe-empty-icon{font-size:48px}.pe-context-menu{position:fixed;z-index:100;background:var(--canvas,#fdfcfc);border:1px solid var(--hairline,rgba(15,0,0,.12));border-radius:4px;padding:4px 0;min-width:160px;display:none}.pe-context-menu.visible{display:block}.pe-cm-item{padding:6px 12px;font-size:13px;cursor:pointer;color:var(--ink,#201d1d)}.pe-cm-item:hover{background:var(--surface-soft,#f8f7f7)}.pe-cm-sep{height:1px;background:var(--hairline,rgba(15,0,0,.12));margin:4px 0}.pe-modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:200;align-items:center;justify-content:center}.pe-modal-overlay.visible{display:flex}.pe-modal{background:var(--canvas,#fdfcfc);border:1px solid var(--hairline,rgba(15,0,0,.12));border-radius:4px;padding:20px;min-width:320px;max-width:480px}.pe-modal h3{margin:0 0 16px;font-size:16px}.pe-modal-row{display:flex;align-items:center;gap:8px;margin-bottom:12px}.pe-modal-row label{font-size:13px;min-width:80px}.pe-modal-row input,.pe-modal-row select{height:32px;border:1px solid var(--hairline,rgba(15,0,0,.12));border-radius:4px;padding:0 8px;font-family:inherit;font-size:13px;background:var(--canvas,#fdfcfc);color:var(--ink,#201d1d)}.pe-modal-row input{flex:1}.pe-modal-btns{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.pe-modal-btns button{height:32px;padding:0 16px;border:none;border-radius:4px;font-family:inherit;font-size:13px;cursor:pointer}.pe-modal-btns .pe-btn-ok{background:var(--ink,#201d1d);color:var(--canvas,#fdfcfc)}.pe-modal-btns .pe-btn-cancel{background:var(--surface-card,#f1eeee);color:var(--ink,#201d1d)}.pe-file-input{display:none}