.navbar{z-index:1000;height:var(--navbar-height);background-color:var(--color-green);width:100%;color:var(--color-white);letter-spacing:.04em;text-transform:uppercase;font-size:1.25rem;font-weight:500;transition:background-color .4s;position:sticky;top:0}.navbar-container{align-items:center;gap:16px;height:100%;padding:0 5%;display:flex}.navbar-brand{--logo-height:35px;align-items:center;gap:calc(var(--logo-height) * .3);flex-shrink:0;display:flex}.navbar-logo{align-items:center;display:flex}.navbar-logo img{height:var(--logo-height);width:auto;display:block}.theme-lever{height:var(--logo-height);color:inherit;cursor:pointer;background:0 0;border:none;padding:0;display:block}.theme-lever svg{fill:currentColor;width:auto;height:100%;display:block;overflow:visible}.theme-lever-handle{transition:transform .35s cubic-bezier(.34,1.56,.64,1);transform:rotate(-45deg)}.theme-lever.is-dark .theme-lever-handle{transform:rotate(45deg)}.theme-lever:hover .theme-lever-handle{transform:rotate(-35deg)}.theme-lever.is-dark:hover .theme-lever-handle{transform:rotate(35deg)}.theme-lever-wrap{position:relative}.theme-lever.is-hinting .theme-lever-handle{animation:.6s ease-in-out 2 lever-wiggle}@keyframes lever-wiggle{0%,to{transform:rotate(-45deg)}50%{transform:rotate(-15deg)}}.theme-lever-hint{color:var(--color-white);box-shadow:var(--shadow-card);letter-spacing:0;text-transform:none;white-space:nowrap;pointer-events:none;background-color:#000;border-radius:12px;padding:8px 14px;font-size:.85rem;font-weight:500;animation:6s both hint-in-out;position:absolute;top:calc(100% + 14px);left:-6px}.theme-lever-hint:before{content:"";background-color:inherit;width:12px;height:12px;position:absolute;top:-6px;left:16px;transform:rotate(45deg)}@keyframes hint-in-out{0%{opacity:0;transform:translateY(-6px)}6%,90%{opacity:1;transform:none}to{opacity:0}}@media (prefers-reduced-motion:reduce){.theme-lever.is-hinting .theme-lever-handle{animation:none}}.navbar-menu{gap:32px;margin-left:auto;list-style:none;display:flex}.navbar-menu a{color:inherit;text-decoration:none;transition:color .2s}.navbar-menu a:hover{color:var(--color-yellow)}.navbar-hamburger{color:inherit;cursor:pointer;background:0 0;border:none;flex-direction:column;gap:5px;padding:8px;display:none}.navbar-hamburger span{background-color:currentColor;border-radius:10px;width:30px;height:3px;display:block}.navbar-mobile-menu{top:var(--navbar-height);background-color:var(--color-green);width:100%;list-style:none;display:none;position:absolute;left:0}.navbar-mobile-menu a{color:inherit;text-align:center;padding:1rem;text-decoration:none;display:block}.navbar-mobile-menu a:hover{background-color:#ffffff26}@media (width<=980px){.navbar-menu{display:none}.navbar-hamburger{margin-left:auto;display:flex}.navbar-mobile-menu.active{display:block}.navbar-brand{--logo-height:28px;flex-shrink:10;margin-right:auto}}.about{min-height:calc(100vh - var(--navbar-height));background-color:var(--color-green);color:var(--color-white);padding-top:88px}.banner-stage{transition:grid-template-rows var(--collapse-duration) ease, opacity var(--collapse-duration) ease;grid-template-rows:1fr;display:grid}.banner-collapse{opacity:0;grid-template-rows:0fr}.banner-inner{min-height:0;overflow:hidden}.banner-track{max-width:850px;margin:0 auto 64px;position:relative}.welcome-banner{width:100%;height:auto;animation:.8s .2s both banner-fade-in;display:block}.banner-cat .welcome-banner,.banner-collapse .welcome-banner{animation:banner-wipe var(--cat-duration) linear both}@keyframes banner-fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes banner-wipe{0%,10.8%{clip-path:inset(0)}87.7%,to{clip-path:inset(0 0 0 100%)}}@keyframes nyan-fly{0%{left:-20%}to{left:110%}}@keyframes nyan-bob{0%{transform:translateY(-4%)}to{transform:translateY(4%)}}.about-block{max-width:var(--content-width);justify-content:left;align-items:flex-start;gap:clamp(28px,6vw,76px);margin:0 auto;display:flex}.profile-picture{border:3px solid #f0f8ff;border-radius:30px;flex-shrink:0;width:clamp(180px,26vw,260px);max-width:100%;height:auto;display:block}.text-block{flex:1;width:100%;max-width:780px;font-size:1.15rem}.text-block .section-title{margin-bottom:39px;font-size:clamp(2.25rem,5.2vw,4.25rem);line-height:1}.about-lead{width:fit-content;max-width:100%;font-family:var(--font-mono);text-align:left;--bubble-bg:color-mix(in srgb, var(--color-green) 20%, #253535);padding:20px 28px;font-size:1.4rem;font-weight:400;line-height:1.65}.about-lead .prompt{opacity:.7;font-weight:500}.about-lead .cursor{vertical-align:text-bottom;background-color:currentColor;width:.55em;height:1.1em;margin-left:4px;animation:1.1s step-end infinite cursor-blink;display:inline-block}@keyframes cursor-blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.about-lead .cursor{animation:none}}.speech-bubble{isolation:isolate;position:relative}.speech-bubble-shape{z-index:-1;position:absolute;top:0;left:0;overflow:visible}.speech-bubble-shape path{fill:var(--bubble-bg);stroke:#f0f8ff;stroke-width:2px;stroke-linejoin:round;stroke-dasharray:8 6;transition:fill .4s}.about-facts{flex-wrap:wrap;gap:10px;margin-top:50px;list-style:none;display:flex}.about-facts li{background-color:#ffffff14;border:1.5px solid #fff9;border-radius:999px;padding:6px 14px;font-size:.9rem;font-weight:500}.about-facts li:has(.cv-chip){border-color:var(--color-white);background-color:var(--color-white);padding:0;transition:background-color .2s,border-color .2s}.cv-chip{color:var(--color-green);padding:6px 14px;font-weight:600;display:block}.about-facts li:has(.cv-chip):hover{border-color:var(--color-yellow);background-color:var(--color-yellow)}@media (width<=750px){.about{padding-top:56px}.about-block{flex-direction:column;align-items:center;gap:28px}.banner-track{margin-bottom:40px}.profile-picture{width:min(60vw,220px)}.text-block{font-size:1rem}.about-lead{padding:18px 22px;font-size:1.3rem}}.nyan-cat{width:16%;animation:nyan-fly var(--cat-duration) linear both;position:absolute;top:50%;left:-20%;translate:0 -50%}.nyan-cat-svg{width:100%;height:auto;animation:.3s steps(2,end) infinite nyan-bob;display:block;position:relative}.nyan-trail{background:linear-gradient(red 0 16.66%,#f90 16.66% 33.33%,#ff0 33.33% 50%,#3f0 50% 66.66%,#09f 66.66% 83.33%,#63f 83.33% 100%);width:900%;height:64%;animation:.3s steps(2,end) infinite reverse nyan-bob;position:absolute;top:18%;right:80%}.character-sheet{--sheet-paper:#fbf6ea;--sheet-ink:#2b2620;--sheet-line:#2b2620;--sheet-muted:#6b6257;--sheet-box:#fff;--portrait-bg:#ece6fb;--portrait-pattern:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' shape-rendering='crispEdges'%3E%3Cg fill='%23b8a6ea'%3E%3Crect x='3' y='1' width='1' height='5'/%3E%3Crect x='1' y='3' width='5' height='1'/%3E%3Crect x='11' y='9' width='1' height='3'/%3E%3Crect x='10' y='10' width='3' height='1'/%3E%3C/g%3E%3Cg fill='%23d3c8f3'%3E%3Crect x='13' y='3' width='1' height='1'/%3E%3Crect x='6' y='12' width='1' height='1'/%3E%3Crect x='9' y='6' width='1' height='1'/%3E%3C/g%3E%3C/svg%3E");max-width:var(--content-width);background-color:var(--sheet-paper);color:var(--sheet-ink);border:3px solid var(--sheet-line);border-radius:var(--radius-card);margin:72px auto 0;padding:28px;transition:background-color .4s,color .4s;box-shadow:8px 8px #00000040}:root[data-theme=dark] .character-sheet{--sheet-paper:#1c1727;--sheet-ink:#ece4d4;--sheet-line:#ece4d4;--sheet-muted:#b3a998;--sheet-box:#251f33;--portrait-bg:#291e44;--portrait-pattern:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' shape-rendering='crispEdges'%3E%3Cg fill='%235e4b99'%3E%3Crect x='3' y='1' width='1' height='5'/%3E%3Crect x='1' y='3' width='5' height='1'/%3E%3Crect x='11' y='9' width='1' height='3'/%3E%3Crect x='10' y='10' width='3' height='1'/%3E%3C/g%3E%3Cg fill='%2345377a'%3E%3Crect x='13' y='3' width='1' height='1'/%3E%3Crect x='6' y='12' width='1' height='1'/%3E%3Crect x='9' y='6' width='1' height='1'/%3E%3C/g%3E%3C/svg%3E")}.sheet-label{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--sheet-muted);font-size:.7rem;display:block}.sheet-header{border-bottom:3px solid var(--sheet-line);grid-template-columns:minmax(220px,1fr) 2fr auto;grid-template-areas:"name details portrait";align-items:end;gap:24px;padding-bottom:20px;display:grid}.sheet-name{grid-area:name}.sheet-portrait{aspect-ratio:1;border:2px solid var(--sheet-line);background:var(--portrait-bg) var(--portrait-pattern) 0 0 / 32px 32px;width:96px;image-rendering:pixelated;border-radius:12px;grid-area:portrait;justify-content:center;align-items:flex-end;display:flex;overflow:hidden}.pixel-portrait{width:72%;height:auto;display:block}.sheet-name h2{font-family:var(--font-display);text-transform:uppercase;border-bottom:2px solid var(--sheet-line);padding-bottom:6px;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:400;line-height:1.1}.sheet-details{grid-area:details;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 20px;display:grid}.sheet-details dd{border-bottom:1px solid var(--sheet-line);padding-bottom:4px;font-weight:500}.sheet-body{grid-template-columns:2fr 2fr;gap:24px;margin-top:24px;display:grid}.sheet-abilities{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:16px;display:grid}.ability{text-align:center;border:2px solid var(--sheet-line);background-color:var(--sheet-box);border-radius:14px;flex-direction:column;align-items:center;padding:14px 10px 12px;transition:transform .2s;display:flex;position:relative}.ability:hover{transform:rotate(-1.5deg)scale(1.03)}.ability-name{font-size:.85rem}.ability-score{font-family:var(--font-display);margin-top:4px;font-size:2rem;line-height:1.2}.ability-note{color:var(--sheet-muted);margin-top:10px;font-size:.85rem;line-height:1.35}.sheet-side{flex-direction:column;gap:16px;display:flex}.sheet-side .sheet-box:last-child{flex:1}.sheet-box{border:2px solid var(--sheet-line);background-color:var(--sheet-box);border-radius:14px;padding:16px 18px}.sheet-box-title{font-family:var(--font-display);text-transform:uppercase;margin-bottom:10px;font-size:.95rem;font-weight:400}.sheet-traits{flex-direction:column;gap:10px;display:flex}.sheet-traits dd{font-size:.95rem;line-height:1.4}.sheet-inventory{font-size:.95rem;line-height:1.4;list-style:none}.sheet-inventory li{border-bottom:1px dashed var(--sheet-muted);padding:4px 0}.sheet-inventory li:last-child{border-bottom:none}.sheet-inventory li:before{content:"◆ ";color:var(--color-purple)}@media (width<=900px){.sheet-body{grid-template-columns:1fr}.sheet-header{grid-template-columns:1fr auto;grid-template-areas:"name portrait""details details"}}@media (width<=750px){.sheet-portrait{width:72px}.sheet-details{grid-template-columns:repeat(3,minmax(0,1fr))}.character-sheet{margin-top:48px;padding:20px}.sheet-abilities{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}.skills{background-color:var(--color-blue);color:var(--color-white)}.skills .section-title{margin-bottom:24px}.runner{border-radius:var(--radius-card);background-color:#00000047;max-width:1200px;margin:0 auto;position:relative;overflow:hidden;box-shadow:inset 0 0 0 2px #ffffff26}.runner-canvas{cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:100%;height:auto;display:block}.runner-canvas:focus-visible{outline:3px solid var(--color-yellow);outline-offset:-3px}.runner-overlay{text-align:center;background-color:#00000059;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:16px;font-weight:500;display:flex;position:absolute;inset:0}.runner-overlay .button-primary{color:#1f2328}.runner-win{font-family:var(--font-display);text-transform:uppercase;font-size:1.5rem}.runner-win-message{font-family:var(--font-display);font-size:1.1rem}.runner-hud{z-index:1;pointer-events:none;align-items:flex-start;gap:16px;padding:14px 16px;display:flex;position:absolute;top:0;left:0;right:0}.runner-bars{flex:1;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 20px;list-style:none;display:grid}.runner-bar-label{font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;justify-content:space-between;margin-bottom:5px;font-size:.75rem;display:flex}.runner-bar-track{background-color:#ffffff26;border-radius:999px;height:10px;overflow:hidden;box-shadow:inset 0 0 0 1px #fff3}.runner-bar-fill{border-radius:inherit;height:100%;transition:width .4s cubic-bezier(.34,1.56,.64,1)}.runner-controls{flex-shrink:0;gap:8px;display:flex}.runner-control{width:40px;height:40px;color:var(--color-white);cursor:pointer;pointer-events:auto;background-color:#00000059;border:2px solid #ffffff59;border-radius:10px;flex-shrink:0;place-items:center;padding:0;display:grid}.runner-control svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.runner-control:hover{background-color:#0000008c}.runner-control:focus-visible{outline:3px solid var(--color-yellow);outline-offset:2px}.skill-overview{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:20px;max-width:1200px;margin:24px auto 0;display:grid}.skill-table{border-collapse:collapse;border-radius:var(--radius-card);background-color:var(--color-card);width:100%;color:var(--color-text);box-shadow:var(--shadow-card);overflow:hidden}.skill-table caption{border-radius:var(--radius-card) var(--radius-card) 0 0;background-color:var(--color-card);color:var(--color-text);font-family:var(--font-display);text-align:left;text-transform:uppercase;align-items:center;gap:10px;padding:14px 18px 10px;font-size:.95rem;display:flex}.skill-swatch{border-radius:4px;flex-shrink:0;width:14px;height:14px}.skill-table td{border-top:1px solid var(--color-tag-bg);padding:8px 18px;font-weight:600}.skill-table tr:last-child td{padding-bottom:14px}@media (width<=750px){.runner-hud{gap:10px;padding:10px 12px}.runner-bars{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px}.runner-bar-label{font-size:.65rem}.runner-controls{flex-direction:column}.runner-control{width:34px;height:34px}.skill-overview{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:20px;max-width:1200px;margin:24px auto 0;display:grid}}.projects{background-color:var(--color-purple)}.projects-block{grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));gap:32px;max-width:1300px;margin:0 auto;display:grid}.specific-project{flex-direction:column;transition:transform .2s,box-shadow .2s;display:flex}.specific-project:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-4px)}.specific-project .tag-list{margin-bottom:16px}.project-media{aspect-ratio:16/10;object-fit:cover;border:1px solid var(--color-media-border);background-color:#1f2a3c;border-radius:10px;width:100%;height:auto;margin-bottom:20px;display:block}.project-media-logo{place-items:center;display:grid}.project-media-logo img{object-fit:contain;width:62%;height:100%}.project-status{color:var(--color-text-muted);margin-top:auto;font-weight:600}.project-links{margin-top:auto;padding-top:8px}@media (width<=750px){.projects-block{grid-template-columns:1fr;gap:20px}}.contact{text-align:center;background-color:var(--color-rust);color:var(--color-white);min-height:calc(100vh - var(--navbar-height));flex-direction:column;align-items:center;padding-bottom:40px;display:flex}.contact .section-title{margin-bottom:16px}.contact-content{flex-direction:column;align-items:center;margin:auto 0;display:flex}.contact-tagline{font-family:var(--font-scribble);text-transform:uppercase;font-size:clamp(2.5rem,8vw,4.5rem);line-height:1.1}.contact-text{margin-top:16px;font-size:1.15rem}.contact-ways{flex-wrap:wrap;justify-content:center;gap:16px;margin-top:32px;display:flex}.contact-ways .button-primary{color:var(--color-rust)}.contact-footer{opacity:.85;padding-top:64px;font-size:.9rem}.contact-footer a{text-underline-offset:3px;text-decoration:underline}.contact-footer a:hover{color:var(--color-yellow)}@media (width<=750px){.contact-ways{flex-direction:column;width:100%;max-width:320px}.contact-footer{padding-top:48px}}:root{--navbar-height:70px;--color-white:#fff;--color-yellow:#e7df03;--color-green:#2e653d;--color-blue:#335f7a;--color-purple:#4d4472;--color-rust:#d55747;--color-text:#1f2328;--color-text-muted:#57606a;--color-card:#fff;--color-tag-bg:#eef1f3;--color-media-border:#ddd;--button-dark-bg:#1f2328;--button-dark-text:#fff;--font-body:"Rubik", sans-serif;--font-display:"Rubik One", sans-serif;--font-scribble:"Rubik Scribble", sans-serif;--font-mono:"DM Mono", monospace;--content-width:1200px;--radius-card:16px;--shadow-card:0 6px 20px #0000002e;--shadow-card-hover:0 12px 28px #00000042}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-green:#173322;--color-blue:#172b3b;--color-purple:#2a1b3a;--color-rust:#45271b;--color-text:#ebe6f3;--color-text-muted:#a9a2b8;--color-card:#211b31;--color-tag-bg:#332a4a;--color-media-border:#3a3350;--button-dark-bg:#ebe6f3;--button-dark-text:#1d1830;--shadow-card:0 6px 20px #00000073;--shadow-card-hover:0 12px 28px #0000008c}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:var(--navbar-height)}body{font-family:var(--font-body);color:var(--color-text);line-height:1.6}main{width:100%}section{padding:20px 5% 96px;transition:background-color .4s}h1,h2,h3{text-wrap:balance}p,li,dd{text-wrap:pretty}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:3px solid var(--color-yellow);outline-offset:3px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.section-title{font-family:var(--font-display);text-transform:uppercase;color:var(--color-white);margin-bottom:32px;font-size:clamp(2.25rem,6vw,3.5rem);font-weight:400;line-height:1.1}.card{background-color:var(--color-card);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:28px;transition:background-color .4s,color .4s}.card h3{text-transform:uppercase;margin-bottom:12px;font-size:1.15rem;font-weight:600}.card p{margin-bottom:14px}.tag-list{flex-wrap:wrap;gap:8px;list-style:none;display:flex}.tag-list li{background-color:var(--color-tag-bg);color:var(--color-text);border-radius:999px;padding:4px 12px;font-size:.85rem;font-weight:500}.button{font-family:var(--font-body);border:2px solid;border-radius:999px;padding:12px 24px;font-size:1rem;font-weight:600;transition:background-color .2s,color .2s,transform .2s;display:inline-block}.button:hover{transform:translateY(-2px)}.button-primary{background-color:var(--color-white);border-color:var(--color-white);color:var(--color-green)}.button-primary:hover{background-color:var(--color-yellow);border-color:var(--color-yellow)}.button-secondary{color:var(--color-white)}.button-secondary:hover{background-color:#ffffff26}.button-dark{background-color:var(--button-dark-bg);border-color:var(--button-dark-bg);color:var(--button-dark-text)}.button-dark:hover{background-color:var(--color-purple);border-color:var(--color-purple);color:var(--color-white)}@media (width<=750px){section{padding:24px 6% 64px}.section-title{margin-bottom:28px}.card{padding:22px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
