/* ==========================================================================
   Shared components — used by two or more blocks or templates.
   Enqueued site-wide (and on the editor canvas) after global.css, before any
   block CSS. A rule used by exactly one block belongs in that block's own CSS.
   ========================================================================== */


/* --- Grids ------------------------------------------------------------------ */

.grid-2{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:var(--gap)}
.grid-3{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:var(--gap)}
.grid-4{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:var(--gap)}
@media (max-width: 1024px){.grid-4{grid-template-columns:repeat(2, minmax(0, 1fr))}}
@media (max-width: 820px){.grid-3{grid-template-columns:repeat(2, minmax(0, 1fr))}}
@media (max-width: 600px){.grid-2,.grid-3,.grid-4{grid-template-columns:minmax(0, 1fr)}}


/* --- Glass card — translucent card on the gradient bands ------------------- */

.glass-card{
  position:relative;
  border-radius:var(--radius-card);
  /* Navy-tinted frost (not white): over the light end of the gradient a white tint left body copy at ~3.9:1. */
  background:linear-gradient(160deg, rgba(33,44,84,.18) 0%, rgba(33,44,84,.34) 100%);
  border:1px solid rgba(255,255,255,.22);
  box-shadow:inset 1px 1px 0 rgba(255,255,255,.30);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  color:var(--white);
}


/* --- Icon circle — 90px white disc holding a 40px navy line icon ----------- */

.icon-circle{
  display:inline-flex;align-items:center;justify-content:center;
  width:clamp(72px, 6.25vw, 90px);height:clamp(72px, 6.25vw, 90px);
  border-radius:50%;background:var(--white);color:var(--navy);flex:none;
}
.icon-circle svg{width:45%;height:45%}
.icon-circle--brand{background:var(--brand);color:var(--white)}


/* --- Grey card — light rounded card (news, image cards, contact, CTA panel) - */

.grey-card{background:var(--grey-50);color:var(--ink);border-radius:var(--radius-card);padding:clamp(24px, 2.25vw, 32px)}


/* --- Logo tile — white tile with a hairline border -------------------------- */

.logo-tile{
  display:flex;align-items:center;justify-content:center;
  background:var(--white);border:1px solid var(--grey-100);border-radius:16px;padding:24px;
}
.logo-tile img{max-height:100%;max-width:100%;width:auto;height:auto;object-fit:contain}


/* --- Media — image wrapper with the standard 12px radius and cover fit ------ */

.media{border-radius:var(--radius);overflow:hidden;background:var(--grey-100)}
.media img,.media video{width:100%;height:100%;object-fit:cover}


/* --- News / article card — theme_article_card() ------------------------------
   Used by the news-cards and news-listing blocks and the archive template. */

.news-card{
  display:flex;flex-direction:column;height:100%;
  background:var(--grey-50);color:var(--ink);border-radius:var(--radius-card);
  padding:clamp(24px, 2.25vw, 32px);
}
.news-card__media{aspect-ratio:288 / 200;margin-bottom:1.75rem}
.news-card__meta{margin:0 0 .5rem;color:var(--brand);font-size:var(--step-lead);font-weight:400}
.news-card__title{margin-bottom:1rem}
.news-card__title a{color:inherit}
.news-card__title a:hover{color:var(--brand)}
.news-card__body{margin:0 0 1.75rem}
.news-card__cta{margin-top:auto;align-self:flex-start}


/* --- Card (legacy archive/search card, DD styled) ---------------------------- */

.card{
  display:flex;flex-direction:column;gap:1rem;
  padding:clamp(20px, 2.4vw, 32px);min-height:200px;
  background:var(--grey-50);color:var(--ink);border-radius:var(--radius-card);
  text-decoration:none;transition:transform var(--speed) var(--ease);
}
a.card:hover{transform:translateY(-4px)}
.card__media{aspect-ratio:4 / 3;overflow:hidden;border-radius:var(--radius)}
.card__media img{width:100%;height:100%;object-fit:cover;background:var(--grey-100)}
.card__label{font-size:var(--step-small);color:var(--brand)}
.card__title{font-family:var(--font-display);font-size:var(--step-h3);font-weight:600;line-height:1.25;color:var(--ink-strong)}
.card__body{font-size:var(--step-small)}
.card .link-arrow{margin-top:auto;align-self:flex-start}
.card--white{background:var(--white)}
.card--brand{background:var(--brand);color:var(--white)}
.card-grid{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:var(--gap)}
@media (max-width: 1024px){.card-grid{grid-template-columns:repeat(2, minmax(0, 1fr))}}
@media (max-width: 560px){.card-grid{grid-template-columns:1fr}}
@media (prefers-reduced-motion: reduce){a.card:hover{transform:none}}


/* --- Breadcrumb (theme_breadcrumb()) ---------------------------------------- */

.breadcrumb{margin-bottom:clamp(20px, 2.4vw, 40px)}
.breadcrumb__list{display:flex;flex-wrap:wrap;align-items:center;gap:0.5rem;margin:0;padding:0;list-style:none;font-size:var(--step-micro);font-weight:500}
.breadcrumb__list>li{display:flex;align-items:center;gap:0.5rem}
.breadcrumb__list>li+li::before{content:"";width:5px;height:5px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg);opacity:0.7}
.breadcrumb a{text-decoration:none;opacity:0.75}
.breadcrumb a:hover{opacity:1;text-decoration:underline}
.breadcrumb [aria-current="page"]{font-weight:700}
.breadcrumb__home{display:inline-flex}
.breadcrumb__home svg{width:clamp(15px,1.15vw,20px);height:auto}


