/* Nullworks website style (1.57): the client portal's look for the rest of the site.
   Scoped to body.nws-site, which the plugin adds only while Client Portal → Website is on.
   Same tokens, type and components as the portal and the public catalog. Page content is not
   changed: this restyles Astra and Elementor output and the header, plans and footer the plugin adds. */

@font-face{font-family:"NW Inter";src:url(fonts/inter-latin-wght.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}

body.nws-site{
  --nws-canvas:#f6f6f4;--nws-surface:#fff;--nws-subtle:#f3f3f1;--nws-subtle-2:#ecece9;--nws-line:#e7e7e3;--nws-line-strong:#d6d6d1;
  --nws-ink:#161616;--nws-ink-2:#3c3c39;--nws-muted:#6c6c67;--nws-faint:#94948e;
  --nws-violet:rgba(124,92,230,.20);--nws-blue:rgba(59,102,218,.16);--nws-amber:rgba(225,154,27,.14);
  --nws-shadow-xs:0 1px 2px rgba(22,22,20,.05);
  --nws-shadow-sm:0 1px 2px rgba(22,22,20,.05),0 4px 12px -4px rgba(22,22,20,.08);
  --nws-shadow-md:0 2px 4px rgba(22,22,20,.04),0 14px 32px -10px rgba(22,22,20,.16);
  --nws-shadow-lg:0 10px 24px -8px rgba(22,22,20,.16),0 32px 72px -20px rgba(22,22,20,.30);
  --nws-font:"NW Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --nws-max:1600px;--nws-gutter:40px;--nws-bar:64px;--nws-top:var(--wp-admin--admin-bar--height,0px);
  background:var(--nws-canvas)!important;color:var(--nws-ink);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:clip
}
html:has(body.nws-site){scroll-behavior:smooth;scroll-padding-top:calc(var(--wp-admin--admin-bar--height,0px) + 80px);background:#f6f6f4}
@media (prefers-reduced-motion:reduce){html:has(body.nws-site){scroll-behavior:auto}}
body.nws-site,
body.nws-site :is(h1,h2,h3,h4,h5,h6,p,a,li,dt,dd,span,strong,em,b,small,button,input,select,textarea,label,blockquote,figcaption,td,th){font-family:var(--nws-font)!important}
body.nws-site #page,body.nws-site .site-content,body.nws-site #content{background:transparent!important}
body.nws-site a{text-underline-offset:3px}
body.nws-site :focus-visible{outline:2px solid var(--nws-ink);outline-offset:2px}

/* The theme's own header and footer stay in the page (its scripts expect them) but out of sight. */
body.nws-site #masthead,body.nws-site #colophon,body.nws-site .ast-mobile-popup-drawer{display:none!important}
/* Pages were spaced for a header floating over them; the new header takes its own room. */
body.nws-site .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:first-child{padding-top:0!important;margin-top:0!important}
/* An empty first section only held that space: without widgets it goes, and the next one starts closer. */
body.nws-site .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:first-child:not(:has(.elementor-widget))+.e-con.e-parent:not(:has(.e-n-tabs))>.e-con-inner{padding-top:24px!important}
body.nws-site .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:first-child:not(:has(.elementor-widget)){display:none!important}
/* An empty spacer column at the top of that next section (the legal pages have one) loses its padding too. */
body.nws-site .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:first-child:not(:has(.elementor-widget))+.e-con.e-parent>.e-con-inner>.e-con.e-child:first-child:not(:has(.elementor-widget)),
body.nws-site .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:first-child:not(:has(.elementor-widget))+.e-con.e-parent>.e-con.e-child:first-child:not(:has(.elementor-widget)){--padding-top:0px;--padding-bottom:0px}

/* ---------- top bar ---------- */
.nws-bar{position:sticky;top:var(--nws-top);z-index:60;height:var(--nws-bar);display:flex;align-items:center;background:rgba(246,246,244,.72);-webkit-backdrop-filter:saturate(1.6) blur(16px);backdrop-filter:saturate(1.6) blur(16px);border-bottom:1px solid transparent;transition:border-color .2s,background .2s,box-shadow .2s}
.nws-bar.is-scrolled{border-bottom-color:var(--nws-line);background:rgba(246,246,244,.9);box-shadow:0 10px 30px -22px rgba(22,22,20,.35)}
.nws-bar-in{width:100%;max-width:var(--nws-max);margin:0 auto;padding:0 var(--nws-gutter);display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px}
.nws-bar-logo{justify-self:start;display:inline-flex;align-items:center;opacity:0;transform:translateY(-4px);pointer-events:none;transition:opacity .25s,transform .25s;color:var(--nws-ink);font-weight:700;text-decoration:none}
.nws-bar.has-logo .nws-bar-logo{opacity:1;transform:none;pointer-events:auto}
.nws-bar-logo img{display:block;width:34px;height:auto;filter:brightness(0)}
.nws-nav{justify-self:center;display:flex;align-items:center;gap:2px;padding:4px;border:1px solid var(--nws-line);border-radius:999px;background:rgba(255,255,255,.78);box-shadow:var(--nws-shadow-xs)}
.nws-nav a{display:inline-flex;align-items:center;height:34px;padding:0 16px;border-radius:999px;font-size:14px;font-weight:550;letter-spacing:-.005em;color:var(--nws-ink-2)!important;text-decoration:none!important;white-space:nowrap;transition:background .15s,color .15s}
.nws-nav a:hover{background:var(--nws-subtle-2);color:var(--nws-ink)!important}
.nws-nav a[aria-current="page"]{background:var(--nws-ink);color:#fff!important}
.nws-bar-end{justify-self:end;display:flex;align-items:center;gap:8px;min-width:0}
.nws-lang{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--nws-line);border-radius:999px;background:rgba(255,255,255,.78);box-shadow:var(--nws-shadow-xs)}
.nws-lang a{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:32px;padding:0 9px;border-radius:999px;font-size:12.5px;font-weight:650;letter-spacing:.03em;color:var(--nws-ink-2)!important;text-decoration:none!important;transition:background .15s,color .15s}
.nws-lang a:hover{background:var(--nws-subtle-2);color:var(--nws-ink)!important}
.nws-lang a[aria-current="true"]{background:var(--nws-ink);color:#fff!important}
.nws-portal{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 16px 0 14px;border-radius:999px;background:var(--nws-ink);color:#fff!important;font-size:14px;font-weight:600;text-decoration:none!important;white-space:nowrap;box-shadow:0 1px 2px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.1);transition:background .15s,transform .15s}
.nws-portal:hover{background:#2e2e2c;transform:translateY(-1px)}
.nws-portal svg{flex:none}

/* ---------- header: the big logo, and on the homepage one line and two buttons ---------- */
.nws-hero{position:relative;isolation:isolate;overflow-x:clip;display:flex;flex-direction:column;align-items:center;text-align:center;padding:44px var(--nws-gutter) 40px}
.nws-hero::before{content:"";position:absolute;z-index:-1;left:50%;top:calc(var(--nws-bar) * -1);width:min(1200px,100%);height:calc(100% + var(--nws-bar) + 60px);transform:translateX(-50%);pointer-events:none;background:radial-gradient(30% 42% at 50% 34%,var(--nws-violet),transparent 70%),radial-gradient(24% 36% at 70% 48%,var(--nws-blue),transparent 72%),radial-gradient(24% 34% at 31% 56%,var(--nws-amber),transparent 72%)}
.nws-hero::after{content:"";position:absolute;z-index:-1;left:50%;top:calc(var(--nws-bar) * -1);width:min(1400px,100%);height:calc(100% + var(--nws-bar) + 40px);transform:translateX(-50%);pointer-events:none;background-image:radial-gradient(rgba(22,22,20,.10) 1px,transparent 1.3px);background-size:24px 24px;-webkit-mask-image:radial-gradient(42% 60% at 50% 42%,#000 16%,transparent 78%);mask-image:radial-gradient(42% 60% at 50% 42%,#000 16%,transparent 78%)}
.nws-logo{display:inline-block;line-height:0;text-decoration:none;border-radius:16px}
.nws-logo img{display:block;width:clamp(116px,11vw,150px);height:auto;filter:brightness(0)}
.nws-logo-text{font-size:44px;font-weight:750;letter-spacing:-.04em;color:var(--nws-ink);line-height:1}
.nws-hero.is-home{padding:56px var(--nws-gutter) 64px}
.nws-hero.is-home .nws-logo img{width:clamp(132px,13vw,176px)}
body.nws-site .nws-intro{max-width:24ch;margin:30px auto 0;font-size:clamp(30px,3.5vw,48px);line-height:1.06;font-weight:680;letter-spacing:-.04em;color:var(--nws-ink);text-transform:none!important;text-wrap:balance}
body.nws-site :is(.nws-head h2,.nws-panel h2,.nws-feature-name,.nws-cat-copy strong){text-transform:none!important}
.nws-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:30px}

/* ---------- shared pieces ---------- */
.nws-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 22px;border-radius:12px;border:1px solid var(--nws-line-strong);background:#fff;color:var(--nws-ink)!important;font-size:15px;font-weight:600;letter-spacing:-.005em;text-decoration:none!important;white-space:nowrap;box-shadow:var(--nws-shadow-xs);transition:transform .15s,background .15s,border-color .15s,box-shadow .15s}
.nws-btn:hover{background:var(--nws-subtle);border-color:#c9c9c3}
.nws-btn.is-primary{background:var(--nws-ink);border-color:var(--nws-ink);color:#fff!important;box-shadow:0 1px 2px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.1)}
.nws-btn.is-primary:hover{background:#2e2e2c;border-color:#2e2e2c;transform:translateY(-1px)}
.nws-btn.is-light{background:#fff;border-color:#fff;color:var(--nws-ink)!important;box-shadow:none}
.nws-btn.is-light:hover{background:#ecece9;border-color:#ecece9}
.nws-btn.is-ghost{background:transparent;border-color:rgba(255,255,255,.28);color:#fff!important;box-shadow:none}
.nws-btn.is-ghost:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.5)}
.nws-kicker{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 13px 0 11px;border:1px solid var(--nws-line);border-radius:999px;background:rgba(255,255,255,.75);font-size:12.5px;font-weight:600;color:var(--nws-ink-2)}
.nws-kicker i{width:7px;height:7px;border-radius:50%;background:#2f9a5f;box-shadow:0 0 0 3px rgba(47,154,95,.18)}
.nws-kicker.is-dark{border-color:rgba(255,255,255,.16);background:rgba(255,255,255,.06);color:rgba(255,255,255,.82)}
.nws-wrap{width:100%;max-width:var(--nws-max);margin:0 auto;padding:0 var(--nws-gutter)}

/* ---------- Elementor pages: type ---------- */
body.nws-site .elementor-widget-heading .elementor-heading-title{font-weight:680!important;letter-spacing:-.04em!important;line-height:1.04!important;text-wrap:balance}
body.nws-site .elementor-widget-text-editor{color:var(--nws-ink-2)}
body.nws-site .elementor-icon-box-title,body.nws-site .elementor-icon-box-title *{letter-spacing:-.01em}

/* ---------- homepage: the project tabs become chips ---------- */
body.nws-site .e-con.e-parent:has(.e-n-tabs){background:transparent!important;padding-top:4px!important;padding-bottom:24px!important}
body.nws-site .e-n-tabs{--n-tabs-heading-justify-content:center}
body.nws-site .e-n-tabs-heading{display:flex!important;flex-wrap:wrap;justify-content:center;gap:4px!important;width:max-content;max-width:100%;margin:0 auto 34px!important;padding:5px!important;border:1px solid var(--nws-line);border-radius:999px;background:rgba(255,255,255,.8);box-shadow:var(--nws-shadow-sm);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
body.nws-site .e-n-tab-title{display:inline-flex!important;align-items:center;height:38px!important;padding:0 18px!important;margin:0!important;border:0!important;border-radius:999px!important;background:transparent!important;color:var(--nws-ink-2)!important;box-shadow:none!important;cursor:pointer;transition:background .15s,color .15s}
body.nws-site .e-n-tab-title:hover{background:var(--nws-subtle-2)!important;color:var(--nws-ink)!important}
body.nws-site .e-n-tab-title[aria-selected="true"]{background:var(--nws-ink)!important;color:#fff!important}
body.nws-site .e-n-tab-title .e-n-tab-title-text,body.nws-site .e-n-tab-title .e-n-tab-title-text *{font-size:14.5px!important;font-weight:560!important;line-height:1!important;letter-spacing:-.01em!important;color:inherit!important;background:none!important;text-decoration:none!important;padding:0!important;margin:0!important;border:0!important}
body.nws-site .e-n-tab-title:focus-visible{outline:2px solid var(--nws-ink);outline-offset:2px}

/* ---------- homepage: project cards (content untouched) ---------- */
body.nws-site .e-n-tabs-content .e-grid{gap:20px!important}
body.nws-site .e-n-tabs-content .e-grid>.e-con{position:relative;padding:18px 14px 14px!important;border:1px solid var(--nws-line)!important;border-radius:20px!important;background:var(--nws-surface)!important;box-shadow:var(--nws-shadow-sm);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;justify-content:space-between!important}
body.nws-site .e-n-tabs-content .e-grid>.e-con:hover{transform:translateY(-3px);box-shadow:var(--nws-shadow-md);border-color:var(--nws-line-strong)!important}
body.nws-site .e-n-tabs-content .e-grid>.e-con>.e-con:first-child{padding:0 6px 14px!important;gap:12px!important;align-items:flex-start!important;flex-wrap:nowrap!important}
body.nws-site .e-n-tabs-content .elementor-icon-box-wrapper{display:flex!important;align-items:flex-start!important;gap:8px!important;text-align:left!important}
body.nws-site .e-n-tabs-content .elementor-icon-box-icon{margin:2px 0 0!important;flex:none}
body.nws-site .e-n-tabs-content .elementor-icon-box-icon .elementor-icon{font-size:16px!important;color:var(--nws-faint)!important;fill:var(--nws-faint)!important}
body.nws-site .e-n-tabs-content .elementor-icon-box-icon svg{width:16px!important;height:16px!important}
/* More than two rows of projects: two rows on show and a button that adds the next rows (set by the script). */
body.nws-home .e-n-tabs-content .e-grid>.e-con.nws-more-hidden{display:none!important}
body.nws-home .e-n-tabs-content .e-grid>.e-con.nws-reveal{animation:nws-reveal .5s cubic-bezier(.2,.7,.2,1) both}
@keyframes nws-reveal{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.nws-more{display:inline-flex;align-items:center;gap:8px;align-self:center;height:44px;margin:26px auto 0;padding:0 16px 0 20px;border:1px solid var(--nws-line-strong);border-radius:999px;background:#fff;color:var(--nws-ink);font:600 14px/1 var(--nws-font);letter-spacing:-.005em;box-shadow:var(--nws-shadow-sm);cursor:pointer;transition:background .15s,border-color .15s,transform .15s}
.nws-more:hover{background:var(--nws-subtle);border-color:#c9c9c3;transform:translateY(-1px)}
/* The theme paints every focused button black; this one stays white after a click. */
body.nws-site button.nws-more,body.nws-site button.nws-more:focus{background:#fff;color:var(--nws-ink);border-color:var(--nws-line-strong)}
body.nws-site button.nws-more:hover{background:var(--nws-subtle);color:var(--nws-ink);border-color:#c9c9c3}
body.nws-site button.nws-more:focus-visible{outline:2px solid var(--nws-ink);outline-offset:2px}
.nws-more b{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:var(--nws-ink);color:#fff;font-size:12px;font-weight:650;line-height:1}
.nws-more b[hidden]{display:none}
.nws-more svg{transition:transform .2s ease}
.nws-more[aria-expanded="true"] svg{transform:rotate(180deg)}
.nws-more[hidden]{display:none!important}
/* One card per row: the projects become a row you swipe sideways instead of a long column. */
body.nws-home .e-n-tabs-content .e-grid.nws-swipe{display:grid!important;grid-auto-flow:column!important;grid-template-columns:none!important;grid-template-rows:none!important;grid-auto-columns:min(82%,420px)!important;overflow-x:auto!important;overflow-y:hidden!important;scroll-snap-type:x mandatory;scroll-padding-inline:2px;overscroll-behavior-x:contain;padding:4px 2px 16px!important;scrollbar-width:none}
body.nws-home .e-n-tabs-content .e-grid.nws-swipe::-webkit-scrollbar{display:none}
body.nws-home .e-n-tabs-content .e-grid.nws-swipe>.e-con{scroll-snap-align:start;width:auto!important;max-width:none!important}
body.nws-site .e-n-tabs-content .elementor-icon-box-title,body.nws-site .e-n-tabs-content .elementor-icon-box-title *{margin:0!important;font-size:15.5px!important;font-weight:620!important;line-height:1.35!important;color:var(--nws-ink)!important}
body.nws-site .e-n-tabs-content .elementor-widget-text-editor{flex:none!important;width:auto!important;margin:0!important}
body.nws-site .e-n-tabs-content .elementor-widget-text-editor p{margin:1px 0 0!important;padding:3px 9px!important;border-radius:999px;background:var(--nws-subtle);color:var(--nws-muted)!important;font-size:12px!important;font-weight:600!important;line-height:1.35!important;white-space:nowrap;font-variant-numeric:tabular-nums}
body.nws-site .e-n-tabs-content .elementor-widget-image{margin:0!important;border-radius:14px;overflow:hidden;line-height:0}
body.nws-site .e-n-tabs-content .elementor-widget-image a{display:block;overflow:hidden;border-radius:14px}
body.nws-site .e-n-tabs-content .elementor-widget-image img{display:block;width:100%!important;border-radius:14px!important;transition:transform .5s ease}
body.nws-site .e-n-tabs-content .e-grid>.e-con:hover .elementor-widget-image img{transform:scale(1.03)}

/* ---------- contact page ---------- */
body.nws-site .elementor-widget-icon-box .elementor-icon-box-title{letter-spacing:.02em}
body.nws-contact .e-con.e-child[data-element_type="container"]:has(>.elementor-widget-text-editor+.elementor-widget-button),
body.nws-contact .e-con.e-child[data-element_type="container"]:has(>.elementor-widget-text-editor+.e-con .elementor-widget-icon){border-radius:20px!important;background:#161616 linear-gradient(180deg,#1d1d1c 0%,#121212 100%)!important;box-shadow:var(--nws-shadow-lg);border:1px solid #0d0d0d}
/* The page's own call to action takes the footer panel's shape. */
body.nws-contact .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:last-child{position:relative;overflow:hidden;width:calc(100% - var(--nws-gutter) * 2)!important;max-width:calc(var(--nws-max) - var(--nws-gutter) * 2)!important;margin:24px auto 16px!important;border-radius:26px!important;background:#141414!important}
/* The section before it was spaced for a full-width black band; as a panel it sits closer. */
body.nws-contact .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:nth-last-child(2){--padding-bottom:72px}
body.nws-contact .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:last-child::before{content:"";position:absolute;top:-60%;right:-10%;width:70%;height:220%;pointer-events:none;background:radial-gradient(38% 34% at 52% 42%,rgba(124,92,230,.42),transparent 70%),radial-gradient(30% 28% at 74% 62%,rgba(59,102,218,.34),transparent 72%),radial-gradient(24% 22% at 40% 70%,rgba(225,154,27,.22),transparent 72%)}
body.nws-contact .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:last-child>*{position:relative}
body.nws-contact .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:last-child .e-con{background:transparent!important}

/* Buttons on the dark cards and the call to action: the portal's white button. */
body.nws-contact .elementor-widget-button .elementor-button{display:inline-flex!important;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 22px!important;border:0!important;border-radius:12px!important;background:#fff!important;color:var(--nws-ink)!important;font-size:16px!important;font-weight:600!important;line-height:1.2!important;letter-spacing:-.01em!important;text-decoration:none!important;box-shadow:none!important;transition:background .15s,transform .15s}
body.nws-contact .elementor-widget-button .elementor-button:hover{background:#ecece9!important;transform:translateY(-1px)}
body.nws-contact .elementor-widget-button .elementor-button :is(span,svg){font-size:inherit!important;font-weight:inherit!important;color:inherit!important;text-decoration:none!important;border:0!important}
body.nws-contact .elementor-widget-button .elementor-button-icon svg{width:16px!important;height:16px!important}
body.nws-contact .elementor-widget-text-editor{color:rgba(255,255,255,.72)}

/* ---------- long text pages (privacy, terms) ---------- */
body.nws-site:not(.nws-home):not(.nws-contact) .elementor-widget-text-editor{max-width:min(760px,100%);margin-left:auto;margin-right:auto;font-size:16px;line-height:1.7;overflow-wrap:anywhere}
body.nws-site:not(.nws-home):not(.nws-contact) .elementor-widget-text-editor p:has(>strong:only-child){margin-top:28px;margin-bottom:8px;font-size:18px;line-height:1.35;color:var(--nws-ink);letter-spacing:-.015em}
body.nws-site:not(.nws-home):not(.nws-contact) .elementor-widget-text-editor>p:first-child:has(>strong:only-child){margin-top:0;font-size:clamp(34px,4.2vw,52px);line-height:1.05;letter-spacing:-.04em}
body.nws-site:not(.nws-home):not(.nws-contact) .elementor-widget-text-editor p:has(>strong:only-child) strong{font-weight:680}
body.nws-site:not(.nws-home):not(.nws-contact) .elementor-widget-text-editor ul{padding-left:1.2em}
body.nws-site:not(.nws-home):not(.nws-contact) .elementor-widget-text-editor li{margin:4px 0}
body.nws-site:not(.nws-home):not(.nws-contact) .elementor-widget-text-editor a{color:var(--nws-ink);text-decoration:underline}

/* ---------- homepage: plans ---------- */
.nws-plans{position:relative;padding:72px 0 16px}
.nws-head{max-width:720px;margin:0 auto 34px;text-align:center}
.nws-head .nws-kicker{margin-bottom:18px}
body.nws-site .nws-head h2{margin:0;font-size:clamp(32px,3.6vw,48px);line-height:1.06;font-weight:680;letter-spacing:-.04em;color:var(--nws-ink);text-wrap:balance}
body.nws-site .nws-head p{margin:14px auto 0;max-width:60ch;font-size:16.5px;line-height:1.6;color:var(--nws-muted)}
.nws-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.nws-plan-grid.has-feature{grid-template-columns:minmax(0,1.12fr) repeat(2,minmax(0,1fr))}
.nws-plan-grid.has-feature .nws-feature{grid-row:span 3}
.nws-feature{position:relative;overflow:hidden;isolation:isolate;display:flex;flex-direction:column;gap:14px;min-width:0;padding:28px;border:1px solid #0d0d0d;border-radius:22px;background:#161616 linear-gradient(180deg,#1d1d1c 0%,#121212 100%);color:#fff!important;text-decoration:none!important;box-shadow:var(--nws-shadow-lg);transition:transform .2s ease,box-shadow .2s ease}
.nws-feature::before{content:"";position:absolute;z-index:-1;top:-40%;right:-30%;width:90%;height:120%;pointer-events:none;background:radial-gradient(40% 36% at 50% 42%,rgba(124,92,230,.38),transparent 70%),radial-gradient(30% 28% at 72% 64%,rgba(59,102,218,.30),transparent 72%),radial-gradient(26% 22% at 38% 72%,rgba(225,154,27,.18),transparent 72%)}
.nws-feature:hover{transform:translateY(-3px)}
.nws-feature-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.nws-pill{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:650;letter-spacing:-.005em}
.nws-pill.is-popular{background:#f5c451;color:#231700}
.nws-feature-cat{font-size:13px;font-weight:550;color:rgba(255,255,255,.62)}
.nws-feature-name{display:block;margin-top:6px;font-size:clamp(26px,2.4vw,32px);font-weight:680;line-height:1.1;letter-spacing:-.035em;color:#fff}
.nws-feature-tag{display:block;font-size:15px;line-height:1.55;color:rgba(255,255,255,.72)}
.nws-feature-price{display:flex;align-items:baseline;gap:8px;margin-top:4px}
.nws-feature-price strong{font-size:clamp(30px,2.8vw,38px);font-weight:720;letter-spacing:-.04em;color:#fff;font-variant-numeric:tabular-nums}
.nws-feature-price em{font-style:normal;font-size:14px;color:rgba(255,255,255,.62)}
.nws-specs{display:grid;gap:8px;margin:6px 0 0;padding:16px 0 0;border-top:1px solid rgba(255,255,255,.12)}
.nws-specs>span{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:baseline;gap:8px;font-size:14px;color:rgba(255,255,255,.86)}
.nws-specs b{font-weight:700;color:#fff;font-variant-numeric:tabular-nums}
.nws-specs em{font-style:normal;font-size:12.5px;color:rgba(255,255,255,.55);white-space:nowrap}
.nws-feature-go{display:inline-flex;align-items:center;gap:8px;margin-top:auto;padding-top:10px;font-size:14.5px;font-weight:620;color:#fff}
.nws-feature-go svg{transition:transform .2s}
.nws-feature:hover .nws-feature-go svg{transform:translateX(3px)}
.nws-cat{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"icon copy go" "price price price";align-items:center;gap:14px 14px;min-width:0;padding:20px;border:1px solid var(--nws-line);border-radius:20px;background:var(--nws-surface);color:var(--nws-ink)!important;text-decoration:none!important;box-shadow:var(--nws-shadow-xs);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.nws-cat:hover{transform:translateY(-2px);box-shadow:var(--nws-shadow-md);border-color:var(--nws-line-strong)}
.nws-cat-icon{grid-area:icon;display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--nws-line);border-radius:12px;background:var(--nws-subtle);color:var(--nws-ink-2)}
.nws-cat-copy{grid-area:copy;display:flex;flex-direction:column;gap:2px;min-width:0}
.nws-cat-copy strong{font-size:16px;font-weight:650;letter-spacing:-.015em;color:var(--nws-ink)}
.nws-cat-copy small{font-size:13px;color:var(--nws-muted)}
.nws-cat-price{grid-area:price;display:flex;align-items:baseline;gap:6px;padding-top:14px;border-top:1px solid var(--nws-line)}
.nws-cat-price small{font-size:12.5px;color:var(--nws-muted)}
.nws-cat-price b{font-size:22px;font-weight:700;letter-spacing:-.03em;color:var(--nws-ink);font-variant-numeric:tabular-nums}
.nws-cat-go{grid-area:go;display:grid;place-items:center;width:32px;height:32px;border-radius:999px;color:var(--nws-muted);transition:background .15s,color .15s,transform .2s}
.nws-cat:hover .nws-cat-go{background:var(--nws-ink);color:#fff;transform:translateX(2px)}
.nws-plans-foot{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:12px 18px;margin-top:28px}
.nws-note{font-size:13px;color:var(--nws-muted)}

/* ---------- footer ---------- */
.nws-foot{width:100%;max-width:var(--nws-max);margin:0 auto;padding:40px var(--nws-gutter) 28px}
.nws-panel{position:relative;overflow:hidden;isolation:isolate;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px 48px;padding:52px;border-radius:26px;background:#141414;color:#fff}
.nws-panel::before{content:"";position:absolute;z-index:-1;top:-60%;right:-10%;width:70%;height:220%;pointer-events:none;background:radial-gradient(38% 34% at 52% 42%,rgba(124,92,230,.42),transparent 70%),radial-gradient(30% 28% at 74% 62%,rgba(59,102,218,.34),transparent 72%),radial-gradient(24% 22% at 40% 70%,rgba(225,154,27,.22),transparent 72%)}
.nws-panel .nws-kicker{margin-bottom:18px}
body.nws-site .nws-panel h2{margin:0;color:#fff;font-size:clamp(30px,3.3vw,44px);line-height:1.06;font-weight:680;letter-spacing:-.04em;text-wrap:balance}
body.nws-site .nws-panel p{margin:14px 0 0;max-width:52ch;font-size:16px;line-height:1.6;color:rgba(255,255,255,.72)}
.nws-panel-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
.nws-foot-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 20px;padding:26px 4px 0;font-size:13.5px;color:var(--nws-muted)}
.nws-foot-bar nav{display:flex;flex-wrap:wrap;gap:6px 18px}
.nws-foot-bar a{color:var(--nws-muted)!important;text-decoration:none!important}
.nws-foot-bar a:hover{color:var(--nws-ink)!important}
.nws-panel+.nws-foot-bar{padding-top:24px}
.nws-foot-bar:first-child{padding-top:0}

/* ---------- theme bits ---------- */
body.nws-site #ast-scroll-top{width:44px;height:44px;border-radius:999px!important;background:rgba(255,255,255,.85)!important;color:var(--nws-ink)!important;border:1px solid var(--nws-line)!important;box-shadow:var(--nws-shadow-md);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
body.nws-site #ast-scroll-top svg{fill:currentColor}

/* ---------- smaller screens ---------- */
@media (max-width:1024px){
  body.nws-site{--nws-gutter:32px}
  .nws-plan-grid,.nws-plan-grid.has-feature{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nws-plan-grid.has-feature .nws-feature{grid-row:auto;grid-column:1/-1}
  .nws-panel{grid-template-columns:minmax(0,1fr);padding:40px}
  .nws-panel-actions{justify-content:flex-start}
}
@media (max-width:760px){
  body.nws-site{--nws-gutter:20px;--nws-bar:58px}
  .nws-bar-in{grid-template-columns:minmax(0,1fr) auto;gap:10px}
  .nws-bar-logo{display:none}
  .nws-nav{justify-self:start;min-width:0;max-width:100%;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .nws-nav::-webkit-scrollbar{display:none}
  .nws-nav a{height:32px;padding:0 12px;font-size:13.5px}
  .nws-portal{height:36px;padding:0 12px 0 11px;font-size:13.5px}
  .nws-hero{padding:30px var(--nws-gutter) 30px}
  .nws-hero.is-home{padding:36px var(--nws-gutter) 44px}
  body.nws-site .nws-intro{margin-top:24px;font-size:clamp(27px,7.6vw,34px)}
  .nws-actions{width:100%;flex-direction:column;align-items:stretch;margin-top:24px}
  body.nws-site .e-n-tabs-heading{flex-wrap:nowrap!important;justify-content:flex-start!important;width:auto!important;max-width:100%!important;overflow-x:auto!important;overflow-y:hidden!important;scrollbar-width:none;border-radius:16px;margin-bottom:22px!important;overscroll-behavior-x:contain}
  body.nws-site .e-n-tabs-heading::-webkit-scrollbar{display:none}
  body.nws-site .e-n-tab-title{flex:none!important;height:36px!important;padding:0 14px!important}
  body.nws-site .e-n-tabs-content .e-grid{gap:14px!important}
  body.nws-site .e-n-tabs-content .e-grid>.e-con{padding:14px 12px 12px!important;border-radius:18px!important}
  .nws-plans{padding:48px 0 8px}
  .nws-plan-grid,.nws-plan-grid.has-feature{grid-template-columns:minmax(0,1fr);gap:12px}
  .nws-feature{padding:24px}
  .nws-cat{padding:16px}
  .nws-plans-foot .nws-btn{width:100%}
  .nws-foot{padding:28px var(--nws-gutter) 24px}
  .nws-panel{padding:30px 22px;border-radius:22px}
  .nws-panel-actions{flex-direction:column;width:100%}
  .nws-panel-actions .nws-btn{width:100%}
  body.nws-contact .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:last-child{margin:16px var(--nws-gutter) 8px!important;border-radius:22px!important}
  body.nws-contact .elementor[data-elementor-type="wp-page"]>.e-con.e-parent:nth-last-child(2){--padding-bottom:40px}
}
/* Most phones are 390–393px wide: tighten the bar so the whole menu shows next to "Client portal". */
@media (max-width:400px){
  .nws-nav a{padding:0 10px}
  .nws-portal{gap:6px;padding:0 11px 0 10px}
}
/* With the language switch in the bar, phones show the portal button as its icon. */
@media (max-width:500px){
  .nws-bar.has-lang .nws-bar-end{gap:6px}
  .nws-bar.has-lang .nws-portal span{display:none}
  .nws-bar.has-lang .nws-portal{width:36px;padding:0;justify-content:center}
  .nws-lang{padding:2px}
  .nws-lang a{min-width:30px;height:30px;padding:0 7px;font-size:12px}
}
/* The smallest phones: a tighter menu, and below 360px the switch shows only the other language. */
@media (max-width:400px){
  .nws-nav{padding:3px}
  .nws-nav a{padding:0 7px;font-size:13px}
  .nws-lang a{min-width:28px;padding:0 6px}
}
@media (max-width:360px){
  .nws-lang a[aria-current="true"]{display:none}
}
@media (max-width:380px){
  .nws-portal span{display:none}
  .nws-portal{width:36px;padding:0;justify-content:center}
}
@media (prefers-reduced-motion:reduce){
  body.nws-site *,.nws-bar,.nws-feature,.nws-cat{transition:none!important}
  body.nws-site .e-n-tabs-content .e-grid>.e-con:hover,.nws-feature:hover,.nws-cat:hover,.nws-portal:hover,.nws-btn.is-primary:hover{transform:none}
  body.nws-site .e-n-tabs-content .e-grid>.e-con:hover .elementor-widget-image img{transform:none}
  body.nws-home .e-n-tabs-content .e-grid>.e-con.nws-reveal{animation:none}
}
@media print{
  .nws-bar,.nws-panel{display:none}
  .nws-hero::before,.nws-hero::after{display:none}
}

/* 1.80: the studio contact in the footer bar (Control room → Settings → Studio contact). */
.nws-foot-social{display:flex;flex-wrap:wrap;gap:6px 18px}
@media (max-width:760px){.nws-foot-bar{flex-direction:column;align-items:flex-start}}

/* 1.97: the plan boxes fill every row (PDC_Site::plan_layout picks the spans). */
.nws-plan-grid.is-balanced,.nws-plan-grid.is-balanced.has-feature{grid-template-columns:repeat(6,minmax(0,1fr))}
.nws-plan-grid.is-balanced>*{grid-column:span 2}
.nws-plan-grid.is-balanced.has-feature .nws-feature{grid-row:span var(--nws-feature-rows,3)}
.nws-plan-grid.is-balanced>.nws-span-3{grid-column:span 3}
.nws-plan-grid.is-balanced>.nws-span-4{grid-column:span 4}
.nws-plan-grid.is-balanced>.nws-span-6{grid-column:1/-1}
.nws-plan-grid.is-balanced .nws-cat{align-content:space-between}
@media (max-width:1024px){
  .nws-plan-grid.is-balanced,.nws-plan-grid.is-balanced.has-feature{grid-template-columns:repeat(6,minmax(0,1fr))}
  .nws-plan-grid.is-balanced>*,.nws-plan-grid.is-balanced>[class*="nws-span-"]{grid-column:span 2}
  .nws-plan-grid.is-balanced.has-feature .nws-feature{grid-column:1/-1;grid-row:auto}
  .nws-plan-grid.is-balanced>.nws-t-3{grid-column:span 3}
  .nws-plan-grid.is-balanced>.nws-t-6{grid-column:1/-1}
}
@media (max-width:760px){
  .nws-plan-grid.is-balanced,.nws-plan-grid.is-balanced.has-feature{grid-template-columns:minmax(0,1fr)}
  .nws-plan-grid.is-balanced>*{grid-column:auto!important}
}

/* 2.14.2 · Homepage portfolio cards in the swipe row (phones and tablets, one column).
   The title sits right above its image, two lines at most; every title starts at the same height
   (2.14.3: a one-line title keeps the top, not the bottom, of the two-line space) and every image
   starts at the same height. The year rides on the image's corner so the title gets the card's full
   width. Every card has the same height, so the row no longer stretches them (before, the tallest
   title in the row pushed every image down). */
body.nws-home .e-n-tabs-content .e-grid.nws-swipe{align-items:start!important;grid-auto-columns:min(86%,420px)!important}
body.nws-home .e-n-tabs-content .e-grid.nws-swipe>.e-con{display:grid!important;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(42px,auto) auto;align-content:start;row-gap:12px!important;column-gap:0!important}
body.nws-home .e-n-tabs-content .e-grid.nws-swipe>.e-con>.e-con:first-child{display:contents!important}
body.nws-home .e-n-tabs-content .e-grid.nws-swipe>.e-con .elementor-widget-icon-box{grid-area:1/1;align-self:start;padding:0 4px!important}
body.nws-home .e-n-tabs-content .e-grid.nws-swipe>.e-con .elementor-widget-image{grid-area:2/1}
body.nws-home .e-n-tabs-content .e-grid.nws-swipe>.e-con .elementor-widget-image img,
body.nws-home .e-n-tabs-content .e-grid.nws-swipe>.e-con .nwp-home-noimg{aspect-ratio:750/560;height:auto!important;object-fit:cover}
body.nws-home .e-n-tabs-content .e-grid.nws-swipe .elementor-icon-box-title>span{display:-webkit-box!important;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}
body.nws-home .e-n-tabs-content .e-grid.nws-swipe>.e-con .elementor-widget-text-editor{grid-area:2/1;justify-self:end;align-self:start;position:relative;z-index:1;margin:10px!important;pointer-events:none}
body.nws-home .e-n-tabs-content .e-grid.nws-swipe>.e-con .elementor-widget-text-editor p{margin:0!important;background:rgba(255,255,255,.9)!important;color:var(--nws-ink)!important;box-shadow:0 0 0 1px rgba(22,22,20,.06),0 2px 8px -2px rgba(22,22,20,.18);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
/* The wrapper around the tabs kept Elementor's 60–80 px bottom padding on phones and tablets: a wide empty
   band before "Plans and pricing". */
@media (max-width:1024px){body.nws-home .e-con.e-child:has(>.elementor-widget-n-tabs){padding-bottom:0!important}}

/* 2.14.9 · 2.14.10 · The Nullworks grid. Behind the whole site, the studio's construction sheet: a modular grid, circles
   and a protractor around the logo, and around them one construction per discipline (a Van de Graaf canon, a column
   grid, the A-series sheet, an isometric cube, a perspective study, a 16:9 frame, an easing curve, a golden spiral,
   Fibonacci circles, Inter's ampersand with its handles, set squares, a 9:16 story, the vesica piscis, a step wedge,
   the null sign in pixels and as registration marks), with soft rubbed-out patches. tools/site-grid.py draws
   assets/site-grid.svg (the drawing, 3200 x 2000) and its eraser twice: assets/site-grid-erase.svg, patches of the
   site's colour laid over the drawing, and assets/site-grid-mask.svg, the same patches as a luminance mask for project
   pages in another colour. The sheet stays fixed to the window, under the content, at 1:1 on desktop, so a bigger
   screen shows more of it. The circles are centred on the logo at the top of every page: --s scales the sheet and --y
   moves it down (also under the WordPress toolbar). On portfolio project pages it shows through the page's colour,
   drawn in light ink on dark pages. Not in print, with high contrast or with forced colours. It replaces the dot grids
   of the site's header, the plans page and the project header, which would sit a few pixels off the sheet's. On the
   plans page the monthly / one-off switch only turns opaque while it is stuck under the bar. Browsers without
   mask-mode (Chrome before 120) show project pages in another colour without the rubbed-out patches. */
body.nws-site,body.nws-catalog{isolation:isolate}
body.nws-site::before,body.nws-catalog::before{
  --s:1;--y:calc(var(--nws-top,0px) - 85px + clamp(132px,13vw,176px)*.4833);--nws-grid-size:calc(3200px*var(--s)) calc(2000px*var(--s));
  content:"";position:fixed;z-index:-1;top:0;left:0;right:0;height:100vh;height:100lvh;pointer-events:none;
  background:url(site-grid-erase.svg?v=2.14.10) 50% var(--y)/var(--nws-grid-size) no-repeat,url(site-grid.svg?v=2.14.10) 50% var(--y)/var(--nws-grid-size) no-repeat}
/* A project page can have its own colour (dark, or one chosen for the project). There the eraser can't paint the
   page's colour over the drawing, so it rubs it out as a mask, which costs the browser more to draw. Pages in the
   site's colour keep the eraser layer; a browser without :has() masks every project page. */
body.nws-site.nwp-page::before{
  background:url(site-grid.svg?v=2.14.10) 50% var(--y)/var(--nws-grid-size) no-repeat;
  -webkit-mask:url(site-grid-mask.svg?v=2.14.10) 50% var(--y)/var(--nws-grid-size) no-repeat;
  mask:url(site-grid-mask.svg?v=2.14.10) 50% var(--y)/var(--nws-grid-size) no-repeat luminance}
body.nws-site.nwp-page:has(.nwp-theme-light)::before{
  background:url(site-grid-erase.svg?v=2.14.10) 50% var(--y)/var(--nws-grid-size) no-repeat,url(site-grid.svg?v=2.14.10) 50% var(--y)/var(--nws-grid-size) no-repeat;
  -webkit-mask:none;mask:none}
body.nws-site.nwp-dark::before{filter:invert(1) hue-rotate(180deg)}
body.nws-site .nws-hero::after,body.nws-catalog .nwc-hero::after,body.nws-site.nwp-page .nwp-head::after{content:none}
@media screen{
  body.nws-catalog .nwc,body.nws-catalog .nwc-tools:not(.is-stuck){background:transparent;box-shadow:none}
  body.nws-site.nwp-page .nwp{background:transparent}
}
/* The circles' centre sits on the logo's: toolbar + bar + the hero's top padding + half the logo (300:290), from the
   .nws-hero rules above and portfolio/project.css. The homepage's numbers also serve the plans page, which has no logo. */
body.nws-site:not(.nws-home)::before{--y:calc(var(--nws-top,0px) - 97px + clamp(116px,11vw,150px)*.4833)}
body.nws-site.nwp-page::before{--y:calc(var(--nws-top,0px) - 119px + clamp(84px,7vw,108px)*.4833)}
@media (max-width:1100px){
  body.nws-site::before,body.nws-catalog::before{--s:.8;--y:calc(var(--nws-top,0px) - 44px + clamp(132px,13vw,176px)*.4833)}
  body.nws-site:not(.nws-home)::before{--y:calc(var(--nws-top,0px) - 56px + clamp(116px,11vw,150px)*.4833)}
  body.nws-site.nwp-page::before{--y:calc(var(--nws-top,0px) - 37.4px)}
}
@media (max-width:760px){
  body.nws-site::before,body.nws-catalog::before{--s:.62;--y:calc(var(--nws-top,0px) + 30.7px)}
  body.nws-site:not(.nws-home)::before{--y:calc(var(--nws-top,0px) + 17px)}
  body.nws-site.nwp-page::before{--y:calc(var(--nws-top,0px) - 6.5px)}
}
@media print,(prefers-contrast:more),(forced-colors:active){body.nws-site::before,body.nws-catalog::before{content:none}}
