/* Open Horizons */
@font-face {
  font-family:'DM Sans';
  src:url('/assets/fonts/dm-sans.woff2') format('woff2');
  font-weight:100 900;
  font-display:swap
}
@font-face {
  font-family:'Playfair Display';
  src:url('/assets/fonts/playfair.woff2') format('woff2');
  font-weight:400 900;
  font-display:swap
}
:root {
  --ink:#213e35;
  --muted:#657069;
  --line:#dddeda;
  --brand:#254e40;
  --brand-ink:#fff;
  --bg:#faf8f2;
  --bg-soft:#eef1e8;
  --paper:#fffefa;
  --accent:#a75e43;
  --radius:18px
}
* {
  box-sizing:border-box
}
html {
  font-size:16px;
  scroll-behavior:smooth;
  scroll-padding-top:24px
}
body {
  margin:0;
  color:var(--ink);
  background:var(--bg);
  font-family:'DM Sans',system-ui,sans-serif;
  line-height:1.65;
  -webkit-font-smoothing:antialiased
}
main,.site-header,.site-footer {
  max-width:1248px;
  margin-inline:auto;
  padding-inline:48px
}
main {
  min-height:65vh
}
a {
  color:var(--brand);
  text-underline-offset:4px
}
a:hover {
  text-decoration-thickness:2px
}
img {
  max-width:100%;
  display:block
}
h1,h2,h3,p,figure {
  margin-top:0
}
h1,h2 {
  font-family:'Playfair Display',Georgia,serif;
  font-weight:500;
  letter-spacing:-.035em;
  line-height:1.15
}
h1 {
  font-size:clamp(2.3rem,4.5vw,4rem);
  margin-bottom:24px
}
h2 {
  font-size:clamp(1.65rem,2.6vw,2.4rem);
  margin-bottom:14px
}
h3 {
  font-size:1.18rem;
  line-height:1.4;
  font-weight:600
}
button,input,select {
  font:inherit
}
button,.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:26px;
  min-height:50px;
  padding:13px 23px;
  border:1px solid var(--brand);
  border-radius:9px;
  background:var(--brand);
  color:var(--brand-ink);
  font-size:.93rem;
  font-weight:600;
  text-decoration:none;
  cursor:pointer;
  transition:background .18s,transform .18s
}
.button:hover,button:hover {
  background:#183b2f;
  transform:translateY(-1px)
}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,.table-scroll:focus-visible {
  outline:3px solid #b47844;
  outline-offset:4px
}
.skip-link {
  position:absolute;
  left:-9999px
}
.skip-link:focus {
  left:16px;
  top:10px;
  z-index:10;
  background:var(--paper);
  padding:12px
}
.site-header {
  padding-block:25px;
  border-bottom:1px solid var(--line)
}
.site-nav {
  display:flex;
  align-items:center;
  gap:32px
}
.site-nav>a:not(.site-brand) {
  font-size:.9rem;
  text-decoration:none
}
.site-brand {
  margin-right:auto;
  display:flex;
  align-items:center;
  gap:11px;
  font-size:1.05rem;
  letter-spacing:-.035em;
  font-weight:700;
  text-decoration:none;
  white-space:nowrap
}
.brand-mark {
  flex:none
}
.lang-switch a {
  font-size:.78rem;
  text-decoration:none;
  display:block;
  border:1px solid var(--line);
  border-radius:7px;
  padding:6px 11px
}
.hero {
  display:grid;
  grid-template-columns:1.05fr 1fr;
  gap:50px;
  align-items:center;
  padding-block:64px 54px
}
.hero h1 {
  font-size:clamp(2.8rem,5.1vw,4.55rem);
  max-width:620px;
  margin-block:20px 24px
}
.hero h1 em {
  font-weight:400;
  color:var(--accent)
}
.eyebrow {
  text-transform:uppercase;
  letter-spacing:.15em;
  font-size:.66rem;
  font-weight:700;
  line-height:1.6;
  margin-bottom:12px;
  color:var(--brand)
}
.status-dot {
  display:inline-block;
  width:7px;
  height:7px;
  border-radius:50%;
  background:#50795c;
  margin-right:9px
}
.hero-sub {
  color:var(--muted);
  font-size:1rem;
  max-width:440px;
  line-height:1.8;
  margin-bottom:28px
}
.hero-footnote {
  font-size:.74rem;
  color:var(--muted);
  margin-block:15px 0
}
.hero-art {
  margin:0;
  position:relative;
  padding:0 0 20px
}
.hero-art img {
  width:100%;
  height:410px;
  object-fit:cover;
  border-radius:110px 110px 18px 18px
}
.hero-art figcaption,.detail-art figcaption {
  font-size:.65rem;
  color:var(--muted);
  margin-top:9px;
  text-align:right
}
.section-heading {
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:24px
}
.section-heading h2 {
  margin:0
}
.small-note {
  max-width:260px;
  font-size:.75rem;
  color:var(--muted);
  margin:0
}
.finder {
  scroll-margin-top:24px;
  padding:30px 32px;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:0 12px 30px #213e3505
}
.finder h2 {
  font-size:1.65rem
}
.finder .eyebrow {
  margin-bottom:5px
}
.search-form {
  display:grid;
  grid-template-columns:1fr 1fr 1fr auto;
  gap:16px;
  margin-top:24px;
  align-items:end
}
.field {
  display:grid;
  gap:8px;
  min-width:0
}
label {
  font-size:.73rem;
  font-weight:600;
  color:var(--ink)
}
input,select {
  width:100%;
  min-width:0;
  min-height:50px;
  padding:12px 13px;
  color:var(--ink);
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--paper);
  font-size:.9rem
}
input:hover,select:hover {
  border-color:#a3afa4
}
.featured {
  padding-block:65px
}
.text-link {
  font-size:.82rem;
  font-weight:600;
  white-space:nowrap;
  text-decoration:none
}
.text-link span {
  margin-left:16px
}
.section-intro {
  color:var(--muted);
  font-size:.88rem;
  max-width:650px;
  margin-block:16px 25px
}
.result-list {
  list-style:none;
  padding:0;
  display:grid;
  gap:18px
}
.program-grid {
  grid-template-columns:repeat(3,minmax(0,1fr));
  margin-top:28px
}
.program-card,.result-card {
  border:1px solid var(--line);
  background:var(--paper);
  border-radius:var(--radius);
  padding:24px;
  position:relative;
  transition:border-color .2s,box-shadow .2s,transform .2s;
  min-width:0
}
.program-card:hover,.result-card:hover {
  border-color:#9ba99b;
  box-shadow:0 10px 28px #213e3509;
  transform:translateY(-3px)
}
.card-top {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:25px
}
.program-monogram {
  display:grid;
  place-items:center;
  width:43px;
  height:43px;
  border-radius:12px;
  background:#e8eddf;
  color:var(--brand);
  font-family:'Playfair Display',Georgia,serif;
  font-size:1.5rem;
  flex:none
}
.program-card:nth-child(3n+2) .program-monogram {
  background:#f3e5da;
  color:#8e513b
}
.program-card:nth-child(3n) .program-monogram {
  background:#e4e9ed;
  color:#416275
}
.card-region {
  font-size:.67rem;
  letter-spacing:.05em;
  text-align:right;
  color:var(--muted)
}
.program-card h3 {
  margin-bottom:10px
}
.program-card h3 a,.card-title {
  text-decoration:none;
  color:var(--ink)
}
.program-card h3 a:after {
  content:'';
  position:absolute;
  inset:0;
  border-radius:var(--radius)
}
.program-card h3 a:focus-visible:after {
  outline:3px solid #b47844;
  outline-offset:4px
}
.meta {
  color:var(--muted);
  font-size:.8rem;
  line-height:1.7;
  margin:.2rem 0;
  overflow-wrap:anywhere
}
.program-card>.meta {
  min-height:44px
}
.card-bottom {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  border-top:1px solid #e9e9e2;
  padding-top:18px;
  margin-top:24px
}
.card-action {
  font-size:.73rem;
  font-weight:600
}
.card-action span {
  margin-left:8px
}
.card-deadline {
  font-size:.72rem;
  color:var(--muted);
  margin:12px 0 0
}
.badge {
  display:inline-block;
  padding:5px 10px;
  border-radius:6px;
  font-size:.66rem;
  line-height:1.4;
  background:#eceee7;
  color:var(--brand)
}
.badge.match {
  background:#e6efdf;
  color:#28543b
}
.badge.possible {
  background:#f4ebd6;
  color:#72591e
}
.badge.closed,.badge.not-eligible {
  background:#f3e6df;
  color:#874f3f
}
.trust-panel {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:70px;
  background:#e9eddf;
  border-radius:var(--radius);
  padding:42px;
  margin-bottom:64px
}
.trust-panel p:not(.eyebrow) {
  color:#516052;
  font-size:.9rem
}
.trust-panel h2 {
  max-width:390px
}
.site-footer {
  padding-block:32px 40px;
  border-top:1px solid var(--line);
  display:grid;
  grid-template-columns:1fr 1.3fr auto;
  gap:32px;
  color:var(--muted);
  font-size:.75rem;
  align-items:start
}
.site-footer p {
  margin:0
}
.footer-brand {
  font-size:1rem;
  font-weight:600;
  text-decoration:none;
  letter-spacing:-.025em
}
.footer-brand span {
  margin-left:12px
}
.page-heading {
  padding-block:48px 0;
  max-width:850px
}
.page-heading h1 {
  font-size:clamp(2.3rem,4vw,3.6rem)
}
.search-form-inline {
  padding:26px;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--radius);
  grid-template-columns:repeat(4,minmax(0,1fr)) auto;
  margin-block:28px 32px
}
#results {
  grid-template-columns:repeat(2,minmax(0,1fr));
  margin-bottom:48px
}
.result-card h3 {
  margin-bottom:12px
}
.match-status {
  margin-bottom:0
}
.empty {
  padding:28px;
  border:1px dashed #b9c3b6;
  background:var(--paper);
  border-radius:12px;
  color:var(--muted)
}
.hidden {
  display:none!important
}
.breadcrumbs {
  display:flex;
  align-items:center;
  gap:14px;
  color:var(--muted);
  font-size:.76rem;
  margin-block:32px
}
.breadcrumbs a {
  text-decoration:none
}
.detail-hero {
  display:grid;
  grid-template-columns:1.7fr 1fr;
  gap:50px;
  align-items:center;
  padding:20px 0 40px
}
.detail h1 {
  font-size:clamp(2.2rem,3.8vw,3.6rem);
  overflow-wrap:anywhere
}
.detail-provider {
  font-size:.95rem;
  color:var(--muted);
  margin-bottom:28px
}
.detail-art {
  margin:0
}
.detail-art img {
  width:100%;
  height:270px;
  object-fit:cover;
  border-radius:80px 80px 12px 12px
}
.verification-strip {
  padding:16px 20px;
  background:#e9eddf;
  border-radius:10px;
  font-size:.77rem;
  margin-bottom:26px
}
.detail>aside {
  padding-inline:4px;
  margin-bottom:24px;
  font-size:.72rem
}
.detail-sections {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:22px;
  margin-block:28px 40px;
  align-items:start
}
.detail-sections>section {
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:30px;
  min-width:0
}
.detail-sections>section>h2 {
  font-size:1.6rem
}
.detail-sections .eligibility-section,.detail-sections .evidence-section {
  grid-column:1/-1
}
.detail-sections p,.detail-sections li,.detail-sections dl {
  font-size:.87rem;
  color:#4c5d52
}
.detail-sections li {
  margin-bottom:10px
}
.facts {
  padding-left:20px
}
.evidence {
  list-style:none;
  padding:0;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0 28px
}
.evidence li {
  border-bottom:1px solid var(--line);
  padding-block:12px;
  font-size:.77rem
}
.evidence a {
  white-space:nowrap
}
dl {
  display:grid;
  grid-template-columns:1fr;
  gap:5px
}
dt {
  font-size:.7rem;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--muted);
  margin-top:14px
}
dd {
  margin:0;
  overflow-wrap:anywhere
}
table {
  width:100%;
  border-collapse:collapse;
  font-size:.8rem
}
th,td {
  border-bottom:1px solid var(--line);
  padding:10px;
  text-align:left
}
main>h1 {
  margin-top:48px
}
main>section:not([class]) {
  max-width:800px;
  margin-block:32px
}
main>section:not([class]) h2 {
  font-size:1.7rem
}
main>section:not([class]) p {
  color:var(--muted)
}
@media(min-width:900px) {
  .program-card h3 {
    min-height:66px
  }
}
@media(max-width:1050px) {
  main,.site-header,.site-footer {
    padding-inline:28px
  }
  .hero {
    gap:30px
  }
  .hero-art img {
    height:360px
  }
  .search-form-inline {
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .search-form-inline button {
    grid-column:1/-1
  }
  .program-grid {
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .site-footer {
    grid-template-columns:1fr 1fr
  }
  .hero h1 {
    font-size:3.3rem
  }
  .finder .search-form {
    grid-template-columns:repeat(3,minmax(0,1fr))
  }
  .finder button {
    grid-column:1/-1
  }
}
@media(max-width:650px) {
  main,.site-header,.site-footer {
    padding-inline:20px
  }
  .site-header {
    padding-block:18px
  }
  .site-nav {
    gap:16px;
    flex-wrap:wrap
  }
  .site-brand {
    font-size:.95rem
  }
  .brand-mark {
    width:30px;
    height:30px
  }
  .site-nav>a:not(.site-brand) {
    font-size:.78rem
  }
  .hero {
    grid-template-columns:1fr;
    gap:30px;
    padding-block:38px 28px
  }
  .hero h1 {
    font-size:3.05rem;
    max-width:500px
  }
  .hero-sub {
    font-size:.93rem
  }
  .hero-art img {
    height:250px;
    border-radius:65px 65px 14px 14px
  }
  .hero-art {
    padding:0
  }
  .hero-art figcaption {
    font-size:.6rem
  }
  .finder {
    padding:24px 20px
  }
  .section-heading {
    align-items:start;
    flex-direction:column;
    gap:12px
  }
  .finder .search-form,.search-form-inline {
    grid-template-columns:1fr
  }
  .finder button,.search-form-inline button {
    grid-column:auto
  }
  .small-note {
    max-width:none
  }
  .featured {
    padding-block:40px
  }
  .program-grid,#results {
    grid-template-columns:1fr
  }
  .program-card {
    padding:23px
  }
  .card-top {
    margin-bottom:18px
  }
  .program-card>.meta {
    min-height:0
  }
  .trust-panel {
    grid-template-columns:1fr;
    gap:18px;
    padding:28px;
    margin-bottom:40px
  }
  .trust-panel h2 {
    margin-bottom:0
  }
  .site-footer {
    grid-template-columns:1fr;
    gap:15px
  }
  .detail-hero {
    grid-template-columns:1fr;
    gap:25px;
    padding-top:8px
  }
  .detail-art img {
    height:170px;
    border-radius:45px 45px 10px 10px
  }
  .detail h1 {
    font-size:2.45rem
  }
  .detail-sections {
    grid-template-columns:1fr;
    gap:16px
  }
  .detail-sections>section {
    padding:24px
  }
  .evidence {
    grid-template-columns:1fr
  }
  .verification-strip span:last-child {
    display:block;
    margin-top:4px
  }
  .page-heading {
    padding-top:35px
  }
  .search-form-inline {
    padding:22px
  }
  .breadcrumbs {
    margin-block:25px
  }
  .text-link {
    white-space:normal
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  *,*:before,*:after {
    transition:none!important;
    animation:none!important
  }
}
@media(max-width:650px) {
  .site-nav {
    display:grid;
    grid-template-columns:1fr auto;
    gap:12px 24px
  }
  .site-brand {
    grid-column:1;
    grid-row:1;
    margin:0
  }
  .lang-switch {
    grid-column:2;
    grid-row:1
  }
  .site-nav>a:not(.site-brand) {
    grid-row:2
  }
  .site-nav>a:nth-child(3) {
    justify-self:end
  }
}
@media(min-width:651px) and (max-width:800px) {
  .hero {
    grid-template-columns:1fr
  }
  .hero-art img {
    height:310px
  }
  .hero h1 {
    max-width:650px
  }
}

.detail-sections .programme-guide { grid-column:1 / -1; }
.guide-section { border-top:1px solid var(--line); padding-block:18px; }
.guide-section:first-of-type { margin-top:24px; }
.guide-section summary { cursor:pointer; font-weight:600; font-size:1rem; padding:6px 0; line-height:1.5; }
.guide-section p { max-width:85ch; margin:16px 0 0; overflow-wrap:anywhere; }
.guide-links { padding-left:20px; overflow-wrap:anywhere; }
.guide-source { padding-top:20px; border-top:1px solid var(--line); }

.open-only { grid-column:1 / -1; display:flex; align-items:center; gap:10px; min-height:44px; cursor:pointer; font-size:.85rem; }
.open-only input { width:18px; min-height:18px; height:18px; accent-color:var(--brand); flex:none; }

.overview-directory { margin-top:28px; padding:20px; border-top:1px solid var(--line); }
.overview-directory summary { cursor:pointer; font-size:.9rem; font-weight:600; }
.overview-directory p { margin-top:16px; }

.call-state { padding:20px 24px; border:1px solid #dbb6a1; background:#f7eae1; border-radius:12px; margin-bottom:24px; font-size:.88rem; }
.call-state p { margin:8px 0 0; }
.detail-sections .source-credits { grid-column:1 / -1; }
.source-credits summary { cursor:pointer; font-weight:600; }

.match-reasons { padding-left:18px; font-size:.8rem; color:var(--muted); }
.match-reasons li { margin-top:8px; }

.save-program { display:block; margin-block:16px; font-size:.8rem; }
.workspace-actions { display:flex; flex-wrap:wrap; gap:12px; margin-block:24px; }
#workspace-items { margin-block:32px; }
#workspace-items h2 { font-size:1.7rem; }
#workspace-items form { margin-top:20px; display:grid; gap:10px; }
.table-scroll { overflow-x:auto; margin-block:24px 48px; }
.table-scroll table { min-width:640px; }
.table-scroll thead th { vertical-align:top; }
.table-scroll tr > :first-child { position:sticky; left:0; background:var(--bg); min-width:110px; }
.comparison-scroll-hint { margin-top:16px; }
@media(max-width:650px){.site-nav{grid-template-columns:repeat(3,minmax(0,1fr))}.site-brand{grid-column:1/3}.lang-switch{grid-column:3;justify-self:end}.site-nav>a:nth-child(2){grid-column:1}.site-nav>a:nth-child(3){grid-column:2;justify-self:center}.site-nav>a:nth-child(4){grid-column:3;justify-self:end}}
