*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f5f5f5;--surface:#ffffff;--border:#e0e0e0;--text:#1a1a1a;--text-secondary:#666666;--primary:#2563eb;--primary-hover:#1d4ed8;--danger:#dc2626;--danger-hover:#b91c1c;--selected-bg:rgba(59,130,246,0.3);--selected-border:rgba(59,130,246,0.6)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}.app{min-height:100vh;display:flex;flex-direction:column}.header{background:var(--surface);border-bottom:1px solid var(--border);padding:12px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.header h1{font-size:1.25rem;font-weight:600}.header-controls{gap:16px}.header-controls,.page-nav{display:flex;align-items:center}.page-nav{gap:8px}.page-nav span{min-width:100px;text-align:center;font-size:.875rem;color:var(--text-secondary)}button{padding:6px 14px;border:1px solid var(--border);border-radius:4px;background:var(--surface);cursor:pointer;font-size:.875rem;transition:background .15s,border-color .15s}button:hover:not(:disabled){background:var(--bg)}button:disabled{opacity:.5;cursor:not-allowed}.export-btn{background:var(--primary);color:white;border-color:var(--primary)}.export-btn:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.main{flex:1 1;padding:20px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;text-align:center;gap:16px}.empty-state h2{font-size:1.5rem;font-weight:600}.empty-state p{color:var(--text-secondary)}.file-picker-label{display:inline-block;padding:10px 24px;background:var(--primary);color:white;border-radius:6px;cursor:pointer;font-weight:500;transition:background .15s}.file-picker-label:hover{background:var(--primary-hover)}.file-picker-label input{display:none}.error{color:var(--danger);font-size:.875rem;margin-top:8px}.loading{padding:20px;text-align:center;color:var(--text-secondary)}.editor-layout{display:flex;gap:20px;align-items:flex-start}.viewer-area{flex:1 1;background:var(--surface);border:1px solid var(--border);border-radius:6px;overflow:auto;max-height:calc(100vh - 120px)}.canvas-container{display:inline-block;position:relative}.canvas-container canvas{display:block}.text-layer{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}.text-item{pointer-events:auto;outline:1px dashed rgba(59,130,246,.15);outline-offset:1px;transition:background-color .1s,outline-color .1s}.text-item:hover{background:rgba(59,130,246,.25);outline-color:rgba(59,130,246,.5)}.text-item.selected{background:rgba(59,130,246,.35);border:2px solid rgba(59,130,246,.8);outline:none}.sidebar{width:300px;flex-shrink:0;display:flex;flex-direction:column;gap:16px}.text-edit-panel{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:16px}.text-edit-panel h3{font-size:1rem;margin-bottom:12px}.hint{color:var(--text-secondary);font-size:.875rem}.edit-section{margin-bottom:12px}.edit-section label{display:block;font-size:.75rem;font-weight:500;color:var(--text-secondary);margin-bottom:4px;text-transform:uppercase}.original-text{padding:8px;background:var(--bg);border-radius:4px;font-family:monospace;font-size:.875rem;word-break:break-word;min-height:36px}.edit-section input{width:100%;padding:8px;border:1px solid var(--border);border-radius:4px;font-size:.875rem}.edit-section input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px rgba(37,99,235,.15)}.edit-actions{display:flex;gap:8px}.edit-actions button{flex:1 1}.remove-btn{border-color:var(--danger);color:var(--danger)}.remove-btn:hover:not(:disabled){background:var(--danger);color:white}.note{font-size:.75rem;color:var(--text-secondary);margin-top:12px;line-height:1.4}.edits-list{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:16px}.edits-list h4{font-size:.875rem;margin-bottom:8px}.edits-list ul{list-style:none;font-size:.8rem}.edits-list li{padding:6px 0;border-bottom:1px solid var(--border);word-break:break-word}.edits-list li:last-child{border-bottom:none}