/* Hallmark · macrostructure: Workbench · genre: editorial · design-system: DESIGN_SYSTEM.md
 * Existing hero, passport, type, palette, outer rails and footer retained.
 * Pre-emit critique: Philosophy 4 · Hierarchy 4 · Execution 4 · Specificity 5 · Restraint 4 · Variety 4.
 * Studied: presentation rhythm only; existing portfolio theme, hero and navigation locked.
 */
html[data-case-route],html[data-case-route] body{overflow-x:clip}
html[data-case-route] body{padding-bottom:0}
.case-page .case-toc[hidden]{display:none!important}
.case-page .case-toc a[aria-current="location"]{color:var(--color-ink);box-shadow:inset 0 -2px var(--color-accent)}
.case-page .case-toc a{min-height:44px;box-sizing:border-box;display:grid;align-items:center}
.case-page .case-toc a:hover{color:var(--color-ink)!important}
.case-chapter{padding:var(--space-3xl) var(--space-lg) var(--space-4xl)}
.case-chapter .case-chapter-heading{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-lg);max-width:800px;margin-bottom:var(--space-2xl)}
.case-chapter .case-chapter-heading p{max-width:680px;padding:0;font-size:var(--text-lead);line-height:1.55;text-wrap:balance}
.case-page .case-chapter h2{overflow-wrap:anywhere;min-width:0}
.case-blocks{gap:var(--space-3xl)}
.case-copy,.case-copy-body,.case-narrative-group,.case-reading-block,.case-feature-copy,.case-feature-media,.case-gallery{display:grid;gap:var(--space-lg);min-width:0}
.case-copy{gap:var(--space-md)}
.case-copy-body{gap:var(--space-md)}
.case-reading-block{max-width:760px}
.case-narrative-group,.case-feature-copy{gap:var(--space-xl)}

/* A cohesive introduction: moving product preview and one connected narrative. */
.case-context-layout{display:grid;grid-template-columns:minmax(0,.88fr) minmax(0,1.12fr);grid-template-areas:'overview story';gap:var(--space-xl) var(--space-3xl);align-items:start;margin-bottom:var(--space-3xl)}
.case-context-overview{grid-area:overview;display:grid;gap:var(--space-xl);align-content:start;min-width:0}
.case-context-overview>.case-chapter-heading{margin:0}
.case-context-story{grid-area:story;display:grid;gap:var(--space-xl);min-width:0}
.case-context-story .case-copy h3{font-size:30px}
.case-context-story .case-copy+.case-copy,.case-context-story>.case-copy{border-top:1px solid var(--color-rule);padding-top:var(--space-xl)}
.case-context-preview{min-width:0;align-self:start}
.case-context-preview .case-media{gap:var(--space-sm)}

/* Explain a decision and keep its evidence beside it, not a separate column of labels. */
.case-feature{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.6fr);gap:var(--space-2xl);align-items:start;padding-top:var(--space-2xl);border-top:1px solid var(--color-rule)}
.case-feature:first-child{padding-top:0;border-top:0}
.case-feature-copy{position:sticky;top:calc(var(--case-header-height) + var(--space-lg));align-self:start}
.case-feature--reading{grid-template-columns:minmax(0,1fr)}
.case-feature--reading .case-feature-copy{position:static;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3xl)}
.case-page .case-feature-copy h3{font-size:32px;line-height:1.2}
.case-page .case-feature-copy p{font-size:17px;line-height:1.6}
.case-feature-media{gap:var(--space-lg)}
.case-feature-media .case-media{gap:var(--space-sm)}
.case-feature .case-media-pair{gap:var(--space-md)}

