@layer legacy, pages, system, navigation;
/* SOURCE: styles.css */
@layer legacy {
:root {
  --paper: #f5f1e8;
  --paper-deep: #e9e3d7;
  --ink: #0a1930;
  --muted: #65707d;
  --orange: #ff6a2a;
  --lime: #c9f03d;
  --line: rgba(10, 25, 48, .18);
  --serif: "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  --sans: Aptos, "Segoe UI", Arial, sans-serif;
  --mono: "Cascadia Mono", Consolas, monospace;
  --shell: min(1240px, calc(100vw - 80px));
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--sans); font-size: 16px; line-height: 1.6; -webkit-font-smoothing: antialiased; }
a { color: inherit; }
img, svg { display: block; max-width: 100%; }
button, a { -webkit-tap-highlight-color: transparent; }
::selection { background: var(--lime); color: var(--ink); }

.skip-link { position: fixed; z-index: 100; top: 12px; left: 12px; padding: 10px 16px; background: var(--ink); color: white; transform: translateY(-150%); transition: transform .2s; }
.skip-link:focus { transform: translateY(0); }
:focus-visible { outline: 3px solid var(--orange); outline-offset: 4px; }
.section-shell { width: var(--shell); margin-inline: auto; }

.site-header { position: sticky; z-index: 50; top: 0; width: 100%; min-height: 76px; padding: 16px max(40px, calc((100vw - 1240px)/2)); display: flex; justify-content: space-between; align-items: center; background: rgba(245,241,232,.88); border-bottom: 1px solid transparent; backdrop-filter: blur(14px); transition: border-color .25s, min-height .25s; }
.site-header.is-scrolled { min-height: 62px; border-color: var(--line); }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; font-weight: 700; letter-spacing: -.02em; }
.brand-mark { width: 34px; height: 34px; display: grid; place-items: center; background: var(--ink); color: var(--paper); border-radius: 50%; font: 500 10px var(--mono); letter-spacing: .08em; }
.site-nav { display: flex; gap: 32px; }
.site-nav a { position: relative; text-decoration: none; font-size: 14px; font-weight: 600; }
.site-nav a::after { content: ""; position: absolute; left: 0; bottom: -5px; width: 100%; height: 2px; background: var(--orange); transform: scaleX(0); transform-origin: right; transition: transform .2s; }
.site-nav a:hover::after, .site-nav a:focus-visible::after { transform: scaleX(1); transform-origin: left; }

.hero { position: relative; min-height: 820px; padding: 110px 0 90px; overflow: hidden; }
.hero-kicker, .eyebrow { display: flex; align-items: center; gap: 10px; margin: 0 0 32px; font: 500 11px/1.4 var(--mono); letter-spacing: .12em; text-transform: uppercase; }
.status-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--orange); box-shadow: 0 0 0 5px rgba(255,106,42,.12); }
.hero-title { position: relative; z-index: 2; max-width: 1100px; margin: 0; font: 400 clamp(72px, 9.8vw, 150px)/.84 var(--serif); letter-spacing: -.058em; }
.hero-emphasis { display: block; margin-left: clamp(0px, 8vw, 120px); font-style: italic; color: var(--orange); }
.hero-footer { position: relative; z-index: 3; margin-top: 64px; display: flex; justify-content: space-between; align-items: flex-end; gap: 40px; }
.hero-intro { max-width: 570px; margin: 0; font-size: clamp(18px, 2vw, 24px); line-height: 1.5; letter-spacing: -.025em; }
.text-link { display: inline-flex; gap: 16px; align-items: center; padding-bottom: 5px; border-bottom: 1px solid var(--ink); text-decoration: none; font: 500 12px var(--mono); text-transform: uppercase; letter-spacing: .06em; }
.text-link span { color: var(--orange); transition: transform .2s; }
.text-link:hover span { transform: translate(3px, 3px); }
.hero-orbit { position: absolute; z-index: 1; right: -10px; top: 248px; width: 330px; height: 330px; border: 1px solid var(--line); border-radius: 50%; animation: drift 8s ease-in-out infinite; }
.orbit-line { position: absolute; inset: 40px; border: 1px dashed rgba(10,25,48,.24); border-radius: 50%; }
.orbit-core { position: absolute; inset: 105px; display: grid; place-items: center; text-align: center; border-radius: 50%; background: var(--lime); font: 500 11px/1.2 var(--mono); text-transform: uppercase; transform: rotate(8deg); }
.orbit-word { position: absolute; padding: 4px 8px; background: var(--paper); font: 400 10px var(--mono); letter-spacing: .12em; }
.orbit-word-one { top: 15px; left: 90px; }.orbit-word-two { right: -6px; top: 170px; }.orbit-word-three { bottom: 28px; left: 28px; }
@keyframes drift { 50% { transform: translateY(12px) rotate(2deg); } }

.work { padding: 130px 0; border-top: 1px solid var(--line); }
.section-heading { display: grid; grid-template-columns: 1fr 2.1fr 1fr; gap: 40px; margin-bottom: 70px; align-items: start; }
.section-heading .eyebrow { margin-top: 12px; }
.section-heading h2 { margin: 0; max-width: 700px; font: 400 clamp(48px, 6.2vw, 86px)/.95 var(--serif); letter-spacing: -.045em; }
.section-heading > p:last-child { margin: 12px 0 0; color: var(--muted); }
.feature-card { display: grid; grid-template-columns: .85fr 1.15fr; min-height: 650px; background: var(--ink); color: white; }
.feature-copy { padding: clamp(36px, 5vw, 70px); display: flex; flex-direction: column; justify-content: space-between; gap: 36px; }
.project-meta { display: flex; justify-content: space-between; gap: 20px; color: inherit; opacity: .64; font: 400 10px var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.project-label { margin: 0 0 12px; color: var(--orange); font: 500 11px var(--mono); letter-spacing: .12em; text-transform: uppercase; }
.feature-copy h3, .project-card h3 { margin: 0 0 24px; font: 400 clamp(42px, 5vw, 66px)/.98 var(--serif); letter-spacing: -.04em; }
.feature-copy p:not(.project-label) { max-width: 540px; color: rgba(255,255,255,.7); }
.tag-row { display: flex; flex-wrap: wrap; gap: 8px; }
.tag-row span { padding: 7px 10px; border: 1px solid rgba(255,255,255,.25); border-radius: 100px; font: 400 10px var(--mono); text-transform: uppercase; letter-spacing: .05em; }
.button-link { width: fit-content; padding: 14px 18px; display: inline-flex; gap: 24px; align-items: center; background: var(--orange); color: var(--ink); text-decoration: none; font: 500 11px var(--mono); letter-spacing: .06em; text-transform: uppercase; transition: transform .2s, background .2s; }
.button-link:hover { transform: translateY(-3px); background: var(--lime); }
.feature-visual { position: relative; overflow: hidden; min-height: 560px; padding: 40px; background: var(--orange); color: var(--ink); }
.visual-caption { position: relative; z-index: 4; margin: 0; font: 500 10px var(--mono); text-transform: uppercase; letter-spacing: .08em; }
.flow-map { position: absolute; inset: 70px 25px 25px; }
.flow-lines { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.flow-lines path { fill: none; stroke: var(--ink); stroke-width: 2; stroke-dasharray: 6 7; }
.flow-lines circle { fill: var(--lime); stroke: var(--ink); stroke-width: 2; }
.flow-node { position: absolute; z-index: 2; width: 190px; min-height: 120px; padding: 18px; background: var(--paper); border: 1px solid var(--ink); box-shadow: 8px 8px 0 var(--ink); }
.flow-node span { display: block; margin-bottom: 16px; font: 400 10px var(--mono); }.flow-node strong { display: block; font: 500 28px var(--serif); }.flow-node small { color: var(--muted); font-size: 11px; }
.node-start { left: 0; top: 0; }.node-plan { right: 15px; top: 90px; }.node-decide { left: 70px; bottom: 40px; }.node-act { right: 0; bottom: 0; background: var(--lime); }
.visual-stamp { position: absolute; z-index: 3; top: 40%; left: 42%; width: 104px; height: 104px; padding-top: 35px; background: var(--ink); color: white; border-radius: 50%; text-align: center; font: 500 9px/1.25 var(--mono); text-transform: uppercase; transform: rotate(-10deg); }

.project-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 24px; }
.project-card { min-height: 610px; padding: clamp(32px, 4vw, 55px); display: flex; flex-direction: column; justify-content: space-between; overflow: hidden; }
.project-card-navy { background: #dce2e9; }.project-card-lime { background: var(--lime); }
.project-card-top { display: flex; flex-direction: column; gap: 28px; }
.project-monogram { margin: 20px -10px 0; color: var(--ink); font: 500 clamp(100px, 15vw, 190px)/.7 var(--sans); letter-spacing: -.12em; opacity: .9; }
.letter-stack { align-self: flex-end; width: 190px; height: 170px; position: relative; }
.letter-stack span { position: absolute; font: 400 150px/.8 var(--serif); }.letter-stack span:first-child { left: 0; color: var(--orange); transform: rotate(-10deg); }.letter-stack span:last-child { right: 0; top: 25px; color: var(--ink); transform: rotate(12deg); }
.project-card h3 { max-width: 520px; font-size: clamp(38px, 4vw, 56px); }
.project-card-copy > p:not(.project-label) { max-width: 530px; color: rgba(10,25,48,.68); }
.project-note { margin: 24px 0 0; padding-top: 15px; border-top: 1px solid rgba(10,25,48,.22); color: rgba(10,25,48,.62); font: 400 10px var(--mono); text-transform: uppercase; letter-spacing: .06em; }

.approach { padding: 130px 0; border-top: 1px solid var(--line); }
.approach .section-heading { grid-template-columns: 1fr 3.1fr; }
.process-list { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--ink); }
.process-list li { display: grid; grid-template-columns: 1fr 2.1fr 1fr; gap: 40px; padding: 35px 0; border-bottom: 1px solid var(--line); }
.process-number { font: 400 11px var(--mono); }.process-list h3 { margin: 0 0 8px; font: 500 clamp(26px, 3vw, 38px) var(--serif); }.process-list p { max-width: 580px; margin: 0; color: var(--muted); }
.process-list li::after { content: "↘"; justify-self: end; color: var(--orange); font-size: 30px; }

.about { padding: 130px 0; }
.about-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 100px; }
.about-title-wrap h2 { margin: 0; font: 400 clamp(48px, 6vw, 78px)/1 var(--serif); letter-spacing: -.045em; }
.about-copy { max-width: 610px; }.about-copy p { color: var(--muted); font-size: 18px; }.about-copy .about-lead { margin-top: 0; color: var(--ink); font: 400 clamp(28px, 3.5vw, 42px)/1.25 var(--serif); }
.facts-grid { margin-top: 100px; padding-top: 32px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 50px; border-top: 1px solid var(--ink); }
.fact-label { font: 500 10px var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--orange); }.facts-grid p { margin: 15px 0 0; font-size: 15px; line-height: 1.8; }

.contact { background: var(--ink); color: white; }.contact-inner { padding-top: 110px; padding-bottom: 40px; }.contact .eyebrow { color: var(--lime); }.contact h2 { max-width: 1050px; margin: 0 0 70px; font: 400 clamp(58px, 9vw, 120px)/.9 var(--serif); letter-spacing: -.055em; }
.contact-email { display: inline-flex; gap: 20px; padding-bottom: 8px; border-bottom: 2px solid var(--orange); color: var(--paper); font-size: clamp(18px, 2.7vw, 34px); text-decoration: none; word-break: break-all; transition: color .2s; }.contact-email:hover { color: var(--orange); }
.contact-footer { margin-top: 120px; padding-top: 25px; display: flex; justify-content: space-between; gap: 30px; border-top: 1px solid rgba(255,255,255,.22); color: rgba(255,255,255,.58); font: 400 10px var(--mono); text-transform: uppercase; letter-spacing: .08em; }

