.fade-in{opacity:0;transform:translateY(0);transition:opacity .6s ease-out,transform .6s ease-out;will-change:opacity,transform}.fade-in.down{transform:translateY(20px)}.fade-in.up{transform:translateY(-20px)}.fade-in.visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion: reduce){.fade-in{transition:none;opacity:1;transform:none}}.hero{display:flex;flex-direction:column;justify-content:center;align-items:center;height:90vh;padding:0 2rem;background-color:var(--bg);color:var(--text);font-family:Satoshi,system-ui,sans-serif;text-align:center}.hero h1{font-size:4rem;font-weight:700;letter-spacing:-1px;margin:0}.hero p{font-size:1.5rem;font-weight:400;margin-top:1rem;color:var(--accent)}@media (max-width: 600px){.hero h1{font-size:5rem}.hero p{font-size:3rem}}._projectSection_a7fzb_1{width:100%;max-width:1000px;margin:0 auto;padding:3rem 0}._title_a7fzb_8{font-size:2rem;margin-bottom:2rem;text-align:center;color:var(--text)}._projectGrid_a7fzb_15{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem;justify-items:center}._card_1f1ih_1{position:relative;background:var(--card-bg);padding:1.5rem;border-radius:.5rem;overflow:hidden;color:var(--text);cursor:pointer;border:1px solid #e0e0e0;transition:border-color .2s ease}._card_1f1ih_1:hover{border-color:var(--accent)}._textContent_1f1ih_17{position:relative;z-index:2}._textContent_1f1ih_17 h3{margin:0 0 .5rem}._previewGif_1f1ih_26{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .3s ease;z-index:1;pointer-events:none;border-radius:.5rem}._card_1f1ih_1:hover ._previewGif_1f1ih_26{opacity:.2}.contact{text-align:center;padding:4rem 2rem;color:var(--text);font-family:Satoshi,system-ui,sans-serif}.contact h2{font-size:1.8rem;margin-bottom:1rem}.contact p{font-size:1.2rem;color:var(--accent)}.contact a{color:var(--accent);text-decoration:none;transition:color .2s ease-in-out}.contact a:hover{color:var(--highlight)}.plasma-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 20% 20%,#ff00c3,transparent 50%),radial-gradient(circle at 80% 30%,#007bff,transparent 50%),radial-gradient(circle at 50% 70%,#00ffa3,transparent 50%);filter:blur(80px);animation:plasmaMove 6s ease-in-out infinite alternate;clip-path:inset(0);overflow:hidden;pointer-events:none;z-index:0}@keyframes plasmaMove{0%{background-position:0% 0%,100% 0%,50% 100%}to{background-position:100% 100%,0% 100%,50% 0%}}.ascii-page{padding:2rem 1rem;max-width:1200px;margin:0 auto;text-align:center;color:var(--text);font-family:Satoshi,system-ui,sans-serif;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;box-sizing:border-box}.ascii-page h1{font-size:2.5rem;margin-bottom:1rem}.ascii-page p{font-size:1.125rem;margin-bottom:2rem;color:var(--accent)}.ascii-spotlight{margin:0 auto;cursor:pointer;max-width:400px;transition:width .3s ease,height .3s ease;overflow:hidden}.ascii-spotlight.expanded{cursor:default;width:90vw;height:80vh;max-width:none;display:flex;flex-direction:column}.ascii-spotlight .player-inner{flex:1;display:flex;flex-direction:column}.ascii-spotlight .upload-instructions{height:100%;display:flex;align-items:center;justify-content:center;font-size:1.125rem;text-align:center}.ascii-spotlight .controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.ascii-spotlight .video-area{flex:1;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.ascii-spotlight .video-area.loading{display:flex;align-items:center;justify-content:center}.ascii-spotlight .video-area.transitioning .plasma-bg{animation:plasmaFadeOut .6s forwards}.ascii-spotlight .video-area.transitioning .ascii-output{animation:asciiFadeIn .6s forwards}@keyframes plasmaFadeOut{to{opacity:0;filter:blur(120px)}}@keyframes asciiFadeIn{0%{opacity:0;filter:blur(20px)}to{opacity:1;filter:blur(0)}}.ascii-spotlight .ascii-output{margin:0;overflow:hidden;font-size:10px;line-height:1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;background:#000;color:#fff;-webkit-user-select:none;user-select:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1}.ascii-spotlight .color-div{white-space:pre}.ascii-spotlight .processing-text{position:relative;z-index:1;font-size:2rem;color:#fff;text-align:center}.ascii-spotlight .error{color:#f88}.ascii-page .wipe{border-radius:12px;overflow:hidden;background:#000}/**
* @license
*
* Font Family: Satoshi
* Designed by: Deni Anggara
* URL: https://www.fontshare.com/fonts/satoshi
* © 2025 Indian Type Foundry
*
* Satoshi Light 
* Satoshi LightItalic 
* Satoshi Regular 
* Satoshi Italic 
* Satoshi Medium 
* Satoshi MediumItalic 
* Satoshi Bold 
* Satoshi BoldItalic 
* Satoshi Black 
* Satoshi BlackItalic 
* Satoshi Variable (Variable font)
* Satoshi VariableItalic (Variable font)

*
*/@font-face{font-family:Satoshi-Light;src:url(../fonts/Satoshi-Light.woff2) format("woff2"),url(../fonts/Satoshi-Light.woff) format("woff"),url(../fonts/Satoshi-Light.ttf) format("truetype");font-weight:300;font-display:swap;font-style:normal}@font-face{font-family:Satoshi-LightItalic;src:url(../fonts/Satoshi-LightItalic.woff2) format("woff2"),url(../fonts/Satoshi-LightItalic.woff) format("woff"),url(../fonts/Satoshi-LightItalic.ttf) format("truetype");font-weight:300;font-display:swap;font-style:italic}@font-face{font-family:Satoshi-Regular;src:url(../fonts/Satoshi-Regular.woff2) format("woff2"),url(../fonts/Satoshi-Regular.woff) format("woff"),url(../fonts/Satoshi-Regular.ttf) format("truetype");font-weight:400;font-display:swap;font-style:normal}@font-face{font-family:Satoshi-Italic;src:url(../fonts/Satoshi-Italic.woff2) format("woff2"),url(../fonts/Satoshi-Italic.woff) format("woff"),url(../fonts/Satoshi-Italic.ttf) format("truetype");font-weight:400;font-display:swap;font-style:italic}@font-face{font-family:Satoshi-Medium;src:url(../fonts/Satoshi-Medium.woff2) format("woff2"),url(../fonts/Satoshi-Medium.woff) format("woff"),url(../fonts/Satoshi-Medium.ttf) format("truetype");font-weight:500;font-display:swap;font-style:normal}@font-face{font-family:Satoshi-MediumItalic;src:url(../fonts/Satoshi-MediumItalic.woff2) format("woff2"),url(../fonts/Satoshi-MediumItalic.woff) format("woff"),url(../fonts/Satoshi-MediumItalic.ttf) format("truetype");font-weight:500;font-display:swap;font-style:italic}@font-face{font-family:Satoshi-Bold;src:url(../fonts/Satoshi-Bold.woff2) format("woff2"),url(../fonts/Satoshi-Bold.woff) format("woff"),url(../fonts/Satoshi-Bold.ttf) format("truetype");font-weight:700;font-display:swap;font-style:normal}@font-face{font-family:Satoshi-BoldItalic;src:url(../fonts/Satoshi-BoldItalic.woff2) format("woff2"),url(../fonts/Satoshi-BoldItalic.woff) format("woff"),url(../fonts/Satoshi-BoldItalic.ttf) format("truetype");font-weight:700;font-display:swap;font-style:italic}@font-face{font-family:Satoshi-Black;src:url(../fonts/Satoshi-Black.woff2) format("woff2"),url(../fonts/Satoshi-Black.woff) format("woff"),url(../fonts/Satoshi-Black.ttf) format("truetype");font-weight:900;font-display:swap;font-style:normal}@font-face{font-family:Satoshi-BlackItalic;src:url(../fonts/Satoshi-BlackItalic.woff2) format("woff2"),url(../fonts/Satoshi-BlackItalic.woff) format("woff"),url(../fonts/Satoshi-BlackItalic.ttf) format("truetype");font-weight:900;font-display:swap;font-style:italic}@font-face{font-family:Satoshi-Variable;src:url(../fonts/Satoshi-Variable.woff2) format("woff2"),url(../fonts/Satoshi-Variable.woff) format("woff"),url(../fonts/Satoshi-Variable.ttf) format("truetype");font-weight:300 900;font-display:swap;font-style:normal}@font-face{font-family:Satoshi-VariableItalic;src:url(../fonts/Satoshi-VariableItalic.woff2) format("woff2"),url(../fonts/Satoshi-VariableItalic.woff) format("woff"),url(../fonts/Satoshi-VariableItalic.ttf) format("truetype");font-weight:300 900;font-display:swap;font-style:italic}:root{--bg: #fdfdfd;--text: #111111;--card-bg: #ffffff;--accent: #5c5c5c;--highlight: #000000}body{margin:0;background-color:var(--bg);color:var(--text);font-family:Satoshi,system-ui,sans-serif}a{color:var(--accent);text-decoration:none;transition:color .2s}a:hover{color:var(--highlight)}header{display:flex;justify-content:flex-end;padding:1.5rem}nav a,nav button{margin-left:1rem;font-weight:500;background:none;border:none;text-decoration:none;color:var(--text);cursor:pointer;transition:color .2s}nav a:hover,nav button:hover{color:var(--highlight)}main{flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;padding:2rem}section.spotlight-grid{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));padding:2rem;max-width:1200px;margin:0 auto}
