/* Shared reading settings. Typography uses rem; SVG drawing coordinates stay fixed. */
html{font-size:calc(100% * var(--text-scale,1))}
:root .navigation{height:auto;min-height:84px;gap:16px;padding-block:12px}
:root .desktop-nav{gap:20px}
:root .reading-settings-trigger{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;max-width:100%;padding:10px 12px;border:1px solid var(--control-border);border-radius:var(--control-radius);background:#fff;color:var(--control-ink);font:inherit;font-size:.875rem;line-height:1.5;text-align:start;overflow-wrap:break-word}
:root .reading-settings-trigger:hover{background:#eef3f4;border-color:#819ca9}
.reading-settings-trigger svg{width:18px;height:18px;flex:0 0 18px}
.reading-settings-trigger span{min-width:0}
:root .footer-settings{border:0;background:transparent;text-decoration:underline;text-underline-offset:4px;padding-inline:0}
:root .footer-service{flex-wrap:wrap}
:root .principles-more{display:flex;flex-wrap:wrap;gap:20px 36px;justify-content:space-between}
.reading-dialog-open{overflow:hidden}
.reading-dialog{inset:0;box-sizing:border-box;width:min(840px,calc(36rem + 24px),calc(100% - 24px));max-width:none;max-height:calc(100dvh - 24px);margin:auto;padding:0;border:1px solid #b8cbd2;border-radius:20px;box-shadow:0 24px 80px #1833442b;background:#fff;color:#183344;overflow:hidden;font-family:var(--font);font-size:1rem;line-height:1.6;overflow-wrap:break-word}
.reading-dialog[open]{display:flex;flex-direction:column}
.reading-dialog:not([open]){display:none}
.reading-dialog::backdrop{background:#122a3c66}
.reading-dialog-heading{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:start;gap:16px;flex-shrink:0;padding:24px 28px 18px;border-bottom:1px solid #d6e0e4}
.reading-dialog h2{font-size:1.25rem;line-height:1.4;letter-spacing:-.02em;font-weight:650}
.reading-dialog-body{min-height:0;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:auto;scrollbar-gutter:stable;padding:20px 28px 24px}
.reading-dialog-intro{font-size:.9375rem;line-height:1.7;color:#4b6471;margin-top:0}
:root .reading-dialog-close{display:flex;align-items:center;justify-content:center;min-width:44px;width:44px;height:44px;padding:0;border:1px solid #b8cbd2;border-radius:10px;background:#fff;color:#183344}
.reading-dialog-close svg{width:18px;height:18px}
.reading-options{display:grid;gap:0;margin:22px 0 0}
.reading-option{min-width:0;margin:0;padding:18px 0;border:0;border-top:1px solid #d6e0e4}
.reading-option legend{padding:0;padding-inline-end:10px;font-size:1rem;font-weight:650;line-height:1.6;max-width:100%}
/* Options sit side by side when there is room, so the panel fits a laptop screen without scrolling. */
.reading-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10.5rem),1fr));gap:6px}
.reading-choices--size{grid-template-columns:repeat(auto-fit,minmax(min(100%,7rem),1fr))}
.reading-choice{display:flex;align-items:flex-start;gap:12px;min-width:0;min-height:44px;padding:10px 12px;border:1px solid transparent;border-radius:9px;font-size:1rem;line-height:1.6;cursor:pointer}
.reading-choice:has(input:checked){border-color:#7995a6;background:#eef4f7}
.reading-choice input{appearance:auto;flex:0 0 1.25em;width:1.25em;height:1.25em;font:inherit;margin:0;margin-block-start:.175em;accent-color:#235e7d}
.reading-choice span{min-width:0}
.reading-option p{font-size:.875rem;line-height:1.7;color:#4b6471;margin-top:8px}
.reading-dialog-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px 24px;border-top:1px solid #d6e0e4;padding-top:20px}
.reading-dialog-actions>a{display:inline-flex;align-items:center;min-height:44px;font-size:.9375rem;text-decoration:underline;text-underline-offset:4px}
.reading-status{font-size:.875rem;line-height:1.7;color:#365f4c;margin-top:16px}
.reading-status:empty{display:none}
.accessibility-page .legal-layout{padding-top:36px}
.accessibility-page .accessibility-tools{margin-top:24px}
:root :is(input,select,button,a,summary,[tabindex]):focus-visible{outline:3px solid #156089;outline-offset:4px}
:root :is(h1,h2,h3,h4,p,li,dt,dd,button,a,label,summary){overflow-wrap:break-word}
/* Addresses have no word boundaries: they may break at any character instead of widening the page. */
:root :is(.contact-email,.footer-service>a,.footer-contacts>a:first-of-type){overflow-wrap:anywhere}
:root :is(.button,.text-link,.hero-product-link,.reading-action,.reader-tools button,.legal-contact){min-width:0;white-space:normal}
:root .catalogue-search input{height:auto;min-height:48px;padding-block:12px;line-height:1.6}
:root .catalogue-search .search-clear{top:50%;transform:translateY(-50%)}
:root .collection-sort{flex-wrap:wrap;min-width:0;max-width:100%}
:root .collection-sort select{max-width:100%;height:auto;flex:1 1 auto}
:root .footer-legal>a{white-space:normal;flex-shrink:1}
:root .principle-mark{height:auto;min-height:72px}
:root .principle-item:last-child:nth-child(odd){grid-column:1/-1;display:grid;grid-template-columns:180px minmax(0,1fr);gap:0 36px}
:root .principle-item:last-child:nth-child(odd) .principle-mark{grid-row:1/3;margin:0}
:root .principle-item:last-child:nth-child(odd) p{max-width:760px}

/* Layout grows with content. Enlarged text uses generous columns and no sticky obstructions. */
html[data-reading-enlarged=true] :is(.site-header,.article-aside,.legal-aside){position:static}
html[data-reading-enlarged=true] :is(.article-aside,.legal-aside){max-height:none;overflow:visible}
html[data-reading-enlarged=true] .reading-progress{display:none}
html[data-reading-enlarged=true] :is(.hero-composition,.product-panel,.about-layout,.principles-heading,.blog-feature,.article-heading-grid,.article-layout,.legal-layout,.contact-grid,.contact-heading){grid-template-columns:minmax(0,1fr);gap:32px;max-width:100%}
html[data-reading-enlarged=true] :is(.hero-composition,.hero-art,.hero-copy){min-height:0}
html[data-reading-enlarged=true] .hero-copy{padding-block:42px 0;max-width:none}
html[data-reading-enlarged=true] .hero-stage h1{margin:0;max-width:100%;letter-spacing:normal}
html[data-reading-enlarged=true] .hero-stage h1>.visually-hidden{position:static;display:block;width:auto;height:auto;clip:auto;clip-path:none;white-space:normal;margin:0;overflow:visible}
html[data-reading-enlarged=true] .hero-stage h1>span[aria-hidden=true]{display:none}
html[data-reading-enlarged=true] .hero-stage-description{margin-top:24px;max-width:42rem}
html[data-reading-enlarged=true] :is(.reading-grid,.principles-grid){grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr))}
html[data-reading-enlarged=true] .reading-card--lead{grid-column:1/-1}
html[data-reading-enlarged=true] .reading-card--lead>.reading-link{grid-template-columns:minmax(0,1fr)}
html[data-reading-enlarged=true] .reading-card--lead :is(.reading-cover,.reading-card-content){grid-column:auto;grid-row:auto;min-width:0}
html[data-reading-enlarged=true] .product-tabs{grid-template-columns:minmax(0,1fr)}
html[data-reading-enlarged=true] .tab-name{min-height:0}
html[data-reading-enlarged=true] .product-tab{padding:18px 12px}
html[data-reading-enlarged=true] .product-art{width:100%;max-width:600px}
html[data-reading-enlarged=true] :is(.hero-art.network-art,.article-heading-grid>.reading-cover){width:100%;max-width:640px;margin-inline:auto}
html[data-reading-enlarged=true] .article-meta{grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr))}
html[data-reading-enlarged=true] .article-meta>div:nth-child(n){grid-column:auto;grid-row:auto;display:block}
html[data-reading-enlarged=true] .article-layout{max-width:960px}
html[data-reading-enlarged=true] .article-toc summary{line-height:1.7}
html[data-reading-enlarged=true] .catalogue-controls{flex-direction:column;align-items:stretch}
html[data-reading-enlarged=true] .catalogue-search{width:100%;max-width:none;flex:0 1 auto;align-self:stretch}
html[data-reading-enlarged=true] .collection-sort{flex-direction:column;align-items:stretch}
html[data-reading-enlarged=true] .collection-sort select{flex-basis:auto;width:100%;max-width:none}
html[data-reading-enlarged=true] .catalogue-filters{flex-wrap:wrap}
html[data-reading-enlarged=true] .footer-columns{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr))}
html[data-reading-enlarged=true] .footer-documents{display:flex;flex-direction:column;grid-column:auto}
html[data-reading-enlarged=true] .footer-identity{grid-column:auto;display:block;min-width:0}
html[data-reading-enlarged=true] .footer-social-buttons{grid-column:auto;grid-row:auto;flex-wrap:wrap;margin-top:20px}
html[data-reading-enlarged=true] .contact-email{max-width:100%;overflow-wrap:anywhere}
html[data-reading-enlarged=true] .contact-company{flex-wrap:wrap}
html[data-reading-enlarged=true] :is(.section-heading,.collection-heading){flex-wrap:wrap;gap:20px}
html[data-reading-enlarged=true] .principle-item:last-child:nth-child(odd){display:block}
html[data-reading-enlarged=true] .principle-item:last-child:nth-child(odd) .principle-mark{margin-bottom:20px}
html[data-reading-enlarged=true] .article-table-wrap table,html[data-reading-enlarged=true] .article-table-wrap tbody{display:block;width:100%}
html[data-reading-enlarged=true] .article-table-wrap thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
html[data-reading-enlarged=true] .article-table-wrap tbody tr{display:block;border-block:1px solid #b1c4ce;padding:8px 16px}
html[data-reading-enlarged=true] .article-table-wrap tbody tr+tr{margin-top:20px}
html[data-reading-enlarged=true] .article-table-wrap td{display:block;padding:16px 0;border:0!important;font-size:1rem;line-height:1.8}
html[data-reading-enlarged=true] .article-table-wrap td+td{border-top:1px solid #c9d6db!important}
html[data-reading-enlarged=true] .table-field-label{display:block;margin-bottom:8px;font-size:.875rem;font-weight:650;line-height:1.7}
html[data-reading-enlarged=true] .table-field-value{display:block}
/* Enlarged text: every element grows with the chosen size, headings included; nothing is capped below its 100% size.
   Long words hyphenate by the page language instead of breaking at an arbitrary letter. */
/* Hyphenate enlarged text only where long words cannot fit: narrow card columns, and enlarged text on phones.
   Browsers hyphenate greedily, so wide headings and paragraphs keep whole words. */
:is(.no-hyphens,bdi){-webkit-hyphens:manual!important;hyphens:manual!important}
html:is([data-reading-size="150"],[data-reading-size="200"]) :is(.reading-title,.tab-name,.principle-item h4,.editorial-pick h3,.product-tasks dt){-webkit-hyphens:auto;hyphens:auto;hyphenate-limit-chars:9 4 4}
/* Headings keep growing with the chosen size, so at any width a long word may hyphenate instead of breaking mid-letter. */
html[data-reading-enlarged=true] :is(h1,h2,.product-copy h3){-webkit-hyphens:auto;hyphens:auto;hyphenate-limit-chars:9 4 4;text-wrap:balance}
@media(max-width:760px){html:is([data-reading-size="125"],[data-reading-size="150"],[data-reading-size="200"]) :is(h1,h2,h3,h4,legend,.mission-statement){-webkit-hyphens:auto;hyphens:auto;hyphenate-limit-chars:9 4 4}
html:is([data-reading-size="150"],[data-reading-size="200"]) :is(p,li,dt,dd,td,label,.legal-contact){-webkit-hyphens:auto;hyphens:auto;hyphenate-limit-chars:10 4 4}}
html[data-reading-spacing=wide] :is(p,li,dt,dd,label,summary,button,input,select,.reading-meta,.reading-byline,.reading-date,.article-toc a,.legal-aside a,.footer-link-group a){line-height:2!important}
html[data-reading-spacing=wide] :is(h1,h2,h3,h4){line-height:1.65!important}
html[data-reading-spacing=wide] :is(.article-body p+p,.legal-body p+p){margin-top:2em}
html[data-reading-spacing=wide] .reading-choice input{margin-block-start:.375em}
html[data-reading-spacing=wide] :is(.site-header,.article-aside,.legal-aside){position:static}
html[data-reading-spacing=wide] :is(.article-aside,.legal-aside){max-height:none;overflow:visible}
html[data-reading-spacing=wide] .reading-progress{display:none}
html[data-reading-motion=reduce]{scroll-behavior:auto}
html[data-reading-motion=reduce] *,html[data-reading-motion=reduce] *::before,html[data-reading-motion=reduce] *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
html[data-reading-motion=reduce] :is(.node-pulse,.typed-phrase)::after{display:none}

/* A deliberate, high-contrast palette; images and scientific diagrams keep their colours. */
html[data-reading-contrast=high]{--ink:#132b38;--muted:#263e4a;--line:#607785;--control-ink:#132b38;--control-border:#526d7c;--control-hover:#254b60;--editorial-ink:#132b38;--editorial-muted:#263e4a;--editorial-line:#607785}
html[data-reading-contrast=high] :is(body,.site-header,.site-footer,.blog-section,.reader-page,.reading-dialog,.mobile-nav,.locale-menu>summary,.language-switcher,.reading-card,.reading-card--lead>.reading-link,.article-note,.original-paper,.catalogue-empty){background:#fff!important;color:#132b38!important;--card-ink:#132b38;--card-muted:#263e4a}
html[data-reading-contrast=high] :is(h1,h2,h3,h4,p,li,dt,dd,label,summary,address,time,.reading-meta,.reading-date,.reading-byline,.table-field-label,.table-field-value,.article-kicker,.draft-note,.breadcrumbs,.legal-eyebrow,.contact-label,.contact-handle,.contact-registration,.principle-number){color:#132b38!important}
html[data-reading-contrast=high] a:not(.button):not(.contact-write):not(.skip-link){color:#003e74!important;text-decoration:underline;text-underline-offset:.18em}
html[data-reading-contrast=high] :is(.button,.contact-write,.skip-link){background:#132b38!important;color:#fff!important;border-color:#132b38!important}
html[data-reading-contrast=high] :is(.button-light,.reading-settings-trigger,.reading-dialog-close,.menu-toggle,.catalogue-filters button,input,select,.contact-copy-button){background:#fff!important;color:#132b38!important;border-color:#526d7c!important}
html[data-reading-contrast=high] :is(input,select,button,a,summary,[tabindex]):focus-visible{outline:3px solid #003e74!important;outline-offset:4px}
html[data-reading-contrast=high] .article-table-wrap :is(th,td){background:#fff;color:#132b38}
html[data-reading-contrast=high] :is(.catalogue-filters button[aria-pressed=true],.language-switcher a[aria-current=page]){background:#dceaf1!important;color:#132b38!important;border-color:#132b38!important;text-decoration:underline}
html[data-reading-contrast=high] .footer-social-buttons>a{background:#fff!important;border:1px solid #526d7c}
html[data-reading-contrast=high] .reading-option p{color:#263e4a}
html[data-reading-contrast=high] :is(.reading-action,.principle-mark,.reading-status){color:#132b38}
html[data-reading-contrast=high] :is(.catalogue-status,.author-page-label,.paper-doi,.original-paper>span,.article-references li>span,.editorial-pick>span,.breadcrumbs>span,.article-kicker>span,.draft-note>span,.reader-tools button){color:#263e4a}
html[data-reading-contrast=high] .catalogue-search{border-color:#526d7c;background:#fff}
html[data-reading-contrast=high] .catalogue-search input::placeholder{color:#263e4a;opacity:1}
html[data-reading-contrast=high] .reading-choice:has(input:checked){background:#dceaf1;border-color:#132b38}
html[data-reading-contrast=high] .reading-choice input{accent-color:#132b38}
html[data-reading-contrast=high] .reading-dialog :is(.reading-dialog-heading,.reading-option,.reading-dialog-actions){border-color:#607785}
/* Block links (cards, logo, diagram nodes) mark only their title: an underlined paragraph is harder to read. */
html[data-reading-contrast=high] a:not(.button):not(.contact-write):not(.skip-link):is(.reading-link,.editorial-pick,.brand,.knowledge-node){color:#132b38!important;text-decoration:none}
html[data-reading-contrast=high] :is(.reading-link .reading-title,.editorial-pick h3){color:#003e74!important;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}
html[data-reading-contrast=high] :is(.archive-count,.product-tab,.tab-task,.contact-address span,.hero-stage-description,.footer-identity>p,.footer-link-group h2){color:#132b38!important}
@media(max-width:1100px){
 :root .navigation{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding-block:12px;height:auto}
 :root .navigation>.brand{grid-area:1/1;margin:0;min-width:0;max-width:100%}
 :root .desktop-nav{display:none}
 :root .menu-toggle{grid-area:1/2;display:flex;flex-direction:column;gap:6px;margin:0;border:1px solid var(--control-border);background:#fff}
 :root .menu-toggle span{width:17px;height:1px;background:var(--ink)}
 :root .navigation>.reading-settings-trigger{grid-area:2/1;justify-self:start}
 :root .navigation>.locale-menu{grid-area:2/2;margin:0;align-self:start}
 :root .mobile-nav:not([hidden]){display:flex;flex-direction:column;max-height:50dvh;overflow-y:auto;padding:12px 24px;gap:4px;border-top:1px solid var(--line);background:#fff}
 :root .mobile-nav a{font-size:1rem;line-height:1.6;min-height:44px;padding:10px 0}
 html{scroll-padding-top:180px}
}
html[data-reading-enlarged=true] .navigation{display:flex;flex-wrap:wrap;gap:12px;height:auto}
html[data-reading-enlarged=true] .navigation>.brand{flex:1 1 calc(100% - 60px);min-width:0;margin:0}
html[data-reading-enlarged=true] .navigation>.menu-toggle{order:1;display:flex;flex-direction:column;gap:6px;margin:0;border:1px solid var(--control-border);background:#fff}
html[data-reading-enlarged=true] .menu-toggle span{width:17px;height:1px;background:var(--ink)}
html[data-reading-enlarged=true] .navigation>:is(.desktop-nav,.header-contact){display:none}
html[data-reading-enlarged=true] .navigation>.reading-settings-trigger{order:2;flex:0 1 auto}
html[data-reading-enlarged=true] .navigation>.locale-menu{order:3;margin:0}
/* The language list opens as a full-width panel under the header row, so it never leaves the screen. */
html[data-reading-enlarged=true] .navigation{position:relative}
html[data-reading-enlarged=true] .navigation>.locale-menu{position:static}
html[data-reading-enlarged=true] .locale-menu>.language-switcher{inset-inline:0;top:calc(100% + 4px);min-width:0}
html[data-reading-enlarged=true] .mobile-nav:not([hidden]){display:flex;flex-direction:column;max-height:50dvh;overflow-y:auto;padding:12px 24px;gap:4px;background:#fff}
html[data-reading-enlarged=true] .mobile-nav a{font-size:1rem;line-height:1.6;padding:12px 0}
html[data-reading-enlarged=true],html[data-reading-spacing=wide]{scroll-padding-top:20px}
/* The open menu button turns into a close mark. */
.menu-toggle span{transition:transform .18s}
.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(3.5px) rotate(45deg)}
.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
@media(max-width:760px){
 :root .principle-item:last-child:nth-child(odd){display:block}
 :root .principle-item:last-child:nth-child(odd) .principle-mark{margin-bottom:20px}
 .reading-dialog{border-radius:16px}
 .reading-dialog-heading{gap:12px;padding:18px 20px 14px}
 .reading-dialog-body{padding:16px 20px 20px}
 html[data-reading-enlarged=true] .article-note{padding:20px 16px}
 html[data-reading-enlarged=true] .reading-card--lead>.reading-link{padding:20px 16px 24px}
}
/* A short landscape viewport needs the same unobstructed reading area. */
@media(max-height:600px){:root :is(.site-header,.article-aside,.legal-aside){position:static}:root :is(.article-aside,.legal-aside){max-height:none;overflow:visible}.reading-progress{display:none}html{scroll-padding-top:20px}}
@media(prefers-reduced-motion:reduce){html,*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
@media(forced-colors:active){
 :root :is(button,select,input,summary){border:1px solid ButtonText!important}
 :root :is(a,button,select,input,summary,[tabindex]):focus-visible{outline:3px solid Highlight!important}
 .reading-dialog{border:2px solid CanvasText;box-shadow:none}
 .marker-word svg{display:none}
}
@media print{
 html{font-size:100%}
 .reading-dialog,.reading-settings-trigger,.site-header,.site-footer{display:none!important}
 /* Reading preferences must not override the printable table structure. */
 :root .article-table-wrap table{display:table!important;width:100%;table-layout:fixed}
 :root .article-table-wrap thead{display:table-header-group!important;position:static!important;width:auto!important;height:auto!important;overflow:visible!important;clip-path:none!important;white-space:normal!important}
 :root .article-table-wrap tbody{display:table-row-group!important}
 :root .article-table-wrap tbody tr{display:table-row!important}
 :root .article-table-wrap td{display:table-cell!important;font-size:9pt!important;line-height:1.6!important;padding:10px!important}
 :root .article-table-wrap .table-field-label{display:none!important}
 :root .article-table-wrap .table-field-value{display:inline!important}
}
