body{font-family:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans','Liberation Sans',sans-serif}
:root{--primary:#1e7dd8;--accent:#00bcd4;--dark:#1b1f23;--light:#f6f7fb;--maxw:1180px}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;color:#222;line-height:1.6;background:#fff}
.container{max-width:var(--maxw);margin:0 auto;padding:0 20px}
.section{padding:80px 0} .section.alt{background:var(--light)}
.section .eyebrow{letter-spacing:.12em;text-transform:uppercase;color:#7b8694;font-size:12px;margin-bottom:8px}
.section h2{margin:0 0 18px;font-size:32px;letter-spacing:.02em;text-transform:uppercase}
.small{font-size:.95rem;color:#57606a}

/* Header & nav */
header.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.98);backdrop-filter:saturate(180%) blur(6px);border-bottom:1px solid #eee;box-shadow:0 2px 16px rgba(15,23,42,.06)}
.nav{display:flex;align-items:center;justify-content:space-between;height:68px}
.nav .brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.02em}
.nav .brand .logo{width:30px;height:30px;border-radius:6px;background:var(--primary);display:inline-block}
.nav a{text-decoration:none;color:#111}
.nav ul{list-style:none;display:flex;gap:34px;margin:0;padding:0;align-items:center}
.nav ul li a{position:relative;display:inline-block;text-transform:uppercase;letter-spacing:.08em;font-weight:700;padding:8px 2px}
.nav ul li a::after{content:'';position:absolute;left:50%;bottom:-6px;width:0;height:2px;background:var(--primary);transition:all .25s ease}
.nav ul li a:hover::after,.nav ul li.current-menu-item a::after,.nav ul li.current_page_item a::after{left:0;width:100%}
.nav-toggle{display:none}
@media (max-width: 860px){.nav ul{display:none}.nav-toggle{display:block}}

/* Hero */
.hero{position:relative;display:flex;align-items:center;min-height:56vh;background:linear-gradient(135deg,#0f172a 0%,#172554 100%);color:#fff}
.hero .container{padding:90px 20px}
.hero h1{font-size:44px;line-height:1.15;margin:0 0 14px}
.hero p{opacity:.9;max-width:760px}
.hero .cta{margin-top:22px;display:flex;gap:12px;flex-wrap:wrap}
.btn{display:inline-block;padding:12px 18px;border-radius:10px;border:1px solid transparent;cursor:pointer;font-weight:700;text-decoration:none}
.btn.primary{background:var(--primary);color:#fff}
.btn.secondary{background:transparent;border-color:#ffffff55;color:#fff}
.hero .btn.primary{transition:transform .2s ease}
.hero .btn.primary:hover{transform:translateY(-2px)}

/* Grids */
.grid{display:grid;gap:18px}
.grid.cols-3{grid-template-columns:repeat(3,1fr)}
.grid.cols-4{grid-template-columns:repeat(4,1fr)}
.grid.cols-5{grid-template-columns:repeat(5,1fr)}
@media(max-width:900px){.grid.cols-3,.grid.cols-4,.grid.cols-5{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.grid.cols-3,.grid.cols-4,.grid.cols-5{grid-template-columns:1fr}}

/* Cards */
.card{background:#fff;border:1px solid #e6e8eb;border-radius:14px;padding:18px;transition:box-shadow .25s ease, transform .25s ease}
.card:hover{box-shadow:0 8px 28px rgba(0,0,0,.08);transform:translateY(-2px)}
.card h3{margin:10px 0 6px;font-size:18px} .card p{margin:0}

/* News slider */
.news-slider{position:relative;overflow:hidden}
.news-track{display:flex;transition:transform .5s ease}
.news-slide{min-width:100%;display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;padding:10px}
.news-slide .media img{width:100%;height:auto;border-radius:12px}
.news-slide h3{margin:0 0 8px}
@media(max-width:860px){.news-slide{grid-template-columns:1fr}}
.slider-nav{display:flex;justify-content:center;gap:8px;margin-top:10px}
.slider-dot{width:10px;height:10px;border-radius:50%;border:1px solid #ccc;background:#eee;cursor:pointer}
.slider-dot.active{background:var(--primary);border-color:var(--primary)}

/* Team */
.team .member{text-align:center}
.team .member img{width:140px;height:140px;object-fit:cover;border-radius:50%;border:6px solid #fff;box-shadow:0 2px 12px rgba(0,0,0,.06)}
.team .role{color:#6b7280;font-size:.95rem}

/* Partner */
.partners{align-items:center;justify-items:center;gap:28px}
.partners img{max-height:48px;max-width:160px;width:auto;height:auto;filter:grayscale(100%) contrast(1.1);opacity:.9}

/* Forms */
.contact form{display:grid;gap:12px;max-width:700px}
input, textarea{width:100%;padding:12px 14px;border-radius:10px;border:1px solid #d1d5db;font-size:1rem}
textarea{min-height:140px;resize:vertical}
label{font-weight:600}
.consent{display:flex;gap:10px;align-items:flex-start}
.consent input{width:auto}
.alert{padding:12px 14px;border-radius:10px;border:1px solid}
.alert.success{background:#ecfdf5;border-color:#10b981;color:#065f46}
.alert.error{background:#fef2f2;border-color:#ef4444;color:#7f1d1d}

/* Footer */
footer.site-footer{padding:32px 0;background:#0b1220;color:#a9b2c4}
footer a{color:#dbeafe}
footer .footer-inner{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}

/* Reveal animations */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .6s ease, transform .6s ease}
.reveal.in-view{opacity:1;transform:none}
.fade-in{opacity:0;transition:opacity .8s ease}
.fade-in.in-view{opacity:1}
/* Reveal variants */
.reveal-up{opacity:0;transform:translateY(32px);transition:opacity .6s ease, transform .6s ease}
.reveal-left{opacity:0;transform:translateX(-32px);transition:opacity .6s ease, transform .6s ease}
.reveal-right{opacity:0;transform:translateX(32px);transition:opacity .6s ease, transform .6s ease}
.reveal-up.in-view,.reveal-left.in-view,.reveal-right.in-view{opacity:1;transform:none}

/* Edge tabs (icon-only collapsed; slide-out on hover; hidden mobile) */
.edge-tabs{position:fixed;right:0;top:35%;z-index:60;display:flex;flex-direction:column;gap:10px}
.edge-tabs a{background:#0b1220;color:#fff;text-decoration:none;padding:0;border-radius:12px 0 0 12px;display:flex;align-items:center;gap:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);height:44px;transform:translateX(calc(100% - 44px));transition:transform .25s ease, background .2s ease;overflow:hidden;width:max-content}
.edge-tabs a:hover{transform:translateX(0);background:var(--primary)}
.edge-tabs .icon{width:44px;display:inline-flex;justify-content:center;align-items:center;font-size:18px;line-height:1}
.edge-tabs .label{padding-right:14px;white-space:nowrapfont-weight:700;}
@media (max-width:860px){.edge-tabs{display:none}}


/* JuST: palette & active states */
a{color:var(--primary)} a:hover{color:var(--highlight)}
.nav ul li a::after{background:var(--highlight)}
.nav ul li a.active{color:var(--primary)} .nav ul li a.active::after{left:0;width:100%}
.edge-tabs a{background:var(--dark)} .edge-tabs a:hover{background:var(--primary)}

/* Edge Tabs bigger */
.edge-tabs a{ border-top-left-radius:14px; border-bottom-left-radius:14px; padding:10px 0 }
.edge-tabs .icon{ width:56px; font-size:20px } .edge-tabs .label{ padding-right:18px; font-size:14px font-weight:700;}

/* Language switch */
.lang-switch{ display:flex; align-items:center; gap:8px; margin-left:14px }
.lang-switch a{ display:inline-block; padding:6px 10px; border-radius:999px; border:1px solid var(--primary); text-transform:uppercase; font-weight:700; font-size:12px; letter-spacing:.08em; text-decoration:none; color:var(--primary) }
.lang-switch a.active{ background:var(--primary); color:#fff }
@media(max-width:860px){ .lang-switch{ margin-left:auto } }

/* Typo & headings */
html{font-size:18px} body{line-height:1.75} h1,h2,h3{text-align:center}
.hero h1{font-size:52px;line-height:1.1;text-align:center} .section h2{font-size:40px} .card h3{font-size:22px;text-align:center} .small{font-size:1.05rem}

/* Hide eyebrows */
.section .eyebrow{display:none !important}

/* Ambient background (class-based) */
html.ambient-bg, body.ambient-bg{
  background:
    radial-gradient(900px 600px at -10% -10%, rgba(144,175,197,.14) 0%, rgba(144,175,197,0) 60%),
    radial-gradient(700px 500px at 110% -10%, rgba(51,107,135,.14) 0%, rgba(51,107,135,0) 60%),
    radial-gradient(600px 500px at 50% 120%, rgba(118,54,38,.14) 0%, rgba(118,54,38,0) 60%),
    #fff !important;
  background-attachment: fixed, fixed, fixed, fixed;
}

/* Partners (ID #partners) */
#partners{ background: var(--primary); padding:22px; border-radius:16px }
#partners .logo img, #partners .logo svg{ max-width:100%; max-height:100%; object-fit:contain; opacity:.95 }
#partners .partners img, #partners .partners .wp-post-image{ max-height:160px !important; max-width:100% !important; width:auto; height:auto; filter:none; opacity:1 }
@media(max-width:860px){ #partners .partners img, #partners .partners .wp-post-image{ max-height:120px !important } }

/* Contact full width + centered button */
.contact form{ max-width:none; width:100%; margin:0 auto }
.contact .grid.cols-2{ grid-template-columns:1fr 1fr }
.contact p:last-child{ text-align:center }

/* == JuST: Alerts & Contact Form 7 message styling == */
/* Generic alerts (in case <div class="alert success|error|info"> is used) */
.alert{
  margin-top:16px; padding:14px 16px; border-radius:12px;
  border:2px solid transparent; background:#f6f7fb;
  box-shadow:0 4px 16px rgba(0,0,0,.06); font-weight:600;
}
.alert.success{ background:rgba(51,107,135,.10); border-color:var(--primary); color:var(--dark) }
.alert.error{   background:rgba(118,54,38,.10);  border-color:var(--highlight); color:var(--dark) }
.alert.info{    background:rgba(144,175,197,.12); border-color:var(--accent); color:var(--dark) }

/* Contact Form 7 response output → same optics as .alert */
.wpcf7 form .wpcf7-response-output{
  margin-top:16px; padding:14px 16px; border-radius:12px;
  border:2px solid transparent !important; background:#f6f7fb;
  box-shadow:0 4px 16px rgba(0,0,0,.06); font-weight:600;
}
/* success */
.wpcf7 form .wpcf7-mail-sent-ok,
.wpcf7 form.sent .wpcf7-response-output{
  background:rgba(51,107,135,.10) !important; border-color:var(--primary) !important; color:var(--dark) !important;
}
/* validation / spam / error */
.wpcf7 form .wpcf7-validation-errors,
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.spam .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output,
.wpcf7 form .wpcf7-spam-blocked,
.wpcf7 form .wpcf7-mail-sent-ng{
  background:rgba(118,54,38,.10) !important; border-color:var(--highlight) !important; color:var(--dark) !important;
}
/* invalid field hints */
.wpcf7-not-valid-tip{ color:var(--highlight); font-size:.95rem; margin-top:6px }
/* invalid field border highlight */
.wpcf7 form input.wpcf7-not-valid,
.wpcf7 form textarea.wpcf7-not-valid,
.wpcf7 form select.wpcf7-not-valid{
  border-color:var(--highlight) !important;
  box-shadow:0 0 0 3px rgba(118,54,38,.12);
}

#partners{ background: none; color:#000; }
#partners .eyebrow, #partners h2, #partners p, #partners a{ color:#000; }
#partners .eyebrow{ opacity:.9 }
#partners .partners{ row-gap:28px; }

/* Accordion */
:root{--acc-radius:14px;--acc-gap:14px;--acc-border:#e7e9ee;--acc-shadow:0 1px 2px rgba(0,0,0,.04),0 6px 24px rgba(0,0,0,.06);}
.accordion{display:flex;flex-direction:column;gap:var(--acc-gap);}
.accordion-item{border:1px solid var(--acc-border);border-radius:var(--acc-radius);background:#fff;box-shadow:var(--acc-shadow);overflow:hidden}
.accordion-heading{margin:0}
.accordion-button{display:grid;grid-template-columns:1fr auto;gap:.5rem;align-items:center;width:100%;text-align:left;padding:1rem 1.25rem;font:inherit;background:transparent;border:0;cursor:pointer}
.accordion-button .title{font-weight:600}
.accordion-button .excerpt{opacity:.8;font-size:.95rem}
.accordion-button .icon{transition:transform .2s ease}
.accordion-button[aria-expanded="true"] .icon{transform:rotate(180deg)}
.accordion-panel{max-height:0;overflow:hidden;transition:max-height .25s ease, padding .2s ease;padding:0 1.25rem}
.accordion-panel[data-open="true"]{max-height:1200px;padding:0 1.25rem 1.25rem}
.accordion-panel .panel-inner{padding:0;margin:0}
@media (min-width: 900px){
  .accordion-button{grid-template-columns:minmax(18ch,32ch) 1fr auto}
}

/*  Overview details*/
.overview-details{display:flex;flex-direction:column;gap:14px}
.ov-item{border:1px solid #e7e9ee;border-radius:14px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.04),0 6px 24px rgba(0,0,0,.06);overflow:hidden}
.ov-summary{display:grid;grid-template-columns:1fr auto;gap:.5rem;align-items:center;list-style:none;padding:1rem 1.25rem;cursor:pointer}
.ov-summary::-webkit-details-marker{display:none}
.ov-summary .title{font-weight:600}
.ov-summary .excerpt{opacity:.8;font-size:.95rem}
.ov-summary .icon{transition:transform .2s ease}
.ov-item[open] .ov-summary .icon{transform:rotate(180deg)}
.ov-panel{padding:0 1.25rem 1.25rem}
@media (min-width:900px){ .ov-summary{grid-template-columns:minmax(18ch,32ch) 1fr auto} }


/* Hero image styles */
.hero{position:relative;min-height:72vh;display:flex;align-items:center;justify-content:center;text-align:center;color:#fff;overflow:hidden}
.hero .container{position:relative;z-index:2}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg, rgba(10,22,45,.60), rgba(10,22,45,.60));}
.hero h1{font-size:clamp(2.2rem, 5vw + 1rem, 5.5rem);line-height:1.05;margin:0 0 .75rem}
.hero .small{font-size:clamp(1rem, 1.2vw + .6rem, 1.6rem);opacity:.95}
@media (max-width: 640px){ .hero{min-height:64vh} }





/* Menu logo icon (blue square + white glyph) */
.site-header .brand .logo{
  position:relative; display:inline-block; vertical-align:middle;
  width: 28px; height: 28px; margin-right:.6rem;
  background:#1e7dd8; /* primary blue */
  border-radius:8px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.site-header .brand .logo::after{
  content:""; position:absolute; inset:4px; 
  background:#fff;
  -webkit-mask: url("../img/logo.svg") no-repeat center / contain;
          mask: url("../img/logo.svg") no-repeat center / contain;
}
@media (min-width: 1024px){
  .site-header .brand .logo{ width:30px; height:30px; }
  .site-header .brand .logo::after{ inset:5px; }
}


/* Overview arrows: right-aligned, larger, site blue */
.overview-details .ov-summary{display:grid;grid-template-columns:1fr auto;align-items:center;gap:.5rem}
.overview-details .ov-summary .title{grid-column:1}
.overview-details .ov-summary .excerpt{grid-column:1;opacity:.8;font-size:.95rem}
.overview-details .ov-summary .icon{grid-column:2;justify-self:end;line-height:1;font-size:1.4rem;color:var(--primary);}
.ov-item[open] .ov-summary .icon{transform:rotate(180deg)}

/* ===== Accessibility: Focus Styles===== */
:root {
  --focus-ring: 2px;
  --focus-gap: 2px;
  --focus-color: #0a84ff;
  --focus-bg: #ffffff;
}
a:focus-visible,
button:focus-visible,
[role="button"]:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible {
  outline: var(--focus-ring) solid var(--focus-color);
  outline-offset: var(--focus-gap);
  box-shadow: 0 0 0 calc(var(--focus-ring) + var(--focus-gap)) var(--focus-bg);
  transition: outline-offset .05s ease;
}
/* Ensure visible focus for skip links / nav links */
.skip-link:focus,
.skip-link:focus-visible {
  position: static;
  clip: auto;
  width: auto;
  height: auto;
  margin: 0.5rem;
  padding: 0.5rem 0.75rem;
  background: var(--focus-color);
  color: #fff;
  border-radius: 4px;
  z-index: 10000;
}


/* ===== Accessibility: Skip Link base===== */
.skip-link {
  position: absolute;
  top: -1000em;
  left: 0;
  padding: 0.5rem 0.75rem;
  background: #0a84ff;
  color: #fff;
  text-decoration: none;
  border-radius: 4px;
}
/* When focused, bring it into view (works together with the earlier :focus-visible block) */
.skip-link:focus,
.skip-link:focus-visible {
  top: 0.5rem;
  left: 0.5rem;
}

/* Make entire news card clickable without changing visuals */
.news-slide{position:relative}
.news-slide .stretched-link{position:absolute;inset:0;z-index:1;text-indent:-9999px;overflow:hidden;white-space:nowrap}
.news-slide:focus-within{outline:2px solid rgba(0,0,0,.25);outline-offset:3px}
.news-slide:hover .copy h3{text-decoration:underline}

/* Mobile menu overlay */
@media (max-width: 860px){
  body.menu-open{overflow:hidden}
  .nav-toggle{display:block;background:transparent;border:0;font-size:26px;line-height:1}
  .nav-toggle.active{transform:rotate(90deg)}
  .nav ul{display:none}
}


/* Desktop nav visibility fix */
@media (min-width: 861px){
}

/* Mobile menu overlay (scoped to mobile widths) */
@media (max-width: 860px){
  .nav-toggle{display:block;background:transparent;border:0;font-size:26px;line-height:1}
  .nav ul{display:none}
}

/* Mobile menu overlay background using site color */
@media (max-width: 860px){
}

/* Force solid overlay background and visibility (high specificity) */
@media (max-width: 860px){
}


/* === MOBILE MENU: HARD CLEAN RULESET === */

/* Desktop */
@media (min-width: 861px){
  #site-menu { position:static; display:block; }
  #site-menu > ul { display:flex; gap:16px; }
  .nav-toggle, .menu-toggle, .navbar-toggler, .hamburger, .menu-button { display:none; }
}

/* Mobile */
@media (max-width: 860px){
  .nav-toggle, .menu-toggle, .navbar-toggler, .hamburger, .menu-button { display:none; }
  .nav-toggle:first-of-type,
  .menu-toggle:first-of-type,
  .navbar-toggler:first-of-type,
  .hamburger:first-of-type,
  .menu-button:first-of-type {
    display:inline-flex; align-items:center; justify-content:center;
    background:transparent; border:0; font-size:26px; line-height:1; padding:8px;
  }

  #site-menu {
    position:fixed; inset:0; z-index:9999;
    display:none !important;
    align-items:center; justify-content:center;
    padding:40px 24px;
    background: var(--dark, rgba(0,0,0,.92)) !important;
    -webkit-backdrop-filter:saturate(140%) blur(4px);
    backdrop-filter:saturate(140%) blur(4px);
  }
  #site-menu[data-open], body.menu-open #site-menu, #site-menu[aria-hidden="false"] {
    display:flex !important;
  }

  #site-menu > ul {
    list-style:none; margin:0; padding:0;
    display:flex; flex-direction:column; gap:18px; align-items:center;
  }
  #site-menu a {
    color:#fff; font-size:20px; letter-spacing:.06em;
    text-transform:uppercase; font-weight:700; text-decoration:none;
  }
  #site-menu a:hover, #site-menu a:focus { text-decoration:underline; text-underline-offset:4px; }
}
/* === END MOBILE MENU: HARD CLEAN RULESET === */

/* === BODY-LEVEL OVERLAY OVERRIDES === */
@media (max-width: 860px){
  body > #site-menu {
    position: fixed !important;
    top: 0; right: 0; bottom: 0; left: 0;
    width: 100vw; height: 100vh;
    margin: 0 !important;
    background: #0b0f14 !important; 
    display: none !important;
    z-index: 99999 !important;
    align-items: flex-start; justify-content: flex-start;
    padding: 72px 20px 32px; 
    overflow-y: auto; -webkit-overflow-scrolling: touch;
  }
  body.menu-open > #site-menu,
  body > #site-menu[data-open],
  body > #site-menu[aria-hidden="false"] {
    display: flex !important;
  }
  body > #site-menu > ul {
    list-style: none; margin: 0 auto; padding: 0;
    width: 100%; max-width: 560px;
    display: flex; flex-direction: column; gap: 16px;
    text-align: center;
  }
  body > #site-menu a {
    font-size: 18px; /* smaller */
    letter-spacing: .06em;
    text-transform: uppercase;
    font-weight: 700;
    color: #fff; text-decoration: none;
    display: inline-block; padding: 10px 8px;
  }
  body > #site-menu a:hover, body > #site-menu a:focus {
    text-decoration: underline; text-underline-offset: 4px;
  }
}

/* === Mobile menu overlay & focus trap helpers === */
#menu-overlay{position:fixed;inset:0;display:none;opacity:0;transition:opacity .2s ease;z-index:999;background:rgba(0,0,0,.4);}
body.menu-open #menu-overlay{display:block;opacity:1;}
/* Make sure offcanvas nav is above overlay */
#site-menu{position:relative;z-index:1000;}
/* Focus outline visible for keyboard users */
:focus-visible{outline:2px solid currentColor;outline-offset:2px;}


/* Hero media as background */
.hero { position: relative; overflow: clip; }
.hero .hero-media { position:absolute; inset:0; z-index:0; display:block; }
.hero .hero-media img { width:100%; height:100%; object-fit:cover; object-position:center; }
.hero > .container, .hero .cta { position: relative; z-index: 1; }

.hero .hero-media-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; z-index:0; display:block; }

.hero p.small, .hero .small{color:#fff;font-weight:600}

/* Hide overview excerpt when panel is open to avoid duplicate first sentence */
.ov-item[open] .ov-summary .excerpt{display:none;}
