/*
 * Component contracts (button, form, card, badge, table, nav and modal)
 * are populated only as a pilot selector is migrated. This avoids changing
 * pages outside #/screen by accident.
 */
.ui-button{min-height:var(--control-sm);border-radius:var(--radius-sm);font:inherit}
.ui-field{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}
.ui-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm)}
.ui-badge{border-radius:999px}
.ui-modal{border-radius:var(--radius-xl);background:var(--color-surface);box-shadow:var(--shadow-lg)}

/* L5 shell primitive: first keyboard stop bypasses persistent navigation and
   lands on the dynamic #app region without changing route rendering. */
.skip-link{
  position:fixed;z-index:600;top:var(--ivc-comp-skip-offset);left:50%;
  max-inline-size:calc(100% - var(--ivc-comp-skip-gutter) - var(--ivc-comp-skip-gutter));
  padding:var(--ivc-comp-skip-padding-block) var(--ivc-comp-skip-padding-inline);
  transform:translate(-50%,-160%);border-radius:var(--ivc-comp-skip-radius);
  background:var(--ivc-comp-skip-background);box-shadow:var(--ivc-comp-skip-shadow);
  color:var(--ivc-comp-skip-text);font:var(--ivc-comp-skip-font);text-align:center;
  text-decoration:none;transition:transform var(--ivc-comp-skip-transition) var(--ui-ease)
}
.skip-link:focus-visible{
  transform:translate(-50%,0);outline:3px solid var(--ivc-comp-skip-focus);outline-offset:3px
}
@media(prefers-reduced-motion:reduce){.skip-link{transition:none}}

/* L3 pilot: the global header is the first existing surface to consume the
   reference -> semantic -> component token chain defined in tokens.css. */
.top{
  background:var(--ivc-comp-header-background);
  border-bottom-color:var(--ivc-comp-header-border);
  box-shadow:var(--ivc-comp-header-shadow)
}
.top-inner{
  height:var(--ivc-comp-header-height);
  padding-inline:var(--ivc-comp-header-inline-padding);
  gap:var(--ivc-comp-header-gap)
}
.nv-b{
  height:var(--ivc-comp-nav-height);
  padding-inline:var(--ivc-comp-nav-inline-padding);
  border-radius:var(--ivc-comp-nav-radius);
  font-family:var(--ivc-comp-nav-font);
  color:var(--ivc-comp-nav-text)
}
.nv-b:hover,.nv.open .nv-b{
  background:var(--ivc-comp-nav-hover-background);
  color:var(--ivc-comp-nav-hover-text)
}
.nv.active .nv-b,.nv-b.solo.active{color:var(--ivc-comp-nav-hover-text)}
.nv.active::after,.nv-b.solo.active::after{background:var(--ivc-comp-nav-active-indicator)}
.searchbar input{
  background:var(--ivc-comp-search-background);
  border-color:var(--ivc-comp-search-border)
}
.searchbar input:focus{border-color:var(--ivc-comp-search-focus)}

/* #/screen comparison selector: square control, SVG state and no layout shift. */
.screen-view .ui-select-tool{
  width:var(--control-sm);height:var(--control-sm);min-width:var(--control-sm);min-height:var(--control-sm);
  display:inline-grid;place-items:center;border-radius:var(--radius-sm);
  border:1px solid var(--ui-border-strong);background:var(--color-surface);
  color:var(--color-text-secondary);box-shadow:none
}
.screen-view .ui-select-tool:hover{
  border-color:var(--ui-selection-border);background:var(--ui-primary-tint);
  color:var(--ui-primary-strong)
}
.screen-view .ui-select-tool.on{
  border-color:var(--ui-selection-border);background:var(--ui-selection-bg);
  color:var(--ui-primary-strong);box-shadow:none
}
.screen-view .ui-select-tool svg{width:18px;height:18px;display:block;stroke-width:1.9}

