/*
Theme Name:  DIGICAP
Theme URI:   https://digicap.eu
Author:      MATICAL for DIGICAP consortium
Author URI:  https://matical.eu
Description: Child theme of Astra for DIGICAP — Horizon Europe project (grant 101288338). Brand tokens come from theme.json; this stylesheet adds layout polish, the navy dot-grid hero pattern, premium micro-interactions, and a handful of component styles for the DIGICAP block patterns.
Template:    astra
Version:     0.5.2
License:     GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: digicap-child
*/

/* ============================================================
   DIGICAP child theme — premium polish v0.5.0
   Sections:
     1.  Custom properties (extends theme.json)
     2.  Selection + scrollbar + focus
     3.  Typography refinements
     4.  Sticky header (with backdrop blur)
     5.  Hero (layered + animated)
     6.  Stats bar (animated counters)
     7.  Feature trio
     8.  Partners grid (logo wall)
     9.  News + Event cards
    10.  Buttons (refined)
    11.  Site nav links (underline anim)
    12.  Footer bar + EU funding
    13.  Scroll-reveal utility
    14.  Reduced-motion fallback
    15.  Print stylesheet
   ============================================================ */

/* 1. Custom properties --------------------------------------- */
:root {
  --digicap-dot-grid:   radial-gradient(circle at 1px 1px, rgba(255,255,255,0.16) 1px, transparent 1px);
  --digicap-dot-grid-light: radial-gradient(circle at 1px 1px, rgba(19,75,181,0.10) 1px, transparent 1px);
  --digicap-card-border: #E3E8F3;
  --digicap-card-radius: 16px;
  --digicap-shadow-sm:  0 1px 2px rgba(11, 31, 64, 0.04), 0 1px 1px rgba(11, 31, 64, 0.02);
  --digicap-shadow-md:  0 4px 10px -2px rgba(11, 31, 64, 0.08), 0 2px 4px -2px rgba(11, 31, 64, 0.04);
  --digicap-shadow-lg:  0 16px 32px -12px rgba(11, 31, 64, 0.18), 0 4px 8px -4px rgba(11, 31, 64, 0.08);
  --digicap-shadow-brand: 0 14px 32px -10px rgba(19, 75, 181, 0.32);
  --digicap-ease:       cubic-bezier(0.16, 1, 0.3, 1);
  --digicap-ease-out:   cubic-bezier(0.33, 1, 0.68, 1);
  --digicap-dur-fast:   180ms;
  --digicap-dur-md:     320ms;
  --digicap-dur-slow:   560ms;
  --digicap-blur:       saturate(180%) blur(18px);
}

html { scroll-behavior: smooth; }

/* 2. Selection + scrollbar + focus --------------------------- */
::selection {
  background: var(--wp--preset--color--primary);
  color: #fff;
}
::-moz-selection {
  background: var(--wp--preset--color--primary);
  color: #fff;
}
html { scrollbar-color: var(--wp--preset--color--primary) #F0F2F8; }
::-webkit-scrollbar { width: 12px; height: 12px; }
::-webkit-scrollbar-track { background: #F0F2F8; }
::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, var(--wp--preset--color--primary), var(--wp--preset--color--primary-deep));
  border: 2px solid #F0F2F8;
  border-radius: 999px;
}
::-webkit-scrollbar-thumb:hover { background: var(--wp--preset--color--primary-deep); }

:focus-visible {
  outline: 2px solid var(--wp--preset--color--primary) !important;
  outline-offset: 3px;
  border-radius: 4px;
}

/* 3. Typography refinements ---------------------------------- */
body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
h1, h2, h3, h4 { letter-spacing: -0.015em; }
h1 { letter-spacing: -0.025em; }
p { text-wrap: pretty; }
h1, h2, h3, h4 { text-wrap: balance; }

.digicap-eyebrow {
  display: inline-block;
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--wp--preset--font-size--xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--wp--preset--color--primary);
  margin: 0 0 1rem;
  position: relative;
  padding-left: 28px;
}
.digicap-eyebrow::before {
  content: "";
  position: absolute;
  left: 0; top: 50%;
  width: 18px; height: 2px;
  background: currentColor;
  transform: translateY(-50%);
}
/* Centered eyebrow — drop the side line, use a centered dot pair above. */
.has-text-align-center > .digicap-eyebrow,
.has-text-align-center .digicap-eyebrow {
  padding-left: 0;
  padding-top: 14px;
}
.has-text-align-center > .digicap-eyebrow::before,
.has-text-align-center .digicap-eyebrow::before {
  left: 50%; top: 0;
  transform: translateX(-50%);
  width: 28px;
}

