/* =========================================================
   PAGE BASICS
   ========================================================= */

html {
    scroll-behavior: smooth;
}

body {
    margin: 0;

    font-family: Arial, sans-serif;

    background-color: #fffbea;
    color: #17324d;
}

* {
    box-sizing: border-box;
}


/* ---------- KEYBOARD ACCESSIBILITY ---------- */

a:focus-visible {
    outline: 3px solid #4a97b8;
    outline-offset: 3px;
}


/* =========================================================
   HERO
   ========================================================= */

.hero {
    position: relative;

    display: flex;
    align-items: flex-start;

    min-height: 720px;

    padding: 4rem 7vw;

    overflow: hidden;
}

.hero-content {
    position: relative;

    z-index: 2;

    max-width: 760px;
}

.hero-name {
    margin: 0 0 1rem;

    color: #2f6f8f;

    font-size: 1.4rem;
    font-weight: 700;
    letter-spacing: 0.18em;
}

.hero h1 {
    margin: 0;

    color: #17324d;

    font-size: clamp(2rem, 2.6vw, 2.9rem);
    line-height: 1.05;
    font-weight: 700;
}

.hero h1 .specialty {
    color: #17324d;

    font-weight: 700;

    white-space: nowrap;
}

.hero h1 .divider {
    color: #4a97b8;

    font-weight: 400;
}

.hero-description {
    max-width: 700px;

    margin: 1.75rem 0 0;

    color: #4b6278;

    font-size: 1.15rem;
    line-height: 1.75;
}


/* ---------- HERO BUTTONS ---------- */

.hero-actions {
    display: flex;
    flex-wrap: wrap;

    gap: 0.9rem;

    margin-top: 2rem;
}

.button {
    display: inline-block;

    padding: 0.85rem 1.25rem;

    border-radius: 8px;

    font-weight: 600;
    text-decoration: none;

    transition:
        transform 0.2s ease,
        border-color 0.2s ease,
        background-color 0.2s ease;
}

.button:hover {
    transform: translateY(-2px);
}

.button.primary {
    background-color: #17324d;
    color: #ffffff;
}

.button.secondary {
    border: 1px solid #8aa6b8;

    background-color: transparent;

    color: #17324d;
}

.button-icon {
    width: 18px;
    height: 18px;

    margin-right: 0.4rem;

    vertical-align: -3px;

    fill: currentColor;
}

.linkedin-icon {
    width: 18px;
    height: 18px;

    margin-right: 0.4rem;

    vertical-align: -3px;
}


/* ---------- HERO IMAGE ---------- */

.hero-image {
    position: absolute;

    right: 2vw;
    top: 50%;

    width: 68%;

    transform: translateY(-50%);

    z-index: 1;
}

.hero-image img {
    display: block;

    width: 100%;
    height: auto;

    opacity: 0.85;

    mask-image:
        linear-gradient(to right,
            transparent 0%,
            transparent 12%,
            black 48%,
            black 100%);

    -webkit-mask-image:
        linear-gradient(to right,
            transparent 0%,
            transparent 12%,
            black 48%,
            black 100%);
}


/* ---------- HERO QUOTE ---------- */

.hero-quote {
    position: absolute;

    top: 8%;
    right: 6%;

    margin: 0;

    z-index: 3;

    color: #294d68;

    font-family: "Satisfy", cursive;
    font-size: 2.1rem;
    line-height: 1;
    font-weight: 400;

    white-space: nowrap;

    transform: rotate(-3deg);
}


/* =========================================================
   SHARED SECTION STYLES
   ========================================================= */

.section {
    padding: 6rem 7vw;
}

.section-inner {
    width: 100%;
    max-width: 1280px;

    margin: 0 auto;
}

.section-eyebrow {
    margin: 0 0 0.8rem;

    color: #2f6f8f;

    font-size: 0.9rem;
    font-weight: 700;
    letter-spacing: 0.16em;
}


/* =========================================================
   ABOUT ME
   ========================================================= */

.about {
    padding-top: 3rem;
    padding-bottom: 3rem;
    background-color: #fffbea;
}


