/* Self-hosted fonts (latin subset, SIL Open Font License). No request leaves nbn-west.com. */
@font-face { font-family: "Instrument Sans"; font-style: normal; font-weight: 400 700; font-stretch: 75% 100%; font-display: swap; src: url("/assets/fonts/instrument-sans-latin.woff2") format("woff2"); }
@font-face { font-family: "Instrument Sans"; font-style: italic; font-weight: 400 700; font-stretch: 75% 100%; font-display: swap; src: url("/assets/fonts/instrument-sans-italic-latin.woff2") format("woff2"); }
@font-face { font-family: "Instrument Serif"; font-style: italic; font-weight: 400; font-display: swap; src: url("/assets/fonts/instrument-serif-italic-latin.woff2") format("woff2"); }
@font-face { font-family: "Instrument Serif"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/instrument-serif-latin.woff2") format("woff2"); }
@font-face { font-family: "Geist Mono"; font-style: normal; font-weight: 400 500; font-display: swap; src: url("/assets/fonts/geist-mono-latin.woff2") format("woff2"); }


/* NBN West · Cartography of complexity · component layer (prefix nw-) */

.nw, .nw * { box-sizing: border-box; }
.nw { font-family: var(--font-sans); color: var(--ink); background: var(--ground); -webkit-font-smoothing: antialiased; font-size: 17px; line-height: 1.6; }
.nw ::selection { background: var(--ember); color: var(--on-ember); }
.nw :focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
:where(.nw a) { color: inherit; }

/* ---------- primitives ---------- */
.nw-eyebrow { font-family: var(--font-mono); font-size: 12px; line-height: 16px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-muted); display: inline-flex; align-items: center; gap: var(--space-3); margin: 0; }
.nw-eyebrow::before { content: ""; width: 24px; height: 1px; background: var(--ember); }
.nw-eyebrow .nw-idx { color: var(--ember-text); }

.nw-display { font-weight: 500; letter-spacing: -.04em; line-height: .95; margin: 0; font-size: clamp(48px, 7.2vw, 88px); text-wrap: balance; }
.nw-display--xxl { font-size: clamp(56px, 10vw, 128px); line-height: .92; letter-spacing: -.045em; }
.nw-display--l { font-size: clamp(40px, 5vw, 60px); line-height: 1; letter-spacing: -.03em; }
.nw-accent { font-family: var(--font-serif); font-style: italic; font-weight: 400; letter-spacing: -.02em; color: var(--ember-text); }
.nw-lead { font-size: 22px; line-height: 1.45; letter-spacing: -.005em; color: var(--ink-muted); max-width: 58ch; margin: 0; }
.nw-h1 { font-size: 40px; line-height: 1.1; font-weight: 500; letter-spacing: -.02em; margin: 0; }
.nw-h2 { font-size: 28px; line-height: 1.2; font-weight: 500; letter-spacing: -.015em; margin: 0; }
.nw-h3 { font-size: 20px; line-height: 1.3; font-weight: 600; letter-spacing: -.01em; margin: 0; }
.nw-body-s { font-size: 15px; line-height: 1.55; color: var(--ink-muted); margin: 0; }
.nw-coord { font-family: var(--font-mono); font-size: 11px; line-height: 14px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-muted); }

/* ---------- Button ---------- */
.nw-btn { --_bg: var(--btn-primary-bg); --_fg: var(--btn-primary-fg); --_bd: var(--btn-primary-bg); --_h: var(--control-md);
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-3); min-height: var(--_h); padding: 0 var(--space-5);
  font-family: var(--font-mono); font-size: 12px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; text-decoration: none; white-space: nowrap;
  background: var(--_bg); color: var(--_fg); border: 1px solid var(--_bd); border-radius: var(--radius-xs); cursor: pointer; isolation: isolate;
  transition: box-shadow var(--duration-fast) var(--ease-out-expo), background var(--duration-fast), color var(--duration-fast), border-color var(--duration-fast), transform var(--duration-fast); position: relative; overflow: hidden; }
