/* Object Passport typography. Layout, color and motion live in style.css.
   Versioned, locally served WOFF2 files; only the primary Latin face is preloaded. */
@font-face {
  font-family: 'Instrument Sans';
  src: url('/fonts/instrument-sans-latin-wght-v4.woff2') format('woff2');
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Instrument Sans';
  src: url('/fonts/instrument-sans-latin-ext-wght-v4.woff2') format('woff2');
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/fonts/ibm-plex-mono-latin-400-v20.woff2') format('woff2');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

:root {
  --font-primary: 'Instrument Sans', 'Segoe UI', Arial, sans-serif;
  --font-metadata: 'IBM Plex Mono', Consolas, monospace;
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;
  --type-xs: .6875rem;
  --type-sm: .75rem;
  --type-ui: .8125rem;
  --type-body: .875rem;
  --type-product: 1.0625rem;
  --type-section: clamp(1.5rem, 1.8vw, 1.875rem);
  --type-title: clamp(1.75rem, 2.2vw, 2rem);
  --type-display: clamp(2.25rem, 2.8vw, 2.875rem);
  --type-value: clamp(2rem, 2.9vw, 2.625rem);
  --leading-tight: 1.08;
  --leading-heading: 1.2;
  --leading-label: 1.4;
  --leading-body: 1.6;
  --tracking-display: -.035em;
  --tracking-heading: -.02em;
  --tracking-body: 0;
  --tracking-label: .01em;
}

body {
  font-family: var(--font-primary);
  font-size: var(--type-body);
  font-weight: var(--weight-regular);
  line-height: var(--leading-body);
  letter-spacing: var(--tracking-body);
  font-synthesis: none;
  font-variant-numeric: lining-nums;
}
button, input, select { font: inherit; }
button, select { line-height: var(--leading-label); }
h1, h2, h3, .object-name {
  font-family: var(--font-primary);
  font-weight: var(--weight-semibold);
  font-style: normal;
  letter-spacing: var(--tracking-heading);
  line-height: var(--leading-heading);
}
.left-pane h1 {
  font-size: var(--type-display);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-display);
}
.heading-accent { color: var(--accent); font: inherit; }
.left-pane h1 .heading-accent { white-space: nowrap; }
.globe-head h2 { font-size: var(--type-section); }
.right-pane h3 { font-size: var(--type-title); }
.object-name { font-size: var(--type-product); line-height: 1.3; }
.intro { font-size: var(--type-body); line-height: var(--leading-body); }

/* Keep the compact wordmark; sentence case is used throughout the interface. */
.brand { font-size: var(--type-xs); font-weight: var(--weight-semibold); line-height: 1.25; letter-spacing: .08em; }
.brand strong { font-size: 1.125rem; font-weight: var(--weight-bold); line-height: 1.3; letter-spacing: .025em; }
.brand-mark { font-size: 2.6875rem; line-height: 1; font-weight: var(--weight-regular); }
.eyebrow { font-size: var(--type-body); font-weight: var(--weight-medium); font-style: normal; letter-spacing: var(--tracking-body); }
.header-center { letter-spacing: var(--tracking-body); }
.header-right, .header-catalog, .topline, footer { font-size: var(--type-xs); line-height: var(--leading-label); letter-spacing: var(--tracking-label); }
.small-label, .input-label, .ranking-head {
  font-size: var(--type-sm);
  line-height: var(--leading-label);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: none;
}
.catalog-label { font-size: var(--type-sm); font-weight: var(--weight-medium); line-height: var(--leading-label); letter-spacing: var(--tracking-body); }
.catalog-note, .left-foot, .empty-list, .commodity-description, .bottom-band p {
  font-size: var(--type-sm);
  line-height: var(--leading-body);
}
.search-field input, .select-wrap select, .segmented button, .choice, .catalog-row .product-choice, .partner-name {
  font-size: var(--type-ui);
  line-height: var(--leading-label);
  letter-spacing: var(--tracking-body);
}
.catalog-row .product-choice, .segmented button { font-weight: var(--weight-medium); }
.segmented button.active { font-weight: var(--weight-semibold); }
.catalog-tools button, .catalog-tools select, .catalog-action { font-size: var(--type-sm); line-height: var(--leading-label); font-weight: var(--weight-medium); }
.selected-object .small-label { font-size: var(--type-xs); letter-spacing: var(--tracking-label); }
.data-state, .map-footer, .hover-tip { font-size: var(--type-sm); line-height: 1.5; }
.metric-label { font-size: var(--type-xs); line-height: var(--leading-label); font-weight: var(--weight-medium); letter-spacing: var(--tracking-body); }
.metric-desc { font-size: var(--type-xs); line-height: 1.5; }
.econ-row span { font-size: var(--type-ui); }

/* Instrument Sans keeps the figures editorial; tabular widths make comparison stable. */
.big-value, .partner-amount, .econ-row strong {
  font-family: var(--font-primary);
  font-variant-numeric: lining-nums tabular-nums;
  font-weight: var(--weight-medium);
  letter-spacing: -.025em;
}
.big-value { font-size: var(--type-value); line-height: 1.15; }
.partner-amount { font-size: var(--type-ui); letter-spacing: var(--tracking-body); white-space: nowrap; }
.econ-row strong { font-size: 1.25rem; line-height: var(--leading-heading); }

/* Mono is a notation layer: identifiers, periods, provenance and technical details. */
.hs-id, .product-choice small, .catalog-breadcrumbs, .catalog-breadcrumbs button,
.period-buttons button, #periodNotice, .econ-row small, .partner-rank, #partnerCount,
.catalog-reference, .source-link, .data-overline, .map-no, .globe-float, .search-shortcut {
  font-family: var(--font-metadata);
  font-size: var(--type-xs);
  font-weight: var(--weight-regular);
  font-style: normal;
  font-variant-numeric: lining-nums tabular-nums slashed-zero;
  letter-spacing: var(--tracking-body);
  line-height: 1.5;
}
.hs-id { overflow-wrap: anywhere; }
.source-link { font-size: var(--type-sm); }
.globe-float { font-size: .625rem; }
.period-head span:last-child { font-size: var(--type-xs); }
.catalog-reference { overflow-wrap: anywhere; }

/* Symbols are retained at their existing visual sizes; they are not text headings. */
.info-circle { font-size: var(--type-sm); }
.search-icon { font-size: 1.625rem; line-height: 0; }
.obj-art { font-size: 2.4375rem; }
.tiny-red { font-size: .4375rem; }
.float-cross { font-size: .9375rem; }
.draw-orbit { font-size: .875rem; }
.axis-cross { font-size: 1.125rem; }
.tiny-arrow { font-size: 1.4375rem; font-weight: var(--weight-regular); }
.catalog-drill { font-size: 1.3125rem; }

@media (max-width: 720px) {
  :root {
    --type-display: clamp(2.125rem, 9vw, 2.75rem);
    --type-section: 1.625rem;
    --type-title: 1.875rem;
    --type-value: clamp(2.125rem, 9vw, 2.625rem);
  }
  .brand-mark { font-size: 2.1875rem; }
  .brand strong { font-size: 1rem; }
  .header-right { font-size: .625rem; white-space: normal; min-width: 0; }
  #headerStatus { overflow-wrap: anywhere; }
  /* Avoid browser auto-zoom when interacting with form fields on phones. */
  .search-field input, .select-wrap select { font-size: 1rem; }
  .float-bottom { font-size: .625rem; }
  footer { line-height: 1.8; }
}
