/*==================================================
    Sliding Content Panel
==================================================*/

.content-panel{

    position:absolute;

    top:60px;

    /* hero padding (70px) + hero-left width (420px) + gap (40px) =
       the panel can never start before this, so it can never sit
       under the left menu no matter how wide the viewport is */
    left:530px;

    right:60px;

    height:82vh;

    border-radius:36px;

    overflow:hidden;

    z-index:40;

    transform:translateX(120%);

    opacity:0;

    transition:

        transform .8s cubic-bezier(.22,.61,.36,1),

        opacity .45s;

}


/*=============================
    Open
=============================*/

.content-panel.active{

    transform:translateX(0);

    opacity:1;

}


/*=============================
    Glass
=============================*/

.panel-glass{

    position:absolute;

    inset:0;

    background:rgba(255,255,255,.32);

    backdrop-filter:blur(60px);

    -webkit-backdrop-filter:blur(60px);

    border:1px solid rgba(255,255,255,.22);

    box-shadow:

        0 30px 80px rgba(0,0,0,.12),

        inset 0 1px 1px rgba(255,255,255,.45);

}


/*=============================
    Content
=============================*/

.panel-content{

    position:relative;

    z-index:3;

    height:100%;

    padding:60px;

    overflow-y:auto;

}


/*=============================
    Body Layout
=============================*/

.panel-body{

    display:flex;

    gap:44px;

    align-items:flex-start;

}


.panel-image{

    flex:0 0 260px;

    border-radius:24px;

    overflow:hidden;

}


.panel-image img{

    width:100%;

    display:block;

}


.panel-text{

    flex:1;

    min-width:0;

}


.panel-text p{

    color:#1c3f63;

    font-size:17px;

    line-height:1.9;

    margin-bottom:18px;

}


.panel-subtitle{

    font-size:14px;

    letter-spacing:4px;

    text-transform:uppercase;

    color:rgba(28,63,99,.75);

    margin-bottom:10px;

}


.panel-divider{

    width:50px;

    height:3px;

    background:rgba(28,63,99,.45);

    border-radius:2px;

    margin:18px 0 26px;

}


/*=============================
    CV Content
=============================*/

.cv-heading{

    font-size:20px;

    font-weight:500;

    color:#1c3f63;

    letter-spacing:1px;

    margin:34px 0 14px;

}


.cv-heading:first-of-type{

    margin-top:0;

}


.cv-entry{

    margin-bottom:22px;

}


.cv-entry-title{

    font-size:17px;

    font-weight:600;

    color:#1c3f63;

}


.cv-entry-meta{

    font-size:14px;

    color:rgba(28,63,99,.75);

    margin:3px 0 10px;

}


.cv-list{

    list-style:none;

    padding:0;

    margin:0 0 6px;

}


.cv-list li{

    position:relative;

    padding-left:20px;

    margin-bottom:10px;

    color:#1c3f63;

    font-size:16px;

    line-height:1.7;

}


.cv-list li::before{

    content:"";

    position:absolute;

    left:2px;

    top:10px;

    width:6px;

    height:6px;

    border-radius:50%;

    background:rgba(28,63,99,.55);

}


.cv-item-title{

    display:block;

    font-weight:600;

}


.cv-item-meta{

    display:block;

    font-size:14px;

    color:rgba(28,63,99,.7);

    margin-top:2px;

}


/*=============================
    Title
=============================*/

.panel-title{

    font-size:44px;

    font-weight:300;

    color:#1c3f63;

    margin-bottom:40px;

    letter-spacing:2px;

}


/*=============================
    Close Button
=============================*/

.panel-close{

    position:absolute;

    top:30px;

    right:35px;

    width:42px;

    height:42px;

    border-radius:50%;

    border:none;

    outline:none;

    appearance:none;

    -webkit-appearance:none;

    padding:0;

    margin:0;

    font-family:inherit;

    line-height:1;

    background:rgba(28,63,99,.10);

    display:flex;

    justify-content:center;

    align-items:center;

    cursor:pointer;

    color:#1c3f63;

    font-size:28px;

    z-index:50;

    transition:.3s;

}

