:root {
    --cfr-blue:#17365d;
    --cfr-blue-2:#245080;
    --cfr-red:#c53b4b;
    --cfr-cream:#f5f1e9;
    --cfr-paper:#fffdf9;
    --cfr-ink:#25282d;
    --cfr-muted:#6e737a;
    --cfr-line:#d9d5ce;
    --cfr-soft:#eef3f7
}
* {
    box-sizing:border-box
}
html {
    scroll-behavior:smooth
}
body {
    margin:0;
    background:var(--cfr-paper);
    color:var(--cfr-ink);
    font:15px/1.65 Arial,Helvetica,sans-serif
}
.cfr-shell {
    width:min(1160px,calc(100% - 36px));
    margin:auto
}
.cfr-skip {
    position:absolute;
    left:-9999px
}
.cfr-skip:focus {
    left:16px;
    top:16px;
    z-index:99;
    background:#fff;
    padding:10px 14px
}
.cfr-header {
    background:#fff;
    border-bottom:1px solid var(--cfr-line);
    position:relative
}
.cfr-ribbon {
    height:5px;
    display:grid;
    grid-template-columns:1fr 1fr 1fr
}
.cfr-ribbon i:nth-child(1) {
    background:#17365d
}
.cfr-ribbon i:nth-child(2) {
    background:#fff
}
.cfr-ribbon i:nth-child(3) {
    background:#c53b4b
}
.cfr-header__row {
    min-height:84px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:28px
}
.cfr-brand {
    display:flex;
    align-items:center;
    gap:13px;
    text-decoration:none;
    color:var(--cfr-ink)
}
.cfr-brand__calendar {
    width:48px;
    height:48px;
    border:2px solid var(--cfr-blue);
    display:grid;
    place-items:center;
    position:relative;
    background:var(--cfr-paper)
}
.cfr-brand__calendar:before {
    content:"";
    position:absolute;
    left:-2px;
    right:-2px;
    top:9px;
    border-top:5px solid var(--cfr-red)
}
.cfr-brand__calendar b {
    padding-top:8px;
    color:var(--cfr-blue);
    font-size:18px
}
.cfr-brand__copy strong,.cfr-brand__copy small {
    display:block
}
.cfr-brand__copy strong {
    font:700 20px Georgia,"Times New Roman",serif
}
.cfr-brand__copy small {
    font-size:10px;
    letter-spacing:.12em;
    color:var(--cfr-muted);
    text-transform:uppercase
}
.cfr-nav {
    display:flex;
    align-items:center;
    gap:24px
}
.cfr-nav a {
    color:var(--cfr-ink);
    text-decoration:none;
    font-weight:700;
    font-size:13px;
    padding:30px 0;
    border-bottom:3px solid transparent
}
.cfr-nav a:hover {
    color:var(--cfr-blue);
    border-color:var(--cfr-red)
}
.cfr-navtoggle {
    display:none
}
.cfr-hero {
    background:linear-gradient(110deg,var(--cfr-cream) 0 68%,var(--cfr-soft) 68% 100%);
    border-bottom:1px solid var(--cfr-line)
}
.cfr-hero__grid {
    display:grid;
    grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);
    gap:70px;
    align-items:center;
    padding:66px 0
}
.cfr-kicker,.cfr-sectiontitle span {
    display:block;
    color:var(--cfr-red);
    font-size:10px;
    font-weight:800;
    letter-spacing:.16em
}
.cfr-hero h1 {
    font:500 clamp(48px,7vw,78px)/.98 Georgia,"Times New Roman",serif;
    letter-spacing:-.04em;
    margin:10px 0 18px;
    color:var(--cfr-blue)
}
.cfr-hero__copy>p {
    font-size:19px;
    color:var(--cfr-muted);
    max-width:690px
}
.cfr-hero__actions {
    display:flex;
    align-items:center;
    gap:24px;
    margin-top:26px
}
.cfr-button {
    background:var(--cfr-blue);
    color:#fff;
    text-decoration:none;
    padding:12px 18px;
    font-weight:800;
    font-size:13px
}
.cfr-button:hover {
    background:var(--cfr-blue-2)
}
.cfr-textlink {
    color:var(--cfr-blue);
    font-weight:800;
    font-size:13px
}
.cfr-today {
    background:#fff;
    border:1px solid var(--cfr-line);
    padding:25px 26px;
    box-shadow:10px 10px 0 #dfe6ec
}
.cfr-today>span {
    font-size:10px;
    font-weight:800;
    letter-spacing:.14em;
    color:var(--cfr-red)
}
.cfr-today>strong {
    display:block;
    font:500 30px Georgia,"Times New Roman",serif;
    color:var(--cfr-blue);
    margin:4px 0
}
.cfr-today>p {
    margin:0;
    color:var(--cfr-muted);
    text-transform:capitalize
}
.cfr-today__meta {
    display:grid;
    grid-template-columns:1fr 1.6fr;
    gap:20px;
    margin-top:20px;
    padding-top:18px;
    border-top:1px solid var(--cfr-line)
}
.cfr-today__meta p {
    margin:0
}
.cfr-today__meta small {
    display:block;
    font-size:9px;
    letter-spacing:.12em;
    color:var(--cfr-muted)
}
.cfr-today__meta b {
    display:block;
    color:var(--cfr-blue);
    font-size:13px;
    margin-top:3px
}
.cfr-snapshot {
    background:var(--cfr-blue);
    color:#fff
}
.cfr-snapshot__grid {
    display:grid;
    grid-template-columns:repeat(3,1fr)
}
.cfr-snapshot article {
    padding:16px 22px;
    border-right:1px solid #ffffff24
}
.cfr-snapshot article:first-child {
    padding-left:0
}
.cfr-snapshot small {
    display:block;
    color:#b9cce0;
    font-size:9px;
    font-weight:800;
    letter-spacing:.13em
}
.cfr-snapshot b {
    font-size:13px
}
.cfr-calendar-section,.cfr-upcoming,.cfr-editorial,.cfr-faq,.cfr-content,.cfr-holiday-table {
    padding:48px 0
}
.cfr-sectiontitle {
    display:flex;
    justify-content:space-between;
    align-items:end;
    gap:20px;
    margin-bottom:22px
}
.cfr-sectiontitle h2 {
    font:500 30px Georgia,"Times New Roman",serif;
    color:var(--cfr-blue);
    margin:4px 0 0
}
.cfr-sectiontitle a {
    color:var(--cfr-blue);
    font-size:13px;
    font-weight:800
}
.cfr-year-grid {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:22px
}
.cfr-month {
    background:#fff;
    border:1px solid var(--cfr-line)
}
.cfr-month__head {
    display:flex;
    justify-content:space-between;
    align-items:end;
    padding:15px;
    border-bottom:1px solid var(--cfr-line);
    background:#faf8f4
}
.cfr-month__head span {
    display:block;
    font-size:9px;
    font-weight:800;
    letter-spacing:.13em;
    color:var(--cfr-red)
}
.cfr-month__head h3 {
    font:500 23px Georgia,"Times New Roman",serif;
    color:var(--cfr-blue);
    margin:0
}
.cfr-month__head>b {
    font-size:12px;
    color:var(--cfr-muted)
}
.cfr-month__labels,.cfr-month__week {
    display:grid;
    grid-template-columns:38px repeat(7,minmax(0,1fr))
}
.cfr-month__labels span {
    padding:7px 1px;
    text-align:center;
    background:#eef3f7;
    border-bottom:1px solid var(--cfr-line);
    font-size:9px;
    font-weight:800;
    color:#5c6774
}
.cfr-month__week>* {
    min-height:43px;
    border-right:1px solid #ebe8e2;
    border-bottom:1px solid #ebe8e2;
    display:grid;
    place-items:center
}
.cfr-weekno {
    background:#faf8f4;
    color:#8c857c;
    font-size:10px;
    font-weight:700
}
.cfr-day {
    position:relative;
    border:0;
    background:#fff;
    color:var(--cfr-ink);
    cursor:pointer
}
.cfr-day b {
    font-size:13px
}
.cfr-day--weekend {
    background:#faf7f3
}
.cfr-day--holiday {
    background:#fff3f4;
    color:var(--cfr-red);
    font-weight:800
}
.cfr-day--holiday i {
    position:absolute;
    bottom:5px;
    width:4px;
    height:4px;
    border-radius:50%;
    background:var(--cfr-red)
}
.cfr-day--today {
    outline:3px solid var(--cfr-blue);
    outline-offset:-3px
}
.cfr-day--empty {
    background:#fcfbf8
}
.cfr-upcoming {
    background:var(--cfr-soft);
    border-block:1px solid #dce3e9
}
.cfr-upcoming__list {
    display:block;
    border-top:1px solid #cfd8df
}
.cfr-upcoming__list article {
    display:grid;
    grid-template-columns:minmax(150px,.8fr) minmax(220px,1.6fr) minmax(100px,.55fr);
    gap:24px;
    align-items:center;
    width:100%;
    padding:14px 0;
    border-bottom:1px solid #cfd8df
}
.cfr-upcoming__list time {
    color:var(--cfr-blue);
    font-weight:800;
    white-space:nowrap
}
.cfr-upcoming__list strong {
    font-family:Georgia,"Times New Roman",serif;
    min-width:0
}
.cfr-upcoming__list small {
    color:var(--cfr-muted);
    text-transform:capitalize;
    text-align:right;
    white-space:nowrap
}
.cfr-prose {
    max-width:860px
}
.cfr-prose h2 {
    font:500 27px/1.25 Georgia,"Times New Roman",serif;
    color:var(--cfr-blue);
    margin:30px 0 8px
}
.cfr-prose h3 {
    color:var(--cfr-blue)
}
.cfr-prose p {
    color:#555b62
}
.cfr-prose a {
    color:var(--cfr-blue)
}
.cfr-faq {
    border-top:1px solid var(--cfr-line)
}
.cfr-faq__grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:12px;
    max-width:940px
}
.cfr-faq details,.cfr-pagefaq details {
    border-top:1px solid var(--cfr-line);
    padding:13px 0
}
.cfr-faq summary,.cfr-pagefaq summary {
    cursor:pointer;
    color:var(--cfr-blue);
    font-weight:800
}
.cfr-faq p,.cfr-pagefaq p {
    color:var(--cfr-muted)
}
.cfr-pagehero {
    background:var(--cfr-cream);
    border-bottom:1px solid var(--cfr-line);
    padding:42px 0
}
.cfr-breadcrumb {
    display:flex;
    gap:7px;
    align-items:center;
    color:var(--cfr-muted);
    font-size:12px
}
.cfr-breadcrumb a {
    color:var(--cfr-blue)
}
.cfr-pagehero h1 {
    font:500 clamp(38px,5vw,58px)/1 Georgia,"Times New Roman",serif;
    letter-spacing:-.03em;
    color:var(--cfr-blue);
    margin:15px 0
}
.cfr-pagehero p {
    font-size:18px;
    color:var(--cfr-muted);
    max-width:830px
}
.cfr-content__grid {
    display:grid;
    grid-template-columns:minmax(0,1fr) 315px;
    gap:55px
}
.cfr-pagefaq {
    border-top:5px solid var(--cfr-red)
}
.cfr-pagefaq h2 {
    font:500 21px Georgia,"Times New Roman",serif;
    color:var(--cfr-blue)
}
.cfr-calendar-section--page {
    background:#fff
}
.cfr-monthnav {
    display:grid;
    grid-template-columns:1fr auto 1fr;
    gap:14px;
    margin-top:18px
}
.cfr-monthnav a {
    color:var(--cfr-blue);
    font-size:13px;
    font-weight:800
}
.cfr-monthnav span:last-child {
    text-align:right
}
.cfr-holiday-table {
    background:#fff
}
.cfr-table-scroll {
    overflow:auto
}
.cfr-holiday-table table {
    width:100%;
    border-collapse:collapse
}
.cfr-holiday-table th,.cfr-holiday-table td {
    text-align:left;
    padding:12px 14px;
    border-bottom:1px solid var(--cfr-line)
}
.cfr-holiday-table th {
    background:var(--cfr-blue);
    color:#fff;
    font-size:12px
}
.cfr-holiday-table td:first-child {
    white-space:nowrap
}
.cfr-holiday-table td strong {
    color:var(--cfr-blue)
}
.cfr-dialog {
    width:min(410px,calc(100% - 28px));
    border:0;
    border-top:7px solid var(--cfr-red);
    padding:24px;
    box-shadow:0 22px 60px #0004
}
.cfr-dialog::backdrop {
    background:#17212d99
}
.cfr-dialog button {
    float:right
}
.cfr-dialog small {
    display:block;
    font-size:9px;
    font-weight:800;
    letter-spacing:.13em;
    color:var(--cfr-muted)
}
.cfr-dialog strong {
    display:block;
    font:500 25px Georgia,"Times New Roman",serif;
    color:var(--cfr-blue);
    margin:5px 0
}
.cfr-footer {
    background:#202b38;
    color:#fff;
    margin-top:30px
}
.cfr-footer__top {
    display:flex;
    justify-content:space-between;
    gap:35px;
    padding:36px 0
}
.cfr-footer__identity p {
    max-width:500px;
    color:#b9c3cc
}
.cfr-footer nav {
    display:flex;
    align-content:flex-start;
    gap:16px;
    flex-wrap:wrap
}
.cfr-footer a {
    color:#fff
}
.cfr-footer__bottom {
    display:flex;
    justify-content:space-between;
    gap:20px;
    border-top:1px solid #ffffff20;
    padding:13px 0;
    color:#aeb8c1;
    font-size:11px
}
@media(max-width:900px) {
    .cfr-shell {
        width:min(100% - 24px,1160px)
    }
    .cfr-navtoggle {
        display:flex;
        align-items:center;
        gap:8px;
        border:1px solid var(--cfr-line);
        background:#fff;
        padding:9px 11px
    }
    .cfr-nav {
        display:none;
        position:absolute;
        z-index:40;
        top:89px;
        left:12px;
        right:12px;
        background:#fff;
        border:1px solid var(--cfr-line);
        padding:10px;
        flex-direction:column;
        align-items:stretch;
        gap:0
    }
    .cfr-nav.is-open {
        display:flex
    }
    .cfr-nav a {
        padding:11px 10px
    }
    .cfr-hero {
        background:var(--cfr-cream)
    }
    .cfr-hero__grid {
        grid-template-columns:1fr;
        gap:30px;
        padding:44px 0
    }
    .cfr-year-grid {
        grid-template-columns:1fr 1fr
    }
    .cfr-content__grid {
        grid-template-columns:1fr
    }
    .cfr-faq__grid {
        grid-template-columns:1fr
    }
    .cfr-footer__top {
        flex-direction:column
    }
}
@media(max-width:620px) {
    .cfr-brand__copy small {
        display:none
    }
    .cfr-snapshot__grid {
        grid-template-columns:1fr
    }
    .cfr-snapshot article,.cfr-snapshot article:first-child {
        padding:12px 0;
        border-right:0;
        border-bottom:1px solid #ffffff20
    }
    .cfr-year-grid {
        grid-template-columns:1fr
    }
    .cfr-upcoming .cfr-sectiontitle {
        align-items:flex-end
    }
    .cfr-upcoming .cfr-sectiontitle h2 {
        font-size:27px;
        line-height:1.08
    }
    .cfr-upcoming .cfr-sectiontitle a {
        flex:0 0 auto;
        white-space:nowrap;
        margin-bottom:3px
    }
    .cfr-upcoming__list article {
        grid-template-columns:minmax(88px,1fr) minmax(0,1.25fr) auto;
        gap:10px;
        padding:14px 0
    }
    .cfr-upcoming__list time {
        font-size:12px
    }
    .cfr-upcoming__list strong {
        font-size:14px;
        line-height:1.25
    }
    .cfr-upcoming__list small {
        font-size:11px
    }
    .cfr-month__labels,.cfr-month__week {
        grid-template-columns:32px repeat(7,minmax(0,1fr))
    }
    .cfr-month__week>* {
        min-height:40px
    }
    .cfr-monthnav {
        grid-template-columns:1fr 1fr
    }
    .cfr-monthnav>a {
        grid-column:1/-1;
        grid-row:1;
        text-align:center
    }
    .cfr-footer__bottom {
        flex-direction:column
    }
}
@media(max-width:430px) {
    .cfr-upcoming .cfr-sectiontitle {
        display:grid;
        grid-template-columns:minmax(0,1fr) auto;
        gap:12px
    }
    .cfr-upcoming .cfr-sectiontitle h2 {
        font-size:25px
    }
    .cfr-upcoming .cfr-sectiontitle a {
        font-size:12px
    }
    .cfr-upcoming__list article {
        grid-template-columns:82px minmax(0,1fr) 62px;
        gap:8px
    }
    .cfr-upcoming__list time {
        font-size:11px
    }
    .cfr-upcoming__list strong {
        font-size:13px
    }
    .cfr-upcoming__list small {
        font-size:10px
    }
}
.skip-link {
    position: fixed;
    left: 1rem;
    top: -5rem;
    z-index: 1000;
    padding: 0.75rem 1rem;
    background: #fff;
    color: #111;
}
.skip-link:focus {
    top: 1rem;
}
.form-hp {
    position: absolute;
    left: -10000px;
}
form {
    display: grid;
    gap: 1rem;
    max-width: 680px;
}
form label {
    display: grid;
    gap: 0.35rem;
    font-weight: 700;
}
form input, form textarea {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid #bbb;
    font: inherit;
}
form button {
    justify-self: start;
    padding: 0.7rem 1.2rem;
    cursor: pointer;
}
