/* Shared Business Partner typography. Loaded after each page's existing styles.
   Component layout, status colors, visibility and application logic stay local. */
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/fonts/golos-text-0.ttf") format("truetype");
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/fonts/golos-text-1.ttf") format("truetype");
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/fonts/golos-text-2.ttf") format("truetype");
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/fonts/golos-text-3.ttf") format("truetype");
}
:root {
  --bp-font: "Golos Text", -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  --bp-body: 1rem;
  --bp-small: .875rem;
  --bp-caption: .8125rem;
  --bp-title: clamp(2rem, 4vw, 3rem);
  --bp-section: clamp(1.625rem, 3vw, 2.5rem);
  --bp-card: 1.25rem;
  --bp-control: .9375rem;
  --bp-control-height: 44px;
  --bp-control-radius: 8px;
  --bp-brand: #176b52;
  --bp-brand-hover: #10543f;
  --bp-brand-border: #cbd6d2;
  --bp-brand-soft: #edf4f0;
  --bp-focus: #538abe;
  font-family: var(--bp-font);
}
body {
  font-family: var(--bp-font);
  font-size: var(--bp-body);
  font-weight: 400;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4, h5, h6,
.hero h1, .hero h1 em, .page-head h1, .auth-intro h1, .intro h1,
.section h2, .process-intro h2, .ivp-info h2,
.sector-grid h3, .process-list h3,
.brand, .footer .brand, .notice-icon, .hero-photo figcaption strong {
  font-family: var(--bp-font);
}
h1, .page-head h1, .auth-intro h1, .intro h1 {
  font-size: var(--bp-title);
  font-weight: 600;
  line-height: 1.18;
  letter-spacing: -.025em;
}
.hero h1 {
  font-size: clamp(2.375rem, 4.6vw, 4rem);
  font-weight: 600;
  line-height: 1.16;
  letter-spacing: -.03em;
}
.hero h1 em { font-style: normal; font-weight: inherit; }
h2, .section h2, .process-intro h2, .ivp-info h2 {
  font-size: var(--bp-section);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -.02em;
}
h3, .sector-grid h3, .process-list h3 {
  font-size: var(--bp-card);
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: -.01em;
}
.status-title h2, .status-card h2, .auth-card h2,
.project-card h2, .catalog-empty h3, .panel > h2, .section-heading h2,
.wallet-card h2, .empty-state h2, .card h2 {
  font-size: 1.5rem;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -.015em;
}
.status-item h3, .operations-notice h3, .project-details h3 {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.45;
}
p { line-height: 1.65; }
.lead, .auth-lead { font-size: 1.0625rem; line-height: 1.7; }
.brand, .footer .brand {
  font-size: 1.125rem;
  font-weight: 700;
  letter-spacing: -.02em;
  line-height: 1.3;
}
.brand small, .footer .brand small {
  font-size: .625rem;
  font-weight: 500;
  letter-spacing: .025em;
  line-height: 1.5;
}
.eyebrow, .hero .eyebrow, .status-title .eyebrow, .catalog-empty .eyebrow {
  font-size: var(--bp-caption);
  font-weight: 600;
  letter-spacing: .025em;
  line-height: 1.5;
  text-transform: none;
}
.nav a, .auth-nav a, .site-route-nav a {
  font-family: var(--bp-font);
  font-size: var(--bp-small);
  font-weight: 500;
  line-height: 1.45;
  letter-spacing: 0;
}
/* Normalize type for controls without changing tab, close or menu geometry. */
button, input, select, textarea, .button, .outline, .install {
  font-family: var(--bp-font);
  font-size: var(--bp-control);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0;
  text-transform: none;
}
.button, .actions .button, .hero-actions .button, .catalog-empty .button,
.auth-demo-link, .auth-action, .outline, .install {
  min-height: var(--bp-control-height);
  padding: 10px 18px;
  border-radius: var(--bp-control-radius);
  font-size: var(--bp-control);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0;
  text-transform: none;
  gap: 10px;
  text-align: center;
}
.button span { font-size: inherit; }
/* Custom application actions share the homepage green. Provider marks,
   warning/error/destructive states and disabled colors keep their semantics. */
.button-primary:not(:disabled), .button.green:not(:disabled),
.button.blue:not(:disabled), .install:not(:disabled) {
  background: var(--bp-brand);
  border: 1px solid var(--bp-brand);
  color: #fff;
}
.button-primary:not(:disabled):hover, .button.green:not(:disabled):hover,
.button.blue:not(:disabled):hover, .install:not(:disabled):hover {
  background: var(--bp-brand-hover);
  border-color: var(--bp-brand-hover);
  color: #fff;
  transform: none;
}
.button-quiet:not(.danger-button):not(:disabled) {
  background: #fff;
  border-color: var(--bp-brand-border);
  color: var(--bp-brand);
}
.button-quiet:not(.danger-button):not(:disabled):hover {
  background: var(--bp-brand-soft);
  border-color: var(--bp-brand);
  transform: none;
}
.site-route-nav a, .primary-sections a {
  border-radius: var(--bp-control-radius);
  border-color: var(--bp-brand-border);
}
.site-route-nav a:hover, .primary-sections a:hover {
  background: var(--bp-brand-soft);
  border-color: var(--bp-brand);
  color: var(--bp-brand);
}
.site-route-nav a[aria-current="page"] {
  background: var(--bp-brand);
  border-color: var(--bp-brand);
  color: #fff;
}
.nav a[aria-current="page"], .auth-nav a[aria-current="page"] {
  color: var(--bp-brand);
  font-weight: 600;
}
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="hidden"]),
select, textarea, #profile-form input:not([type="checkbox"]),
.form-content input:not([type="checkbox"]), .form-content select, .form-content textarea {
  font-family: var(--bp-font);
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0;
  min-height: var(--bp-control-height);
  border-radius: var(--bp-control-radius);
}
textarea { padding: 10px 12px; }
button:focus-visible, a:focus-visible, summary:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 3px solid var(--bp-focus);
  outline-offset: 3px;
}
button:disabled, .button:disabled, .auth-action:disabled,
input:disabled, select:disabled, textarea:disabled {
  cursor: not-allowed;
  opacity: .6;
  box-shadow: none;
  transform: none;
}
/* Small account text must remain legible against the existing dark card. */
.auth-card-intro, .auth-assurance p, .provider-copy strong,
.auth-message, .auth-return-notice p, .signed-in-panel p,
#profile-form > p, #profile-form label {
  font-size: var(--bp-small);
  line-height: 1.65;
}
.provider-copy span, .auth-privacy-note, .auth-footnote, .auth-footer,
.auth-state-badge, .preview-bar, .preview-bar span {
  font-size: var(--bp-caption);
  line-height: 1.6;
  letter-spacing: 0;
}
/* Existing admin and request shells retain a compact information hierarchy. */
body:has(.shell) { font-size: .9375rem; }
.shell .intro h1 { font-size: clamp(1.875rem, 3vw, 2.25rem); }
.shell .panel-heading h2, .project-detail-content h3 { font-size: 1.125rem; }
.shell .button, .shell .intro .button, dialog .button,
.action, .filter, .admin-tab {
  font-size: var(--bp-small);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0;
}
.shell .button, .shell .intro .button, dialog .button, .action {
  min-height: 40px;
  padding: 9px 13px;
  border-radius: var(--bp-control-radius);
}
.action { padding: 8px 10px; }
.filter, .admin-tab { min-height: 40px; }
.shell th { font-size: .75rem; letter-spacing: 0; text-transform: none; }
.shell td, .panel-heading p, .notice p, .stat span,
.shell .subtitle, .form-content > label:not(.consent-row), .form-row label,
.form-content .consent-row, .my-project-card p {
  font-size: var(--bp-small);
  line-height: 1.6;
}
.shell .muted, .badge, .tab-count, .table-footer, .scope-note,
.reason-label, .project-facts dt, .project-owner-id, .dialog-footnote,
.form-content .optional {
  font-size: var(--bp-caption);
  line-height: 1.5;
}
/* Search is embedded in its own bordered control; avoid a nested tall field. */
.shell .search { min-height: var(--bp-control-height); height: auto; }
.shell .search input { min-height: 0; border-radius: 0; padding: 0; }
@media (max-width: 600px) {
  .brand, .footer .brand { font-size: 1rem; }
  .brand small, .footer .brand small { font-size: .5625rem; }
  .button, .actions .button, .hero-actions .button, .catalog-empty .button {
    padding: 10px 14px;
    font-size: var(--bp-small);
  }
  .auth-card-top { flex-wrap: wrap; }
  .auth-state-badge { white-space: normal; }
  .auth-card h2, .status-title h2 { font-size: 1.375rem; }
  .lead, .auth-lead { font-size: 1rem; }
}
