/* CUT typography. Load after cut.css and cut-hero.css.
   Editorial display: Alumni Sans. Reading/interface: Onest.
   The hero's headline, tape, portrait and vector geometry are intentionally untouched. */
:root {
  --display: 'Alumni Sans', 'Arial Narrow', sans-serif;
  --body: 'Onest', Arial, sans-serif;
  --text-reading: 18px;
  --text-body: 18px;
  --text-card: 16px;
  --text-label: 12px;
  --text-control: 16px;
  --muted: #50524f;
}
body { font-family: var(--body); font-size: var(--text-body); line-height: 1.65; }
button, input, select, textarea { font-family: var(--body); }
h1, h2 { font-family: var(--display); font-weight: 900; letter-spacing: 0; }
:is(.page-intro, .service-header, .consultation-intro, .case-header) h1 { letter-spacing: 0; }
h3 { font-family: var(--body); font-size: 26px; font-weight: 600; line-height: 1.3; letter-spacing: -.025em; }
p, li { overflow-wrap: break-word; }

/* Utility text is small by role, never miniature by accident. */
.eyebrow, .project-caption .eyebrow, .project-status,
.section-top p, .brand-index-label, .breadcrumbs,
.case-meta small, .cover-label, .editorial-viz-kicker {
  font-family: var(--body); font-size: var(--text-label); line-height: 1.5;
  letter-spacing: .065em;
}
.section-top { flex-wrap: wrap; }
.section-top p { letter-spacing: 0; max-width: 30ch; }
.section-intro, .page-intro>p, .service-header>p, .consultation-intro>p {
  font-size: var(--text-body); line-height: 1.65; max-width: 65ch;
}
.button, .service-header .button, .contact .button, .process .button,
.brief-form .button, .dialog-actions .button, .article-next-step .button {
  font-family: var(--body); font-size: var(--text-control); font-weight: 600;
  line-height: 1.4; min-height: 48px;
}
.text-link, .quiet-link, .task .text-link, .about-copy .text-link {
  font-family: var(--body); font-size: 15px; line-height: 1.5; font-weight: 600;
}
.site-nav nav { font-size: 14px; line-height: 1.4; }
body:has(.cut-live) .site-nav nav { font-size: 14px; }
.brand-index span { font-family: var(--body); font-size: 14px; font-weight: 600; line-height: 1.3; }

