/* Shared identity for every published page. Component layouts live in editorial.css. */
:root {
  --font-body: 'DM Sans', Arial, sans-serif;
  --font-heading: 'Libre Baskerville', Georgia, serif;
  --type-hero: clamp(36px, 4.4vw, 64px);
  --type-section: clamp(32px, 3.6vw, 48px);
  --type-card: clamp(25px, 2.1vw, 28px);
  --type-card-compact: clamp(23px, 1.9vw, 26px);
  --text-body: 18px;
  --text-card: 17px;
  --text-small: 16px;
  --text-label: 12px;
  --section-space: 88px;
  --card-padding: 28px;
  --radius-control: 3px;
}
body {font-family:var(--font-body);font-size:var(--text-body);line-height:1.7}
h1,h2,h3 {font-family:var(--font-heading);font-weight:400;letter-spacing:-.035em}
body main .panorama-home h1,
body main .city-page .city-hero h1,
body main .contact-page-hero h1 {font-size:var(--type-hero);line-height:1.18;letter-spacing:-.035em}
body main .section-head h2,
body main .section-intro h2,
body main .thesis-layout h2,
body main .method-intro h2,
body main .origin-heading h2,
body main .contact-inner h2,
body main .contact-page-grid h2,
body main .city-page h2,
body main .city-page .city-cta h2,
body main .city-command .city-command-copy h2,
body main .visual-governance h2,
body main .intelligence-grid h2,
body main .journey-heading h2 {font-size:var(--type-section);line-height:1.23;letter-spacing:-.035em}
body main .card-copy h3,
body main .capabilities-revised .capability-card h3,
body main .uses-revised .case-card h3,
body main .city-story-steps h3,
body main .city-modules h3,
body main .city-specialized h3,
body main .subproduct-body h3,
body main .correctional-components h3,
body main .origin-journey h3,
body main .method-grid .method-step h3,
body main .visual-implementation h3,
body main .conversation-questions h3,
body main .contact-box h3 {font-size:var(--type-card);line-height:1.35;letter-spacing:-.025em}
body main .home-specialties-grid h3 {font-size:var(--type-card-compact);line-height:1.35;min-height:66px}
body main .home-specialties-head h3 {font-size:clamp(25px,2.6vw,34px);line-height:1.3}
body main .city-rollout-steps h3,
body main .evidence-story h3 {font-family:var(--font-body);font-size:var(--text-small);font-weight:700;letter-spacing:0;line-height:1.5}
body main .eyebrow {font-family:var(--font-body);font-size:var(--text-label);line-height:1.7;font-weight:700;letter-spacing:.16em}
body main .subproduct-body .eyebrow,
body main .home-specialties-grid .eyebrow {font-size:12px;letter-spacing:.10em}
body main .city-hero-content>p:not(.eyebrow),
body main .panorama-home .lead,
body main .contact-page-hero .lead {font-size:20px;line-height:1.75}
body main .city-intro>div>p:not(.eyebrow),
body main .city-section-head>p,
body main .section-head>p,
body main .thesis-layout .thesis-intro>p,
body main .origin-heading>p:last-child {font-size:var(--text-body);line-height:1.75}
body main .card-copy>p:not(.eyebrow),
body main .capability-card>p,
body main .uses-revised .case-card>p,
body main .city-story-steps p,
body main .city-command-copy p:not(.eyebrow),
body main .subproduct-desc,
body main .correctional-components p,
body main .visual-implementation p,
body main .city-cta p:not(.eyebrow) {font-size:var(--text-card);line-height:1.75}
body main .home-specialties-grid .subproduct-desc,
body main .subproduct-details>p,
body main .subproduct-body li,
body main .city-rollout-steps p,
body main .origin-journey p,
body main .method-grid .method-step p {font-size:var(--text-small);line-height:1.75}
body .button,body main .panorama-home .button {
  font-family:var(--font-body);font-size:16px;font-weight:700;line-height:1.5;
  min-height:50px;padding:14px 22px;gap:16px;border-radius:var(--radius-control);
  white-space:normal;text-align:center;
}
body .button-gold {background:var(--gold);color:var(--navy-deep)}
body .button-gold:hover {background:#e5b65d}
body .home-hero .button-gold {background:var(--navy);color:#fff}
body .home-hero .button-gold:hover {background:#174572}
body main .text-link,body main .subproduct-link,
body main .subproduct-details summary {font-size:16px;line-height:1.6;font-weight:700;min-height:44px}
body main .city-nav a {font-size:15px;line-height:1.6}
body main .city-nav .shell {gap:28px}
body main .portfolio-section,body main .thesis-section,body main .origin-story,
body main .method-section,body main .city-operation,body main .city-rollout,
body main .capabilities-section,body main .uses-section,
body main .intelligence-section,body main .correctional-section,
body main .subproducts-section {padding-top:var(--section-space);padding-bottom:var(--section-space)}
body main .city-intro,body main .city-capabilities,body main .city-cta,
body main .visual-applications {padding-top:var(--section-space);padding-bottom:var(--section-space)}
body main .capabilities-revised .capability-card,
body main .uses-revised .case-card,
body main .subproduct-body {padding:var(--card-padding)}
body main .home-specialties-grid .subproduct-body {padding:24px 20px}
body main .card-copy {display:flex;flex-direction:column;flex:1}
body main .card-copy .text-link {margin-top:auto;padding-top:16px}
/* Correctional implementation has four stages, rather than the macro solution's six. */
body main .correctional-page .city-rollout-steps {grid-template-columns:repeat(4,minmax(0,1fr))}
:where(a,button,summary):focus-visible {outline:2px solid #9e742d;outline-offset:5px}
@media(max-width:700px) {
 :root {--type-hero:clamp(32px,7vw,46px);--type-section:clamp(30px,6vw,38px);--type-card:26px;--type-card-compact:26px;--section-space:60px;--card-padding:24px}
 body main .city-hero-content>p:not(.eyebrow),body main .panorama-home .lead,body main .contact-page-hero .lead {font-size:18px}
 body main .home-specialties-grid h3 {min-height:0}
 body main .city-nav .shell {gap:24px}
 body main .correctional-page .city-rollout-steps {grid-template-columns:repeat(2,minmax(0,1fr))}
 body main .home-specialties-grid .subproduct-body {padding:24px}
}
@media(prefers-reduced-motion:reduce) {html {scroll-behavior:auto}.button {transition:none}.button:hover {transform:none}}
/* Keep adjacent product sections distinguishable within the corporate palette. */
body main .visual-product .uses-section {background:var(--paper);color:var(--navy)}
body main .visual-product .uses-section h2 {color:var(--navy)}
body main .visual-product .uses-section .eyebrow.light {color:var(--navy)}
body main .visual-product .uses-section .city-section-head>p {color:var(--muted)}
body main .visual-product .uses-revised .case-card {background:var(--navy-deep);border-color:var(--line)}

/* Readable support text at normal browser zoom. */
body main .city-modules li,body main .visual-source-strip span,
body main .city-governance p,body main .correctional-shared p,
body main .visual-governance li,body main .evidence-story li p,
body main .journey-copy>p:not(.eyebrow),body main .origin-close p,
body main .thesis-step-copy p {font-size:var(--text-small);line-height:1.75}
body main .home-specialties-grid .subproduct-desc {min-height:115px}
body main .home-specialties-grid h3 {min-height:76px}
body main .home-specialties-grid .eyebrow {min-height:42px}
body main .subproduct-body li {padding:10px 0}
body main .origin-identity>div>span:not([aria-hidden]),
body main .origin-relationship p {font-size:13px;line-height:1.75}
body main .city-back,body main .back-link {font-size:14px}
body main .city-story-steps small {font-size:12px;line-height:1.7}
body main .city-rollout-steps h3 {font-size:18px}
body main .origin-journey h3 {max-width:390px}
body main .card-copy .eyebrow {font-size:12px}
body main .card-copy>p:not(.eyebrow) {margin-bottom:24px}
body main .visual-governance {gap:48px}
body main .correctional-shared strong {font-size:18px;line-height:1.6}
body main .case-action strong {font-size:18px;line-height:1.5}
body main .case-action p {font-size:16px!important;line-height:1.75}
body main .case-action>span,body main .case-heading>span {font-size:12px;line-height:1.7}
body main .site-nav {font-size:14px}
@media(max-width:700px) {
 body main .home-specialties-grid .subproduct-desc,
 body main .home-specialties-grid h3,body main .home-specialties-grid .eyebrow {min-height:0}
 body main .city-section-head {gap:24px}
}
/* Main portfolio cards are primary destinations and need stronger visual weight. */
:root {--text-card:18px}
body main .card-copy h3 {font-size:clamp(28px,2.5vw,34px);line-height:1.3}
body main .panorama-promises span {font-size:14px;line-height:1.6}
body main .home-specialties-head>p,body main .origin-heading>p:last-child {font-size:18px;line-height:1.75}
body .compact-footer-main nav a,body .footer-contact {font-size:14px}
body .compact-footer-base p,body .compact-footer-base a {font-size:13px;line-height:1.7}
@media(max-width:700px){body main .card-copy h3 {font-size:28px}}
body main .origin-step,body main .city-module-no,
body main .capability-index,body main .method-output,
body main .thesis-flow li .step-no {font-size:12px;line-height:1.6}
body main .subproduct-scope,body main .visual-image-note,
body main .city-story figcaption {font-size:14px;line-height:1.7}
body main .journey-tab {font-size:16px;line-height:1.5;min-height:48px}
body main .journey-copy>p:not(.eyebrow),body main .contact-page-grid p {font-size:18px;line-height:1.75}

/* Institutional story: large readable narrative, without microcopy or repeated steps. */
body main .institution-editorial {padding:80px 0;background:#fff}
body main .institution-editorial h2 {font-size:var(--type-section);line-height:1.23;max-width:900px;margin:0 0 40px}
.institution-narrative {display:grid;grid-template-columns:minmax(260px,.8fr) minmax(0,1.3fr);gap:64px;align-items:center}
.institution-lineage {background:var(--paper);padding:38px 32px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;border-left:3px solid var(--gold)}
.institution-lineage img {display:block;height:auto;object-fit:contain;max-width:100%}
.institution-lineage .lineage-parent {width:280px}
.institution-lineage .lineage-premium {width:320px}
.institution-lineage>span {font-size:34px;line-height:1;color:#9b742f}
body main .institution-statement p {font-family:var(--font-body);font-size:22px;line-height:1.75;color:#344c65;margin:0 0 28px}
body main .institution-statement p:last-child {margin:0}
.institution-statement strong {font-weight:700;color:var(--navy)}
.institution-takeaway {display:flex;align-items:center;justify-content:space-between;gap:36px;margin-top:40px;padding:30px 34px;background:var(--navy);color:#fff}
body main .institution-takeaway p {font-family:var(--font-heading);font-size:clamp(24px,2.25vw,30px);line-height:1.45;letter-spacing:-.02em;margin:0}
body main .institution-takeaway .text-link {font-size:18px;color:#edc47f;white-space:nowrap}
@media(max-width:850px){.institution-narrative {gap:32px;grid-template-columns:minmax(230px,.8fr) minmax(0,1.2fr)}.institution-lineage {padding:30px 22px}body main .institution-statement p {font-size:20px}}
@media(max-width:650px){body main .institution-editorial {padding:60px 0}body main .institution-editorial h2 {margin-bottom:28px}.institution-narrative {grid-template-columns:1fr;gap:28px}.institution-lineage {padding:25px 22px;gap:18px}.institution-lineage .lineage-parent {width:230px}.institution-lineage .lineage-premium {width:270px}body main .institution-statement p {font-size:20px;line-height:1.7;margin-bottom:24px}.institution-takeaway {flex-direction:column;align-items:start;gap:22px;padding:26px 24px;margin-top:30px}body main .institution-takeaway p {font-size:24px}body main .institution-takeaway .text-link {font-size:18px}}
/* Intro copy must retain readable contrast on the dark thesis section. */
body main .home-thesis .thesis-intro {grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:56px}
body main .home-thesis .thesis-layout .thesis-intro>p {color:#edf3fa;font-size:21px;line-height:1.75;border-left-color:#e1b76f;padding-left:26px;margin-bottom:0}
@media(max-width:800px){body main .home-thesis .thesis-intro {grid-template-columns:1fr;gap:26px}body main .home-thesis .thesis-layout .thesis-intro>p {font-size:20px;max-width:680px}}

/* Navigation controls: visible affordance, clear primary action, keyboard states. */
body .site-header .site-nav {gap:12px;font-size:16px}
body .site-header .site-nav>.nav-solutions>.nav-label,
body .site-header .site-nav>a {display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:48px;padding:12px 18px;border:1px solid #a6b8c9;border-radius:4px;background:#f3f7fb;color:var(--navy);font-size:16px;font-weight:700;line-height:1.4}
body .site-header .site-nav>.nav-solutions>.nav-label:hover,
body .site-header .site-nav>a:hover {background:#e3edf6;border-color:var(--navy)}
body .site-header .site-nav>a.nav-cta {background:var(--navy);color:#fff;border-color:var(--navy)}
body .site-header .site-nav>a.nav-cta:hover {background:#174572}
body .site-header .nav-products {z-index:60;border-top:3px solid var(--gold)}
body .site-header .nav-products a {font-size:16px;line-height:1.5;padding:12px;min-height:44px}
body main .city-nav {background:#f3f7fb;border-top:1px solid #d2dfeb;border-bottom:1px solid #c3d3e2}
body main .city-nav .shell {flex-wrap:wrap;gap:10px;padding-top:18px;padding-bottom:18px;overflow:visible}
body main .city-nav a {display:inline-flex;align-items:center;gap:12px;justify-content:center;min-height:48px;padding:11px 17px;background:#fff;border:1px solid #9eb4c8;border-radius:4px;color:var(--navy);font-size:16px;line-height:1.5;font-weight:600;white-space:normal;transition:background .15s,color .15s,border-color .15s}
body main .city-nav a:after {content:'↓';font-size:18px;color:#946c28}
body main .city-nav a:hover,body main .city-nav a[aria-current="location"] {background:var(--navy);border-color:var(--navy);color:#fff}
body main .city-nav a:hover:after,body main .city-nav a[aria-current="location"]:after {color:#edc47f}
/* Correct legacy component rules that were overriding shared body sizes. */
body main .capabilities-revised .capability-card>p {font-size:18px;line-height:1.75;color:#344e68}
body main .city-story-steps small {display:inline-block;font-size:16px;line-height:1.6;font-weight:700;color:var(--navy);letter-spacing:0;text-transform:none;border-left:3px solid var(--gold);padding-left:12px;margin-top:3px}
body main .city-specialized p,body main .visual-governance li,
body main .visual-implementation p,body main .city-rollout-steps p,
body main .correctional-components p {font-size:18px;line-height:1.75;color:#344e68}
body main .city-command-copy>div,body main .city-command-copy>div span {font-size:17px;line-height:1.6;color:#f0cf93}
body main .visual-source-strip span {font-size:16px;font-weight:600;color:#344e68}
body main .capability-outcome {font-size:16px;line-height:1.65;color:var(--navy)}
body main .city-governance strong {font-size:18px;line-height:1.5}
body main .city-governance p {font-size:17px;line-height:1.75}
/* A complete evidence sequence, rather than a small table beside a tall empty column. */
body main .evidence-section {background:var(--paper);padding-top:72px;padding-bottom:72px}
.evidence-section-heading {display:grid;grid-template-columns:1.15fr 1fr;gap:64px;align-items:start;margin-bottom:36px}
body main .evidence-section-heading h2 {font-size:var(--type-section);line-height:1.23;margin:0}
body main .evidence-section-heading>p {font-size:20px;line-height:1.75;color:#344e68;margin:0;padding-top:8px}
body main .evidence-section .evidence-story {padding:0;border:0;background:transparent;box-shadow:none}
body main .evidence-section .evidence-title {padding:0 0 24px;border-bottom:0}
body main .evidence-section .evidence-title span {font-size:16px;color:#405b75;letter-spacing:0;line-height:1.6}
body main .evidence-section .evidence-title strong {font-family:var(--font-body);font-size:24px;font-weight:700;line-height:1.4;margin-top:6px}
body main .evidence-section .evidence-story ol {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
body main .evidence-section .evidence-story li {display:flex;flex-direction:column;gap:22px;background:#fff;border:1px solid #c9d9e7;border-top:4px solid var(--gold);padding:25px 23px;position:relative;min-height:245px}
body main .evidence-section .evidence-story li>span {display:grid;place-items:center;align-self:start;width:44px;height:44px;background:var(--navy);color:#fff;border-radius:50%;font-size:16px;font-weight:700;padding:0}
body main .evidence-section .evidence-story li:not(:last-child):after {content:'→';position:absolute;right:-19px;top:32px;z-index:1;width:20px;text-align:center;background:var(--paper);color:#8b652a;font-size:22px}
body main .evidence-section .evidence-story li h3 {font-family:var(--font-body);font-weight:700;font-size:23px;line-height:1.4;margin:0 0 12px;color:var(--navy)}
body main .evidence-section .evidence-story li p {font-size:18px;line-height:1.7;color:#344e68;margin:0}
body main .evidence-section .evidence-principle {font-size:17px;line-height:1.75;color:var(--navy);margin:24px 0 0;padding:22px 25px;background:#e5eef6;border-left:4px solid var(--gold)}
@media(max-width:1050px){body .site-header .site-nav {gap:8px}body .site-header .site-nav>.nav-solutions>.nav-label,body .site-header .site-nav>a {padding:11px 13px}.evidence-section-heading {gap:32px}body main .evidence-section .evidence-story ol {grid-template-columns:repeat(2,minmax(0,1fr))}body main .evidence-section .evidence-story li:after {display:none}}
@media(max-width:800px){body .site-header .site-nav>.nav-solutions>.nav-label,body .site-header .site-nav>a {display:flex;width:100%;justify-content:space-between;font-size:17px}body .site-header .nav-solutions {width:100%}body .site-header .nav-products {border:0;margin-top:8px}body .site-header .nav-products a {font-size:16px}body main .city-nav .shell {gap:10px}body main .city-nav a {flex:1 1 calc(50% - 10px);font-size:16px;text-align:left;justify-content:space-between} .evidence-section-heading {grid-template-columns:1fr;gap:22px}}
@media(max-width:600px){body main .evidence-section {padding-top:60px;padding-bottom:60px}body main .evidence-section .evidence-story ol {grid-template-columns:1fr;gap:16px}body main .evidence-section .evidence-story li {min-height:0;gap:16px;padding:24px}body main .evidence-section .evidence-title strong {font-size:22px}body main .evidence-section-heading>p {font-size:19px}body main .evidence-section .evidence-principle {font-size:17px;padding:20px}body main .city-nav a {padding:12px;font-size:16px}}
body main .home-specialties-grid .subproduct-details>p {font-size:16px;line-height:1.75;color:#344e68}
body main .subproduct-scope,body main .visual-image-note {font-size:16px;line-height:1.75;color:#405b75}
body main .method-intro-aside p {font-size:18px;line-height:1.75;color:#344e68}

/* Keep method copy readable on the final pale panel. */
.method-grid .method-step:last-child .method-step-copy p{color:#344e68}

/* Every specialist card with a landing is one native link, including image, title and CTA. */
.subproduct-card-target{display:flex;flex-direction:column;flex:1;color:inherit;text-decoration:none;min-width:0}
.subproduct-card-target:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
body main .subproduct-card-target .subproduct-link{background:var(--navy);color:white;border:1px solid var(--navy);padding:13px 15px;min-height:50px;align-items:center;gap:12px;font-size:16px;line-height:1.5;border-radius:4px}
.subproduct-card-target:hover .subproduct-link{background:#164574}
.subproduct-card-linked{transition:border-color .15s,box-shadow .15s}
.subproduct-card-linked:hover{border-color:#7999b7;box-shadow:0 10px 25px #082a5918}