/* 4. Sticky header with backdrop blur ------------------------ */
.site-header {
  position: sticky !important;
  top: 0;
  z-index: 100;
  transition: background-color var(--digicap-dur-md) ease,
              box-shadow      var(--digicap-dur-md) ease,
              backdrop-filter var(--digicap-dur-md) ease;
  background: transparent;
}
body.is-scrolled .site-header {
  background: rgba(255, 255, 255, 0.85);
  -webkit-backdrop-filter: var(--digicap-blur);
  backdrop-filter:         var(--digicap-blur);
  box-shadow: 0 1px 0 rgba(11, 31, 64, 0.06), 0 8px 24px -8px rgba(11, 31, 64, 0.10);
}
/* Inner pages (anything other than the home page): keep the header
   visually grounded over white content from the first paint. */
body:not(.home) .site-header {
  background: rgba(255, 255, 255, 0.92);
  -webkit-backdrop-filter: var(--digicap-blur);
  backdrop-filter:         var(--digicap-blur);
  box-shadow: 0 1px 0 rgba(11, 31, 64, 0.05);
}

/* Logo + nav treatment on the navy hero:
   - Home page, NOT scrolled = header sits over the navy hero
       → white logo + white nav links
   - Home page, scrolled / inner pages = white-ish header
       → dark logo + navy nav links (defaults)
   The site logo is the same image; we invert it via a CSS filter when needed. */
.custom-logo { transition: filter var(--digicap-dur-md) ease; }
body.home:not(.is-scrolled) .custom-logo { filter: brightness(0) invert(1); }

body.home:not(.is-scrolled) .site-header .main-navigation a,
body.home:not(.is-scrolled) .site-header .main-navigation .menu-link {
  color: rgba(255, 255, 255, 0.92);
}
body.home:not(.is-scrolled) .site-header .main-navigation a:hover,
body.home:not(.is-scrolled) .site-header .main-navigation .current-menu-item > a {
  color: #FFFFFF;
}
body.home:not(.is-scrolled) .site-header .main-navigation a::after,
body.home:not(.is-scrolled) .site-header .main-navigation .menu-link::after {
  background: #FFFFFF;
}
/* Hamburger / mobile toggle on transparent hero header */
body.home:not(.is-scrolled) .site-header .menu-toggle .menu-toggle-icon::before,
body.home:not(.is-scrolled) .site-header .menu-toggle .ast-icon {
  color: #FFFFFF !important;
}

/* Hide Astra's default page title — every DIGICAP page provides its own H1
   inside the content (Home via the hero pattern; About/Consortium/Contact/legal
   via a heading block at the top of the page). Showing both gives us a
   duplicated title (e.g. "DIGICAP" + "From documents to data" on home). */
.ast-single-post-title-header,
.page .entry-header,
.home .entry-header { display: none !important; }

/* When Astra's title bar is hidden, the entry-content sometimes inherits
   a top margin from `.ast-no-thumbnail` — kill it so the hero hugs the header. */
.page .entry-content,
.home .entry-content {
  margin-top: 0 !important;
  padding-top: 0 !important;
}
/* Astra's main content container often has its own side padding — let our
   full-bleed sections (hero, stats, eu-footer) actually reach the viewport edges. */
