/* ACD-FWSA | responsive visual system */
:root {
    --navy:#102d50;
    --navy-2:#173e66;
    --deep:#081d35;
    --blue:#1762a3;
    --sky:#83d1e5;
    --gold:#bd9138;
    --gold-light:#e4c77e;
    --cream:#f7f4ed;
    --paper:#fff;
    --ink:#203047;
    --muted:#687789;
    --line:#e7e9ed;
    --shadow:0 18px 45px rgba(10,35,62,.10);
    --radius:16px
}

* {
    box-sizing:border-box
}

html {
    scroll-behavior:smooth;
    scroll-padding-top:95px
}

body {
    margin:0;
    background:#fff;
    color:var(--ink);
    font:15px/1.75 'DM Sans',Arial,sans-serif;
    -webkit-font-smoothing:antialiased
}

img {
    max-width:100%;
    height:auto;
    display:block
}

a {
    color:inherit;
    text-decoration:none;
    transition:color .2s,background .2s,border-color .2s,transform .2s
}

button,input,textarea {
    font:inherit
}

.container {
    width:min(1180px,calc(100% - 48px));
    margin-inline:auto
}

::selection {
    background:#d9edf3;
    color:var(--navy)
}

:focus-visible {
    outline:3px solid var(--gold-light);
    outline-offset:3px
}

.skip-link {
    position:fixed;
    z-index:1000;
    top:10px;
    left:10px;
    padding:10px 15px;
    border-radius:7px;
    background:var(--navy);
    color:#fff;
    transform:translateY(-160%);
    box-shadow:var(--shadow)
}

.skip-link:focus {
    transform:translateY(0)
}

.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
}

.site-header {
    position:sticky;
    top:0;
    z-index:50;
    background:rgba(255,255,255,.97);
    border-bottom:1px solid rgba(16,45,80,.08);
    box-shadow:0 5px 20px rgba(16,45,80,.035);
    backdrop-filter:blur(12px)
}

.header-inner {
    min-height:82px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:28px
}

.brand {
    display:flex;
    align-items:center;
    gap:11px;
    flex:0 0 auto;
    color:var(--navy)
}

.brand-mark {
    display:grid;
    place-items:center;
    width:44px;
    height:44px;
    border:2px solid var(--gold);
    border-radius:12px;
    background:var(--navy);
    color:#fff;
    font:700 15px 'Playfair Display',serif;
    box-shadow:0 4px 10px rgba(16,45,80,.12)
}

.brand-copy {
    display:grid;
    line-height:1.25
}

.brand-copy strong {
    font:700 20px 'Playfair Display',serif;
    letter-spacing:-.25px
}

.brand-copy small {
    margin-top:3px;
    font-size:10px;
    color:#718096
}

.nav-links {
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:clamp(10px,1.35vw,20px)
}

.nav-link {
    position:relative;
    padding:31px 0;
    color:#536176;
    font-size:11px;
    font-weight:700;
    white-space:nowrap
}

.nav-link:hover,.nav-link.is-active {
    color:var(--navy)
}

.nav-link:after {
    position:absolute;
    right:0;
    bottom:21px;
    left:0;
    height:2px;
    background:var(--gold);
    content:"";
    transform:scaleX(0);
    transform-origin:left;
    transition:transform .2s
}

.nav-link:hover:after,.nav-link.is-active:after {
    transform:scaleX(1)
}

.nav-cta {
    margin-left:3px
}

.menu-toggle {
    display:none
}

.button {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    min-height:44px;
    padding:12px 20px;
    border:1px solid transparent;
    border-radius:8px;
    font-size:13px;
    font-weight:700;
    line-height:1.2;
    cursor:pointer;
    transition:transform .2s,box-shadow .2s,background .2s
}

.button:hover {
    transform:translateY(-2px);
    box-shadow:0 8px 20px rgba(8,29,53,.16)
}

.button-small {
    min-height:38px;
    padding:9px 14px;
    font-size:11px
}

.button.gold,.button-gold {
    background:var(--gold);
    color:#fff
}

.button.gold:hover,.button-gold:hover {
    background:#a77c29
}

.button.primary {
    background:var(--navy);
    color:#fff
}

.button.primary:hover {
    background:var(--navy-2)
}

