html:root{--theme-text: #f5f7fa;--theme-muted: #c4ceda;--theme-accent: #67d2ad;--theme-accent-rgb: 103, 210, 173;--theme-accent-hover: #82dfbf;--theme-accent-text: #bfe8da;--theme-on-accent: #07172a;--theme-accent-soft: rgba(var(--theme-accent-rgb), .11);--theme-accent-soft-hover: rgba(var(--theme-accent-rgb), .18);--theme-accent-border: rgba(var(--theme-accent-rgb), .35);--theme-surface: #293d59;--theme-surface-hover: #2e4461;--theme-border: #526986;--theme-border-strong: #7187a3;--theme-divider: rgba(190, 204, 224, .18);--theme-tag-surface: #48627f;--theme-tag-ink: #f5f7fa;--theme-input: #20344f;--theme-shadow: 0 8px 24px rgba(2, 8, 20, .18);--theme-focus-ring: rgba(var(--theme-accent-rgb), .55);--portfolio-bg: #1c2d4b;--portfolio-bg-deep: #15253e;--portfolio-text-muted: #c5cfdd;--portfolio-page-gutter: clamp(20px, 4vw, 144px);--portfolio-content-width: clamp(1440px, 72vw, 2400px);--portfolio-shell-width: min(calc(100% - 2 * var(--portfolio-page-gutter)), var(--portfolio-content-width));--portfolio-feature-shell-width: var(--portfolio-shell-width);--portfolio-section-space: clamp(48px, 3.2vw, 96px);--portfolio-content-gap: clamp(24px, 2vw, 52px);--portfolio-text-gap: clamp(18px, 1.5vw, 24px);--portfolio-action-gap: clamp(24px, 2vw, 32px);--portfolio-card-padding: clamp(20px, 1.5vw, 36px);--portfolio-heading-size: clamp(1.85rem, 1.1rem + 1.8vw, 4.5rem);--portfolio-body-size: clamp(1rem, .88rem + .22vw, 1.3rem);--portfolio-small-size: clamp(.84rem, .77rem + .13vw, .96rem);--portfolio-label-size: clamp(.75rem, .7rem + .1vw, .86rem);--portfolio-control-height: clamp(48px, 2.1vw, 60px);--portfolio-radius: 8px;--portfolio-box-border-width: 1px;--portfolio-box-border-color: #425772;--portfolio-box-border: var(--portfolio-box-border-width) solid var(--portfolio-box-border-color);--portfolio-button-radius: var(--portfolio-radius);--portfolio-header-height: clamp(64px, 2.8vw, 72px);--portfolio-header-offset: calc(var(--portfolio-header-height) + 1px + env(safe-area-inset-top, 0px));--portfolio-viewport-height: 100vh;--portfolio-viewport-content-height: calc(var(--portfolio-viewport-height) - var(--portfolio-header-offset));--portfolio-section-min-height: min(var(--portfolio-viewport-content-height), 900px);--bs-font-sans-serif: "Roboto", sans-serif;--bs-body-font-family: "Roboto", sans-serif}@media(min-width:1161px)and (max-width:1919px){html:root{--portfolio-feature-shell-width: min( var(--portfolio-shell-width), clamp(1080px, calc(49vw + 499px) , 1440px) )}}html{box-sizing:border-box;scroll-padding-top:var(--portfolio-header-offset);scrollbar-width:none;-ms-overflow-style:none}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none}*,*:before,*:after{box-sizing:inherit}@supports (height: 100dvh){html:root{--portfolio-viewport-height: 100dvh}}@media(max-width:680px){html:root{--portfolio-header-height: 58px}}body{background-color:var(--portfolio-bg);margin:0;min-width:0;font-family:Roboto,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:var(--theme-accent);color:var(--theme-on-accent)}img,svg,video,canvas{max-width:100%}p,h1,h2,h3,h4,li,dd,td,th,a,button{overflow-wrap:break-word}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.language-switch{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:8px 10px;border:0;border-radius:var(--portfolio-radius);background:transparent;color:var(--theme-muted, #aebaca);font:600 .8rem/1 Roboto,sans-serif;letter-spacing:.035em;cursor:pointer;transition:background-color .18s ease,color .18s ease}.language-switch>span{display:block;text-align:center}.language-switch:is(:hover,:active){background:var(--theme-surface-hover, rgba(190, 204, 224, .08))}.language-switch:focus-visible{outline:2px solid var(--theme-accent, #67d2ad);outline-offset:3px}@media(prefers-reduced-motion:reduce){.language-switch{transition:none}}.global-header{position:fixed;z-index:1040;top:0;right:0;left:0;padding-top:env(safe-area-inset-top);border-bottom:1px solid var(--theme-border, rgba(190, 204, 224, .1));background:#122139;-webkit-backdrop-filter:blur(16px) saturate(120%);backdrop-filter:blur(16px) saturate(120%)}.global-header:before{content:"";position:absolute;right:0;bottom:100%;left:0;height:100vh;background:inherit;pointer-events:none}html:not([data-theme=light]) .global-header{border-bottom-width:.5px;border-bottom-color:#becce029}.global-navigation{width:var(--portfolio-shell-width);min-width:0;height:var(--portfolio-header-height);margin:0 auto;display:flex;align-items:center;justify-content:space-between;color:var(--theme-text, #f6f8fb);font-family:Roboto,sans-serif}.global-home,.global-navigation-links button,.global-menu-toggle{border:0;background:transparent;color:inherit;font:inherit}.global-navigation-links button,.global-menu-toggle{cursor:pointer}.global-home{width:clamp(38px,1.8vw,44px);height:clamp(38px,1.8vw,44px);padding:0;display:grid;place-items:center;border:1px solid rgba(var(--theme-accent-rgb),.8);border-radius:var(--portfolio-radius);background:rgba(var(--theme-accent-rgb),.045);color:var(--theme-accent, #67d2ad);font-size:clamp(.8rem,.73rem + .12vw,.9rem);font-weight:700;letter-spacing:-.03em;cursor:pointer;transition:background-color .18s ease,color .18s ease}.global-navigation-menu{display:flex;align-items:center;gap:clamp(28px,2.5vw,52px)}.global-navigation-links{display:flex;align-items:center;gap:6px}.global-navigation-links button{position:relative;min-height:44px;display:inline-flex;align-items:center;padding:10px 9px;color:#dce5f1;font-size:var(--portfolio-small-size);font-weight:500;transition:color .18s ease}.global-navigation-links button:hover,.global-navigation-links button.is-active{color:var(--theme-text, #f6f8fb)}.global-navigation-links button.is-active:after{content:"";position:absolute;right:9px;bottom:4px;left:9px;height:1px;background:var(--theme-accent, #67d2ad)}.global-menu-toggle,.global-mobile-social-links{display:none}.global-navigation-controls{--navigation-control-ink: var(--theme-text, #f6f8fb);--navigation-control-hover: var(--theme-text, #f6f8fb);--navigation-control-surface: rgba(190, 204, 224, .1);display:flex;align-items:center;gap:0}.global-navigation-controls :is(.language-switch,.theme-switch){width:44px;height:44px;flex:0 0 44px;padding:0;color:var(--navigation-control-ink)}.global-navigation-controls :is(.language-switch,.theme-switch):is(:hover,:active){color:var(--navigation-control-hover);background:var(--navigation-control-surface)}.global-navigation-controls :is(.language-switch>span,.theme-switch>svg){transition:opacity .18s ease}@media(hover:hover)and (pointer:fine){.global-navigation-controls :is(.language-switch>span,.theme-switch>svg){opacity:.82}.global-navigation-controls :is(.language-switch,.theme-switch):is(:hover,:focus-visible,:active)>:is(span,svg){opacity:1}}.global-navigation-controls :is(.language-switch,.theme-switch):focus-visible{color:var(--navigation-control-hover);background:var(--navigation-control-surface)}.theme-switch{width:44px;height:44px;flex:0 0 44px;display:grid;place-items:center;padding:0;border:0;border-radius:var(--portfolio-radius);background:transparent;color:var(--theme-muted, #aebaca);transition:background-color .18s ease,color .18s ease;cursor:pointer}.theme-switch svg{display:block;width:18px;height:18px;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.theme-switch:hover{color:var(--theme-text, #f6f8fb);background:var(--theme-surface-hover, var(--theme-surface, #293d59))}.theme-switch:focus-visible{outline:2px solid var(--theme-accent);outline-offset:3px}.global-home:focus-visible,.global-menu-toggle:focus-visible,.global-navigation-links button:focus-visible{outline:2px solid var(--theme-accent, #67d2ad);outline-offset:3px}.global-home:hover,.global-menu-toggle:hover{background:var(--theme-accent-soft-hover);color:var(--theme-accent)}#home,#about-me,#projects,#contact{scroll-margin-top:var(--portfolio-header-offset)}@media(min-width:681px){.global-navigation{position:relative;width:100%;padding-left:calc((100% - var(--portfolio-feature-shell-width)) / 2);padding-right:max(16px,env(safe-area-inset-right))}.global-navigation-menu{display:contents}.global-navigation-links{position:absolute;top:50%;right:max(calc(98px + max(16px,env(safe-area-inset-right))),calc((100% - var(--portfolio-feature-shell-width)) / 2));transform:translateY(-50%)}.global-navigation-links button:last-child{padding-right:0}.global-navigation-links button:last-child.is-active:after{right:0}}@media(max-width:680px){.global-navigation{position:relative}.global-menu-toggle{width:40px;height:40px;padding:0;display:grid;place-content:center;gap:5px;border-radius:var(--portfolio-radius)}.global-menu-toggle span{width:20px;height:2px;border-radius:1px;background:var(--theme-text, #f6f8fb);transition:transform .18s ease}.global-menu-toggle.is-open span:first-child{transform:translateY(3.5px) rotate(45deg)}.global-menu-toggle.is-open span:last-child{transform:translateY(-3.5px) rotate(-45deg)}.global-navigation-menu{position:absolute;top:100%;right:calc(-1 * var(--portfolio-page-gutter));left:calc(-1 * var(--portfolio-page-gutter));padding:12px var(--portfolio-page-gutter) 16px;display:none;align-items:stretch;flex-direction:column;gap:8px;border-top:1px solid var(--theme-border, rgba(190, 204, 224, .1));border-bottom:1px solid var(--theme-border, rgba(190, 204, 224, .1));background:#122139;box-shadow:0 18px 40px #02081240;max-height:calc(100dvh - var(--portfolio-header-offset));overflow-y:auto;overscroll-behavior:contain}.global-navigation-menu.is-open{display:flex}html:not([data-theme=light]) .global-navigation-menu{border-top-width:.5px;border-top-color:#becce029}.global-navigation-links{align-items:stretch;flex-direction:column;gap:0}.global-navigation-links button{width:100%;padding:12px;text-align:left;border-radius:var(--portfolio-radius)}.global-navigation-links button.is-active{background:#ffffff0b}.global-navigation-links button.is-active:after{inset:12px auto 12px 3px;width:2px;height:auto}.global-navigation-controls{margin-top:8px;padding-top:8px;justify-content:flex-end}}@media(max-width:680px){.global-mobile-social-links{display:flex;align-items:center;justify-content:flex-end;gap:4px}.global-mobile-social-links a{display:grid;place-items:center;width:44px;height:44px;color:inherit;font-size:20px;border-radius:var(--portfolio-radius)}.global-mobile-social-links a:hover{background:var(--theme-surface-hover)}.global-mobile-social-links a:focus-visible{outline:2px solid var(--theme-accent);outline-offset:2px}}@media(prefers-reduced-motion:reduce){.global-header *,.global-header *:after{transition:none!important}}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.App{min-width:0;text-align:center}.App-header{padding:20px}.route-loading{min-height:100vh;min-height:100svh;background:var(--portfolio-bg-deep, #15253e)}.portfolio-project-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:28px}.portfolio-project-filters button{min-height:44px;padding:8px 14px;border:1px solid var(--theme-accent-border);border-radius:var(--portfolio-radius);background:transparent;color:var(--theme-muted, #c4ceda);font:inherit;font-size:.82rem;font-weight:500;cursor:pointer;transition:color .28s ease,border-color .28s ease,background-color .28s ease}.portfolio-project-filters button:hover{color:var(--theme-accent)}.portfolio-project-filters button[aria-pressed=true]{border-color:var(--theme-accent);background:var(--theme-accent, #67d2ad);color:var(--theme-on-accent, #07172a)}.portfolio-project-grid--filtered{animation:project-results-appear .42s cubic-bezier(.22,1,.36,1)}@keyframes project-results-appear{0%{opacity:.25;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.portfolio-project-grid--filtered{animation:none}.portfolio-project-filters button{transition:none}}.portfolio-project-filters button:focus-visible{outline:2px solid var(--theme-accent);outline-offset:3px}.portfolio-project-filter-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.project-preview-layer{--preview-control-bg: rgba(8, 18, 34, .92);--preview-control-hover-bg: #15253e;--preview-control-text: #e2e8f0;--preview-control-border: rgba(255, 255, 255, .18);--preview-inset-top: max(8px, env(safe-area-inset-top));--preview-inset-right: max(8px, env(safe-area-inset-right));--preview-inset-bottom: max(8px, env(safe-area-inset-bottom));--preview-inset-left: max(8px, env(safe-area-inset-left));position:fixed;z-index:1050;inset:0;padding:var(--preview-inset-top) var(--preview-inset-right) var(--preview-inset-bottom) var(--preview-inset-left);display:grid;place-items:center;overflow:auto;background:#08101cc7;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}html.project-preview-open,html.project-preview-open body{overflow:hidden;overscroll-behavior:none}.modal-dialog.project-preview-dialog{width:min(clamp(1280px,72vw,1920px),100%);max-height:100%;max-width:none;margin:0}.modal-content.project-preview-modal{box-sizing:border-box;position:relative;max-height:100%;overflow:hidden;isolation:isolate;clip-path:inset(0 round var(--portfolio-radius));border:0;border-radius:var(--portfolio-radius);background:var(--portfolio-bg-deep);color:var(--theme-text, #f5f7fa);box-shadow:none}.project-preview-close{position:absolute;z-index:30;top:16px;right:16px;display:none;width:44px;height:44px;padding:0;place-items:center;border:0;border-radius:var(--portfolio-radius);background:transparent;color:#c4ceda;line-height:1;cursor:pointer;transition:background-color .18s ease,color .18s ease}.project-preview-close svg{width:24px;height:24px}.project-preview-close:hover{background:#ffffff14;color:#f5f7fa}.modal-content.project-preview-modal .modal-body.project-preview-body{min-height:0;overflow:hidden;padding:0;display:flex;flex-direction:column;border-radius:0;background:var(--portfolio-bg-deep);box-shadow:none;color:inherit;font-family:Roboto,sans-serif}.project-preview-media{position:relative;min-height:0;overflow:hidden;flex:1 1 auto;background:#24344b}.project-preview-body--expanded .project-preview-media:before{content:"";position:absolute;z-index:0;inset:-80px;background:url(/assets/stars-IRngoaWl.webp) center / cover no-repeat;filter:grayscale(1) blur(64px) brightness(1.4) contrast(.4);pointer-events:none}.project-preview-body--expanded .project-preview-media:after{content:"";position:absolute;z-index:0;inset:0;background:#54749661;pointer-events:none}.project-preview-media .project-slider{position:absolute;z-index:1;inset:0}.project-preview-body--expanded .project-preview-media .project-slider,.project-preview-body--expanded .project-preview-slide,.project-preview-body--expanded .modal-image{background:transparent}.project-preview-media .project-slider{height:100%;background:#24344b}.project-preview-slide{height:100%;line-height:0;background:#24344b}.project-preview-slide--next{animation:project-preview-slide-from-right .48s cubic-bezier(.22,1,.36,1)}.project-preview-slide--previous{animation:project-preview-slide-from-left .48s cubic-bezier(.22,1,.36,1)}@keyframes project-preview-slide-from-right{0%{transform:translate(18%)}}@keyframes project-preview-slide-from-left{0%{transform:translate(-18%)}}.modal-image,.modal-video{display:block;width:100%;height:100%;background:#24344b}.modal-image{object-fit:contain;object-position:center center}.modal-video{object-fit:contain}.custom-arrow{position:absolute;z-index:10;top:50%;width:28px;height:28px;padding:0;display:inline-grid;place-items:center;transform:translateY(-50%);border:0;border-radius:var(--portfolio-radius);background:#f5f7fab3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#000;font-size:24px;cursor:pointer;opacity:.75;transition:opacity .18s ease,border-color .18s ease,background-color .18s ease,color .18s ease}.project-preview-media:hover .custom-arrow,.project-preview-media:focus-within .custom-arrow,.custom-arrow:focus-visible{opacity:1}.custom-arrow:before{content:"";position:absolute;inset:-8px}.custom-arrow svg{stroke-width:1.6}.custom-arrow:hover{background:#f5f7fad9;color:#000}.prev-arrow{left:14px}.next-arrow{right:14px}.project-preview-content{min-width:0;flex:0 0 auto;padding:26px 30px 30px;border-top:1px solid var(--theme-border, rgba(255, 255, 255, .1));text-align:left}.project-preview-counter{position:absolute;z-index:12;right:14px;bottom:14px;max-width:calc(100% - 28px);padding:6px 9px;display:inline-flex;align-items:baseline;gap:6px;border:0;border-radius:var(--portfolio-radius);background:var(--preview-control-bg);color:var(--preview-control-text);font-size:.75rem;font-variant-numeric:tabular-nums;line-height:1.4;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.project-preview-counter-number,.project-preview-counter-divider{flex:0 0 auto}.project-preview-counter-description{min-width:0;overflow:hidden;text-overflow:ellipsis}.project-preview-category{margin:0 0 8px;color:var(--theme-accent, #67d2ad);font-size:clamp(.82rem,.74rem + .08vw,.94rem);font-weight:800;line-height:1.3;letter-spacing:.09em;text-transform:uppercase}.project-preview-content h2{margin:0;color:var(--theme-text, #f5f7fa);font-family:Roboto,sans-serif;font-size:clamp(1.5rem,1.05rem + 1vw,3rem);font-weight:600;line-height:1.16;letter-spacing:-.035em;text-wrap:balance;word-break:normal;overflow-wrap:normal;-webkit-hyphens:manual;hyphens:manual}.project-preview-modal :is(p,h2,h3,li,a){word-break:normal;overflow-wrap:normal;-webkit-hyphens:manual;hyphens:manual}.project-preview-description{max-width:62ch;margin-top:28px;padding-bottom:33px;border-bottom:1px solid var(--theme-border-strong, #7187a3);color:var(--theme-text, #f5f7fa);font-size:clamp(.95rem,.84rem + .18vw,1.2rem);font-weight:400;line-height:1.7;text-wrap:pretty;word-break:normal;overflow-wrap:normal;-webkit-hyphens:manual;hyphens:manual}.project-preview-description .project-description{margin:0}.project-preview-details{margin-top:0}.project-preview-detail{padding:26px 0;display:grid;grid-template-columns:clamp(8rem,7.8vw,9.5rem) minmax(0,1fr);align-items:start;gap:18px;border-bottom:1px solid var(--theme-border-strong, #7187a3)}.project-preview-detail h3,.project-preview-stack h3{margin:2px 0 0;color:var(--theme-accent-text, #bfe8da);font-family:Roboto,sans-serif;font-size:clamp(.84rem,.76rem + .1vw,.98rem);font-weight:700;letter-spacing:.025em;line-height:1.3;text-transform:none;word-break:normal;overflow-wrap:normal;-webkit-hyphens:manual;hyphens:manual}.project-preview-detail p{min-width:0;margin:0;color:var(--theme-text, #f5f7fa);font-size:clamp(.9rem,.8rem + .16vw,1.08rem);line-height:1.62;text-wrap:pretty;word-break:normal;overflow-wrap:normal;-webkit-hyphens:manual;hyphens:manual}.project-preview-stack{margin-top:22px;padding-top:0;border-top:0}.project-preview-stack ul{margin:11px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:7px;list-style:none}.project-preview-stack li{max-width:100%;padding:clamp(9px,.5vw,12px) clamp(10px,.65vw,15px);border:1px solid rgba(var(--theme-accent-rgb),.24);border-radius:var(--portfolio-radius);background:rgba(var(--theme-accent-rgb),.07);color:var(--theme-accent-text, #bfe8da);font-size:clamp(.74rem,.68rem + .1vw,.86rem);line-height:1.2;word-break:normal;overflow-wrap:normal;-webkit-hyphens:manual;hyphens:manual}@media(max-width:699px){.project-preview-detail{grid-template-columns:1fr;gap:12px}.project-preview-detail h3,.project-preview-stack h3{margin-top:0}}.project-preview-context{margin:11px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:5px 14px;list-style:none}.project-preview-context li{position:relative;color:var(--theme-muted, #c4ceda);font-size:.69rem;font-weight:600;line-height:1.4;letter-spacing:.025em;word-break:normal;overflow-wrap:normal;-webkit-hyphens:manual;hyphens:manual}.project-preview-context li+li:before{content:"·";position:absolute;left:-9px;color:rgba(var(--theme-accent-rgb),.62)}@media(min-width:1000px){.modal-dialog.project-preview-dialog--expanded{width:min(clamp(1280px,72vw,1920px),100%);height:min(840px,88dvh);max-height:calc(var(--portfolio-viewport-height) - var(--preview-inset-top) - var(--preview-inset-bottom))}.modal-content.project-preview-modal--expanded{height:100%;max-height:inherit;overflow:hidden}.project-preview-modal--expanded .project-preview-close{display:inline-grid}.modal-content.project-preview-modal--expanded .modal-body.project-preview-body--expanded{height:100%;min-height:0;max-height:inherit;display:grid;grid-template-columns:minmax(0,3fr) minmax(360px,2fr);align-items:stretch;overflow-y:auto;scrollbar-color:rgba(var(--theme-accent-rgb),.35) transparent;scrollbar-width:thin}.project-preview-body--expanded .project-preview-media{width:100%;height:auto;min-height:0;aspect-ratio:auto!important;flex:none}.project-preview-body--expanded .project-preview-content{min-width:0;min-height:0;height:auto;max-height:none;overflow-y:auto;overscroll-behavior:contain;padding:clamp(42px,2.4vw,64px) clamp(38px,2.2vw,58px) 28px;display:flex;flex-direction:column;box-sizing:border-box;border-top:0;border-left:0}.project-preview-body--expanded .project-preview-content>*{flex-shrink:0}.project-preview-body--expanded .project-preview-content>.project-preview-description-group{min-height:0;flex-shrink:1;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.project-preview-body--expanded .project-preview-description{margin-top:27px;padding-bottom:33px}.project-preview-body--expanded .project-preview-detail{padding-block:26px}.project-preview-body--expanded .project-preview-stack{margin-top:22px}.project-preview-body--expanded .project-preview-footer{margin-top:auto;padding-top:24px}.project-preview-body--expanded .project-preview-actions{margin-top:0}.project-preview-body--expanded .project-preview-counter{bottom:28px}}@media(min-width:621px)and (max-width:999px){.modal-dialog.project-preview-dialog--expanded{width:100%;height:min(960px,88dvh);max-height:calc(var(--portfolio-viewport-height) - var(--preview-inset-top) - var(--preview-inset-bottom))}.modal-content.project-preview-modal--expanded{height:100%;max-height:100%}.project-preview-modal--expanded .project-preview-close{display:inline-grid}.modal-content.project-preview-modal--expanded .modal-body.project-preview-body--expanded{height:100%;display:flex;flex-direction:column;overflow-y:auto}.project-preview-body--expanded .project-preview-media{width:100%;height:clamp(260px,44dvh,420px);min-height:auto;aspect-ratio:auto!important;flex:0 0 auto}.project-preview-body--expanded .project-preview-content{padding:34px 28px 28px;flex:0 0 auto}}@media(min-width:1000px)and (max-width:1199px){.modal-dialog.project-preview-dialog--expanded{width:min(1040px,88vw)}.modal-content.project-preview-modal--expanded .modal-body.project-preview-body--expanded{grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr)}.project-preview-body--expanded .project-preview-content{padding:34px 28px 28px}}@media(min-width:1000px)and (max-height:800px){.project-preview-body--expanded .project-preview-content{padding:28px 24px}}@media(min-width:1800px)and (min-height:1000px){.project-preview-body--expanded .project-preview-content{padding-top:clamp(64px,2.8vw,72px);padding-bottom:28px}.project-preview-body--expanded .project-preview-description{margin-top:32px;padding-bottom:40px}.project-preview-body--expanded .project-preview-detail{padding-block:32px}.project-preview-body--expanded .project-preview-stack{margin-top:30px}}.project-preview-actions{margin-top:var(--portfolio-action-gap);display:flex;flex-wrap:wrap;gap:10px}.project-preview-link{min-height:clamp(44px,2vw,54px);padding:clamp(9px,.55vw,13px) clamp(15px,.9vw,22px);display:inline-flex;align-items:center;border:1px solid var(--theme-accent, #67d2ad);border-radius:var(--portfolio-radius);background:var(--theme-accent, #67d2ad);color:var(--theme-on-accent, #07172a);font-size:clamp(.82rem,.75rem + .11vw,.94rem);font-weight:500;text-decoration:none;transition:transform .18s ease,border-color .18s ease,background-color .18s ease}.project-preview-link:hover{transform:translateY(-2px);border-color:var(--theme-accent-hover, #82dfbf);background:var(--theme-accent-hover, #82dfbf);color:var(--theme-on-accent, #07172a)}.project-preview-link--primary{border-color:var(--theme-accent, #67d2ad);background:var(--theme-accent, #67d2ad);color:var(--theme-on-accent, #07172a)}.project-preview-link--primary:hover{border-color:var(--theme-accent-hover, #82dfbf);background:var(--theme-accent-hover, #82dfbf);color:var(--theme-on-accent, #07172a)}.project-preview-action-notice{width:fit-content;max-width:100%;margin:12px 0 0;padding:9px 12px;border:1px solid rgba(var(--theme-accent-rgb),.2);border-radius:var(--portfolio-radius);background:rgba(var(--theme-accent-rgb),.07);color:#b9c7d5;font-size:.78rem;line-height:1.45}.project-preview-close:focus-visible,.custom-arrow:focus-visible,.project-preview-link:focus-visible{outline:3px solid rgba(var(--theme-accent-rgb),.5);outline-offset:3px}@media(min-width:621px)and (max-height:500px){.modal-dialog.project-preview-dialog{width:min(1080px,100%);height:calc(var(--portfolio-viewport-height) - var(--preview-inset-top) - var(--preview-inset-bottom));max-height:calc(var(--portfolio-viewport-height) - var(--preview-inset-top) - var(--preview-inset-bottom))}.modal-content.project-preview-modal{height:100%;max-height:100%}.modal-content.project-preview-modal--expanded .modal-body.project-preview-body--expanded{height:100%;display:flex;min-height:0;flex-direction:row;overflow-y:auto}.project-preview-body--expanded .project-preview-media{width:50%;height:auto;min-height:100%;flex:1 1 50%}.project-preview-body--expanded .project-preview-content{width:50%;height:auto;min-height:100%;flex:0 0 50%;padding:18px;overflow:visible;border-top:0;border-left:0}.project-preview-description{margin-top:24px;line-height:1.65}.project-preview-close{display:inline-grid}}@media(hover:none){.project-preview-close{display:inline-grid}.custom-arrow{opacity:1}}.projects-container.portfolio-projects{box-sizing:border-box;min-height:var(--portfolio-section-min-height);padding:var(--portfolio-section-space) 0;background:radial-gradient(circle at 88% 18%,rgba(var(--theme-accent-rgb),.065),transparent 30rem),linear-gradient(180deg,var(--portfolio-bg-deep) 0%,var(--portfolio-bg) 18%,var(--portfolio-bg) 100%)}.portfolio-projects .container{width:var(--portfolio-feature-shell-width);max-width:none;margin:0 auto;padding:0}.portfolio-projects-header{margin-bottom:var(--portfolio-content-gap);padding-bottom:clamp(26px,3.5vw,38px);border-bottom:1px solid var(--theme-border, rgba(255, 255, 255, .11));text-align:left}.portfolio-projects-eyebrow{margin:0 0 13px;color:var(--theme-accent, #67d2ad);font-size:var(--portfolio-label-size);font-weight:500;line-height:1.4;letter-spacing:.1em;text-transform:uppercase}.portfolio-projects-title{margin:0;color:var(--theme-text, #f5f7fa);font-size:var(--portfolio-heading-size);font-weight:700;line-height:1.16;letter-spacing:-.035em;text-align:left}.portfolio-project-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,clamp(320px,17vw,400px)),1fr));gap:clamp(16px,1.6vw,36px)}.portfolio-project-card{position:relative;isolation:isolate;min-width:0;container-type:inline-size;aspect-ratio:4 / 3;overflow:hidden;border:1px solid var(--theme-border, rgba(255, 255, 255, .095));border-radius:var(--portfolio-radius);background:#101c31;box-shadow:0 18px 42px #0208143d,inset 0 1px #ffffff0b;cursor:pointer;transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease}.portfolio-project-card-hit-area{position:absolute;z-index:3;inset:0;width:100%;height:100%;padding:0;border:0;border-radius:inherit;background:transparent;color:inherit;cursor:pointer}.portfolio-project-card:after{content:"";position:absolute;z-index:1;inset:0;background:linear-gradient(180deg,#060e1b03 24%,#060e1b61 50%,#060e1bf2),linear-gradient(90deg,rgba(7,15,29,.13),transparent 62%);pointer-events:none;transition:opacity .22s ease}.portfolio-project-card-image{display:block;width:100%;height:100%;object-fit:cover;object-position:center;filter:brightness(.98) saturate(.92) contrast(1.025);transition:transform .42s ease,filter .22s ease}.portfolio-project-card-image--contain{object-fit:contain;background:#fff}.portfolio-project-card-image--top{object-position:center 28%;background:#f5f2ec}.portfolio-project-card-image--align-top{object-position:center top}.portfolio-project-card-copy{position:absolute;z-index:2;right:clamp(22px,1.25vw,30px);bottom:clamp(21px,1.2vw,29px);left:clamp(22px,1.25vw,30px);text-align:left}.portfolio-project-card-copy p{margin:0 0 9px;color:var(--theme-accent-text, #8be2c4);font-size:clamp(.7rem,.64rem + .1vw,.8rem);font-weight:600;line-height:1.2;letter-spacing:.09em;text-shadow:0 1px 8px rgba(0,0,0,.9);text-transform:uppercase}.portfolio-project-card-title-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:8px 16px}.portfolio-project-card-copy h3{min-width:0;flex:1 1 180px;overflow-wrap:anywhere;margin:0;color:var(--theme-text, #f5f7fa);font-family:Roboto,sans-serif;font-size:clamp(1.12rem,.92rem + .55vw,1.75rem);font-weight:600;line-height:1.2;letter-spacing:-.025em}.portfolio-project-card-link{flex:0 0 auto;padding-bottom:2px;color:#f5f7fac7;font-size:.68rem;font-weight:500;line-height:1.2;letter-spacing:.035em;white-space:nowrap;opacity:0;transform:translateY(5px);transition:opacity .18s ease,transform .18s ease,color .18s ease}.portfolio-project-card-link svg{display:inline-block;width:13px;height:13px;margin-left:4px;vertical-align:middle;color:var(--theme-accent, #67d2ad);transition:transform .18s ease}.portfolio-project-card:hover{transform:translateY(-5px);border-color:rgba(var(--theme-accent-rgb),.24);box-shadow:0 24px 52px #02081457,inset 0 1px #fff1}.portfolio-project-card:hover .portfolio-project-card-image{transform:scale(1.035);filter:brightness(1.035) saturate(.98) contrast(1.025)}.portfolio-project-card:hover:after{opacity:.86}.portfolio-project-card:hover .portfolio-project-card-link,.portfolio-project-card:focus-within .portfolio-project-card-link{color:var(--theme-text, #f5f7fa);opacity:1;transform:translateY(0)}.portfolio-project-card:hover .portfolio-project-card-link svg,.portfolio-project-card:focus-within .portfolio-project-card-link svg{transform:translate(2px,-2px)}.portfolio-project-card:focus-within{outline:3px solid rgba(var(--theme-accent-rgb),.55);outline-offset:4px}.portfolio-project-card-hit-area:focus-visible{outline:none}@media(max-width:680px){.portfolio-project-grid{gap:16px}.portfolio-project-card{aspect-ratio:16 / 10;border-radius:var(--portfolio-radius)}.portfolio-project-card-copy{right:17px;bottom:16px;left:17px}}@container (max-width: 360px){.portfolio-project-card-link{display:none}}@media(hover:none)and (min-width:621px){.portfolio-project-card-link{opacity:.72;transform:none}}@media(prefers-reduced-motion:reduce){.project-preview-slide--next,.project-preview-slide--previous{animation:none}.portfolio-project-card,.portfolio-project-card:after,.portfolio-project-card-image,.custom-arrow,.project-preview-link{transition-duration:.01ms!important}.portfolio-project-card-link,.portfolio-project-card-link svg{transition-duration:.01ms!important}}.portfolio-project-demo-link{position:absolute;z-index:4;top:16px;right:16px;max-width:calc(100% - 32px);min-height:36px;display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border:1px solid var(--theme-accent, #67d2ad);border-radius:var(--portfolio-radius);background:var(--theme-accent, #67d2ad);color:#091326;font-size:.75rem;font-weight:500;line-height:1.4;text-decoration:none;transition:background-color .18s ease,border-color .18s ease}.portfolio-project-demo-link:hover{background:var(--theme-accent-text, #8be2c4);border-color:var(--theme-accent-text, #8be2c4);color:#091326}.portfolio-project-demo-link:focus-visible,.thesis-demo-cta:focus-visible{outline:3px solid var(--theme-text, #f6f8fb);outline-offset:4px}.portfolio-project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,2vw,48px) var(--portfolio-content-gap)}.portfolio-project-card{aspect-ratio:auto;border:0;border-radius:0;overflow:visible;background:transparent;box-shadow:none;cursor:default}.portfolio-project-card:after{content:none}.portfolio-project-card:hover{transform:none;box-shadow:none}.portfolio-project-card-image,.portfolio-project-card:first-child .portfolio-project-card-image{display:block;width:100%;height:auto;aspect-ratio:16 / 10;align-self:start;object-fit:contain;object-position:center;filter:none;border:1px solid var(--theme-border, rgba(190, 204, 224, .2));border-radius:var(--portfolio-radius);background:var(--portfolio-bg-deep)}.portfolio-project-card:hover .portfolio-project-card-image{transform:none;filter:none}.portfolio-project-card[data-project-id=job-dashboard] .portfolio-project-card-image,.portfolio-project-card[data-project-id=political-perception] .portfolio-project-card-image{object-fit:cover}.portfolio-project-card[data-project-id=job-dashboard] .portfolio-project-card-image{object-position:left top}.portfolio-project-card-copy{position:relative;inset:auto;margin-top:14px;padding:22px;border:1px solid var(--theme-border, rgba(190, 204, 224, .2));border-radius:var(--portfolio-radius);background:#ffffff06;text-align:left}.portfolio-project-meta{display:flex;align-items:baseline;gap:12px;margin-bottom:10px}.portfolio-project-card-copy .portfolio-project-meta p{margin:0;color:var(--theme-muted, #AEBACA);font-size:.75rem;font-weight:400;text-transform:none;letter-spacing:0;text-shadow:none}.portfolio-project-number{color:var(--theme-muted, #AEBACA);font:400 .68rem/1.4 ui-monospace,SFMono-Regular,Consolas,monospace}.portfolio-project-card-title-row{display:flex;flex-wrap:nowrap;align-items:center;gap:16px}.portfolio-project-card-copy h3{margin:0;font-size:clamp(1.25rem,1.65vw,1.9rem);font-weight:600;line-height:1.3;color:var(--theme-text, #F5F7FA)}.portfolio-project-card-copy .portfolio-project-summary{max-width:52ch;margin:12px 0 0;color:var(--portfolio-text-muted);font-size:clamp(.92rem,.82rem + .12vw,1.15rem);font-weight:400;line-height:1.65;text-transform:none;letter-spacing:0;text-shadow:none}.portfolio-project-technologies{margin:20px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px;list-style:none}.portfolio-project-technologies li{padding:6px 9px;border:0;border-radius:4px;background:var(--theme-tag-surface);color:var(--theme-tag-ink);font-size:clamp(.78rem,.7rem + .08vw,.92rem);font-weight:500;line-height:1.4}.portfolio-project-actions{display:flex;justify-content:flex-end;margin-top:4px}.portfolio-project-card-hit-area{position:static;inset:auto;width:auto;min-height:38px;padding:8px 13px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(var(--theme-accent-rgb),.3);border-radius:var(--portfolio-radius);background:rgba(var(--theme-accent-rgb),.1);color:var(--theme-accent-text, #BFE8DA);font:600 .78rem/1.4 Roboto,sans-serif;text-decoration:none;cursor:pointer}.portfolio-project-card-hit-area:hover{background:rgba(var(--theme-accent-rgb),.18);border-color:var(--theme-accent, #67D2AD);color:var(--theme-text, #F5F7FA)}.portfolio-project-card-hit-area:focus-visible{outline:2px solid var(--theme-accent, #67D2AD);outline-offset:4px}.portfolio-project-card:focus-within{outline:none}.portfolio-project-demo-link{border-radius:var(--portfolio-radius);background:#15253ef0;color:var(--theme-accent-text, #BFE8DA);border:1px solid rgba(var(--theme-accent-rgb),.3)}.portfolio-project-demo-link:hover{background:#233d4b;color:var(--theme-text, #F5F7FA)}.portfolio-project-card:first-child{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:36px;padding-bottom:40px;border-bottom:1px solid var(--theme-border, rgba(190, 204, 224, .2))}.portfolio-project-card:first-child .portfolio-project-card-copy{padding:22px;margin-top:0}@media(max-width:767px){.portfolio-project-grid{grid-template-columns:1fr;gap:40px}.portfolio-project-card,.portfolio-project-card:first-child{display:block;aspect-ratio:auto;border-radius:0}.portfolio-project-card-copy,.portfolio-project-card:first-child .portfolio-project-card-copy{inset:auto;margin-top:14px;padding:18px}}.portfolio-project-meta{align-items:baseline;gap:10px;margin-bottom:14px}.portfolio-project-number{color:var(--theme-accent);font-size:clamp(.84rem,.76rem + .08vw,1rem);font-weight:700}.portfolio-project-card-copy .portfolio-project-meta p{padding:0;border:0;border-radius:0;background:transparent;color:var(--theme-accent);font-size:clamp(.84rem,.76rem + .08vw,1rem);font-weight:700;line-height:1.4}.portfolio-project-card-image{border-radius:var(--portfolio-radius) var(--portfolio-radius) 0 0;border-bottom:0}.portfolio-project-card-copy{margin-top:0;border-radius:0 0 var(--portfolio-radius) var(--portfolio-radius)}@media(min-width:768px){.portfolio-project-card:first-child .portfolio-project-card-image{border-radius:var(--portfolio-radius);border-bottom:1px solid var(--theme-border, rgba(190, 204, 224, .2))}.portfolio-project-card:first-child .portfolio-project-card-copy{border-radius:var(--portfolio-radius)}}@media(max-width:767px){.portfolio-project-card-copy,.portfolio-project-card:first-child .portfolio-project-card-copy{margin-top:0;border-radius:0 0 var(--portfolio-radius) var(--portfolio-radius)}.portfolio-project-card:first-child .portfolio-project-card-image{border-radius:var(--portfolio-radius) var(--portfolio-radius) 0 0;border-bottom:0}}.portfolio-project-card,.portfolio-project-card:first-child{display:flex;flex-direction:column;grid-column:auto;gap:0;padding-bottom:0;border-bottom:0}.portfolio-project-card-image,.portfolio-project-card:first-child .portfolio-project-card-image{flex:0 0 auto;width:100%;border-radius:var(--portfolio-radius) var(--portfolio-radius) 0 0;border-bottom:0}.portfolio-project-card-copy,.portfolio-project-card:first-child .portfolio-project-card-copy{flex:1;display:flex;flex-direction:column;margin-top:0;padding:var(--portfolio-card-padding);border-radius:0 0 var(--portfolio-radius) var(--portfolio-radius)}.portfolio-project-card-copy .portfolio-project-summary{flex:1}.portfolio-project-actions{margin-top:auto;padding-top:12px;flex-wrap:wrap;gap:8px}.portfolio-project-card-hit-area,.portfolio-project-demo-link{position:static;inset:auto;max-width:100%;min-height:44px;padding:10px 16px;border-radius:var(--portfolio-radius);font:500 .8rem/1.4 Roboto,sans-serif;display:inline-flex;align-items:center;justify-content:center;text-align:center}.portfolio-project-card-hit-area{background:var(--theme-accent, #67D2AD);border-color:var(--theme-accent, #67D2AD);color:var(--theme-on-accent, #07172A)}.portfolio-project-card-hit-area:hover{background:var(--theme-accent-hover, #82DFBF);border-color:var(--theme-accent-hover, #82DFBF);color:var(--theme-on-accent, #07172A)}.portfolio-project-demo-link{background:rgba(var(--theme-accent-rgb),.08);border-color:rgba(var(--theme-accent-rgb),.35);color:var(--theme-accent-text, #BFE8DA)}.portfolio-project-demo-link:hover{background:rgba(var(--theme-accent-rgb),.15);border-color:var(--theme-accent, #67D2AD);color:var(--theme-text, #F5F7FA)}@media(max-width:767px){.portfolio-project-card-copy,.portfolio-project-card:first-child .portfolio-project-card-copy{padding:18px}}.portfolio-project-card[data-project-id=smart-bremen] .portfolio-project-card-image{object-fit:contain;object-position:center;background:#fff}.portfolio-project-card[data-project-id=thesis] .portfolio-project-card-image{object-fit:cover;object-position:center}.portfolio-projects-header{border-bottom:0;padding-bottom:0;margin-bottom:24px}.portfolio-project-card-copy,.portfolio-project-card:first-child .portfolio-project-card-copy{background:var(--theme-surface, #293D59);border-color:var(--theme-border, rgba(190, 204, 224, .3))}.portfolio-project-card[data-project-id=customer-platform] .portfolio-project-card-image{object-fit:cover;object-position:center}.portfolio-project-card,.portfolio-project-card:first-child{cursor:pointer;border-radius:var(--portfolio-radius)}.portfolio-project-card>.portfolio-project-card-hit-area{position:absolute;inset:0;z-index:3;width:100%;height:100%;max-width:none;min-height:0;padding:0;border:0;border-radius:var(--portfolio-radius);background:transparent}.portfolio-project-card>.portfolio-project-card-hit-area:hover{background:transparent}.portfolio-project-card:hover{transform:translateY(-3px);box-shadow:var(--theme-shadow)}.portfolio-project-card-copy{transition:background-color .18s ease,border-color .18s ease}.portfolio-project-card:hover .portfolio-project-card-copy{background:var(--theme-surface-hover, #2e4461);border-color:rgba(var(--theme-accent-rgb),.45)}.portfolio-project-card>.portfolio-project-card-hit-area:focus-visible{outline:2px solid var(--theme-accent, #67d2ad);outline-offset:4px}@media(prefers-reduced-motion:reduce){.portfolio-project-card:hover{transform:none}.portfolio-project-card-copy{transition:none}}.portfolio-project-card-copy .project-copy--mobile{display:none}@media(max-width:620px){.portfolio-project-card-copy .project-copy--desktop{display:none}.portfolio-project-card-copy .project-copy--mobile{display:block}.portfolio-project-grid{grid-template-columns:minmax(0,1fr);gap:28px}.portfolio-project-grid .portfolio-project-card .portfolio-project-card-image{object-fit:cover;object-position:center}.portfolio-project-grid .portfolio-project-card[data-project-id=smart-bremen] .portfolio-project-card-image{aspect-ratio:auto 40 / 27;object-fit:contain}.portfolio-project-card .portfolio-project-card-copy{padding:16px}.portfolio-project-meta{gap:8px;margin-bottom:8px}.portfolio-project-number,.portfolio-project-card-copy .portfolio-project-meta p{font-size:.8rem}.portfolio-project-card-copy h3{font-size:1.3rem;line-height:1.25}.portfolio-project-card-copy .portfolio-project-summary{margin-top:8px;font-size:.88rem;line-height:1.5}.portfolio-project-technologies{margin:12px 0 0;gap:5px}.portfolio-project-technologies li{padding:6px 8px;font-size:.75rem;line-height:1.4}}.portfolio-project-card{--partner-pill-ink: #dccfff;--partner-pill-surface: rgba(166, 138, 255, .3)}html[data-theme=light] .portfolio-project-card{--partner-pill-ink: #46288f;--partner-pill-surface: rgba(108, 76, 196, .24)}.portfolio-project-card-copy .portfolio-project-meta:has(.portfolio-project-partner,.portfolio-project-demo-badge){flex-wrap:wrap;row-gap:6px}.portfolio-project-card-copy .portfolio-project-meta:has(.portfolio-project-partner,.portfolio-project-demo-badge) p{white-space:nowrap}.portfolio-project-meta :is(.portfolio-project-partner,.portfolio-project-demo-badge){display:inline-flex;align-items:center;align-self:center;gap:6px;margin-left:auto;padding:5px 11px 5px 9px;border-radius:4px;background:var(--partner-pill-surface);color:var(--partner-pill-ink);font-size:clamp(.82rem,.75rem + .08vw,.96rem);font-weight:600;line-height:1.4;white-space:nowrap}:is(.portfolio-project-partner,.portfolio-project-demo-badge) svg{flex:none;width:1.15em;height:1.15em;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}.portfolio-project-card-copy:has(.portfolio-project-demo-badge){z-index:auto}.portfolio-project-card{--demo-badge-ink: #ffc2e2;--demo-badge-border: rgba(255, 160, 212, .55);--demo-badge-surface: rgba(255, 128, 196, .22);--demo-badge-surface-hover: rgba(255, 128, 196, .38)}html[data-theme=light] .portfolio-project-card{--demo-badge-ink: #8a1859;--demo-badge-border: rgba(160, 28, 104, .45);--demo-badge-surface: rgba(196, 44, 128, .14);--demo-badge-surface-hover: rgba(196, 44, 128, .26)}.portfolio-project-meta .portfolio-project-demo-badge{position:relative;z-index:4;padding-inline:11px 9px;background:var(--demo-badge-surface);box-shadow:inset 0 0 0 1px var(--demo-badge-border);color:var(--demo-badge-ink);text-decoration:none;transition:background-color .16s ease,box-shadow .16s ease}.portfolio-project-meta .portfolio-project-demo-badge:hover{background:var(--demo-badge-surface-hover)}.portfolio-project-meta .portfolio-project-demo-badge:focus-visible{outline:2px solid var(--demo-badge-ink);outline-offset:2px}.portfolio-project-demo-badge svg{stroke-width:1.7;transition:transform .16s ease}.portfolio-project-demo-badge:hover svg{transform:translate(3px)}@media(prefers-reduced-motion:reduce){.portfolio-project-demo-badge svg{transition:none}}.about-me-section{--about-bg: var(--portfolio-bg-deep);--about-text: var(--theme-text, #f5f7fa);--about-muted: var(--portfolio-text-muted);--about-accent: var(--theme-accent, #67d2ad);--about-border: var(--theme-border, rgba(255, 255, 255, .11));--about-section-space: clamp(48px, 3.2vw, 62px);--about-hero-details-gap: clamp(44px, 3.4vw, 66px);position:relative;overflow:hidden;min-height:var(--portfolio-viewport-content-height);padding:var(--portfolio-section-space) 0;display:grid;align-items:start;color:var(--about-text);background:linear-gradient(180deg,var(--portfolio-bg) 0%,var(--about-bg) 100%);font-family:Roboto,sans-serif;text-align:left}.about-me-section,.about-me-section *,.about-me-section *:before,.about-me-section *:after{box-sizing:border-box}.about-shell{width:var(--portfolio-feature-shell-width);min-height:calc(var(--portfolio-viewport-content-height) - var(--portfolio-section-space) - var(--portfolio-section-space));min-width:0;margin:0 auto;display:grid;grid-template-rows:auto auto;align-content:start;gap:var(--about-hero-details-gap)}.about-intro-layout,.about-details-layout{width:100%}.about-intro-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--portfolio-content-gap);align-items:start}.about-intro-layout>*{min-width:0}.about-details-layout{min-height:0;margin-top:0;display:grid;grid-template-rows:auto minmax(0,1fr);align-content:start;border-top:1px solid var(--theme-divider)}.about-section-label{margin:0;color:var(--about-accent);font-size:var(--portfolio-label-size);font-weight:500;line-height:1.4;letter-spacing:.1em;text-transform:uppercase}.about-intro-copy{min-width:0}.about-intro-copy h2{max-width:26ch;margin:12px 0 0;color:var(--about-text);font-family:Roboto,sans-serif;font-size:var(--portfolio-heading-size);font-weight:700;line-height:1.1;letter-spacing:-.03em}.about-intro-copy h2 span{display:block}.about-intro-copy h2 span:last-child{color:var(--about-accent)}.about-lede{max-width:65ch;margin:var(--portfolio-text-gap) 0 0;color:var(--theme-muted, #d2dae5);font-size:var(--portfolio-body-size);line-height:1.72}.about-actions{margin-top:var(--portfolio-action-gap);display:flex;flex-wrap:wrap;gap:12px}.about-action{min-height:var(--portfolio-control-height);padding:clamp(12px,.7vw,16px) clamp(20px,1.25vw,30px);display:inline-flex;align-items:center;justify-content:center;gap:16px;border:1px solid rgba(var(--theme-accent-rgb),.35);border-radius:var(--portfolio-radius);color:var(--about-accent);font-family:inherit;cursor:pointer;font-size:var(--portfolio-small-size);line-height:1.5;font-weight:500;text-decoration:none;transition:transform .18s ease,border-color .18s ease,background-color .18s ease,color .18s ease}.about-action--primary{border-color:var(--about-accent);background:var(--about-accent);color:var(--theme-on-accent, #07172a)}.about-action--secondary{background:rgba(var(--theme-accent-rgb),.08)}.about-profile{width:min(100%,clamp(176px,12vw,400px));justify-self:end}.about-social-links{display:flex;justify-content:flex-end;gap:clamp(8px,.65vw,14px);margin-top:clamp(12px,.8vw,16px)}.about-social-link{width:var(--portfolio-control-height);height:var(--portfolio-control-height);display:inline-flex;align-items:center;justify-content:flex-end;color:#fff;font-size:clamp(1.4rem,1.1rem + .45vw,1.8rem);text-decoration:none}.about-social-link:hover{color:var(--about-accent)}.about-social-link:focus-visible{outline:2px solid var(--about-accent);outline-offset:2px;border-radius:var(--portfolio-radius)}.about-action-arrow{width:21px;height:21px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:currentColor}.about-action-arrow svg{width:18px;height:18px;stroke-width:2}.about-action:hover{transform:translateY(-2px)}.about-action--primary:hover{border-color:var(--theme-accent-hover, #82dfbf);background:var(--theme-accent-hover, #82dfbf);color:var(--theme-on-accent, #07172a)}.about-action--secondary:hover{border-color:rgba(var(--theme-accent-rgb),.6);background:rgba(var(--theme-accent-rgb),.14);color:var(--theme-accent-text, #91e4c7)}.about-action:focus-visible{outline:3px solid rgba(var(--theme-accent-rgb),.45);outline-offset:4px}.about-portrait-frame{position:relative;width:100%;aspect-ratio:3 / 4;margin:0;overflow:hidden;border:var(--portfolio-box-border);border-radius:var(--portfolio-radius);box-shadow:0 12px 30px #02081429}.about-portrait{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(.8) contrast(1.04)}.about-curiosities,.about-technologies{width:100%;min-width:0;justify-self:start;display:grid;grid-template-columns:minmax(0,1fr);align-content:center;gap:clamp(18px,1.25vw,24px);padding:clamp(24px,1.8vw,35px) 0}.about-details-layout .about-section-label{padding-top:3px;line-height:1.6}.about-technologies{padding-top:clamp(17px,1.26vw,24px);padding-bottom:0}.about-details-layout .about-curiosities{grid-template-columns:minmax(0,1fr);gap:clamp(16px,1.2vw,23px);padding-bottom:clamp(13px,.91vw,18px)}.about-curiosity-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--portfolio-content-gap)}.about-curiosity-group{min-width:0;padding:clamp(18px,1.2vw,23px) clamp(20px,1.4vw,34px);border:1px solid var(--theme-border, rgba(255, 255, 255, .075));border-radius:var(--portfolio-radius);background:linear-gradient(145deg,#ffffff0a,#ffffff03 58%),#263a5633;-webkit-backdrop-filter:blur(14px) saturate(125%);backdrop-filter:blur(14px) saturate(125%);box-shadow:inset 0 1px #ffffff0e,0 6px 20px #02081417}.about-curiosity-group h4{margin:0;color:var(--about-text);font-family:Roboto,sans-serif;font-size:clamp(1.08rem,.98rem + .24vw,1.3rem);font-weight:500;line-height:1.4}.about-curiosity-group p{max-width:none;margin:8px 0 0;color:var(--about-muted);font-size:var(--portfolio-small-size);line-height:1.5}.about-technology-list{margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:flex-start;gap:40px 64px;list-style:none}.about-technology-list li{flex:0 1 clamp(104px,7vw,168px);min-width:max-content;display:flex;flex-direction:column;align-items:center;gap:clamp(10px,.75vw,14px);color:var(--about-text);font-size:clamp(.84rem,.72rem + .22vw,1.08rem);line-height:1.4;text-align:center;white-space:nowrap}.about-technology-icon{display:inline-flex;flex:0 0 auto;color:var(--about-accent)}.about-technology-list svg{width:clamp(40px,2.8vw,80px);height:clamp(40px,2.8vw,80px)}.about-details-layout .about-technologies{grid-template-columns:minmax(0,1fr);align-content:start;gap:18px}@media(max-width:760px){.about-me-section{min-height:auto}.about-shell{min-height:0;display:block}.about-intro-layout{grid-template-columns:minmax(0,1fr);gap:24px}.about-profile{width:176px;justify-self:center}.about-social-links{justify-content:center}.about-intro-copy h2{line-height:1.12}.about-details-layout{margin-top:var(--about-hero-details-gap)}}@media(max-height:820px){.about-me-section{min-height:auto}.about-shell{min-height:0;display:block}.about-details-layout{margin-top:var(--about-hero-details-gap)}}@media(max-width:600px){.about-curiosity-groups{grid-template-columns:minmax(0,1fr)}}@media(max-width:440px){.about-intro-copy h2 span{display:inline}.about-actions{align-items:stretch}.about-action{flex:1}}@media(prefers-reduced-motion:reduce){.about-me-section *,.about-me-section *:before,.about-me-section *:after{transition-duration:.01ms!important}}.about-curiosity-group{border:1px solid var(--theme-border, rgba(190, 204, 224, .3));background:var(--theme-surface, #293D59);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.about-shell{--about-profile-size: clamp(176px, 12vw, 360px);width:var(--portfolio-feature-shell-width);gap:clamp(32px,2.5vw,64px);align-content:start}.about-intro-layout{grid-template-columns:minmax(0,1fr) var(--about-profile-size);gap:var(--portfolio-content-gap);align-items:start}.about-intro-copy{grid-column:1;grid-row:1}.about-profile{grid-column:2;grid-row:1;width:var(--about-profile-size);margin-top:12px;justify-self:end}.about-intro-copy h2{margin-top:0}.about-specialisms{margin:14px 0 0;color:var(--about-accent);font-size:var(--portfolio-small-size);line-height:1.6;font-weight:500}.about-lede{max-width:62ch}.about-social-links{justify-content:flex-end}.about-social-link{color:var(--about-muted)}.about-social-link svg{display:block;flex-shrink:0}.about-portrait-frame{box-shadow:none}.about-details-layout{grid-template-columns:minmax(0,1fr);gap:28px;padding-top:28px}.about-details-layout .about-curiosities,.about-details-layout .about-technologies{padding:0;align-content:start;gap:16px}.about-curiosity-groups{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.about-curiosity-group{padding:var(--portfolio-card-padding);border:1px solid var(--theme-border, rgba(190, 204, 224, .25));border-radius:var(--portfolio-radius);background:var(--theme-surface-hover, #243954)}.about-curiosity-group p{max-width:65ch;font-size:clamp(.88rem,.78rem + .14vw,1.16rem);line-height:1.65}.about-technology-list{display:flex;flex-wrap:wrap;justify-content:flex-start;padding:clamp(22px,1.5vw,36px);border:0;border-radius:var(--portfolio-radius);background:var(--theme-surface-hover, #243954)}.about-technology-list li{flex:0 0 auto;flex-direction:row;gap:10px;padding:0;border:0;border-radius:0;background:transparent;white-space:normal;min-width:0;text-align:left;font-size:clamp(.84rem,.72rem + .15vw,1.12rem)}.about-technology-list svg{width:clamp(44px,2.8vw,72px);height:clamp(44px,2.8vw,72px)}@media(max-width:760px){.about-intro-layout{grid-template-columns:minmax(0,1fr) 112px;gap:24px;align-items:start}.about-profile{width:112px;margin-top:0}.about-intro-copy{grid-column:1 / -1;grid-row:2}.about-profile{grid-column:1;grid-row:1;justify-self:start}.about-social-links{gap:4px}.about-details-layout{margin-top:32px}.about-curiosity-groups{grid-template-columns:minmax(0,1fr);gap:16px}}@media(min-width:1280px){.about-intro-copy{max-width:clamp(720px,48vw,1120px)}.about-intro-copy h2{font-size:var(--portfolio-heading-size)}.about-specialisms{margin-top:clamp(14px,1vw,24px);font-size:clamp(.9rem,.76rem + .16vw,1.2rem)}.about-lede{max-width:clamp(62ch,42vw,70ch);margin-top:var(--portfolio-text-gap);font-size:clamp(1.05rem,.82rem + .36vw,1.5rem)}.about-actions{margin-top:var(--portfolio-action-gap)}.about-action{font-size:clamp(.95rem,.82rem + .1vw,1.1rem)}}@media(min-width:1024px)and (max-width:1399px)and (min-height:950px){.about-shell{padding-bottom:clamp(48px,8vh,120px)}}@media(min-width:761px)and (min-height:821px){.about-shell{display:flex;flex-direction:column;gap:0}.about-shell:before,.about-shell:after{content:"";flex:1 1 0}.about-shell:before{max-height:calc(96px - var(--portfolio-section-space))}.about-details-layout{margin-top:clamp(32px,2.5vw,64px)}}.about-copy--mobile{display:none}.about-intro-heading{display:contents}@media(max-width:620px){.about-copy--desktop{display:none}.about-copy--mobile{display:block}.about-intro-layout{--about-mobile-profile-width: clamp(64px, 19vw, 80px);display:grid;grid-template-columns:minmax(0,1fr) var(--about-mobile-profile-width);gap:16px 36px}.about-intro-copy{display:contents}.about-intro-heading{display:block;grid-column:1;grid-row:1}.about-intro-copy h2{margin:0}.about-specialisms{margin:10px 0 0;font-size:.78rem;line-height:1.6}.about-profile{grid-column:2;grid-row:1 / span 2;align-self:start;width:var(--about-mobile-profile-width);margin:0}.about-social-links{display:none}.about-social-link{width:36px;height:36px;font-size:1.25rem}.about-lede{grid-column:1;grid-row:2;margin:0;font-size:.95rem;line-height:1.6}.about-actions{grid-column:1 / -1;grid-row:3;margin-top:2px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.about-action{padding:10px 8px;font-size:.8rem}.about-action--secondary{border-color:var(--about-accent);background:transparent}.about-details-layout{margin-top:28px;padding-top:24px;gap:24px}.about-curiosity-groups{gap:12px}.about-curiosity-group{padding:14px 16px}.about-curiosity-group h4{font-size:.98rem;line-height:1.4}.about-curiosity-group p{margin-top:6px;font-size:.85rem;line-height:1.5}.about-technology-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:0}.about-me-section .about-technologies .about-technology-list{background:transparent}.about-technology-list li{flex-direction:row;justify-content:flex-start;gap:12px;min-height:52px;padding:12px;border:1px solid var(--theme-border-strong, rgba(255, 255, 255, .22));border-radius:var(--portfolio-radius);background:var(--theme-surface, #293d59);text-align:left;font-size:.85rem}.about-technology-list svg{width:24px;height:24px}}.landing-hero{--landing-accent: var(--theme-accent, #67d2ad);--landing-text: var(--theme-text, #f6f8fb);--landing-muted: var(--theme-muted, #cdd6e3);position:relative;isolation:isolate;width:100%;max-width:none;min-height:var(--portfolio-viewport-height);top:0;margin:0;overflow:hidden;display:grid;align-items:center;color:var(--landing-text);background:var(--portfolio-bg-deep);font-family:Roboto,sans-serif;text-align:left}.landing-hero:before{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,#15253e94,#15253e4d 45%,#15253e70);pointer-events:none}.landing-background{position:absolute;z-index:-2;inset:-12px;overflow:hidden;pointer-events:none;transform-origin:70% 50%;animation:landing-background-drift 28s ease-in-out infinite alternate}.landing-background img{display:block;width:100%;height:100%;object-fit:cover;object-position:58% center}@keyframes landing-background-drift{0%{transform:translate3d(-6px,-3px,0) scale(1.015)}to{transform:translate3d(6px,3px,0) scale(1.035)}}.landing-hero,.landing-hero *,.landing-hero *:before,.landing-hero *:after{box-sizing:border-box}.landing-hero-inner{position:relative;top:calc(-1*clamp(16px,3vh,36px));width:var(--portfolio-feature-shell-width);margin:0 auto;padding:calc(var(--portfolio-header-height) + var(--portfolio-section-space)) 0 var(--portfolio-section-space)}.landing-hero-copy{min-width:0;max-width:clamp(900px,48vw,1250px)}.landing-hero h1{max-width:clamp(900px,48vw,1250px);margin:0;color:var(--landing-text);font-family:Roboto,sans-serif;font-size:clamp(2.1rem,1rem + 4vw,6.5rem);font-weight:700;line-height:1.07;letter-spacing:-.045em;text-wrap:balance}.landing-hero h1 span{display:block}.landing-hero h1 .landing-greeting{margin-bottom:8px;color:var(--landing-muted);font-size:.38em;font-weight:400;line-height:1.3;letter-spacing:-.02em}.landing-name{color:var(--landing-accent)}.landing-tagline{max-width:52ch;margin:var(--portfolio-text-gap) 0 0;color:var(--landing-muted);font-size:clamp(1.06rem,.86rem + .5vw,1.5rem);line-height:1.6}.landing-actions{margin-top:var(--portfolio-action-gap);display:flex;align-items:center;flex-wrap:wrap;gap:12px}.landing-action{min-height:var(--portfolio-control-height);padding:clamp(12px,.7vw,16px) clamp(20px,1.25vw,30px);display:inline-flex;align-items:center;justify-content:center;gap:16px;border:1px solid transparent;border-radius:var(--portfolio-button-radius);font-size:var(--portfolio-small-size);line-height:1.5;font-weight:500;text-decoration:none;font-family:inherit;cursor:pointer;transition:transform .18s ease,color .18s ease,border-color .18s ease,background-color .18s ease}.landing-action--primary{background:var(--landing-accent);color:var(--theme-on-accent, #07172a)}.landing-action--primary:hover{transform:translateY(-2px);background:var(--theme-accent-hover, #82dfbf);color:var(--theme-on-accent, #07172a)}.landing-action:focus-visible{outline:3px solid rgba(var(--theme-accent-rgb),.5);outline-offset:4px}@media(max-width:991px){.landing-hero:before{background:linear-gradient(90deg,#15253eb3,#15253e75 45%,#15253e99)}.landing-background img{object-position:62% center}}@media(max-width:767px){.landing-hero-inner{padding-bottom:clamp(36px,8vh,56px)}.landing-hero h1{line-height:1.1}.landing-tagline{margin-top:22px;font-size:1.02rem;line-height:1.7}.landing-actions{margin-top:25px}}@media(max-height:620px){.landing-hero-inner{top:-12px;padding-top:calc(var(--portfolio-header-height) + 32px);padding-bottom:32px}.landing-hero h1 .landing-greeting{margin-bottom:10px}.landing-tagline{margin-top:18px}.landing-actions{margin-top:22px}}@media(prefers-reduced-motion:reduce){.landing-background{animation:none;transform:none}.landing-hero *,.landing-hero *:before,.landing-hero *:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}.site-footer{padding:0;border-top:1px solid var(--theme-divider);background:var(--portfolio-bg-deep);color:#f5f7fa9e;font-family:Roboto,sans-serif}.site-footer-inner{width:var(--portfolio-feature-shell-width);min-height:clamp(92px,5vw,112px);margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:24px}.site-footer p{margin:0;font-size:var(--portfolio-small-size)}.site-footer-links{display:flex;align-items:center;gap:8px}.site-footer a{min-width:40px;min-height:40px;padding:8px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--portfolio-radius);color:#f5f7faad;font-size:var(--portfolio-small-size);text-decoration:none;transition:color .18s ease,background-color .18s ease}.site-footer a:first-child{padding-inline:12px}.site-footer a svg{width:clamp(18px,1vw,22px);height:clamp(18px,1vw,22px)}.site-footer a:hover{color:var(--theme-accent, #67d2ad);background:rgba(var(--theme-accent-rgb),.07)}.site-footer a:focus-visible{outline:2px solid var(--theme-accent, #67d2ad);outline-offset:2px}@media(max-width:560px){.site-footer-inner{min-height:112px;flex-direction:column;justify-content:center;gap:8px}.site-footer-links{max-width:100%;flex-wrap:wrap;justify-content:center}}@media(prefers-reduced-motion:reduce){.site-footer a{transition:none}}.not-found{box-sizing:border-box;min-height:100vh;min-height:100svh;padding:var(--portfolio-header-offset) var(--portfolio-page-gutter) 48px;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at 75% 25%,rgba(var(--theme-accent-rgb),.12),transparent 28rem),linear-gradient(145deg,#0d192d,#15253e 58%,#1c2d4b);color:var(--theme-text, #f6f8fb);font-family:Roboto,sans-serif;text-align:left}.not-found-content{position:relative;width:min(100%,760px);padding:clamp(36px,7vw,72px);border:1px solid var(--theme-border, rgba(255, 255, 255, .1));border-radius:var(--portfolio-radius);background:#0914257a;box-shadow:0 30px 80px #0208124d;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.not-found-code{position:absolute;top:-.28em;right:-.05em;margin:0;color:rgba(var(--theme-accent-rgb),.07);font-size:clamp(9rem,24vw,17rem);font-weight:700;line-height:1;pointer-events:none}.not-found-eyebrow{position:relative;margin:0 0 14px;color:var(--theme-accent, #67d2ad);font-size:.75rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase}.not-found h1{position:relative;max-width:600px;margin:0;font-size:clamp(2.25rem,6vw,4.5rem);font-weight:700;line-height:1.05;letter-spacing:-.035em}.not-found-copy{position:relative;max-width:540px;margin:var(--portfolio-text-gap) 0 0;color:var(--theme-muted, #c5cfdd);font-size:1rem;line-height:1.65}.not-found-actions{position:relative;margin-top:var(--portfolio-action-gap);display:flex;flex-wrap:wrap;gap:12px}.not-found-action{min-height:46px;padding:11px 17px;display:inline-flex;align-items:center;gap:9px;border:1px solid rgba(var(--theme-accent-rgb),.35);border-radius:var(--portfolio-radius);color:var(--theme-accent-hover, #82dfbf);font-size:.9rem;font-weight:500;text-decoration:none;transition:border-color .18s ease,background-color .18s ease,transform .18s ease}.not-found-action--primary{border-color:var(--theme-accent, #67d2ad);background:var(--theme-accent, #67d2ad);color:var(--theme-on-accent, #07172a)}.not-found-action:hover{border-color:var(--theme-accent, #67d2ad);background:rgba(var(--theme-accent-rgb),.1);color:var(--theme-accent-text, #9aecd0);transform:translateY(-2px)}.not-found-action--primary:hover{background:var(--theme-accent-hover, #82dfbf);color:var(--theme-on-accent, #07172a)}.not-found-action:focus-visible{outline:2px solid var(--theme-accent, #67d2ad);outline-offset:4px}@media(max-width:520px){.not-found-content{padding:34px 24px}.not-found-actions{align-items:stretch;flex-direction:column}.not-found-action{justify-content:center}}@media(prefers-reduced-motion:reduce){.not-found-action{transition:none}}html{color-scheme:dark}html:not([data-theme=light]) .portfolio-project-card .portfolio-project-card-copy{background:#263b55}html:not([data-theme=light]) .portfolio-project-card:hover .portfolio-project-card-copy{background:var(--theme-surface-hover, #2e4461)}html:not([data-theme=light]) .portfolio-project-card-copy .portfolio-project-summary{color:#d6dfeb}html[data-theme=light]{color-scheme:light;--portfolio-bg: #d7e1ed;--portfolio-bg-deep: #ccd8e7;--portfolio-text-muted: #2b2e33;--theme-text: #1a1a1a;--theme-muted: #2b2e33;--theme-accent: #2c5279;--theme-accent-rgb: 44, 82, 121;--theme-accent-hover: #203f5c;--theme-accent-text: #264a6d;--theme-on-accent: #ffffff;--theme-surface: #e9eff6;--theme-surface-hover: #e0e9f3;--theme-border: #b6c5d7;--theme-border-strong: #8c9fb7;--theme-divider: rgba(52, 94, 134, .2);--theme-tag-surface: #bfd2e5;--theme-tag-ink: #000000;--portfolio-box-border-color: var(--theme-border);--theme-accent-soft: #dbe6f2;--theme-accent-soft-hover: #cbdced;--theme-accent-border: #a4bcd4;--theme-input: #f1f5fa;--theme-navbar: #e3eaf3;--theme-navbar-border: #8c9fb7;--theme-hero: #b7c9df;--theme-hero-rgb: 183, 201, 223;--theme-shadow: 0 8px 28px rgba(28, 45, 75, .07)}.landing-color-filter{position:absolute;width:0;height:0;pointer-events:none}.about-portrait--light,html[data-theme=light] .about-portrait--dark{display:none}html[data-theme=light] .about-portrait--light{display:block}html[data-theme=light] .global-header{background:var(--theme-navbar);border-bottom-color:var(--theme-navbar-border)}html[data-theme=light] .global-navigation-links button,html[data-theme=light] .language-switch{color:var(--theme-text)}html[data-theme=light] .global-navigation-links button:is(:hover,.is-active),html[data-theme=light] .language-switch:hover{color:var(--theme-text)}html[data-theme=light] .global-home{color:#20324d;border-color:#496581;background:transparent}html[data-theme=light] .global-navigation-controls{--navigation-control-surface: rgba(32, 50, 77, .08)}html[data-theme=light] .global-menu-toggle span{background:var(--theme-text)}html[data-theme=light] .global-navigation-menu.is-open{background:var(--theme-navbar)}html[data-theme=light] .global-navigation-links button{background:transparent;border:0;box-shadow:none}html[data-theme=light] .landing-hero{--theme-muted: #383b40;--theme-accent: #345e86;--theme-accent-rgb: 52, 94, 134;--theme-accent-hover: #264969;--theme-accent-text: #30577d;--landing-text: var(--theme-text);--landing-muted: #1a1a1a;--landing-accent: var(--theme-accent-text);background:var(--theme-hero);border-bottom:1px solid var(--theme-border)}html[data-theme=light] .landing-background img{filter:url(#landing-light-tone) contrast(1.12) brightness(1.06);opacity:1}html[data-theme=light] .landing-hero:before{-webkit-mask-image:linear-gradient(180deg,#000 0%,#000 70%,rgba(0,0,0,.15) 100%);mask-image:linear-gradient(180deg,#000 0% 70%,#00000026);background:radial-gradient(ellipse at 18% 32%,rgba(230,238,248,.08),transparent 58%),radial-gradient(ellipse at 28% 72%,rgba(38,70,111,.28),transparent 58%),radial-gradient(ellipse at 90% 65%,rgba(33,65,102,.14),transparent 48%),linear-gradient(90deg,rgba(183,201,223,.68) 0%,rgba(193,209,229,.5) 30%,rgba(183,201,223,.38) 48%,rgba(var(--theme-hero-rgb),.12) 75%,transparent)}html[data-theme=light] .landing-name{color:#203b5b}html[data-theme=light] .portfolio-project-filters button{border-color:var(--theme-accent-border)}html[data-theme=light] .portfolio-project-filters button[aria-pressed=true]{border-color:var(--theme-accent)}html[data-theme=light] .landing-action:focus-visible{outline-color:var(--theme-accent)}html[data-theme=light] .contact-section{background:linear-gradient(180deg,var(--portfolio-bg),var(--portfolio-bg-deep))}html[data-theme=light] :is(.about-curiosity-group,.about-technology-list,.portfolio-project-card-copy,.contact-panel,.not-found-content){background:var(--theme-surface);border:1px solid var(--theme-border);box-shadow:var(--theme-shadow)}html[data-theme=light] .about-details-layout .about-section-label{color:var(--theme-accent);font-weight:700}html[data-theme=light] .about-technology-list{border:0;box-shadow:none}html[data-theme=light] .portfolio-project-card:hover .portfolio-project-card-copy{background:var(--theme-surface-hover)}html[data-theme=light] .portfolio-project-card-copy :is(.portfolio-project-number,.portfolio-project-meta p){color:var(--theme-accent-hover)}html[data-theme=light] .portfolio-project-card-image{background:var(--theme-surface)}html[data-theme=light] :is(.about-action--secondary,.portfolio-project-demo-link,.portfolio-project-technologies li){background:var(--theme-accent-soft);color:var(--theme-accent-text);border-color:var(--theme-accent-border)}html[data-theme=light] .portfolio-project-technologies li{color:var(--theme-tag-ink);border:0;background:var(--theme-tag-surface)}html:not([data-theme=light]) .portfolio-project-technologies li{color:var(--theme-tag-ink);border:0;background:var(--theme-tag-surface)}html[data-theme=light] :is(.about-action--secondary,.portfolio-project-demo-link):hover{background:var(--theme-accent-soft-hover);color:var(--theme-accent-hover)}html[data-theme=light] .about-social-link{color:var(--theme-muted)}html[data-theme=light] .about-social-link:hover{color:var(--theme-accent)}html[data-theme=light] .about-social-link:focus-visible{outline-color:var(--theme-accent)}html[data-theme=light] .contact-form{background:#e3ecf5;border-color:var(--theme-border)}html[data-theme=light] .contact-field :is(input,textarea){background:var(--theme-input);border-color:var(--theme-border-strong)}html[data-theme=light] .contact-field :is(input,textarea):focus{background:var(--theme-input);border-color:var(--theme-accent)}html[data-theme=light] .contact-field :is(input,textarea)::placeholder{color:var(--theme-muted);opacity:1}html[data-theme=light] .contact-status--success{color:#205e48;background:#e8f2e9}html[data-theme=light] .contact-status--error{color:#922525;background:#f4dede}html[data-theme=light] .site-footer,html[data-theme=light] .site-footer a{color:var(--theme-muted)}html[data-theme=light] .site-footer a:hover{color:var(--theme-accent)}html[data-theme=light] .project-preview-layer{--preview-control-bg: var(--theme-input);--preview-control-hover-bg: var(--theme-surface);--preview-control-text: var(--theme-text);--preview-control-border: var(--theme-border-strong)}html[data-theme=light] .modal-content.project-preview-modal,html[data-theme=light] .modal-content.project-preview-modal .modal-body.project-preview-body,html[data-theme=light] .project-preview-content{background:var(--portfolio-bg-deep)}html[data-theme=light] .modal-content.project-preview-modal{box-shadow:none}html[data-theme=light] .project-preview-context li,html[data-theme=light] .project-preview-action-notice{color:var(--theme-muted)}html[data-theme=light] .project-preview-counter{-webkit-backdrop-filter:none;backdrop-filter:none}html[data-theme=light] .project-preview-close{color:var(--theme-muted)}html[data-theme=light] .project-preview-close:hover{background:#1a1a1a0f;color:var(--theme-text)}html[data-theme=light] .project-preview-link{background:var(--theme-accent);color:var(--theme-on-accent);border-color:var(--theme-accent)}html[data-theme=light] .project-preview-link:hover{background:var(--theme-accent-hover);color:var(--theme-on-accent)}html[data-theme=light] .project-preview-body--expanded .project-preview-content{border-color:var(--theme-border)}html[data-theme=light] .project-preview-modal :focus-visible{outline-color:var(--theme-accent)}html[data-theme=light] .privacy-page header{border-color:var(--theme-border)}html[data-theme=light] .not-found,html[data-theme=light] .project-detail-background{background:var(--portfolio-bg)}html[data-theme=light] .project-detail-container :is(.image-caption,.meta-label,.meta-affiliation,.research-fact span,.project-paper-footer span,.section-number){color:var(--theme-muted)}html[data-theme=light] .project-detail-container :is(h1,h2,h3){color:var(--theme-text)}html[data-theme=light] .project-detail-container{box-shadow:var(--theme-shadow)}html[data-theme=light] .project-detail-container--topic-modeling .back-button-custom:hover{color:var(--theme-accent);border-color:var(--theme-accent)}html[data-theme=light] .thesis-page{--thesis-bg: var(--portfolio-bg);--thesis-bg-deep: var(--portfolio-bg-deep);--thesis-surface: #f5f8fc;--thesis-surface-strong: #e8eff8;--thesis-chart-surface: #e6edf5;--thesis-border: #96abc4;--thesis-border-soft: #becddd;--thesis-text: var(--theme-text);--thesis-text-muted: var(--theme-muted);--thesis-accent: var(--theme-accent);--thesis-accent-deep: var(--theme-accent-hover);--thesis-accent-soft: var(--theme-accent-soft);--thesis-glass-border: var(--thesis-border);--thesis-glass-background: var(--thesis-surface);--thesis-glass-background-accent: var(--thesis-surface-strong);--thesis-glass-shadow: var(--theme-shadow);background:linear-gradient(180deg,var(--portfolio-bg),var(--portfolio-bg-deep))}html[data-theme=light] :is(.thesis-back-link,.xai-new-example-button){border-color:var(--theme-border);background:var(--theme-surface)}html[data-theme=light] .thesis-back-link:hover{border-color:var(--theme-accent);background:var(--theme-accent-soft)}html[data-theme=light] :is(.thesis-question-icon,.thesis-result-heading-icon){border-color:var(--theme-accent);background:var(--theme-accent-soft)}html[data-theme=light] .thesis-section:not(.thesis-section--final):before{background:linear-gradient(180deg,#587b9f,#96adc6 50%,#587b9f);box-shadow:none}html[data-theme=light] .thesis-interpretation>p:last-child{color:#1f3349}html[data-theme=light] .thesis-page :is(.thesis-overview-card>p,.thesis-process-list p,.thesis-result-findings li,.thesis-takeaway-point>p:last-child){color:color-mix(in srgb,var(--thesis-text) 92%,var(--thesis-bg))}html[data-theme=light] .thesis-page .thesis-demo-cta small{opacity:1}html[data-theme=light] .thesis-overview-card--challenge{--thesis-card-accent: 134, 50, 31}html[data-theme=light] .thesis-overview-card--goal{--thesis-card-accent: 29, 78, 126}html[data-theme=light] .thesis-overview-card--contribution{--thesis-card-accent: 44, 82, 121}html[data-theme=light] .thesis-process-card{--thesis-process-accent: 44, 82, 121}html[data-theme=light] .thesis-page .thesis-process-list .thesis-process-card--foundation{--thesis-process-accent: 29, 78, 126}html[data-theme=light] .thesis-page .thesis-process-list .thesis-process-card--modeling{--thesis-process-accent: 80, 52, 134}html[data-theme=light] .thesis-page .thesis-process-list .thesis-process-card--explanation{--thesis-process-accent: 44, 82, 121}html[data-theme=light] .thesis-section-kicker span{text-shadow:none;box-shadow:none;border-color:var(--theme-accent)}html[data-theme=light] .thesis-demo-cta,html[data-theme=light] .thesis-demo-cta :is(strong,small,svg),html[data-theme=light] .thesis-footer-link{color:var(--theme-on-accent)!important}html[data-theme=light] :is(.thesis-demo-cta,.thesis-footer-link):hover{background:var(--theme-accent-hover);border-color:var(--theme-accent-hover)}html[data-theme=light] .xai-example-option--active{background:var(--theme-accent-soft)}html[data-theme=light] :is(.xai-step-indicator-item,.xai-model-note){color:var(--theme-muted)}html[data-theme=light] .xai-step-indicator-item--complete,html[data-theme=light] .xai-step-indicator-item--active{color:var(--theme-text)}html[data-theme=light] .xai-analyze-button{color:var(--theme-on-accent)}html[data-theme=light] :is(.xai-example-option--active,.xai-tweet-avatar){border-color:var(--theme-accent);background:var(--theme-accent-soft)}html[data-theme=light] .xai-analyze-button{border-color:var(--theme-accent)}html[data-theme=light] .xai-analyze-button:hover:not(:disabled){border-color:var(--theme-accent-hover)}html[data-theme=light] .xai-new-example-button:hover{border-color:var(--theme-accent);background:var(--theme-accent-soft)}html[data-theme=light] :is(.xai-example-option,.xai-analyze-button,.xai-new-example-button):focus-visible{outline-color:var(--theme-accent)}html[data-theme=light] .xai-analyze-button:hover:not(:disabled){background:var(--theme-accent-hover)}html[data-theme=light] .xai-demo-page{--xai-human-rgb: 30, 98, 184;--xai-bot-rgb: 196, 86, 18;--xai-neutral-rgb: 120, 136, 160;--xai-uncertain-rgb: 84, 96, 116}html[data-theme=light] .xai-input-actions>span:not(.xai-analysis-progress){color:var(--theme-muted)}html[data-theme=light] :is(.xai-token-details,.xai-token-hint,.xai-shap-info p){background:var(--theme-surface-hover)}html[data-theme=light] .xai-feature-track{background:#345e861f}html[data-theme=light] .xai-feature-track:after{background:var(--theme-border-strong)}@media(max-width:680px){.global-navigation-controls .language-switch{width:auto}}@media(max-width:991px){html[data-theme=light] .landing-hero:before{-webkit-mask-image:none;mask-image:none;background:radial-gradient(ellipse at 20% 38%,rgba(230,238,248,.06),transparent 62%),radial-gradient(ellipse at 70% 75%,rgba(38,70,111,.24),transparent 55%),linear-gradient(180deg,rgba(var(--theme-hero-rgb),.3),rgba(var(--theme-hero-rgb),.8) 28%,rgba(var(--theme-hero-rgb),.7) 72%,rgba(var(--theme-hero-rgb),.3))}}html .App :is(.portfolio-project-card,.about-curiosity-group,.about-portrait-frame,.contact-panel,.not-found-content,.project-detail-container,.thesis-project-summary,.thesis-question-block,.thesis-result-card,.thesis-takeaway,.xai-demo-card){border:var(--portfolio-box-border)}html .project-preview-layer .modal-content.project-preview-modal{border:0}html .App .portfolio-project-card :is(.portfolio-project-card-image,.portfolio-project-card-copy){border:0;border-radius:0}html .App .portfolio-project-card{overflow:hidden}html .App .portfolio-project-card:focus-within{outline:2px solid var(--theme-accent);outline-offset:3px}html .App .contact-panel{border-color:var(--theme-border-strong)}html:not([data-theme=light]) .contact-panel{background:#304866}html:not([data-theme=light]) .contact-form{background:#263b55}html[data-theme=light] .contact-panel{background:#f1f5fa}@media(max-width:620px){html .App .about-technology-list li{border:var(--portfolio-box-border)}}html :is(.global-header,.landing-hero,.about-me-section,.portfolio-projects,.contact-section,.site-footer,.privacy-page,.not-found,.project-preview-layer) :is(a,button,summary):focus-visible{outline:2px solid var(--theme-accent);outline-offset:3px}