/* #/screen mode switch: mode is a circular control, not a segmented tab. */
.screen-view .scr-tabs{
  gap:var(--space-2);padding:0;border:0;border-radius:0;background:transparent;box-shadow:none
}
.screen-view .st-btn.ui-mode-circle{
  width:56px;height:56px;min-width:56px;min-height:56px;padding:0;border:1px solid var(--ui-border-strong);
  border-radius:50%;background:var(--color-surface);color:var(--color-text-secondary);
  font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);box-shadow:none
}
.screen-view .st-btn.ui-mode-circle:hover{border-color:var(--ui-selection-border);background:var(--ui-primary-tint);color:var(--ui-primary-strong)}
.screen-view .st-btn.ui-mode-circle.on{
  border-color:var(--ui-selection-border);background:var(--ui-selection-bg);color:var(--ui-primary-strong);
  font-weight:var(--font-weight-semibold);box-shadow:var(--ui-selection-shadow)
}
html[data-theme="bright"] .screen-view .st-btn.ui-mode-circle{border-radius:50%}

/* #/g OpenFreeMap: the vector map replaces the fallback only after MapLibre loads. */
.geo-map-stage .geo-openfree-map{position:absolute;z-index:1;inset:0;visibility:hidden;opacity:0;background:var(--ui-surface-subtle)}
.geo-map-stage .geo-map-fallback{display:grid;place-items:center;width:100%;height:100%}
.geo-map-stage.map-ready{cursor:default;touch-action:auto}
.geo-map-stage.map-ready .geo-openfree-map{visibility:visible;opacity:1}
.geo-map-stage.map-ready .geo-map-fallback{visibility:hidden;opacity:0;pointer-events:none}
.geo-map-stage.map-ready .geo-map-scale{display:none}
.geo-map-status{
  position:absolute;z-index:5;left:50%;bottom:14px;max-width:calc(100% - 108px);margin:0;padding:7px 10px;
  transform:translateX(-50%);border:1px solid var(--ui-border);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--ui-surface) 94%,transparent);
  color:var(--ui-text-muted);font-size:var(--font-size-xs);line-height:1.35;pointer-events:none;text-align:center
}
.geo-openfree-map .maplibregl-ctrl-group{border:1px solid var(--ui-border);box-shadow:var(--shadow-sm)}
.geo-openfree-map .maplibregl-ctrl button{width:40px;height:40px}
.geo-openfree-map .maplibregl-ctrl-attrib{font-size:10px}
.screen-candidate-data {
  display: grid;
  gap: var(--space-3);
  margin-block: var(--space-4);
}

/* Company market section: preserve the existing no-data presentation without
   keeping layout declarations in the dynamically rendered HTML. */
.company-page .company-market-empty-state{
  min-height:180px;display:grid;place-items:center;text-align:center;padding:24px
}

/* Shared company-page section rhythm: retain the legacy heading hook and
   move its repeated static spacing out of renderer templates. */
.company-page .sec-head.company-section-gap{margin-top:26px}

/* Company-page positioning cards: a long scope badge must reflow inside the
   card instead of squeezing the title into one character per line. */
.company-page .pos-top{align-items:flex-start;flex-wrap:wrap}
.company-page .pos-chain{flex:1 1 160px;overflow-wrap:anywhere}
.company-page .pos-stage{
  flex:0 1 auto;max-inline-size:100%;white-space:normal;overflow-wrap:anywhere;
  line-height:1.35;text-align:center
}

/* Company market chart: retain the existing two-column hierarchy when there
   is room, then collapse before either column can force page-level overflow. */
.company-page .cms-body{grid-template-columns:minmax(0,1.35fr) minmax(0,.85fr)}
.company-page .cms-chart{overflow:hidden}
.company-page .cms-chart-tooltip{white-space:normal;justify-content:center;flex-wrap:wrap;line-height:1.35}
.company-page .cms-chart-tooltip span{padding-right:0;border-right:0}
@media (max-width:1100px){
  .company-page .cms-body{grid-template-columns:1fr}
}

/* DATA-023 public company and Golden Page API projection.  These styles are
   intentionally scoped to the API renderer so they cannot revive or restyle
   retired legacy company payloads. */
