@import "https://fonts.googleapis.com/css2?family=Geist:wght@400;500;700&family=Geist+Mono:wght@400;500&display=swap";:root{--bg-base:#0a0a0a;--bg-surface:#141414;--text-main:#f4f4f2;--text-muted:#a3a3a3;--accent-orange:#ff5a00;--accent-red:#e11d48;--ui-border:#2c2c2c;--ui-dark:#000;--font-geist:"Geist", sans-serif;--font-mono:"Geist Mono", monospace;--space-1:.5rem;--space-2:1rem;--space-3:1.5rem;--space-4:2rem;--space-5:2.5rem;--space-6:3rem;--space-8:4rem;--space-12:6rem;--space-16:8rem;--text-sm:clamp(.75rem, .2vw + .7rem, .8rem);--text-base:clamp(1rem, .4vw + .9rem, 1.125rem);--text-lg:clamp(1.2rem, .5vw + 1.1rem, 1.333rem);--text-h3:clamp(1.44rem, 1vw + 1.2rem, 1.777rem);--text-h2:clamp(1.728rem, 1.6vw + 1.4rem, 2.369rem);--text-h1:clamp(2.074rem, 2.5vw + 1.5rem, 3.157rem);--text-hero:clamp(2.5rem, 4vw + 1.5rem, 4.209rem)}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background-color:var(--bg-base);color:var(--text-main);font-family:var(--font-geist);-webkit-font-smoothing:antialiased;line-height:1.6}h1{font-size:var(--text-h1);letter-spacing:-.03em;color:var(--text-main);text-wrap:balance;font-weight:500;line-height:1.05}h2{font-size:var(--text-h2);letter-spacing:-.02em;color:var(--text-main);font-weight:500;line-height:1.1}h3{font-size:var(--text-h3);letter-spacing:-.01em;color:var(--text-main);font-weight:500;line-height:1.2}p{font-size:var(--text-base);max-width:100%;color:var(--text-muted);font-weight:400;line-height:1.6}.label-mono{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:500;line-height:1.4}.nav-link{font-size:var(--text-base)}.sharp{border-radius:0}button,a{cursor:pointer;color:inherit;background:0 0;border:none;text-decoration:none;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-duration:.15s;transition-timing-function:linear}.panel{background-color:var(--bg-surface);border:1px solid var(--ui-border)}.container{width:100%;max-width:2560px;padding:0 var(--space-4);margin:0 auto}@media (width>=900px){.container{padding:0 var(--space-12)}}.home-logo .logo-square{transition:transform .4s cubic-bezier(.16,1,.3,1),background-color .15s linear}.home-logo:active .logo-square{transform:scale(.9);background-color:var(--text-main)!important}@media (hover:hover){.home-logo:hover .logo-square{transform:rotate(90deg)scale(.9)}}.hover-nav{color:var(--text-main);padding-bottom:4px;text-decoration:none;transition:color .15s linear;position:relative}.hover-nav:after{content:"";background-color:var(--accent-orange);transform-origin:0;width:100%;height:2px;transition:transform .4s cubic-bezier(.16,1,.3,1);position:absolute;bottom:0;left:0;transform:scaleX(0)}.hover-nav:active{color:var(--accent-orange)}@media (hover:hover){.hover-nav:hover{color:var(--text-main)}.hover-nav:hover:after{transform:scaleX(1)}}.hover-list{color:var(--text-muted);text-decoration:none;transition:transform .3s cubic-bezier(.16,1,.3,1),color .15s linear;display:inline-block;position:relative}.hover-list:before{content:"";background-color:var(--accent-orange);transform-origin:50%;width:2px;transition:transform .3s cubic-bezier(.16,1,.3,1);position:absolute;top:10%;bottom:10%;left:-12px;transform:scaleY(0)}.hover-list:active{color:var(--accent-orange)}@media (hover:hover){.hover-list:hover{color:var(--text-main);transform:translate(12px)}.hover-list:hover:before{transform:scaleY(1)}}.hover-external{color:var(--text-main);border-bottom:1px solid var(--ui-border);align-items:center;padding-bottom:2px;text-decoration:none;transition:color .15s linear,border-color .15s linear;display:inline-flex}.hover-external:after{content:"↗";color:var(--accent-orange);margin-left:6px;transition:transform .3s cubic-bezier(.16,1,.3,1);display:inline-block}.hover-external:active{color:var(--accent-orange)}@media (hover:hover){.hover-external:hover{border-bottom-color:var(--accent-orange);color:var(--text-main)}.hover-external:hover:after{transform:translate(2px,-2px)}}.hover-system{border:1px solid var(--text-main);color:var(--text-main);padding:var(--space-2) var(--space-4);font-family:var(--font-mono);text-transform:uppercase;font-size:var(--text-sm);background:0 0;text-decoration:none;transition:all .2s cubic-bezier(.16,1,.3,1);display:inline-block;position:relative;box-shadow:0 0 #0000}.hover-system:active{transform:translate(2px,2px);box-shadow:0 0 #0000!important}@media (hover:hover){.hover-system:hover{z-index:10;background:var(--accent-orange);color:var(--bg-base);border-color:var(--accent-orange);box-shadow:4px 4px 0 var(--text-main);transform:translate(-2px,-2px)}}.project-overlay{opacity:0;background:linear-gradient(#0000,#0a0a0ae6);flex-direction:column;justify-content:flex-end;padding:1rem;transition-property:opacity;transition-duration:.15s;transition-timing-function:linear;display:flex;position:absolute;inset:0}.project-card:hover .project-overlay{opacity:1}.project-arrow{border:1px solid var(--accent-orange);width:2rem;height:2rem;color:var(--accent-orange);background-color:var(--bg-base);opacity:0;justify-content:center;align-items:center;transition:opacity .15s linear;display:flex;position:absolute;bottom:1rem;right:1rem}.project-card:hover .project-arrow{opacity:1}:focus-visible{outline-offset:4px;outline:2px solid var(--accent-orange)!important}.system-failure{background-color:var(--bg-base);min-height:100vh;color:var(--accent-orange);flex-direction:column;justify-content:center;align-items:flex-start;padding:2rem;display:flex}.reboot-btn{font-family:var(--font-mono);text-transform:uppercase;border:1px solid var(--accent-orange);color:var(--accent-orange);cursor:pointer;background:0 0;margin-top:2rem;padding:.75rem 1.5rem;font-size:.85rem;transition:all .3s cubic-bezier(.16,1,.3,1)}.reboot-btn:hover{background:var(--accent-orange);color:var(--ui-dark)}.filter-bar{gap:var(--space-2);padding-bottom:var(--space-4);border-bottom:1px solid var(--ui-border);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.filter-btn{font-family:var(--font-mono);color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;padding:.5rem 1rem;font-size:.75rem;transition:all .3s cubic-bezier(.16,1,.3,1)}.filter-btn:hover{color:var(--text-main);border-color:var(--ui-border)}.rich-text-container p{font-size:inherit;color:inherit;margin-bottom:var(--space-2)}.rich-text-container p:last-child{margin-bottom:0}.rich-text-container a{color:var(--text-main);text-decoration:underline;-webkit-text-decoration-color:var(--ui-border);text-decoration-color:var(--ui-border);text-underline-offset:4px}.rich-text-container a:hover{color:var(--accent-orange);-webkit-text-decoration-color:var(--accent-orange);text-decoration-color:var(--accent-orange)}.blinking-cursor{animation:1s step-end infinite blink}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.work-grid{gap:var(--space-2);margin-top:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (width>=700px){.work-grid{gap:var(--space-4);grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=1200px){.work-grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}}.skeleton-card{aspect-ratio:1;background-color:var(--ui-dark);will-change:opacity;border-radius:0;width:100%;animation:2s cubic-bezier(.4,0,.6,1) infinite pulse-opacity}@keyframes pulse-opacity{0%,to{opacity:1}50%{opacity:.5}}.filter-btn.active{color:var(--ui-dark);background:var(--accent-orange);border-color:var(--accent-orange);text-shadow:0 1px 3px #0003;font-weight:700}.work-grid>*{background-color:var(--bg-base)}.project-media{width:100%}.about-grid{grid-template-columns:1fr;gap:2rem;display:grid}@media (width>=900px){.about-grid{gap:var(--space-8);grid-template-columns:repeat(12,1fr)}.about-left{grid-column:span 4}.about-right{grid-column:span 8}}h1,h2,h3,h4,h5,h6{text-wrap:balance}p{text-wrap:pretty}a:active,button:active,.hover-trigger:active,.project-card:active{transform:scale(.96)}.glass-nav{z-index:50;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--ui-border);background-color:#0a0a0abf;position:sticky;top:0}.hover-trigger{z-index:1;border-radius:0;transition:transform .4s cubic-bezier(.175,.885,.32,1.1),box-shadow .4s}@media (hover:hover){.hover-trigger:hover{z-index:10;transform:scale(1.04);box-shadow:0 0 0 2px #ffffffe6}}.hover-trigger .project-image{object-fit:cover;width:100%;height:100%}.hover-trigger .arrow-icon{opacity:0;transition:opacity .3s,transform .4s cubic-bezier(.16,1,.3,1);transform:translate(-10px)}.hover-trigger:hover .arrow-icon{opacity:1;transform:translate(0)}.hover-trigger h3{opacity:0;transform-origin:0 100%;-webkit-line-clamp:2;text-overflow:ellipsis;white-space:normal;-webkit-box-orient:vertical;transition:opacity .3s,transform .4s cubic-bezier(.16,1,.3,1);display:-webkit-box;overflow:hidden}.hover-trigger:hover h3{opacity:1;transform:scale(1.05)translateY(-4px)}.hover-trigger .category-tag{opacity:0;transition:opacity .3s}.hover-trigger:hover .category-tag{opacity:1}.hover-fade-in{opacity:0;transition:opacity .4s,transform .4s cubic-bezier(.16,1,.3,1);transform:translate(-10px)}.hover-trigger:hover .hover-fade-in{opacity:1;transform:translate(0)}@media (hover:none){.hover-trigger h3{opacity:1;transform:none}.hover-fade-in{opacity:1;transform:translate(0)}.work-grid .hover-fade-in{display:none}.work-grid .hover-overlay{background:var(--bg-surface);border-top:1px solid var(--ui-border);position:absolute;left:0;right:0;padding:var(--space-2) var(--space-3)!important;align-items:flex-start!important;top:auto!important;bottom:0!important}.work-grid .hover-overlay h3{text-align:left!important;font-size:var(--text-sm)!important}}@media (width<=899px){.about-right{order:-1}.footer-links{gap:var(--space-4);flex-direction:column}.play-card{min-height:320px}}@media (width<=699px){.dual-portrait{grid-template-columns:1fr!important}}.play-floating-ui{z-index:2;text-align:right;flex-direction:column;align-items:flex-end;width:100%;max-width:600px;padding:clamp(1rem,5vw,4rem);display:flex;position:relative}@media (width<=699px){.play-floating-ui{text-align:left;align-items:flex-start}}.action-btn-solid{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--accent-orange);border:1px solid var(--accent-orange);cursor:pointer;text-transform:uppercase;background:0 0;padding:.5rem 1.25rem;text-decoration:none;transition:all .3s cubic-bezier(.16,1,.3,1);display:inline-block}.action-btn-solid:hover{background:var(--accent-orange);color:var(--ui-dark)}.nav-btn-square{font-family:var(--font-sans);color:var(--text-muted);border:1px solid var(--ui-border);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;text-decoration:none;transition:all .3s;display:flex}.nav-btn-square:hover{background:var(--accent-red);color:var(--text-main);border-color:var(--accent-red)}.nav-btn-square,.action-btn-solid{position:relative}@media (width<=699px){.nav-btn-square:after,.action-btn-solid:after{content:"";z-index:1;width:100%;min-width:48px;height:100%;min-height:48px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}}.poster-view{cursor:pointer;z-index:10;justify-content:center;align-items:center;transition:opacity .5s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;inset:0}.poster-image{object-fit:cover;width:100%;height:100%;transition:transform .8s cubic-bezier(.16,1,.3,1),filter .8s cubic-bezier(.16,1,.3,1);position:absolute;inset:0}.poster-overlay{background-color:#0003;transition:background-color .5s;position:absolute;inset:0}.play-button{z-index:2;-webkit-backdrop-filter:blur(8px);color:var(--text-main);opacity:0;background-color:#0f0f0fcc;border:1px solid #fff3;align-items:center;gap:.75rem;padding:1rem 2rem;transition:all .4s cubic-bezier(.16,1,.3,1);display:flex;position:relative;transform:translateY(10px)}@media (hover:hover) and (pointer:fine){.poster-view:hover .poster-image{filter:brightness(.6)blur(2px);transform:scale(1.02)}.poster-view:hover .poster-overlay{background-color:#00000080}.poster-view:hover .play-button{opacity:1;border-color:var(--text-main);transform:translateY(0)}.poster-view:hover .poster-video-hover{opacity:1!important}}.play-button:hover{background-color:var(--text-main);color:var(--bg-base)}@media (hover:none),(pointer:coarse){.poster-overlay{background-color:#0006}.play-button{opacity:1;pointer-events:auto;transform:translateY(0)}}