/* raking-light sweep: a warm band crosses the button from the west on hover */
.nw-btn::before { content: ""; position: absolute; inset: -1px; z-index: -1; background: linear-gradient(100deg, transparent 20%, rgba(255, 214, 150, .38) 45%, transparent 70%); transform: translateX(-120%); transition: transform 700ms var(--ease-out-expo); pointer-events: none; }
.nw-btn:hover::before { transform: translateX(120%); }
.nw-btn:active { transform: translateY(1px); }
.nw-btn .nw-arrow { display: inline-block; transition: transform var(--duration-base) var(--ease-out-expo); }
.nw-btn:hover .nw-arrow { transform: translateX(6px); }
.nw-btn--primary:hover { --_bg: var(--btn-primary-hover); --_bd: var(--btn-primary-hover); }
[data-theme="night"] .nw-btn--primary:hover, :root:not([data-theme]) .nw-btn--primary:hover { box-shadow: var(--glow-ember); }
.nw-btn--secondary { --_bg: var(--btn-secondary-bg); --_fg: var(--btn-secondary-fg); --_bd: var(--btn-secondary-bg); }
.nw-btn--secondary::before { background: linear-gradient(100deg, transparent 20%, var(--light-west) 45%, transparent 70%); }
.nw-btn--ghost { --_bg: transparent; --_fg: var(--ink); --_bd: var(--line-strong); }
.nw-btn--ghost::before { background: linear-gradient(100deg, transparent 15%, var(--light-west) 45%, transparent 75%); }
.nw-btn--ghost:hover { --_bd: var(--ink); }
.nw-btn--link { --_bg: transparent; --_fg: var(--ember-text); --_bd: transparent; padding-left: 0; padding-right: 0; min-height: 32px; overflow: visible; }
.nw-btn--link::before { display: none; }
.nw-btn--link::after { content: ""; position: absolute; left: 0; right: 0; bottom: 4px; height: 1px; background: currentColor; transform: scaleX(.35); transform-origin: left; transition: transform var(--duration-base) var(--ease-out-expo); }
.nw-btn--link:hover::after { transform: scaleX(1); }
.nw-btn--icon { width: var(--_h); padding: 0; }
.nw-btn--sm { --_h: var(--control-sm); padding: 0 var(--space-4); font-size: 11px; }
.nw-btn--lg { --_h: var(--control-lg); padding: 0 var(--space-6); font-size: 13px; }
.nw-btn--icon.nw-btn--sm, .nw-btn--icon.nw-btn--lg { padding: 0; }
.nw-btn[disabled], .nw-btn[aria-disabled="true"] { opacity: .45; cursor: not-allowed; box-shadow: none; }
.nw-btn[disabled]::before { display: none; }
/* loading: a trajectory line runs along the bottom edge */
.nw-btn.is-loading { cursor: progress; }
.nw-btn.is-loading::after { content: ""; position: absolute; left: 0; bottom: 0; height: 2px; width: 40%; background: currentColor; animation: nw-load 1.1s var(--ease-in-out) infinite; }
@keyframes nw-load { 0% { transform: translateX(-100%); } 100% { transform: translateX(260%); } }
/* on photographs and on west-navy the button keeps Night values */
:is(.nw-on-dark, .nw-hero:not(.nw-hero--day), .nw-partner) .nw-btn--primary { --_bg: #f26a2e; --_fg: #0a0e1a; --_bd: #f26a2e; }
:is(.nw-on-dark, .nw-hero:not(.nw-hero--day), .nw-partner) .nw-btn--primary:hover { --_bg: #ff7c42; --_bd: #ff7c42; box-shadow: var(--glow-ember); }
:is(.nw-on-dark, .nw-hero:not(.nw-hero--day), .nw-partner) .nw-btn--ghost { --_fg: #f1ece3; --_bd: #62708f; }
:is(.nw-on-dark, .nw-hero:not(.nw-hero--day), .nw-partner) .nw-btn--secondary { --_bg: #f1ece3; --_fg: #0a0e1a; --_bd: #f1ece3; }

/* ---------- Light & elevation utilities ---------- */
.nw-raking { background-image: linear-gradient(100deg, var(--light-west), transparent 55%); }
.nw-edge-west { box-shadow: var(--edge-west); }
.nw-elev-1 { box-shadow: var(--elev-1); } .nw-elev-2 { box-shadow: var(--elev-2); } .nw-elev-3 { box-shadow: var(--elev-3); }
.nw-card { background: var(--ground-raised); padding: var(--space-6); display: grid; gap: var(--space-3); transition: box-shadow var(--duration-base) var(--ease-out-expo), background var(--duration-base); }
.nw-card:hover, .nw-card.is-selected { box-shadow: var(--edge-west), var(--elev-1); background-image: linear-gradient(100deg, var(--light-west), transparent 55%); }

/* ---------- Tag ---------- */
.nw-tag { display: inline-flex; align-items: center; gap: var(--space-2); padding: 6px var(--space-3); border: 1px solid var(--line-strong); border-radius: var(--radius-pill);
  font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink); }
.nw-tag--live::before { content: ""; width: 7px; height: 7px; border-radius: var(--radius-pill); background: var(--amber); box-shadow: 0 0 0 4px rgba(242, 181, 68, .18); animation: nw-pulse 2.4s var(--ease-in-out) infinite; }
.nw-tag--live { color: var(--amber-text); }
@keyframes nw-pulse { 50% { box-shadow: 0 0 0 7px rgba(242, 181, 68, 0); } }

/* ---------- Nav ---------- */
.nw-nav { position: sticky; top: 0; z-index: 10; height: var(--nav-height); display: flex; align-items: center; justify-content: space-between; gap: var(--space-5);
  padding: 0 var(--space-8); background: color-mix(in srgb, var(--ground) 86%, transparent); backdrop-filter: blur(14px) saturate(1.2); -webkit-backdrop-filter: blur(14px); border-bottom: 1px solid var(--line); color: var(--ink);
  transition: background var(--duration-base) var(--ease-out-expo), color var(--duration-base), border-color var(--duration-base); }
.nw-nav__logo img { height: 30px; display: block; }
.nw-nav__links { display: flex; gap: var(--space-6); list-style: none; margin: 0; padding: 0; }
.nw-nav__links a { font-family: var(--font-mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; text-decoration: none; color: var(--ink-muted); transition: color var(--duration-fast); }
.nw-nav__links a:hover, .nw-nav__links a[aria-current] { color: var(--ink); }
.nw-nav__links a[aria-current]::before { content: "● "; color: var(--ember); }
@media (max-width: 860px) { .nw-nav { padding: 0 var(--space-4); } .nw-nav__links { display: none; } }

/* ---------- Trajectory (the signature line system) ---------- */
.nw-traj { display: block; width: 100%; height: auto; overflow: visible; }
.nw-traj path { fill: none; stroke-linecap: round; }
.nw-traj .t-navy { stroke: var(--steel); stroke-width: 1.5; opacity: .75; }
.nw-traj .t-amber { stroke: var(--amber); stroke-width: 1.5; }
.nw-traj .t-ember { stroke: var(--ember); stroke-width: 2.5; }
.nw-traj .t-grid { stroke: var(--line); stroke-width: 1; }
.nw-traj .t-node { fill: var(--ground); stroke: var(--amber-text); stroke-width: 1.5; }
.nw-traj .t-node--on { fill: var(--ember); stroke: var(--ember); }
.nw-traj text { font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; fill: var(--ink-muted); text-transform: uppercase; }
.nw-draw { stroke-dasharray: var(--len, 2000); stroke-dashoffset: var(--len, 2000); transition: stroke-dashoffset var(--duration-draw) var(--ease-out-expo); }
.is-in .nw-draw, .nw-draw.is-in { stroke-dashoffset: 0; }
.is-in .nw-draw:nth-of-type(2) { transition-delay: 160ms; } .is-in .nw-draw:nth-of-type(3) { transition-delay: 320ms; }

/* ---------- Hero ---------- */
.nw-hero { position: relative; min-height: 640px; display: grid; align-content: end; padding: var(--space-10) var(--space-8) var(--space-8); overflow: hidden; background: var(--ground); isolation: isolate; }
.nw-hero__media { position: absolute; inset: 0; z-index: -2; }
.nw-hero__media img, .nw-hero__media video { width: 100%; height: 100%; object-fit: cover; object-position: 70% 40%; transform: scale(1.06); animation: nw-drift 24s var(--ease-in-out) infinite alternate; }
.nw-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(10,14,26,.92) 0%, rgba(10,14,26,.55) 48%, rgba(10,14,26,.1) 100%), linear-gradient(0deg, rgba(10,14,26,.9) 0%, rgba(10,14,26,0) 45%); }
.nw-hero__traj { position: absolute; right: -6%; top: -6%; width: 50%; z-index: -1; pointer-events: none; opacity: .9; }
.nw-hero__copy { max-width: 980px; display: grid; gap: var(--space-6); color: #f1ece3; }
.nw-hero__copy .nw-lead { color: #c9ced8; }
.nw-hero__copy .nw-accent { color: #ff8a55; }
.nw-hero__actions { display: flex; flex-wrap: wrap; gap: var(--space-4); align-items: center; }
.nw-hero__meta { position: absolute; right: var(--space-8); bottom: var(--space-8); display: grid; gap: var(--space-2); text-align: right; color: #a7aebd; }

.nw-hero .nw-eyebrow { color: #a7aebd; }
@keyframes nw-drift { to { transform: scale(1.12) translate(-1.5%, -1%); } }
@media (max-width: 860px) { .nw-hero { padding: var(--space-9) var(--space-4) var(--space-7); min-height: 560px; } .nw-hero__meta { display: none; } .nw-hero__traj { width: 110%; top: 4%; opacity: .6; } }

/* ---------- Kinetic statement ---------- */
.nw-kinetic { padding: var(--space-10) var(--space-8); background: var(--ground); }
.nw-kinetic__text { font-size: clamp(34px, 5vw, 64px); line-height: 1.08; letter-spacing: -.03em; font-weight: 500; margin: var(--space-6) 0 0; max-width: 22ch; }
.nw-kinetic__text .w { color: var(--line-strong); transition: color var(--duration-base) var(--ease-out-expo); }
.nw-kinetic__text .w.on { color: var(--ink); }
.nw-kinetic__text .w.on.nw-accent { color: var(--ember-text); }
@media (max-width: 860px) { .nw-kinetic { padding: var(--space-8) var(--space-4); } }

/* ---------- Domain cards ---------- */
.nw-domains { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.nw-domain { position: relative; min-height: 420px; padding: var(--space-6); border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); display: flex; flex-direction: column; justify-content: space-between; gap: var(--space-6); overflow: hidden; text-decoration: none; color: var(--ink); isolation: isolate; background: var(--ground); }
.nw-domain__img { position: absolute; inset: 0; z-index: -1; opacity: 0; transition: opacity var(--duration-base) var(--ease-out-expo); }
.nw-domain__img img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.08); transition: transform 1.2s var(--ease-out-expo); }
.nw-domain__img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(10,14,26,.95) 20%, rgba(10,14,26,.45)); }
.nw-domain:hover .nw-domain__img, .nw-domain:focus-visible .nw-domain__img { opacity: 1; }
.nw-domain:hover .nw-domain__img img { transform: scale(1); }
.nw-domain:hover, .nw-domain:focus-visible { color: #f1ece3; }
.nw-domain:hover .nw-body-s, .nw-domain:focus-visible .nw-body-s { color: #c9ced8; }
.nw-domain__top { display: flex; justify-content: space-between; align-items: baseline; }
.nw-domain__idx { font-family: var(--font-mono); font-size: 14px; color: var(--ember-text); }
.nw-domain:hover .nw-domain__idx { color: #ff8a55; }
.nw-domain__go { font-family: var(--font-mono); font-size: 18px; transition: transform var(--duration-base) var(--ease-out-expo); }
.nw-domain:hover .nw-domain__go { transform: translate(4px, -4px); color: #ff8a55; }
.nw-domain .nw-h2 { max-width: 12ch; }
@media (max-width: 1100px) { .nw-domains { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .nw-domains { grid-template-columns: 1fr; } .nw-domain { min-height: 280px; } }

/* ---------- Principles axis ---------- */
.nw-axis { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-5); padding-top: var(--space-7); }
.nw-axis::before { content: ""; position: absolute; top: 11px; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, var(--ember), var(--amber) 60%, var(--line-strong)); }
.nw-axis__item { position: relative; display: grid; gap: var(--space-3); align-content: start; }
.nw-axis__item::before { content: ""; position: absolute; top: calc(-1 * var(--space-7) + 5px); left: 0; width: 13px; height: 13px; border-radius: var(--radius-pill); background: var(--ground); border: 1.5px solid var(--amber-text); }
.nw-axis__item:first-child::before { background: var(--ember); border-color: var(--ember); box-shadow: var(--glow-ember); }
@media (max-width: 860px) { .nw-axis { grid-template-columns: 1fr; padding-top: 0; padding-left: var(--space-7); gap: var(--space-6); } .nw-axis::before { top: 0; bottom: 0; left: 6px; right: auto; width: 1px; height: auto; background: linear-gradient(180deg, var(--ember), var(--amber) 60%, var(--line-strong)); } .nw-axis__item::before { top: 6px; left: calc(-1 * var(--space-7)); } }

/* ---------- Engagement path ---------- */
.nw-path { display: grid; grid-template-columns: 1fr; gap: 0; counter-reset: step; }
.nw-path__svg { width: 100%; height: 120px; display: block; margin-bottom: var(--space-5); }
.nw-path__steps { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--space-5); }
.nw-path__step { display: grid; gap: var(--space-3); align-content: start; padding-top: var(--space-4); border-top: 1px solid var(--line); cursor: default; transition: border-color var(--duration-fast); }
.nw-path__step .nw-domain__idx { font-size: 13px; }
.nw-path__step:hover, .nw-path__step.is-active { border-top-color: var(--ember); }
@media (max-width: 1000px) { .nw-path__steps { grid-template-columns: 1fr; } .nw-path__svg { display: none; } }

/* ---------- Sector map ---------- */
.nw-sectors { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); }
.nw-sector { position: relative; padding: var(--space-5) var(--space-5) var(--space-6); border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); min-height: 148px; display: grid; align-content: space-between; gap: var(--space-5); transition: background var(--duration-fast); }
.nw-sector:nth-child(4n) { border-right: 0; }
.nw-sector:hover { background: var(--ground-raised); }
.nw-sector:hover .nw-coord { color: var(--amber-text); }
.nw-sector--statement { grid-column: span 1; background: var(--west-navy); color: #f1ece3; }
.nw-sector--statement .nw-accent { color: #f2b544; }
.nw-sector--statement:hover { background: var(--west-navy); }
@media (max-width: 860px) { .nw-sectors { grid-template-columns: repeat(2, 1fr); } .nw-sector:nth-child(4n) { border-right: 1px solid var(--line); } .nw-sector:nth-child(2n) { border-right: 0; } }

/* ---------- Execution partner band ---------- */
.nw-partner { display: grid; grid-template-columns: 1.1fr 1fr; gap: var(--space-8); padding: var(--space-9) var(--space-8); background: var(--west-navy); color: #f1ece3; position: relative; overflow: hidden; }
.nw-partner .nw-eyebrow { color: #c3cadb; }
.nw-partner .nw-body-s { color: #c3cadb; }
.nw-partner__name { font-family: var(--font-mono); font-size: 13px; letter-spacing: .3em; color: #f2b544; }
.nw-partner__caps { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid rgba(241,236,227,.18); }
.nw-partner__cap { padding: var(--space-5) var(--space-5) var(--space-5) 0; border-bottom: 1px solid rgba(241,236,227,.18); display: grid; gap: var(--space-2); }
.nw-partner__cap:nth-child(odd) { border-right: 1px solid rgba(241,236,227,.18); }
.nw-partner__cap:nth-child(even) { padding-left: var(--space-5); }
.nw-partner .nw-btn--link { --_fg: #f2b544; }
@media (max-width: 900px) { .nw-partner { grid-template-columns: 1fr; padding: var(--space-8) var(--space-4); } }

/* ---------- Inquiry form ---------- */
.nw-form { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-5) var(--space-5); }
.nw-field { display: grid; gap: var(--space-2); }
.nw-field--full { grid-column: 1 / -1; }
.nw-field label, .nw-field legend { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-muted); }
.nw-input { width: 100%; min-height: 52px; padding: var(--space-3) var(--space-4); font: inherit; font-size: 17px; color: var(--ink); background: var(--ground-raised); border: 1px solid var(--line-strong); border-radius: var(--radius-xs); transition: border-color var(--duration-fast), box-shadow var(--duration-fast); }
.nw-input::placeholder { color: var(--ink-muted); }
.nw-input:hover { border-color: var(--ink-muted); }
.nw-input:focus { outline: none; border-color: var(--ember); box-shadow: 0 0 0 1px var(--ember); }
textarea.nw-input { min-height: 140px; resize: vertical; }
.nw-chips { display: flex; flex-wrap: wrap; gap: var(--space-2); border: 0; padding: 0; margin: 0; }
.nw-chip { position: relative; font-family: var(--font-sans); letter-spacing: 0; text-transform: none; color: var(--ink); }
.nw-field label.nw-chip { font-family: var(--font-sans); font-size: 15px; letter-spacing: 0; text-transform: none; color: var(--ink); }
.nw-chip input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.nw-chip span { display: inline-flex; padding: 10px var(--space-4); border: 1px solid var(--line-strong); border-radius: var(--radius-pill); font-size: 15px; transition: all var(--duration-fast); }
.nw-chip input:checked + span { background: var(--ember); border-color: var(--ember); color: var(--on-ember); }
.nw-chip input:focus-visible + span { outline: 2px solid var(--focus); outline-offset: 3px; }
.nw-form__foot { grid-column: 1 / -1; display: flex; justify-content: space-between; align-items: center; gap: var(--space-5); flex-wrap: wrap; padding-top: var(--space-4); border-top: 1px solid var(--line); }
@media (max-width: 720px) { .nw-form { grid-template-columns: 1fr; } }

/* ---------- Image frame ---------- */
.nw-frame { margin: 0; display: grid; gap: var(--space-3); align-self: start; align-content: start; }
.nw-frame__media { position: relative; overflow: hidden; background: var(--ground-sunken); }
.nw-frame__media img { display: block; width: 100%; height: 100%; object-fit: cover; clip-path: inset(0 100% 0 0); transition: clip-path 1.2s var(--ease-out-expo); }
.nw-frame.is-in .nw-frame__media img { clip-path: inset(0 0 0 0); }
.nw-frame__media::after { content: ""; position: absolute; inset: var(--space-4); border: 1px solid rgba(241,236,227,.25); pointer-events: none; }
.nw-frame figcaption { display: flex; justify-content: space-between; gap: var(--space-4); }

/* ---------- Footer ---------- */
.nw-footer { background: var(--ground-sunken); padding: var(--space-9) var(--space-8) var(--space-6); display: grid; gap: var(--space-8); border-top: 1px solid var(--line); }
.nw-footer__big { font-size: clamp(48px, 9vw, 140px); line-height: .9; letter-spacing: -.05em; font-weight: 500; margin: 0; }
.nw-footer__big span { display: block; }
.nw-footer__big span:nth-child(2) { color: var(--ink-muted); }
.nw-footer__big span:nth-child(3) { color: var(--ember-text); font-family: var(--font-serif); font-style: italic; font-weight: 400; letter-spacing: -.03em; }
.nw-footer__row { display: flex; justify-content: space-between; flex-wrap: wrap; gap: var(--space-5); padding-top: var(--space-5); border-top: 1px solid var(--line); }
.nw-footer__row a { text-decoration: none; }
.nw-footer__row a:hover { color: var(--ember-text); }
@media (max-width: 860px) { .nw-footer { padding: var(--space-8) var(--space-4) var(--space-5); } }

/* ---------- theme-aware logo swap ---------- */
/* nw-only-night = artwork for dark grounds (Dusk, Night); nw-only-paper = artwork for light grounds (Day, Golden) */
.nw-only-night { display: none !important; }
:is([data-theme="night"], [data-theme="dusk"]) .nw-only-night { display: inline-block !important; }
:is([data-theme="night"], [data-theme="dusk"]) .nw-only-paper { display: none !important; }

/* ---------- reveal ---------- */
.nw-reveal { opacity: 0; transform: translateY(24px); transition: opacity var(--duration-base) var(--ease-out-expo), transform 900ms var(--ease-out-expo); }
.nw-reveal.is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .nw *, .nw *::before, .nw *::after { animation: none !important; transition-duration: 0ms !important; transition-delay: 0ms !important; }
  .nw-draw { stroke-dashoffset: 0; }
  .nw-reveal { opacity: 1; transform: none; }
  .nw-frame__media img { clip-path: none; }
}

/* ---------- Sector imagery ---------- */
.nw-sector { isolation: isolate; overflow: hidden; }
.nw-sector__img { position: absolute; inset: 0; z-index: -1; opacity: 0; transition: opacity var(--duration-base) var(--ease-out-expo); }
.nw-sector__img img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.1); transition: transform 1.2s var(--ease-out-expo); }
.nw-sector__img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(10,14,26,.92) 15%, rgba(10,14,26,.4)); }
.nw-sector:hover .nw-sector__img, .nw-sector:focus-visible .nw-sector__img { opacity: 1; }
.nw-sector:hover .nw-sector__img img { transform: scale(1); }
.nw-sector:hover .nw-h3, .nw-sector:focus-visible .nw-h3 { color: #f1ece3; }
.nw-sector:hover .nw-coord, .nw-sector:focus-visible .nw-coord { color: #f2b544; }

/* ---------- Headquarters ---------- */
.nw-hq { min-height: 520px; display: grid; align-items: center; justify-items: end; padding: var(--space-8); background-size: cover; background-position: center; }
.nw-hq__card { background: rgba(18, 26, 44, .82); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); color: #f1ece3; padding: var(--space-7) var(--space-6); max-width: 440px; display: grid; gap: var(--space-4); justify-items: start; box-shadow: inset 1px 0 0 rgba(242, 181, 68, .45), 0 12px 32px -18px rgba(0,0,0,.7); }
.nw-hq__card .nw-body-s, .nw-hq__card .nw-coord, .nw-hq__card .nw-eyebrow { color: #c3cadb; }
@media (max-width: 720px) { .nw-hq { padding: var(--space-4); justify-items: stretch; } }

/* ---------- Hero video loop ---------- */
.nw-hero__media { overflow: hidden; }
.nw-hero__media picture, .nw-hero__media picture img { display: block; width: 100%; height: 100%; }
.nw-hero__video { position: absolute; inset: 0; animation: none !important; transform: none !important; object-position: 60% 40%; }
@media (max-width: 720px) { .nw-hero__video { display: none; } }
@media (prefers-reduced-motion: reduce) { .nw-hero__video { display: none; } }


/* ---------- Day to night: chapters, horizons, sun ---------- */
.nw-chapter { background: var(--ground); color: var(--ink); position: relative; }
.nw-horizon { height: 280px; pointer-events: none; }
.nw-horizon--day-golden { background: linear-gradient(180deg, var(--sky-day), var(--sky-golden)); }
.nw-horizon--golden-dusk { background: linear-gradient(180deg, var(--sky-golden) 0%, #b98a6a 30%, #5b4a5e 58%, var(--sky-dusk) 100%); }
.nw-horizon--dusk-night { background: linear-gradient(180deg, var(--sky-dusk), var(--sky-night)); }
.nw-horizon--day-night { background: linear-gradient(180deg, var(--sky-day) 0%, var(--sky-golden) 30%, #b98a6a 50%, #5b4a5e 68%, var(--sky-dusk) 84%, var(--sky-night) 100%); height: 420px; }
/* the sun: a warm glow that sets toward the west (left) as the page scrolls */
.nw-sun { position: fixed; z-index: 0; width: 70vmax; height: 70vmax; left: calc(var(--nw-sun-x, 78) * 1vw - 35vmax); top: calc(var(--nw-sun-y, 8) * 1vh - 35vmax);
  background: radial-gradient(closest-side, var(--sun-core), var(--sun-edge)); opacity: var(--nw-sun-o, .55); mix-blend-mode: normal; pointer-events: none; transition: opacity var(--duration-base); }
.nw-sun-host { position: relative; isolation: isolate; }
.nw-sun-host > :not(.nw-sun) { position: relative; z-index: 1; }

/* ---------- Day hero ---------- */
.nw-hero--day { background: var(--ground); min-height: 720px; padding: var(--space-9) var(--space-8) var(--space-8); align-content: stretch; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: var(--space-7); }
.nw-hero--day::before { content: none; }
.nw-hero--day .nw-hero__copy { color: var(--ink); align-self: end; z-index: 1; }
.nw-hero--day .nw-hero__copy .nw-lead { color: var(--ink-muted); }
.nw-hero--day .nw-hero__copy .nw-accent { color: var(--ember-text); }
.nw-hero--day .nw-eyebrow { color: var(--ink-muted); }
.nw-hero--day .nw-hero__media { position: relative; inset: auto; z-index: 0; min-height: 520px; clip-path: inset(0 0 0 100%); animation: nw-wipe 1.4s var(--ease-out-expo) .2s forwards; }
.nw-hero--day .nw-hero__media img { animation: nw-drift 30s var(--ease-in-out) infinite alternate; object-position: 50% 60%; }
.nw-hero--day .nw-hero__media::after { content: ""; position: absolute; inset: var(--space-4); border: 1px solid rgba(255,255,255,.45); pointer-events: none; }
.nw-hero--day .nw-hero__traj { left: 30%; right: auto; top: 4%; width: 56%; z-index: 2; }
.nw-hero--day .nw-hero__meta { position: absolute; right: calc(var(--space-8) + var(--space-5)); bottom: calc(var(--space-8) + var(--space-5)); color: #f1ece3; z-index: 2; text-shadow: 0 1px 12px rgba(10,14,26,.6); }
.nw-hero--day .nw-hero__meta .nw-coord { color: #f1ece3; }
@keyframes nw-wipe { to { clip-path: inset(0 0 0 0); } }
@media (max-width: 960px) { .nw-hero--day { grid-template-columns: 1fr; padding: var(--space-8) var(--space-4); min-height: 0; } .nw-hero--day .nw-hero__media { min-height: 360px; order: -1; } .nw-hero--day .nw-hero__meta { display: none; } }
@media (prefers-reduced-motion: reduce) { .nw-hero--day .nw-hero__media { clip-path: none; animation: none; } .nw-sun { display: none; } }
.nw-hero--day .nw-hero__media { grid-column: 2; grid-row: 1; }
.nw-hero--day .nw-hero__copy { grid-column: 1; grid-row: 1; }
@media (max-width: 960px) { .nw-hero--day .nw-hero__media, .nw-hero--day .nw-hero__copy { grid-column: 1; grid-row: auto; } }
/* preview / embedded scroller variant of the sun */
[data-nw-scroller] { position: relative; overflow-y: auto; }
[data-nw-scroller] > .nw-sun { position: absolute; width: 900px; height: 900px; left: 0; top: 0; }
.nw-hero--day { grid-template-columns: minmax(0, 1.12fr) minmax(0, 1fr); }
.nw-hero--day .nw-display--xxl { font-size: clamp(52px, 6.6vw, 112px); }
.nw-hero--day .nw-hero__traj { left: 48%; top: -2%; width: 50%; }
.nw-hero--day .nw-hero__meta { display: grid; gap: 4px; padding: 10px 14px; background: rgba(10, 14, 26, .62); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); text-shadow: none; }


/* ==========================================================================
   NBN West · page layer
   Built only from design system tokens (tokens.css) and nw- components.
   ========================================================================== */

/* ---------- base ---------- */
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-height) + var(--space-4)); -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--ground); min-height: 100vh; overflow-x: clip; }
img, video, svg { max-width: 100%; }
img { height: auto; }
.nw p { margin: 0; }
.nw h1, .nw h2, .nw h3 { margin: 0; }
.nw-body-s a, .nw-lead a, .nw-legal a, .nw-check a { color: var(--ember-text); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.nw-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.nw-skip { position: absolute; left: var(--space-4); top: calc(-1 * var(--space-9)); z-index: 100; padding: var(--space-3) var(--space-4); background: var(--ink); color: var(--ground); font-family: var(--font-mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; text-decoration: none; border-radius: var(--radius-xs); }
.nw-skip:focus { top: var(--space-4); }
html.nw-locked { overflow: hidden; }
[hidden] { display: none !important; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* ---------- layout ---------- */
.nw-wrap { max-width: var(--container-max); margin-inline: auto; }
.nw-section { padding: var(--space-10) var(--space-8); }
.nw-section--tight { padding-top: 0; }
.nw-section--flush-top { padding-top: var(--space-7); }
.nw-section__head { display: grid; gap: var(--space-5); margin-bottom: var(--space-8); max-width: 1100px; }
.nw-stack { display: grid; gap: var(--space-4); align-content: start; justify-items: start; }
.nw-stack--l { gap: var(--space-5); }
.nw-split { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-8); align-items: start; }
.nw-ratio-16x9 { aspect-ratio: 16 / 9; }
@media (max-width: 1100px) { .nw-section { padding: var(--space-9) var(--space-8); } }
@media (max-width: 860px) {
  .nw-section { padding: var(--space-8) var(--space-4); }
  .nw-section--tight { padding-top: 0; }
  .nw-section--flush-top { padding-top: var(--space-5); }
  .nw-section__head { margin-bottom: var(--space-7); }
  .nw-split { grid-template-columns: 1fr; gap: var(--space-6); }
}

/* ---------- nav: primary menu with dropdowns ---------- */
.nw-nav__main { display: flex; align-items: center; height: 100%; }
.nw-nav__links { align-items: center; height: 100%; }
.nw-nav__item { position: relative; height: 100%; display: flex; align-items: center; }
.nw-nav__trigger, .nw-nav__contact { display: inline-flex; align-items: center; gap: var(--space-2); background: none; border: 0; padding: 0; cursor: pointer; font-family: var(--font-mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; text-decoration: none; color: var(--ink-muted); transition: color var(--duration-fast); }
.nw-nav__trigger:hover, .nw-nav__trigger[aria-expanded="true"], .nw-nav__trigger[aria-current], .nw-nav__contact:hover, .nw-nav__contact[aria-current] { color: var(--ink); }
.nw-nav__trigger[aria-current]::before, .nw-nav__contact[aria-current]::before { content: "●"; color: var(--ember); }
.nw-nav__caret { width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform var(--duration-fast) var(--ease-out-expo); }
.nw-nav__trigger[aria-expanded="true"] .nw-nav__caret { transform: translateY(1px) rotate(-135deg); }
.nw-sub { position: absolute; top: 100%; left: calc(-1 * var(--space-5)); z-index: 20; width: 680px; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-6); padding: var(--space-6); background: var(--ground-raised); color: var(--ink); box-shadow: var(--elev-2), var(--edge-west); border-top: 1px solid var(--line); }
.nw-sub__intro { display: grid; gap: var(--space-3); align-content: start; justify-items: start; }
.nw-sub__list { list-style: none; margin: 0; padding: 0; display: grid; border-top: 1px solid var(--line); }
.nw-nav__links .nw-sub__list a { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: var(--space-3); padding: var(--space-3) 0; border-bottom: 1px solid var(--line); font-family: var(--font-sans); font-size: 15px; letter-spacing: 0; text-transform: none; color: var(--ink); text-decoration: none; transition: background var(--duration-fast); }
.nw-nav__links .nw-sub__list a:hover, .nw-nav__links .nw-sub__list a:focus-visible { background-image: linear-gradient(100deg, var(--light-west), transparent 60%); }
.nw-sub__title { display: block; font-weight: 600; line-height: 1.3; }
.nw-sub__desc { display: block; font-size: 14px; line-height: 1.4; color: var(--ink-muted); }
.nw-nav__actions { display: flex; gap: var(--space-5); align-items: center; }
.nw-nav__menu { display: none; }
.nw-burger { position: relative; width: 18px; height: 12px; display: block; }
.nw-burger::before, .nw-burger::after, .nw-burger span { content: ""; position: absolute; left: 0; right: 0; height: 1.5px; background: currentColor; }
.nw-burger::before { top: 0; } .nw-burger span { top: 5px; right: 5px; } .nw-burger::after { bottom: 0; }
.nw-nav.is-scrolled { box-shadow: var(--elev-2); }
@media (max-width: 1180px) {
  .nw-nav { padding: 0 var(--space-5); }
  .nw-nav__main, .nw-nav__contact { display: none; }
  .nw-nav__menu { display: inline-flex; }
}
@media (max-width: 860px) { .nw-nav { padding: 0 var(--space-4); } }
@media (max-width: 420px) { .nw-nav__actions { gap: var(--space-3); } .nw-nav__actions [data-nw-drawer] { display: none; } }

/* ---------- dialogs: drawer and mobile menu ---------- */
.nw-dialog[hidden] { display: none; }
.nw-menu { position: fixed; inset: 0; z-index: 70; }
.nw-menu__sheet { position: absolute; inset: 0; background: var(--ground); color: var(--ink); padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-6); overflow-y: auto; opacity: 0; transform: translateY(-12px); transition: opacity var(--duration-base) var(--ease-out-expo), transform var(--duration-base) var(--ease-out-expo); }
.nw-menu.is-open .nw-menu__sheet { opacity: 1; transform: none; }
.nw-menu__top { display: flex; justify-content: space-between; align-items: center; min-height: calc(var(--nav-height) - var(--space-5)); }
.nw-menu__links { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.nw-menu__links > li { border-bottom: 1px solid var(--line); padding: var(--space-3) 0; }
.nw-menu__main { display: flex; gap: var(--space-4); align-items: baseline; padding: var(--space-2) 0; font-size: 28px; line-height: 1.1; font-weight: 500; letter-spacing: -.02em; text-decoration: none; color: var(--ink); }
.nw-menu__main:hover, .nw-menu__main[aria-current] { color: var(--ember-text); }
.nw-menu__sub { list-style: none; margin: 0 0 var(--space-2); padding: 0 0 0 calc(var(--space-4) + 22px); display: grid; gap: var(--space-1); }
.nw-menu__sub a { display: block; padding: 6px 0; font-size: 15px; color: var(--ink-muted); text-decoration: none; }
.nw-menu__sub a:hover { color: var(--ink); }
.nw-menu .nw-btn--lg { align-self: stretch; }

.nw-drawer { position: fixed; inset: 0; z-index: 60; }
.nw-drawer__backdrop { position: absolute; inset: 0; background: var(--scrim); opacity: 0; transition: opacity var(--duration-base) var(--ease-out-expo); }
.nw-drawer__panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(600px, 100%); background: var(--ground); color: var(--ink); overflow-y: auto; overscroll-behavior: contain; padding: var(--space-6); display: grid; align-content: start; gap: var(--space-4); transform: translateX(100%); transition: transform var(--duration-base) var(--ease-out-expo); box-shadow: var(--elev-3), var(--edge-west); }
.nw-drawer.is-open .nw-drawer__backdrop { opacity: 1; }
.nw-drawer.is-open .nw-drawer__panel { transform: none; }
.nw-drawer__head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-4); }
.nw-drawer .nw-inquiry { margin-top: var(--space-3); }
@media (max-width: 720px) { .nw-drawer__panel { padding: var(--space-5) var(--space-4); } }

/* ---------- hero (day) ---------- */
.nw-hero--day .nw-hero__media img { position: absolute; inset: 0; }
.nw-hero__note { max-width: 52ch; }
.nw-hero--day .nw-display--xxl { overflow-wrap: anywhere; hyphens: manual; }
/* bundle.css redeclares the two-column grid after its 960px query: restore the single column */
@media (max-width: 960px) { .nw-hero--day { grid-template-columns: minmax(0, 1fr); } }

/* ---------- positioning ---------- */
.nw-theses { list-style: none; margin: 0; padding: 0; }
.nw-theses li { font-size: clamp(26px, 3vw, 40px); line-height: 1.12; letter-spacing: -.02em; font-weight: 500; padding: var(--space-5) 0; border-top: 1px solid var(--line); text-wrap: balance; }
.nw-theses li:last-child { border-bottom: 1px solid var(--line); }
.nw-axes { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--space-2); }

/* ---------- CTA band ---------- */
.nw-ctaband { margin-top: var(--space-9); display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-6); align-items: center; padding: var(--space-7) var(--space-6); background-color: var(--ground-raised); background-image: linear-gradient(100deg, var(--light-west), transparent 55%); box-shadow: var(--edge-west); }
.nw-ctaband .nw-body-s { max-width: 62ch; }
.nw-ctaband__actions { display: flex; flex-wrap: wrap; gap: var(--space-5); align-items: center; }
@media (max-width: 860px) { .nw-ctaband { grid-template-columns: 1fr; margin-top: var(--space-8); padding: var(--space-6) var(--space-5); } }

/* ---------- who we partner with ---------- */
.nw-partners { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-8); align-items: start; }
.nw-partners__intro { display: grid; gap: var(--space-6); align-content: start; }
.nw-partners__intro .nw-h1 { text-wrap: balance; }
.nw-partners__grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
.nw-partners__grid .nw-card { align-content: start; min-height: 220px; }
.nw-partners__close { grid-column: 1 / -1; }
.nw-quote { font-family: var(--font-serif); font-style: italic; font-weight: 400; font-size: 36px; line-height: 1.2; letter-spacing: -.01em; max-width: 34ch; }
@media (max-width: 960px) { .nw-partners { grid-template-columns: 1fr; gap: var(--space-7); } }
@media (max-width: 640px) { .nw-partners__grid { grid-template-columns: 1fr; } .nw-partners__grid .nw-card { min-height: 0; } .nw-quote { font-size: 28px; } }

/* ---------- domains ---------- */
.nw-domain__body { display: grid; gap: var(--space-3); }
.nw-after-grid { display: flex; flex-wrap: wrap; gap: var(--space-5); align-items: center; margin-top: var(--space-7); }

/* ---------- principles ---------- */
.nw-axis { list-style: none; margin: 0; padding-left: 0; padding-right: 0; }
@media (max-width: 860px) { .nw-axis { padding-left: var(--space-7); } }

/* ---------- sectors ---------- */
.nw-sectors { list-style: none; margin: 0; padding: 0; }
.nw-sector--statement .nw-coord { color: #c3cadb; }
.nw-sector--statement:hover .nw-coord { color: #c3cadb; }

/* ---------- engagement path ---------- */
.nw-path__steps { list-style: none; margin: 0; padding: 0; }
.nw-path__svg path, .nw-path__svg circle { vector-effect: non-scaling-stroke; }
.nw-path__svg .t-grid { fill: none; stroke: var(--line); stroke-width: 1; }
.nw-path__svg .t-path { fill: none; stroke: var(--ember); stroke-width: 2; }
.nw-path__svg .t-node { fill: var(--ground); stroke: var(--amber-text); stroke-width: 1.5; transition: fill var(--duration-fast), stroke var(--duration-fast); }
.nw-path__svg .t-node--on { fill: var(--ember); stroke: var(--ember); }

/* ---------- manifesto ---------- */
.nw-kinetic { background: transparent; }

/* ---------- Synthos Logic band ---------- */
.nw-partner--synthos { background-image: linear-gradient(90deg, rgba(27, 44, 78, .97) 42%, rgba(27, 44, 78, .86)), url("/assets/img/nbnw-sofia-office-team-1400.webp"); background-size: cover; background-position: center; }
@media (min-width: 1500px) { .nw-partner--synthos { background-image: linear-gradient(90deg, rgba(27, 44, 78, .97) 42%, rgba(27, 44, 78, .86)), url("/assets/img/nbnw-sofia-office-team-2400.webp"); } }
@media (max-width: 800px) { .nw-partner--synthos { background-image: linear-gradient(180deg, rgba(27, 44, 78, .97), rgba(27, 44, 78, .92)), url("/assets/img/nbnw-sofia-office-team-800.webp"); } }
.nw-partner__caps { list-style: none; margin: 0; padding: 0; align-self: start; }
.nw-partner .nw-display--l { max-width: 18ch; }
@media (max-width: 640px) { .nw-partner__caps { grid-template-columns: 1fr; } .nw-partner__cap:nth-child(odd) { border-right: 0; } .nw-partner__cap:nth-child(even) { padding-left: 0; } }

/* ---------- inquiry section ---------- */
.nw-inquiry-layout { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-8); align-items: start; }
.nw-compliance { display: grid; gap: var(--space-3); padding: var(--space-5); background: var(--ground-raised); }
@media (max-width: 960px) { .nw-inquiry-layout { grid-template-columns: 1fr; gap: var(--space-7); } }

/* ---------- form additions ---------- */
.nw-form { position: relative; }
.nw-form--compact { gap: var(--space-4); }
.nw-fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.nw-fieldset legend { padding: 0; margin-bottom: var(--space-2); }
.nw-optional { font-family: var(--font-sans); font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--ink-muted); margin-left: var(--space-1); }
.nw-error { color: var(--ember-text); font-size: 14px; line-height: 1.4; }
.nw-error:empty { display: none; }
.nw-input[aria-invalid="true"] { border-color: var(--ember-text); box-shadow: 0 0 0 1px var(--ember-text); }
.nw-select { appearance: none; -webkit-appearance: none; padding-right: var(--space-7); cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, var(--ink-muted) 50%), linear-gradient(135deg, var(--ink-muted) 50%, transparent 50%);
  background-position: calc(100% - 24px) 52%, calc(100% - 18px) 52%; background-size: 6px 6px; background-repeat: no-repeat; }
.nw-field .nw-check { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: var(--space-3); align-items: start; font-family: var(--font-sans); font-size: 15px; line-height: 1.5; letter-spacing: 0; text-transform: none; color: var(--ink); cursor: pointer; }
.nw-check input { appearance: none; -webkit-appearance: none; width: 22px; height: 22px; margin: 1px 0 0; border: 1px solid var(--line-strong); border-radius: var(--radius-xs); background: var(--ground-raised); display: grid; place-content: center; cursor: pointer; transition: background var(--duration-fast), border-color var(--duration-fast); }
.nw-check input::before { content: ""; width: 11px; height: 6px; border-left: 2px solid var(--on-ember); border-bottom: 2px solid var(--on-ember); transform: translateY(-2px) rotate(-45deg); opacity: 0; }
.nw-check input:checked { background: var(--ember); border-color: var(--ember); }
.nw-check input:checked::before { opacity: 1; }
.nw-check input:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.nw-check input[aria-invalid="true"] { border-color: var(--ember-text); box-shadow: 0 0 0 1px var(--ember-text); }
.nw-hp { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.nw-form__status { grid-column: 1 / -1; font-size: 15px; line-height: 1.5; color: var(--ember-text); }
.nw-form__status:empty { display: none; }
.nw-form__status.is-ok { color: var(--ink); }
.nw-form-done { display: grid; gap: var(--space-4); justify-items: start; padding: var(--space-6) 0; }
.nw-form-done[hidden] { display: none; }
.nw-form-done:focus { outline: none; }
.nw-btn[aria-disabled="true"] { cursor: progress; }

/* ---------- headquarters ---------- */
.nw-hq--district { background-image: linear-gradient(90deg, rgba(10, 14, 26, .2), rgba(10, 14, 26, .85) 70%), url("/assets/img/nbnw-sofia-district-dusk-1400.webp"); }
@media (min-width: 1500px) { .nw-hq--district { background-image: linear-gradient(90deg, rgba(10, 14, 26, .2), rgba(10, 14, 26, .85) 70%), url("/assets/img/nbnw-sofia-district-dusk-2400.webp"); } }
@media (max-width: 800px) { .nw-hq--district { background-image: linear-gradient(180deg, rgba(10, 14, 26, .3), rgba(10, 14, 26, .85) 60%), url("/assets/img/nbnw-sofia-district-dusk-800.webp"); } }
.nw-hq { min-height: 640px; }
.nw-hq__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); padding-top: var(--space-2); }
@media (max-width: 720px) { .nw-hq { min-height: 520px; align-items: end; } }

/* ---------- footer ---------- */
.nw-footer { color: var(--ink); }
.nw-footer__lead { display: grid; gap: var(--space-5); }
.nw-footer__row { align-items: center; }
.nw-footer__row address { font-style: normal; }
.nw-footer__logo img { height: 28px; width: auto; display: block; }
.nw-footer__links { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--space-4); }
.nw-footer__button { background: none; border: 0; padding: 0; font: inherit; color: inherit; cursor: pointer; }
.nw-footer__button:hover, .nw-footer__links a:hover { color: var(--ember-text); }
.nw-footer a { color: var(--ink-muted); }
.nw-footer__legal { color: var(--ink-muted); }

