/* Catalogue-specific layout; load after tamis-theme.css. */
body { margin:0; font-size:15px; }
a { color:var(--tamis-link); }
a:hover { text-decoration:underline; }
/* Public catalogue panels use the lighter secondary surface in dark mode. */
:root.pf-v6-theme-dark { --pf-t--global--background--color--secondary--default:var(--tamis-soft); }
#main:focus { outline:none; }
.wrap { max-width:1240px; margin:0 auto; padding-inline:32px; }
.masthead { background:var(--tamis-surface); color:var(--tamis-text); }
.header-inner { display:flex; align-items:center; min-height:96px; gap:32px; }
.brand { display:flex; align-items:center; gap:20px; margin-right:auto; }
.brand img { width:164px; height:66px; object-fit:contain; }
.brand span { border-left:1px solid #d7daee; padding-left:20px; font-size:13px; color:var(--tamis-muted); }
.masthead a,.masthead .pf-v6-c-button { color:var(--tamis-text); text-decoration:none; }
.masthead nav a { font-weight:600; padding-block:14px; border-bottom:3px solid transparent; }
.masthead nav a:hover { text-decoration:none; }
.masthead .theme-toggle { width:44px; height:44px; padding:10px; border:1px solid #d7daee; border-radius:8px; }
.masthead .theme-toggle:hover { background:var(--tamis-bg); }
.masthead nav { display:flex; gap:28px; font-size:13px; }
.masthead nav [aria-current=page] { border-bottom-color:var(--tamis-magenta); }
.hero { background:var(--tamis-navy); color:#fff; padding-block:32px; border-bottom:3px solid var(--tamis-magenta); }
.hero .eyebrow { color:#fff; display:flex; align-items:center; gap:10px; font-family:ui-monospace,monospace; }
.hero .eyebrow::before { content:""; width:8px; height:8px; border-radius:50%; background:var(--tamis-magenta); flex-shrink:0; }
.hero .intro,.hero .stats dt,.hero .refresh { color:#c9cce6; }
.hero .stats>div { border-left:1px solid #9fa6d6; padding-left:20px; }
.hero-inner { display:flex; align-items:center; justify-content:space-between; gap:40px; }
.eyebrow { text-transform:uppercase; letter-spacing:.14em; font-size:11px; font-weight:700; color:var(--tamis-muted); margin-bottom:12px; }
h1 { font-size:clamp(30px,4vw,46px); line-height:1.15; font-weight:650; letter-spacing:-.035em; margin:0 0 20px; }
h2 { font-size:23px; font-weight:600; }
.intro { font-size:17px; max-width:620px; line-height:1.6; color:var(--tamis-muted); }
.stats { display:flex; gap:36px; white-space:nowrap; }
.stats>div { display:flex; flex-direction:column-reverse; gap:4px; }
.stats dt { color:var(--tamis-muted); font-size:12px; }
.stats dd { font-size:38px; line-height:1.1; font-weight:600; letter-spacing:-.04em; }
.hero-stats { display:flex; align-items:flex-end; gap:24px; flex-shrink:0; }
.refresh { margin:0; padding-left:24px; border-left:1px solid #9fa6d6; font-size:12px; line-height:1.6; color:var(--tamis-muted); }
.refresh time { color:#fff; white-space:nowrap; }
.hero .stats dt { line-height:1.6; }
@media(max-width:1100px) { .hero-inner { flex-wrap:wrap; } }
@media(max-width:650px) { .hero-stats { flex-wrap:wrap; margin-top:24px; } .hero-stats .stats { margin-top:0; } }
.status { padding:0; }
.sample-banner { background:#eae8f5; color:#202137; border-top:1px solid #d7daee; font-size:12px; padding-block:10px; }
.sample-banner .wrap { display:flex; gap:14px; flex-wrap:wrap; }
.pf-v6-theme-dark .sample-banner { background:var(--tamis-soft); color:var(--tamis-text); border-color:var(--tamis-line); }
.status>.pf-v6-c-alert,.status>.muted { max-width:1176px; margin:16px auto; }
.status:empty { display:none; }
.status>*+* { margin-top:12px; }
.content { padding-top:30px; padding-bottom:48px; }
.organisations { padding-bottom:24px; margin-bottom:24px; border-bottom:1px solid var(--tamis-line); }
summary { cursor:pointer; font-weight:600; font-size:15px; }
.organisation-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; margin-top:18px; }
.organisation { display:flex; align-items:center; gap:14px; background:var(--tamis-surface); padding:16px; border:1px solid #9497b4; border-radius:8px; min-width:0; }
.organisation,.organisation:hover { color:var(--tamis-text); text-decoration:none; }
.organisation:hover { border-color:var(--tamis-magenta); }
.organisation img { width:44px; height:40px; object-fit:contain; flex-shrink:0; }
.organisation img { background:white; border-radius:3px; }
.organisation strong { font-size:13px; line-height:1.3; display:block; }
.section-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.section-intro { margin-top:5px; margin-bottom:22px; color:var(--tamis-muted); }
.offer-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.pf-v6-c-card { background:var(--tamis-surface); color:var(--tamis-text); }
.offer-card { border:1px solid #8d91b2; box-shadow:none; }
.offer-card:hover { border-color:var(--tamis-link); box-shadow:0 4px 16px #16173f12; }
.provider { font-size:13px; color:var(--tamis-muted); font-weight:600; }
.offer-card .pf-v6-c-card__title-text { font-size:20px; line-height:1.35; }
.excerpt { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; font-size:14px; line-height:1.6; }
.tags { display:flex; gap:6px; flex-wrap:wrap; }
.tags .pf-v6-c-label { max-width:100%; }
.explore { display:flex; justify-content:space-between; gap:10px; margin-top:20px; font-size:14px; font-weight:600; }
.muted { color:var(--tamis-muted); font-size:13px; }
.callout { margin-top:40px; padding:28px; border:1px solid #d7daee; border-left:3px solid var(--tamis-magenta); border-radius:8px; background:var(--tamis-surface); display:flex; justify-content:space-between; align-items:center; gap:24px; }
.callout p { font-size:14px; margin-top:8px; color:var(--tamis-muted); }
.callout .secondary { background:transparent; color:var(--tamis-link); border-color:var(--tamis-link); flex-shrink:0; font-weight:400; text-decoration:none; }
.callout .secondary:hover { background:var(--tamis-bg); color:var(--tamis-link); text-decoration:underline; }
.catalogue-growth { margin-top:24px; margin-bottom:24px; font-size:14px; line-height:1.6; color:var(--tamis-muted); }
.catalogue-growth a { color:inherit; }
.pf-v6-theme-dark .callout { border-color:var(--tamis-line); border-left-color:var(--tamis-magenta); }
.action-link { display:inline-block; background:var(--tamis-navy); border:1px solid #9fa6d6; color:white; border-radius:6px; padding:12px 18px; font-weight:600; font-size:13px; white-space:normal; }
.action-link:hover { color:white; }
.breadcrumb { font-size:12px; margin-bottom:30px; }
.detail-heading { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:32px; }
.byline { display:flex; align-items:center; flex-wrap:wrap; gap:16px; }
.detail-grid { display:grid; grid-template-columns:minmax(0,2fr) minmax(0,1fr); gap:24px; margin-top:24px; }
.detail-main { display:grid; gap:20px; }
.prose { white-space:pre-line; line-height:1.75; }
.specs>div { display:grid; grid-template-columns:160px minmax(0,1fr); padding:12px 0; border-bottom:1px solid #8589a333; gap:16px; }
.specs dt { font-size:13px; font-weight:600; }
.specs dd { font-size:13px; }
code { font-size:12px; }
.specs dd,.breadcrumb,.provider,.organisation,.prose,h1 { overflow-wrap:anywhere; }
.access-card { border-top:3px solid var(--tamis-magenta); }
.access-card ol { padding-left:22px; margin:22px 0; }
.access-card li { margin:12px 0; }
.related-title { margin:36px 0 20px; }
footer { background:var(--tamis-navy); color:#c9cce6; border-top:3px solid var(--tamis-magenta); padding:26px 0 28px; font-size:12px; }
footer a { color:inherit; }
footer a:hover { color:#fff; }
.footer-top,.funding { display:flex; gap:32px; align-items:center; }
.footer-top>div { margin-right:auto; min-width:0; }
.footer-top>a,.footer-top>span { flex-shrink:0; }
.footer-top strong { color:#fff; letter-spacing:.15em; }
.footer-top p { margin-top:8px; line-height:1.6; }
.funding { border-top:1px solid #555b88; padding-top:20px; margin-top:20px; }
.funding img { width:225px; height:auto; max-width:100%; flex-shrink:0; object-fit:contain; }
.funding p { max-width:55ch; line-height:1.6; margin:0; }
.skip { position:absolute; left:12px; top:-100px; z-index:10; background:white; padding:12px; color:#16173f; }
.skip:focus { top:8px; }
.loading { min-height:60vh; display:flex; align-items:center; justify-content:center; gap:20px; }
.actions,.pagination { display:flex; gap:24px; align-items:center; margin-top:28px; }
@media(max-width:1000px) { .organisation-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .offer-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .brand span { display:none; } .hero-inner { gap:24px; } }
@media(max-width:650px) { .wrap { padding-inline:20px; } .header-inner { flex-wrap:wrap; gap:12px; padding-block:16px; } .brand img { width:140px; height:48px; } .masthead nav { order:3; width:100%; gap:24px; padding-top:8px; } .hero { padding-block:28px; } .hero-inner { display:block; }  .stats { margin-top:24px; gap:24px; } .hero .stats>div { padding-left:14px; } .sample-banner .wrap { gap:4px; }  .refresh { text-align:left; } .organisation-grid,.offer-grid,.detail-grid { grid-template-columns:minmax(0,1fr); } .organisation { padding:12px; } .detail-heading,.callout { display:block; } .detail-heading .action-link,.callout .action-link { margin-top:20px; } .specs>div { grid-template-columns:minmax(0,1fr); gap:5px; } .footer-top,.funding { flex-direction:column; align-items:flex-start; gap:20px; } .section-heading { align-items:baseline; } }
.sr-only { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* Tamis typography sizes. */
.hero h1 { font-size:clamp(28px,3.2vw,42px); }
.section-heading h2,.callout h2,.detail-grid h2 { font-size:21px; }
.detail-heading h1 { font-size:clamp(29px,4vw,42px); }
.section-intro { font-size:13px; }
.access-card p { font-size:14px; }
@media(max-width:600px) {
  .hero h1 { font-size:28px; }
  .hero .eyebrow { font-size:10px; }
  .intro { font-size:14px; }
  .stats dd { font-size:24px; }
  .sample-banner { font-size:11px; }
  .detail-heading h1 { font-size:30px; }
  .catalogue-growth { font-size:13px; }
}

/* Tamis dark palette. */
.pf-v6-theme-dark .organisation,
.pf-v6-theme-dark .masthead .theme-toggle,
.pf-v6-theme-dark .brand span,
.pf-v6-theme-dark .specs>div { border-color:var(--tamis-line); }
.pf-v6-theme-dark .organisation:hover { border-color:var(--tamis-magenta); }
.pf-v6-theme-dark .callout .secondary { border-color:var(--tamis-line); }
.pf-v6-theme-dark .callout .secondary:hover { background:var(--tamis-soft); }
.pf-v6-theme-dark :focus-visible { outline-color:#9fa6d6; }
.pf-v6-theme-dark .pf-v6-c-label {
  --pf-v6-c-label--BackgroundColor:var(--tamis-soft);
  --pf-v6-c-label--Color:var(--tamis-text);
  --pf-v6-c-label--BorderColor:var(--tamis-line);
  background:var(--tamis-soft);
  color:var(--tamis-text);
}
.pf-v6-theme-dark .pf-v6-c-label__content { color:inherit; }
.pf-v6-theme-dark .pf-v6-c-label::before { border-color:var(--tamis-line); }

/* Participant and access pages share the public catalogue theme. */
.participant-heading { display:flex; align-items:center; gap:22px; min-width:0; }
.participant-heading img { width:76px; height:76px; object-fit:contain; background:white; border-radius:8px; padding:8px; flex-shrink:0; }
.participant-heading h1 { overflow-wrap:anywhere; }
.access-intro { max-width:780px; margin-bottom:28px; }
.offering-context { display:flex; align-items:center; flex-wrap:wrap; gap:12px; background:var(--tamis-surface); border-left:3px solid var(--tamis-magenta); padding:14px 20px; margin-bottom:26px; overflow-wrap:anywhere; }
.offering-context .eyebrow { margin:0; }
.access-steps { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); list-style:none; padding:0; gap:24px; margin:30px 0; }
.access-steps li { border-top:1px solid #9fa6d6; padding-top:20px; }
.access-steps h2 { font-size:23px; margin-bottom:14px; }
.access-steps p { color:var(--tamis-muted); font-size:14px; line-height:1.6; }
.step-number { display:block; color:var(--tamis-magenta); font:24px ui-monospace,monospace; margin-bottom:18px; }
.contact-note { margin-top:16px; }
@media(max-width:650px) { .access-steps { grid-template-columns:minmax(0,1fr); } .participant-heading { gap:16px; } .participant-heading img { width:54px; height:54px; } }

/* Public discovery controls use the same palette as the EDC cards. */
.discovery { margin: 24px 0; padding: 24px; border: 1px solid var(--tamis-line); border-radius: 8px; background: var(--tamis-surface); }
.discovery-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) minmax(160px, 220px); gap: 24px; }
.discovery label { display: grid; gap: 8px; }
.discovery input[type="search"], .discovery select { width: 100%; min-width: 0; padding: 10px 12px; border: 1px solid var(--tamis-line); border-radius: 4px; background: var(--tamis-bg); color: var(--tamis-text); font: inherit; }
.discovery-filters { margin-top: 20px; }
.discovery-filters summary { cursor: pointer; font-weight: 600; }
.facet-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin-top: 20px; }
.facet-grid fieldset { min-width: 0; border: 0; padding: 0; margin: 0; }
.facet-grid legend { font-weight: 600; margin-bottom: 12px; }
.discovery .facet-choice { display: flex; align-items: baseline; gap: 8px; margin: 10px 0; overflow-wrap: anywhere; }
.facet-choice input { accent-color: #e400ba; }
.facet-choice:has(input:disabled) { opacity: .6; }
.clear-filters { display: inline-block; margin-top: 16px; }
.facet-grid button { color: var(--tamis-link); background: transparent; border: 1px solid var(--tamis-line); padding: 6px 12px; cursor: pointer; }
@media(max-width: 600px) { .discovery { padding: 16px; } .discovery-toolbar, .facet-grid { grid-template-columns: 1fr; } }

/* Keep native EDC preview dialogs and their close control inside the viewport. */
.pf-v6-c-backdrop .pf-v6-c-modal-box {
  max-width: calc(100vw - 32px);
  max-height: calc(100dvh - 32px);
}

/* Catalogue controls and page-specific refinements. */
.static-controls{display:flex;gap:20px;align-items:end;flex-wrap:wrap;margin:24px 0}.static-controls label{display:grid;gap:8px;flex:1;min-width:180px}.static-controls input,.static-controls select{width:100%;padding:12px;background:var(--tamis-surface);color:var(--tamis-text);border:1px solid var(--tamis-control-border);border-radius:6px;font:inherit}.static-controls button{padding:12px}.static-note{margin:16px 0 24px;color:var(--tamis-muted);font-size:13px}.static-detail{max-width:850px}.static-detail h1{overflow-wrap:anywhere}.static-detail .prose{margin:24px 0}.static-detail dl{margin:24px 0}.static-detail dt{font-weight:600;margin-top:14px}.static-detail dd{overflow-wrap:anywhere;margin-top:4px}.static-detail .edc-offer-image{margin:20px 0;height:220px}.theme-toggle{min-width:44px}.static-actions{display:flex;gap:16px;flex-wrap:wrap;margin:24px 0}.static-empty{padding:30px;border:1px solid var(--tamis-line);border-radius:10px;background:var(--tamis-surface)}@media(max-width:600px){.static-controls{display:grid}.static-controls label{min-width:0}.header-inner{flex-wrap:wrap}.brand span{display:none}}

.static-controls input::placeholder{color:var(--tamis-muted);opacity:1}

.section-heading { align-items: baseline; flex-wrap: wrap; }
.catalogue-tagline { margin: 0; margin-left: auto; color: var(--tamis-muted); font-size: 13px; text-align: right; }
.offerings-count { margin: 24px 0 20px; }
@media (max-width:650px) {
  .catalogue-tagline { flex-basis: 100%; margin-left: 0; text-align: left; }
}

/* Match the secondary action in the catalogue's closing callout. */
.static-controls .pf-v6-c-button.pf-m-secondary {
  display: inline-block;
  padding: 12px 18px;
  border: 1px solid var(--tamis-link);
  border-radius: 6px;
  background: transparent;
  color: var(--tamis-link);
  font-family: inherit;
  font-size: 13px;
  font-weight: 400;
  line-height: inherit;
  white-space: normal;
  text-decoration: none;
  box-shadow: none;
}
.static-controls .pf-v6-c-button.pf-m-secondary::after { border: 0; }
.static-controls .pf-v6-c-button.pf-m-secondary:hover {
  background: var(--tamis-bg);
  color: var(--tamis-link);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.static-controls .pf-v6-c-button.pf-m-secondary:focus-visible {
  outline: 3px solid #737bb8;
  outline-offset: 4px;
}
.pf-v6-theme-dark .static-controls .pf-v6-c-button.pf-m-secondary {
  border-color: var(--tamis-line);
}
.pf-v6-theme-dark .static-controls .pf-v6-c-button.pf-m-secondary:hover {
  background: var(--tamis-soft);
}
.pf-v6-theme-dark .static-controls .pf-v6-c-button.pf-m-secondary:focus-visible {
  outline-color: #9fa6d6;
}
