@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap";@import "https://fonts.googleapis.com/css2?family=Abel&family=Agdasima:wght@400;700&family=Albert+Sans:ital,wght@0,100..900;1,100..900&family=Alumni+Sans+SC:ital,wght@0,100..900;1,100..900&family=Alumni+Sans:ital,wght@0,100..900;1,100..900&family=Major+Mono+Display&family=Rubik+Broken+Fax&family=Unica+One&display=swap";@import "https://fonts.googleapis.com/css2?family=Arsenal+SC:ital,wght@0,400;0,700;1,400;1,700&family=Arsenal:ital,wght@0,400;0,700;1,400;1,700&family=Buda:wght@300&family=Ojuju:wght@200..800&family=Barrio&family=Savate:ital,wght@0,200..900;1,200..900&display=swap";@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap";@import "https://fonts.googleapis.com/css2?family=Abel&family=Agdasima:wght@400;700&family=Albert+Sans:ital,wght@0,100..900;1,100..900&family=Alumni+Sans+SC:ital,wght@0,100..900;1,100..900&family=Alumni+Sans:ital,wght@0,100..900;1,100..900&family=Major+Mono+Display&family=Rubik+Broken+Fax&family=Unica+One&display=swap";@import "https://fonts.googleapis.com/css2?family=Arsenal+SC:ital,wght@0,400;0,700;1,400;1,700&family=Arsenal:ital,wght@0,400;0,700;1,400;1,700&family=Buda:wght@300&family=Ojuju:wght@200..800&family=Barrio&family=Savate:ital,wght@0,200..900;1,200..900&display=swap";html{scroll-behavior:smooth}body{letter-spacing:.05em;background-color:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;letter-spacing:.05em;margin:0;font-family:Abel;font-size:16px;line-height:1.65;overflow-x:hidden}a{color:var(--accent-blue);text-underline-offset:.18em;text-decoration-thickness:.08em}a:hover{color:var(--accent-light)}img{max-width:100%;height:auto}.mobile-warning{background-color:var(--bg);width:100%}.mobile-warning a{color:var(--surface-strong);font-size:42px}header{z-index:100;background:var(--surface);-webkit-backdrop-filter:saturate(180%)blur(14px);backdrop-filter:saturate(180%)blur(14px);border-bottom:2px solid var(--border);position:sticky;top:0}.nav{width:min(100%, var(--max));justify-content:space-between;align-items:center;gap:1vw;margin:0 auto;padding:1.5vh 1.5vw;display:flex}.brand-link{color:var(--text);font-size:20px;font-weight:700;text-decoration:none}.brand-link:after{content:"";background:linear-gradient(90deg, var(--accent-blue), transparent);width:100%;height:2px;margin-top:.15vh;display:block}.nav-links{align-items:center;gap:1.2vw;margin:0;padding:0;list-style:none;display:flex}.nav-links li{position:relative}.nav-links li a{color:var(--muted);font-size:16px;font-weight:600;text-decoration:none}.nav-links li:hover,.nav-links li[aria-current=page]{color:var(--text)}.nav-links li:after{content:"";background:linear-gradient(90deg, var(--accent-teal), var(--accent-blue), var(--accent-red));transform-origin:0;width:100%;height:2px;transition:transform .22s;position:absolute;bottom:-.35vh;left:0;transform:scaleX(0)}.nav-links li:hover:after,.nav-links li[aria-current=page]:after{transform:scaleX(1)}.arrow{transition:transform .2s}.language-selector{position:relative}.language-selector:hover .language-menu{opacity:1;visibility:visible;transform:translateY(0)}.language-selector:hover .arrow{transform:rotate(180deg)}.language-button{color:var(--accent-blue);font:inherit;cursor:pointer;background:0 0;border:1px solid #2f4b8f33;border-radius:999px;align-items:center;gap:.4vw;padding:.4vh .8vw;font-size:16px;font-weight:500;transition:border-color .2s,transform .2s;display:flex}.language-button:hover{background:#2f4b8f0d;border-color:#2f4b8f66}.language-menu{opacity:0;visibility:hidden;background:#fff;border-radius:12px;min-width:140px;transition:all .2s;position:absolute;top:calc(100% + .5vh);right:0;overflow:hidden;transform:translateY(-6px);box-shadow:0 10px 30px #00000014}.language-menu a{color:var(--accent-blue);padding:.8vh 1vw;text-decoration:none;display:block}.language-menu a:hover{background:#2f4b8f0f}.hero-wrapper{isolation:isolate;background-color:var(--bg);border-bottom:0;position:relative}.hero{z-index:10;grid-template-columns:minmax(35vw,.6fr) minmax(35vw,.4fr);justify-self:center;align-items:center;gap:5vw;width:75%;margin:0 auto;padding:7.5vh 1.5vw 5vh;display:grid;position:sticky;top:0}.eyebrow{letter-spacing:.03em;text-transform:uppercase;height:1.2em;color:var(--accent-blue);font-family:Alumni Sans SC,sans-serif;font-size:24px;font-weight:1500;line-height:1.5;overflow:hidden}.eyebrow-text{flex-direction:column;animation:22s infinite rotate-eyebrow;display:flex}.eyebrow-text span{white-space:nowrap;align-items:center;height:1.2em;display:flex}@keyframes rotate-eyebrow{0%,8%{transform:translateY(0%)}10%,18%{transform:translateY(-10%)}20%,28%{transform:translateY(-20%)}30%,38%{transform:translateY(-30%)}40%,48%{transform:translateY(-40%)}50%,58%{transform:translateY(-50%)}60%,68%{transform:translateY(-60%)}70%,78%{transform:translateY(-70%)}80%,88%{transform:translateY(-80%)}90%,98%{transform:translateY(-90%)}to{transform:translateY(0%)}}.name{letter-spacing:-10%;color:var(--accent-blue);margin:0 0 1vh;font-family:Major Mono Display,monospace;font-size:6vw;line-height:.92}.action-links{flex-wrap:wrap;align-items:center;gap:.75vw;margin-top:1.5vh;display:flex}.resume-button{background:var(--accent-blue);color:var(--surface)}.resume-button:hover{color:var(--surface);background:linear-gradient(-45deg, var(--accent-teal), var(--accent-blue), var(--accent-red))}.contact-button{background:var(--surface);color:var(--text);border:1px solid var(--border);z-index:0;position:relative;overflow:hidden}.resume-button,.contact-button{border-radius:var(--radius);min-height:22px;font:"Abel", sans-serif;cursor:pointer;justify-content:center;align-items:center;margin:2vh .1vw;padding:1vh 1vw;font-size:20px;font-weight:700;text-decoration:none;display:inline-flex}.resume-button:hover,.contact-button:hover{transform:translateY(-2px);box-shadow:0 10px 24px #1217171f}.contact-button:before{content:"";border-radius:var(--radius);background:linear-gradient(120deg, transparent, var(--accent-teal), var(--accent-blue), var(--accent-indigo),var(--accent-violet), var(--accent-fuschia), var(--accent-red), transparent);-webkit-mask-composite:xor;opacity:0;background-position:-100%;background-size:200% 200%;padding:2px;transition:opacity .3s;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.contact-button:hover:before{opacity:1;animation:1s linear borderSweep}@keyframes borderSweep{0%{background-position:-100%}to{background-position:100%}}.about{border-left:1px solid var(--muted);padding-left:1vw;font-size:18px}.horizontal-section{border:10px solid var(--accent-blue);border-radius:var(--radius);background-color:var(--accent-blue);grid-template-columns:minmax(150px,30%) 70%;align-content:center;justify-self:center;gap:10px;width:min(75vw,1400px);height:85vh;margin:0 0 10%;display:grid;position:relative;overflow:hidden}.section-hero{z-index:10;background-color:var(--bg);border:1px solid var(--accent-blue);background-color:var(--accent-blue);align-content:center;height:85vh;padding:0 10px}.section-hero h2{letter-spacing:.03em;text-transform:uppercase;color:var(--surface-soft);font-family:Alumni Sans SC,sans-serif;font-size:30px;font-weight:1500}.section-hero p{color:var(--surface);margin:.1vh 0 1vh;font-family:Abel,sans-serif;font-size:18px}.cards-container{grid-auto-columns:26vw;grid-auto-flow:column;align-items:center;gap:2vw;height:85vh;display:grid}.card-boundary{aspect-ratio:1;perspective:1000px;background-color:#0000;width:100%}.card{z-index:0;border-radius:var(--radius);background:var(--surface);width:100%;height:100%;transform-style:preserve-3d;flex-shrink:0;justify-content:center;align-items:center;transition:transform .8s;position:relative}.card-boundary:hover .card{transform:rotateY(180deg)}.card-front,.card-back{backface-visibility:hidden;flex-direction:column;width:100%;height:100%;display:flex;position:absolute;inset:0}.card-front a,.card-back a{width:100%;height:100%;text-decoration:none;display:block}.card-front h3,.card-back h3{color:var(--accent-blue);margin:5%;font-family:Abel,sans-serif;font-size:20px;font-weight:1000}.card-front p,.card-back p{color:var(--text);margin:0 5% 1vh;font-family:Abel,sans-serif;font-size:18px}.card-front{transform:rotateY(0)}.card img{aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border);justify-self:center;width:90%;margin:0 0 .8vh;display:block}.card-back{background-color:var(--surface);color:var(--text);border-radius:var(--radius);transform:rotateY(180deg)}.skill{color:var(--accent-blue);border:1px solid var(--accent-blue);border-radius:999px;margin:5px;padding:5px;font-weight:600;display:inline-block}.progress-bar{align-items:top;transform-origin:0;background-color:var(--surface);border-radius:999px;justify-items:right;width:50%;height:5%;position:absolute;bottom:0;left:0}.progress-bar p{color:(var(--accent-blue));margin:0 1vw;padding:0;font-size:20px}.playground-wrapper{border:1px solid (var(--border));border-radius:var(--radius);background-color:(var(--surface));justify-self:center;width:100%;height:90vh;position:relative}.playground-wrapper svg{width:100%;height:100%;position:absolute;inset:0}.ball{background:var(--accent-blue);z-index:1000;border-radius:50%;width:30px;height:30px;position:absolute;top:0;left:0}.playground{justify-self:center;width:75%;height:100%}.playground h2{letter-spacing:.03em;text-transform:uppercase;color:var(--accent-blue);font-family:Alumni Sans SC,sans-serif;font-size:30px;font-weight:1500}.playground p{color:var(--text);margin:.1vh 0 1vh;font-family:Abel,sans-serif;font-size:18px}.playground-canvas{background:var(--surface);border:5px solid var(--accent-blue);border-radius:var(--radius);touch-action:none;z-index:10;width:100%;height:75%;padding:5px;position:relative;overflow:hidden}.playground-canvas-inner{cursor:pointer;will-change:transform;--color:var(--surface-medium);background-color:var(--surface);background-image:linear-gradient(0deg, transparent 24%, var(--color) 25%, var(--color) 26%, transparent 27%,transparent 74%, var(--color) 75%, var(--color) 76%, transparent 77%,transparent), linear-gradient(90deg, transparent 24%, var(--color) 25%, var(--color) 26%, transparent 27%,transparent 74%, var(--color) 75%, var(--color) 76%, transparent 77%,transparent);background-size:55px 55px;width:120vw;height:100vh;position:absolute;inset:0}.playground-canvas-inner img{border:1px solid var(--surface-strong);border-radius:var(--radius);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:10vw;height:auto;position:absolute}.playground-canvas-inner p{position:absolute;top:5.5vh;left:2.5vw}.pin{background-color:var(--muted);border:1px solid var(--surface-strong);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;z-index:10;border-radius:100%;width:1vw;height:1vw;position:absolute;box-shadow:.25vw .5vw 1.25vw #121717cc,inset .1vw .1vw .25vw #ffffff80}:root{--bg:#fbfbf8;--surface:#fff;--surface-soft:#f1f5f4;--surface-medium:#dadedd;--surface-strong:#102936;--border:#ccd5d2;--text:#121717;--muted:#4e5a5c;--accent-red:#871f3e;--accent-fuschia:#871f72;--accent-violet:#681f87;--accent-indigo:#341f87;--accent-blue:#1f3e87;--accent-teal:#1f7287;--accent-green:#27685c;--accent-light:#5682ef;--shadow:0 18px 50px #1217171f;--radius:8px;--max:1180px}.project-page .title{background-color:var(--bg);border:none;justify-self:center;align-items:center;gap:0;margin:auto;padding:7.5vh 1.5vw 5vh;position:relative}.project-page h1{color:var(--accent-blue);font-family:Abel;font-size:40px;font-weight:1000}.project-page p{color:var(--text);margin:.1vh 0 1vh;font-family:Abel,sans-serif;font-size:20px}.project-page section{background-color:var(--surface);border:1px solid var(--border);border-radius:var(--radius);justify-self:center;width:75%;margin:3vh;padding:clamp(1.5rem,4vw,3rem);position:relative;overflow:hidden}.project-page section h2{letter-spacing:.03em;text-transform:uppercase;color:var(--accent-blue);font-family:Alumni Sans SC,sans-serif;font-size:30px;font-weight:1500}.project-page .bats h2{color:#6b6650;margin:0% 5%}.project-page section h3{color:var(--accent-blue);font-family:Abel,sans-serif;font-size:20px;font-weight:1000}embed{width:100%;height:80vh}.project-page .image-grid{grid-template-columns:auto auto auto auto auto auto auto auto auto auto auto;display:grid}.project-page .image-grid div{padding:0 5px}.project-page .image-grid img{width:100%}
