*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--gx-indigo: #6366F1;--gx-success: #14B8A6;--gx-warning: #F59E0B;--gx-error: #EF4444;--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-bg-elevated: #ffffff;--gx-border: #e2e8f0;--gx-text: #0f172a;--gx-text-muted: #64748b;--gx-text-inverted: #ffffff;--gx-text-bright: #0f172a;--gx-accent: #0d9488;--gx-accent-hover: #0f766e;--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-exact-bg: #ecfdf5;--gx-exact: #059669;--gx-exact-border: #a7f3d0;--gx-novel-bg: #fffbeb;--gx-novel: #b45309;--gx-novel-border: #fde68a;--gx-nohit-bg: #fef2f2;--gx-nohit: #dc2626;--gx-nohit-border: #fecaca;--gx-missing: #94a3b8;--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-bg-elevated: #1e293b;--gx-border: #334155;--gx-text: #f1f5f9;--gx-text-muted: #94a3b8;--gx-text-inverted: #0f172a;--gx-text-bright: #f1f5f9;--gx-accent: #2dd4bf;--gx-accent-hover: #14b8a6;--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-exact-bg: #052e1c;--gx-exact: #4ade80;--gx-exact-border: #166534;--gx-novel-bg: #2d1f04;--gx-novel: #fbbf24;--gx-novel-border: #854d0e;--gx-nohit-bg: #2d0f0f;--gx-nohit: #f87171;--gx-nohit-border: #7f1d1d;--gx-missing: #4b5e6d;--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-bg-elevated: #1e293b;--gx-border: #334155;--gx-text: #f1f5f9;--gx-text-muted: #94a3b8;--gx-text-inverted: #0f172a;--gx-text-bright: #f1f5f9;--gx-accent: #2dd4bf;--gx-accent-hover: #14b8a6;--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-exact-bg: #052e1c;--gx-exact: #4ade80;--gx-exact-border: #166534;--gx-novel-bg: #2d1f04;--gx-novel: #fbbf24;--gx-novel-border: #854d0e;--gx-nohit-bg: #2d0f0f;--gx-nohit: #f87171;--gx-nohit-border: #7f1d1d;--gx-missing: #4b5e6d;--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:none;border:1px solid var(--gx-border);border-radius:var(--gx-radius-pill);padding:.45rem .7rem;cursor:pointer;font-size:1.15rem;line-height:1;transition:all .2s;color:var(--gx-text)}.theme-toggle:hover{border-color:var(--gx-accent);transform:scale(1.05)}.tab-bar{display:flex;gap:0;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}.controls{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin-bottom:1.5rem}.controls .file-upload{grid-column:1;grid-row:1 / 3}.controls .scheme-selector{grid-column:2;grid-row:1;align-self:end}.controls .run-button{grid-column:2;grid-row:2;align-self:start}@media(max-width:768px){.controls{grid-template-columns:1fr}.controls .file-upload,.controls .scheme-selector,.controls .run-button{grid-column:1;grid-row:auto}}.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}.file-list{list-style:none;padding:0;margin:.75rem 0 0;display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center;max-height:5.5rem;overflow-y:auto}.file-list li{background:var(--gx-tag-bg);border:1px solid var(--gx-tag-border);padding:.2rem .65rem;border-radius:20px;font-size:.8rem;font-family:JetBrains Mono,Fira Code,monospace;color:var(--gx-tag-text)}.scheme-selector{display:flex;flex-direction:column;gap:.4rem}.scheme-selector label{font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;color:var(--gx-text-muted)}.scheme-selector select{width:100%;padding:.6rem .75rem;border:1px solid var(--gx-border);border-radius:var(--gx-radius);font-family:inherit;font-size:.95rem;background:var(--gx-bg);color:var(--gx-text);transition:border-color .2s,box-shadow .2s;box-shadow:var(--gx-shadow)}.scheme-selector select:focus{outline:none;border-color:var(--gx-accent);box-shadow:0 0 0 3px var(--gx-accent-dim)}.run-button{width:100%;padding:.75rem 2rem;background:var(--gx-gradient);color:#fff;border:none;border-radius:var(--gx-radius);font-family:inherit;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:0 2px 8px #0d94884d}.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{background:var(--gx-accent);color:#fff}.progress{margin-bottom:1.5rem;background:var(--gx-bg-alt);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:1.25rem 1.5rem;box-shadow:var(--gx-shadow)}.progress-bar{width:100%;height:8px;background:var(--gx-bg);border-radius:var(--gx-radius-sm);overflow:hidden;position:relative}.progress-fill{height:100%;background:var(--gx-gradient);transition:width .4s ease-out;border-radius:var(--gx-radius-sm);position:relative}.progress-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.3) 50%,transparent 100%);animation:shimmer 1.5s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.progress-text{margin:.6rem 0 0;font-size:.8rem;color:var(--gx-text-muted);font-family:JetBrains Mono,Fira Code,monospace}.error{background:#ef44441a;border:1px solid rgba(239,68,68,.2);border-radius:var(--gx-radius);padding:1rem 1.25rem;margin-bottom:1.5rem}.error p{margin:0;color:var(--gx-error);font-size:.9rem}.results{background:var(--gx-bg-alt);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding: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-table-container{overflow-x:auto;border-radius:var(--gx-radius);border:1px solid var(--gx-border)}.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}.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)}.results-table .filename-cell{font-family:JetBrains Mono,Fira Code,monospace;font-size:.82rem;color:var(--gx-text)}.st-cell,.allele-cell{font-family:JetBrains Mono,Fira Code,monospace;font-size:.82rem}.st-exact{font-weight:600}.st-exact .badge,.allele-exact .badge{background:var(--gx-exact-bg);color:var(--gx-exact);border:1px solid var(--gx-exact-border);padding:.15rem .5rem;border-radius:20px;font-size:.78rem;font-weight:500;display:inline-block}.st-novel .badge,.allele-novel .badge{background:var(--gx-novel-bg);color:var(--gx-novel);border:1px solid var(--gx-novel-border);padding:.15rem .5rem;border-radius:20px;font-size:.78rem;font-style:italic;display:inline-block}.st-nohit .badge,.allele-nohit .badge{background:var(--gx-nohit-bg);color:var(--gx-nohit);border:1px solid var(--gx-nohit-border);padding:.15rem .5rem;border-radius:20px;font-size:.78rem;display:inline-block}.allele-missing{color:var(--gx-missing)}.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-role{color:var(--gx-text-muted)!important;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:20px;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);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)}.results-actions{display:flex;gap:.5rem;align-items:center}.tree-button{padding:.45rem 1rem;background:var(--gx-gradient);color:#fff;border:none;border-radius:var(--gx-radius);font-family:inherit;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s}.tree-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 2px 8px #0d94884d}.tree-button:disabled{opacity:.7;cursor:not-allowed}.tree-section{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)}.tree-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.tree-header h2{margin:0;font-size:1.2rem;font-weight:700;color:var(--gx-text)}.tree-container{width:100%;height:500px;border-radius:var(--gx-radius);border:1px solid var(--gx-border);overflow:hidden}.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:JetBrains Mono,Fira Code,monospace}.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:JetBrains Mono,Fira Code,monospace;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}.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)}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:1.5rem}.stat-card{background:var(--gx-surface);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:1.25rem 1.5rem;box-shadow:var(--gx-shadow)}.stat-card-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--gx-text-muted);margin-bottom:.4rem}.stat-value{font-size:1.75rem;font-weight:800;letter-spacing:-.02em;background:var(--gx-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.2}.stat-sub{font-size:.8rem;color:var(--gx-text-muted);margin-top:.2rem}.viz-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin-top:1.5rem}.viz-full-width{grid-column:1 / -1}.viz-panel{background:var(--gx-surface);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:1.25rem 1.5rem;box-shadow:var(--gx-shadow);min-height:320px}.chart-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--gx-text-muted);margin-bottom:.75rem}.options-bar{display:flex;align-items:center;gap:1rem;margin-bottom:1.25rem;padding:.75rem 1rem;background:var(--gx-bg-alt);border:1px solid var(--gx-border);border-radius:var(--gx-radius)}.options-bar label{font-size:.85rem;font-weight:600;color:var(--gx-text-muted);text-transform:uppercase;letter-spacing:.04em}.options-bar input[type=number]{width:90px;padding:.35rem .5rem;border:1px solid var(--gx-border);border-radius:var(--gx-radius-sm);background:var(--gx-bg);color:var(--gx-text);font-family:JetBrains Mono,monospace;font-size:.85rem}.options-bar input[type=number]:focus{outline:none;border-color:var(--gx-accent);box-shadow:0 0 0 2px var(--gx-accent-dim)}.results-table .col-best{background:var(--gx-accent-dim)}@media(max-width:768px){.viz-grid{grid-template-columns:1fr}.viz-full-width{grid-column:1}}
