/*
    custom.css
    Site-specific styles for Michael N. Stewart's portfolio.
    Place this in assets/css/ and link it in every page <head>
    AFTER main.css (and after any theme override file):

        <link rel="stylesheet" href="assets/css/main.css" />
        <link rel="stylesheet" href="assets/css/custom.css" />

    Sections
    --------
    1.  Sidebar sub-navigation
    2.  Slim sidebar  (project pages only — scoped to body.is-project-page)
    3.  Project page content area
    4.  Project series navigation bar
    5.  Mobile hamburger menu  (<= 736px)
*/


/* ==============================================
   1. SIDEBAR SUB-NAVIGATION
   ============================================== */

/* Caret icon sits at the left of the "Work samples" link text */
.has-subnav-item > a .subnav-chevron {
    font-size: 0.8em;
    display: inline-block;
    margin-right: 0.5em;
    transform: rotate(0deg);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s ease;
    transform-origin: center center;
}

.has-subnav-item > a[aria-expanded="true"] .subnav-chevron {
    transform: rotate(90deg);
}

/* Sub-nav list — hidden by default, revealed via .open */
.subnav {
    list-style: none;
    padding: 0;
    margin: 0;
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s ease, opacity 0.3s ease;
    opacity: 0;
}

.subnav.open {
    max-height: 600px;
    opacity: 1;
}

.subnav li {
    margin: 0;
    padding: 0;
}

/* Sub-nav links share the same right-aligned uppercase style as
   the main sidebar nav, but slightly smaller */
.subnav li a {
    display: block;
    color: rgba(255, 255, 255, 0.25) !important;
    font-size: 0.55em !important;
    letter-spacing: 0.2em !important;
    padding: 0.65em 0 !important;
    text-transform: uppercase;
    text-decoration: none;
    border: 0 !important;
    text-align: right;
    transition: color 0.2s ease;
    position: relative;
}

/* Gradient underline bar (same mechanic as main sidebar nav) */
.subnav li a:before,
.subnav li a:after {
    border-radius: 0.2em;
    bottom: 0;
    content: '';
    height: 0.15em;
    position: absolute;
    right: 0;
    width: 80%;
}

.subnav li a:before {
    background: #3c2c62;
}

.subnav li a:after {
    background-image: linear-gradient(to right, #5e42a6, #b74e91);
    transition: max-width 0.2s ease;
    max-width: 0;
}

.subnav li a:hover {
    color: rgba(255, 255, 255, 0.5) !important;
}

.subnav li a:hover:after,
.subnav li a.active:after {
    max-width: 80%;
}

.subnav li a.active {
    color: rgba(255, 255, 255, 0.85) !important;
}


/* ==============================================
   2. SLIM SIDEBAR  (project pages only)
   ============================================== */

/* Collapse to half-width; labels hidden, only indicator dots show.
   Hovering expands back to full width with labels fading in. */

body.is-project-page #sidebar {
    width: 9em;
    padding: 2.5em 1.25em 0.5em 1.25em;
    transition: width 0.35s ease, padding 0.35s ease;
}

body.is-project-page #sidebar:hover {
    width: 18em;
    padding: 2.5em 2.5em 0.5em 2.5em;
}

body.is-project-page #sidebar + #wrapper {
    margin-left: 9em;
    transition: margin-left 0.35s ease;
}

body.is-project-page #sidebar + #wrapper + #footer {
    margin-left: 9em;
    transition: margin-left 0.35s ease;
}

/* Nav link labels: hidden on slim, revealed on hover */
body.is-project-page #sidebar nav a .nav-label {
    opacity: 0;
    max-width: 0;
    overflow: hidden;
    display: inline-block;
    transition: opacity 0.25s ease 0s, max-width 0.35s ease;
    white-space: nowrap;
    vertical-align: middle;
}

body.is-project-page #sidebar:hover nav a .nav-label {
    opacity: 1;
    max-width: 200px;
    transition: opacity 0.25s ease 0.15s, max-width 0.35s ease;
}

/* Indicator dots: visible on slim, hidden when expanded */
body.is-project-page #sidebar nav a .nav-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.25);
    vertical-align: middle;
    transition: opacity 0.2s ease, background 0.2s ease;
    flex-shrink: 0;
}

