/* Nova Cat base: tokens, reset, layout, shared components. Section CSS lives in sections/*.css. */
:root {
	--nc-navy: #161541;
	--nc-ink: #170f49;
	--nc-muted: #6f6c90;
	--nc-cyan: #e5f8fc;
	--nc-white: #fcfeff;
	--nc-brand: var(--nc-navy);
	--nc-line: rgba(23, 15, 73, 0.1);
	--nc-shadow: 0 4px 16px 0 rgba(23, 15, 73, 0.1);
	--nc-font: "Instrument Sans", system-ui, sans-serif;
	--nc-font-alt: "Noto Sans", system-ui, sans-serif;
	--nc-radius-s: 10px;
	--nc-radius-m: 20px;
	--nc-radius-l: 40px;
	/* Design frame 1920, content 1600 (160px gutters); fluid below. */
	--nc-container: 1600px;
	--nc-gutter: clamp(16px, 8.333vw, 160px);
	--nc-header-h: 120px;
	--nc-h1: clamp(36px, 3.385vw, 65px);
	--nc-h2: clamp(32px, 2.865vw, 55px);
	--nc-h3: clamp(22px, 1.667vw, 32px);
	--nc-body: clamp(16px, 0.938vw, 18px);
	--nc-ease: cubic-bezier(0.22, 1, 0.36, 1);
}
@media (max-width: 1023px) { :root { --nc-header-h: 72px; } }

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--nc-header-h); -webkit-text-size-adjust: 100%; }
.nc-reduced, .nc-reduced * { scroll-behavior: auto !important; }
body { margin: 0; font-family: var(--nc-font); font-size: var(--nc-body); line-height: 1.4; color: var(--nc-navy); background: var(--nc-white); -webkit-font-smoothing: antialiased; overflow-x: clip; }
img, svg, video { display: block; max-width: 100%; height: auto; }
h1, h2, h3, h4, p, ul, ol, figure { margin: 0; }
ul[role="list"], ol[role="list"] { list-style: none; padding: 0; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; cursor: pointer; }
:focus-visible { outline: 2px solid var(--nc-ink); outline-offset: 3px; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }

.nc-container { width: 100%; max-width: calc(var(--nc-container) + 2 * var(--nc-gutter)); margin-inline: auto; padding-inline: var(--nc-gutter); }
.nc-section { position: relative; padding-block: clamp(64px, 6.25vw, 120px); }
.nc-section[data-bg="cyan"] { background: var(--nc-cyan); }
.nc-section[data-bg="navy"] { background: var(--nc-navy); color: var(--nc-white); }

/* Headings: [[text]] in content becomes <mark>, a cyan block behind the words with pins. */
.nc-h1 { font-size: var(--nc-h1); font-weight: 600; line-height: 1.1; letter-spacing: -0.01em; }
.nc-h2 { font-size: var(--nc-h2); font-weight: 400; line-height: 1.1; }
.nc-h3 { font-size: var(--nc-h3); font-weight: 600; line-height: 1.1; }
.nc-lead { color: var(--nc-muted); font-size: clamp(17px, 1.094vw, 21px); line-height: 1.3; }
mark { background: var(--nc-cyan); color: inherit; padding: 0 0.12em; position: relative; box-decoration-break: clone; -webkit-box-decoration-break: clone; }
[data-bg="cyan"] mark { background: var(--nc-white); }
.nc-eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: 17px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.02em; color: var(--nc-ink); }

/* Buttons: primary = label box + separate square arrow box (Figma CTA). */
.nc-btn { display: inline-flex; gap: 2px; align-items: stretch; font-weight: 500; font-size: clamp(17px, 1.094vw, 21px); line-height: 1.1; }
.nc-btn__label, .nc-btn__arrow { display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--nc-navy); border-radius: var(--nc-radius-s); background: var(--nc-white); color: var(--nc-ink); transition: background .25s var(--nc-ease), color .25s var(--nc-ease), transform .25s var(--nc-ease); }
.nc-btn__label { min-height: 52px; padding: 0 36px; }
.nc-btn__arrow { width: 52px; font-family: var(--nc-font-alt); font-weight: 600; font-size: 14px; }
.nc-btn--primary .nc-btn__label, .nc-btn--primary .nc-btn__arrow { background: var(--nc-navy); color: var(--nc-white); }
.nc-btn:hover .nc-btn__arrow { transform: translateX(3px); }
.nc-btn:hover .nc-btn__label { background: var(--nc-ink); color: var(--nc-white); }
[dir="rtl"] .nc-btn__arrow { transform: scaleX(-1); }
[dir="rtl"] .nc-btn:hover .nc-btn__arrow { transform: scaleX(-1) translateX(3px); }

/* Glass card (Figma glass-noise). */
.nc-glass { background: rgba(252, 254, 255, 0.4); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12), inset 0 1px 3px rgba(255, 255, 255, 0.1); border-radius: var(--nc-radius-m); }
.nc-card { background: var(--nc-white); border-radius: var(--nc-radius-l); box-shadow: var(--nc-shadow); }

/* Chat kit shared by Hero, Problems, Features, Demo: bubbles appear one by one. */
.nc-chat { display: flex; flex-direction: column; gap: 10px; }
.nc-chat__msg { max-width: 85%; padding: 12px 16px; border-radius: 18px; font-size: 16px; line-height: 1.35; background: var(--nc-cyan); color: var(--nc-navy); }
.nc-chat__msg--user { align-self: flex-end; background: var(--nc-brand); color: var(--nc-white); border-end-end-radius: 4px; }
.nc-chat__msg--bot { align-self: flex-start; border-end-start-radius: 4px; }
.nc-js .nc-chat [data-chat-step] { opacity: 0; transform: translateY(8px); transition: opacity .35s var(--nc-ease), transform .35s var(--nc-ease); }
.nc-js .nc-chat [data-chat-step].is-shown, .nc-reduced .nc-chat [data-chat-step] { opacity: 1; transform: none; }
.nc-chat__typing { align-self: flex-start; display: inline-flex; gap: 4px; padding: 12px 16px; border-radius: 18px; background: var(--nc-cyan); }
.nc-chat__typing span { width: 6px; height: 6px; border-radius: 50%; background: var(--nc-muted); animation: nc-dot 1s infinite; }
.nc-chat__typing span:nth-child(2) { animation-delay: .15s; } .nc-chat__typing span:nth-child(3) { animation-delay: .3s; }
@keyframes nc-dot { 0%, 80%, 100% { opacity: .3; } 40% { opacity: 1; } }

.nc-page { padding-block: calc(var(--nc-header-h) + 40px) 80px; }
.nc-prose { max-width: 820px; margin-inline: auto; }
.nc-prose > * + * { margin-top: 1em; }
