/* Interactive objects have real geometry; text and controls remain ordinary HTML. */
.nh-model { position: relative; width: 100%; min-width: 0; height: 480px; isolation: isolate; overflow: clip; }
.nh-model canvas { display: block; position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; }
.nh-scene-fallback { position: absolute; inset: 0; display: grid; place-items: center; pointer-events: none; opacity: 1; visibility: visible; }
.nh-model.is-scene-ready canvas { opacity: 1; transition: opacity 180ms ease; }
.nh-model.is-scene-ready .nh-scene-fallback { opacity: 0; visibility: hidden; transition: none!important; }
.nh-model:not(.is-scene-ready) :is(canvas,.nh-scene-fallback) { transition: none; }
/* Catalogue renderers rotate under a strict budget. One validated surface is
   presented at a time; a class-wide opacity fade cannot expose an empty GPU
   canvas between the HTML, durable still and live frame. Hero is not opted in. */
.nh-model[data-scene-budget="portfolio"] :is(canvas,.nh-scene-fallback) { transition: none; }
.nh-model[data-scene-budget="portfolio"] canvas { opacity: 1; visibility: hidden; z-index: 1; }
.nh-model[data-scene-budget="portfolio"] .nh-scene-snapshot { z-index: 2; }
.nh-model[data-scene-budget="portfolio"][data-scene-presentation="live"] canvas:not(.nh-scene-snapshot),
.nh-model[data-scene-budget="portfolio"][data-scene-presentation="still"] .nh-scene-snapshot { visibility: visible; }
.nh-model[data-scene-budget="portfolio"][data-scene-presentation="fallback"] .nh-scene-fallback { opacity: 1; visibility: visible; }
/* Opted-in catalogue loading starts with the empty card background. Keep the
   semantic/native fallback for no-JS, save-data and explicit renderer failure;
   never replace a valid 3D snapshot with this loading state. */
html[data-portfolio-scenes] .pf-project__model[data-scene-budget="portfolio"]:not([data-scene-failed="true"]) .nh-scene-fallback { opacity: 0; visibility: hidden; }
/* Fade the stable host once its first 3D frame is ready. Switching between a
   validated still and the live canvas never restarts this entrance. */