.ast-container,
.site-content > .ast-container,
.entry-content {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

/* 5. Hero — layered + animated ------------------------------- */
/* NB: do NOT set `display: flex` here — the section uses WordPress's
   constrained layout, and flex on the parent would lay direct children out
   in a row instead of stacking them. Use padding for vertical breathing
   room instead. */
.digicap-hero-dark {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  background-color: var(--wp--preset--color--navy);
  color: var(--wp--preset--color--white);
  min-height: clamp(620px, 88vh, 880px);
  padding-top:    clamp(7rem, 16vh, 11rem) !important;
  padding-bottom: clamp(6rem, 12vh, 9rem) !important;
  text-align: center;
}
.digicap-hero-dark > * { position: relative; z-index: 2; }
/* Constrain content width and center horizontally */
.digicap-hero-dark > *:not(.digicap-hero-scroll) {
  max-width: 880px;
  margin-left: auto;
  margin-right: auto;
}

/* Layer A: slow gradient mesh */
.digicap-hero-dark::before {
  content: "";
  position: absolute;
  inset: -25%;
  background:
    radial-gradient(ellipse 60% 50% at 20% 30%, rgba(19, 75, 181, 0.55), transparent 60%),
    radial-gradient(ellipse 50% 45% at 80% 70%, rgba(77, 96, 152, 0.45), transparent 65%),
    radial-gradient(ellipse 40% 35% at 50% 50%, rgba(19, 75, 181, 0.25), transparent 70%);
  filter: blur(8px);
  animation: digicap-mesh 28s ease-in-out infinite alternate;
  pointer-events: none;
  z-index: 0;
}
@keyframes digicap-mesh {
  0%   { transform: rotate(0deg)   scale(1);    }
  100% { transform: rotate(45deg)  scale(1.15); }
}

/* Layer B: dot grid (drifts slowly) */
.digicap-hero-dark::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--digicap-dot-grid);
  background-size: 24px 24px;
  pointer-events: none;
  animation: digicap-dots 22s linear infinite;
  z-index: 1;
  mask-image: radial-gradient(ellipse 80% 80% at 50% 50%, #000 50%, transparent 100%);
  -webkit-mask-image: radial-gradient(ellipse 80% 80% at 50% 50%, #000 50%, transparent 100%);
}
@keyframes digicap-dots {
  from { background-position: 0 0; }
  to   { background-position: 96px 96px; }
}

/* Hero typography */
.digicap-hero-dark h1 {
  font-family: var(--wp--preset--font-family--display);
  font-weight: 800;
  font-size: clamp(3.25rem, 8.5vw, 6.25rem);
  line-height: 1;
  letter-spacing: -0.035em;
  margin: 0 auto 1.75rem;
  max-width: 14ch;
  /* Subtle vertical gradient on the text — premium signature */
  background: linear-gradient(180deg, #FFFFFF 55%, #A8BCE4 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  /* Animate in */
  opacity: 0;
  transform: translateY(20px);
  animation: digicap-rise 0.9s var(--digicap-ease) 0.1s forwards;
}
.digicap-hero-dark > * + * { opacity: 0; transform: translateY(20px); animation: digicap-rise 0.9s var(--digicap-ease) forwards; }
.digicap-hero-dark > .wp-block-paragraph:first-of-type { animation-delay: 0s;   }
.digicap-hero-dark h1                                   { animation-delay: .1s; }
.digicap-hero-dark p:not(.digicap-eyebrow)              { animation-delay: .25s;}
.digicap-hero-dark .wp-block-buttons                    { animation-delay: .4s; }

@keyframes digicap-rise {
  to { opacity: 1; transform: translateY(0); }
}

.digicap-hero-dark .digicap-eyebrow {
  color: rgba(255, 255, 255, 0.65);
  /* Hero eyebrow is centered, so the left-aligned decorative line doesn't apply. */
  padding-left: 0;
  margin-bottom: 1.5rem;
  letter-spacing: 0.24em;
  font-size: 0.78rem;
}
.digicap-hero-dark .digicap-eyebrow::before {
  /* Replace the side line with a centered dot pair as a quiet separator. */
  left: 50%;
  top: -10px;
  transform: translateX(-50%);
  width: 24px;
  height: 1px;
  background: rgba(255, 255, 255, 0.4);
}
.digicap-hero-dark p:not(.digicap-eyebrow) {
  color: rgba(255, 255, 255, 0.82);
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
  font-size: clamp(1.1rem, 1.35vw, 1.3rem);
  line-height: 1.55;
}
.digicap-hero-dark .wp-block-buttons {
  justify-content: center;
  margin-top: 2.5rem !important;
}

/* Hero scroll indicator */
.digicap-hero-scroll {
  position: absolute;
  bottom: 1.5rem;
  left: 50%;
  transform: translateX(-50%);
  color: rgba(255, 255, 255, 0.6);
  z-index: 3;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px; height: 40px;
  border-radius: 999px;
  transition: color var(--digicap-dur-fast) ease, background var(--digicap-dur-fast) ease;
  text-decoration: none;
}
.digicap-hero-scroll svg {
  width: 22px; height: 22px;
  animation: digicap-bob 2s ease-in-out infinite;
}
.digicap-hero-scroll:hover {
  color: #FFFFFF;
  background: rgba(255, 255, 255, 0.08);
}
@keyframes digicap-bob {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(6px); }
}

/* 6. Stats bar ------------------------------------------------ */
.digicap-stats {
  position: relative;
  overflow: hidden;
  background-color: var(--wp--preset--color--navy);
  /* Continuous transition from the hero (navy) into the stats — looks like
     one canvas instead of two stacked sections. */
  background-image: linear-gradient(180deg, #001959 0%, #000A1F 100%);
  color: var(--wp--preset--color--white);
  padding-top: clamp(4rem, 7vw, 6rem) !important;
  padding-bottom: clamp(5rem, 8vw, 7rem) !important;
  isolation: isolate;
}
.digicap-stats::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--digicap-dot-grid);
  background-size: 26px 26px;
  opacity: 0.6;
  pointer-events: none;
  z-index: 0;
  mask-image: radial-gradient(ellipse 70% 100% at 50% 50%, #000 40%, transparent 100%);
  -webkit-mask-image: radial-gradient(ellipse 70% 100% at 50% 50%, #000 40%, transparent 100%);
}
.digicap-stats > * { position: relative; z-index: 1; }
.digicap-stats h2 { color: #FFFFFF; }
.digicap-stats .digicap-eyebrow { color: rgba(255, 255, 255, 0.7); }
.digicap-stats .digicap-eyebrow::before { background: rgba(255, 255, 255, 0.7); }

.digicap-stat {
  text-align: center;
  padding: 1rem 0.5rem;
  position: relative;
}
.digicap-stat-tag {
  display: inline-block;
  font-family: var(--wp--preset--font-family--display);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 0.3rem 0.7rem;
  border-radius: 999px;
  margin-bottom: 1rem;
  background: rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.75);
  border: 1px solid rgba(255, 255, 255, 0.12);
}
.digicap-stat-tag--today  {
  background: rgba(255, 99, 71, 0.15);
  color: #FFBBA9;
  border-color: rgba(255, 99, 71, 0.30);
}
.digicap-stat-tag--target {
  background: rgba(19, 75, 181, 0.25);
  color: #C8D4F0;
  border-color: rgba(255, 255, 255, 0.18);
}
.digicap-stat-number {
  font-family: var(--wp--preset--font-family--display);
  font-weight: 800;
  font-size: clamp(2.5rem, 5vw, 4rem);
  line-height: 1;
  background: linear-gradient(180deg, #FFFFFF 40%, #8FA8DB 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  letter-spacing: -0.03em;
}
.digicap-stat-unit {
  display: block;
  font-family: var(--wp--preset--font-family--display);
  font-size: 0.95rem;
  font-weight: 600;
  margin-top: 0.4rem;
  color: rgba(255, 255, 255, 0.85);
  letter-spacing: 0.02em;
}
.digicap-stat-caption {
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.65);
  margin-top: 0.6rem;
  line-height: 1.4;
}

/* Smooth visual handoff: stats (navy) → features (white).
   A subtle gradient at the very bottom of stats fades the navy to the
   off-white that features sits on. */
.digicap-stats::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 120px;
  background: linear-gradient(180deg, transparent 0%, #F6F8FC 100%);
  opacity: 0.10;
  pointer-events: none;
  z-index: 2;
}

/* 7. Feature trio -------------------------------------------- */
.digicap-features {
  padding-top: clamp(5rem, 9vw, 8rem) !important;
  padding-bottom: clamp(5rem, 9vw, 8rem) !important;
  background: linear-gradient(180deg, #FFFFFF 0%, #FBFCFE 100%);
}

.digicap-circle-badge {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 96px;
  height: 96px;
  margin: 0 auto 1.5rem;
  border-radius: 999px;
  background: linear-gradient(135deg, #FFFFFF, #F6F8FC);
  border: 1.5px solid rgba(19, 75, 181, 0.15);
  color: var(--wp--preset--color--primary);
  box-shadow: var(--digicap-shadow-sm);
  transition: transform var(--digicap-dur-md) var(--digicap-ease),
              box-shadow var(--digicap-dur-md) var(--digicap-ease),
              border-color var(--digicap-dur-md) ease;
}
.digicap-circle-badge::before {
  content: "";
  position: absolute;
  inset: -6px;
  border-radius: 999px;
  border: 1px solid rgba(19, 75, 181, 0.10);
  opacity: 0;
  transform: scale(0.95);
  transition: opacity var(--digicap-dur-md) ease, transform var(--digicap-dur-md) var(--digicap-ease);
}
.digicap-circle-badge svg {
  width: 44px; height: 44px;
  transition: transform var(--digicap-dur-md) var(--digicap-ease);
}
.has-text-align-center:hover .digicap-circle-badge,
.digicap-circle-badge:hover {
  transform: translateY(-3px);
  border-color: rgba(19, 75, 181, 0.30);
  box-shadow: var(--digicap-shadow-brand);
}
.has-text-align-center:hover .digicap-circle-badge::before,
.digicap-circle-badge:hover::before {
  opacity: 1;
  transform: scale(1);
}
.has-text-align-center:hover .digicap-circle-badge svg,
.digicap-circle-badge:hover svg {
  transform: scale(1.06);
}

/* 8. Partners grid — logo wall ------------------------------- */
.digicap-partners-wall {
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
  display: grid;
  gap: 1.25rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.digicap-partners-wall > li {
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
}
.digicap-partners-wall > li::before,
.digicap-partners-wall > li::marker { content: none !important; }
.digicap-partners-wall .digicap-partner-card { height: 100%; }
@media (min-width: 600px)  { .digicap-partners-wall { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 900px)  { .digicap-partners-wall { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 1180px) { .digicap-partners-wall { grid-template-columns: repeat(5, minmax(0, 1fr)); } }

.digicap-partner-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 1.75rem 1rem;
  min-height: 140px;
  background: #FFFFFF;
  border: 1px solid var(--digicap-card-border);
  border-radius: 14px;
  color: var(--wp--preset--color--navy);
  text-align: center;
  overflow: hidden;
  transition: transform var(--digicap-dur-md) var(--digicap-ease),
              box-shadow var(--digicap-dur-md) var(--digicap-ease),
              border-color var(--digicap-dur-md) ease;
}
.digicap-partner-card::before {
  /* top accent bar that grows on hover */
  content: "";
  position: absolute;
  left: 0; top: 0;
  height: 3px; width: 100%;
  background: linear-gradient(90deg, var(--wp--preset--color--primary), var(--wp--preset--color--indigo-soft));
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--digicap-dur-md) var(--digicap-ease);
}
.digicap-partner-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--digicap-shadow-lg);
  border-color: rgba(19, 75, 181, 0.30);
}
.digicap-partner-card:hover::before { transform: scaleX(1); }

.digicap-partner-name {
  font-family: var(--wp--preset--font-family--display);
  font-weight: 800;
  font-size: 1.15rem;
  line-height: 1.1;
  letter-spacing: -0.015em;
  color: var(--wp--preset--color--navy);
}
.digicap-partner-country {
  display: inline-block;
  font-family: var(--wp--preset--font-family--display);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--wp--preset--color--primary);
  padding: 0.25rem 0.6rem;
  background: rgba(19, 75, 181, 0.08);
  border-radius: 999px;
}
.digicap-partner-card .digicap-partner-flag {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--wp--preset--color--slate);
  opacity: 0.7;
}
/* Featured-image (when partner has one set in CPT) */
.digicap-partner-card img.digicap-partner-logo {
  max-width: 80%;
  max-height: 64px;
  object-fit: contain;
  filter: grayscale(20%);
  transition: filter var(--digicap-dur-md) ease;
}
.digicap-partner-card:hover img.digicap-partner-logo { filter: grayscale(0); }

/* 9. News + Event cards -------------------------------------- */
.digicap-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  padding: 1.75rem;
  height: 100%;
  background: #FFFFFF;
  border-radius: var(--digicap-card-radius);
  border: 1px solid var(--digicap-card-border);
  overflow: hidden;
  transition: transform var(--digicap-dur-md) var(--digicap-ease),
              box-shadow var(--digicap-dur-md) var(--digicap-ease),
              border-color var(--digicap-dur-md) ease;
}
.digicap-card::after {
  /* subtle inner glow on hover */
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at top right, rgba(19, 75, 181, 0.04), transparent 60%);
  opacity: 0;
  transition: opacity var(--digicap-dur-md) ease;
  pointer-events: none;
}
.digicap-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--digicap-shadow-lg);
  border-color: rgba(19, 75, 181, 0.20);
}
.digicap-card:hover::after { opacity: 1; }
.digicap-card h3 {
  margin: 0;
  font-family: var(--wp--preset--font-family--display);
  font-weight: 700;
  color: var(--wp--preset--color--navy);
  font-size: 1.35rem;
  line-height: 1.25;
  letter-spacing: -0.015em;
  position: relative;
}
.digicap-card h3 a {
  color: inherit;
  text-decoration: none;
  background-image: linear-gradient(currentColor, currentColor);
  background-position: 0 100%;
  background-repeat: no-repeat;
  background-size: 0% 1px;
  transition: background-size var(--digicap-dur-md) var(--digicap-ease);
}
.digicap-card:hover h3 a,
.digicap-card h3 a:hover {
  background-size: 100% 1px;
}
.digicap-card p {
  margin: 0;
  color: var(--wp--preset--color--slate);
  line-height: 1.55;
}
.digicap-card .wp-block-post-date,
.digicap-card time {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.78rem;
  color: var(--wp--preset--color--slate);
  font-weight: 600;
  letter-spacing: 0.04em;
  margin-top: auto;
  padding-top: 0.5rem;
}

