/* Het oplossingspagina-stramien (referentie: revolut.com business):
   een volledig donkere pagina met een split-hero, gecentreerde koppen,
   donkere kaarten met iconen, een featureraster rond een centrale
   visual, een prijskaart, stappenkaarten, een grote quote met
   linkkaarten en een donkere FAQ. Alles leest uit tokens.css; op donker
   wordt elke tint afgeleid met color-mix. Iconen en de FAQ-accordeon
   komen uit detail.css (dt-*). */

@layer components {
  /* Secties -------------------------------------------------------- */
  .op-section {
    padding-block: var(--space-xl);
    background: var(--color-ink);
    color: var(--color-on-accent);
  }

  /* Hero: tekst links, beeld rechts. ------------------------------- */
  .op-hero {
    padding-block: var(--space-xl);
    background: var(--gradient-dark);
    color: var(--color-on-accent);
  }

  .op-hero__inner {
    display: grid;
    gap: var(--space-l);
    align-items: center;
  }

  @media (min-width: 56rem) {
    .op-hero__inner {
      grid-template-columns: 1.05fr 1fr;
    }
  }

  .op-kicker {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-block-end: var(--space-m);
    color: color-mix(in srgb, var(--color-on-accent) 70%, transparent);
    font-size: var(--step--1);
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  .op-kicker svg {
    width: 1.1rem;
    height: 1.1rem;
    color: color-mix(in srgb, var(--color-on-accent) 45%, var(--color-accent));
  }

  .op-hero h1 {
    max-width: 16ch;
    font-size: clamp(2.2rem, 1.7rem + 2.2vw, 3.6rem);
    font-weight: 800;
    letter-spacing: -0.03em;
    text-wrap: balance;
  }

  .op-hero__lede {
    max-width: 36rem;
    margin-block-start: var(--space-m);
    color: color-mix(in srgb, var(--color-on-accent) 75%, transparent);
  }

  .op-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2xs);
    margin-block-start: var(--space-l);
  }

  .op-hero__media {
    position: relative;
    border-radius: var(--radius);
    overflow: hidden;
  }

  .op-hero__media img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
  }

  .op-hero__card {
    position: absolute;
    inset-inline-start: var(--space-s);
    inset-block-end: var(--space-s);
    width: min(19rem, calc(100% - 2 * var(--space-s)));
  }

  /* Gecentreerde sectiekop, zoals elke Revolut-sectie opent. -------- */
  .op-head {
    max-width: 50rem;
    margin-inline: auto;
    text-align: center;
  }

  .op-head h2 {
    font-size: clamp(1.9rem, 1.5rem + 1.6vw, 3rem);
    font-weight: 700;
    letter-spacing: -0.02em;
    text-wrap: balance;
  }

  .op-head p {
    max-width: 40rem;
    margin-inline: auto;
    margin-block-start: var(--space-s);
    color: color-mix(in srgb, var(--color-on-accent) 72%, transparent);
  }

  .op-head .button {
    margin-block-start: var(--space-m);
  }

  /* Donkere kaarten ------------------------------------------------- */
  .op-cards {
    display: grid;
    gap: var(--space-s);
    margin-block-start: var(--space-l);
  }

  @media (min-width: 56rem) {
    .op-cards {
      grid-template-columns: repeat(3, 1fr);
    }
  }

  .op-card {
    display: grid;
    gap: var(--space-xs);
    align-content: start;
    padding: var(--space-m);
    border-radius: var(--radius);
    background: color-mix(in srgb, var(--color-on-accent) 6%, transparent);
    border: 1px solid color-mix(in srgb, var(--color-on-accent) 10%, transparent);
  }

  .op-card h3 {
    font-size: var(--step-0);
    font-weight: 700;
  }

  .op-card p {
    color: color-mix(in srgb, var(--color-on-accent) 66%, transparent);
    font-size: var(--step--1);
  }

  .op-card .dt-icon {
    background: color-mix(in srgb, var(--color-accent) 30%, transparent);
    color: color-mix(in srgb, var(--color-on-accent) 70%, var(--color-accent));
  }

  /* Groot beeld in de sectie, zoals de hardwarefoto. ---------------- */
  .op-media {
    margin-block-start: var(--space-l);
    border-radius: var(--radius);
    overflow: hidden;
  }

  .op-media img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
  }

  @media (min-width: 56rem) {
    .op-media img {
      aspect-ratio: 21 / 9;
    }
  }

  /* Featureraster rond een centrale visual. ------------------------- */
  .op-around {
    display: grid;
    gap: var(--space-s);
    margin-block-start: var(--space-l);
  }

  @media (min-width: 66rem) {
    .op-around {
      grid-template-columns: 1fr 1.15fr 1fr;
      align-items: center;
    }
  }

  .op-around__col {
    display: grid;
    gap: var(--space-s);
    align-content: center;
  }

  .op-around__visual .mock {
    width: 100%;
  }

  /* Prijssectie: tekst links, tarievenkaart rechts. ----------------- */
  .op-split {
    display: grid;
    gap: var(--space-l);
    align-items: center;
  }

  @media (min-width: 56rem) {
    .op-split {
      grid-template-columns: 1fr 1fr;
    }
  }

  .op-split__text h2 {
    font-size: clamp(1.9rem, 1.5rem + 1.6vw, 3rem);
    font-weight: 700;
    letter-spacing: -0.02em;
    text-wrap: balance;
  }

  .op-split__text p {
    max-width: 36rem;
    margin-block-start: var(--space-s);
    color: color-mix(in srgb, var(--color-on-accent) 72%, transparent);
  }

  .op-split__text .button {
    margin-block-start: var(--space-m);
  }

  .op-pricing {
    display: grid;
    gap: var(--space-2xs);
    padding: var(--space-s);
    border-radius: var(--radius);
    background: color-mix(in srgb, var(--color-on-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--color-on-accent) 10%, transparent);
  }

  .op-price {
    display: grid;
    gap: 0.2rem;
    padding: var(--space-m);
    border-radius: var(--radius-s);
    background: color-mix(in srgb, var(--color-on-accent) 6%, transparent);
    text-align: center;
  }

  .op-price__label {
    font-size: var(--step--1);
    color: color-mix(in srgb, var(--color-on-accent) 68%, transparent);
  }

  .op-price__figure {
    font-family: var(--font-display);
    font-size: var(--step-3);
    font-weight: 800;
    letter-spacing: -0.02em;
  }

  .op-price--row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-s);
    text-align: start;
  }

  .op-price--row .op-price__figure {
    font-size: var(--step-0);
    font-weight: 700;
  }

  .op-pricing__note {
    padding: var(--space-2xs) var(--space-xs);
    color: color-mix(in srgb, var(--color-on-accent) 55%, transparent);
    font-size: var(--step--1);
  }

  /* Logostrip op donker. -------------------------------------------- */
  .op-section .mh-logos {
    color: color-mix(in srgb, var(--color-on-accent) 70%, transparent);
  }

  .op-section .mh-logos img {
    filter: grayscale(1) invert(1);
    opacity: 0.8;
  }

  /* Stappenkaarten -------------------------------------------------- */
  .op-step__num {
    display: inline-grid;
    place-items: center;
    width: 1.9rem;
    height: 1.9rem;
    border-radius: var(--radius-pill);
    background: var(--color-accent);
    color: var(--color-on-accent);
    font-weight: 800;
    font-size: var(--step--1);
  }

  /* Grote quote ------------------------------------------------------ */
  .op-quote {
    max-width: 52rem;
    margin: 0;
  }

  .op-quote blockquote {
    margin: 0;
    font-family: var(--font-display);
    font-size: var(--step-2);
    font-weight: 600;
    letter-spacing: -0.02em;
    text-wrap: pretty;
  }

  .op-quote figcaption {
    margin-block-start: var(--space-m);
    color: color-mix(in srgb, var(--color-on-accent) 68%, transparent);
    font-size: var(--step--1);
  }

  .op-quote figcaption strong {
    color: var(--color-on-accent);
  }

  /* Linkkaarten met een pijl die meebeweegt. ------------------------ */
  .op-links {
    display: grid;
    gap: var(--space-s);
    margin-block-start: var(--space-xl);
  }

  @media (min-width: 56rem) {
    .op-links {
      grid-template-columns: repeat(3, 1fr);
    }
  }

  .op-link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-s);
    padding: var(--space-s) var(--space-m);
    border-radius: var(--radius-pill);
    background: color-mix(in srgb, var(--color-on-accent) 6%, transparent);
    border: 1px solid color-mix(in srgb, var(--color-on-accent) 10%, transparent);
    color: var(--color-on-accent);
    font-size: var(--step--1);
    font-weight: 600;
    text-decoration: none;
  }

  .op-link::after {
    content: '\2192';
    transition: translate var(--motion);
  }

  .op-link:hover,
  .op-link:focus-visible {
    border-color: color-mix(in srgb, var(--color-accent) 60%, transparent);
  }

  .op-link:hover::after,
  .op-link:focus-visible::after {
    translate: 0.25rem 0;
  }

  /* FAQ-accordeon op donker (bouwt op dt-faq). ---------------------- */
  .op-section .dt-faq details {
    border-color: color-mix(in srgb, var(--color-on-accent) 15%, transparent);
  }

  .op-section .dt-faq details > p {
    color: color-mix(in srgb, var(--color-on-accent) 70%, transparent);
  }

  .op-section .dt-faq details > p a {
    color: inherit;
  }

  .op-section .dt-faq summary:hover,
  .op-section .dt-faq summary:focus-visible {
    color: color-mix(in srgb, var(--color-on-accent) 55%, var(--color-accent));
  }
}
