:root{--ink:#142f50;--paper:#f5efdf;--muted:#435366;--line:#1b477b33;--accent:#164b9d;--warm:#b43c18;--panel:#f5efdff5;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-bottom:100px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.7 Arial,Helvetica,sans-serif}body[data-theme=night]{--ink:#e5eeea;--paper:#071317;--muted:#b1c4ce;--line:#9bb3ca55;--accent:#a6c5f5;--warm:#ffc58b;--panel:#071317f5;color-scheme:dark}[hidden]{display:none!important}a{color:inherit;text-decoration:none}button,select{font:inherit}button,summary{cursor:pointer}a,button,select{touch-action:manipulation}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--warm);outline-offset:5px}button{border-radius:0}a:hover{text-decoration:underline;text-underline-offset:5px}button:disabled,select:disabled{opacity:.45;cursor:default}.skip{position:fixed;left:-2000px;top:12px;z-index:50;background:var(--paper);padding:12px 18px}.skip:focus{left:18px}.scene{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.scene img,.scene canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}#gpu{visibility:hidden}.wash{position:absolute;inset:0;background:linear-gradient(90deg,#f5efdf 0%,#f5efdfed 21%,#f5efdfbf 34%,#f5efdf33 49%,#f5efdf00 64%)}body[data-theme=night] .wash{background:linear-gradient(90deg,#071317 0%,#071317ed 21%,#071317c4 36%,#07131733 60%,#07131700 75%)}
.private{font:9px/1.5 Consolas,monospace;letter-spacing:1.2px;display:flex;justify-content:space-between;padding:12px 4.5%;border-bottom:1px solid var(--line);color:var(--muted);background:var(--panel)}header{position:relative;z-index:4;margin:0 4.5%;height:104px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--panel)}.brand{display:block;width:139px}.brand img{display:block;width:139px;height:auto}body[data-theme=night] .brand{background:#f5efdf}nav{display:flex;gap:30px;font:12px Consolas,monospace}nav a{display:inline-flex;align-items:center;min-height:44px}.contact-link{border-bottom:1px solid var(--warm);gap:20px}
.hero{position:relative;margin:0 4.5%;min-height:800px;height:calc(100svh - 145px)}.copy{position:relative;z-index:2;padding-top:115px;max-width:720px;pointer-events:auto}.copy a{pointer-events:auto}.eyebrow{font:10px/1.6 Consolas,monospace;letter-spacing:1px;color:var(--accent);margin:0 0 23px}h1{font-size:clamp(49px,4.55vw,70px);font-weight:400;line-height:1.05;letter-spacing:-3px;margin:0 0 25px}h1 em{font-style:normal}.tagline{font-size:19px;line-height:1.6;margin:0 0 20px;letter-spacing:-.25px}.intro{max-width:420px;color:var(--muted);font-size:14px;line-height:1.8;margin:0}.intro strong{font-weight:400}.primary,.secondary{display:inline-flex;gap:28px;align-items:center;justify-content:center;min-height:48px;padding:16px 22px;font:12px/1.5 Consolas,monospace;border:1px solid var(--accent);transition:background 130ms,color 130ms}.primary{background:#164b9d;color:#fffaf0;margin-top:26px}.primary:hover{background:#b43c18;border-color:#b43c18;color:#fffaf0;text-decoration:none}.secondary{color:var(--accent);background:var(--panel)}.secondary:hover{border-color:var(--warm)}.credentials{font:10px/1.6 Consolas,monospace;margin:20px 0 0;color:var(--muted)}.credentials a{display:inline-flex;align-items:center;min-height:44px}.hero-foot{position:absolute;bottom:35px;left:0;display:grid;gap:13px;font:9px/1.6 Consolas,monospace;letter-spacing:.7px;color:var(--muted)}.hero-foot a{display:inline-flex;align-items:center;gap:35px;min-height:44px;color:var(--accent)}
#interaction-zone{position:absolute;right:0;top:8px;width:43%;height:calc(100% - 60px);z-index:1;touch-action:pan-y;cursor:grab;user-select:none;-webkit-user-select:none}#interaction-zone[data-dragging=true]{cursor:grabbing}.zone-corner{position:absolute;right:4px;top:12px;font:20px Consolas,monospace;color:var(--accent);opacity:.5}#gesture-hint{position:absolute;top:20px;right:0;padding:7px 10px;font:9px/1.7 Consolas,monospace;letter-spacing:.4px;color:var(--muted);background:var(--panel);pointer-events:none}#gesture-hint span{font-size:8px}#interaction-zone[data-unavailable=true]{cursor:default}
.section{position:relative;margin:0 4.5%;padding:100px 0;max-width:650px;scroll-margin-top:35px}.section:before{content:'';position:absolute;z-index:-1;inset:0 -42px;background:linear-gradient(90deg,var(--paper) 0%,var(--panel) 79%,transparent 100%);pointer-events:none}h2{font-size:44px;font-weight:400;line-height:1.14;letter-spacing:-1.7px;margin:0 0 35px}h3{font-size:21px;font-weight:400;line-height:1.4;letter-spacing:-.35px;margin:0 0 11px}.lead{font-size:18px;line-height:1.7;margin:0 0 24px;max-width:590px}.section>p:not(.eyebrow):not(.lead){max-width:590px;color:var(--muted)}.service-list article{display:grid;grid-template-columns:48px 1fr;gap:12px;padding:25px 0;border-top:1px solid var(--line)}.service-list article:last-child{border-bottom:1px solid var(--line)}.service-number{font:10px/2 Consolas,monospace;color:var(--warm)}.service-list p{margin:0;font-size:15px;line-height:1.8;color:var(--muted);max-width:530px}.scope-note{font:12px/1.8 Consolas,monospace;margin:24px 0 0}.credentials-list{margin:30px 0}.credentials-list>div{display:grid;grid-template-columns:145px 1fr;gap:15px;border-top:1px solid var(--line);padding:18px 0}.credentials-list dt{font:11px/1.8 Consolas,monospace;color:var(--accent)}.credentials-list dd{margin:0;font-size:14px;line-height:1.8}.quiet{font-size:14px;line-height:1.9}.email-address{display:inline-flex;align-items:center;min-height:48px;font-size:clamp(17px,2vw,26px);letter-spacing:-.5px;border-bottom:1px solid var(--warm);gap:20px;overflow-wrap:anywhere}.contact-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:25px}.contact-actions .primary{margin:0}#contact-status{font:11px/1.7 Consolas,monospace;min-height:19px;margin:18px 0}.enquiry{padding-bottom:145px}
.stress-key{position:absolute;right:4.5%;top:260px;width:215px;z-index:3;color:var(--muted);background:var(--panel);padding:12px;font:9px/1.6 Consolas,monospace;border:1px solid var(--line)}.stress-key b{font-weight:400;letter-spacing:1px}.stress-ramp{height:6px;margin-top:9px;background:linear-gradient(90deg,#0e3894,#0094bf,#4db57a,#f7bf1f,#d62914)}.stress-ticks{display:flex;justify-content:space-between}.stress-key p{margin:8px 0 0}.stress-key a{display:inline-flex;align-items:center;min-height:44px}body[data-palette=mono] .stress-ramp{background:#53616b}body[data-palette=mono] .stress-ticks{visibility:hidden}
.view-controls{position:fixed;right:4.5%;bottom:16px;z-index:10;width:370px;font:10px/1.6 Consolas,monospace;text-align:right}.view-controls>details{background:var(--panel);border:1px solid var(--line)}.view-controls summary{min-height:44px;display:flex;align-items:center;justify-content:space-between;padding:10px 12px;list-style:none;color:var(--muted)}.view-controls summary::-webkit-details-marker{display:none}.view-controls details[open]>summary>span{transform:rotate(45deg)}.control-body{padding:0 7px 7px}.quick-controls{display:flex;gap:3px;justify-content:space-between}.view-controls button,.view-controls select{min-width:44px;min-height:44px;border:1px solid var(--line);padding:6px;background:var(--paper);color:var(--ink);font:10px Consolas,monospace}.view-controls button[aria-pressed=true]{background:var(--accent);color:var(--paper)}#pulse{font-size:9px;min-width:80px}.scene-settings{border-top:1px solid var(--line);margin-top:7px}.render-settings{display:grid;grid-template-columns:1fr 1fr;gap:10px;text-align:left;padding:4px 5px 10px}.render-settings label{font-size:9px;color:var(--muted)}.render-settings select{display:block;width:100%;margin-top:5px;font-size:10px}#status{font-size:8px;color:var(--muted);margin:6px 5px 0;text-align:left}
footer{background:var(--paper);border-top:1px solid var(--line);padding:40px 4.5% 240px;font:11px/1.9 Consolas,monospace;color:var(--muted)}.footer-rule{letter-spacing:4px;color:var(--accent);margin-bottom:25px}.footer-row{display:flex;justify-content:space-between;max-width:700px;gap:20px}.footer-row p{margin:0}.footer-row span{font-size:10px}.footer-row a{min-height:44px;display:inline-flex;align-items:center}.footer-row+details{margin-top:30px}footer details{max-width:700px;border-top:1px solid var(--line);padding:0}footer summary{min-height:48px;padding:13px 0;cursor:pointer}footer details p{font:12px/1.9 Arial,sans-serif}footer pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:10px}footer #model{scroll-margin-top:25px}
@media(min-width:1700px){.copy{padding-top:145px}.hero{min-height:870px}}
@media(max-width:900px) and (min-width:701px){h1{font-size:48px}.copy{max-width:570px}.stress-key{width:175px}.section{max-width:560px}.intro{max-width:360px}}
@media(max-width:700px){.private{padding:10px 6%;font-size:8px;letter-spacing:.6px}.private span:last-child{display:none}header{margin:0 6%;height:88px}.brand,.brand img{width:115px}nav{gap:15px;font-size:10px}.contact-link{gap:6px}.hero{margin:0 6%;height:auto;min-height:1030px;padding-top:300px}.copy{padding-top:0;max-width:none}h1{font-size:clamp(34px,9.4vw,45px);line-height:1.08;letter-spacing:-1.7px;margin-bottom:24px}.eyebrow{font-size:9px;letter-spacing:.5px;margin-bottom:20px}.tagline{font-size:16px;line-height:1.7;letter-spacing:0}.intro{font-size:14px;max-width:340px}.desktop{display:none}.primary,.secondary{font-size:11px;padding:14px 18px;min-height:48px}.credentials{font-size:9px}.hero-foot{bottom:35px;font-size:8px;gap:8px;max-width:100%}.hero-foot span{max-width:290px}.wash{background:linear-gradient(180deg,#f5efdf00 0%,#f5efdf05 29%,#f5efdfbf 42%,#f5efdfed 54%,#f5efdf 76%)}body[data-theme=night] .wash{background:linear-gradient(180deg,#07131700 0%,#07131711 29%,#071317d4 43%,#071317f2 56%,#071317 76%)}#interaction-zone{top:0;left:0;right:0;width:100%;height:280px}#gesture-hint{right:0;top:auto;bottom:4px;font-size:8px;padding:6px 9px}.zone-corner{top:12px}.stress-key{top:145px;right:6%;width:174px;padding:9px;font-size:8px}.stress-key a{min-height:44px}.stress-key p{font-size:8px}.section{margin:0 6%;max-width:none;padding:75px 0;scroll-margin-top:25px}.section:before{inset:0 -6.9%;background:var(--panel)}h2{font-size:34px;letter-spacing:-1.2px;margin-bottom:30px}h3{font-size:19px}.service-list article{grid-template-columns:29px 1fr;gap:8px;padding:23px 0}.service-list p{font-size:14px}.lead{font-size:16px;line-height:1.8}.section>p{font-size:14px}.credentials-list>div{grid-template-columns:1fr;gap:7px}.credentials-list dd{font-size:14px}.email-address{font-size:clamp(16px,4.5vw,21px);gap:10px;letter-spacing:-.3px}.contact-actions{gap:10px}.enquiry{padding-bottom:90px}.view-controls{right:0;bottom:0;width:100%;padding:0 6% 7px;background:var(--panel);border-top:1px solid var(--line)}.view-controls>details{border:0}.view-controls>details>summary{padding:10px 0}.control-body{padding:0 0 5px}.quick-controls{gap:3px}.view-controls button{font-size:9px;padding:5px}#pulse{min-width:76px;font-size:8px}.render-settings select{font-size:11px}.view-controls>details[open]{max-height:65svh;overflow-y:auto}footer{padding:35px 6% 110px}.footer-row{display:block}.footer-row a{margin-top:12px}.footer-rule{font-size:9px;letter-spacing:2px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}html{scroll-behavior:auto}}
/* Short, precise states; no automatic decorative loops. */
header nav a{position:relative}header nav a:after{content:'';position:absolute;left:0;right:0;bottom:4px;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform 160ms ease}header nav a:hover:after,header nav a:focus-visible:after,header nav a[aria-current=location]:after{transform:scaleX(1)}header nav a:hover{text-decoration:none}.primary span,.email-address span{display:inline-block;transition:transform 150ms ease}.primary:hover span,.primary:focus-visible span,.email-address:hover span{transform:translate(2px,-2px)}.primary:active,.secondary:active,.view-controls button:active{transform:translateY(1px)}.secondary,.view-controls button{transition:border-color 140ms,color 140ms,background 140ms}.view-controls button:hover{border-color:var(--warm)}.view-controls summary>span{transition:transform 150ms}.reveal{transition:opacity 240ms ease var(--delay,0ms),transform 240ms ease var(--delay,0ms)}.reveal.pending{opacity:0;transform:translateY(8px)}@media(prefers-reduced-motion:reduce){.reveal.pending{opacity:1;transform:none}.primary:hover span,.primary:focus-visible span,.email-address:hover span{transform:none}.primary:active,.secondary:active,.view-controls button:active{transform:none}}

#interaction-zone[data-paused=true]{cursor:default}

body[data-theme=paper] .brand{mix-blend-mode:multiply}
.email-address:focus-visible span{transform:translate(2px,-2px)}
@media(max-width:360px){.quick-controls{flex-wrap:wrap;justify-content:flex-start}.quick-controls #pulse{flex:1}.render-settings{gap:8px}}
@media(prefers-reduced-motion:reduce){.email-address:focus-visible span{transform:none}}

/* Revision 09: less obstruction, clearer touch composition and safe focus. */
html{scroll-padding-bottom:min(calc(var(--controls-height,70px) + 24px),40svh)}
.stress-key{padding:0 12px}.stress-key summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;list-style:none;cursor:pointer;font-size:9px;letter-spacing:.5px}.stress-key summary::-webkit-details-marker{display:none}.stress-key details[open]>summary>span:last-child{transform:rotate(45deg)}.stress-key summary>span:last-child{font-size:13px;transition:transform 150ms}.stress-key .stress-ramp{margin-top:0}.stress-key details[open]{padding-bottom:7px}
#interaction-zone[aria-busy=true]{cursor:progress}
@media(max-width:700px){.hero{padding-top:240px;min-height:950px}.stress-key{top:140px;right:6%;width:190px;padding:0 9px}#interaction-zone{height:220px}#gesture-hint{bottom:3px}.hero-foot{bottom:32px}}
@media(max-width:360px){.hero{padding-top:220px;min-height:940px}#interaction-zone{height:205px}nav{gap:12px}.brand,.brand img{width:108px}}
@media(forced-colors:active){.scene,.wash{display:none}.stress-ramp{forced-color-adjust:none}.primary,.secondary,.view-controls button,.view-controls select,.stress-key{border:1px solid ButtonText}.view-controls button[aria-pressed=true]{outline:2px solid Highlight;outline-offset:-4px}}
.view-controls{font-size:11px}.view-controls button,.view-controls select{font-size:11px}.render-settings label{font-size:10px}.render-settings select{font-size:11px}#status{font-size:10px;line-height:1.6}#pulse{font-size:10px}.stress-key summary{font-size:10px}.stress-key{font-size:10px}#gesture-hint{font-size:10px}#gesture-hint span{font-size:9px}
@media(max-width:700px){nav{font-size:12px;gap:14px}.stress-key{width:202px}.stress-key summary{font-size:10px}.stress-key p{font-size:9px}.view-controls button{font-size:10px}#pulse{font-size:9px}.render-settings label{font-size:11px}.render-settings select{font-size:12px}#gesture-hint{font-size:10px}}
@media(max-width:360px){nav{font-size:11px;gap:10px}.contact-link{gap:4px}}
@media(min-width:701px){.view-controls>details[open]{max-height:calc(100svh - 32px);overflow-y:auto}}
#interaction-zone{touch-action:pan-y pinch-zoom}
@media(forced-colors:active){#interaction-zone,.stress-key,.view-controls{display:none}}
.reveal:focus{opacity:1;transform:none;transition:none}

/* Night applies the same lightening to the field and its legend, retaining the stress scale. */
body[data-theme=night]:not([data-palette=mono]) .stress-ramp{background:linear-gradient(90deg,#627eb9,#59b9d6,#8bcfa9,#fad66d,#e47467)}

/* Revision 10: content grows with reading preferences; no copy/footer overlap. */
header{height:auto;min-height:104px;padding-block:15px;gap:12px 20px;flex-wrap:wrap}
header nav{flex-wrap:wrap;max-width:100%}
.hero{height:auto;min-height:max(800px,calc(100svh - 145px));display:flex;flex-direction:column}
.copy{flex:none}
.hero-foot{position:static;bottom:auto;left:auto;margin-top:auto;padding-top:60px;padding-bottom:35px;align-self:flex-start}
.hero>.stress-key{top:115px;right:0}
.register-link{display:inline-flex;align-items:center;gap:12px;min-height:44px;font:11px/1.6 Consolas,monospace;color:var(--accent);text-decoration:underline;text-underline-offset:4px}
.register-link:hover{color:var(--warm)}
.load-model{position:absolute;right:0;bottom:4px;min-height:48px;padding:10px 14px;border:1px solid var(--accent);background:var(--paper);color:var(--ink);font:11px/1.6 Consolas,monospace;text-align:left}
.load-model span{display:block;color:var(--muted);font-size:10px}
.load-model:hover{border-color:var(--warm)}
#interaction-zone[data-deferred=true]{cursor:default}
#interaction-zone[data-deferred=true] #gesture-hint{display:none}
@media(min-width:1700px){.hero{min-height:max(870px,calc(100svh - 145px))}}
@media(max-width:700px){
 header{min-height:88px;padding-block:13px}
 .hero{min-height:950px}
 .hero>.stress-key{top:15px;right:0}
 .hero-foot{padding-top:48px;padding-bottom:32px}
 .credentials{margin-top:10px}
 .copy .tagline{margin-bottom:16px}
 .copy .intro{line-height:1.65}
}
@media(max-width:360px){.hero{min-height:940px}}

/* The mobile art stage sizes itself from its controls, including large text. */
.model-stage,.stage-tools,.stage-bottom{display:contents}
.hero .stress-key{top:115px;right:0}
.hero #gesture-hint{top:28px;right:0}
.hero .load-model{top:28px;bottom:auto;right:0}
h1,h2,h3{overflow-wrap:anywhere}
@media(max-width:700px){
 .hero{padding-top:0}
 .copy{padding-top:20px}
 .model-stage{display:block;position:relative;order:-1;flex:none}
 .stage-tools{display:flex;position:relative;min-height:220px;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:20px;padding:15px 0 12px;pointer-events:none}
 .stage-bottom{display:block;max-width:100%;pointer-events:none}
 .hero .model-stage #interaction-zone{inset:0;width:100%;height:100%}
 .hero .model-stage .stress-key{position:static;flex:none;max-width:100%;pointer-events:auto}
 .hero #gesture-hint{position:static;inset:auto;max-width:100%;margin:0}
 .hero .load-model{position:static;inset:auto;max-width:100%;pointer-events:auto}
}
@media(max-width:360px){.stage-tools{min-height:200px}}
@media(forced-colors:active){.model-stage{display:none}.hero{min-height:0}.copy{padding-top:35px}.hero-foot{margin-top:0}}

.load-model{z-index:3}
.stage-tools{z-index:2}
#interaction-zone[data-deferred=true]{pointer-events:none}
.load-model[aria-disabled=true]{cursor:progress;opacity:.65}
