@import"https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;400;500;600;700&family=JetBrains+Mono:wght@100;200;300;400;500;600;700;800&display=swap";html,body,#root{height:100%;margin:0;padding:0;background:#fff;color:#111;font-family:Fira Mono,Consolas,Courier New,monospace;font-size:16px;box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin:0 0 .5em}button,input,select,textarea{font-family:inherit;font-size:1em;background:#fff;color:#111;border:2px solid #111;border-radius:8px;padding:.5em 1em;outline:none;transition:background .1s,color .1s}button{cursor:pointer;font-weight:700;letter-spacing:1px;background:#fff;border:2px solid #111;border-radius:8px;margin:.25em}button:active{background:#111;color:#fff}.card,.project-card,.modal{border:2.5px solid #111;border-radius:16px;background:#fff;padding:1.5em 1em;margin:1em 0;font-family:inherit;box-shadow:none}input[type=text],input[type=email]{border:2px solid #111;border-radius:8px;padding:.5em 1em;background:#fff;color:#111}a{color:#111;text-decoration:none;font-weight:700}a:hover{text-decoration:underline}@media (max-width: 600px){html,body{font-size:15px}.card,.project-card,.modal{padding:1em .5em;border-radius:10px}button{padding:.5em .7em;font-size:.95em}}.matrix-rain{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1;opacity:.1}.matrix-rain canvas{width:100%;height:100%}#root{position:relative;z-index:2;min-height:100vh}.scroll-fade-in{opacity:0;transform:translateY(30px);transition:all .8s ease}.scroll-fade-in.visible{opacity:1;transform:translateY(0)}.scroll-slide-left{opacity:0;transform:translate(-50px);transition:all .8s ease}.scroll-slide-left.visible{opacity:1;transform:translate(0)}.scroll-slide-right{opacity:0;transform:translate(50px);transition:all .8s ease}.scroll-slide-right.visible{opacity:1;transform:translate(0)}.scroll-scale-in{opacity:0;transform:scale(.8);transition:all .8s ease}.scroll-scale-in.visible{opacity:1;transform:scale(1)}.parallax-bg{position:absolute;top:0;left:0;width:100%;height:120%;background:linear-gradient(45deg,var(--terminal-green) 0%,transparent 50%,var(--cyan-blue) 100%);opacity:.05;transform:translateZ(-1px) scale(2);z-index:-1}.parallax-slow{transform:translateY(var(--parallax-y, 0px));transition:transform .1s ease-out}.parallax-medium{transform:translateY(calc(var(--parallax-y, 0px) * .5));transition:transform .1s ease-out}.parallax-fast{transform:translateY(calc(var(--parallax-y, 0px) * .25));transition:transform .1s ease-out}.floating{animation:float 6s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}.floating-delayed{animation:float 6s ease-in-out infinite;animation-delay:2s}.floating-fast{animation:float 4s ease-in-out infinite}.scroll-progress{position:fixed;top:0;left:0;width:0%;height:3px;background:linear-gradient(90deg,var(--terminal-green),var(--cyan-blue));z-index:1000;transition:width .1s ease}.terminal{background:var(--secondary-bg);border:1px solid var(--terminal-green);border-radius:8px;padding:var(--spacing-md);font-family:var(--font-mono);font-size:var(--font-size-base);color:var(--terminal-green);box-shadow:0 0 20px #00ff414d;position:relative;overflow:hidden}.terminal:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--terminal-green),var(--cyan-blue));animation:scan 2s linear infinite}@keyframes scan{0%{transform:translate(-100%)}to{transform:translate(100%)}}.terminal-prompt{color:var(--terminal-green);font-weight:600}.terminal-prompt:after{content:"█";animation:blink 1s infinite;color:var(--terminal-green)}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.typewriter{overflow:hidden;border-right:2px solid var(--terminal-green);white-space:nowrap;animation:typing 3.5s steps(40,end),blink-caret .75s step-end infinite}@keyframes typing{0%{width:0}to{width:100%}}@keyframes blink-caret{0%,to{border-color:transparent}50%{border-color:var(--terminal-green)}}.glitch{position:relative;animation:glitch 1s infinite}.glitch:before,.glitch:after{content:attr(data-text);position:absolute;top:0;left:0;width:100%;height:100%}.glitch:before{animation:glitch-1 .5s infinite;color:var(--error-red);z-index:-1}.glitch:after{animation:glitch-2 .5s infinite;color:var(--cyan-blue);z-index:-2}@keyframes glitch{0%,to{transform:translate(0)}20%{transform:translate(-2px,2px)}40%{transform:translate(-2px,-2px)}60%{transform:translate(2px,2px)}80%{transform:translate(2px,-2px)}}@keyframes glitch-1{0%,to{transform:translate(0)}20%{transform:translate(-2px,2px)}40%{transform:translate(-2px,-2px)}60%{transform:translate(2px,2px)}80%{transform:translate(2px,-2px)}}@keyframes glitch-2{0%,to{transform:translate(0)}20%{transform:translate(2px,-2px)}40%{transform:translate(2px,2px)}60%{transform:translate(-2px,-2px)}80%{transform:translate(-2px,2px)}}.neon-glow{text-shadow:0 0 5px currentColor,0 0 10px currentColor,0 0 15px currentColor,0 0 20px currentColor}.neon-glow-green{color:var(--terminal-green);text-shadow:0 0 5px var(--terminal-green),0 0 10px var(--terminal-green),0 0 15px var(--terminal-green),0 0 20px var(--terminal-green)}.neon-glow-cyan{color:var(--cyan-blue);text-shadow:0 0 5px var(--cyan-blue),0 0 10px var(--cyan-blue),0 0 15px var(--cyan-blue),0 0 20px var(--cyan-blue)}.btn{background:transparent;border:2px solid var(--terminal-green);color:var(--terminal-green);padding:var(--spacing-sm) var(--spacing-lg);font-family:var(--font-mono);font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-normal);position:relative;overflow:hidden}.btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(0,255,65,.2),transparent);transition:left var(--transition-slow)}.btn:hover:before{left:100%}.btn:hover{background:var(--terminal-green);color:var(--primary-bg);box-shadow:0 0 20px #00ff4180}.nav{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;position:sticky;top:0;z-index:100;margin-bottom:2rem}.nav-link{color:#111;text-decoration:none;padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-normal);position:relative;font-weight:700;text-shadow:0 1px 4px rgba(0,0,0,.08);flex:1;text-align:center}.nav-link:after{content:"";position:absolute;bottom:0;left:50%;width:0;height:2px;background:var(--terminal-green);transition:all var(--transition-normal);transform:translate(-50%)}.nav-link:hover:after{width:100%}.nav-link:hover{color:var(--terminal-green)}.section{padding:var(--spacing-2xl) 0;position:relative}.section-title{font-size:var(--font-size-3xl);color:var(--terminal-green);margin-bottom:var(--spacing-xl);text-align:center;font-weight:600}.card{background:var(--secondary-bg);border:1px solid var(--light-gray);border-radius:8px;padding:var(--spacing-lg);transition:all var(--transition-normal);position:relative;overflow:hidden}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--terminal-green),var(--cyan-blue));transform:scaleX(0);transition:transform var(--transition-normal)}.card:hover:before{transform:scaleX(1)}.card:hover{border-color:var(--terminal-green);box-shadow:0 0 20px #00ff4133;transform:translateY(-2px)}.scroll-trigger{opacity:0;transform:translateY(50px);transition:all .8s cubic-bezier(.4,0,.2,1)}.scroll-trigger.triggered{opacity:1;transform:translateY(0)}.particles{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.particle{position:absolute;width:2px;height:2px;background:var(--terminal-green);border-radius:50%;animation:particle-float 8s linear infinite}@keyframes particle-float{0%{transform:translateY(100vh) translate(0);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateY(-100px) translate(100px);opacity:0}}@media (max-width: 768px){.section{padding:var(--spacing-xl) 0}.section-title{font-size:var(--font-size-2xl)}.terminal{font-size:var(--font-size-small);padding:var(--spacing-sm)}}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--secondary-bg)}::-webkit-scrollbar-thumb{background:var(--terminal-green);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--matrix-green)}::selection{background:var(--terminal-green);color:var(--primary-bg)}:focus{outline:2px solid var(--terminal-green);outline-offset:2px}.loading{display:inline-block;width:20px;height:20px;border:3px solid var(--light-gray);border-radius:50%;border-top-color:var(--terminal-green);animation:spin 1s ease-in-out infinite}@keyframes spin{to{transform:rotate(360deg)}}.ascii-art{font-family:var(--font-mono);white-space:pre;color:var(--terminal-green);text-align:center;line-height:1.2}.command-palette{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--secondary-bg);border:1px solid var(--terminal-green);border-radius:8px;padding:var(--spacing-lg);z-index:1000;min-width:400px;box-shadow:0 0 30px #00ff414d}.command-palette input{width:100%;background:transparent;border:none;color:var(--terminal-green);font-family:var(--font-mono);font-size:var(--font-size-base);outline:none}.command-palette input::placeholder{color:var(--light-gray)}.text-green{color:var(--terminal-green)}.text-cyan{color:var(--cyan-blue)}.text-red{color:var(--error-red)}.text-orange{color:var(--warning-orange)}.text-white{color:var(--bright-white)}.bg-dark{background:var(--primary-bg)}.bg-secondary{background:var(--secondary-bg)}.bg-gray{background:var(--dark-gray)}.border-green{border-color:var(--terminal-green)}.border-cyan{border-color:var(--cyan-blue)}.hidden{display:none}.visible{display:block}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.w-full{width:100%}.h-full{height:100%}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.mb-1{margin-bottom:var(--spacing-xs)}.mb-2{margin-bottom:var(--spacing-sm)}.mb-4{margin-bottom:var(--spacing-md)}.mb-8{margin-bottom:var(--spacing-lg)}.mt-1{margin-top:var(--spacing-xs)}.mt-2{margin-top:var(--spacing-sm)}.mt-4{margin-top:var(--spacing-md)}.mt-8{margin-top:var(--spacing-lg)}.p-1{padding:var(--spacing-xs)}.p-2{padding:var(--spacing-sm)}.p-4{padding:var(--spacing-md)}.p-8{padding:var(--spacing-lg)}/**
 * Copyright (c) 2014 The xterm.js authors. All rights reserved.
 * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
 * https://github.com/chjj/term.js
 * @license MIT
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * Originally forked from (with the author's permission):
 *   Fabrice Bellard's javascript vt100 for jslinux:
 *   http://bellard.org/jslinux/
 *   Copyright (c) 2011 Fabrice Bellard
 *   The original design remains. The terminal itself
 *   has been extended to include xterm CSI codes, among
 *   other features.
 */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility,.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}.terminalWindow{position:fixed;z-index:9999;left:100px;top:100px;width:600px;height:400px;background:#181825;color:#e0e0e0;font-family:Fira Mono,Consolas,Courier New,monospace;border:4px double #fff;border-radius:8px 8px 0 0;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080;overflow:hidden}.terminalHeader{background:linear-gradient(90deg,#22223b 80%,#6c63ff 100%);color:#fff;padding:.5em 1em;font-weight:700;display:flex;align-items:center;cursor:move;-webkit-user-select:none;user-select:none;border-bottom:2px solid #6c63ff;z-index:2}.terminalTitle{flex:1;letter-spacing:2px;font-size:1.1em}.closeBtn{background:#ff5f56;border:none;color:#fff;font-size:1.2em;width:2em;height:2em;border-radius:50%;cursor:pointer;margin-left:.5em;transition:background .2s}.closeBtn:hover{background:#ff2d00}.terminalOutput{flex:1;background:#181825;color:#e0e0e0;padding:1em;font-size:1em;overflow-y:auto;border-bottom:2px solid #6c63ff;word-break:break-word;z-index:1}.terminalLine{white-space:pre-wrap;line-height:1.5}.terminalInputBar{display:flex;align-items:center;background:#22223b;padding:.5em 1em;border-top:2px solid #6c63ff;z-index:1}.prompt{color:#6c63ff;font-weight:700;margin-right:.5em}.terminalInput{flex:1;background:transparent;border:none;color:#e0e0e0;font-family:inherit;font-size:1em;outline:none}.resizer{position:absolute;right:0;bottom:0;width:18px;height:18px;background:linear-gradient(135deg,transparent 60%,#6c63ff 100%);cursor:se-resize}
