Spaces:
Running
Running
| /* section-vep.css, §3 Variant effect predictor demo: two-row sequence | |
| display (original above, click-editable mutation below) with per-row | |
| log-likelihood scores, an inline verdict sentence, the merged | |
| gene+variant description box, and the significance pills | |
| (.sig-Pathogenic / Risk / Benign) that decorate the gene chips in | |
| the toolbar. */ | |
| /* --- VEP demo (§3): two-row sequence display + inline scores --- */ | |
| .vep-window { | |
| position: relative; /* anchors the .status pill below */ | |
| background: #f7f7f7; border: 1px solid #e0e0e0; | |
| padding: 16px 20px; margin: 12px 0; | |
| text-align: left; | |
| /* The .vep-stack inside is an inline-grid whose middle column is a | |
| 60bp mono sequence (~550px wide). On narrow viewports that overflows | |
| the window, so we let the window scroll horizontally as a single | |
| unit. Critically, we do NOT introduce a line-break inside .seq-line | |
| / .arrow-line (those keep `white-space: pre`) so the original row, | |
| arrow row, and mutation row stay character-for-character aligned. */ | |
| overflow-x: auto; | |
| } | |
| /* "pending" pill in the top-right corner, aligned with the edit-hint row. | |
| Lives as a direct child of .vep-window (outside the JS-rebuilt content | |
| div) so it persists across re-renders. */ | |
| .vep-window > .status { | |
| position: absolute; | |
| top: 16px; right: 20px; | |
| margin-left: 0; | |
| background: #f7f7f7; /* occludes any wrapped edit-hint */ | |
| z-index: 1; | |
| } | |
| .vep-window .vep-stack { | |
| display: inline-grid; | |
| grid-template-columns: auto auto auto; | |
| align-items: center; | |
| column-gap: 18px; row-gap: 4px; | |
| text-align: left; | |
| margin: 10px 0; | |
| } | |
| .vep-window .vep-label { | |
| font-family: "JetBrains Mono", monospace; | |
| font-size: 10px; font-weight: 500; | |
| color: #6b7a6e; text-transform: uppercase; letter-spacing: 1.2px; | |
| white-space: nowrap; | |
| } | |
| .vep-window .vep-score { | |
| font-family: "JetBrains Mono", monospace; | |
| font-size: 12px; font-weight: 500; | |
| font-variant-numeric: tabular-nums; | |
| text-align: right; | |
| white-space: nowrap; | |
| color: #888; /* "neutral" default */ | |
| } | |
| .vep-window .vep-score.more-likely { color: #317f3f; } | |
| .vep-window .vep-score.less-likely { color: #bc2e25; } | |
| .vep-window .seq-line, | |
| .vep-window .arrow-line { | |
| font-family: "JetBrains Mono", monospace; | |
| font-size: 14px; letter-spacing: 1px; | |
| white-space: pre; | |
| line-height: 1.4; | |
| } | |
| .vep-window .arrow-line { color: #bc2e25; font-weight: 700; line-height: 0.9; } | |
| .vep-window .seq-char { display: inline-block; } | |
| .vep-window .arrow-char { display: inline-block; width: auto; } | |
| /* Verdict sentence underneath the sequence block. */ | |
| .vep-window .vep-verdict { | |
| margin-top: 14px; | |
| font-size: 13px; line-height: 1.55; | |
| color: #333; | |
| max-width: 760px; | |
| } | |
| .vep-window .vep-verdict .verdict-math { | |
| font-variant-numeric: tabular-nums; | |
| font-size: 12px; | |
| color: #666; | |
| } | |
| .vep-window .vep-verdict .phrase-bad { color: #bc2e25; font-weight: 600; } | |
| .vep-window .vep-verdict .phrase-good { color: #317f3f; font-weight: 600; } | |
| .vep-window .vep-verdict .phrase-neutral { color: #444; font-weight: 600; } | |
| /* Variant position styling (the focus column in both rows) */ | |
| .vep-window .seq-char.variant-pos { font-weight: 700; } | |
| /* In the mutation row, bases that differ from the original are red */ | |
| .vep-window .seq-line.mutation .seq-char.differs { color: #bc2e25; font-weight: 700; } | |
| /* Editable mutation row */ | |
| .vep-window .seq-line.editable .seq-char { cursor: pointer; } | |
| .vep-window .seq-line.editable .seq-char:hover { | |
| background: rgba(188, 46, 37, 0.10); | |
| } | |
| .vep-window .original .seq-char { color: #1f1f1d; } | |
| .vep-window .original .seq-char.variant-pos { color: #1f1f1d; font-weight: 700; } | |
| /* Edit hint, above the stack */ | |
| .vep-window .edit-hint { | |
| margin-bottom: 12px; | |
| text-align: left; | |
| font-family: "JetBrains Mono", monospace; | |
| font-size: 10px; color: #888; | |
| letter-spacing: 0.8px; text-transform: uppercase; | |
| } | |
| .pill.sig-Pathogenic { border-left: 3px solid #bc2e25; } | |
| .pill.sig-Risk { border-left: 3px solid #e69500; } | |
| .pill.sig-Benign { border-left: 3px solid #317f3f; } | |
| /* Merged gene + variant description block displayed above the demo | |
| (replaces the old .gene-info green pill). The .meta-line below the | |
| text is a single-line strip of (mutation location · base change · | |
| ClinVar label), all set in monospace for the technical feel. */ | |
| .vep-gene-box { | |
| margin: 4px 0 14px; | |
| color: #333; | |
| font-size: 13px; line-height: 1.55; | |
| } | |
| .vep-gene-box .vep-text { margin: 0; } | |
| .vep-gene-box .gene-name { | |
| font-family: "JetBrains Mono", monospace; | |
| font-weight: 600; color: #1f5024; | |
| letter-spacing: 0.5px; | |
| } | |
| .vep-gene-box .variant-name { | |
| font-family: "JetBrains Mono", monospace; | |
| font-weight: 600; color: #1f1f1d; | |
| letter-spacing: 0.3px; | |
| } | |
| /* Single-line meta strip under the gene/variant text (no divider). */ | |
| .vep-gene-box .meta-line { | |
| margin-top: 8px; | |
| font-family: "JetBrains Mono", monospace; | |
| font-size: 11px; | |
| color: #1f1f1d; | |
| font-variant-numeric: tabular-nums; | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 4px 22px; | |
| align-items: baseline; | |
| } | |
| .vep-gene-box .meta-line .meta-item { white-space: nowrap; } | |
| .vep-gene-box .meta-line .meta-key { | |
| color: #888; | |
| text-transform: uppercase; | |
| letter-spacing: 1px; | |
| font-size: 10px; | |
| margin-right: 6px; | |
| } | |
| .vep-gene-box .meta-line .meta-key::after { content: ":"; } | |