*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--gx-indigo: #6366F1;--gx-success: #16a34a;--gx-warning: #F59E0B;--gx-error: #EF4444;--gx-info: #2563eb;--gx-radius: 8px;--gx-radius-lg: 12px;--gx-radius-sm: 4px;--gx-radius-pill: 999px;--gx-transition: .2s ease;--gx-max-width: 1080px;--gx-nav-height: 60px;--gx-font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--gx-font-mono: "JetBrains Mono", "Fira Code", monospace;--gx-space-1: .25rem;--gx-space-2: .5rem;--gx-space-3: .75rem;--gx-space-4: 1rem;--gx-space-6: 1.5rem;--gx-space-8: 2rem;--gx-bg: #f8fafc;--gx-bg-alt: #f1f5f9;--gx-surface: #ffffff;--gx-surface-hover: #f1f5f9;--gx-border: #e2e8f0;--gx-text: #0f172a;--gx-text-muted: #64748b;--gx-text-inverted: #ffffff;--gx-accent: #0d9488;--gx-accent-hover: #0f766e;--gx-bg-elevated: var(--gx-surface);--gx-text-bright: var(--gx-text);--gx-accent-dim: rgba(13, 148, 136, .08);--gx-accent-15: rgba(13, 148, 136, .12);--gx-indigo-dim: rgba(99, 102, 241, .08);--gx-nav-bg: rgba(255, 255, 255, .9);--gx-code-bg: #f1f5f9;--gx-shadow: 0 1px 3px rgba(0, 0, 0, .08);--gx-shadow-md: 0 4px 12px rgba(0, 0, 0, .1);color-scheme:light;--gx-tag-bg: #f0fdfa;--gx-tag-text: #115e59;--gx-tag-border: #99f6e4;--gx-gradient: linear-gradient(135deg, #0d9488 0%, #06b6d4 100%)}[data-theme=dark]{--gx-bg: #0f172a;--gx-bg-alt: #1e293b;--gx-surface: #1e293b;--gx-surface-hover: #334155;--gx-border: #334155;--gx-text: #f1f5f9;--gx-text-muted: #94a3b8;--gx-text-inverted: #0f172a;--gx-accent: #2dd4bf;--gx-accent-hover: #14b8a6;--gx-success: #22c55e;--gx-warning: #fbbf24;--gx-error: #f87171;--gx-info: #60a5fa;--gx-bg-elevated: var(--gx-surface);--gx-text-bright: var(--gx-text);--gx-accent-dim: rgba(45, 212, 191, .1);--gx-accent-15: rgba(45, 212, 191, .15);--gx-indigo-dim: rgba(99, 102, 241, .1);--gx-nav-bg: rgba(15, 23, 42, .9);--gx-code-bg: #0f172a;--gx-shadow: 0 1px 3px rgba(0, 0, 0, .3);--gx-shadow-md: 0 4px 12px rgba(0, 0, 0, .4);color-scheme:dark;--gx-tag-bg: #0d2d2a;--gx-tag-text: #5eead4;--gx-tag-border: #134e4a;--gx-gradient: linear-gradient(135deg, #2dd4bf 0%, #22d3ee 100%)}@media (prefers-color-scheme: dark){:root:not([data-theme]){--gx-bg: #0f172a;--gx-bg-alt: #1e293b;--gx-surface: #1e293b;--gx-surface-hover: #334155;--gx-border: #334155;--gx-text: #f1f5f9;--gx-text-muted: #94a3b8;--gx-text-inverted: #0f172a;--gx-accent: #2dd4bf;--gx-accent-hover: #14b8a6;--gx-success: #22c55e;--gx-warning: #fbbf24;--gx-error: #f87171;--gx-info: #60a5fa;--gx-bg-elevated: var(--gx-surface);--gx-text-bright: var(--gx-text);--gx-accent-dim: rgba(45, 212, 191, .1);--gx-accent-15: rgba(45, 212, 191, .15);--gx-indigo-dim: rgba(99, 102, 241, .1);--gx-nav-bg: rgba(15, 23, 42, .9);--gx-code-bg: #0f172a;--gx-shadow: 0 1px 3px rgba(0, 0, 0, .3);--gx-shadow-md: 0 4px 12px rgba(0, 0, 0, .4);color-scheme:dark;--gx-tag-bg: #0d2d2a;--gx-tag-text: #5eead4;--gx-tag-border: #134e4a;--gx-gradient: linear-gradient(135deg, #2dd4bf 0%, #22d3ee 100%)}}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--gx-font-sans);background:var(--gx-bg);color:var(--gx-text);line-height:1.7;font-size:1rem;min-height:100vh;display:flex;flex-direction:column;transition:background-color .3s ease,color .3s ease}a{color:var(--gx-accent);text-decoration:none;transition:color var(--gx-transition)}a:hover{color:var(--gx-accent-hover)}.app{max-width:var(--gx-max-width);margin:0 auto;padding:2rem 2rem 1rem;min-height:100vh}.app-header{margin-bottom:2.5rem}.header-top{display:flex;align-items:center;justify-content:space-between}.app-header h1{margin:0;font-size:2.25rem;font-weight:800;letter-spacing:-.03em;background:var(--gx-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.subtitle{margin:.3rem 0 0;color:var(--gx-text-muted);font-size:.95rem;font-weight:400}.theme-toggle{background:var(--gx-bg-alt);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:.45rem .7rem;cursor:pointer;font-size:1.15rem;line-height:1;transition:all .2s;color:var(--gx-text);box-shadow:var(--gx-shadow)}.theme-toggle:hover{background:var(--gx-bg-elevated);border-color:var(--gx-accent);transform:scale(1.05)}.tab-bar{display:flex;margin-top:1.25rem;border-bottom:2px solid var(--gx-border)}.tab{padding:.6rem 1.5rem;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;font-family:inherit;font-size:.9rem;font-weight:500;color:var(--gx-text-muted);transition:color .2s,border-color .2s}.tab:hover{color:var(--gx-text)}.tab-active{color:var(--gx-accent);border-bottom-color:var(--gx-accent);font-weight:600}.db-loading{background:var(--gx-accent-dim);border:1px solid var(--gx-tag-border);border-radius:var(--gx-radius-lg);padding:.75rem 1.25rem;margin-bottom:1.5rem;font-size:.9rem;color:var(--gx-text-muted)}.controls-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin-bottom:1.5rem}@media (max-width: 768px){.controls-grid{grid-template-columns:1fr}}.file-upload-area{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:180px;border:2px dashed var(--gx-border);border-radius:var(--gx-radius-lg);padding:2rem 1.5rem;text-align:center;cursor:pointer;transition:all .25s;background:var(--gx-bg-alt);box-shadow:var(--gx-shadow)}.file-upload-area:hover{border-color:var(--gx-accent);background:var(--gx-accent-dim);box-shadow:var(--gx-shadow-md);transform:translateY(-1px)}.file-upload-area input[type=file]{display:none}.file-upload-icon{width:40px;height:40px;margin-bottom:.75rem;color:var(--gx-accent);opacity:.8}.file-upload-label{color:var(--gx-text);font-size:.9rem;line-height:1.5}.file-upload-hint{font-size:.8rem;color:var(--gx-text-muted);margin-top:.25rem}.species-selector{background:var(--gx-bg-alt);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:1.25rem;box-shadow:var(--gx-shadow)}.field-label{display:flex;align-items:center;gap:.5rem;font-size:.85rem;font-weight:600;color:var(--gx-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.5rem}.species-count{font-size:.75rem;font-weight:400;text-transform:none;letter-spacing:0;background:var(--gx-tag-bg);color:var(--gx-tag-text);border:1px solid var(--gx-tag-border);border-radius:var(--gx-radius-pill);padding:.1rem .5rem}.species-input{width:100%;padding:.6rem .85rem;background:var(--gx-bg-elevated);border:1px solid var(--gx-border);border-radius:var(--gx-radius);color:var(--gx-text);font-family:inherit;font-size:.95rem;transition:border-color .2s}.species-input:focus{outline:none;border-color:var(--gx-accent)}.species-input:disabled{opacity:.5;cursor:not-allowed}.filter-options{background:var(--gx-bg-alt);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:1.25rem;box-shadow:var(--gx-shadow);display:flex;flex-direction:column;gap:1rem}.field-group{display:flex;flex-direction:column;gap:.25rem}.field-hint{font-size:.75rem;color:var(--gx-text-muted)}.number-input,.select-input{width:100%;padding:.5rem .75rem;background:var(--gx-bg-elevated);border:1px solid var(--gx-border);border-radius:var(--gx-radius);color:var(--gx-text);font-family:inherit;font-size:.9rem;transition:border-color .2s}.number-input:focus,.select-input:focus{outline:none;border-color:var(--gx-accent)}.number-input:disabled,.select-input:disabled{opacity:.5}.format-badge{font-size:.72rem;font-weight:500;text-transform:none;letter-spacing:0;background:var(--gx-accent-dim);color:var(--gx-accent);border:1px solid var(--gx-accent);border-radius:var(--gx-radius-pill);padding:.1rem .5rem}.run-button{width:100%;padding:.75rem 2rem;background:var(--gx-gradient);color:#fff;border:none;border-radius:var(--gx-radius-lg);font-family:inherit;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:0 2px 8px #0d94884d;align-self:end}.run-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 16px #0d948866}.run-button:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 4px #0d94884d}.run-button:disabled{background:var(--gx-accent);cursor:not-allowed;box-shadow:none;opacity:.5}.export-button{padding:.45rem 1rem;background:var(--gx-bg-alt);color:var(--gx-accent);border:1px solid var(--gx-accent);border-radius:var(--gx-radius);font-family:inherit;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s}.export-button:hover:not(:disabled){background:var(--gx-accent);color:#fff}.export-button:disabled{opacity:.4;cursor:not-allowed}.error{background:#ef44441a;border:1px solid rgba(239,68,68,.2);border-radius:var(--gx-radius-lg);padding:1rem 1.25rem;margin-bottom:1.5rem}.error p{margin:0;color:var(--gx-error);font-size:.9rem}.summary-stats{background:var(--gx-bg-alt);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:1.5rem;margin-bottom:1.5rem;box-shadow:var(--gx-shadow)}.stats-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.stats-header h2{margin:0;font-size:1.2rem;font-weight:700}.format-tag{background:var(--gx-tag-bg);color:var(--gx-tag-text);border:1px solid var(--gx-tag-border);border-radius:var(--gx-radius-pill);padding:.2rem .65rem;font-size:.78rem;font-family:var(--gx-font-mono);text-transform:uppercase;letter-spacing:.05em}.stats-species{font-size:.9rem;color:var(--gx-text-muted);margin-bottom:1rem}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}@media (max-width: 600px){.stats-grid{grid-template-columns:repeat(2,1fr)}}.stat-card{background:var(--gx-bg-elevated);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:1rem;text-align:center}.stat-card--accent{border-color:var(--gx-accent);background:var(--gx-accent-dim)}.stat-card--warning{border-color:var(--gx-warning);background:#f59e0b0d}.stat-value{font-size:1.75rem;font-weight:800;color:var(--gx-text);line-height:1;font-family:var(--gx-font-mono)}.stat-card--accent .stat-value{color:var(--gx-accent)}.stat-label{font-size:.78rem;color:var(--gx-text-muted);margin-top:.25rem;text-transform:uppercase;letter-spacing:.04em}.results{background:var(--gx-bg-alt);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:1.5rem;margin-bottom:1.5rem;box-shadow:var(--gx-shadow)}.results-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.results-header h2{margin:0;font-size:1.2rem;font-weight:700;color:var(--gx-text)}.results-actions{display:flex;gap:.75rem;align-items:center}.results-count{font-size:.8rem;color:var(--gx-text-muted);font-family:var(--gx-font-mono)}.no-results{color:var(--gx-text-muted);font-size:.9rem;text-align:center;padding:1.5rem}.results-table-container{overflow-x:auto;border-radius:var(--gx-radius);border:1px solid var(--gx-border);max-height:400px;overflow-y:auto}.results-table{width:100%;border-collapse:collapse;font-size:.85rem}.results-table th,.results-table td{padding:.55rem .75rem;text-align:left;white-space:nowrap}.results-table th{background:var(--gx-bg-elevated);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--gx-text-muted);border-bottom:2px solid var(--gx-border);position:sticky;top:0;z-index:1}.results-table th.gene-col,.results-table td.gene-col{color:var(--gx-accent);font-weight:600;font-family:var(--gx-font-mono)}.results-table tbody tr{border-bottom:1px solid var(--gx-border);transition:background .15s}.results-table tbody tr:last-child{border-bottom:none}.results-table tbody tr:hover{background:var(--gx-bg-elevated)}.pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1rem}.page-btn{padding:.4rem 1rem;background:var(--gx-bg-elevated);border:1px solid var(--gx-border);border-radius:var(--gx-radius);color:var(--gx-text);font-family:inherit;font-size:.85rem;cursor:pointer;transition:all .2s}.page-btn:hover:not(:disabled){border-color:var(--gx-accent);color:var(--gx-accent)}.page-btn:disabled{opacity:.4;cursor:not-allowed}.page-info{font-size:.85rem;color:var(--gx-text-muted)}.log-console{background:var(--gx-bg-alt);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:1.5rem;margin-top:1.5rem;box-shadow:var(--gx-shadow)}.log-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.log-header h2{margin:0;font-size:1.2rem;font-weight:700;color:var(--gx-text)}.log-header-right{display:flex;align-items:center;gap:.75rem}.log-count{font-size:.8rem;color:var(--gx-text-muted);font-family:var(--gx-font-mono)}.copy-log-button{padding:.3rem .7rem;font-size:.75rem;font-weight:600;border:1px solid var(--gx-border);border-radius:6px;background:var(--gx-bg-alt);color:var(--gx-text-muted);cursor:pointer;transition:all .2s ease}.copy-log-button:hover{background:var(--gx-accent);color:#fff;border-color:var(--gx-accent)}.log-body{max-height:200px;overflow-y:auto;background:var(--gx-bg-elevated);border:1px solid var(--gx-border);border-radius:var(--gx-radius);padding:.75rem;font-family:var(--gx-font-mono);font-size:.78rem;line-height:1.6}.log-line{color:var(--gx-text);white-space:pre-wrap;word-break:break-all}.log-index{color:var(--gx-text-muted);margin-right:.75rem;user-select:none}.about-page{max-width:700px}.about-page section{background:var(--gx-bg-alt);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:1.75rem;margin-bottom:1.5rem;box-shadow:var(--gx-shadow)}.about-page h2{margin:0 0 .75rem;font-size:1.2rem;font-weight:700;color:var(--gx-text)}.about-page h3{margin:0 0 .25rem;font-size:1.1rem;font-weight:600;color:var(--gx-text)}.about-page p{margin:0 0 .75rem;color:var(--gx-text);line-height:1.7}.about-page .about-role{color:var(--gx-text-muted);font-size:.95rem}.about-links{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.about-links a{display:inline-flex;align-items:center;gap:.4rem;color:var(--gx-accent);text-decoration:none;font-size:.85rem;font-weight:500;padding:.35rem .85rem;border:1px solid var(--gx-border);border-radius:var(--gx-radius-pill);background:var(--gx-bg-elevated);transition:all .2s}.about-links a:hover{color:#fff;background:var(--gx-accent);border-color:var(--gx-accent)}.privacy-note{display:flex;align-items:flex-start;gap:.75rem;background:var(--gx-accent-dim);border:1px solid var(--gx-tag-border);border-radius:var(--gx-radius-lg);padding:1rem 1.25rem;margin-top:.5rem}.privacy-note svg{flex-shrink:0;width:20px;height:20px;color:var(--gx-accent);margin-top:.1rem}.privacy-note p{margin:0;font-size:.9rem;color:var(--gx-text)}.format-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.format-list li{padding:.5rem .75rem;background:var(--gx-bg-elevated);border:1px solid var(--gx-border);border-radius:var(--gx-radius);font-size:.9rem;line-height:1.5}.format-note{font-size:.85rem;color:var(--gx-text-muted);margin:0}.citation{background:var(--gx-bg-elevated);border-left:3px solid var(--gx-accent);border-radius:0 var(--gx-radius) var(--gx-radius) 0;padding:.75rem 1rem;font-size:.9rem;color:var(--gx-text-muted);font-style:italic;margin-top:.5rem}.citation a{color:var(--gx-accent)}.app-footer{margin-top:auto;border-top:1px solid var(--gx-border);padding:2rem;font-size:.8rem;color:var(--gx-text-muted)}.footer-inner{max-width:var(--gx-max-width);margin:0 auto;display:flex;justify-content:space-between;align-items:center}.footer-links{display:flex;gap:1.5rem}.footer-links a{color:var(--gx-text-muted);font-size:.8rem}.footer-links a:hover{color:var(--gx-accent)}
