/* Testmorrow / restrained, consistent motion and a clearer opening. */
:root{--motion-fast:180ms;--motion-control:320ms;--motion-scene:420ms;--ease:cubic-bezier(.22,1,.36,1)}
html{scrollbar-gutter:stable}
.hero-installation{padding-top:0}
.installation-stage{margin-top:0;height:min(49vw,680px);min-height:480px}
.installation-stage h1{top:32%;transition:transform 650ms var(--ease)}
.installation-footer{margin-top:-8px;padding-bottom:40px;gap:70px;grid-template-columns:1.25fr .75fr;align-items:end}
.installation-message h2{font-size:29px;letter-spacing:-1.1px;line-height:1.25}
.installation-message p{max-width:440px;font-size:14px;line-height:1.8;color:#6a6864;margin-top:18px}
.installation-message .text-link{margin-top:18px}
.inspection-control{max-width:320px;padding-bottom:5px}
#inspect-toggle{padding:19px 0;gap:15px;border-color:#ccc9c2}
#inspect-toggle .inspect-label{font-size:20px;letter-spacing:-.65px}
.inspect-symbol{font-size:30px}.inspect-plus{font-size:25px}
#inspect-toggle:hover .inspect-symbol{transform:translate(2px,-2px)}
#motion-toggle{font:inherit;letter-spacing:inherit;color:inherit;padding:0;min-height:0;gap:0;display:inline-flex}
#motion-toggle:disabled{cursor:default;opacity:.75}
.footer-bottom>div{flex-wrap:wrap;row-gap:12px}

/* A single active marker travels between tabs, rather than four unrelated
   underlines flashing on and off. It stays attached to the scrollable rail. */
.lab-tabs,.report-tabs,.story-buttons{position:relative}
.tab-indicator{position:absolute;left:0;bottom:-1px;height:2px;background:var(--orange);pointer-events:none;transition:transform var(--motion-scene) var(--ease),width var(--motion-scene) var(--ease);z-index:2}
.lab-tabs button:after{display:none}
.report-tabs button,.story-buttons button,.story-buttons button[aria-pressed=true]{border-bottom-color:transparent}
.lab-tabs button,.report-tabs button,.story-buttons button{transition:color var(--motion-fast) ease}
.lab-tabs{scrollbar-width:none;scroll-padding-inline:12px}.lab-tabs::-webkit-scrollbar{display:none}
.journey-copy h3{min-height:2.24em}
.journey-copy>p:not(.lab-note){min-height:5.55em}
.run-steps li{min-height:30px;transition:color 220ms ease}
.step-state{transition:background 220ms ease,border-color 220ms ease,color 220ms ease}
.run-steps li.active .step-state{animation:none;box-shadow:0 0 0 3px #f7460e12}
.sample-screen{min-height:390px}
.sample-content{min-height:270px}
.console-output{min-height:54px}
.finding-banner{min-height:70px}
.finding-banner[hidden]{display:flex!important;visibility:hidden;pointer-events:none;opacity:0}
.demo-console{align-self:center}
.story-caption{min-height:210px}
.anatomy-layer{transition:opacity var(--motion-scene) var(--ease);backface-visibility:hidden}
.story-buttons .tab-indicator{height:1px}
.manifesto-asterisk{animation-duration:45s}
.report-panels{position:relative}
#report-panels{min-height:300px}
dialog[open]{animation:none}
dialog::backdrop{animation:backdrop-in 260ms ease both}
dialog.is-closing::backdrop{animation:backdrop-out 180ms ease both}
.mobile-nav{overflow:clip;transform-origin:top}
.menu-toggle span{transition:transform 280ms var(--ease),opacity 180ms ease}
.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(3px) rotate(45deg)}
.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-4px) rotate(-45deg)}
.ledger-row,.faqs details{box-sizing:border-box}
.ledger-row summary,.faqs summary{outline-offset:-4px}
.ledger-toggle,.faqs summary .icon{transition:transform var(--motion-control) var(--ease),color 180ms ease}
.button,.nav-cta,.round-link,.giant-arrow,.dialog-close{transition:background 180ms ease,color 180ms ease,border-color 180ms ease,transform 320ms var(--ease),box-shadow 320ms var(--ease)}
.button .icon,.text-link .icon,.nav-cta .icon,.giant-arrow svg{transition:transform 320ms var(--ease)}
.text-link .icon{transform:translate(0,0)}
@media(hover:hover){.button:hover .icon,.nav-cta:hover .icon,.text-link:hover .icon{transform:translate(2px,-2px)}.giant-arrow:hover{transform:none}.giant-arrow:hover svg{transform:translate(3px,-3px)}.button:hover{transform:translateY(-1px)}}
.button:active,.nav-cta:active,.round-link:active,.giant-arrow:active{transform:translateY(1px)}
input,select,textarea{transition:border-color 180ms ease,box-shadow 180ms ease,background 180ms ease}
input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:#d04b25;box-shadow:0 0 0 3px #f7460e10}
@keyframes backdrop-in{from{background-color:#25232100;backdrop-filter:blur(0)}to{background-color:#252321c9;backdrop-filter:blur(6px)}}
@keyframes backdrop-out{from{background-color:#252321c9;backdrop-filter:blur(6px)}to{background-color:#25232100;backdrop-filter:blur(0)}}
@media(max-width:1200px){.installation-stage{height:570px}.installation-message h2{font-size:27px}.installation-message p{font-size:13px}.story-caption{min-height:235px}}
@media(max-width:960px){.installation-footer{gap:45px}.installation-message h2{font-size:24px}.installation-message p{font-size:12px}.inspection-control{max-width:260px}#inspect-toggle .inspect-label{font-size:18px}.sample-screen{min-height:370px}.sample-content{min-height:260px}}
@media(max-width:720px){
  .installation-stage{height:440px;min-height:0;margin:0}.installation-stage h1{top:26%}
  .installation-footer{grid-template-columns:1fr;gap:25px;padding-top:0;margin-top:0;padding-bottom:30px}
  .installation-message h2{font-size:25px;line-height:1.3}.installation-message p{font-size:13px;max-width:370px;line-height:1.8;margin-top:16px}
  .inspection-control{max-width:100%;padding:0}.inspect-symbol{font-size:25px}#inspect-toggle{padding:16px 0}#inspect-toggle .inspect-label{font-size:18px}
  .lab-layout{align-items:start}.journey-copy>p:not(.lab-note){min-height:5.4em}.sample-screen{min-height:370px}.sample-content{min-height:260px}.console-output{min-height:55px}.finding-banner{min-height:75px}
  .story-caption{min-height:150px}.anatomy-layer{will-change:auto;top:31%;height:210px}
  .layer-surface{transform:translate3d(calc(var(--story-progress) * -8px),calc(var(--story-progress) * -38px),50px) rotateX(calc(16deg - var(--story-progress) * 10deg)) rotateY(-5deg) rotateZ(calc(-8deg + var(--story-progress) * 6deg))}
  .layer-handoffs{transform:translate3d(-10px,calc(8px + var(--story-progress) * 4px),15px) rotateX(calc(16deg - var(--story-progress) * 14deg)) rotateZ(calc(-8deg + var(--story-progress) * 7deg))}
  .layer-evidence{transform:translate3d(0,calc(18px + var(--story-progress) * 3px),0) rotateX(calc(16deg - var(--story-progress) * 14deg)) rotateZ(calc(-8deg + var(--story-progress) * 9deg))}
  .footer-bottom>div{column-gap:22px;row-gap:15px}
}
@media(max-width:370px){.installation-stage{height:390px}.installation-message h2{font-size:22px}.installation-message p{font-size:12px}.sample-screen{padding-inline:16px}.sample-app-header .mono{font-size:5px}.story-caption{min-height:160px}}
@media(max-width:720px) and (max-height:740px){.anatomy-sticky{min-height:660px;height:100svh}.anatomy-layer{height:195px;top:28%}.anatomy-heading{top:10%;font-size:35px}.story-caption{bottom:13%;min-height:145px}.story-caption h3{font-size:23px}.story-caption>p:last-child{font-size:10px}.surface-success{padding-top:12px}.surface-success>div{margin-top:7px;padding-top:7px}.layer-evidence{transform:translate3d(0,calc(10px + var(--story-progress) * 8px),0) rotateX(calc(22deg - var(--story-progress) * 20deg)) rotateZ(calc(-8deg + var(--story-progress) * 9deg))}.layer-error{padding-top:14px}.layer-error h3{font-size:23px}.layer-error p{margin-top:7px}.layer-error code{padding-block:7px;margin-top:7px}}
.motion-paused *,.motion-paused *:before,.motion-paused *:after{transition-duration:.01ms!important;animation-duration:.01ms!important}
@media(prefers-reduced-motion:reduce){.tab-indicator{transition:none}dialog::backdrop,dialog.is-closing::backdrop{animation:none}.anatomy-sticky{height:950px;min-height:0}.button:hover{transform:none}}

/* Plain language, less chrome. The hierarchy comes from type and space. */
.hero-installation{overflow:visible}
.hero-sticky{position:sticky;top:0;overflow:clip;background:var(--paper)}
.installation-stage h1{transform:none;transition:none}
.installation-footer{grid-template-columns:1.1fr 1fr;gap:90px;align-items:start;margin-top:0;padding-bottom:30px}
.installation-message h2{font-size:clamp(26px,2.5vw,36px);line-height:1.25;letter-spacing:-.045em}
.hero-offer{max-width:470px;justify-self:end}
.hero-offer p{font-size:14px;line-height:1.8;color:#6a6864;margin:0}
.hero-offer .text-link{font-size:12px;gap:30px;margin-top:20px}
.installation-bottom{justify-content:flex-end;padding-block:17px;font-family:Inter,sans-serif;font-size:10px;letter-spacing:0}
.installation-bottom>a:last-child{max-width:none;gap:20px}
.anatomy-rail{font:11px Inter,sans-serif;color:#c0bcb6}
.layer-chrome{font-family:Inter,sans-serif;font-size:10px;letter-spacing:0}
.layer-alert{font-size:8px}
.layer-error code{font:11px/1.5 Inter,sans-serif}
.handoff-graph{margin-top:65px}.handoff-graph>div{padding-block:20px}
.handoff-graph small{font-size:7px;letter-spacing:0}
.story-caption{min-height:180px}
.story-caption h3{margin-bottom:16px}
.story-controls{justify-content:space-between}.story-skip{margin-left:auto}
.story-buttons button{font:13px Inter,sans-serif;padding:12px 0}.story-buttons button span{font-size:inherit}
.story-skip{font:11px Inter,sans-serif}
.perspective-manifesto h2{max-width:1000px}
.test-lab .section-heading{margin-bottom:40px}
.journey-copy h3{font-size:34px}
.console-header>.mono{font:10px Inter,sans-serif;letter-spacing:0}
.console-header{justify-content:space-between}.console-header>.mono{margin-right:auto;margin-left:12px}
.console-status{font-size:8px}
.browser-address{font-size:10px}
.console-output{font:11px/1.6 Inter,sans-serif}
.method-heading h2{margin-top:0}
.method-steps h3{font-size:25px}.method-steps p{font-size:14px;line-height:1.8}
.evidence-section:before{display:none}
.evidence-copy h2{margin-top:0}
.report-sheet{padding-bottom:28px}
.report-sheet h3{font-size:44px;margin-top:25px;margin-bottom:18px}
.report-sheet .report-meta dt{font-size:7px}.report-sheet .report-meta dd{font-size:9px}
.report-sheet .evidence-trace{font:11px/1.6 Inter,sans-serif}
.report-sheet .report-foot{font:9px/1.5 Inter,sans-serif;margin-top:24px;padding-top:16px;border-top:1px dashed #cfccc6}
.printer-label{font:10px Inter,sans-serif;letter-spacing:0}
.printer-label button{font:10px Inter,sans-serif;gap:9px}
.ledger-row summary{display:flex;gap:20px;padding-block:30px}
.ledger-toggle{margin-left:auto}.ledger-row h3{font-size:clamp(30px,3.6vw,53px)}
.ledger-content{padding-left:0;grid-template-columns:1fr 1.2fr auto;gap:40px}
.ledger-content>p{font-size:14px;line-height:1.8;max-width:280px}
.ledger-content ul{font-size:12px;line-height:1.8}
.ledger-content .button{min-width:220px;font-size:11px}
.faq-section h2{margin-top:0}
.final-main{margin-top:15px}.final-main h2{font-size:clamp(43px,5.6vw,85px)}
.footer-bottom{justify-content:space-between}
.story-caption>p:last-child{line-height:1.85}
@media(max-width:1200px){.installation-footer{gap:60px}.hero-offer p{font-size:13px}.journey-copy h3{font-size:29px}.method-steps h3{font-size:22px}.method-steps p{font-size:13px}.ledger-content{gap:30px}.ledger-content>p{font-size:12px}.ledger-content ul{font-size:11px}.ledger-content .button{min-width:195px}.story-caption{min-height:190px}.report-sheet h3{font-size:37px}}
@media(max-width:960px){.installation-footer{gap:35px}.hero-offer p{font-size:12px}.installation-message h2{font-size:25px}.ledger-content{grid-template-columns:1fr 1fr}.ledger-content .button{grid-column:2}.console-output{font-size:9px}.method-steps p{font-size:12px}.report-sheet h3{font-size:31px}.report-sheet .report-meta dt{font-size:6px}.report-sheet .report-meta dd{font-size:8px}.report-sheet .evidence-trace{font-size:10px}}
@media(max-width:720px){
  .installation-stage{height:400px}.installation-footer{grid-template-columns:1fr;gap:18px;padding-bottom:24px}.hero-offer{max-width:none;justify-self:stretch}.installation-message h2{font-size:25px}.hero-offer p{font-size:13px;line-height:1.75}.hero-offer .text-link{font-size:12px;margin-top:16px}.installation-bottom{font-size:10px;padding-block:15px}
  .anatomy-rail{font-size:10px}.anatomy-rail>span:first-child{max-width:none}.anatomy-heading{font-size:43px}.layer-chrome{font-size:8px}.layer-alert{font-size:7px}.handoff-graph{margin-top:36px}.handoff-graph>div{padding-block:14px}.handoff-graph small{font-size:6px}.layer-error code{font-size:9px}.layer-error p{font-size:9px}.story-caption{min-height:135px}.story-caption h3{font-size:25px}.story-caption>p:last-child{font-size:12px;line-height:1.75}.story-buttons{gap:22px}.story-buttons button{font-size:11px}.story-skip{font-size:10px}
  .perspective-manifesto{padding-block:70px}.manifesto-bottom{margin-top:30px}.lab-tabs button{font-size:12px}.journey-copy h3{font-size:31px}.console-header>.mono{font-size:9px}.console-status{font-size:7px}.console-output{font-size:10px}.method-heading h2{font-size:45px}.method-steps h3{font-size:22px}.method-steps p{font-size:12px}
  .report-sheet h3{font-size:36px}.report-sheet .report-meta dt{font-size:6px}.report-sheet .report-meta dd{font-size:8px}.report-sheet .evidence-trace{font-size:10px}.report-sheet .report-foot{font-size:8px}.services .section-heading h2{font-size:40px}.ledger-row summary{padding-block:24px}.ledger-row h3{font-size:30px}.ledger-toggle{min-width:24px}.ledger-content{display:block;padding:0 0 30px}.ledger-content>p{max-width:330px;font-size:13px}.ledger-content ul{font-size:12px}.ledger-content .button{min-width:220px}.final-main h2{font-size:clamp(31px,6.5vw,48px)}.final-main{margin-block:15px 30px}
}
@media(max-width:370px){.installation-stage{height:360px}.installation-message h2{font-size:22px}.hero-offer p{font-size:12px}.story-caption h3{font-size:23px}.story-caption>p:last-child{font-size:11px}.story-buttons{gap:18px}.story-buttons button,.story-skip{font-size:10px}.report-sheet h3{font-size:30px}.report-sheet .report-meta dt{font-size:5px}.report-sheet .report-meta dd{font-size:7px}.ledger-row h3{font-size:28px}.services .section-heading h2{font-size:35px}}
@media(prefers-reduced-motion:reduce){.hero-sticky{position:relative}}
@media(max-width:720px){.lab-tabs{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.lab-tabs button{font-size:11px;line-height:1.4;padding-inline:0}.story-buttons button{min-height:40px}}

/* One continuous opening: a held reveal, a resting beat, then a rising page. */
:root{--hero-nav-height:86px;--hero-exit:0;--header-exit:0}
.site-header{position:absolute;inset:0 0 auto;width:100%;background:var(--paper)}
.hero-installation{padding-top:0;z-index:1}
.hero-sticky{position:relative;top:0;height:100svh;min-height:560px;padding-top:var(--hero-nav-height);overflow:clip}
.hero-content{display:flex;flex-direction:column;height:100%;transform-origin:50% 38%}
.hero-content .installation-stage{flex:1;min-height:200px;height:auto;margin:0}
.hero-content .installation-footer,.hero-content .installation-bottom{flex-shrink:0}
.hero-content .installation-bottom{justify-content:flex-end}
.hero-motion-active .site-header{position:fixed;transform:translate3d(0,calc(var(--header-exit) * -100%),0);opacity:calc(1 - var(--header-exit));will-change:transform,opacity}
.hero-motion-active .hero-sticky{position:sticky}
.hero-motion-active .hero-content{transform:translate3d(0,calc(var(--hero-exit) * -28px),0) scale(calc(1 - var(--hero-exit) * .025));opacity:calc(1 - var(--hero-exit) * .2);will-change:transform,opacity}
.anatomy-story{z-index:2}
.hero-motion-active .anatomy-story{border-radius:calc((1 - var(--hero-exit)) * 24px) calc((1 - var(--hero-exit)) * 24px) 0 0;overflow:clip;box-shadow:0 -24px 70px #24232112}
@media(max-width:720px){:root{--hero-nav-height:77px}.hero-content .installation-footer{gap:16px;padding-bottom:20px}.hero-content .installation-bottom{padding-block:13px}.hero-motion-active .anatomy-story{border-top-left-radius:calc((1 - var(--hero-exit)) * 16px);border-top-right-radius:calc((1 - var(--hero-exit)) * 16px)}}
@media(max-height:559px){.hero-sticky{height:auto;min-height:0}.hero-content .installation-stage{flex:none;height:360px}}
@media(prefers-reduced-motion:reduce){.hero-sticky{position:relative}.hero-content{transform:none;opacity:1}.anatomy-story{border-radius:0;box-shadow:none}}
.form-trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.form-status{font-size:12px!important;line-height:1.6;min-height:0;margin:0!important;color:var(--orange-dark)!important}
.form-status:not(:empty){margin:0 0 16px!important}
#submit-enquiry:disabled{opacity:.65;cursor:wait;transform:none}
.enquiry-confirmation{padding:22px 0;margin:24px 0;border-block:1px solid var(--line);overflow-wrap:anywhere}
.enquiry-confirmation p:last-child{margin:14px 0 0;font-size:12px}