.public-company-summary-card{min-height:0}
.public-company-content{display:grid;gap:14px;padding:0 20px 20px}
.public-company-block{border:1px solid var(--line);border-radius:14px;background:var(--surface-2);padding:16px 18px}
.public-company-block h3{margin:0 0 10px;font-family:var(--disp);font-size:var(--fs-md);color:var(--ink)}
.public-company-block p{margin:0;color:var(--ink-soft);font-size:var(--fs-sm);line-height:1.8}
.public-company-kv{margin:0}.public-company-pairs{display:grid;gap:8px;margin:0;padding:0;list-style:none}.public-company-pairs li{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;color:var(--ink-soft);font-size:var(--fs-sm)}.public-company-pairs span:first-child{font-weight:750;color:var(--ink)}
.public-golden-preview{display:grid;gap:14px;margin:0 20px 4px;padding:18px;border:1px solid var(--steel-line);border-radius:14px;background:linear-gradient(135deg,rgba(241,239,255,.8),var(--card));box-shadow:var(--shadow-sm)}.public-golden-preview>header{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap}.public-golden-preview h3{margin:2px 0 0;font-family:var(--disp);font-size:var(--fs-md);color:var(--ink)}.public-golden-preview-action{background:var(--steel);border-color:var(--steel);color:var(--on-accent)}.public-golden-preview-action:hover{background:var(--steel-deep)}.public-golden-preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.public-golden-preview-grid article{min-width:0;padding:12px;border:1px solid rgba(214,208,250,.9);border-radius:11px;background:rgba(255,255,255,.72)}.public-golden-preview-grid b{display:block;color:var(--steel-deep);font-size:var(--fs-3xs);font-weight:850;letter-spacing:.06em}.public-golden-preview-grid p{margin:6px 0 0;color:var(--ink-soft);font-size:var(--fs-xs);line-height:1.7}
.public-golden-page{display:grid;gap:14px;padding:22px 20px 24px;border-top:1px solid var(--line);background:linear-gradient(180deg,rgba(241,239,255,.46),rgba(255,255,255,0))}
.public-golden-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.public-golden-head h2{margin:2px 0 0;font-family:var(--disp);font-size:var(--fs-xl);color:var(--ink)}.public-golden-head>span,.public-golden-status-note,.public-golden-meta{margin:0;color:var(--ink-faint);font-size:var(--fs-xs);line-height:1.65}.public-golden-eyebrow{margin:0;color:var(--steel);font-size:var(--fs-3xs);font-weight:850;letter-spacing:.1em}.public-golden-intro{margin:0;color:var(--ink-soft);font-size:var(--fs-sm);line-height:1.8}
.public-golden-section{padding:17px 18px;border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:var(--shadow-sm)}.public-golden-section>header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.public-golden-section h3{margin:0;font-family:var(--disp);font-size:var(--fs-md);color:var(--ink)}.public-golden-section>p{margin:10px 0 0;color:var(--ink-soft);font-size:var(--fs-sm);line-height:1.8}.public-golden-status{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:var(--steel-tint);color:var(--steel-deep);font-size:var(--fs-3xs);font-weight:800}
.public-golden-decision{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.public-golden-decision article{padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--surface-2)}.public-golden-decision b{display:block;color:var(--ink);font-size:var(--fs-xs)}.public-golden-decision p{margin:6px 0 0;color:var(--ink-soft);font-size:var(--fs-xs);line-height:1.7}.public-golden-decision em{display:block;margin-top:7px;color:var(--ink-faint);font-size:var(--fs-3xs);font-style:normal}
.public-golden-items{margin-top:13px}.public-golden-items h4{margin:0 0 7px;color:var(--ink);font-size:var(--fs-xs)}.public-golden-items ul{display:grid;gap:8px;margin:0;padding:0;list-style:none}.public-golden-items li{display:grid;gap:2px;padding:9px 10px;border-left:3px solid var(--steel-line);background:var(--surface-2);color:var(--ink-soft);font-size:var(--fs-xs);line-height:1.6}.public-golden-items li b{color:var(--ink)}.public-golden-items li span{color:var(--steel-deep)}.public-golden-items li em{color:var(--ink-faint);font-style:normal}
.public-golden-sources{display:grid;gap:8px;margin:14px 0 0;padding:0;list-style:none}.public-golden-sources li{display:grid;gap:2px}.public-golden-sources a{color:var(--steel);font-size:var(--fs-xs);font-weight:750;text-decoration:none}.public-golden-sources a:hover{text-decoration:underline}.public-golden-sources span{color:var(--ink-faint);font-size:var(--fs-3xs);line-height:1.5}
.public-golden-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:8px;margin:12px 0 0;padding:0;list-style:none}.public-golden-metrics li{padding:10px;border-radius:10px;background:var(--surface-2);border:1px solid var(--line)}.public-golden-metrics span{display:block;color:var(--ink-faint);font-size:var(--fs-3xs)}.public-golden-metrics b{display:block;margin-top:4px;color:var(--ink);font-size:var(--fs-sm)}.public-golden-series{margin-top:12px}.public-golden-series summary{cursor:pointer;color:var(--steel-deep);font-size:var(--fs-xs);font-weight:750}.public-golden-series-table{display:grid;gap:5px;max-height:290px;margin-top:10px;overflow:auto}.public-golden-series-table>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:7px 8px;border-radius:8px;background:var(--surface-2);color:var(--ink-soft);font:var(--fs-3xs)/1.4 var(--mono)}
.public-golden-gaps{padding:13px 14px;border:1px dashed var(--steel-line);border-radius:12px;background:rgba(241,239,255,.45);color:var(--ink-soft)}.public-golden-gaps b{color:var(--steel-deep);font-size:var(--fs-xs)}.public-golden-gaps ul{display:grid;gap:4px;margin:7px 0 0;padding-left:18px;font-size:var(--fs-xs);line-height:1.6}
@media(max-width:700px){.public-company-content{padding:0 15px 16px}.public-company-block{padding:14px}.public-golden-preview{margin:0 15px 4px;padding:14px}.public-golden-preview-grid{grid-template-columns:1fr}.public-golden-page{padding:18px 15px 20px}.public-golden-section{padding:14px}.public-golden-decision{grid-template-columns:1fr}.public-golden-series-table>div{grid-template-columns:1fr 1fr}.public-golden-series-table>div span:nth-child(n+3){display:none}}