/* ---------- ABOUT HEADING ---------- */

.about-heading {
    margin-bottom: 2.5rem;
}

.about-heading .section-eyebrow {
    display: inline-block;
    position: relative;

    margin-bottom: 1rem;

    font-size: 1rem;
}

.about-heading .section-eyebrow::after {
    content: "";

    display: block;

    width: 48px;
    height: 3px;

    margin-top: 0.65rem;

    background-color: #4a97b8;

    border-radius: 2px;
}


/* ---------- ABOUT MAIN LAYOUT ---------- */

.about-layout {
    display: grid;

    grid-template-columns: 1.35fr 1fr;

    gap: 4.5rem;

    align-items: start;
}


/* ---------- ABOUT COPY ---------- */

.about-copy {
    max-width: 720px;

    color: #4b6278;

    font-size: 1.15rem;
    line-height: 1.9;
}

.about-copy p {
    margin: 0;
}


/* ---------- PROFESSIONAL STRENGTHS ---------- */

.about-traits {
    display: grid;

    grid-template-columns: repeat(2, 1fr);

    gap: 1.75rem 2rem;
}

.trait {
    display: flex;
    align-items: center;

    gap: 0.9rem;

    color: #17324d;

    font-size: 1rem;
    font-weight: 600;
}

.trait-icon {
    width: 34px;
    height: 34px;

    flex-shrink: 0;

    stroke: #4a97b8;
    stroke-width: 1.8;
    fill: none;

    stroke-linecap: round;
    stroke-linejoin: round;
}


/* ---------- EDUCATION ---------- */

.education-card {
    position: relative;

    margin-top: 4rem;

    padding: 1.8rem 2rem 1.8rem 2.3rem;

    overflow: hidden;

    border: 1px solid #d7e3ea;
    border-radius: 14px;

    background:
        linear-gradient(135deg,
            #f4f8fb 0%,
            #ffffff 65%);
}

.education-accent {
    position: absolute;

    left: 0;
    top: 0;

    width: 6px;
    height: 100%;

    background-color: #4a97b8;
}

.education-grid {
    position: relative;

    z-index: 1;

    display: grid;

    grid-template-columns: 1fr 1fr;

    gap: 2.5rem;
}

.education-entry {
    min-width: 0;
}

.education-entry-completed {
    padding-left: 2.5rem;

    border-left: 1px solid #d7e3ea;
}

.education-label {
    margin: 0 0 0.45rem;

    color: #2f6f8f;

    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.14em;
}

.education-title {
    margin: 0;

    color: #17324d;

    font-size: 1.3rem;
    font-weight: 700;
}

.education-school {
    margin: 0.4rem 0 0;

    color: #294d68;

    font-size: 1rem;
    font-weight: 600;
}

.education-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;

    gap: 0.5rem;

    margin-top: 0.8rem;

    color: #5f7384;

    font-size: 0.95rem;
}

.education-meta strong {
    color: #17324d;
}

.education-divider {
    color: #4a97b8;
}


/* =========================================================
   KEY IMPACT
   ========================================================= */

.impact {
    padding-top: 3rem;
    padding-bottom: 3rem;
    background-color: #fffbea;
}


/* ---------- KEY IMPACT HEADING ---------- */

.impact-heading {
    margin-bottom: 2.75rem;
}

.impact-heading .section-eyebrow {
    display: inline-block;
    position: relative;

    margin-bottom: 1rem;

    font-size: 1rem;
}

.impact-heading .section-eyebrow::after {
    content: "";

    display: block;

    width: 48px;
    height: 3px;

    margin-top: 0.65rem;

    background-color: #4a97b8;

    border-radius: 2px;
}

.impact-heading h2 {
    max-width: 900px;

    margin: 0;

    color: #17324d;

    font-size: 1.65rem;
    line-height: 1.35;
    font-weight: 600;
}


/* ---------- IMPACT GRID ---------- */

.impact-grid {
    display: grid;

    grid-template-columns: repeat(4, 1fr);

    gap: 1.25rem;
}


/* ---------- IMPACT CARDS ---------- */