/* Six connected stages; an actual sequence rather than a row of feature cards. */
.case-process{gap:var(--space-xl)}
.case-process .case-process-heading{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-md);max-width:760px}
.case-process .case-process-heading h3{max-width:none}
.case-process ol{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;counter-reset:process}
.case-process li{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-md);padding:var(--space-lg) var(--space-md) 0 0;border-top:1px solid var(--color-rule);align-content:start}
.case-process li::before{font-size:36px;line-height:1;grid-row:auto;color:var(--color-ink)}
.case-process li::after{content:'';position:absolute;top:-4px;left:0;width:7px;height:7px;background:var(--color-accent);border-radius:50%}
.case-process h4{font-size:24px;line-height:1.25;min-height:2.5em;overflow-wrap:anywhere}
.case-process li p{grid-column:auto;font-size:15px;line-height:1.55}

/* Reuse the career row and native right-hand panel from the homepage. */
.case-analysis-trigger.career-row{grid-template-columns:minmax(0,1fr) auto 40px;border-top:1px solid var(--color-rule);padding:var(--space-lg) var(--space-xl);min-height:113px;gap:var(--space-lg)}
.case-analysis-trigger .career-company{font-family:var(--font-display);font-size:35px;font-weight:600;white-space:nowrap}
.case-analysis-trigger .career-meta{font-size:var(--text-small);white-space:nowrap}
.case-analysis-trigger:focus-visible{outline-color:var(--color-focus)}
.case-analysis-trigger:is(:hover,:focus-visible),.case-analysis-trigger:is(:hover,:focus-visible) .career-meta{color:var(--color-ink)}
.case-analysis-trigger:is(:hover,:focus-visible) .career-plus{color:var(--color-ink)}
.case-analysis-trigger:active .career-plus{transform:scale(.96)}
.case-analysis-trigger:disabled{opacity:.55;cursor:not-allowed}
.case-analysis-dialog :focus-visible{outline-color:var(--color-focus)}
.case-analysis-dialog .career-dialog-close:active{transform:scale(.96)}
.case-analysis-dialog .career-dialog-close:disabled{opacity:.55;cursor:not-allowed}
.case-analysis-dialog .career-dialog-scroll{scrollbar-gutter:stable}
.case-analysis-dialog .career-dialog-intro{font-size:17px;line-height:1.6}
.case-analysis-dialog .career-dialog-close{width:44px;height:44px}
.case-analysis-dialog .career-dialog-close{color:var(--color-ink)}
.case-analysis-dialog .career-scrollbar-thumb{box-sizing:border-box;border:1px solid var(--color-ink)}
.case-analysis-dialog .career-dialog-section{padding-top:var(--space-lg);border-top:1px solid var(--color-rule);margin-top:var(--space-xl)}
.case-analysis-dialog .career-dialog-section h3{font-size:28px;line-height:1.2}
.case-analysis-dialog h2{text-transform:none}

/* All outcome statements form one composed spread, including their qualifiers. */
.case-outcome-composition{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.8fr);gap:var(--space-3xl);padding:var(--space-xl);border-radius:var(--radius-panel);background:var(--color-soft);color:var(--color-ink);margin-bottom:var(--space-2xl)}
.case-outcome-story{display:grid;gap:var(--space-lg);align-content:start;min-width:0}
.case-outcome-story .case-chapter-heading{margin:0;gap:var(--space-lg)}
.case-outcome-composition .case-results{grid-template-columns:minmax(0,1fr);gap:0;border-left:1px solid var(--color-rule);padding-left:var(--space-xl);align-content:start}
.case-outcome-composition .case-results>div{padding:0 0 var(--space-xl);gap:var(--space-sm)}
.case-outcome-composition .case-results>div+div{border-top:1px solid var(--color-rule);padding-top:var(--space-xl)}
.case-outcome-composition .case-results strong{font-size:clamp(44px,4.2vw,64px);font-variant-numeric:tabular-nums}
.case-outcome-composition .case-results p{font-size:16px}
.case-page .case-more{padding-block:var(--space-2xl)}
/* The inherited ticker has no visible content in the static shell but reserved 228px. */
html[data-case-route] footer>[data-framer-name="Ticker"]{display:none!important}

