/* NEVQUO 6.1 design layer: light by default, dark only when the visitor picks it. */

/* 1. Tokens ------------------------------------------------------------------ */
:root {
	--nv-font: Geist, "Geist Fallback", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	--nx-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
	--nv-background: #fdfcfb;
	--nv-paper: #f5f4f1;
	--nv-ink: #151517;
	--nv-dark: #151517;
	--nv-accent: #151517;
	--nv-on-accent: #fdfcfb;
	--nv-surface: #ffffff;
	--nv-muted: #66676f;
	--nv-line: #ebe9e4;
	--nv-line-strong: #d6d3cc;
	--nv-on-dark: #f4f3f0;
	--nv-on-dark-muted: #a4a4ad;
	--nv-line-dark: #2c2c31;
	--nv-accent-ink: #151517;
	--nv-danger: #b42318;
	--nx-edge: #8a8b93;
	--nx-shadow: 0 24px 60px -32px rgba(17, 17, 19, .25);
	--nv-radius: 20px;
	--nv-width: 1200px;
	--nv-gutter: clamp(20px, 9.52vw - 17px, 120px);
	--nv-space: 96px;
	--nx-h1: clamp(2.5rem, 1.6rem + 4.6vw, 4.5rem);
	--nx-h2: clamp(1.875rem, 1.4rem + 2vw, 2.875rem);
	--nx-h3: clamp(1.25rem, 1.1rem + .6vw, 1.5rem);
	--nx-lead: clamp(1.0625rem, 1rem + .3vw, 1.25rem);
}
:root[data-theme="dark"] {
	--nv-background: #0e0e10;
	--nv-paper: #1e1e22;
	--nv-ink: #f4f3f0;
	--nv-dark: #17171a;
	--nv-accent: #f4f3f0;
	--nv-on-accent: #0e0e10;
	--nv-surface: #17171a;
	--nv-muted: #a4a4ad;
	--nv-line: #2c2c31;
	--nv-line-strong: #44444b;
	--nv-accent-ink: #f4f3f0;
	--nv-danger: #ff8a80;
	--nx-edge: #6f6f7a;
	--nx-shadow: 0 24px 60px -32px rgba(0, 0, 0, .7);
	/* WordPress colour classes (has-ink-color, has-paper-background-color…) follow the theme too */
	--wp--preset--color--background: #0e0e10;
	--wp--preset--color--paper: #1e1e22;
	--wp--preset--color--ink: #f4f3f0;
	--wp--preset--color--dark: #17171a;
	--wp--preset--color--accent: #f4f3f0;
	--wp--preset--color--white: #17171a;
	color-scheme: dark;
}
html, body { background: var(--nv-background); }

/* 2. Base ------------------------------------------------------------------ */
body { font-family: var(--nv-font); line-height: 1.6; color: var(--nv-ink); }
h1, h2, h3, h4, h5, h6 { font-weight: 600; letter-spacing: -.03em; line-height: 1.12; overflow-wrap: break-word; }
::selection { background: var(--nv-ink); color: var(--nv-background); }
:focus-visible { outline: 3px solid var(--nv-ink); outline-offset: 3px; }
.nv-display, .nx-h1 { font-size: calc(var(--nx-h1) * var(--nv-heading-scale, 1)); font-weight: 600; line-height: 1.04; letter-spacing: -.04em; max-width: 18ch; text-wrap: balance; margin: 0; }
.nv-page-heading h1, .nv-archive-heading h1 { font-size: calc(var(--nx-h1) * var(--nv-heading-scale, 1)); line-height: 1.04; letter-spacing: -.04em; }
.nx-h2 { font-size: var(--nx-h2); letter-spacing: -.035em; line-height: 1.08; text-wrap: balance; margin: 0; }
.nx-h3 { margin: 0; font-size: var(--nx-h3); letter-spacing: -.02em; line-height: 1.2; }
.nx-lead, .nv-lead { margin: 0; font-size: var(--nx-lead); line-height: 1.55; color: var(--nv-muted); max-width: 560px; text-wrap: pretty; }
.nx-muted { margin: 0; color: var(--nv-muted); }
.nv-eyebrow, .is-style-nv-eyebrow { font: 400 13px/1.4 var(--nx-mono); letter-spacing: 0; text-transform: none; color: var(--nv-muted); }
.nv-eyebrow::before, .is-style-nv-eyebrow::before { display: none; }
.nv-wordmark, .nv-marquee, .nv-cursor { display: none !important; }