.panel-close:hover{

    background:rgba(28,63,99,.18);

}

/*==================================================
    Liquid Glass Reflection
==================================================*/

.content-panel::before{

    content:"";

    position:absolute;

    left:-35%;

    top:-45%;

    width:170%;

    height:170%;

    background:

        linear-gradient(

            115deg,

            rgba(255,255,255,.55),

            rgba(255,255,255,.12) 30%,

            transparent 55%

        );

    transform:rotate(18deg);

    pointer-events:none;

    opacity:.9;

}


/*==================================================
    Edge Glow
==================================================*/

.content-panel::after{

    content:"";

    position:absolute;

    inset:0;

    border-radius:36px;

    box-shadow:

        inset 0 1px 0 rgba(255,255,255,.55),

        inset 0 -1px 0 rgba(255,255,255,.08),

        0 0 80px rgba(255,255,255,.08);

    pointer-events:none;

}


/*==================================================
    (background now defined once above, matching
    the glass-menu look)
==================================================*/


/*==================================================
    Scrollbar
==================================================*/

.panel-content::-webkit-scrollbar{

    width:8px;

}


.panel-content::-webkit-scrollbar-track{

    background:transparent;

}


.panel-content::-webkit-scrollbar-thumb{

    border-radius:20px;

    background:rgba(255,255,255,.28);

}


.panel-content::-webkit-scrollbar-thumb:hover{

    background:rgba(255,255,255,.45);

}


/*==================================================
    Image Hover
==================================================*/

.panel-image img{

    transition:

        transform .8s,

        box-shadow .8s;

}


.panel-image img:hover{

    transform:scale(1.03);

    box-shadow:

        0 30px 80px rgba(0,0,0,.25);

}


/*==================================================
    Floating Highlight
==================================================*/

.panel-highlight{

    position:absolute;

    width:520px;

    height:520px;

    right:-180px;

    top:-180px;

    border-radius:50%;

    background:

        radial-gradient(

            circle,

            rgba(255,255,255,.28),

            transparent 70%

        );

    filter:blur(70px);

    pointer-events:none;

    z-index:1;

}

/*==================================================
    Universal Panel Section
==================================================*/

.panel-section{

    display:none;

    animation:panelFade .55s ease;

}

.panel-section.active{

    display:block;

}


/*==================================================
    Section Title
==================================================*/

.section-title{

    font-size:46px;

    font-weight:300;

    letter-spacing:2px;

    color:#fff;

    margin-bottom:12px;

}


.section-subtitle{

    font-size:15px;

    letter-spacing:5px;

    text-transform:uppercase;

    color:rgba(255,255,255,.65);

    margin-bottom:40px;

}


/*==================================================
    Grid
==================================================*/

.panel-grid{

    display:grid;

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

    gap:30px;

}


/*==================================================
    Glass Card
==================================================*/

.panel-card{

    position:relative;

    padding:28px;

    border-radius:24px;

    background:rgba(255,255,255,.08);

    border:1px solid rgba(255,255,255,.15);

    backdrop-filter:blur(16px);

    -webkit-backdrop-filter:blur(16px);

    transition:.4s;

    overflow:hidden;

}


.panel-card:hover{

    transform:translateY(-8px);

    background:rgba(255,255,255,.12);

    border-color:rgba(255,255,255,.30);

}


/*==================================================
    Card Reflection
==================================================*/

.panel-card::before{

    content:"";

    position:absolute;

    left:-60%;

    top:-60%;

    width:180%;

    height:180%;

    background:

        linear-gradient(

            130deg,

            rgba(255,255,255,.28),

            transparent 45%

        );

    transform:rotate(18deg);

    pointer-events:none;

}


/*==================================================
    Card Title
==================================================*/

.card-title{

    font-size:24px;

    color:white;

    margin-bottom:15px;

    font-weight:400;

}


.card-description{

    color:rgba(255,255,255,.82);

    line-height:1.9;

    font-size:16px;

}


