carepath-api / scribe /frontend /src /styles.css
tranth3truong's picture
Deploy CP-UX-12/13 landing: hero draft proof, privacy and Vietnamese-capability evidence
da09932
Raw
History Blame Contribute Delete
38.3 kB
/* CarePath demo site — clinical-trust design system.
*
* Tokens: brand palette stays fixed; semantic tokens swap per color scheme.
* Radius rule: panels 0.75rem · controls 0.5rem · status chips pill.
* Breakpoints: 1023px (laptop collapse) · 760px (phone collapse).
*/
:root {
color-scheme: light dark;
font-family: "Geist", ui-sans-serif, system-ui, sans-serif;
font-synthesis: none;
/* brand */
--ink: #102a2e;
--ivory: #f4f1e8;
--teal: #0f766e;
--mist: #ddeae7;
--amber: #a86300;
--critical: #9b1c1c;
/* semantic (light) */
--bg: var(--ivory);
--text: var(--ink);
--muted: color-mix(in srgb, var(--ink) 72%, var(--ivory));
--faint: color-mix(in srgb, var(--ink) 60%, var(--ivory));
--line: color-mix(in srgb, var(--ink) 16%, transparent);
--line-strong: color-mix(in srgb, var(--ink) 40%, transparent);
--surface: color-mix(in srgb, var(--ivory), white 50%);
--surface-2: var(--ivory);
--tint: color-mix(in srgb, var(--mist), transparent 45%);
--tint-section: var(--mist);
--accent-ink: #0d6a63;
--critical-text: var(--critical);
--amber-text: #704300;
--input-bg: white;
--nav-bg: rgb(244 241 232 / 0.92);
--shadow: 0 1rem 3rem rgb(16 42 46 / 0.09);
/* fixed dark panels (safety section, footer, evidence card) */
--deep: #102a2e;
--on-deep: #f4f1e8;
--on-deep-muted: rgb(244 241 232 / 0.72);
--accent-on-deep: #66d8cc;
/* geometry */
--container: 74rem;
--r-panel: 0.75rem;
--r-control: 0.5rem;
--section-pad: clamp(4rem, 7vw, 6rem);
}
@media (prefers-color-scheme: dark) {
:root {
--bg: #0b2125;
--text: #e9efec;
--muted: rgb(233 239 236 / 0.76);
--faint: rgb(233 239 236 / 0.62);
--line: rgb(233 239 236 / 0.16);
--line-strong: rgb(233 239 236 / 0.42);
--surface: #122c31;
--surface-2: #0f272c;
--tint: rgb(221 234 231 / 0.07);
--tint-section: #133136;
--accent-ink: #6fd8cc;
--critical-text: #f2a0a0;
--amber-text: #ffce8a;
--input-bg: #0e252a;
--nav-bg: rgb(11 33 37 / 0.92);
--shadow: 0 1rem 3rem rgb(0 0 0 / 0.4);
--deep: #0e2a2f;
}
}
* {
box-sizing: border-box;
}
html {
background: var(--bg);
color: var(--text);
scroll-behavior: smooth;
}
body {
min-width: 320px;
min-height: 100vh;
margin: 0;
line-height: 1.6;
}
button,
input,
select,
textarea {
font: inherit;
}
.site-shell {
overflow-x: clip;
width: 100%;
max-width: 100%;
}
/* ---------- shared bits ---------- */
.kicker {
margin: 0 0 0.9rem;
color: var(--accent-ink);
font-size: 0.72rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.button:focus-visible,
.button-link:focus-visible,
.scenario:focus-visible,
.nav-cta:focus-visible,
a:focus-visible,
input:focus-visible,
textarea:focus-visible {
outline: 3px solid color-mix(in srgb, var(--teal), white 30%);
outline-offset: 2px;
}
/* ---------- navigation ---------- */
.site-nav {
position: sticky;
top: 0;
z-index: 20;
display: flex;
align-items: center;
justify-content: space-between;
gap: 1.25rem;
padding: 0.7rem max(1.5rem, calc((100vw - var(--container)) / 2));
border-bottom: 1px solid var(--line);
background: var(--nav-bg);
backdrop-filter: blur(0.5rem);
box-shadow: 0 1px 0 var(--line), 0 10px 24px -18px rgb(16 42 46 / 0.45);
}
.site-nav__brand {
display: flex;
align-items: center;
gap: 0.6rem;
min-width: 0;
color: var(--text);
font-weight: 700;
text-decoration: none;
white-space: nowrap;
}
.site-nav__brand img {
width: 2.4rem;
height: auto;
}
.site-nav__links {
display: flex;
gap: clamp(1rem, 2vw, 1.8rem);
}
.site-nav__links a {
color: var(--muted);
font-size: 0.85rem;
font-weight: 600;
text-decoration: none;
white-space: nowrap;
}
.site-nav__links a:hover {
color: var(--text);
text-decoration: underline;
text-underline-offset: 0.3rem;
}
.site-nav__actions {
display: flex;
flex-shrink: 0;
align-items: center;
gap: 0.7rem;
}
.nav-cta {
padding: 0.6rem 1rem;
border-radius: var(--r-control);
background: var(--text);
color: var(--bg);
font-size: 0.82rem;
font-weight: 700;
text-decoration: none;
white-space: nowrap;
}
/* ---------- hero ---------- */
.hero {
width: min(100% - 3rem, var(--container));
margin: 0 auto;
padding: clamp(3rem, 5vw, 4.5rem) 0 clamp(2.5rem, 4vw, 3.5rem);
}
.hero__copy {
max-width: 56rem;
}
.hero-title {
max-width: 52rem;
margin: 0;
font-size: clamp(2.3rem, 4.2vw, 3.5rem);
font-weight: 700;
letter-spacing: -0.03em;
line-height: 1.12;
text-wrap: balance;
}
.hero__body {
max-width: 44rem;
margin: 1.4rem 0 0;
color: var(--muted);
font-size: clamp(1rem, 1.4vw, 1.15rem);
line-height: 1.7;
}
.hero__actions {
display: flex;
flex-wrap: wrap;
gap: 0.8rem;
margin-top: 1.8rem;
}
.button-link {
display: inline-flex;
min-height: 3rem;
align-items: center;
padding: 0.75rem 1.25rem;
border: 1px solid transparent;
border-radius: var(--r-control);
font-weight: 700;
text-decoration: none;
transition: background 200ms ease, border-color 200ms ease;
}
.button-link:active {
transform: translateY(1px);
}
.button-link--secondary {
border-color: var(--line-strong);
background: transparent;
color: var(--text);
}
.button-link--secondary:hover {
border-color: var(--text);
}
/* ---------- demo stage ---------- */
.demo {
overflow: hidden;
border: 1px solid var(--line);
border-radius: var(--r-panel);
background: var(--surface);
box-shadow: var(--shadow);
}
.demo__header,
.demo__controls,
.transcript,
.readback,
.custom-input,
.escalation {
padding: 1.25rem 1.5rem;
}
.demo__header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 1.5rem;
border-bottom: 1px solid var(--line);
}
.demo__header h2,
.demo__header p {
margin: 0;
}
.demo__header h2 {
margin-top: 0.35rem;
font-size: clamp(1.25rem, 2vw, 1.6rem);
letter-spacing: -0.01em;
}
.demo__brand {
color: var(--accent-ink);
font-size: 0.7rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.demo__disclosure {
margin-top: 0.4rem !important;
color: var(--muted);
font-size: 0.82rem;
}
.demo__privacy {
padding: 0.5rem 0.75rem;
border: 1px solid var(--accent-ink);
border-radius: 999px;
color: var(--accent-ink);
font-size: 0.74rem;
font-weight: 600;
white-space: nowrap;
}
.demo__specialty {
margin: 0.25rem 0 0 !important;
color: var(--muted);
font-size: 0.82rem;
}
.demo-customization {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
padding: 1.1rem 1.5rem;
border-bottom: 1px solid var(--line);
background: var(--tint);
}
.demo-customization label {
display: grid;
gap: 0.35rem;
color: var(--muted);
font-size: 0.78rem;
font-weight: 600;
}
.scenario-picker {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
border-bottom: 1px solid var(--line);
}
.scenario {
display: grid;
align-content: start;
gap: 0.4rem;
padding: 1.1rem 1.25rem;
border: 0;
border-right: 1px solid var(--line);
background: transparent;
color: var(--text);
cursor: pointer;
text-align: left;
transition: background 200ms ease;
}
.scenario:last-child {
border-right: 0;
}
.scenario:hover,
.scenario:focus-visible {
background: var(--tint);
}
.scenario:active {
transform: scale(0.995);
}
.scenario.is-selected {
background: var(--text);
color: var(--bg);
}
.scenario strong {
font-size: 0.92rem;
}
.scenario span {
font-size: 0.78rem;
line-height: 1.5;
opacity: 0.85;
}
.progress-rail {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
margin: 0;
padding: 1.1rem 1.5rem;
border-bottom: 1px solid var(--line);
list-style: none;
}
.progress-rail li {
position: relative;
display: grid;
grid-template-columns: auto 1fr;
align-items: center;
gap: 0.55rem;
color: var(--muted);
font-size: 0.76rem;
font-weight: 600;
}
.progress-rail li:not(:last-child)::after {
position: absolute;
z-index: 0;
top: 50%;
right: 0.75rem;
left: 2.2rem;
height: 1px;
background: var(--line);
content: "";
}
.progress-rail li span {
z-index: 1;
display: inline-grid;
width: 1.7rem;
height: 1.7rem;
place-items: center;
border: 1px solid currentcolor;
border-radius: 50%;
background: var(--surface);
font-weight: 700;
}
.progress-rail li.is-complete {
color: var(--accent-ink);
}
.progress-rail li.is-complete span {
border-color: var(--teal);
background: var(--teal);
color: white;
}
.progress-check::before {
width: 0.65rem;
height: 0.35rem;
border-bottom: 2px solid white;
border-left: 2px solid white;
content: "";
transform: translateY(-0.08rem) rotate(-45deg);
}
.demo__controls,
.readback__actions {
display: flex;
flex-wrap: wrap;
gap: 0.65rem;
}
.button {
min-height: 2.75rem;
padding: 0.65rem 1rem;
border: 1px solid transparent;
border-radius: var(--r-control);
cursor: pointer;
font-weight: 600;
transition: background 200ms ease, border-color 200ms ease;
}
.button:active:not(:disabled) {
transform: translateY(1px);
}
.button:disabled {
cursor: not-allowed;
opacity: 0.45;
}
.button--primary {
background: var(--teal);
color: white;
}
.button--primary:hover:not(:disabled) {
background: color-mix(in srgb, var(--teal), black 14%);
}
.button--secondary {
border-color: var(--line-strong);
background: transparent;
color: var(--text);
}
.button--secondary:hover:not(:disabled) {
border-color: var(--text);
}
.button--danger {
border-color: var(--critical-text);
background: transparent;
color: var(--critical-text);
}
.button--text {
background: transparent;
color: var(--muted);
}
.button--text:hover:not(:disabled) {
color: var(--text);
}
.button--download {
margin: 0 1.5rem 1.5rem;
background: var(--text);
color: var(--bg);
}
.transcript {
display: grid;
gap: 0.85rem;
min-height: 14rem;
background: var(--tint);
}
.transcript__empty {
align-self: center;
color: var(--muted);
text-align: center;
}
.turn {
padding: 1rem 1.15rem;
border-left: 3px solid var(--line-strong);
border-radius: var(--r-control);
background: var(--surface);
}
.turn--medium {
border-left-color: #4b76a8;
}
.turn--high {
border-left-color: var(--amber);
}
.turn--critical {
border-left-color: var(--critical);
}
.turn--custom {
border: 1px dashed var(--teal);
}
.turn header {
display: flex;
justify-content: space-between;
gap: 1rem;
margin-bottom: 0.65rem;
}
.turn header strong {
font-size: 0.85rem;
}
.turn header span {
color: var(--muted);
font-size: 0.72rem;
font-weight: 600;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.turn__columns {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1.25rem;
}
.turn__columns p {
margin: 0;
font-size: 0.95rem;
line-height: 1.6;
}
.turn__columns p + p {
padding-left: 1.25rem;
border-left: 1px solid var(--line);
}
.risk-list {
display: flex;
flex-wrap: wrap;
gap: 0.4rem;
margin: 0.8rem 0 0;
padding: 0;
list-style: none;
}
.risk-list li {
padding: 0.28rem 0.55rem;
border: 1px solid color-mix(in srgb, var(--amber) 60%, transparent);
border-radius: 999px;
color: var(--amber-text);
font-size: 0.72rem;
font-weight: 600;
}
/* readback + escalation stay light in both schemes: fixed alert surfaces */
.readback {
border-block: 1px solid var(--amber);
background: #fff7e3;
color: var(--ink);
}
.safety-dialog {
width: min(100% - 2rem, 52rem);
max-height: calc(100vh - 2rem);
padding: 0;
border: 0;
border-radius: var(--r-panel);
background: transparent;
color: var(--ink);
box-shadow: 0 2rem 6rem rgb(0 0 0 / 0.35);
}
.safety-dialog::backdrop {
background: rgb(5 23 26 / 0.72);
backdrop-filter: blur(0.2rem);
}
.safety-dialog .readback,
.safety-dialog .escalation {
border: 0;
border-radius: var(--r-panel);
}
.readback h3,
.readback__flag {
margin-top: 0;
}
.readback h3 {
font-size: 1.3rem;
}
.readback__flag {
color: #704300;
font-size: 0.74rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.readback table {
width: 100%;
margin-bottom: 1rem;
border-collapse: collapse;
font-size: 0.92rem;
}
.readback th,
.readback td {
padding: 0.65rem;
border-bottom: 1px solid rgb(112 67 0 / 0.2);
text-align: left;
}
.readback label {
display: grid;
gap: 0.4rem;
margin-bottom: 1rem;
font-size: 0.85rem;
font-weight: 600;
}
.readback textarea,
.readback input {
border-color: rgb(16 42 46 / 0.4);
background: white;
color: var(--ink);
}
textarea,
input {
width: 100%;
min-height: 2.75rem;
padding: 0.65rem 0.75rem;
border: 1px solid var(--line-strong);
border-radius: var(--r-control);
background: var(--input-bg);
color: var(--text);
}
input::placeholder,
textarea::placeholder {
color: var(--faint);
}
textarea {
min-height: 5.5rem;
resize: vertical;
}
.escalation {
border-block: 3px solid var(--critical);
background: #fff2f2;
color: var(--ink);
}
.escalation h3 {
max-width: 38rem;
font-size: clamp(1.35rem, 2.4vw, 1.8rem);
}
.escalation .button--primary {
background: var(--teal);
color: white;
}
.custom-input {
display: grid;
gap: 0.5rem;
border-top: 1px solid var(--line);
}
.custom-input label {
font-size: 0.88rem;
font-weight: 600;
}
.custom-input div {
display: grid;
grid-template-columns: 1fr auto;
gap: 0.65rem;
}
.custom-input small {
color: var(--muted);
}
/* ---------- scribe showcase ---------- */
.scribe-panel {
overflow: hidden;
margin-top: clamp(2.25rem, 4vw, 3rem);
border: 1px solid var(--line);
border-radius: var(--r-panel);
background: var(--surface);
box-shadow: var(--shadow);
}
.scribe-panel__header {
display: flex;
flex-wrap: wrap;
align-items: baseline;
justify-content: space-between;
gap: 0.5rem 1.5rem;
padding: 1.1rem 1.5rem;
border-bottom: 1px solid var(--line);
}
.scribe-panel__header p {
margin: 0;
}
.scribe-tabs {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
border-bottom: 1px solid var(--line);
}
.scribe-tab {
padding: 0.9rem 1.1rem;
border: 0;
border-right: 1px solid var(--line);
background: transparent;
color: var(--muted);
cursor: pointer;
font-size: 0.85rem;
font-weight: 600;
text-align: left;
transition: background 200ms ease;
}
.scribe-tab:last-child {
border-right: 0;
}
.scribe-tab:hover {
background: var(--tint);
color: var(--text);
}
.scribe-tab:active {
transform: scale(0.995);
}
.scribe-tab[aria-pressed="true"] {
background: var(--text);
color: var(--bg);
}
.scribe-tab:focus-visible {
outline: 3px solid color-mix(in srgb, var(--teal), white 30%);
outline-offset: -3px;
}
.scribe-doc {
display: grid;
gap: 1.1rem;
align-content: start;
min-height: 17rem;
padding: 1.5rem;
background: var(--tint);
}
.scribe-doc__text {
max-width: 46rem;
margin: 0;
font-size: 1rem;
line-height: 1.9;
}
mark.scribe-mark {
border-radius: 0.2rem;
background: transparent;
color: inherit;
}
.scribe-mark--miss {
color: var(--amber-text);
font-weight: 600;
text-decoration: underline dashed var(--amber);
text-decoration-thickness: 2px;
text-underline-offset: 0.28rem;
}
.scribe-mark--fix {
padding: 0.05rem 0.3rem;
background: color-mix(in srgb, var(--teal) 16%, transparent);
color: var(--accent-ink);
font-weight: 700;
}
.soap-note {
display: grid;
gap: 1px;
overflow: hidden;
margin: 0;
border: 1px solid var(--line);
border-radius: var(--r-control);
background: var(--line);
}
.soap-note > div {
display: grid;
grid-template-columns: 9.5rem minmax(0, 1fr);
gap: 1rem;
padding: 0.95rem 1.15rem;
background: var(--surface);
}
.soap-note dt {
display: flex;
align-items: center;
gap: 0.55rem;
font-size: 0.8rem;
font-weight: 700;
}
.soap-note dt span {
display: inline-grid;
width: 1.7rem;
height: 1.7rem;
place-items: center;
border: 1px solid var(--teal);
border-radius: var(--r-control);
color: var(--accent-ink);
font-size: 0.78rem;
font-weight: 700;
}
.soap-note dd {
margin: 0;
font-size: 0.95rem;
line-height: 1.65;
}
.scribe-status {
justify-self: start;
margin: 0;
padding: 0.4rem 0.75rem;
border: 1px solid var(--amber);
border-radius: 999px;
color: var(--amber-text);
font-size: 0.74rem;
font-weight: 700;
}
.scribe-caption {
margin: 0;
color: var(--muted);
font-size: 0.8rem;
}
.scribe-note {
max-width: 44rem;
margin: 1.2rem 0 0;
color: var(--muted);
font-size: 0.85rem;
line-height: 1.65;
}
/* ---------- scribe tool page (#/scribe) ---------- */
.tool-shell {
width: min(100% - 3rem, 52rem);
margin: 0 auto;
padding: clamp(2.5rem, 4vw, 3.5rem) 0 clamp(3rem, 5vw, 4rem);
}
.tool-header h1 {
max-width: 40rem;
margin: 0;
font-size: clamp(1.9rem, 3.4vw, 2.7rem);
font-weight: 700;
letter-spacing: -0.02em;
line-height: 1.15;
text-wrap: balance;
}
.tool-header__intro {
max-width: 40rem;
margin: 1.1rem 0 0;
color: var(--muted);
line-height: 1.7;
}
.health-badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
margin: 1.2rem 0 0;
padding: 0.35rem 0.75rem;
border: 1px solid var(--line-strong);
border-radius: 999px;
font-size: 0.78rem;
font-weight: 600;
}
.health-badge__dot {
width: 0.55rem;
height: 0.55rem;
border-radius: 50%;
background: var(--faint);
}
.health-badge--ready .health-badge__dot {
background: var(--teal);
}
.health-badge--demo .health-badge__dot,
.health-badge--degraded .health-badge__dot {
background: var(--amber);
}
.health-badge--down .health-badge__dot {
background: var(--critical);
}
.tool-panel {
display: grid;
gap: 1.1rem;
margin-top: clamp(1.6rem, 3vw, 2.2rem);
padding: clamp(1.4rem, 2.5vw, 2rem);
}
.dropzone {
display: grid;
gap: 0.4rem;
justify-items: center;
padding: clamp(1.8rem, 4vw, 2.8rem) 1.5rem;
border: 2px dashed var(--line-strong);
border-radius: var(--r-panel);
cursor: pointer;
text-align: center;
transition: border-color 200ms ease, background 200ms ease;
}
.dropzone:hover,
.dropzone.is-drag,
.dropzone:focus-within {
border-color: var(--teal);
background: var(--tint);
}
.dropzone span {
color: var(--muted);
font-size: 0.85rem;
}
.dropzone input {
position: absolute;
width: 1px;
height: 1px;
min-height: 0;
padding: 0;
border: 0;
clip-path: inset(50%);
}
.file-chip {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
margin: 0;
padding: 0.55rem 0.9rem;
border: 1px solid var(--line);
border-radius: 999px;
background: var(--tint);
font-size: 0.85rem;
overflow-wrap: anywhere;
}
.file-chip button {
padding: 0.2rem 0.6rem;
border: 1px solid var(--line-strong);
border-radius: 999px;
background: transparent;
color: var(--text);
cursor: pointer;
font-size: 0.74rem;
font-weight: 600;
white-space: nowrap;
}
.tool-context {
display: grid;
gap: 0.4rem;
font-size: 0.85rem;
font-weight: 600;
}
.tool-panel .button--primary {
justify-self: start;
}
.progress-rail--tool {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1.1rem 2rem;
padding: 0.3rem 0.5rem 1.1rem;
border-bottom: 0;
}
.progress-rail--tool li:not(:last-child)::after {
content: none;
}
.tool-error strong {
color: var(--critical-text);
}
.tool-error p {
margin: 0;
color: var(--muted);
overflow-wrap: anywhere;
}
.tool-error .button {
justify-self: start;
}
.tool-missing {
padding: 0.9rem 1.15rem;
border: 1px solid color-mix(in srgb, var(--amber) 60%, transparent);
border-radius: var(--r-control);
font-size: 0.9rem;
}
.tool-missing ul {
margin: 0.5rem 0 0;
padding-left: 1.2rem;
}
.tool-missing p,
.tool-evidence p {
margin: 0.5rem 0 0;
color: var(--muted);
}
.tool-review-title,
.tool-evidence h3 {
margin: 0;
}
.tool-review-title {
font-size: 1rem;
}
.tool-evidence {
display: grid;
gap: 0.5rem;
padding: 0.9rem 1.15rem;
border: 1px solid var(--line);
border-radius: var(--r-control);
background: var(--surface);
}
.tool-evidence h3 {
font-size: 0.85rem;
}
.tool-evidence > p {
line-height: 1.65;
}
.tool-terms {
display: flex;
flex-wrap: wrap;
gap: 0.45rem;
margin: 0;
padding: 0;
list-style: none;
}
.tool-terms li {
padding: 0.3rem 0.55rem;
border-radius: 999px;
background: var(--tint);
font-size: 0.85rem;
}
.tool-actions {
display: flex;
flex-wrap: wrap;
gap: 0.65rem;
}
.soap-note dd p,
.soap-note dd ul {
margin: 0 0 0.4rem;
}
.soap-note dd ul {
padding-left: 1.2rem;
}
.soap-note dd > :last-child {
margin-bottom: 0;
}
.tool-disclaimer {
margin: 1.6rem 0 0;
color: var(--muted);
font-size: 0.8rem;
}
.tool-prestart .tool-disclaimer {
margin-top: 0;
}
/* ---------- chapters ---------- */
.chapter {
width: min(100% - 3rem, var(--container));
margin: 0 auto;
padding: var(--section-pad) 0;
scroll-margin-top: 4.5rem;
}
/* ---------- pilot + form ---------- */
.pilot {
display: grid;
grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
gap: clamp(2.5rem, 5vw, 5rem);
align-items: start;
}
.pilot__copy {
position: sticky;
top: 5.5rem;
}
.pilot__copy h2 {
max-width: 30rem;
margin: 0;
font-size: clamp(1.9rem, 3vw, 2.5rem);
font-weight: 700;
letter-spacing: -0.02em;
line-height: 1.15;
text-wrap: balance;
}
.pilot__copy > p:not(.kicker) {
max-width: 34rem;
margin: 1.2rem 0 0;
color: var(--muted);
line-height: 1.7;
}
.pilot__configuration {
display: flex;
flex-wrap: wrap;
gap: 0.45rem;
margin: 1.6rem 0 0.9rem;
}
.pilot__configuration span {
padding: 0.4rem 0.7rem;
border: 1px solid var(--line-strong);
border-radius: 999px;
font-size: 0.74rem;
font-weight: 600;
}
.pilot__copy small {
color: var(--muted);
line-height: 1.6;
}
.lead-form {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
padding: clamp(1.4rem, 2.5vw, 2rem);
border: 1px solid var(--line);
border-radius: var(--r-panel);
background: var(--surface);
box-shadow: var(--shadow);
}
.lead-form label {
display: grid;
gap: 0.4rem;
font-size: 0.82rem;
font-weight: 600;
}
.lead-form__message,
.lead-form__context,
.lead-form .button,
.lead-form > p {
grid-column: 1 / -1;
}
.lead-form > p {
min-height: 1.5rem;
margin: 0;
color: var(--accent-ink);
font-size: 0.82rem;
font-weight: 600;
}
.field-error,
.form-status.is-error {
color: var(--critical-text);
}
.field-error {
font-size: 0.74rem;
font-weight: 600;
}
/* ---------- footer ---------- */
.site-footer {
display: grid;
grid-template-columns: 1fr 1.5fr auto;
gap: clamp(1.5rem, 4vw, 4rem);
align-items: start;
margin-top: var(--section-pad);
padding: clamp(2.5rem, 5vw, 4rem) max(1.5rem, calc((100vw - var(--container)) / 2));
background: var(--deep);
color: var(--on-deep);
}
.site-footer div {
display: grid;
gap: 0.75rem;
}
.site-footer img {
width: 4.5rem;
}
.site-footer p {
margin: 0;
color: var(--on-deep-muted);
font-size: 0.8rem;
line-height: 1.7;
}
.site-footer a {
color: var(--on-deep);
font-size: 0.82rem;
text-underline-offset: 0.28rem;
}
/* ---------- laptop collapse ---------- */
@media (max-width: 1023px) {
.site-nav__links {
display: none;
}
.pilot {
grid-template-columns: 1fr;
}
.pilot__copy {
position: static;
}
.site-footer {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
/* ---------- phone collapse ---------- */
@media (max-width: 760px) {
.site-nav {
padding-inline: 1rem;
}
.site-nav__brand span {
display: none;
}
.nav-cta {
display: none;
}
.hero,
.chapter {
width: min(100% - 1.5rem, var(--container));
}
.tool-shell {
width: min(100% - 1.5rem, 52rem);
}
.scribe-tabs {
grid-template-columns: 1fr;
}
.scribe-tab {
border-right: 0;
border-bottom: 1px solid var(--line);
}
.scribe-tab:last-child {
border-bottom: 0;
}
.soap-note > div {
grid-template-columns: 1fr;
gap: 0.45rem;
}
.demo__header {
flex-direction: column;
gap: 0.9rem;
}
.demo__controls {
display: grid;
grid-template-columns: 1fr;
}
.scenario-picker,
.demo-customization,
.turn__columns,
.site-footer,
.lead-form {
grid-template-columns: 1fr;
}
.scenario {
border-right: 0;
border-bottom: 1px solid var(--line);
}
.scenario:last-child {
border-bottom: 0;
}
.progress-rail {
grid-template-columns: 1fr;
gap: 0.6rem;
}
.progress-rail li::after {
display: none;
}
.turn__columns p + p {
padding-top: 0.75rem;
padding-left: 0;
border-top: 1px solid var(--line);
border-left: 0;
}
.custom-input div {
grid-template-columns: 1fr;
}
.lead-form__message,
.lead-form .button,
.lead-form > p {
grid-column: 1;
}
}
/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
*,
*::before,
*::after {
scroll-behavior: auto !important;
transition-duration: 0.01ms !important;
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
}
}
/* ---------- CP-UX-11 compact Vietnamese onboarding ---------- */
.site-nav__menu {
display: none;
}
.product-breadcrumb {
display: flex;
align-items: center;
gap: 0.45rem;
min-width: 0;
}
.product-breadcrumb > span {
color: var(--muted);
font-weight: 500;
}
.product-breadcrumb > span:last-child {
overflow: hidden;
min-width: 0;
white-space: nowrap;
text-overflow: ellipsis;
}
.product-shell-status {
color: var(--muted);
font-size: 0.75rem;
font-weight: 600;
white-space: nowrap;
}
.landing-main {
overflow-x: clip;
width: 100%;
max-width: 100%;
}
.interpreter-status {
display: flex;
flex-wrap: wrap;
gap: 0.35rem 1rem;
align-items: baseline;
width: min(100% - 3rem, var(--container));
margin: 1.25rem auto 0;
padding: 0.75rem 1.1rem;
border: 1px solid var(--line);
background: var(--surface);
}
.interpreter-status strong {
font-size: 0.8rem;
}
.interpreter-status span {
color: var(--muted);
font-size: 0.8rem;
font-weight: 500;
}
.button-link--primary {
border-color: var(--deep);
background: var(--deep);
color: var(--on-deep);
}
.button-link--primary:hover {
background: color-mix(in srgb, var(--deep), black 16%);
}
.button-link--light {
margin-top: 1.6rem;
border-color: var(--on-deep);
background: var(--on-deep);
color: var(--deep);
}
.onboarding-hero,
.burden-section,
.demo-section,
.evidence-section {
width: min(100% - 3rem, var(--container));
margin: 0 auto;
scroll-margin-top: 5rem;
}
.onboarding-hero {
padding: clamp(4rem, 7vw, 6rem) 0 clamp(4rem, 7vw, 6rem);
}
.onboarding-hero > h1 {
max-width: 72rem;
margin: 0;
font-size: clamp(2.7rem, 5.4vw, 4.9rem);
font-weight: 700;
letter-spacing: -0.065em;
line-height: 0.98;
text-wrap: balance;
}
.onboarding-hero__body {
display: grid;
grid-template-columns: minmax(20rem, 1fr) minmax(24rem, 1fr);
gap: clamp(2.5rem, 5vw, 5rem);
align-items: start;
margin-top: clamp(2.25rem, 4.5vw, 3.75rem);
}
.onboarding-hero__copy > p {
max-width: 34rem;
margin: 0;
color: var(--muted);
font-size: clamp(1.02rem, 1.6vw, 1.22rem);
line-height: 1.65;
}
.onboarding-hero__copy > small {
display: block;
max-width: 34rem;
margin-top: 1.1rem;
color: var(--muted);
font-size: 0.78rem;
line-height: 1.55;
}
.onboarding-hero__actions {
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
margin-top: 1.7rem;
}
.hero-proof {
border: 1px solid var(--line);
background: var(--surface);
box-shadow: var(--shadow);
}
.hero-proof__title {
margin: 0;
padding: 0.8rem 1.1rem;
border-bottom: 1px solid var(--line);
color: var(--accent-ink);
font-size: 0.75rem;
font-weight: 700;
}
.hero-proof__stage {
padding: 1rem 1.1rem;
}
.hero-proof__stage > span {
display: block;
margin-bottom: 0.5rem;
color: var(--muted);
font-size: 0.72rem;
font-weight: 650;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.hero-proof__stage > p {
margin: 0;
padding: 0.7rem 0.85rem;
border-left: 3px solid var(--teal);
background: var(--surface-2);
font-size: 0.88rem;
line-height: 1.6;
}
.hero-proof__stage--draft {
border-top: 1px solid var(--line);
}
.hero-proof__stage--draft > span {
color: var(--accent-ink);
}
.hero-proof__stage dl {
display: grid;
gap: 0.75rem;
margin: 0;
}
.hero-proof__stage dt {
font-size: 0.72rem;
font-weight: 700;
color: var(--muted);
}
.hero-proof__stage dd {
margin: 0.15rem 0 0;
font-size: 0.88rem;
line-height: 1.55;
}
.hero-proof__caption {
margin: 0;
padding: 0.8rem 1.1rem;
border-top: 1px solid var(--line);
color: var(--muted);
font-size: 0.75rem;
line-height: 1.55;
}
.burden-section,
.demo-section,
.evidence-section {
padding: clamp(3.5rem, 6vw, 5.5rem) 0;
}
.burden-section {
border-top: 1px solid var(--line);
}
.compact-heading {
max-width: 50rem;
}
.compact-heading--wide {
max-width: 61rem;
}
.compact-heading h2,
.trust-section h2,
.start-section h2 {
margin: 0;
font-size: clamp(2rem, 4.2vw, 3.9rem);
font-weight: 680;
letter-spacing: -0.055em;
line-height: 1.04;
text-wrap: balance;
}
.compact-heading > p,
.trust-section > header > p,
.start-section__copy > p {
max-width: 46rem;
margin: 1.1rem 0 0;
color: var(--muted);
line-height: 1.7;
}
.burden-layout {
display: grid;
grid-template-columns: minmax(0, 1.15fr) minmax(18rem, 0.85fr);
gap: 1px;
margin-top: 2.5rem;
border: 1px solid var(--line);
background: var(--line);
}
.burden-calculator,
.workflow-comparison {
padding: clamp(1.5rem, 3.5vw, 3rem);
background: var(--surface);
}
.burden-calculator h3,
.workflow-comparison h3,
.evidence-grid h3,
.trust-grid h3,
.review-checklist h3 {
margin: 0;
font-size: 1.05rem;
}
.burden-calculator > p {
margin: 0.55rem 0 0;
color: var(--muted);
font-size: 0.86rem;
}
.calculator-fields {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
margin-top: 1.5rem;
}
.calculator-fields label {
display: grid;
gap: 0.45rem;
min-width: 0;
color: var(--muted);
font-size: 0.78rem;
font-weight: 650;
}
.calculator-fields input,
.calculator-fields select {
width: 100%;
min-height: 2.9rem;
padding: 0.65rem 0.75rem;
border: 1px solid var(--line-strong);
border-radius: var(--r-control);
background: var(--input-bg);
color: var(--text);
}
.calculator-result {
display: grid;
gap: 0.3rem;
margin-top: 1.5rem;
padding: 1.25rem;
background: var(--deep);
color: var(--on-deep);
}
.calculator-result span,
.calculator-result small {
color: var(--on-deep-muted);
font-size: 0.76rem;
}
.calculator-result strong {
font-size: clamp(1.55rem, 3vw, 2.35rem);
letter-spacing: -0.04em;
line-height: 1.1;
}
.burden-calculator .calculator-formula {
margin-top: 0.9rem;
font-size: 0.75rem;
line-height: 1.55;
}
.workflow-comparison {
display: grid;
align-content: start;
gap: 0;
}
.workflow-comparison article {
padding: 1.4rem 0;
border-bottom: 1px solid var(--line);
}
.workflow-comparison article:first-child {
padding-top: 0;
}
.workflow-comparison article p,
.workflow-comparison > p {
margin: 0.65rem 0 0;
color: var(--muted);
font-size: 0.9rem;
line-height: 1.65;
}
.workflow-comparison > p {
padding-top: 1.4rem;
color: var(--accent-ink);
font-weight: 650;
}
.guided-sample {
margin-top: 2.5rem;
}
.guided-sample .scribe-tabs {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.sample-speaker {
max-width: 50rem;
margin: 0;
padding: 0.9rem 1rem;
border-left: 3px solid var(--teal);
background: var(--surface);
line-height: 1.65;
}
.review-checklist ul {
display: grid;
gap: 0.65rem;
max-width: 48rem;
margin: 1rem 0 1.4rem;
padding-left: 1.25rem;
}
.evidence-section {
border-top: 1px solid var(--line);
}
.evidence-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 1px;
margin-top: 2.5rem;
border: 1px solid var(--line);
background: var(--line);
}
.evidence-grid article {
padding: clamp(1.4rem, 3vw, 2.4rem);
background: var(--surface);
}
.evidence-grid p {
margin: 0.9rem 0 0;
color: var(--muted);
font-size: 0.86rem;
line-height: 1.7;
}
.evidence-grid a {
display: inline-block;
margin-top: 1rem;
color: var(--accent-ink);
font-size: 0.8rem;
font-weight: 700;
text-underline-offset: 0.24rem;
}
.evidence-links {
display: grid;
justify-items: start;
}
.evidence-links a + a {
margin-top: 0.45rem;
}
.trust-section,
.start-section {
width: min(100% - 2rem, calc(var(--container) + 3rem));
margin: 0 auto;
padding: clamp(2.5rem, 6vw, 5rem);
}
.trust-section {
border: 1px solid var(--line);
background: var(--surface);
}
.trust-section > header {
max-width: 50rem;
}
.trust-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1px;
margin-top: 2rem;
border: 1px solid var(--line);
background: var(--line);
}
.trust-grid article {
padding: clamp(1.4rem, 3vw, 2rem);
background: var(--surface-2);
}
.trust-grid ul {
display: grid;
gap: 0.75rem;
margin: 1rem 0 0;
padding-left: 1.1rem;
}
.trust-grid li {
color: var(--muted);
font-size: 0.88rem;
line-height: 1.6;
}
.start-section {
display: grid;
grid-template-columns: minmax(18rem, 0.8fr) minmax(0, 1.2fr);
gap: clamp(2.5rem, 6vw, 6rem);
margin-top: 1.25rem;
scroll-margin-top: 5rem;
background: var(--deep);
color: var(--on-deep);
}
.start-section__copy > p {
color: var(--on-deep-muted);
}
.pilot-disclosure {
align-self: start;
background: var(--surface);
color: var(--text);
}
.pilot-disclosure > summary {
padding: 1.2rem 1.35rem;
cursor: pointer;
font-weight: 700;
}
.pilot-disclosure > div {
padding: 0 1.35rem 1.35rem;
}
.pilot-disclosure > div > p {
margin: 0 0 1rem;
color: var(--muted);
font-size: 0.86rem;
}
.pilot-disclosure .lead-form {
padding: 0;
border: 0;
box-shadow: none;
}
.tool-start-guide {
padding-bottom: 1.2rem;
border-bottom: 1px solid var(--line);
}
.tool-start-guide h2 {
margin: 0;
font-size: 1rem;
}
.tool-start-guide ol {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 0.75rem;
margin: 1rem 0 0;
padding: 0;
list-style: none;
}
.tool-start-guide li {
display: grid;
grid-template-columns: 1.6rem minmax(0, 1fr);
gap: 0.55rem;
align-items: start;
font-size: 0.78rem;
line-height: 1.5;
}
.tool-start-guide li > span {
display: grid;
width: 1.6rem;
height: 1.6rem;
place-items: center;
border-radius: 50%;
background: var(--text);
color: var(--bg);
font-weight: 700;
}
.tool-start-guide p {
margin: 1rem 0 0;
color: var(--muted);
font-size: 0.78rem;
line-height: 1.55;
}
.tool-start-guide > a {
display: inline-block;
margin-top: 0.7rem;
color: var(--accent-ink);
font-size: 0.8rem;
font-weight: 700;
}
@media (max-width: 1023px) {
.site-nav__menu {
display: block;
}
.site-nav__menu summary {
position: relative;
padding: 0.55rem 0.75rem;
border: 1px solid var(--line-strong);
border-radius: var(--r-control);
cursor: pointer;
font-size: 0.78rem;
font-weight: 650;
list-style: none;
}
.site-nav__menu summary::-webkit-details-marker {
display: none;
}
.site-nav__menu > div {
position: absolute;
top: calc(100% + 0.75rem);
right: max(1.5rem, calc((100vw - var(--container)) / 2));
display: grid;
width: min(19rem, calc(100vw - 2rem));
padding: 0.65rem;
border: 1px solid var(--line);
background: var(--surface);
box-shadow: var(--shadow);
}
.site-nav__menu a {
padding: 0.8rem;
border-bottom: 1px solid var(--line);
color: var(--text);
font-size: 0.85rem;
font-weight: 600;
text-decoration: none;
}
.site-nav__menu a:last-child {
border-bottom: 0;
}
.onboarding-hero__body,
.burden-layout,
.trust-grid,
.start-section {
grid-template-columns: 1fr;
}
.evidence-grid {
grid-template-columns: 1fr;
}
}
@media (max-width: 760px) {
.site-nav__brand > span:not(.product-breadcrumb) {
display: none;
}
.site-nav__brand .product-breadcrumb,
.site-nav__brand .product-breadcrumb span {
display: flex;
}
.product-breadcrumb strong,
.product-shell-status {
display: none;
}
.site-nav__menu summary {
overflow: hidden;
width: 2.6rem;
color: transparent;
white-space: nowrap;
}
.site-nav__menu summary::after {
position: absolute;
top: 50%;
left: 50%;
width: 1rem;
height: 0.65rem;
border-block: 2px solid var(--text);
color: var(--text);
content: "";
transform: translate(-50%, -50%);
}
.site-nav__menu > div {
right: 1rem;
}
.interpreter-status {
width: min(100% - 1.5rem, var(--container));
}
.onboarding-hero,
.burden-section,
.demo-section,
.evidence-section {
width: min(100% - 1.5rem, var(--container));
}
.onboarding-hero {
padding-block: 3rem 3.5rem;
}
.onboarding-hero > h1 {
font-size: clamp(1.65rem, 8.2vw, 3.15rem);
letter-spacing: -0.055em;
line-height: 1;
}
.onboarding-hero__body {
gap: 2rem;
margin-top: 2rem;
}
.calculator-fields {
grid-template-columns: 1fr;
}
.site-footer {
grid-template-columns: 1fr;
gap: 1.5rem;
}
.burden-section,
.demo-section,
.evidence-section {
padding-block: 3.5rem;
}
.guided-sample .scribe-tabs {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.guided-sample .scribe-tab:nth-child(2) {
border-right: 0;
}
.guided-sample .scribe-tab:nth-child(3) {
border-bottom: 0;
}
.trust-section,
.start-section {
width: calc(100% - 1rem);
padding: 2rem 1.25rem;
}
.tool-start-guide ol {
grid-template-columns: 1fr;
}
}