/* Case study */
.case-hero { padding: 90px 0 80px; }.back-link { display: inline-flex; gap: 10px; margin-bottom: 70px; color: var(--muted); text-decoration: none; font: 500 11px var(--mono); text-transform: uppercase; }.back-link:hover { color: var(--orange); }
.case-title { margin: 0; font: 400 clamp(86px, 16vw, 210px)/.73 var(--serif); letter-spacing: -.07em; }.case-title span { color: var(--orange); font-style: italic; }
.case-deck { margin: 80px 0 0 auto; max-width: 700px; font: 400 clamp(24px, 3vw, 38px)/1.25 var(--serif); }
.case-facts { display: grid; grid-template-columns: repeat(4, 1fr); gap: 30px; margin-top: 80px; padding: 25px 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line); }.case-facts span { display: block; margin-bottom: 8px; color: var(--muted); font: 400 9px var(--mono); text-transform: uppercase; letter-spacing: .1em; }.case-facts p { margin: 0; font-size: 14px; }
.case-note { margin: 60px 0 0; padding: 25px; display: flex; gap: 20px; align-items: flex-start; background: #ebe5d9; border-left: 4px solid var(--orange); }.case-note strong { white-space: nowrap; font: 500 10px var(--mono); text-transform: uppercase; }.case-note p { margin: -4px 0 0; color: var(--muted); }
.case-section { padding: 120px 0; border-top: 1px solid var(--line); }.case-section-grid { display: grid; grid-template-columns: 1fr 2fr; gap: 90px; }.case-section h2 { margin: 0; font: 400 clamp(50px, 6vw, 82px)/.95 var(--serif); letter-spacing: -.04em; }.case-section-copy { max-width: 720px; }.case-section-copy > p:first-child { margin-top: 0; font: 400 clamp(25px, 3vw, 36px)/1.3 var(--serif); }.case-section-copy p { color: var(--muted); }
.journey-strip { margin-top: 70px; display: grid; grid-template-columns: repeat(4, 1fr); }.journey-step { min-height: 260px; padding: 24px; border: 1px solid var(--ink); border-right: 0; }.journey-step:last-child { border-right: 1px solid var(--ink); }.journey-step:nth-child(2) { background: var(--orange); }.journey-step:nth-child(4) { background: var(--lime); }.journey-step span { font: 400 10px var(--mono); }.journey-step h3 { margin-top: 100px; font: 500 28px var(--serif); }.journey-step p { color: rgba(10,25,48,.65); font-size: 13px; }
.feature-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin-top: 60px; }.feature-item { min-height: 240px; padding: 28px; background: #ebe5d9; }.feature-item span { color: var(--orange); font: 500 10px var(--mono); }.feature-item h3 { margin: 55px 0 10px; font: 500 30px var(--serif); }.feature-item p { margin: 0; color: var(--muted); font-size: 14px; }
.case-outro { padding: 120px 0; background: var(--orange); }.case-outro h2 { max-width: 900px; margin: 0 0 45px; font: 400 clamp(54px, 7vw, 98px)/.9 var(--serif); letter-spacing: -.05em; }.case-outro .button-link { background: var(--ink); color: white; }

.reveal { opacity: 1; transform: none; }
.js .reveal { opacity: 0; transform: translateY(22px); transition: opacity .65s ease, transform .65s ease; }
.js .reveal.is-visible { opacity: 1; transform: none; }

@media (max-width: 900px) {
  :root { --shell: calc(100vw - 40px); }
  .site-header { padding-inline: 20px; }.hero { min-height: 690px; padding-top: 80px; }.hero-title { font-size: clamp(60px, 14vw, 110px); }.hero-emphasis { margin-left: 0; }.hero-orbit { width: 230px; height: 230px; top: 350px; right: -70px; opacity: .7; }.orbit-core { inset: 74px; }.orbit-line { inset: 28px; }
  .section-heading { grid-template-columns: 1fr; gap: 10px; }.section-heading > p:last-child { max-width: 500px; }.feature-card { grid-template-columns: 1fr; }.feature-visual { min-height: 560px; }.project-grid { grid-template-columns: 1fr; }.approach .section-heading { grid-template-columns: 1fr; }.process-list li { grid-template-columns: 60px 1fr auto; }.about-grid { grid-template-columns: 1fr; gap: 50px; }.case-section-grid { grid-template-columns: 1fr; gap: 50px; }.case-facts { grid-template-columns: repeat(2, 1fr); }.journey-strip { grid-template-columns: repeat(2, 1fr); }.journey-step:nth-child(2) { border-right: 1px solid var(--ink); }.feature-list { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 600px) {
  :root { --shell: calc(100vw - 32px); }.site-header { min-height: 62px; }.brand-name { display: none; }.site-nav { gap: 18px; }.site-nav a { font-size: 12px; }
  .hero { min-height: 650px; padding: 70px 0 60px; }.hero-title { font-size: 17vw; line-height: .9; }.hero-footer { margin-top: 45px; align-items: flex-start; flex-direction: column; }.hero-intro { max-width: 90%; font-size: 18px; }.hero-orbit { display: none; }
  .work, .approach, .about, .case-section { padding: 85px 0; }.section-heading { margin-bottom: 45px; }.section-heading h2 { font-size: 48px; }.feature-copy { padding: 30px 24px; }.feature-copy h3 { font-size: 42px; }.feature-visual { min-height: 510px; padding: 24px; }.flow-map { inset: 65px 14px 14px; }.flow-node { width: 145px; min-height: 100px; padding: 12px; }.flow-node strong { font-size: 22px; }.node-plan { right: 0; }.node-decide { left: 5px; }.visual-stamp { width: 80px; height: 80px; padding-top: 26px; left: 42%; }.project-card { min-height: 540px; padding: 28px 24px; }.project-monogram { font-size: 28vw; }
  .process-list li { grid-template-columns: 42px 1fr; gap: 10px; }.process-list li::after { display: none; }.facts-grid { grid-template-columns: 1fr; gap: 28px; margin-top: 65px; }.contact-inner { padding-top: 80px; }.contact h2 { margin-bottom: 50px; }.contact-footer { margin-top: 90px; flex-direction: column; gap: 5px; }
  .case-hero { padding-top: 60px; }.back-link { margin-bottom: 45px; }.case-title { font-size: 25vw; }.case-deck { margin-top: 55px; }.case-facts { grid-template-columns: 1fr 1fr; }.case-note { flex-direction: column; }.journey-strip { grid-template-columns: 1fr; }.journey-step, .journey-step:nth-child(2) { border-right: 1px solid var(--ink); border-bottom: 0; }.journey-step:last-child { border-bottom: 1px solid var(--ink); }.feature-list { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; } *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .js .reveal { opacity: 1; transform: none; }
}

/* Keep the main headline unobstructed at every desktop width. */
.hero-orbit { display: none; }
.journey-strip { padding: 0; list-style: none; }
[id] { scroll-margin-top: 90px; }

}
/* SOURCE: refined.css */
@layer legacy {
@font-face{font-family:Figtree;src:url('/assets/generated/figtree-400.8f98dd642986.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:Figtree;src:url('/assets/generated/figtree-500.953a6a4294b1.woff2') format('woff2');font-style:normal;font-weight:500;font-display:swap}
@font-face{font-family:Figtree;src:url('/assets/generated/figtree-600.367d71328791.woff2') format('woff2');font-style:normal;font-weight:600;font-display:swap}
@font-face{font-family:Figtree;src:url('/assets/generated/figtree-700.7ec4f08d09f9.woff2') format('woff2');font-style:normal;font-weight:700;font-display:swap}
:root {
  --paper: #fff;
  --paper-deep: #f7f7fb;
  --ink: #171822;
  --muted: #696b78;
  --orange: #705ce3;
  --lime: #eeeafd;
  --line: #e8e8ef;
  --serif: Figtree, "Segoe UI", Arial, sans-serif;
  --sans: Figtree, "Segoe UI", Arial, sans-serif;
  --mono: Figtree, "Segoe UI", Arial, sans-serif;
  --shell: min(1120px, calc(100vw - 64px));
}

body { background: #fff; color: var(--ink); font-family: var(--sans); line-height: 1.65; }
::selection { background: #dcd4ff; color: #171822; }
.section-shell { width: var(--shell); }
.site-header { position: sticky; max-width: none; height: 78px; min-height: 78px; padding: 0 max(32px, calc((100vw - 1180px)/2)); background: rgba(255,255,255,.9); border-bottom: 1px solid rgba(232,232,239,.82); backdrop-filter: blur(18px); transition: height .25s ease, box-shadow .25s ease; }
.site-header.is-scrolled { min-height: 68px; height: 68px; box-shadow: 0 12px 38px rgba(31,26,61,.05); }
.brand { font-size: 15px; font-weight: 650; }
.brand-mark { width: 32px; height: 32px; background: var(--ink); color: #fff; font-size: 9px; }
.site-nav { gap: 28px; }
.site-nav a { color: #4e5060; font-size: 13px; font-weight: 550; }
.site-nav a::after { background: var(--orange); }
.eyebrow, .hero-kicker { margin: 0 0 18px; color: var(--orange); font: 650 10px/1.4 var(--sans); letter-spacing: .15em; text-transform: uppercase; }
.status-dot { width: 7px; height: 7px; background: var(--orange); box-shadow: 0 0 0 5px rgba(112,92,227,.1); }

.hero { min-height: 0; padding: 92px 0 96px; display: grid; grid-template-columns: minmax(0,1.6fr) minmax(260px,.55fr); gap: clamp(50px,8vw,120px); align-items: end; overflow: visible; }
.hero-title { max-width: 790px; margin: 0; font: 650 clamp(48px,6vw,76px)/1.05 var(--sans); letter-spacing: -.052em; }
.hero-emphasis { display: inline; margin: 0; color: var(--orange); font-style: normal; }
.hero-intro { max-width: 650px; margin: 28px 0 0; color: var(--muted); font-size: 18px; line-height: 1.7; letter-spacing: -.01em; }
.hero-actions, .feature-actions { margin-top: 32px; display: flex; flex-wrap: wrap; align-items: center; gap: 22px; }
.hero-aside { padding: 24px; border: 1px solid var(--line); border-radius: 18px; background: linear-gradient(145deg,#fff,#f8f7fc); }
.hero-aside > p { margin: 0 0 28px; color: var(--muted); font-size: 12px; }
.hero-aside ul { margin: 0; padding: 0; list-style: none; }
.hero-aside li { padding: 13px 0; display: flex; gap: 16px; border-top: 1px solid var(--line); font-size: 13px; font-weight: 600; }
.hero-aside li span { color: #a29eb8; font-size: 10px; }
.button-link { padding: 12px 17px; border: 1px solid #dcd7f7; border-radius: 9px; background: #fff; color: var(--orange); font: 650 12px var(--sans); letter-spacing: 0; text-transform: none; transition: transform .2s ease, box-shadow .2s ease, background .2s ease; }
.button-link:hover { transform: translateY(-2px); background: #fff; box-shadow: 0 10px 26px rgba(73,53,161,.12); }
.button-primary { border-color: var(--orange); background: var(--orange); color: #fff; }
.button-primary:hover { background: #5f4bce; color: #fff; }
.text-link { color: var(--ink); border-color: #c9c9d3; font: 600 12px var(--sans); letter-spacing: 0; text-transform: none; }
.text-link span { color: var(--orange); }

.work { padding: 96px 0 110px; border-top: 1px solid var(--line); }
.section-heading, .approach .section-heading { margin-bottom: 48px; display: grid; grid-template-columns: .75fr 1.55fr .8fr; gap: 45px; align-items: start; }
.section-heading .eyebrow { margin-top: 9px; }
.section-heading h2 { margin: 0; font: 650 clamp(34px,4vw,50px)/1.12 var(--sans); letter-spacing: -.04em; }
.section-heading > p:last-child { margin: 7px 0 0; color: var(--muted); font-size: 14px; }
.feature-card { min-height: 0; display: grid; grid-template-columns: .76fr 1.24fr; gap: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 28px; background: #fff; color: var(--ink); box-shadow: 0 20px 70px rgba(41,35,73,.07); transition: transform .3s ease, box-shadow .3s ease; }
.feature-card:hover { transform: translateY(-4px); box-shadow: 0 28px 84px rgba(41,35,73,.1); }
.feature-copy { order: 1; padding: clamp(32px,4vw,54px); justify-content: center; gap: 30px; }
.project-meta { color: #8c8d9a; opacity: 1; font: 600 9px var(--sans); letter-spacing: .09em; }
.project-label { margin-bottom: 12px; color: var(--orange); font: 650 11px var(--sans); letter-spacing: .08em; }
.feature-copy h3 { margin: 0 0 18px; font: 650 clamp(30px,3.8vw,48px)/1.08 var(--sans); letter-spacing: -.045em; }
.feature-copy p:not(.project-label) { margin: 0; color: var(--muted); font-size: 15px; }
.tag-row span { padding: 7px 10px; border: 0; border-radius: 100px; background: #f3f1fc; color: #69627f; font: 550 10px var(--sans); letter-spacing: 0; text-transform: none; }
.feature-actions { margin-top: 0; }
.feature-visual { order: 2; min-height: 880px; padding: 46px 34px 30px; display: grid; grid-template-columns: minmax(260px,390px) minmax(140px,1fr); gap: 28px; align-items: center; justify-content: center; background: radial-gradient(circle at 78% 18%,#fff 0 5%,transparent 22%),linear-gradient(145deg,#f3f0ff,#faf9ff); color: var(--ink); }
.demo-device { width: min(100%,390px); aspect-ratio: 1/2; margin-inline: auto; padding: 10px; border: 1px solid #dcd9e8; border-radius: 42px; background: #181822; box-shadow: 0 28px 60px rgba(35,27,76,.2); transition: transform .35s ease; }
.feature-card:hover .demo-device { transform: translateY(-3px) rotate(-.25deg); }
.device-top { height: 24px; display: grid; place-items: start center; }
.device-top span { display: block; width: 86px; height: 6px; border-radius: 20px; background: #383742; }
.demo-frame-wrap { position: relative; width: 100%; height: calc(100% - 24px); overflow: hidden; border-radius: 31px; background: #f6f3ff; }
.demo-frame-wrap iframe { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; border: 0; background: #fff; opacity: 0; transition: opacity .35s ease; }
.is-loaded .demo-frame-wrap iframe { opacity: 1; }
.demo-launch-panel { position: absolute; inset: 0; z-index: 2; padding: clamp(28px,4vw,48px); display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; overflow: hidden; background: linear-gradient(165deg,#faf9ff,#ece7ff); transition: opacity .35s ease, visibility .35s ease; }
.is-loaded .demo-launch-panel { opacity: 0; visibility: hidden; pointer-events: none; }
.demo-orbit { position: absolute; width: 260px; height: 260px; border: 1px solid rgba(112,92,227,.14); border-radius: 50%; }
.demo-orbit::before, .demo-orbit::after { content: ""; position: absolute; inset: 34px; border: 1px solid rgba(112,92,227,.12); border-radius: 50%; }
.demo-orbit::after { inset: 72px; background: rgba(255,255,255,.6); }
.demo-logo, .demo-launch-panel > p, .demo-launch-panel > strong, .demo-launch, .demo-status { position: relative; z-index: 1; }
.demo-logo { width: min(190px,72%); height: auto; object-fit: contain; margin-bottom: 24px; }
.demo-overline { margin: 0 0 10px !important; color: var(--orange) !important; font-size: 9px !important; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.demo-launch-panel strong { font-size: 24px; letter-spacing: -.03em; }
.demo-launch-panel > p:not(.demo-overline) { max-width: 250px; margin: 10px 0 24px; color: var(--muted); font-size: 13px; }
.demo-launch { padding: 12px 15px; border: 0; border-radius: 9px; background: var(--orange); color: #fff; font: 650 11px var(--sans); cursor: pointer; transition: transform .2s ease, background .2s ease; }
.demo-launch:hover { transform: translateY(-2px); background: #5f4bce; }
.demo-launch:disabled { opacity: .7; cursor: wait; }
.demo-status { min-height: 18px; margin-top: 10px; color: var(--muted); font-size: 10px; }
.demo-disclosure { align-self: end; padding: 18px; border: 1px solid rgba(112,92,227,.15); border-radius: 14px; background: rgba(255,255,255,.65); }
.demo-disclosure span { color: var(--orange); font-size: 9px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.demo-disclosure p { margin: 8px 0 0; color: var(--muted); font-size: 12px; }

.approach, .about { padding: 100px 0; border-top: 1px solid var(--line); }
.process-list { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; border: 0; }
.process-list li { display: grid; grid-template-columns: 42px 1fr; gap: 14px; padding: 25px; border: 1px solid var(--line); border-radius: 15px; transition: transform .2s ease, border-color .2s ease; }
.process-list li:hover { transform: translateY(-3px); border-color: #d7d1f5; }
.process-list li::after { display: none; }
.process-number { color: var(--orange); font: 650 10px var(--sans); }
.process-list h3 { margin: 0 0 8px; font: 650 18px var(--sans); }
.process-list p { margin: 0; color: var(--muted); font-size: 14px; }
.about-grid { grid-template-columns: .9fr 1.1fr; gap: 80px; }
.about-title-wrap h2 { margin: 0; font: 650 clamp(34px,4vw,50px)/1.13 var(--sans); letter-spacing: -.04em; }
.about-copy p { color: var(--muted); font-size: 15px; }
.about-copy .about-lead { color: var(--ink); font: 600 22px/1.5 var(--sans); letter-spacing: -.02em; }
.facts-grid { margin-top: 64px; border-color: var(--line); }
.fact-label { color: var(--orange); font: 650 10px var(--sans); letter-spacing: .08em; }
.facts-grid p { font-size: 13px; }
.contact { border-top: 1px solid #e8e4f7; background: #f7f5fd; color: var(--ink); }
.contact-inner { padding: 84px 0 28px; text-align: center; }
.contact .eyebrow { justify-content: center; color: var(--orange); }
.contact h2 { max-width: 760px; margin: 0 auto 30px; font: 650 clamp(38px,5vw,62px)/1.08 var(--sans); letter-spacing: -.045em; }
.contact-email { color: var(--orange); border: 0; font-size: clamp(17px,2vw,22px); }
.contact-footer { margin-top: 70px; border-color: #e2deef; color: #8f8b9d; font: 500 10px var(--sans); letter-spacing: 0; text-transform: none; }

.case-hero { padding: 54px 0 68px; }
.back-link { margin-bottom: 54px; color: var(--muted); font: 600 11px var(--sans); letter-spacing: 0; text-transform: none; }
.case-hero-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: end; }
.case-title { margin: 0; font: 700 clamp(58px,8vw,94px)/.95 var(--sans); letter-spacing: -.065em; }
.case-title span { color: var(--orange); font-style: normal; }
.case-deck { margin: 0 0 6px; color: var(--muted); font: 500 clamp(20px,2.3vw,28px)/1.45 var(--sans); letter-spacing: -.025em; }
.case-facts { margin-top: 54px; padding: 22px 0; border-color: var(--line); }
.case-facts span { font-family: var(--sans); }
.case-demo-section { padding: 86px 0; border-top: 1px solid var(--line); background: #f8f7fc; }
.case-demo-grid { display: grid; grid-template-columns: minmax(280px,.8fr) minmax(320px,1.2fr); gap: clamp(50px,9vw,130px); align-items: center; }
.case-demo-copy h2, .case-section h2 { margin: 0; font: 650 clamp(34px,4.2vw,52px)/1.1 var(--sans); letter-spacing: -.045em; }
.case-demo-copy > p:not(.eyebrow) { margin: 22px 0; color: var(--muted); }
.case-note { margin: 28px 0; padding: 18px; display: block; border: 1px solid #e1ddf2; border-left: 3px solid var(--orange); border-radius: 10px; background: #fff; }
.case-note strong { font: 700 10px var(--sans); letter-spacing: .08em; }
.case-note p { margin: 8px 0 0; color: var(--muted); font-size: 12px; }
.case-demo-visual { display: grid; place-items: center; }
.demo-device-case { max-width: 390px; }
.case-section { padding: 94px 0; border-color: var(--line); }
.case-section-grid { grid-template-columns: .8fr 1.2fr; gap: 80px; }
.case-section-copy > p:first-child { font: 600 22px/1.55 var(--sans); letter-spacing: -.02em; }
.case-section-copy p { color: var(--muted); }
.case-section-tinted { background: #fbfaff; }
.principle-list { margin-top: 30px; }
.principle-list article { padding: 22px 0; display: grid; grid-template-columns: 40px 1fr; column-gap: 16px; border-top: 1px solid var(--line); }
.principle-list span { grid-row: 1/3; color: var(--orange); font-size: 10px; font-weight: 700; }
.principle-list h3 { margin: 0; font-size: 17px; }
.principle-list p { margin: 5px 0 0; font-size: 13px; }
.case-outro { padding: 88px 0; background: var(--ink); color: #fff; }
.case-outro h2 { max-width: 760px; margin: 0 0 34px; font: 650 clamp(38px,5vw,62px)/1.08 var(--sans); letter-spacing: -.045em; }

.reveal { opacity: 1; transform: none; }
.motion-ready .reveal { opacity: 0; transform: translateY(18px); transition: opacity .65s ease, transform .65s ease; }
.motion-ready .reveal.is-visible { opacity: 1; transform: none; }

@media (max-width: 900px) {
  :root { --shell: calc(100vw - 40px); }
  .site-header { padding-inline: 20px; }
  .hero { grid-template-columns: 1fr; gap: 46px; padding: 76px 0; }
  .hero-aside { max-width: 520px; }
  .section-heading, .approach .section-heading { grid-template-columns: 1fr; gap: 8px; }
  .section-heading > p:last-child { max-width: 560px; }
  .feature-card { grid-template-columns: 1fr; }
  .feature-visual { min-height: 840px; }
  .case-hero-grid, .case-demo-grid, .case-section-grid { grid-template-columns: 1fr; gap: 42px; }
  .case-deck { max-width: 650px; }
}

@media (max-width: 620px) {
  :root { --shell: calc(100vw - 32px); }
  .site-header { height: 68px; min-height: 68px; gap: 14px; }
  .brand-mark { display: none; }
  .brand-name { display: block; font-size: 13px; }
  .site-nav { gap: 14px; }
  .site-nav a { font-size: 11px; }
  .site-nav a:nth-child(2) { display: none; }
  .hero { padding: 62px 0 68px; }
  .hero-title { font-size: 43px; }
  .hero-intro { font-size: 16px; }
  .hero-actions, .feature-actions { align-items: flex-start; flex-direction: column; }
  .work, .approach, .about { padding: 72px 0; }
  .section-heading h2 { font-size: 34px; }
  .feature-card { border-radius: 20px; }
  .feature-copy { padding: 30px 24px; }
  .feature-visual { min-height: 770px; padding: 28px 16px; grid-template-columns: 1fr; }
  .demo-disclosure { width: min(100%,390px); margin-inline: auto; }
  .process-list { grid-template-columns: 1fr; }
  .about-grid { grid-template-columns: 1fr; gap: 36px; }
  .facts-grid { grid-template-columns: 1fr; gap: 24px; margin-top: 46px; }
  .contact h2 { font-size: 38px; }
  .contact-footer { gap: 4px; flex-direction: column; }
  .case-hero { padding-top: 42px; }
  .case-facts { grid-template-columns: 1fr 1fr; gap: 22px; }
  .case-demo-section, .case-section, .case-outro { padding: 68px 0; }
  .case-demo-copy h2, .case-section h2 { font-size: 35px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition-duration: .01ms !important; }
  .motion-ready .reveal { opacity: 1; transform: none; }
}

[id] { scroll-margin-top: 88px; }

/* The supplied prototype already includes its own phone. Show it only once. */
.demo-device,.demo-device-case{width:100%;max-width:466px;aspect-ratio:auto;padding:0;border:0;border-radius:18px;background:transparent;box-shadow:none;transform:none!important}
.device-top{display:none}
.demo-frame-wrap{height:938px;border-radius:16px;background:#f8f9fc}
.demo-frame-wrap iframe{width:466px;height:938px;max-width:none;transform-origin:top left;background:#faf9f5}
.demo-launch-panel{padding:30px 24px}
.demo-launch{max-width:100%;white-space:normal}

.demo-launch-panel.has-poster{padding:0;display:block;overflow:hidden;background:#f6f5fa}
.demo-poster{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
.demo-poster-action{position:absolute;bottom:0;left:0;right:0;padding:60px 20px 24px;text-align:center;background:linear-gradient(transparent,#f7f6fc 40%)}
.demo-poster-action p{font-size:12px;margin:10px 0 0;color:#55566a}
.demo-poster-action .demo-launch{margin:auto}

@media(min-width:901px){.demo-device,.demo-device-case{max-width:min(466px,calc((100svh - 130px)*0.4968))}.feature-visual{min-height:650px}}


/* Shared controls use one scale on the homepage and case. */
.button-link,.demo-launch,.hero-actions .text-link,.feature-actions .text-link,.case-demo-copy>.text-link{
  display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:50px;padding:13px 22px;border-radius:14px;
  font:600 15px/1.35 var(--sans);letter-spacing:0;text-decoration:none;white-space:normal;cursor:pointer;
  transition:background .2s ease,transform .2s ease,box-shadow .2s ease;border:1px solid #ddd9ef;
}
.hero-actions .text-link,.feature-actions .text-link,.case-demo-copy>.text-link{background:#fff;color:#343144}
.hero-actions .text-link:hover,.feature-actions .text-link:hover,.case-demo-copy>.text-link:hover{background:#f5f2ff;border-color:#ad9eeb;transform:translateY(-2px)}
.button-link span,.text-link span,.demo-launch span{font-size:19px;line-height:1;flex-shrink:0}
.button-primary,.demo-launch{background:#6553d9;border-color:#6553d9;color:#fff;box-shadow:0 5px 15px #6553d919}
.button-primary:hover,.demo-launch:hover{background:#5140c4;border-color:#5140c4;box-shadow:0 8px 22px #6553d929}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #9a89eb;outline-offset:5px}
.hero-actions,.feature-actions{gap:12px}
.site-nav a{min-height:42px;display:inline-flex;align-items:center}
.demo-frame-wrap{overflow:hidden;contain:layout paint}
.demo-frame-wrap iframe{display:block;border:0}
.case-note{padding:16px 18px}
.case-note p{margin:0;font-size:14px}
.case-note strong{font-size:12px}
.case-hero{padding-bottom:48px}
.case-demo-section,.case-section{padding-block:64px}
.case-journey{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:36px}
.journey-stop{padding:24px;background:white;border:1px solid var(--line);border-radius:18px}
.journey-stop svg{width:28px;height:28px;stroke:#6b54d7;fill:none;stroke-width:1.7;margin-bottom:18px}
.journey-stop h3{font-size:20px;margin:0 0 8px;letter-spacing:-.025em}
.journey-stop p{font-size:15px;color:var(--muted);margin:0}
@media(max-width:700px){.case-journey{grid-template-columns:1fr 1fr}.journey-stop{padding:20px}.hero-actions,.feature-actions{align-items:stretch}.hero-actions>a,.feature-actions>a{width:100%}.case-demo-copy>.text-link{max-width:100%}}
@media(prefers-reduced-motion:reduce){.button-link,.demo-launch,.hero-actions .text-link,.feature-actions .text-link{transition:none}}

.screen-capture{position:absolute;left:6.866%;top:3.412%;width:86.266%;height:93.177%;overflow:hidden;border-radius:12% / 5.5%;z-index:1;box-shadow:0 15px 45px #302d501f;pointer-events:none}
.screen-capture img{position:absolute;width:190.099%;height:127.397%;left:-42.079%;top:-14.384%;max-width:none;object-fit:fill}
.portfolio-demo.is-loaded .screen-capture{opacity:0;visibility:hidden}
.demo-poster-action{z-index:2}
.demo-launch-panel.has-poster{background:linear-gradient(155deg,#edf0f9,#f8f7ff)}
.demo-launch-panel.has-poster .screen-capture{z-index:0}

.site-header .site-nav a{font-size:14px}.eyebrow,.hero-kicker{font-size:11px;letter-spacing:.11em}.brand-name{font-size:16px}.tag-row span{font-size:12px}.case-facts span,.fact-label{font-size:11px}
@media(max-width:620px){.site-header .site-nav a{font-size:12px}.brand-name{font-size:13px}}


:root{--shell:min(1120px,calc(100% - 64px))}
@media(max-width:900px){:root{--shell:calc(100% - 40px)}}
@media(max-width:620px){:root{--shell:calc(100% - 32px)}.site-header .site-nav a:nth-child(2){display:inline-flex}.site-header{padding-inline:16px}.site-nav{align-items:center}}



.about-grid{grid-template-columns:minmax(240px,340px) minmax(0,1fr);align-items:center;gap:clamp(36px,7vw,100px)}
.portrait-card{margin:0;border:1px solid var(--line);border-radius:22px;overflow:hidden;background:#faf9ff;box-shadow:0 20px 50px #2821440d}
.portrait-card img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:center 30%}
.portrait-card figcaption{padding:19px 22px;font-size:18px;font-weight:600;line-height:1.5}
.portrait-card figcaption span{display:block;margin-top:3px;color:var(--muted);font-size:13px;font-weight:400}
.about-copy h2{font:600 clamp(36px,4vw,54px)/1.12 var(--sans);letter-spacing:-.04em;margin:0 0 24px}
@media(max-width:700px){.about-grid{grid-template-columns:1fr;gap:32px}.portrait-card{max-width:340px;margin-inline:auto}.about-copy{max-width:none}}

/* Readable supporting copy, retaining the original typeface and palette. */
.eyebrow,.hero-kicker,.project-label,.fact-label,.case-facts span,.demo-disclosure span,.case-note strong{
  font-size:14px;font-weight:600;line-height:1.5;letter-spacing:.01em;text-transform:none;
}
.project-meta{color:#656676;font-size:13px;line-height:1.5;letter-spacing:0;text-transform:none;gap:12px;flex-wrap:wrap}
.tag-row span{font-size:13px}
.back-link{font-size:14px;line-height:1.5;letter-spacing:0;text-transform:none;min-height:44px;align-items:center}
.demo-overline{font-size:13px!important;font-weight:600;line-height:1.5;letter-spacing:0;text-transform:none}
.demo-disclosure p{font-size:14px;line-height:1.6}
.case-note strong{display:block;margin-bottom:6px}
.process-number{font-size:14px}
.contact-footer{font-size:13px;line-height:1.6;color:#c4bfd3}
@media(max-width:620px){.site-header .site-nav a{font-size:13px}}

}
/* SOURCE: typography.css */
@layer legacy {
/* Shared reading scale; the standalone demo has its own styles. */
:root {
  --text-body: 1.125rem;
  --text-support: 1rem;
  --text-small: .875rem;
}

body { font-size: var(--text-body); line-height: 1.65; }
[id] { scroll-margin-top: calc(4rem + 30px); }
.site-header, .site-header.is-scrolled { height: auto; }
.site-header { flex-wrap: wrap; gap: 8px 24px; }
.site-header .site-nav a { font-size: var(--text-support); line-height: 1.5; min-height: 44px; }
.site-nav { flex-wrap: wrap; }
.brand-name { font-size: 1rem; }
.hero-title { font-size: clamp(3rem, 1.5rem + 3.6vw, 4.625rem); }
.hero-title { overflow-wrap: anywhere; }
.case-title { font-size: clamp(3.625rem, 3rem + 4vw, 5.875rem); }
.case-title span { display: inline-block; }
.hero-intro { font-size: 1.25rem; line-height: 1.6; }
.case-deck { font-size: clamp(1.375rem, 1rem + 1vw, 1.75rem); line-height: 1.5; letter-spacing: -.02em; }
.section-heading h2, .about-title-wrap h2 { font-size: clamp(2.125rem, 1.25rem + 2.5vw, 3.125rem); }
.case-demo-copy h2, .case-section h2 { font-size: clamp(2.125rem, 1.25rem + 2.5vw, 3.25rem); }
.services-heading h2 { font-size: clamp(2.1875rem, 1.25rem + 3vw, 3.625rem); }
.about-copy h2 { font-size: clamp(2.25rem, 1.25rem + 3vw, 3.375rem); }
.feature-copy h3 { font-size: clamp(1.875rem, 1.25rem + 2.25vw, 3rem); }
.contact h2, .case-outro h2 { font-size: clamp(2.375rem, 1.25rem + 3.5vw, 3.875rem); }

.eyebrow, .hero-kicker, .project-label, .fact-label, .case-facts span,
.demo-disclosure span, .case-note strong, .back-link {
  font-size: var(--text-support); line-height: 1.5; letter-spacing: 0; text-transform: none;
}
.hero-kicker { align-items: baseline; }
.status-dot { flex-shrink: 0; }
.back-link { min-height: 44px; }
.project-meta, .tag-row span, .hero-capabilities li, .process-number,
.service-number, .portrait-card figcaption span, .contact-footer {
  font-size: var(--text-small); line-height: 1.5;
}
.section-heading > p:last-child, .services-heading > p:last-child,
.feature-copy p:not(.project-label), .about-copy p, .facts-grid p,
.case-section-copy p, .case-demo-copy > p:not(.eyebrow) {
  font-size: var(--text-body); line-height: 1.65;
}
.case-section-copy, .about-copy { max-width: 65ch; }
.case-section-copy p + p, .about-copy p + p { margin-top: 1.25em; }
.case-section-copy > p:first-child, .about-copy .about-lead {
  font-size: 1.375rem; line-height: 1.55;
}
.case-facts { gap: 24px 32px; padding-block: 28px; }
.case-facts > div { min-width: 0; }
.case-facts span { margin-bottom: 8px; }
.case-facts p { font-size: var(--text-body); line-height: 1.5; font-weight: 500; }
.case-facts p, .case-note p, .service-card p, .journey-stop p { overflow-wrap: break-word; }
.case-journey { grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
.case-note strong { white-space: normal; }
.case-note p, .demo-disclosure p, .service-card p, .service-more > p,
.process-list p, .journey-stop p, .principle-list p {
  font-size: var(--text-support); line-height: 1.6;
}
.process-list h3, .journey-stop h3, .principle-list h3 {
  font-size: 1.375rem; line-height: 1.3;
}
.process-list li { min-width: 0; grid-template-columns: 34px minmax(0, 1fr) auto; }
.process-list h3, .service-card h3 { overflow-wrap: anywhere; }
.service-card h3 { font-size: clamp(1.375rem, 1rem + .75vw, 1.6875rem); line-height: 1.25; }
.service-more summary { min-height: 44px; gap: 12px; font-size: var(--text-support); line-height: 1.5; }
.service-more summary span { flex-shrink: 0; }
.service-more { margin-top: 20px; }
.service-card .service-more { margin-top: auto; padding-top: 20px; }
.service-card > p { margin-bottom: 20px; }
.button-link, .demo-launch, .hero-actions .text-link, .feature-actions .text-link,
.case-demo-copy > .text-link {
  font-size: var(--text-support); line-height: 1.5;
}
.demo-overline, .portfolio-demo .demo-overline { font-size: var(--text-support) !important; }
.demo-poster-action p, .demo-status { font-size: var(--text-small); line-height: 1.5; }
.demo-poster-action p { margin-bottom: 0; }
.demo-poster-action { padding-inline: 16px; }
.demo-poster-action .demo-launch { max-width: 100%; padding-inline: 14px; }
.demo-poster-action .demo-launch span { flex-shrink: 0; }
.case-outro .eyebrow { color: #b9adff; }

@media (max-width: 900px) {
  .case-deck { max-width: 36ch; }
  .case-journey { grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); }
}
@media (max-width: 620px) {
  :root { --text-body: 1.0625rem; }
  .hero-intro { font-size: 1.125rem; }
  .case-deck { font-size: 1.375rem; margin-top: 0; }
  .case-facts { gap: 24px; }
  .case-facts p { font-size: 1.125rem; }
  .case-section-copy > p:first-child, .about-copy .about-lead { font-size: 1.25rem; }
  .site-header, .site-header.is-scrolled { height: auto; min-height: 0; padding-block: 10px; gap: 4px; }
  .site-header .brand { width: 100%; }
  .site-header .brand-name { display: inline; font-size: 1rem; }
  .site-nav { width: 100%; gap: 4px 16px; justify-content: space-between; }
  .site-header .site-nav a { display: inline-flex; font-size: 1rem; min-height: 40px; }
  .process-list li { grid-template-columns: minmax(0, 1fr) auto; }
  .process-list li > div { grid-row: 2; grid-column: 1 / -1; }
  .process-mark { grid-row: 1; grid-column: 2; }
  [id] { scroll-margin-top: calc(5rem + 40px); }
}
@media (max-width: 380px) {
  .case-facts, .case-journey { grid-template-columns: minmax(0, 1fr); }
}
@media (max-height: 480px) {
  .site-header { position: relative; }
}

}
/* SOURCE: portfolio-refinements.css */
@layer legacy {
/* Keep the original visual identity; give the work and its evidence more room. */
a:focus-visible, button:focus-visible, summary:focus-visible {
  outline: 3px solid #6558d8;
  outline-offset: 5px;
}
.hero { padding-block: 64px; }
.feature-card:hover { transform: none; }
.project-route > p { margin-bottom: 12px !important; color: var(--ink) !important; font-weight: 600; }
.project-route ol { margin: 0; padding: 0; list-style: none; }
.project-route li { position: relative; }
.project-route li:not(:last-child)::after { content: ""; position: absolute; top: 35px; bottom: -10px; left: 15px; width: 1px; background: #d8d1fa; }
.project-route a { position: relative; z-index: 1; display: flex; align-items: center; gap: 12px; min-height: 48px; text-decoration: none; font-size: 1rem; font-weight: 500; }
.project-route a > span { display: grid; place-items: center; width: 32px; height: 32px; flex: 0 0 32px; border: 1px solid #d8d1fa; border-radius: 50%; color: #6553d9; background: #fff; }
.project-route a:hover { color: #6553d9; }
.project-route a:hover > span { background: #eeeafd; border-color: #705ce3; }
.case-nav { display: flex; flex-wrap: wrap; gap: 8px 28px; margin-top: 28px; }
.case-nav a { display: inline-flex; align-items: center; min-height: 44px; color: #5140c4; font-size: 1rem; font-weight: 600; text-decoration-thickness: 1px; text-underline-offset: 5px; }
.case-note { flex-wrap: wrap; }
.case-note p { min-width: 0; }
.demo-launch svg { width: 18px; height: 18px; flex-shrink: 0; fill: currentColor; }

/* Three actual screens connected by the decisions that shape the journey. */
.decision-story { padding-block: 84px; background: #fff; border-top: 1px solid var(--line); }
.decision-heading { display: grid; grid-template-columns: 1.1fr 1fr; align-items: end; gap: 40px; margin-bottom: 40px; }
.decision-heading h2 { margin: 0; font-size: clamp(2.125rem, 1.25rem + 2.5vw, 3.25rem); line-height: 1.12; letter-spacing: -.04em; }
.decision-heading > p { margin: 0; max-width: 42ch; color: var(--muted); font-size: 1.125rem; }
.decision-map { position: relative; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 36px; }
.decision-stage { position: relative; min-width: 0; scroll-margin-top: calc(5rem + 40px); }
.decision-step { position: relative; display: flex; align-items: center; gap: 12px; margin: 0 0 22px; font-size: 1rem; font-weight: 600; }
.decision-step > span { color: #6553d9; background: #eeeafd; border-radius: 999px; width: 34px; height: 34px; display: grid; place-items: center; flex-shrink: 0; }
.decision-stage:not(:last-child) .decision-step::after { content: ""; flex: 1; height: 1px; margin-left: 5px; background: linear-gradient(90deg, #bfb3f4, #9edff5); }
.decision-stage figure { margin: 0; }
.decision-shot { position: relative; aspect-ratio: 402 / 697; overflow: hidden; border: 1px solid #e1e3ec; border-radius: 18px; background: #f7faff; box-shadow: 0 12px 30px rgba(30, 31, 60, .05); }
.decision-shot > img { display: block; width: 100%; height: auto; max-width: none; transform: translateY(-7.09382%); }
.decision-highlight { position: absolute; left: 4%; top: var(--mark-top); width: 92%; height: var(--mark-height); border: 3px solid #147d9c; border-radius: 12px; box-shadow: 0 0 0 999px rgba(255,255,255,.42); opacity: 0; pointer-events: none; transition: opacity .18s ease; }
.decision-stage.is-highlighted .decision-highlight { opacity: 1; }
.decision-pin { position: absolute; z-index: 2; top: calc(var(--mark-top) - 18px); right: 2%; width: 44px; min-height: 44px; display: grid; place-items: center; padding: 0; border-radius: 50%; border: 2px solid white; background: #6553d9; color: white; font: 700 1rem var(--sans); box-shadow: 0 3px 12px #33246b35; cursor: pointer; }
.decision-pin[aria-pressed="true"] { background: #147d9c; }
.decision-pin[hidden] { display: none; }
.decision-enlarge { display: inline-flex; align-items: center; min-height: 44px; gap: 8px; padding: 4px 0; border: 0; background: none; color: #5140c4; font: 600 1rem var(--sans); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.decision-enlarge svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.decision-reason { margin-top: 14px; padding-top: 18px; border-top: 2px solid #e8e8ef; transition: border-color .18s ease; }
.is-highlighted .decision-reason { border-color: #147d9c; }
.decision-reason h3 { margin: 0 0 12px; font-size: 1.375rem; line-height: 1.3; letter-spacing: -.02em; }
.decision-reason p, .decision-reason dd { margin: 0; color: var(--muted); font-size: 1rem; line-height: 1.6; }
.decision-reason dl { margin: 20px 0 0; }
.decision-reason dt { color: var(--ink); font-size: 1rem; font-weight: 600; margin-top: 16px; }
.decision-reason dd { margin-top: 4px; }
.decision-footnote { margin: 30px 0 0; color: var(--muted); font-size: 1rem; }
.screen-dialog { width: min(520px, calc(100vw - 24px)); max-height: calc(100dvh - 24px); padding: 0; border: 1px solid #e1dcef; border-radius: 18px; background: #fff; color: var(--ink); overscroll-behavior: contain; }
.screen-dialog::backdrop { background: rgba(23,24,34,.65); }
.screen-dialog-head { position: sticky; z-index: 1; top: 0; padding: 12px 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; background: #fff; border-bottom: 1px solid var(--line); }
.screen-dialog-head h2 { margin: 0; font-size: 1rem; line-height: 1.4; }
.screen-dialog-head button { flex-shrink: 0; min-width: 44px; min-height: 44px; border: 1px solid #d8d1fa; border-radius: 10px; background: #fff; color: #5140c4; font: 600 1rem var(--sans); cursor: pointer; }
.screen-dialog > img { width: 100%; height: auto; }
.screen-dialog > p { margin: 0; padding: 16px; font-size: 1rem; color: var(--muted); }
@media (max-width: 900px) {
  .decision-heading { grid-template-columns: 1fr; gap: 18px; }
  .decision-map { gap: 24px; }
}
@media (max-width: 760px) {
  .decision-map { grid-template-columns: 1fr; gap: 48px; }
  .decision-stage { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 24px; }
  .decision-step { grid-column: 1 / -1; }
  .decision-stage:not(:last-child) .decision-step::after { display: none; }
  .decision-reason { margin-top: 0; }
}
@media (max-width: 620px) {
  .hero { padding-block: 40px 48px; gap: 32px; }
  .hero-intro { max-width: 100%; }
  .work { padding-block: 56px 64px; }
  .feature-copy { padding: 28px 24px; gap: 24px; }
  .project-route a { min-height: 48px; }
  .case-nav { gap: 6px 20px; }
  .decision-story { padding-block: 56px; }
  .decision-stage { grid-template-columns: 1fr; }
  .decision-stage figure { max-width: 402px; width: 100%; margin-inline: auto; }
  .decision-reason { margin-top: 14px; }
  .decision-heading > p { font-size: 1.0625rem; }
}
@media (prefers-reduced-motion: reduce) {
  .decision-highlight, .decision-reason { transition: none; }
}

/* Explain the original journey on the card; the full app still starts at Get started. */
.feature-card[data-demo] .feature-copy { justify-content: flex-start; gap: 26px; }
.feature-card[data-demo] .feature-copy .project-demo-summary { margin-top: 1em; }
.feature-card[data-demo] .project-explainer > p { margin-bottom: 8px !important; }
.project-explainer details { border-bottom: 1px solid #e8e4f5; }
.project-explainer summary { display: flex; align-items: center; gap: 12px; min-height: 58px; padding-block: 8px; list-style: none; cursor: pointer; color: var(--ink); font-size: 1rem; font-weight: 500; }
.project-explainer summary::-webkit-details-marker { display: none; }
.project-explainer .route-number { display: grid; place-items: center; width: 32px; height: 32px; flex: 0 0 32px; border-radius: 50%; border: 1px solid #d8d1fa; color: #6553d9; background: white; transition: background .18s, color .18s; }
.project-explainer .route-toggle { margin-left: auto; color: #6553d9; font-size: 1.25rem; transition: transform .18s; }
.project-explainer details[open] .route-number { color: white; background: #6553d9; border-color: #6553d9; }
.project-explainer details[open] .route-toggle { transform: rotate(45deg); }
.feature-card[data-demo] .project-explainer details > p { margin: 0 0 18px; padding-left: 44px; font-size: 1rem; line-height: 1.6; }
.project-explainer summary:hover { color: #5140c4; }
.feature-card[data-demo] .feature-actions { gap: 12px; }
.feature-card[data-demo] .feature-copy > .demo-status { margin: -12px 0 0; text-align: left; font-size: .875rem; }
.feature-card[data-demo] .feature-visual { align-content: start; gap: 16px; }
.feature-card[data-demo] .demo-poster-button { padding: 0; border: 0; background: #f7f8fc; cursor: pointer; pointer-events: auto; color: #5140c4; font: 600 1rem var(--sans); }
.demo-poster-button .poster-hint { position: absolute; z-index: 2; top: 68px; right: 14px; display: inline-flex; align-items: center; gap: 10px; padding: 9px 13px; border: 1px solid #d9d1fb; border-radius: 999px; background: white; box-shadow: 0 4px 16px #302d5010; }
.demo-poster-button:hover .poster-hint { background: #f1edff; border-color: #ad9eeb; }
.demo-poster-button:focus-visible { outline-offset: -5px; }
.feature-card[data-demo].is-loaded [data-demo-launch] { display: none; }
.demo-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px 16px; width: min(100%,466px); margin: 0 auto 12px; }
.demo-toolbar[hidden] { display: none; }
.demo-launch-panel { transition-property: opacity; }
.demo-toolbar, [data-demo-frame] { scroll-margin-top: calc(6rem + 20px); }
.demo-fallback { color: #5140c4; font-size: 1rem; text-underline-offset: 4px; }
.demo-fallback[hidden] { display: none; }
.demo-toolbar button, .demo-toolbar a { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 4px 0; border: 0; background: transparent; color: #5140c4; font: 600 1rem var(--sans); cursor: pointer; text-decoration: underline; text-underline-offset: 4px; }
.demo-caption { position: relative; z-index: 1; width: min(100%,466px); margin: 0 auto; color: var(--muted); font-size: 1rem; line-height: 1.6; text-align: center; }
.contact a:focus-visible, .contact button:focus-visible, .case-outro a:focus-visible, .case-outro button:focus-visible { outline-color: #bdb0ff; }
@media (max-width: 700px) {
  .feature-card[data-demo] .feature-copy { gap: 22px; }
  .feature-card[data-demo] .feature-visual { padding-inline: 8px; }
  .feature-card[data-demo] .feature-actions > * { width: 100%; justify-content: center; }
}
@media (prefers-reduced-motion: reduce) {
  .project-explainer .route-number, .project-explainer .route-toggle { transition: none; }
}

/* Disclosures have a full-row target and enough detail to earn the extra click. */
.portfolio-home .service-more summary { width: 100%; min-height: 48px; justify-content: space-between; padding: 8px 0; border-radius: 4px; }
.portfolio-home .service-more summary:hover { color: #382994; }
.service-more .disclosure-icon { width: 24px; height: 24px; flex: 0 0 24px; stroke: currentColor; stroke-width: 1.7; fill: none; pointer-events: none; }
.disclosure-vertical { transform-origin: center; transition: transform .18s ease; }
.service-more[open] .disclosure-vertical { transform: scaleY(0); }
.service-scope { margin-top: 10px; padding-left: 18px; border-left: 2px solid #cfc6f3; }
.service-scope ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 14px; }
.service-scope li { color: var(--muted); font-size: 1rem; line-height: 1.6; }
.service-scope strong { color: var(--ink); font-weight: 600; }
.service-card .service-scope p { margin: 20px 0 4px; padding-top: 16px; border-top: 1px solid #ece9f4; font-size: 1rem; }
.contact-channels { display: flex; flex-direction: column; align-items: center; gap: 18px; }
.contact-telegram { display: inline-flex; align-items: center; gap: 16px; min-height: 44px; color: #cfc8ff; text-decoration: underline; text-underline-offset: 6px; font-size: 1.125rem; }
.contact-telegram:hover { color: #fff; text-decoration-color: #55c7ee; }
.vision-map { grid-column: 1 / -1; margin: 10px 0 0; padding: 24px; border: 1px solid #e5e1f2; border-radius: 18px; background: #faf9ff; }
.vision-map img { display: block; width: 100%; height: auto; }
.vision-map figcaption { margin-top: 16px; color: var(--muted); font-size: 1rem; line-height: 1.5; }
@media (max-width: 620px) { .vision-map { padding: 12px; } }
@media (prefers-reduced-motion: reduce) { .disclosure-vertical { transition: none; } }

}
/* SOURCE: demo-viewer.css */
@layer legacy {
/* Intrinsic OlehAI embed: preserve the original app's responsive text size. */
.portfolio-demo {
  isolation: isolate;
}

/* A reveal/hover transform must not move the launch target after positioning. */
[data-demo].is-loaded {
  transform: none !important;
  transition: none;
}

.portfolio-demo::before {
  z-index: 0;
  pointer-events: none;
  user-select: none;
}

/* Once the app is open, keep decorative lettering away from its controls. */
[data-demo].is-loaded .portfolio-demo::before {
  visibility: hidden;
}

[data-demo] .demo-toolbar {
  position: relative;
  z-index: 2;
}

[data-demo] .demo-device,
[data-demo] .demo-device-case {
  width: 100%;
  max-width: 466px;
  aspect-ratio: auto;
  margin-inline: auto;
  transform: none !important;
}

[data-demo] .demo-frame-wrap {
  position: relative;
  width: 100%;
  max-width: 466px;
  height: auto;
  aspect-ratio: 466 / 938;
  margin-inline: auto;
  overflow: hidden;
  contain: layout paint;
  background: transparent;
}

/* The phone has its own outline; the embed canvas must not form a second card. */
[data-demo] .demo-launch-panel.has-poster {
  background: transparent;
}

[data-demo] .screen-capture {
  box-shadow: 0 0 0 1px #d9d9e3;
}

[data-demo] .demo-poster-action {
  left: 6.866%;
  right: 6.866%;
  bottom: 3.412%;
  padding: 48px 16px 20px;
  border-radius: 0 0 48px 48px;
  background: #f7f9fe;
}

[data-demo] .demo-frame-wrap iframe {
  position: absolute;
  inset: 0;
  display: block;
  width: 100% !important;
  max-width: 100%;
  height: 100% !important;
  border: 0;
  transform: none !important;
  opacity: 0;
  pointer-events: none;
}

[data-demo].is-loaded .demo-frame-wrap iframe {
  z-index: 4;
  background: transparent;
  opacity: 1;
  pointer-events: auto;
}

[data-demo].is-loaded .demo-frame-wrap {
  background: transparent;
  height: clamp(240px, calc(100svh - var(--site-sticky-height, 68px) - var(--demo-toolbar-height, 44px) - 44px), 874px);
  aspect-ratio: auto;
}

/* The live app reflows to the available height; its text is never scaled. */
[data-demo].is-loaded :is(.demo-device, .demo-device-case) {
  max-width: 402px;
}
[data-demo] .feature-visual { min-height: 0; }

[data-demo].is-loaded [data-demo-placeholder] {
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}

[data-demo].is-loaded .screen-capture {
  visibility: hidden;
  opacity: 0;
}

[data-demo].is-loading [data-demo-launch] {
  cursor: wait;
  opacity: .72;
}

[data-demo] [data-demo-launch] svg {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
  fill: currentColor;
}

[data-demo].is-error [data-demo-status] {
  color: var(--orange, #5140c4);
}

[data-demo] [data-demo-status] {
  position: relative;
  z-index: 5;
  display: block;
  width: min(100%, 466px);
  min-height: 1.5em;
  margin: 12px auto 0;
  color: var(--muted, #5d5d6c);
  font-size: 14px;
  line-height: 1.5;
  text-align: center;
}

.demo-presentation { min-width: 0; width: 100%; }
.feature-card[data-demo] { overflow-anchor: none; }
.demo-presentation > .demo-caption { margin-top: 16px; }
.demo-toolbar, [data-demo-frame] {
  scroll-margin-top: calc(var(--site-header-height, 68px) + 16px);
}

/* A short desktop can show the complete poster beside the longer description.
   Only the preview changes size; the running app keeps its readable native UI. */
@media (min-width: 901px) and (min-height: 500px) and (max-height: 900px) {
  .feature-card[data-demo]:not(.is-loaded) { overflow: clip; transform: none; }
  .feature-card[data-demo]:not(.is-loaded) .feature-visual {
    overflow: clip;
    display: block;
    min-height: 0;
    padding-block: 24px;
  }
  .feature-card[data-demo]:not(.is-loaded) .demo-presentation {
    position: sticky;
    top: calc(var(--site-header-height, 68px) + 16px);
  }
  .feature-card[data-demo]:not(.is-loaded) .demo-device {
    max-width: min(466px, calc((100svh - var(--site-header-height, 68px) - 96px) * .4968));
  }
  .feature-card[data-demo]:not(.is-loaded) .demo-frame-wrap {
    height: auto;
    aspect-ratio: 466 / 938;
  }
  .feature-card[data-demo]:not(.is-loaded) .poster-hint {
    top: auto;
    bottom: 22%;
    right: 50%;
    transform: translateX(50%);
    white-space: nowrap;
  }
  .feature-card[data-demo]:not(.is-loaded) .demo-caption { font-size: .875rem; }

}

/* The case launch stays discoverable across desktop heights, including the
   1440 x 1000 review viewport. Only the idle poster is sized to the window;
   the live app still reflows at its natural text size through the rule above. */
@media (min-width: 901px) {
  .case-demo-visual[data-demo]:not(.is-loaded) .demo-device-case {
    max-width: min(390px, max(210px, calc((100svh - var(--site-header-height, 68px) - 132px) * .4968)));
  }

  .case-demo-visual[data-demo]:not(.is-loaded) .demo-frame-wrap {
    height: auto;
    aspect-ratio: 466 / 938;
  }
}

}
/* SOURCE: body-typography.css */
@layer legacy {
/*
  Reading layer, loaded after the existing page styles.
  Figtree remains the display face; Inter serves narrative and UI copy.
*/
@font-face {
  font-family: "Inter";
  src: url("/assets/generated/inter-reading.4df0d627b351.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

:root {
  --heading: Figtree, "Segoe UI", Arial, sans-serif;
  --body: "Inter", "Segoe UI", Arial, sans-serif;
}

body {
  font-family: var(--body);
  font-optical-sizing: auto;
}

/* Keep the portfolio's familiar Figtree voice for display and identity text. */
h1, h2, h3, h4, h5, h6,
.hero-title, .case-title,
.brand, .brand-name, .brand-mark,
.contact h2 {
  font-family: var(--heading);
}

/* Narrative copy uses the more open reading face without changing its scale. */
body :is(p, li, dt, dd) {
  font-family: var(--body);
}

/* Controls and compact navigation share the reading face; display marks stay above. */
body :is(button, input, select, textarea),
body .site-nav a,
body .button-link,
body .text-link,
body .back-link,
body .case-nav a,
body .service-more summary,
body .project-explainer summary,
body .decision-step,
body .decision-pin,
body .decision-enlarge,
body .demo-launch,
body .demo-toolbar :is(button, a),
body .screen-dialog :is(button, p) {
  font-family: var(--body);
}

body :is(.eyebrow, .hero-kicker, .project-label, .fact-label, .case-facts span,
.project-meta, .tag-row span, .process-number, .service-number, .demo-status,
.demo-caption, .demo-poster-action p, .contact-footer) {
  font-family: var(--body);
}

}
/* SOURCE: editorial.css */
@layer legacy {
/* Editorial audit: less repetition, clearer scope and readable mobile pacing. */
.project-scope {
  display: grid;
  gap: 14px;
  margin-top: 22px;
}

.feature-copy .project-scope p {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 4px;
  margin: 0;
}

.project-scope p span {
  color: var(--ink);
  font-weight: 600;
}

/* Employer review polish: make the single proof card read without nested,
   pinched desktop columns. */
.feature-card[data-demo] {
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
}

.feature-card[data-demo] .feature-copy {
  padding: clamp(32px, 3.5vw, 48px);
}

.feature-proof {
  max-width: 42ch;
  margin: 0;
  color: var(--ink);
  font-size: 1rem;
  line-height: 1.55;
}

.feature-proof strong { font-weight: 650; }

/* Shared display roles and better line endings across both pages. */
.eyebrow,
.about-copy > .eyebrow { color: #6553d9; }

.contact .eyebrow,
.case-outro .eyebrow { color: #cfc8ff; }

:is(h1, h2, h3, .hero-title, .case-deck, .section-heading > p:last-child,
  .process-carousel__heading > p:last-child) {
  text-wrap: balance;
}

:is(.hero-intro, .feature-proof, .process-carousel__copy > p, .case-section-copy p) {
  text-wrap: pretty;
}

/* The watermark remains part of the project identity without reading as a
   clipped second headline behind the phone. */
.portfolio-demo::before {
  right: 3%;
  top: 34px;
  color: rgba(101, 88, 216, .045);
  font-size: clamp(72px, 9vw, 112px);
  letter-spacing: -.055em;
}

/* The homepage and case close with the same dark surface and footer tone. */
.contact,
.case-outro {
  background: #24222e;
  color: #fff;
}

.contact-footer { color: #c4bfd3; }

/* A compact, scannable contribution summary sits near the case facts. */
.case-contribution {
  display: grid;
  grid-template-columns: minmax(8rem, .22fr) minmax(0, 1fr);
  gap: 12px 28px;
  margin-top: 22px;
  padding: 18px 20px;
  border-left: 3px solid #55c7ee;
  background: #f8f7ff;
}

.case-contribution > strong {
  color: #5140c4;
  font-family: var(--heading);
  font-size: 1rem;
  line-height: 1.5;
}

.case-contribution__list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px 22px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.case-contribution__list li {
  color: var(--muted);
  font-size: 1rem;
  line-height: 1.5;
}

.case-contribution__list strong {
  display: block;
  margin-bottom: 3px;
  color: var(--ink);
  font-weight: 650;
}

.case-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }

/* Make the selected screenshot annotation unmistakable without adding a new
   decorative control language. */
.decision-pin[aria-pressed="true"] {
  box-shadow: 0 0 0 3px #fff, 0 0 0 6px #147d9c;
}

.contact-inner,
.case-outro {
  padding-block: 88px 28px;
}

.contact h2,
.case-outro h2 {
  margin-bottom: 0;
  line-height: 1.12;
}

.contact .eyebrow,
.case-outro .eyebrow { margin-bottom: 20px; }

.contact-brief {
  max-width: 54ch;
  margin: 20px auto 0;
  color: rgba(255, 255, 255, .74);
  font-size: 1.125rem;
  line-height: 1.6;
  text-align: center;
}

.contact-channels {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 12px 32px;
  margin-top: 32px;
}

.contact-channels a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  max-width: 100%;
  padding-block: 6px;
  color: #cfc8ff;
  font: 400 var(--text-body, 1.125rem)/1.6 var(--body);
  overflow-wrap: anywhere;
  text-decoration: underline;
  text-decoration-color: #b9aff380;
  text-decoration-thickness: 1px;
  text-underline-offset: 5px;
  transition: color .2s, text-decoration-color .2s;
}

.contact-channels a:hover { color: #fff; text-decoration-color: #55c7ee; }
.case-outro .contact-channels { justify-content: flex-start; }

.contact-footer {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px 32px;
  margin-top: 64px;
  padding-top: 24px;
  border-color: rgba(255, 255, 255, .2);
  color: #c4bfd3;
  font: 400 .875rem/1.6 var(--body);
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
}

.contact-footer p {
  margin: 0;
  font: inherit;
}

.contact-footer .analytics-note { max-width: 62ch; }
.contact-copyright { flex-shrink: 0; }

.analytics-note a {
  color: inherit;
  text-underline-offset: 4px;
}

.vision-roadmap {
  grid-column: 1 / -1;
  margin: 16px 0 0;
  padding: clamp(20px, 4vw, 40px);
  border: 1px solid #e5e1f2;
  border-radius: 22px;
  background: linear-gradient(145deg, #faf9ff, #f3f7ff);
}

.vision-roadmap__track {
  position: relative;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.vision-roadmap__track::before {
  content: "";
  position: absolute;
  top: 25px;
  left: 8%;
  right: 8%;
  height: 2px;
  background: linear-gradient(90deg, #8170e9, #55c7ee);
}

.vision-roadmap__track li {
  position: relative;
  z-index: 1;
  display: grid;
  align-content: start;
  gap: 8px;
  min-width: 0;
  padding: 0 12px;
}

.vision-roadmap__step {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  border: 2px solid #fff;
  border-radius: 50%;
  background: #6553d9;
  color: #fff;
  box-shadow: 0 0 0 1px #c8bef2;
  font-size: .875rem;
  font-weight: 700;
}

.vision-roadmap__track strong {
  margin-top: 6px;
  font-family: var(--heading);
  font-size: 1.25rem;
  line-height: 1.25;
}

.vision-roadmap__track li > span:last-child {
  color: var(--muted);
  font-size: 1rem;
  line-height: 1.5;
}

.vision-roadmap__demo {
  display: grid;
  grid-template-columns: minmax(8rem, .34fr) minmax(0, 1fr);
  gap: 6px 22px;
  margin-top: 30px;
  padding: 20px 22px;
  border-left: 4px solid #55c7ee;
  border-radius: 0 14px 14px 0;
  background: #fff;
}

.vision-roadmap__demo > span {
  grid-row: 1 / 3;
  color: #5140c4;
  font-size: .875rem;
  font-weight: 700;
  text-transform: none;
  letter-spacing: 0;
}

.vision-roadmap__demo strong { font-size: 1.0625rem; line-height: 1.45; }
.vision-roadmap__demo p { margin: 0; color: var(--muted); font-size: 1rem; line-height: 1.5; }
.vision-roadmap figcaption { margin-top: 18px; color: var(--muted); font-size: 1rem; line-height: 1.55; }

.evidence-split { display: grid; gap: 26px; }
.evidence-split > div { padding-left: 20px; border-left: 3px solid #cfc6f3; }
.evidence-split > div:last-child { border-color: #8ed8ef; }
.evidence-split h3 { margin: 0 0 8px; font-size: 1.375rem; line-height: 1.3; }
.evidence-split p { margin: 0; }

.case-outro-brief {
  max-width: 50ch;
  margin: 20px 0 0;
  color: rgba(255, 255, 255, .78);
  font-size: 1.125rem;
  line-height: 1.6;
}

@media (max-width: 700px) {
  .feature-copy .project-scope p { grid-template-columns: 1fr; gap: 4px; }
  .contact-channels { flex-direction: column; gap: 8px; }
  .case-outro .contact-channels { align-items: flex-start; }
  .contact-footer { flex-direction: column; align-items: flex-start; }
  .vision-roadmap__track { grid-template-columns: 1fr; gap: 24px; }
  .vision-roadmap__track::before { top: 24px; bottom: 24px; left: 25px; right: auto; width: 2px; height: auto; }
  .vision-roadmap__track li { grid-template-columns: 52px minmax(0, 1fr); gap: 4px 16px; padding: 0; }
  .vision-roadmap__step { grid-row: 1 / 3; }
  .vision-roadmap__track strong { margin-top: 3px; }
  .vision-roadmap__demo { grid-template-columns: 1fr; }
  .vision-roadmap__demo > span { grid-row: auto; }
}

@media (min-width: 901px) and (max-height: 800px) {
  .case-demo-section { padding-block: 36px; }
  .case-demo-grid { align-items: start; }
  .case-demo-copy { padding-top: 8px; }
}

@media (max-width: 620px) {
  .portfolio-home .hero {
    gap: 12px;
    padding-block: 28px 0;
  }

  .portfolio-home .hero-title {
    font-size: clamp(2.625rem, 10.8vw, 3rem);
    line-height: 1.02;
  }

  .portfolio-home .hero-kicker { margin-bottom: 12px; }
  .portfolio-home .hero-intro { margin-top: 18px; line-height: 1.55; }
  .portfolio-home .hero-actions { margin-top: 22px; }
  .portfolio-home .hero-capabilities { margin-top: 18px; gap: 6px 12px; }
  .portfolio-home .hero-capabilities li:not(:last-child)::after { display: none; }
  .portfolio-home .hero-capabilities li { margin-right: 10px; }
  .portfolio-home .hero-art { max-width: 250px; }
  .portfolio-home .mark-plane { max-height: 172px; }
  .portfolio-home .art-signature,
  .portfolio-home .hero-baseline { display: none; }

  .portfolio-home .work .section-heading {
    margin-bottom: 20px;
    padding-top: 26px;
  }

  .portfolio-home .work { padding-top: 0; }

  /* Flatten only the presentation wrappers so mobile can show identity and
     the launch action before the product screen, with supporting proof below. */
  .feature-card[data-demo] {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "meta"
      "label"
      "title"
      "actions"
      "visual"
      "proof"
      "scope"
      "status"
      "fallback";
  }

  .feature-card[data-demo] .feature-copy,
  .feature-card[data-demo] .feature-intro { display: contents; }
  .feature-card[data-demo] .project-meta { grid-area: meta; margin: 20px 20px 0; }
  .feature-card[data-demo] .project-label { grid-area: label; margin: 14px 20px 6px; }
  .feature-card[data-demo] .feature-intro > h3 { grid-area: title; margin: 0 20px 8px; }
  .feature-card[data-demo] .feature-proof { grid-area: proof; margin: 22px 20px 0; }
  .feature-card[data-demo] .feature-actions { grid-area: actions; margin: 12px 20px 16px; }
  .feature-card[data-demo] .feature-actions > * { min-height: 44px; }
  .feature-card[data-demo] .feature-visual { grid-area: visual; min-height: 0; padding-block: 12px; }
  .feature-card[data-demo] .poster-hint { display: none; }
  .feature-card[data-demo] .project-scope { grid-area: scope; margin: 18px 20px 22px; }
  .feature-card[data-demo] .feature-copy > .demo-status {
    grid-area: status;
    width: auto;
    margin: 0 20px 18px;
    text-align: left;
  }
  .feature-card[data-demo] .demo-fallback { grid-area: fallback; margin: 0 20px 20px; }
  .portfolio-demo::before { display: none; }

  .case-hero {
    padding-block: 26px 30px;
  }

  .case-hero .back-link { margin-bottom: 20px; }
  .case-hero-grid { gap: 14px; }
  .case-hero .eyebrow { margin-bottom: 8px; }
  .case-title { font-size: clamp(3.375rem, 16vw, 4.25rem); }
  .case-deck { font-size: 1.25rem; line-height: 1.4; }
  .case-facts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 20px;
    margin-top: 24px;
    padding-block: 18px;
  }
  .case-facts span { margin-bottom: 4px; font-size: .875rem; }
  .case-facts p { font-size: 1rem; line-height: 1.4; }
  .case-contribution {
    grid-template-columns: minmax(0, 1fr);
    gap: 4px;
    margin-top: 18px;
    padding: 14px 16px;
  }
  .case-contribution__list { grid-template-columns: minmax(0, 1fr); gap: 9px; }
  .case-contribution__list li { font-size: .9375rem; }
  .case-contribution__list strong { display: inline; margin: 0 .35em 0 0; }
  .case-nav { margin-top: 16px; gap: 2px 18px; }

  .portfolio-home .portrait-card { max-width: 260px; margin-inline: auto; }
  .portfolio-home .language-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
  .portfolio-home .language-facts > div:last-child { grid-column: 1 / -1; }
  .portfolio-home .services-visual.service-sculpture { max-width: 280px; }
  .work,
  .about,
  .case-demo-section,
  .case-section,
  .decision-story { padding-block: 56px; }
  .case-hero { padding-block: 26px 30px; }
  .case-outro { padding-block: 64px 28px; }
  .contact-inner { padding-block: 64px 28px; }
  .contact-brief, .case-outro-brief { font-size: 1.0625rem; }
  .contact-footer { margin-top: 48px; }
  .vision-roadmap { padding: 18px; }
}

}
/* SOURCE: case-study.css */
@layer pages {
/* Case layout contract. Text is owned by the semantic roles in system. */
.portfolio-case { --case-column-gap: var(--ds-column); --case-content-gap: var(--space-10); }
.portfolio-case .case-hero { padding-block: var(--space-10) var(--ds-section); }
.portfolio-case .back-link { margin-bottom: var(--space-8); text-transform: none; }
.portfolio-case :is(.case-hero-grid, .sidur-hero__heading, .mistfall-hero__heading) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: var(--ds-column); }
.portfolio-case :is(.case-title, .case-deck) { max-width: none; }
.portfolio-case .case-deck { max-width: 48ch; }
.portfolio-case .case-nav { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-6); margin-top: var(--space-8); padding-block: var(--space-2); }
.portfolio-case .case-nav a { min-height: 44px; }
.portfolio-case .case-facts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-6); margin-top: 0; padding-block: var(--space-6); border-color: var(--line); border-top: 0; }
.portfolio-case .case-facts > div { display: grid; align-content: start; gap: var(--space-2); min-width: 0; }
.portfolio-case .case-contribution { margin-top: var(--space-6); padding: var(--space-6); gap: var(--space-6); }
.portfolio-case .case-contribution__list { gap: var(--space-6); }
.portfolio-case .case-contribution__list strong { display: block; margin-bottom: var(--space-2); }
.portfolio-case :is(.case-chapter, .case-section, .decision-story, .case-demo-section) { padding-block: var(--ds-section); }

/* Every chapter places its label above a title/copy pair. */
.portfolio-case :is(.case-section-grid, .case-chapter-heading) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; column-gap: var(--ds-column); row-gap: 0; }
.portfolio-case :is(.case-section-grid, .case-chapter-heading) > div:first-child { display: contents; }
.portfolio-case :is(.case-section-grid, .case-chapter-heading) > div:first-child > .eyebrow { grid-column: 1 / -1; grid-row: 1; }
.portfolio-case :is(.case-section-grid, .case-chapter-heading) > div:first-child > h2 { grid-column: 1; grid-row: 2; max-width: none; }
.portfolio-case .case-section-copy, .portfolio-case .case-chapter-heading > p { grid-column: 2; grid-row: 2; min-width: 0; max-width: 65ch; }
.portfolio-case :is(.case-journey, .case-demo-grid, .decision-map, .sidur-story-grid, .sidur-walkthrough, .sidur-decision-grid, .sidur-system-gallery, .mistfall-flow, .mistfall-decision-grid, .mistfall-tool-gallery, .story-iteration) { margin-top: var(--case-content-gap); }
.portfolio-case :is(.decision-heading, .case-chapter-heading) { margin-bottom: 0; }
.portfolio-case :is(.sidur-hero-shot, .mistfall-hero-shot) { margin: var(--case-content-gap) 0 0; }
.portfolio-case :is(.sidur-hero-shot, .mistfall-hero-shot) > figcaption { padding-top: var(--space-4); text-align: center; }
.portfolio-case :is(.sidur-hero__intro, .mistfall-hero__intro) { padding: 0; }
.portfolio-case :is(.sidur-hero__label, .mistfall-hero__label) { padding-bottom: 0; }
.portfolio-case figure { min-width: 0; }

/* Repeated comparison and evidence patterns share density and alignment. */
.portfolio-case :is(.case-journey, .sidur-decision-grid, .mistfall-decision-grid) { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6); }
.portfolio-case :is(.journey-stop, .sidur-decision-grid article, .mistfall-decision-grid article) { min-width: 0; min-height: 0; padding: var(--space-6); }
.portfolio-case .journey-stop svg { margin-bottom: var(--space-4); }
.portfolio-case :is(.sidur-decision-grid, .mistfall-decision-grid) article { display: flex; flex-direction: column; align-items: start; }
.portfolio-case :is(.sidur-decision-kicker, .mistfall-decision-kicker) { padding-top: var(--space-6); }
.portfolio-case :is(.sidur-decision-effect, .mistfall-decision-effect) { padding-top: var(--space-2); }
.portfolio-case :is(.sidur-decision-effect, .mistfall-decision-effect) strong { display: block; padding-bottom: var(--space-2); }
.portfolio-case :is(.sidur-system-gallery, .mistfall-tool-gallery, .story-iteration) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-6); align-items: start; }
.portfolio-case :is(.sidur-shot-card, .mistfall-shot-card) { margin: 0; }
.portfolio-case :is(.sidur-shot-card, .mistfall-shot-card) figcaption { padding: var(--space-6); }
.portfolio-case :is(.sidur-shot-card, .mistfall-shot-card, .sidur-walkthrough__panel) figcaption > :is(span, strong) { display: block; }
.portfolio-case :is(.sidur-shot-card, .mistfall-shot-card) figcaption > a { display: inline-flex; margin-top: var(--space-6); }
.portfolio-case :is(.sidur-shot-card, .mistfall-shot-card) figcaption > a { gap: var(--space-2); }
.portfolio-case .mistfall-tool-gallery { align-items: stretch; }
.portfolio-case .mistfall-shot-card { display: flex; flex-direction: column; }
.portfolio-case .mistfall-shot-card figcaption { display: flex; flex-direction: column; align-items: start; flex: 1; }
.portfolio-case .mistfall-shot-card figcaption > a { margin-top: auto; padding-top: var(--space-6); }
.portfolio-case .story-iteration > div { padding-top: var(--space-4); }
.portfolio-case .story-iteration { margin-bottom: 0; }
.portfolio-case .evidence-split { gap: var(--space-6); }
.portfolio-case .evidence-split > div { padding-left: 0; border-left: 0; }
.portfolio-case .story-evidence-details { margin-block: var(--space-6); }
.portfolio-case .story-evidence-details summary { padding-block: var(--space-4); }
.portfolio-case .story-evidence-details ul { padding-left: var(--space-6); }
.portfolio-case .story-evidence-details li + li { margin-top: var(--space-3); }
.portfolio-case .story-evidence-details[open] { padding-bottom: var(--space-6); }
.portfolio-case .case-note { margin-block: var(--space-6); padding: var(--space-6); }
.portfolio-case .case-note > strong { display: block; padding-bottom: var(--space-2); }
.portfolio-case .case-demo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ds-column); align-items: start; }
.portfolio-case .case-demo-copy { padding: 0; }
.portfolio-case .case-demo-copy .case-note:first-child { margin-top: 0; }
.portfolio-case .case-demo-copy > .text-link { margin-top: var(--space-2); }
.portfolio-case .decision-map { gap: 0 var(--space-6); }
.portfolio-case .decision-step { padding-bottom: var(--space-6); }
.portfolio-case .decision-reason { padding-top: var(--space-4); margin-top: var(--space-4); }
.portfolio-case .decision-reason dl { margin: var(--space-6) 0 0; }
.portfolio-case .decision-reason dd { padding-top: var(--space-2); }
.portfolio-case .decision-reason dd + dt { padding-top: var(--space-4); }
.portfolio-case .screen-dialog-head { padding: var(--space-3) var(--space-4); gap: var(--space-3); }
.portfolio-case .screen-dialog > p { padding: var(--space-4); }

/* Subgrid aligns evidence labels without fixed card heights. */
@media (min-width: 901px) {
  .portfolio-case :is(.sidur-decision-grid, .mistfall-decision-grid) { row-gap: 0; }
  .portfolio-case :is(.sidur-decision-grid, .mistfall-decision-grid) article { display: grid; grid-row: span 5; grid-template-rows: subgrid; row-gap: 0; }
  .portfolio-case .decision-stage { display: grid; grid-row: span 8; grid-template-rows: subgrid; row-gap: 0; }
  .portfolio-case .decision-reason { display: grid; grid-row: span 6; grid-template-rows: subgrid; row-gap: 0; }
  .portfolio-case .decision-reason dl { display: grid; grid-row: span 4; grid-template-rows: subgrid; row-gap: 0; }
}
@media (max-width: 900px) {
  .portfolio-case :is(.case-hero-grid, .sidur-hero__heading, .mistfall-hero__heading, .case-section-grid, .case-chapter-heading, .case-demo-grid) { grid-template-columns: minmax(0, 1fr); }
  .portfolio-case .case-section-copy, .portfolio-case .case-chapter-heading > p { grid-column: 1; grid-row: 3; padding-top: var(--space-6); }
  .portfolio-case .case-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .portfolio-case .case-contribution { grid-template-columns: minmax(0, 1fr); }
  .portfolio-case :is(.sidur-decision-grid, .mistfall-decision-grid) { grid-template-columns: minmax(0, 1fr); }
  .portfolio-case .decision-map { grid-template-columns: minmax(0, 1fr); gap: var(--space-12); }
  .portfolio-case .decision-stage { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 var(--space-6); }
  .portfolio-case .decision-step { grid-column: 1 / -1; }
  .portfolio-case .decision-stage .decision-step::after { display: none; }
  .portfolio-case .decision-reason { margin-top: 0; }
}
@media (max-width: 700px) { .portfolio-case :is(.case-journey, .sidur-system-gallery, .mistfall-tool-gallery, .story-iteration) { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 620px) {
  .portfolio-case { --case-content-gap: var(--space-8); }
  .portfolio-case .case-hero { padding-top: var(--space-8); }
  .portfolio-case :is(.case-facts, .case-contribution__list, .decision-stage) { grid-template-columns: minmax(0, 1fr); }
  .portfolio-case .decision-reason { margin-top: var(--space-4); }
}

}
/* SOURCE: story.css */
@layer legacy {
/* Shared reading and interaction roles for the authored portfolio. */
:root {
  --story-rule: #e4e0ef;
  --story-accent: #5942c8;
}
html { scroll-padding-top: 7rem; }
[id] { scroll-margin-top: 0; }
body { overflow-wrap: break-word; }
:where(a, button, summary):focus-visible {
  outline: 3px solid #5140b8;
  outline-offset: 5px;
}
.portfolio-case .case-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 24px;
  padding-block: 16px;
  border-block: 1px solid var(--story-rule);
}
.portfolio-case .case-nav a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  color: #5542b3;
  font-size: 1rem;
  font-weight: 500;
  text-underline-offset: 5px;
}
.portfolio-case :is(.case-section-copy, .case-deck) strong { color: var(--ink); }
.portfolio-case .case-section-copy { max-inline-size: 65ch; }
.portfolio-case :is(.case-facts, .case-section-grid, .decision-heading) { min-width: 0; }
.portfolio-case :is(.case-facts p, .case-note, figcaption) { text-wrap: pretty; }
.portfolio-case .back-link { min-height: 44px; display: inline-flex; align-items: center; }
.story-browser-bar {
  display: flex;
  align-items: center;
  gap: 7px;
  min-height: 38px;
  padding: 8px 16px;
  border: 1px solid #dedbe9;
  border-bottom: 0;
  border-radius: 14px 14px 0 0;
  background: #f2f0f6;
}
.story-browser-bar i { width: 7px; height: 7px; border: 1px solid #a19aaf; border-radius: 50%; }
.story-browser-bar span { margin-inline: auto; color: #625b71; font: 400 .8125rem/1.4 var(--body); }
.story-browser-bar + a { border-radius: 0 0 14px 14px; }
.story-iteration {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 32px;
  margin-block: 36px;
}
.story-iteration > div { padding-top: 20px; border-top: 2px solid #c8c0dc; }
.story-iteration > div:last-child { border-color: #6450ca; }
.story-iteration h3 { font: 600 1.375rem/1.3 var(--heading); margin: 10px 0; }
.story-iteration p { max-width: 52ch; color: var(--muted); line-height: 1.65; margin: 0; }
.story-iteration .eyebrow { color: #5c49bb; font-size: .875rem; }
.story-evidence-details { margin-top: 28px; border-block: 1px solid var(--story-rule); }
.story-evidence-details summary { padding-block: 18px; font-weight: 600; cursor: pointer; color: var(--ink); }
.story-evidence-details[open] { padding-bottom: 22px; }
.story-evidence-details ul { padding-left: 22px; color: var(--muted); line-height: 1.7; }
.story-evidence-details li + li { margin-top: 10px; }
.site-footer-links { display: flex; gap: 12px 24px; flex-wrap: wrap; }
.site-footer-links a { display: inline-flex; min-height: 44px; align-items: center; }
@media (max-width: 620px) {
  html { scroll-padding-top: 5rem; }
  .portfolio-case .case-nav { gap: 0 18px; padding-block: 10px; }
  .story-iteration { grid-template-columns: minmax(0,1fr); gap: 24px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
  html { scroll-behavior: auto; }
  .story-iteration *, .story-browser-bar * { animation: none !important; transition: none !important; }
}

}
/* SOURCE: sidur-case.css */
@layer pages {
/* Sidur-specific capture surfaces and walkthrough states. */
.sidur-case { --sidur-violet: var(--ds-accent); --sidur-violet-deep: var(--ds-accent-strong); --sidur-violet-soft: var(--ds-soft); --sidur-cyan: #43c6e8; --sidur-cyan-soft: #eafaff; --sidur-window-line: var(--line); --sidur-shadow: 0 16px 48px rgba(44,38,96,.1); }
.sidur-window { overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: #fff; box-shadow: var(--sidur-shadow); }
.sidur-window__bar { min-height: 48px; padding: var(--space-3) var(--space-4); display: grid; grid-template-columns: minmax(0,1fr) auto; gap: var(--space-4); align-items: center; border-bottom: 1px solid var(--line); background: var(--ds-soft); }
.sidur-window__title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidur-window__status { padding: var(--space-1) var(--space-2); border-radius: 8px; background: #fff; }
.sidur-shot-link { position: relative; display: block; overflow: hidden; color: inherit; text-decoration: none; }
.sidur-shot-link img { width: 100%; height: auto; display: block; transition: transform .25s ease; }
.sidur-shot-link:hover img { transform: scale(1.006); }
.sidur-shot-link__action { position: absolute; right: var(--space-4); bottom: var(--space-4); display: inline-flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); border: 1px solid var(--line); border-radius: 12px; background: rgba(255,255,255,.97); box-shadow: 0 8px 24px rgba(20,18,48,.12); }
.sidur-overview { background: #fff; }
.sidur-story-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); border-block: 1px solid var(--line); }
.sidur-story-grid article { min-width: 0; padding: var(--space-6); }
.sidur-story-grid article + article { border-left: 1px solid var(--line); }
.sidur-role-note { margin-top: var(--space-6); padding: var(--ds-card); display: grid; grid-template-columns: minmax(0,.6fr) minmax(0,1.4fr); gap: var(--ds-column); align-items: start; border-radius: 20px; background: linear-gradient(135deg,var(--ds-soft),var(--sidur-cyan-soft)); }
.sidur-workflow { border-top: 1px solid var(--line); background: var(--ds-soft); }
.sidur-walkthrough { padding: var(--space-6); border: 1px solid var(--line); border-radius: 24px; background: #fff; }
.sidur-walkthrough__steps { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: var(--space-2); padding: var(--space-1); border-radius: 18px; background: var(--ds-soft); }
.sidur-walkthrough__steps[hidden], .sidur-walkthrough__panel[hidden] { display: none; }
.sidur-walkthrough__steps button { position: relative; width: 100%; min-width: 0; display: grid; grid-template-columns: auto minmax(0,1fr); align-content: start; justify-content: start; gap: var(--space-1) var(--space-3); padding: var(--space-4); border: 1px solid transparent; border-radius: 14px; background: transparent; cursor: pointer; text-align: left; }
.sidur-walkthrough__steps button > span { display: grid; grid-row: span 2; width: 32px; height: 32px; place-items: center; border: 1px solid var(--line); border-radius: 8px; }
.sidur-walkthrough__steps small { display: block; grid-column: 2; }
.sidur-walkthrough__steps button:hover { background: #fff; }
.sidur-walkthrough__steps button[aria-pressed="true"] { background: #fff; border-color: var(--ds-accent); box-shadow: 0 4px 14px rgba(48,42,89,.08); }
.sidur-walkthrough__stage { margin-top: var(--space-6); }
.sidur-walkthrough__panel { margin: 0; display: grid; grid-template-columns: minmax(0,1.6fr) minmax(240px,.8fr); gap: var(--space-6); align-items: start; }
.sidur-walkthrough__panel + .sidur-walkthrough__panel { margin-top: var(--space-10); padding-top: var(--space-10); border-top: 1px solid var(--line); }
.sidur-walkthrough.is-enhanced .sidur-walkthrough__panel { margin-top: 0; padding-top: 0; border-top: 0; }
.sidur-decision-grid article { border: 1px solid var(--line); border-radius: 20px; background: linear-gradient(155deg,#fff 38%,var(--ds-soft)); }
.sidur-decision-grid article:nth-child(2) { background: linear-gradient(155deg,#fff 38%,var(--sidur-cyan-soft)); }
.sidur-decision-number { display: grid; width: 40px; height: 40px; place-items: center; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.sidur-system { background: #f7f8fb; }
.sidur-shot-card { overflow: hidden; border: 1px solid var(--line); border-radius: 20px; background: #fff; box-shadow: 0 12px 36px rgba(45,40,91,.07); }
.sidur-shot-card .sidur-shot-link { border-bottom: 1px solid var(--line); }
.sidur-shot-card--auth .sidur-shot-link { display: flex; justify-content: center; aspect-ratio: 3 / 2; padding: var(--space-6); background: linear-gradient(145deg,var(--ds-soft),var(--sidur-cyan-soft)); }
.sidur-shot-card--auth img { width: 100%; height: 100%; min-height: 0; object-fit: contain; border-radius: 12px; }
.sidur-system-note { margin-top: var(--space-6); padding: var(--space-6); border-left: 3px solid var(--sidur-cyan); border-radius: 0 14px 14px 0; background: var(--sidur-cyan-soft); }
.sidur-reflection { background: linear-gradient(180deg,#fff,var(--ds-soft)); }
.sidur-next-project { display: inline-flex; gap: var(--space-3); margin-top: var(--space-8); }
@media (max-width:980px) { .sidur-walkthrough__panel { grid-template-columns: minmax(0,1fr); } }
@media (max-width:900px) {
  .sidur-story-grid { grid-template-columns: minmax(0,1fr); }
  .sidur-story-grid article + article { border-top: 1px solid var(--line); border-left: 0; }
}
@media (max-width:720px) { .sidur-walkthrough__steps { grid-template-columns: minmax(0,1fr); } }
@media (max-width:620px) {
  .sidur-window__bar { grid-template-columns: minmax(0,1fr); }
  .sidur-window__status { display: none; }
  .sidur-role-note { grid-template-columns: minmax(0,1fr); }
  .sidur-walkthrough { padding: var(--space-3); border-radius: 18px; }
  .sidur-shot-link__action { right: var(--space-2); bottom: var(--space-2); }
}
@media (prefers-reduced-motion:reduce) { .sidur-shot-link img { transition: none; } }

}
/* SOURCE: design-system.css */
@layer system {
/* Authoritative portfolio roles. Page files arrange these roles; apps stay isolated. */
:root {
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;
  --space-20: 80px;
  --space-24: 96px;
  --ds-shell: 1120px;
  --ds-gutter: 32px;
  --ds-section: var(--space-20);
  --ds-column: var(--space-12);
  --ds-card: var(--space-12);
  --ds-body: 1.125rem;
  --ds-lead: 1.25rem;
  --ds-page: clamp(2.25rem, 1.5rem + 2.5vw, 3.5rem);
  --ds-section-title: clamp(1.875rem, 1.375rem + 1.7vw, 2.5rem);
  --ds-feature-title: clamp(2rem, 1.5rem + 1.7vw, 2.75rem);
  --ds-card-title: 1.375rem;
  --heading: Figtree, "Segoe UI", Arial, sans-serif;
  --body: Inter, "Segoe UI", Arial, sans-serif;
  --ink: #191923;
  --muted: #626272;
  --line: #e5e2ee;
  --ds-accent: #6552db;
  --ds-accent-strong: #4d3bb4;
  --ds-soft: #f6f4fc;
  --ds-dark: #24222e;
  --text-body: var(--ds-body);
  --text-support: 1rem;
  --text-small: .875rem;
  --shell: min(var(--ds-shell), calc(100% - 2 * var(--ds-gutter)));
}

body {
  --ink: #191923;
  --muted: #626272;
  --line: #e5e2ee;
  font-family: var(--body);
  font-size: var(--ds-body);
  line-height: 1.65;
}
body :is(p, li, dt, dd, button, summary, input, select, textarea) { font-family: var(--body); }
body :is(h1, h2, h3, h4, h5, h6) { font-family: var(--heading); }
body strong { font-weight: 600; }
body :is(.section-shell, .personal-shell, .ds-shell) { width: var(--shell); margin-inline: auto; }
body .site-header,
body .site-header.is-scrolled {
  background: #fff;
  min-height: 78px;
  height: auto;
  padding: 12px max(var(--ds-gutter), calc((100% - var(--ds-shell)) / 2));
  gap: var(--space-2) var(--space-6);
  border-bottom-color: var(--line);
}
body .site-header .site-nav a { font: 500 1rem/1.5 var(--body); letter-spacing: 0; }
body .site-header .brand-name { font: 700 1rem/1.5 var(--heading); }

/* A role is explicit, so a page cannot silently invent another reading scale. */
body :is(.ds-page-title, .ds-section-title, .ds-feature-title, .ds-card-title) { color: var(--ink); }
body :is(.ds-page-title, :where(.case-title, .error-copy h1)) {
  margin: 0;
  font: 700 var(--ds-page)/1.08 var(--heading);
  letter-spacing: -.035em;
  text-wrap: balance;
}
body :is(.ds-section-title, :where(.case-section h2, .case-demo-copy h2, .decision-heading h2,
  .services-heading h2, .about-copy h2, .process-carousel__heading h2, .contact h2, .case-outro h2)) {
  margin: 0;
  font: 700 var(--ds-section-title)/1.12 var(--heading);
  letter-spacing: -.035em;
  text-wrap: balance;
}
body :is(.ds-feature-title, :where(.process-carousel__copy h3)) {
  margin: 0;
  font: 700 var(--ds-feature-title)/1.12 var(--heading);
  letter-spacing: -.035em;
  text-wrap: balance;
}
body :is(.ds-card-title, :where(.service-card h3, .journey-stop h3, .decision-reason h3, .evidence-split h3)) {
  margin: 0;
  font: 700 var(--ds-card-title)/1.3 var(--heading);
  letter-spacing: -.02em;
  text-wrap: pretty;
}
body :is(.ds-eyebrow, .eyebrow, .project-label, .personal-kicker, .error-code) {
  margin: 0 0 var(--space-4);
  color: var(--ds-accent);
  font: 600 .875rem/1.5 var(--body);
  letter-spacing: 0;
  text-transform: none;
}
body :is(.ds-body, :where(.case-section-copy p, .decision-heading > p, .about-copy > p:not(.eyebrow))) {
  margin: 0;
  color: var(--muted);
  font: 400 var(--ds-body)/1.65 var(--body);
  letter-spacing: 0;
  text-wrap: pretty;
}
body :is(.ds-support, :where(.service-card > p, .journey-stop > p, .decision-reason > p, .decision-reason dd)) {
  margin: 0;
  color: var(--muted);
  font: 400 1rem/1.6 var(--body);
  letter-spacing: 0;
  text-wrap: pretty;
}
body :is(.ds-lead, :where(.case-deck, .personal-lead, .about-copy .about-lead)) {
  margin: 0;
  color: var(--muted);
  font: 400 var(--ds-lead)/1.6 var(--body);
  letter-spacing: 0;
  text-wrap: pretty;
}
body :is(.ds-meta, .ds-caption, .project-meta, .demo-status, .demo-caption, .portrait-card figcaption,
  .personal-portrait figcaption, .contact-footer, .personal-footer, .error-footer) {
  font: 400 .875rem/1.5 var(--body);
  letter-spacing: 0;
  text-transform: none;
}
body :is(.ds-meta, .ds-caption) { margin: 0; color: var(--muted); }
body .project-meta { opacity: 1; color: var(--muted); }
body .project-meta > * { font: inherit; }
body .story-project__screen > .ds-caption { color: #fff; }
body :is(.ds-page-title, .ds-section-title, .ds-feature-title) + :is(.ds-body, .ds-lead, .ds-support) { margin-top: var(--space-6); }
body .ds-meta + :is(.ds-card-title, .ds-feature-title) { margin-top: var(--space-4); }
body .ds-card-title + :is(.ds-body, .ds-support, .ds-lead) { margin-top: var(--space-3); }
body :is(.ds-body, .ds-lead, .ds-support) + :is(.ds-body, .ds-lead, .ds-support) { margin-top: var(--space-4); }
body :is(.ds-body, .ds-lead, .ds-support) + .ds-caption { margin-top: var(--space-6); }
body .ds-section-intro { margin-bottom: var(--space-10); }
body .ds-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); margin-top: var(--space-8); }
body .ds-actions + :is(.ds-caption, .ds-meta) { margin-top: var(--space-4); }
/* A layout stack owns its gaps; do not also apply prose sibling margins. */
body .ds-stack > [class] { margin-block: 0; }
body .decision-pin { color: #fff; }
body :is(.ds-caption, .ds-meta) .ds-link { font: inherit; }

/* Equivalent actions look and size alike on every route. */
body :is(.button-link, .demo-launch, .personal-button, .ds-control,
  .hero-actions .text-link, .feature-actions .text-link) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  width: fit-content;
  max-width: 100%;
  min-height: 48px;
  padding: 12px 16px;
  border: 1px solid transparent;
  border-radius: 14px;
  font: 600 1rem/1.4 var(--body);
  letter-spacing: 0;
  text-transform: none;
  text-decoration: none;
  white-space: normal;
  cursor: pointer;
}
body :is(.button-primary, .personal-button) { background: #6552db; color: #fff; border-color: #6552db; }
body :is(.button-primary, .personal-button):hover { background: #4d3bb4; border-color: #4d3bb4; }
body :is(.button-primary, .personal-button) > span { color: inherit; }
body :is(.hero-actions .text-link, .feature-actions .text-link, .demo-launch:not(.button-primary), .button-secondary) {
  background: #fff;
  color: var(--ds-accent-strong);
  border-color: #d7d0f1;
}
body :is(.hero-actions .text-link, .feature-actions .text-link, .demo-launch:not(.button-primary), .button-secondary):hover { background: var(--ds-soft); border-color: var(--ds-accent); }
body :is(.ds-link, .personal-text-link, .back-link, .case-nav a) { font: 500 1rem/1.5 var(--body); text-underline-offset: 5px; letter-spacing: 0; }
body .ds-link { color: var(--ds-accent-strong); text-decoration: underline; }
body :is(a, button, summary):focus-visible { outline: 3px solid #382994; outline-offset: 4px; }
body :is(.contact, .case-outro, .personal-next, .personal-contact main, .personal-contact footer) :is(a, button):focus-visible { outline-color: #cfc8ff; }

/* Restored homepage chapters use the same rhythm as the cases. */
body.portfolio-home .hero-intro { margin-top: var(--space-8); }
body.portfolio-home :is(.work, .services, .process-carousel, .about) { padding-block: var(--ds-section); }
body.portfolio-home .work .section-heading { padding-top: 0; border-top: 0; }
body.portfolio-home .story-project__copy .demo-status { width: auto; margin-inline: 0; text-align: left; }
body.portfolio-home .services { column-gap: var(--ds-column); }
body.portfolio-home .services-heading { padding: 0; }
body.portfolio-home .services-heading h2 + p { margin-top: var(--space-6); }
body.portfolio-home .services-visual { margin-top: var(--space-8); }
body.portfolio-home .service-card { padding-block: var(--space-8); gap: 0; }
body.portfolio-home .service-card:first-child { padding-top: 0; }
body.portfolio-home .service-card h3 { margin: var(--space-4) 0 var(--space-3); }
body.portfolio-home .service-card > p { margin: 0; }
body.portfolio-home .service-more { margin-top: var(--space-6); padding-top: 0; }
body.portfolio-home .service-more summary { font: 500 1rem/1.5 var(--body); }
body.portfolio-home .about-grid { gap: var(--ds-column); align-items: start; }
body.portfolio-home .about-copy h2 { margin-bottom: var(--space-6); }
body.portfolio-home .about-copy p + p { margin-top: var(--space-4); }
body.portfolio-home .language-facts { margin-top: var(--space-10); padding-top: var(--space-8); }
body.portfolio-home .fact-label { font: 600 .875rem/1.5 var(--body); }
body.portfolio-home .facts-grid p { font: 400 1rem/1.6 var(--body); margin-top: var(--space-2); }
body .process-carousel__heading { gap: var(--ds-column); margin-bottom: var(--space-10); }
body .process-carousel__heading .eyebrow { margin-top: 0; }
body .process-carousel__heading > p:last-child { margin: 0; font: 400 var(--ds-body)/1.65 var(--body); }
body .process-carousel__panels { padding: var(--ds-card); }
body .process-carousel__copy h3 { max-width: 18ch; margin-bottom: 0; }
body .process-carousel__stage-number { margin-bottom: var(--space-4); font: 600 .875rem/1.5 var(--body); }
body .process-carousel__copy .process-carousel__output { margin-top: var(--space-6); padding: var(--space-4); font: 400 1rem/1.6 var(--body); }
body .process-carousel__output span { margin-bottom: var(--space-2); font: 600 1rem/1.5 var(--body); }
body .process-carousel__control-title { font-family: var(--body); }

/* Direct contact and footer treatment are shared, not separately scaled. */
body :is(.contact, .case-outro, .personal-next) { --ink: #fff; background: var(--ds-dark); }
body .contact-inner,
body .case-outro { padding-block: var(--ds-section) var(--space-8); }
body :is(.contact, .case-outro, .personal-next) :is(.eyebrow, .ds-eyebrow) { color: #cfc8ff; }
body.personal-contact main :is(.eyebrow, .ds-eyebrow) { color: #cfc8ff; }
body :is(.contact, .case-outro, .personal-next) :is(.ds-body, .ds-lead, .ds-support, .ds-caption),
body.personal-contact main :is(.ds-body, .ds-lead, .ds-support, .ds-caption) { color: #d7d3df; }
body :is(.contact, .case-outro, .personal-next) .ds-link,
body.personal-contact main .ds-link { color: #cfc8ff; }
body .contact-page-channel-list a { text-decoration: none; }
body .personal-footer :is(.ds-meta, .ds-caption) { color: #d7d3df; }
body .personal-footer .ds-link { color: #cfc8ff; }
body :is(.contact, .case-outro) h2 { max-width: 25ch; }
body .contact h2 { margin-inline: auto; }
body :is(.contact-brief, .case-outro-brief) { margin-top: var(--space-6); font: 400 var(--ds-body)/1.65 var(--body); color: #d7d3df; }
body .contact-channels { gap: var(--space-3) var(--space-8); margin-top: var(--space-8); }
body .contact-channels a { font: 400 var(--ds-body)/1.65 var(--body); }
body .contact-footer { margin-top: var(--space-12); padding-top: var(--space-6); }
body .contact-footer p { font: inherit; }

/* A 404 is a normal page, not a separate display-type experiment. */
body.error-page .error-main { padding-block: var(--ds-section); align-items: start; }
body.error-page .error-copy { max-width: 65ch; }
body.error-page .error-copy h1 { max-width: none; }
body.error-page .error-copy > p:not(.error-code) { margin-top: var(--space-6); font: 400 var(--ds-body)/1.65 var(--body); }
body.error-page .error-actions { margin-top: var(--space-8); gap: var(--space-3) var(--space-6); }
body.error-page .error-actions .text-link { font: 500 1rem/1.5 var(--body); letter-spacing: 0; text-transform: none; }
body.error-page .error-footer { padding-block: var(--space-6); }

@media (max-width: 900px) {
  :root { --ds-section: var(--space-16); --ds-column: var(--space-8); --ds-card: var(--space-8); }
  body .process-carousel__heading { row-gap: 0; }
  body .process-carousel__heading > p:last-child { margin-top: var(--space-6); }
}
@media (max-width: 760px) {
  body .site-header, body .site-header.is-scrolled { min-height: 64px; padding-block: 10px; }
}
@media (max-width: 620px) {
  :root { --ds-gutter: 20px; --ds-section: var(--space-12); --ds-column: var(--space-6); --ds-card: var(--space-6); }
  body .ds-section-intro, body .process-carousel__heading { margin-bottom: var(--space-8); }
  body .contact-channels { flex-direction: column; align-items: inherit; gap: var(--space-2); }
  body .contact-footer { flex-direction: column; gap: var(--space-3); }
  body .ds-actions > * { max-width: 100%; }
}
@media (max-width: 360px) { :root { --ds-gutter: 16px; } }

}
/* SOURCE: navigation.css */
@layer navigation {
/* Shared site navigation. Load after the legacy site styles. */
[data-header] .brand,
[data-header] [data-nav-toggle],
[data-header] [data-site-navigation] a {
  min-height: 44px;
}

[data-header] .brand {
  flex: 0 1 auto;
}

[data-header] [data-nav-toggle] {
  display: none;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 44px;
  margin: 0;
  padding: 8px 12px;
  border: 1px solid currentColor;
  border-radius: 999px;
  background: transparent;
  color: inherit;
  font: 600 1rem/1 Inter, Arial, sans-serif;
  cursor: pointer;
}

[data-header] .site-nav[data-site-navigation] {
  display: block;
}

[data-header] [data-site-navigation-list] {
  display: flex;
  align-items: center;
  gap: 28px;
  margin: 0;
  padding: 0;
  list-style: none;
}

/* These declarations intentionally win over old nth-child mobile rules. */
[data-header] .site-nav[data-site-navigation] a,
[data-header] .site-nav[data-site-navigation] a:nth-child(n) {
  display: inline-flex !important;
  align-items: center;
  padding: 4px 2px;
}

[data-header] a[aria-current="page"] {
  font-weight: 700;
  text-decoration-thickness: 2px;
  text-underline-offset: 6px;
}

[data-header] [data-site-navigation] a[aria-current="page"]::after {
  transform: scaleX(1);
}

[data-header] .brand:focus-visible,
[data-header] [data-nav-toggle]:focus-visible,
[data-header] [data-site-navigation] a:focus-visible {
  outline: 3px solid #6553d9;
  outline-offset: 3px;
}

[data-nav-toggle-icon] {
  position: relative;
  width: 18px;
  height: 14px;
  flex: 0 0 auto;
}

[data-nav-toggle-icon]::before,
[data-nav-toggle-icon]::after,
[data-nav-toggle-icon] span {
  position: absolute;
  left: 0;
  width: 18px;
  height: 2px;
  background: currentColor;
  content: "";
}

[data-nav-toggle-icon]::before { top: 0; }
[data-nav-toggle-icon] span { top: 6px; }
[data-nav-toggle-icon]::after { top: 12px; }

@media (max-width: 760px) {
  [data-header] {
    flex-wrap: wrap;
    gap: 8px 16px;
  }

  [data-header] .brand { width: auto; min-width: 0; }
  [data-header] .brand-name { display: inline; font-size: 1rem; }

  [data-header] .site-nav[data-site-navigation] {
    width: 100%;
  }

  [data-header] [data-site-navigation-list] {
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 4px 16px;
  }

  [data-header][data-nav-enhanced="true"] [data-nav-toggle] {
    display: inline-flex;
  }

  [data-header][data-nav-enhanced="true"] .site-nav[data-site-navigation][hidden] {
    display: none;
  }

  [data-header][data-nav-enhanced="true"] [data-site-navigation-list] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2px;
    padding-block: 8px 4px;
    border-top: 1px solid rgba(10, 25, 48, .18);
  }

  [data-header][data-nav-enhanced="true"] .site-nav[data-site-navigation] a {
    width: 100%;
    padding-inline: 8px;
  }
}

@media (forced-colors: active) {
  [data-header] [data-nav-toggle],
  [data-header] a[aria-current="page"] {
    border-color: currentColor;
  }

  [data-header] a[aria-current="page"] {
    text-decoration: underline;
  }
}

}