/* 10. Buttons (refined) -------------------------------------- */
.wp-block-button .wp-block-button__link {
  padding: 0.85rem 1.75rem;
  font-family: var(--wp--preset--font-family--display);
  font-weight: 600;
  letter-spacing: 0.01em;
  border-radius: 999px;
  transition: transform var(--digicap-dur-fast) var(--digicap-ease),
              box-shadow var(--digicap-dur-fast) var(--digicap-ease),
              background-color var(--digicap-dur-fast) ease,
              color var(--digicap-dur-fast) ease;
  will-change: transform;
}
.wp-block-button:not(.is-style-outline) .wp-block-button__link {
  background: linear-gradient(135deg, var(--wp--preset--color--primary), var(--wp--preset--color--primary-deep));
  color: #FFFFFF;
  box-shadow: 0 6px 16px -6px rgba(19, 75, 181, 0.45);
}
.wp-block-button:not(.is-style-outline) .wp-block-button__link:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 28px -10px rgba(19, 75, 181, 0.55);
}
.wp-block-button.is-style-outline .wp-block-button__link {
  background: transparent;
  border: 1.5px solid currentColor !important;
}
.wp-block-button.is-style-outline .wp-block-button__link:hover {
  transform: translateY(-2px);
}

/* Hero-specific button colourway */
.digicap-hero-dark .wp-block-button:not(.is-style-outline) .wp-block-button__link {
  background: #FFFFFF;
  color: var(--wp--preset--color--navy);
  box-shadow: 0 8px 22px -6px rgba(0, 0, 0, 0.35);
}
.digicap-hero-dark .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover {
  background: #F0F4FF;
  box-shadow: 0 16px 32px -10px rgba(0, 0, 0, 0.45);
}
.digicap-hero-dark .wp-block-button.is-style-outline .wp-block-button__link {
  color: #FFFFFF;
  border-color: rgba(255, 255, 255, 0.7) !important;
}
.digicap-hero-dark .wp-block-button.is-style-outline .wp-block-button__link:hover {
  background: rgba(255, 255, 255, 0.10);
  border-color: #FFFFFF !important;
}