/* DATA-025 — API-only Golden Page reference layout.
   These rules reuse the historic company-page component vocabulary rather
   than reintroducing its browser payload.  A missing API module simply does
   not emit one of these sections. */
.public-golden-reference{display:grid;gap:0;margin-top:16px}.public-golden-reference-section{margin-top:26px}.public-golden-reference-section .sec-head{margin-top:0}.public-reference-card{cursor:default}.public-reference-card:hover{transform:none;border-color:var(--ui-border);box-shadow:var(--ui-shadow-1)}.public-reference-module-grid{margin-top:0}.public-reference-module-grid .co-brief-card{min-width:0}.public-reference-module-card small{display:block;margin-bottom:7px;color:var(--ink-faint);font-size:var(--fs-3xs);font-weight:800;letter-spacing:.07em;text-transform:uppercase}.public-reference-module-summary{grid-column:1/-1}.public-reference-sources{margin-top:12px}.public-reference-sources .public-golden-sources,.market-source-footnotes .public-golden-sources{margin:8px 0 0}.public-company-details{margin-top:26px}.public-company-api-note{margin:16px 0 0!important}.public-golden-reference-actions .act-btn:disabled{cursor:not-allowed}.public-company-page[data-golden-page-renderer="reference-v0.1.26"] .company-details{margin-top:30px}@media(max-width:700px){.public-golden-reference{margin-top:14px}.public-golden-reference-section{margin-top:22px}.public-reference-module-summary{grid-column:auto}.public-company-api-note{margin:14px 0 0!important}}