/* ---------- consent banner ---------- */
.nw-consent { position: fixed; left: var(--space-5); bottom: var(--space-5); z-index: 50; width: min(440px, calc(100% - 2 * var(--space-4))); max-height: calc(100vh - 2 * var(--space-5)); overflow-y: auto; background: var(--ground-raised); color: var(--ink); padding: var(--space-5); display: grid; gap: var(--space-3); box-shadow: var(--elev-2), var(--edge-west); }
.nw-consent[hidden] { display: none; }
.nw-consent__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; padding-top: var(--space-2); }
.nw-consent__prefs { display: grid; gap: var(--space-3); padding: var(--space-3) 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.nw-consent__prefs[hidden] { display: none; }
.nw-switch { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: var(--space-3); align-items: start; font-size: 14px; line-height: 1.45; color: var(--ink-muted); cursor: pointer; }
.nw-switch strong { display: block; color: var(--ink); font-weight: 600; }
.nw-switch input { appearance: none; -webkit-appearance: none; position: relative; width: 44px; height: 24px; margin: 0; border: 1px solid var(--line-strong); border-radius: var(--radius-pill); background: var(--ground); cursor: pointer; transition: background var(--duration-fast), border-color var(--duration-fast); }
.nw-switch input::before { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: var(--radius-pill); background: var(--ink-muted); transition: transform var(--duration-fast) var(--ease-out-expo), background var(--duration-fast); }
.nw-switch input:checked { background: var(--ember); border-color: var(--ember); }
.nw-switch input:checked::before { transform: translateX(20px); background: var(--on-ember); }
.nw-switch input:disabled { cursor: not-allowed; opacity: .6; }
.nw-switch input:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
@media (max-width: 720px) { .nw-consent { left: var(--space-4); bottom: var(--space-4); } }

/* ---------- inner pages ---------- */
.nw-page-head { display: grid; gap: var(--space-5); }
.nw-page-head .nw-lead { max-width: 58ch; }
.nw-details { display: grid; gap: 0; margin: 0; border-top: 1px solid var(--line); }
.nw-details div { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: var(--space-4); padding: var(--space-4) 0; border-bottom: 1px solid var(--line); }
.nw-details dt { font-family: var(--font-mono); font-size: 11px; line-height: 24px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-muted); }
.nw-details dd { margin: 0; }
.nw-details a { color: var(--ember-text); }
@media (max-width: 480px) { .nw-details div { grid-template-columns: 1fr; gap: var(--space-1); } }

