.f4k-events {
    --fer-navy: #102d55;
    --fer-blue: #245f9a;
    --fer-sky: #eaf4fc;
    --fer-line: #9db2c7;
    --fer-text: #17283d;
    margin: 28px 0 12px;
    color: var(--fer-text);
}

.f4k-events__intro {
    max-width: 78ch;
    padding: 28px 30px;
    border-left: 5px solid var(--fer-blue);
    background: linear-gradient(120deg, #f7fbff, #e7f2fb);
}

.f4k-events__eyebrow,
.f4k-events__detail-kicker {
    margin: 0 0 6px;
    color: #466085;
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.f4k-events__intro h2 { margin: 0 0 12px; color: var(--fer-navy); }
.f4k-events__intro p { font-size: 17px; line-height: 1.7; }
.f4k-events__intro .f4k-events__hours { margin-top: 14px; padding: 11px 14px; color: #173653; border-left: 3px solid #315f9e; background: rgba(255, 255, 255, .68); font-size: 16px; }

.f4k-events__toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 18px 28px;
    align-items: end;
    justify-content: space-between;
    margin: 24px 0 18px;
    padding: 16px 18px;
    border: 1px solid var(--fer-line);
    background: #fff;
}

.f4k-events__toolbar label { display: grid; gap: 6px; color: var(--fer-navy); font-weight: 800; }
.f4k-events__toolbar select { min-width: 230px; min-height: 46px; padding: 8px 38px 8px 11px; border: 1px solid #708aa5; color: #111d2e; background: #fff; font: inherit; }
.f4k-events__toolbar a { padding: 6px 8px; color: #174b82; border-radius: 4px; background: #e8f1f8; font-weight: 800; text-decoration: none; }
.f4k-events__toolbar a:hover,
.f4k-events__toolbar a:focus { color: #071f46; background: #d7e8f6; }

.f4k-events__workspace {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
    align-items: start;
}

.f4k-events__calendar { min-width: 0; padding: 18px; border: 1px solid var(--fer-line); background: #fff; }
.f4k-events__detail { min-height: 190px; padding: 24px; border-top: 4px solid var(--fer-blue); background: var(--fer-sky); box-shadow: 0 8px 22px rgba(16, 45, 85, .08); }
.f4k-events__detail h3 { margin: 0 0 12px; color: var(--fer-navy); font-size: 25px; }
.f4k-events__detail p { line-height: 1.65; }
.f4k-events__detail-time { color: #173f76; font-weight: 800; }
.f4k-events__detail-venue { margin-bottom: 2px; font-weight: 800; }
.f4k-events__detail-address { margin-top: 0; color: #3c536b; }
.f4k-events__detail-hours { padding: 10px 12px; color: #294765; border-left: 3px solid #537ca6; background: #fff; font-weight: 700; }
.f4k-events__detail-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
.f4k-events__detail-actions a { display: inline-flex; min-height: 44px; align-items: center; padding: 8px 14px; color: #fff; background: var(--fer-navy); font-weight: 800; text-decoration: none; }
.f4k-events__detail-actions a:hover, .f4k-events__detail-actions a:focus { background: #061d3b; }

.f4k-events .fc { font-size: 16px; }
.f4k-events .fc table { display: table; width: 100%; overflow: visible; }
.f4k-events .fc .fc-header-toolbar { flex-wrap: wrap; gap: 10px; }
.f4k-events .fc .fc-button { white-space: nowrap; }
.f4k-events .fc .fc-toolbar-title { color: var(--fer-navy); font-family: Georgia, 'Times New Roman', serif; font-size: clamp(20px, 2.4vw, 30px); }
.f4k-events .fc .fc-button-primary { border-color: var(--fer-navy); background: var(--fer-navy); font-weight: 800; }
.f4k-events .fc .fc-button-primary:hover,
.f4k-events .fc .fc-button-primary:focus { border-color: #061d3b; background: #061d3b; }
.f4k-events .fc .fc-button-primary:not(:disabled).fc-button-active { border-color: #183e70; background: #315f9e; }
.f4k-events .fc .fc-daygrid-day-number,
.f4k-events .fc .fc-col-header-cell-cushion { color: #173f76; font-weight: 800; text-decoration: none; }
.f4k-events .fc .fc-daygrid-day-frame { min-height: 104px; }
.f4k-events .fc .fc-daygrid-day-number { min-width: 34px; min-height: 34px; padding: 7px; font-size: 17px; text-align: center; }
.f4k-events .fc .fc-daygrid-event { border-color: #173f76; background: #245f9a; }
.f4k-events .fc .f4k-event--outside-hours { border-color: #536c87; background: #536c87; }
.f4k-events .fc .fc-daygrid-event:hover,
.f4k-events .fc .fc-list-event:hover td { background: #dcecf9; }
.f4k-events .fc .fc-event { cursor: pointer; }
.f4k-events .fc .fc-daygrid-event,
.f4k-events .fc .fc-timegrid-event { color: #fff !important; }
.f4k-events .fc .fc-list-event,
.f4k-events .fc .fc-list-event a { color: #173f76 !important; }
.f4k-events .fc .fc-event-title { font-weight: 800; }
.f4k-events .fc .fc-list-day-cushion { background: #e7f2fb; }
.f4k-events .fc .fc-list-event-dot { border-color: #245f9a; }

.f4k-visitation {
    margin: 64px 0 18px;
    padding-top: 42px;
    color: var(--fer-text, #17283d);
    border-top: 1px solid #aebfd0;
}
.f4k-visitation__intro { max-width: 78ch; }
.f4k-visitation__intro h2 { margin: 0 0 12px; color: #102d55; }
.f4k-visitation__intro > p:last-child { font-size: 18px; line-height: 1.7; }
.f4k-visitation__warning { margin: 24px 0; padding: 20px 24px; color: #263b52; border-left: 5px solid #315f9e; background: #edf4fa; }
.f4k-visitation__warning h3 { margin: 0 0 7px; color: #102d55; font-size: 21px; }
.f4k-visitation__warning p { margin: 0; line-height: 1.65; }
.f4k-visitation__controls { display: flex; flex-wrap: wrap; gap: 14px 20px; align-items: end; justify-content: space-between; margin: 24px 0 14px; }
.f4k-visitation__controls label { display: grid; gap: 7px; color: #102d55; font-weight: 900; }
.f4k-visitation__controls select { min-width: min(100%, 390px); min-height: 48px; padding: 9px 38px 9px 12px; color: #111d2e; border: 1px solid #708aa5; background: #fff; font: inherit; }
.f4k-visitation__controls button { min-height: 48px; padding: 10px 18px; color: #fff; border: 1px solid #102d55; background: #102d55; font: inherit; font-weight: 900; cursor: pointer; }
.f4k-visitation__controls button:hover,
.f4k-visitation__controls button:focus { background: #061d3b; }
.f4k-visitation__key { display: flex; flex-wrap: wrap; gap: 8px 20px; margin: 14px 0; color: #263b52; font-weight: 800; }
.f4k-visitation__key span { display: inline-flex; gap: 8px; align-items: center; }
.f4k-visitation__key i { width: 18px; height: 18px; border: 2px solid #173f76; background: #d9eaf8; }
.f4k-visitation__key i.is-weekday { border-color: #50749a; background: #eef4f9; }
.f4k-visitation__key i.is-blank { border-color: #96aabc; background: #fff; }
.f4k-visitation__calendar { min-width: 0; padding: 18px; border: 1px solid #9db2c7; background: #fff; }
.f4k-visitation .fc { font-size: 16px; }
.f4k-visitation .fc table { display: table; width: 100%; overflow: visible; }
.f4k-visitation .fc .fc-toolbar { flex-wrap: wrap; gap: 10px; }
.f4k-visitation .fc .fc-toolbar-title { color: #102d55; font-family: Georgia, 'Times New Roman', serif; font-size: clamp(21px, 2.4vw, 30px); }
.f4k-visitation .fc .fc-button-primary { border-color: #102d55; background: #102d55; font-weight: 800; }
.f4k-visitation .fc .fc-daygrid-day-frame { min-height: 118px; }
.f4k-visitation .fc .fc-daygrid-day-number { min-width: 34px; min-height: 34px; padding: 7px; color: #102d55; font-size: 17px; font-weight: 900; text-align: center; text-decoration: none; }
.f4k-visitation .fc .fc-col-header-cell-cushion { padding: 9px 4px; color: #173f76; font-weight: 900; text-decoration: none; }
.f4k-visitation .fc .f4k-visitation-event { margin: 2px 3px; white-space: normal; border-color: #173f76; background: #245f9a; font-size: 12px; line-height: 1.25; }
.f4k-visitation .fc .f4k-visitation-event--weekday { color: #173f76; border-color: #7895b1; background: #edf4fa; }
.f4k-visitation .fc .fc-event-title { font-weight: 800; }
.f4k-visitation__guidance { margin: 20px 0; padding: 20px 24px; border-left: 4px solid #315f9e; background: #f5f8fb; }
.f4k-visitation__guidance h3 { margin: 0 0 8px; color: #102d55; font-size: 22px; }
.f4k-visitation__guidance p { margin: 0; font-size: 17px; line-height: 1.7; }
.f4k-visitation__sources { margin-top: 30px; padding: 24px; border-top: 4px solid #173f76; background: #edf4fa; }
.f4k-visitation__sources h3 { margin: 0 0 8px; color: #102d55; }
.f4k-visitation__sources p { line-height: 1.65; }
.f4k-visitation__sources a { color: #174b82; font-weight: 800; }

@media (max-width: 900px) {
    .f4k-events__detail { min-height: 0; }
}

@media (max-width: 700px) {
    .f4k-events__intro { padding: 22px 18px; }
    .f4k-events__intro p { font-size: 16px; }
    .f4k-events__toolbar { align-items: stretch; }
    .f4k-events__toolbar label,
    .f4k-events__toolbar select,
    .f4k-events__toolbar a { width: 100%; }
    .f4k-events__calendar { padding: 10px; }
    .f4k-events .fc .fc-header-toolbar { align-items: flex-start; }
    .f4k-events .fc .fc-toolbar-chunk:nth-child(2) { order: -1; width: 100%; margin-bottom: 10px; }
    .f4k-events .fc .fc-list-table { width: 100% !important; table-layout: fixed !important; }
    .f4k-events .fc tr.fc-list-event { display: grid; grid-template-columns: 82px minmax(0, 1fr); width: 100%; }
    .f4k-events .fc .fc-list-event-time { display: block; width: auto; padding: 10px 6px; white-space: normal; }
    .f4k-events .fc .fc-list-event-graphic { display: none; }
    .f4k-events .fc .fc-list-event-title { display: block; width: auto; padding: 10px 6px; white-space: normal; overflow-wrap: anywhere; }
    .f4k-events .fc .fc-toolbar-chunk:last-child { width: 100%; }
    .f4k-events .fc .fc-daygrid-day-frame { min-height: 76px; }
    .f4k-events .fc .fc-daygrid-day-number { min-width: 29px; min-height: 29px; padding: 4px; font-size: 15px; }
    .f4k-events .fc .fc-daygrid-event { min-height: 8px; overflow: hidden; font-size: 0; }
    .f4k-events .fc .fc-daygrid-event::after { display: block; width: 8px; height: 8px; margin: 2px auto; border-radius: 50%; background: #fff; content: ''; }
    .f4k-visitation { margin-top: 46px; padding-top: 34px; }
    .f4k-visitation__intro > p:last-child { font-size: 16px; }
    .f4k-visitation__controls { align-items: stretch; flex-direction: column; }
    .f4k-visitation__controls label,
    .f4k-visitation__controls select,
    .f4k-visitation__controls button { width: 100%; min-width: 0; }
    .f4k-visitation__calendar { padding: 7px; }
    .f4k-visitation .fc .fc-header-toolbar { align-items: flex-start; }
    .f4k-visitation .fc .fc-toolbar-chunk:nth-child(2) { order: -1; width: 100%; }
    .f4k-visitation .fc .fc-daygrid-day-frame { min-height: 82px; }
    .f4k-visitation .fc .fc-daygrid-day-number { min-width: 29px; min-height: 29px; padding: 4px; font-size: 15px; }
    .f4k-visitation .fc .f4k-visitation-event { min-height: 9px; overflow: hidden; border-radius: 0; font-size: 0; }
    .f4k-visitation .fc .f4k-visitation-event::after { display: block; width: 100%; min-height: 7px; background: currentColor; content: ''; }
    .f4k-visitation__warning,
    .f4k-visitation__guidance,
    .f4k-visitation__sources { padding: 18px 16px; }
}

@media print {
    body * { visibility: hidden !important; }
    .f4k-visitation,
    .f4k-visitation * { visibility: visible !important; }
    .f4k-visitation { position: absolute; inset: 0; width: 100%; margin: 0; padding: 0; border: 0; }
    .f4k-visitation__controls,
    .f4k-visitation__sources { display: none !important; }
    .f4k-visitation__calendar { padding: 5px; }
    .f4k-visitation .fc .fc-daygrid-day-frame { min-height: 90px; }
}

@media (prefers-reduced-motion: reduce) {
    .f4k-events *, .f4k-events *::before, .f4k-events *::after { scroll-behavior: auto !important; transition: none !important; }
}