.button.outline {
    border-color:rgba(255,255,255,.8);
    background:rgba(255,255,255,.04);
    color:#fff
}

.button.outline:hover {
    background:#fff;
    color:var(--navy)
}

.hero {
    position:relative;
    isolation:isolate;
    min-height:570px;
    display:flex;
    align-items:center;
    overflow:hidden;
    color:#fff;
    background-color:var(--navy);
    background-image:linear-gradient(90deg,rgba(7,27,50,.97) 0%,rgba(10,37,66,.91) 48%,rgba(16,45,80,.78) 100%),url('../images/hero-reunion.png');
    background-position:center;
    background-size:cover;
    background-repeat:no-repeat
}

.hero:after {
    position:absolute;
    z-index:-1;
    right:-10%;
    bottom:-55%;
    width:60%;
    aspect-ratio:1;
    border:1px solid rgba(255,255,255,.09);
    border-radius:50%;
    content:"";
    box-shadow:0 0 0 55px rgba(255,255,255,.025),0 0 0 110px rgba(255,255,255,.02)
}

.hero-content {
    position:relative;
    padding:94px 0 100px
}

.eyebrow {
    display:inline-block;
    margin-bottom:13px;
    color:var(--gold);
    font-size:10px;
    font-weight:700;
    letter-spacing:.16em;
    text-transform:uppercase
}

.eyebrow.light {
    color:var(--gold-light)
}

.hero h1,.page-hero h1 {
    max-width:900px;
    margin:0 0 17px;
    color:#fff;
    font:700 clamp(42px,5.3vw,68px)/1.08 'Playfair Display',Georgia,serif;
    letter-spacing:-1.5px
}

.hero h1 em,.page-hero h1 em {
    color:var(--sky);
    font-style:normal
}

.hero p {
    max-width:570px;
    margin:0;
    color:rgba(255,255,255,.85);
    font-size:15px;
    line-height:1.8
}

.actions {
    display:flex;
    gap:12px;
    flex-wrap:wrap;
    margin:27px 0 20px
}

.tagline {
    color:var(--sky)!important;
    font:italic 18px 'Playfair Display',Georgia,serif!important
}

h1,h2,h3 {
    color:var(--navy);
    line-height:1.22
}

h2 {
    margin:0 0 17px;
    font:700 clamp(29px,3.1vw,40px)/1.2 'Playfair Display',Georgia,serif;
    letter-spacing:-.45px
}

h3 {
    margin:0 0 10px;
    font-size:17px;
    font-weight:700
}

p {
    margin:0 0 16px;
    color:var(--muted);
    font-size:14px
}

.section {
    padding:84px 0
}

.cream,.value-band {
    background:var(--cream)
}

.center {
    text-align:center
}

.center>p {
    max-width:670px;
    margin:0 auto 28px
}

.split {
    display:grid;
    grid-template-columns:1fr 1fr;
    align-items:center;
    gap:clamp(34px,5vw,68px)
}

.text-link {
    display:inline-flex;
    align-items:center;
    gap:7px;
    margin-top:8px;
    color:var(--blue);
    font-size:13px;
    font-weight:700
}

.text-link:hover {
    gap:11px;
    color:var(--navy)
}

.value-band .four {
    display:grid;
    grid-template-columns:repeat(4,1fr)
}

.value-band article {
    min-height:180px;
    padding:30px 22px;
    text-align:center;
    border-right:1px solid rgba(16,45,80,.09)
}

.value-band article:last-child {
    border-right:0
}

.value-band article>b {
    display:block;
    margin-bottom:6px;
    color:var(--gold);
    font-size:28px;
    line-height:1.3
}

.value-band article h3 {
    margin-bottom:8px
}

.value-band article p {
    max-width:230px;
    margin:0 auto;
    font-size:13px
}

.cards {
    display:grid;
    gap:20px;
    margin-top:30px
}

.cards article {
    padding:29px;
    border:1px solid var(--line);
    border-radius:var(--radius);
    background:#fff;
    box-shadow:0 7px 24px rgba(16,45,80,.035);
    transition:transform .22s,box-shadow .22s
}

.cards article:hover {
    transform:translateY(-4px);
    box-shadow:var(--shadow)
}

