:root{--color-primary:#0000f2;--color-accent:#edff45;--color-surface:gold;--color-text:#f5f5f5;--color-text-muted:#b0c0d8;--color-border-subtle:#b0c0d833;--color-bg:#0000f2;--font-display:"Sigurd Variable", serif;--font-body:"Plus Jakarta Sans", sans-serif;--font-mono:"Courier Prime", monospace;--font-rules:"Rules Variable", monospace;--space-xs:4px;--space-sm:6px;--space-md:8px;--space-lg:16px;--space-xl:24px;--space-2xl:32px;--space-3xl:48px;--space-4xl:64px;--text-xs:.625rem;--text-sm:.75rem;--text-base:1rem;--text-lg:1.125rem;--radius-full:9999px;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--ease-drawer:cubic-bezier(.32, .72, 0, 1);--transition-instant:1ms ease;--transition-fast:.15s var(--ease-out);--transition-medium:.2s var(--ease-out);--transition-smooth:.2s var(--ease-out)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{overflow-x:clip}body{font-family:var(--font-body);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.65}img{max-width:100%;height:auto;display:block}a{color:inherit;cursor:pointer;text-decoration:none}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}ul,ol{list-style:none}.display-hero{font-family:var(--font-display);text-transform:uppercase;letter-spacing:-.02em;font-optical-sizing:auto;overflow-wrap:anywhere;min-width:0;font-size:clamp(4rem,12vw,28rem);font-weight:300;line-height:.8}.display-lg{font-family:var(--font-display);text-transform:uppercase;letter-spacing:-.02em;font-optical-sizing:auto;overflow-wrap:anywhere;min-width:0;font-size:clamp(2.5rem,6vw,8rem);font-weight:300;line-height:.88}.display-md{font-family:var(--font-display);text-transform:uppercase;letter-spacing:-.02em;font-optical-sizing:auto;overflow-wrap:anywhere;min-width:0;font-size:clamp(1.75rem,4vw,4rem);font-weight:300;line-height:1}.heading-2{font-family:var(--font-body);font-size:clamp(1.25rem,2vw,1.75rem);font-weight:600;line-height:1.25}.heading-3{font-family:var(--font-body);font-size:1.25rem;font-weight:600;line-height:1.3}.body-lg{font-size:1.125rem;line-height:1.65}.mono-label{font-family:var(--font-rules);text-transform:uppercase;letter-spacing:.05em;font-size:.625rem;font-weight:700;line-height:1}.section-tag{color:var(--color-accent);margin-bottom:var(--space-md)}.muted{color:var(--color-text-muted);max-width:40ch}.card-spotlight{opacity:0;transition:opacity .2s var(--ease-out);background:radial-gradient(500px circle at var(--mouse-x,50%) var(--mouse-y,50%), #edff450f, transparent 40%);pointer-events:none;z-index:0;position:absolute;inset:0}.card-spotlight-active:hover>.card-spotlight{opacity:1}.card-spotlight-active>*{z-index:1;position:relative}.tech-tag{color:var(--color-accent);padding:var(--space-xs) var(--space-sm);background:#edff451a;font-size:.6rem}.container{width:100%;max-width:1200px;padding-inline:var(--space-lg);margin-inline:auto}@media (width>=768px){.container{padding-inline:var(--space-xl)}}.section{padding-block:var(--space-4xl);contain:layout style}@media (width>=768px){.section{padding-block:var(--space-4xl) calc(var(--space-4xl) * 1.5)}}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::selection{background-color:var(--color-accent);color:var(--color-primary)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}@media (prefers-reduced-transparency:reduce){.site-header{-webkit-backdrop-filter:none;background:#0000f2f7}.img-dialog::backdrop,.lightbox::backdrop{-webkit-backdrop-filter:none;background:#06061cd9}}@media (prefers-contrast:more){.site-header{border-bottom:1px solid var(--color-accent)}.muted{color:var(--color-text)}.section-tag{color:var(--color-accent)}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}.shimmer{background:linear-gradient(90deg, var(--color-text) 0%, var(--color-text) 40%, var(--color-accent) 50%, var(--color-text) 60%, var(--color-text) 100%);-webkit-text-fill-color:transparent;background-size:200%;-webkit-background-clip:text;background-clip:text;animation:4s linear infinite shimmer}@keyframes reveal-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.reveal{opacity:0}.reveal.visible{animation:reveal-up .5s var(--ease-out) forwards}.stagger>*{opacity:0}.stagger.visible>:first-child{animation:reveal-up .5s 0s var(--ease-out) forwards}.stagger.visible>:nth-child(2){animation:reveal-up .5s 60ms var(--ease-out) forwards}.stagger.visible>:nth-child(3){animation:reveal-up .5s .12s var(--ease-out) forwards}.stagger.visible>:nth-child(4){animation:reveal-up .5s .18s var(--ease-out) forwards}.stagger.visible>:nth-child(5){animation:reveal-up .5s .24s var(--ease-out) forwards}.stagger.visible>:nth-child(6){animation:reveal-up .5s .3s var(--ease-out) forwards}.stagger.visible>:nth-child(7){animation:reveal-up .5s .36s var(--ease-out) forwards}.stagger.visible>:nth-child(8){animation:reveal-up .5s .42s var(--ease-out) forwards}.stagger.visible>:nth-child(9){animation:reveal-up .5s .48s var(--ease-out) forwards}.stagger.visible>:nth-child(10){animation:reveal-up .5s .54s var(--ease-out) forwards}.stack-hover{transition:transform .2s var(--ease-out), box-shadow .2s var(--ease-out)}.stack-hover:hover{transform:translateY(-4px);box-shadow:0 8px 24px #0000f226}@keyframes t-digit-pop-in{0%{opacity:0;filter:blur(2px);transform:translateY(8px)}to{opacity:1;filter:blur();transform:translate(0)}}.t-digit-group{align-items:baseline;display:inline-flex}.t-digit{will-change:transform, opacity, filter;display:inline-block}.t-digit-group.is-animating .t-digit{animation:.5s cubic-bezier(.34,1.45,.64,1) both t-digit-pop-in}.t-digit-group.is-animating .t-digit[data-stagger="1"]{animation-delay:70ms}.t-digit-group.is-animating .t-digit[data-stagger="2"]{animation-delay:.14s}.t-acc-panel{grid-template-rows:0fr;transition:grid-template-rows .25s cubic-bezier(.22,1,.36,1);display:grid}.t-acc[data-open=true] .t-acc-panel{grid-template-rows:1fr;transition:grid-template-rows .25s cubic-bezier(.22,1,.36,1)}.t-acc-panel-inner{opacity:0;filter:blur(2px);transition:opacity .25s cubic-bezier(.22,1,.36,1),filter .25s cubic-bezier(.22,1,.36,1);overflow:hidden}.t-acc[data-open=true] .t-acc-panel-inner{opacity:1;filter:blur();transition:opacity .25s cubic-bezier(.22,1,.36,1),filter .25s cubic-bezier(.22,1,.36,1)}.t-acc-chevron{transform-origin:50%;transition:transform .25s cubic-bezier(.22,1,.36,1);display:inline-flex;transform:scaleY(1)}.t-acc-chevron path{vector-effect:non-scaling-stroke}.t-acc[data-open=true] .t-acc-chevron{transform:scaleY(-1)}@keyframes t-border-beam{0%{offset-distance:0%}to{offset-distance:100%}}.t-border-beam{pointer-events:none;border-radius:inherit;opacity:0;transition:opacity .2s var(--ease-out);position:absolute;inset:-1px;overflow:hidden}.t-border-beam:before{content:"";background:var(--color-accent);filter:blur(1px);offset-path:rect(0 100% 100% 0 round 0px);opacity:0;width:30%;height:2px;animation:2.5s linear infinite t-border-beam;position:absolute}.t-border-beam-on:hover .t-border-beam,.t-border-beam-on:focus-within .t-border-beam,.t-border-beam-on:hover .t-border-beam:before,.t-border-beam-on:focus-within .t-border-beam:before{opacity:1}.t-toast{filter:blur(2px);background:var(--color-accent);color:var(--color-primary);border-radius:var(--radius-full);font-family:var(--font-rules);text-transform:uppercase;letter-spacing:.05em;pointer-events:none;opacity:0;will-change:transform, opacity, filter;z-index:100;padding:10px 24px;font-size:.7rem;font-weight:700;transition:opacity .25s cubic-bezier(.22,1,.36,1),transform .25s cubic-bezier(.22,1,.36,1),filter .25s cubic-bezier(.22,1,.36,1);position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(16px)scale(.97)}.t-toast.is-open{opacity:1;filter:blur();transition:opacity .25s cubic-bezier(.22,1,.36,1),transform .25s cubic-bezier(.22,1,.36,1),filter .25s cubic-bezier(.22,1,.36,1);transform:translate(-50%)translateY(0)scale(1)}@keyframes t-confetti-fall{0%{opacity:1;transform:translate(0)rotate(0)scale(1)}to{transform:translate(var(--cx), var(--cy)) rotate(var(--cr)) scale(0);opacity:0}}.t-confetti-piece{pointer-events:none;border-radius:1px;width:6px;height:6px;margin:-3px 0 0 -3px;animation:.7s cubic-bezier(.22,1,.36,1) forwards t-confetti-fall;position:absolute;top:50%;left:50%}.text-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.min-w-0{min-width:0}.empty-state{text-align:center;padding:var(--space-4xl) var(--space-xl);color:var(--color-text-muted)}.empty-state p{margin-top:var(--space-lg);font-size:1rem}.empty-state-hint{color:var(--color-text-muted);margin-top:var(--space-sm)!important;font-size:.8rem!important}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.img-error{background:var(--color-border-subtle);justify-content:center;align-items:center;display:flex}.img-error:after{content:"×";color:var(--color-text-muted);opacity:.4;font-size:2rem}@keyframes hero-reveal{0%{clip-path:inset(0 0 100%);opacity:0}to{clip-path:inset(0 0 0%);opacity:1}}.hero-name{animation:.6s cubic-bezier(.16,1,.3,1) .1s both hero-reveal,4s linear 1s infinite shimmer}.project-card{transition:border-color var(--transition-instant), opacity .25s var(--ease-out), transform .25s var(--ease-out), scale .25s var(--ease-out);contain:layout style paint}.project-card[data-hidden=true]{opacity:0;pointer-events:none;width:0;height:0;position:absolute;overflow:hidden;transform:scale(.95)}@keyframes bento-reveal{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.bento-item{animation:.4s cubic-bezier(.23,1,.32,1) both bento-reveal;animation-delay:calc(var(--i) * 50ms)}.skip-link{top:-100%;left:var(--space-md);background:var(--color-accent);color:var(--color-primary);padding:var(--space-xs) var(--space-md);font-family:var(--font-mono);font-size:var(--text-base);z-index:1000;transition:top var(--transition-fast);font-weight:700;position:fixed}.skip-link:focus{top:var(--space-md)}.site-header{z-index:100;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border-subtle);transition:transform var(--transition-smooth);background:#0000f2d9;position:fixed;top:0;left:0;right:0}.site-header.hidden{transform:translateY(-100%)}.site-nav{justify-content:space-between;align-items:center;height:56px;display:flex}.nav-logo{font-size:var(--text-sm);color:var(--color-accent);letter-spacing:.1em}.nav-toggle{padding:var(--space-xs);z-index:101;flex-direction:column;gap:5px;display:none}.nav-toggle span{background:var(--color-text);width:20px;height:2px;transition:transform var(--transition-fast), opacity var(--transition-fast);display:block}.nav-toggle[aria-expanded=true] span:first-child{transform:translateY(3.5px)rotate(45deg)}.nav-toggle[aria-expanded=true] span:last-child{transform:translateY(-3.5px)rotate(-45deg)}.nav-links{align-items:center;gap:var(--space-xl);display:flex}.nav-link{font-family:var(--font-mono);font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text);opacity:.7;transition:opacity var(--transition-instant), color var(--transition-instant)}.nav-link:hover,.nav-link.active{opacity:1;color:var(--color-accent)}.nav-cta{background:var(--color-text);color:var(--color-primary);padding:var(--space-xs) var(--space-lg);font-size:var(--text-xs);transition:background var(--transition-instant), color var(--transition-instant)}.nav-cta:hover{background:var(--color-accent)}@media (width<=767px){.nav-toggle{display:flex}.nav-links{justify-content:center;align-items:flex-start;gap:var(--space-2xl);width:min(280px,80vw);height:100dvh;padding:var(--space-4xl) var(--space-xl);background:var(--color-primary);border-left:1px solid var(--color-border-subtle);transition:transform .25s var(--ease-drawer);flex-direction:column;position:fixed;top:0;right:0;transform:translate(100%)}.nav-links[data-open=true]{transform:translate(0)}.nav-link{font-size:1rem}}.site-footer{border-top:1px solid var(--color-border-subtle);padding-block:var(--space-xl)}.footer-inner{justify-content:space-between;align-items:center;gap:var(--space-md);flex-wrap:wrap;display:flex}.footer-copy{color:var(--color-text-muted);font-size:var(--text-xs)}.footer-links{gap:var(--space-xl);display:flex}.footer-links a{font-family:var(--font-mono);font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);transition:color var(--transition-instant)}.footer-links a:hover{color:var(--color-accent)}main{padding-top:56px}.welcome-hint{background:var(--color-accent);color:var(--color-primary);padding:var(--space-md) var(--space-xl);border-radius:var(--radius-full);font-family:var(--font-rules);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:var(--space-md);z-index:100;animation:reveal-up .5s var(--ease-out) forwards;font-weight:700;display:flex;position:fixed;bottom:100px;left:50%;transform:translate(-50%)}.welcome-hint[hidden]{display:none}.welcome-dismiss{opacity:.7;transition:opacity var(--transition-instant);font-size:1rem;line-height:1}.welcome-dismiss:hover{opacity:1}
