
:root{--bg:#fff;--bg2:#F5F8FC;--soft:#EAF3FC;--p:#005BAC;--a:#1677D2;--tx:#14243A;--mu:#5b6b80;--bd:rgba(20,36,58,.1);--glass:rgba(255,255,255,.7);--sh:0 10px 40px rgba(0,60,120,.12);--lk:#005BAC}
[data-theme=dark]{--bg:#080D18;--bg2:#101A2B;--soft:#14233a;--p:#1677D2;--a:#55A7FF;--tx:#F8FAFC;--mu:#9fb0c6;--bd:rgba(248,250,252,.1);--glass:rgba(16,26,43,.65);--sh:0 10px 40px rgba(0,0,0,.45);--lk:#55A7FF}
*{box-sizing:border-box;margin:0}html{scroll-behavior:smooth;scroll-padding-top:90px}
body{font-family:'Plus Jakarta Sans',system-ui,sans-serif;background:var(--bg);color:var(--tx);line-height:1.65;transition:background .4s,color .4s;overflow-x:hidden}
body *{transition:background-color .4s,border-color .4s,color .3s}
a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}
.material-symbols-outlined{font-size:20px;vertical-align:middle;line-height:1}
:focus-visible{outline:2px solid var(--a);outline-offset:3px}
/* Project detail action: use the card's animated underline instead of a box outline. */
.pcard .link:focus{outline:none}
.pcard .link:focus-visible{outline:none;box-shadow:none}
.pcard .link:focus-visible::after{transform:scaleX(1)}

.wrap{width:min(1240px,100% - 2.5rem);margin-inline:auto}.narrow{max-width:820px}
@media(min-width:1800px){.wrap{width:min(1560px,100% - 6rem)}html{font-size:118%}}
.sec{padding:clamp(4.5rem,9vw,8rem) 0}.alt{background:var(--bg2)}
h1{font-size:clamp(2.4rem,5.4vw,4.6rem);line-height:1.05;letter-spacing:-.03em;font-weight:800}
h2{font-size:clamp(1.8rem,3.6vw,3rem);line-height:1.12;letter-spacing:-.02em;font-weight:800;margin-bottom:1rem}
h3{font-size:1.15rem;font-weight:700}.eyebrow{color:var(--a);font-weight:700;font-size:.78rem;letter-spacing:.14em;margin-bottom:.9rem}
.muted{color:var(--mu)}.sh{margin-bottom:3rem;max-width:640px}
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.8rem 1.4rem;border-radius:999px;font-weight:600;font-size:.95rem;border:1px solid var(--p);transition:transform .2s,box-shadow .2s}
.btn.primary{background:var(--p);color:#fff}.btn.ghost{color:var(--lk)}[data-theme=dark] .btn.ghost{border-color:var(--bd)}
.btn:hover{transform:translateY(-2px);box-shadow:var(--sh)}.btn.sm{padding:.5rem 1rem;font-size:.85rem}
.btns{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.6rem}
.icon-btn{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--bd)}.icon-btn:hover{background:var(--soft)}
.nav{position:fixed;z-index:50;top:14px;left:50%;translate:-50% 0;width:min(1100px,100% - 1.5rem);display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.55rem .7rem .55rem 1.4rem;border-radius:999px;background:var(--glass);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);border:1px solid var(--bd);animation:drop .7s cubic-bezier(.22,1,.36,1) both}
@keyframes drop{from{opacity:0;transform:translateY(-70px)}}
.nav.scrolled{box-shadow:var(--sh)}.brand{font-weight:800;letter-spacing:.04em;color:var(--lk)}
.links{display:flex;gap:clamp(.5rem,1.1vw,1.15rem)}.links a{position:relative;padding:.5rem .35rem;font-size:.85rem;font-weight:500;color:var(--mu);transition:color .25s}.links a::after{content:"";position:absolute;left:.35rem;right:.35rem;bottom:.16rem;height:2px;border-radius:4px;background:var(--a);transform:scaleX(0);transform-origin:left;transition:transform .28s cubic-bezier(.2,.8,.2,1)}.links a:hover,.links a.on{background:transparent;color:var(--lk)}.links a:hover::after,.links a.on::after{transform:scaleX(1)}
.nav-actions{display:flex;align-items:center;gap:.5rem}.burger{display:none}
.drawer{display:none;position:absolute;top:calc(100% + 8px);left:0;right:0;flex-direction:column;gap:.25rem;padding:1rem;border-radius:24px;background:var(--bg);border:1px solid var(--bd);box-shadow:var(--sh)}
.drawer.open{display:flex}.drawer a:not(.btn){padding:.7rem 1rem;border-radius:12px}.drawer a.on{background:var(--soft)}
@media(max-width:1020px){.links,.nav .cv{display:none}.burger{display:grid}}
.hero{min-height:100svh;padding-top:6.5rem;overflow:visible;background:radial-gradient(60% 50% at 80% 30%,var(--soft),transparent)}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;align-items:center;min-height:calc(100svh - 6.5rem);gap:2rem}
.mask{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em}.mask span{display:inline-block;animation:up .7s cubic-bezier(.22,1,.36,1) both}
@keyframes up{from{transform:translateY(110%)}}
.lead{max-width:34rem;margin-top:1.4rem;color:var(--mu);font-size:1.08rem}.fadein{animation:fi .8s .7s both}@keyframes fi{from{opacity:0;transform:translateY(16px)}}
.hero-visual{position:relative;min-height:650px;height:min(82vh,760px);display:grid;place-items:center;perspective:1200px;overflow:visible;z-index:2}
.profile-card{position:relative;width:clamp(270px,31vw,410px);aspect-ratio: .79;border-radius:30px;overflow:hidden;isolation:isolate;background:linear-gradient(145deg,#252a2d,#0c1116 70%);border:1px solid rgba(255,255,255,.12);box-shadow:0 35px 80px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.12);transform-style:preserve-3d;transition:transform .55s cubic-bezier(.2,.8,.2,1),box-shadow .55s;will-change:transform}
.profile-card::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(145deg,rgba(255,255,255,.11),transparent 24%,transparent 68%,rgba(0,0,0,.45));}
.profile-card::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),inset 0 -90px 90px -70px rgba(0,0,0,.8)}
.profile-card:hover{box-shadow:0 50px 100px rgba(0,0,0,.42),0 0 0 1px rgba(85,167,255,.18)}
.profile-photo{position:absolute;inset:0;overflow:hidden;background:radial-gradient(ellipse at 50% 30%,#39424a,#10161d 72%)}
.profile-photo img{width:100%;height:100%;object-fit:cover;object-position:center 18%;filter:grayscale(100%) contrast(1.05);mix-blend-mode:screen;opacity:.94;transform:scale(1.04);transition:transform .7s cubic-bezier(.2,.8,.2,1),filter .7s}
.profile-card:hover .profile-photo img{transform:scale(1.1) translateY(-5px);filter:grayscale(100%) contrast(1.12)}
.profile-code{position:absolute;top:18%;z-index:0;left:9%;right:9%;display:flex;justify-content:space-between;color:rgba(255,255,255,.13);font-size:2.2rem;font-weight:800;letter-spacing:-.08em;pointer-events:none}
.profile-caption{position:absolute;left:5%;right:5%;bottom:4%;z-index:3;padding:.85rem 1rem;border-radius:17px;background:rgba(8,12,17,.82);border:1px solid rgba(255,255,255,.08);backdrop-filter:blur(14px);display:flex;justify-content:space-between;align-items:center;gap:1rem;color:#fff;transform:translateZ(32px)}
.profile-caption strong{display:block;font-size:.78rem;letter-spacing:.01em}.profile-caption small{display:block;color:rgba(255,255,255,.58);font-size:.68rem;margin-top:.1rem}
.availability{width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:#28d98b;box-shadow:0 0 0 0 rgba(40,217,139,.48);animation:availablePulse 1.5s ease-out infinite}
@keyframes availablePulse{0%{box-shadow:0 0 0 0 rgba(40,217,139,.48);transform:scale(.9)}65%{box-shadow:0 0 0 9px rgba(40,217,139,0);transform:scale(1.08)}100%{box-shadow:0 0 0 0 rgba(40,217,139,0);transform:scale(.9)}}
.profile-card .portrait-fallback{height:100%;display:grid;place-items:center;text-align:center;padding:2rem;color:rgba(255,255,255,.6);font-size:.8rem;background:radial-gradient(ellipse at 50% 30%,#38424d,#10161d 72%)}
@media(max-width:860px){.hero-visual{height:600px;min-height:600px}.profile-card{width:min(78vw,390px)}}
@media(max-width:560px){.hero-visual{height:520px;min-height:520px}.profile-card{width:min(82vw,340px);border-radius:24px}}
.ph{display:grid;place-items:center;text-align:center;width:100%;height:100%;min-height:140px;padding:1rem;color:var(--mu);font-size:.85rem;background:repeating-linear-gradient(45deg,var(--soft),var(--soft) 10px,transparent 10px,transparent 20px);border:1px dashed var(--bd)}
@media(max-width:860px){.hero-grid{grid-template-columns:1fr}.lany{height:520px}}
.about-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(2rem,6vw,5rem);align-items:center}
.about-img{aspect-ratio:4/5;border-radius:28px;overflow:hidden;box-shadow:var(--sh)}.about-img img{width:100%;height:100%;object-fit:cover}
.about-grid p+p{margin-top:1rem}.about-grid p:not(.eyebrow){color:var(--mu)}
.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--bd)}
dt{font-size:.72rem;color:var(--a);font-weight:700;letter-spacing:.08em;text-transform:uppercase}dd{font-weight:600;font-size:.92rem}
@media(max-width:860px){.about-grid{grid-template-columns:1fr}.facts{grid-template-columns:1fr}.about-img{max-width:380px}}
.grid3{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:1.4rem}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:1.2rem}
.card{padding:1.6rem;border-radius:22px;background:var(--bg);border:1px solid var(--bd);height:100%;display:block;transition:transform .3s,border-color .3s,box-shadow .3s}
.card:hover{border-color:var(--a);box-shadow:var(--sh);transform:translateY(-5px)}.card h3{margin:.9rem 0 .4rem}
.ico{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:var(--soft);color:var(--lk)}
.contact{display:flex;gap:1rem;align-items:center}.contact b{display:block}.contact span:not(.ico){color:var(--mu);font-size:.9rem;word-break:break-all}
.tabs{display:flex;flex-wrap:wrap;gap:.4rem;padding:.35rem;border-radius:999px;background:var(--bg2);width:fit-content;margin-bottom:2.5rem;border:1px solid var(--bd)}
.tabs button{padding:.55rem 1.1rem;border-radius:999px;font-size:.88rem;font-weight:600;color:var(--mu)}.tabs .on{background:var(--p);color:#fff}
.timeline{list-style:none;padding:0 0 0 1.8rem;border-left:2px solid var(--bd);display:grid;gap:2rem;animation:fi .5s both}.timeline li{position:relative}
.dot{position:absolute;left:calc(-1.8rem - 7px);top:.4rem;width:12px;height:12px;border-radius:50%;background:var(--a);box-shadow:0 0 0 5px var(--soft)}
.period{font-size:.8rem;color:var(--a);font-weight:700}.role{font-weight:600;font-size:.95rem}.timeline .muted{margin-top:.4rem}
.pcard{border-radius:24px;overflow:hidden;background:var(--bg);border:1px solid var(--bd);display:flex;flex-direction:column;transition:transform .3s,box-shadow .3s,border-color .3s}.pcard:hover{box-shadow:var(--sh);border-color:var(--a);transform:translateY(-6px)}
.pimg{aspect-ratio:16/10;position:relative;overflow:hidden;background:var(--soft)}.pimg img{width:100%;height:100%;object-fit:cover;transition:transform .6s}.pcard:hover .pimg img{transform:scale(1.06)}
.tag{position:absolute;top:12px;left:12px;background:var(--p);color:#fff;font-size:.75rem;font-weight:700;padding:.3rem .8rem;border-radius:99px}
.pbody{padding:1.4rem;display:flex;flex-direction:column;gap:.5rem;flex:1}.cat{font-size:.72rem;color:var(--a);font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.link{margin-top:auto;padding-top:.8rem;display:inline-flex;align-items:center;gap:.3rem;font-weight:700;color:var(--lk);width:fit-content}
.overlay{display:none;position:fixed;inset:0;z-index:100;background:rgba(5,12,25,.6);backdrop-filter:blur(6px);place-items:center;padding:1rem}.overlay.open{display:grid;animation:fi2 .25s}
@keyframes fi2{from{opacity:0}}
.modal{position:relative;width:min(820px,100%);max-height:92vh;overflow:auto;border-radius:28px;background:var(--bg);border:1px solid var(--bd);animation:pop .35s cubic-bezier(.22,1,.36,1)}
@keyframes pop{from{opacity:0;transform:translateY(40px) scale(.97)}}
.close{position:absolute;top:14px;right:14px;z-index:2;background:var(--glass);backdrop-filter:blur(8px)}.mimg{width:100%;aspect-ratio:16/8;object-fit:cover}
.mbody{padding:clamp(1.3rem,4vw,2.4rem);display:grid;gap:.8rem}.mbody h3{font-size:1.8rem}.full{font-weight:600}.tagline{color:var(--a);font-weight:600}
.mbody dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;padding:1rem 0;border-block:1px solid var(--bd)}
.mbody h4{margin:.8rem 0 .3rem;font-size:1.05rem}.mbody ul{padding-left:1.2rem;margin:.5rem 0;display:grid;gap:.3rem}.mbody p,.mbody li{color:var(--mu)}
.cert{border-radius:18px;overflow:hidden;border:1px solid var(--bd);background:var(--bg)}.cert .ph,.cert img{aspect-ratio:4/3;object-fit:cover;width:100%}.cert figcaption{padding:1rem;display:grid}.cert span{color:var(--mu);font-size:.85rem}
.foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem;padding:2rem max(1.25rem,5vw);border-top:1px solid var(--bd);color:var(--mu);font-size:.88rem}
.rv{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}}

.links a:focus-visible{outline:0;color:var(--lk)}.links a:focus-visible::after{transform:scaleX(1)}
.timeline li{padding-bottom:.15rem}.timeline .dot{background:#7f8da1;box-shadow:0 0 0 5px var(--soft)}
.timeline li.active .dot{background:#25c58a;box-shadow:0 0 0 5px rgba(37,197,138,.14);animation:activePulse 1.8s ease-in-out infinite}
@keyframes activePulse{0%,100%{box-shadow:0 0 0 5px rgba(37,197,138,.13)}50%{box-shadow:0 0 0 9px rgba(37,197,138,.04)}}
.timeline li.completed .dot{background:#7d8ba0;box-shadow:0 0 0 5px var(--soft)}
.timeline .statusline{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin:.2rem 0 .45rem}
.timeline .duration{font-size:.76rem;color:var(--mu);font-weight:600}
.timeline .state{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--mu);border:1px solid var(--bd);padding:.12rem .45rem;border-radius:99px}
.timeline li.active .state{color:#20a979;border-color:#20a97955;background:#20a97910}
.timeline .period{margin-bottom:.15rem}
.pcard .link{position:relative;text-decoration:none}
.pcard .link::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:2px;background:var(--a);transform:scaleX(0);transform-origin:left;transition:transform .25s}
.pcard:hover .link::after,.pcard .link:focus-visible::after{transform:scaleX(1)}
.project-actions{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1rem}
.project-actions .btn{cursor:pointer}
.project-actions .btn.disabled{opacity:.48;pointer-events:none}
@media(max-width:860px){.lany{height:650px;min-height:650px}.swing{top:-.4rem}.strap{height:190px}}
@media(max-width:560px){.lany{height:600px;min-height:600px}.swing{top:0}.strap{height:165px}.idcard{width:min(78vw,300px)}}
@media(prefers-reduced-motion:reduce){.timeline li.active .dot{animation:none}}

.case-section{padding-top:.35rem}.case-section h4{color:var(--tx);font-size:1.08rem}.case-section p{line-height:1.8}.prototype-note{font-size:.82rem;border:1px dashed var(--bd);border-radius:12px;padding:.75rem 1rem}
@media(max-width:860px){.hero{overflow:visible}.hero-grid{padding-bottom:2rem}.lany{min-height:640px}.swing{top:0}}

.tag{display:inline-flex;align-items:center;gap:.35rem}.tag .material-symbols-outlined{font-size:15px;font-variation-settings:'FILL' 1}

/* Experience Photo Gallery */
#experience .role-gallery {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0;
    width: 100%;
    max-width: 420px;
    overflow: hidden;
    border: 1px solid var(--bd);
    border-radius: 12px;
}

#experience .role-gallery img {
    display: block;
    width: 100%;
    height: 105px;
    object-fit: cover;
    border-radius: 0;
    cursor: zoom-in;
    transition: transform .3s ease;
}

#experience .role-gallery img:hover {
    transform: scale(1.04);
}

@media (max-width: 600px) {
    #experience .role-gallery {
        max-width: 340px;
    }

    #experience .role-gallery img {
        height: 90px;
    }
}


