/* CRUX DESIGN — Engineering document template R01 / Study12
   Scoped to body.crux-article. Does not alter the canonical site or other pages. */
body.crux-article {
  --doc-canvas: 1032px;
  --doc-reading: 720px;
  --doc-toc: 200px;
  --doc-gap: 36px;
  background: var(--page-bg);
  background-image: none !important; /* Remove page-wide grid/centre rail from publications */
  color:var(--text-primary);
  font-family:var(--font-body-default,var(--sans));
}
.crux-article .site-grid {display:none!important;}
/* Canonical interior CSS draws viewport centre/edge rails in body::after.
   Documents intentionally use only content-aligned dividers. */
body.crux-article::after{content:none!important;display:none!important;}
.crux-article .site-bar {position:sticky;top:0;z-index:80;}
.crux-article .crux-doc-main {padding:0 var(--page-pad) 76px!important;}
.crux-article .crux-doc-canvas {width:min(100%,var(--doc-canvas));margin:0 auto;}
.crux-article .crux-doc-breadcrumbs {padding:25px 0 0;font:10px/1.55 var(--mono);text-transform:uppercase;letter-spacing:.13em;color:var(--text-muted);}
.crux-article .crux-doc-breadcrumbs a {color:inherit;text-decoration:none;}
.crux-article .crux-doc-breadcrumbs a:hover{color:var(--crux-orange);}
.crux-article .crux-doc-hero{padding:58px 0 37px;border-bottom:1px solid var(--line);}
.crux-article .crux-doc-kicker{font:500 10px/1.6 var(--mono);letter-spacing:.14em;color:var(--crux-orange);text-transform:uppercase;}
.crux-article .crux-doc-hero h1 {font:300 clamp(52px,6.4vw,102px)/1.04 var(--font-primary,var(--sans));letter-spacing:-.075em;margin:18px 0 26px;max-width:960px;}
.crux-article .crux-doc-hero h1 em {font-style:normal;color:var(--text-muted);}
.crux-article .crux-doc-lead {font:300 clamp(16px,1.6vw,20px)/1.62 var(--font-body-default,var(--sans));max-width:760px;color:var(--text-secondary);margin:0 0 31px;}
.crux-article .crux-doc-meta{display:flex;flex-wrap:wrap;gap:12px 24px;font:10px/1.6 var(--mono);letter-spacing:.07em;color:var(--text-muted);text-transform:uppercase;}
.crux-article .crux-doc-status {color:var(--crux-orange);border:1px solid var(--crux-orange-line);padding:3px 8px;}
.crux-article .crux-doc-hero-figure{margin:0 0 28px;background:var(--surface-1);border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.crux-article .crux-doc-hero-figure img {display:block;max-width:100%;width:min(100%,740px);height:clamp(340px,54vw,580px);object-fit:contain;margin:auto;padding:16px;filter:brightness(0) invert(1);}
:root[data-theme="light"] .crux-article .crux-doc-hero-figure img{filter:brightness(0);}
.crux-article figcaption{font:10px/1.55 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);padding:12px 14px;}
.crux-article .crux-doc-layout{display:grid;grid-template-columns:var(--doc-toc) minmax(0,var(--doc-reading));gap:var(--doc-gap);align-items:stretch;max-width:var(--doc-canvas);}
/* Crucial: stick the aside itself. A sticky child in a short aside cannot track a long article. */
.crux-article .crux-doc-toc{position:sticky;top:90px;align-self:start;max-height:calc(100dvh - 105px);overflow:auto;overscroll-behavior:contain;padding:12px 10px 18px 0;scrollbar-width:thin;}
.crux-article .crux-doc-toc .toc-title{font:500 11px var(--mono);letter-spacing:.1em;color:var(--crux-orange);text-transform:uppercase;margin:0 0 14px;}
.crux-article .crux-doc-toc a,.crux-article .crux-doc-toc-mobile a{display:block;text-decoration:none;border-top:1px solid var(--line);padding:10px 4px;font:400 11px/1.5 var(--font-body-default,var(--sans));color:var(--text-muted);}
.crux-article .crux-doc-toc a.active,.crux-article .crux-doc-toc a:hover,.crux-article .crux-doc-toc-mobile a:hover{color:var(--text-primary);border-left:2px solid var(--crux-orange);padding-left:10px;}
.crux-article .crux-doc-toc-mobile{display:none;}
.crux-article .crux-doc-prose{max-width:var(--doc-reading);min-width:0;font:300 15px/1.82 var(--font-body-default,var(--sans));color:var(--text-secondary);}
.crux-article .crux-doc-section{padding:33px 0 35px;border-bottom:1px solid var(--line);min-width:0;scroll-margin-top:90px;}
.crux-article .crux-doc-section h2{font:350 clamp(23px,2.5vw,31px)/1.22 var(--font-primary,var(--sans));letter-spacing:-.03em;color:var(--text-primary);margin:23px 0 17px;scroll-margin-top:100px;}
.crux-article .crux-doc-section h3{font:450 17px/1.4 var(--font-primary,var(--sans));margin:28px 0 10px;color:var(--text-primary);}
.crux-article .crux-doc-section p{margin:0 0 18px;}
.crux-article .crux-doc-section strong{color:var(--text-primary);font-weight:550;}
.crux-article .crux-doc-section ul,.crux-article .crux-doc-section ol{padding-left:22px;margin:10px 0 23px;}
.crux-article .crux-doc-section li{margin:0 0 9px;}
.crux-article .crux-doc-section .chapter-heading{font:550 10px/1.6 var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--crux-orange);margin:0 0 13px;}
.crux-article .crux-doc-section hr{border:0;border-top:1px solid var(--line);margin:30px 0;}
.crux-article .crux-doc-section blockquote{border-left:1px solid var(--line-strong);margin:30px 0;padding-left:20px;color:var(--text-primary);}
.crux-article .crux-doc-section pre{background:var(--surface-2);border:1px solid var(--line);padding:17px;overflow-x:auto;font:12px/1.58 var(--mono);}
.crux-article .crux-doc-section code{font-family:var(--mono);font-size:calc(.85em * var(--crux-text-scale, 1));overflow-wrap:anywhere;}
.crux-article .crux-doc-section table{width:100%;border-collapse:collapse;font-size:calc(12px * var(--crux-text-scale, 1));margin:25px 0;}
.crux-article .crux-doc-section td,.crux-article .crux-doc-section th{border-bottom:1px solid var(--line);padding:10px;text-align:left;vertical-align:top;}
.crux-article .crux-doc-section th{font:500 11px var(--mono);color:var(--text-primary);}
.crux-article .crux-doc-section a{color:var(--text-primary);text-decoration-color:var(--line-strong);text-underline-offset:3px;}
.crux-article .crux-doc-section figure.field-photo{margin:26px 0;max-width:100%;}
.crux-article .crux-doc-section figure.field-photo img{display:block;max-width:100%;width:100%;max-height:340px;object-fit:cover;object-position:center 60%;filter:grayscale(.3) saturate(.56);}
/* Technical procedure: a neutral receipt-inspired component, not an orange promotional panel. */
.crux-article .crux-doc-section--procedure,.crux-article .crux-doc-section--appendix{margin:30px 0 0;padding:28px 24px 34px;border:1px solid var(--line-strong);border-top:2px solid var(--text-muted);background:repeating-linear-gradient(135deg,transparent 0 14px,var(--map-hatch) 14px 15px,transparent 15px 29px),linear-gradient(90deg,var(--surface-1),var(--page-bg));}
.crux-article .crux-doc-section--procedure h2,.crux-article .crux-doc-section--procedure h3,.crux-article .crux-doc-section--appendix h2,.crux-article .crux-doc-section--appendix h3{font-family:var(--mono);letter-spacing:-.015em;}
.crux-article .crux-doc-section--procedure h2,.crux-article .crux-doc-section--appendix h2{font-size:calc(21px * var(--crux-text-scale, 1));font-weight:500;line-height:1.4;}
.crux-article .crux-doc-section--procedure h3,.crux-article .crux-doc-section--appendix h3{font-size:calc(14px * var(--crux-text-scale, 1));font-weight:500;line-height:1.5;}
.crux-article .crux-doc-section--appendix{border-top:1px solid var(--line-strong);background:var(--surface-1);}
.crux-article .crux-document-plates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:25px 0;}
.crux-article .crux-document-plate{margin:0;background:var(--page-bg);border:1px solid var(--line);min-width:0;}
.crux-article .crux-document-plate--wide{grid-column:span 2;}
.crux-article .crux-document-plate img{display:block;width:100%;height:230px;padding:6px;object-fit:contain;filter:brightness(0) invert(1);}
:root[data-theme="light"] .crux-article .crux-document-plate img{filter:brightness(0);}
.crux-article .crux-document-plate--wide img{height:340px;}
.crux-article .crux-document-plate figcaption{border-top:1px solid var(--line);font-size:calc(9px * var(--crux-text-scale, 1));}
.crux-article .crux-document-note{font:11px/1.65 var(--mono);color:var(--text-muted);border-top:1px dashed var(--line-strong);padding-top:13px;}
.crux-article .crux-doc-end{max-width:var(--doc-canvas);border-top:1px solid var(--line);padding:26px 0 48px;margin-top:55px;font:12px/1.6 var(--mono);color:var(--text-muted);}
@media(max-width:960px){
 .crux-article .crux-doc-layout{grid-template-columns:170px minmax(0,1fr);gap:25px;}
}
@media(max-width:750px){
 .crux-article .crux-doc-main{padding:0 20px 55px!important;}
 .crux-article .crux-doc-hero{padding-top:30px;}
 .crux-article .crux-doc-hero h1{font-size:calc(clamp(46px,10vw,74px) * var(--crux-text-scale, 1));}
 .crux-article .crux-doc-layout{display:block;}
 .crux-article .crux-doc-toc{display:none;}
 .crux-article .crux-doc-toc-mobile{display:block;border:1px solid var(--line);margin-bottom:20px;padding:13px;}
 .crux-article .crux-doc-toc-mobile summary{font:500 11px var(--mono);cursor:pointer;letter-spacing:.07em;}
 .crux-article .crux-doc-toc-mobile nav{margin-top:14px;}
 .crux-article .crux-doc-prose{max-width:none;font-size:calc(14px * var(--crux-text-scale, 1));line-height:1.75;}
 .crux-article .crux-doc-section--procedure,.crux-article .crux-doc-section--appendix{padding:18px 13px 25px;}
 .crux-article .crux-document-plates{grid-template-columns:1fr;}
 .crux-article .crux-document-plate--wide{grid-column:auto;}
 .crux-article .crux-document-plate img,.crux-article .crux-document-plate--wide img{height:270px;}
 .crux-article .crux-doc-status{max-width:100%;}
}
@media print{
 .crux-article .site-bar,.crux-article .crux-doc-toc,.crux-article .crux-doc-toc-mobile{display:none!important;}
 .crux-article .crux-doc-layout{display:block;}
 .crux-article .crux-doc-prose{max-width:none;}
 .crux-article .crux-doc-section{break-inside:avoid-page;}
 .crux-article .crux-doc-main{padding:0!important;}
}