.cards article>span,.cards article>b {
    display:inline-block;
    margin-bottom:14px;
    color:var(--gold);
    font:700 25px 'Playfair Display',Georgia,serif
}

.cards article p {
    margin-bottom:8px
}

.cards.three {
    grid-template-columns:repeat(3,minmax(0,1fr))
}

.cards.two {
    grid-template-columns:repeat(2,minmax(0,1fr))
}

.cards.four {
    grid-template-columns:repeat(4,minmax(0,1fr))
}

.cards.five {
    grid-template-columns:repeat(5,minmax(0,1fr))
}

.cards.five article {
    padding:23px 17px
}

.cards.five article>b {
    display:grid;
    place-items:center;
    width:36px;
    height:36px;
    border-radius:50%;
    background:var(--cream);
    font:700 13px 'DM Sans',sans-serif
}

.photo {
    min-height:350px;
    border-radius:18px;
    background:#d5dfe6 center/cover no-repeat;
    box-shadow:var(--shadow)
}

.photo-scholar {
    display:flex;
    align-items:flex-end;
    padding:28px;
    color:#fff;
    font:24px 'Playfair Display',Georgia,serif;
    background-image:linear-gradient(0deg,rgba(7,29,57,.82),transparent 65%),url('../images/scholar-support.png')
}

.photo-campus {
    background-image:linear-gradient(0deg,rgba(7,29,57,.08),rgba(7,29,57,.08)),url('../images/campus.jpg')
}

.callout {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:28px;
    padding:48px;
    border-radius:18px;
    background:linear-gradient(115deg,var(--deep),var(--navy-2));
    box-shadow:var(--shadow)
}

.callout h2 {
    color:#fff
}

.callout p {
    max-width:650px;
    margin:0;
    color:#d3deea
}

.page-hero {
    position:relative;
    isolation:isolate;
    min-height:350px;
    display:flex;
    align-items:center;
    overflow:hidden;
    background:linear-gradient(90deg,rgba(7,27,50,.96),rgba(16,45,80,.83)),url('../images/campus.jpg') center/cover no-repeat;
    background-color:var(--navy)
}

.page-hero:after {
    position:absolute;
    z-index:-1;
    right:-4%;
    bottom:-85%;
    width:48%;
    aspect-ratio:1;
    border:1px solid rgba(255,255,255,.1);
    border-radius:50%;
    content:""
}

.page-hero .container {
    position:relative;
    padding:70px 0
}

.page-hero h1 {
    font-size:clamp(39px,4.7vw,58px)
}

.page-hero p {
    max-width:650px;
    color:rgba(255,255,255,.83);
    font-size:15px
}

blockquote,.panel {
    margin:0;
    padding:36px;
    border-radius:15px;
    background:#faf8f2;
    color:var(--navy);
    font:23px/1.55 'Playfair Display',Georgia,serif
}

blockquote {
    border-left:4px solid var(--gold)
}

blockquote small {
    display:block;
    margin-top:15px;
    color:var(--muted);
    font:700 10px 'DM Sans',sans-serif;
    letter-spacing:.13em;
    text-transform:uppercase
}

.panel {
    border:1px solid #eee6d7;
    font:inherit;
    box-shadow:0 12px 30px rgba(16,45,80,.05)
}

.panel h3 {
    font:700 24px 'Playfair Display',Georgia,serif
}

.panel p {
    font-size:14px
}

.small {
    font-size:11px;
    color:#8993a0
}

ul,ol {
    padding-left:21px;
    color:var(--muted);
    font-size:14px
}

li {
    padding:3px 0
}

.notice {
    margin-bottom:30px;
    padding:16px 19px;
    border-left:4px solid var(--gold);
    border-radius:7px;
    background:#fff7e5;
    color:#725d31;
    font-size:13px
}

.stats {
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:15px;
    margin:24px 0 43px
}

.stats article {
    padding:23px;
    border:1px solid var(--line);
    border-radius:13px;
    background:#faf8f2
}

.stats span,.stats strong {
    display:block
}

.stats span {
    color:var(--muted);
    font-size:12px
}

.stats strong {
    margin-top:8px;
    color:var(--navy);
    font:700 28px 'Playfair Display',Georgia,serif
}

