faisalAI27
improved the ui
b3556f1
Raw
History Blame Contribute Delete
12.6 kB
:root {
--background: #f4f7f6;
--surface: #ffffff;
--surface-subtle: #f8faf9;
--ink: #17211f;
--muted: #61706c;
--border: #d9e1de;
--border-strong: #bcc9c5;
--brand: #126f69;
--brand-dark: #0d514d;
--brand-soft: #e6f3f1;
--green: #26724a;
--green-soft: #e7f4ec;
--red: #b5463e;
--red-soft: #faece9;
--amber: #8a661a;
--amber-soft: #fbf3df;
--focus: #16837c;
--shadow: 0 10px 28px rgba(24, 48, 43, 0.08);
}
* {
box-sizing: border-box;
}
html,
body {
min-height: 100%;
}
body {
margin: 0;
background: var(--background);
color: var(--ink);
font-family:
Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
button,
input,
textarea {
font: inherit;
}
button {
cursor: pointer;
}
button:disabled {
cursor: not-allowed;
opacity: 0.58;
}
h1,
h2,
h3,
p {
margin-top: 0;
}
h1 {
margin-bottom: 0;
font-size: 3rem;
line-height: 1.05;
letter-spacing: 0;
}
h2 {
margin-bottom: 0;
font-size: 1.18rem;
line-height: 1.3;
letter-spacing: 0;
}
h3 {
margin-bottom: 8px;
font-size: 1rem;
line-height: 1.35;
letter-spacing: 0;
}
.appShell {
width: min(1180px, calc(100% - 32px));
margin: 0 auto;
padding: 28px 0 36px;
}
.appHeader {
max-width: 840px;
margin-bottom: 24px;
padding: 10px 0 6px;
}
.brandLine {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 18px;
}
.brandMark {
display: inline-flex;
width: 42px;
height: 42px;
align-items: center;
justify-content: center;
border-radius: 8px;
background: var(--brand-dark);
color: #ffffff;
}
.eyebrow,
.sectionEyebrow {
margin: 0 0 5px;
color: var(--brand-dark);
font-size: 0.76rem;
font-weight: 800;
letter-spacing: 0;
text-transform: uppercase;
}
.brandLine .eyebrow {
margin-bottom: 0;
}
.subtitle {
margin: 14px 0 0;
color: #31423e;
font-size: 1.25rem;
font-weight: 700;
line-height: 1.45;
}
.heroDescription {
max-width: 680px;
margin: 8px 0 0;
color: var(--muted);
font-size: 1rem;
line-height: 1.6;
}
.statusPanel {
display: flex;
align-items: flex-start;
gap: 11px;
margin-bottom: 18px;
border: 1px solid var(--border);
border-radius: 8px;
padding: 12px 14px;
background: rgba(255, 255, 255, 0.7);
color: var(--brand-dark);
}
.statusPanel div {
display: grid;
gap: 2px;
}
.statusPanel strong {
font-size: 0.92rem;
}
.statusPanel span {
color: var(--muted);
font-size: 0.84rem;
font-weight: 650;
}
.statusWarning {
color: var(--red) !important;
}
.workspace {
display: grid;
grid-template-columns: minmax(0, 1fr) 320px;
gap: 20px;
align-items: start;
}
.mainColumn {
display: grid;
gap: 20px;
}
.toolPanel,
.resultPanel,
.historyPanel {
border: 1px solid var(--border);
border-radius: 8px;
background: var(--surface);
box-shadow: var(--shadow);
}
.toolPanel,
.resultPanel {
padding: 24px;
}
.historyPanel {
position: sticky;
top: 20px;
padding: 18px;
}
.panelHeader {
display: flex;
align-items: center;
justify-content: space-between;
gap: 14px;
margin-bottom: 20px;
}
.buildPill,
.resultStatus {
display: inline-flex;
min-height: 28px;
align-items: center;
gap: 6px;
border: 1px solid #9fc9c5;
border-radius: 999px;
padding: 4px 10px;
background: var(--brand-soft);
color: var(--brand-dark);
font-size: 0.76rem;
font-weight: 800;
white-space: nowrap;
}
.formGrid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
}
label {
display: grid;
gap: 7px;
color: #465652;
font-size: 0.86rem;
font-weight: 750;
}
input,
textarea {
width: 100%;
border: 1px solid var(--border-strong);
border-radius: 8px;
background: #ffffff;
color: var(--ink);
outline: none;
transition:
border-color 140ms ease,
box-shadow 140ms ease;
}
input {
min-height: 44px;
padding: 0 12px;
}
textarea {
min-height: 118px;
resize: vertical;
padding: 12px;
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
line-height: 1.5;
}
input::placeholder,
textarea::placeholder {
color: #899591;
}
input:focus,
textarea:focus {
border-color: var(--focus);
box-shadow: 0 0 0 3px rgba(22, 131, 124, 0.14);
}
.sequenceField {
margin-top: 16px;
}
.notesField {
margin-top: 14px;
}
.fieldHelp {
display: flex;
justify-content: space-between;
gap: 12px;
margin-top: 8px;
color: var(--muted);
font-size: 0.82rem;
font-weight: 650;
}
.buttonRow {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 20px;
}
.primaryButton,
.secondaryButton,
.iconButton {
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 8px;
font-weight: 800;
transition:
background 140ms ease,
border-color 140ms ease,
color 140ms ease;
}
.primaryButton,
.secondaryButton {
min-height: 44px;
gap: 8px;
padding: 0 17px;
}
.primaryButton {
border: 1px solid var(--brand-dark);
background: var(--brand);
color: #ffffff;
}
.primaryButton:hover:not(:disabled) {
background: var(--brand-dark);
}
.secondaryButton,
.iconButton {
border: 1px solid var(--border);
background: var(--surface-subtle);
color: var(--ink);
}
.secondaryButton:hover:not(:disabled),
.iconButton:hover:not(:disabled) {
border-color: var(--border-strong);
background: #edf2f0;
}
.iconButton {
width: 38px;
height: 38px;
padding: 0;
}
.resultPanel {
min-height: 180px;
}
.statePanel,
.errorPanel {
display: flex;
align-items: center;
gap: 14px;
}
.statePanel {
color: var(--muted);
}
.statePanel h2,
.errorPanel h2 {
margin-bottom: 4px;
}
.statePanel p,
.errorPanel p {
margin-bottom: 0;
line-height: 1.5;
}
.stateIcon {
display: inline-flex;
width: 46px;
height: 46px;
flex: 0 0 auto;
align-items: center;
justify-content: center;
border-radius: 8px;
background: var(--brand-soft);
color: var(--brand-dark);
}
.loadingState .stateIcon {
background: #eef3f2;
}
.errorPanel {
border-color: rgba(181, 70, 62, 0.34);
background: #fffafa;
color: var(--red);
}
.errorPanel p {
color: #75453f;
}
.resultComplete {
border-top: 3px solid var(--brand);
}
.resultComplete.pathogenic {
border-top-color: var(--red);
}
.resultComplete.benign {
border-top-color: var(--green);
}
.resultHeader {
margin-bottom: 16px;
}
.assessmentSummary {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 20px;
border-top: 1px solid var(--border);
border-bottom: 1px solid var(--border);
padding: 22px 0;
}
.assessmentLabel {
display: block;
margin-bottom: 7px;
color: var(--muted);
font-size: 0.78rem;
font-weight: 800;
text-transform: uppercase;
}
.assessmentSummary h3 {
margin-bottom: 0;
font-size: 1.35rem;
}
.assessmentContext {
margin: 7px 0 0;
color: var(--muted);
font-size: 0.9rem;
font-weight: 650;
}
.riskBadge {
display: inline-flex;
min-height: 34px;
align-items: center;
border-radius: 999px;
padding: 7px 12px;
font-size: 0.84rem;
font-weight: 850;
white-space: nowrap;
}
.riskBadge.pathogenic {
background: var(--red-soft);
color: var(--red);
}
.riskBadge.benign {
background: var(--green-soft);
color: var(--green);
}
.probabilityGrid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 22px;
padding: 22px 0 4px;
}
.probabilityHeading {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 12px;
margin-bottom: 9px;
color: #455550;
font-size: 0.88rem;
font-weight: 750;
}
.probabilityHeading strong {
color: var(--ink);
font-size: 1.08rem;
}
.probabilityTrack {
width: 100%;
height: 9px;
overflow: hidden;
border-radius: 999px;
background: #e6ecea;
}
.probabilityFill {
height: 100%;
border-radius: inherit;
}
.probabilityFill.pathogenic {
background: var(--red);
}
.probabilityFill.benign {
background: var(--green);
}
.confidenceSummary {
display: flex;
align-items: center;
gap: 11px;
margin-top: 20px;
border-left: 3px solid var(--brand);
padding: 8px 0 8px 13px;
color: var(--brand-dark);
}
.confidenceSummary div {
display: grid;
gap: 2px;
}
.confidenceSummary span {
color: var(--muted);
font-size: 0.78rem;
font-weight: 700;
}
.confidenceSummary strong {
font-size: 0.94rem;
}
.interpretationSection {
margin-top: 24px;
border-top: 1px solid var(--border);
padding-top: 22px;
}
.interpretationSection p,
.recommendationBlock p {
margin-bottom: 0;
color: #40504c;
line-height: 1.65;
}
.recommendationBlock {
display: flex;
align-items: flex-start;
gap: 12px;
margin-top: 20px;
border-left: 3px solid var(--amber);
padding: 12px 0 12px 14px;
color: var(--amber);
}
.recommendationBlock svg {
flex: 0 0 auto;
margin-top: 1px;
}
.recommendationBlock h3 {
color: var(--ink);
}
.technicalDetails,
.noticeDetails {
margin-top: 22px;
border-top: 1px solid var(--border);
padding-top: 14px;
}
.technicalDetails summary,
.noticeDetails summary {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
cursor: pointer;
color: #41514d;
font-size: 0.9rem;
font-weight: 800;
list-style: none;
}
.technicalDetails summary::-webkit-details-marker,
.noticeDetails summary::-webkit-details-marker {
display: none;
}
.technicalDetails summary span {
display: inline-flex;
align-items: center;
gap: 8px;
}
.detailsChevron {
transition: transform 160ms ease;
}
.technicalDetails[open] .detailsChevron {
transform: rotate(180deg);
}
.technicalGrid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 0 24px;
margin: 16px 0 0;
border-top: 1px solid var(--border);
}
.technicalGrid div {
display: grid;
grid-template-columns: minmax(120px, 0.8fr) minmax(0, 1.2fr);
gap: 12px;
border-bottom: 1px solid var(--border);
padding: 11px 0;
}
dt {
color: var(--muted);
font-size: 0.76rem;
font-weight: 800;
text-transform: uppercase;
}
dd {
margin: 0;
overflow-wrap: anywhere;
color: var(--ink);
font-size: 0.86rem;
font-weight: 750;
text-align: right;
}
.emptyHistory {
margin-bottom: 0;
color: var(--muted);
font-size: 0.9rem;
line-height: 1.5;
}
.historyList {
display: grid;
gap: 9px;
}
.historyItem {
display: grid;
gap: 5px;
width: 100%;
min-height: 72px;
border: 1px solid var(--border);
border-radius: 8px;
padding: 12px;
background: #ffffff;
color: var(--ink);
text-align: left;
}
.historyItem:hover {
border-color: #8ab7b2;
background: var(--surface-subtle);
}
.historyItem.selected {
border-color: var(--brand);
box-shadow: 0 0 0 2px rgba(18, 111, 105, 0.12);
}
.historyVariant {
overflow-wrap: anywhere;
font-weight: 850;
}
.historyMeta {
color: var(--muted);
font-size: 0.81rem;
font-weight: 700;
text-transform: capitalize;
}
.historySequence {
color: #74817d;
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 0.74rem;
overflow-wrap: anywhere;
}
.appFooter {
margin-top: 28px;
border-top: 1px solid var(--border);
padding: 20px 2px 0;
color: var(--muted);
font-size: 0.84rem;
line-height: 1.55;
}
.appFooter > p {
max-width: 920px;
margin: 7px 0 0;
}
.noticeHeading {
display: flex;
align-items: center;
gap: 8px;
color: #465652;
}
.noticeDetails {
max-width: 920px;
margin-top: 12px;
padding-top: 10px;
}
.noticeDetails ul {
margin: 12px 0 0;
padding-left: 20px;
}
.noticeDetails li + li {
margin-top: 5px;
}
.spin {
animation: spin 0.8s linear infinite;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@media (max-width: 980px) {
.workspace {
grid-template-columns: 1fr;
}
.historyPanel {
position: static;
}
}
@media (max-width: 680px) {
h1 {
font-size: 2.3rem;
}
.subtitle {
font-size: 1.08rem;
}
.appShell {
width: min(100% - 20px, 1180px);
padding: 18px 0 28px;
}
.toolPanel,
.resultPanel,
.historyPanel {
padding: 17px;
}
.formGrid,
.probabilityGrid,
.technicalGrid {
grid-template-columns: 1fr;
}
.assessmentSummary {
align-items: flex-start;
flex-direction: column;
gap: 14px;
}
.technicalGrid div {
grid-template-columns: 1fr;
gap: 4px;
}
.technicalGrid dd {
text-align: left;
}
.fieldHelp {
display: grid;
}
.buttonRow {
display: grid;
}
.primaryButton,
.secondaryButton {
width: 100%;
}
}