*,*: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%)}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{min-height:100vh;display:flex;flex-direction:column;background:var(--gx-bg);color:var(--gx-text)}.app-main{flex:1;max-width:var(--gx-max-width);width:100%;margin:0 auto;padding:var(--gx-space-6) var(--gx-space-4)}.app-header{background:var(--gx-nav-bg);backdrop-filter:blur(8px);border-bottom:1px solid var(--gx-border);position:sticky;top:0;z-index:100;padding:var(--gx-space-4) var(--gx-space-4) 0}.header-top{display:flex;align-items:center;justify-content:space-between;max-width:var(--gx-max-width);margin:0 auto}.app-title{font-size:1.75rem;font-weight:800;letter-spacing:-.03em;line-height:1}.app-title-accent{color:var(--gx-accent)}.subtitle{color:var(--gx-text-muted);font-size:.875rem;margin-top:var(--gx-space-1);max-width:var(--gx-max-width);margin-left:auto;margin-right:auto}.theme-toggle{background:none;border:1px solid var(--gx-border);border-radius:var(--gx-radius);color:var(--gx-text-muted);cursor:pointer;padding:var(--gx-space-2);display:flex;align-items:center;justify-content:center;transition:background var(--gx-transition),color var(--gx-transition)}.theme-toggle:hover{background:var(--gx-surface-hover);color:var(--gx-text)}.tab-bar{display:flex;gap:0;max-width:var(--gx-max-width);margin:var(--gx-space-4) auto 0}.tab-btn{background:none;border:none;border-bottom:2px solid transparent;color:var(--gx-text-muted);cursor:pointer;font-size:.9rem;font-weight:500;padding:var(--gx-space-2) var(--gx-space-4);transition:color var(--gx-transition),border-color var(--gx-transition)}.tab-btn:hover{color:var(--gx-text)}.tab-btn--active{border-bottom-color:var(--gx-accent);color:var(--gx-accent)}.file-upload-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1rem}@media (max-width: 768px){.file-upload-grid{grid-template-columns:1fr}}.file-upload-slot{background:var(--gx-surface);border:2px dashed var(--gx-border);border-radius:var(--gx-radius-lg);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--gx-space-2);min-height:150px;padding:var(--gx-space-4);position:relative;text-align:center;transition:border-color var(--gx-transition),background var(--gx-transition),transform var(--gx-transition);user-select:none}.file-upload-slot:hover:not(.file-upload-slot--disabled){border-color:var(--gx-accent);background:var(--gx-accent-dim)}.file-upload-slot:focus-visible{outline:2px solid var(--gx-accent);outline-offset:2px}.file-upload-slot--filled{border-color:var(--gx-accent);background:var(--gx-accent-dim)}.file-upload-slot--drag-over{border-color:var(--gx-accent);background:var(--gx-accent-15);transform:scale(1.02)}.file-upload-slot--disabled{cursor:not-allowed;opacity:.6}.file-upload-slot-icon{color:var(--gx-accent);opacity:.7}.file-upload-slot--filled .file-upload-slot-icon{opacity:1}.file-upload-slot-label{font-weight:600;font-size:.9rem;color:var(--gx-text)}.file-upload-slot-hint{font-size:.78rem;color:var(--gx-text-muted);line-height:1.4}.file-upload-slot-filename{font-size:.78rem;color:var(--gx-accent);font-family:var(--gx-font-mono);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.file-upload-slot-clear{position:absolute;top:.4rem;right:.5rem;background:none;border:none;color:var(--gx-text-muted);cursor:pointer;font-size:1.1rem;line-height:1;padding:.2rem .35rem;border-radius:var(--gx-radius-sm);transition:color var(--gx-transition),background var(--gx-transition)}.file-upload-slot-clear:hover{color:var(--gx-error);background:#ef44441a}.run-bar{display:flex;align-items:center;gap:var(--gx-space-4);margin-bottom:var(--gx-space-4)}.btn-run{align-items:center;background:var(--gx-accent);border:none;border-radius:var(--gx-radius);color:#fff;cursor:pointer;display:inline-flex;font-size:1rem;font-weight:600;gap:var(--gx-space-2);padding:.65rem 1.5rem;transition:background var(--gx-transition),opacity var(--gx-transition)}.btn-run:hover:not(:disabled){background:var(--gx-accent-hover)}.btn-run:disabled{cursor:not-allowed;opacity:.5}.run-hint{color:var(--gx-text-muted);font-size:.85rem}@keyframes spin{to{transform:rotate(360deg)}}.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.progress-area{margin-bottom:var(--gx-space-6)}.progress-bar-wrap{background:var(--gx-bg-alt);border-radius:var(--gx-radius-pill);height:8px;margin-bottom:var(--gx-space-2);overflow:hidden;width:100%}.progress-bar-fill{background:var(--gx-gradient);border-radius:var(--gx-radius-pill);height:100%;transition:width .3s ease}.progress-msg{color:var(--gx-text-muted);font-size:.875rem;margin-bottom:var(--gx-space-4)}.error-area{margin-bottom:var(--gx-space-6)}.error-box{background:#ef444414;border:1px solid var(--gx-error);border-radius:var(--gx-radius);color:var(--gx-error);margin-bottom:var(--gx-space-4);padding:var(--gx-space-4)}.log-console{background:var(--gx-code-bg);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);overflow:hidden}.log-header{align-items:center;background:var(--gx-surface);border-bottom:1px solid var(--gx-border);display:flex;justify-content:space-between;padding:var(--gx-space-2) var(--gx-space-4)}.log-title{color:var(--gx-text-muted);font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.log-copy-btn{background:none;border:1px solid var(--gx-border);border-radius:var(--gx-radius-sm);color:var(--gx-text-muted);cursor:pointer;font-size:.78rem;padding:.2rem .6rem;transition:background var(--gx-transition),color var(--gx-transition)}.log-copy-btn:hover:not(:disabled){background:var(--gx-surface-hover);color:var(--gx-text)}.log-copy-btn:disabled{cursor:not-allowed;opacity:.4}.log-body{font-family:var(--gx-font-mono);font-size:.78rem;line-height:1.6;max-height:280px;overflow-y:auto;padding:var(--gx-space-2) 0}.log-empty{color:var(--gx-text-muted);padding:var(--gx-space-4);text-align:center}.log-line{display:flex;gap:var(--gx-space-3);padding:.05rem var(--gx-space-4)}.log-line:hover{background:var(--gx-surface-hover)}.log-index{color:var(--gx-text-muted);min-width:2rem;text-align:right;user-select:none}.log-text{color:var(--gx-text);white-space:pre-wrap;word-break:break-all}.results-area{margin-top:var(--gx-space-4)}.results-layout{display:grid;grid-template-columns:280px 1fr;gap:1.25rem;margin-bottom:1.5rem}@media (max-width: 768px){.results-layout{grid-template-columns:1fr}}.stats-panel{background:var(--gx-surface);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:var(--gx-space-4)}.stats-panel-title{color:var(--gx-text);font-size:.95rem;font-weight:700;margin-bottom:var(--gx-space-4)}.stats-table{border-collapse:collapse;font-size:.85rem;width:100%}.stats-table th,.stats-table td{padding:var(--gx-space-2) var(--gx-space-2);text-align:right}.stats-table th{border-bottom:1px solid var(--gx-border);color:var(--gx-text-muted);font-size:.75rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}.stats-table td.stats-table-label,.stats-table th.stats-table-label{text-align:left}.stats-table tr:not(:last-child) td{border-bottom:1px solid var(--gx-border)}.stats-table td.stats-table-before{color:var(--gx-text-muted)}.stats-table td.stats-improved{color:var(--gx-success);font-weight:600}.contig-graph{width:100%;border-radius:var(--gx-radius-lg);border:1px solid var(--gx-border);background:var(--gx-bg-alt);overflow:hidden}.contig-graph--empty{align-items:center;display:flex;height:200px;justify-content:center}.contig-graph-empty-msg{color:var(--gx-text-muted);font-size:.9rem}.contig-graph-meta{align-items:center;background:var(--gx-surface);border-bottom:1px solid var(--gx-border);display:flex;flex-wrap:wrap;gap:var(--gx-space-2);padding:var(--gx-space-2) var(--gx-space-4);font-size:.8rem}.contig-graph-stat{color:var(--gx-text-muted);font-weight:500}.contig-graph-sep{color:var(--gx-border)}.contig-graph-legend{color:var(--gx-text-muted);margin-left:auto;font-size:.75rem}.contig-graph-svg{display:block;width:100%;height:400px}.download-bar{display:flex;flex-wrap:wrap;gap:var(--gx-space-3);margin-bottom:var(--gx-space-4)}.btn-download{align-items:center;background:var(--gx-accent);border:none;border-radius:var(--gx-radius);color:#fff;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:600;gap:var(--gx-space-2);padding:.55rem 1.2rem;transition:background var(--gx-transition)}.btn-download:hover{background:var(--gx-accent-hover)}.btn-download--secondary{background:transparent;border:1px solid var(--gx-accent);color:var(--gx-accent)}.btn-download--secondary:hover{background:var(--gx-accent-dim)}.log-details{margin-top:var(--gx-space-4)}.log-details summary{color:var(--gx-text-muted);cursor:pointer;font-size:.85rem;margin-bottom:var(--gx-space-2);user-select:none}.log-details summary:hover{color:var(--gx-text)}.log-details[open] summary{margin-bottom:var(--gx-space-3)}.section-heading{font-size:1.3rem;font-weight:700;margin-bottom:var(--gx-space-4)}.how-it-works{max-width:700px}.how-it-works-intro{color:var(--gx-text-muted);margin-bottom:var(--gx-space-6)}.algorithm-steps{display:flex;flex-direction:column;gap:var(--gx-space-4);margin-bottom:var(--gx-space-6)}.algorithm-step{background:var(--gx-surface);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);display:flex;gap:var(--gx-space-4);padding:var(--gx-space-4)}.algorithm-step-number{align-items:center;background:var(--gx-gradient);border-radius:50%;color:#fff;display:flex;flex-shrink:0;font-size:.9rem;font-weight:700;height:2rem;justify-content:center;width:2rem}.algorithm-step-content h3{font-size:.95rem;font-weight:700;margin-bottom:var(--gx-space-2)}.algorithm-step-content p{color:var(--gx-text-muted);font-size:.88rem;line-height:1.6}.algorithm-diagram{background:var(--gx-code-bg);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);margin-bottom:var(--gx-space-4);overflow-x:auto;padding:var(--gx-space-4)}.algorithm-ascii{color:var(--gx-text-muted);font-family:var(--gx-font-mono);font-size:.75rem;line-height:1.5;white-space:pre}.how-it-works-note{background:var(--gx-indigo-dim);border-left:3px solid var(--gx-indigo);border-radius:0 var(--gx-radius) var(--gx-radius) 0;padding:var(--gx-space-3) var(--gx-space-4)}.how-it-works-note p{color:var(--gx-text-muted);font-size:.85rem}.about-page{max-width:700px;display:flex;flex-direction:column;gap:var(--gx-space-6)}.about-heading{font-size:1.1rem;font-weight:700;margin-bottom:var(--gx-space-3)}.about-description{color:var(--gx-text-muted);line-height:1.7}.about-privacy{background:var(--gx-accent-dim);border:1px solid var(--gx-accent);border-radius:var(--gx-radius-lg);padding:var(--gx-space-4)}.about-privacy-note{align-items:center;color:var(--gx-text);display:flex;font-size:.9rem;flex-wrap:wrap;gap:var(--gx-space-1)}.about-citation{color:var(--gx-text-muted);font-size:.9rem;margin-bottom:var(--gx-space-3)}.about-reference{background:var(--gx-surface);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:var(--gx-space-4)}.about-links{display:flex;flex-wrap:wrap;gap:var(--gx-space-3)}.about-link{align-items:center;background:var(--gx-bg-alt);border:1px solid var(--gx-border);border-radius:var(--gx-radius);color:var(--gx-accent);display:inline-flex;font-size:.85rem;font-weight:500;padding:var(--gx-space-1) var(--gx-space-3);transition:background var(--gx-transition),border-color var(--gx-transition)}.about-link:hover{background:var(--gx-accent-dim);border-color:var(--gx-accent);color:var(--gx-accent-hover)}.about-authors{display:flex;flex-direction:column;gap:var(--gx-space-3);list-style:none}.about-author{background:var(--gx-surface);border:1px solid var(--gx-border);border-radius:var(--gx-radius-lg);padding:var(--gx-space-4)}.about-author-name{font-weight:700;margin-bottom:var(--gx-space-1)}.about-author-role{color:var(--gx-text-muted);font-size:.875rem}.app-footer{background:var(--gx-surface);border-top:1px solid var(--gx-border);color:var(--gx-text-muted);font-size:.8rem;padding:var(--gx-space-4);text-align:center}.app-footer a{color:var(--gx-accent)}.app-footer a:hover{color:var(--gx-accent-hover)}