/* 11. Site nav links (animated underline) -------------------- */
.site-header .main-navigation a,
.site-header .main-navigation .menu-link {
  position: relative;
  font-family: var(--wp--preset--font-family--display);
  font-weight: 600;
  color: var(--wp--preset--color--navy);
  transition: color var(--digicap-dur-fast) ease;
}
.site-header .main-navigation a::after,
.site-header .main-navigation .menu-link::after {
  content: "";
  position: absolute;
  left: 50%; right: 50%;
  bottom: 4px;
  height: 2px;
  background: var(--wp--preset--color--primary);
  border-radius: 1px;
  transition: left var(--digicap-dur-md) var(--digicap-ease), right var(--digicap-dur-md) var(--digicap-ease);
}
.site-header .main-navigation a:hover::after,
.site-header .main-navigation .menu-link:hover::after,
.site-header .main-navigation .current-menu-item > a::after {
  left: 8px;
  right: 8px;
}
.site-header .main-navigation a:hover,
.site-header .main-navigation .current-menu-item > a {
  color: var(--wp--preset--color--primary);
}

/* 12. Footer bar + EU funding -------------------------------- */
.digicap-footer-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 1rem;
  background: var(--wp--preset--color--white);
  padding: 1rem 1.5rem;
  border-top: 1px solid var(--digicap-card-border);
  font-size: var(--wp--preset--font-size--xs);
  color: var(--wp--preset--color--slate);
}
.digicap-footer-menu__list {
  display: flex; flex-wrap: wrap;
  gap: 1.5rem;
  list-style: none;
  margin: 0; padding: 0;
}
.digicap-footer-menu a {
  color: var(--wp--preset--color--slate);
  text-decoration: none;
  transition: color var(--digicap-dur-fast) ease;
}
.digicap-footer-menu a:hover {
  color: var(--wp--preset--color--primary);
}
.digicap-footer-copyright { margin: 0; }

