/**
 * Global institutional editorial system (edits.txt §2).
 * Typography, colour rhythm, CMS prose — layout stays in Tailwind/Twig.
 */

html {
  color-scheme: light only;
}

.inst-platform {
  color-scheme: light only;
  --inst-font-sans: "Source Sans 3", system-ui, -apple-system, "Segoe UI", sans-serif;
  --inst-font-display: "Source Serif 4", Georgia, "Times New Roman", serif;
  --inst-color-text: #1c2b36;
  --inst-color-graphite: #2b3540;
  --inst-color-muted: #6b7785;
  --inst-color-deep: #0b2c4a;
  --inst-color-action: #1f6ae1;
  --inst-color-bg: #f7f9fc;
  --inst-measure: 38rem;
  --inst-leading-body: 1.68;
  --inst-leading-tight: 1.2;
  /* Motion tokens — premium, restrained; tune intensity in one place */
  --inst-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
  --inst-dur: 800ms;
  --inst-dur-card: 360ms;
  --inst-stagger: 110ms;

  font-family: var(--inst-font-sans);
  color: var(--inst-color-graphite);
  font-feature-settings: "kern" 1, "liga" 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.inst-platform .font-display,
.inst-platform .font-inst-display,
.inst-platform .inst-heading,
.inst-platform :is(h1, h2, h3).inst-heading {
  font-family: var(--inst-font-display);
  font-optical-sizing: auto;
  letter-spacing: -0.015em;
}

/* Rich text / variant body column */
.inst-prose {
  font-size: 0.9375rem;
  line-height: var(--inst-leading-body);
  color: var(--inst-color-graphite);
}

.inst-prose > * + * {
  margin-top: 1rem;
}

.inst-prose :where(p:not([class])) {
  max-width: var(--inst-measure);
  color: var(--inst-color-graphite);
}

.inst-prose :where(p.lead, .inst-lead) {
  font-size: 1.0625rem;
  line-height: var(--inst-leading-body);
  color: var(--inst-color-muted);
}

.inst-prose :where(h2:not([class])) {
  margin-top: 2.25rem;
  margin-bottom: 0.75rem;
  font-family: var(--inst-font-display);
  font-size: 1.375rem;
  font-weight: 600;
  line-height: var(--inst-leading-tight);
  letter-spacing: -0.015em;
  color: var(--inst-color-deep);
}

.inst-prose :where(h3:not([class])) {
  margin-top: 1.75rem;
  margin-bottom: 0.5rem;
  font-family: var(--inst-font-display);
  font-size: 1.125rem;
  font-weight: 600;
  line-height: var(--inst-leading-tight);
  color: var(--inst-color-deep);
}

.inst-prose :where(h4:not([class])) {
  margin-top: 1.25rem;
  font-size: 0.9375rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--inst-color-muted);
}

.inst-prose :where(a:not([class])) {
  color: var(--inst-color-action);
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 0.18em;
  text-decoration-thickness: 1px;
}

.inst-prose :where(a:not([class]):hover) {
  color: #195ac0;
}

.inst-prose :where(ul:not([class]), ol:not([class])) {
  max-width: var(--inst-measure);
  padding-left: 1.25rem;
  color: var(--inst-color-graphite);
}

.inst-prose :where(ul:not([class])) {
  list-style-type: disc;
}

.inst-prose :where(ol:not([class])) {
  list-style-type: decimal;
}

.inst-prose :where(li + li) {
  margin-top: 0.35rem;
}

.inst-prose :where(blockquote:not([class])) {
  max-width: var(--inst-measure);
  margin: 1.25rem 0;
  padding: 0.75rem 0 0.75rem 1rem;
  border-left: 3px solid var(--inst-color-action);
  color: var(--inst-color-graphite);
  background: rgba(226, 230, 246, 0.35);
}

.inst-prose :where(hr:not([class])) {
  margin: 2rem 0;
  border: 0;
  border-top: 1px solid #d9e1ea;
}

.inst-prose :where(table) {
  width: 100%;
  font-size: 0.875rem;
  border-collapse: collapse;
}

.inst-prose :where(th, td) {
  padding: 0.625rem 0.75rem;
  border: 1px solid #d9e1ea;
  text-align: left;
  vertical-align: top;
}