.nw-contact-stage { padding: var(--space-10) var(--space-8); background-size: cover; background-position: center;
  background-image: linear-gradient(90deg, rgba(30, 37, 64, .86), rgba(30, 37, 64, .94) 58%), url("/assets/img/nbnw-sofia-district-dusk-1400.webp"); }
@media (min-width: 1500px) { .nw-contact-stage { background-image: linear-gradient(90deg, rgba(30, 37, 64, .86), rgba(30, 37, 64, .94) 58%), url("/assets/img/nbnw-sofia-district-dusk-2400.webp"); } }
.nw-contact-stage__inner { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: var(--space-8); align-items: start; }
.nw-contact-card { background: var(--ground-raised); padding: var(--space-7) var(--space-6); box-shadow: var(--elev-1), var(--edge-west); display: grid; gap: var(--space-5); }
@media (max-width: 960px) {
  .nw-contact-stage { padding: var(--space-8) var(--space-4); background-image: linear-gradient(180deg, rgba(30, 37, 64, .7), rgba(30, 37, 64, .95) 40%), url("/assets/img/nbnw-sofia-district-dusk-800.webp"); background-position: top center; background-size: 100% auto; background-repeat: no-repeat; background-color: var(--ground); }
  .nw-contact-stage__inner { grid-template-columns: 1fr; gap: var(--space-7); }
  .nw-contact-card { padding: var(--space-6) var(--space-4); }
}

