@font-face {
  font-family: "Geologica";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("assets/geologica-greek-variable.woff2") format("woff2");
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}

@font-face {
  font-family: "Geologica";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("assets/geologica-latin-variable.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

.npc-page {
  --npc-blue: #0876c9;
  --npc-blue-dark: #075a9f;
  --npc-ink: #173f5c;
  --npc-muted: #5f7684;
  --npc-mint: #deeee5;
  --npc-green: #2f8c68;
  --npc-sand: #fbf6ee;
  --npc-line: #dce7eb;
  --npc-soft-blue: #edf7fd;
  min-width: 320px;
  overflow: hidden;
  color: var(--npc-ink);
  background: #fff;
  font-family: "Geologica", "Avenir Next", Avenir, "Segoe UI", system-ui, sans-serif;
  -webkit-font-smoothing: antialiased;
}

.npc-page *, .npc-page *::before, .npc-page *::after { box-sizing: border-box; }
.npc-page :where(h1, h2, h3, p) { margin-top: 0; }
.npc-page img { display: block; max-width: 100%; height: auto; }
.npc-page picture { display: contents; }
.npc-page a { color: inherit; }
.npc-page :where(a, button, input, select, textarea):focus-visible { outline: 3px solid #f4c85d; outline-offset: 3px; }
.npc-section { width: min(1180px, calc(100% - 48px)); margin-inline: auto; }
.npc-kicker { margin: 0 0 16px; color: var(--npc-blue); font-size: 12px; line-height: 1.2; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.npc-heading { max-width: 750px; margin-bottom: 52px; }
.npc-heading--centered { text-align: center; margin-inline: auto; }
.npc-heading > p:last-child, .npc-results__intro > p:last-child { color: var(--npc-muted); font-size: 17px; line-height: 1.68; }
.npc-page h1 { max-width: 670px; margin-bottom: 24px; color: var(--npc-ink); font-family: inherit; font-size: clamp(44px, 3.35vw, 53px); line-height: 1.07; letter-spacing: -.04em; font-weight: 620; }
.npc-page :where(.npc-heading h2, .npc-results h2, .npc-hr-report h2, .npc-science h2, .npc-contact h2) { margin-bottom: 18px; color: var(--npc-ink); font-family: inherit; font-size: clamp(34px, 3.3vw, 52px); line-height: 1.12; letter-spacing: -.035em; font-weight: 610; }

.npc-button { display: inline-flex; align-items: center; justify-content: center; min-height: 52px; border-radius: 5px; padding: 14px 22px; text-decoration: none; font-weight: 750; transition: transform .2s ease, box-shadow .2s ease; }
.npc-button--primary { background: var(--npc-blue); color: #fff !important; box-shadow: 0 12px 26px rgba(8,118,201,.18); }
.npc-button--primary:hover { transform: translateY(-2px); box-shadow: 0 16px 30px rgba(4,73,126,.2); }
.npc-text-link { display: inline-block; padding: 6px 0; border-bottom: 1px solid var(--npc-blue); color: var(--npc-blue) !important; text-decoration: none; font-weight: 750; }

.npc-hero { min-height: 700px; display: grid; grid-template-columns: minmax(0,.96fr) minmax(560px,1.04fr); background: var(--npc-sand); }
.npc-hero__copy { padding: 82px clamp(44px,5vw,78px); align-self: center; }
.npc-hero__lead { max-width: 650px; margin-bottom: 30px; color: #526d7c; font-size: 18px; line-height: 1.68; }
.npc-hero__actions { display: flex; align-items: center; gap: 23px; }
.npc-trust-note { display: flex; flex-wrap: wrap; gap: 9px 22px; margin: 24px 0 0; color: #607783; font-size: 12px; }
.npc-trust-note span { position: relative; }
.npc-trust-note span:not(:last-child)::after { content: ""; width: 3px; height: 3px; border-radius: 50%; background: #91a9b3; position: absolute; right: -13px; top: 7px; }
.npc-hero__media { min-height: 700px; overflow: hidden; border-bottom-left-radius: 150px; position: relative; }
.npc-hero__media img { width: 100%; height: 100%; object-fit: cover; object-position: 63% center; }
.npc-hero__caption { position: absolute; right: 28px; bottom: 28px; max-width: 280px; padding: 18px 21px; border-radius: 6px; background: rgba(255,255,255,.94); box-shadow: 0 18px 50px rgba(20,55,72,.18); }
.npc-hero__caption strong, .npc-hero__caption span { display: block; }
.npc-hero__caption strong { margin-bottom: 4px; font-size: 14px; }
.npc-hero__caption span { color: var(--npc-muted); font-size: 11px; line-height: 1.5; }

.npc-trust-band { min-height: 116px; padding: 24px max(24px,calc((100vw - 1180px)/2)); display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 50px; border-bottom: 1px solid var(--npc-line); }
.npc-trust-band p { margin: 0; color: var(--npc-muted); font-size: 12px; text-transform: uppercase; letter-spacing: .09em; font-weight: 750; }
/* Five entries, three of them logo images of different shapes and two of them text, so the row
   centres everything on a shared 64px band (the height of the tallest logo, the airport lockup)
   instead of trying to share a baseline. It wraps rather than shrinking the type past legibility. */
.npc-trust-band > div { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 14px 34px; color: #507183; }
.npc-trust-band > div > span { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-height: 64px; }
.npc-trust-band strong { font-size: clamp(15px,1.15vw,19px); letter-spacing: -.02em; line-height: 1.25; text-align: center; }
.npc-trust-band em { font-style: normal; font-size: 11px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--npc-muted); }
/* Logos sit muted so no single partner's brand colour hijacks the band; they come to full colour
   on hover, the same "point at it and it stands out" behaviour the cards got. */
/* No `width` here on purpose: the files are 2x, and the 1x display size comes from each img's
   own width/height attributes. A `width: auto` would override those and paint them double size. */
.npc-trust-band .npc-trust-logo img { display: block; max-width: 100%; height: auto; filter: grayscale(1); opacity: .72; }

.npc-trust-ote { width: min(1180px, calc(100% - 48px)); margin: 18px auto 0; color: var(--npc-muted, #5f7684); font-size: 13px; line-height: 1.6; }

.npc-numbers { padding-block: 78px 35px; display: grid; grid-template-columns: repeat(3,1fr); }
.npc-numbers article { min-height: 116px; padding: 15px 38px; display: flex; align-items: center; gap: 20px; border-right: 1px solid var(--npc-line); }
.npc-numbers article:first-child { padding-left: 0; }
.npc-numbers article:last-child { padding-right: 0; border-right: 0; }
.npc-numbers strong { color: var(--npc-blue); font-size: clamp(44px,4.2vw,64px); letter-spacing: -.05em; font-weight: 600; }
.npc-numbers span { max-width: 150px; color: var(--npc-muted); font-size: 14px; line-height: 1.55; }

.npc-approach { padding-block: 80px 110px; }
.npc-differentiators { display: grid; grid-template-columns: repeat(3,1fr); gap: 24px; }
.npc-differentiators article { min-height: 250px; padding: 34px 32px; border: 1px solid var(--npc-line); border-radius: 8px; background: #fff; }
.npc-differentiators article > span { display: block; margin-bottom: 36px; color: var(--npc-green); font-size: 12px; font-weight: 850; }
.npc-differentiators h3 { margin-bottom: 12px; color: var(--npc-ink); font-family: inherit; font-size: 22px; line-height: 1.25; }
.npc-differentiators p { margin: 0; color: var(--npc-muted); font-size: 14px; line-height: 1.65; }

.npc-services { padding-block: 108px; background: var(--npc-sand); }
.npc-service-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 46px; }
.npc-service { display: flex; flex-direction: column; align-items: flex-start; }
.npc-service__image { width: 100%; height: 370px; overflow: hidden; border-radius: 90px 16px 90px 16px; margin-bottom: 26px; background: #e7ece9; }
.npc-service__image img { width: 100%; height: 100%; object-fit: cover; }
.npc-service__meta { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 16px; }
.npc-service__meta > span { color: #96aaa7; font-size: 12px; font-weight: 800; }
.npc-service__eyebrow { margin-bottom: 9px; color: var(--npc-green); font-size: 11px; font-weight: 850; letter-spacing: .09em; text-transform: uppercase; }
.npc-service h3 { margin-bottom: 12px; color: var(--npc-ink); font-family: inherit; font-size: 29px; line-height: 1.15; }
.npc-service > p:not(.npc-service__eyebrow) { color: var(--npc-muted); line-height: 1.65; }
.npc-service ul { width: 100%; margin: 5px 0 22px; padding: 17px 0 0; list-style: none; border-top: 1px solid #e4ded5; }
.npc-service li { padding: 5px 0 5px 19px; color: var(--npc-ink); font-size: 13px; line-height: 1.45; position: relative; }
.npc-service li::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--npc-green); position: absolute; left: 0; top: 11px; }
.npc-service .npc-text-link { margin-top: auto; }

.npc-results { padding-block: 116px 88px; display: grid; grid-template-columns: .76fr 1.24fr; gap: 78px; }
.npc-results__intro { padding-top: 16px; }
.npc-result-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.npc-result-cards article { min-height: 355px; padding: 34px; display: flex; flex-direction: column; border-radius: 9px; background: var(--npc-soft-blue); }
.npc-result-cards article:nth-child(2) { background: var(--npc-mint); }
.npc-result-cards article > p { margin-bottom: 48px; color: var(--npc-blue-dark); font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.npc-result-cards strong { margin-bottom: 16px; color: var(--npc-blue); font-size: clamp(50px,4vw,68px); line-height: 1; letter-spacing: -.06em; font-weight: 620; }
.npc-result-cards article:nth-child(2) strong { color: var(--npc-green); }
.npc-result-cards h3 { color: var(--npc-ink); font-family: inherit; font-size: 20px; line-height: 1.35; }
.npc-result-cards span { margin-top: auto; color: var(--npc-muted); font-size: 13px; line-height: 1.6; }
.npc-data-note { grid-column: 2; margin: -47px 0 0; color: #71858f; font-size: 11px; line-height: 1.55; }

.npc-hr-report { padding-block: 100px; background: var(--npc-blue-dark); color: #fff; }
.npc-hr-report__grid { display: grid; grid-template-columns: .8fr 1.2fr; align-items: center; gap: 100px; }
.npc-hr-report .npc-kicker { color: #a5dfff; }
.npc-hr-report h2 { color: #fff; }
.npc-hr-report p, .npc-hr-report li { color: rgba(255,255,255,.76); line-height: 1.65; }
.npc-hr-report ul { padding: 12px 0 0; list-style: none; }
.npc-hr-report li { padding: 7px 0 7px 27px; position: relative; }
.npc-hr-report li::before { content: "✓"; position: absolute; left: 0; color: #90e0b9; font-weight: 900; }
.npc-privacy-statement { padding: 12px 35px 18px; border-left: 1px solid rgba(255,255,255,.25); }
.npc-privacy-statement strong { display: block; color: #fff; font-size: clamp(110px,12vw,170px); line-height: .85; letter-spacing: -.08em; font-weight: 520; }
.npc-privacy-statement span { display: block; margin: 22px 0; color: #a8e6c6; font-size: 25px; line-height: 1.18; font-weight: 650; }
.npc-privacy-statement p { max-width: 330px; margin: 0; font-size: 13px; }

.npc-process { padding-block: 112px; }
.npc-steps { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(4,1fr); }
.npc-steps li { position: relative; padding: 0 27px; text-align: center; }
.npc-steps li:not(:last-child)::after { content: ""; position: absolute; top: 24px; left: calc(50% + 32px); width: calc(100% - 64px); height: 1px; background: var(--npc-line); }
.npc-steps span { width: 50px; height: 50px; margin: 0 auto 24px; border-radius: 50%; display: grid; place-items: center; background: var(--npc-soft-blue); color: var(--npc-blue); font-weight: 850; position: relative; z-index: 1; }
.npc-steps h3 { color: var(--npc-ink); font-family: inherit; font-size: 18px; }
.npc-steps p { color: var(--npc-muted); font-size: 13px; line-height: 1.65; }
.npc-privacy-strip { margin: 54px auto 0; padding: 16px 24px; width: fit-content; max-width: 100%; background: var(--npc-mint); color: #28644d; text-align: center; font-size: 13px; font-weight: 750; }

.npc-science { padding-block: 45px 120px; display: grid; grid-template-columns: 1.05fr .95fr; align-items: center; gap: 78px; }
.npc-science__image { overflow: hidden; border-radius: 16px 120px 16px 16px; }
.npc-science__image img { width: 100%; aspect-ratio: 1.32; object-fit: cover; }
.npc-science h2 { font-size: clamp(32px,3vw,47px); }
.npc-science > div:last-child > p:not(.npc-kicker) { color: var(--npc-muted); font-size: 17px; line-height: 1.72; }

.npc-faq { padding-block: 100px 115px; display: grid; grid-template-columns: .8fr 1.2fr; gap: 82px; border-top: 1px solid var(--npc-line); }
.npc-faq__list { border-top: 1px solid var(--npc-line); }
.npc-faq__item { border-bottom: 1px solid var(--npc-line); }
.npc-faq__item h3 { margin: 0; }
.npc-faq__item button { width: 100%; padding: 22px 0; border: 0; background: transparent; color: var(--npc-ink); display: flex; justify-content: space-between; gap: 25px; text-align: left; font-family: inherit; font-size: 16px; line-height: 1.45; font-weight: 750; cursor: pointer; }
.npc-faq__item button::after { content: "+"; color: var(--npc-blue); font-size: 24px; font-weight: 400; }
.npc-faq__item button[aria-expanded="true"]::after { content: "−"; }
.npc-faq__item [role="region"] p { margin: -4px 42px 24px 0; color: var(--npc-muted); font-size: 14px; line-height: 1.68; }

.npc-contact { padding-block: 105px; background: #064f8d; color: #fff; }
.npc-contact__grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: 85px; align-items: center; }
.npc-contact .npc-kicker { color: #99dcff; }
.npc-contact h2 { color: #fff; font-size: clamp(34px,3vw,48px); }
.npc-contact p, .npc-contact li { color: rgba(255,255,255,.8); line-height: 1.65; }
.npc-contact ul { padding: 10px 0 0; list-style: none; }
.npc-contact li { padding: 6px 0 6px 24px; position: relative; }
.npc-contact li::before { content: "✓"; position: absolute; left: 0; color: #91dfba; }
.npc-contact-form { padding: 34px; background: #fff; color: var(--npc-ink); border-radius: 12px; }
.npc-contact-form .wpcf7 form { display: grid; gap: 15px; margin: 0; }
.npc-contact-form .wpcf7 p { margin: 0; color: var(--npc-ink); }
.npc-contact-form .wpcf7 label { display: grid; gap: 7px; color: var(--npc-ink); font-size: 12px; font-weight: 750; }
.npc-contact-form .wpcf7 :where(input:not([type="submit"]), select, textarea) { width: 100%; min-height: 47px; border: 1px solid #cbd9df; border-radius: 4px; padding: 10px 12px; color: var(--npc-ink); background: #fff; font: inherit; }
.npc-contact-form .wpcf7 textarea { min-height: 100px; resize: vertical; }
.npc-contact-form .wpcf7 input[type="submit"] { width: 100%; min-height: 52px; border: 0; border-radius: 5px; padding: 14px 22px; background: var(--npc-blue); color: #fff; font-family: inherit; font-size: 15px; font-weight: 750; cursor: pointer; }
.npc-contact-form .wpcf7-response-output { margin: 10px 0 0; color: var(--npc-ink); }
.npc-form-note { margin: 16px 0 0 !important; color: var(--npc-muted) !important; text-align: center; font-size: 12px; }

@media (max-width: 1080px) {
  .npc-hero { grid-template-columns: 1fr 1fr; min-height: 640px; }
  .npc-hero__copy { padding: 65px 36px; }
  .npc-hero__media { min-height: 640px; border-bottom-left-radius: 90px; }
  .npc-service-grid { gap: 25px; }
  .npc-service__image { height: 315px; }
  .npc-results { gap: 40px; }
  .npc-result-cards article { padding: 27px; }
  .npc-hr-report__grid, .npc-science, .npc-faq, .npc-contact__grid { gap: 48px; }
}

@media (max-width: 820px) {
  .npc-section { width: min(100% - 36px,650px); }
  .npc-hero { min-height: 0; grid-template-columns: 1fr; }
  .npc-hero__copy { padding: 64px 24px 56px; }
  .npc-page h1 { font-size: clamp(40px,11vw,54px); }
  .npc-hero__lead { font-size: 17px; }
  .npc-hero__actions { align-items: flex-start; flex-direction: column; gap: 10px; }
  .npc-hero__media { min-height: 440px; border-radius: 0 0 70px 0; grid-row: 1; }
  .npc-hero__caption { right: 18px; bottom: 18px; }
  .npc-trust-band { padding-block: 32px; grid-template-columns: 1fr; gap: 24px; text-align: center; }
  .npc-trust-band > div { flex-wrap: wrap; justify-content: center; gap: 16px 26px; }
  .npc-numbers { padding-block: 48px 20px; grid-template-columns: 1fr; }
  .npc-numbers article { min-height: 95px; padding: 15px 0; border-right: 0; border-bottom: 1px solid var(--npc-line); }
  .npc-numbers article:last-child { border-bottom: 0; }
  .npc-numbers strong { min-width: 112px; }
  .npc-approach, .npc-services, .npc-results, .npc-hr-report, .npc-process, .npc-science, .npc-faq, .npc-contact { padding-block: 76px; }
  .npc-differentiators, .npc-service-grid, .npc-results, .npc-result-cards, .npc-hr-report__grid, .npc-steps, .npc-science, .npc-faq, .npc-contact__grid { grid-template-columns: 1fr; }
  .npc-differentiators article { min-height: 0; }
  .npc-service-grid { gap: 60px; }
  .npc-service__image { height: 430px; }
  .npc-results { gap: 34px; }
  .npc-data-note { grid-column: 1; margin: 0; }
  .npc-result-cards article { min-height: 310px; }
  .npc-privacy-statement { width: 100%; max-width: 520px; margin-inline: auto; }
  .npc-steps { gap: 34px; }
  .npc-steps li { padding: 0; display: grid; grid-template-columns: 50px 1fr; column-gap: 18px; text-align: left; }
  .npc-steps li:not(:last-child)::after { top: 56px; bottom: -28px; left: 25px; width: 1px; height: auto; }
  .npc-steps span { grid-row: span 2; margin: 0; }
  .npc-steps h3 { margin: 4px 0 7px; }
  .npc-steps p { margin: 0; }
  .npc-science { padding-top: 18px; gap: 42px; }
  .npc-science__image { border-radius: 10px 70px 10px 10px; }
  .npc-faq { gap: 10px; }
  .npc-contact-form { padding: 24px; }
}

@media (max-width: 480px) {
  .npc-hero__media { min-height: 340px; }
  .npc-hero__caption { max-width: calc(100% - 36px); }
  .npc-service__image { height: 360px; border-radius: 65px 12px 65px 12px; }
  .npc-result-cards { gap: 14px; }
  .npc-contact h2 { font-size: 33px; }
}

@media (prefers-reduced-motion: reduce) {
  .npc-page *, .npc-page *::before, .npc-page *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
}

/* The Qode theme prints its own page-title H1 above the template body. */
body.nutripass-corporate-page .qodef-page-title { display: none; }

/* The Qode content grid boxes the page to 1100px. This template is full-bleed. */
body.nutripass-corporate-page #qodef-page-inner,
body.nutripass-corporate-page #qodef-page-inner.qodef-content-grid {
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
  padding-left: 0;
  padding-right: 0;
}
body.nutripass-corporate-page #qodef-page-inner > main.npc-page { width: 100%; max-width: none; }

/* Contact form controls. Three defects found on staging 2026-08-06, all traceable to the
   `:where()` block earlier in this file:

   1. `:where()` contributes zero specificity, so the theme's own width on input[type="text"]
      and input[type="email"] won the cascade. Name, email and company rendered at about 230px
      while phone, the select and the textarea stayed full width, because those three are not
      type="text" or type="email" and the theme rule never reached them.
   2. The acceptance checkbox also matched `input:not([type="submit"])` and inherited
      `width: 100%; min-height: 47px`. Combined with `label { display: grid }` it was pushed onto
      its own full-width row above the consent text, where it read as empty space rather than a
      checkbox. That is the GDPR consent control, so it has to be unmistakable.
   3. Contact Form 7 renders the submit as `<button class="wpcf7-submit">`, not
      `input[type="submit"]`, so the submit rule earlier in this file never matched and the
      button was being styled by the theme by accident.

   Rollback: delete this block. Nothing outside `.npc-contact-form` is touched. */
.npc-contact-form .wpcf7 form input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.npc-contact-form .wpcf7 form select,
.npc-contact-form .wpcf7 form textarea {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

.npc-contact-form .wpcf7 form .wpcf7-list-item { margin: 0; }

.npc-contact-form .wpcf7 form .wpcf7-acceptance label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.5;
}

/* A sitewide inline style block declares `input[type="checkbox"] { display: none !important }`,
   presumably for a custom checkbox pattern that draws a pseudo-element on a sibling. The CF7
   acceptance markup has no such sibling, so the GDPR consent box was invisible and unclickable.
   The override is deliberately marked important, because nothing beats an important declaration
   on specificity alone, and it stays inside `.npc-contact-form` so no other form on the site
   changes. Verified on staging 2026-08-06. */
.npc-contact-form .wpcf7 form input[type="checkbox"] {
  display: inline-block !important;
  /* The field padding above applies to every input, so without this the 18px box renders 26x22. */
  padding: 0;
  width: 18px;
  min-width: 18px;
  height: 18px;
  min-height: 18px;
  margin: 2px 0 0;
  flex: 0 0 auto;
  accent-color: var(--npc-blue);
  cursor: pointer;
}

.npc-contact-form .wpcf7 form button.wpcf7-submit {
  width: 100%;
  min-height: 52px;
  border: 0;
  border-radius: 9999px;
  padding: 14px 22px;
  background: var(--npc-blue);
  color: #fff;
  font-family: inherit;
  font-size: 15px;
  font-weight: 750;
  cursor: pointer;
  transition: background 0.4s cubic-bezier(0.16, 1, 0.3, 1), transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

.npc-contact-form .wpcf7 form button.wpcf7-submit:hover {
  background: var(--npc-ink);
  transform: translateY(-1px);
}

/* ==========================================================================
   Παράλληλες δράσεις, hover states and scroll reveals.  Added 2026-08-13.

   Appended as one block rather than merged into the base rules above so the
   whole motion layer can be removed in a single delete if it ever proves too
   much.  Everything is scoped to .npc-page, and every animated property is
   transform or opacity, so none of it triggers layout on scroll.
   ========================================================================== */

.npc-page {
  /* The house easing. Used for every transition below so the page moves with
     one voice instead of five different curves. */
  --npc-ease: cubic-bezier(.16, 1, .3, 1);
}

/* --- Παράλληλες δράσεις --------------------------------------------------- */

.npc-actions { position: relative; padding-block: 104px; overflow: hidden; background: #fff; }

/* Two soft blooms in the brand mint and blue instead of a flat white band, so
   the section reads as its own moment between the sand of the services grid
   and the white of the results. Pointer-events off: it is decoration only. */
.npc-actions::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(760px 400px at 84% 6%, rgba(222, 238, 229, .6), transparent 70%),
    radial-gradient(640px 380px at 6% 94%, rgba(237, 247, 253, .9), transparent 70%);
}
.npc-actions > .npc-section { position: relative; }

.npc-actions__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; align-items: stretch; }

.npc-action {
  display: flex;
  flex-direction: column;
  padding: 34px 32px 30px;
  border: 1px solid var(--npc-line);
  border-radius: 8px;
  background: rgba(255, 255, 255, .86);
  backdrop-filter: blur(6px);
  transition: transform .45s var(--npc-ease), box-shadow .45s var(--npc-ease), border-color .45s var(--npc-ease);
}
.npc-action:hover { transform: translateY(-6px); border-color: #bcd9ea; box-shadow: 0 24px 46px rgba(23, 63, 92, .13); }

.npc-action__icon {
  width: 52px;
  height: 52px;
  margin-bottom: 26px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--npc-mint);
  color: var(--npc-green);
  transition: background .45s var(--npc-ease), color .45s var(--npc-ease), transform .45s var(--npc-ease);
}
.npc-action:hover .npc-action__icon { background: var(--npc-blue); color: #fff; transform: rotate(-6deg) scale(1.06); }

.npc-action h3 { margin-bottom: 10px; color: var(--npc-ink); font-family: inherit; font-size: 21px; line-height: 1.25; }
.npc-action > p { color: var(--npc-muted); font-size: 14px; line-height: 1.65; }

/* `margin-top: auto` pins the chip row to the card foot, so the three cards
   line up along the bottom rule regardless of how long the copy runs. */
.npc-action__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: auto 0 0;
  padding: 18px 0 0;
  list-style: none;
  border-top: 1px solid var(--npc-line);
}
.npc-action__chips li {
  padding: 6px 12px;
  border-radius: 9999px;
  background: var(--npc-soft-blue);
  color: #2c6a90;
  font-size: 12px;
  line-height: 1.35;
  font-weight: 700;
  transition: background .4s var(--npc-ease), color .4s var(--npc-ease);
}
.npc-action:hover .npc-action__chips li { background: var(--npc-mint); color: #28644d; }

.npc-actions__note { max-width: 640px; margin: 44px auto 0; color: var(--npc-muted); font-size: 14px; line-height: 1.7; text-align: center; }

/* --- Hover states on the existing cards ----------------------------------- */

.npc-button { transition: transform .45s var(--npc-ease), box-shadow .45s var(--npc-ease), background .45s var(--npc-ease); }
.npc-button--primary:hover { transform: translateY(-3px); background: var(--npc-blue-dark); box-shadow: 0 20px 38px rgba(4, 73, 126, .28); }

/* The arrow is decoration on a link that already reads as a link, so it is a
   pseudo-element and never reaches the accessibility tree. */
.npc-text-link { transition: border-color .4s var(--npc-ease); }
.npc-text-link::after { content: "→"; display: inline-block; margin-left: 8px; transition: transform .4s var(--npc-ease); }
.npc-text-link:hover { border-bottom-color: var(--npc-ink); }
.npc-text-link:hover::after { transform: translateX(5px); }

/* The whole entry lifts, not just the name, so a caption would travel with it. */
.npc-trust-band > div > span { transition: color .4s var(--npc-ease), transform .4s var(--npc-ease); }
.npc-trust-band > div > span:hover { color: var(--npc-blue); transform: translateY(-2px); }
.npc-trust-band > div > span:hover em { color: inherit; }
/* Grey to full colour on hover, the logo equivalent of the text entries turning blue. */
.npc-trust-band .npc-trust-logo img { transition: filter .4s var(--npc-ease), opacity .4s var(--npc-ease); }
.npc-trust-band .npc-trust-logo:hover img { filter: grayscale(0); opacity: 1; }

.npc-numbers strong { transition: transform .5s var(--npc-ease); }
.npc-numbers article:hover strong { transform: translateY(-4px); }

.npc-differentiators article { transition: transform .45s var(--npc-ease), box-shadow .45s var(--npc-ease), border-color .45s var(--npc-ease); }
.npc-differentiators article:hover { transform: translateY(-6px); border-color: #bcd9ea; box-shadow: 0 22px 44px rgba(23, 63, 92, .12); }
.npc-differentiators article > span { transition: color .45s var(--npc-ease); }
.npc-differentiators article:hover > span { color: var(--npc-blue); }

.npc-service__image { transition: box-shadow .5s var(--npc-ease); }
.npc-service__image img { transition: transform .8s var(--npc-ease); }
.npc-service:hover .npc-service__image { box-shadow: 0 24px 48px rgba(23, 63, 92, .16); }
.npc-service:hover .npc-service__image img { transform: scale(1.06); }
.npc-service h3 { transition: color .4s var(--npc-ease); }
.npc-service:hover h3 { color: var(--npc-blue); }

.npc-result-cards article { transition: transform .45s var(--npc-ease), box-shadow .45s var(--npc-ease); }
.npc-result-cards article:hover { transform: translateY(-6px); box-shadow: 0 26px 50px rgba(23, 63, 92, .13); }

.npc-steps span { transition: transform .45s var(--npc-ease), background .45s var(--npc-ease), color .45s var(--npc-ease); }
.npc-steps li:hover span { transform: scale(1.1); background: var(--npc-blue); color: #fff; }

.npc-faq__item { transition: background .4s var(--npc-ease); }
.npc-faq__item:hover { background: #f7fbfd; }
.npc-faq__item button { transition: color .35s var(--npc-ease); }
.npc-faq__item button:hover { color: var(--npc-blue); }
.npc-faq__item button::after { transition: transform .4s var(--npc-ease); }
.npc-faq__item button:hover::after { transform: scale(1.25); }

/* The answer only exists in the layout once `hidden` comes off, and going from
   display:none restarts a CSS animation, so this plays on open and nowhere
   else. No JS involvement, no height animation, no layout jank. */
.npc-faq__item [role="region"] { animation: npc-fade-up .45s var(--npc-ease) both; }
@keyframes npc-fade-up { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }

.npc-science__image img { transition: transform .9s var(--npc-ease); }
.npc-science__image { overflow: hidden; }
.npc-science__image:hover img { transform: scale(1.05); }

/* Focus ring on the form controls, on top of the global focus-visible outline
   rather than replacing it. Selectors are spelled out because `:where()` earlier
   in this file contributes no specificity and loses to the theme. */
.npc-contact-form .wpcf7 form input:not([type="submit"]):not([type="checkbox"]):focus,
.npc-contact-form .wpcf7 form select:focus,
.npc-contact-form .wpcf7 form textarea:focus {
  border-color: var(--npc-blue);
  box-shadow: 0 0 0 3px rgba(8, 118, 201, .14);
}
.npc-contact-form .wpcf7 form input:not([type="submit"]),
.npc-contact-form .wpcf7 form select,
.npc-contact-form .wpcf7 form textarea {
  transition: border-color .3s var(--npc-ease), box-shadow .3s var(--npc-ease);
}

/* --- Scroll reveals ------------------------------------------------------- */

/*
 * The hidden starting state is gated behind `.npc-reveal-on`, which only the
 * script adds. No JavaScript, an old browser, or a reduced-motion preference
 * therefore means a fully visible page rather than a blank one. The script also
 * skips anything already on screen at startup, so nothing above the fold
 * flickers on load.
 */
.npc-page.npc-reveal-on .npc-reveal {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .8s var(--npc-ease), transform .8s var(--npc-ease);
}
.npc-page.npc-reveal-on .npc-reveal.npc-revealed { opacity: 1; transform: none; }

@media (max-width: 1080px) {
  .npc-actions__grid { gap: 18px; }
  .npc-action { padding: 28px 24px 26px; }
}

@media (max-width: 820px) {
  .npc-actions { padding-block: 76px; }
  .npc-actions__grid { grid-template-columns: 1fr; gap: 16px; }
  .npc-actions__note { margin-top: 32px; }
}

@media (prefers-reduced-motion: reduce) {
  /* The blanket rule near the top of this file already flattens durations. This
     kills the two decorative transforms outright so nothing shifts at all. */
  .npc-action:hover,
  .npc-differentiators article:hover,
  .npc-result-cards article:hover,
  .npc-service:hover .npc-service__image img,
  .npc-science__image:hover img,
  .npc-steps li:hover span,
  .npc-action:hover .npc-action__icon { transform: none; }
  .npc-text-link:hover::after { transform: none; }
}