/*==================================================
    Divider
==================================================*/

.card-divider{

    width:50px;

    height:2px;

    background:rgba(255,255,255,.8);

    margin:18px 0 24px;

}


/*==================================================
    Fade
==================================================*/

@keyframes panelFade{

    from{

        opacity:0;

        transform:translateY(18px);

    }

    to{

        opacity:1;

        transform:none;

    }

}

/*==================================================
    Works Gallery
==================================================*/

.works-grid{

    display:grid;

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

    gap:28px;

    margin-top:30px;

}


/*======================================
    Work Card
======================================*/

.work-card{

    position:relative;

    overflow:hidden;

    border-radius:26px;

    cursor:pointer;

    background:rgba(255,255,255,.08);

    backdrop-filter:blur(16px);

    -webkit-backdrop-filter:blur(16px);

    border:1px solid rgba(255,255,255,.18);

    transition:

        transform .45s,

        box-shadow .45s,

        border-color .45s;

}


.work-card:hover{

    transform:translateY(-8px);

    border-color:rgba(255,255,255,.35);

    box-shadow:

        0 25px 70px rgba(0,0,0,.18);

}


/*======================================
    Cover Image
======================================*/

.work-cover{

    width:100%;

    aspect-ratio:4/3;

    overflow:hidden;

}


.work-cover img{

    width:100%;

    height:100%;

    object-fit:cover;

    transition:

        transform .8s ease,

        filter .8s ease;

}


.work-card:hover .work-cover img{

    transform:scale(1.08);

}


/*======================================
    Information
======================================*/

.work-info{

    padding:24px;

}


.work-title{

    color:white;

    font-size:24px;

    font-weight:400;

    margin-bottom:8px;

}


.work-year{

    color:rgba(255,255,255,.65);

    font-size:14px;

    letter-spacing:3px;

    text-transform:uppercase;

    margin-bottom:18px;

}


.work-description{

    color:rgba(255,255,255,.82);

    line-height:1.8;

    font-size:16px;

}


/*======================================
    Hover Overlay
======================================*/

.work-overlay{

    position:absolute;

    inset:0;

    display:flex;

    justify-content:center;

    align-items:center;

    background:rgba(255,255,255,.10);

    backdrop-filter:blur(10px);

    -webkit-backdrop-filter:blur(10px);

    opacity:0;

    transition:.4s;

}


.work-card:hover .work-overlay{

    opacity:1;

}


/*======================================
    View Icon
======================================*/

.work-overlay i{

    width:68px;

    height:68px;

    border-radius:50%;

    background:rgba(255,255,255,.18);

    display:flex;

    justify-content:center;

    align-items:center;

    color:white;

    font-size:26px;

    border:1px solid rgba(255,255,255,.28);

}


/*==================================================
    Email Popup (small, centered, separate from
    the main biography/works/cv panel)
==================================================*/

.email-modal{

    position:fixed;

    inset:0;

    z-index:100;

    display:flex;

    justify-content:center;

    align-items:center;

    background:rgba(40,80,125,.35);

    backdrop-filter:blur(4px);

    -webkit-backdrop-filter:blur(4px);

    opacity:0;

    visibility:hidden;

    transition:opacity .35s ease;

}


.email-modal.active{

    opacity:1;

    visibility:visible;

}


.email-modal-card{

    position:relative;

    width:min(90vw,380px);

    padding:40px 36px;

    border-radius:28px;

    text-align:center;

    background:rgba(255,255,255,.34);

    backdrop-filter:blur(60px);

    -webkit-backdrop-filter:blur(60px);

    border:1px solid rgba(255,255,255,.22);

    box-shadow:

        0 30px 80px rgba(0,0,0,.12),

        inset 0 1px 1px rgba(255,255,255,.45);

    transform:translateY(12px) scale(.96);

    transition:transform .35s cubic-bezier(.22,.61,.36,1);

}


.email-modal.active .email-modal-card{

    transform:translateY(0) scale(1);

}