html[data-portfolio-scenes] .pf-project__model[data-scene-budget="portfolio"] { opacity: 0; transition: none; }
html[data-portfolio-scenes] .pf-project__model[data-scene-budget="portfolio"]:is(.is-scene-ready,[data-scene-failed="true"]) { opacity: 1; transition: opacity 420ms cubic-bezier(.22,1,.36,1); }
@media (prefers-reduced-motion:reduce) { .nh-model :is(canvas,.nh-scene-fallback),.pf-project__model[data-scene-budget="portfolio"] { transition: none!important; } }
/* The unenhanced process remains an ordinary readable list. */
.nh-process--studio { background: #fff; padding-top: 64px; }
.nh-process-pin > .nh-section-head { align-items: flex-start; margin-bottom: 28px; }
.nh-process-pin > .nh-section-head h2 { max-width: 630px; font-size: clamp(38px,4.3vw,62px); }
.nh-process-pin > .nh-section-head > p { max-width: 310px; padding-top: 8px; }
.nh-process-studio { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(0,1fr); gap: 65px; align-items: center; }
.nh-process-model { min-width: 0; position: relative; background: radial-gradient(ellipse at center,#eeefeb 0%,#f8f8f6 52%,#fff 72%); }
.nh-process-model .nh-model { height: 440px; }
.nh-process-fallback { perspective: 1000px; }
.nh-process-fallback .nh-browser { transform: scale(.9) rotateX(12deg) rotateY(-20deg); }
.is-process-scroll .nh-process-fallback .nh-browser__body > * { visibility: hidden; }
.nh-home .nh-scene-hint { color: #747474; font-size: 14px; text-align: center; margin: 0 20px; }
.nh-process-steps { list-style: none; margin: 0; padding: 0; }
.nh-process-steps li { padding: 20px 0; border-bottom: 1px solid #dedede; }
.nh-process-steps li:last-child { border-bottom: 0; }
.nh-process-steps h3 { font-size: clamp(21px,1.85vw,27px); }
.nh-process-number { display: block; font-size: 13px; font-weight: 500; letter-spacing: .04em; color: #b83d00; margin-bottom: 12px; }
.nh-process-steps p { font-size: 16px; color: #636363; line-height: 1.65; margin-top: 12px; max-width: 450px; }
.nh-process-nav { display: none; }
.nh-process-story.is-process-scroll { height: 260svh; position: relative; }
.is-process-scroll .nh-process-pin { position: sticky; top: 100px; height: calc(100svh - 116px); min-height: 584px; display: grid; grid-template-rows: auto minmax(0,1fr) auto; }
.is-process-scroll .nh-section-head { margin: 0; align-items: center; gap: 40px; }
.is-process-scroll .nh-section-head h2 { font-size: clamp(32px,3.5vw,52px); max-width: 700px; }
.is-process-scroll .nh-section-head > p { font-size: 17px; padding: 0; }
.is-process-scroll .nh-process-studio { position: relative; grid-template-columns: minmax(0,.8fr) minmax(0,1.65fr); gap: 24px; min-height: 0; }
.is-process-scroll .nh-process-model { grid-column: 2; grid-row: 1; align-self: stretch; display: grid; grid-template-rows: minmax(0,1fr) auto; }
.is-process-scroll .nh-process-model .nh-model { height: 100%; min-height: 0; }
.is-process-scroll .nh-scene-hint { font-size: 13px; padding-bottom: 14px; }
.is-process-scroll .nh-process-steps { grid-column: 1; grid-row: 1; display: grid; align-items: center; perspective: 1000px; }
.is-process-scroll .nh-process-steps li { grid-area: 1/1; padding: 0 0 16px; border: 0; opacity: var(--panel-opacity,0); transform: translateY(var(--panel-y,25px)); visibility: hidden; pointer-events: none; }
.is-process-scroll .nh-process-steps li.is-active { visibility: visible; pointer-events: auto; }
.is-process-scroll .nh-process-number { font-size: clamp(66px,7vw,110px); line-height: 1; letter-spacing: -.035em; margin-bottom: 24px; color: #ff6418; }
.is-process-scroll .nh-process-steps h3 { font-size: clamp(27px,2.75vw,42px); line-height: 1.13; letter-spacing: -.045em; }
.is-process-scroll .nh-process-steps p { font-size: 17px; max-width: 350px; margin-top: 20px; }
.is-process-scroll .nh-process-nav { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 24px; }
.nh-process-nav button { position: relative; display: flex; align-items: center; gap: 12px; border: 0; background: transparent; padding: 18px 0 16px; font: inherit; font-size: 15px; text-align: left; color: #686868; }
.nh-process-nav button > span:first-child { font-size: 12px; color: #888; }
.nh-process-nav button[aria-pressed=true] { color: #101010; }
.nh-process-nav button[aria-pressed=true] > span:first-child { color: #b83d00; }
.nh-process-nav i { position: absolute; top: 0; left: 0; right: 0; height: 2px; border-radius: 2px; background: #dedede; overflow: hidden; }
.nh-process-nav i::after { content: ''; position: absolute; inset: 0; transform: scaleX(var(--step-fill,0)); transform-origin: left; background: #ff6418; }
.nh-process-nav button:focus-visible { outline: 2px solid #b83d00; outline-offset: 4px; border-radius: 4px; }

.nh-care--studio { margin-top: 112px; padding: 90px 0 0; border-top: 1px solid #dedede; border-radius: 0; background: transparent; }
.nh-care--studio > .nh-section-head { display: block; max-width: 860px; margin-bottom: 24px; }
.nh-care--studio .nh-section-head h2 { font-size: clamp(38px,4.3vw,62px); }
.nh-care--studio .nh-section-head > p { max-width: 565px; margin-top: 24px; }
.nh-care-layout { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.15fr); gap: 65px; align-items: center; }
.nh-care--studio .nh-care-grid { display: block; }
.nh-care--studio .nh-care-grid > a { position: relative; display: flex; gap: 22px; align-items: center; padding: 24px 0; border-bottom: 1px solid #dedede; border-radius: 0; }
.nh-care--studio .nh-care-grid > a:last-child { border-bottom: 0; }
.nh-care--studio .nh-care-grid > a > div { min-width: 0; }
.nh-care-number { align-self: flex-start; padding-top: 6px; color: #969696; font-size: 12px; letter-spacing: .04em; }
.nh-care--studio .nh-care-grid h3 { display: block; font-size: 25px; transition: color 500ms ease; }
.nh-care--studio .nh-care-grid p { margin-top: 7px; font-size: 16px; line-height: 1.6; max-width: 355px; }
.nh-care-arrow { display: grid; place-items: center; flex: 0 0 48px; height: 48px; margin-left: auto; border: 1px solid #d6d6d6; border-radius: 50%; transition: background 650ms ease,border-color 650ms ease,transform 800ms cubic-bezier(.25,0,.2,1); }
.nh-care-arrow svg { width: 19px; height: 19px; transition: transform 800ms cubic-bezier(.25,0,.2,1); }
.nh-care-grid a:focus-visible .nh-care-arrow { background: #ff6418; border-color: #ff6418; }
.nh-care-model { height: 470px; }
.nh-care-fallback { perspective: 1000px; }
.nh-care-fallback .nh-browser { transform: scale(.65) rotateX(8deg) rotateY(-15deg); }
.nh-care-fallback__ring { position: absolute; width: 320px; height: 320px; border: 22px solid #ff6418; border-radius: 50%; transform: rotateX(58deg) rotateZ(-25deg); box-shadow: 0 8px 0 #a53c0c; }
.nh-care--studio .nh-custom { max-width: 790px; border-top: 1px solid #dedede; padding-top: 26px; margin-top: 30px!important; line-height: 1.7; font-size: 15px; }

.nh-contact--studio { background: #101010; color: #fff; padding-block: 108px; overflow: clip; }
.nh-contact--studio .nh-contact-grid { grid-template-columns: minmax(0,1.1fr) minmax(0,1fr); gap: 80px; align-items: center; }
.nh-contact__intro { min-width: 0; }
.nh-contact--studio .nh-contact__intro h2 { font-size: clamp(44px,4.4vw,65px); line-height: 1.07; max-width: 540px; }
.nh-contact--studio h2 > span { display: block; }
.nh-contact--studio h2 > span + span { margin-top: 5px; color: #ff6418; }
.nh-contact--studio .nh-contact__intro > p { color: #bcbcbc; font-size: 18px; margin-top: 25px; }
.nh-contact-model { height: 330px; margin-block: 2px 0; }
.nh-contact--studio .nh-contact-links { margin-top: 0; gap: 4px; }
.nh-contact--studio .nh-contact-links a { padding: 7px 0; background: transparent; color: #fff; font-size: 20px; gap: 16px; }
.nh-contact-links a > span { display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid #555; border-radius: 50%; transition: background 650ms ease,border-color 650ms ease,color 650ms ease,transform 650ms ease; }
.nh-form-stage { position: relative; isolation: isolate; min-width: 0; }
.nh-form-stage::before,.nh-form-stage::after { content: ''; position: absolute; inset: 0; z-index: -1; border-radius: 28px; pointer-events: none; transition: transform 950ms cubic-bezier(.25,0,.2,1); }
.nh-form-stage::before { background: #ff6418; transform: translate(12px,15px) rotate(2deg); }
.nh-form-stage::after { border: 1px solid #ffffff30; transform: translate(-9px,7px) rotate(-2deg); z-index: -2; }
.nh-form-stage:focus-within::before { transform: translate(16px,18px) rotate(0); }
.nh-form-stage:focus-within::after { transform: translate(-12px,10px) rotate(-3deg); }
.nh-contact--studio .nh-form { position: relative; padding: 38px; color: #101010; border-radius: 26px; box-shadow: 0 24px 64px #0003; }
.nh-contact--studio .nh-form > h3 { font-size: 31px; margin-bottom: 14px; }
.nh-form > .nh-form__intro { font-size: 15px; color: #636363; line-height: 1.6; margin-bottom: 25px; }
.nh-contact--studio .nh-form__row { grid-template-columns: 1fr; gap: 20px; }
.nh-contact--studio .nh-form input:not([type=checkbox]),.nh-contact--studio .nh-form textarea { border-color: #dedede; border-radius: 12px; transition: background 350ms ease,border-color 350ms ease; }
.nh-contact--studio .nh-form input:focus,.nh-contact--studio .nh-form textarea:focus { background: #fff; }
.nh-contact--studio :is(a,button):focus-visible { outline-color: #ff8245; }
.nh-contact--studio .nh-form :is(a,button):focus-visible { outline-color: #b83d00; }
.nh-envelope-fallback { width: 270px; height: 178px; margin: auto; transform: perspective(800px) rotateY(-18deg) rotateZ(-8deg); transform-style: preserve-3d; }
.nh-envelope-fallback__body { position: absolute; inset: 0; border-radius: 12px; background: #ff6418; box-shadow: 4px 7px 0 #b64009,0 25px 40px #0006; transform: translateZ(3px); }
.nh-envelope-fallback__body::after { content: ''; position: absolute; inset: 0; background: #ff7939; clip-path: polygon(0 100%,50% 36%,100% 100%); border-radius: inherit; }
.nh-envelope-fallback__flap { position: absolute; inset: 0; border-radius: 12px; background: #ff8c56; clip-path: polygon(0 0,100% 0,50% 64%); transform: translateZ(4px); }
.nh-envelope-fallback__letter { position: absolute; inset: -30px 16px 30px; border-radius: 10px; background: #fff; padding: 24px; transform: translateZ(-2px); }
.nh-envelope-fallback__letter i { display: block; height: 5px; background: #dadada; margin-bottom: 10px; width: 60%; border-radius: 3px; }

.nh-footer--quiet { background: #101010; color: #fff; padding-block: 0 28px; }
.nh-footer--quiet > .nh-wrap { padding-top: 48px; border-top: 1px solid #ffffff25; }
.nh-footer__top { display: grid; grid-template-columns: 1.05fr 1fr 1fr; gap: 40px; align-items: center; }
.nh-footer__brand { color: #fff; font-size: clamp(52px,5.7vw,86px); line-height: 1; letter-spacing: -.065em; }
.nh-footer__brand span { color: #ff6418; }
.nh-footer__people { border-left: 1px solid #ffffff25; padding-left: 36px; }
.nh-footer__people p { color: #fff; font-size: 21px; font-weight: 500; }
.nh-footer__people .nh-text-link { font-size: 16px; gap: 20px; }
.nh-footer--quiet .nh-text-link > span[aria-hidden] { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: #ff6418; color: #101010; }
.nh-footer .nh-footer__description { font-size: 17px; color: #bcbcbc; max-width: 290px; justify-self: end; }
.nh-footer__links { padding-block: 32px 28px; gap: 10px 32px; }
.nh-footer__links a { font-size: 16px; }
.nh-footer__bottom { border-color: #ffffff25; color: #bcbcbc; padding-top: 22px; }
.nh-footer--quiet :is(a,button):focus-visible { outline-color: #ff6418; }

@media (hover:hover) and (pointer:fine) {
  .nh-care-grid a:hover .nh-care-arrow { background: #ff6418; border-color: #ff6418; transform: scale(1.08); }
  .nh-care-grid a:hover .nh-care-arrow svg { transform: rotate(45deg); }
  .nh-care-grid a:hover h3 { color: #b83d00; }
  .nh-contact-links a:hover > span { background: #ff6418; border-color: #ff6418; color: #101010; transform: rotate(-6deg); }
}
@media (max-width:1100px) {
  .nh-care-layout { gap: 36px; }
  .nh-care-model { height: 400px; }
  .nh-contact--studio .nh-contact-grid { gap: 45px; }
  .nh-contact--studio .nh-form { padding: 30px; }
  .nh-contact--studio .nh-contact__intro h2 { font-size: 50px; }
  .nh-footer__top { gap: 28px; }
  .nh-footer__people { padding-left: 25px; }
}
@media (max-width:850px) {
  .nh-care-layout { gap: 25px; grid-template-columns: minmax(0,1.15fr) minmax(0,.85fr); }
  .nh-care--studio .nh-care-grid > a { gap: 14px; }
  .nh-care--studio .nh-care-grid h3 { font-size: 23px; }
  .nh-care-model { height: 360px; }
  .nh-contact--studio .nh-contact-grid { grid-template-columns: 1fr; gap: 44px; }
  .nh-contact--studio .nh-contact__intro { position: relative; min-height: 320px; padding-right: 240px; }
  .nh-contact--studio .nh-contact__intro h2 { font-size: 50px; }
  .nh-contact--studio .nh-contact__intro > p { max-width: 360px; }
  .nh-contact-model { position: absolute; width: 290px; height: 290px; right: -24px; top: 5px; }
  .nh-contact--studio .nh-contact-links { margin-top: 28px; }
  .nh-contact--studio .nh-form-stage { max-width: 720px; width: calc(100% - 14px); }
  .nh-contact--studio .nh-form__row { grid-template-columns: 1fr 1fr; }
  .nh-footer__top { grid-template-columns: 1fr 1fr; }
  .nh-footer .nh-footer__description { grid-column: 1/-1; justify-self: start; max-width: 500px; margin-top: -8px; }
  .nh-footer__brand { font-size: 70px; }
}
@media (max-width:650px) {
  .nh-care--studio .nh-section-head h2 { font-size: clamp(34px,8.5vw,44px); }
  .nh-care--studio { margin-top: 65px; padding-top: 60px; }
  .nh-care--studio > .nh-section-head { margin-bottom: 0; }
  .nh-care--studio .nh-section-head > p { margin-top: 20px; }
  .nh-care-layout { display: flex; flex-direction: column-reverse; gap: 0; align-items: stretch; }
  .nh-care-model { height: 300px; margin-block: 8px; }
  .nh-care--studio .nh-care-grid > a { padding-block: 22px; gap: 14px; }
  .nh-care--studio .nh-care-grid h3 { font-size: 23px; }
  .nh-care--studio .nh-care-grid p { font-size: 15px; }
  .nh-care-arrow { flex-basis: 42px; height: 42px; }
  .nh-care--studio .nh-custom { font-size: 14px; margin-top: 22px!important; padding-top: 22px; }
  .nh-contact--studio { padding-block: 65px 78px; }
  .nh-contact--studio .nh-contact__intro { padding-right: 0; min-height: 0; }
  .nh-contact--studio .nh-contact__intro h2 { font-size: clamp(38px,8.5vw,50px); }
  .nh-contact--studio .nh-contact__intro > p { font-size: 18px; margin-top: 22px; }
  .nh-contact-model { position: relative; inset: auto; width: 100%; height: 280px; margin-block: 0; }
  .nh-contact--studio .nh-contact-links { margin-top: 0; }
  .nh-contact--studio .nh-contact-links a { font-size: 18px; }
  .nh-contact--studio .nh-form { padding: 28px 24px; }
  .nh-contact--studio .nh-form > h3 { font-size: 28px; }
  .nh-contact--studio .nh-form__row { grid-template-columns: 1fr; }
  .nh-form-stage::before { transform: translate(9px,12px) rotate(1deg); }
  .nh-form-stage:focus-within::before { transform: translate(11px,14px) rotate(0); }
  .nh-form-stage::after,.nh-form-stage:focus-within::after { transform: translate(-5px,4px) rotate(-1deg); }
  .nh-footer--quiet > .nh-wrap { padding-top: 38px; }
  .nh-footer__top { grid-template-columns: 1fr; gap: 24px; }
  .nh-footer__brand { font-size: 66px; }
  .nh-footer__people { border: 0; padding: 0; }
  .nh-footer .nh-footer__description { grid-column: auto; margin: 0; max-width: 350px; font-size: 16px; }
  .nh-footer__links { gap: 5px 24px; padding-block: 22px; }
  .nh-footer__links a { font-size: 15px; }
}
@media (prefers-reduced-motion:reduce) {
  .nh-care-arrow,.nh-care-arrow svg,.nh-form-stage::before,.nh-form-stage::after,.nh-contact-links a > span { transition: none!important; }
}

@media (max-width:999px) {
  .nh-process-pin > .nh-section-head { display: block; }
  .nh-process-pin > .nh-section-head > p { max-width: 480px; padding: 0; margin-top: 20px; }
  .nh-process-studio { gap: 32px; }
  .nh-process-model .nh-model { height: 360px; }
}
@media (max-width:650px) {
  .nh-process--studio { padding-top: 60px; }
  .nh-process-pin > .nh-section-head h2 { font-size: clamp(34px,8.5vw,44px); }
  .nh-process-studio { display: flex; flex-direction: column; align-items: stretch; gap: 20px; }
  .nh-process-model .nh-model { height: 250px; }
  .nh-process-fallback .nh-browser { transform: scale(.65) rotateX(12deg) rotateY(-20deg); }
  .nh-process-steps h3 { font-size: 25px; }
  .nh-process-steps p { max-width: none; }
}
