:root{--space-2xs: 4px;--space-xs: 6px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px;--space-2xl: 32px;--space-3xl: 40px;--space-4xl: 60px;--space-5xl: 80px;--font-body: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto, sans-serif;--font-heading: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto, sans-serif}:root{--bg-page: #fafafa;--bg-card: #ffffff;--bg-card-hover: #f4f4f5;--bg-placeholder: #efeff0;--border: #dadade;--border-hover: #d0d0d4;--divider: #e7e7ea;--text-primary: #1a1a1a;--text-secondary: #545454;--text-muted: #545454;--text-faint: #545454;--text-body: #1a1a1a;--text-footer: #545454;--accent: #1a1a1a;--accent-bright: #1a1a1a;--accent-hover: #000000;--accent-text: #1a1a1a;--accent-border: rgba(26, 26, 26, .25);--accent-subtle: rgba(26, 26, 26, .08);--btn-secondary-bg: #efeff0;--btn-secondary-border: #e7e7ea;--btn-secondary-hover: #e7e7ea;--btn-accent: #1a1a1a;--btn-accent-hover: #000000;--btn-accent-on: #ffffff;--btn-accent-border: rgba(26, 26, 26, .25);--btn-accent-subtle: rgba(26, 26, 26, .08);--tag-bg: #efeff0;--tag-border: #c2c2c8;--tag-text: #1a1a1a;--tag-tool-text: #4f4f4f;--nav-link: #4f4f4f;--logo-bg: #1a1a1a;--logo-text: #ffffff;--badge-bg: #efeff0;--badge-border: #e7e7ea;--bullet: var(--text-primary);--card-border: #000000;--line-width: 1px;--grid-tile: rgba(0, 0, 0, .1);--tooltip-divider: rgba(255, 255, 255, .15)}[data-theme=dark]{--bg-page: #121212;--bg-card: #1a1a1a;--bg-card-hover: #202020;--bg-placeholder: #141414;--border: #333333;--border-hover: #3a3a3a;--divider: #2a2a2a;--text-primary: #f2f2f2;--text-secondary: #cccccc;--text-muted: #cccccc;--text-faint: #cccccc;--text-body: #f2f2f2;--text-footer: #cccccc;--accent: #f2f2f2;--accent-bright: #f2f2f2;--accent-hover: #ffffff;--accent-text: #f2f2f2;--accent-border: rgba(242, 242, 242, .25);--accent-subtle: rgba(242, 242, 242, .08);--btn-secondary-bg: #141414;--btn-secondary-border: #2a2a2a;--btn-secondary-hover: #3a3a3a;--btn-accent: #f2f2f2;--btn-accent-hover: #ffffff;--btn-accent-on: #121212;--btn-accent-border: rgba(242, 242, 242, .25);--btn-accent-subtle: rgba(242, 242, 242, .08);--tag-bg: #141414;--tag-border: #4a4a4a;--tag-text: #f2f2f2;--tag-tool-text: #cccccc;--nav-link: #9a9a9a;--logo-bg: #f2f2f2;--logo-text: #121212;--badge-bg: #141414;--badge-border: #2a2a2a;--bullet: var(--text-primary);--card-border: #6a6a6a;--grid-tile: rgba(255, 255, 255, .1);--tooltip-divider: rgba(0, 0, 0, .15)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}body{font-family:var(--font-body);background-color:var(--bg-page);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none;color:inherit}*:focus{outline:none}*:focus-visible{outline:2px solid var(--text-primary);outline-offset:2px}.skip-link{position:absolute;top:-100%;left:16px;z-index:200;padding:10px 16px;background-color:var(--text-primary);color:var(--bg-page);border-radius:8px}.skip-link:focus-visible{top:16px}.btn-primary{display:inline-flex;align-items:center;gap:6px;border-radius:4px;padding:6px 12px;background-color:var(--btn-accent);border:1.5px solid var(--btn-accent-border);font-size:16px;font-weight:500;color:var(--btn-accent-on);line-height:16px;cursor:pointer;transition:background-color .2s;font-family:inherit}.btn-primary:hover{background-color:var(--btn-accent-hover)}.btn-primary:active{background-color:var(--btn-accent-hover);transform:translateY(1px)}.btn-primary-lg{padding:10px 20px;font-size:16px;font-weight:500;line-height:18px;gap:8px}.btn-secondary{display:inline-flex;align-items:center;gap:8px;border-radius:4px;padding:10px 20px;background-color:var(--btn-secondary-bg);border:1.5px solid var(--btn-secondary-border);font-size:16px;font-weight:500;color:var(--text-primary);line-height:18px;cursor:pointer;transition:background-color .2s;font-family:inherit}.btn-secondary:hover{background-color:var(--btn-secondary-hover)}.btn-outline{display:inline-flex;align-items:center;gap:8px;border-radius:4px;padding:10px 20px;background-color:var(--bg-card);border:1.5px solid var(--btn-accent);color:var(--btn-accent);font-size:16px;font-weight:500;line-height:18px;cursor:pointer;transition:all .2s;font-family:inherit}.btn-outline:hover{background-color:var(--btn-accent-subtle);color:var(--btn-accent)}.btn-outline:active{background-color:var(--btn-accent-border);transform:translateY(1px)}.icon{width:1.15em;height:1.15em;vertical-align:-2px;flex-shrink:0}.hamburger-menu{display:none;background:none;border:none;font-size:24px;color:var(--text-primary);cursor:pointer;padding:4px}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.bounce{animation:bounce 1.5s ease-in-out infinite}.divider{width:100%;max-width:1200px;margin:0 auto;padding:0;scroll-margin-top:40px}.divider-line{width:100%;height:var(--line-width);background-color:var(--card-border)}.divider--spaced{padding-top:64px}.divider--icons{display:flex;align-items:center;gap:24px}.divider--icons .divider-line{flex:1}.divider-icons{display:flex;align-items:center;gap:20px;color:var(--text-muted);font-size:20px;flex-shrink:0}.divider-icons .icon{width:1em;height:1em;vertical-align:0}.section{display:flex;width:100%;max-width:1200px;margin:0 auto;padding:64px 48px;gap:120px;scroll-margin-top:64px}#experience,#portfolio{scroll-margin-top:64px}.section--header-only{padding-bottom:40px}.section-label-col{display:flex;flex-direction:column;flex-shrink:0;width:200px;gap:12px}.section-content-col{display:flex;flex-direction:column;flex:1;gap:24px}.section-tag{display:flex;align-items:center;gap:6px;font-size:16px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);font-weight:400;line-height:16px}.section-tag .icon{width:16px;height:16px}.section-title{font-family:var(--font-heading);font-size:32px;font-weight:700;line-height:40px}body:before,body:after{content:"";position:fixed;top:0;bottom:0;width:0;border-left:var(--line-width) solid var(--card-border);pointer-events:none;z-index:101}body:before{left:calc(50% - 600px)}body:after{left:calc(50% + 600px)}.nav{--nav-pad-y: 16px;display:flex;align-items:center;justify-content:space-between;width:100%;max-width:1200px;margin:0 auto;padding:var(--nav-pad-y) 48px;position:relative;background-color:var(--bg-page)}.nav-top{background-color:transparent}.nav-top .nav,.nav-fixed .nav{border-bottom:var(--line-width) solid var(--card-border)}.exploration-nav .nav{border-bottom:none}.nav-fixed{position:fixed;top:0;left:0;right:0;z-index:100;background-color:transparent;transform:translateY(-100%);opacity:0;visibility:hidden;transition:transform .25s ease,opacity .2s ease,visibility .2s ease;pointer-events:none}.nav-fixed.visible{transform:translateY(0);opacity:1;visibility:visible;pointer-events:auto}.nav-logo{display:flex;align-items:center;gap:8px}.nav-logo-icon{width:32px;height:32px;flex-shrink:0}.nav-logo-text{font-size:20px;font-weight:700;color:var(--text-primary);line-height:20px}.nav-links{display:flex;align-items:center;gap:32px}.nav-link{position:relative;font-size:16px;font-weight:400;color:var(--text-primary);line-height:18px;transition:color .2s}.nav-link:after{content:"";position:absolute;left:0;right:0;bottom:calc(-1 * var(--nav-pad-y) - var(--line-width));height:2px;background-color:var(--btn-accent);transform:scaleX(0);transform-origin:center;opacity:0;transition:transform .25s cubic-bezier(.25,1,.5,1),opacity .25s cubic-bezier(.25,1,.5,1)}.nav-link:hover,.nav-link.active{color:var(--btn-accent)}.nav-link.active:after{transform:scaleX(1);opacity:1}.theme-toggle{background:none;border:none;cursor:pointer;font-size:18px;color:var(--nav-link);transition:color .2s;padding:4px;display:flex;align-items:center}.theme-toggle:hover{color:var(--text-primary)}.about-intro{display:flex;flex-direction:column;gap:12px}.about-name{font-family:var(--font-heading);font-size:48px;font-weight:600;line-height:56px;letter-spacing:-.02em}.about-subtitle{font-size:20px;font-weight:400;line-height:32px;color:var(--text-secondary);max-width:720px;text-wrap:balance}.about-buttons{display:flex;align-items:center;gap:16px;padding-bottom:8px}.about-buttons a{min-width:160px;justify-content:center;text-align:center}.about-photo{width:154px;height:154px;border-radius:50%;object-fit:cover;margin-top:8px}.about-text{font-size:16px;font-weight:400;line-height:28px;color:var(--text-body);text-wrap:pretty}.about-stats{display:flex;padding-top:16px;gap:40px}.stat-number{font-size:36px;font-weight:700;line-height:44px}.stat-label{font-size:14px;font-weight:400;line-height:18px;color:var(--text-muted)}.about-details{display:flex;flex-direction:column;gap:32px;padding-top:32px;border-top:var(--line-width) solid var(--divider);margin-top:16px}.about-details-group{display:flex;flex-direction:column;gap:12px}.about-details-group--inline{flex-direction:row;align-items:center;gap:12px}.about-details-icon{font-size:20px;line-height:1}.about-details-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);display:flex;align-items:center;gap:8px}.about-details-title .icon{color:var(--accent-text);width:16px;height:16px}.about-details-text{font-size:16px;font-weight:700;color:var(--text-primary)}.languages-groups{display:flex;flex-wrap:wrap;gap:20px 40px}.language-group{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.language-group-title{font-size:14px;color:var(--text-faint);font-weight:400}.language-group-list{display:flex;flex-wrap:wrap;gap:4px 16px;list-style:none;padding:0;margin:0}.language-name{font-size:16px;font-weight:700;color:var(--text-primary)}.experience-description{font-size:16px;font-weight:400;line-height:28px;color:var(--text-body)}.experience-cards{width:100%;max-width:1200px;margin:0 auto;padding:0 48px;display:flex;flex-direction:column;gap:16px}.experience-card{display:flex;width:100%;border-radius:4px;padding:32px;gap:88px;background-color:var(--bg-card);border:var(--line-width) solid var(--card-border)}.experience-card-company{flex-shrink:0;width:200px}.experience-card-company-name{font-size:18px;font-weight:700;line-height:24px}.experience-card-company-logo{display:block;width:auto;height:28px;max-width:160px;object-fit:contain;object-position:left;margin-bottom:12px}.experience-card-company-duration{display:flex;flex-direction:column;font-size:16px;font-weight:400;color:var(--text-secondary);margin-top:4px;line-height:24px}.experience-card-roles{flex:1;display:flex;flex-direction:column}.experience-role{display:flex;flex-direction:column;gap:8px;padding:20px 0}.experience-role-header{display:flex;justify-content:space-between;align-items:flex-start}.experience-role:first-child{padding-top:0}.experience-role:last-child{padding-bottom:0}.experience-role+.experience-role{border-top:var(--line-width) solid var(--divider)}.experience-role-info{display:flex;flex-direction:column;gap:4px}.experience-role-date-mobile{display:none}.experience-role-title{font-size:18px;font-weight:700;line-height:24px;color:var(--tag-text)}.experience-role-location{font-size:16px;font-weight:400;line-height:24px;color:var(--text-secondary)}.experience-role-date{font-size:16px;font-weight:400;line-height:24px;color:var(--text-secondary);white-space:nowrap;flex-shrink:0}.experience-role-summary{font-size:16px;font-weight:400;line-height:24px;color:var(--text-primary);margin-top:8px}.experience-role-details{list-style:none;display:flex;flex-direction:column;gap:0;margin-top:8px}.experience-role-details li{font-size:16px;font-weight:400;line-height:28px;color:var(--text-primary);padding-left:12px;position:relative}.experience-role-details li:before{content:"•";position:absolute;left:0;color:var(--bullet)}.experience-card-work{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:20px 0;border-top:var(--line-width) solid var(--divider)}.experience-card-work-title{font-size:16px;font-weight:400;line-height:16px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-primary)}.experience-role-case-study{font-size:16px;font-weight:500;line-height:20px;color:var(--text-primary);text-decoration:underline;text-underline-offset:3px}.education-card{display:flex;flex:1;align-items:center;border-radius:4px;padding:32px;gap:32px;background-color:var(--bg-card);border:var(--line-width) solid var(--card-border)}.education-icon{width:56px;height:auto;flex-shrink:0;object-fit:contain}.education-details{display:flex;flex-direction:column;gap:4px}.education-name{font-size:18px;font-weight:700;line-height:24px}.education-degree{font-size:16px;font-weight:400;line-height:24px;color:var(--text-secondary)}.education-year{font-size:16px;font-weight:400;line-height:24px;color:var(--text-secondary);margin-top:2px}.skills-content{display:flex;flex-direction:column;flex:1;gap:32px}.skills-row{display:flex;flex-wrap:wrap;gap:10px}.skill-tag{border-radius:999px;padding:10px 20px;background-color:var(--tag-bg);border:var(--line-width) solid var(--tag-border);font-size:14px;font-weight:400;line-height:18px;color:var(--tag-text)}.skills-row-group{display:flex;flex-direction:column;gap:12px}.skills-row-label{font-size:16px;font-weight:400;color:var(--text-muted)}.tool-tag{border-radius:999px;padding:10px 20px;border:var(--line-width) solid var(--tag-border);font-size:14px;font-weight:400;line-height:16px;color:var(--tag-tool-text)}.tool-tag--strike{text-decoration:line-through}.work-cards{display:flex;flex-direction:column;gap:16px;width:100%;max-width:1200px;margin:0 auto;padding:0 48px 64px}.work-card{border-radius:4px;border:var(--line-width) solid var(--card-border);background-color:var(--bg-card);overflow:hidden;display:flex;flex-direction:row;transition:transform .25s cubic-bezier(.25,1,.5,1),box-shadow .25s cubic-bezier(.25,1,.5,1);cursor:pointer}.work-card:hover{transform:translateY(-5px);box-shadow:0 12px 28px #0000001f}.work-card-placeholder{width:280px;aspect-ratio:16 / 10;flex-shrink:0;align-self:center;background-color:var(--bg-placeholder);overflow:hidden}.work-card-image{width:100%;height:100%;object-fit:cover}.work-card-body{padding:24px 32px;display:flex;flex-direction:column;gap:8px;flex:1;justify-content:center}.work-card-title{font-size:18px;font-weight:700;line-height:22px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.work-card-description{font-size:16px;font-weight:400;line-height:24px;color:var(--text-primary);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.work-card-separator{width:0;align-self:stretch;border-left:var(--line-width) solid var(--divider);flex-shrink:0}.work-card-action{display:flex;flex-direction:column;align-items:center;justify-content:center;width:200px;flex-shrink:0;gap:12px}.work-card-company{font-size:16px;font-weight:500;color:var(--text-muted);white-space:nowrap}.work-card-company-logo{display:block;width:auto;height:28px;max-width:140px;object-fit:contain}.work-card-btn{white-space:nowrap}.work-disclaimer{font-size:16px;font-weight:400;line-height:28px;color:var(--text-body)}.cta-section{position:relative;display:flex;flex-direction:column;align-items:center;width:100%;max-width:1200px;margin:0 auto;padding:64px 48px;gap:32px;scroll-margin-top:64px}.cta-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:0;transition:opacity 1.2s cubic-bezier(.25,1,.5,1)}.cta-canvas.is-visible{opacity:1}.cta-section>.cta-heading,.cta-section>.cta-subtext,.cta-section>.side-projects{position:relative;z-index:1}.cta-heading{font-family:var(--font-heading);font-size:48px;font-weight:700;line-height:56px;letter-spacing:-.03em;text-align:center}.cta-subtext{font-size:16px;font-weight:400;line-height:28px;text-align:center;color:var(--text-secondary)}.side-projects{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;width:100%;margin-top:16px}.side-project-card{display:flex;flex-direction:column;width:300px;border-radius:4px;overflow:hidden;background-color:var(--bg-card);border:var(--line-width) solid var(--card-border);transition:transform .25s cubic-bezier(.25,1,.5,1),box-shadow .25s cubic-bezier(.25,1,.5,1)}.side-project-card:hover{transform:translateY(-5px);box-shadow:0 12px 28px #0000001f}.side-project-thumb{width:100%;aspect-ratio:16 / 10;background-color:var(--bg-placeholder);overflow:hidden}.side-project-thumb-img{width:100%;height:100%;object-fit:cover;display:block}.side-project-thumb-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:var(--accent-subtle)}.side-project-thumb-placeholder span{font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-text)}.side-project-body{display:flex;flex-direction:column;gap:4px;padding:16px;text-align:left;flex:1}.side-project-title{font-size:16px;font-weight:600;line-height:22px;color:var(--text-primary)}.side-project-source{margin-top:auto;padding-top:8px;font-size:14px;font-weight:400;line-height:18px;color:var(--text-muted)}.footer{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:1200px;margin:0 auto;padding:32px 48px}.footer-copyright{font-size:14px;font-weight:400;line-height:16px;color:var(--text-footer)}@media (max-width: 1024px){.nav{--nav-pad-y: 20px;padding:var(--nav-pad-y) 40px}.about-name{font-size:40px;line-height:48px}.about-subtitle{font-size:18px;line-height:28px}.divider{padding:0 40px}.section{flex-direction:column;padding:60px 40px;gap:32px}.section--header-only{padding-bottom:20px}.section-label-col{width:100%}.experience-cards{padding:0 40px}.experience-card{flex-direction:column;gap:24px}.experience-card-company{width:100%}.work-cards{padding:0 40px 60px}.work-card-placeholder{width:220px}.cta-section{padding:60px 40px}.cta-heading{font-size:36px;line-height:44px}.footer{padding:32px 16px}}@media (max-width: 640px){.nav{padding:16px;position:relative}.nav-top .nav,.nav-fixed .nav{border-bottom:none}.nav-logo-text{display:none}.nav-controls-mobile{display:flex;align-items:center;gap:8px}.nav-link-cta-desktop{display:none}.hamburger-menu{display:block}.nav-links{display:none}.nav-links--open{display:flex;flex-direction:column;align-items:flex-start;position:absolute;top:100%;left:0;right:0;background-color:var(--bg-page);padding:24px;gap:16px;border-bottom:var(--line-width) solid var(--card-border)}.about-name{font-size:36px;line-height:44px}.about-subtitle{font-size:18px;line-height:26px}.about-subtitle-break{display:none}.about-buttons{flex-direction:column;width:fit-content;align-self:center}.about-buttons .btn-primary-lg,.about-buttons .btn-outline{width:300px;justify-content:center}.divider,.divider--spaced{padding:0 16px;margin:0}.divider--icons{margin:0}.section{padding:32px 16px;gap:24px}.section--header-only{padding-bottom:32px}.section-label-col{text-align:center;align-items:center}.section-tag{justify-content:center}.experience-description{text-align:center}#skills .skills-content{align-items:center}#skills .skills-row{justify-content:center}#skills .skills-row-group{align-items:center}#skills .skills-row-label{text-align:center}.about-photo{width:115px;height:115px}#about .section-tag,#about .section-title{display:none}.about-details{padding-top:24px}.section-content-col{text-align:center;align-items:center}.about-text,.experience-description,.work-disclaimer,.cta-subtext,.experience-role-details li{line-height:24px}#about .about-stats{justify-content:center;gap:24px}#about .stat{display:flex;flex-direction:column;align-items:center}#about .about-details,#about .about-details-group{align-items:center}#about .about-details-group--inline,#about .about-details-title{justify-content:center}#about .languages-groups{flex-direction:column;gap:20px;align-items:center}#about .language-group{align-items:center}.education-card{padding:16px;gap:16px;flex-direction:row;align-items:flex-start}.education-icon{width:40px}.experience-card{padding:16px}.experience-cards{padding:0 16px 32px}.experience-card-company{display:flex;flex-wrap:wrap;align-items:center}.experience-card-company-logo{order:1;margin-bottom:0;margin-left:auto;object-position:right}.experience-card-company-name{order:0}.experience-card-company-duration{order:2;flex-basis:100%}.experience-role{flex-direction:column;align-items:stretch;gap:8px}.experience-role-info{gap:2px}.experience-role-date-mobile{display:block;font-size:14px;color:var(--text-secondary)}.experience-role-date-text{display:none}.work-cards{padding:0 16px 32px}.work-card{flex-direction:column}.work-card-placeholder{width:100%;aspect-ratio:16 / 10}.work-card-body{padding:16px}.work-card-separator{width:auto;height:0;align-self:auto;margin:0 16px;border-left:none;border-top:var(--line-width) solid var(--divider)}.work-card-action{flex-direction:row;justify-content:space-between;width:100%;padding:16px}.cta-section{padding:32px 16px}.cta-heading{font-size:28px;line-height:36px}.footer{flex-direction:column;gap:16px;padding:32px 16px;text-align:center}}.portfolio-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;z-index:9999;display:flex;visibility:hidden;opacity:0;transition:opacity .3s ease,visibility .3s ease}.portfolio-modal-overlay.open{visibility:visible;opacity:1}@keyframes portfolio-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes portfolio-slide-down{0%{transform:translateY(0)}to{transform:translateY(100%)}}.portfolio-modal-overlay.open .portfolio-modal-container{animation:portfolio-slide-up .6s cubic-bezier(.25,1,.5,1) both}.portfolio-modal-overlay.closing{opacity:0;transition:opacity .6s cubic-bezier(.25,1,.5,1)}.portfolio-modal-overlay.closing .portfolio-modal-container{animation:portfolio-slide-down .6s cubic-bezier(.25,1,.5,1) both}@media (prefers-reduced-motion: reduce){.portfolio-modal-overlay.open .portfolio-modal-container,.portfolio-modal-overlay.closing .portfolio-modal-container{animation:none}}.portfolio-modal-container{display:flex;width:100%;height:100vh;background-color:var(--bg-page);position:relative;overflow:hidden;box-shadow:0 0 40px #00000080}.portfolio-modal-sidebar{flex-shrink:0;background-color:var(--bg-page);border-right:var(--line-width) solid var(--card-border);display:flex;flex-direction:column;overflow-y:auto}.portfolio-modal-resizer{width:var(--line-width);cursor:col-resize;background-color:transparent;flex-shrink:0;transition:background-color .2s;z-index:10;margin-left:calc(-1 * var(--line-width))}.portfolio-modal-resizer:hover,.portfolio-modal-resizer:active{background-color:var(--accent)}.portfolio-modal-sidebar-header{padding:24px 16px;border-bottom:var(--line-width) solid var(--card-border);display:flex;align-items:center;gap:16px}.portfolio-modal-sidebar-avatar{width:64px;height:64px;border-radius:50%;background-color:var(--border);flex-shrink:0;overflow:hidden}.portfolio-modal-sidebar-info h2{font-size:24px;font-weight:700;color:var(--text-primary);line-height:1.2}.portfolio-modal-sidebar-info p{font-size:14px;color:var(--text-secondary);margin-top:4px}.portfolio-modal-sidebar-nav{display:flex;flex-direction:column}.portfolio-modal-sidebar-footer{margin-top:auto;padding:16px;border-top:var(--line-width) solid var(--card-border);display:flex;justify-content:flex-start}.portfolio-modal-nav-item{padding:16px;border-bottom:var(--line-width) solid var(--card-border);cursor:pointer;display:flex;align-items:center;gap:16px;font-size:14px;color:var(--text-primary);transition:background-color .2s;text-decoration:none}.portfolio-modal-nav-thumb{width:80px;aspect-ratio:16 / 10;background-color:var(--bg-placeholder);border:var(--line-width) solid var(--card-border);border-radius:4px;box-sizing:border-box;flex-shrink:0;overflow:hidden}.portfolio-modal-nav-thumb-img{display:block;width:100%;height:100%;object-fit:cover}.portfolio-modal-nav-item:hover{background-color:var(--bg-card-hover)}.portfolio-modal-nav-item.active{background-color:var(--tag-bg)}.portfolio-modal-main{flex:1;overflow-y:auto;position:relative;display:flex;justify-content:center;padding:56px 40px;background-color:var(--bg-page)}.portfolio-modal-content{width:100%;max-width:1200px;display:flex;flex-direction:column;gap:24px}.portfolio-modal-bottom-spacer{width:100%;height:56px;flex:0 0 56px}.portfolio-modal-content p,.portfolio-modal-content h1,.portfolio-modal-content h2,.portfolio-modal-content h3,.portfolio-modal-content ul,.portfolio-content-label{width:100%;max-width:768px;margin-inline:auto}.portfolio-modal-content p{font-size:16px;line-height:1.6;color:var(--text-body)}.portfolio-modal-header{width:100%;max-width:768px;margin-inline:auto;display:flex;flex-direction:column;gap:16px}.portfolio-modal-title{font-size:48px;font-weight:700;margin-bottom:0}.portfolio-modal-byline{font-size:16px;font-weight:500;color:var(--text-secondary)}.portfolio-modal-credit{border-top:var(--line-width) solid var(--divider);padding-top:16px;margin-top:24px;font-size:14px;color:var(--text-secondary)}.portfolio-modal-content .portfolio-modal-subtitle{font-size:20px;font-weight:400;line-height:30px;color:var(--text-secondary);margin-bottom:0}.portfolio-modal-header+.portfolio-content-image{margin-top:8px}.portfolio-modal-content .portfolio-modal-subtitle-note-text{font-weight:700}.portfolio-modal-content .portfolio-modal-subtitle-note{color:var(--text-primary)}.portfolio-modal-content .portfolio-modal-subtitle-note-emoji{margin-left:4px}.portfolio-modal-close{position:absolute;top:24px;right:40px;width:32px;height:32px;border-radius:50%;background-color:var(--bg-placeholder);color:var(--text-primary);display:flex;align-items:center;justify-content:center;border:none;cursor:pointer;font-size:16px;transition:background-color .2s;z-index:10}.portfolio-modal-close:hover{background-color:var(--border-hover)}@media (max-width: 1024px){.portfolio-modal-sidebar{width:300px!important}.portfolio-modal-resizer{display:none}}@media (max-width: 768px){.portfolio-modal-container{flex-direction:column}.portfolio-modal-sidebar{display:none}.portfolio-modal-main{padding:40px 20px 56px}.portfolio-modal-close{top:24px;right:20px;width:32px;height:32px;font-size:16px}}.portfolio-content-heading{font-size:24px;font-weight:700;line-height:32px;color:var(--text-primary);margin-top:24px}.portfolio-content-heading:first-child{margin-top:0}.portfolio-content-subheading{font-size:20px;font-weight:700;line-height:28px;color:var(--text-primary);margin-top:8px}.portfolio-content-image{display:block;width:100%;max-width:768px;flex-shrink:0;margin:32px auto}.portfolio-content-image+.portfolio-content-image{margin-top:-32px}.portfolio-content-image:has(+.portfolio-content-heading){margin-bottom:0}.portfolio-content-image:has(+.portfolio-content-subheading){margin-bottom:0}.portfolio-content-image:has(+.portfolio-content-label){margin-bottom:0}.portfolio-image-wrap{position:relative;overflow:hidden;border-radius:4px;border:var(--line-width) solid var(--border);background-color:var(--bg-placeholder)}.portfolio-detail-img-dark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;transition:opacity .35s cubic-bezier(.25,1,.5,1)}.portfolio-detail-img-dark.visible{opacity:1}.portfolio-image-theme-toggle{position:absolute;top:10px;right:10px;display:flex;gap:2px;padding:2px;border-radius:999px;background-color:#ffffffeb;border:var(--line-width) solid var(--border);z-index:2}.portfolio-image-theme-toggle button{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;border-radius:999px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background-color .25s cubic-bezier(.25,1,.5,1),color .25s cubic-bezier(.25,1,.5,1)}.portfolio-image-theme-toggle button .icon{width:12px;height:12px}.portfolio-image-theme-toggle button.active{background-color:var(--text-primary);color:var(--bg-page)}.portfolio-image-caption{font-size:16px;line-height:1.5;color:var(--text-secondary);margin-top:8px;padding:0 4px}.portfolio-detail-img,.image-placeholder-inner{display:block;width:100%;height:auto}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:10000;display:flex;align-items:center;justify-content:center;padding:32px;cursor:pointer}.lightbox-img{max-width:calc(100vw - 64px);max-height:calc(100vh - 64px);object-fit:contain;border-radius:4px;cursor:default}.portfolio-content-image{cursor:zoom-in}.portfolio-content-label{font-size:16px;font-weight:700;line-height:1.6;color:var(--text-primary);margin-top:8px;margin-bottom:-16px}.portfolio-content-list{list-style:none;display:flex;flex-direction:column;gap:0}.portfolio-content-list li{font-size:16px;line-height:1.6;color:var(--text-body);padding-left:16px;position:relative}.portfolio-content-list li:before{content:"•";position:absolute;left:0;color:var(--bullet);font-weight:700}.portfolio-timeline{display:flex;flex-direction:column;width:100%;max-width:768px;margin-inline:auto}.portfolio-timeline-phase{display:flex;gap:16px}.portfolio-timeline-spine{display:flex;flex-direction:column;align-items:center;flex-shrink:0;width:16px;padding-top:5px}.portfolio-timeline-dot{width:8px;height:8px;border-radius:50%;background-color:#22c55e;flex-shrink:0}.portfolio-timeline-line{width:var(--line-width);flex:1;background-color:var(--divider);margin-top:8px}.portfolio-timeline-body{display:flex;flex-direction:column;gap:4px;padding-bottom:32px}.portfolio-timeline-phase:last-child .portfolio-timeline-body{padding-bottom:0}.portfolio-timeline-label{font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:#8a8a8a;margin:0}.portfolio-timeline-title{font-size:16px;font-weight:700;color:var(--text-primary);margin:0}.portfolio-timeline-list{list-style:none;display:flex;flex-direction:column;gap:0;margin-top:6px;padding:0}.portfolio-timeline-list li{font-size:16px;line-height:1.6;color:var(--text-body);padding-left:16px;position:relative}.portfolio-timeline-list li:before{content:"•";position:absolute;left:0;color:var(--bullet);font-weight:700}.portfolio-content-placeholder-text{font-size:16px;line-height:1.6;color:var(--text-muted);font-style:italic}@media (max-width: 768px){.portfolio-content-image{margin:24px auto}.portfolio-content-image+.portfolio-content-image{margin-top:-24px}.portfolio-content-heading{margin-top:16px}.portfolio-content-heading:first-child{margin-top:0}}
