/* ============================================================================
   FINOVAI · Base — reset + base elements. Consumes tokens.css only.
   ============================================================================ */

*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }

html {
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  scroll-behavior: smooth;
}
/* Lenis handles smooth scrolling when active; disable native to avoid double-easing */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto; }
.lenis.lenis-stopped { overflow: hidden; }

body {
  background: var(--fv-bg);
  color: var(--fv-fg);
  font-family: var(--fv-font-body);
  font-size: var(--fv-text-base);
  line-height: var(--fv-leading-body);
  min-height: 100vh;
  overflow-x: hidden;
}

img, svg, video, canvas { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }

h1, h2, h3, h4 {
  font-family: var(--fv-font-display);
  font-weight: 700;
  line-height: var(--fv-leading-tight);
  letter-spacing: var(--fv-tracking-tight);
  color: var(--fv-fg);
}
h1 { font-size: var(--fv-text-4xl); }
h2 { font-size: var(--fv-text-3xl); }
h3 { font-size: var(--fv-text-xl); }
p  { color: var(--fv-fg); }

:focus-visible { outline: 2px solid var(--fv-accent); outline-offset: 3px; border-radius: 4px; }
::selection { background: var(--fv-gold); color: var(--fv-navy); }

/* ---- Layout primitives --------------------------------------------------- */
.fv-wrap { width: 100%; max-width: var(--fv-wrap); margin-inline: auto; padding-inline: var(--fv-gutter); }
.fv-wrap--narrow { max-width: var(--fv-wrap-narrow); }
.fv-section { padding-block: var(--fv-section); }
.fv-stack > * + * { margin-top: var(--fv-space-6); }

/* ---- Shared atoms (used across widgets) ---------------------------------- */
.fv-eyebrow {
  font-family: var(--fv-font-mono);
  font-size: var(--fv-text-xs);
  letter-spacing: var(--fv-tracking-wide);
  text-transform: uppercase;
  color: var(--fv-accent);
  display: inline-flex; align-items: center; gap: .625rem;
}
.fv-eyebrow::before { content: ""; width: 22px; height: 1px; background: currentColor; opacity: .55; }

