:root{--paper:#f6f0e4;--paper-deep:#efe6d3;--ink:#2a2520;--ink-soft:#5d544a;--ink-faint:#8a8073;--coral:#e0552f;--coral-deep:#c2401d;--mustard:#e2a02f;--teal:#2f7d6e;--sky:#4b7fa8;--line:#2a2520;--serif:"Fraunces", Georgia, "Times New Roman", serif;--hand:"Caveat", "Comic Sans MS", cursive;--sans:"Inter", system-ui, -apple-system, sans-serif}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--sans);color:var(--ink);background-color:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-image:radial-gradient(#2a252012 1px,#0000 1px);background-size:26px 26px;margin:0;line-height:1.6}a{color:inherit}img{max-width:100%;display:block}::selection{background:var(--mustard);color:var(--ink)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.page{opacity:0;min-height:100vh;transition:opacity .5s}.page.is-ready{opacity:1}.wrap{max-width:1080px;margin:0 auto;padding:0 28px}.nav{justify-content:space-between;align-items:baseline;max-width:1080px;margin:0 auto;padding:26px 28px 0;display:flex}.brand{font-family:var(--serif);letter-spacing:-.02em;font-size:1.7rem;font-weight:600;text-decoration:none}.brand-dot{color:var(--coral)}.nav-links{align-items:baseline;gap:22px;font-size:.98rem;display:flex}.nav-links a{color:var(--ink-soft);border-bottom:2px solid #0000;padding-bottom:2px;text-decoration:none;transition:color .15s,border-color .15s}.nav-links a:hover{color:var(--ink);border-bottom-color:var(--mustard)}.nav-cta{font-weight:500;color:var(--ink)!important}.hero{grid-template-columns:minmax(0,1fr) 320px;align-items:center;gap:48px;padding:70px 0 90px;display:grid}.hero-main{max-width:640px}.hero-aside{align-self:center;height:100%;min-height:320px;position:relative}.snippet-card{border:2.5px solid var(--ink);background:#fffdf7;border-radius:9px;width:300px;position:absolute;top:50%;left:0;overflow:hidden;transform:translateY(-50%)rotate(-3deg);box-shadow:6px 7px #2a252029}.snippet-bar{background:var(--paper-deep);border-bottom:2px solid var(--ink);align-items:center;gap:6px;padding:9px 12px;display:flex}.sdot{border:1.5px solid var(--ink);border-radius:50%;width:11px;height:11px}.sdot.red{background:var(--coral)}.sdot.yellow{background:var(--mustard)}.sdot.green{background:var(--teal)}.snippet-name{font-family:var(--hand);color:var(--ink-soft);margin-left:6px;font-size:1.1rem}.snippet-code{color:var(--ink);white-space:pre;margin:0;padding:16px 18px 20px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.82rem;line-height:1.55}.sticky-note{background:var(--mustard);width:120px;color:var(--ink);font-family:var(--hand);text-align:center;padding:16px 12px;font-size:1.35rem;line-height:1.1;position:absolute;top:2px;right:-10px;transform:rotate(7deg);box-shadow:3px 4px 7px #2a252038}.coffee{width:58px;height:52px;position:absolute;bottom:6px;left:18px;transform:rotate(-6deg)}.hello{font-family:var(--hand);color:var(--coral);transform-origin:0;margin:0 0 -6px 4px;font-size:1.9rem;transform:rotate(-3deg)}.name{font-family:var(--serif);letter-spacing:-.03em;margin:0 0 26px;font-size:clamp(3.4rem,11vw,7.2rem);font-weight:600;line-height:.92}.tagline{font-family:var(--serif);max-width:22ch;margin:0 0 24px;font-size:clamp(1.4rem,3.4vw,2.1rem);font-weight:400;line-height:1.3}.hl{white-space:nowrap;position:relative}.hl .squiggle{width:104%;height:.5em;position:absolute;bottom:-.55em;left:-2%;overflow:visible}.intro{color:var(--ink-soft);max-width:52ch;margin:0 0 40px;font-size:1.12rem}.strike{text-decoration:line-through;-webkit-text-decoration-color:var(--coral);text-decoration-color:var(--coral);color:var(--ink-faint);text-decoration-thickness:2px}.hand-note{font-family:var(--hand);color:var(--teal);font-size:1.3em}.hero-actions{align-items:flex-end;gap:28px;display:flex}.btn{border:2.5px solid var(--ink);border-radius:14px 11px 13px 10px/11px 13px 10px 12px;padding:13px 24px;font-size:1rem;font-weight:500;text-decoration:none;transition:transform .12s,box-shadow .12s;display:inline-block}.btn-primary{background:var(--coral);color:#fff;box-shadow:4px 4px 0 var(--ink)}.btn-primary:hover{box-shadow:6px 6px 0 var(--ink);transform:translate(-2px,-2px)}.btn-primary:active{box-shadow:1px 1px 0 var(--ink);transform:translate(2px,2px)}.arrow-wrap{flex-shrink:0;width:90px;position:relative}.arrow{width:64px;height:50px;transform:scaleX(-1)rotate(8deg)}.arrow-label{font-family:var(--hand);color:var(--ink);white-space:nowrap;font-size:1.35rem;position:absolute;top:-4px;left:50px;transform:rotate(-6deg)}.section-title{font-family:var(--serif);letter-spacing:-.02em;margin:0 0 22px;font-size:clamp(2rem,5vw,3rem);font-weight:600;line-height:1}.dot-accent{color:var(--coral)}.about{grid-template-columns:1.6fr 1fr;align-items:start;gap:56px;padding:30px 0 100px;display:grid}.about-text p{color:var(--ink-soft);max-width:56ch;margin:0 0 18px;font-size:1.12rem}.about-text em{font-family:var(--serif);color:var(--ink);font-style:italic}.ps{font-family:var(--hand);transform:rotate(-1deg);color:var(--teal)!important;margin-top:26px!important;font-size:1.35rem!important}.about-card{border:2px solid var(--ink);background:#fffdf7;border-radius:4px;margin-top:14px;padding:24px 24px 18px;position:relative;transform:rotate(2deg);box-shadow:5px 6px #2a252029}.about-card:before{content:"";background:#e2a02f8c;border:1px solid #2a25202e;width:90px;height:26px;position:absolute;top:-14px;left:50%;transform:translate(-50%)rotate(-3deg)}.card-head{font-family:var(--hand);color:var(--coral-deep);margin:4px 0 14px;font-size:1.7rem}.current-list{gap:11px;margin:0 0 14px;padding:0;list-style:none;display:grid}.current-list li{color:var(--ink);font-size:1rem;line-height:1.4}.li-key{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);min-width:64px;margin-right:4px;font-size:.72rem;display:inline-block}.card-foot{font-family:var(--hand);color:var(--ink-faint);margin:0;font-size:1.05rem}.skills{padding:30px 0 100px}.skills-head{max-width:56ch;margin-bottom:42px}.skills-sub{color:var(--ink-soft);margin:0;font-size:1.1rem}.skill-notes{grid-template-columns:repeat(2,1fr);gap:30px 36px;display:grid}.skill-note{border:2.5px solid var(--ink);transform:rotate(var(--tilt));border-left:8px solid var(--cat-color);background:#fffdf7;border-radius:9px;padding:22px 24px 24px;transition:transform .18s,box-shadow .18s;position:relative;box-shadow:5px 6px #2a252021}.skill-note:hover{transform:rotate(0)translateY(-3px);box-shadow:8px 10px #2a25202b}.skill-cat{font-family:var(--serif);letter-spacing:-.01em;text-transform:capitalize;margin:0;font-size:1.45rem;font-weight:600}.skill-note-sub{font-family:var(--hand);color:var(--cat-color);margin:0 0 16px;font-size:1.2rem}.skill-pills{flex-wrap:wrap;gap:9px;margin:0;padding:0;list-style:none;display:flex}.skill-pills li{border:1.5px solid var(--ink);background:var(--paper);color:var(--ink);border-radius:20px;padding:5px 12px;font-size:.86rem;font-weight:500}.work{padding:30px 0 100px}.work-head{max-width:60ch;margin-bottom:46px}.work-sub{color:var(--ink-soft);margin:0;font-size:1.1rem}.work-sub code{background:var(--paper-deep);border:1px solid #2a252026;border-radius:5px;padding:1px 7px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.9em}.cards{grid-template-columns:repeat(2,1fr);gap:34px 40px;display:grid}.card{border:2.5px solid var(--ink);transform:rotate(var(--tilt));background:#fffdf7;border-radius:10px;padding:30px 26px 24px;transition:transform .18s,box-shadow .18s;position:relative;box-shadow:5px 6px #2a252024}.card:hover{transform:rotate(0)translateY(-4px);box-shadow:8px 10px #2a25202e}.pin{border:2px solid var(--ink);border-radius:50%;width:16px;height:16px;position:absolute;top:-9px;left:26px;box-shadow:inset -2px -2px #0000002e}.card-tag{font-family:var(--hand);font-size:1.25rem;font-weight:600}.card-title{font-family:var(--serif);letter-spacing:-.02em;margin:2px 0 10px;font-size:1.7rem;font-weight:600}.card-blurb{color:var(--ink-soft);margin:0 0 18px;font-size:1.02rem}.stack{flex-wrap:wrap;gap:8px;margin:0 0 18px;padding:0;list-style:none;display:flex}.stack li{letter-spacing:.02em;color:var(--ink-soft);border:1.5px solid #2a252066;border-radius:20px;padding:3px 10px;font-size:.78rem}.card-links{align-items:baseline;gap:18px;display:flex}.card-link{color:var(--ink);border-bottom:2px solid var(--mustard);padding-bottom:1px;font-weight:600;text-decoration:none}.card-link:hover{color:var(--coral-deep)}.card-repo{color:var(--ink-soft);border-bottom:2px solid #0000;padding-bottom:1px;font-size:.92rem;font-weight:500;text-decoration:none;transition:color .15s,border-color .15s}.card-repo:hover{color:var(--ink);border-bottom-color:var(--teal)}.contact{border-top:2.5px dashed #2a252040;padding:40px 0 110px}.contact-head{font-family:var(--serif);letter-spacing:-.03em;margin:40px 0 22px;font-size:clamp(2.6rem,8vw,5rem);font-weight:600;line-height:.96}.contact-head .hl .squiggle{bottom:-.42em}.contact-copy{color:var(--ink-soft);max-width:48ch;margin:0 0 30px;font-size:1.18rem}.mail{font-family:var(--serif);color:var(--ink);border-bottom:3px solid var(--coral);padding-bottom:3px;font-size:clamp(1.3rem,4vw,2.2rem);font-weight:500;text-decoration:none;transition:color .15s,transform .15s;display:inline-block}.mail:hover{color:var(--coral-deep);transform:rotate(-1deg)}.socials{flex-wrap:wrap;gap:26px;margin:38px 0 0;padding:0;list-style:none;display:flex}.socials a{color:var(--ink-soft);border-bottom:2px solid #0000;font-weight:500;text-decoration:none;transition:color .15s,border-color .15s}.socials a:hover{color:var(--ink);border-bottom-color:var(--teal)}.footer{border-top:2px solid var(--ink);text-align:center;padding:28px}.footer p{font-family:var(--hand);color:var(--ink);margin:0;font-size:1.3rem}.footer-meta{color:var(--ink-faint);letter-spacing:.04em;font-family:var(--sans)!important;margin-top:6px!important;font-size:.85rem!important}@media (width<=900px){.hero{grid-template-columns:1fr;gap:0}.hero-aside{display:none}}@media (width<=760px){.about{grid-template-columns:1fr;gap:36px}.about-card{max-width:360px;transform:rotate(1deg)}.cards,.skill-notes{grid-template-columns:1fr}.card,.skill-note{transform:rotate(0)}.hero-actions{flex-direction:column;align-items:flex-start;gap:14px}.arrow-wrap{align-self:flex-start}.arrow{transform:scaleX(-1)rotate(60deg)}.arrow-label{top:6px;left:56px}.nav-links{gap:16px}}@media (width<=420px){.nav-links a:not(.nav-cta){display:none}}