body.is-project-page #sidebar:hover nav a .nav-dot {
    opacity: 0;
    width: 0;
    margin: 0;
    transition: opacity 0.15s ease, width 0.3s ease 0.05s;
}

body.is-project-page #sidebar nav a {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5em;
    overflow: hidden;
}

body.is-project-page #sidebar nav a.active .nav-dot {
    background: rgba(255, 255, 255, 0.75);
}

/* Home shortcut at the top of the slim sidebar */
.sidebar-home {
    display: block;
    text-align: right;
    margin-bottom: 1.5em;
    padding-bottom: 1.5em;
    border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.sidebar-home a {
    color: rgba(255, 255, 255, 0.3);
    font-size: 0.55em;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    text-decoration: none;
    border: 0;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5em;
    transition: color 0.2s ease;
}

.sidebar-home a:hover {
    color: rgba(255, 255, 255, 0.6);
}

.sidebar-home .home-label {
    opacity: 0;
    max-width: 0;
    overflow: hidden;
    display: inline-block;
    transition: opacity 0.25s ease 0s, max-width 0.35s ease;
    white-space: nowrap;
}

body.is-project-page #sidebar:hover .sidebar-home .home-label {
    opacity: 1;
    max-width: 200px;
    transition: opacity 0.25s ease 0.15s, max-width 0.35s ease;
}

.sidebar-home .home-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.25);
    flex-shrink: 0;
    transition: opacity 0.2s ease, width 0.3s ease;
}

body.is-project-page #sidebar:hover .sidebar-home .home-dot {
    opacity: 0;
    width: 0;
}

/* Sub-nav caret on slim sidebar: hidden until hover reveals it */
body.is-project-page #sidebar .has-subnav-item > a .subnav-chevron {
    opacity: 0;
}

body.is-project-page #sidebar:hover .has-subnav-item > a .subnav-chevron {
    opacity: 0.4;
}

body.is-project-page #sidebar:hover .has-subnav-item > a[aria-expanded="true"] .subnav-chevron {
    color: rgba(255, 255, 255, 0.85);
    opacity: 0.9;
}

/* Sub-nav item labels on slim sidebar */
.subnav li a .sub-label {
    opacity: 0;
    max-width: 0;
    overflow: hidden;
    display: inline-block;
    transition: opacity 0.25s ease 0s, max-width 0.35s ease;
    white-space: nowrap;
}

body.is-project-page #sidebar:hover .subnav li a .sub-label {
    opacity: 1;
    max-width: 200px;
    transition: opacity 0.25s ease 0.15s, max-width 0.35s ease;
}

/* Sub-nav indicator dots on slim sidebar */
.subnav li a .sub-dot-slim {
    display: inline-block;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.2);
    flex-shrink: 0;
    transition: background 0.2s ease, opacity 0.15s ease, width 0.3s ease;
}

body.is-project-page #sidebar:hover .subnav li a .sub-dot-slim {
    opacity: 0;
    width: 0;
}

.subnav li a:hover .sub-dot-slim,
.subnav li a.active .sub-dot-slim {
    background: rgba(255, 255, 255, 0.6);
}

/* Project pages: slim sidebar overrides don't apply at mobile
   (the hamburger menu takes over at <= 736px) */
@media screen and (max-width: 736px) {
    body.is-project-page #sidebar + #wrapper,
    body.is-project-page #sidebar + #wrapper + #footer {
        margin-left: 0;
    }
}


/* ==============================================
   3. PROJECT PAGE CONTENT AREA
   ============================================== */

.project-content {
    padding: 4em 0;
}

.project-content .inner {
    max-width: 960px;
    margin: 0 auto;
    padding-left: 2em;
    padding-right: 2em;
}

/* Back breadcrumb link */
.breadcrumb {
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
    font-size: 0.65em;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.3);
    text-decoration: none;
    border: 0;
    margin-bottom: 2.5em;
    transition: color 0.2s ease;
}

.breadcrumb:hover {
    color: rgba(255, 255, 255, 0.6);
}

.breadcrumb:before {
    content: '\2190';
    font-size: 1.2em;
}


/* ==============================================
   4. PROJECT SERIES NAVIGATION BAR
   ============================================== */