.photo-lightbox {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(0, 0, 0, .92);
    backdrop-filter: blur(8px);
    cursor: zoom-out;
}

.photo-lightbox.active {
    display: flex;
}

.photo-lightbox img {
    max-width: 95vw;
    max-height: 88vh;
    width: auto;
    height: auto;
    object-fit: contain;
    border-radius: 12px;
}

.photo-lightbox .lightbox-close {
    position: absolute;
    top: 20px;
    right: 24px;
    width: 44px;
    height: 44px;
    border: 1px solid rgba(255,255,255,.25);
    border-radius: 50%;
    background: rgba(255,255,255,.1);
    color: white;
    font-size: 26px;
    cursor: pointer;
}


/* ABOUT — editorial profile, currently list, and clickable trait-card deck */
.about-section{position:relative;overflow:hidden}
.about-section::before,.about-section::after{content:"";position:absolute;left:-5%;right:-5%;height:1px;pointer-events:none;background:linear-gradient(90deg,transparent,var(--bd),transparent);transform:rotate(2deg)}
.about-section::before{top:9.5rem}.about-section::after{bottom:15rem;transform:rotate(-2deg)}
.about-heading{margin-bottom:2.7rem;position:relative;z-index:1}
.about-heading h2{max-width:1050px;font-size:clamp(2.5rem,6vw,5.2rem);line-height:1.02;letter-spacing:-.055em;margin:0}
.about-heading h2 span{color:var(--mu)}
.about-profile{display:grid;grid-template-columns:104px minmax(0,1fr);gap:1.35rem;align-items:start;position:relative;z-index:1}
.about-avatar{width:104px;height:104px;border-radius:50%;overflow:hidden;background:var(--soft);border:1px solid var(--bd);display:grid;place-items:center}
.about-avatar img{width:100%;height:100%;object-fit:cover}
.about-avatar-fallback{width:100%;height:100%;display:grid;place-items:center;text-align:center;font-size:.7rem;font-weight:800;letter-spacing:.1em;color:var(--mu)}
.about-identity h3{font-size:1.15rem;display:flex;align-items:center;gap:.45rem;margin:.1rem 0 .75rem}
.verified-mark{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;background:#1689e8;color:#fff;font-size:.68rem}
.about-stats{display:flex;gap:clamp(1.4rem,4vw,3.4rem);flex-wrap:wrap}
.about-stats div{display:grid;gap:.08rem}
.about-stats span{font-size:.61rem;letter-spacing:.15em;font-weight:800;color:var(--mu)}
.about-stats strong{font-size:.94rem;font-weight:800}
.about-stats div:last-child strong{font-size:.82rem}
.about-copy{margin-top:1.1rem;max-width:1050px}
.about-copy p{font-size:.91rem;line-height:1.9;color:var(--mu);margin:0 0 .65rem}
.about-copy .resume-line{font-size:.82rem;margin-top:.85rem}
.resume-line a{color:var(--tx);font-weight:700;text-decoration:underline;text-decoration-color:var(--a);text-underline-offset:4px}
.about-bottom{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:3rem;align-items:end;margin-top:4.3rem;position:relative;z-index:1}
.currently-block>.eyebrow,.trait-area>.eyebrow{font-size:.65rem}
.currently-list{display:flex;gap:1.3rem 1.7rem;flex-wrap:wrap}
.currently-item{display:flex;align-items:center;gap:.65rem;min-width:150px}
.currently-icon{width:36px;height:36px;border-radius:50%;background:var(--soft);color:var(--lk);display:grid;place-items:center;font-size:18px}
.currently-item strong,.currently-item small{display:block}
.currently-item strong{font-size:.78rem}
.currently-item small{font-size:.68rem;color:var(--mu)}
.trait-area{justify-self:end;width:min(100%,300px)}
.trait-deck{position:relative;height:165px;perspective:900px}
.trait-card{position:absolute;inset:8px 0 8px 16px;width:calc(100% - 16px);border:1px solid var(--bd);border-radius:20px;background:linear-gradient(145deg,var(--bg2),var(--bg));box-shadow:var(--sh);padding:1.1rem 1.25rem;text-align:left;display:flex;flex-direction:column;justify-content:space-between;transform-origin:50% 85%;transition:transform .55s cubic-bezier(.2,.8,.2,1),opacity .4s,box-shadow .4s}
.trait-card span{font-size:.6rem;letter-spacing:.16em;color:var(--mu);font-weight:800}
.trait-card strong{font-size:1.35rem;letter-spacing:-.04em}
.trait-card small{font-size:.68rem;color:var(--mu)}
.trait-card-front{z-index:4;cursor:pointer;transform:rotate(-3deg)}
.trait-card-front:hover{transform:translateY(-8px) rotate(-1deg) scale(1.015);box-shadow:0 22px 50px rgba(0,0,0,.22)}
.trait-card-1{z-index:3;transform:rotate(4deg) translate(5px,4px)}
.trait-card-2{z-index:2;transform:rotate(-7deg) translate(-2px,7px)}
.trait-card-3{z-index:1;transform:rotate(9deg) translate(4px,10px)}
.trait-card.is-exiting{opacity:0;transform:translate(125%,35%) rotate(18deg) scale(.85);pointer-events:none}
.trait-caption{font-size:.68rem;color:var(--mu);text-align:right;margin-top:.35rem}
@media(max-width:760px){.about-profile{grid-template-columns:78px minmax(0,1fr);gap:1rem}.about-avatar{width:78px;height:78px}.about-bottom{grid-template-columns:1fr;gap:2rem;margin-top:3rem}.trait-area{justify-self:start;width:min(100%,320px)}.trait-caption{text-align:left}.about-heading h2{font-size:clamp(2.35rem,10vw,4rem)}}
@media(max-width:480px){.about-profile{grid-template-columns:1fr}.about-avatar{width:88px;height:88px}.about-stats{gap:1rem 1.4rem}.about-stats div:last-child{width:100%}.currently-list{display:grid;grid-template-columns:1fr;gap:.9rem}}

/* EXPERIENCE — open vertical timeline; company groups stay visually light */
#experience .narrow{max-width:1040px}
#experience .sh{max-width:760px;margin-bottom:2.7rem}
#experience .sh h2{font-size:clamp(2.5rem,6vw,4.4rem);max-width:720px;line-height:1.05}
#experience .tabs{margin-bottom:2.6rem}
.timeline{list-style:none;margin:0;padding:0 0 0 2rem;border-left:2px solid var(--bd);display:grid;gap:2.3rem;animation:fi .5s both}
.timeline>.company-item{position:relative;padding:0;background:transparent;border:0;box-shadow:none;overflow:visible}
.timeline>.company-item>.dot{position:absolute;left:calc(-2rem - 7px);top:.38rem;width:14px;height:14px;border-radius:50%;background:#8291a5;box-shadow:0 0 0 6px var(--soft)}
.timeline>.company-item.active>.dot{background:#25c58a;box-shadow:0 0 0 6px rgba(37,197,138,.13);animation:activePulse 1.8s ease-in-out infinite}
.timeline>.company-item.completed>.dot{background:#8291a5;box-shadow:0 0 0 6px var(--soft)}
.company-header{display:flex;align-items:center;gap:.9rem;margin:0 0 1.05rem}
.company-logo{width:42px;height:42px;flex:0 0 42px;border-radius:12px;background:var(--soft);border:1px solid var(--bd);display:grid;place-items:center;overflow:hidden}
.company-logo img{width:100%;height:100%;object-fit:contain;padding:4px}
.company-logo-fallback{width:100%;height:100%;display:grid;place-items:center;color:var(--a);font-size:.72rem;font-weight:800;letter-spacing:.05em}
.company-title h3{font-size:1.12rem;margin:0 0 .12rem}
.company-title p{font-size:.82rem;color:var(--mu);margin:0}
.company-roles{position:relative;list-style:none;margin:0 0 0 1.3rem;padding:0 0 0 1.65rem;border-left:2px solid var(--bd);display:grid;gap:1.45rem}
.company-role{position:relative;padding:0 0 .1rem}
.company-role .role-dot{position:absolute;left:calc(-1.65rem - 7px);top:.28rem;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid #8291a5;box-shadow:0 0 0 4px var(--bg)}
.company-role.active .role-dot{background:#25c58a;border-color:#25c58a;box-shadow:0 0 0 4px rgba(37,197,138,.12);animation:activePulse 1.8s ease-in-out infinite}
.role-heading{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;flex-wrap:wrap}
.role-heading h4{font-size:1rem;margin:0}
.role-period{font-size:.76rem;color:var(--mu)}
.role-period b{color:var(--tx)}
.company-role>p{font-size:.88rem;line-height:1.8;color:var(--mu);margin:.45rem 0 0;max-width:900px}
.role-state{display:inline-block;margin-top:.48rem;font-size:.63rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mu);border:1px solid var(--bd);border-radius:99px;padding:.16rem .55rem}
.company-role.active .role-state{color:#20a979;border-color:#20a97955;background:#20a97910}
@media(max-width:600px){#experience .narrow{width:calc(100% - 2rem)}.timeline{padding-left:1.35rem;gap:1.8rem}.timeline>.company-item>.dot{left:calc(-1.35rem - 7px)}.company-roles{margin-left:.45rem;padding-left:1.25rem}.company-role .role-dot{left:calc(-1.25rem - 7px)}.role-heading{display:block}.role-period{display:block;margin-top:.2rem}}
@media(prefers-reduced-motion:reduce){.timeline>.company-item.active>.dot,.company-role.active .role-dot{animation:none}}


/* ABOUT ME — reference-inspired editorial layout */
.about-section{padding-top:clamp(3rem,6vw,5.5rem);padding-bottom:clamp(4rem,7vw,6rem);position:relative;isolation:isolate;overflow:hidden}
.about-section::before,.about-section::after{content:"";position:absolute;z-index:-1;left:-3%;width:106%;height:110px;border:1px solid rgba(150,165,185,.09);border-color:rgba(150,165,185,.09) transparent transparent;border-radius:50%;pointer-events:none}
.about-section::before{top:23%;transform:rotate(-1deg)}
.about-section::after{bottom:9%;transform:rotate(1deg)}
.about-heading{margin-bottom:2.15rem}
.about-heading>.eyebrow{font-size:.58rem;letter-spacing:.32em;margin-bottom:1.1rem}
.about-heading h2{max-width:none;white-space:nowrap;font-size:clamp(2.2rem,5.15vw,4.6rem);line-height:1.08;letter-spacing:-.055em;margin:0}
.typing-caret{display:inline-block;width:3px;height:.92em;background:var(--tx);margin-left:.13em;vertical-align:-.08em;animation:caretBlink 1s steps(2,start) infinite}
@keyframes caretBlink{to{visibility:hidden}}
.about-profile{grid-template-columns:96px minmax(0,1fr);gap:1.15rem;align-items:start}
.about-avatar{width:96px;height:96px;border-radius:50%;background:#f4f5f7;border:0}
.about-avatar img{object-position:center 25%}
.about-identity h3{font-size:1rem;margin:.1rem 0 .7rem;letter-spacing:-.02em}
.verified-mark{width:15px;height:15px;font-size:.62rem}
.about-stats{gap:1.8rem 2.2rem}
.about-stats span{font-size:.55rem;letter-spacing:.17em}
.about-stats strong{font-size:.78rem}
.about-stats div:last-child strong{font-size:.76rem}
.about-copy{margin-top:1.15rem;max-width:none}
.about-copy p{font-size:.78rem;line-height:1.85;margin-bottom:.45rem}
.about-copy .resume-line{font-size:.74rem;margin-top:.85rem}
.about-bottom{grid-template-columns:minmax(0,1fr) 245px;gap:2rem;align-items:end;margin-top:4.1rem}
.currently-block>.eyebrow{font-size:.57rem;letter-spacing:.22em;margin-bottom:.75rem}
.currently-list{gap:.8rem 1.2rem}
.currently-item{min-width:130px;gap:.5rem}
.currently-icon{width:29px;height:29px;font-size:16px}
.currently-item strong{font-size:.7rem}
.currently-item small{font-size:.61rem}
.trait-area{width:245px;justify-self:end}
.trait-deck{height:150px}
.trait-card{inset:6px 0 6px 8px;width:calc(100% - 8px);border-radius:18px;background:linear-gradient(145deg,#20252b,#11151a);border:1px solid rgba(255,255,255,.035);box-shadow:0 15px 32px rgba(0,0,0,.24);padding:1rem 1.1rem;color:#f4f6f9}
.trait-card span{font-size:.54rem;letter-spacing:.2em;color:#aab2bd}
.trait-card strong{font-size:1.05rem}
.trait-card small{font-size:.62rem;color:#8993a0}
.trait-card-front{transform:rotate(7deg);z-index:4}
.trait-card-front:hover{transform:translateY(-5px) rotate(4deg);box-shadow:0 22px 42px rgba(0,0,0,.35)}
.trait-card-1{transform:rotate(-5deg) translate(-2px,4px)}
.trait-card-2{transform:rotate(10deg) translate(4px,8px)}
.trait-card-3{transform:rotate(-9deg) translate(-5px,10px)}
.trait-card.is-exiting{opacity:0;transform:translate(115%,25%) rotate(20deg) scale(.85)}
@media(max-width:760px){
 .about-heading h2{white-space:normal;font-size:clamp(2.35rem,8vw,3.8rem)}
 .about-profile{grid-template-columns:78px minmax(0,1fr);gap:.9rem}
 .about-avatar{width:78px;height:78px}
 .about-bottom{grid-template-columns:1fr;gap:1.6rem;margin-top:3rem}
 .trait-area{justify-self:start;width:min(245px,85%)}
}
@media(max-width:480px){
 .about-profile{grid-template-columns:1fr}
 .about-avatar{width:82px;height:82px}
 .about-stats{gap:.9rem 1.3rem}
 .about-stats div:last-child{width:100%}
 .currently-list{display:grid;grid-template-columns:1fr;gap:.75rem}
 .about-heading h2{font-size:2.35rem}
}
@media(prefers-reduced-motion:reduce){.typing-caret{animation:none}}


/* Reliability fix: About content must remain visible even if scroll-reveal JS is delayed or blocked. */
#about .rv,
#about .rv.in {
  opacity: 1 !important;
  transform: none !important;
  visibility: visible !important;
}
#about {
  scroll-margin-top: 110px;
}

/* Preserve the supplied portrait artwork as-is (it already contains its own data-themed background). */
.profile-photo img{
  filter:none;
  mix-blend-mode:normal;
  opacity:1;
  transform:scale(1.01);
  object-position:center center;
}
.profile-card:hover .profile-photo img{
  filter:none;
  transform:scale(1.055) translateY(-3px);
}
/* Keep certificate text and signatures fully visible. */
.cert img{
  object-fit:contain;
  background:var(--soft);
}

/* Volunteering & organization media: two clear 16:9 activity thumbnails per role. */
.role-gallery{
  display:flex;
  flex-wrap:wrap;
  gap:.7rem;
  margin:.8rem 0 .15rem;
}
.role-gallery img{
  display:block;
  width:clamp(150px, 22vw, 210px);
  aspect-ratio:16/9;
  object-fit:contain;
  background:var(--soft);
  border:1px solid var(--bd);
  border-radius:12px;
}
/* Project banners use a true 16:9 frame without cropping the original artwork. */
.pimg{
  aspect-ratio:16/9;
  background:var(--soft);
}
.pimg img{
  width:100%;
  height:100%;
  object-fit:contain;
  transition:transform .6s;
}
.pcard:hover .pimg img{
  transform:scale(1.015);
}
.mimg{
  display:block;
  width:100%;
  aspect-ratio:16/9;
  object-fit:contain;
  background:var(--soft);
}
@media(max-width:600px){
  .role-gallery img{
    width:calc(50% - .35rem);
    min-width:0;
  }
}


/* =====================================
   MOBILE RESPONSIVE — EXPERIENCE TABS
===================================== */

@media (max-width: 600px) {

  /* Experience tab container */
  #experience .tabs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;

    width: 100%;
    padding: 8px;
    margin-bottom: 2rem;

    border-radius: 20px;
    box-sizing: border-box;
  }

  /* Individual tab buttons */
  #experience .tabs button {
    display: flex;
    align-items: center;
    justify-content: center;

    width: 100%;
    min-width: 0;
    min-height: 46px;

    padding: 10px 8px;
    border-radius: 13px;

    font-size: 0.82rem;
    line-height: 1.4;
    font-weight: 600;
    text-align: center;
    white-space: normal;
  }

  /* Volunteering occupies the full second row */
  #experience .tabs button:nth-child(3) {
    grid-column: 1 / -1;
  }

  /* Active tab */
  #experience .tabs button.on {
    background: var(--p);
    color: #fff;
  }

  /* Experience heading */
  #experience .sh h2 {
    font-size: clamp(2.1rem, 8vw, 2.8rem);
    line-height: 1.12;
  }

  /* Timeline spacing */
  #experience .timeline {
    padding-left: 1.25rem;
    gap: 1.8rem;
  }

  #experience .timeline > .company-item > .dot {
    left: calc(-1.25rem - 7px);
  }

  /* Company header */
  #experience .company-header {
    align-items: flex-start;
    gap: 0.75rem;
  }

  #experience .company-logo {
    width: 40px;
    height: 40px;
    flex-basis: 40px;
  }

  #experience .company-title h3 {
    font-size: 1rem;
    line-height: 1.4;
  }

  #experience .company-title p {
    font-size: 0.78rem;
    line-height: 1.6;
  }

  /* Role content */
  #experience .company-roles {
    margin-left: 0.4rem;
    padding-left: 1.2rem;
    gap: 1.2rem;
  }

  #experience .company-role .role-dot {
    left: calc(-1.2rem - 7px);
  }

  #experience .role-heading h4 {
    font-size: 0.95rem;
  }

  #experience .role-period {
    font-size: 0.75rem;
    line-height: 1.7;
  }

  #experience .company-role > p {
    font-size: 0.82rem;
    line-height: 1.75;
  }

  /* Activity photos */
  #experience .role-gallery img {
    width: calc(50% - 0.35rem);
    min-width: 0;
  }
}
