:root{--bg-primary: #ffffff;--bg-secondary: #f5f5f5;--bg-tertiary: #e8e8e8;--text-primary: #1a1a1a;--text-secondary: #666666;--text-muted: #999999;--accent-color: #3b82f6;--accent-hover: #2563eb;--border-color: #e5e7eb;--danger-color: #ef4444;--font-heading: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "SF Mono", "Monaco", "Inconsolata", "Fira Code", monospace;--spacing-unit: 8px;--spacing-sm: calc(var(--spacing-unit) * 1);--spacing-md: calc(var(--spacing-unit) * 2);--spacing-lg: calc(var(--spacing-unit) * 3);--spacing-xl: calc(var(--spacing-unit) * 4);--spacing-xxl: calc(var(--spacing-unit) * 6);--border-radius: 6px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07);--shadow-card: 0 4px 12px rgba(0, 0, 0, .08);--shadow-hover: 0 12px 24px rgba(0, 0, 0, .1);--transition-fast: .15s ease;--transition-normal: .3s cubic-bezier(.4, 0, .2, 1);--transition-slow: .5s ease}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background:var(--bg-secondary);color:var(--text-primary);line-height:1.6;min-height:100vh}#root{min-height:100vh}.app-header{background:var(--bg-primary);border-bottom:1px solid var(--border-color);padding:calc(var(--spacing-unit) * 2) calc(var(--spacing-unit) * 3);display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing-unit) * 2)}.header-title{display:flex;align-items:center;gap:calc(var(--spacing-unit) * 2)}.app-header h1{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.app-header .subtitle{color:var(--text-secondary);font-size:.9rem}.settings-btn{background:transparent;border:1px solid transparent;color:var(--text-secondary);padding:calc(var(--spacing-unit) * .75) calc(var(--spacing-unit) * 1.25);font-size:.85rem;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.settings-btn:hover{background:var(--bg-secondary);color:var(--text-primary)}.app-main{display:grid;grid-template-columns:.9fr 1.1fr 520px;gap:var(--spacing-lg);padding:var(--spacing-lg);flex:1;min-height:0}@media(max-width:1200px){.app-main{grid-template-columns:1fr;grid-template-rows:auto auto auto}}button{font-family:inherit;font-size:.9rem;padding:calc(var(--spacing-unit) * 1.5) calc(var(--spacing-unit) * 2);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);font-weight:500}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent-color);color:#fff}button.primary:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}button.secondary{background:transparent;border:1px solid var(--border-color);color:var(--text-primary)}button.secondary:hover:not(:disabled){background:var(--bg-secondary);border-color:var(--text-muted)}button.outline{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary)}button.outline:hover:not(:disabled){background:var(--bg-secondary);color:var(--text-primary);border-color:var(--text-muted)}input,textarea,select{font-family:inherit;font-size:.9rem;padding:calc(var(--spacing-unit) * 1.25) calc(var(--spacing-unit) * 1.5);border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-primary);color:var(--text-primary);transition:all var(--transition-fast)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px #3b82f61a}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:40px}label{display:block;font-size:.8rem;font-weight:500;color:var(--text-secondary);margin-bottom:calc(var(--spacing-unit) * .5);text-transform:uppercase;letter-spacing:.5px}.markdown-input-panel{background:var(--bg-primary);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-card);height:100%}.panel-header{padding:var(--spacing-md) var(--spacing-lg);display:flex;justify-content:space-between;align-items:center;opacity:.6;transition:opacity var(--transition-normal)}.panel-header:focus-within,.markdown-input-panel:has(.markdown-textarea:focus) .panel-header{opacity:.3}.panel-header h2{font-size:.9rem;font-weight:500;color:var(--text-primary);text-transform:uppercase;letter-spacing:1px}.char-count{font-size:.75rem;color:var(--text-muted)}.markdown-textarea{flex:1;border:none;resize:none;font-family:var(--font-mono);font-size:.95rem;line-height:1.7;padding:var(--spacing-xl) var(--spacing-xxl);min-height:400px;color:var(--text-primary);background:transparent}.markdown-textarea::placeholder{color:var(--text-muted)}.markdown-textarea:focus{outline:none;border:none}.markdown-hint{padding:var(--spacing-md) var(--spacing-lg);background:var(--bg-secondary);font-size:.8rem;color:var(--text-muted);opacity:.7;transition:opacity var(--transition-normal)}.markdown-hint code{background:var(--bg-tertiary);padding:.2em .4em;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.85em}.preview-canvas{background:var(--bg-primary);border-radius:var(--border-radius);border:1px solid var(--border-color);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-sm)}.preview-header{padding:calc(var(--spacing-unit) * 1.5) calc(var(--spacing-unit) * 2);border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.preview-header h3{font-size:.95rem;font-weight:600;color:var(--text-primary)}.page-info{font-size:.85rem;color:var(--text-secondary);font-weight:500}.page-wrapper{flex-shrink:0}.preview-content{flex:1;display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing-unit) * 2);background:var(--bg-secondary);overflow:hidden;position:relative;gap:calc(var(--spacing-unit) * 1.5)}.nav-arrow{position:relative;width:44px;height:44px;border-radius:50%;background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px #0000001a;flex-shrink:0;z-index:10}.nav-arrow:hover:not(:disabled){background:var(--accent-color);border-color:var(--accent-color);color:#fff;transform:scale(1.1);box-shadow:0 4px 12px #3b82f64d}.nav-arrow:active:not(:disabled){transform:scale(1.05)}.nav-arrow:disabled{opacity:.25;cursor:not-allowed;background:var(--bg-primary)}.nav-arrow svg{transition:transform .2s ease}.nav-arrow:hover:not(:disabled) svg{transform:scale(1.1)}.preview-placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--spacing-unit) * 2);color:var(--text-muted)}.preview-placeholder svg{opacity:.5}.page-container{box-shadow:var(--shadow-md)}.page-indicators{display:flex;gap:calc(var(--spacing-unit));padding:calc(var(--spacing-unit) * 2);border-top:1px solid var(--border-color);justify-content:center;flex-wrap:wrap}.page-indicators button{padding:calc(var(--spacing-unit) * .5) calc(var(--spacing-unit));font-size:.85rem;background:var(--bg-secondary);color:var(--text-secondary);border-radius:4px}.page-indicators button.active{background:var(--accent-color);color:#fff}.page-indicators button:hover{background:var(--bg-tertiary)}.page-indicators button.active:hover{background:var(--accent-hover)}.page-break-indicator{border-top:2px dashed var(--accent-color);margin:calc(var(--spacing-unit) * 2) 0;opacity:.5}.page-break-label{font-size:.75rem;color:var(--text-muted);text-align:center;margin-top:calc(var(--spacing-unit) * -1)}.font-size-adjuster{display:flex;align-items:center;gap:8px;padding:12px 0}.font-size-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;padding:0;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast);box-shadow:var(--shadow-sm)}.font-size-btn:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--text-muted);box-shadow:var(--shadow-md);transform:translateY(-1px)}.font-size-btn:active:not(:disabled){background:var(--bg-tertiary);transform:translateY(0);box-shadow:var(--shadow-sm)}.font-size-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.font-size-display{min-width:48px;text-align:center;font-size:14px;font-weight:600;color:var(--text-primary);-webkit-user-select:none;user-select:none}.font-size-reset{padding:8px 12px;margin-left:4px;font-size:13px;font-weight:500;color:var(--text-secondary);background:transparent;border:1px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all var(--transition-fast);box-shadow:var(--shadow-sm)}.font-size-reset:hover{background:var(--bg-secondary);border-color:var(--text-muted);color:var(--text-primary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.font-size-reset:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.style-preview-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2000;animation:fadeIn .15s ease-out}.style-preview-modal{width:90%;max-width:600px;height:80%;max-height:800px;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 8px 32px #00000080;display:flex;flex-direction:column;animation:slideUp .2s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.style-preview-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.style-preview-title-text{font-size:16px;font-weight:600;color:#333}.style-preview-close{background:none;border:none;font-size:28px;line-height:1;color:#666;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .15s}.style-preview-close:hover{background:#e0e0e0;color:#333}.style-preview-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:0;background:#fff}.style-preview-content::-webkit-scrollbar{width:10px}.style-preview-content::-webkit-scrollbar-track{background:#f1f1f1}.style-preview-content::-webkit-scrollbar-thumb{background:#888;border-radius:5px}.style-preview-content::-webkit-scrollbar-thumb:hover{background:#555}.rollback-confirm-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1001;animation:fadeIn .2s ease}.rollback-confirm-dialog{background:#fff;border-radius:16px;width:90%;max-width:500px;max-height:85vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d;animation:slideUp .3s ease}.rollback-confirm-content{padding:32px;display:flex;gap:24px;border-bottom:1px solid #e5e5e7}.rollback-preview{flex-shrink:0;width:150px;height:200px;background:#f5f5f7;border-radius:8px;overflow:hidden}.rollback-preview img{width:100%;height:100%;object-fit:cover}.rollback-preview .thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:48px}.rollback-info{flex:1;display:flex;flex-direction:column;gap:12px}.rollback-info h3{margin:0;font-size:20px;font-weight:600;color:#1a1a1a;line-height:1.3}.rollback-info p{margin:0;font-size:14px;color:#4a4a4a;line-height:1.6}.rollback-info .warning-text{color:#dc2626;background:#fee2e2;padding:8px 12px;border-radius:6px;font-size:13px;margin:0}.rollback-confirm-actions{padding:20px 32px;display:flex;gap:12px;justify-content:flex-end}.rollback-btn{padding:12px 24px;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s ease;border:none}.rollback-btn.cancel{background:#f5f5f7;color:#1a1a1a}.rollback-btn.cancel:hover{background:#e5e5e7}.rollback-btn.confirm{background:#dc2626;color:#fff}.rollback-btn.confirm:hover{background:#b91c1c}@media(max-width:600px){.rollback-confirm-content{flex-direction:column;padding:24px}.rollback-preview{width:100%;height:150px}.rollback-confirm-actions{flex-direction:column}.rollback-btn{width:100%}}.version-history-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.version-history-modal{background:#fff;border-radius:12px;width:90%;max-width:900px;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d;animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.version-history-header{padding:24px;border-bottom:1px solid #e5e5e7;display:flex;justify-content:space-between;align-items:center}.version-history-header h2{margin:0;font-size:24px;font-weight:600;color:#1a1a1a}.version-history-close{background:none;border:none;font-size:32px;color:#6b6b6b;cursor:pointer;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:all .2s ease}.version-history-close:hover{background:#f5f5f7;color:#1a1a1a}.version-history-loading,.version-history-empty{padding:80px 40px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.version-history-loading{color:#6b6b6b;font-size:16px}.version-history-empty .empty-icon{font-size:64px}.version-history-empty .empty-message{font-size:18px;font-weight:600;color:#1a1a1a;margin-bottom:8px}.version-history-empty .empty-description{font-size:14px;color:#6b6b6b}.version-history-list{padding:24px;overflow-y:auto;flex:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.version-item{border:1px solid #e5e5e7;border-radius:8px;overflow:hidden;transition:all .2s ease;display:flex;flex-direction:column}.version-item:hover{border-color:#007aff;box-shadow:0 4px 12px #007aff26;transform:translateY(-2px)}.version-thumbnail{width:100%;height:200px;background:#f5f5f7;display:flex;align-items:center;justify-content:center;position:relative}.version-thumbnail img{width:100%;height:100%;object-fit:cover}.version-thumbnail .thumbnail-placeholder{font-size:48px}.version-info{padding:16px;flex:1;display:flex;flex-direction:column;gap:8px}.version-header{display:flex;justify-content:space-between;align-items:center}.version-number{font-weight:700;font-size:18px;color:#1a1a1a}.version-source{font-size:12px;color:#6b6b6b;display:flex;align-items:center;gap:4px}.version-description{font-size:14px;color:#4a4a4a;font-weight:500}.version-date{font-size:12px;color:#9ca3af}.version-actions{padding:12px 16px;display:flex;gap:8px;border-top:1px solid #f5f5f7}.version-action-btn{flex:1;padding:8px 16px;border:1px solid #e5e5e7;border-radius:6px;background:#fff;color:#1a1a1a;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.version-action-btn:hover{background:#f5f5f7;border-color:#d4d4d8}.version-action-btn.rollback{background:#007aff;color:#fff;border-color:#007aff}.version-action-btn.rollback:hover{background:#0056b3;border-color:#0056b3}@media(max-width:768px){.version-history-modal{width:95%;max-height:90vh}.version-history-list{grid-template-columns:1fr;padding:16px}}.style-editor-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:calc(var(--spacing-unit) * 2)}.style-editor-modal{background:var(--bg-primary);border-radius:var(--border-radius);box-shadow:var(--shadow-md);width:100%;max-width:900px;max-height:90vh;display:flex;flex-direction:column}.style-editor-header{display:flex;justify-content:space-between;align-items:center;padding:calc(var(--spacing-unit) * 2);border-bottom:1px solid var(--border-color)}.style-editor-header h2{margin:0;font-size:1.2rem;font-weight:600;color:var(--text-primary)}.header-actions{display:flex;align-items:center;gap:calc(var(--spacing-unit) * .5)}.header-actions button{background:none;border:none;padding:calc(var(--spacing-unit) * .5);cursor:pointer;color:var(--text-secondary);border-radius:var(--border-radius);transition:background .15s ease,color .15s ease;display:flex;align-items:center;justify-content:center}.header-actions button:hover:not(:disabled){background:var(--bg-secondary);color:var(--text-primary)}.header-actions button:disabled{opacity:.4;cursor:not-allowed}.header-actions button.active{background:var(--accent-color);color:#fff}.header-actions button.active:hover{background:var(--accent-hover)}.header-actions .version-history-btn{color:var(--accent-color)}.header-actions .version-history-btn:hover{background:var(--accent-color);color:#fff}.style-editor-close{background:none;border:none;font-size:1.5rem;line-height:1;cursor:pointer;padding:calc(var(--spacing-unit));color:var(--text-secondary);border-radius:var(--border-radius);transition:background .15s ease}.style-editor-close:hover{background:var(--bg-secondary);color:var(--text-primary)}.style-editor-content{padding:calc(var(--spacing-unit));flex:1;display:flex;flex-direction:column;gap:calc(var(--spacing-unit));overflow-y:auto;min-height:0}.style-editor-hint{margin:0;font-size:.85rem;color:var(--text-muted);line-height:1.4;flex-shrink:0}.style-editor-textarea{flex:1;min-height:500px;font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:.9rem;line-height:1.5;padding:calc(var(--spacing-unit) * 1.5);border:1px solid var(--border-color);border-radius:var(--border-radius);background:var(--bg-secondary);color:var(--text-primary);resize:none;-moz-tab-size:2;tab-size:2}.style-editor-textarea:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 2px #228be61a}.style-editor-error{padding:calc(var(--spacing-unit) * 1.5);background:#fff3cd;border:1px solid #ffc107;border-radius:var(--border-radius);color:#856404;font-size:.9rem;line-height:1.4}.style-editor-error strong{display:block;margin-bottom:calc(var(--spacing-unit) * .5)}.style-editor-footer{display:flex;justify-content:flex-end;gap:calc(var(--spacing-unit));padding:calc(var(--spacing-unit) * 2);border-top:1px solid var(--border-color)}.style-editor-footer button{min-width:100px}.style-editor-footer button:disabled{opacity:.5;cursor:not-allowed}.prompt-footer{display:flex;justify-content:space-between;align-items:center;padding:calc(var(--spacing-unit)) 0}.char-count{font-size:.85rem;color:var(--text-muted)}.text-button{background:none;border:none;color:var(--accent-color);cursor:pointer;font-size:.85rem;padding:calc(var(--spacing-unit) * .5);border-radius:var(--border-radius);transition:background .15s ease}.text-button:hover{background:var(--bg-secondary);color:var(--accent-hover)}.settings-form{display:flex;flex-direction:column;gap:calc(var(--spacing-unit) * 1.5)}.form-field{display:flex;flex-direction:column;gap:calc(var(--spacing-unit) * .5)}.form-field label{font-size:.85rem;font-weight:500;color:var(--text-secondary)}.form-field input{font-family:inherit;font-size:.9rem;padding:calc(var(--spacing-unit) * 1.5);border:1px solid var(--border-color);border-radius:var(--border-radius);background:var(--bg-primary);color:var(--text-primary);transition:border-color .15s ease}.form-field input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 2px #228be61a}.form-field input.error{border-color:#dc3545}.form-field input.error:focus{border-color:#dc3545;box-shadow:0 0 0 2px #dc35451a}.field-error{font-size:.8rem;color:#dc3545}.settings-section{display:flex;flex-direction:column}.settings-section-title{font-size:.95rem;font-weight:600;color:var(--text-primary);margin-bottom:calc(var(--spacing-unit) * .5)}.preset-metadata-section{padding:calc(var(--spacing-unit));border-bottom:1px solid var(--border-color);margin-bottom:calc(var(--spacing-unit));flex-shrink:0}.preset-metadata-section .form-field{margin-bottom:calc(var(--spacing-unit) * .5)}.preset-metadata-section .form-field:last-child{margin-bottom:0}.confirm-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:3000;padding:calc(var(--spacing-unit) * 2)}.confirm-dialog{background:var(--bg-primary);border-radius:var(--border-radius);box-shadow:var(--shadow-lg);width:100%;max-width:400px;padding:calc(var(--spacing-unit) * 2)}.confirm-dialog h3{margin:0 0 calc(var(--spacing-unit)) 0;font-size:1.2rem;font-weight:600;color:var(--text-primary)}.confirm-dialog p{margin:0 0 calc(var(--spacing-unit) * 2) 0;color:var(--text-secondary);line-height:1.5}.confirm-dialog-actions{display:flex;justify-content:flex-end;gap:calc(var(--spacing-unit))}.confirm-dialog-actions button.danger{background:#dc3545;color:#fff;border:none}.confirm-dialog-actions button.danger:hover{background:#c82333}.ai-assistant-section{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:calc(var(--spacing-unit));margin-bottom:calc(var(--spacing-unit));flex-shrink:0}.ai-assistant-section h3{margin:0 0 calc(var(--spacing-unit)) 0;font-size:1rem;font-weight:600;color:var(--text-primary)}.ai-prompt-input{width:100%;font-family:inherit;font-size:.9rem;padding:calc(var(--spacing-unit) * 1.5);border:1px solid var(--border-color);border-radius:var(--border-radius);background:var(--bg-primary);color:var(--text-primary);resize:vertical;min-height:80px;line-height:1.5;transition:border-color .15s ease}.ai-prompt-input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 2px #228be61a}.ai-prompt-input:disabled{opacity:.6;cursor:not-allowed;background:var(--bg-secondary)}.ai-actions{display:flex;justify-content:flex-end;margin-top:calc(var(--spacing-unit))}.ai-actions button:disabled{opacity:.5;cursor:not-allowed}.ai-status{display:flex;align-items:center;gap:calc(var(--spacing-unit));padding:calc(var(--spacing-unit) * 1.5);border-radius:var(--border-radius);font-size:.9rem}.ai-status.ai-loading{background:var(--bg-secondary);color:var(--text-secondary)}.ai-status.ai-error{background:#fff3cd;border:1px solid #ffc107;color:#856404}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--text-muted);border-top-color:var(--accent-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.terminal-mini{background:#1e1e1e;border:1px solid #333;border-radius:var(--border-radius);padding:calc(var(--spacing-unit));margin-top:calc(var(--spacing-unit));cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease;max-height:200px;overflow:hidden}.terminal-mini:hover{border-color:var(--accent-color);box-shadow:0 0 0 2px #228be61a}.terminal-header{display:flex;align-items:center;font-family:SF Mono,Monaco,monospace;font-size:.8rem;color:#0f0;margin-bottom:calc(var(--spacing-unit) * .5)}.terminal-status{flex:1}.terminal-content{background:#0d0d0d;border-radius:calc(var(--border-radius) * .5);padding:calc(var(--spacing-unit));font-family:SF Mono,Monaco,monospace;font-size:.75rem;display:flex;flex-direction:column;gap:4px;height:120px;overflow:hidden;justify-content:flex-end}.terminal-line{display:flex;line-height:1.4;min-width:0}.terminal-message{color:#d4d4d4;white-space:pre;word-break:break-all}.terminal-footer{display:flex;justify-content:center;margin-top:calc(var(--spacing-unit) * .5)}.terminal-hint{font-family:SF Mono,Monaco,monospace;font-size:.7rem;color:#666;font-style:italic}.terminal-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2000;padding:calc(var(--spacing-unit) * 2)}.terminal-modal{background:#1e1e1e;border:1px solid #333;border-radius:var(--border-radius);box-shadow:var(--shadow-lg);width:100%;max-width:800px;max-height:90vh;display:flex;flex-direction:column}.terminal-modal-header{display:flex;justify-content:space-between;align-items:center;padding:calc(var(--spacing-unit) * 1.5);border-bottom:1px solid #333;background:#252525}.terminal-modal-header h3{margin:0;font-family:SF Mono,Monaco,monospace;font-size:1rem;font-weight:600;color:#0f0;display:flex;align-items:center;gap:calc(var(--spacing-unit) * .5)}.terminal-modal-header button{background:none;border:none;font-size:1.5rem;line-height:1;cursor:pointer;padding:calc(var(--spacing-unit) * .5);color:#666;border-radius:var(--border-radius);transition:color .15s ease}.terminal-modal-header button:hover{color:#d4d4d4;background:#ffffff1a}.terminal-modal-content{flex:1;overflow-y:auto;padding:calc(var(--spacing-unit) * 1.5);font-family:SF Mono,Monaco,monospace;font-size:.8rem;display:flex;flex-direction:column;gap:6px;background:#0d0d0d}.terminal-modal-content::-webkit-scrollbar{width:8px}.terminal-modal-content::-webkit-scrollbar-track{background:#1e1e1e}.terminal-modal-content::-webkit-scrollbar-thumb{background:#333;border-radius:4px}.terminal-modal-content::-webkit-scrollbar-thumb:hover{background:#444}.terminal-typing{animation:blink 1s step-end infinite}.terminal-typing:after{content:"█";color:#0f0;margin-left:2px}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.terminal-modal-footer{display:flex;justify-content:space-between;align-items:center;padding:calc(var(--spacing-unit) * 1.5);border-top:1px solid #333;background:#252525}.terminal-modal-footer .close-terminal-btn{padding:calc(var(--spacing-unit)) calc(var(--spacing-unit) * 2);background:#333;color:#d4d4d4;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:.85rem;transition:background .15s ease,color .15s ease}.terminal-modal-footer .close-terminal-btn:hover{background:#444;color:#fff}.style-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-lg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:modalFadeIn .2s ease}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.style-modal{background:var(--bg-primary);border-radius:var(--radius-xl);box-shadow:var(--shadow-hover);width:100%;max-width:900px;max-height:85vh;overflow-y:auto;animation:modalSlideUp .2s ease}@keyframes modalSlideUp{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.style-modal-loading{display:flex;justify-content:center;align-items:center;min-height:300px;color:var(--text-muted)}.style-modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) var(--spacing-xl);border-bottom:1px solid var(--border-color)}.style-modal-header h2{margin:0;font-size:18px;font-weight:600;color:var(--text-primary)}.style-modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:var(--text-muted);padding:var(--spacing-sm);line-height:1;border-radius:var(--radius-md);transition:all var(--transition-fast)}.style-modal-close:hover{background:var(--bg-secondary);color:var(--text-primary)}.style-modal-actions{padding:var(--spacing-md) var(--spacing-xl);border-bottom:1px solid var(--border-color)}.style-modal-create-btn{padding:var(--spacing-sm) var(--spacing-lg);background:var(--accent-color);border:none;border-radius:var(--radius-md);color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.style-modal-create-btn:hover{background:var(--accent-hover);transform:translateY(-1px)}.style-modal-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xxl);color:var(--text-muted)}.style-modal-empty .empty-icon{font-size:4rem;margin-bottom:var(--spacing-md)}.style-modal-empty .empty-message{font-size:1rem;color:var(--text-secondary);margin-bottom:var(--spacing-lg)}.empty-create-btn{padding:var(--spacing-sm) var(--spacing-lg);background:var(--accent-color);border:none;border-radius:var(--radius-md);color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.empty-create-btn:hover{background:var(--accent-hover)}.style-modal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:24px;padding:var(--spacing-xl)}.style-modal-card{position:relative;background:var(--bg-primary);border:2px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;transition:all var(--transition-normal)}.style-modal-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-hover);border-color:var(--text-muted)}.style-modal-card:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-color)}.style-modal-card.selected{border-color:var(--accent-color);box-shadow:0 0 0 3px #3b82f626}.card-thumbnail{position:relative;width:100%;aspect-ratio:4/5;background:var(--bg-secondary);overflow:hidden}.card-thumbnail img{width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform var(--transition-normal)}.style-modal-card:hover .card-thumbnail img{transform:scale(1.02)}.thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary);color:var(--text-muted);font-size:40px}.selected-indicator{position:absolute;top:8px;right:8px;width:24px;height:24px;background:var(--accent-color);border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #3b82f64d}.selected-indicator:after{content:"✓";color:#fff;font-size:14px;font-weight:700}.system-badge{position:absolute;top:8px;right:8px;padding:4px 10px;font-size:11px;background:#3b82f6f2;color:#fff;border-radius:9999px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;z-index:10}.card-actions{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;gap:var(--spacing-sm);opacity:0;transition:opacity var(--transition-fast)}.style-modal-card:hover .card-actions{opacity:1}.card-action-btn{width:48px;height:48px;background:#1e1e1ebf;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:all var(--transition-fast);box-shadow:0 4px 16px #0003,0 0 0 1px #ffffff1a inset}.card-action-btn:hover{background:#323232d9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transform:scale(1.08);box-shadow:0 6px 20px #0000004d,0 0 0 1px #fff3 inset}.card-action-btn.danger{background:#c82828bf;border-color:#ffffff26}.card-action-btn.danger:hover{background:#dc3232d9}.card-action-btn:focus-visible{outline:none;box-shadow:0 0 0 3px #3b82f680}.card-info{padding:var(--spacing-md)}.card-name{font-size:14px;font-weight:500;color:var(--text-primary);text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-meta{font-size:11px;color:var(--text-muted);margin-top:2px}.style-modal-confirm-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1100;animation:modalFadeIn .15s ease}.style-modal-confirm-dialog{background:var(--bg-primary);border-radius:var(--radius-lg);padding:var(--spacing-xl);max-width:400px;width:90%;box-shadow:var(--shadow-hover);animation:modalSlideUp .15s ease}.style-modal-confirm-dialog h3{margin:0 0 var(--spacing-md);font-size:16px;font-weight:600;color:var(--text-primary)}.style-modal-confirm-dialog p{margin:0 0 var(--spacing-lg);font-size:14px;color:var(--text-secondary)}.confirm-actions{display:flex;justify-content:flex-end;gap:var(--spacing-md)}.confirm-btn{padding:var(--spacing-sm) var(--spacing-lg);font-size:13px;font-weight:500;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.confirm-btn.cancel{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary)}.confirm-btn.cancel:hover{background:var(--bg-secondary);color:var(--text-primary)}.confirm-btn.danger{background:var(--danger-color);color:#fff}.confirm-btn.danger:hover{background:#dc2626}@media(prefers-reduced-motion:reduce){.style-modal-overlay,.style-modal,.style-modal-confirm-overlay,.style-modal-confirm-dialog{animation:none}}@media(max-width:600px){.style-modal-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--spacing-md);padding:var(--spacing-md)}.card-actions{opacity:1;gap:4px;padding:0 6px}.card-action-btn{width:36px;height:36px}.card-action-btn svg{width:16px;height:16px}}.control-panel{background:var(--bg-primary);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-card);height:100%}.panel-section{padding:var(--spacing-lg);border-bottom:1px solid var(--border-color)}.panel-section:last-child{border-bottom:none}.panel-section h3{font-size:11px;font-weight:500;color:var(--text-muted);margin-bottom:var(--spacing-md);text-transform:uppercase;letter-spacing:1px}.panel-section label{margin-bottom:var(--spacing-sm);font-size:12px;font-weight:500}.panel-section input,.panel-section select,.panel-section textarea{width:100%;margin-bottom:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);font-size:13px}.panel-section textarea{resize:vertical;min-height:80px}.dimension-inputs{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-md)}.hint{font-size:12px;color:var(--text-muted);margin-top:var(--spacing-sm);line-height:1.5}.hint.warning{color:#ff9800;font-weight:500;padding:var(--spacing-sm) var(--spacing-md);background:#ff98001a;border-radius:var(--radius-md)}.full-width{width:100%}.export-buttons{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-md)}.export-buttons .secondary{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary)}.export-buttons .secondary:hover:not(:disabled){background:var(--bg-secondary);color:var(--text-primary)}.undo-redo-buttons{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-md)}.icon-button{flex:1;padding:var(--spacing-sm);background:transparent;border:1px solid transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);border-radius:var(--radius-md)}.icon-button:hover:not(:disabled){background:var(--bg-secondary);color:var(--text-primary)}.icon-button:disabled{opacity:.3;cursor:not-allowed}.icon-button svg{width:16px;height:16px}.style-selector-button{width:100%;padding:12px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);margin-bottom:var(--spacing-md)}.style-selector-button:hover{border-color:var(--accent-color);box-shadow:var(--shadow-md)}.style-button-content{display:flex;align-items:center;gap:var(--spacing-md)}.style-thumbnail-small{width:48px;height:48px;border-radius:var(--radius-sm);overflow:hidden;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.style-thumbnail-small img{width:100%;height:100%;object-fit:cover}.style-thumbnail-small span{font-size:24px}.style-info{flex:1;display:flex;align-items:center;justify-content:space-between}.style-name{font-size:14px;font-weight:500;color:var(--text-primary)}.style-arrow{font-size:20px;color:var(--text-muted);transition:transform var(--transition-fast)}.style-selector-button:hover .style-arrow{transform:translate(2px);color:var(--accent-color)}.toggle-label{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;-webkit-user-select:none;user-select:none;margin-bottom:var(--spacing-md)}.toggle-label input[type=checkbox]{width:auto;margin:0;cursor:pointer}.toggle-label span{font-size:13px;color:var(--text-primary);cursor:pointer}.device-preset-manager{padding:20px}.device-preset-manager.loading{display:flex;justify-content:center;align-items:center;min-height:200px;color:#999}.device-preset-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.device-preset-header h3{margin:0;font-size:18px;font-weight:600;color:#333}.device-preset-form{padding:16px;background:#f9f9f9;border-radius:8px;margin-bottom:20px}.device-preset-form h4{margin:0 0 16px;font-size:16px;font-weight:600;color:#333}.form-row{display:flex;gap:16px}.form-row .form-group{flex:1}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:#555}.form-group input{width:100%;padding:8px 12px;font-size:14px;border:1px solid #ddd;border-radius:4px;box-sizing:border-box}.form-group input.error{border-color:#f44336}.error-text{display:block;margin-top:4px;font-size:12px;color:#f44336}.form-actions{display:flex;gap:12px;margin-top:20px}.device-preset-list{display:flex;flex-direction:column;gap:8px;max-height:400px;overflow-y:auto}.device-preset-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#fff;border:1px solid #e0e0e0;border-radius:6px;transition:all .2s}.device-preset-item:hover{background:#fafafa}.device-preset-item.active{background:#e3f2fd;border-color:#2196f3}.preset-info{flex:1}.preset-name{font-size:14px;font-weight:600;color:#333;margin-bottom:4px;display:flex;align-items:center;gap:8px}.preset-badge{padding:2px 6px;font-size:11px;background:#e0e0e0;color:#666;border-radius:3px}.preset-details{font-size:12px;color:#999}.preset-actions{display:flex;gap:6px;align-items:center}.preset-current{padding:4px 10px;font-size:12px;color:#4caf50;font-weight:500}.btn-select,.btn-edit,.btn-duplicate,.btn-delete,.btn-primary,.btn-secondary{padding:6px 12px;font-size:12px;border:none;border-radius:4px;cursor:pointer;transition:all .2s}.btn-select{background:#4caf50;color:#fff}.btn-select:hover{background:#45a049}.btn-edit{background:#2196f3;color:#fff}.btn-edit:hover{background:#1976d2}.btn-duplicate{background:#ff9800;color:#fff}.btn-duplicate:hover{background:#f57c00}.btn-delete{background:#f44336;color:#fff}.btn-delete:hover{background:#da190b}.btn-primary{background:#2196f3;color:#fff;padding:8px 16px;font-size:13px}.btn-primary:hover{background:#1976d2}.btn-secondary{background:#f0f0f0;color:#555}.btn-secondary:hover{background:#e0e0e0}.settings-editor-modal{max-width:700px;height:600px}.settings-tabs{display:flex;gap:4px;padding:0 calc(var(--spacing-unit) * 2);border-bottom:1px solid #e0e0e0;margin-bottom:calc(var(--spacing-unit) * 2)}.settings-tab{padding:10px 16px;font-size:13px;font-weight:500;color:#666;background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all .2s;border-radius:0}.settings-tab:hover{color:#333;background:#f5f5f5}.settings-tab.active{color:var(--accent-color);border-bottom-color:var(--accent-color);background:#228be60d}.settings-section{margin-bottom:calc(var(--spacing-unit) * 2)}.settings-section-title{margin:0 0 calc(var(--spacing-unit)) 0;font-size:14px;font-weight:600;color:#333}.settings-form{display:flex;flex-direction:column;gap:calc(var(--spacing-unit))}.form-field{display:flex;flex-direction:column;gap:4px}.form-field label{font-size:12px;font-weight:500;color:#555}.form-field input{padding:8px 12px;font-size:14px;border:1px solid #ddd;border-radius:4px}.form-field input.error{border-color:#f44336}.field-error{font-size:11px;color:#f44336}.text-button{padding:4px 10px;font-size:12px;color:#2196f3;background:transparent;border:1px solid #2196f3;border-radius:4px;cursor:pointer;transition:all .2s}.text-button:hover{background:#e3f2fd}.language-switcher{display:flex;align-items:center;gap:calc(var(--spacing-unit) * .5);padding:calc(var(--spacing-unit) * 1);background:var(--color-surface);border:1px solid var(--color-border);border-radius:calc(var(--spacing-unit) * .5);cursor:pointer;transition:all .2s ease;font-size:14px;font-weight:500;color:var(--color-text);-webkit-user-select:none;user-select:none}.language-switcher:hover{background:var(--color-hover);transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.language-switcher:focus{outline:2px solid var(--color-primary);outline-offset:2px}.language-option{transition:all .2s ease;color:var(--color-text-secondary);font-size:13px;font-weight:600}.language-option.active{color:var(--color-primary);font-weight:700}.language-divider{color:var(--color-text-tertiary);font-weight:300;font-size:14px}@media(max-width:600px){.language-switcher{padding:calc(var(--spacing-unit) * .75);font-size:13px}.language-option{font-size:12px}.language-divider{font-size:13px}}.app{min-height:100vh;display:flex;flex-direction:column}.header-actions{display:flex;align-items:center;gap:calc(var(--spacing-unit) * .75)}