.project-nav-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 4em;
    padding-top: 2.5em;
    border-top: 1px solid rgba(255, 255, 255, 0.07);
    gap: 1em;
}

.project-nav-bar a,
.project-nav-bar span {
    display: inline-flex;
    align-items: center;
    gap: 0.5em;
    font-size: 0.6em;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    font-weight: bold;
    padding: 0.9em 1.6em;
    border-radius: 0.2em;
    text-decoration: none;
    border: 0;
    transition: background 0.2s ease, color 0.2s ease;
    white-space: nowrap;
}

.project-nav-bar a {
    background: rgba(255, 255, 255, 0.06);
    color: rgba(255, 255, 255, 0.7);
}

.project-nav-bar a:hover {
    background: rgba(255, 255, 255, 0.1);
    color: #ffffff;
}

/* Home / "All work" button — slightly more prominent */
.project-nav-bar a.nav-home {
    background: rgba(94, 66, 166, 0.35);
    color: rgba(255, 255, 255, 0.75);
}

.project-nav-bar a.nav-home:hover {
    background: rgba(94, 66, 166, 0.55);
    color: #ffffff;
}

/* Disabled state (first / last in series) */
.project-nav-bar span.nav-disabled {
    background: transparent;
    color: rgba(255, 255, 255, 0.18);
    cursor: default;
    border: 1px solid rgba(255, 255, 255, 0.06);
}


/* ==============================================
   5. MOBILE HAMBURGER MENU  (<= 736px)
   ============================================== */

/* Hidden above mobile breakpoint */
#mobile-menu-toggle,
#mobile-nav-overlay {
    display: none;
}

@media screen and (max-width: 736px) {

    /* Fixed button — top-left corner */
    #mobile-menu-toggle {
        display: flex;
        align-items: center;
        justify-content: center;
        position: fixed;
        top: 0;
        left: 0;
        z-index: 20000;
        width: 56px;
        height: 56px;
        background: #312450;
        border: 0;
        cursor: pointer;
        padding: 0;
        box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.35);
    }

    /* Three-bar icon */
    .hb-bar {
        display: block;
        position: absolute;
        left: 14px;
        height: 2px;
        border-radius: 2px;
        background: rgba(255, 255, 255, 0.7);
        transition: transform  0.3s cubic-bezier(0.4, 0, 0.2, 1),
                    opacity    0.2s ease,
                    top        0.3s cubic-bezier(0.4, 0, 0.2, 1),
                    width      0.3s ease;
    }

    .hb-bar:nth-child(1) { top: 18px; width: 28px; }
    .hb-bar:nth-child(2) { top: 27px; width: 22px; }
    .hb-bar:nth-child(3) { top: 36px; width: 28px; }

    /* Morph to X when open */
    #mobile-menu-toggle.is-open .hb-bar:nth-child(1) { top: 27px; width: 28px; transform: rotate(45deg);  }
    #mobile-menu-toggle.is-open .hb-bar:nth-child(2) { opacity: 0; transform: scaleX(0); }
    #mobile-menu-toggle.is-open .hb-bar:nth-child(3) { top: 27px; width: 28px; transform: rotate(-45deg); }

    /* Full-screen overlay */
    #mobile-nav-overlay {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 19000;
        background: #1e1533;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        padding: 72px 0 40px;
        opacity: 0;
        pointer-events: none;
        transform: translateY(-12px);
        transition: opacity 0.3s ease, transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    }

    #mobile-nav-overlay.is-open {
        opacity: 1;
        pointer-events: all;
        transform: translateY(0);
    }

    #mobile-nav-overlay nav ul {
        list-style: none;
        margin: 0;
        padding: 0;
    }

    /* Top-level items — 60px min-height for finger-friendly tap targets */
    #mobile-nav-overlay nav > ul > li {
        border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    }

    #mobile-nav-overlay nav > ul > li > a {
        display: flex;
        align-items: center;
        gap: 0.75em;
        padding: 0 28px;
        min-height: 60px;
        color: rgba(255, 255, 255, 0.6);
        font-size: 0.75em;
        font-weight: bold;
        letter-spacing: 0.2em;
        text-transform: uppercase;
        text-decoration: none;
        border: 0;
        transition: color 0.2s ease, background 0.2s ease;
    }

    #mobile-nav-overlay nav > ul > li > a:active {
        color: #ffffff;
        background: rgba(255, 255, 255, 0.04);
    }

    /* Work Samples accordion trigger */
    .mob-has-subnav {
        cursor: pointer;
    }

    .mob-caret {
        font-size: 0.85em;
        opacity: 0.4;
        display: inline-block;
        transform: rotate(0deg);
        transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease;
        transform-origin: center;
        flex-shrink: 0;
        margin-right: 0.4em;
    }

    .mob-has-subnav.open .mob-caret {
        transform: rotate(90deg);
        opacity: 0.9;
    }

    /* Mobile sub-nav list */
    .mob-subnav {
        list-style: none;
        margin: 0;
        padding: 0;
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.4s ease, opacity 0.3s ease;
        opacity: 0;
        background: rgba(0, 0, 0, 0.15);
    }

    .mob-subnav.open {
        max-height: 700px;
        opacity: 1;
    }

    /* Sub-items — 52px min-height */
    .mob-subnav li a {
        display: flex;
        align-items: center;
        gap: 0.75em;
        padding: 0 28px 0 44px;
        min-height: 52px;
        color: rgba(255, 255, 255, 0.35);
        font-size: 0.65em;
        letter-spacing: 0.18em;
        text-transform: uppercase;
        text-decoration: none;
        border: 0;
        border-bottom: 1px solid rgba(255, 255, 255, 0.04);
        transition: color 0.2s ease, background 0.2s ease;
    }

    .mob-subnav li:last-child a {
        border-bottom: 0;
    }

    .mob-subnav li a:active {
        color: rgba(255, 255, 255, 0.8);
        background: rgba(255, 255, 255, 0.04);
    }

    .mob-subnav li a.active {
        color: #ffffff;
    }

    /* Bullet dot before each sub-item */
    .mob-subnav li a::before {
        content: '';
        display: inline-block;
        width: 4px;
        height: 4px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.2);
        flex-shrink: 0;
    }

}


