:root{--paper:#f7f4ee;--ink:#2a2622;--ink-soft:#6b6358;--rule:#ddd6c8;--margin:#d98b8b;--accent:#b5483f;--card:#fffdf8}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);justify-content:center;align-items:center;padding:32px;font-family:IBM Plex Mono,monospace;display:flex}.page{background-image:repeating-linear-gradient(to bottom, transparent 0, transparent 39px, var(--rule) 39px, var(--rule) 40px);width:100%;max-width:680px;padding:64px 56px 64px 88px;position:relative}.page:before{content:"";background:var(--margin);width:1px;position:absolute;top:0;bottom:0;left:56px}.stamp{border:2px dashed var(--accent);color:var(--accent);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;padding:6px 12px;font-size:12px;font-weight:500;animation:.5s cubic-bezier(.34,1.56,.64,1) .3s both stamp-in;position:absolute;top:36px;right:8px;transform:rotate(6deg)}.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:20px;font-size:12px}h1{letter-spacing:-.01em;margin-bottom:4px;font-family:Space Grotesk,sans-serif;font-size:44px;font-weight:700;line-height:1.1;position:relative}.status{color:var(--ink-soft);max-width:42ch;margin-bottom:40px;font-size:14px;line-height:1.7}.projects{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:40px;display:grid}.project-card{background:var(--card);border:1px solid var(--rule);color:var(--ink);padding:16px;text-decoration:none;transition:border-color .15s,transform .15s;animation:.4s ease-out both card-up;display:block}.project-card:first-child{animation-delay:.55s}.project-card:nth-child(2){animation-delay:.8s}.project-card:nth-child(3){animation-delay:1.05s}.project-card:nth-child(4){animation-delay:1.3s}.project-card:hover{border-color:var(--accent);transform:translateY(-2px)}.project-top{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.project-name{font-family:Space Grotesk,sans-serif;font-size:15px;font-weight:500}.project-stars{color:var(--ink-soft);font-size:11px}.project-desc{color:var(--ink-soft);margin-bottom:10px;font-size:12px;line-height:1.5}.project-lang{color:var(--accent);font-size:11px}.note{color:var(--accent);margin-bottom:48px;font-family:Caveat,cursive;font-size:22px;animation:.5s cubic-bezier(.34,1.56,.64,1) 1.55s both note-in;display:inline-block;transform:rotate(-1.5deg)}.contact{gap:24px;font-size:13px;display:flex}.contact a{color:var(--ink);border-bottom:1px solid var(--ink-soft);padding-bottom:2px;text-decoration:none;transition:color .15s,border-color .15s}.contact a:hover{color:var(--accent);border-color:var(--accent)}.highlight{background-image:linear-gradient(#fff3008c,#fff3008c);background-position:0 80%;background-repeat:no-repeat;background-size:0% .65em;animation:.5s ease-out 1.8s forwards highlight-sweep}.bottom-doodle{width:180px;height:32px;margin-bottom:12px;display:block;overflow:visible}.scribble{width:260px;height:12px;margin-bottom:20px;display:block;overflow:visible}.scribble path{stroke-dasharray:320;stroke-dashoffset:320px;animation:.6s ease-out .7s forwards draw-scribble}@keyframes stamp-in{0%{opacity:0;transform:rotate(6deg)scale(1.5)}to{opacity:1;transform:rotate(6deg)scale(1)}}@keyframes highlight-sweep{to{background-size:100% 38%}}@keyframes draw-scribble{to{stroke-dashoffset:0}}@keyframes card-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes note-in{0%{opacity:0;transform:rotate(-1.5deg)translate(-12px)}to{opacity:1;transform:rotate(-1.5deg)translate(0)}}@media (width<=600px){.page{padding:80px 24px 48px 56px}.page:before{left:32px}h1{font-size:32px}.projects{grid-template-columns:1fr}.stamp{font-size:10px;top:16px;right:16px}}