.impact-card {
    position: relative;

    padding: 2rem 1.5rem;

    border: 1px solid #d7e3ea;
    border-radius: 14px;

    background:
        linear-gradient(135deg,
            #f4f8fb 0%,
            #ffffff 70%);

    text-align: center;
}


/* ---------- IMPACT ICONS ---------- */

.impact-icon {
    display: flex;
    align-items: center;
    justify-content: center;

    width: 56px;
    height: 56px;

    margin: 0 auto 1.1rem;

    border-radius: 50%;

    background-color: #eef5f8;
}

.impact-icon svg {
    width: 30px;
    height: 30px;

    stroke: #4a97b8;
    stroke-width: 1.7;
    fill: none;

    stroke-linecap: round;
    stroke-linejoin: round;
}


/* ---------- IMPACT NUMBERS ---------- */

.impact-number {
    margin: 0;

    color: #2f6f8f;

    font-size: 2rem;
    font-weight: 700;
    line-height: 1.1;
}


/* ---------- IMPACT TITLES ---------- */

.impact-card h3 {
    margin: 1rem 0 0.75rem;

    color: #17324d;

    font-size: 1.05rem;
    line-height: 1.4;
}


/* ---------- IMPACT SUPPORTING TEXT ---------- */

.impact-card p:last-child {
    margin: 0;

    color: #63788a;

    font-size: 0.95rem;
    line-height: 1.55;
}


/* =========================================================
   SELECTED PROJECTS
   ========================================================= */

.projects {
    padding-top: 3rem;
    padding-bottom: 1.5rem;

    background-color: #fffbea;
}


/* ---------- PROJECTS HEADING ---------- */

.projects-heading {
    margin-bottom: 2.75rem;
}

.projects-heading .section-eyebrow {
    display: inline-block;
    position: relative;

    margin-bottom: 1rem;

    font-size: 1rem;
}

.projects-heading .section-eyebrow::after {
    content: "";

    display: block;

    width: 48px;
    height: 3px;

    margin-top: 0.65rem;

    background-color: #4a97b8;

    border-radius: 2px;
}

.projects-heading h2 {
    max-width: 900px;

    margin: 0;

    color: #17324d;

    font-size: 1.55rem;
    line-height: 1.4;
    font-weight: 600;

    text-wrap: balance;
}


/* ---------- PROJECT GRID ---------- */

.project-grid {
    display: grid;

    grid-template-columns: repeat(2, 1fr);

    gap: 2rem;

    align-items: stretch;
}


/* ---------- PROJECT CARDS ---------- */

.project-card {
    display: flex;
    flex-direction: column;

    height: 100%;

    overflow: hidden;

    border: 1px solid #d7e3ea;
    border-radius: 16px;

    background-color: #ffffff;
}


/* ---------- PROJECT IMAGE AREA ---------- */

.project-image {
    display: flex;
    align-items: center;
    justify-content: center;

    height: 200px;

    flex-shrink: 0;

    padding: 0;

    overflow: hidden;

    border-bottom: 1px solid #d7e3ea;

    background:
        linear-gradient(135deg,
            #edf4f7 0%,
            #f7fafb 100%);

    color: #577084;

    font-size: 0.95rem;
    font-weight: 600;
    text-align: center;
}

.project-image img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
}


/* ---------- PROJECT CONTENT ---------- */

.project-content {
    display: flex;
    flex-direction: column;

    flex: 1;

    padding: 2rem;
}


/* ---------- PROJECT TITLES ---------- */

.project-content h3 {
    margin: 0;

    color: #17324d;

    font-size: 1.35rem;
    line-height: 1.35;

    text-wrap: balance;
}

.project-content>h3,
.project-title-row {
    min-height: 3.65rem;
}


/* ---------- PROJECT DESCRIPTIONS ---------- */

.project-content>p:not(.project-tools):not(.project-footnote) {
    min-height: 4.4rem;

    margin-top: 1rem;
    margin-bottom: 0;

    color: #4b6278;

    font-size: 1rem;
    line-height: 1.7;

    text-wrap: pretty;
}


/* ---------- PROJECT TECHNOLOGIES ---------- */

.project-tools {
    margin-top: auto !important;
    margin-bottom: 0 !important;

    padding-top: 1.35rem;

    color: #2f6f8f !important;

    font-size: 0.9rem !important;
    font-weight: 700;
    line-height: 1.5 !important;

    text-wrap: pretty;
}


/* ---------- PROJECT LINKS ---------- */

.project-link {
    display: inline-block;

    align-self: flex-start;

    margin-top: 1.15rem;

    color: #236d8e;

    font-size: 0.95rem;
    font-weight: 700;

    text-decoration: none;
}

.project-link:hover {
    text-decoration: underline;
}


/* ---------- PET EMPORIUM STATUS ---------- */

.project-title-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;

    gap: 1rem;
}