/* Study 13: compact five-figure entry rail. Always a single line, scrollable at narrow widths. */
.crux-article .crux-tech-thumb-gallery{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:24px 0 20px;max-width:100%;}
.crux-article .crux-tech-thumb{min-width:0;display:flex;flex-direction:column;cursor:pointer;border:1px solid var(--line-strong);padding:0;background:var(--page-bg);color:var(--text-primary);text-align:left;transition:border-color .16s ease,background .16s ease;}
.crux-article .crux-tech-thumb:hover,.crux-article .crux-tech-thumb:focus-visible{border-color:var(--crux-orange);background:var(--surface-1);outline-offset:2px;}
.crux-article .crux-tech-thumb-art{display:grid;place-items:center;width:100%;aspect-ratio:1.05;min-height:0;overflow:hidden;background:var(--surface-1);}
.crux-article .crux-tech-thumb-art img{height:100%;width:100%;object-fit:contain;padding:7px;filter:brightness(0) invert(1);}
:root[data-theme="light"] .crux-article .crux-tech-thumb-art img{filter:brightness(0);}
.crux-article .crux-tech-thumb-label{display:grid;align-items:center;grid-template-columns:auto minmax(0,1fr) auto;gap:4px;padding:9px 5px;border-top:1px solid var(--line);font:9px/1.4 var(--mono);letter-spacing:.01em;}
.crux-article .crux-tech-thumb-label strong{font:500 10px/1.35 var(--mono);letter-spacing:-.02em;overflow-wrap:anywhere;color:var(--text-primary);}
.crux-article .crux-tech-thumb-number{font-size:calc(9px * var(--crux-text-scale, 1));color:var(--crux-orange);}
.crux-article .crux-tech-thumb-arrow{font-size:calc(12px * var(--crux-text-scale, 1));color:var(--crux-orange);}
.crux-article .crux-doc-section--references h2{font:350 clamp(23px,2.5vw,31px)/1.22 var(--font-primary,var(--sans))!important;text-transform:none!important;letter-spacing:-.03em;margin:12px 0 22px;color:var(--text-primary);}
/* Dialog exists outside body article layout and uses viewport scaling. */
.crux-article .crux-tech-dialog{width:min(1200px,calc(100vw - 38px));max-width:none;height:min(810px,calc(100dvh - 38px));max-height:none;margin:auto;padding:0;overflow:hidden;border:1px solid var(--line-strong);background:var(--page-bg);color:var(--text-primary);box-shadow:0 22px 70px rgba(0,0,0,.42);}
.crux-article .crux-tech-dialog::backdrop{background:rgba(0,0,0,.78);backdrop-filter:blur(3px);}
.crux-article .crux-tech-dialog[open]{display:flex;flex-direction:column;}
.crux-article .crux-tech-dialog-header{padding:13px 20px;border-bottom:1px solid var(--line-strong);display:flex;justify-content:space-between;align-items:center;gap:20px;flex:none;background:var(--page-bg);}
.crux-article .crux-tech-dialog-eyebrow{display:block;font:500 10px/1.5 var(--mono);color:var(--crux-orange);letter-spacing:.1em;}
.crux-article .crux-tech-dialog-header h2{font:350 19px/1.25 var(--font-primary,var(--sans));letter-spacing:-.025em;margin:3px 0 2px;}
.crux-article .crux-tech-dialog-header p{font:10px/1.4 var(--mono);margin:0;color:var(--text-muted);}
.crux-article .crux-tech-dialog-close{padding:10px 13px;font:11px var(--mono);color:var(--text-primary);border:1px solid var(--line-strong);background:var(--surface-1);cursor:pointer;white-space:nowrap;}
.crux-article .crux-tech-dialog-close:hover{border-color:var(--crux-orange);}
.crux-article #crux-tech-dialog-frame{height:100%;min-height:0;width:100%;border:0;display:block;background:var(--page-bg);}
@media(max-width:750px){
 .crux-article .crux-tech-thumb-gallery{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:thin;padding-bottom:8px;}
 .crux-article .crux-tech-thumb{flex:0 0 156px;scroll-snap-align:start;}
 .crux-article .crux-tech-dialog{width:100vw;height:100dvh;max-height:none;border:0;}
 .crux-article .crux-tech-dialog-header{padding:10px 12px;}
 .crux-article .crux-tech-dialog-header h2{font-size:calc(16px * var(--crux-text-scale, 1));}
 .crux-article .crux-tech-dialog-header p{font-size:calc(9px * var(--crux-text-scale, 1));}
}
@media(prefers-reduced-motion:reduce){.crux-article .crux-tech-thumb{transition:none}}