/* 3. Buttons, chips, links -------------------------------------------------- */
.wp-block-button__link, .nv-button, .wp-block-search__button, .wp-element-button { min-height: 52px; padding: 0 28px; border: 1.5px solid transparent; font-size: 16px; font-weight: 600; letter-spacing: 0; background: var(--nv-ink); color: var(--nv-background); transform: none; }
.wp-block-button__link:hover, .nv-button:hover, .wp-block-search__button:hover { background: var(--nv-muted); color: var(--nv-background); }
.nv-btn-accent .wp-block-button__link, .nv-button--accent, .nx-btn-primary .wp-block-button__link { background: var(--nv-ink); color: var(--nv-background); }
.is-style-outline .wp-block-button__link { background: transparent; border-color: var(--nv-ink); color: var(--nv-ink); }
.is-style-outline .wp-block-button__link:hover { background: var(--nv-paper); color: var(--nv-ink); }
.nv-menu-list .nv-menu-cta > a { padding: 0 24px; min-height: 48px; background: var(--nv-ink); color: var(--nv-background); }
.nv-menu-list .nv-menu-cta > a:hover { background: var(--nv-muted); color: var(--nv-background); }
.nv-menu-list a { min-height: 44px; font-size: 16px; font-weight: 500; }
.nv-pill-link { min-height: 44px; border-color: var(--nx-edge); font-weight: 600; }
.nv-pill-link:hover { background: var(--nv-paper); color: var(--nv-ink); }
.nx-more-link { margin: 0; font-weight: 600; }
.nx-more-link a { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; }
.nx-more-link a:hover { text-decoration: underline; text-underline-offset: 6px; }
.nv-chip { display: inline-flex; align-items: center; padding: 5px 12px; border: 0; border-radius: 999px; background: var(--nv-paper); color: var(--nv-muted); font: 400 13px/1.4 var(--nx-mono); margin: 0; }
.nv-chip--accent { background: var(--nv-paper); color: var(--nv-muted); }
.nv-filters a { min-height: 44px; padding: 0 18px; border: 1.5px solid var(--nx-edge); font-weight: 500; }
.nv-filters a:hover { background: var(--nv-paper); border-color: var(--nv-ink); color: var(--nv-ink); }
.nv-filters a.is-active { background: var(--nv-ink); border-color: var(--nv-ink); color: var(--nv-background); }

/* 4. Header and footer ------------------------------------------------------ */
.nv-site-header { background: var(--nv-background); }
.nv-header-inner { min-height: 80px; }
.nv-brand { font-size: 1.25rem; font-weight: 700; letter-spacing: -.03em; min-height: 44px; }
/* Logos: a white logo is flipped to dark on the light theme; a dark logo is flipped to light on the dark theme. */
.nv-logo--light { filter: invert(1) hue-rotate(180deg); }
:root[data-theme="dark"] .nv-logo { filter: invert(1) hue-rotate(180deg); }
:root[data-theme="dark"] .nv-logo--light { filter: none; }
.nv-menu-toggle { border-color: var(--nx-edge); }
.nv-menu-toggle[aria-expanded="true"] { border-color: var(--nv-ink); }
@media (max-width: 960px) {
	.nv-menu--primary .nv-menu-list .nv-menu-cta > a { display: inline-flex; margin-top: 16px; padding: 0 28px; min-height: 52px; background: var(--nv-on-dark); color: var(--nv-dark); font-size: 1rem; letter-spacing: 0; }
	.nv-menu--primary .nv-menu-list .nv-menu-cta { border-bottom: 0; }
	.nv-menu--primary .nv-menu-list > .current-menu-item > a { color: var(--nv-on-dark); text-decoration: underline; text-underline-offset: 8px; }
	.nv-menu--primary .nv-menu-list a { font-weight: 600; letter-spacing: -.03em; }
}
.nv-menu-list .sub-menu { background: var(--nv-surface); border-color: var(--nx-edge); box-shadow: var(--nx-shadow); }
.nv-menu-list .sub-menu a:hover { background: var(--nv-paper); }
.nv-search-toggle, .nx-theme-btn { min-width: 44px; min-height: 44px; }
.nx-theme-btn { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 1px solid var(--nv-line-strong); border-radius: 50%; background: transparent; color: var(--nv-ink); cursor: pointer; }
.nx-theme-btn:hover { border-color: var(--nv-ink); }
.nx-theme-btn[hidden] { display: none !important; }
.nx-theme-btn svg { width: 20px; height: 20px; }
.nx-theme-btn .nx-sun, :root[data-theme="dark"] .nx-theme-btn .nx-moon { display: none; }
:root[data-theme="dark"] .nx-theme-btn .nx-sun { display: block; }