.report {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:15px;
    margin:11px 0;
    padding:18px 20px;
    border:1px solid var(--line);
    border-radius:10px;
    background:#fff
}

.report b,.report small {
    display:block
}

.report small {
    color:var(--muted);
    font-size:11px
}

.report>span {
    padding:5px 11px;
    border-radius:30px;
    background:#f7efd9;
    color:#80672f;
    font-size:11px;
    font-weight:700;
    white-space:nowrap
}

.qr-placeholder {
    display:grid;
    place-content:center;
    min-height:180px;
    margin:20px 0;
    border:1px dashed #c7b98f;
    border-radius:10px;
    background:#fff;
    color:var(--navy);
    font-weight:700
}

.qr-placeholder small {
    color:var(--muted);
    font-weight:400
}

.heart {
    color:var(--gold);
    font-size:36px
}

.gallery {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:17px;
    margin:32px 0
}

.gallery div {
    position:relative;
    display:flex;
    min-height:205px;
    align-items:flex-end;
    overflow:hidden;
    padding:20px;
    border-radius:14px;
    color:#fff;
    font:20px 'Playfair Display',Georgia,serif;
    background:linear-gradient(0deg,rgba(9,31,56,.8),transparent 75%),linear-gradient(135deg,#315a7a,#b9c9cf);
    box-shadow:0 8px 22px rgba(16,45,80,.08);
    transition:transform .2s
}

.gallery div:hover {
    transform:translateY(-4px)
}

.form-card {
    padding:30px;
    border:1px solid var(--line);
    border-radius:16px;
    background:#fff;
    box-shadow:var(--shadow)
}

.form-card label {
    display:block;
    margin:14px 0 6px;
    color:var(--navy);
    font-size:12px;
    font-weight:700
}

.form-card input,.form-card textarea {
    display:block;
    width:100%;
    margin-top:5px;
    padding:12px 13px;
    border:1px solid #dce1e7;
    border-radius:7px;
    background:#fcfdff;
    color:var(--ink);
    font:13px 'DM Sans',sans-serif;
    transition:border-color .2s,box-shadow .2s
}

.form-card input:focus,.form-card textarea:focus {
    outline:0;
    border-color:#6aa6c8;
    box-shadow:0 0 0 3px rgba(106,166,200,.15)
}

.form-card textarea {
    resize:vertical
}

.form-card button {
    margin-top:18px
}

.form-feedback {
    margin-top:12px;
    color:var(--blue);
    font-size:12px
}

.contact-detail {
    padding:14px 0;
    border-bottom:1px solid var(--line)
}

.contact-detail b,.contact-detail span {
    display:block
}

.contact-detail b {
    color:var(--navy);
    font-size:12px
}

.contact-detail span {
    color:var(--muted);
    font-size:13px
}

.site-footer {
    padding:56px 0 22px;
    background:var(--deep);
    color:#d5dce5
}

.footer-grid {
    display:grid;
    grid-template-columns:2fr 1fr 1fr;
    gap:50px;
    padding-bottom:38px
}

.brand-footer {
    color:#fff
}

.brand-footer .brand-mark {
    background:var(--gold);
    color:var(--navy)
}

.brand-footer small {
    color:#b8c3d0
}

.footer-intro {
    max-width:390px;
    margin-top:18px;
    color:#aab7c7;
    font-size:12px
}

.site-footer h3 {
    margin-bottom:15px;
    color:#fff;
    font-size:13px
}

.footer-links {
    margin:0;
    padding:0;
    list-style:none
}

.footer-links li {
    margin:8px 0
}

.footer-links a {
    color:#b8c3d0;
    font-size:12px
}

.footer-links a:hover {
    color:var(--gold-light)
}

.footer-bottom {
    display:flex;
    justify-content:space-between;
    gap:15px;
    padding-top:18px;
    border-top:1px solid rgba(255,255,255,.13);
    color:#8796a9;
    font-size:10px
}

@media(max-width:1100px) {
    .nav-links {
        gap:11px
    }

    .nav-link {
        font-size:10px
    }

    .brand-copy strong {
        font-size:18px
    }

    .brand-copy small {
        font-size:9px
    }

}

@media(max-width:900px) {
    .header-inner {
        min-height:74px
    }

    .menu-toggle {
        display:grid;
        place-items:center;
        width:42px;
        height:42px;
        border:1px solid var(--line);
        border-radius:8px;
        background:#fff;
        cursor:pointer
    }

    .menu-toggle-lines,.menu-toggle-lines:before,.menu-toggle-lines:after {
        display:block;
        width:20px;
        height:2px;
        background:var(--navy);
        position:relative;
        transition:transform .2s
    }

    .menu-toggle-lines:before,.menu-toggle-lines:after {
        position:absolute;
        left:0;
        content:""
    }

    .menu-toggle-lines:before {
        top:-6px
    }

    .menu-toggle-lines:after {
        top:6px
    }

    .menu-toggle[aria-expanded="true"] .menu-toggle-lines {
        background:transparent
    }

    .menu-toggle[aria-expanded="true"] .menu-toggle-lines:before {
        top:0;
        transform:rotate(45deg)
    }

    .menu-toggle[aria-expanded="true"] .menu-toggle-lines:after {
        top:0;
        transform:rotate(-45deg)
    }

    .nav-links {
        display:none;
        position:absolute;
        top:74px;
        left:0;
        right:0;
        align-items:stretch;
        gap:0;
        padding:12px 24px 22px;
        border-top:1px solid var(--line);
        background:#fff;
        box-shadow:0 16px 24px rgba(16,45,80,.12)
    }

    .nav-links.is-open {
        display:flex;
        flex-direction:column
    }

    .nav-link {
        padding:11px 0;
        font-size:13px
    }

    .nav-link:after {
        bottom:5px;
        right:auto;
        width:35px
    }

    .nav-cta {
        align-self:flex-start;
        margin:12px 0 0
    }

    .split {
        grid-template-columns:1fr;
        gap:30px
    }

    .cards.four,.cards.five {
        grid-template-columns:repeat(2,minmax(0,1fr))
    }

    .stats {
        grid-template-columns:repeat(2,1fr)
    }

}

@media(max-width:640px) {
    .container {
        width:calc(100% - 34px)
    }

    .hero {
        min-height:530px;
        background-position:58% center
    }

    .hero-content {
        padding:68px 0 75px
    }

    .hero h1 {
        font-size:clamp(38px,10vw,52px);
        letter-spacing:-.8px
    }

    .hero p {
        font-size:14px
    }

    .value-band .four {
        grid-template-columns:repeat(2,minmax(0,1fr))
    }

    .value-band article {
        min-height:160px;
        padding:24px 12px
    }

    .value-band article:nth-child(2) {
        border-right:0
    }

    .value-band article:nth-child(-n+2) {
        border-bottom:1px solid rgba(16,45,80,.09)
    }

    .section {
        padding:58px 0
    }

    .cards.three,.cards.two,.cards.four,.cards.five,.gallery {
        grid-template-columns:1fr
    }

    .cards article {
        padding:24px
    }

    .callout {
        align-items:flex-start;
        flex-direction:column;
        padding:30px 24px
    }

    .page-hero {
        min-height:300px
    }

    .page-hero .container {
        padding:54px 0
    }

    .page-hero h1 {
        font-size:clamp(36px,9vw,48px)
    }

    .photo {
        min-height:250px
    }

    .footer-grid {
        grid-template-columns:1fr 1fr;
        gap:28px
    }

    .footer-grid>div:first-child {
        grid-column:1/-1
    }

    .footer-bottom {
        flex-direction:column
    }

    .report {
        align-items:flex-start
    }

}

@media(prefers-reduced-motion:reduce) {
    html {
        scroll-behavior:auto
    }

    *,*:before,*:after {
        transition:none!important;
        animation:none!important
    }

}
.brand {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-shrink: 0;
}

.brand-logo {
    width: 62px;
    height: 62px;
    object-fit: contain;
    display: block;
    flex-shrink: 0;
    border-radius: 50%;
    background: #fff;
}

.brand-copy {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
}

.brand-copy strong {
    font-size: 20px;
    font-weight: 700;
}

.brand-copy small {
    font-size: 10px;
}

@media (max-width: 640px) {
    .brand-logo {
        width: 50px;
        height: 50px;
    }
}