@media(max-width:1199.98px){
  .case-chapter{padding-block:var(--space-2xl) var(--space-3xl)}
  .case-context-layout{gap:var(--space-lg) var(--space-xl);grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}
  .case-feature{gap:var(--space-xl);grid-template-columns:minmax(0,.85fr) minmax(0,1.5fr)}
  .case-process ol{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-xl) 0}
  .case-process h4{min-height:0}
  .case-outcome-composition{gap:var(--space-xl);padding:var(--space-lg)}
  .case-outcome-composition .case-results{padding-left:var(--space-lg)}
}
@media(max-width:809.98px){
  .case-chapter{padding:var(--space-xl) var(--space-md) var(--space-2xl)}
  .case-chapter .case-chapter-heading{gap:var(--space-md);margin-bottom:var(--space-xl)}
  .case-chapter .case-chapter-heading p{font-size:18px;line-height:1.5}
  .case-blocks{gap:var(--space-2xl)}
  .case-context-layout{grid-template-columns:minmax(0,1fr);grid-template-areas:'overview' 'story';gap:var(--space-xl);margin-bottom:var(--space-2xl)}
  .case-context-story .case-copy h3{font-size:28px}
  .case-context-story,.case-narrative-group{gap:var(--space-lg)}
  .case-context-story .case-copy+.case-copy,.case-context-story>.case-copy{padding-top:var(--space-lg)}
  .case-feature{grid-template-columns:minmax(0,1fr);gap:var(--space-lg);padding-top:var(--space-xl)}
  .case-feature-copy,.case-feature--reading .case-feature-copy{position:static;grid-template-columns:minmax(0,1fr);gap:var(--space-lg)}
  .case-page .case-feature-copy h3{font-size:30px}
  .case-page .case-feature-copy p{font-size:16px;line-height:1.5}
  .case-feature .case-media-pair{grid-template-columns:minmax(0,1fr);gap:var(--space-md)}
  .case-analysis-trigger.career-row{grid-template-columns:minmax(0,1fr) 40px;gap:var(--space-sm);padding:var(--space-lg) var(--space-md)}
  .case-analysis-trigger .career-company{font-size:26px;grid-column:1;grid-row:1}
  .case-analysis-trigger .career-meta{grid-column:1;grid-row:2;font-size:12px;padding:var(--space-xs) var(--space-sm)}
  .case-analysis-trigger .career-plus{grid-column:2;grid-row:1/3}
  .case-outcome-composition{grid-template-columns:minmax(0,1fr);gap:var(--space-xl);padding:var(--space-lg) var(--space-md);margin-bottom:var(--space-xl);border-radius:18px}
  .case-outcome-story .case-chapter-heading{margin:0}
  .case-outcome-composition .case-results{border-left:0;border-top:1px solid var(--color-rule);padding:var(--space-lg) 0 0}
  .case-outcome-composition .case-results strong{font-size:52px}
}
@media(max-width:650px){
  html[data-case-route] body{padding-bottom:0}
  .case-toc a{padding-block:10px}
  .case-process ol{grid-template-columns:minmax(0,1fr);gap:0}
  .case-process li{grid-template-columns:28px minmax(0,1fr);gap:var(--space-xs) var(--space-sm);border-top:0;border-left:1px solid var(--color-rule);padding:0 0 var(--space-xl) var(--space-md)}
  .case-process li::before{font-size:28px;grid-column:1;grid-row:1/3}
  .case-process li::after{top:7px;left:-4px}
  .case-process h4{font-size:24px;grid-column:2;grid-row:1}
  .case-process li p{grid-column:2;grid-row:2;font-size:16px}
  .case-process li:last-child{padding-bottom:0;border-left-color:transparent}
}
@media(max-width:374.98px){.case-analysis-trigger .career-company{font-size:23px}.case-feature .case-media-pair{grid-template-columns:minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){.case-analysis-dialog[open]{animation:none}}

/* Key decisions open into readable full-width demonstrations, not ten identical splits. */
.case-feature.case-feature--wide{grid-template-columns:minmax(0,1fr);gap:var(--space-xl)}
.case-feature--wide>.case-feature-copy{position:static;max-width:720px}
.case-feature--wide>.case-feature-media{gap:var(--space-lg)}
.case-page .case-feature--wide .case-feature-copy h3{font-size:var(--text-title)}
.case-feature--wide .case-media-pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-lg)}