.nv-site-footer { margin: clamp(32px, 6vw, 72px) 0 0; border-radius: 0; background: transparent; color: var(--nv-ink); overflow: visible; }
.nx-footer { padding-block: clamp(40px, 6vw, 64px) 24px; border-top: 1px solid var(--nv-line); }
.nx-footer-cols { gap: 32px; margin: 0; }
.nx-footer-cols > .wp-block-column > * { margin-block: 0; }
.nx-footer-cols .nx-muted { margin-top: 16px; max-width: 300px; }
.nx-mini { margin: 0 0 6px; font: 400 13px var(--nx-mono); color: var(--nv-muted); }
.nx-footer-cols a:not(.nv-brand) { font-weight: 600; text-decoration: underline; text-underline-offset: 5px; }
.nv-site-footer .nv-menu--footer { display: block; }
.nv-site-footer .nv-menu--footer .nv-menu-list { flex-direction: row; flex-wrap: wrap; gap: 0 24px; }
.nv-site-footer .nv-menu--footer .nv-menu-list a { min-height: 44px; padding: 0 4px; color: var(--nv-ink); font-weight: 500; text-decoration: none; transform: none; }
.nv-site-footer .nv-menu--footer .nv-menu-list a:hover { text-decoration: underline; text-underline-offset: 6px; }
.nv-footer-bottom { margin-top: 32px; padding-block: 0; border: 0; color: var(--nv-muted); font-size: 14px; }
.nv-footer-bottom p, .nv-copyright { margin: 0; color: var(--nv-muted); }

/* 5. Page sections ---------------------------------------------------------- */
.nx-hero { padding-block: clamp(32px, 6vw, 88px) clamp(48px, 7vw, 96px); }
.nx-hero > * { margin-block: 0; }
.nx-hero .nx-lead { margin-top: 24px; }
.nx-hero .wp-block-buttons { margin-top: 36px; }
.nx-head { margin-bottom: clamp(24px, 4vw, 40px); }
.nx-head > * { margin-block: 0; }
.nx-head .nx-more-link { margin-top: 8px; }
.nx-cards, .nx-three { gap: 20px; margin-block: 0 20px; }
.nx-cards > .wp-block-column, .nx-three > .wp-block-column { margin: 0; }
.nx-card { position: relative; height: 100%; padding: clamp(22px, 3vw, 32px); background: var(--nv-surface); border: 1px solid var(--nv-line); border-radius: var(--nv-radius); box-sizing: border-box; }
.nx-card > * { margin-block: 0; }
.nx-card:hover { border-color: var(--nv-ink); }
.nx-card h3 a { text-decoration: none; }
.nx-card h3 a::after { content: ""; position: absolute; inset: 0; border-radius: var(--nv-radius); }
.nx-card .nx-muted { margin-top: 10px; }
.nx-more { padding-top: 14px; font-weight: 600; }
.nx-more::after { content: "→"; margin-left: 8px; }
.nx-three { gap: 32px; }
.nx-three .nx-h3 { margin-bottom: 8px; }
.nx-cta { padding: clamp(28px, 5vw, 64px) clamp(22px, 5vw, 64px); background: var(--nv-paper); border-radius: calc(var(--nv-radius) + 8px); }
.nx-cta > * { margin-block: 0; }
.nx-cta .nx-muted { margin-top: 14px; max-width: 560px; }
.nx-cta .wp-block-buttons { margin-top: 28px; }

/* Product and project cards */
.nv-card--product { padding: clamp(22px, 3vw, 32px); background: var(--nv-surface); border: 1px solid var(--nv-line); border-radius: var(--nv-radius); }
.nv-card--product:hover { border-color: var(--nv-ink); }
.nv-card--product .nv-card-title { margin-top: 18px !important; font-size: clamp(1.5rem, 1.25rem + .9vw, 1.875rem); }
.nv-card--product .nv-card-excerpt { color: var(--nv-muted); line-height: 1.5; }
.nv-card--product .nv-card-meta { order: -1; margin-bottom: 0 !important; }
.nv-card--product .nv-card-footer { margin-top: auto; padding-top: 20px; }
.nv-card--product .nv-card-cta { font-weight: 600; }
.nv-card-grid--product { gap: 20px; }
.nv-card--project .nv-card-image { border-radius: 16px; }
.nv-card-image--placeholder { background: var(--nv-paper); color: var(--nv-ink); }
.nv-card-image--placeholder::before, .nv-card-image--placeholder::after { display: none; }
.nv-card-placeholder { color: var(--nv-muted); font-weight: 600; }