.digicap-eu-footer {
  background: linear-gradient(180deg, #F6F8FC 0%, #EBF0F8 100%);
  padding-block: 2.5rem !important;
  font-size: var(--wp--preset--font-size--xs);
  color: var(--wp--preset--color--slate);
  line-height: 1.55;
  border-top: 1px solid var(--digicap-card-border);
}
.digicap-eu-flag {
  display: block;
  width: 84px;
  height: auto;
  border-radius: 4px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
}

/* Decorative HR */
hr {
  border: 0;
  height: 1px;
  background: linear-gradient(90deg, var(--wp--preset--color--primary), transparent);
  margin-block: 2rem;
}

/* Sectioned-background rhythm (subtle alternation gives "different chapters") */
.wp-block-query.alignwide,
.wp-block-query.alignfull { padding-block: clamp(4rem, 7vw, 6rem); }

/* Partners section: subtle off-white */
.wp-block-post-type-archive-partner .wp-block-query,
section:has(> .wp-block-query .digicap-partner-card) {
  background: linear-gradient(180deg, #FBFCFE 0%, #F6F8FC 100%);
}

/* 13. Scroll-reveal utility ---------------------------------- */
[data-digicap-reveal] {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity var(--digicap-dur-slow) var(--digicap-ease-out),
              transform var(--digicap-dur-slow) var(--digicap-ease-out);
  transition-delay: var(--digicap-reveal-delay, 0ms);
  will-change: opacity, transform;
}
[data-digicap-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Auto-apply to common selectors */
.digicap-features .wp-block-column,
.wp-block-query .digicap-partner-card,
.wp-block-query .digicap-card {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity var(--digicap-dur-slow) var(--digicap-ease-out),
              transform var(--digicap-dur-slow) var(--digicap-ease-out);
}
.digicap-features.is-visible .wp-block-column:nth-child(1) { transition-delay: 0ms;   }
.digicap-features.is-visible .wp-block-column:nth-child(2) { transition-delay: 120ms; }
.digicap-features.is-visible .wp-block-column:nth-child(3) { transition-delay: 240ms; }
.digicap-features.is-visible .wp-block-column { opacity: 1; transform: translateY(0); }

.wp-block-query.is-visible .digicap-card,
.wp-block-query.is-visible .digicap-partner-card { opacity: 1; transform: translateY(0); }

/* Partner cards stagger — pure CSS, no JS needed */
.wp-block-query.is-visible .digicap-partner-card { transition-delay: calc(var(--card-index, 0) * 40ms); }

/* 14. Reduced motion ----------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .digicap-hero-dark h1,
  .digicap-hero-dark > * + * { opacity: 1 !important; transform: none !important; }
  [data-digicap-reveal] { opacity: 1; transform: none; }
}

/* 15. Print stylesheet --------------------------------------- */
@media print {
  .site-header, .digicap-hero-scroll, .digicap-footer-bar { display: none !important; }
  .digicap-hero-dark, .digicap-stats {
    background: #FFF !important;
    color: #000 !important;
  }
  .digicap-hero-dark h1, .digicap-stats h2 { color: #000 !important; -webkit-text-fill-color: #000 !important; }
  a { color: #000 !important; text-decoration: underline; }
}
