:root{--paper: #ffffff;--ink: #24170f;--ink-2: #6b4630;--lime: #a6f02b;--lime-deep: #5f9a0c;--skin: #f2e4d8;--shadow: 0 1px 0 rgba(36, 23, 15, .06), 0 12px 24px -10px rgba(36, 23, 15, .38);--hand: "Caveat", "Segoe Print", cursive;--marker: "Permanent Marker", "Caveat", cursive;--body: "Onest", system-ui, sans-serif;--gut: clamp(20px, 5vw, 80px)}html{background:var(--paper);scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font:400 clamp(1.06rem,.98rem + .35vw,1.22rem)/1.6 var(--body);overflow-x:hidden}::selection{background:var(--lime);color:var(--ink)}a{color:inherit}:focus-visible{outline:3px solid var(--ink);outline-offset:4px;box-shadow:0 0 0 7px var(--lime);border-radius:4px}.skip{position:absolute;left:12px;top:-60px;z-index:50;background:var(--ink);color:#fff;padding:10px 14px;border-radius:6px;text-decoration:none}.skip:focus{top:12px}.langs{position:fixed;z-index:40;top:clamp(10px,2vw,22px);right:clamp(10px,2vw,26px);display:flex;gap:2px;padding:2px 6px;background:#ffffffdb;border-radius:30px}.langs button{position:relative;background:none;border:0;cursor:pointer;font:700 1.75rem/1 var(--hand);color:var(--ink);padding:6px 10px 8px;min-width:44px;min-height:44px}.langs button .loop{position:absolute;inset:2px -2px 0;width:calc(100% + 4px);height:calc(100% - 2px);opacity:0}.langs button[aria-pressed=true] .loop{opacity:1}.langs button:hover{color:var(--ink-2)}.hero{position:relative;height:100vh;height:100svh;min-height:560px;overflow:hidden;touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:grab}.hero.dragging{cursor:grabbing}.face{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .5s ease}.face.ready{opacity:1}.face:focus-visible{outline:none;box-shadow:inset 0 0 0 4px var(--lime);border-radius:0}.scribbles{position:absolute;overflow:visible;pointer-events:none}.scribbles .draw{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 1;stroke-dashoffset:1;animation:draw .55s cubic-bezier(.5,.1,.3,1) var(--d, 0s) forwards}.scribbles .lime{stroke:var(--lime);stroke-width:4.2}.scribbles .lime.thick{stroke-width:6}.scribbles .lime.thin{stroke-width:3}.scribbles .lime.xl{stroke-width:6.5}.scribbles .chalk{stroke:#fff;stroke-width:13;opacity:.96}.scribbles .dot{opacity:0;animation:pop .25s ease-out var(--d, 0s) forwards;transform-box:fill-box;transform-origin:center}.scribbles .lime-fill{fill:var(--lime)}.scribbles .name{font:64px/1 var(--marker);fill:#fff;letter-spacing:1px}.scribbles .tag{font:40px/1 var(--marker);fill:#fff;letter-spacing:2px}.scribbles .ks-fix{font-size:56px;fill:var(--lime)}.scribbles .dots{fill:#fff;opacity:0;animation:pop .3s ease-out var(--d, 0s) forwards}.scribbles .wipe{transform-box:fill-box;transform-origin:left center;transform:scaleX(0);animation:wipe .7s steps(14,end) var(--d, 0s) forwards}.scribbles .chalk,.scribbles .name,.scribbles .tag,.scribbles .dots{filter:url(#chalky)}@keyframes draw{to{stroke-dashoffset:0}}@keyframes pop{0%{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}@keyframes wipe{to{transform:scaleX(1)}}main{outline:none}.sec{max-width:1240px;margin:0 auto;padding:clamp(64px,10vw,150px) var(--gut) 0}.hand{font:700 clamp(3.4rem,2.2rem + 6vw,7.6rem)/.9 var(--hand);margin:0 0 clamp(28px,4vw,56px);letter-spacing:-.01em}.hand-word{position:relative;display:inline-block;padding:.08em .32em .14em;transform:rotate(-2.2deg)}.loop{position:absolute;pointer-events:none;overflow:visible}.loop path{fill:none;stroke:var(--lime);stroke-width:5px;stroke-linecap:round}.hand-word .loop{inset:-6% -4% -10% -6%;width:110%;height:116%;z-index:-1}.hand-word{z-index:0}.sub{font:700 clamp(2rem,1.6rem + 1.5vw,2.8rem)/1.05 var(--hand);margin:clamp(48px,6vw,80px) 0 18px}.when{font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums}.meta{color:var(--ink-2);margin:2px 0}p{margin:0 0 1em}.cut{display:block;background:#fff;border:7px solid #fff;box-shadow:var(--shadow);border-radius:3px}.cut img{width:100%;height:auto;border-radius:1px}.tilt-l{transform:rotate(-1.6deg)}.tilt-r{transform:rotate(1.4deg)}.link,.mail{position:relative;display:inline-block;font-weight:600;text-decoration:none;padding-bottom:6px}.uline{position:absolute;left:-2%;bottom:-4px;width:104%;height:12px;overflow:visible;pointer-events:none}.uline path{fill:none;stroke:var(--lime);stroke-width:7px;stroke-linecap:round}.link:hover .uline path,.mail:hover .uline path{stroke:var(--ink)}.about-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.85fr);gap:clamp(32px,6vw,96px);align-items:center}.about-text p{font-size:clamp(1.2rem,1.05rem + .6vw,1.55rem);line-height:1.5;max-width:34ch}.about-text p:first-child{font-weight:500}.lens-photo{position:relative;margin:0;justify-self:center;width:min(100%,400px);aspect-ratio:1}.lens-cut{position:absolute;inset:0;border-radius:50%;overflow:hidden;border:7px solid #fff;box-shadow:var(--shadow);background:#222}.lens-cut img{position:absolute;max-width:none;height:auto;width:257%;left:-71%;top:-11%}.lens-photo .loop.big{inset:-9% -12% -14% -6%;width:118%;height:123%}.lens-photo .loop path{stroke-width:5px}.facts{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr));gap:26px 48px}.facts li{position:relative;padding-left:34px;display:grid;gap:2px}.facts strong{font-weight:700;font-size:1.12em}.facts .dot{position:absolute;left:2px;top:.42em;width:18px;height:18px;border-radius:50% 46% 52% 44%;background:var(--lime);box-shadow:inset 0 0 0 2px #24170fd9}.proj{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(28px,5vw,80px);align-items:center;margin-bottom:clamp(56px,8vw,110px)}.proj-body{max-width:52ch}.proj-title{font:700 clamp(2.4rem,1.8rem + 2.4vw,3.8rem)/1 var(--hand);margin:4px 0 14px}.proj .when{margin:0}.proj-site{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}.proj-site .cut{order:2;max-width:340px;justify-self:center}.proj-small{grid-template-columns:minmax(0,300px) minmax(0,1fr)}.proj-small .proj-title{font-size:clamp(2rem,1.6rem + 1.4vw,2.8rem)}.cta{margin-top:18px;font-size:1.15em}.cert-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(36px,5vw,72px)}.cert h3{font-size:1.3em;line-height:1.25;margin:26px 0 6px}.cert .links,.cert-plan .links{display:flex;flex-wrap:wrap;gap:8px 26px;margin-top:14px}.cert-plan{list-style:none;padding:0;margin:clamp(48px,6vw,80px) 0 0;display:grid;gap:22px}.cert-plan li{display:grid;grid-template-columns:170px minmax(0,1fr) auto;align-items:center;gap:12px 28px;padding:20px 0;border-top:2px dashed rgba(36,23,15,.2)}.cert-plan h3{margin:0;font-size:1.2em}.cert-plan .links{margin:0}.tag-wip{position:relative;display:inline-block;font:700 1.7rem/1 var(--hand);padding:8px 16px 10px;justify-self:start;white-space:nowrap}.tag-wip .loop{inset:0;width:100%;height:100%}.tag-wip .loop.dash path{stroke-width:3.5px}.cv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(32px,6vw,96px)}.time{list-style:none;padding:0;margin:0}.time li{display:grid;gap:2px;padding:16px 0 18px 26px;position:relative;border-left:3px solid var(--ink)}.time li:before{content:"";position:absolute;left:-11px;top:22px;width:16px;height:16px;border-radius:50%;background:var(--lime);border:3px solid var(--ink)}.time strong{font-size:1.12em}.skills{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px clamp(28px,4vw,56px)}.skill-group h4{font:700 1.9rem/1 var(--hand);margin:0 0 10px}.skill-group ul,.langs-list,.docs{list-style:none;padding:0;margin:0}.skill-group li,.langs-list li,.docs li{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:11px 0;border-bottom:2px solid rgba(36,23,15,.1)}.what{font-weight:500}.lv{display:inline-flex;align-items:center;gap:10px;color:var(--ink-2);font-weight:600;white-space:nowrap}.lvl{display:inline-flex;gap:4px}.lvl i{width:13px;height:13px;border-radius:50%;border:2px solid var(--ink)}.lvl i.on{background:var(--lime)}.when-inline{color:var(--ink-2);font-weight:600;white-space:nowrap}.docs .tag-wip{font-size:1.5rem;padding:6px 14px 8px}.contact{padding-bottom:clamp(80px,10vw,140px)}.lead{font-size:clamp(1.25rem,1.1rem + .6vw,1.6rem)}.mail-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px 28px;margin:18px 0 30px}.mail{font-size:clamp(1.35rem,.9rem + 2.6vw,3rem);letter-spacing:-.01em;overflow-wrap:anywhere}.mail .uline{height:16px;bottom:-6px}.copy{font:700 1.6rem/1 var(--hand);background:var(--lime);color:var(--ink);border:3px solid var(--ink);border-radius:46% 54% 50% 50%/60% 50% 50% 40%;padding:10px 22px 12px;cursor:pointer;transform:rotate(-2deg);min-height:48px}.copy:hover{transform:rotate(1deg) scale(1.03)}.insta{font-size:1.2em;display:flex;gap:14px;align-items:baseline;flex-wrap:wrap}.insta>span:first-child{color:var(--ink-2)}.foot{max-width:1240px;margin:0 auto;padding:28px var(--gut) 90px;color:var(--ink-2);border-top:2px solid rgba(36,23,15,.1)}.foot p{margin:0}@media(max-width:860px){.about-grid,.proj,.proj-site,.proj-small,.cv-grid,.cert-list{grid-template-columns:minmax(0,1fr)}.proj-site .cut{order:0;justify-self:start}.proj-small .cut{max-width:300px}.skills,.cert-plan li{grid-template-columns:minmax(0,1fr)}.lens-photo{width:min(78%,340px);margin-top:8px}}@media(max-width:480px){.langs button{font-size:1.55rem;padding:6px 8px 8px}.skill-group li,.langs-list li,.docs li{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.scribbles .draw{stroke-dashoffset:0;animation:none}.scribbles .dot,.scribbles .dots{opacity:1;animation:none}.scribbles .wipe{transform:none;animation:none}.face{transition:none}}