/* --- Tabs (category links) -------------------------------------------------- */

.tabs{display:flex;flex-wrap:wrap;gap:clamp(1.25rem, 3vw, 2.5rem)}
.tabs a{padding-bottom:6px;border-bottom:2px solid transparent;font-size:var(--step-nav);text-decoration:none}
.tabs a:hover{border-bottom-color:currentColor}
.tabs [aria-current="page"]{font-weight:700;border-bottom-color:currentColor}


/* --- Filter pills + pagination (resources/js/filter-grid.js) ---------------- */

.pills{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:clamp(24px, 3vw, 44px)}
.pill{
  display:inline-flex;align-items:center;padding:.75em 1.5em;border:1.5px solid var(--grey-100);border-radius:var(--radius-pill);
  font:inherit;font-size:var(--step-small);font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;
  background:var(--white);color:var(--navy);
  transition:background var(--speed) var(--ease),color var(--speed) var(--ease),border-color var(--speed) var(--ease);
}
.pill:hover{border-color:var(--brand)}
.pill.is-active{background:var(--brand);border-color:var(--brand);color:var(--white)}
.is-hidden{display:none !important}

/* Prev / label / next row — news listing (filter-grid pager and WP pagination) */
.pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin-top:clamp(24px, 3vw, 40px)}
.pagination__num,.pagination__arrow{
  display:inline-grid;place-items:center;min-width:44px;height:44px;padding:0 10px;
  border:0;border-radius:50%;background:none;font:inherit;font-size:var(--step-body);color:var(--navy);cursor:pointer;
}
.pagination__arrow{color:var(--brand)}
.pagination__num:hover,.pagination__arrow:hover{background:rgba(var(--brand-rgb), .1)}
.pagination__num.is-current{background:var(--brand);color:var(--white);cursor:default}
.pagination__arrow svg{width:22px;height:22px}
.pagination__arrow.is-disabled{opacity:.35;cursor:default}

/* WordPress the_posts_pagination() markup, styled like the design's prev / "Page 1 of 5" / next */
.nav-links{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;margin-top:clamp(24px, 3vw, 40px)}
.nav-links .page-numbers{display:inline-grid;place-items:center;min-width:44px;height:44px;padding:0 12px;border-radius:50%;color:var(--navy)}
.nav-links a.page-numbers:hover{background:rgba(var(--brand-rgb), .1)}
.nav-links .page-numbers.current{background:var(--brand);color:var(--white)}
.nav-links .prev,.nav-links .next{color:var(--brand)}
.nav-links .prev svg,.nav-links .next svg{width:22px;height:22px}


/* --- Carousel (resources/js/ui.js) ------------------------------------------ */

.carousel{position:relative}
.carousel__track{
  display:grid;grid-auto-flow:column;grid-auto-columns:minmax(260px, calc((100% - 2 * var(--gap)) / 3));
  gap:var(--gap);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;
}
.carousel__track::-webkit-scrollbar{display:none}
.carousel__track>*{scroll-snap-align:start}
.carousel__nav{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}
.arrow-btn{
  display:inline-grid;place-items:center;width:46px;height:46px;flex:none;
  border:0;border-radius:50%;cursor:pointer;background:var(--brand);color:var(--white);
  transition:background var(--speed) var(--ease);
}
.arrow-btn:hover{background:var(--brand-deep)}
.arrow-btn svg{width:18px;height:18px}
@media (max-width: 700px){.carousel__track{grid-auto-columns:85%}}


/* --- Accordion --------------------------------------------------------------- */

.accordion{border-top:1px solid var(--hairline)}
.accordion__item{border-bottom:1px solid var(--hairline)}
.accordion__summary{
  display:flex;align-items:center;justify-content:space-between;gap:2rem;
  padding:clamp(14px, 1.8vw, 24px) 0;
  font-family:var(--font-display);font-size:var(--step-h3);font-weight:600;line-height:1.2;color:var(--ink-strong);
  cursor:pointer;list-style:none;
}
.accordion__summary::-webkit-details-marker{display:none}
.accordion__summary:hover{color:var(--brand)}
.accordion__summary::after{
  content:"";flex:none;width:20px;height:20px;color:var(--brand);
  background:linear-gradient(currentColor, currentColor) center / 100% 1.5px no-repeat,
             linear-gradient(currentColor, currentColor) center / 1.5px 100% no-repeat;
  transition:transform var(--speed) var(--ease);
}
.accordion__item[open] .accordion__summary::after{background:linear-gradient(currentColor, currentColor) center / 100% 1.5px no-repeat;transform:rotate(180deg)}
.accordion__body{padding:0 clamp(2rem, 6vw, 5rem) clamp(20px, 2.4vw, 32px) 0;max-width:68ch}
.accordion__body>*{margin:0}
.accordion__body>*+*{margin-top:1rem}


/* --- Panel (inset padding; surface-* supplies the colour) ------------------- */

.panel{padding:clamp(28px, 4vw, 56px);border-radius:var(--radius-card)}
.panel--flush{padding:0}


/* --- Page band (archives, search, 404 — templates without a hero block) ----- */

.page-band{padding-block:clamp(40px, 4vw, 56px)}
.page-band__title{margin:0;color:var(--white)}
.page-band__lead{margin:1.5rem 0 0;font-size:var(--step-lead);max-width:52ch}