.inst-prose :where(th) {
  font-weight: 600;
  color: var(--inst-color-deep);
  background: rgba(226, 230, 246, 0.45);
}

.inst-prose :where(strong, b) {
  font-weight: 600;
  color: var(--inst-color-deep);
}

.inst-prose :where(figcaption) {
  margin-top: 0.5rem;
  font-size: 0.75rem;
  color: var(--inst-color-muted);
}

/* Drupal body / WYSIWYG fields */
.inst-platform .text-formatted,
.inst-platform .field--type-text-with-summary .field__item {
  font-size: 0.9375rem;
  line-height: var(--inst-leading-body);
  color: var(--inst-color-graphite);
}

.inst-platform .text-formatted > * + *,
.inst-platform .field--type-text-with-summary .field__item > * + * {
  margin-top: 1rem;
}

.inst-platform .text-formatted :where(p:not([class])),
.inst-platform .field--type-text-with-summary .field__item :where(p:not([class])) {
  max-width: var(--inst-measure);
}

.inst-platform .text-formatted :where(h2:not([class])),
.inst-platform .field--type-text-with-summary .field__item :where(h2:not([class])) {
  font-family: var(--inst-font-display);
  font-size: 1.375rem;
  font-weight: 600;
  line-height: var(--inst-leading-tight);
  letter-spacing: -0.015em;
  color: var(--inst-color-deep);
}

.inst-platform .text-formatted :where(h3:not([class])),
.inst-platform .field--type-text-with-summary .field__item :where(h3:not([class])) {
  font-family: var(--inst-font-display);
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--inst-color-deep);
}

.inst-platform .text-formatted :where(a:not([class])),
.inst-platform .field--type-text-with-summary .field__item :where(a:not([class])) {
  color: var(--inst-color-action);
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

/* Forms inside platform (contact, etc.) */
.inst-platform .form-item label,
.inst-platform label.option {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--inst-color-deep);
}

.inst-platform input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.inst-platform textarea,
.inst-platform select {
  font-family: var(--inst-font-sans);
  font-size: 0.9375rem;
  color: var(--inst-color-text);
}

/* System / auth pages (login, register, password, profile) — Drupal outputs a
   bare form; this gives it institutional styling. Scoped to .inst-system-page
   so global header/search/AI inputs are not affected. */
.inst-system-page h1 {
  font-family: var(--inst-font-display);
  font-optical-sizing: auto;
  font-size: clamp(1.75rem, 3vw, 2.25rem);
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.15;
  color: var(--inst-color-deep);
  margin-bottom: 1.25rem;
}

.inst-system-page :where(.form-item, .js-form-item) {
  margin-bottom: 1rem;
}

.inst-system-page label {
  display: block;
  margin-bottom: 0.35rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--inst-color-deep);
}

.inst-system-page :where(
  input[type="text"], input[type="email"], input[type="password"],
  input[type="tel"], input[type="number"], input[type="url"], textarea) {
  width: 100%;
  border: 1px solid #d9e1ea;
  border-radius: 0.5rem;
  padding: 0.625rem 0.75rem;
  background: #fff;
  color: var(--inst-color-text);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.inst-system-page :where(input:focus, textarea:focus) {
  outline: none;
  border-color: var(--inst-color-action);
  box-shadow: 0 0 0 3px rgba(31, 106, 225, 0.15);
}

.inst-system-page :where(input[type="submit"], button[type="submit"], .form-submit, .button--primary) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 0.5rem;
  background: var(--inst-color-action);
  color: #fff;
  font-weight: 600;
  font-size: 0.875rem;
  padding: 0.7rem 1.25rem;
  cursor: pointer;
  transition: background 0.15s ease;
}

.inst-system-page :where(input[type="submit"]:hover, button[type="submit"]:hover, .form-submit:hover, .button--primary:hover) {
  background: #195ac0;
}

.inst-system-page :where(.description, .form-item__description) {
  margin-top: 0.35rem;
  font-size: 0.8125rem;
  line-height: 1.5;
  color: var(--inst-color-muted);
}