/* ==============================================
   6. CASE STUDY CONTENT STYLES
   ============================================== */

/* Subtitle / tagline under the project title */
.case-subtitle {
    font-size: 1.1em;
    color: rgba(255, 255, 255, 0.6);
    font-style: italic;
    margin-bottom: 2em;
    line-height: 1.5;
}

/* Summary metadata table */
.case-meta {
    border-left: 3px solid rgba(255, 255, 255, 0.12);
    padding-left: 1.5em;
    margin: 2em 0;
}

.case-meta-row {
    display: flex;
    gap: 1.5em;
    padding: 0.65em 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.case-meta-row:last-child {
    border-bottom: 0;
}

.case-meta-label {
    font-size: 0.6em;
    font-weight: bold;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.4);
    min-width: 10em;
    padding-top: 0.2em;
    flex-shrink: 0;
}

.case-meta-detail {
    font-size: 0.85em;
    color: rgba(255, 255, 255, 0.65);
    line-height: 1.6;
}

/* Disclosure sections (Key decisions / Outcomes) */
.case-disclosure {
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 0.3em;
    margin: 1.5em 0;
    overflow: hidden;
}

.case-disclosure summary {
    list-style: none;
    cursor: pointer;
    padding: 1em 1.25em;
    background: rgba(255, 255, 255, 0.04);
    display: flex;
    align-items: flex-start;
    gap: 0.75em;
    transition: background 0.2s ease;
}

.case-disclosure summary::-webkit-details-marker { display: none; }

.case-disclosure summary:hover {
    background: rgba(255, 255, 255, 0.07);
}

/* Caret sits inline before the teaser text */
.case-disclosure-summary-row {
    display: flex;
    align-items: baseline;
    gap: 0.35em;
}

.case-disclosure-icon {
    font-size: 0.8em;
    opacity: 0.4;
    flex-shrink: 0;
    transition: transform 0.25s ease, opacity 0.2s ease;
    display: inline-block;
}

.case-disclosure[open] .case-disclosure-icon {
    transform: rotate(90deg);
    opacity: 0.8;
}

/* Head column: title on one line, teaser below it */
.case-disclosure-head {
    display: flex;
    flex-direction: column;
    gap: 0.3em;
}

