:root{--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-base: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--spacing-3xl: 64px;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-md: 1.125rem;--font-size-lg: 1.25rem;--font-size-xl: 1.5rem;--font-size-2xl: 2rem;--font-size-3xl: 2.5rem;--line-height-tight: 1.2;--line-height-normal: 1.5;--line-height-relaxed: 1.6;--line-height-loose: 1.8;--letter-spacing-tight: -.02em;--letter-spacing-normal: 0;--letter-spacing-wide: .05em;--letter-spacing-wider: .1em;--letter-spacing-widest: .15em;--color-bg-primary: #0a0a0a;--color-bg-secondary: rgba(0, 0, 0, .2);--color-text-primary: #ffffff;--color-text-secondary: rgba(255, 255, 255, .7);--color-text-tertiary: rgba(255, 255, 255, .5);--color-border-default: #222;--color-border-hover: #ffffff;--color-link: #30acff;--color-link-hover: #60c0ff;--color-mint: #CCFFCC;--color-mint-dark: #99FF99;--gradient-primary: radial-gradient(#ffffff, #90d5ff);--gradient-secondary: linear-gradient(to right, #ff3a30, #306eff);--gradient-accent: conic-gradient(from 0deg, #ff0000 0deg, #ffff00 90deg, #00ff00 180deg, rgb(86, 71, 255) 270deg, #ff0000 360deg);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .1);--shadow-md: 0 8px 16px rgba(0, 0, 0, .2);--shadow-lg: 0 16px 32px rgba(0, 0, 0, .3);--shadow-glow: 0 0 20px rgba(255, 255, 255, .1);--transition-fast: .15s ease;--transition-base: .3s ease;--transition-slow: .4s ease-out;--transition-slower: .6s ease-out;--radius-none: 0px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--z-background: -2;--z-bg-animation: -1;--z-base: 0;--z-content: 1;--z-overlay: 10;--z-modal: 100;--z-tooltip: 200;--glass-bg: rgba(0, 0, 0, .2);--glass-blur: blur(10px);--glass-border: rgba(255, 255, 255, .1);--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px}@media(prefers-reduced-motion:reduce){:root{--transition-fast: 0s;--transition-base: 0s;--transition-slow: 0s;--transition-slower: 0s}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{opacity:.5}50%{opacity:.8}}@keyframes ripple{0%{transform:scale(0);opacity:1}to{transform:scale(4);opacity:0}}@keyframes glow{0%,to{box-shadow:0 0 5px #ffffff1a}50%{box-shadow:0 0 20px #ffffff4d}}@keyframes scaleIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(.95);opacity:0}}@keyframes skeleton{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.animate-fade-in{animation:fadeIn var(--transition-slow) ease-out}.animate-fade-in-up{animation:fadeInUp var(--transition-slow) ease-out}.animate-fade-in-down{animation:fadeInDown var(--transition-slow) ease-out}.animate-fade-in-left{animation:fadeInLeft var(--transition-slow) ease-out}.animate-fade-in-right{animation:fadeInRight var(--transition-slow) ease-out}.animate-scale-in{animation:scaleIn var(--transition-base) ease-out}.animate-delay-1{animation-delay:.1s}.animate-delay-2{animation-delay:.2s}.animate-delay-3{animation-delay:.3s}.animate-delay-4{animation-delay:.4s}.animate-delay-5{animation-delay:.5s}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.nav-bar{position:fixed;top:0;left:0;right:0;z-index:var(--z-overlay);padding:var(--spacing-base) var(--spacing-xl);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-bottom:1px solid var(--glass-border);display:flex;justify-content:space-between;align-items:center;transition:all var(--transition-base)}.nav-bar.hidden{transform:translateY(-100%);opacity:0}.nav-toggle{display:none;flex-direction:column;gap:4px;background:transparent;border:none;cursor:pointer;padding:var(--spacing-xs);z-index:calc(var(--z-overlay) + 1)}.nav-toggle span{width:24px;height:2px;background:var(--color-text-primary);transition:all var(--transition-base);transform-origin:center}.nav-toggle[aria-expanded=true] span:nth-child(1){transform:rotate(45deg) translate(6px,6px)}.nav-toggle[aria-expanded=true] span:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] span:nth-child(3){transform:rotate(-45deg) translate(6px,-6px)}.nav-links{display:flex;gap:var(--spacing-xl);list-style:none}.nav-link{color:var(--color-text-primary);text-decoration:none;font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-wide);transition:color var(--transition-fast);position:relative;padding:var(--spacing-xs) 0}.nav-link:after{content:"";position:absolute;bottom:0;left:0;width:0;height:1px;background:#fff;transition:width var(--transition-base)}.nav-link:hover:after,.nav-link.active:after{width:100%}.nav-link:hover{color:var(--color-link)}@media(max-width:768px){.nav-toggle{display:flex}.nav-links{position:fixed;top:60px;left:0;right:0;flex-direction:column;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-bottom:1px solid var(--glass-border);padding:var(--spacing-base);transform:translateY(-100%);opacity:0;pointer-events:none;transition:transform var(--transition-base),opacity var(--transition-base);z-index:var(--z-overlay)}.nav-links.active{transform:translateY(0);opacity:1;pointer-events:auto}.nav-links li{width:100%}.nav-link{display:block;padding:var(--spacing-base);width:100%}}.skip-link{position:absolute;top:-40px;left:0;background:var(--color-bg-primary);color:var(--color-text-primary);padding:var(--spacing-sm) var(--spacing-base);text-decoration:none;z-index:var(--z-tooltip);border:1px solid var(--color-border-default)}.skip-link:focus{top:0}.progress-indicator{position:fixed;top:0;left:0;width:0%;height:2px;background:#fff;z-index:var(--z-tooltip);transition:width .1s ease-out}.fab{position:fixed;bottom:var(--spacing-xl);right:var(--spacing-xl);width:56px;height:56px;border-radius:50%;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);color:var(--color-text-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:var(--z-overlay);transition:all var(--transition-base);box-shadow:var(--shadow-md)}.fab:hover{transform:scale(1.1);box-shadow:var(--shadow-lg);border-color:var(--color-border-hover)}.fab:active{transform:scale(.95)}.command-palette{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90%;max-width:600px;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:2px solid var(--glass-border);padding:var(--spacing-lg);z-index:var(--z-modal);opacity:0;pointer-events:none;transition:opacity var(--transition-base)}.command-palette.active{opacity:1;pointer-events:auto}.command-palette-input{width:100%;padding:var(--spacing-base);background:#ffffff0d;border:1px solid var(--color-border-default);color:var(--color-text-primary);font-size:var(--font-size-base);margin-bottom:var(--spacing-base)}.command-palette-results{max-height:400px;overflow-y:auto}.command-palette-item{padding:var(--spacing-base);cursor:pointer;transition:background var(--transition-fast)}.command-palette-item:hover,.command-palette-item.selected{background:#ffffff1a}.project-filters{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;padding:0}.filter-button{padding:var(--spacing-xs) var(--spacing-base);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--color-border-default);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast),opacity .3s ease-in-out,transform var(--transition-fast) ease-out;font-size:var(--font-size-sm)}.filter-button:hover,.filter-button.active{border-color:var(--color-border-hover);color:var(--color-text-primary);background:#ffffff1a}.skeleton{background:linear-gradient(90deg,#ffffff0d,#ffffff1a,#ffffff0d);background-size:200% 100%;animation:skeleton 1.5s ease-in-out infinite}.ripple{position:relative;overflow:hidden}.ripple:after{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#ffffff4d;transform:translate(-50%,-50%);transition:width .6s,height .6s}.ripple:active:after{width:300px;height:300px}.tooltip{position:relative}.tooltip:before{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(-8px);padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-primary);border:1px solid var(--color-border-default);color:var(--color-text-primary);font-size:var(--font-size-xs);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--transition-fast),transform var(--transition-fast);z-index:var(--z-tooltip)}.tooltip:hover:before{opacity:1;transform:translate(-50%) translateY(0)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}html,body{overflow:hidden;background:var(--color-bg-primary);color:var(--color-text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:var(--font-size-base);line-height:var(--line-height-relaxed);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:var(--color-link);color:var(--color-text-primary)}::-moz-selection{background:var(--color-link);color:var(--color-text-primary)}.webgl{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:var(--z-base);pointer-events:none;object-fit:cover;transform-origin:0 0}.container{min-height:100vh;position:relative;padding:0;border-radius:var(--radius-none)}.header-text{position:absolute;top:10%;left:2px;color:var(--color-text-primary);margin:var(--spacing-base);font-family:inherit;max-width:450px;min-height:12%}.main-box{position:absolute;z-index:var(--z-content);top:calc(60px + var(--spacing-base));left:var(--spacing-lg);width:auto;max-width:935px;height:auto;min-height:12%;padding:var(--spacing-base);padding-bottom:var(--spacing-sm);margin:0;border:2px solid var(--color-border-default);box-sizing:border-box;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-radius:var(--radius-none);color:var(--color-text-primary);font-family:inherit;word-wrap:normal;overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.5) rgba(0,0,0,.1);transition:border-color var(--transition-base),box-shadow var(--transition-fast),opacity .3s ease-in-out,transform var(--transition-slower) ease-out,width var(--transition-slower) ease-out,max-width var(--transition-slower) ease-out;cursor:pointer;box-shadow:var(--shadow-sm);opacity:0;transform:translateY(0);animation:fadeInUp var(--transition-slow) ease-out forwards;animation-delay:.2s}.main-box:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-md);transform:translateY(-2px)}.main-box:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.minimize-btn{position:absolute;top:var(--spacing-sm);right:var(--spacing-sm);left:auto;width:24px;height:24px;padding:0;margin:0;background:transparent;border:none;color:var(--color-text-primary);opacity:.6;cursor:pointer;transition:opacity var(--transition-base),transform var(--transition-base),background-color var(--transition-base);border-radius:var(--radius-sm);z-index:20;pointer-events:auto;display:flex;align-items:center;justify-content:center}.minimize-btn:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffff0d;border-radius:var(--radius-sm);opacity:0;transition:opacity var(--transition-base)}.minimize-btn:hover{opacity:1;transform:scale(1.1)}.minimize-btn:hover:before{opacity:1}.minimize-btn:active{transform:scale(.95)}.minimize-btn svg{width:12px;height:12px;stroke:currentColor}body.project-focused .minimize-btn,body.blog-focused .minimize-btn,body.publication-focused .minimize-btn{display:none!important}.main-box.minimized{height:auto;min-height:auto;max-height:none;overflow:hidden;padding:var(--spacing-sm);padding-bottom:var(--spacing-sm);width:calc(24px + var(--spacing-sm) * 2)!important;min-width:calc(24px + var(--spacing-sm) * 2)!important;max-width:calc(24px + var(--spacing-sm) * 2)!important;min-height:calc(24px + var(--spacing-sm) * 2);aspect-ratio:1}.main-box.minimized>*:not(.minimize-btn){display:none!important}.main-box.minimized .minimize-btn{display:flex}.main-box.minimized .minimize-btn svg{display:none}.name-container{display:flex;align-items:center;gap:var(--spacing-base);padding-top:var(--spacing-base);padding-left:var(--spacing-sm);flex-wrap:wrap}.name{width:auto;font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:var(--font-size-2xl);letter-spacing:var(--letter-spacing-widest);font-weight:300;margin:0;line-height:var(--line-height-tight);text-shadow:0 2px 4px rgba(0,0,0,.3)}.contact-icons{display:flex;align-items:center;gap:var(--spacing-md);margin-left:auto}.contact-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--color-text-primary);opacity:.6;transition:opacity var(--transition-base),transform var(--transition-fast),color var(--transition-fast);cursor:pointer;border-radius:var(--radius-sm);position:relative}.contact-icon:before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:var(--radius-sm);background:var(--color-link);opacity:0;transition:opacity var(--transition-fast);z-index:-1}.contact-icon:hover{opacity:1;transform:translateY(-2px) scale(1.1);color:var(--color-link)}.contact-icon:hover:before{opacity:.1}.contact-icon:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.contact-icon svg{width:20px;height:20px;transition:transform var(--transition-fast)}.contact-icon:hover svg{transform:scale(1.1)}.email-icon{position:relative}.email-icon:after{content:"mcalixto.contact@gmail.com";position:absolute;bottom:calc(100% + 20px);left:50%;transform:translate(-50%);background:var(--color-bg-secondary, rgba(20, 20, 20, .95));color:var(--color-text-primary);padding:6px 12px;border-radius:var(--radius-sm, 4px);font-size:12px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--transition-fast, .2s),transform var(--transition-fast, .2s);z-index:10000;border:1px solid var(--color-border-default, rgba(255, 255, 255, .1));box-shadow:0 4px 12px #0000004d;transform:translate(-50%) translateY(-4px)}.email-icon:hover:after{opacity:1;transform:translate(-50%) translateY(0)}.email-icon:before{content:"";position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid var(--color-bg-secondary, rgba(20, 20, 20, .95));opacity:0;pointer-events:none;transition:opacity var(--transition-fast, .2s);z-index:10001}.email-icon:hover:before{opacity:1}.subtitle{letter-spacing:var(--letter-spacing-wide);flex:1;position:relative;padding-top:0;padding-left:var(--spacing-base);padding-bottom:var(--spacing-base);font-size:var(--font-size-sm);font-weight:300;text-overflow:ellipsis;white-space:wrap;margin-top:-15px;margin-bottom:var(--spacing-md);border-bottom:1px solid transparent;border-image:radial-gradient(#b0b0b0,#d0d0d0);border-image-slice:1}.focused-subtitle{display:none;text-align:center;font-size:var(--font-size-lg);font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;letter-spacing:var(--letter-spacing-wide);font-weight:300;margin-top:var(--spacing-sm);margin-bottom:0;padding:0;padding-top:var(--spacing-sm);border-top:1px solid transparent;border-bottom:none;border-image:radial-gradient(#b0b0b0,#d0d0d0);border-image-slice:1;line-height:var(--line-height-normal)}body.project-focused .main-box .focused-subtitle,body.blog-focused .main-box .focused-subtitle,body.publication-focused .main-box .focused-subtitle{display:block!important;order:2}.main-content-wrapper{display:flex;gap:var(--spacing-lg);align-items:flex-start;margin:var(--spacing-md) var(--spacing-sm)}.intro-image-container{flex-shrink:0;display:flex;justify-content:center;align-items:flex-start;overflow:hidden;height:400px;width:320px;margin-top:0}.intro-image{width:320px;height:400px;max-width:320px;max-height:400px;min-width:320px;min-height:400px;border-radius:var(--radius-sm);box-shadow:0 4px 12px #0003;object-fit:cover;object-position:center;transition:transform var(--transition-base),box-shadow var(--transition-base)}.intro-image:hover{transform:scale(1.02);box-shadow:0 6px 16px #0000004d;opacity:.9}.intro-content{flex:1;min-width:0}@media(max-width:768px){.main-content-wrapper{flex-direction:column;gap:var(--spacing-base)}.intro-image-container{width:100%;max-width:250px;justify-content:center;height:310px}.intro-image{width:250px;height:310px;max-width:250px;max-height:310px;min-width:250px;min-height:310px}}.intro-title{letter-spacing:var(--letter-spacing-wide);padding-left:0;font-size:var(--font-size-lg);font-weight:300;margin-bottom:var(--spacing-sm);line-height:var(--line-height-normal)}.intro-text{padding-left:0;flex:1;position:relative;font-size:var(--font-size-base);font-weight:300;text-overflow:ellipsis;white-space:wrap;line-height:var(--line-height-relaxed);margin-bottom:var(--spacing-xs);letter-spacing:var(--letter-spacing-normal);color:var(--color-text-secondary)}.intro-text a{color:var(--color-link);text-decoration:underline;transition:color var(--transition-fast)}.intro-text a:hover{color:var(--color-link-hover)}.toggle-hint{flex-shrink:0;padding-right:var(--spacing-base);padding-top:var(--spacing-sm);position:relative;font-size:var(--font-size-sm);opacity:.5;text-align:right;font-style:italic;transition:opacity var(--transition-base);margin-top:0;margin-bottom:0}.main-box:hover .toggle-hint{opacity:.7}.project-display,#blogDisplay,#publicationDisplay{z-index:var(--z-content);display:block;position:absolute;top:calc(60px + var(--spacing-base) + 200px);left:var(--spacing-lg);right:var(--spacing-lg);width:auto;max-width:min(600px,calc(100vw - var(--spacing-lg) * 2));height:auto;min-height:20vh;max-height:calc(100vh - 150px);padding:var(--spacing-base);padding-bottom:var(--spacing-lg);margin:0;margin-bottom:20px!important;border:2px solid var(--color-border-default);box-sizing:border-box;border-radius:var(--radius-none);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--color-text-primary);font-family:inherit;word-wrap:normal;overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.5) rgba(0,0,0,.1);opacity:0;visibility:hidden;transition:opacity .3s ease-in-out,visibility 0s linear .3s,border-color var(--transition-fast),box-shadow var(--transition-fast);pointer-events:none;box-shadow:var(--shadow-sm)}.project-display:hover,.project-display.active:hover,#blogDisplay:hover,#blogDisplay.active:hover,#publicationDisplay:hover,#publicationDisplay.active:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-md)}.project-display.active,#blogDisplay.active,#publicationDisplay.active{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .4s ease-in-out,visibility 0s linear 0s,border-color var(--transition-fast),box-shadow var(--transition-fast);border-color:var(--color-border-hover)}.project-display.fade-out-down,#blogDisplay.fade-out-down,#publicationDisplay.fade-out-down{opacity:0!important;transition:opacity .4s ease-in-out,visibility 0s linear .4s!important;pointer-events:none}.project-display.fade-in-up,#blogDisplay.fade-in-up,#publicationDisplay.fade-in-up{opacity:0;transition:opacity .4s ease-in-out,visibility 0s linear 0s;pointer-events:none}.project-display.fade-in-up.active,#blogDisplay.fade-in-up.active,#publicationDisplay.fade-in-up.active{opacity:1!important;pointer-events:auto}body.project-focused .project-display.active,body.blog-focused #blogDisplay.active,body.publication-focused #publicationDisplay.active{width:calc(65% - var(--spacing-lg) * 2);max-width:min(calc(70% - var(--spacing-lg) * 2),calc(100vw - var(--spacing-lg) * 2))}body.project-focused .main-box,body.blog-focused .main-box,body.publication-focused .main-box{width:auto;max-width:330px;transform:scale(.7);opacity:.7;transition:width var(--transition-slower) ease-out,max-width var(--transition-slower) ease-out,transform var(--transition-slower) ease-out,opacity .3s ease-in-out}body.project-focused .main-box .intro-text,body.project-focused .main-box .toggle-hint,body.project-focused .main-box .main-content-wrapper,body.blog-focused .main-box .intro-text,body.blog-focused .main-box .toggle-hint,body.blog-focused .main-box .main-content-wrapper,body.publication-focused .main-box .intro-text,body.publication-focused .main-box .toggle-hint,body.publication-focused .main-box .main-content-wrapper{display:none}body.project-focused .main-box .subtitle,body.blog-focused .main-box .subtitle,body.publication-focused .main-box .subtitle{display:none!important}body.project-focused .main-box,body.blog-focused .main-box,body.publication-focused .main-box{text-align:center;display:flex;flex-direction:column}body.project-focused .main-box .name-container,body.blog-focused .main-box .name-container,body.publication-focused .main-box .name-container{display:flex;flex-direction:row;align-items:center;gap:var(--spacing-md);padding-left:0;justify-content:center;flex-wrap:wrap;order:1}body.project-focused .main-box .name,body.blog-focused .main-box .name,body.publication-focused .main-box .name{font-size:var(--font-size-lg);text-align:center;margin:0}body.project-focused .main-box .contact-icons,body.blog-focused .main-box .contact-icons,body.publication-focused .main-box .contact-icons{margin-left:0;justify-content:center;width:auto}.permalink-btn{position:absolute;top:calc(var(--spacing-base) + var(--spacing-sm));right:var(--spacing-base);display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;margin:0;background:transparent;border:none;color:var(--color-text-primary);opacity:.6;cursor:pointer;transition:opacity var(--transition-base),transform var(--transition-fast),color var(--transition-fast);border-radius:var(--radius-sm);z-index:10;pointer-events:auto}.permalink-btn:before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:var(--radius-sm);background:var(--color-link);opacity:0;transition:opacity var(--transition-fast);z-index:-1}.permalink-btn:hover,.permalink-btn:focus-visible{opacity:1;transform:translateY(-2px) scale(1.1);color:var(--color-link);outline:none}.permalink-btn:hover:before{opacity:.1}.permalink-btn:active{transform:translateY(-2px) scale(.95)}.permalink-btn svg{width:20px;height:20px;pointer-events:none;transition:transform var(--transition-fast)}.permalink-btn:hover svg{transform:scale(1.1)}.project-display-title{font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:var(--font-size-xl);letter-spacing:var(--letter-spacing-widest);padding:var(--spacing-sm);width:auto;border-bottom:1px solid transparent;border-image:radial-gradient(#b0b0b0,#d0d0d0);border-image-slice:1;font-weight:300;margin-bottom:var(--spacing-base);line-height:var(--line-height-tight)}.project-display.active .project-display-title{border-image:radial-gradient(#b0b0b0,#d0d0d0);border-image-slice:1}.project-display-description{font-family:inherit;flex:1;position:relative;padding:var(--spacing-sm);font-size:var(--font-size-md);font-weight:300;text-overflow:ellipsis;white-space:wrap;line-height:var(--line-height-relaxed);margin-bottom:var(--spacing-base);color:var(--color-text-secondary)}.project-display-description>*:first-child{margin-top:0!important}.project-display-description a{color:var(--color-link);text-decoration:underline;transition:color var(--transition-fast)}.project-display-description a:hover{color:var(--color-link-hover)}.project-display-description h1,.project-display-description h2,.project-display-description h3{font-family:inherit;font-weight:300;line-height:var(--line-height-relaxed);margin-bottom:var(--spacing-base);color:var(--color-text-secondary)}.project-display-description h1{font-size:var(--font-size-xl);margin-top:var(--spacing-base)}.project-display-description h2{font-size:var(--font-size-lg);margin-top:var(--spacing-base)}.project-display-description h3{font-size:var(--font-size-md);margin-top:var(--spacing-sm)}.project-display-description p{font-size:var(--font-size-md);font-weight:300;line-height:var(--line-height-relaxed);margin-bottom:var(--spacing-base);color:var(--color-text-secondary)}.project-display-description ul,.project-display-description ol{font-size:var(--font-size-md);font-weight:300;line-height:var(--line-height-relaxed);margin-bottom:var(--spacing-base);margin-left:var(--spacing-base);color:var(--color-text-secondary);padding-left:var(--spacing-base)}.project-display-description li{font-size:var(--font-size-md);font-weight:300;line-height:var(--line-height-relaxed);margin-bottom:var(--spacing-sm);color:var(--color-text-secondary)}.project-display-description hr{border:none;border-top:1px solid var(--color-text-tertiary);margin:var(--spacing-base) 0;width:100%}.project-display-description strong{font-weight:500;color:var(--color-text-primary)}.project-display-description em{font-style:italic}.project-display-description code{font-family:Courier New,monospace;font-size:.9em;background:#ffffff1a;padding:2px 4px;border-radius:3px}.project-display-description pre{font-family:Courier New,monospace;font-size:.9em;background:#ffffff0d;padding:var(--spacing-sm);border-radius:4px;overflow-x:auto;margin-bottom:var(--spacing-base)}.project-display-description pre code{background:none;padding:0}.project-display-tags{flex-shrink:0;position:relative;padding:var(--spacing-sm);font-size:var(--font-size-sm);opacity:.7;font-style:italic;margin-bottom:var(--spacing-sm);color:var(--color-text-tertiary)}.project-display-date{flex-shrink:0;position:relative;padding:var(--spacing-sm);bottom:var(--spacing-sm);font-size:var(--font-size-sm);opacity:.5;text-align:right;color:var(--color-text-tertiary)}.projects-catalog-container{position:fixed;top:80px;right:var(--spacing-lg);max-width:500px;min-width:300px;z-index:var(--z-overlay);display:flex;flex-direction:column;opacity:0;visibility:hidden;transform:translate(100%) translateY(20px);pointer-events:none;transition:opacity .4s ease-in-out,transform .4s ease-out,visibility 0s linear .4s,width var(--transition-slower) ease-out,max-width var(--transition-slower) ease-out,right var(--transition-slower) ease-out}.projects-catalog-container.show{opacity:1;visibility:visible;transform:translate(0) translateY(0);pointer-events:auto;transition:opacity .4s ease-in-out,transform .4s ease-out,visibility 0s linear 0s}.project-controls{display:flex;flex-direction:column;gap:var(--spacing-base);padding:var(--spacing-base);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:2px solid var(--color-border-default);margin-bottom:var(--spacing-base);box-shadow:var(--shadow-md);opacity:0;visibility:hidden;transform:translateY(20px);transition:opacity .4s ease-in-out,transform .4s ease-out,visibility 0s linear .4s;pointer-events:none}.project-controls.show{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto;transition:opacity .4s ease-in-out,transform .4s ease-out,visibility 0s linear 0s}.project-search{width:100%;padding:var(--spacing-sm) var(--spacing-base);background:#ffffff0d;border:1px solid var(--color-border-default);color:var(--color-text-primary);font-size:var(--font-size-sm);transition:border-color var(--transition-fast);order:2}.project-search:focus{outline:none;border-color:var(--color-border-hover)}.project-search::placeholder{color:var(--color-text-tertiary)}.project-filters{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;order:1}.project-slider{flex:1;max-height:calc(100vh - 200px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.5) rgba(0,0,0,.1);display:flex;flex-direction:column;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:2px solid var(--color-border-default);padding:var(--spacing-base);box-shadow:var(--shadow-md);opacity:0;visibility:hidden;transform:translateY(20px);transition:opacity .4s ease-in-out,transform .4s ease-out,visibility 0s linear .4s}.project-slider.show{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .4s ease-in-out,transform .4s ease-out,visibility 0s linear 0s}.project-slider::-webkit-scrollbar{width:4px}.project-slider::-webkit-scrollbar-track{background:#ffffff1a}.project-slider::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:var(--radius-none)}.project-slider::-webkit-scrollbar-thumb:hover{background:#ffffff80}.project-item{display:block;position:relative;width:100%;height:auto;padding:var(--spacing-base);padding-bottom:var(--spacing-base);margin-bottom:var(--spacing-base);border:2px solid var(--color-border-default);border-radius:var(--radius-none);background:#0000004d;color:var(--color-text-primary);font-family:inherit;word-wrap:normal;cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),transform .3s ease-out,opacity .3s ease-in-out,visibility 0s linear .3s;box-shadow:var(--shadow-sm);opacity:0;visibility:hidden;transform:translateY(20px)}.projects-catalog-container.show .project-item{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .4s ease-in-out,transform .4s ease-out,visibility 0s linear 0s,border-color var(--transition-fast),box-shadow var(--transition-fast)}.projects-catalog-container:not(.show) .project-item{transition:opacity .3s ease-in-out,transform .3s ease-out,visibility 0s linear .3s,border-color var(--transition-fast),box-shadow var(--transition-fast)}.projects-catalog-container.show .project-item:nth-child(1){transition:opacity .4s ease-in-out .1s,transform .4s ease-out .1s,visibility 0s linear 0s,border-color var(--transition-fast),box-shadow var(--transition-fast)}.projects-catalog-container.show .project-item:nth-child(2){transition:opacity .4s ease-in-out .15s,transform .4s ease-out .15s,visibility 0s linear 0s,border-color var(--transition-fast),box-shadow var(--transition-fast)}.projects-catalog-container.show .project-item:nth-child(3){transition:opacity .4s ease-in-out .2s,transform .4s ease-out .2s,visibility 0s linear 0s,border-color var(--transition-fast),box-shadow var(--transition-fast)}.projects-catalog-container.show .project-item:nth-child(4){transition:opacity .4s ease-in-out .25s,transform .4s ease-out .25s,visibility 0s linear 0s,border-color var(--transition-fast),box-shadow var(--transition-fast)}.projects-catalog-container.show .project-item:nth-child(5){transition:opacity .4s ease-in-out .3s,transform .4s ease-out .3s,visibility 0s linear 0s,border-color var(--transition-fast),box-shadow var(--transition-fast)}.projects-catalog-container.show .project-item:nth-child(6){transition:opacity .4s ease-in-out .35s,transform .4s ease-out .35s,visibility 0s linear 0s,border-color var(--transition-fast),box-shadow var(--transition-fast)}.projects-catalog-container.show .project-item:nth-child(7){transition:opacity .4s ease-in-out .4s,transform .4s ease-out .4s,visibility 0s linear 0s,border-color var(--transition-fast),box-shadow var(--transition-fast)}.projects-catalog-container.show .project-item:nth-child(8){transition:opacity .4s ease-in-out .45s,transform .4s ease-out .45s,visibility 0s linear 0s,border-color var(--transition-fast),box-shadow var(--transition-fast)}.projects-catalog-container.show .project-item:nth-child(n+9){transition:opacity .4s ease-in-out .5s,transform .4s ease-out .5s,visibility 0s linear 0s,border-color var(--transition-fast),box-shadow var(--transition-fast)}.project-item:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-md);transform:translate(-5px) scale(1.02)}.project-item:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.project-item.active{border-color:var(--color-border-hover);box-shadow:var(--shadow-glow);opacity:1;transform:translateY(0)}.projects-catalog-container.show .project-item:not(.active){opacity:.7}.project-item.hidden{display:none}.project-item.visible{display:block;opacity:0;visibility:hidden;transform:translateY(20px);transition:opacity .3s ease-in-out,transform .3s ease-out,visibility 0s linear .3s}.project-item.visible.show{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .3s ease-in-out,transform .3s ease-out,visibility 0s linear 0s}.project-item-title{font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;letter-spacing:var(--letter-spacing-wide);font-size:var(--font-size-md);padding-bottom:var(--spacing-sm);width:auto;border-bottom:1px solid transparent;font-weight:300;margin-bottom:var(--spacing-sm);line-height:var(--line-height-tight)}.project-item-preview{flex:1;position:relative;padding:var(--spacing-sm);font-size:var(--font-size-sm);font-weight:300;text-overflow:ellipsis;white-space:wrap;line-height:var(--line-height-relaxed);margin-bottom:var(--spacing-sm);color:var(--color-text-secondary)}.project-item-tags{flex-shrink:0;position:relative;padding:var(--spacing-sm);bottom:0;font-size:var(--font-size-sm);opacity:.5;font-style:italic;color:var(--color-text-tertiary)}.catalog-section{margin-bottom:var(--spacing-lg)}.catalog-section:last-child{margin-bottom:0}.catalog-section-title{font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:var(--font-size-lg);letter-spacing:var(--letter-spacing-wide);font-weight:300;padding:var(--spacing-sm) var(--spacing-base);margin-bottom:var(--spacing-base);border-bottom:1px solid var(--color-border-default);color:var(--color-text-primary);opacity:.9}.project-items-container{display:flex;flex-direction:column;gap:var(--spacing-base);padding-bottom:20px!important}.bg-animation{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--z-bg-animation);background:radial-gradient(circle at 20% 80%,rgba(120,50,200,.1) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(255,100,50,.1) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(50,150,255,.05) 0%,transparent 50%);animation:pulse 8s ease-in-out infinite}.grid-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--z-background);background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);background-size:50px 50px}b,strong{font-weight:600;letter-spacing:.01em}a{text-decoration:none;color:inherit;transition:color var(--transition-fast)}a:focus-visible{outline:2px solid var(--color-link);outline-offset:2px;border-radius:var(--radius-sm)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@media(max-width:1800px){body.project-focused .main-box,body.blog-focused .main-box,body.publication-focused .main-box{left:50%!important;right:auto!important;transform:translate(-50%)!important;margin-left:0!important;margin-right:0!important;width:auto;max-width:1000px;opacity:1!important;margin-bottom:15px!important}body.project-focused .main-box.minimized,body.blog-focused .main-box.minimized,body.publication-focused .main-box.minimized{width:calc(24px + var(--spacing-sm) * 2)!important;min-width:calc(24px + var(--spacing-sm) * 2)!important;max-width:calc(24px + var(--spacing-sm) * 2)!important;min-height:calc(24px + var(--spacing-sm) * 2)!important;aspect-ratio:1!important;padding:var(--spacing-sm)!important;padding-bottom:var(--spacing-sm)!important;overflow:hidden!important;margin-bottom:15px!important}body.project-focused .project-display.active,body.blog-focused #blogDisplay.active,body.publication-focused #publicationDisplay.active{position:absolute!important;width:auto!important;max-width:none!important;min-width:0!important;height:auto!important;bottom:auto!important;max-height:calc(100vh - var(--main-box-bottom, 436px) - 45px)!important;overflow-y:auto!important;overflow-x:hidden!important;margin-left:0!important;margin-right:0!important;margin-bottom:15px!important;padding-bottom:5px}.main-box .name-container{flex-direction:row!important;gap:var(--spacing-md)!important}.main-box .contact-icons{width:auto!important}}@media print{.webgl,.bg-animation,.grid-overlay,.project-slider{display:none}.main-box,.project-display{border:1px solid #000;background:#fff;color:#000}}
