/* Shared type scale. All values follow the user's 16 / 18 / 20px root setting. */
:root{--container-reading:1200px;--container-workbench:1496px;--text-body:1rem;--text-small:.875rem;--text-label:.875rem;--text-h1:2.5rem;--text-h2:1.75rem;--text-h3:1.125rem;--text-title:1.25rem;--copy-leading:1.6;--card-inset:1.5rem;--section-space:2rem}
body{font-size:var(--text-body);line-height:var(--copy-leading)}
h1,h2,h3{overflow-wrap:break-word;text-wrap:balance}
h1,.page-heading h1,.compact-hero h1{font-size:var(--text-h1);line-height:1.16;letter-spacing:-.03em;font-weight:800}
h2,.article h2{font-size:var(--text-h2);line-height:1.25;letter-spacing:-.025em;font-weight:750}
h3,.split-content h3{font-size:var(--text-h3);line-height:1.4;letter-spacing:-.01em;font-weight:750}
p{line-height:var(--copy-leading);max-width:65ch;overflow-wrap:break-word}
p+p{margin-top:1rem}
.article p,.article .lead,.compact-hero .intro,.page-heading p,.solution-row p,.note-band p,.brief-aside p,.brief-aside li,.practice-step p{font-size:var(--text-body);line-height:var(--copy-leading)}
.article .lead{font-size:1.125rem}
.page-heading{max-width:70rem;padding-block:1.5rem 2rem}.page-heading p,.compact-hero .intro{margin-top:1rem}
.article section{padding-block:var(--section-space)}
/* Deliberate component selector: article section must not erase card insets. */
.article section.solution-example{padding:var(--card-inset);border:1px solid var(--line);border-radius:var(--radius)}
.article .solution-example h2{font-size:1.5rem;margin-bottom:1rem}
.article h2{margin-bottom:1rem}.split-content h3{margin-bottom:.5rem}
.example-pair{gap:1.5rem;margin:1.25rem 0}.example-pair p{font-size:var(--text-body)}
.section-eyebrow,.example-pair span{font-size:var(--text-small);line-height:1.5}.section-eyebrow{letter-spacing:.04em}
small,.small-text,.article p.small-text,.badge,.breadcrumbs,.notice,.status,.demo-status,.site-footer p,.site-footer small,.site-footer>div:last-child{font-size:var(--text-small);line-height:1.5}
.site-header nav,.menu-toggle,.local-nav,.local-nav a,.local-nav .nav-title,.local-nav .button,.button,.button.small,.text-link,.hero-link,.solution-actions .text-link,.solution-shortcuts a,.solution-shortcuts>span,.actions .text-link{font-size:var(--text-label);line-height:1.45}
.button{gap:.625rem;padding:.75rem 1rem;min-height:3rem;text-align:center;overflow-wrap:break-word}
.button.small{min-height:2.75rem}.note-band>.button{flex-shrink:0;max-width:100%}
.local-nav a{padding:.625rem .75rem}.local-nav .button:hover{background:var(--accent-hover);color:var(--bg)}
.task-picker h2,.section-top h2,.result-panel h2,.brief-preview h2,.brief-aside h2{font-size:1.5rem;line-height:1.3}
.task-tab strong,.route-link strong,.scenario-step h3,.stage h3,.flowline strong,.case-meta strong{font-size:var(--text-body);line-height:1.4}
.task-tab small,html[data-font=large] .task-tab small,.section-top p,.route-link p,.scenario-step>p,.scenario-step li,.stage>p,.file-row,.file-row small,.process-row,.mini-table,.flowline p,.case-meta small{font-size:var(--text-small);line-height:1.5}
.file-row .filetype{font-size:.75rem;letter-spacing:0}.file-row>span:last-child{min-width:0}.mini-table{overflow-wrap:anywhere}
.flowline>div{padding:1.25rem;min-width:0}.flowline svg{margin-bottom:.75rem}
.scenario-number{font-size:var(--text-small)}.scenario-step{padding:1.25rem}.scenario-step>p{min-height:0}.scenario-step ul{margin-top:1rem}
.founder-role,.founder-copy p,.founder-copy a,.portrait-slot small{font-size:var(--text-small);line-height:1.5}.founder-copy h2{font-size:1.25rem;line-height:1.3}
.compact-hero{grid-template-columns:minmax(0,1fr) minmax(340px,400px);gap:2rem}.founder{gap:1rem}.portrait-slot{width:120px}.founder-copy{min-width:0}
.field>label,.field label,.brief-direction legend,.brief-direction-chip span,summary,.calc-period,.calc-segmented button,.calc-presets button,.calc-advanced summary{font-size:var(--text-label);line-height:1.5}
.field input,.field textarea,.field select,.calc-precise input{font-size:var(--text-body);line-height:1.5}
.field small,.field .field-error,.error-summary,.calc-example-note,.calc-storage-note,.calc-control-foot>small,.calc-precise summary,#assumptions-summary,.calc-control .field-error,.result-caption,.result-panel .result-caption,.result-line,.result-details p,.chart-row,details p,.brief-preview pre{font-size:var(--text-small);line-height:1.5}
.calc-control-heading label{font-size:var(--text-body);line-height:1.5}.calc-control-heading output{font-size:1.125rem;line-height:1.4;flex-shrink:0;max-width:45%}
.calc-control-foot{flex-wrap:wrap}.calc-precise{margin-left:auto}.calc-control-foot>small{flex:1 1 14rem}
.result-line{align-items:baseline}.result-line strong{flex-shrink:0}.chart-row{grid-template-columns:5rem minmax(0,1fr)}
.brief-preview pre{line-height:1.65}.result-panel,.brief-aside,.brief-preview,.note-band,.case-hero,.demo{padding:var(--card-inset)}
.note-band{gap:1.5rem}.note-band>div{min-width:0}.notice{padding:1rem}.brief-aside .notice{padding-inline:0;background:transparent;border-block:1px solid var(--line);border-radius:0}
.practice-step{grid-template-columns:2.5rem minmax(160px,220px) minmax(0,1fr)}
.site-footer{padding-inline:0}.control-caption{font-size:var(--text-small)}
@media(max-width:1100px){.workflow,.scenario-grid{grid-template-columns:1fr 1fr}.workflow{gap:1.5rem}.stage,.stage:first-child,.stage:last-child,.stage:nth-child(3),.stage:nth-child(4){padding:0;border:0}.flowline{grid-template-columns:1fr 1fr}.scenario-step:nth-child(3){border-left:0}.scenario-step:nth-child(n+3){border-top-color:var(--line)}.scenario-step.is-active{border-top-color:var(--accent)}.compact-hero{grid-template-columns:minmax(0,1fr) minmax(280px,340px);gap:1.5rem}.portrait-slot{width:92px}.note-band{flex-wrap:wrap}}
@media(max-width:900px){.brief-layout,.tool-layout{grid-template-columns:1fr}.result-panel{position:static}.inside-layout{grid-template-columns:160px minmax(0,1fr);gap:1.5rem}.compact-hero{grid-template-columns:1fr}.founder{max-width:36rem}.founder-copy h2 br{display:none}.founder-copy p{max-width:48ch}.portrait-slot{width:88px;min-height:112px}.site-header nav{flex-wrap:wrap}.solution-row{grid-template-columns:2rem minmax(0,1fr) 1.5rem;gap:.75rem 1rem}.solution-row p{grid-column:2;grid-row:2}.solution-row .arrow{grid-column:3;grid-row:1/3}}
@media(max-width:620px){:root{--text-h1:2rem;--text-h2:1.5rem;--card-inset:1rem;--section-space:1.5rem}html[data-font=large] .page-heading h1,html[data-font=large] .compact-hero h1,html[data-font=large] h1{font-size:var(--text-h1)}.inside-layout{grid-template-columns:1fr}.local-nav{gap:.5rem}.workflow,.scenario-grid{grid-template-columns:1fr}.stage+.stage{border-top:1px solid var(--line);padding-top:1rem}.scenario-step+.scenario-step{border-left:0;border-top-color:var(--line)}.scenario-step.is-active{border-top-color:var(--accent)}.scenario-step{padding:1rem}.scenario-step h3{font-size:var(--text-body)}.founder-copy{display:block}.founder-copy h2{font-size:1.125rem}.founder-copy a{margin-top:.5rem}.portrait-slot{width:76px;min-height:100px}.task-picker h2,.section-top h2{font-size:1.25rem}.article .lead{font-size:var(--text-body)}.practice-step{grid-template-columns:1.5rem minmax(0,1fr)}.practice-step p{grid-column:2}.note-band{align-items:stretch}.note-band>.button{align-self:flex-start}.example-pair{grid-template-columns:1fr}.solution-actions{gap:1rem}.page{padding-bottom:2.5rem}.flowline>div{padding:1rem}}
@media(max-width:400px){.flowline,.split-content{grid-template-columns:1fr}.result-panel .big-result{font-size:2.75rem}.display-toolbar{gap:4px}.display-group button{min-width:42px}.result-line{flex-wrap:wrap;gap:.25rem .75rem}}
.result-panel .big-result{overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.result-line>*{min-width:0;overflow-wrap:anywhere}.result-line strong{flex-shrink:1;text-align:right}
.calc-period,.calc-segmented{flex-wrap:wrap;min-width:0}.calc-segmented button{flex:1 1 auto}
/* Shared spacing rhythm and semantic heading roles across modules. */
:root{--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem}
.section-top,.note-band,.split-content,.brief-layout,.tool-layout{gap:var(--space-6)}
.solutions-list .solution-row{padding-block:var(--space-6)}
.solution-row h2,.note-band h3,.route-link strong{font-size:1.25rem;line-height:1.35;letter-spacing:-.015em}
.task-tabs,.field-grid,.brief-direction-options{gap:var(--space-3)}
.article section,.practice-step{padding-block:var(--space-8)}
.article section.solution-example{padding:var(--card-inset)}
.article section:first-child:not(.solution-example){padding-top:0}
.practice-list,.route-links,.note-band,.brief-preview{margin-top:var(--space-8)}
.flowline,.workflow,.scenario-grid,.case-meta{margin-top:var(--space-6)}
.actions{gap:var(--space-3);margin-top:var(--space-6)}
.brief-layout form{gap:var(--space-6)}
.task-tab{padding:var(--space-3) var(--space-4);gap:var(--space-4)}
.scenario-step li,.mini-table th,.mini-table td{padding-block:var(--space-2)}
.clean-list{padding-left:var(--space-6)}.clean-list li{margin-block:var(--space-2)}
.article>section>p,.practice-step p,.brief-aside p{max-width:65ch}
@media(max-width:620px){.article section,.practice-step{padding-block:var(--space-6)}.article section.solution-example{padding:var(--card-inset)}.section-top,.split-content{gap:var(--space-4)}.site-footer{gap:var(--space-6)}}

/* Narrow phone role: retain the selected text scale without arbitrary word cuts. */
@media(max-width:360px){:root{--text-h1:1.5rem;--text-h2:1.25rem}}
@media(max-width:620px){h1,h2,h3{hyphens:auto}}