.fv-btn {
  --_bg: var(--fv-navy); --_fg: var(--fv-paper);
  display: inline-flex; align-items: center; gap: .55rem;
  font-family: var(--fv-font-display); font-weight: 600; font-size: var(--fv-text-sm);
  padding: .95rem 1.6rem; border-radius: var(--fv-radius-pill);
  background: var(--_bg); color: var(--_fg); border: 1px solid transparent;
  cursor: pointer; transition: transform var(--fv-dur) var(--fv-ease), box-shadow var(--fv-dur), background var(--fv-dur-fast);
  will-change: transform;
}
.fv-btn:hover { transform: translateY(-2px); }
.fv-btn--gold  { --_bg: var(--fv-gold); --_fg: #3A2B06; box-shadow: var(--fv-glow-gold); }
.fv-btn--blue  { --_bg: var(--fv-blue); --_fg: #fff; }
.fv-btn--ghost { --_bg: transparent; --_fg: var(--fv-fg); border-color: var(--fv-border); }
.fv-btn--ghost:hover { border-color: var(--fv-accent); }

/* ---- Motion: reveal-on-scroll (framework-wide) --------------------------- */
.fv-reveal { opacity: 0; transform: translateY(28px); }
.fv-in .fv-reveal, .fv-reveal.fv-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .fv-reveal { opacity: 1 !important; transform: none !important; }
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}

/* ============================================================================
   HEADER + FOOTER (site chrome)
   ============================================================================ */
.fv-skip { position: absolute; left: -9999px; top: 0; background: var(--fv-navy); color: #fff; padding: .8rem 1.2rem; z-index: 200; border-radius: 0 0 8px 0; }
.fv-skip:focus { left: 0; }

.fv-header { position: fixed; top: 0; left: 0; right: 0; z-index: 90; color: var(--fv-navy); background: color-mix(in srgb, var(--fv-paper) 88%, transparent); backdrop-filter: saturate(150%) blur(14px); border-bottom: 1px solid var(--fv-border); transition: background .3s var(--fv-ease), color .3s, border-color .3s, box-shadow .3s; }
.fv-header__inner { display: flex; align-items: center; justify-content: space-between; height: 74px; gap: 1.5rem; }
.fv-header__brand a, .fv-header__brand .custom-logo-link { display: inline-flex; align-items: center; }
.fv-header__brand img, .fv-header .custom-logo { height: 30px; width: auto; display: block; }
.fv-header__logo-txt { font-family: var(--fv-font-display); font-weight: 800; letter-spacing: -.02em; font-size: 1.35rem; color: currentColor; }
.fv-header__logo-txt b { color: var(--fv-gold-600); }
.fv-header__nav { display: flex; align-items: center; gap: 2rem; }
.fv-menu { display: flex; align-items: center; gap: 1.6rem; list-style: none; margin: 0; padding: 0; }
.fv-menu a { font-family: var(--fv-font-display); font-weight: 600; font-size: .93rem; color: currentColor; opacity: .82; transition: opacity var(--fv-dur-fast); }
.fv-menu a:hover { opacity: 1; }
.fv-header__cta { font-family: var(--fv-font-display); font-weight: 600; font-size: .9rem; padding: .62rem 1.25rem; border-radius: var(--fv-radius-pill); background: var(--fv-gold); color: var(--fv-navy); white-space: nowrap; transition: transform var(--fv-dur-fast), box-shadow var(--fv-dur); }
.fv-header__cta:hover { transform: translateY(-2px); box-shadow: 0 8px 22px -8px var(--fv-gold); }
.fv-burger { display: none; width: 42px; height: 42px; border: 1px solid var(--fv-border); border-radius: 10px; background: transparent; color: currentColor; cursor: pointer; align-items: center; justify-content: center; flex-direction: column; gap: 4px; }
.fv-burger span { width: 18px; height: 2px; background: currentColor; transition: transform .3s, opacity .3s; }
.fv-header.is-open .fv-burger span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.fv-header.is-open .fv-burger span:nth-child(2) { opacity: 0; }
.fv-header.is-open .fv-burger span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* Header stays solid (white/blur) on all pages — guarantees logo + nav visibility. */
.fv-header.is-stuck { box-shadow: 0 10px 30px -18px rgba(11,31,58,.4); }

/* Offset content on interior pages (home hero sits under the fixed header) */
body:not(.home) .fv-main { padding-top: 74px; }

@media (max-width: 880px) {
	.fv-burger { display: inline-flex; }
	.fv-header__nav { position: fixed; inset: 74px 0 auto 0; flex-direction: column; align-items: stretch; gap: 0; background: var(--fv-bg); border-bottom: 1px solid var(--fv-border); padding: 1rem var(--fv-gutter) 1.6rem; transform: translateY(-12px); opacity: 0; pointer-events: none; transition: opacity .25s, transform .25s; color: var(--fv-navy); }
	.fv-header.is-open .fv-header__nav { opacity: 1; transform: none; pointer-events: auto; }
	.fv-menu { flex-direction: column; align-items: stretch; gap: 0; }
	.fv-menu a { padding: .9rem 0; border-bottom: 1px solid var(--fv-border); opacity: 1; }
	.fv-header__cta { margin-top: 1rem; text-align: center; }
	body.fv-home-signal .fv-header:not(.is-stuck) .fv-header__nav,
	body.fv-home-glass .fv-header:not(.is-stuck) .fv-header__nav,
	body.fv-home-corporate .fv-header:not(.is-stuck) .fv-header__nav { color: var(--fv-navy); }
}

/* ---- Footer -------------------------------------------------------------- */
.fv-footer { background: var(--fv-navy-900); color: var(--fv-paper); }
.fv-footer__top { display: grid; grid-template-columns: 1.6fr 1fr 1fr; gap: 2.5rem; padding-block: clamp(3rem, 6vw, 4.5rem); }
.fv-footer__brand-txt { font-family: var(--fv-font-display); font-weight: 800; font-size: 1.5rem; letter-spacing: -.02em; }
.fv-footer__brand-txt b { color: var(--fv-gold); }
.fv-footer__tag { color: var(--fv-muted-dark); margin-top: .8rem; max-width: 34ch; }
.fv-footer__meta { font-family: var(--fv-font-mono); font-size: .8rem; color: var(--fv-gold); margin-top: 1.2rem; letter-spacing: .04em; }
.fv-footer__col h4 { font-family: var(--fv-font-mono); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--fv-muted-dark); margin-bottom: 1.1rem; }
.fv-footer__col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .7rem; }
.fv-footer__col a { color: #cdd7ee; font-size: .95rem; transition: color var(--fv-dur-fast); }
.fv-footer__col a:hover { color: #fff; }
.fv-footer__org { border-top: 1px solid rgba(255,255,255,.1); padding-block: 2.2rem; text-align: center; }
.fv-footer__org-label { font-family: var(--fv-font-mono); font-size: .7rem; letter-spacing: .18em; text-transform: uppercase; color: var(--fv-muted-dark); margin-bottom: 1.2rem; }
.fv-footer__org-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem 2.6rem; }
.fv-footer__org-item { font-family: var(--fv-font-display); font-weight: 700; opacity: .85; }
.fv-footer__org-item span { display: block; font-weight: 500; font-size: .72em; color: var(--fv-muted-dark); }
.fv-footer__bar { border-top: 1px solid rgba(255,255,255,.1); padding-block: 1.4rem; display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; }
.fv-footer__bar p { color: var(--fv-muted-dark); font-size: .85rem; }
@media (max-width: 800px) { .fv-footer__top { grid-template-columns: 1fr 1fr; } .fv-footer__brand { grid-column: 1 / -1; } }
@media (max-width: 520px) { .fv-footer__top { grid-template-columns: 1fr; } }

/* Logo: navy on the solid white header — always visible. */
.fv-header .fv-logo-img, .fv-header .custom-logo { height: 32px; width: auto; display: block; }

/* Footer edition logos */
.fv-footer__editions { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 2.5rem; padding-block: 2.4rem; border-top: 1px solid rgba(255,255,255,.1); }
.fv-footer__editions img { height: 64px; width: auto; opacity: .92; }

/* ============================================================================
   FOOTER v2 — centered, reference-matched
   ============================================================================ */
.fv-footer { background: #0a0e1a; color: #cdd7ee; text-align: center; padding-block: clamp(3rem, 6vw, 4.5rem); }
.fv-footer .fv-wrap { display: flex; flex-direction: column; align-items: center; gap: 1.8rem; }
.fv-footer__lang { font-size: .95rem; color: #9fb0d4; }
.fv-footer__lang { position: relative; padding-bottom: 1.8rem; width: 100%; border-bottom: 1px solid rgba(255,255,255,.1); margin: 0; }
.fv-footer__editions { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 2rem 3rem; padding: 0; border: 0; }
.fv-footer__editions img { height: 72px; width: auto; opacity: .95; }
.fv-footer__meta { font-family: var(--fv-font-mono); font-size: .78rem; letter-spacing: .12em; color: #8595bb; margin: 0; }
.fv-footer__social { display: flex; gap: .7rem; }
.fv-footer__social a { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.08); color: #fff; transition: background .25s, transform .25s; }
.fv-footer__social a:hover { background: var(--fv-blue); transform: translateY(-3px); }
.fv-footer__social svg { width: 17px; height: 17px; fill: currentColor; }
.fv-footer__ticket .fv-footer__btn { display: inline-flex; align-items: center; gap: .5rem; font-family: var(--fv-font-display); font-weight: 600; font-size: .92rem; padding: .8rem 2rem; border-radius: 6px; border: 1px solid rgba(255,255,255,.4); color: #fff; transition: background .25s, color .25s, transform .2s; }
.fv-footer__ticket .fv-footer__btn:hover { background: #fff; color: #0a0e1a; transform: translateY(-2px); }
.fv-footer__legal { display: flex; gap: 1.6rem; flex-wrap: wrap; justify-content: center; }
.fv-footer__legal a { color: var(--fv-blue-300, #7aa5f5); font-size: .88rem; }
.fv-footer__legal a:hover { color: #fff; }
.fv-footer__copy { color: #6f7ea3; font-size: .82rem; margin: 0; padding-top: 1.4rem; border-top: 1px solid rgba(255,255,255,.08); width: 100%; }

/* Header CTA → brand blue (matches reference) */
.fv-header__cta { background: var(--fv-blue); color: #fff; }
.fv-header__cta:hover { background: var(--fv-blue-600, #1D4ED8); box-shadow: 0 8px 22px -8px var(--fv-blue); }

/* ============================================================================
   Content templates — archive, search, single, 404, comments, sidebar,
   widget areas. Added alongside the templates these classes serve; everything
   below is token-driven so it inherits any palette or type override.
   ========================================================================== */

/* ---- Archive & search heads --------------------------------------------- */
.fv-archive__head {
	margin-bottom: var(--fv-space-8);
}

.fv-archive__title {
	font-family: var(--fv-font-display);
	font-size: var(--fv-text-3xl);
	line-height: var(--fv-leading-tight);
	letter-spacing: var(--fv-tracking-tight);
	margin: 0 0 var(--fv-space-3);
}

.fv-archive__desc {
	max-width: 62ch;
	color: var(--fv-fg-soft);
}

/* ---- Card grid ----------------------------------------------------------- */
.fv-cards-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
	gap: var(--fv-space-8);
}

.fv-card {
	display: flex;
	flex-direction: column;
	gap: var(--fv-space-4);
	min-width: 0;
}

.fv-card__media {
	display: block;
	overflow: hidden;
	border-radius: var(--fv-radius);
	background: var(--fv-surface);
}

.fv-card__media img {
	display: block;
	width: 100%;
	height: auto;
	transition: transform var(--fv-dur) var(--fv-ease-out);
}

.fv-card__media:hover img,
.fv-card__media:focus-visible img {
	transform: scale(1.03);
}

.fv-card__title {
	font-family: var(--fv-font-display);
	font-size: var(--fv-text-lg);
	line-height: var(--fv-leading-snug);
	margin: 0;
}

.fv-card__title a {
	color: inherit;
	text-decoration: none;
}

.fv-card__title a:hover,
.fv-card__title a:focus-visible {
	color: var(--fv-accent);
}

.fv-card__meta {
	margin: 0;
	font-size: var(--fv-text-sm);
	color: var(--fv-fg-soft);
}

.fv-card__excerpt {
	color: var(--fv-fg-soft);
	font-size: var(--fv-text-sm);
	line-height: var(--fv-leading-body);
}

.fv-card__excerpt p:last-child {
	margin-bottom: 0;
}

/* ---- Single -------------------------------------------------------------- */
.fv-single__head {
	margin-bottom: var(--fv-space-8);
}

.fv-single__title {
	font-family: var(--fv-font-display);
	font-size: var(--fv-text-3xl);
	line-height: var(--fv-leading-tight);
	letter-spacing: var(--fv-tracking-tight);
	margin: 0 0 var(--fv-space-3);
}

.fv-single__meta {
	margin: 0 0 var(--fv-space-1);
	color: var(--fv-fg-soft);
	font-size: var(--fv-text-sm);
}

.fv-single__media {
	margin: 0 0 var(--fv-space-8);
}

.fv-single__media img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--fv-radius);
}

.fv-entry {
	line-height: var(--fv-leading-body);
}

.fv-entry > * + * {
	margin-top: var(--fv-space-4);
}

.fv-entry img,
.fv-entry iframe,
.fv-entry video {
	max-width: 100%;
	height: auto;
	border-radius: var(--fv-radius-sm);
}

.fv-entry blockquote {
	margin-inline: 0;
	padding-left: var(--fv-space-4);
	border-left: 3px solid var(--fv-gold);
	color: var(--fv-fg-soft);
	font-family: var(--fv-font-serif);
}

.fv-entry pre {
	overflow-x: auto;
	padding: var(--fv-space-4);
	border-radius: var(--fv-radius-sm);
	background: var(--fv-surface);
	font-family: var(--fv-font-mono);
	font-size: var(--fv-text-sm);
}

.fv-single__socials {
	display: flex;
	flex-wrap: wrap;
	gap: var(--fv-space-3);
	margin-top: var(--fv-space-8);
}

.fv-single__socials svg {
	width: 22px;
	height: 22px;
	fill: currentColor;
}

.fv-single__speakers {
	margin-top: var(--fv-space-8);
	padding-top: var(--fv-space-6);
	border-top: 1px solid var(--fv-line);
}

.fv-single__speakers ul {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: var(--fv-space-2) var(--fv-space-4);
}

/* ---- Post navigation ----------------------------------------------------- */
.post-navigation {
	display: flex;
	gap: var(--fv-space-6);
	margin-top: var(--fv-space-12);
	padding-top: var(--fv-space-6);
	border-top: 1px solid var(--fv-line);
}

.post-navigation .nav-links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--fv-space-6);
	justify-content: space-between;
	width: 100%;
}

.fv-navlink__label {
	display: block;
	font-size: var(--fv-text-xs);
	letter-spacing: var(--fv-tracking-wide);
	text-transform: uppercase;
	color: var(--fv-fg-soft);
}

/* ---- Pagination ---------------------------------------------------------- */
.pagination {
	margin-top: var(--fv-space-12);
}

.pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--fv-space-2);
	align-items: center;
}

.pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.5rem;
	height: 2.5rem;
	padding: 0 var(--fv-space-2);
	border: 1px solid var(--fv-line);
	border-radius: var(--fv-radius-sm);
	text-decoration: none;
	color: inherit;
}

.pagination .page-numbers.current {
	background: var(--fv-fg);
	border-color: var(--fv-fg);
	color: var(--fv-bg);
}

/* ---- Search form --------------------------------------------------------- */
.fv-search {
	display: flex;
	flex-wrap: wrap;
	gap: var(--fv-space-2);
	max-width: 34rem;
	margin-top: var(--fv-space-4);
}

.fv-search__field {
	flex: 1 1 12rem;
	min-width: 0;
	padding: 0.7rem 1rem;
	border: 1px solid var(--fv-line);
	border-radius: var(--fv-radius-sm);
	background: var(--fv-bg);
	color: inherit;
	font: inherit;
}

.fv-search__field:focus-visible {
	outline: 2px solid var(--fv-accent);
	outline-offset: 2px;
}

/* ---- Empty states & 404 -------------------------------------------------- */
.fv-none,
.fv-404 {
	max-width: 52ch;
}

.fv-none__title,
.fv-404__title {
	font-family: var(--fv-font-display);
	font-size: var(--fv-text-2xl);
	line-height: var(--fv-leading-tight);
	margin: 0 0 var(--fv-space-3);
}

.fv-none__actions,
.fv-404__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--fv-space-3);
	margin-top: var(--fv-space-6);
}

/* ---- Comments ------------------------------------------------------------ */
.fv-comments {
	margin-top: var(--fv-space-12);
	padding-top: var(--fv-space-8);
	border-top: 1px solid var(--fv-line);
}

.fv-comments__title {
	font-family: var(--fv-font-display);
	font-size: var(--fv-text-xl);
	margin: 0 0 var(--fv-space-6);
}

.fv-comments__list,
.fv-comments__list .children {
	margin: 0;
	padding: 0;
	list-style: none;
}

.fv-comments__list .children {
	margin-left: var(--fv-space-6);
	padding-left: var(--fv-space-4);
	border-left: 1px solid var(--fv-line);
}

.fv-comments__list li {
	margin-bottom: var(--fv-space-6);
}

.fv-comments .comment-meta {
	font-size: var(--fv-text-sm);
	color: var(--fv-fg-soft);
}

.fv-comments .avatar {
	border-radius: 50%;
	vertical-align: middle;
	margin-right: var(--fv-space-2);
}

.fv-comments input[type="text"],
.fv-comments input[type="email"],
.fv-comments input[type="url"],
.fv-comments textarea {
	width: 100%;
	padding: 0.7rem 1rem;
	border: 1px solid var(--fv-line);
	border-radius: var(--fv-radius-sm);
	background: var(--fv-bg);
	color: inherit;
	font: inherit;
}

/* ---- Widget areas -------------------------------------------------------- */
.fv-sidebar {
	display: flex;
	flex-direction: column;
	gap: var(--fv-space-8);
}

.fv-widget__title,
.fv-footer__widget-title {
	font-family: var(--fv-font-display);
	font-size: var(--fv-text-base);
	letter-spacing: var(--fv-tracking-wide);
	text-transform: uppercase;
	margin: 0 0 var(--fv-space-3);
}

.fv-widget ul,
.fv-footer__widget ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.fv-widget li + li,
.fv-footer__widget li + li {
	margin-top: var(--fv-space-1);
}

.fv-footer__widgets {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr));
	gap: var(--fv-space-8);
	margin-bottom: var(--fv-space-12);
	text-align: left;
}