.email-modal-close{

    position:absolute;

    top:16px;

    right:16px;

    width:34px;

    height:34px;

    border-radius:50%;

    border:none;

    outline:none;

    appearance:none;

    -webkit-appearance:none;

    padding:0;

    margin:0;

    font-family:inherit;

    line-height:1;

    background:rgba(28,63,99,.10);

    color:#1c3f63;

    font-size:22px;

    cursor:pointer;

    transition:.3s;

}


.email-modal-close:hover{

    background:rgba(28,63,99,.18);

}


.email-modal-label{

    font-size:13px;

    letter-spacing:4px;

    text-transform:uppercase;

    color:rgba(28,63,99,.75);

    margin-bottom:14px;

}


.email-modal-address{

    font-size:20px;

    color:#1c3f63;

    word-break:break-all;

    margin-bottom:26px;

}


.email-copy-btn{

    border:1px solid rgba(28,63,99,.35);

    outline:none;

    appearance:none;

    -webkit-appearance:none;

    padding:12px 28px;

    border-radius:999px;

    background:rgba(28,63,99,.08);

    color:#1c3f63;

    font-size:14px;

    letter-spacing:1px;

    cursor:pointer;

    transition:.3s;

}


.email-copy-btn:hover{

    background:rgba(28,63,99,.16);

}


.email-copy-btn.copied{

    background:rgba(28,63,99,.28);

}


/*=============================
    Email Popup Divider
    (between email and phone)
=============================*/

.email-modal-divider{

    height:1px;

    background:rgba(28,63,99,.2);

    margin:26px 0;

}


/*==================================================
    External Link Confirmation Popup
==================================================*/

.confirm-modal{

    position:fixed;

    inset:0;

    z-index:110;

    display:flex;

    justify-content:center;

    align-items:center;

    background:rgba(40,80,125,.35);

    backdrop-filter:blur(4px);

    -webkit-backdrop-filter:blur(4px);

    opacity:0;

    visibility:hidden;

    transition:opacity .35s ease;

}


.confirm-modal.active{

    opacity:1;

    visibility:visible;

}


.confirm-modal-card{

    width:min(90vw,380px);

    padding:36px 32px;

    border-radius:28px;

    text-align:center;

    background:rgba(255,255,255,.34);

    backdrop-filter:blur(60px);

    -webkit-backdrop-filter:blur(60px);

    border:1px solid rgba(255,255,255,.22);

    box-shadow:

        0 30px 80px rgba(0,0,0,.12),

        inset 0 1px 1px rgba(255,255,255,.45);

    transform:translateY(12px) scale(.96);

    transition:transform .35s cubic-bezier(.22,.61,.36,1);

}


.confirm-modal.active .confirm-modal-card{

    transform:translateY(0) scale(1);

}


.confirm-modal-text{

    color:#1c3f63;

    font-size:16px;

    line-height:1.7;

    margin-bottom:28px;

}


.confirm-modal-text span{

    font-weight:600;

}


.confirm-modal-actions{

    display:flex;

    gap:14px;

    justify-content:center;

}


.confirm-btn{

    flex:1;

    border:1px solid rgba(28,63,99,.35);

    outline:none;

    appearance:none;

    -webkit-appearance:none;

    padding:12px 0;

    border-radius:999px;

    font-size:14px;

    letter-spacing:.5px;

    color:#1c3f63;

    cursor:pointer;

    transition:.3s;

}


.confirm-cancel{

    background:rgba(28,63,99,.06);

}


.confirm-cancel:hover{

    background:rgba(28,63,99,.14);

}


.confirm-continue{

    background:#1c3f63;

    border-color:#1c3f63;

    color:#fff;

}


.confirm-continue:hover{

    background:#183756;

}


/*=============================
    Inline links inside panel text
=============================*/

.cv-link{

    color:#1c3f63;

    text-decoration:underline;

    text-decoration-color:rgba(28,63,99,.5);

    text-underline-offset:3px;

    transition:.25s;

}


.cv-link:hover{

    text-decoration-color:#1c3f63;

}
