/*! (c) 2026 Devashish Tiwari (iydebu). All rights reserved. Copying, reuse or redistribution of this code, art or text is not permitted without written permission. https://iydebu.com */
@font-face{font-family: "Pixelify Sans";src: url("fonts/pixelify-sans.woff2") format("woff2");font-weight: 400 700;font-style: normal;font-display: swap}:root{--bg: #0b1416;--ink: #1a1a2e;--paper: #fffbee;--teal: #14b8a6;--teal-hi: #5eead4;--gold: #ffd54a;--red: #e0474c;--px: "Pixelify Sans",ui-monospace,"Cascadia Mono",Menlo,Consolas,monospace;--sans: system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--safe-b: env(safe-area-inset-bottom,0px)}*{box-sizing: border-box}:root{color-scheme: only light}html,body{margin: 0;background: var(--bg);color: #fff;font-family: var(--sans)}button{font: inherit}[hidden]{display: none !important}html.js,html.js body{height: 100%;overflow: hidden;overscroll-behavior: none}html.js #game{position: fixed;inset: 0;touch-action: none;user-select: none;-webkit-user-select: none;-webkit-tap-highlight-color: transparent}html.js #cv{position: fixed;inset: 0;overflow-y: auto;z-index: 50;display: none;-webkit-overflow-scrolling: touch}html.js.cv-open #cv{display: block}html.no-js #game,html.no-js .cv-bar{display: none}#stage{position: absolute;inset: 0;width: 100%;height: 100%;display: block;image-rendering: pixelated}#hud{position: absolute;top: 0;left: 0;right: 0;display: flex;justify-content: space-between;align-items: flex-start;padding: max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) 0 max(10px,env(safe-area-inset-left));pointer-events: none;z-index: 5;gap: 8px}.hud-l,.hud-r{display: flex;gap: 8px;align-items: center;pointer-events: auto;flex-wrap: wrap}.hud-r{justify-content: flex-end}.pill,.hbtn{font: 800 13px/1 var(--sans);padding: 8px 10px;border-radius: 8px;background: var(--ink);color: #fff;box-shadow: 0 3px 0 rgba(0,0,0,.35);white-space: nowrap}.pill.coin{background: var(--gold);color: var(--ink)}.pill.lives{background: #fff;color: #e0364f;letter-spacing: 1px;padding-left: 8px;padding-right: 8px}.pill.lives i{font-style: normal;color: #c9d3d6}.pill.lives.low{animation: beat .8s ease-in-out infinite}@keyframes beat{50%{transform: scale(1.1)}}.hbtn{border: 0;cursor: pointer;text-decoration: none;min-height: 34px;display: inline-flex;align-items: center}.hbtn.skip{background: var(--paper);color: var(--ink);border: 2px solid var(--ink)}.hbtn:active{transform: translateY(2px);box-shadow: 0 1px 0 rgba(0,0,0,.35)}#camlabel{display: none !important}#card{position: absolute;z-index: 6;left: 50%;top: 64px;transform: translateX(-50%);width: min(440px,calc(100vw - 20px));background: var(--paper);color: var(--ink);border: 3px solid var(--ink);border-radius: 10px;padding: 12px 14px 12px;box-shadow: 0 6px 0 rgba(0,0,0,.3);pointer-events: auto;overflow-y: auto;overscroll-behavior: contain}#card.in{animation: pop .28s cubic-bezier(.2,1.6,.4,1)}@keyframes popl{from{transform: scale(.85);opacity: 0}to{transform: none;opacity: 1}}@keyframes pop{from{transform: translateX(-50%) scale(.85);opacity: 0}to{transform: translateX(-50%) scale(1);opacity: 1}}#card .tag{font: 800 11px var(--sans);letter-spacing: .06em;color: #0e8f81}#card h2{margin: 3px 0 6px;font: 800 18px/1.2 var(--sans)}#card p{margin: 4px 0;font-size: 14px;line-height: 1.4}.chips{display: flex;flex-wrap: wrap;gap: 5px;margin-top: 8px}.chips span{font: 700 12px var(--sans);background: var(--ink);color: #fff;padding: 4px 7px;border-radius: 5px}mark.ph{background: #ffe9a8;color: #6b4a00;border-radius: 3px;padding: 0 3px;font-size: .92em}#card a{color: #0e8f81;font-weight: 700}.lbox{position: absolute;left: 0;right: 0;height: 9vh;max-height: 64px;background: #05090a;z-index: 4;pointer-events: none;transition: transform .45s cubic-bezier(.2,.9,.3,1)}.lbox.top{top: 0;transform: translateY(-101%)}.lbox.bot{bottom: 0;transform: translateY(101%)}.lbox.on{transform: none}#card{display: grid;grid-template-columns: auto 1fr;column-gap: 10px;align-items: center}#card #card-tag{grid-column: 2;align-self: end}#card h2{grid-column: 2;align-self: start;text-wrap: balance;overflow-wrap: anywhere}#card #card-body{grid-column: 1 / -1;min-width: 0}#card .emblem{grid-column: 1;grid-row: 1 / span 2;width: 44px;height: 44px;margin: 0;image-rendering: pixelated;animation: emb .5s cubic-bezier(.2,1.6,.4,1) both}@keyframes emb{from{transform: scale(0) rotate(-90deg)}to{transform: none}}#card h2 .caret{display: inline-block;width: .5em;height: 1em;margin-left: 2px;vertical-align: -2px;background: #0e8f81;animation: blink .5s steps(1) infinite}@keyframes blink{50%{opacity: 0}}#card .rise{animation: rise .4s ease-out both}@keyframes rise{from{opacity: 0;transform: translateY(6px)}to{opacity: 1;transform: none}}#card .num{font-weight: 800;color: #0e8f81;font-variant-numeric: tabular-nums}#card .lnk{display: flex;flex-wrap: wrap;gap: 4px 12px;margin-top: 8px}#card .lnk a{white-space: nowrap}@media (prefers-reduced-motion: reduce){.lbox{display: none}#card .emblem,#card .rise{animation: none}}#toast{position: absolute;z-index: 7;left: 50%;top: 40%;transform: translate(-50%,-50%);font: 800 16px var(--px);background: var(--ink);color: var(--gold);padding: 10px 16px;border-radius: 8px;border: 2px solid var(--gold);pointer-events: none;text-align: center;max-width: calc(100vw - 30px)}#toast.in{animation: toast 2.2s ease forwards}@keyframes toast{0%{opacity: 0;transform: translate(-50%,-30%) scale(.9)}12%,75%{opacity: 1;transform: translate(-50%,-50%) scale(1)}100%{opacity: 0;transform: translate(-50%,-60%)}}#touch{position: absolute;left: 0;right: 0;bottom: 0;z-index: 5;display: flex;justify-content: space-between;align-items: flex-end;padding: 0 max(14px,env(safe-area-inset-right)) calc(16px + var(--safe-b)) max(14px,env(safe-area-inset-left));pointer-events: none}body:not(.touch) #touch{display: none !important}#touch > div{display: flex;gap: 12px;align-items: flex-end;pointer-events: auto}#touch button{width: 64px;height: 64px;border-radius: 50%;border: 3px solid rgba(255,255,255,.55);background: rgba(26,26,46,.72);color: #fff;font: 700 22px var(--px);touch-action: none}#touch button.on{background: rgba(20,184,166,.9);transform: scale(.94)}#touch .ud{display: flex;flex-direction: column;gap: 8px}#touch .sm{width: 48px;height: 48px;font-size: 16px}#touch .jump{width: 80px;height: 80px;background: rgba(224,71,76,.88);font-size: 15px}#touch .jump.on{background: #ff6b6b}#touch .fire{width: 64px;height: 64px;background: rgba(14,143,129,.9);font-size: 13px}#touch .fire.on{background: #5eead4;color: var(--ink)}#touch .fire[hidden]{display: none}@media (max-width: 400px){#touch:has(.fire:not([hidden])){padding-left: 8px;padding-right: 8px}#touch:has(.fire:not([hidden])) > div{gap: 6px}#touch:has(.fire:not([hidden])) button{width: 54px;height: 54px}#touch:has(.fire:not([hidden])) .sm{width: 42px;height: 42px}#touch:has(.fire:not([hidden])) .jump{width: 66px;height: 66px}#touch:has(.fire:not([hidden])) .fire{width: 56px;height: 56px}}.pill.gun{background: #0e8f81;color: #fff}.pill.gun.low{background: #e0474c}.pill.run{background: #a78bfa;color: var(--ink);font-variant-numeric: tabular-nums}.pill.run.hot{background: var(--gold)}.pill.goal{background: #1b2427;color: #fff;border: 2px solid #a78bfa}.pill.goal.met{background: #22c55e;border-color: #22c55e;color: var(--ink)}.pill.pow{color: var(--ink);font-variant-numeric: tabular-nums;background: #0b1214 !important;border: 2px solid currentColor;display: inline-flex;align-items: center;gap: 5px}.pill.pow .pow-ic{width: 18px;height: 18px;image-rendering: pixelated;flex: none}.pill.pow.magnet{color: #ff8aa0}.pill.pow.dbl{color: #5eead4}.pill.pow.shield{color: #93c5fd}.pill.pow.end{animation: beat .5s ease-in-out infinite}#map .mid.daily{background: var(--gold);color: var(--ink)}.score{margin: 6px 0 2px;font: 800 17px var(--sans);color: #fff}.score b{color: var(--gold);font-size: 22px}.score em{font-style: normal;color: #a78bfa}.mid small{display: block;margin-top: 3px;font: 600 12px var(--sans);opacity: .75}.mid.endless{background: #a78bfa;color: var(--ink)}.screen{position: absolute;inset: 0;z-index: 10;display: flex;align-items: center;justify-content: center;padding: 16px;background: radial-gradient(ellipse at center,rgba(6,19,23,.35),rgba(6,19,23,.8));overflow-y: auto}#title.screen{background: linear-gradient(to bottom,rgba(6,19,23,.15),rgba(6,19,23,.55))}.panel{background: rgba(11,20,22,.92);border: 3px solid var(--teal);border-radius: 14px;padding: 22px 20px;text-align: center;box-shadow: 0 8px 0 rgba(0,0,0,.35),0 0 0 3px rgba(0,0,0,.4);width: min(420px,100%);max-height: 100%;overflow-y: auto;margin: auto}.panel.wide{width: min(760px,100%)}.panel.menu{display: flex;flex-direction: column;gap: 9px}.logo{font: 900 clamp(48px,14vw,84px)/1 var(--px);letter-spacing: .06em;color: var(--gold);text-shadow: 4px 4px 0 var(--ink),6px 6px 0 var(--teal);animation: bob 2.4s ease-in-out infinite}@keyframes bob{50%{transform: translateY(-5px)}}.sub{margin: 12px 0 2px;font: 700 15px var(--sans)}.sub2{margin: 2px 0 6px;font: 13px var(--sans);opacity: .75}.btns{display: flex;flex-direction: column;gap: 10px;margin: 18px 0 10px}.big,.mid{display: block;text-align: center;text-decoration: none;cursor: pointer;border: 3px solid var(--ink);border-radius: 10px;background: var(--paper);color: var(--ink);font: 800 18px var(--px);padding: 14px;box-shadow: 0 5px 0 var(--ink);transition: transform .08s}.mid{font: 800 15px var(--sans);padding: 11px;box-shadow: 0 4px 0 var(--ink)}.big.primary,.mid.primary{background: var(--teal);color: #03201c}.big:hover,.mid:hover,.big:focus-visible,.mid:focus-visible{transform: translateY(-2px);outline: 3px solid var(--gold);outline-offset: 2px}.big:active,.mid:active{transform: translateY(3px);box-shadow: 0 1px 0 var(--ink)}.big small{display: block;margin-top: 5px;font: 600 12px var(--sans);opacity: .75;letter-spacing: 0}.ask{margin: 16px 0 0;font: 700 14px var(--sans);color: var(--teal-hi)}.link{background: none;border: 0;color: var(--teal-hi);text-decoration: underline;cursor: pointer;font-size: 13px}.hint{font-size: 12px;opacity: .65;margin: 6px 0 0}body.touch .only-key,body:not(.touch) .only-touch{display: none}.scr-h{margin: 0 0 12px;font: 900 24px var(--px);color: var(--gold);letter-spacing: .05em}.row{display: flex;gap: 8px;margin-top: 14px;flex-wrap: wrap}.row > *{flex: 1 1 120px}.nodes{position: relative;display: grid;grid-template-columns: repeat(var(--n,5),1fr);gap: 8px;padding: 26px 0 4px}.map-path{position: absolute;inset: 0;width: 100%;height: 100%;pointer-events: none;z-index: 0;overflow: visible}.map-path line{stroke: #2c5a5a;stroke-width: 6;stroke-dasharray: 2 10;stroke-linecap: round}.map-path line.lit{stroke: var(--gold)}.stop{position: relative;z-index: 1;display: flex;flex-direction: column;align-items: center;gap: 8px;min-width: 0}.lvl{position: relative;width: 72px;height: 72px;padding: 0;border-radius: 50%;cursor: pointer;display: grid;place-items: center;--face: var(--teal);--edge: #0a6f64;background: radial-gradient(circle at 34% 30%,rgba(255,255,255,.45) 0 12%,transparent 13%),var(--face);border: 4px solid var(--ink);box-shadow: 0 7px 0 var(--edge),0 7px 0 3px var(--ink),0 14px 12px rgba(0,0,0,.45);transition: transform .08s,box-shadow .08s;-webkit-tap-highlight-color: transparent}.lvl .lv-n{font: 900 32px/1 var(--px);color: var(--ink);text-shadow: 2px 2px 0 rgba(255,255,255,.35)}.lvl:hover:not(:disabled),.lvl:focus-visible{transform: translateY(-3px);box-shadow: 0 10px 0 var(--edge),0 10px 0 3px var(--ink),0 18px 14px rgba(0,0,0,.45);outline: 3px solid #fff;outline-offset: 5px}.lvl:active:not(:disabled){transform: translateY(6px);box-shadow: 0 1px 0 var(--edge),0 1px 0 3px var(--ink)}.stop.done .lvl{--face: var(--gold);--edge: #a67c0c}.stop.locked .lvl{--face: #2a3638;--edge: #172022;cursor: not-allowed;border-color: #172022;box-shadow: 0 5px 0 #172022;background: var(--face)}.lock{width: 22px;height: 18px;margin-top: 8px;background: #7b8b8e;position: relative;display: block;box-shadow: inset 0 0 0 3px #5d6b6e}.lock::before{content: "";position: absolute;left: 4px;top: -12px;width: 8px;height: 10px;border: 3px solid #7b8b8e;border-bottom: 0}.lock::after{content: "";position: absolute;left: 9px;top: 6px;width: 4px;height: 6px;background: #172022}.star{position: absolute;right: -10px;top: -10px;width: 30px;height: 30px;background: #fff3b0;filter: drop-shadow(2px 2px 0 var(--ink));clip-path: polygon(50% 0,63% 35%,100% 38%,72% 60%,81% 100%,50% 78%,19% 100%,28% 60%,0 38%,37% 35%)}.lbl{font: 900 13px/1.15 var(--sans);color: #fff;text-align: center;text-shadow: 0 2px 0 #000}.stop.locked .lbl{color: #6f7f82}.stop.endless .lvl{--face: #a78bfa;--edge: #6d4fd1}.stop.endless .lv-n{font-size: 36px}.stop.endless-locked .lvl{--face: #3b2f63;--edge: #241a45;border-color: #241a45;box-shadow: 0 5px 0 #241a45;position: relative}.stop.endless-locked .lv-n{font-size: 36px;color: #8f7fc9}.stop.endless-locked .lbl{color: #a78bfa}.lock.mini{position: absolute;right: -6px;bottom: -4px;margin: 0;transform: scale(.6);transform-origin: bottom right}.stop .go{position: absolute;top: -26px;font: 900 11px var(--px);letter-spacing: .08em;color: var(--ink);background: #fff;padding: 3px 7px;border-radius: 4px;animation: goBob .9s ease-in-out infinite;z-index: 2}.stop .go::after{content: "";position: absolute;left: 50%;bottom: -5px;margin-left: -5px;border: 5px solid transparent;border-bottom: 0;border-top-color: #fff}.stop.cur .lvl{animation: lvlPulse 1.4s ease-out infinite}@keyframes goBob{50%{transform: translateY(-5px)}}@keyframes lvlPulse{0%{outline: 0 solid rgba(94,234,212,.7);outline-offset: 2px}100%{outline: 10px solid rgba(94,234,212,0);outline-offset: 8px}}.map-info{margin: 18px 0 0;min-height: 2.6em;font: 600 14px/1.3 var(--sans);color: #cfe}.map-info b{display: block;font: 900 15px var(--px);color: var(--gold);letter-spacing: .04em}@media (prefers-reduced-motion: reduce){.stop .go,.stop.cur .lvl{animation: none}}.tree{display: grid;grid-template-columns: repeat(4,1fr);gap: 12px;margin: 10px 0 16px}.branch h3{font: 800 12px var(--sans);color: var(--teal-hi);margin: 0 0 8px;letter-spacing: .06em;text-transform: uppercase}.sk{display: flex;align-items: center;gap: 8px;padding: 9px;margin-bottom: 8px;border-radius: 8px;border: 2px dashed #3a4a4d;font: 700 13px var(--sans);color: #7c8d90;text-align: left}.sk i{width: 14px;height: 14px;border-radius: 50%;background: #3a4a4d;flex: none}.sk.lit{border: 2px solid var(--teal);color: #fff;background: rgba(20,184,166,.14)}.sk.lit i{background: var(--teal-hi);box-shadow: 0 0 10px var(--teal-hi)}.travel{columns: 4 160px;column-gap: 12px;margin: 10px 0 16px;text-align: left}.tw{break-inside: avoid;margin-bottom: 12px}.tw h3{break-after: avoid;font: 800 12px var(--sans);color: var(--teal-hi);margin: 0 0 8px;letter-spacing: .06em;text-transform: uppercase}.tsign{break-inside: avoid;display: flex;flex-direction: column;gap: 2px;width: 100%;margin-bottom: 7px;padding: 8px 9px;cursor: pointer;text-align: left;background: #102226;border: 2px solid #2c5a5a;border-radius: 8px;color: #fff}.tsign b{font: 800 12px var(--sans);color: var(--gold);letter-spacing: .05em}.tsign span{font: 600 12px/1.25 var(--sans)}.tsign:hover,.tsign:focus-visible{border-color: var(--teal);outline: 2px solid var(--gold);outline-offset: 1px}.controls{font-size: 12px;opacity: .8;margin-top: 6px;line-height: 1.5;display: flex;flex-direction: column}.contact a{color: var(--teal-hi);font-weight: 700}.contact p{margin: 4px 0}.roll-box{height: 90px;overflow: hidden;position: relative;margin: 6px 0;mask-image: linear-gradient(transparent,#000 25%,#000 75%,transparent);-webkit-mask-image: linear-gradient(transparent,#000 25%,#000 75%,transparent)}.roll{animation: roll 9s linear infinite;font-size: 13px;opacity: .85}.roll p{margin: 10px 0}@keyframes roll{from{transform: translateY(90px)}to{transform: translateY(-100%)}}@media (max-width: 600px){.tree{grid-template-columns: 1fr 1fr}.travel{columns: auto}.tw{display: grid;grid-template-columns: 1fr 1fr;column-gap: 7px;align-items: stretch}.tw h3{grid-column: 1 / -1}.nodes{grid-template-columns: repeat(6,1fr);row-gap: 34px}.stop{grid-column: span 2}.stop:nth-child(5){grid-column: 2 / span 2}.stop:nth-child(6){grid-column: 4 / span 2}.nodes:has(.stop:nth-child(7)) .stop:nth-child(5){grid-column: auto / span 2}.nodes:has(.stop:nth-child(7)) .stop:nth-child(6){grid-column: auto / span 2}.lvl{width: 64px;height: 64px}.pill,.hbtn{font-size: 12px;padding: 7px 8px}#card{top: 60px;padding: 10px 12px}#card h2{font-size: 16px}#card p{font-size: 13px}}@media (max-height: 500px) and (orientation: landscape){.panel{padding: 12px 16px}.logo{font-size: 44px}.btns{flex-direction: row;margin: 10px 0 6px}.btns > *{flex: 1}#card{top: 50px;width: min(380px,48vw);left: auto;right: max(10px,env(safe-area-inset-right));transform: none}#card.in{animation: popl .28s cubic-bezier(.2,1.6,.4,1)}#card h2{font-size: 16px}#card p{font-size: 13px;line-height: 1.35}#touch button{width: 54px;height: 54px}#touch .jump{width: 66px;height: 66px}#touch .fire{width: 54px;height: 54px}.tree{grid-template-columns: repeat(4,1fr)}.travel{columns: 4}.nodes{padding-top: 22px}.lvl{width: 58px;height: 58px}.lvl .lv-n{font-size: 26px}.map-info{margin-top: 10px}.big small{display: none}}.hbtn.hire{background: var(--gold);color: var(--ink);border: 2px solid var(--ink)}.hbtn .ico-pause{display: inline-block;width: 8px;height: 10px;margin-right: 6px;border-left: 3px solid currentColor;border-right: 3px solid currentColor}.mid.hire,.big.hire{background: var(--gold);color: var(--ink)}.hire-box{background: rgba(255,213,74,.1);border: 2px dashed var(--gold);border-radius: 10px;padding: 10px;margin: 4px 0 6px}.hire-box p{margin: 0 0 8px;font-size: 14px}.contact .big.hire{margin: 10px 0 6px}.contact .mail{font-size: 14px}.hire-link{display: inline-block;margin-top: 10px;color: var(--gold);font-weight: 700;font-size: 14px}.tagl{margin-top: 8px}.carts{display: grid;grid-template-columns: 1fr 1fr;gap: 14px;margin: 14px 0 6px}.cart{position: relative;display: flex;flex-direction: column;align-items: stretch;cursor: pointer;text-decoration: none;color: var(--ink);background: #6b7686;border: 3px solid var(--ink);border-radius: 8px 8px 4px 4px;padding: 10px 10px 12px;box-shadow: 0 6px 0 var(--ink);transition: transform .1s;min-height: 150px;font: inherit}.cart.game{background: #0e8f81}.cart.read{background: #c79a2c}.cart::before{content: "";position: absolute;left: 12px;right: 12px;bottom: -3px;height: 10px;background: repeating-linear-gradient(90deg,#ffd54a 0 4px,transparent 4px 8px);border-top: 2px solid var(--ink)}.cart-top{height: 14px;margin: -2px 14px 10px;border-radius: 3px;background: rgba(0,0,0,.25);background-image: repeating-linear-gradient(90deg,rgba(255,255,255,.25) 0 2px,transparent 2px 6px)}.cart-label{flex: 1;display: flex;flex-direction: column;justify-content: center;gap: 6px;background: var(--paper);border: 3px solid var(--ink);border-radius: 4px;padding: 10px 6px;box-shadow: inset 0 -4px 0 rgba(0,0,0,.08)}.cart-label b{font: 900 22px/1 var(--px);letter-spacing: .04em}.cart.game .cart-label b{color: #0b6f64}.cart.read .cart-label b{color: #8a5a00;font-size: 18px}.cart-label small{font: 700 12px/1.3 var(--sans);color: #333}.cart:hover,.cart:focus-visible{transform: translateY(-4px);outline: 3px solid var(--gold);outline-offset: 3px}.cart:active{transform: translateY(3px);box-shadow: 0 2px 0 var(--ink)}#buddy-say{position: absolute;z-index: 6;left: 0;top: 0;max-width: 220px;pointer-events: none;background: #fff;color: var(--ink);border: 2px solid var(--ink);border-radius: 8px;padding: 6px 9px;font: 800 13px/1.3 var(--sans);box-shadow: 0 3px 0 rgba(0,0,0,.3)}#buddy-say::after{content: "";position: absolute;left: 50%;bottom: -7px;width: 10px;height: 10px;margin-left: -5px;background: #fff;border-right: 2px solid var(--ink);border-bottom: 2px solid var(--ink);transform: rotate(45deg)}#buddy-say.in{animation: say .25s cubic-bezier(.2,1.6,.4,1)}@keyframes say{from{opacity: 0;transform: translateY(6px) scale(.9)}to{opacity: 1;transform: none}}body:has(#card:not([hidden])) #buddy-say{display: none}@media (max-width: 600px){#hud .hbtn{font-size: 11px;padding: 6px 7px;min-height: 32px}.hbtn .ico-pause{margin-right: 0}#btn-pause{font-size: 0}.cart{min-height: 130px}.cart-label b{font-size: 19px}.cart.read .cart-label b{font-size: 15px}}@media (max-height: 500px) and (orientation: landscape){.cart{min-height: 96px}.cart-top{display: none}}#cv{background: #f6f3ea;color: #1c1c28;font: 16px/1.6 var(--sans);outline: none;scroll-behavior: smooth}#cv [id^="cv-"]{scroll-margin-top: 64px}.cv-bar{position: sticky;top: 0;z-index: 2;display: flex;align-items: center;gap: 12px;padding: 8px max(14px,env(safe-area-inset-left));background: var(--ink);box-shadow: 0 2px 10px rgba(0,0,0,.25)}.cv-bar a{font: 800 14px var(--sans);color: #fff;text-decoration: none;white-space: nowrap}.cv-home{color: var(--teal-hi) !important}.cv-nav{flex: 1;display: flex;gap: 16px;overflow-x: auto;scrollbar-width: none;mask-image: linear-gradient(90deg,#000 85%,transparent)}.cv-nav::-webkit-scrollbar{display: none}.cv-nav a{opacity: .8;font-weight: 700;padding: 6px 0}.cv-nav a:hover{opacity: 1;color: var(--teal-hi)}.cv-hire{background: var(--gold);color: var(--ink) !important;padding: 8px 14px;border-radius: 8px;border: 2px solid #000}.cv-page{max-width: 880px;margin: 0 auto;padding: 32px 20px 64px}.cv-hero{padding-bottom: 20px;border-bottom: 3px solid var(--ink)}.cv-kicker{margin: 0 0 6px;font: 800 13px var(--sans);color: #0e8f81;letter-spacing: .04em;text-transform: uppercase}.cv-hero h1{margin: 0;font: 900 clamp(32px,7vw,52px)/1.08 var(--sans);letter-spacing: -.01em}.cv-hero .aka{color: #0e8f81}.cv-tag{margin: 12px 0 10px;font-size: 19px;line-height: 1.5;color: #222;max-width: 64ch}.cv-partner{margin: 0 0 16px;padding: 10px 14px;background: #e3f7f3;border-left: 5px solid var(--teal);border-radius: 6px;font-size: 16px;max-width: 64ch}.cv-cta{display: flex;flex-wrap: wrap;gap: 10px;margin: 0 0 14px}#cv .cv-btn{display: inline-block;padding: 11px 18px;border: 3px solid var(--ink);border-radius: 10px;background: #fff;color: var(--ink);font: 800 15px var(--sans);text-decoration: none;box-shadow: 0 4px 0 var(--ink);cursor: pointer}#cv .cv-btn.primary{background: var(--teal);color: #03201c}#cv .cv-btn.hire{background: var(--gold);color: var(--ink)}#cv .cv-btn:hover{transform: translateY(-2px)}#cv .cv-btn:active{transform: translateY(3px);box-shadow: 0 1px 0 var(--ink)}html.no-js #cv-play,html.no-js #cv-back{display: none}.cv-links{display: flex;flex-wrap: wrap;gap: 6px 16px;margin: 0;font-size: 15px}#cv a{color: #0b7a6e;font-weight: 700}.cv-stats{list-style: none;display: grid;grid-template-columns: repeat(3,1fr);gap: 12px;padding: 0;margin: 20px 0 6px}.cv-stats li{background: #fff;border: 2px solid var(--ink);border-radius: 10px;padding: 12px 14px;box-shadow: 0 3px 0 var(--ink)}.cv-stats b{display: block;font: 900 30px/1 var(--sans);color: #0e8f81}.cv-stats span{font-size: 14px;color: #444}#cv h2{font: 900 22px/1.2 var(--sans);color: var(--ink);margin: 40px 0 14px;padding-bottom: 6px;border-bottom: 2px solid #d8d2c2}#cv h3{margin: 2px 0 4px;font: 800 18px/1.3 var(--sans)}.cv-lead{margin: 0 0 12px;color: #333}.cv-grid{display: grid;grid-template-columns: repeat(auto-fill,minmax(250px,1fr));gap: 14px}.cv-grid.two{grid-template-columns: repeat(auto-fill,minmax(320px,1fr))}.cv-card{background: #fff;border: 2px solid #d8d2c2;border-radius: 12px;padding: 14px 16px}.cv-card.game{padding: 0 0 14px;overflow: hidden}.cv-card.game > :not(img),#cv .cv-card.game > h3{margin-left: 16px;margin-right: 16px}.cv-card.game img{display: block;width: 100%;height: auto;aspect-ratio: 460 / 215;object-fit: cover;background: #1a1a2e;margin-bottom: 10px}.cv-card .meta{margin: 0;font: 800 12px var(--sans);color: #0e8f81;text-transform: uppercase;letter-spacing: .04em}.cv-card .role{margin: 0 0 6px;font-size: 14px;color: #666}.cv-card p,.cv-card ul{margin: 5px 0;font-size: 15px}.cv-card ul{padding-left: 18px}.cv-card .chips{margin-top: 10px}.cv-card .chips span,.cv-oss .lang{font: 700 12px var(--sans);background: #eceae2;color: #333;padding: 3px 8px;border-radius: 5px}.cv-card .go{margin-top: 10px}.cv-feat{border-color: var(--teal);box-shadow: 0 6px 0 rgba(14,143,129,.18)}.cv-card.game.cv-feat > .shot,.cv-card.game.cv-feat > .txt{margin: 0}.cv-feat .shot{display: block;overflow: hidden}.cv-card.game.cv-feat img{aspect-ratio: 8 / 5;margin: 0;object-position: center}.cv-feat .txt{padding: 12px 16px 0}.cv-feat .go .cv-btn{display: inline-block}.cv-time{list-style: none;margin: 0;padding: 0 0 0 22px;border-left: 3px solid var(--teal)}.cv-time > li{position: relative;margin: 0 0 20px}.cv-time > li::before{content: "";position: absolute;left: -31px;top: 6px;width: 15px;height: 15px;border-radius: 50%;background: var(--teal);border: 3px solid #f6f3ea;box-shadow: 0 0 0 2px var(--teal)}.cv-time .meta{margin: 0;font-size: 14px;color: #666}.cv-time .about{margin: 4px 0;color: #555;font-style: italic}.cv-time ul{margin: 6px 0;padding-left: 20px}.cv-oss{list-style: none;margin: 0;padding: 0;display: grid;grid-template-columns: repeat(auto-fill,minmax(260px,1fr));gap: 10px}.cv-oss li{background: #fff;border: 2px solid #d8d2c2;border-radius: 10px;padding: 10px 12px;display: flex;flex-direction: column;gap: 4px;font-size: 14px}.cv-oss .lang{align-self: flex-start}.cv-ai{background: #1a1a2e;color: #fff;border-radius: 14px;padding: 4px 22px 18px;margin-top: 40px}#cv .cv-ai h2{color: var(--gold);border-color: rgba(255,255,255,.15);margin-top: 18px}.cv-ai p{margin: 6px 0;font-size: 17px}.cv-ai dl{display: grid;grid-template-columns: max-content 1fr;gap: 8px 18px;margin: 16px 0 0}.cv-ai dt{font-weight: 800;color: var(--teal-hi)}.cv-ai dd{margin: 0;color: #e8e8f0}.cv-skills{display: grid;grid-template-columns: max-content 1fr;gap: 6px 18px;margin: 0}.cv-skills dt{font-weight: 800}.cv-skills dd{margin: 0}.cv-cert{margin-top: 12px;color: #555}.cv-contact{text-align: center;background: #fff;border: 3px solid var(--ink);border-radius: 14px;padding: 4px 18px 20px;margin-top: 40px;box-shadow: 0 5px 0 var(--ink)}#cv .cv-contact h2{border: 0}.cv-contact .big{display: block;margin: 0 0 14px;padding: 0;border: 0;border-radius: 0;background: none;box-shadow: none;cursor: auto;color: inherit;font: 800 20px/1.4 var(--sans)}.cv-contact .cv-links{justify-content: center;margin-top: 14px}.cv-contact .small{color: #666;font-size: 14px}@media (max-width: 600px){.cv-page{padding: 22px 16px 56px}.cv-stats{gap: 8px}.cv-stats li{padding: 9px}.cv-stats b{font-size: 22px}.cv-stats span{font-size: 12px}.cv-tag{font-size: 17px}.cv-bar{gap: 10px}.cv-hire{padding: 6px 10px;font-size: 13px !important}.cv-ai{padding: 4px 16px 16px}.cv-ai dl,.cv-skills{grid-template-columns: 1fr;gap: 2px 0}.cv-ai dd,.cv-skills dd{margin-bottom: 8px}.cv-grid.two{grid-template-columns: 1fr}}@media print{html.js,html.js body{height: auto;overflow: visible}#game,.cv-bar{display: none !important}html.js #cv{display: block !important;position: static;overflow: visible}#cv{background: #fff;font-size: 12pt}mark.ph{background: none;color: #999}.cv-cta{display: none}.cv-card,.cv-stats li,.cv-oss li,.cv-time > li{break-inside: avoid}.cv-ai{background: #fff;color: #000;border: 2px solid #000}.cv-ai dd{color: #000}.cv-card.game img,.cv-feat .shot{display: none}}.cv-hero{position: relative;overflow: hidden;margin: 0;padding: 26px 24px 26px;border: 3px solid var(--ink);border-radius: 14px;background: linear-gradient(135deg,#0b1416 0%,#0e2a2c 55%,#0d3b39 100%);color: #eafffb;box-shadow: 0 5px 0 var(--ink)}.cv-hero::before{content: "";position: absolute;inset: 0;pointer-events: none;opacity: .5;background: linear-gradient(rgba(94,234,212,.09) 1px,transparent 1px) 0 0 / 8px 8px,linear-gradient(90deg,rgba(94,234,212,.09) 1px,transparent 1px) 0 0 / 8px 8px}.cv-hero::after{content: "";position: absolute;left: 0;right: 0;bottom: 0;height: 8px;pointer-events: none;opacity: .8;background: repeating-linear-gradient(90deg,#14b8a6 0 8px,#0e8f81 8px 16px,#0b5f57 16px 24px,transparent 24px 32px)}.cv-hero > :not(.cv-bot){position: relative}.cv-hero .cv-kicker{color: var(--teal-hi);padding-right: 84px}.cv-hero h1{color: #fff}.cv-hero .aka{color: var(--teal-hi)}.cv-hero .cv-tag{color: #cfe9e4}.cv-hero .cv-partner{background: rgba(20,184,166,.14);color: #eafffb;border-left-color: var(--teal-hi)}#cv .cv-hero .cv-links a{color: var(--teal-hi)}#cv .cv-hero .cv-btn{border-color: #000;box-shadow: 0 4px 0 #000}.cv-bot{position: absolute;right: 18px;top: 16px;width: 64px;pointer-events: none}.cv-bot svg{display: block;width: 100%;height: auto;image-rendering: pixelated;filter: drop-shadow(0 4px 0 rgba(0,0,0,.4));transform-origin: 50% 90%}.cv-bot .hi{display: none;position: absolute;right: 100%;top: 2px;margin-right: 6px;padding: 3px 8px;border: 2px solid #000;border-radius: 6px;background: #fff;color: var(--ink);font: 800 12px var(--px);white-space: nowrap}.cv-name .ghost{visibility: hidden}.cv-name .caret{position: relative;display: inline-block;width: 0;height: .72em}.cv-name .caret::after{content: "";position: absolute;left: 2px;bottom: -.04em;width: .42em;height: .8em;background: var(--teal-hi);animation: cvblink .5s steps(1) infinite}html.cvfx .cv-bot.wave svg{animation: cvwave .45s ease-in-out .35s 4 alternate,cvbob 2.4s ease-in-out 2.2s infinite}html.cvfx .cv-bot.wave .hi{display: block;animation: cvhi 3s ease .5s both}@keyframes cvblink{50%{opacity: 0}}@keyframes cvwave{from{transform: rotate(-12deg)}to{transform: rotate(12deg)}}@keyframes cvbob{50%{transform: translateY(-4px)}}@keyframes cvhi{0%{opacity: 0;transform: scale(.5)}12%,80%{opacity: 1;transform: none}100%{opacity: 0;transform: none}}.cv-card,.cv-oss li,.cv-stats li{transition: transform .2s ease,box-shadow .2s ease,border-color .2s ease}html.cvfx .rv{opacity: 0;translate: 0 18px;transition: opacity .5s ease var(--d,0s),translate .6s cubic-bezier(.2,.9,.3,1) var(--d,0s),transform .2s ease,box-shadow .2s ease,border-color .2s ease}html.cvfx .rv.in{opacity: 1;translate: none}.cv-card:hover,.cv-card:active,.cv-card:focus-within,.cv-card.shot-hover,.cv-oss li:hover,.cv-oss li:active{transform: translateY(-4px);border-color: var(--teal);box-shadow: 0 0 0 3px rgba(20,184,166,.22),0 12px 26px rgba(20,184,166,.28)}.cv-stats li:hover{transform: translateY(-3px);box-shadow: 0 6px 0 var(--ink)}.cv-card.game img{transition: transform .5s ease}.cv-card.game:hover img,.cv-card.game:active img,.cv-card.game.shot-hover img{transform: scale(1.05)}.cv-card .chips span{display: inline-block;margin: 0 2px 4px 0;transition: transform .15s ease,background .15s ease,color .15s ease}.cv-card .chips span:hover{transform: translateY(-2px) scale(1.06);background: var(--teal);color: #03201c}html.cvfx .cv-card.rv:not(.in) .chips span{opacity: 0;transform: scale(.4)}html.cvfx .cv-card.in .chips span{animation: cvchip .35s cubic-bezier(.3,1.6,.5,1) backwards;animation-delay: calc(var(--d,0s) + .3s + var(--i,0) * 50ms)}@keyframes cvchip{from{opacity: 0;transform: scale(.4)}to{opacity: 1;transform: none}}.cv-time{position: relative}html.cvfx .cv-time{border-left-color: transparent}html.cvfx .cv-time::before{content: "";position: absolute;left: -3px;top: 0;bottom: 0;width: 3px;background: var(--teal);transform: scaleY(0);transform-origin: top;transition: transform 1.2s cubic-bezier(.4,0,.2,1)}html.cvfx .cv-time.in::before{transform: none}html.cvfx .cv-time > li.rv::before{transform: scale(0);transition: transform .4s cubic-bezier(.3,1.6,.5,1) calc(var(--d,0s) + .25s)}html.cvfx .cv-time > li.in::before{transform: none}.cv-prog{position: absolute;left: 0;right: 0;bottom: 0;height: 3px;background: var(--teal-hi);transform: scaleX(0);transform-origin: left;pointer-events: none}.cv-nav a{position: relative;transition: opacity .2s,color .2s}.cv-nav a::after{content: "";position: absolute;left: 0;right: 0;bottom: 0;height: 2px;background: var(--teal-hi);transform: scaleX(0);transition: transform .25s ease}#cv .cv-nav a{color: #fff}#cv .cv-nav a:hover,#cv .cv-nav a.on{opacity: 1;color: var(--teal-hi)}.cv-nav a.on::after{transform: none}@media (max-width: 600px){.cv-hero{padding: 20px 16px 24px}.cv-hero .cv-kicker{padding-right: 52px}.cv-bot{width: 42px;right: 12px;top: 12px}}@media (prefers-reduced-motion: reduce){.cv-card,.cv-oss li,.cv-stats li,.cv-card.game img,.cv-card .chips span,.cv-nav a::after{transition: none}.cv-card:hover,.cv-card:active,.cv-card:focus-within,.cv-oss li:hover,.cv-oss li:active,.cv-stats li:hover,.cv-card.game:hover img,.cv-card.game:active img,.cv-card .chips span:hover{transform: none}.cv-name .caret::after{animation: none}}@media print{html.cvfx .rv,html.cvfx .cv-card.rv .chips span{opacity: 1 !important;translate: none !important;transform: none !important;animation: none !important}html.cvfx .cv-time{border-left-color: var(--teal)}html.cvfx .cv-time::before,.cv-prog,.cv-bot,.cv-hero::before,.cv-hero::after{display: none !important}html.cvfx .cv-time > li::before{transform: none !important}.cv-hero{background: #fff;color: #000;border: 2px solid #000;box-shadow: none}.cv-hero h1,.cv-hero .cv-tag,.cv-hero .cv-partner{color: #000}.cv-hero .cv-partner{background: #fff}.cv-hero .cv-kicker,.cv-hero .aka{color: #0e8f81}#cv .cv-hero .cv-links a{color: #0b7a6e}.cv-name .caret{display: none}.cv-name .ghost{visibility: visible}}.cv-toc{display: none}@media screen and (min-width: 1100px){.cv-page{max-width: 1320px;padding: 36px 40px 80px}.cv-nav{visibility: hidden}.cv-top{display: grid;grid-template-columns: 1fr 250px;gap: 22px;align-items: stretch}.cv-hero{padding: 34px 40px 36px}.cv-hero h1{font-size: clamp(48px,4.4vw,68px)}.cv-hero .cv-tag{font-size: 21px}.cv-bot{width: 96px;right: 32px;top: 26px}.cv-hero .cv-kicker{padding-right: 120px}.cv-stats{grid-template-columns: 1fr;grid-auto-rows: 1fr;margin: 0;gap: 14px}.cv-stats li{display: flex;flex-direction: column;justify-content: center;padding: 16px 20px}.cv-stats b{font-size: 44px}.cv-stats span{font-size: 15px}.cv-body{display: grid;grid-template-columns: 210px minmax(0,1fr);gap: 56px;margin-top: 8px}.cv-toc{display: block;position: sticky;top: 76px;align-self: start;padding-top: 44px}.cv-toc-h{margin: 0 0 10px;font: 800 12px var(--sans);letter-spacing: .08em;text-transform: uppercase;color: #8a8474}.cv-toc ol{position: relative;list-style: none;margin: 0;padding: 0 0 0 16px}.cv-toc ol::before,.cv-toc ol::after{content: "";position: absolute;left: 0;top: 4px;bottom: 4px;width: 3px;border-radius: 2px;background: #ddd6c4}.cv-toc ol::after{background: var(--teal);transform: scaleY(var(--p,0));transform-origin: top}#cv .cv-toc a{display: flex;gap: 10px;align-items: baseline;padding: 6px 0;color: #5b574c;font: 700 15px var(--sans);text-decoration: none;transition: color .2s,transform .25s cubic-bezier(.2,.9,.3,1)}.cv-toc a i{font: 400 12px var(--px);font-style: normal;color: #a9a291;transition: color .2s}#cv .cv-toc a:hover{color: var(--ink);transform: translateX(4px)}#cv .cv-toc a.on{color: var(--ink);font-weight: 900;transform: translateX(6px)}.cv-toc a.on i{color: #0e8f81}#cv h2{font-size: 30px;margin-top: 56px}.cv-lead{font-size: 17px}.cv-grid{grid-template-columns: repeat(3,minmax(0,1fr));gap: 18px}.cv-grid.two{grid-template-columns: repeat(2,minmax(0,1fr))}.cv-card{padding: 18px 20px}.cv-card.game > :not(img),#cv .cv-card.game > h3{margin-left: 20px;margin-right: 20px}.cv-card.game.cv-feat{display: grid;grid-template-columns: minmax(0,1.15fr) minmax(0,1fr);padding: 0}.cv-card.game.cv-feat img{height: 100%;object-fit: cover}.cv-feat .txt{padding: 18px 22px 18px}.cv-oss{grid-template-columns: repeat(3,minmax(0,1fr));gap: 14px}.cv-time > li{display: grid;grid-template-columns: minmax(260px,340px) minmax(0,1fr);column-gap: 40px;margin-bottom: 30px}.cv-time > li > :not(ul){grid-column: 1}.cv-time > li > ul{grid-column: 2;grid-row: 1 / span 4;margin: 2px 0 0}.cv-ai{padding: 8px 36px 28px}.cv-ai p{font-size: 19px;max-width: 70ch}.cv-ai dl{grid-template-columns: none;grid-template-rows: auto 1fr;grid-auto-flow: column;grid-auto-columns: minmax(0,1fr);gap: 0 14px}.cv-ai dl > *{margin: 0}.cv-ai dt{padding: 14px 16px 0;border-radius: 10px 10px 0 0;background: rgba(255,255,255,.06)}.cv-ai dd{padding: 4px 16px 14px;border-radius: 0 0 10px 10px;background: rgba(255,255,255,.06)}.cv-skills{grid-template-columns: max-content 1fr;gap: 10px 28px;font-size: 17px}.cv-contact{padding: 10px 40px 34px}.cv-contact .big{font-size: 24px}}@media screen and (min-width: 1600px){.cv-page{max-width: 1480px}.cv-top{grid-template-columns: 1fr 290px}.cv-grid{grid-template-columns: repeat(4,minmax(0,1fr))}.cv-grid.two{grid-template-columns: repeat(2,minmax(0,1fr))}.cv-oss{grid-template-columns: repeat(4,minmax(0,1fr))}}@media print{.cv-toc{display: none !important}html.cvdesk #cv h2 .w{opacity: 1 !important;translate: none !important;rotate: none !important}html.cvdesk .cv-card,html.cvdesk .cv-oss li,html.cvdesk .cv-card.game img{transform: none !important}}html.cvdesk .cv-hero::before{translate: calc(var(--mx,0) * -14px) calc(var(--my,0) * -10px);transition: translate .3s ease-out;inset: -20px}html.cvdesk .cv-bot{translate: calc(var(--mx,0) * 16px) calc(var(--my,0) * 10px);transition: translate .3s ease-out}html.cvdesk .cv-hero::after{animation: cvground 2.4s linear infinite}@keyframes cvground{to{background-position: 32px 0}}html.cvdesk .cv-card,html.cvdesk .cv-oss li,html.cvdesk .cv-stats li{position: relative}html.cvdesk .cv-card::after,html.cvdesk .cv-oss li::after{content: "";position: absolute;inset: 0;border-radius: inherit;pointer-events: none;opacity: 0;background: radial-gradient(260px circle at var(--gx,50%) var(--gy,50%),rgba(20,184,166,.16),transparent 70%);transition: opacity .25s}html.cvdesk .cv-card:hover::after,html.cvdesk .cv-oss li:hover::after{opacity: 1}html.cvdesk .cv-card:hover,html.cvdesk .cv-oss li:hover{transform: perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(-5px)}html.cvdesk .cv-card.tilt,html.cvdesk .cv-oss li.tilt{transition: transform .08s linear,box-shadow .2s ease,border-color .2s ease,opacity .5s ease var(--d,0s),translate .6s cubic-bezier(.2,.9,.3,1) var(--d,0s)}html.cvdesk .cv-card.game img{transform: translateY(calc(var(--py,0) * 14px)) scale(1.14);transition: transform .12s linear}html.cvdesk .cv-card.game:hover img{transform: translateY(calc(var(--py,0) * 14px)) scale(1.2);transition: transform .4s ease}html.cvdesk #cv h2.rv{opacity: 1;translate: none}html.cvdesk #cv h2 .w{display: inline-block;opacity: 0;translate: 0 .55em;rotate: 4deg;transition: opacity .45s ease,translate .6s cubic-bezier(.2,.9,.3,1),rotate .6s cubic-bezier(.2,.9,.3,1);transition-delay: calc(var(--i,0) * 70ms)}html.cvdesk #cv h2.in .w{opacity: 1;translate: none;rotate: none}html.cvdesk #cv section:not(.cv-ai):not(.cv-contact) > h2{background: linear-gradient(var(--teal),var(--teal)) left bottom -2px / 0 4px no-repeat;transition: background-size .7s cubic-bezier(.4,0,.2,1) .35s}html.cvdesk #cv section:not(.cv-ai):not(.cv-contact) > h2.in{background-size: 90px 4px}html.cvfx.cvdesk .cv-time::before,html.cvfx.cvdesk .cv-time.in::before{transform: scaleY(var(--tp,0));transition: transform .15s linear}html.cvdesk #cv .cv-btn,html.cvdesk .cv-hire{transition: transform .15s ease-out,box-shadow .15s ease-out}html.cvdesk #cv .cv-btn:hover,html.cvdesk .cv-hire:hover{transform: translate(var(--bx,0px),calc(var(--by,0px) - 2px))}html.cvdesk #cv .cv-btn:active{transform: translate(var(--bx,0px),calc(var(--by,0px) + 3px))}.cv-sky,.cv-spot,.cv-bot2{display: none}#cv .cv-card.game > .cv-art{position: relative;display: block;margin: 0 0 10px;overflow: hidden}.cv-card.game .cv-art img{margin: 0}.cv-art .bar{display: none}@media screen and (min-width: 1100px){#cv{overflow-x: clip;background-image: radial-gradient(rgba(28,28,40,.11) 1px,transparent 1.7px);background-size: 26px 26px}.cv-page{position: relative;z-index: 1}html.cvdesk .cv-spot{display: block;position: fixed;inset: 0;z-index: 0;pointer-events: none;background: radial-gradient(460px circle at var(--sx,-999px) var(--sy,-999px),rgba(20,184,166,.13),transparent 70%)}.cv-top{position: relative;isolation: isolate;padding: 18px 0 52px;margin-bottom: 18px}.cv-top::before,.cv-sky{content: "";position: absolute;z-index: -1;top: -36px;bottom: 0;left: 50%;width: 100vw;translate: -50% 0;pointer-events: none}.cv-top::before{background: radial-gradient(640px circle at var(--hx,72%) var(--hy,36%),rgba(20,184,166,.24),transparent 68%),linear-gradient(rgba(94,234,212,.06) 1px,transparent 1px) 0 0 / 8px 8px,linear-gradient(90deg,rgba(94,234,212,.06) 1px,transparent 1px) 0 0 / 8px 8px,linear-gradient(135deg,#0b1416 0%,#0e2a2c 50%,#0d3b39 100%)}.cv-top::after{content: "";position: absolute;z-index: -1;left: 50%;width: 100vw;translate: -50% 0;bottom: 0;height: 10px;opacity: .9;background: repeating-linear-gradient(90deg,#14b8a6 0 10px,#0e8f81 10px 20px,#0b5f57 20px 30px,transparent 30px 40px)}html.cvdesk .cv-top::after{animation: cvground2 2.6s linear infinite}.cv-sky{display: block;width: 100vw;height: calc(100% + 36px)}.cv-hero{background: none;border: 0;border-radius: 0;box-shadow: none;overflow: visible;padding: 24px 12px 0 0}.cv-hero::before,.cv-hero::after{display: none}.cv-hero h1{text-shadow: none;filter: drop-shadow(0 4px 0 rgba(0,0,0,.35))}html.cvdesk .cv-name:not(.typing){color: transparent;-webkit-background-clip: text;background-clip: text;background-image: linear-gradient(100deg,#fff 0 44%,#7ff0dd 50%,#fff 56% 100%);background-size: 260% 100%;background-position: 100% 0;animation: cvsweep 7s ease-in-out 1.2s infinite}.cv-stats li{background: rgba(255,255,255,.045);border: 2px solid rgba(94,234,212,.32);border-radius: 12px;color: #cfe9e4;box-shadow: inset 0 0 34px rgba(20,184,166,.10),0 4px 0 rgba(0,0,0,.35);backdrop-filter: blur(3px)}.cv-stats li::before{content: "";position: absolute;left: 14px;right: 14px;top: -2px;height: 2px;background: var(--teal-hi);opacity: .8}.cv-stats li{position: relative}.cv-stats b{color: var(--teal-hi);text-shadow: 0 0 22px rgba(94,234,212,.5)}.cv-stats span{color: #a7cbc4}.cv-stats li:hover{transform: translateY(-3px);border-color: var(--teal-hi);box-shadow: inset 0 0 40px rgba(20,184,166,.18),0 7px 0 rgba(0,0,0,.35),0 0 28px rgba(20,184,166,.25)}.cv-body{margin-top: 0}.cv-toc{padding-top: 58px}html.cvdesk #cv h2[data-n]{position: relative;isolation: isolate}html.cvdesk #cv h2[data-n]::before{content: attr(data-n);position: absolute;right: 0;bottom: -4px;z-index: -1;pointer-events: none;font: 900 92px/1 var(--sans);letter-spacing: -.03em;color: transparent;-webkit-text-stroke: 2px rgba(20,184,166,.30);opacity: 0;translate: 60px 0;transition: opacity .7s ease .15s,translate .9s cubic-bezier(.2,.9,.3,1) .15s}html.cvdesk #cv h2.in[data-n]::before{opacity: 1;translate: none}html.cvdesk #cv .cv-ai h2[data-n]::before{-webkit-text-stroke-color: rgba(94,234,212,.22)}html.cvdesk #cv .cv-contact h2[data-n]::before{display: none}.cv-card,.cv-oss li{background-color: #fff;background-image: linear-gradient(var(--edge,transparent),var(--edge,transparent));background-size: 100% 4px;background-repeat: no-repeat}#cv-build .cv-card{--edge: var(--teal)}#cv-projects .cv-card{--edge: var(--gold)}.cv-oss li{--edge: #8b7cf6}html.cvdesk .cv-card::before,html.cvdesk .cv-oss li::before{content: "";position: absolute;inset: -16px;z-index: 3;pointer-events: none;opacity: 0;--c: var(--teal);--l: 16px;--t: 3px;background: linear-gradient(var(--c),var(--c)) 0 0 / var(--l) var(--t),linear-gradient(var(--c),var(--c)) 0 0 / var(--t) var(--l),linear-gradient(var(--c),var(--c)) 100% 0 / var(--l) var(--t),linear-gradient(var(--c),var(--c)) 100% 0 / var(--t) var(--l),linear-gradient(var(--c),var(--c)) 0 100% / var(--l) var(--t),linear-gradient(var(--c),var(--c)) 0 100% / var(--t) var(--l),linear-gradient(var(--c),var(--c)) 100% 100% / var(--l) var(--t),linear-gradient(var(--c),var(--c)) 100% 100% / var(--t) var(--l);background-repeat: no-repeat;transition: inset .3s cubic-bezier(.2,.9,.3,1),opacity .2s ease}html.cvdesk .cv-card.game::before{inset: 16px;--c: #fff}html.cvdesk .cv-card:hover::before,html.cvdesk .cv-oss li:hover::before{inset: -8px;opacity: 1}html.cvdesk .cv-card.game:hover::before{inset: 8px}html.cvdesk .cv-card::after,html.cvdesk .cv-oss li::after{background: radial-gradient(260px circle at var(--gx,50%) var(--gy,50%),rgba(20,184,166,.16),transparent 70%),linear-gradient(105deg,transparent 42%,rgba(94,234,212,.30) 50%,transparent 58%);background-size: 100% 100%,260% 100%;background-repeat: no-repeat;background-position: 0 0,100% 0}html.cvdesk .cv-card:hover::after,html.cvdesk .cv-oss li:hover::after{background-position: 0 0,0 0;transition: opacity .25s,background-position 1s cubic-bezier(.3,.6,.3,1)}html.cvdesk .cv-card:hover .chips span{translate: 0 -2px;background: #d9f4ee;transition: translate .2s ease calc(var(--i,0) * 45ms),background .2s ease calc(var(--i,0) * 45ms),transform .15s ease,color .15s ease}.cv-art::before{content: "";position: absolute;inset: 0;z-index: 1;pointer-events: none;opacity: .45;background: repeating-linear-gradient(0deg,rgba(0,0,0,.28) 0 1px,transparent 1px 3px)}.cv-art::after{content: "";position: absolute;inset: 0;z-index: 1;pointer-events: none;background: linear-gradient(115deg,transparent 38%,rgba(255,255,255,.38) 50%,transparent 62%) 100% 0 / 260% 100% no-repeat}.cv-card.game:hover .cv-art::after{background-position: 0 0;transition: background-position 1s cubic-bezier(.3,.6,.3,1)}#cv .cv-art .bar{display: flex;justify-content: space-between;position: absolute;left: 0;right: 0;bottom: 0;z-index: 2;padding: 9px 16px;background: rgba(11,20,22,.9);color: #fff;font: 800 14px var(--sans);text-decoration: none;letter-spacing: .02em;border-top: 2px solid var(--teal-hi);translate: 0 101%;transition: translate .3s cubic-bezier(.2,.9,.3,1)}#cv .cv-art .bar b{color: var(--teal-hi)}.cv-card.game:hover .cv-art .bar{translate: none}html.cvfx.cvdesk .cv-time > li::before{background: #d8d2c2;box-shadow: 0 0 0 2px #d8d2c2;transition: transform .4s cubic-bezier(.3,1.6,.5,1) calc(var(--d,0s) + .25s),background .3s ease,box-shadow .3s ease}html.cvfx.cvdesk .cv-time > li.lit::before{background: var(--teal);box-shadow: 0 0 0 2px var(--teal),0 0 14px rgba(20,184,166,.6);animation: cvping 1.1s ease-out}html.cvdesk .cv-time > li h3{transition: color .3s ease}html.cvdesk .cv-time > li.lit h3{color: #0b7a6e}.cv-contact{position: relative;overflow: hidden;padding: 30px 40px 40px;border-color: #000;box-shadow: 0 6px 0 #000;color: #eafffb;background: radial-gradient(600px circle at 50% 0%,rgba(20,184,166,.28),transparent 70%),linear-gradient(rgba(94,234,212,.06) 1px,transparent 1px) 0 0 / 8px 8px,linear-gradient(90deg,rgba(94,234,212,.06) 1px,transparent 1px) 0 0 / 8px 8px,linear-gradient(135deg,#0b1416 0%,#0e2a2c 50%,#0d3b39 100%)}.cv-contact > :not(.cv-bot){position: relative}#cv .cv-contact h2{color: #fff;font-size: 40px}.cv-contact .big{color: #cfe9e4}#cv .cv-contact .cv-links a{color: var(--teal-hi)}.cv-contact .small{color: #8fb8b1}#cv .cv-contact .cv-btn.hire{font-size: 18px;padding: 14px 26px;box-shadow: 0 5px 0 #000,0 0 30px rgba(255,209,102,.25);border-color: #000}html.cvdesk .cv-bot2{display: block;right: 44px;top: 30px;width: 84px;opacity: 0;translate: 320px -80px;rotate: 25deg;transition: translate 1s cubic-bezier(.2,.9,.3,1.1),rotate 1s cubic-bezier(.2,.9,.3,1.1),opacity .3s ease}html.cvdesk .cv-contact.here .cv-bot2{opacity: 1;translate: none;rotate: none}.cv-bot2 .hi{font-size: 14px;padding: 4px 10px}html.cvdesk .cv-card.shot-hover::before{inset: -8px;opacity: 1}html.cvdesk .cv-card.game.shot-hover::before{inset: 8px}html.cvdesk .cv-card.shot-hover::after{opacity: 1;background-position: 0 0,0 0}.cv-card.game.shot-hover .cv-art .bar{translate: none}}@keyframes cvground2{to{background-position: 40px 0}}@keyframes cvsweep{0%{background-position: 100% 0}22%,100%{background-position: 0 0}}@keyframes cvping{from{box-shadow: 0 0 0 2px var(--teal),0 0 0 0 rgba(20,184,166,.6)}to{box-shadow: 0 0 0 2px var(--teal),0 0 0 16px rgba(20,184,166,0)}}.cv-wipe{position: fixed;inset: 0;z-index: 60;display: grid;pointer-events: none}.cv-wipe i{background: #0d3b39;animation: cvwipe .42s cubic-bezier(.55,0,.8,.3) calc(var(--t) * .45s) forwards}.cv-wipe i:nth-child(3n){background: #0e8f81}.cv-wipe i:nth-child(7n){background: #14b8a6}@keyframes cvwipe{to{transform: scale(0)}}.cv-spark{position: fixed;z-index: 61;width: 7px;height: 7px;margin: -3px 0 0 -3px;pointer-events: none;background: var(--c,#5eead4);animation: cvspark .65s cubic-bezier(.2,.8,.3,1) forwards}@keyframes cvspark{to{transform: translate(var(--dx),var(--dy)) scale(.3);opacity: 0}}@media print{.cv-sky,.cv-spot,.cv-wipe,.cv-spark,.cv-bot2,.cv-art .bar{display: none !important}}#keys:not([hidden]){position: absolute;z-index: 6;left: 50%;bottom: 22px;translate: -50% 0;display: flex;flex-wrap: wrap;justify-content: center;gap: 8px 20px;max-width: calc(100vw - 30px);padding: 10px 18px;border: 2px solid var(--teal);border-radius: 12px;background: rgba(11,20,22,.88);color: #d6f5ef;font: 700 15px var(--sans);pointer-events: none;box-shadow: 0 4px 0 rgba(0,0,0,.4);animation: keysin .45s cubic-bezier(.2,.9,.3,1) .6s backwards;transition: opacity .45s ease,translate .45s ease}#keys > span:not([hidden]){display: inline-flex;align-items: center;gap: 4px;white-space: nowrap}#keys kbd{display: inline-block;min-width: 28px;padding: 3px 7px 2px;border: 2px solid var(--teal-hi);border-bottom-width: 4px;border-radius: 6px;background: #0b1416;color: #fff;font: 800 15px var(--sans);text-align: center;line-height: 1.3}#keys.out{opacity: 0;translate: -50% 12px}@keyframes keysin{from{opacity: 0;translate: -50% 16px}}body.touch #keys{display: none !important}.sprites{position: absolute;width: 0;height: 0;overflow: hidden}#loader{display: none}html.js #loader{position: fixed;inset: 0;z-index: 100;display: flex;align-items: center;justify-content: center;padding: 20px;background: radial-gradient(ellipse at 50% 40%,#12302f 0%,#0b1416 70%);color: #fff;transition: opacity .45s ease,visibility 0s .45s}html.js #loader::before{content: "";position: absolute;inset: 0;pointer-events: none;opacity: .5;background: repeating-linear-gradient(0deg,rgba(0,0,0,.28) 0 1px,transparent 1px 3px),radial-gradient(rgba(94,234,212,.16) 1px,transparent 1.5px) 0 0 / 14px 14px}html.js #loader.out{opacity: 0;visibility: hidden}.ld-in{position: relative;width: min(420px,100%);text-align: center}.ld-bot{width: 78px;height: 72px;image-rendering: pixelated;shape-rendering: crispEdges;animation: ldbob 1.2s ease-in-out infinite;filter: drop-shadow(0 6px 0 rgba(0,0,0,.35))}.ld-bot .eye{animation: ldeye 1.6s steps(1) infinite}@keyframes ldbob{50%{transform: translateY(-8px)}}@keyframes ldeye{0%,88%{fill: #5eead4}90%,100%{fill: #0b3b36}}.ld-logo{margin-top: 10px;font: 900 clamp(46px,13vw,72px)/1 var(--px);letter-spacing: .08em;color: var(--gold);text-shadow: 4px 4px 0 var(--ink),6px 6px 0 var(--teal)}.ld-sub{margin: 10px 0 22px;font: 700 13px var(--sans);color: var(--teal-hi);opacity: .9}.ld-bar{height: 20px;border: 3px solid var(--teal);border-radius: 4px;background: #061012;padding: 3px;box-shadow: 0 4px 0 rgba(0,0,0,.4)}.ld-bar i{display: block;height: 100%;width: 0;transition: width .18s linear;background: repeating-linear-gradient(90deg,var(--teal-hi) 0 8px,var(--teal) 8px 10px)}.ld-row{display: flex;justify-content: space-between;gap: 10px;margin: 9px 2px 0;font: 700 13px var(--px);letter-spacing: .03em}.ld-row span{color: #cfe;white-space: nowrap;overflow: hidden;text-overflow: ellipsis}.ld-row b{color: var(--gold)}#ld-log{list-style: none;margin: 12px 0 0;padding: 0;min-height: 84px;font: 12px/1.45 var(--px);color: #7fa9a4;text-align: left}#ld-log li{animation: ldin .2s ease-out both}#ld-log li::before{content: "> ";color: var(--teal)}#ld-log li b{float: right;color: var(--teal-hi);font-weight: 400}#ld-log li.skip b{color: #e0a44c}@keyframes ldin{from{opacity: 0;transform: translateX(-6px)}}#ld-start{margin: 18px 0 0;font: 800 17px var(--px);color: var(--gold);letter-spacing: .06em;animation: ldpulse 1.1s ease-in-out infinite}@keyframes ldpulse{50%{opacity: .45;transform: scale(.97)}}html.js #loader.ready{cursor: pointer}@media (max-height: 500px){.ld-bot{width: 52px;height: 48px}.ld-sub{margin: 6px 0 12px}#ld-log{min-height: 0;max-height: 60px;overflow: hidden}}@media print{#loader{display: none !important}}#cv .prt,#cv .prt-blk{display: none}@media print{@page{size: A4;margin: 14mm 15mm}#cv,#cv *{color: #000 !important;background: none !important;box-shadow: none !important;text-shadow: none !important;filter: none !important;-webkit-text-stroke: 0 !important;border-radius: 0 !important}#cv{font: 10.5pt/1.4 Arial,Helvetica,sans-serif !important}#cv .cv-page{max-width: none;margin: 0;padding: 0}#cv .cv-top,#cv .cv-hero{padding: 0 !important;margin: 0 !important;border: 0 !important}#cv .cv-top::before,#cv .cv-top::after,#cv h2::before,#cv h2::after,#cv .cv-card::before,#cv .cv-card::after,#cv .cv-oss li::before,#cv .cv-oss li::after,#cv .cv-time > li::before,#cv .cv-stats li::before{display: none !important}#cv .cv-bot,#cv .cv-cta,#cv .cv-stats,#cv .cv-toc,#cv .cv-hero > .cv-links,#cv .cv-contact .big,#cv .cv-contact .cv-btn,#cv .cv-contact .small,#cv img,#cv .cv-art,#cv .scr,#cv .cv-kicker{display: none !important}#cv .prt{display: inline !important}#cv .prt-blk{display: block !important}#cv .cv-hero h1{font: 700 20pt/1.15 Arial,Helvetica,sans-serif !important;margin: 0 0 2pt !important}#cv .cv-prole{margin: 0 0 1pt !important;font-size: 12pt;font-weight: 700}#cv .aka{display: none !important}#cv .cv-pcontact{margin: 0 0 4pt !important;font-size: 9.5pt}#cv h2{font: 700 12pt/1.2 Arial,Helvetica,sans-serif !important;text-transform: uppercase;letter-spacing: .04em;margin: 12pt 0 5pt !important;padding: 0 0 2pt !important;border: 0 !important;border-bottom: 1px solid #000 !important;break-after: avoid;opacity: 1 !important;translate: none !important}#cv h3{font: 700 10.5pt/1.3 Arial,Helvetica,sans-serif !important;margin: 0 !important}#cv .cv-tag,#cv .cv-partner{margin: 0 0 3pt !important;padding: 0 !important;border: 0 !important;font-size: 10.5pt !important}#cv .cv-body,#cv .cv-main,#cv .cv-grid,#cv .cv-grid.two,#cv .cv-oss,#cv .cv-skills{display: block !important;margin: 0 !important}#cv .cv-card,#cv .cv-oss li,#cv .cv-time > li{display: block !important;border: 0 !important;padding: 0 !important;margin: 0 0 6pt !important;transform: none !important;break-inside: avoid}#cv .cv-card.game > *{margin-left: 0 !important;margin-right: 0 !important}#cv .cv-time{border: 0 !important;padding: 0 !important;margin: 0 !important}#cv .meta,#cv .role,#cv .about{font: italic 400 9.5pt/1.35 Arial,Helvetica,sans-serif !important;text-transform: none !important;letter-spacing: 0 !important;margin: 0 !important}#cv .cv-card p,#cv .cv-card ul,#cv .cv-time ul,#cv .cv-lead,#cv .cv-ai p{margin: 1pt 0 !important;font-size: 10.5pt !important}#cv ul{padding-left: 14pt !important}#cv .chips{margin: 1pt 0 0 !important;font-size: 9.5pt}#cv .chips::before{content: "Tech: ";font-weight: 700}#cv .chips span,#cv .cv-oss .lang{display: inline !important;padding: 0 !important;font: inherit !important;border: 0 !important}#cv .chips span + span::before{content: ","}#cv .cv-oss li > *{display: inline !important}#cv .cv-oss .lang::before{content: " ("}#cv .cv-oss .lang::after{content: "): "}#cv .cv-ai,#cv .cv-contact{border: 0 !important;padding: 0 !important;margin: 0 !important;text-align: left !important}#cv .cv-ai dl,#cv .cv-skills{margin: 2pt 0 0 !important}#cv .cv-ai dt,#cv .cv-skills dt{display: inline;font-weight: 700}#cv .cv-ai dt::after,#cv .cv-skills dt::after{content: ": "}#cv .cv-ai dd,#cv .cv-skills dd{display: inline;margin: 0 !important}#cv .cv-ai dd::after,#cv .cv-skills dd::after{content: "";display: block;margin-bottom: 2pt}#cv a{text-decoration: none !important}#cv .cv-main a[href^="http"]::after{content: " (" attr(href) ")";font-size: 9pt;word-break: break-all}#cv .cv-main .go a::after{content: ": " attr(href)}#cv .go a{font-size: 9.5pt}#cv .cv-contact .cv-links{display: block !important;margin: 0 !important}#cv .cv-contact .cv-links a{display: block}#cv .cv-contact .cv-links a::after{content: ": " attr(href) !important}}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration: .01ms !important;animation-iteration-count: 1 !important;transition: none !important}}