.inst-system-page a {
  color: var(--inst-color-action);
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.inst-system-page :where(input[type="checkbox"], input[type="radio"]) {
  accent-color: var(--inst-color-action);
}

/* Metric numerals (hero snapshot) */
.inst-platform .inst-metric-value {
  font-family: var(--inst-font-display);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.03em;
}

/* §2 Global design — display headings & calmer body rhythm */
.inst-platform :is(h1, h2).inst-heading,
.inst-platform h1:not(.font-sans),
.inst-platform h2:not(.font-sans):not([class*="text-xs"]):not([class*="text-sm"]):not([class*="text-base"]) {
  font-family: var(--inst-font-display);
  letter-spacing: -0.015em;
}

.inst-platform .max-w-measure > p,
.inst-platform p.text-inst-lead {
  color: var(--inst-color-muted);
}

.inst-platform .inst-section-lead {
  margin-top: 1.25rem;
  max-width: var(--inst-measure);
  font-size: 1.0625rem;
  line-height: var(--inst-leading-body);
  color: var(--inst-color-muted);
}

/* Fluid editorial display scale (clamp) — larger, calmer hierarchy */
.inst-platform .inst-display-1 {
  font-family: var(--inst-font-display);
  font-optical-sizing: auto;
  font-size: clamp(2.75rem, 6vw, 4.75rem);
  line-height: 1.04;
  letter-spacing: -0.025em;
}

.inst-platform .inst-display-2 {
  font-family: var(--inst-font-display);
  font-optical-sizing: auto;
  font-size: clamp(2rem, 4vw, 3.25rem);
  line-height: 1.08;
  letter-spacing: -0.02em;
}

.inst-platform .inst-display-3 {
  font-family: var(--inst-font-display);
  font-optical-sizing: auto;
  font-size: clamp(1.5rem, 2.4vw, 2.25rem);
  line-height: 1.15;
  letter-spacing: -0.015em;
}

/* Eyebrow label — institutional section kicker */
.inst-platform .inst-eyebrow {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--inst-color-muted);
}

/* Slightly larger lead reading size on wide viewports */
.inst-platform p.text-inst-lead {
  font-size: clamp(1.0625rem, 1.4vw, 1.1875rem);
  line-height: 1.65;
}

/* Diagrams: keep designed palette when the phone uses dark mode (site stays light). */
.inst-gov-diagram,
.inst-diagram-scroll,
.inst-gov-diagram svg,
.inst-diagram-scroll svg,
.inst-platform [class*="overflow-x-auto"] svg {
  color-scheme: light only;
  forced-color-adjust: none;
}

@media (prefers-color-scheme: dark) {
  .inst-gov-diagram svg,
  .inst-diagram-scroll svg,
  .inst-platform [class*="overflow-x-auto"] svg {
    filter: none !important;
    -webkit-filter: none !important;
  }
}

/* Footer utility row — muted, clearly clickable */
.inst-footer-bottom {
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid #d9e1ea;
}

.inst-footer-utility {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.125rem 0;
  font-size: 0.75rem;
  line-height: 1.65;
}

@media (min-width: 640px) {
  .inst-footer-utility {
    justify-content: flex-start;
  }
}

.inst-footer-utility a {
  color: var(--inst-color-muted);
  text-decoration: underline;
  text-decoration-color: rgba(107, 119, 133, 0.32);
  text-underline-offset: 0.22em;
  transition: color 0.15s ease, text-decoration-color 0.15s ease;
}

.inst-footer-utility a:hover,
.inst-footer-utility a:focus-visible {
  color: var(--inst-color-graphite);
  text-decoration-color: rgba(43, 53, 64, 0.45);
}

.inst-footer-utility a:focus-visible {
  outline: 2px solid var(--inst-color-action);
  outline-offset: 2px;
  border-radius: 2px;
}

.inst-footer-utility__sep {
  color: rgba(107, 119, 133, 0.42);
  padding: 0 0.35rem;
  user-select: none;
}

.inst-footer-copy {
  margin-top: 0.625rem;
  font-size: 0.75rem;
  line-height: 1.5;
  color: rgba(107, 119, 133, 0.78);
  text-align: center;
}

@media (min-width: 640px) {
  .inst-footer-copy {
    text-align: left;
  }
}