/* Additional states stay accessible in one native, manually scrollable filmstrip. */
.case-screen-reel{display:grid;gap:var(--space-xl);min-width:0;margin-top:var(--space-3xl);padding-top:var(--space-2xl);border-top:1px solid var(--color-rule)}
.case-reel-heading{display:grid;gap:var(--space-md);max-width:720px}
.case-page .case-reel-heading h3{font:600 var(--text-title)/1.2 var(--font-display);letter-spacing:-.02em}
.case-reel-heading p{font:400 17px/1.6 var(--font-body);color:var(--color-muted)}
.case-reel-viewport{display:flex;gap:var(--space-lg);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--color-muted) var(--color-soft);padding:4px 4px var(--space-md);margin:-4px;min-width:0;scroll-behavior:auto;touch-action:pan-x pan-y}
.case-reel-viewport>.case-media{flex:0 0 var(--reel-screen-width);width:var(--reel-screen-width);align-self:start;gap:var(--space-sm)}
.case-reel-viewport .case-image-link{border-radius:var(--radius-panel)}
.case-reel-viewport figcaption{font-size:var(--text-small);line-height:1.5;min-height:3em}
.case-reel-viewport:focus-visible{outline:2px solid var(--color-focus);outline-offset:4px;border-radius:var(--radius-small)}
.case-reel-controls{display:flex;align-items:center;gap:var(--space-xs);min-width:0}
.case-reel-controls[hidden],.case-reel-controls [hidden]{display:none}
.case-reel-position{margin-right:auto;white-space:nowrap;font-size:var(--text-small);font-variant-numeric:tabular-nums;color:var(--color-muted)}
.case-reel-controls button{display:inline-flex;align-items:center;justify-content:center;flex:none;min-width:var(--control-size);height:var(--control-size);padding:0 var(--space-sm);border:1px solid var(--color-muted);border-radius:var(--radius-small);background:var(--color-paper);color:var(--color-ink);font:500 13px/1 var(--font-body);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out)}
.case-reel-controls [data-reel-prev],.case-reel-controls [data-reel-next]{font-size:20px;padding:0}
.case-reel-controls button:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}
.case-reel-controls button:active{transform:translateY(1px)}
.case-reel-controls button:disabled{opacity:.45;cursor:not-allowed;transform:none}
.case-reel-controls .case-reel-toggle[aria-pressed=true]{background:var(--color-ink);color:var(--color-paper);border-color:var(--color-ink)}
.case-reel-viewport .case-image-link:focus-visible{outline-color:var(--color-focus);outline-offset:-4px}
@media(hover:hover){.case-reel-controls button:hover:not(:disabled){background:var(--color-soft);color:var(--color-ink)}}
@media(max-width:809.98px){
  .case-feature.case-feature--wide{gap:var(--space-lg)}
  .case-page .case-feature--wide .case-feature-copy h3,.case-page .case-reel-heading h3{font-size:30px}
  .case-feature--wide .case-media-pair{grid-template-columns:minmax(0,1fr);gap:var(--space-md)}
  .case-screen-reel{gap:var(--space-lg);margin-top:var(--space-2xl);padding-top:var(--space-xl)}
  .case-reel-heading p{font-size:16px;line-height:1.5}
  .case-reel-viewport{gap:var(--space-md)}
  .case-reel-viewport>.case-media{flex-basis:min(var(--reel-screen-mobile),calc(100% - var(--space-xl)));width:min(var(--reel-screen-mobile),calc(100% - var(--space-xl)))}
}
@media(prefers-reduced-motion:reduce){.case-reel-controls button{transition:none}}
