/* MVP visual system. Page-scoped so the scientific viewer keeps its geometry. */
:root {
  --ui-paper: #f7f7f1;
  --ui-surface: #fffef9;
  --ui-ink: #233f34;
  --ui-muted: #566b5b;
  --ui-green: #234f3c;
  --ui-line: #d5dfd0;
  --ui-amber: #986923;
  --ui-font: "DM Sans", "Vazirmatn", Tahoma, sans-serif;
}
html[lang="fa"] { --ui-font: "Vazirmatn", Tahoma, sans-serif; }
body[data-page="portal"] {
  --line: var(--ui-line);
  --panel: var(--ui-surface);
  --accent: var(--ui-green);
  background: var(--ui-paper);
  color: var(--ui-ink);
  font: 14px/1.85 var(--ui-font);
}
body[data-page="portal"] :is(button, input, select, textarea) { font-family: var(--ui-font); }
body[data-page="portal"] #app {
  grid-template-columns: 224px minmax(0, 1fr);
  grid-template-rows: 74px minmax(calc(100svh - 74px), auto);
}
body[data-page="portal"] .page { max-width: 1480px; padding: 32px 36px 48px; }
body[data-page="portal"] :is(h1, h2, h3) { color: var(--ui-ink); letter-spacing: 0; }
body[data-page="portal"] h1,
body[data-page="portal"] .page-title > h1,
body[data-page="portal"] .study-context h1,
body[data-page="portal"] .platform-heading h1 {
  font: 600 32px/1.55 var(--ui-font) !important;
  letter-spacing: 0;
  overflow-wrap: anywhere;
}
body[data-page="portal"] h2 { font: 600 21px/1.7 var(--ui-font); }
body[data-page="portal"] h3 { font: 600 16px/1.75 var(--ui-font); }
body[data-page="portal"] :is(.pipeline-section, .operations-columns, .personal-batches, .platform-section-title, .platform-callout) h2,
body[data-page="portal"] .workflow-stage h3,
body[data-page="portal"] .platform-actions > h3 {
  font: 600 21px/1.7 var(--ui-font) !important;
}
body[data-page="portal"] .page-title { align-items: center; gap: 18px; margin-bottom: 24px; }
body[data-page="portal"] .panel {
  background: var(--ui-surface);
  border: 1px solid var(--ui-line);
  border-radius: 6px;
  padding: 22px;
  box-shadow: none;
  min-width: 0;
}
body[data-page="portal"] a { color: #315c3e; }
body[data-page="portal"] :is(button, a.button) {
  min-height: 42px;
  padding: 9px 15px;
  font: 600 13px/1.8 var(--ui-font);
  border: 1px solid #bdcfb4;
  border-radius: 5px;
  background: #f0f4e9;
  color: #315238;
  white-space: normal;
  overflow-wrap: anywhere;
  vertical-align: middle;
  text-decoration: none;
  transition: background-color .14s, border-color .14s;
}
body[data-page="portal"] a.button { display: inline-flex; align-items: center; justify-content: center; gap: 9px; }
body[data-page="portal"] :is(button, a.button):hover:not(:disabled) { background: #e5ecdc; border-color: #9eb38f; }
body[data-page="portal"] :is(button.primary, a.button.primary) { background: var(--ui-green); border-color: var(--ui-green); color: #fffef9; }
body[data-page="portal"] :is(button.primary, a.button.primary):hover:not(:disabled) { background: #173e2d; border-color: #173e2d; }
body[data-page="portal"] button:disabled { opacity: .5; }
body[data-page="portal"] :is(button.link, button.linklike) { background: transparent; border-color: transparent; }
body[data-page="portal"] :is(button, a, input, select, textarea, summary):focus-visible {
  outline: 3px solid #a37a35;
  outline-offset: 3px;
}
body[data-page="portal"] :is(input, select, textarea) {
  min-height: 42px;
  font: 400 14px/1.85 var(--ui-font);
  color: var(--ui-ink);
  background: #fffefb;
  border: 1px solid #bdcdb5;
  border-radius: 5px;
  padding: 9px 12px;
  max-width: 100%;
  min-width: 0;
}
body[data-page="portal"] input::placeholder { color: #697960; opacity: 1; }
body[data-page="portal"] input:is([type="checkbox"], [type="radio"]) { min-height: 0; padding: 0; width: 17px; height: 17px; flex-shrink: 0; }
body[data-page="portal"] input[type="range"] { min-height: 30px; padding: 0; }
body[data-page="portal"] :is(input[type="number"], input[name="username"], input[name="password"]) { direction: ltr; unicode-bidi: isolate; }
body[data-page="portal"] label.field { font-size: 13px; color: #405c43; }
body[data-page="portal"] :is(.note, .empty p) { font-size: 13px; color: var(--ui-muted); line-height: 1.95; }
body[data-page="portal"] .error { color: #833b29; background: #fff0e7; border-color: #dbb5a1; padding: 13px 16px; font-size: 13px; }
body[data-page="portal"] .empty { color: var(--ui-muted); padding: 32px 22px; }
body[data-page="portal"] table { font: 400 13px/1.85 var(--ui-font); color: #36513b; }
body[data-page="portal"] :is(th, td) { text-align: start; vertical-align: middle; }
body[data-page="portal"] th { font: 600 12px/1.85 var(--ui-font); letter-spacing: 0; text-transform: none; color: #536b48; background: #eef2e7; padding: 12px 14px; white-space: nowrap; }
body[data-page="portal"] td { padding: 14px; border-color: #e0e6d9; }
body[data-page="portal"] tr:hover td { background: #f4f7ee; }
body[data-page="portal"] .table-wrap { scrollbar-width: thin; scrollbar-color: #a4b596 transparent; }
body[data-page="portal"] .table-wrap > .row { gap: 14px; }
body[data-page="portal"] .case-id { font-size: 11px; color: #65775b; direction: ltr; unicode-bidi: isolate; overflow-wrap: anywhere; }
body[data-page="portal"] .status-badge { font: 500 12px/1.8 var(--ui-font); padding: 4px 9px; border-radius: 4px; background: #e8edde; color: #405a35; }
body[data-page="portal"] .status-attention { color: #7b521d; background: #f8ead0; }
body[data-page="portal"] :is(.status-in_progress, .status-refining) { color: #355e57; background: #e4ece8; }
body[data-page="portal"] :is(.status-submitted, .status-completed, .status-finished) { color: #385c2e; background: #e0ecd4; }
body[data-page="portal"] .portal-eyebrow { font: 500 11px/1.8 var(--ui-font); color: #5f7550; letter-spacing: 0; margin-bottom: 10px; }
body[data-page="portal"] .subtle-link { color: #42673b !important; font-size: 13px; }

/* Quiet, legible navigation, with a compact header rather than a second hero. */
.workspace-sidebar { padding: 28px 20px 20px; background: #193e30; }
body[data-page="portal"] .wordmark { font-family: "DM Sans", Arial, sans-serif; font-size: 29px; direction: ltr; unicode-bidi: isolate; align-self: flex-start; }
.sidebar-subtitle { font: 400 11px/1.85 var(--ui-font); letter-spacing: 0; color: #b8cbb1; }
.sidebar-section-label { font: 500 12px/1.8 var(--ui-font); color: #b4c8a8; margin: 30px 10px 13px; }
.workspace-sidebar nav { gap: 6px; }
.workspace-sidebar nav a { min-height: 44px; padding: 10px 12px; font: 400 13px/1.85 var(--ui-font); gap: 12px; }
.workspace-sidebar nav a span { font-size: 10px; color: #a5c09b; }
.workspace-sidebar nav a.active { background: #e1ebd7; color: #254631; }
.sidebar-ornament { display: none; }
.sidebar-bottom { font-size: 12px; }
.sidebar-bottom > p, .back-public { font-size: 12px; line-height: 1.9; }
.sidebar-account strong { font-size: 13px; }
body[data-page="portal"] .sidebar-account button.link { font: 400 12px/1.85 var(--ui-font); color: #c0d1b8; min-height: 34px; padding: 3px 0; }
.workspace-topbar { padding: 0 36px; background: #fafbf5; border-color: var(--ui-line); }
.workspace-kicker { font: 500 10px/1.7 var(--ui-font); letter-spacing: .04em; color: #607654; }
.workspace-topbar strong { font: 500 14px/1.8 var(--ui-font); color: #35523b; }
.workspace-access { font: 400 12px/1.6 var(--ui-font); color: #4f6a45; padding: 5px 10px; }
.workspace-topbar-end { gap: 14px; }
.account-avatar { width: 36px; height: 36px; font: 600 13px var(--ui-font); }

/* Working surfaces: restrained type, useful density, one clear main action. */
body[data-page="portal"] .workspace-welcome {
  display: block; min-height: 0; padding: 0 0 24px; margin-bottom: 25px;
}
body[data-page="portal"] .workspace-welcome h2 { font: 600 28px/1.65 var(--ui-font) !important; letter-spacing: 0 !important; margin-bottom: 10px; }
.workspace-welcome-art { display: none; }
body[data-page="portal"] .workspace-welcome p:not(.portal-eyebrow) { color: var(--ui-muted); font-size: 14px; }
.welcome-facts { font: 400 12px/1.8 var(--ui-font); color: #597149; gap: 22px; margin-top: 16px; }
.welcome-facts b { font: 600 18px/1.6 var(--ui-font); margin-inline-end: 5px; margin-inline-start: 0; color: #315735; }
.platform-heading { align-items: center; margin: 0 0 28px; gap: 24px; }
.platform-heading > div > p:last-child { font-size: 14px; color: var(--ui-muted); margin-top: 10px; }
.platform-metrics { gap: 14px; }
.platform-metric { min-width: 0; padding: 20px; border-color: var(--ui-line); background: var(--ui-surface); border-radius: 6px; }
.platform-metric p { font: 500 13px/1.85 var(--ui-font); color: #536d48; padding-inline-end: 12px; margin-bottom: 14px; }
.platform-metric strong { font: 600 36px/1.35 var(--ui-font); font-variant-numeric: tabular-nums; margin-bottom: 10px; color: #254a33; }
.platform-metric small { font-size: 12px; color: #64765b; line-height: 1.85; }
.metric-index { font-size: 10px; color: #78896b; inset-inline-start: auto; inset-inline-end: 13px; }
.platform-section-title { margin: 32px 0 18px; }
.platform-section-title > span { font-size: 12px; color: #637657; }
.platform-columns { gap: 20px; }
.platform-study-list { margin-top: 16px; }
.platform-study strong { font-size: 14px; font-weight: 500; }
.platform-study :is(span, small) { font: 400 12px/1.8 var(--ui-font); color: #617653; }
.platform-actions strong { font-size: 14px; font-weight: 500; }
.platform-actions span { font-size: 12px; color: #617653; }
.platform-callout { padding: 22px; gap: 20px; margin-top: 22px; background: #edf2e5; }
.platform-callout p:last-child { font-size: 13px; color: #5e7450; margin-top: 8px; }
.platform-callout > a { margin-inline-start: auto; margin-inline-end: 0; }
.callout-emblem { font-size: 32px; color: #6a8750; }
.study-context { margin-bottom: 25px; }
.study-context > .row { margin-top: 18px; }
.study-policy { font: 500 12px/1.8 var(--ui-font); padding: 6px 10px; border-radius: 4px; }
.study-tabs { gap: 24px; margin-top: 20px; border-color: var(--ui-line); }
.study-tabs a { font-size: 13px; padding: 12px 0; min-height: 46px; color: #526c45 !important; }
.study-tabs a[aria-current="page"] { color: #1f4a30 !important; }
.pipeline-section { margin: 22px 0 26px; }
.pipeline-section > .row > span { font-size: 12px; color: #5c7350; }
.pipeline-stage { padding: 18px 14px; transition: background-color .14s; border-inline-end: 1px solid #dce4d2; border-right: 0; }
.pipeline-stage:last-child { border-inline-end: 0; }
.pipeline-stage:hover { transform: none; background: #ecf2e3; }
.pipeline-stage strong { font: 600 31px/1.4 var(--ui-font); font-variant-numeric: tabular-nums; margin: 12px 0; }
.pipeline-stage h3 { font: 600 13px/1.8 var(--ui-font) !important; white-space: normal; }
.pipeline-stage small { font-size: 12px; color: #5d7350; line-height: 1.8; }
.stage-number { font: 400 11px/1.7 var(--ui-font); color: #637955; }
.operation-link { font-size: 13px; padding: 15px 0; }
.attention-link strong { font-size: 14px; }
.attention-link span { font-size: 13px; }
.contribution-focus { padding: 27px 29px; border-radius: 6px; margin-bottom: 26px; gap: 24px; }
body[data-page="portal"] .contribution-focus h2 { font: 600 28px/1.65 var(--ui-font) !important; letter-spacing: 0; max-width: 650px; }
.contribution-focus p:not(.portal-eyebrow) { font-size: 14px; color: #d0dfc6; margin: 12px 0 18px; }
.contribution-ring { width: 112px; height: 112px; box-shadow: none; border-color: #bed1ae55; }
.contribution-ring strong { font: 600 30px/1.5 var(--ui-font); }
.contribution-ring span { font-size: 11px; max-width: 95px; margin: auto; }
.attention-box { border-left: 1px solid #dfc8a8; border-inline-start: 4px solid #a97a38; padding: 17px 21px; }
.attention-box p { font-size: 13px; }
.attention-box small { font-size: 12px; }
body[data-page="portal"] .study-card h2 { font: 600 20px/1.75 var(--ui-font); margin-bottom: 10px; }
body[data-page="portal"] .study-card p { font-size: 13px; color: var(--ui-muted); }
.study-card .row { align-items: center; }
.personal-batches > .row > span { font-size: 12px; }
.batch-cards p:not(.portal-eyebrow) { font-size: 13px; }
.people-grid strong { font-size: 14px; }
.people-grid p { font-size: 12px; color: var(--ui-muted); }
.workflow-mode { padding: 14px 18px; }
.workflow-mode strong { font-size: 14px; }
.workflow-mode span, .workflow-actions span, .workflow-history summary { font-size: 13px; }
.workflow-stage label { font-size: 13px; color: #45603c; }
.workflow-stage textarea { min-height: 100px; }
.result-context { border-left: 0; border-inline-start: 3px solid #7d9b63; padding: 16px 20px; font-size: 13px; color: #47643a; }
.result-context strong { font-size: 14px; }
.batch-policy-note { border-left: 0; border-inline-start: 3px solid #8ba971; font-size: 13px; }
.batch-steps li { font-size: 13px; color: #607652; }
.batch-steps li::before { font: 500 12px/1.7 var(--ui-font); }
.batch-form legend { font-size: 13px; color: #536d47; }
.batch-preview { padding: 20px; background: #f0f5e9; }
.batch-preview :is(summary, [data-preview-cases]) { font-size: 13px; }
body[data-page="portal"] .modal { width: min(760px, calc(100% - 40px)); border-radius: 7px; padding: 25px; color: var(--ui-ink); }
body[data-page="portal"] .modal :is(h2, h3) { font: 600 22px/1.75 var(--ui-font); }
body[data-page="portal"] #close-modal { min-height: 38px; }

/* The public presentation keeps its established identity, with less oversized type. */
body[data-page="public"] .public-surface :is(button, input, select, textarea) { font-family: var(--ui-font); }
body[data-page="public"] .public-surface :is(.nav-auth, .button, .auth-submit, .btn) { min-height: 44px; }
body[data-page="public"] .public-surface :is(a, button, input):focus-visible { outline: 3px solid #a37a35; outline-offset: 4px; }
body[data-page="public"] .public-surface[lang="fa"] .hero h1 { font-size: 49px; line-height: 1.65; letter-spacing: 0; }
body[data-page="public"] .public-surface[lang="fa"] .hero-description { font-size: 16px; line-height: 2; color: #536b5b; }
body[data-page="public"] .public-surface[lang="fa"] .hero-footnote { font-size: 12px; margin-top: 28px; color: #59715e; }
body[data-page="public"] .public-surface[lang="fa"] .hero { padding-top: 55px; padding-bottom: 35px; }
body[data-page="public"] .public-surface[lang="fa"] :is(.statement p, .section-header h2, .workflow-heading h2) { font-size: 37px; line-height: 1.75; }
body[data-page="public"] .public-surface[lang="fa"] .invitation h2 { font-size: 46px; line-height: 1.65; }
body[data-page="public"] .public-surface[lang="fa"] .project-copy strong { font-size: 24px; }
body[data-page="public"] .public-surface[lang="fa"] .workflow-card h3 { font-size: 23px; line-height: 1.8; }
body[data-page="public"] .public-surface[lang="fa"] .workflow-card p { font-size: 14px; line-height: 2; }
body[data-page="public"] .public-surface[lang="fa"] :is(.button, .nav-auth, .button-link) { font-size: 14px; }
body[data-page="public"] .public-surface[lang="fa"] .main-nav { font-size: 14px; gap: 24px; }
body[data-page="public"] .public-surface[lang="fa"] .auth-card h2 { font-size: 34px; line-height: 1.75; }
body[data-page="public"] .public-surface[lang="fa"] .auth-story h1 { font-size: 43px; line-height: 1.8; }
body[data-page="public"] .public-surface :is(.auth-form label, .auth-access-note) { font-size: 13px; line-height: 1.9; }
body[data-page="public"] .public-surface .auth-form input { min-height: 46px; font-size: 16px; }
body[data-page="public"] .public-surface .auth-card { max-width: 450px; }
body[data-page="public"] .public-surface .auth-subtitle { color: #526b59; }
body[data-page="public"] .public-surface .auth-submit { border-radius: 5px; }
body[data-page="public"] .public-surface .join-steps { gap: 20px; }
body[data-page="public"] .public-surface .join-steps p { font-size: 14px; line-height: 2; }

/* Language affects copy, never the patient-space image orientation. */
html[lang="fa"] body[data-page="reader"] { font-family: var(--ui-font); }
html[lang="fa"] body[data-page="reader"] :is(button, input, select, textarea) { font-family: var(--ui-font); }
html[dir="rtl"] body[data-page="portal"] .workspace-topbar-end { margin-inline-start: auto; margin-inline-end: 0; }
html[dir="rtl"] body[data-page="portal"] .metric-index { left: 13px; right: auto; }
html[dir="rtl"] body[data-page="portal"] :is(.platform-callout, .result-context, .batch-policy-note) { text-align: start; }
html[dir="rtl"] body[data-page="portal"] .welcome-facts b { margin-left: 5px; margin-right: 0; }

@media(max-width:1200px) {
  .pipeline-stage:nth-child(3) { border-inline-end: 0; }
  .pipeline-stage:nth-child(-n+3) { border-bottom: 1px solid #dce4d2; }
  .platform-metric { padding: 19px 16px; }
}
@media(max-width:1000px) {
  body[data-page="portal"] #app { grid-template-columns: 200px minmax(0, 1fr); }
  body[data-page="portal"] .page { padding: 28px 25px 42px; }
  .workspace-topbar { padding-inline: 25px; }
  .workspace-sidebar { padding-inline: 16px; }
  .platform-heading { align-items: flex-start; gap: 16px; }
  .contribution-ring { display: none; }
  body[data-page="public"] .public-surface[lang="fa"] .hero h1 { font-size: 40px; }
}
@media(max-width:760px) {
  body[data-page="portal"] #app { display: block; }
  body[data-page="portal"] .page { padding: 23px 18px 36px; }
  body[data-page="portal"] :is(h1, .page-title > h1, .study-context h1, .platform-heading h1) { font-size: 26px !important; }
  body[data-page="portal"] :is(.workspace-welcome h2, .contribution-focus h2) { font-size: 24px !important; }
  body[data-page="portal"] .panel { padding: 18px; }
  .workspace-topbar { height: 68px; padding-inline: 18px; gap: 12px; }
  .workspace-topbar strong { font-size: 13px; }
  .workspace-kicker { font-size: 9px; }
  body[data-page="portal"] #workspace-menu { min-height: 42px; min-width: 42px; padding: 6px 10px; }
  .workspace-topbar-end { margin-inline-start: auto; margin-inline-end: 0; }
  .workspace-sidebar { width: min(280px, calc(100vw - 48px)); }
  html[dir="rtl"] body[data-page="portal"] .workspace-sidebar { left: auto; right: 0; transform: translateX(100%); }
  html[dir="rtl"] body[data-page="portal"].workspace-nav-open .workspace-sidebar { transform: translateX(0); }
  html[dir="rtl"] body[data-page="portal"] .sidebar-close { left: 10px; right: auto; }
  body[data-page="portal"] .workspace-shade { min-height: 0; padding: 0; }
  .platform-metrics { gap: 10px; }
  .platform-metric { padding: 17px 13px; }
  .platform-metric strong { font-size: 30px; }
  .platform-metric p { font-size: 12px; padding-inline-end: 6px; }
  .platform-metric small { font-size: 11px; }
  .platform-columns { gap: 16px; }
  .platform-section-title { margin-top: 26px; }
  .platform-callout { padding: 18px; }
  .platform-callout .callout-emblem { display: none; }
  .study-context > .row { gap: 12px; }
  .study-tabs { gap: 22px; }
  .case-pipeline { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pipeline-stage { padding: 16px 12px; border-bottom: 1px solid #dce4d2; }
  .pipeline-stage:nth-child(odd) { border-inline-end: 1px solid #dce4d2; }
  .pipeline-stage:nth-child(even) { border-inline-end: 0; }
  .pipeline-stage:nth-last-child(-n+2) { border-bottom: 0 !important; }
  .pipeline-stage strong { font-size: 29px; }
  .pipeline-stage small { font-size: 11px; }
  .contribution-focus { padding: 23px; }
  .contribution-focus p:not(.portal-eyebrow) { font-size: 13px; }
  .batch-steps { gap: 8px; }
  .batch-steps li { font-size: 11px; }
  .batch-form > label { max-width: 100%; }
  .batch-form :is(select, input, button) { min-height: 44px; }
  body[data-page="portal"] input:not([type="checkbox"]):not([type="range"]), body[data-page="portal"] select { font-size: 16px; }
  body[data-page="portal"] .modal { width: calc(100% - 28px); padding: 20px; }
  body[data-page="public"] .public-surface[lang="fa"] .hero h1 { font-size: 34px; line-height: 1.8; }
  body[data-page="public"] .public-surface[lang="fa"] .hero { padding-top: 32px; }
  body[data-page="public"] .public-surface[lang="fa"] .hero-description { font-size: 15px; }
  body[data-page="public"] .public-surface[lang="fa"] :is(.statement p, .section-header h2, .workflow-heading h2) { font-size: 28px; }
  body[data-page="public"] .public-surface[lang="fa"] .invitation h2 { font-size: 34px; }
  body[data-page="public"] .public-surface[lang="fa"] .auth-story h1 { font-size: 33px; }
  body[data-page="public"] .public-surface[lang="fa"] .auth-card h2 { font-size: 28px; }
  body[data-page="public"] .public-surface[lang="fa"] :is(.nav-auth, .button) { font-size: 13px; }
  body[data-page="public"] .public-surface .nav-actions { gap: 8px; }
}
@media(prefers-reduced-motion:reduce) {
  body[data-page="portal"] :is(button, a.button, .pipeline-stage, .workspace-sidebar) { transition: none; }
}

/* Two calm rows keep every public-header action reachable on small phones. */
@media(max-width:480px) {
  body[data-page="public"] .public-surface .site-header { height: auto; }
  body[data-page="public"] .public-surface .nav-inner {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 44px 44px;
    grid-template-rows: 44px 44px;
    gap: 8px;
    height: auto;
    min-height: 0;
    padding: 12px 16px;
  }
  body[data-page="public"] .public-surface .nav-inner > .wordmark { grid-column: 1; grid-row: 1; justify-self: start; }
  body[data-page="public"] .public-surface .nav-actions { display: contents; }
  body[data-page="public"] .public-surface .nav-actions > .lang-switch { grid-column: 2; grid-row: 1; min-width: 44px; height: 44px; }
  body[data-page="public"] .public-surface .menu-toggle { grid-column: 3; grid-row: 1; width: 44px; height: 44px; display: block; }
  body[data-page="public"] .public-surface .nav-signin { grid-column: 3; grid-row: 2; padding: 0; justify-content: center; font-size: 12px; }
  body[data-page="public"] .public-surface .nav-auth-filled { grid-column: 1 / 3; grid-row: 2; justify-content: center; width: 100%; }
  body[data-page="public"] .public-surface .main-nav { top: 100%; }
}
