@font-face{font-family:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/firacode-400.woff)format("woff")}@font-face{font-family:Fira Code;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/firacode-500.woff)format("woff")}@font-face{font-family:Fira Code;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/firacode-600.woff)format("woff")}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background-color:#000;min-height:100vh;margin:0;padding:0}main{min-height:100vh}.mb-xl{margin-bottom:2rem}.block{display:block}body{color:#22c55e;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Fira Code,Monaco,Consolas,Courier New,monospace;font-size:16px;line-height:1.7}h1,h2{color:#4ade80;margin:0 0 1rem;font-family:Fira Code,Monaco,Consolas,Courier New,monospace;font-weight:600;line-height:1.4}h1{color:#4ade80;font-size:40px}@media (width<=768px){h1{font-size:32px}}h2{font-size:32px}@media (width<=768px){h2{font-size:24px}}p{margin:0 0 1rem;line-height:1.8}p:last-child{margin-bottom:0}a{color:#4ade80;text-underline-offset:2px;text-decoration:underline 1px dotted;transition:all .2s;position:relative}a:hover{color:#86efac;text-decoration-style:solid}a:focus{outline-offset:2px;outline:2px solid #22c55e}ul{margin:0 0 1rem;padding-left:2rem}ul li{margin-bottom:.5rem;line-height:1.8}blockquote{color:#86efac;border-left:4px solid #22c55e;margin:0 0 1rem;padding-left:1.5rem;font-style:italic}.text-muted{color:#a0a0a0}.terminal-window{color:#22c55e;background-color:#000;min-height:100vh;padding:2rem}@media (width<=768px){.terminal-window{padding:1rem}}.terminal-content{max-width:800px;margin:0 auto}.terminal-prompt{flex-wrap:wrap;align-items:center;gap:.25rem;margin-bottom:.5rem;font-size:16px;display:flex}@media (width<=480px){.terminal-prompt{font-size:14px}}.terminal-prompt .prompt-user{color:#4ade80}.terminal-prompt .prompt-separator{color:#a0a0a0}.terminal-prompt .prompt-path{color:#22c55e}.terminal-prompt .prompt-symbol{color:#4ade80}.terminal-prompt .prompt-command{color:#86efac}.terminal-output{margin-bottom:2rem;margin-left:1rem;line-height:1.7}@media (width<=480px){.terminal-output{margin-bottom:1.5rem;margin-left:.5rem}}.terminal-section{margin-bottom:4rem}.terminal-section:last-child{margin-bottom:0}.terminal-nav{flex-wrap:wrap;justify-content:center;gap:1.5rem;margin-top:1.5rem;margin-bottom:3rem;display:flex}@media (width<=480px){.terminal-nav{gap:1rem}}.terminal-nav .nav-link{color:#22c55e;text-decoration:none;transition:color .2s;position:relative}.terminal-nav .nav-link:before{content:">";color:#4ade80;margin-right:.25rem}.terminal-nav .nav-link:hover{color:#4ade80;text-decoration:underline dotted}.terminal-nav .nav-link.active{color:#4ade80}.terminal-footer{color:#a0a0a0;max-width:800px;margin:4rem auto 0;padding-top:2rem;font-size:14px;position:relative}.terminal-footer:before{content:"";border-top:1px solid #22c55e33;width:100vw;position:absolute;top:0;left:50%;transform:translate(-50%)}@media (width<=480px){.terminal-footer{padding-left:1rem;padding-right:1rem}}.terminal-footer a{color:#22c55e;text-decoration:underline dotted}.terminal-footer a:hover{color:#4ade80;text-decoration-style:solid}.focus-list{margin:1rem 0;padding:0;list-style:none}.focus-list li{margin-bottom:.5rem;padding-left:1.5rem;position:relative}.focus-list li:before{content:"▸";color:#4ade80;position:absolute;left:0}.vim-hero{background-color:#000;border:2px solid #16a34a;border-radius:4px;flex-direction:column;min-height:60vh;margin-bottom:4rem;display:flex}@media (width<=768px){.vim-hero{height:70vh;min-height:unset}}@media (width<=480px){.vim-hero{height:80vh}}.vim-status-bar{background-color:#22c55e1a;border-bottom:1px solid #16a34a;justify-content:space-between;align-items:center;padding:.25rem 1rem;font-size:14px;display:flex}@media (width<=480px){.vim-status-bar{flex-direction:column;align-items:flex-start;gap:.25rem}}.vim-file-info{color:#22c55e}.vim-file-info .vim-filename{color:#4ade80;margin-right:1rem}.vim-file-info .vim-file-status,.vim-position{color:#a0a0a0}@media (width<=480px){.vim-position{font-size:12px}}.vim-content{flex-direction:column;flex:1;min-height:0;padding:1.5rem;display:flex;position:relative;overflow:hidden}@media (width<=480px){.vim-content{padding:1rem}}.vim-line-numbers{color:#a0a0a0;user-select:none;padding:0 .5rem;font-size:16px;line-height:1.8;position:absolute;top:1.5rem;left:0}@media (width<=768px){.vim-line-numbers{font-size:14px}}@media (width<=480px){.vim-line-numbers{display:none}}.vim-line-number{text-align:right;min-width:30px;display:block}@media (width<=480px){.vim-line-number{min-width:20px}}.vim-text{color:#22c55e;white-space:pre-wrap;word-wrap:break-word;margin-left:50px;font-size:16px;line-height:1.8}@media (width<=768px){.vim-text{font-size:14px}}@media (width<=480px){.vim-text{margin-left:0;font-size:14px}}.vim-text-line{min-height:1.8em;display:block}@keyframes vim-cursor-blink{0%,50%{opacity:1}51%,to{opacity:0}}.vim-mode-bar{background-color:#22c55e0d;border-top:1px solid #16a34a;justify-content:space-between;align-items:center;min-height:32px;padding:.25rem 1rem;font-size:14px;display:flex}@media (width<=480px){.vim-mode-bar{padding:.25rem .5rem;font-size:12px}}.vim-mode-indicator{border-radius:2px;padding:2px .5rem;font-weight:700;transition:all .2s}.vim-mode-indicator.mode-normal{color:#22c55e;background-color:#0000}.vim-mode-indicator.mode-insert{color:#000;background-color:#4ade80}.vim-mode-indicator.mode-visual{color:#000;background-color:#facc15}.vim-command{color:#22c55e;font-family:Fira Code,Monaco,Consolas,Courier New,monospace}.vim-cta{text-align:center;margin-top:auto;padding:1rem 0}.vim-cta-link{color:#4ade80;cursor:pointer;background-color:#0000;border:1px solid #16a34a;border-radius:4px;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:18px;text-decoration:none;transition:all .2s;display:inline-flex}@media (width<=480px){.vim-cta-link{font-size:16px}}.vim-cta-link:hover{text-shadow:0 0 10px #4ade80cc;background-color:#22c55e1a;border-color:#22c55e}.vim-cta-link:hover .vim-cta-arrow{transform:translateY(3px)}.vim-cta-link .vim-cta-arrow{transition:transform .2s}.vim-hidden{display:none}.vim-visual-selection{color:#000;background-color:#22c55e;padding:0 2px}@keyframes cursor-blink{0%,49%{opacity:1}50%,to{opacity:0}}.cursor{color:#4ade80;animation:.8s infinite cursor-blink;display:inline-block}@keyframes fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.5s ease-out fade-in}.fade-in-delay-2{animation:.5s ease-out .2s both fade-in}.hover-glow{transition:text-shadow .2s}.hover-glow:hover{text-shadow:0 0 10px #4ade80cc}@keyframes typing{0%{width:0}to{width:100%}}