.project-title-row h3 {
    flex: 1;

    min-width: 0;

    text-wrap: balance;
}

.status {
    flex-shrink: 0;

    margin-top: 0.1rem;

    padding: 0.4rem 0.7rem;

    border-radius: 999px;

    background-color: #e7f1f4;

    color: #2f6f8f;

    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
}


/* ---------- PROJECT FOOTNOTE ---------- */

.project-footnote {
    min-height: 0 !important;

    margin-top: 0.9rem !important;
    margin-bottom: 0 !important;

    color: #7b8d9c !important;

    font-size: 0.8rem !important;
    font-style: italic;
    line-height: 1.4 !important;
}


/* =========================================================
   FOOTER / LET'S CONNECT
   ========================================================= */

.footer {
    padding: 1.25rem 7vw 1.75rem;

    background-color: #fffbea;
}

.footer-inner {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;

    width: 100%;
    max-width: 1280px;

    margin: 0 auto;
}


/* ---------- COPYRIGHT ---------- */

.copyright {
    margin: 0;

    color: #718493;

    font-size: 0.8rem;
}


/* ---------- CONNECT CONTENT ---------- */

.footer-content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;

    margin-bottom: 0;
}

.footer-heading {
    margin: 0;

    color: #2f6f8f;

    font-size: 1rem;
    font-weight: 700;
    letter-spacing: 0.16em;
}


/* ---------- FOOTER ACCENT LINE ---------- */

.footer-line {
    width: 48px;
    height: 3px;

    margin: 0.65rem 0 1rem;

    background-color: #4a97b8;

    border-radius: 2px;
}


/* ---------- CONTACT ICONS ---------- */

.footer-links {
    display: flex;
    align-items: center;

    gap: 0.75rem;
}

.footer-links a {
    display: flex;
    align-items: center;
    justify-content: center;

    width: 42px;
    height: 42px;

    border: 1px solid #8aa6b8;
    border-radius: 50%;

    background-color: #ffffff;

    transition:
        transform 0.2s ease,
        border-color 0.2s ease;
}

.footer-links a:hover {
    transform: translateY(-2px);

    border-color: #4a97b8;
}


/* ---------- EMAIL ICON ---------- */

.footer-icon {
    width: 20px;
    height: 20px;

    fill: #17324d;
}


/* ---------- LINKEDIN ICON ---------- */

.footer-linkedin {
    display: block;

    width: 20px;
    height: 20px;
}


/* =========================================================
   RESPONSIVE LAYOUT
   ========================================================= */


/* =========================================================
   LARGE TABLET / SMALL DESKTOP
   ========================================================= */

@media (max-width: 1250px) {

    .hero-quote {
        display: none;
    }

}


/* =========================================================
   TABLET / NARROW DESKTOP
   ========================================================= */

