body{margin:0;padding:0}:root,[data-theme=dark]{--msa-color-a:#4caf50;--msa-color-t:#f44336;--msa-color-g:#ff9800;--msa-color-c:#2196f3;--msa-color-gap:#3a3a3a;--color-bg:#1e1e1e;--color-header:#252526;--color-surface:#2d2d2d;--color-primary:#0d9488;--color-primary-hover:#0f766e;--color-danger:#ef4444;--color-danger-hover:#dc2626;--color-text:#e4e4e7;--color-text-muted:#a1a1aa;--color-border:#3f3f46;--color-button-bg:#3f3f46;--color-button-hover:#52525b;--color-button-active:#0d9488;--color-focus-ring:#0d948866;--color-surface-elevated:#323233;--header-height:48px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--font-family:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace;--font-size-xs:.7rem;--font-size-sm:.775rem;--font-size-base:.85rem;--border-radius:6px;--border-radius-lg:10px;--sidebar-width:320px;--shadow-sm:0 1px 2px #0003;--shadow-md:0 4px 16px #0000004d;--shadow-lg:0 8px 32px #0006;--transition-fast:.12s ease;--transition-base:.2s ease;--seqviz-text-fill:#d4d4d8;--seqviz-index-color:#71717a;--seqviz-line-stroke:#52525b}[data-theme=light]{--msa-color-a:#66bb6a;--msa-color-t:#ef5350;--msa-color-g:#ffa726;--msa-color-c:#42a5f5;--msa-color-gap:#e0e0e0;--color-bg:#fafafa;--color-header:#fff;--color-surface:#f4f4f5;--color-primary:#0d9488;--color-primary-hover:#0f766e;--color-danger:#ef4444;--color-danger-hover:#dc2626;--color-text:#18181b;--color-text-muted:#71717a;--color-border:#e4e4e7;--color-button-bg:#f4f4f5;--color-button-hover:#e4e4e7;--color-button-active:#0d9488;--color-focus-ring:#0d948840;--color-surface-elevated:#fff;--header-height:48px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--font-family:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace;--font-size-xs:.7rem;--font-size-sm:.775rem;--font-size-base:.85rem;--border-radius:6px;--border-radius-lg:10px;--sidebar-width:320px;--shadow-sm:0 1px 2px #0000000f;--shadow-md:0 4px 16px #0000001a;--shadow-lg:0 8px 32px #0000001f;--transition-fast:.12s ease;--transition-base:.2s ease;--seqviz-text-fill:#2a2a2a;--seqviz-index-color:#73777d;--seqviz-line-stroke:#73777d}.app{width:100vw;height:100vh;font-family:var(--font-family);color:var(--color-text);background:var(--color-bg);font-size:var(--font-size-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;line-height:1.5;display:flex;overflow:hidden}.app-header{align-items:center;gap:var(--spacing-sm);padding:0 var(--spacing-md);height:var(--header-height);min-height:var(--header-height);background:var(--color-header);border-bottom:1px solid var(--color-border);-webkit-user-select:none;user-select:none;flex-shrink:0;display:flex}.app-header h1{font-size:var(--font-size-base);white-space:nowrap;letter-spacing:-.01em;color:var(--color-text);margin:0;font-weight:600}.header-divider{background:var(--color-border);flex-shrink:0;width:1px;height:20px}.file-loader{align-items:center;display:flex}.file-loader button{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-button-bg);color:var(--color-text);font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);padding:5px 12px;line-height:1.4}.file-loader button:hover:not(:disabled){background:var(--color-button-hover);border-color:var(--color-text-muted)}.file-loader button:active:not(:disabled){transform:scale(.98)}.file-loader button:disabled{opacity:.5;cursor:not-allowed}.file-name{font-size:var(--font-size-sm);color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.viewer-controls{align-items:center;gap:var(--spacing-sm);flex:1;min-width:0;display:flex}.control-group{align-items:center;gap:6px;display:flex}.control-group label,.control-group span{font-size:var(--font-size-sm);color:var(--color-text-muted);white-space:nowrap}.control-group select{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-button-bg);color:var(--color-text);font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;transition:border-color var(--transition-fast);outline:none;padding:4px 8px}.control-group select:hover{border-color:var(--color-text-muted)}.control-group select:focus-visible{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.enzyme-control{position:relative}.enzyme-trigger{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-button-bg);color:var(--color-text);font-size:var(--font-size-sm);font-family:var(--font-family);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);padding:5px 12px;line-height:1.4}.enzyme-trigger:hover{background:var(--color-button-hover);border-color:var(--color-text-muted)}.enzyme-trigger.has-selection{border-color:var(--color-primary);color:var(--color-primary);background:#0d94881a}.enzyme-popup{background:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);z-index:50;min-width:200px;box-shadow:var(--shadow-lg);padding:0;animation:.15s ease-out popup-enter;position:absolute;top:calc(100% + 6px);left:0;overflow:hidden}@keyframes popup-enter{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.enzyme-popup-header{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--color-border);padding:10px 14px 8px;font-weight:600}.enzyme-popup-list{padding:var(--spacing-xs) 0;flex-direction:column;display:flex}.enzyme-popup-item{align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--color-text);cursor:pointer;transition:background var(--transition-fast);border-radius:0;margin:0;padding:6px 14px;display:flex}.enzyme-popup-item:hover{background:var(--color-surface)}.enzyme-popup-item input[type=checkbox]{accent-color:var(--color-primary);cursor:pointer;width:14px;height:14px;margin:0}.enzyme-popup-actions{border-top:1px solid var(--color-border);gap:var(--spacing-xs);padding:8px 14px;display:flex}.enzyme-popup-action-btn{border-radius:var(--border-radius);color:var(--color-text-muted);font-size:var(--font-size-xs);font-family:var(--font-family);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;padding:3px 8px}.enzyme-popup-action-btn:hover{background:var(--color-surface);color:var(--color-text)}.app-body{flex:1;min-height:0;display:flex;overflow:hidden}.main-content{flex-direction:column;flex:1;min-width:0;display:flex}.viewer-wrapper{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.seq-viewer{flex:1;min-height:0;overflow:hidden}.app-status{color:var(--color-text-muted);font-size:var(--font-size-base);flex:1;justify-content:center;align-items:center;display:flex}.app-error{color:var(--color-danger);font-size:var(--font-size-base);flex:1;justify-content:center;align-items:center;display:flex}.sidebar{width:var(--sidebar-width);border-left:1px solid var(--color-border);background:var(--color-header);transition:width var(--transition-base);flex-shrink:0;overflow-y:auto}.sidebar.collapsed{border-left:none;width:0;overflow:hidden}.sidebar::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-track{background:0 0}.sidebar::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.search-panel{padding:var(--spacing-md);border-bottom:1px solid var(--color-border)}.search-panel h3{margin:0 0 var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.search-input-row{gap:var(--spacing-xs);display:flex}.search-input{padding:6px var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm);font-family:var(--font-mono);min-width:0;transition:border-color var(--transition-fast);outline:none;flex:1}.search-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.search-input::placeholder{color:var(--color-text-muted)}.search-clear-btn{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text-muted);cursor:pointer;font-size:var(--font-size-sm);transition:all var(--transition-fast);background:0 0;line-height:1}.search-clear-btn:hover{background:var(--color-button-hover);color:var(--color-text)}.search-mismatch{align-items:center;gap:var(--spacing-xs);margin-top:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--color-text-muted);display:flex}.search-mismatch select{padding:2px var(--spacing-xs);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm);font-family:var(--font-family);outline:none}.search-mismatch select:focus-visible{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.search-nav{align-items:center;gap:var(--spacing-xs);margin-top:var(--spacing-sm);font-size:var(--font-size-sm);display:flex}.search-match-count{color:var(--color-text-muted);flex:1}.search-nav button{padding:3px var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text);cursor:pointer;font-size:var(--font-size-sm);font-family:var(--font-family);transition:all var(--transition-fast);background:0 0;line-height:1}.search-nav button:hover:not(:disabled){background:var(--color-button-hover)}.search-nav button:disabled{opacity:.35;cursor:not-allowed}.selection-info-panel{padding:var(--spacing-md);border-bottom:1px solid var(--color-border)}.selection-info-panel h3{margin:0 0 var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.selection-empty{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.selection-detail{margin-bottom:var(--spacing-xs);font-size:var(--font-size-sm)}.selection-detail .label{color:var(--color-text-muted)}.selection-detail .value{color:var(--color-text)}.selection-sequence{word-break:break-all;font-family:var(--font-mono);font-size:var(--font-size-sm);background:var(--color-surface);padding:var(--spacing-sm);border-radius:var(--border-radius);max-height:80px;margin-top:var(--spacing-xs);color:var(--color-text);border:1px solid var(--color-border);line-height:1.6;overflow-y:auto}.selection-toolbar{z-index:50;align-items:center;gap:var(--spacing-sm);padding:6px var(--spacing-md);background:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);white-space:nowrap;pointer-events:auto;-webkit-backdrop-filter:blur(12px);display:flex;position:fixed}.selection-toolbar-info{font-size:var(--font-size-sm);color:var(--color-text-muted);font-family:var(--font-mono);padding:0 var(--spacing-sm) 0 0;border-right:1px solid var(--color-border);margin-right:var(--spacing-xs)}.selection-toolbar-actions{gap:var(--spacing-xs);display:flex}.selection-toolbar-btn{border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text);cursor:pointer;font-size:var(--font-size-sm);font-family:var(--font-family);transition:all var(--transition-fast);background:0 0;padding:4px 10px}.selection-toolbar-btn:hover:not(:disabled){background:var(--color-button-hover);border-color:var(--color-text-muted)}.selection-toolbar-btn:disabled{opacity:.35;cursor:not-allowed}.selection-toolbar-btn-danger{color:var(--color-danger);border-color:#ef44444d}.selection-toolbar-btn-danger:hover:not(:disabled){background:var(--color-danger);border-color:var(--color-danger);color:#fff}.selection-toolbar-form{align-items:center;gap:var(--spacing-xs);display:flex}.selection-toolbar-input{padding:4px var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm);font-family:var(--font-family);width:120px;transition:border-color var(--transition-fast);outline:none}.selection-toolbar-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.selection-toolbar-input::placeholder{color:var(--color-text-muted)}.selection-toolbar-select{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm);font-family:var(--font-family);outline:none;padding:4px 6px}.selection-toolbar-select:focus-visible{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.cut-site-list{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-header);border-top:1px solid var(--color-border);font-size:var(--font-size-sm);max-height:120px;overflow-y:auto}.cut-site-list h3{margin:0 0 var(--spacing-xs);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.cut-site-groups{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.cut-site-group{gap:var(--spacing-xs);display:flex}.cut-site-group .enzyme-name{color:var(--color-primary);font-weight:600}.cut-site-group .cut-positions{color:var(--color-text-muted)}.annotation-list-panel{padding:var(--spacing-md);border-bottom:1px solid var(--color-border)}.annotation-list-panel h3{margin:0 0 var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.annotation-filters{gap:var(--spacing-xs);margin-bottom:var(--spacing-sm);display:flex}.annotation-search-input{padding:6px var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm);font-family:var(--font-family);min-width:0;transition:border-color var(--transition-fast);outline:none;flex:1}.annotation-search-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.annotation-search-input::placeholder{color:var(--color-text-muted)}.annotation-type-filter{padding:4px var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm);font-family:var(--font-family);outline:none}.annotation-type-filter:focus-visible{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.annotation-list{max-height:200px;margin-bottom:var(--spacing-sm);overflow-y:auto}.annotation-empty{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.annotation-item{padding:6px var(--spacing-sm);border-radius:var(--border-radius);cursor:pointer;transition:background var(--transition-fast)}.annotation-item:hover{background:var(--color-surface)}.annotation-item-header{justify-content:space-between;align-items:center;display:flex}.annotation-name{font-size:var(--font-size-sm);color:var(--color-text);font-weight:600}.annotation-delete-btn{padding:0 var(--spacing-xs);color:var(--color-text-muted);cursor:pointer;font-size:var(--font-size-base);opacity:0;transition:opacity var(--transition-fast), color var(--transition-fast);background:0 0;border:none;line-height:1}.annotation-item:hover .annotation-delete-btn{opacity:1}.annotation-delete-btn:hover{color:var(--color-danger)}.annotation-item-details{gap:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:2px;display:flex}.annotation-type-badge{background:var(--color-surface);border-radius:var(--border-radius);font-size:var(--font-size-xs);border:1px solid var(--color-border);padding:1px 6px}.annotation-add-btn{width:100%;padding:6px var(--spacing-sm);border:1px dashed var(--color-border);border-radius:var(--border-radius);color:var(--color-text-muted);cursor:pointer;font-size:var(--font-size-sm);font-family:var(--font-family);transition:all var(--transition-fast);background:0 0}.annotation-add-btn:hover{background:var(--color-surface);color:var(--color-text);border-color:var(--color-text-muted)}.annotation-add-form{gap:var(--spacing-xs);flex-direction:column;display:flex}.annotation-add-form input,.annotation-add-form select{padding:6px var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm);font-family:var(--font-family);transition:border-color var(--transition-fast);outline:none}.annotation-add-form input:focus,.annotation-add-form select:focus-visible{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.annotation-add-form input::placeholder{color:var(--color-text-muted)}.annotation-position-row{gap:var(--spacing-xs);display:flex}.annotation-position-row input{flex:1;min-width:0}.annotation-form-actions{gap:var(--spacing-xs);display:flex}.annotation-form-actions button{padding:6px var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text);cursor:pointer;font-size:var(--font-size-sm);font-family:var(--font-family);transition:all var(--transition-fast);background:0 0;flex:1}.annotation-form-actions button:hover{background:var(--color-button-hover)}.edit-panel{padding:var(--spacing-md);border-bottom:1px solid var(--color-border)}.edit-panel h3{margin:0 0 var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.edit-dirty-indicator{color:var(--color-primary);font-weight:700}.edit-section{margin-bottom:var(--spacing-sm)}.edit-section-label{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--spacing-xs)}.edit-input{width:100%;padding:6px var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm);font-family:var(--font-mono);box-sizing:border-box;margin-bottom:var(--spacing-xs);transition:border-color var(--transition-fast);outline:none}.edit-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.edit-input::placeholder{color:var(--color-text-muted)}.edit-validation-error{font-size:var(--font-size-sm);color:var(--color-danger);margin-bottom:var(--spacing-xs)}.edit-button-row{gap:var(--spacing-xs);display:flex}.edit-panel button{padding:5px var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text);cursor:pointer;font-size:var(--font-size-sm);font-family:var(--font-family);transition:all var(--transition-fast);background:0 0}.edit-panel button:hover:not(:disabled){background:var(--color-button-hover)}.edit-panel button:disabled{opacity:.35;cursor:not-allowed}.edit-delete-btn{width:100%}.edit-undo-redo{gap:var(--spacing-xs);padding-top:var(--spacing-sm);border-top:1px solid var(--color-border);display:flex}.edit-undo-redo button{flex:1}.save-dialog-overlay{-webkit-backdrop-filter:blur(4px);z-index:100;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.save-dialog{background:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);padding:var(--spacing-lg);min-width:300px;box-shadow:var(--shadow-lg)}.save-dialog h3{margin:0 0 var(--spacing-md);font-size:var(--font-size-base);font-weight:600}.save-format-group{gap:var(--spacing-sm);margin-bottom:var(--spacing-lg);flex-direction:column;display:flex}.save-format-group label{align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);cursor:pointer;padding:6px var(--spacing-sm);border-radius:var(--border-radius);transition:background var(--transition-fast);display:flex}.save-format-group label:hover{background:var(--color-surface)}.save-format-group label input[type=radio]{accent-color:var(--color-primary);margin:0}.save-dialog-actions{gap:var(--spacing-sm);justify-content:flex-end;display:flex}.save-dialog-actions button{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-button-bg);color:var(--color-text);cursor:pointer;font-size:var(--font-size-sm);font-family:var(--font-family);transition:all var(--transition-fast);padding:6px 16px}.save-dialog-actions button:hover{background:var(--color-button-hover)}.save-dialog-actions button:first-child{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.save-dialog-actions button:first-child:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.loading-overlay{justify-content:center;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);color:var(--color-text-muted);display:flex}.loading-spinner{border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.sidebar-toggle{padding:5px var(--spacing-sm);border-radius:var(--border-radius);color:var(--color-text-muted);font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;margin-left:auto;line-height:1}.sidebar-toggle:hover{background:var(--color-button-hover);color:var(--color-text)}.theme-toggle{padding:5px var(--spacing-sm);border-radius:var(--border-radius);color:var(--color-text-muted);font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;line-height:1}.theme-toggle:hover{background:var(--color-button-hover);color:var(--color-text)}.render-metrics{font-size:var(--font-size-xs);color:var(--color-text-muted);background:var(--color-surface);border-radius:var(--border-radius);white-space:nowrap;font-family:var(--font-mono);padding:2px 8px}text.la-vz-seq,text.la-vz-comp-seq{fill:var(--seqviz-text-fill)!important}text.la-vz-index-tick-label{fill:var(--seqviz-index-color)!important}.la-vz-annotation-label{fill:var(--seqviz-text-fill)!important;color:var(--seqviz-text-fill)!important}text.la-vz-circular-label{fill:var(--seqviz-text-fill)!important}.la-vz-index-line,.la-vz-index-tick,.la-vz-cut-site{stroke:var(--seqviz-line-stroke)!important}text.la-vz-cut-site-text{fill:var(--seqviz-text-fill)!important}.la-vz-selection-edge{fill:var(--seqviz-index-color)!important;stroke:var(--seqviz-index-color)!important}.la-vz-label-line{stroke:var(--seqviz-line-stroke)!important}text.la-vz-handle-label,text.la-vz-translation-amino-acid-label{fill:var(--seqviz-text-fill)!important}.la-vz-primer-label{fill:var(--seqviz-text-fill)!important;color:var(--seqviz-text-fill)!important}.msa-toggle{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-button-bg);color:var(--color-text-muted);font-size:var(--font-size-xs);font-weight:600;font-family:var(--font-mono);cursor:pointer;letter-spacing:.04em;transition:all var(--transition-fast);padding:4px 10px;line-height:1.4}.msa-toggle:hover{background:var(--color-button-hover);color:var(--color-text);border-color:var(--color-text-muted)}.msa-toggle.active{border-color:var(--color-primary);color:var(--color-primary);background:#0d94881a}.msa-panel{border-bottom:1px solid var(--color-border);background:var(--color-header);flex-direction:column;flex-shrink:0;max-height:50vh;animation:.15s ease-out msa-panel-enter;display:flex}@keyframes msa-panel-enter{0%{opacity:0;max-height:0}to{opacity:1;max-height:50vh}}.msa-panel-header{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--color-border);flex-shrink:0;display:flex}.msa-panel-header h3{font-size:var(--font-size-sm);color:var(--color-text);margin:0;font-weight:600}.msa-panel-badge{font-size:var(--font-size-xs);color:var(--color-text-muted);background:var(--color-surface);border-radius:var(--border-radius);font-family:var(--font-mono);padding:1px 6px}.msa-panel-close{border-radius:var(--border-radius);color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;margin-left:auto;padding:2px 6px}.msa-panel-close:hover{background:var(--color-button-hover);color:var(--color-text)}.msa-panel-body{padding:var(--spacing-sm) var(--spacing-md);flex:1;min-height:0;overflow-y:auto}.msa-input-form{gap:var(--spacing-sm);flex-direction:column;display:flex}.msa-input-toolbar{align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.msa-input-toolbar button{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-button-bg);color:var(--color-text);font-size:var(--font-size-xs);cursor:pointer;transition:all var(--transition-fast);padding:3px 10px}.msa-input-toolbar button:hover:not(:disabled){background:var(--color-button-hover);border-color:var(--color-text-muted)}.msa-input-toolbar button:disabled{opacity:.5;cursor:not-allowed}.msa-input-stype{align-items:center;gap:4px;margin-left:auto;display:flex}.msa-input-stype label{font-size:var(--font-size-xs);color:var(--color-text-muted)}.msa-input-stype select{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-button-bg);color:var(--color-text);font-size:var(--font-size-xs);cursor:pointer;padding:2px 6px}.msa-input-textarea{width:100%;padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-surface);color:var(--color-text);font-family:var(--font-mono);font-size:var(--font-size-xs);resize:vertical;min-height:80px;transition:border-color var(--transition-fast);outline:none}.msa-input-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.msa-input-textarea::placeholder{color:var(--color-text-muted);opacity:.6}.msa-input-actions{align-items:center;gap:var(--spacing-sm);display:flex}.msa-email-input{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-xs);font-family:var(--font-family);width:180px;transition:border-color var(--transition-fast);outline:none;padding:3px 8px}.msa-email-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-focus-ring)}.msa-seq-count{font-size:var(--font-size-xs);color:var(--color-text-muted);font-family:var(--font-mono)}.msa-run-btn{border:1px solid var(--color-primary);border-radius:var(--border-radius);background:var(--color-primary);color:#fff;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);margin-left:auto;padding:5px 14px;font-weight:500}.msa-run-btn:hover:not(:disabled){background:var(--color-primary-hover)}.msa-run-btn:disabled{opacity:.4;cursor:not-allowed}.msa-cancel-btn{border:1px solid var(--color-danger);border-radius:var(--border-radius);color:var(--color-danger);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;margin-left:auto;padding:4px 12px}.msa-cancel-btn:hover{background:#ef44441a}.msa-status-indicator{font-size:var(--font-size-xs);color:var(--color-primary);align-items:center;gap:6px;display:flex}.msa-spinner{border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin;display:inline-block}.msa-error{padding:var(--spacing-sm);border:1px solid var(--color-danger);border-radius:var(--border-radius);color:var(--color-danger);font-size:var(--font-size-xs);background:#ef444414}.msa-result{gap:var(--spacing-sm);flex-direction:column;display:flex}.msa-result-toolbar{align-items:center;gap:var(--spacing-sm);display:flex}.msa-result-info{font-size:var(--font-size-xs);color:var(--color-text-muted);font-family:var(--font-mono)}.msa-result-toolbar button{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-button-bg);color:var(--color-text);font-size:var(--font-size-xs);cursor:pointer;transition:all var(--transition-fast);margin-left:auto;padding:3px 10px}.msa-result-toolbar button:hover{background:var(--color-button-hover);border-color:var(--color-text-muted)}.msa-alignment-container{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-surface);max-height:35vh;overflow:auto}.msa-alignment-scroll{min-width:100%;padding:var(--spacing-xs);display:inline-block}.msa-alignment-row{white-space:nowrap;line-height:1.6;display:flex}.msa-seq-name{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--color-text-muted);padding-right:var(--spacing-sm);text-align:right;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;flex-shrink:0;overflow:hidden}.msa-seq-residues{font-family:var(--font-mono);font-size:var(--font-size-xs);letter-spacing:0}.msa-residue{text-align:center;color:#fff;border-radius:1px;width:1ch;display:inline-block}.msa-ruler-row .msa-seq-residues{color:var(--color-text-muted);font-size:calc(var(--font-size-xs) * .85);opacity:.6}.msa-consensus-row{border-top:1px solid var(--color-border);margin-top:2px;padding-top:2px}.msa-consensus-row .msa-seq-name{color:var(--color-text);font-weight:600}.msa-consensus-row .msa-seq-residues{color:var(--color-primary);font-weight:600}
