*{margin:0;padding:0;box-sizing:border-box}:root{color-scheme:dark;--black: #000000;--white: #FFFFFF;--page-bg: #000000;--text-primary: #E0E0E0;--text-secondary: #C7C7C7;--text-muted: #A0A0A0;--text-emphasis: #e8e8e8;--white-05: rgba(255, 255, 255, .05);--white-07: rgba(255, 255, 255, .07);--white-10: rgba(255, 255, 255, .1);--white-15: rgba(255, 255, 255, .15);--white-18: rgba(255, 255, 255, .18);--white-20: rgba(255, 255, 255, .2);--white-25: rgba(255, 255, 255, .25);--white-30: rgba(255, 255, 255, .3);--white-40: rgba(255, 255, 255, .4);--white-50: rgba(255, 255, 255, .5);--white-60: rgba(255, 255, 255, .6);--white-65: rgba(255, 255, 255, .65);--white-70: rgba(255, 255, 255, .7);--white-80: rgba(255, 255, 255, .8);--white-85: rgba(255, 255, 255, .85);--white-90: rgba(255, 255, 255, .9);--white-95: rgba(255, 255, 255, .95);--accent: #6B8CA3;--accent-glow: rgba(107, 140, 163, .4);--inverse-text: #000000;--nav-bg: rgba(0, 0, 0, .8);--control-bg: rgba(0, 0, 0, .6);--panel-bg: rgba(28, 30, 33, .92);--panel-subtle-bg: rgba(28, 30, 33, .92);--panel-strong-bg: rgba(32, 34, 37, .96);--code-bg: rgba(0, 0, 0, .5);--image-bg: #000000;--text-shadow: 0 0 20px rgba(0, 0, 0, .8);--text-shadow-soft: 0 0 10px rgba(0, 0, 0, .8);--panel-shadow: 0 8px 32px rgba(0, 0, 0, .4);--panel-shadow-soft: 0 0 20px rgba(0, 0, 0, .3);--transition-gradient: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, .2) 35%, rgba(0, 0, 0, .4) 75%, rgba(0, 0, 0, .6) 100%);--transition-fill: rgba(0, 0, 0, .6)}:root[data-theme=day]{color-scheme:light;--page-bg: #F3F1EB;--text-primary: #1F3039;--text-secondary: #40545F;--text-muted: #5B6870;--text-emphasis: #12242D;--white-05: rgba(22, 44, 55, .05);--white-07: rgba(22, 44, 55, .07);--white-10: rgba(22, 44, 55, .1);--white-15: rgba(22, 44, 55, .15);--white-18: rgba(22, 44, 55, .18);--white-20: rgba(22, 44, 55, .2);--white-25: rgba(22, 44, 55, .25);--white-30: rgba(22, 44, 55, .3);--white-40: rgba(22, 44, 55, .4);--white-50: rgba(22, 44, 55, .5);--white-60: rgba(22, 44, 55, .6);--white-65: rgba(22, 44, 55, .65);--white-70: rgba(22, 44, 55, .7);--white-80: rgba(22, 44, 55, .8);--white-85: rgba(22, 44, 55, .85);--white-90: rgba(22, 44, 55, .9);--white-95: rgba(22, 44, 55, .95);--accent: #3F6377;--accent-glow: rgba(63, 99, 119, .24);--inverse-text: #F8F7F2;--nav-bg: rgba(246, 245, 240, .88);--control-bg: rgba(255, 255, 255, .78);--panel-bg: rgba(255, 255, 255, .82);--panel-subtle-bg: rgba(255, 255, 255, .64);--panel-strong-bg: rgba(252, 252, 249, .92);--code-bg: rgba(29, 43, 52, .08);--image-bg: #D8DEDF;--text-shadow: 0 1px 16px rgba(255, 255, 255, .8);--text-shadow-soft: 0 1px 10px rgba(255, 255, 255, .75);--panel-shadow: 0 12px 36px rgba(48, 64, 72, .14);--panel-shadow-soft: 0 6px 20px rgba(48, 64, 72, .12);--transition-gradient: linear-gradient(to bottom, rgba(243, 241, 235, 0) 0%, rgba(243, 241, 235, .32) 35%, rgba(243, 241, 235, .7) 75%, rgba(243, 241, 235, .94) 100%);--transition-fill: rgba(243, 241, 235, .94)}body{font-family:Space Mono,monospace;background-color:var(--page-bg);color:var(--text-primary);line-height:1.6;overflow-x:hidden;min-height:100vh;transition:background-color .3s ease,color .3s ease}#root{min-height:100vh}.mode-2d{overflow-anchor:none}.mode-2d .page-flow{display:flex;flex-direction:column;position:sticky;top:0}.mode-2d .container{position:relative!important;order:1;min-height:auto;padding:7rem 2rem 3rem}.mode-2d .content{opacity:1!important}.mode-2d .about-me-container{position:relative;order:2;flex-direction:row;align-items:center;justify-content:center;gap:3rem;height:auto;padding:3rem clamp(1.5rem,8vw,10rem);opacity:1!important;transform:none!important;pointer-events:auto!important;scroll-margin-top:80px}.mode-2d .about-me-container>div:last-child{align-self:center!important}@media(max-width:900px){.mode-2d .about-me-container{flex-direction:column;gap:2rem}}.mode-2d .highlights-section{position:relative!important;order:3;top:auto!important;left:auto!important;padding:2rem 2rem 3rem;opacity:1!important;transform:none!important;pointer-events:auto!important;scroll-margin-top:80px}.mode-2d .cv-section{order:4;min-height:auto;margin-top:0;padding-top:3rem;padding-bottom:3rem}.mode-2d .publication-section{order:5;min-height:auto;padding-top:3rem;padding-bottom:3rem}.mode-2d .code-showcase-section{order:6;min-height:auto;padding-top:3rem;padding-bottom:3rem}.container{position:relative;z-index:10;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;pointer-events:none}.content{text-align:center;max-width:600px;pointer-events:auto}h1{font-size:clamp(1.5rem,5vw,3rem);font-weight:700;letter-spacing:-.02em;margin-bottom:1rem;text-shadow:var(--text-shadow);color:var(--text-emphasis)}.subtitle{font-size:clamp(.875rem,2vw,1.125rem);opacity:.8;margin-bottom:2rem;text-shadow:var(--text-shadow-soft);color:var(--text-secondary)}.navigation{position:fixed;top:0;left:0;width:100%;z-index:1000;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding:.75rem 1rem;margin:0;background:var(--nav-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--white-10)}.nav-links{grid-column:2;display:flex;gap:1.5rem;justify-content:center;flex-wrap:wrap}.nav-dropdown{display:none}.link{color:var(--text-primary);text-decoration:none;font-size:.875rem;padding:.5rem 1rem;border:1px solid var(--white-30);background-color:var(--control-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:background-color .2s ease,color .2s ease;cursor:pointer}.link:hover{background-color:var(--text-emphasis);color:var(--inverse-text)}.link:focus-visible{outline:2px solid var(--text-emphasis);outline-offset:2px}.footer{position:fixed;bottom:1rem;left:0;right:0;text-align:center;font-size:.75rem;opacity:.7;z-index:10;text-shadow:var(--text-shadow-soft)}.utility-controls{grid-column:3;justify-self:end;display:flex;gap:.5rem}.utility-control{width:2.5rem;height:2.5rem;padding:0;border:1px solid var(--white-20);border-radius:999px;background:var(--control-bg);color:var(--text-primary);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:grid;place-items:center;font-size:1rem;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.utility-control:hover{background:var(--white-10);border-color:var(--white-50)}.utility-control:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(max-width:640px){.navigation{grid-template-columns:minmax(0,1fr) auto;gap:.5rem;padding:.625rem .75rem}.nav-links{display:none}.nav-dropdown{display:block;grid-column:1;position:relative;width:100%;max-width:12rem;min-width:0}.nav-dropdown-trigger{height:2.5rem;padding:0 .75rem;border:1px solid var(--white-30);border-radius:4px;background:var(--control-bg);color:var(--text-primary);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:space-between;gap:.75rem;font-family:Space Mono,monospace;font-size:.8rem;cursor:pointer;list-style:none}.nav-dropdown-trigger::-webkit-details-marker{display:none}.nav-dropdown-trigger::marker{content:""}.nav-dropdown-trigger svg{flex:none;transition:transform .2s ease}.nav-dropdown[open] .nav-dropdown-trigger svg{transform:rotate(180deg)}.nav-dropdown-trigger:hover{background:var(--white-10);border-color:var(--white-50)}.nav-dropdown-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.nav-dropdown-menu{position:absolute;top:calc(100% + .5rem);left:0;z-index:1;display:grid;gap:.25rem;width:100%;padding:.375rem;border:1px solid var(--white-20);border-radius:4px;background:var(--panel-strong-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--panel-shadow)}.nav-dropdown-item{padding:.625rem .75rem;color:var(--text-primary);text-decoration:none;font-family:Space Mono,monospace;font-size:.8rem;transition:background-color .2s ease,color .2s ease}.nav-dropdown-item:hover{background:var(--white-10)}.nav-dropdown-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.nav-dropdown-item.active{background:var(--text-emphasis);color:var(--inverse-text)}.utility-controls{grid-column:2}}.carousel-container{width:100%;max-width:700px;background:var(--panel-bg);border:1px solid var(--white-15);padding:2px;margin:0 auto;position:relative;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);color:var(--text-primary);font-family:Space Mono,monospace;box-shadow:var(--panel-shadow-soft)}.about-me-container{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:50;transition:opacity .2s ease-out;display:flex;flex-direction:column;padding:10rem 4rem 4rem;box-sizing:border-box;color:var(--text-primary);font-family:Inter,sans-serif}@media(min-width:1200px){.about-me-container{padding:10rem 15vw 4rem 15vw}}.carousel-screen{position:relative;width:100%;aspect-ratio:16 / 9;background:var(--image-bg);margin-bottom:1.5rem;overflow:hidden;border:1px solid var(--white-10)}.carousel-track{display:flex;width:100%;height:100%;transition:transform .5s cubic-bezier(.4,0,.2,1);will-change:transform}.screen-image{flex:0 0 100%;width:100%;max-width:100%;height:100%;object-fit:cover;transition:transform .5s ease;position:relative;display:block}.carousel-container:hover .screen-image.active-slide{transform:scale(1.02)}.screen-banner{position:absolute;bottom:0;left:0;width:100%;background:var(--panel-strong-bg);border-top:1px solid var(--white-30);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:1.5rem;transform:translateY(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;z-index:10}.carousel-screen:hover .screen-banner{transform:translateY(0)}.item-date{font-size:.75rem;color:var(--accent);margin-bottom:.25rem;letter-spacing:1px}.item-title{font-size:1.5rem;font-weight:700;margin-bottom:.5rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-emphasis);text-shadow:none}.item-desc{font-size:.9rem;line-height:1.4;color:var(--text-secondary);max-width:100%}.carousel-controls{display:flex;align-items:center;gap:1rem}.control-btn{background:transparent;border:1px solid var(--white-40);color:var(--text-primary);padding:.5rem 1rem;cursor:pointer;font-family:inherit;font-size:.9rem;transition:all .2s}.control-btn:hover{background:var(--text-emphasis);color:var(--inverse-text);box-shadow:0 0 15px var(--white-50)}.progress-bar{flex-grow:1;height:2px;background:var(--white-20);position:relative}.progress-fill{background:var(--text-emphasis);height:100%;position:absolute;top:0;left:0;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 0 10px var(--white-80)}.corner{position:absolute;width:10px;height:10px;border:2px solid var(--text-emphasis);transition:all .3s}.top-left{top:-1px;left:-1px;border-right:none;border-bottom:none}.top-right{top:-1px;right:-1px;border-left:none;border-bottom:none}.bottom-left{bottom:-1px;left:-1px;border-right:none;border-top:none}.bottom-right{bottom:-1px;right:-1px;border-left:none;border-top:none}.carousel-container:hover .corner{width:15px;height:15px;box-shadow:0 0 5px var(--text-emphasis)}.info-card{position:absolute;bottom:.7rem;left:50%;width:95%;transform:translate(-50%);background:var(--panel-strong-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--white-10);border-radius:12px;padding:1rem 1.5rem;z-index:10;box-shadow:var(--panel-shadow);overflow:hidden;opacity:0;transition:all .4s cubic-bezier(.2,.8,.2,1)}.carousel-screen:hover .info-card{opacity:1}@media(max-width:768px){.info-card{width:90%;bottom:1.5rem}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-text{opacity:0;animation:fadeInUp .6s cubic-bezier(.2,.8,.2,1) forwards}.delay-0{animation-delay:0ms}.delay-1{animation-delay:.1s}.delay-2{animation-delay:.2s}.info-card .item-date{font-size:.75rem;color:var(--accent);margin-bottom:.5rem;letter-spacing:1px;display:block}.info-card .item-title{font-size:1.25rem;font-weight:700;margin-bottom:.75rem;text-transform:none;letter-spacing:.5px;color:var(--text-emphasis);line-height:1.2}.info-card .item-desc{font-size:.9rem;line-height:1.6;color:var(--text-secondary);margin:0}.story-buttons{display:flex;gap:.75rem;margin-top:1rem}.story-btn{display:inline-block;background:transparent;border:1px solid var(--white-60);color:var(--text-emphasis);padding:.5rem 1rem;cursor:pointer;font-family:Space Mono,monospace;font-size:.8rem;letter-spacing:.5px;text-align:center;text-decoration:none;transition:all .2s ease}.story-btn:hover{background:var(--text-emphasis);color:var(--inverse-text);box-shadow:0 0 15px var(--white-40)}.story-btn.ads-btn{border-color:var(--accent);color:var(--accent)}.story-btn.ads-btn:hover{background:var(--accent);color:var(--inverse-text);box-shadow:0 0 15px var(--accent-glow)}.project-page #root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.project-background,.project-space-scene,.project-land-scene{position:absolute;inset-inline:0;width:100%}.project-background{inset-block:0}.project-space-scene{top:0;height:50vh}.project-land-scene{bottom:0;height:50vh}.project-main{position:relative;z-index:1;min-height:100vh;padding:clamp(1.5rem,5vw,4rem) clamp(1rem,4vw,2rem)}.project-article{width:100%;max-width:900px;margin:0 auto;background:var(--panel-strong-bg);border:1px solid var(--white-20);padding:clamp(1.25rem,4vw,2.5rem);position:relative;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);box-shadow:var(--panel-shadow)}.project-article .corner{width:15px;height:15px;box-shadow:0 0 5px var(--text-emphasis)}.project-nav{display:flex;justify-content:space-between;gap:1rem;margin-bottom:2rem;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase}.project-nav a{color:var(--text-emphasis);text-decoration:none;border-bottom:1px solid var(--white-40);transition:border-color .2s ease,color .2s ease}.project-nav a:hover,.project-nav a:focus-visible{color:var(--accent);border-color:var(--accent)}.skip-link{position:fixed;top:.75rem;left:.75rem;z-index:10;padding:.5rem .75rem;background:var(--panel-strong-bg);color:var(--text-emphasis);transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.story-header{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--white-10)}.story-date{font-size:.75rem;color:var(--accent);letter-spacing:1px;display:block;margin-bottom:.5rem}.story-title{font-size:1.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-emphasis);margin:0;line-height:1.2;text-shadow:none}.project-summary{margin:1rem 0 0;color:var(--text-secondary);font-family:Inter,sans-serif;line-height:1.6}.story-content{font-size:1rem;line-height:1.8;color:var(--text-primary);font-family:Inter,sans-serif}.story-content p{margin:0 0 1rem}.story-content p:last-child{margin-bottom:0}.story-content h1{font-size:1.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-emphasis);margin:1.5rem 0 1rem;line-height:1.2;text-shadow:none;border-bottom:2px solid var(--white-20);padding-bottom:.5rem}.story-content h1:first-child{margin-top:0}.story-content h2{font-size:1.25rem;font-weight:600;color:var(--accent);margin:1.25rem 0 .75rem;letter-spacing:.5px;text-shadow:none}.story-content h3{font-size:1.1rem;font-weight:600;color:var(--text-primary);margin:1rem 0 .5rem;text-shadow:none}.story-content ul,.story-content ol{margin:1rem 0;padding-left:1.5rem}.story-content li{margin-bottom:.5rem;color:var(--text-primary)}.story-content li::marker{color:var(--accent)}.story-content strong{font-weight:700;color:var(--text-emphasis)}.story-content em{font-style:italic;color:var(--text-secondary)}.story-content a{color:var(--accent);text-decoration:underline;transition:opacity .2s ease}.story-content a:hover{opacity:.8}.story-content code{background:var(--white-10);padding:.15rem .4rem;border-radius:3px;font-family:Space Mono,monospace;font-size:.9em;color:var(--accent)}.story-content pre{background:var(--code-bg);border:1px solid var(--white-10);border-radius:4px;padding:1rem;overflow-x:auto;margin:1rem 0}.story-content pre code{background:none;padding:0;color:var(--text-primary)}.story-content blockquote{border-left:3px solid var(--accent);padding-left:1rem;margin:1rem 0;font-style:italic;color:var(--text-secondary)}.story-content img{display:block;width:min(100%,800px);max-width:800px;height:auto;margin:1rem auto}@media(max-width:640px){.project-main{padding:1rem}.project-nav{align-items:flex-start;flex-direction:column}.story-title{font-size:1.4rem}}.cv-section{position:relative;z-index:20;min-height:100vh;margin-top:100vh;padding:4rem 2rem;scroll-margin-top:80px}.cv-container{max-width:900px;margin:0 auto;padding:clamp(1.25rem,3vw,2rem);background:var(--panel-bg);border:1px solid var(--white-15);border-radius:8px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);box-shadow:var(--panel-shadow-soft)}.cv-header{text-align:center;margin-bottom:1.5rem}.cv-title{font-size:clamp(2rem,5vw,3rem);font-weight:700;letter-spacing:-.02em;margin-bottom:.5rem;color:var(--text-emphasis);text-shadow:none}.cv-hint{font-size:.875rem;color:var(--text-muted);font-family:Space Mono,monospace}.cv-grid{display:grid;grid-template-columns:1fr;gap:0}.cv-category{border-bottom:1px solid var(--white-15);padding:0}.cv-category:last-child{border-bottom:0}.cv-category-summary{display:flex;justify-content:space-between;align-items:center;position:relative;padding:1rem 1.5rem 1rem 2.5rem;cursor:pointer;list-style:none;font-family:Space Mono,monospace;font-size:.9rem;font-weight:600;color:var(--text-primary);transition:background-color .2s ease;-webkit-user-select:none;user-select:none}.cv-category-summary::-webkit-details-marker{display:none}.cv-category-summary::marker{display:none}.cv-category-summary:before{content:"";position:absolute;left:1rem;top:50%;transform:translateY(-50%);width:0;height:0;border-left:6px solid var(--text-primary);border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform .2s ease}details[open]>.cv-category-summary:before{transform:translateY(-50%) rotate(90deg)}.cv-category-summary:hover{background-color:var(--white-05)}.cv-category-summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cv-category-title{flex:1;text-transform:uppercase;letter-spacing:.5px}.cv-category-count{background:var(--white-10);border:1px solid var(--white-20);border-radius:12px;padding:.25rem .75rem;font-size:.75rem;font-weight:600;color:var(--accent);min-width:2rem;text-align:center}.cv-category-content{padding:0 1.5rem .5rem}.cv-empty{padding:1.5rem 0;text-align:center;color:var(--text-muted);font-size:.875rem;font-family:Space Mono,monospace}.cv-empty code{background:var(--white-10);padding:.2rem .4rem;border-radius:3px;font-size:.8em;color:var(--accent)}.cv-items{list-style:none;padding:0;margin:0}.cv-item{padding:.5rem 0;border-bottom:1px solid var(--white-05)}.cv-item:last-child{border-bottom:none}.cv-item-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.5rem}.cv-item-title{font-weight:600;color:var(--text-primary);font-size:.95rem;line-height:1.4;flex:1}.cv-item-date{font-size:.75rem;color:var(--accent);font-family:Space Mono,monospace;white-space:nowrap;flex-shrink:0}.cv-item-badge{font-size:.7rem;line-height:1;letter-spacing:.04em;text-transform:uppercase;padding:.3rem .55rem;border-radius:9999px;white-space:nowrap;flex-shrink:0;border:1px solid transparent}.cv-item-badge-invited{color:#ffd79a;background:#ffba4d24;border-color:#ffba4d52}.cv-item-badge-contributed{color:#9fd9ff;background:#63c2ff24;border-color:#63c2ff52}.cv-item-badge-poster{color:#c8b8ff;background:#aa82ff24;border-color:#aa82ff52}:root[data-theme=day] .cv-item-badge-invited{color:#784800}:root[data-theme=day] .cv-item-badge-contributed{color:#075a7f}:root[data-theme=day] .cv-item-badge-poster{color:#5a3a91}.cv-item-subtitle{font-size:.85rem;color:var(--text-secondary);margin-bottom:.25rem;font-style:italic}.cv-subsection{margin-bottom:1rem}.cv-subsection:last-child{margin-bottom:0}.cv-subsection-title{font-size:.8rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;margin:.5rem 0 .6rem;padding-bottom:.35rem;border-bottom:1px solid var(--white-20)}.cv-item-description{font-size:.85rem;color:var(--text-muted);line-height:1.5;margin-top:.5rem}.cv-item-link{display:inline-block;margin-top:.5rem;color:var(--accent);font-size:.85rem;text-decoration:underline}.cv-item-subtitle-link{display:inline;margin-top:0}.cv-item-link:hover{color:var(--text-emphasis)}.cv-item-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(max-width:767px){.cv-section{padding:6rem 1.5rem 3rem}.cv-grid{grid-template-columns:1fr;gap:0}.cv-container{padding:1rem}.cv-category-summary{padding:.875rem 1.25rem .875rem 2.5rem;font-size:.85rem}.cv-category-content{padding:0 .75rem .75rem}}@media(prefers-reduced-motion:reduce){body,canvas,.utility-control,.nav-dropdown-trigger svg{transition:none!important}.cv-category-summary{transition:none}}.publication-section{position:relative;z-index:20;min-height:100vh;padding:4rem 2rem;scroll-margin-top:80px}.publication-container{max-width:900px;margin:0 auto;padding:clamp(1.25rem,3vw,2rem);background:var(--panel-bg);border:1px solid var(--white-15);border-radius:8px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);box-shadow:var(--panel-shadow-soft)}.publication-header{text-align:center;margin-bottom:1.5rem}.publication-title{font-size:clamp(2rem,5vw,3rem);font-weight:700;letter-spacing:-.02em;margin-bottom:.5rem;color:var(--text-emphasis);text-shadow:none}.publication-subtitle{font-size:.875rem;color:var(--text-muted);font-family:Space Mono,monospace}.publication-list{display:flex;flex-direction:column;gap:0}.publication-subsection{margin-bottom:1.5rem}.publication-subsection:last-child{margin-bottom:0}.publication-subsection-title{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin-bottom:0;padding-bottom:.75rem;border-bottom:1px solid var(--white-15)}.publication-card{position:relative;padding:1rem 0;border-bottom:1px solid var(--white-10)}.publication-card:last-child{border-bottom:0}.publication-card-title{font-size:1.1rem;font-weight:600;line-height:1.2;margin-bottom:.5rem;color:var(--text-emphasis);text-shadow:none}.publication-link{color:var(--text-emphasis);text-decoration:none;transition:color .2s ease}.publication-link:hover{color:var(--accent)}.publication-authors{font-size:.9rem;line-height:1.2;margin-bottom:.5rem;color:var(--text-secondary)}.author-name{color:var(--text-secondary)}.author-highlight{color:var(--text-emphasis);font-weight:600}.author-toggle-link{color:var(--text-secondary);cursor:pointer;text-decoration:underline;text-decoration-style:dotted;margin-left:.25rem}.author-toggle-link:hover{color:var(--text-emphasis)}.publication-citation{font-size:.85rem;color:var(--text-muted);font-style:italic;margin-bottom:.5rem}.publication-links{display:flex;gap:.75rem;flex-wrap:wrap;margin-bottom:.5rem}.pub-link-btn{background:transparent;border:1px solid var(--white-40);color:var(--text-primary);padding:.4rem .9rem;cursor:pointer;font-family:Space Mono,monospace;font-size:.75rem;letter-spacing:.5px;text-decoration:none;display:inline-block;transition:all .2s ease;border-radius:4px}.pub-link-btn:hover{background:var(--white-10);border-color:var(--white-60)}.pub-link-btn.ads-btn{border-color:var(--accent);color:var(--accent)}.pub-link-btn.ads-btn:hover,.pub-link-btn.arxiv-btn:hover,.pub-link-btn.doi-btn:hover{background:var(--accent);color:var(--inverse-text)}.pub-link-btn.arxiv-btn,.pub-link-btn.doi-btn{border-color:var(--accent);color:var(--accent)}.pub-link-btn.abstract-btn{border-color:var(--white-30);color:var(--text-muted)}.pub-link-btn.abstract-btn:hover{background:var(--white-10);color:var(--text-primary)}.pub-citation-count{background:transparent;border:1px solid var(--white-20);color:var(--text-muted);padding:.4rem .9rem;font-family:Space Mono,monospace;font-size:.75rem;letter-spacing:.5px;display:inline-block;border-radius:4px;cursor:default}.publication-abstract{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--white-10)}.publication-abstract p{font-size:.9rem;line-height:1.7;color:var(--text-secondary);margin:0}@media(max-width:767px){.publication-section{padding:6rem 1.5rem 3rem}.publication-container{padding:1rem}.publication-card{padding:1rem 0}.publication-card-title{font-size:1.1rem}.publication-links{gap:.5rem}}.code-showcase-section{position:relative;z-index:20;min-height:50vh;padding:4rem 2rem;scroll-margin-top:80px}.code-showcase-container{max-width:900px;margin:0 auto}.code-showcase-header{text-align:center;margin-bottom:3rem}.code-showcase-title{font-size:clamp(2rem,5vw,3rem);font-weight:700;letter-spacing:-.02em;margin-bottom:.5rem;color:var(--text-emphasis);text-shadow:none}.code-showcase-subtitle{font-size:.875rem;color:var(--text-muted);font-family:Space Mono,monospace}.code-showcase-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}.code-showcase-card{position:relative;background:var(--panel-bg);border:1px solid var(--white-15);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border-radius:10px;overflow:hidden;transition:all .3s ease}.code-showcase-card.clickable{cursor:pointer}.code-showcase-card:hover{border-color:var(--white-30);box-shadow:var(--panel-shadow);transform:translateY(-4px)}.code-showcase-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.code-showcase-image-container{position:relative;width:100%;padding-top:56.25%;overflow:hidden;background:var(--image-bg)}.code-showcase-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;transition:transform .4s ease,filter .4s ease}.code-showcase-card:hover .code-showcase-image{transform:scale(1.05);filter:brightness(1.1)}.code-showcase-content{padding:1.25rem}.code-showcase-card-title{font-size:1.1rem;font-weight:600;color:var(--text-emphasis);margin-bottom:.5rem;line-height:1.3;text-shadow:none}.code-showcase-card-desc{font-size:.9rem;color:var(--text-secondary);line-height:1.5;margin:0}@media(max-width:767px){.code-showcase-section{padding:3rem 1.5rem}.code-showcase-grid{grid-template-columns:1fr;gap:1.25rem}.code-showcase-content{padding:1rem}.code-showcase-card-title{font-size:1rem}}@media(prefers-reduced-motion:reduce){.code-showcase-card,.code-showcase-image{transition:none}.code-showcase-card:hover,.code-showcase-card:hover .code-showcase-image{transform:none}}
