*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--gb-darkest: #0f380f;--gb-dark: #306230;--gb-light: #8bac0f;--gb-lightest: #9bbc0f}html{scroll-behavior:smooth;font-size:16px}html,body{height:100%}body{font-family:VT323,ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,monospace;font-size:20px;line-height:1.4;background-color:var(--gb-lightest);color:var(--gb-darkest);-webkit-font-smoothing:none;-moz-osx-font-smoothing:auto;image-rendering:pixelated;image-rendering:crisp-edges;overflow:hidden}h1,h2,h3,h4,h5,h6{line-height:1.1;font-weight:400;font-family:VT323,monospace}img,svg{display:block;max-width:100%;image-rendering:pixelated;image-rendering:crisp-edges}a{color:inherit}button{font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;cursor:pointer}button:focus-visible{outline:2px dashed var(--gb-darkest);outline-offset:2px}body:before{content:"";position:fixed;inset:0;pointer-events:none;background-image:radial-gradient(var(--gb-light) 1px,transparent 1px);background-size:4px 4px;background-position:0 0;opacity:.35;z-index:0}.desktop{position:relative;width:100vw;height:100vh;height:100dvh;overflow:hidden;z-index:1}.desktop__icons{position:absolute;top:1.25rem;left:1.25rem;display:grid;grid-template-columns:repeat(2,84px);gap:1rem;z-index:2}.desktop-icon{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.4rem .25rem;border:2px solid transparent;background:transparent;color:var(--gb-darkest);cursor:pointer;width:84px;user-select:none}.desktop-icon:hover,.desktop-icon:focus-visible{border-color:var(--gb-darkest);background:var(--gb-light);outline:none}.desktop-icon__art{width:32px;height:32px;display:grid;place-items:center}.desktop-icon__label{font-size:1rem;letter-spacing:.05em;text-align:center;text-transform:uppercase}.gb-window{position:absolute;min-width:280px;max-width:calc(100vw - 2rem);max-height:calc(100vh - 4rem);background:var(--gb-lightest);border:2px solid var(--gb-darkest);box-shadow:4px 4px 0 0 var(--gb-darkest);display:flex;flex-direction:column;color:var(--gb-darkest)}.gb-window--focused{box-shadow:4px 4px 0 0 var(--gb-darkest),inset 0 0 0 1px var(--gb-darkest)}.gb-window__title{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.25rem .5rem;background:var(--gb-dark);color:var(--gb-lightest);border-bottom:2px solid var(--gb-darkest);cursor:grab;user-select:none}.gb-window__title:active{cursor:grabbing}.gb-window__title-text{font-size:1.1rem;letter-spacing:.05em;text-transform:uppercase}.gb-window__close{width:1.5rem;height:1.5rem;display:grid;place-items:center;background:var(--gb-lightest);color:var(--gb-darkest);border:2px solid var(--gb-darkest);font-weight:700;font-size:.9rem;line-height:1;padding:0}.gb-window__close:hover,.gb-window__close:focus-visible{background:var(--gb-darkest);color:var(--gb-lightest);outline:none}.gb-window__body{padding:.75rem 1rem;overflow:auto;flex:1}.taskbar{position:fixed;left:0;right:0;bottom:0;display:flex;align-items:stretch;gap:.5rem;padding:.25rem .5rem;background:var(--gb-dark);color:var(--gb-lightest);border-top:2px solid var(--gb-darkest);z-index:1000;font-size:1rem}.taskbar__start{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .75rem;background:var(--gb-lightest);color:var(--gb-darkest);border:2px solid var(--gb-darkest);text-transform:uppercase;letter-spacing:.05em}.taskbar__start:hover,.taskbar__start--active,.taskbar__start:focus-visible{background:var(--gb-darkest);color:var(--gb-lightest);outline:none}.taskbar__windows{display:flex;gap:.25rem;flex:1;overflow-x:auto;align-items:center}.taskbar__window{padding:.25rem .75rem;background:var(--gb-lightest);color:var(--gb-darkest);border:2px solid var(--gb-darkest);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.taskbar__window--focused{background:var(--gb-darkest);color:var(--gb-lightest)}.taskbar__clock{padding:.25rem .75rem;background:var(--gb-lightest);color:var(--gb-darkest);border:2px solid var(--gb-darkest);letter-spacing:.05em}.start-menu{position:fixed;left:.5rem;bottom:3.5rem;display:flex;flex-direction:column;min-width:12rem;background:var(--gb-lightest);border:2px solid var(--gb-darkest);box-shadow:4px 4px 0 0 var(--gb-darkest);z-index:1001;padding:.25rem}.start-menu__item{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;text-align:left;border:2px solid transparent;text-transform:uppercase;letter-spacing:.05em}.start-menu__item:hover,.start-menu__item:focus-visible{background:var(--gb-darkest);color:var(--gb-lightest);outline:none;border-color:var(--gb-darkest)}.start-menu__icon{display:grid;place-items:center}.skills-window{display:flex;flex-direction:column;gap:1rem}.skills-group__title{font-size:1.1rem;letter-spacing:.05em;text-transform:uppercase;margin-bottom:.25rem;color:var(--gb-dark)}.skills-group__list{list-style:none;display:flex;flex-direction:column;gap:.25rem}.skill-row{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:.5rem;padding:.25rem .5rem;background:var(--gb-light);border:2px solid var(--gb-darkest)}.skill-row__icon{width:24px;height:24px;object-fit:contain}.skill-row__icon-placeholder{width:24px;height:24px;display:inline-block;background:var(--gb-darkest)}.skill-row__name{font-size:1.05rem;text-transform:uppercase;letter-spacing:.04em}.skill-row__prof{font-size:.95rem;letter-spacing:.05em;color:var(--gb-dark)}.projects-window{display:flex;flex-direction:column;gap:1rem}.project-card{display:flex;flex-direction:column;gap:.5rem;padding:.75rem;background:var(--gb-light);border:2px solid var(--gb-darkest)}.project-card__name{font-size:1.15rem;letter-spacing:.05em;text-transform:uppercase}.project-card__desc{font-size:1rem;line-height:1.4;color:var(--gb-darkest)}.project-card__stack{display:flex;flex-wrap:wrap;gap:.3rem}.project-card__badge{padding:.1rem .5rem;background:var(--gb-darkest);color:var(--gb-lightest);border:2px solid var(--gb-darkest);font-size:.9rem;letter-spacing:.05em;text-transform:uppercase}.project-card__links{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.25rem}.project-card__btn{display:inline-block;padding:.3rem .75rem;border:2px solid var(--gb-darkest);text-decoration:none;letter-spacing:.05em;font-size:1rem}.project-card__btn--primary{background:var(--gb-darkest);color:var(--gb-lightest)}.project-card__btn--primary:hover,.project-card__btn--primary:focus-visible{background:var(--gb-dark);color:var(--gb-lightest);outline:none}.project-card__btn--secondary{background:var(--gb-lightest);color:var(--gb-darkest)}.project-card__btn--secondary:hover,.project-card__btn--secondary:focus-visible{background:var(--gb-light);outline:none}.contact-window{display:flex;flex-direction:column;gap:1rem}.contact-window__intro{font-size:1.05rem;letter-spacing:.05em}.contact-window__links{display:flex;flex-direction:column;gap:.5rem}.contact-link{display:inline-block;padding:.6rem .9rem;background:var(--gb-light);color:var(--gb-darkest);border:2px solid var(--gb-darkest);text-decoration:none;letter-spacing:.05em;text-transform:uppercase;word-break:break-all}.contact-link:hover,.contact-link:focus-visible{background:var(--gb-darkest);color:var(--gb-lightest);outline:none}.contact-link--email{word-break:break-all}.about-window{display:flex;gap:1rem;align-items:flex-start}.about-window__photo-wrap{flex-shrink:0}.about-window__photo{width:128px;height:128px;object-fit:cover;border:2px solid var(--gb-darkest);image-rendering:pixelated}.about-window__photo-placeholder{width:128px;height:128px;display:grid;place-items:center;background:var(--gb-light);border:2px solid var(--gb-darkest);font-size:1rem;letter-spacing:.05em;text-align:center}.about-window__body{display:flex;flex-direction:column;gap:.4rem;min-width:0}.about-window__name{font-size:1.4rem;letter-spacing:.05em;text-transform:uppercase}.about-window__title{font-size:1.05rem;color:var(--gb-dark);letter-spacing:.05em;text-transform:uppercase}.about-window__location,.about-window__languages{font-size:1rem;color:var(--gb-dark)}.about-window__bio{font-size:1rem;line-height:1.4}.terminal-widget{position:fixed;bottom:3rem;right:1rem;width:280px;background:var(--gb-lightest);border:2px solid var(--gb-darkest);box-shadow:4px 4px 0 0 var(--gb-darkest);font-size:1rem;z-index:10;user-select:none}.terminal-widget__title{padding:.25rem .5rem;background:var(--gb-dark);color:var(--gb-lightest);border-bottom:2px solid var(--gb-darkest);text-align:center;letter-spacing:.1em;text-transform:lowercase}.terminal-widget__body{padding:.5rem .6rem;display:flex;flex-direction:column;gap:.15rem;line-height:1.2}.terminal-line__prompt{color:var(--gb-dark);margin-right:.4rem;font-weight:700}.terminal-line--out{padding-left:.8rem;color:var(--gb-darkest)}.terminal-link{color:var(--gb-darkest);text-decoration:underline;text-decoration-style:dotted}.terminal-link:hover,.terminal-link:focus-visible{background:var(--gb-darkest);color:var(--gb-lightest);outline:none;text-decoration:none}.terminal-cursor{display:inline-block;animation:terminal-blink 1s steps(2,jump-none) infinite}@keyframes terminal-blink{0%,49%{opacity:1}50%,to{opacity:0}}.boot-screen{position:fixed;inset:0;background:var(--gb-darkest);color:var(--gb-lightest);z-index:9999;display:grid;place-items:center;font-size:1rem;letter-spacing:.05em;padding:1rem;pointer-events:auto;animation:boot-screen-fade-out .4s ease-out 1.9s forwards}.boot-screen__inner{width:min(560px,100%);display:flex;flex-direction:column;gap:1rem}.boot-screen__title{font-family:VT323,monospace;font-size:1.25rem;letter-spacing:.1em;text-align:center;color:var(--gb-lightest);white-space:pre}.boot-screen__steps{list-style:none;display:flex;flex-direction:column;gap:.25rem;min-height:6.5rem;color:var(--gb-light)}.boot-screen__step{animation:boot-step-in .18s steps(2) both}@keyframes boot-step-in{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.boot-screen__progress{width:100%;height:18px;border:2px solid var(--gb-lightest);background:transparent;padding:2px}.boot-screen__progress-fill{height:100%;background:var(--gb-lightest);width:0%;animation:boot-progress-fill 1.8s steps(30) forwards}@keyframes boot-progress-fill{0%{width:0%}to{width:100%}}@keyframes boot-screen-fade-out{0%{opacity:1}to{opacity:0}}.boot-screen__hint{text-align:center;font-size:.95rem;opacity:.6;letter-spacing:.05em}@media(prefers-reduced-motion:reduce){.boot-screen{animation:none;display:none}}@media(max-width:640px){.terminal-widget{display:none}.gb-window{left:.5rem!important;right:.5rem;width:auto;max-width:none}.about-window{flex-direction:column;align-items:stretch}.about-window__photo,.about-window__photo-placeholder{width:96px;height:96px}}