.case-outcomes-title {
    font-size: 0.7em;
    font-weight: bold;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.7);
    line-height: 1.4;
}

.case-disclosure-teaser {
    font-size: 0.72em;
    color: rgba(255, 255, 255, 0.35);
    font-style: italic;
    line-height: 1.4;
}

.case-disclosure-body {
    padding: 1.25em 1.5em;
    border-top: 1px solid rgba(255, 255, 255, 0.07);
}

/* Individual decision items */
.case-decisions {
    display: flex;
    flex-direction: column;
    gap: 1.5em;
}

.case-decision-title {
    font-size: 0.85em;
    font-weight: bold;
    color: rgba(255, 255, 255, 0.75);
    margin-bottom: 0.6em;
}

.case-decision-kv {
    display: flex;
    flex-direction: column;
    gap: 0.35em;
}

.case-decision-kv > div {
    font-size: 0.8em;
    display: flex;
    gap: 0.75em;
    line-height: 1.5;
}

.case-decision-kv .k {
    font-weight: bold;
    color: rgba(255, 255, 255, 0.4);
    min-width: 7em;
    flex-shrink: 0;
    font-size: 0.9em;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.case-decision-kv .v {
    color: rgba(255, 255, 255, 0.6);
}

/* KPI highlights */
.case-kpis {
    display: flex;
    gap: 1.5em;
    margin-bottom: 1.5em;
    flex-wrap: wrap;
}

.case-kpi {
    text-align: center;
    min-width: 80px;
}

.case-kpi-value {
    font-size: 1.5em;
    font-weight: bold;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.1;
}

.case-kpi-label {
    font-size: 0.65em;
    color: rgba(255, 255, 255, 0.4);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    margin-top: 0.25em;
}

/* Outcomes list */
.case-outcomes-list {
    margin: 0.75em 0 1em 1.25em;
    color: rgba(255, 255, 255, 0.6);
    font-size: 0.9em;
    line-height: 1.7;
}

.case-outcomes-list li {
    margin-bottom: 0.6em;
    list-style: disc;
}

.case-outcomes-subtitle {
    font-size: 0.65em;
    font-weight: bold;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.35);
    margin: 1.25em 0 0.5em;
}

.case-changes-list {
    margin: 0 0 1em 1.25em;
    color: rgba(255, 255, 255, 0.55);
    font-size: 0.85em;
    line-height: 1.7;
}

.case-changes-list li {
    list-style: disc;
    margin-bottom: 0.3em;
}

.case-measured {
    font-size: 0.85em;
    color: rgba(255, 255, 255, 0.5);
    font-style: italic;
    line-height: 1.6;
}

/* Blockquote / testimonial */
.case-quote {
    border-left: 3px solid rgba(255, 255, 255, 0.15);
    margin: 2em 0;
    padding: 0.75em 0 0.75em 1.5em;
}

.case-quote p {
    font-size: 1em;
    font-style: italic;
    color: rgba(255, 255, 255, 0.6);
    line-height: 1.6;
    margin-bottom: 0.4em;
}

.case-quote cite {
    font-size: 0.75em;
    color: rgba(255, 255, 255, 0.35);
    letter-spacing: 0.1em;
}

/* Image caption helper */
.case-img-caption {
    font-size: 0.75em;
    color: rgba(255, 255, 255, 0.35);
    margin-top: -1em;
    margin-bottom: 1.5em;
    font-style: italic;
}

/* Image gallery grid (replaces fotorama) */
.case-gallery {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1em;
    margin: 2em 0;
}

.case-gallery a {
    display: block;
    border: 0;
}

.case-gallery img {
    width: 100%;
    height: 200px;
    object-fit: cover;
    border-radius: 0.2em;
    display: block;
    transition: opacity 0.2s ease;
}

.case-gallery a:hover img {
    opacity: 0.85;
}

.case-gallery figcaption {
    font-size: 0.7em;
    color: rgba(255, 255, 255, 0.35);
    padding: 0.4em 0 0;
    line-height: 1.4;
}

@media screen and (max-width: 736px) {
    .case-meta-row {
        flex-direction: column;
        gap: 0.3em;
    }
    .case-meta-label {
        min-width: auto;
    }
    .case-kpis {
        gap: 1em;
    }
}