@media (max-width: 1050px) {

    /* ---------- SHARED SECTION SPACING ---------- */

    .section {
        padding-left: 5vw;
        padding-right: 5vw;

        padding-top: 3.5rem;
        padding-bottom: 3.5rem;
    }


    /* ---------- HERO ---------- */

    .hero {
        padding-left: 5vw;
        padding-right: 5vw;
    }

    .hero-content {
        max-width: 650px;
    }

    .hero-image {
        right: -5vw;

        width: 72%;
    }


    /* ---------- ABOUT ---------- */

    .about {
        padding-top: 2.5rem;
        padding-bottom: 3rem;
    }

    .about-layout {
        grid-template-columns: 1fr;

        gap: 2.5rem;
    }

    .about-copy {
        max-width: 800px;
    }

    .about-traits {
        max-width: 650px;
    }

    .education-card {
        margin-top: 2.75rem;
    }


    /* ---------- KEY IMPACT ---------- */

    .impact {
        padding-top: 2.5rem;
        padding-bottom: 3rem;
    }

    .impact-grid {
        grid-template-columns: repeat(2, 1fr);

        gap: 1.5rem;
    }


    /* ---------- PROJECTS ---------- */

    .projects {
        padding-top: 2.5rem;
        padding-bottom: 3rem;
    }

    .project-grid {
        grid-template-columns: 1fr;

        max-width: 800px;

        margin: 0 auto;
    }

    .project-content>h3,
    .project-title-row {
        min-height: 0;
    }

    .project-content>p:not(.project-tools):not(.project-footnote) {
        min-height: 0;
    }

}


/* =========================================================
   SMALL TABLET
   ========================================================= */

@media (max-width: 820px) {

    /* ---------- SHARED SECTION SPACING ---------- */

    .section {
        padding-left: 6vw;
        padding-right: 6vw;

        padding-top: 2.75rem;
        padding-bottom: 2.75rem;
    }


    /* ---------- HERO ---------- */

    .hero {
        position: relative;

        display: block;

        min-height: 720px;

        padding: 3rem 6vw;

        overflow: hidden;
    }

    .hero-content {
        position: relative;

        z-index: 3;

        max-width: 620px;

        padding: 1.25rem 1.5rem 1.5rem;

        border-radius: 14px;

        background:
            linear-gradient(90deg,
                rgba(255, 251, 234, 0.96) 0%,
                rgba(255, 251, 234, 0.90) 72%,
                rgba(255, 251, 234, 0.55) 100%);
    }

    .hero h1 .specialty {
        white-space: normal;
    }

    .hero-description {
        max-width: 600px;
    }

    .hero-image {
        position: absolute;

        left: 0;
        right: 0;
        bottom: 0;
        top: auto;

        width: 100%;

        margin: 0;

        transform: none;

        z-index: 1;
    }

    .hero-image img {
        display: block;

        width: 100%;
        height: 100%;

        object-fit: cover;
        object-position: center;

        opacity: 0.92;

        mask-image: none;
        -webkit-mask-image: none;
    }


    /* ---------- ABOUT ---------- */

    .about {
        padding-top: 2.25rem;
        padding-bottom: 2.5rem;
    }

    .about-heading {
        margin-bottom: 2rem;
    }

    .about-layout {
        gap: 2rem;
    }

    .education-card {
        margin-top: 2.25rem;
    }


    /* ---------- EDUCATION ---------- */

    .education-grid {
        grid-template-columns: 1fr;

        gap: 1.75rem;
    }

    .education-entry-completed {
        padding-top: 1.75rem;
        padding-left: 0;

        border-top: 1px solid #d7e3ea;
        border-left: 0;
    }


    /* ---------- KEY IMPACT ---------- */

    .impact {
        padding-top: 2.25rem;
        padding-bottom: 2.5rem;
    }

    .impact-heading {
        margin-bottom: 2rem;
    }


    /* ---------- PROJECTS ---------- */

    .projects {
        padding-top: 2.25rem;
        padding-bottom: 2.5rem;
    }

    .projects-heading {
        margin-bottom: 2.25rem;
    }

    .project-image {
        height: 220px;
    }


    /* ---------- FOOTER ---------- */

    .footer {
        padding-left: 6vw;
        padding-right: 6vw;
    }

}


/* =========================================================
   PHONE / VERY NARROW SCREEN
   ========================================================= */