/* Same card hierarchy in tasks, process, projects and the article library. */
.task { display: block; }
.task-number { display: block; font-family: var(--body); font-size: 12px; font-weight: 600; line-height: 1.5; letter-spacing: .06em; }
.task h3, .process-grid h3, .article-card-body h3, .related .article-card-body h3 {
  font-family: var(--body); font-size: 25px; font-weight: 600; line-height: 1.3; letter-spacing: -.025em;
}
.task p, .process-grid p, .article-card-body p, .project-caption p,
.project-tri .project-caption p, .about-copy p, .contact p {
  font-size: var(--text-card); line-height: 1.7; max-width: 62ch;
}
.task p { min-height: 0; }
.project-caption h3, .project-tri .project-caption h3 {
  font-family: var(--display); font-size: 44px; font-weight: 900; line-height: 1.05; letter-spacing: 0;
}
.project-status { margin-top: 8px; }
.process .handwritten { font-family: var(--body); font-size: 18px; font-weight: 500; line-height: 1.4; font-style: italic; }
.process-grid article>span, .booking-steps li>b { font-family: var(--display); font-weight: 900; }
.booking-steps li>strong { font-family: var(--body); font-size: 24px; font-weight: 600; line-height: 1.3; }
.booking-steps p { font-size: var(--text-card); line-height: 1.7; }
.expertise-list h3, .expertise-list a h2 { font-family: var(--display); font-size: 44px; font-weight: 900; line-height: 1.05; letter-spacing: 0; }
.expertise-list p { font-size: var(--text-card); line-height: 1.65; color: var(--muted); }
.expertise .expertise-list p { color: #e1e7ff; }
.expertise-list>a>span { font-size: 12px; }
.about-copy p { color: #e0e0d9; }
/* These two legacy rules used !important; override only those declarations. */
.about-copy .about-timeline { font-size: 14px !important; line-height: 1.8 !important; }
.about-timeline strong { font-weight: 600; }

/* Long-form copy has one measure and one rhythm across articles, cases and services. */
.reading-body { font-family: var(--body); font-size: var(--text-reading); line-height: 1.75; max-width: 68ch; }
.reading-body h2 { font-family: var(--body); font-size: 30px; font-weight: 600; line-height: 1.3; letter-spacing: -.025em; margin: 48px 0 20px; }
.reading-body h3 { font-size: 23px; line-height: 1.35; margin: 32px 0 16px; }
.reading-body p { margin-bottom: 24px; }
.reading-body li { margin-bottom: 12px; }
.reading-body blockquote { font-size: 21px; line-height: 1.6; }
.article-lead { font-size: 21px; line-height: 1.65; }
.article-header h1 { font-weight: 900; letter-spacing: -.015em; }
.article-byline { font-size: 14px; line-height: 1.5; }
.article-byline small { font-size: 12px; line-height: 1.5; }
.case-header>p { font-size: 21px; line-height: 1.65; max-width: 64ch; }
.case-meta>span { font-size: 15px; line-height: 1.5; }
.case-meta small { margin-bottom: 8px; }
.reading-aside>p, .toc>a, .reading-aside.toc>a { font-size: 15px; line-height: 1.55; }
.reading-aside .button { font-size: 14px; line-height: 1.4; min-height: 44px; }
.source-list { font-size: 15px; line-height: 1.65; }
.source-list h2 { font-size: 24px; }
.source-list>p, .source-note { font-size: 14px; line-height: 1.6; }
.reading-body table { font-family: var(--body); font-size: 16px; line-height: 1.55; }
.reading-body th { font-weight: 600; }
/* Code keeps a system monospace for indentation; no third webfont is loaded. */
.reading-body pre, .reading-body code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
.reading-body pre { font-size: 14px; line-height: 1.7; tab-size: 2; }
.reading-body :not(pre)>code { font-size: .88em; }
.article-answer p { font-size: var(--text-reading); line-height: 1.7; }
.article-cta h2, .article-next-step h2 { font-family: var(--display); font-size: 42px; font-weight: 900; line-height: 1.08; letter-spacing: 0; }
.article-cta p, .article-next-step>div { font-size: 16px; line-height: 1.65; }
.article-cta a { font-size: 15px; line-height: 1.5; }
.article-consultation-price { font-size: 14px; line-height: 1.55; }

/* Diagrams: authored SVG sizes stay in their coordinate system; reading labels are HTML. */
.editorial-viz-title, .explain-diagram figcaption, .jiffy-architecture strong {
  font-family: var(--display); font-size: 40px; font-weight: 900; line-height: 1.06; letter-spacing: 0;
}
.editorial-viz-description { font-size: var(--text-reading); line-height: 1.65; }
.editorial-viz-art svg { font-family: var(--body); }
.editorial-viz-legend, .editorial-viz-key { font-size: 16px; line-height: 1.65; }
.editorial-viz-key-index { font-size: 12px; line-height: 1.4; }
.editorial-viz .editorial-viz-note { font-size: 14px !important; line-height: 1.65; }
.editorial-viz-art::after { font-size: 12px; line-height: 1.5; }
.explain-diagram strong, .jiffy-architecture p { font-family: var(--body); font-size: 16px; line-height: 1.55; }
.jiffy-architecture>figcaption, .jiffy-architecture section>span { font-family: var(--body); font-size: 12px; line-height: 1.5; }

/* Search, media archive and the consultation flow. */
.publication-title { font-size: 20px; line-height: 1.5; letter-spacing: -.015em; }
.publication-outlet { font-size: 18px; line-height: 1.35; letter-spacing: -.02em; }
.publication-title small, .publication-row time { font-size: 12px; line-height: 1.5; letter-spacing: 0; }
.filters button, .journal-filters button { font-family: var(--body); font-size: 14px; line-height: 1.4; min-height: 44px; }
.archive-search, .journal-tools>label { font-size: 12px; line-height: 1.5; }
.archive-search input, .journal-tools input { font-size: 16px; line-height: 1.5; min-height: 44px; }
.archive-count, .archive-note { font-size: 14px; line-height: 1.65; }
.consultation-topics { font-size: var(--text-body); line-height: 1.7; }
.consultation-terms, .consultation-price p { font-size: 16px; line-height: 1.65; }
.consultation-price strong { font-family: var(--display); font-size: 96px; font-weight: 900; letter-spacing: -.015em; }
.consultation-price small { font-family: var(--body); font-size: 24px; font-weight: 600; }
.brief-form>.eyebrow { font-size: 12px; }
.brief-form label { font-size: 16px; line-height: 1.5; }
.brief-form input, .brief-form select, .brief-form textarea, dialog textarea { font-size: 16px; line-height: 1.5; }
.form-note, .copy-status { font-size: 14px; line-height: 1.6; }
dialog p { font-size: 16px; line-height: 1.65; }
.site-footer>div, .site-footer>a:last-child, .site-footer p, .site-footer .motion-toggle { font-family: var(--body); font-size: 14px; line-height: 1.6; }

/* Text on collage fragments remains readable without resizing source logos. */
.scene-label, .scene-tri .scene-label, .scene-inache .scene-label,
.receipt>span, .mini-phone small, .case-scene .mini-phone small {
  font-family: var(--body); font-size: 12px; line-height: 1.35; letter-spacing: .035em;
}
.scene-tape, .scene-tri .scene-tape { font-family: var(--display); font-size: 21px; font-weight: 900; line-height: 1.15; }
.receipt p, .case-scene .receipt p { font-family: var(--body); font-size: 12px; line-height: 1.6; }
.receipt strong { font-family: var(--display); font-weight: 900; line-height: 1; }
.agent-path { font-family: var(--body); font-size: 12px; line-height: 1.4; letter-spacing: 0; gap: 10px; }
.content-orbits span { font-family: var(--body); font-size: 13px; font-weight: 600; line-height: 1.4; }
.task-doodle, .task-doodle strong, .wire-window strong, .agent-sticker,
.orange-stamp, .tri-notes span, .mini-phone p { font-family: var(--display); font-weight: 900; }
.task-doodle span { font-size: 18px; line-height: 1.1; }
:is(.article-cover, .article-hero-art) .orbit-diagram span,
:is(.article-cover, .article-hero-art) .diagram-strip b,
:is(.article-cover, .article-hero-art) .code-art span { font-size: 12px; line-height: 1.4; }
.cover-word, .editorial-art>strong, .topic-art>strong { font-family: var(--display); font-weight: 900; }
.diagram-strip b, .orbit-diagram span, .code-art span,
.topic-art>div>span, .article-hero-art .topic-art>div>span,
.training-notes i, .server-art i, .memory-art i, .deploy-art i,
.harness-art span, .consult-map>span, .open-art span, .mvp-cover i, .feed-art i, .share-art b {
  font-family: var(--body); font-size: 12px; font-weight: 500; line-height: 1.4;
}

/* Hero functional copy only. Headline and name tape keep their established proportions. */
.cut-live-copy .hero-offer { font-family: var(--body); font-size: clamp(17px, 1.18vw, 21px); line-height: 1.45; }
.hero-offer strong { font-size: inherit; font-weight: 600; }
.hero-terms { font-family: var(--body); font-size: clamp(12px, .9vw, 16px); line-height: 1.5; }
.cut-live-cta { font-size: clamp(14px, 1.1vw, 19px); line-height: 1.4; }
.cut-live-notes, .cut-live-note { font-size: max(12px, 1vw); }

@media (max-width: 940px) {
  :root { --text-body: 17px; --text-reading: 17px; --text-control: 15px; }
  .reading-body h2 { font-size: 28px; }
  .site-nav nav, body:has(.cut-live) .site-nav nav { font-size: 16px; }
  .cut-live-copy .hero-offer { font-size: 16px; line-height: 1.4; }
  .hero-terms { font-size: 12px; }
  .cut-live-cta { font-size: 14px; }
}
@media (max-width: 600px) {
  h2 { font-size: 46px; line-height: 1.04; }
  .task-number { margin-bottom: 16px; }
  .task h3, .process-grid h3, .article-card-body h3, .related .article-card-body h3 { font-size: 24px; }
  .task h3 { margin-bottom: 12px; }
  .task p { margin-bottom: 18px; }
  .task .text-link { display: inline-block; margin-bottom: 4px; }
  .project-caption h3, .project-tri .project-caption h3 { font-size: 40px; }
  .expertise-list h3, .expertise-list a h2 { font-size: 35px; }
  .process .handwritten { font-size: 16px; max-width: 16ch; }
  .section-top { align-items: flex-start; gap: 16px; }
  .section-top p { font-size: 12px; max-width: 18ch; }
  .reading-body h2 { font-size: 26px; margin-top: 38px; }
  .reading-body h3 { font-size: 22px; }
  .article-lead, .case-header>p { font-size: 19px; line-height: 1.65; }
  .reading-body table { font-size: 15px; }
  .reading-body pre { font-size: 13px; }
  .article-cta h2, .article-next-step h2 { font-size: 36px; }
  .editorial-viz-title, .explain-diagram figcaption { font-size: 36px; }
  .editorial-viz-description { font-size: 17px; }
  .publication-title { font-size: 18px; }
  .publication-outlet { font-size: 16px; }
  .consultation-price strong { font-size: 76px; }
  .consultation-price small { font-size: 21px; }
  .brand-index span { font-size: 14px; }
  .scene-label { max-width: calc(100% - 44px); }
  .scene-tape, .scene-tri .scene-tape { font-size: 19px; letter-spacing: .02em; }
  .agent-path { gap: 5px; }
  .agent-path span { padding: 7px 5px; }
  .cut-live-copy .hero-offer { font-size: 16px; line-height: 1.45; }
  .hero-offer strong { font-size: 16px; }
  .hero-terms { font-size: 12px; }
  .cut-live-cta { font-size: 14px; }
}
/* Small graphic labels use reading type, not the condensed headline face. */
.tri-notes span,.case-scene .tri-notes span{font-family:var(--body);font-size:17px;font-weight:600;line-height:1.4}
.wire-window strong{font-family:var(--body);font-size:17px;font-weight:700;line-height:1.25}
.mini-phone p,.case-scene .mini-phone p{font-family:var(--body);font-size:21px;font-weight:700;line-height:1.2;letter-spacing:-.03em}
.agent-sticker{font-family:var(--body);font-size:17px;font-weight:700;line-height:1.25}
@media(max-width:600px){.tri-notes span,.case-scene .tri-notes span{font-size:16px}.wire-window strong{font-size:14px}.mini-phone p,.case-scene .mini-phone p{font-size:18px}.agent-sticker{font-size:12px;line-height:1.3}}
