/* Campus catalog typography and component values; scoped to the family shortcodes. */
@font-face { font-family:StepkeNexa; src:url('fonts/Nexa-Light.woff2') format('woff2'); font-style:normal; font-weight:200; font-display:swap; }
@font-face { font-family:StepkeNexa; src:url('fonts/Nexa-Regular.woff2') format('woff2'); font-style:normal; font-weight:400; font-display:swap; }
@font-face { font-family:StepkeNexa; src:url('fonts/Nexa-Bold.woff2') format('woff2'); font-style:normal; font-weight:700; font-display:swap; }
@font-face { font-family:StepkeNexa; src:url('fonts/Nexa-ExtraBold.woff2') format('woff2'); font-style:normal; font-weight:800; font-display:swap; }
@font-face { font-family:StepkeNexa; src:url('fonts/Nexa-Heavy.woff2') format('woff2'); font-style:normal; font-weight:900; font-display:swap; }
.skfa {
    --skfa-green:#006f62; --skfa-pink:#e63888; --skfa-text:#252535;
    --skfa-muted:#56586f; --skfa-icon:#858799; --skfa-border:#dde1ea; --skfa-soft:#eef7f1;
    display:block; box-sizing:border-box; width:100%; max-width:1280px; margin:0 auto;
    padding:40px 48px 32px; font:400 16px/24px StepkeNexa,Arial,sans-serif;
    color:var(--skfa-text); background:#fff; -webkit-font-smoothing:auto; -moz-osx-font-smoothing:auto; container:stepke-fa / inline-size; scroll-margin-top:100px;
}
.skfa * { box-sizing:border-box; }
.skfa :is(h2,h3,p,fieldset,legend) { margin:0; }
.skfa :is(h2,h3,p,a,button,input,select,label,legend) { font-family:StepkeNexa,Arial,sans-serif; letter-spacing:normal; text-transform:none; }
.skfa :is(button,input,select) { font-family:StepkeNexa,Arial,sans-serif!important; }
.skfa :is(a,button,input,select,summary):focus-visible { outline:2px solid var(--skfa-pink); outline-offset:3px; }
.skfa [hidden] { display:none!important; }
.skfa .skfa-catalog { display:grid; grid-template-columns:248px minmax(0,1fr); gap:80px; }
.skfa .skfa-filters,.skfa .skfa-results { min-width:0; }
.skfa .skfa-filters summary { margin-bottom:12px; font-size:18px; font-weight:700; cursor:pointer; }
.skfa .skfa-filters fieldset { min-width:0; padding:0; border:0; margin:0 0 32px; }
.skfa .skfa-filters legend { float:none; width:auto; padding:0; margin:4px 0 16px; font-size:20px; font-weight:700; line-height:25px; }
.skfa .skfa-check { display:flex; align-items:flex-start; gap:8px; min-height:40px; margin:0; padding:6px 0; font-size:14px; font-weight:700; line-height:21px; cursor:pointer; }
.skfa .skfa-check input { appearance:none; flex-shrink:0; width:20px; height:20px; margin:1px 0 0; border:1px solid #b0b8c8; border-radius:0; background:#fff; cursor:pointer; }
.skfa .skfa-check input:checked { background:var(--skfa-pink); border-color:var(--skfa-pink); background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='m4 10 4 4 8-8' fill='none' stroke='white' stroke-width='2'/%3E%3C/svg%3E"); }
.skfa .skfa-reset { display:flex; align-items:center; gap:12px; margin-top:28px; padding:16px 24px; border-top:1px solid var(--skfa-border); color:#777; text-decoration:none; font-size:14px; font-weight:700; line-height:21px; }
.skfa .skfa-reset span { text-decoration:underline; text-underline-offset:3px; }
.skfa .skfa-reset svg { flex-shrink:0; }
.skfa .skfa-search { display:flex; gap:0; margin:0 0 24px; border:1px solid var(--skfa-border); border-radius:8px; }
.skfa .skfa-search input { flex:1; min-width:0; width:100%; min-height:40px; margin:0; padding:8px 12px; border:0; border-radius:8px 0 0 8px; background:transparent; font-size:14px; font-weight:400; line-height:24px; }
.skfa .skfa-search button { display:flex; align-items:center; justify-content:center; min-width:40px; min-height:40px; padding:8px; border:0; border-radius:0 8px 8px 0; background:transparent; color:var(--skfa-muted); }
.skfa .skfa-search button:hover { color:var(--skfa-green); background:var(--skfa-soft); }
.skfa .skfa-toolbar { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:32px; }
.skfa .skfa-toolbar .skfa-title { color:var(--skfa-green); font-size:36px; font-weight:800; line-height:45px; }
.skfa .skfa-toolbar p { margin:0; color:var(--skfa-muted); font-size:14px; font-weight:200; line-height:21px; }
.skfa .skfa-sort-control { position:relative; display:inline-flex; align-items:center; flex-shrink:0; width:170px; height:52px; padding:8px 50px 8px 30px; border:2px solid var(--skfa-pink); border-radius:9999px; background:#fff; color:var(--skfa-pink); font-size:16px; font-weight:900; line-height:32px; }
.skfa .skfa-sort-control>span { white-space:nowrap; }
.skfa .skfa-sort-control>svg { position:absolute; right:32px; top:50%; width:16px; height:16px; transform:translateY(-50%); pointer-events:none; }
/* A transparent native select retains keyboard/phone accessibility; its face is the Campus pill. */
.skfa .skfa-sort-control select { position:absolute; inset:0; z-index:1; width:100%; height:100%; max-width:none; margin:0; padding:0; border:0!important; opacity:0; appearance:none; cursor:pointer; }
.skfa .skfa-sort-control option { color:var(--skfa-text); background:#fff; font-size:14px; font-weight:400; }
.skfa .skfa-sort-control:hover { background:#fcebf3; }
.skfa .skfa-sort-control:focus-within { outline:1px solid var(--skfa-pink); outline-offset:2px; }
.skfa .skfa-sort-control:has(select:open)>svg { transform:translateY(-50%) rotate(180deg); }
.skfa .skfa-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:stretch; gap:32px; }
.skfa .skfa-card { display:flex; flex-direction:column; position:relative; min-width:0; overflow:hidden; border:1px solid var(--skfa-border); border-radius:24px; background:#fff; box-shadow:0 5px 15px -3px #00000026,0 4px 8px #0000001a; }
.skfa .skfa-card:hover { box-shadow:0 10px 20px -5px #0003,0 5px 10px #0002; }
.skfa .skfa-card:focus-within { border-color:var(--skfa-pink); }
.skfa .skfa-card-link { position:absolute; inset:0; z-index:1; cursor:pointer; }
.skfa .skfa-card h3 a,.skfa .skfa-card-footer a { position:relative; z-index:2; }
.skfa .skfa-card-visual { position:relative; }
.skfa .skfa-card-image { position:relative; display:inline-block; width:100%; aspect-ratio:1/1; overflow:hidden; text-decoration:none; background:var(--skfa-soft); vertical-align:baseline; }
.skfa .skfa-card-image img { position:absolute; inset:0; display:block; width:100%; height:100%; margin:0; border-radius:0; object-fit:cover; }
.skfa .skfa-placeholder { display:flex; align-items:center; justify-content:center; width:100%; height:100%; padding:24px; color:var(--skfa-green); font-size:24px; line-height:30px; overflow-wrap:anywhere; }
.skfa .skfa-card-badges { position:absolute; bottom:16px; left:12px; right:12px; display:flex; flex-wrap:wrap; gap:8px; pointer-events:none; }
.skfa .skfa-badge { display:inline-block; max-width:100%; overflow-wrap:anywhere; padding:4px 8px; border-radius:9999px; background:#66caf2; color:var(--skfa-text); font-size:14px; font-weight:200; line-height:14px; }
.skfa .skfa-card-content { display:flex; flex:1; flex-direction:column; gap:4px; padding:16px 16px 20px; }
.skfa .skfa-card h3 { font-size:20px; font-weight:700; line-height:23px; color:var(--skfa-text); }
.skfa .skfa-card h3 a { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden; overflow-wrap:anywhere; hyphens:auto; padding-bottom:4px; margin-bottom:-4px; color:inherit; font-size:20px; font-weight:700; line-height:23px; text-decoration:none; }
.skfa .skfa-subtitle { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; color:var(--skfa-muted); font-size:14px; font-weight:200; line-height:21px; }
.skfa .skfa-card-metadata { display:flex; flex-direction:column; gap:4px; color:var(--skfa-text); font-size:14px; font-weight:200; line-height:21px; }
.skfa .skfa-card-meta { display:flex; align-items:flex-start; gap:8px; }
.skfa .skfa-card-meta>svg { flex-shrink:0; width:16px; height:16px; margin-top:2px; color:var(--skfa-icon); }
.skfa .skfa-extra>svg { width:14px; height:14px; }
.skfa .skfa-extra strong { font-size:14px; font-weight:700; line-height:21px; }
.skfa .skfa-status { color:#79500d; font-size:14px; font-weight:400; line-height:21px; }
.skfa .skfa-card-footer { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:auto; margin-bottom:-4px; padding-top:16px; }
.skfa .skfa-card-footer strong { font-size:16px; font-weight:700; line-height:24px; }
.skfa .skfa-button { display:inline-flex; align-items:center; justify-content:center; height:36px; padding:0 14px; border:0; border-radius:9999px; color:#fff; background:var(--skfa-pink); font-size:14px; font-weight:400; line-height:21px; text-decoration:none; }
.skfa .skfa-button:hover { color:#fff; background:#c92573; }
.skfa .skfa-empty { grid-column:1/-1; padding:24px; border-radius:18px; background:var(--skfa-soft); }
.skfa .skfa-empty h3 { margin-bottom:12px; font-size:20px; }
.skfa .skfa-empty a { color:var(--skfa-green); text-decoration:underline; }
.skfa .skfa-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.skfa .skfa-focus-visible:focus { position:static; width:auto; height:auto; clip:auto; white-space:normal; margin:4px; padding:8px; }
/* Retain the theme detail layout, including descriptions wrapping around the photo. */
.stepke-fa-wordpress .heading-title-group h1.title { font-family:StepkeNexa,Arial,sans-serif; font-weight:900; }
.stepke-fa-wordpress img.imgrd { width:150px; height:150px; object-fit:cover; }
/* Keep list markers outside the floated photo and give categories a real gap
   below both the photo and the description. Clearance can consume top margins. */
.stepke-fa-wordpress .va-body>:is(ul,ol) { display:flow-root; padding-inline-start:24px; }
.stepke-fa-wordpress .va-body>:nth-last-child(2) { margin-bottom:0; }
.stepke-fa-wordpress .va-body .categories { clear:both; margin-top:0; padding-top:24px; }
@media(min-width:1024px) { .skfa .skfa-filters summary { display:none; } }
@media(max-width:1279px) {
    .skfa { padding:32px; }
    .skfa .skfa-catalog { gap:24px; }
    .skfa .skfa-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:1023px) {
    .skfa .skfa-catalog { display:flex; flex-direction:column; gap:24px; }
    .skfa .skfa-filters details { padding-bottom:16px; border-bottom:1px solid var(--skfa-border); }
}
@container stepke-fa (max-width:920px) {
    .skfa .skfa-catalog { display:flex; flex-direction:column; gap:24px; }
    .skfa .skfa-filters summary { display:list-item; }
    .skfa .skfa-filters details { padding-bottom:16px; border-bottom:1px solid var(--skfa-border); }
    .skfa .skfa-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .skfa .skfa-toolbar { flex-wrap:wrap; }
}
@media(max-width:767px) { .skfa { padding:24px 16px 32px; } }
@container stepke-fa (max-width:520px) {
    .skfa .skfa-grid { grid-template-columns:1fr; }
    .skfa .skfa-toolbar { flex-wrap:wrap; }
}

@media(max-width:600px) {
    .stepke-fa-wordpress img.imgrd { display:block; float:none; margin:0; }
    .stepke-fa-wordpress p:has(>img.imgrd) { margin:0 0 24px; }
    .stepke-fa-description-empty p:has(>img.imgrd) { margin-bottom:0; }
}

/* Campus expands its content from 1184 to 1376px at the 1536px breakpoint. */
@media(min-width:1536px) { .skfa { max-width:1472px; } }
/* Legacy keeps the original 255px cards and 25px gaps. Normalize the template's
   inline margins so they do not add a second gap or misalign centered rows. */
.stepke-fa-legacy-catalog { max-width:1140px; margin:0 auto; padding:24px 0; box-sizing:border-box; container:stepke-fa-legacy / inline-size; }
.stepke-fa-legacy-catalog #event-list { display:flex; flex-wrap:wrap; justify-content:flex-start; align-items:stretch; gap:25px; margin:32px 0 0; }
.stepke-fa-legacy-catalog #event-list>.evca { position:relative; flex:0 1 255px; width:255px; max-width:255px!important; margin:0!important; box-sizing:border-box; }
.stepke-fa-legacy-catalog .stepke-fa-card-link { position:absolute; inset:0; z-index:1; cursor:pointer; }
.stepke-fa-legacy-catalog .event-link { position:relative; z-index:2; }
.stepke-fa-legacy-catalog .event-box-info { max-width:255px; }
.stepke-fa-legacy-catalog .event-image { width:100%; aspect-ratio:1; object-fit:cover; }
.stepke-fa-legacy-catalog .hidden { display:none; }
@media(max-width:1136px) { .stepke-fa-legacy-catalog { padding-left:16px; padding-right:16px; } }
@container stepke-fa-legacy (max-width:1094px) { .stepke-fa-legacy-catalog #event-list { justify-content:center; } }

.skfa .skfa-grid[aria-busy=true],.stepke-fa-legacy-catalog #event-list[aria-busy=true] { opacity:.6; }
.stepke-fa-legacy-catalog .skfa-request-status:not(.skfa-request-error) { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }
.skfa .skfa-toolbar p.skfa-request-error,.stepke-fa-legacy-catalog .skfa-request-error { color:#a32236; }