/* ==============================================
   7. BASE FONT SIZE  (reduced by 1pt from main.css defaults)
   ============================================== */

body, input, select, textarea {
    font-size: 15.5pt;
}

@media screen and (max-width: 1680px) {
    body, input, select, textarea {
        font-size: 12pt;
    }
}

@media screen and (max-width: 1280px) {
    body, input, select, textarea {
        font-size: 11pt;
    }
}

@media screen and (max-width: 360px) {
    body, input, select, textarea {
        font-size: 10pt;
    }
}


/* ==============================================
   8. PROJECT PAGE HEADING SIZE
   h1 in main.css is 2.75em — reduced here for
   project page titles which tend to be long
   ============================================== */

.project-content h1.major {
    font-size: 1.75em;
}

@media screen and (max-width: 736px) {
    .project-content h1.major {
        font-size: 1.4em;
    }
}


/* ==============================================
   9. PROOF BAR  (intro section)
   ============================================== */

.proof-bar {
    margin: 1.5em 0 2em;
    padding: 1.25em 1.5em;
    border-left: 3px solid rgba(255, 255, 255, 0.2);
}

.proof-metrics {
    list-style: none;
    margin: 0 0 0.9em;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5em 2em;
}

.proof-metrics li {
    font-size: 0.8em;
    color: rgba(255, 255, 255, 0.6);
    letter-spacing: 0.05em;
}

.proof-metric {
    font-weight: bold;
    font-size: 1.2em;
    color: #ffffff;
    margin-right: 0.2em;
}

.proof-leadership {
    font-size: 0.75em;
    color: rgba(255, 255, 255, 0.45);
    font-style: italic;
    margin: 0;
    line-height: 1.6;
}


/* ==============================================
   10. LINKEDIN PERSISTENT BUTTON (upper-right)
   ============================================== */

#linkedin-btn {
    position: fixed;
    top: 16px;
    right: 20px;
    z-index: 10001;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background: transparent;
    color: #5ab882;
    text-decoration: none;
    border: 0;
    transition: color 0.2s ease, transform 0.2s ease;
}

#linkedin-btn:hover {
    color: #ffffff;
    transform: scale(1.15);
    background: transparent;
}

#linkedin-btn .fa {
    font-size: 1.5em;
}

#resume-btn {
    position: fixed;
    top: 16px;
    right: 64px;
    z-index: 10001;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background: transparent;
    color: #5ab882;
    text-decoration: none;
    border: 0;
    transition: color 0.2s ease, transform 0.2s ease;
}

#resume-btn:hover {
    color: #ffffff;
    transform: scale(1.15);
    background: transparent;
}

#resume-btn .fa {
    font-size: 1.5em;
}


/* ==============================================
   11. ABOUT SECTION PORTRAIT
   Constrain the illustrated portrait so it
   doesn't fill the entire split column
   ============================================== */

#four .image.fit img {
    max-width: 520px;
    width: 100%;
    display: block;
    margin: 0 auto;
}


/* ==============================================
   12. BACK TO TOP BUTTON
   ============================================== */

#back-to-top {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 10000;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.08);
    color: rgba(255, 255, 255, 0.4);
    border-radius: 4px;
    text-decoration: none;
    border: 1px solid rgba(255, 255, 255, 0.1);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease, color 0.2s ease, background 0.2s ease, transform 0.2s ease;
    cursor: pointer;
}

#back-to-top.visible {
    opacity: 1;
    visibility: visible;
}

#back-to-top:hover {
    color: #ffffff;
    background: rgba(255, 255, 255, 0.15);
    transform: translateY(-2px);
}

#back-to-top .fa {
    font-size: 0.85em;
}

@media screen and (max-width: 736px) {
    #back-to-top {
        bottom: 16px;
        right: 16px;
        width: 32px;
        height: 32px;
    }
}


/* ==============================================
   13. SPOTLIGHT IMAGE SIZING
   Override background-size from cover (crops/zooms)
   to contain (shows full image as intended)
   ============================================== */

.spotlights > section > .image {
    background-size: contain;
    background-repeat: no-repeat;
    background-color: #1a3d2b;
}
