/* Venetian-plaster panel. The CSS texture is the fallback; the WebGPU canvas fades in over it. */
.nh-plaster{position:relative;overflow:hidden;isolation:isolate;--p1:#f3ede2;--p2:#e4dac8;--p3:#cdbfa8}
.nh-plaster[data-tone=greige]{--p1:#ddd5c7;--p2:#c9bdaa;--p3:#ad9f8a}
.nh-plaster[data-tone=sage]{--p1:#c9cfbf;--p2:#b3bba6;--p3:#949c87}
.nh-plaster-bg{position:absolute;inset:0;z-index:-1;background:
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='600'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.006 .011' numOctaves='5' seed='11'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .45 0 0 0 0 .38 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E") center/cover,
  radial-gradient(120% 90% at 20% 15%,var(--p1),transparent 60%),
  radial-gradient(90% 80% at 85% 80%,var(--p3),transparent 65%),
  linear-gradient(160deg,var(--p1),var(--p2) 55%,var(--p3));
  background-blend-mode:soft-light,normal,normal,normal}
/* Material fallbacks (wood / paneling / brass) for the homepage service rows. */
.nh-plaster[data-tone=wood] .nh-plaster-bg{background:repeating-linear-gradient(180deg,transparent 0 9px,rgba(178,150,106,.18) 10px,transparent 12px 26px),linear-gradient(170deg,#efe5d1,#e5d6bb);background-blend-mode:normal}
.nh-plaster[data-tone=paneling] .nh-plaster-bg{background:repeating-linear-gradient(90deg,#f1eadf 0 18px,#e3d8c6 30px,#f7f2e9 34px,#f1eadf 52px);background-blend-mode:normal}
.nh-plaster[data-tone=brass] .nh-plaster-bg{background:repeating-linear-gradient(180deg,transparent 0 3px,rgba(160,130,85,.14) 4px,transparent 5px),linear-gradient(100deg,#efe2c2,#f7eedb 45%,#e2cc9c);background-blend-mode:normal}
.nh-plaster canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-1;opacity:0;transition:opacity 1.2s ease}
.nh-plaster canvas.is-live{opacity:1}
@media(prefers-reduced-motion:reduce){.nh-plaster canvas{transition:none}}