.nw-center { min-height: calc(100vh - var(--nav-height)); display: grid; align-content: center; justify-items: start; gap: var(--space-6); position: relative; overflow: hidden; }
.nw-center__traj { position: absolute; right: -4%; bottom: 0; width: min(760px, 70%); opacity: .9; pointer-events: none; z-index: 0; }
.nw-center > :not(.nw-center__traj) { position: relative; z-index: 1; }
.nw-actions { display: flex; flex-wrap: wrap; gap: var(--space-4); align-items: center; }

/* 404 on the night hero */
.nw-hero--404 { min-height: calc(100vh - var(--nav-height)); }
.nw-hero--404 .nw-hero__media picture img { object-fit: cover; }

/* ---------- legal pages ---------- */
.nw-legal-page { padding: var(--space-9) var(--space-8) var(--space-10); }
.nw-legal-head { display: grid; gap: var(--space-5); margin-bottom: var(--space-8); max-width: 1100px; }
.nw-legal-head__meta { display: flex; flex-wrap: wrap; gap: var(--space-3) var(--space-5); align-items: center; }
.nw-legal { display: grid; grid-template-columns: 260px minmax(0, 72ch); gap: var(--space-8); align-items: start; }
.nw-toc { position: sticky; top: calc(var(--nav-height) + var(--space-6)); display: grid; gap: var(--space-4); }
.nw-toc ol { list-style: none; margin: 0; padding: 0; display: grid; border-top: 1px solid var(--line); }
.nw-toc a { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: var(--space-2); padding: var(--space-2) 0; border-bottom: 1px solid var(--line); font-size: 14px; line-height: 1.4; color: var(--ink-muted); text-decoration: none; }
.nw-toc a:hover, .nw-toc a[aria-current="true"] { color: var(--ink); }
.nw-toc a span { font-family: var(--font-mono); font-size: 12px; color: var(--ember-text); }
.nw-legal__body { display: grid; gap: 0; }
.nw-legal__body > section { padding: var(--space-6) 0; border-top: 1px solid var(--line); display: grid; gap: var(--space-4); }
.nw-legal__body h2 { display: grid; gap: var(--space-2); font-size: 28px; line-height: 1.2; font-weight: 500; letter-spacing: -.015em; }
.nw-legal__body h2 .nw-domain__idx { font-size: 13px; }
.nw-legal__body h3 { font-size: 18px; line-height: 1.35; font-weight: 600; margin-top: var(--space-2); }
.nw-legal__body p, .nw-legal__body li { max-width: 68ch; }
.nw-legal__body ul, .nw-legal__body ol { margin: 0; padding-left: 1.2em; display: grid; gap: var(--space-2); }
.nw-legal__body li::marker { color: var(--ember-text); }
.nw-legal__note { padding: var(--space-5); background: var(--ground-raised); box-shadow: var(--edge-west); display: grid; gap: var(--space-2); }
.nw-table-wrap { overflow-x: auto; border-top: 1px solid var(--line-strong); }
.nw-table { width: 100%; border-collapse: collapse; font-size: 15px; line-height: 1.45; }
.nw-table th { font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; font-weight: 500; color: var(--ink-muted); text-align: left; padding: var(--space-3) var(--space-3) var(--space-3) 0; border-bottom: 1px solid var(--line); vertical-align: bottom; }
.nw-table td { padding: var(--space-3) var(--space-3) var(--space-3) 0; border-bottom: 1px solid var(--line); vertical-align: top; }
.nw-table code { font-family: var(--font-mono); font-size: 13px; }
.nw-themeswitch { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); }
.nw-themeswitch legend { float: left; margin-right: var(--space-2); font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-muted); }
.nw-themeswitch .nw-chip span { padding: 6px var(--space-3); font-size: 14px; }
@media (max-width: 960px) {
  .nw-legal-page { padding: var(--space-8) var(--space-4) var(--space-9); }
  .nw-legal { grid-template-columns: 1fr; gap: var(--space-6); }
  .nw-toc { position: static; }
}

