:root{--paper:#fafafa;--paper-2:#fff;--ink:#09090b;--ink-2:#3f3f46;--ink-3:#52525b;--rule:#e4e4e7;--redline:#2563eb;--plate:#f4f4f5;--shadow:0 1px 2px #09090b0d, 0 12px 28px -14px #09090b38;--c-blue:#8fb3ff;--c-coral:#ffa58c;--c-sun:#ffd76a;--c-mint:#84e0bd;--c-lilac:#c3b8ff;--tab-ink:#09090b;--display:"Plus Jakarta Sans", "Segoe UI", system-ui, sans-serif;--serif:var(--display);--body:var(--display);--mono:var(--display);--s-1:.85rem;--s0:1.0625rem;--s1:1.25rem;--s2:1.6rem;--s3:clamp(2.1rem, 1.5rem + 2.6vw, 3.3rem);--s4:clamp(3rem, 1.9rem + 5.4vw, 5.8rem);--max:1160px;--radius:16px;--ease:cubic-bezier(.2,.7,.2,1);--spring:cubic-bezier(.34,1.56,.64,1);color-scheme:light}:root[data-theme=dark]{--paper:#0b0b0f;--paper-2:#17171d;--ink:#fafafa;--ink-2:#d4d4d8;--ink-3:#a1a1aa;--rule:#ffffff1f;--redline:#7aa7ff;--plate:#1f1f27;--shadow:0 1px 2px #0000004d, 0 16px 32px -16px #000000b3;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--paper);color:var(--ink);font:400 var(--s0)/1.6 var(--body);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit}:focus-visible{outline:2px solid var(--redline);outline-offset:3px}h1,h2,h3{text-wrap:balance;margin:0;font-weight:400}h1,h2{font-family:var(--display);letter-spacing:-.025em;font-weight:700}h1 em,h2 em{color:var(--redline);font-style:normal}p{text-wrap:pretty;margin:0}.wrap{max-width:var(--max);margin:0 auto;padding-inline:16px}.mono,.small{font-size:var(--s-1)}.eyebrow{color:var(--redline);font-size:.95rem;font-weight:600}.label{color:var(--ink);margin-bottom:12px;font-size:.95rem;font-weight:700}.muted{color:var(--ink-2)}.red{color:var(--redline)}.nav{top:env(safe-area-inset-top,0px);z-index:9;background:color-mix(in srgb, var(--paper) 88%, transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule);position:sticky}.nav .wrap{align-items:center;gap:16px;padding-block:10px;display:flex}.mark{font-family:var(--display);letter-spacing:-.02em;font-size:1.35rem;font-weight:700;line-height:1;text-decoration:none}.sheets{margin-left:auto;scrollbar-width:none;gap:4px;margin-block:0;padding:0;list-style:none;display:flex;overflow-x:auto}.sheets a{color:var(--ink-2);white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:8px 12px;font-weight:500;text-decoration:none;transition:background .2s,color .2s;display:block}.sheets a b{display:none}.sheets a:hover{color:var(--ink);background:var(--plate)}.sheets a[aria-current=true],.sheets a[aria-current=page]{color:var(--ink);background:var(--paper-2);border-color:var(--rule);box-shadow:var(--shadow)}.sheets a[aria-current=true] b{color:var(--redline)}.theme-btn{font:inherit;background:var(--ink);color:var(--paper);cursor:pointer;white-space:nowrap;min-height:40px;transition:transform .3s var(--spring);border:0;border-radius:999px;padding:8px 14px;font-weight:600}.theme-btn:hover{transform:rotate(-3deg)scale(1.04)}@media (width<=760px){.sheets a{padding:8px}}@media (width<=560px){.sheets{display:none}.theme-btn{margin-left:auto}}.sheet{border-bottom:1px solid var(--rule);padding-block:clamp(56px,8vw,104px);scroll-margin-top:56px;position:relative}.sheet-head{grid-template-columns:auto 1fr;align-items:end;gap:6px 20px;margin-bottom:clamp(32px,5vw,56px);display:grid}.sheet-no{font-weight:700;font-size:var(--s1);color:var(--tab-ink);background:var(--tab,var(--c-coral));box-shadow:var(--shadow);border-radius:10px;grid-row:span 2;align-self:start;padding:6px 12px;transform:rotate(-4deg)}#work{--tab:var(--c-blue)}#photography{--tab:var(--c-sun)}#drawing{--tab:var(--c-mint)}#notes{--tab:var(--c-lilac)}.sheet-head h2{font-family:var(--display);font-size:var(--s3);line-height:1.02}.hero{padding-block:clamp(32px,6vw,72px) clamp(48px,7vw,88px);overflow:clip}.hero .wrap{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:center;gap:clamp(24px,4vw,56px);display:grid}.hero-copy{gap:22px;min-width:0;display:grid}.hero h1{font-size:var(--s4);letter-spacing:-.04em;line-height:.9}.hero h1 em{display:block}.role{font-size:var(--s1);max-width:34ch}.hero-lede{color:var(--ink-2);max-width:46ch}.facets{flex-wrap:wrap;gap:8px;margin:4px 0 0;padding:0;list-style:none;display:flex}.facets a{background:var(--paper-2);border:1px solid var(--rule);min-height:46px;transition:transform .35s var(--spring), box-shadow .2s;border-radius:999px;align-items:center;gap:10px;padding:0 18px 0 14px;font-weight:500;text-decoration:none;display:inline-flex}.facets a:hover{box-shadow:var(--shadow);transform:translateY(-3px)rotate(-1.5deg)}.facets a span{background:var(--dot);border-radius:50%;width:10px;height:10px;font-size:0}.facets li:first-child a{--dot:var(--c-blue)}.facets li:nth-child(2) a{--dot:var(--c-sun)}.facets li:nth-child(3) a{--dot:var(--c-mint)}.facets li:nth-child(4) a{--dot:var(--c-lilac)}.hero-stage{user-select:none;place-items:center;min-width:0;min-height:clamp(380px,46vw,560px);display:grid;position:relative}.hero-stage:before{content:"";aspect-ratio:1;background:radial-gradient(circle, color-mix(in srgb, var(--redline) 10%, transparent), transparent 70%);border-radius:50%;width:min(80%,440px);position:absolute}.portrait{z-index:1;aspect-ratio:896/1120;width:min(92%,430px);transform-style:preserve-3d;will-change:transform;position:relative;-webkit-mask-image:linear-gradient(#000 90%,#0000 100%);mask-image:linear-gradient(#000 90%,#0000 100%)}.portrait img{object-fit:contain;filter:drop-shadow(0 22px 26px #09090b29);user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block;position:absolute;inset:0}.hero-stage .drawing{width:min(100%,560px);position:relative}.float{left:var(--x);top:var(--y);z-index:2;background:var(--c);color:var(--tab-ink);box-shadow:var(--shadow);cursor:grab;touch-action:none;user-select:none;transform:translate(calc(var(--dx,0px) + var(--px,0px)), calc(var(--dy,0px) + var(--py,0px))) rotate(var(--rot,0deg));transition:box-shadow .2s, scale .3s var(--spring);animation:bob var(--t,6s) ease-in-out infinite alternate;border-radius:12px;gap:2px;padding:10px 14px;display:grid;position:absolute}.float b{font-family:var(--display);letter-spacing:-.01em;font-size:1.05rem;font-weight:700;line-height:1.1}.float small{font-size:.8rem;font-weight:500}.float:hover{scale:1.06}.float.dragging{cursor:grabbing;z-index:3;animation-play-state:paused;scale:1.1}@keyframes bob{0%{translate:0}to{translate:0 -10px}}@media (width<=860px){.hero-stage{min-height:360px}.float{padding:8px 11px}.float b{font-size:.92rem}.float.more{display:none}}.drawing{min-width:0;position:relative}.drawing svg{width:100%;height:auto;display:block;overflow:visible}.drawing .ln{fill:none;stroke:var(--ink);stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round}.drawing .ln.thin{stroke:var(--ink-3);stroke-width:1px}.drawing .ln.rl{stroke:var(--redline);stroke-width:1.6px}.drawing text{fill:var(--ink-2);font-size:12px;font-weight:600}.drawing text.big{letter-spacing:0;fill:var(--ink);font-size:17px;font-weight:700}.drawing text.rl{fill:var(--redline);letter-spacing:0;font-size:16px;font-weight:700}.drawing .fill{fill:var(--plate)}.draw .ln{stroke-dasharray:1;stroke-dashoffset:1px;animation:draw 1.3s var(--ease) forwards;animation-delay:calc(var(--d,0) * .14s + .2s)}@keyframes draw{to{stroke-dashoffset:0}}.readout{color:var(--ink-3);font-variant-numeric:tabular-nums;position:absolute;top:-26px;right:0}.work-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(28px,5vw,64px);display:grid}.lede{font-size:var(--s1);max-width:38ch;line-height:1.55}.details{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:36px;display:grid}.detail{background:var(--paper-2);border:1px solid var(--rule);border-radius:var(--radius);transition:transform .4s var(--spring), box-shadow .25s;align-content:start;gap:10px;padding:22px;display:grid}.detail:hover{box-shadow:var(--shadow);transform:translateY(-4px)rotate(-.6deg)}.detail .tag{color:var(--ink-3);justify-content:space-between;align-items:center;gap:12px;display:flex}.detail .tag span:last-child{background:var(--c);color:var(--tab-ink);border-radius:999px;padding:2px 10px}.detail:first-child{--c:var(--c-blue)}.detail:nth-child(2){--c:var(--c-mint)}.detail:nth-child(3){--c:var(--c-sun)}.detail:nth-child(4){--c:var(--c-coral)}.detail h3{font-family:var(--display);letter-spacing:-.02em;font-size:1.45rem;font-weight:650;line-height:1.1}.detail p{color:var(--ink-2);font-size:.95rem}.detail .note{color:var(--redline);font-size:.95rem;font-weight:600}.side{align-content:start;gap:32px;display:grid}.side h3{color:var(--ink-3);margin-bottom:12px}.facts{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:clamp(32px,5vw,56px);display:grid}.fact{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--c) 55%, var(--rule));background:linear-gradient(160deg, color-mix(in srgb, var(--c) 34%, var(--paper-2)), color-mix(in srgb, var(--c) 10%, var(--paper-2)) 70%);transition:transform .45s var(--spring), box-shadow .25s;align-content:start;gap:14px;padding:22px;display:grid;position:relative;overflow:hidden}.fact:after{content:"";background:color-mix(in srgb, var(--c) 45%, transparent);filter:blur(8px);width:140px;height:140px;transition:transform .8s var(--ease);pointer-events:none;border-radius:50%;position:absolute;top:-40px;right:-40px}.fact:hover{box-shadow:var(--shadow);transform:translateY(-6px)}.fact:hover:after{transform:translate(-30px,30px)scale(1.25)}.fact header{z-index:1;justify-content:space-between;align-items:center;gap:12px;display:flex;position:relative}.fact h3{letter-spacing:-.01em;font-size:1.2rem;font-weight:800}.fact .count{background:var(--c);min-width:32px;height:32px;color:var(--tab-ink);border-radius:999px;place-items:center;padding:0 8px;font-size:.9rem;font-weight:800;display:grid}.fact ul{z-index:1;gap:8px;margin:0;padding:0;list-style:none;display:grid;position:relative}.fact li{background:color-mix(in srgb, var(--paper-2) 78%, transparent);border:1px solid color-mix(in srgb, var(--c) 30%, transparent);transition:transform .3s var(--spring), opacity .5s var(--ease), background .2s;transition-delay:calc(var(--k) * 60ms);border-radius:10px;gap:1px;padding:10px 12px;display:grid}.fact li:hover{background:var(--paper-2);transition-delay:0s;transform:translate(4px)}.fact li span:first-child{font-weight:600}.fact li span:last-child{color:var(--ink-3);font-size:.85rem}.js .sheet:not(.drawn) .fact li{opacity:0;transform:translateY(10px)}@media (width<=900px){.facts{grid-template-columns:1fr}}@media (width<=860px){.work-grid,.hero .wrap{grid-template-columns:1fr}.drawing{order:-1;max-width:560px}}@media (width<=560px){.details{grid-template-columns:1fr}}.stack{gap:14px;display:grid}.stack-stage{perspective:1100px;cursor:grab;touch-action:pan-y;border:1px solid var(--rule);border-radius:var(--radius);background:radial-gradient(ellipse at 50% 85%, var(--plate), transparent 70%), var(--paper-2);height:360px;position:relative;overflow:hidden}.stack-stage.dragging{cursor:grabbing}.stack-stage .hint{color:var(--ink-3);pointer-events:none;font-size:.85rem;position:absolute;bottom:12px;left:14px}.tower{transform-style:preserve-3d;transform:rotateX(-24deg) rotateY(var(--ry,-35deg));position:absolute;top:74%;left:50%}.floor{--h:24px;--step:29px;cursor:pointer;transform-style:preserve-3d;transform:translate3d(0, calc(var(--i) * var(--step) * -1), 0);transition:transform .55s var(--spring), opacity .4s;transition-delay:calc(var(--i) * 70ms);background:0 0;border:0;padding:0;position:absolute;top:0;left:0}.floor:hover,.floor:focus-visible,.floor.on{transform:translate3d(22px, calc(var(--i) * var(--step) * -1 - 6px), 22px);transition-delay:0s}.floor:focus-visible{outline:none}.floor .fc{left:calc(var(--w) / -2);top:calc(var(--h) / -2);width:var(--w);height:var(--h);background:var(--c);backface-visibility:hidden;border:1px solid #0f274847;position:absolute}.floor .f1{transform:translateZ(calc(var(--w) / 2));color:var(--tab-ink);align-items:center;padding-left:10px;font-size:12px;font-weight:700;display:flex}.floor .f2{transform:rotateY(90deg) translateZ(calc(var(--w) / 2));filter:brightness(.78)}.floor .f3{transform:rotateY(180deg) translateZ(calc(var(--w) / 2));filter:brightness(.86)}.floor .f4{transform:rotateY(-90deg) translateZ(calc(var(--w) / 2));filter:brightness(.9)}.floor .f5{top:calc(var(--w) / -2);height:var(--w);transform:rotateX(90deg) translateZ(calc(var(--h) / 2));filter:brightness(1.08)}.floor.on .fc,.floor:focus-visible .fc{border-color:var(--ink)}.js .sheet:not(.drawn) .floor{transform:translate3d(0, calc(var(--i) * var(--step) * -1 - 260px), 0);opacity:0}.stack-readout{grid-template-columns:auto 1fr;align-items:baseline;gap:2px 16px;min-height:64px;display:grid}.stack-readout .yr{font-family:var(--display);letter-spacing:-.04em;color:var(--ink);font-variant-numeric:tabular-nums;grid-row:span 2;font-size:2.6rem;font-weight:700;line-height:1}.stack-readout .what{font-weight:500}.intro-row{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:16px 32px;margin-bottom:28px;display:flex}.intro-row p{max-width:52ch;color:var(--ink-2)}.filters{flex-wrap:wrap;gap:6px;display:flex}.filters button{font:inherit;font-size:var(--s-1);text-transform:capitalize;color:var(--ink-2);background:var(--paper-2);border:1px solid var(--rule);cursor:pointer;border-radius:999px;min-height:40px;padding:0 14px;font-weight:600}.filters button[aria-pressed=true]{color:var(--paper);background:var(--ink);border-color:var(--ink)}.gallery{--row:300px;flex-wrap:wrap;gap:14px;display:flex}.gallery:after{content:"";flex-grow:999999}.item{flex:calc(var(--r) * 1000) 1 calc(var(--r) * var(--row));gap:8px;min-width:0;margin:0;display:grid}.item[hidden]{display:none}.frame{width:100%;aspect-ratio:var(--r);border:1px solid var(--rule);background:var(--plate);cursor:zoom-in;transition:border-color .2s, transform .4s var(--ease);border-radius:10px;padding:0;display:block;position:relative;overflow:hidden}.frame:hover{border-color:var(--ink-2)}.frame img{object-fit:cover;width:100%;height:100%;display:block}.photos .frame:before,.photos .frame:after{content:"";z-index:1;pointer-events:none;border:1.5px solid #ffffffd9;width:18px;height:18px;position:absolute}.photos .frame:before{border-bottom:0;border-right:0;top:10px;left:10px}.photos .frame:after{border-top:0;border-left:0;bottom:10px;right:10px}figcaption{gap:2px;font-size:.9rem;display:grid}figcaption span:last-child{color:var(--ink-3);font-size:.85rem}.drawings{--row:340px;gap:clamp(20px,3vw,36px)}.drawings .frame{background:var(--paper-2);overflow:visible}.drawings .item:nth-child(odd) .frame{transform:rotate(-1.1deg)}.drawings .item:nth-child(2n) .frame{transform:rotate(.9deg)}.drawings .frame:hover{transform:rotate(0)translateY(-4px)}.drawings .frame:before{content:"";z-index:1;background:color-mix(in srgb, var(--ink) 16%, transparent);width:56px;height:18px;position:absolute;top:-7px;left:50%;transform:translate(-50%)rotate(-3deg)}.drawings .painting .frame img{box-shadow:0 12px 26px -12px #0009}@media (width<=640px){.gallery{--row:180px}.drawings{--row:220px}}.notes{border-top:1px solid var(--rule);margin:0;padding:0;list-style:none}.notes li{border-bottom:1px solid var(--rule);grid-template-columns:110px minmax(0,1fr) auto;align-items:baseline;gap:20px;padding:20px 0;display:grid}.notes h3{font-family:var(--display);letter-spacing:-.02em;font-size:1.4rem;font-weight:650;line-height:1.15}.notes p{color:var(--ink-2);margin-top:6px;font-size:.95rem}.notes h3 a{background:linear-gradient(var(--redline), var(--redline)) 0 100% / 0 1px no-repeat;transition:background-size .4s var(--ease);text-decoration:none}.notes h3 a:hover,.notes h3 a:focus-visible{background-size:100% 1px}.notes h3 a:after{content:" ↗";color:var(--redline);font-size:.7em}.status{border:1px solid var(--rule);text-align:center;color:var(--ink-2);white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:.8rem;font-weight:600}.status.on{color:var(--redline);border-color:var(--redline)}@media (width<=640px){.notes li{grid-template-columns:1fr;gap:8px}}.contact .wrap{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:end;gap:40px;display:grid}.contact h2{font-family:var(--display);font-size:var(--s3);line-height:1.02}.links{border-top:1px solid var(--rule);margin:0;padding:0;list-style:none;display:grid}.links li{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.links code{color:var(--ink-2);overflow-wrap:anywhere;font-family:inherit;font-size:.95rem}@media (width<=760px){.contact .wrap{grid-template-columns:1fr}}footer{color:var(--ink-3);padding-block:28px}footer .wrap{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}dialog{border:1px solid var(--rule);background:var(--paper);color:var(--ink);width:min(920px,100vw - 32px);max-height:calc(100vh - 32px);padding:0}dialog::backdrop{background:#040e1cc7}.lb-frame{background:repeating-linear-gradient(135deg, var(--plate) 0 2px, transparent 2px 12px);border-bottom:1px solid var(--rule);place-items:center;width:100%;min-height:200px;max-height:76vh;display:grid;position:relative;overflow:hidden}.lb-frame img{object-fit:contain;width:auto;max-width:100%;height:auto;max-height:76vh;display:block}.lb-caption{color:var(--ink-2);max-width:70ch;padding:0 16px 14px}.lb-caption:empty{display:none}.lb-bar{justify-content:space-between;align-items:center;gap:16px;padding:12px 16px;display:flex}.lb-bar h3{font-family:var(--display);font-size:var(--s1)}.lb-close{font:inherit;color:var(--ink);border:1px solid var(--rule);cursor:pointer;background:0 0;min-height:44px;padding:0 14px}@media (prefers-reduced-motion:reduce){.fact,.fact li,.fact:after{transition:none}.float{animation:none}.floor{transition:none}.js .sheet:not(.drawn) .floor{transform:translate3d(0, calc(var(--i) * var(--step) * -1), 0);opacity:1}html{scroll-behavior:auto}.draw .ln{stroke-dashoffset:0;animation:none}.frame{transition:none}}.post{max-width:68ch;margin:0 auto;padding-block:56px 96px}.post h1{font-family:var(--display);font-size:var(--s3);margin:12px 0 28px;line-height:1.05}.post .body{gap:1.1em;font-size:1.06rem;display:grid}.post .body h2{font-family:var(--display);font-size:var(--s2);margin-top:.6em}.post .body a{color:var(--redline)}.back{color:var(--ink-2);margin-bottom:8px;text-decoration:none;display:inline-block}.cursor-dot,.cursor-ring{z-index:100;pointer-events:none;opacity:0;border-radius:50%;transition:opacity .2s;position:fixed;top:0;left:0}.cursor-dot{background:var(--ink);width:8px;height:8px;margin:-4px 0 0 -4px}.cursor-ring{border:1.5px solid var(--ink);width:38px;height:38px;color:var(--paper);transition:opacity .2s, width .25s var(--ease), height .25s var(--ease), margin .25s var(--ease), background .2s, border-color .2s;place-items:center;margin:-19px 0 0 -19px;font-size:.75rem;font-weight:700;display:grid}.cursor-ring span{opacity:0;transition:opacity .15s}html.has-cursor.cursor-in .cursor-dot,html.has-cursor.cursor-in .cursor-ring{opacity:1}html.has-cursor,html.has-cursor *{cursor:none!important}html.has-cursor .cursor-ring.hot{background:var(--redline);border-color:var(--redline);width:64px;height:64px;margin:-32px 0 0 -32px}html.has-cursor .cursor-ring.hot.labelled span{opacity:1}html.has-cursor .cursor-ring.labelled~.cursor-dot{opacity:0}html.has-cursor .cursor-ring.down{width:30px;height:30px;margin:-15px 0 0 -15px}.see-all{background:var(--ink);min-height:48px;color:var(--paper);transition:transform .35s var(--spring), box-shadow .2s;border-radius:999px;align-items:center;gap:10px;margin-top:28px;padding:0 22px;font-weight:700;text-decoration:none;display:inline-flex}.see-all span{transition:transform .3s var(--spring)}.see-all:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.see-all:hover span{transform:translate(4px)}.gallery-page{padding-block:clamp(28px,5vw,56px) clamp(56px,8vw,96px)}.gallery-page .back{color:var(--ink-2);margin-bottom:20px;font-weight:600;text-decoration:none;display:inline-block}.gallery-page .back:hover{color:var(--redline)}.page-head{gap:10px;margin-bottom:24px;display:grid}.page-head h1{font-size:var(--s3);line-height:1.05}.page-head h1 em{color:var(--redline);font-style:normal}.page-head .muted{max-width:60ch}.gallery-page .intro-row{margin-bottom:20px}.to-top{width:max-content;color:var(--ink-2);margin:40px auto 0;font-weight:600;text-decoration:none;display:block}.to-top:hover{color:var(--redline)}.lb-nav{z-index:2;border:1px solid var(--rule);background:color-mix(in srgb, var(--paper-2) 88%, transparent);width:48px;height:48px;color:var(--ink);cursor:pointer;box-shadow:var(--shadow);transition:transform .2s var(--spring);border-radius:50%;place-items:center;display:grid;position:absolute;top:calc(50% - 60px)}.lb-nav:hover{transform:scale(1.08)}.lb-prev{left:12px}.lb-next{right:12px}dialog.single .lb-nav{display:none}.lb-right{align-items:center;gap:14px;display:flex}.lb-count{font-variant-numeric:tabular-nums;white-space:nowrap}dialog#lightbox{border-radius:var(--radius);position:fixed;overflow:hidden}
