@font-face{font-family:Inter;font-style:normal;font-weight:600 800;font-display:block;src:url(/assets/inter-latin-8kRkwJBP.woff2)format("woff2")}@property --bg{syntax:"<color>";inherits:true;initial-value:#81c08b}:root{--ink:#2a2a2a;--line:2px solid var(--ink);--mono:ui-monospace, SFMono-Regular, Menlo, monospace;--gap:24px;--frame-top:calc(var(--gap) + env(safe-area-inset-top,0px));--frame-right:calc(var(--gap) + env(safe-area-inset-right,0px));--frame-bottom:calc(var(--gap) + env(safe-area-inset-bottom,0px));--frame-left:calc(var(--gap) + env(safe-area-inset-left,0px));--section:calc(100svh - var(--frame-top) - var(--frame-bottom));--aside:clamp(160px, 25vw, 320px);--row:3rem}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@supports (animation-timeline:scroll()){:root:not(.scripted-scroll){animation:linear both page-scroll;animation-timeline:scroll(root)}}@keyframes page-scroll{0%{--bg:#81c08b}33.333%{--bg:#f0c3d8}66.667%{--bg:#89bee3}to{--bg:#ecdf8a}}*{box-sizing:border-box;margin:0}body{grid-template-columns:minmax(0, 1fr) var(--aside);padding:var(--frame-top) var(--frame-right) var(--frame-bottom) var(--frame-left);background:var(--bg);color:var(--ink);font-family:Inter,system-ui,sans-serif;display:grid}body:after{content:"";border:solid var(--bg);border-width:var(--frame-top) var(--frame-right) var(--frame-bottom) var(--frame-left);box-shadow:inset 0 0 0 2px var(--ink);pointer-events:none;position:fixed;inset:0}a,button{color:inherit}section{min-height:var(--section);flex-direction:column;justify-content:center;padding:3.5vw;display:flex}h1,h2,.links a{letter-spacing:-.05em;font-weight:800;line-height:.95}.mono{font-family:var(--mono)}.intro{padding:0}.intro header{height:var(--row);background:var(--ink);color:var(--bg);letter-spacing:.3em;align-items:center;padding:0 3.5vw;font-size:.9rem;display:flex}.intro h1{margin-block:auto;margin-left:-.04em;padding:3.5vw;font-size:clamp(3rem,8vw,8rem)}.about p{letter-spacing:-.04em;font-size:clamp(2rem,5vw,4.5rem);font-weight:600;line-height:1.1}.links,.links ul{padding:0}.links a{padding:clamp(1rem,4svh,2rem) 3.5vw;font-size:clamp(2.5rem,6vw,5rem);text-decoration:none;display:block}.links li+li{border-top:var(--line)}.external{width:.72em;margin-left:.25em;display:inline-block;position:relative}.external svg{aspect-ratio:1;width:100%;height:auto;display:block;overflow:visible}.external:after{content:"";inset-inline:0;visibility:hidden;background:currentColor;height:.08em;position:absolute;top:calc(100% + .12em)}.links a:is(:hover,:focus-visible){background:var(--ink);color:var(--bg);text-underline-offset:.12em;outline:none;text-decoration:underline;text-decoration-thickness:.08em}.links a:is(:hover,:focus-visible) .external:after{visibility:visible}.contact h2{margin-bottom:1.5rem;font-size:clamp(2.5rem,6vw,5rem)}.terminal{background:var(--ink);color:var(--bg);display:flex}.terminal code{overflow-wrap:anywhere;flex:1;min-width:0;padding:1.5rem;font-size:clamp(.8rem,1.4vw,1.1rem)}.terminal button{border:0;border-left:3px solid var(--bg);letter-spacing:.15em;cursor:pointer;background:0 0;flex:none;width:11ch}aside{top:var(--frame-top);right:var(--frame-right);width:var(--aside);grid-template-rows:var(--row) 1fr min(13rem, 35svh);height:var(--section);border-left:var(--line);background:var(--bg);display:grid;position:fixed}.progress{place-items:center;font-size:.9rem;font-weight:700;display:grid;position:relative}.progress:after{content:attr(data-label);background:var(--ink);color:var(--bg);clip-path:inset(0 calc(100% - var(--fill,0%)) 0 0);place-items:center;display:grid;position:absolute;inset:0}.dots{--bleed:24px;cursor:none;position:relative}.dots canvas{inset:calc(-1 * var(--bleed));width:calc(100% + 2 * var(--bleed));height:calc(100% + 2 * var(--bleed));pointer-events:none;position:absolute}.next{cursor:pointer;background:0 0;border:0;place-items:center;transition:background .2s,color .2s;display:grid}.next:is(:hover,:focus-visible){background:var(--ink);color:var(--bg);outline:none}.next svg{width:min(50%,7rem);transition:rotate .4s}.next.top svg{rotate:180deg}@media (prefers-reduced-motion:reduce){.next svg{transition:none}}@media (width<=700px){:root{--gap:12px;--bar:5rem;--section:calc(100svh - var(--frame-top) - var(--frame-bottom) - var(--bar))}body{padding-bottom:calc(var(--frame-bottom) + var(--bar));grid-template-columns:minmax(0,1fr)}aside{top:auto;bottom:var(--frame-bottom);left:var(--frame-left);grid-template:auto / 1fr 1fr var(--bar);width:auto;height:var(--bar);border-left:0;border-top:var(--line)}.next svg{width:2.5rem}}