/* 6. Products hub and product page ------------------------------------------ */
.nx-page-head { padding-block: clamp(24px, 5vw, 64px) clamp(28px, 4vw, 48px); }
.nx-page-head > * { margin-block: 0; }
.nx-page-head .nx-lead { margin-top: 20px; max-width: 640px; }
.nx-crumbs { margin: 0; font-size: 14px; color: var(--nv-muted); }
.nx-crumbs a { display: inline-block; padding-block: 12px; text-decoration: underline; text-underline-offset: 4px; }
.nx-pd-head { padding-block: clamp(16px, 3vw, 32px) clamp(24px, 4vw, 40px); }
.nx-pd-head > * { margin-block: 0; }
.nx-pd-head > .wp-block-post-title { margin-top: 12px; }
.nx-pd-head > .wp-block-post-excerpt { margin-top: 16px; }
.nx-pd-head .nv-product-buy { margin-top: 28px; }
.nx-pd-head .wp-block-post-excerpt__excerpt { margin: 0; }
.nx-pd-head .wp-block-post-featured-image { margin-top: 36px; overflow: hidden; border-radius: var(--nv-radius); }
.nx-pd-head .wp-block-post-featured-image:not(:has(img)) { display: none; }
.nx-pd-head .nv-project-meta { margin-top: 32px; grid-template-columns: repeat(auto-fit, minmax(min(140px, 100%), 1fr)); gap: 16px 28px; padding-top: 20px; }
.nx-pd-head .nv-project-meta > div { padding: 0; border: 0; }
.nx-pd-head .nv-project-meta dt { font: 400 13px/1.4 var(--nx-mono); color: var(--nv-muted); text-transform: none; letter-spacing: 0; }
.nx-pd-head .nv-project-meta dd { margin: 4px 0 0; font-weight: 600; }
.nx-pd-body { padding-bottom: var(--nv-section); }
.nx-pd-body > * { max-width: 760px; margin-inline: 0; }
.nx-pd-body :is(h2) { margin: clamp(36px, 5vw, 56px) 0 16px; font-size: clamp(1.5rem, 1.25rem + 1vw, 2rem); }
.nx-pd-body > :first-child { margin-top: 0; }
.nx-pd-body .wp-block-post-content > :first-child { margin-top: 0; }
.nx-pd-body .wp-block-details { border-bottom: 1px solid var(--nv-line); }
.nx-pd-body .wp-block-details:first-of-type { border-top: 1px solid var(--nv-line); }
.nx-pd-body summary { min-height: 56px; padding-block: 14px; font-weight: 600; cursor: pointer; }

/* 7. Single project page: every surface takes its colours from the same tokens -- */
.nv-project-context { background: var(--nv-paper); color: var(--nv-ink); border-color: transparent; }
.nv-outcome { background: var(--nv-surface); color: var(--nv-ink); }
.nv-form-status.is-success { background: var(--nv-paper); color: var(--nv-ink); }

/* 8. Forms, misc ------------------------------------------------------------- */
input:not([type="checkbox"], [type="radio"], [type="submit"]), select, textarea { border-color: var(--nx-edge); background: var(--nv-surface); color: var(--nv-ink); }
.nv-related { padding-top: 0; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; } }

/* 9. Columns: equal widths, aligned tops */
.wp-block-columns.nx-cards, .wp-block-columns.nx-three, .wp-block-columns.nx-footer-cols { align-items: stretch; }
@media (min-width: 782px) { .nx-cards > .wp-block-column, .nx-three > .wp-block-column { flex: 1 1 0 !important; min-width: 0; } }
.nx-footer-cols { align-items: flex-start; }
.nx-three > .wp-block-column > * { margin-block: 0; }
.nx-three .nx-muted { margin-top: 8px; }
.nx-hero { padding-block: clamp(24px, 5vw, 64px) clamp(32px, 5vw, 56px); }

.nx-pd-body .wp-block-post-content { max-width: 760px; }
.nx-pd-body .wp-block-post-content > *, .nx-pd-body > * { margin-inline: 0 !important; max-width: 760px; }

/* Columns: stack on small screens even when WordPress has not loaded its own columns CSS */
.wp-block-columns { display: flex; flex-wrap: wrap !important; box-sizing: border-box; }
.wp-block-column { flex: 1 1 100%; min-width: 0; overflow-wrap: break-word; }
@media (min-width: 782px) { .wp-block-columns { flex-wrap: nowrap !important; } .wp-block-column { flex: 1 1 0; } .wp-block-column[style*="flex-basis"] { flex-grow: 0; } }
.nv-404-code { color: var(--nv-muted); background: none; -webkit-text-fill-color: currentColor; -webkit-text-stroke: 0; animation: none; }