/* ---------- small utilities ---------- */
.nw-horizon--short { height: 220px; }
.nw-inline-link { color: var(--ember-text); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }

/* ---------- inner pages: hero, services, jump links ---------- */
.nw-page-hero { padding-bottom: var(--space-8); }
.nw-page-hero .nw-split { align-items: end; }
.nw-jump { list-style: none; margin: var(--space-3) 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--space-2); }
.nw-jump a { display: inline-flex; gap: var(--space-2); align-items: baseline; padding: 8px var(--space-4); border: 1px solid var(--line-strong); border-radius: var(--radius-pill); font-size: 15px; color: var(--ink); text-decoration: none; transition: background var(--duration-fast); }
.nw-jump a:hover { background: var(--ground-raised); }
.nw-service { padding: var(--space-9) var(--space-8); border-top: 1px solid var(--line); }
.nw-service__inner { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: var(--space-8); align-items: center; }
.nw-service--flip .nw-frame { order: 2; }
.nw-ctaband--flush { margin-top: 0; }
.nw-sectors--page { margin-bottom: 0; }
.nw-horizon--golden-night { height: 320px; background: linear-gradient(180deg, var(--sky-golden) 0%, #b98a6a 22%, #5b4a5e 48%, var(--sky-dusk) 72%, var(--sky-night) 100%); }
@media (max-width: 960px) {
  .nw-service { padding: var(--space-8) var(--space-4); }
  .nw-service__inner { grid-template-columns: 1fr; gap: var(--space-6); }
  .nw-service--flip .nw-frame { order: 0; }
}

/* ---------- footer sitemap ---------- */
.nw-footer__top { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-8); align-items: end; }
.nw-footer__nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-5); }
.nw-footer__nav ul { list-style: none; margin: var(--space-3) 0 0; padding: 0; display: grid; gap: var(--space-2); }
.nw-footer__nav a { font-size: 15px; text-decoration: none; }
.nw-footer__nav a:hover { color: var(--ember-text); }
@media (max-width: 1000px) { .nw-footer__top { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .nw-footer__nav { grid-template-columns: 1fr 1fr; } }
