:root{--bg-primary:#050505;--bg-secondary:#0d0d0f;--bg-elevated:#141416;--text-primary:#f5f5f2;--text-secondary:#9a9995;--accent:#f5f5f2;--accent-alt:#d6c7b7;--accent-warm:#b89573;--success:#66c98b;--danger:#e77c7c;--font-display:"Fraunces", serif;--font-body:"Outfit", sans-serif;--border:1px solid #ffffff17;--border-strong:1px solid #ffffff29;--radius-leaf:22px 5px 22px 5px;--radius-soft:16px;--shadow:0 18px 50px #0000006b;--transition:.18s ease;--page-width:min(100%, max(1100px, 75vw), 120rem)}*{box-sizing:border-box;margin:0;padding:0}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;scroll-behavior:smooth;font-size:clamp(100%,.3125vw + .71875rem,125%)}body{background:var(--bg-primary);min-width:320px;min-height:100vh;color:var(--text-primary);font-family:var(--font-body);line-height:1.6;overflow-x:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}:focus-visible{outline:2px solid var(--accent-alt);outline-offset:4px}.bg-overlay{z-index:-1;pointer-events:none;background:radial-gradient(circle at 12% 8%,#d6c7b714,#0000 28rem),radial-gradient(circle at 88% 48%,#b895730b,#0000 34rem),linear-gradient(#050505,#020202 70%);position:fixed;inset:0}.container{width:var(--page-width);margin:0 auto;padding:3rem 1.5rem 5rem;animation:.5s both page-in}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}header{border-bottom:var(--border);margin-bottom:4rem;padding-bottom:2.5rem}.header-top,.header-nav-row,.project-card-title-row,.project-card-footer,.activity-card-header,.modal-footer-actions{justify-content:space-between;align-items:center;gap:1rem;display:flex}.header-top{align-items:flex-start;margin-bottom:1.25rem}.portfolio-title{color:var(--text-primary);font-family:var(--font-display);letter-spacing:-.04em;font-size:clamp(2.7rem,8vw,4.2rem);font-style:italic;font-weight:500;line-height:1}.header-actions{align-items:center;gap:1rem;display:flex}.portfolio-subtitle{color:var(--accent-alt);font-family:var(--font-display);margin-bottom:1rem;font-size:1.25rem;font-style:italic}.portfolio-bio{max-width:47.5rem;color:var(--text-secondary);font-size:clamp(1rem,2.2vw,1.15rem);font-weight:300}.availability-pill{color:var(--text-secondary);align-items:center;gap:.6rem;margin-bottom:1.2rem;font-size:.85rem;display:inline-flex}.availability-pill strong{color:var(--accent-alt);font-weight:500}.availability-dot{background:var(--accent-warm);border-radius:50%;flex:none;width:7px;height:7px;animation:2.4s ease-in-out infinite pulseDot;box-shadow:0 0 8px #b89573b3}.core-stack{flex-wrap:wrap;align-items:center;gap:.45rem;margin:1.6rem 0 2rem;display:flex}.core-stack-label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;margin-right:.35rem;font-size:.72rem}.core-stack .badge{color:var(--text-primary);font-size:.76rem}.contact-bar{flex-wrap:wrap;align-items:center;gap:.6rem .7rem;margin-top:1.5rem;display:flex}.contact-item{color:var(--text-secondary);transition:color var(--transition);align-items:center;gap:.4rem;font-size:.88rem;text-decoration:none;display:inline-flex}a.contact-item:hover{color:var(--accent-alt)}.contact-button,.copy-email-btn{min-height:38px;transition:background var(--transition), border-color var(--transition), color var(--transition), transform var(--transition);background:#d6c7b70f;border:1px solid #d6c7b747}.contact-button{border-radius:var(--radius-leaf);color:var(--text-primary);font-family:var(--font-display);gap:.5rem;padding:.45rem 1rem;font-size:.86rem;font-style:italic;font-weight:500}.contact-button svg{color:var(--accent-alt)}.contact-button:hover,.copy-email-btn:hover{background:#d6c7b724;border-color:#d6c7b780}a.contact-button:hover{color:var(--text-primary);transform:translateY(-2px)}.contact-email-wrapper{align-items:stretch;display:inline-flex;position:relative}.contact-email-wrapper .contact-button{border-radius:22px 0 0 5px}.contact-email-wrapper .contact-button:hover{transform:none}.copy-email-btn{width:40px;color:var(--accent-alt);cursor:pointer;border-left-color:#d6c7b729;border-radius:0 5px 22px 0;justify-content:center;align-items:center;margin-left:-1px;padding:0;display:inline-flex;position:relative}.copy-email-btn.copied{color:var(--success);background:#66c98b1a;border-color:#66c98b73}.copy-email-btn svg{fill:currentColor;width:15px;height:15px}.copy-tooltip{color:var(--accent-alt);font-family:var(--font-body);white-space:nowrap;pointer-events:none;background:#19181c;border:1px solid #d6c7b747;border-radius:5px;padding:.22rem .55rem;font-size:.72rem;font-weight:500;animation:.16s cubic-bezier(.16,1,.3,1) both tooltip-fade;position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%);box-shadow:0 4px 14px #00000080}.copy-tooltip:after{content:"";border:4px solid #0000;border-top-color:#19181c;position:absolute;top:100%;left:50%;transform:translate(-50%)}@keyframes tooltip-fade{0%{opacity:0;transform:translate(-50%,4px)}to{opacity:1;transform:translate(-50%)}}.contact-item svg,.resume-button svg{fill:currentColor;flex:none;width:16px;height:16px}.header-nav-row{align-items:flex-start;margin-top:2rem}.project-navigation{gap:1.25rem;display:flex}.nav-link{color:var(--text-secondary);cursor:pointer;font-family:var(--font-display);transition:color var(--transition), border-color var(--transition);background:0 0;border:0;border-bottom:2px solid #0000;padding:.35rem .15rem;font-size:.96rem;font-style:italic}.nav-link:hover,.nav-link.active{border-color:var(--accent-alt);color:var(--text-primary)}.entry-group{margin-bottom:2.75rem}.entry-group-title{color:var(--text-secondary);letter-spacing:.12em;text-transform:uppercase;margin-bottom:1rem;font-size:.78rem;font-weight:500}.entry-timeline{gap:1rem;padding-left:1.6rem;list-style:none;display:grid;position:relative}.entry-timeline:before{content:"";background:linear-gradient(#d6c7b780,#d6c7b726);width:1px;position:absolute;top:1.4rem;bottom:1.4rem;left:.3rem}.entry-timeline>li{position:relative}.entry-timeline>li:before{content:"";border:1px solid var(--accent-alt);background:var(--bg-primary);border-radius:50%;width:9px;height:9px;position:absolute;top:1.45rem;left:calc(-1.3rem - 4px)}.entry-list{gap:1rem;display:grid}.entry-card{border:var(--border);border-radius:var(--radius-leaf);background:linear-gradient(145deg, #ffffff06, transparent 55%), var(--bg-secondary);flex-direction:column;gap:.55rem;padding:1.5rem 1.6rem;display:flex}.entry-card-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;display:flex}.entry-status{color:var(--text-primary);letter-spacing:.02em;border:1px solid #ffffff1f;border-radius:999px;align-items:center;gap:.45rem;padding:.25rem .7rem;font-size:.74rem;font-weight:500;display:inline-flex}.entry-status-dot{background:var(--text-secondary);border-radius:50%;width:7px;height:7px}.entry-status.status-completed{color:#a3e7b8;background:#66c98b0f;border-color:#66c98b4d}.entry-status.status-completed .entry-status-dot{background:var(--success)}.entry-status.status-in-progress{color:var(--accent-warm);background:#b895731f;border-color:#b8957352}.entry-status.status-in-progress .entry-status-dot{background:var(--accent-warm)}.entry-status.status-upcoming{color:var(--accent-alt);background:#d6c7b70f;border-color:#d6c7b747}.entry-status.status-upcoming .entry-status-dot{border:1px solid var(--accent-alt);background:0 0}.entry-dates{color:var(--text-secondary);font-size:.82rem}.entry-title{color:var(--text-primary);font-family:var(--font-display);font-size:1.35rem;font-style:italic;font-weight:500;line-height:1.25}.entry-organization{color:var(--accent-alt);font-size:.92rem}.entry-summary{max-width:45rem;color:var(--text-secondary);font-size:.93rem;font-weight:300;line-height:1.7}.entry-highlights{max-width:45rem;color:var(--text-secondary);gap:.35rem;padding-left:1.1rem;font-size:.93rem;font-weight:300;line-height:1.6;display:grid}.entry-highlights li::marker{color:var(--accent-warm)}.entry-meta{color:var(--text-primary);font-size:.85rem}.entry-topics{margin-top:.25rem;list-style:none}.entry-link{align-self:flex-start;margin-top:.35rem}.entry-case-studies{flex-wrap:wrap;align-items:baseline;gap:.35rem 1.1rem;margin-top:.35rem;display:flex}.entry-case-studies-label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;font-size:.78rem}section{margin-bottom:5rem}.section-title{color:var(--text-primary);font-family:var(--font-display);align-items:center;gap:.75rem;margin-bottom:2.4rem;font-size:1.65rem;font-style:italic;font-weight:500;display:flex}.section-title:after{content:"";background:#ffffff1f;flex:1;height:1px}.projects-grid{flex-direction:column;gap:2.25rem;display:flex}.project-card{border:var(--border);border-radius:var(--radius-leaf);background:linear-gradient(145deg, #ffffff06, transparent 55%), var(--bg-secondary);box-shadow:var(--shadow);transition:transform var(--transition), border-color var(--transition), background var(--transition);flex-direction:column;gap:1.15rem;padding:2.25rem;display:flex;position:relative;overflow:hidden}.project-card:before{content:"";background:linear-gradient(transparent, var(--accent-alt), transparent);opacity:0;width:2px;transition:opacity var(--transition);position:absolute;inset:0 auto 0 0}.project-card:hover{border-color:#ffffff29;transform:translateY(-3px)}.project-card:hover:before{opacity:.8}.project-card-header{flex-direction:column;gap:.5rem;display:flex}.project-card-title-row{align-items:flex-start}.project-title{color:var(--text-primary);font-family:var(--font-display);font-size:1.6rem;font-style:italic;font-weight:500;line-height:1.2}.project-meta-badges,.project-tags,.modal-tags{flex-wrap:wrap;gap:.45rem;display:flex}.project-meta-badges{justify-content:flex-end}.badge{color:var(--text-secondary);letter-spacing:.035em;background:#ffffff0b;border:1px solid #ffffff0f;border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .7rem;font-size:.7rem;font-weight:500;display:inline-flex}.platform-badge{color:var(--text-primary)}.status-badge{color:var(--accent-warm);background:#b895731f;border-color:#b8957352;font-weight:600}.status-badge .pulse-dot{background:var(--accent-warm);box-shadow:0 0 8px #b89573cc}.platform-dot{background:#9bb9d4;border-radius:50%;width:7px;height:7px}.platform-dot.other{background:#8fc6a5}.project-desc{color:var(--text-secondary);font-size:.98rem;font-weight:300;line-height:1.68}.project-subtitle{color:var(--text-primary);font-weight:400}.project-tags{margin-top:.2rem}.project-card-footer{align-items:center;margin-top:.35rem}.cta-button,.secondary-button{border-radius:var(--radius-leaf);cursor:pointer;min-height:42px;font-family:var(--font-display);transition:transform var(--transition), background var(--transition), color var(--transition), border-color var(--transition);justify-content:center;align-items:center;padding:.66rem 1.3rem;font-size:.86rem;font-style:italic;font-weight:500;text-decoration:none;display:inline-flex}.cta-button{border:1px solid var(--accent-alt);background:var(--accent-alt);color:#090909}.secondary-button{border:var(--border-strong);color:var(--text-primary);background:0 0}.cta-button:hover,.secondary-button:hover{transform:translateY(-2px)}.secondary-button:hover{border-color:var(--accent-alt);color:var(--accent-alt)}.resume-button{align-items:center;gap:.5rem;min-height:38px;padding:.5rem 1rem;display:inline-flex}.repo-links{flex-wrap:wrap;justify-content:flex-end;gap:.7rem 1.2rem;display:flex}.repo-link{color:var(--text-secondary);font-family:var(--font-display);transition:color var(--transition);font-size:.86rem;font-style:italic;text-decoration:none}a.repo-link:hover{color:var(--accent-alt)}.empty-state{border:var(--border);border-radius:var(--radius-soft);color:var(--text-secondary);text-align:center;padding:2rem}.header-identity{flex-direction:column;gap:.55rem;min-width:0;display:flex}.header-identity .portfolio-subtitle{margin-bottom:0}.project-card-body{flex-direction:column;gap:1.15rem;min-width:0;display:flex}.project-card.has-thumbnail{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);align-items:start;gap:2.1rem;display:grid}.project-thumbnail{width:100%;color:inherit;cursor:pointer;text-align:inherit;background:0 0;border:0;padding:0;display:block}.thumbnail-browser{background:#0b0b0d;border:1px solid #ffffff1a;border-radius:12px;transition:transform .25s,border-color .25s;display:block;overflow:hidden;box-shadow:0 18px 40px #00000073}.thumbnail-browser-bar{background:#17161a;border-bottom:1px solid #ffffff0f;align-items:center;gap:6px;height:24px;padding:0 10px;display:flex}.thumbnail-browser-bar span,.browser-frame-bar span{background:#ffffff2e;border-radius:50%;width:7px;height:7px}.thumbnail-browser img{aspect-ratio:16/10;object-fit:cover;object-position:top;width:100%;height:auto;display:block}.thumbnail-phones{background:radial-gradient(circle at 50% 100%,#d6c7b721,#0000 70%),#0d0c0f;border:1px solid #ffffff12;border-radius:14px;justify-content:center;align-items:flex-start;gap:.8rem;height:18.75rem;padding:1.6rem 1rem 0;transition:border-color .25s;display:flex;overflow:hidden}.thumbnail-phone{background:linear-gradient(165deg,#262428,#141316);border-radius:18px 18px 0 0;flex:0 30%;max-width:8.25rem;padding:6px 6px 0;transition:transform .25s;box-shadow:0 14px 30px #00000080}.thumbnail-phone:nth-child(2){transform:translateY(-12px)}.thumbnail-phone img{aspect-ratio:266/576;object-fit:cover;object-position:top;border-radius:12px 12px 0 0;width:100%;height:auto;display:block}.project-card:hover .thumbnail-browser{border-color:#d6c7b74d;transform:translateY(-2px)}.project-card:hover .thumbnail-phones{border-color:#d6c7b738}.project-card:hover .thumbnail-phone:nth-child(2){transform:translateY(-18px)}.project-metrics{flex-wrap:wrap;gap:.6rem 1.9rem;display:flex}.project-metric{flex-direction:column-reverse;display:flex}.project-metric dd{color:var(--text-primary);font-family:var(--font-display);font-size:1.4rem;font-weight:500;line-height:1.15}.project-metric dt{color:var(--text-secondary);letter-spacing:.04em;font-size:.74rem}.modal-metrics{border-top:var(--border);border-bottom:var(--border);justify-content:center;gap:1rem 2.6rem;max-width:48.75rem;margin:-.5rem auto 2.5rem;padding:1.1rem 1.25rem}.modal-metrics .project-metric{text-align:center;align-items:center}.modal-metrics dd{font-size:1.75rem}.modal-overlay{z-index:2000;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#000000d1;place-items:center;width:100vw;height:100dvh;padding:1.25rem;animation:.18s both overlay-in;display:grid;position:fixed;inset:0}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.modal-content{border:var(--border-strong);background:#0b0b0d;border-radius:26px 7px;flex-direction:column;width:min(61.25rem,100%);max-height:min(58.75rem,100dvh - 2.5rem);animation:.24s both dialog-in;display:flex;position:relative;overflow:hidden;box-shadow:0 30px 90px #000000b3}@keyframes dialog-in{0%{opacity:0;transform:translateY(14px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-hero{z-index:2;border-bottom:var(--border);background:#0d0d0ff7;padding:1.9rem 2.2rem 1.25rem;position:relative}.close-btn{z-index:3;border:var(--border);width:40px;height:40px;color:var(--text-secondary);cursor:pointer;transition:color var(--transition), border-color var(--transition), background var(--transition);background:#ffffff09;border-radius:50%;place-items:center;font-size:1.65rem;line-height:1;display:grid;position:absolute;top:1rem;right:1rem}.close-btn:hover{color:var(--text-primary);background:#ffffff12;border-color:#fff3}.modal-title-copy{max-width:43.75rem;padding-right:3.5rem}.modal-title-copy .project-meta-badges{justify-content:flex-start;margin-bottom:.75rem}.copy-link-btn{color:var(--accent-alt);cursor:pointer;letter-spacing:.035em;transition:background var(--transition), border-color var(--transition), color var(--transition);background:0 0;border:1px solid #d6c7b740;border-radius:999px;align-items:center;gap:.35rem;padding:.3rem .7rem;font-size:.7rem;font-weight:500;display:inline-flex}.copy-link-btn svg{fill:currentColor;width:13px;height:13px}.copy-link-btn:hover{background:#d6c7b714}.copy-link-btn.copied{color:#a3e7b8;border-color:#66c98b59}.case-study-title{color:var(--text-primary);font-family:var(--font-display);letter-spacing:-.03em;font-size:clamp(2rem,5vw,3.1rem);font-style:italic;font-weight:500;line-height:1.05}.case-study-subtitle{max-width:45rem;color:var(--text-secondary);margin-top:.5rem;font-size:1rem;line-height:1.5}.modal-tags{margin-top:1rem}.modal-scroll-area{overscroll-behavior:contain;overflow-y:auto}.story-view{padding:2rem 2.2rem 2.4rem}.story-eyebrow{color:var(--accent-alt);letter-spacing:.12em;text-transform:uppercase;font-size:.7rem;font-weight:600}.project-showcase{border:var(--border);border-radius:var(--radius-leaf);background:radial-gradient(circle at 20% 30%,#d6c7b714,#0000 20rem),linear-gradient(150deg,#161518,#0e0e11 60%,#131215);flex-direction:column;gap:1.25rem;padding:1.5rem;display:flex;box-shadow:0 15px 40px #00000059}.showcase-main{grid-template-columns:minmax(260px,320px) 1fr;align-items:center;gap:2rem;display:grid}.showcase-device-stage{justify-content:center;align-items:center;padding:.5rem;display:flex}.device-frame{background:#19181c;transition:transform .25s,box-shadow .25s;position:relative;box-shadow:0 20px 45px #0009,0 0 0 1px #ffffff1f,inset 0 1px #ffffff26}.device-frame:hover{transform:translateY(-3px);box-shadow:0 26px 55px #000000b3,0 0 0 1px #d6c7b740}.mobile-phone-frame{background:linear-gradient(165deg,#252327,#131215);border-radius:36px;width:260px;padding:10px 10px 14px}.phone-notch{justify-content:center;align-items:center;gap:8px;height:18px;margin-bottom:6px;display:flex}.notch-camera{background:#09090b;border-radius:50%;width:8px;height:8px;box-shadow:inset 0 0 2px #fff3}.notch-speaker{background:#09090b;border-radius:3px;width:40px;height:4px}.device-screen-wrapper{cursor:zoom-in;background:#000;border-radius:26px;position:relative;overflow:hidden}.device-screenshot-img{aspect-ratio:266/576;object-fit:cover;width:100%;height:auto;transition:transform .3s;display:block}.device-screen-wrapper:hover .device-screenshot-img{transform:scale(1.02)}.screenshot-zoom-badge{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;cursor:pointer;opacity:0;transition:all var(--transition);background:#000000ad;border:1px solid #fff3;border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .65rem;font-size:.72rem;font-weight:500;display:inline-flex;position:absolute;bottom:12px;right:12px;transform:translateY(4px)}.device-screen-wrapper:hover .screenshot-zoom-badge{opacity:1;transform:translateY(0)}.showcase-info-panel{flex-direction:column;gap:1.25rem;display:flex}.showcase-page-kicker{letter-spacing:.12em;text-transform:uppercase;color:var(--accent-alt);margin-bottom:.3rem;font-size:.76rem;font-weight:600;display:inline-block}.showcase-screen-title{font-family:var(--font-display);color:var(--text-primary);font-size:1.6rem;font-weight:400;line-height:1.2}.showcase-screen-subtitle{color:var(--text-secondary);margin-top:.2rem;font-size:.95rem}.showcase-screen-caption{color:#c7c5c0;font-size:.96rem;line-height:1.65}.showcase-thumbnails{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.75rem;margin-top:.5rem;display:grid}.showcase-thumb-btn{color:var(--text-secondary);cursor:pointer;text-align:left;transition:all var(--transition);background:#ffffff08;border:1px solid #ffffff14;border-radius:12px;align-items:center;gap:.6rem;padding:.45rem .6rem;display:flex}.showcase-thumb-btn:hover{background:#ffffff12;border-color:#ffffff2e;transform:translateY(-1px)}.showcase-thumb-btn.active{color:var(--text-primary);background:#d6c7b71a;border-color:#d6c7b766}.thumb-img-box{background:#000;border-radius:6px;flex-shrink:0;width:28px;height:48px;overflow:hidden}.thumb-img-box img{object-fit:cover;width:100%;height:100%}.thumb-text-box{flex-direction:column;min-width:0;display:flex}.thumb-index{font-family:var(--font-display);opacity:.6;font-size:.68rem}.thumb-caption{white-space:nowrap;text-overflow:ellipsis;font-size:.76rem;font-weight:500;overflow:hidden}.project-media{flex-direction:column;gap:1.25rem;display:flex}.desktop-showcase .showcase-main{grid-template-columns:minmax(0,1fr);gap:1.5rem}.showcase-main>*{min-width:0}.desktop-showcase .showcase-device-stage{padding:0}.desktop-browser-frame{border-radius:12px;width:100%;overflow:hidden}.browser-frame-bar{background:#1b1a1e;border-bottom:1px solid #ffffff0f;align-items:center;gap:6px;height:28px;padding:0 12px;display:flex}.desktop-browser-frame .device-screen-wrapper{border-radius:0}.desktop-browser-frame .device-screenshot-img{aspect-ratio:16/10;object-position:top}.desktop-showcase .thumb-img-box{width:56px;height:35px}.lightbox-overlay{z-index:1200;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#000000eb;justify-content:center;align-items:center;padding:1rem;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.lightbox-container{background:#111013;border:1px solid #ffffff29;border-radius:24px;flex-direction:column;align-items:center;max-width:95vw;max-height:96vh;padding:1.25rem clamp(1.5rem,4vw,3rem);display:flex;position:relative;box-shadow:0 30px 80px #000000d9}.lightbox-close-btn{color:#fff;cursor:pointer;width:38px;height:38px;transition:all var(--transition);z-index:10;background:#ffffff14;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;display:flex;position:absolute;top:12px;right:14px}.lightbox-close-btn:hover{background:#ffffff38;transform:scale(1.05)}.lightbox-nav-btn{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;cursor:pointer;width:44px;height:44px;transition:all var(--transition);z-index:10;background:#141418bf;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;font-size:1.6rem;line-height:1;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav-btn:hover{background:#ffffff2e;border-color:#ffffff59;transform:translateY(-50%)scale(1.08)}.lightbox-prev-btn{left:12px}.lightbox-next-btn{right:12px}.lightbox-img-wrapper{background:#000;border-radius:18px;justify-content:center;align-items:center;max-height:min(80vh,600px);display:flex;overflow:hidden;box-shadow:0 15px 40px #000000b3}.lightbox-img{aspect-ratio:266/576;object-fit:contain;border-radius:18px;width:auto;max-width:100%;max-height:min(80vh,576px)}.lightbox-footer{text-align:center;max-width:34.375rem;margin-top:.85rem}.lightbox-title-row{justify-content:center;align-items:center;gap:.5rem;margin-bottom:.2rem;display:flex}.lightbox-index{font-family:var(--font-display);color:var(--accent-alt);font-size:.82rem}.lightbox-footer strong{font-family:var(--font-display);color:var(--text-primary);font-size:1.2rem}.lightbox-footer p{color:var(--text-secondary);font-size:.9rem;line-height:1.45}@media (width<=768px){.showcase-main{grid-template-columns:minmax(0,1fr);gap:1.5rem}.mobile-phone-frame{width:220px}.showcase-thumbnails{grid-template-columns:repeat(2,1fr)}}.project-action-banner{border:var(--border);border-radius:var(--radius-leaf);transition:border-color var(--transition);background:linear-gradient(145deg,#161518,#0e0e11 70%,#131215);padding:clamp(1.75rem,3.5vw,2.5rem);position:relative;overflow:hidden;box-shadow:0 15px 40px #00000059}.web-action-banner{background:radial-gradient(circle at 10% 20%,#66c98b14,#0000 18rem),linear-gradient(145deg,#151816,#0e110f 70%,#121513);border-color:#66c98b33}.video-action-banner{background:radial-gradient(circle at 10% 20%,#e77c7c14,#0000 18rem),linear-gradient(145deg,#191415,#110e0f 70%,#151112);border-color:#e77c7c33}.desktop-action-banner{background:radial-gradient(circle at 10% 20%,#d6c7b714,#0000 18rem),linear-gradient(145deg,#171518,#0e0e11 70%,#151311);border-color:#d6c7b733}.progress-action-banner{background:radial-gradient(circle at 10% 20%,#b895731a,#0000 18rem),linear-gradient(145deg,#191612,#11100e 70%,#16130f);border-color:#b895733d}.action-banner-content{z-index:1;flex-direction:column;gap:1.15rem;display:flex;position:relative}.action-banner-badge-row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.live-status-pill{color:var(--success);letter-spacing:.04em;text-transform:uppercase;background:#66c98b1f;border:1px solid #66c98b4d;border-radius:999px;align-items:center;gap:.45rem;padding:.32rem .75rem;font-size:.76rem;font-weight:600;display:inline-flex}.video-status-pill{color:#f09a9a;letter-spacing:.04em;text-transform:uppercase;background:#e77c7c1f;border:1px solid #e77c7c4d;border-radius:999px;align-items:center;gap:.45rem;padding:.32rem .75rem;font-size:.76rem;font-weight:600;display:inline-flex}.progress-status-pill{color:var(--accent-warm);letter-spacing:.04em;text-transform:uppercase;background:#b895731f;border:1px solid #b895734d;border-radius:999px;align-items:center;gap:.45rem;padding:.32rem .75rem;font-size:.76rem;font-weight:600;display:inline-flex}.progress-status-pill .pulse-dot{background:var(--accent-warm);box-shadow:0 0 8px #b89573cc}.pulse-dot{background:var(--success);width:7px;height:7px;box-shadow:0 0 8px var(--success);border-radius:50%;animation:2s ease-in-out infinite pulseDot}@keyframes pulseDot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}}.domain-pill{color:var(--text-secondary);font-size:.82rem;font-family:var(--font-body);letter-spacing:.02em;display:inline-block}.action-banner-title{font-family:var(--font-display);color:var(--text-primary);font-size:clamp(1.4rem,2.5vw,1.85rem);font-weight:400;line-height:1.25}.action-banner-desc{color:#b3b1ad;max-width:42.5rem;font-size:.95rem;font-weight:300;line-height:1.6}.action-banner-cta-row{flex-wrap:wrap;align-items:center;gap:.85rem;margin-top:.35rem;display:flex}.banner-cta-btn{align-items:center;gap:.5rem;display:inline-flex}.cta-arrow{font-size:1.1rem;line-height:1;transition:transform .18s}.banner-cta-btn:hover .cta-arrow{transform:translate(2px,-2px)}.story-introduction{text-align:center;max-width:48.75rem;margin:3rem auto 2rem}.story-introduction h3,.story-section h3{color:var(--text-primary);font-family:var(--font-display);margin-top:.35rem;font-size:clamp(1.55rem,3.2vw,2.25rem);font-style:italic;font-weight:500;line-height:1.2}.story-introduction p{color:var(--text-secondary);margin-top:1rem;font-size:1.06rem;font-weight:300;line-height:1.8}.audience-callout{border-radius:var(--radius-soft);background:#d6c7b70b;border:1px solid #d6c7b726;grid-template-columns:130px 1fr;gap:1.25rem;margin:0 auto 3.5rem;padding:1.25rem 1.4rem;display:grid}.audience-callout>span{color:var(--accent-alt);font-family:var(--font-display);font-style:italic}.audience-callout p{color:var(--text-primary);font-weight:300}.story-section{margin-bottom:3.5rem}.story-section-heading{align-items:flex-start;gap:1rem;margin-bottom:1.5rem;display:flex}.story-index{min-width:38px;color:var(--accent-warm);font-family:var(--font-display);padding-top:.2rem;font-size:.82rem;font-style:italic}.feature-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;list-style:none;display:grid}.feature-list li{border:var(--border);min-height:92px;color:var(--text-primary);background:#ffffff05;border-radius:14px;padding:1.15rem 1.15rem 1.15rem 2.4rem;font-size:.93rem;font-weight:300;position:relative}.feature-list li:before{content:"";border:1px solid var(--accent-alt);border-radius:50%;width:8px;height:8px;position:absolute;top:1.45rem;left:1.1rem;box-shadow:0 0 0 4px #d6c7b70d}.journey-list{grid-template-columns:repeat(3,minmax(0,1fr));list-style:none;display:grid}.journey-list li{border-top:1px solid #d6c7b74d;padding:1.25rem;position:relative}.journey-list li:not(:last-child):after{content:"";background:var(--accent-alt);border-radius:50%;width:7px;height:7px;position:absolute;top:-4px;right:-4px}.journey-list li>span{color:var(--accent-warm);font-family:var(--font-display);font-size:.75rem;font-style:italic}.journey-list p{color:var(--text-secondary);margin-top:.5rem;font-size:.9rem;font-weight:300}.engineering-notes{gap:.8rem;display:grid}.engineering-notes article{border-top:var(--border);grid-template-columns:180px 1fr;gap:1.4rem;padding:1.2rem 0;display:grid}.engineering-notes h4{color:var(--accent-alt);font-family:var(--font-display);font-size:.98rem;font-style:italic;font-weight:500}.engineering-notes p{color:var(--text-secondary);font-size:.93rem;font-weight:300;line-height:1.72}.deep-dive-summary{max-width:48.75rem;color:var(--text-primary);margin-bottom:1.75rem;font-size:1.05rem;font-weight:300;line-height:1.75}.deep-dive-block{border-top:var(--border);padding:1.5rem 0}.deep-dive-block h4{color:var(--accent-alt);font-family:var(--font-display);margin-bottom:1rem;font-size:.98rem;font-style:italic;font-weight:500}.architecture-diagram{gap:1.6rem;list-style:none;display:grid}.architecture-layer{background:#d6c7b709;border:1px solid #d6c7b72e;border-radius:12px;grid-template-columns:210px 1fr;align-items:center;gap:1rem;padding:.9rem 1.1rem;display:grid;position:relative}.architecture-layer:not(:last-child):after{content:"↓";color:var(--accent-warm);font-size:.9rem;line-height:1;position:absolute;bottom:-1.45rem;left:50%;transform:translate(-50%)}.architecture-label{color:var(--text-primary);font-family:var(--font-display);font-size:1rem;font-style:italic}.architecture-items{flex-wrap:wrap;gap:.4rem;list-style:none;display:flex}.architecture-items li{border:var(--border);color:var(--text-secondary);background:#ffffff08;border-radius:999px;padding:.25rem .65rem;font-size:.76rem}.deep-dive-problem-title{color:var(--text-primary);margin-bottom:.75rem;font-size:1.05rem;font-weight:500}.deep-dive-text{max-width:48.75rem;color:var(--text-secondary);margin-bottom:.9rem;font-size:.93rem;font-weight:300;line-height:1.75}.deep-dive-text code,.code-excerpt pre,.code-excerpt-file{font-variant-ligatures:none;font-family:ui-monospace,SFMono-Regular,Cascadia Code,Menlo,Consolas,monospace}.deep-dive-text code{color:var(--text-primary);background:#ffffff12;border-radius:5px;padding:.08rem .35rem;font-size:.85em}.code-excerpt{border:var(--border);background:#0a0a0c;border-radius:12px;margin-top:1.25rem;overflow:hidden}.code-excerpt figcaption{border-bottom:var(--border);background:#111013;justify-content:space-between;align-items:center;gap:1rem;padding:.6rem 1rem;font-size:.78rem;display:flex}.code-excerpt-file{color:var(--text-secondary);overflow-wrap:anywhere}.code-excerpt figcaption a{color:var(--accent-alt);white-space:nowrap;text-decoration:none}.code-excerpt figcaption a:hover{text-decoration:underline}.code-excerpt pre{margin:0;padding:1rem 0;font-size:.8rem;line-height:1.65;overflow-x:auto}.code-excerpt pre:focus-visible{outline-offset:-2px}.code-line{color:#e4e1db;white-space:pre;padding:0 1.1rem;display:block}.code-comment{color:#8f8a80;font-style:italic}.tradeoff-list{gap:.75rem;list-style:none;display:grid}.tradeoff-list li{border:var(--border);background:#ffffff05;border-radius:12px;padding:1rem 1.15rem}.tradeoff-choice{color:var(--text-primary);font-size:.95rem;font-weight:300}.tradeoff-choice strong{font-weight:500}.tradeoff-over{color:var(--accent-warm);font-family:var(--font-display);font-style:italic}.tradeoff-because{color:var(--text-secondary);margin-top:.35rem;font-size:.88rem;font-weight:300}.next-steps-list{gap:.6rem;list-style:none;display:grid}.next-steps-list li{color:var(--text-secondary);padding-left:1.5rem;font-size:.93rem;font-weight:300;line-height:1.65;position:relative}.next-steps-list li:before{content:"→";color:var(--accent-warm);position:absolute;left:0}.modal-footer-actions{border-top:var(--border);flex-wrap:wrap;justify-content:flex-start;margin-top:2.5rem;padding-top:1.5rem}.project-status-note{color:var(--text-secondary);font-size:.88rem;font-style:italic}.activity-section{margin-top:4rem}.activity-grid-layout{flex-direction:column;gap:2rem;width:100%;display:flex}.activity-card{border:var(--border);border-radius:var(--radius-leaf);background:var(--bg-secondary);box-shadow:var(--shadow);flex-direction:column;gap:1.4rem;padding:1.8rem;display:flex}.activity-card-header{border-bottom:var(--border);align-items:flex-start;padding-bottom:1rem}.activity-card-title{color:var(--text-primary);font-family:var(--font-display);font-size:1.2rem;font-style:italic;font-weight:500}.activity-card-subtitle{color:var(--text-secondary);font-size:.8rem}.contribution-count{color:var(--text-secondary);text-align:right;font-size:.8rem}.count-num{color:var(--accent-alt);font-family:var(--font-display);font-weight:500}.commit-list{flex-direction:column;gap:1rem;max-height:340px;display:flex;overflow-y:auto}.commit-item{border-bottom:var(--border);justify-content:space-between;align-items:center;gap:1.5rem;padding-bottom:.8rem;display:flex}.commit-item:last-child{border-bottom:0;padding-bottom:0}.commit-item-left{flex:none;align-items:center;gap:.5rem;width:150px;display:flex}.commit-item-right{flex:1;justify-content:space-between;align-items:center;gap:1rem;min-width:0;display:flex}.commit-repo-badge{color:var(--accent-alt);font-size:.72rem;font-family:var(--font-display);text-overflow:ellipsis;white-space:nowrap;padding:.12rem 0;font-style:italic;overflow:hidden}.commit-message{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:.86rem;font-weight:300;overflow:hidden}.commit-meta{flex:0 auto;align-items:center;gap:.6rem;min-width:0;display:flex}.commit-branch{border:var(--border);min-width:0;max-width:11rem;color:var(--text-secondary);border-radius:999px;align-items:center;gap:.3rem;padding:.1rem .45rem;font-size:.68rem;display:inline-flex}.commit-branch svg{fill:currentColor;flex:none;width:.7rem;height:.7rem}.commit-branch-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.commit-time{color:var(--text-secondary);white-space:nowrap;flex:none;font-size:.71rem}.activity-empty-state{min-height:130px;color:var(--text-secondary);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;padding:1.5rem;font-size:.86rem;display:flex}.contribution-unavailable{border:1px dashed #ffffff1f;border-radius:12px}.contribution-unavailable strong{color:var(--text-primary);font-family:var(--font-display);font-style:italic;font-weight:500}.contribution-unavailable a{color:var(--accent-alt);margin-top:.4rem}.contribution-grid-scroll-wrapper{width:100%;padding-bottom:.5rem;overflow-x:auto}.contribution-grid-wrapper{flex-direction:column;gap:.5rem;width:max-content;min-width:670px;margin:0 auto;display:flex}.contribution-months{color:var(--text-secondary);grid-template-columns:repeat(12,1fr);padding-left:12px;font-size:.68rem;display:grid}.contribution-grid{gap:3px;display:flex}.contribution-column{flex-direction:column;gap:3px;display:flex}.contrib-cell{border-radius:2px;width:10px;height:10px;transition:transform .1s;display:block}.contrib-cell:hover{transform:scale(1.25)}.level-0{background:#19191b}.level-1{background:#193c2b}.level-2{background:#216e45}.level-3{background:#2f9d5c}.level-4{background:#4ac777}.contribution-legend{color:var(--text-secondary);justify-content:flex-end;align-items:center;gap:4px;margin-top:.35rem;font-size:.72rem;display:flex}.portfolio-footer{border-top:var(--border);color:var(--text-secondary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;margin-top:5rem;padding-top:2.2rem;font-size:.82rem;display:flex}.footer-meta-block{flex-wrap:wrap;align-items:center;gap:1.5rem;display:flex}.footer-credit{color:var(--text-secondary);font-size:.8rem}.back-to-top-btn{z-index:900;width:46px;height:46px;box-shadow:var(--shadow);color:var(--accent-alt);cursor:pointer;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:opacity .22s ease, transform .22s ease, background var(--transition), color var(--transition);background:#141416e6;border:1px solid #d6c7b74d;border-radius:50%;place-items:center;display:grid;position:fixed;bottom:1.5rem;right:1.5rem;transform:translateY(12px)}.back-to-top-btn.visible{opacity:1;pointer-events:auto;transform:translateY(0)}.back-to-top-btn svg{fill:currentColor;width:20px;height:20px}.back-to-top-btn.visible:hover{background:var(--accent-alt);color:#090909;transform:translateY(-2px)}.sticky-contact-bar{z-index:1000;border-bottom:var(--border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);opacity:0;background:#050505d1;transition:transform .22s,opacity .22s;position:fixed;top:0;left:0;right:0;transform:translateY(-100%)}.sticky-contact-bar.visible{opacity:1;transform:translateY(0)}.sticky-contact-inner{width:var(--page-width);justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;padding:.6rem 1.5rem;display:flex}.sticky-contact-identity{min-width:0;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;align-items:baseline;gap:.75rem;display:flex}.sticky-contact-name{color:var(--text-primary);font-family:var(--font-display);white-space:nowrap;font-size:1.15rem;font-style:italic}.sticky-contact-title{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;overflow:hidden}.sticky-resume-button{flex:none;gap:.45rem;min-height:34px;padding:.4rem .95rem;font-size:.8rem}.sticky-resume-button svg{fill:currentColor;width:15px;height:15px}.section-title{scroll-margin-top:4.5rem}@media (width>=1800px){.experience-list{grid-template-columns:repeat(2,minmax(0,1fr))}.experience-list .entry-topics{margin-top:auto}.education-groups{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:start;gap:2rem;display:grid}}@media (width>=2200px){.activity-grid-layout{grid-template-columns:minmax(0,1fr) auto;display:grid}}@media (width<=900px){.project-card.has-thumbnail{grid-template-columns:1fr;gap:1.5rem}.thumbnail-phones{height:260px}}@media (width<=767px){.container{padding:2rem 1rem 4rem}header{margin-bottom:2rem;padding-bottom:1.4rem}.section-title{margin-bottom:1.5rem}.header-nav-row,.project-card-title-row,.project-card-footer,.activity-card-header{flex-direction:column;align-items:stretch}.header-top{align-items:flex-start;gap:.75rem;margin-bottom:1rem}.portfolio-subtitle{font-size:1.05rem}.resume-button{min-height:36px;padding:.45rem .85rem}.portfolio-bio{font-size:.98rem}.contact-bar{gap:.5rem;margin-top:1.1rem}.contact-button{gap:.4rem;padding:.45rem .8rem;font-size:.84rem}.copy-email-btn{width:36px}.header-nav-row{gap:.75rem;margin-top:1.4rem}.entry-card{padding:1.25rem}.entry-timeline{padding-left:1.35rem}.entry-timeline>li:before{left:calc(-1.05rem - 4px)}.architecture-layer{grid-template-columns:1fr;gap:.55rem}.modal-metrics{gap:.9rem 1.6rem}.modal-metrics dd{font-size:1.4rem}.project-navigation{flex-wrap:wrap;gap:.2rem 1rem;width:100%}.nav-link{white-space:nowrap;flex:none}.project-card{padding:1.5rem}.project-meta-badges{justify-content:flex-start}.project-card-footer .cta-button{width:100%}.repo-links{justify-content:flex-start}.modal-overlay{place-items:center;padding:.75rem}.modal-content{border:var(--border-strong);border-radius:22px 6px;width:100%;max-height:calc(100dvh - 1.5rem)}.modal-hero,.story-view{padding-left:1.2rem;padding-right:1.2rem}.modal-title-copy{padding-right:2.8rem}.story-introduction{text-align:left;margin-top:2.5rem}.audience-callout,.engineering-notes article{grid-template-columns:1fr;gap:.45rem}.feature-list,.journey-list{grid-template-columns:1fr}.journey-list li:not(:last-child):after{display:none}.modal-footer-actions{flex-direction:column;align-items:stretch}.modal-footer-actions .cta-button,.modal-footer-actions .secondary-button{width:100%}.activity-card{padding:1.3rem}.contribution-count{text-align:left}.commit-item,.commit-item-right{flex-direction:column;align-items:flex-start;gap:.35rem}.commit-item-left{width:auto}.commit-message{white-space:normal}.portfolio-footer{flex-direction:column;align-items:flex-start;gap:1.25rem;margin-top:3.5rem}.footer-meta-block{justify-content:space-between;width:100%}}@media (width<=440px){.portfolio-title{font-size:2.45rem}.nav-link{font-size:.9rem}.thumbnail-phones{gap:.55rem;height:220px}.project-card{padding:1.3rem}.modal-hero{padding-top:1.4rem}.case-study-title{font-size:2rem}}@media (width<=767px){.availability-pill{align-items:flex-start;margin-bottom:1rem;font-size:.8rem;line-height:1.5}.availability-dot{margin-top:.42rem}.core-stack{gap:.4rem;margin:1.3rem 0 1.5rem}.core-stack-label{width:100%}.header-top{flex-direction:column}.header-top .resume-button{white-space:nowrap}.sticky-contact-inner{padding:.55rem 1rem}.sticky-contact-title{display:none}.back-to-top-btn{width:42px;height:42px;bottom:1rem;right:1rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