@media (max-width: 600px) {

    /* ---------- SHARED SECTION SPACING ---------- */

    .section {
        padding-left: 1.25rem;
        padding-right: 1.25rem;

        padding-top: 2rem;
        padding-bottom: 2rem;
    }


    /* ---------- HERO ---------- */

    .hero {
        min-height: auto;

        padding: 1.75rem 1.25rem 2rem;
    }

    .hero-content {
        max-width: none;

        padding: 0.75rem 0 1rem;

        border-radius: 0;

        background: transparent;
    }

    .hero-name {
        font-size: 1.1rem;
        letter-spacing: 0.14em;
    }

    .hero h1 {
        font-size: 2rem;
        line-height: 1.15;
    }

    .hero-description {
        font-size: 1.05rem;
        line-height: 1.65;
    }

    .hero-actions {
        gap: 0.75rem;
    }

    .button {
        padding: 0.8rem 1rem;
    }


    /* ---------- PHONE HERO IMAGE ---------- */

    .hero-image {
        position: relative;

        left: auto;
        right: auto;
        top: auto;
        bottom: auto;

        width: calc(100% + 2.5rem);

        margin-left: -1.25rem;
        margin-top: 0.5rem;

        transform: none;

        z-index: 1;
    }

    .hero-image img {
        display: block;

        width: 100%;
        height: 230px;

        object-fit: cover;
        object-position: center center;

        opacity: 1;

        mask-image: none;
        -webkit-mask-image: none;
    }


    /* ---------- ABOUT ---------- */

    .about {
        padding-top: 1.75rem;
        padding-bottom: 2rem;
    }

    .about-heading {
        margin-bottom: 1.75rem;
    }

    .about-copy {
        font-size: 1.05rem;
        line-height: 1.75;
    }

    .about-layout {
        gap: 1.75rem;
    }

    .about-traits {
        grid-template-columns: 1fr;

        gap: 1.15rem;
    }

    .education-card {
        margin-top: 2rem;

        padding: 1.5rem 1.25rem 1.5rem 1.6rem;
    }


    /* ---------- KEY IMPACT ---------- */

    .impact {
        padding-top: 1.75rem;
        padding-bottom: 2rem;
    }

    .impact-heading {
        margin-bottom: 1.75rem;
    }

    .impact-grid {
        grid-template-columns: 1fr;

        gap: 1.25rem;
    }

    .impact-card {
        padding: 1.75rem 1.25rem;
    }

    .impact-heading h2 {
        font-size: 1.4rem;
    }


    /* ---------- PROJECTS ---------- */

    .projects {
        padding-top: 1.75rem;
        padding-bottom: 1.75rem;
    }

    .projects-heading {
        margin-bottom: 1.75rem;
    }

    .projects-heading h2 {
        font-size: 1.35rem;
    }

    .project-grid {
        gap: 1.5rem;
    }

    .project-image {
        height: 180px;
    }

    .project-content {
        padding: 1.5rem;
    }

    .project-content h3 {
        font-size: 1.2rem;
    }

    .project-title-row {
        flex-direction: column;

        gap: 0.65rem;
    }

    .status {
        align-self: flex-start;
    }


    /* ---------- FOOTER ---------- */

    .footer {
        padding: 1.5rem 1.25rem;
    }

    .footer-inner {
        flex-direction: column;

        align-items: flex-start;

        gap: 1.5rem;
    }

    .footer-content {
        order: 1;
    }

    .copyright {
        order: 2;
    }

}


/* =========================================================
   EXTRA-NARROW PHONE
   ========================================================= */

@media (max-width: 480px) {

    /* ---------- HERO ---------- */

    .hero {
        padding-bottom: 0;
    }

    .hero-image {
        width: calc(100% + 2.5rem);

        margin-left: -1.25rem;
        margin-top: 0;

        overflow: hidden;
    }

    .hero-image img {
        width: 100%;
        height: 190px;

        object-fit: cover;
        object-position: center 58%;

        mask-image:
            linear-gradient(to bottom,
                transparent 0%,
                black 18%,
                black 100%);

        -webkit-mask-image:
            linear-gradient(to bottom,
                transparent 0%,
                black 18%,
                black 100%);
    }


    /* ---------- ABOUT ---------- */

    .about {
        padding-top: 1.25rem;
    }

}