Nephroscreen / frontend /style.css
sadiqM's picture
Initial commit: NephroScreen — CKD screening ML app
dc3d345
Raw
History Blame Contribute Delete
5.35 kB
:root {
--bg: #0f172a;
--surface: #ffffff;
--surface-2: #f8fafc;
--border: #e2e8f0;
--text: #0f172a;
--muted: #64748b;
--accent: #0d9488;
--accent-dark: #0f766e;
--high: #dc2626;
--moderate: #d97706;
--low: #16a34a;
--shadow: 0 1px 3px rgba(15, 23, 42, .08), 0 8px 24px rgba(15, 23, 42, .06);
--radius: 14px;
}
* { box-sizing: border-box; }
body {
margin: 0;
font-family: 'Inter', system-ui, -apple-system, sans-serif;
color: var(--text);
background: linear-gradient(180deg, #f1f5f9 0%, #e2e8f0 100%);
min-height: 100vh;
line-height: 1.5;
}
/* Header */
.site-header {
background: linear-gradient(120deg, #0f766e, #0d9488 60%, #14b8a6);
color: #fff;
padding: 28px clamp(16px, 5vw, 56px);
display: flex;
flex-wrap: wrap;
gap: 20px;
align-items: center;
justify-content: space-between;
}
.brand { display: flex; align-items: center; gap: 16px; }
.logo {
font-size: 34px;
background: rgba(255, 255, 255, .15);
width: 56px; height: 56px;
display: grid; place-items: center;
border-radius: 16px;
}
.site-header h1 { margin: 0; font-size: 26px; letter-spacing: -.02em; }
.tagline { margin: 2px 0 0; opacity: .9; font-size: 14px; }
.model-strip { display: flex; gap: 10px; flex-wrap: wrap; }
.metric-chip {
background: rgba(255, 255, 255, .14);
border: 1px solid rgba(255, 255, 255, .22);
padding: 8px 14px; border-radius: 999px;
font-size: 13px; white-space: nowrap;
}
.metric-chip b { font-weight: 700; }
/* Layout */
main {
max-width: 1080px;
margin: -12px auto 40px;
padding: 0 clamp(16px, 5vw, 32px);
display: grid;
grid-template-columns: 1.3fr 1fr;
gap: 24px;
align-items: start;
}
@media (max-width: 860px) { main { grid-template-columns: 1fr; } }
.panel {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: var(--shadow);
padding: 24px;
margin-top: 24px;
}
.panel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.panel h2 { margin: 0; font-size: 18px; }
.group-title {
font-size: 13px; text-transform: uppercase; letter-spacing: .06em;
color: var(--muted); margin: 22px 0 12px;
}
.hint { color: var(--muted); font-size: 13px; margin: 6px 0 0; }
/* Form */
.grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
@media (max-width: 520px) { .grid { grid-template-columns: 1fr; } }
.field { display: flex; flex-direction: column; gap: 5px; }
.field label { font-size: 12.5px; font-weight: 500; color: var(--muted); }
.field input, .field select {
padding: 10px 12px;
border: 1px solid var(--border);
border-radius: 10px;
font: inherit; font-size: 14px;
background: var(--surface-2);
transition: border-color .15s, box-shadow .15s;
}
.field input:focus, .field select:focus {
outline: none; border-color: var(--accent);
box-shadow: 0 0 0 3px rgba(13, 148, 136, .15);
background: #fff;
}
.actions { display: flex; gap: 12px; margin-top: 22px; }
.btn {
border: none; border-radius: 10px; padding: 11px 18px;
font: inherit; font-weight: 600; font-size: 14px; cursor: pointer;
transition: transform .05s, background .15s, box-shadow .15s;
}
.btn:active { transform: translateY(1px); }
.btn.primary { background: var(--accent); color: #fff; box-shadow: 0 4px 12px rgba(13,148,136,.3); }
.btn.primary:hover { background: var(--accent-dark); }
.btn.primary:disabled { opacity: .6; cursor: progress; }
.btn.ghost { background: transparent; color: var(--muted); border: 1px solid var(--border); }
.btn.ghost:hover { background: var(--surface-2); color: var(--text); }
/* Result */
.result-card {
border-radius: 12px; padding: 22px; margin-top: 16px;
display: flex; align-items: center; gap: 22px;
border: 1px solid var(--border);
}
.gauge {
--p: 0;
width: 108px; height: 108px; flex: none; border-radius: 50%;
background: conic-gradient(var(--ring) calc(var(--p) * 1%), #e5e7eb 0);
display: grid; place-items: center; position: relative;
}
.gauge::before { content: ""; position: absolute; inset: 10px; background: #fff; border-radius: 50%; }
.gauge span { position: relative; font-size: 24px; font-weight: 700; }
.verdict h3 { margin: 0 0 4px; font-size: 22px; }
.verdict .band { font-size: 14px; font-weight: 600; }
.verdict p { margin: 6px 0 0; font-size: 13px; color: var(--muted); }
.band-High { color: var(--high); }
.band-Moderate { color: var(--moderate); }
.band-Low { color: var(--low); }
.indicators { margin-top: 18px; display: flex; flex-direction: column; gap: 8px; }
.indicator {
display: flex; align-items: center; justify-content: space-between;
padding: 10px 14px; border-radius: 10px; background: var(--surface-2);
border: 1px solid var(--border); font-size: 13.5px;
}
.indicator .tag { font-weight: 600; padding: 2px 9px; border-radius: 999px; font-size: 12px; }
.tag.low { background: #dbeafe; color: #1d4ed8; }
.tag.high { background: #fee2e2; color: #b91c1c; }
.indicators .empty { color: var(--muted); font-size: 13px; }
.disclaimer {
margin-top: 18px; font-size: 12px; color: var(--muted);
background: #fffbeb; border: 1px solid #fde68a; border-radius: 10px; padding: 12px 14px;
}
/* Footer */
.site-footer {
text-align: center; padding: 28px 20px 44px; color: var(--muted); font-size: 13px;
}
.site-footer p { margin: 4px 0; }
.muted { color: var(--muted); }