.signing-wall{--wall-line:color-mix(in srgb, var(--paper) 18%, var(--ink));--wall-surface:color-mix(in srgb, var(--paper) 3%, var(--ink))}.wall-controls{grid-template-columns:minmax(160px,1fr) minmax(120px,.7fr) auto;align-items:end;gap:12px 22px;margin-bottom:14px;display:grid}.wall-controls label,.wall-admin label{color:var(--muted);gap:3px;font-size:.86rem;display:grid}.wall-controls input,.wall-admin input{border:1px solid var(--wall-line);background:var(--wall-surface);width:100%;color:var(--paper);font:inherit;border-radius:3px;padding:8px 10px;font-size:1rem}.wall-ink{align-self:center;align-items:center;gap:8px;font:.76rem/1.3 Consolas,monospace;display:flex}.wall-ink progress{min-width:0;height:10px;accent-color:var(--accent);flex:1}.wall-tools,.wall-foot{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.wall-view-tools{justify-content:flex-end;gap:6px;margin-bottom:10px;display:flex}.wall-foot{justify-content:space-between;gap:12px 20px;padding-top:12px;font-size:.86rem}.wall-status{min-width:24ch;color:var(--muted);flex:1}#portfolio .wall-signed-note{color:var(--muted);margin-bottom:12px}.wall-count{font:.74rem/1.3 Consolas,monospace}.signing-wall button,.wall-admin button{background:color-mix(in srgb, var(--paper) 9%, var(--ink));min-width:42px;min-height:44px;color:var(--paper);font:inherit;cursor:pointer;touch-action:manipulation;border:0;border-radius:3px;padding:6px 10px;font-size:.86rem}.signing-wall button:disabled,.wall-admin button:disabled{opacity:.43;cursor:default}.signing-wall .wall-primary,.wall-admin .wall-primary{background:var(--paper);color:var(--ink);font-weight:600}.wall-viewport{border:1px solid var(--wall-line);background:var(--wall-surface);height:clamp(330px,67svh,740px);overflow:auto}.wall-board{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;min-width:0;height:auto;display:block}.wall-viewport.is-panning,.wall-board.is-panning{touch-action:none;cursor:grab}.wall-viewport.is-dragging,.wall-viewport.is-dragging .wall-board{cursor:grabbing}.wall-board path,.wall-admin svg path{fill:none;stroke:currentColor;stroke-width:7.5px;stroke-linejoin:round;stroke-linecap:round}.wall-board circle,.wall-admin svg circle{fill:currentColor}.wall-draft{color:var(--accent)}.wall-name{color:currentColor;white-space:nowrap;text-overflow:ellipsis;font:500 25px/1.35 DM Sans,sans-serif;overflow:hidden}.wall-packed-name{font-size:22px}.wall-board g{pointer-events:none}@media (width<=980px){.wall-controls{grid-template-columns:1fr 1fr}.wall-tools{grid-column:1/-1}}@media (width<=520px){.wall-controls{grid-template-columns:minmax(0,1fr) minmax(90px,.65fr);gap:9px}.wall-tools{gap:5px}.signing-wall button{padding-inline:8px;font-size:.8rem}.wall-viewport{height:58svh}}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-400.ttf)format("truetype");font-weight:400;font-display:swap}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-500.ttf)format("truetype");font-weight:500;font-display:swap}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-600.ttf)format("truetype");font-weight:600;font-display:swap}#portfolio{--rule:color-mix(in srgb, var(--paper) 32%, var(--ink));--muted:color-mix(in srgb, var(--paper) 72%, var(--ink));--accent:#d9f959;font-family:DM Sans,sans-serif;font-size:clamp(1rem,1.2vw,1.1rem);line-height:1.55}html[data-edition=light] #portfolio{--accent:#4d650f}#portfolio h1,#portfolio h2,#portfolio h3,#portfolio p,#portfolio figure{margin:0}#portfolio a{color:inherit;text-underline-offset:.28em;text-decoration-thickness:1px}#portfolio a:hover{opacity:.75}#portfolio :focus-visible,.build-controls :focus-visible{outline-offset:4px;outline:2px solid}.portfolio-shell{width:min(100% - 2*clamp(18px,4.5vw,72px),1540px);margin-inline:auto}.portfolio-nav,.portfolio-nav>div{align-items:center;gap:clamp(12px,2.7vw,34px);display:flex}.portfolio-nav{z-index:3;border-bottom:1px solid var(--rule);background:var(--ink);justify-content:space-between;min-height:72px;position:relative}.portfolio-nav a{font-size:clamp(.8rem,1.45vw,1.12rem);text-decoration:none}.wordmark{letter-spacing:-.025em;font-weight:600}.hero-scene{isolation:isolate;flex-direction:column;min-height:100svh;display:flex}.hero-grid{flex:1;align-items:center;padding:6svh 0 12svh;display:grid;position:relative}.hero-type{z-index:1;width:fit-content;position:relative}#portfolio-name,.chapter h2{letter-spacing:-.059em;font-weight:600}#portfolio-name{font-size:clamp(3.8rem,13vw,12.4rem);line-height:.84}#portfolio-name>span{display:block}#portfolio-name>span:last-child{letter-spacing:-.055em;margin-top:.08em;font-size:.83em;font-weight:400}.hero-deck{padding-top:30px;font-size:clamp(1.04rem,2.05vw,2rem);line-height:1.25}.hero-link{margin-top:27px;font-size:clamp(1rem,1.7vw,1.55rem);display:inline-block}.hero-link span{color:var(--accent)}.portrait{z-index:2;pointer-events:none;width:min(53%,680px,max(180px,100svh - 96px));position:absolute;bottom:0;right:-1%}.portrait img{aspect-ratio:1;width:100%;height:auto;display:block;-webkit-mask-image:linear-gradient(#000 0 81%,#0000 100%);mask-image:linear-gradient(#000 0 81%,#0000 100%)}.chapter{border-top:1px solid var(--rule);padding:clamp(52px,8vw,122px) 0;scroll-margin-top:18px}.chapter-head{justify-content:space-between;align-items:end;gap:24px;margin-bottom:clamp(28px,4vw,55px);display:flex}.chapter h2{font-size:clamp(3rem,7vw,7.6rem);line-height:1}.chapter-head p{max-width:32ch;color:var(--muted);padding-bottom:2px;line-height:1.4}.chapter-head:has(.chapter-label){grid-template-columns:1fr auto;align-items:end;gap:12px 28px;display:grid}.chapter-label{color:var(--accent);letter-spacing:.025em;grid-column:1/-1;justify-self:start;font-size:.85rem;font-weight:500}.chapter-head:has(.chapter-label) h2{font-size:clamp(3.2rem,7.1vw,7.3rem);font-weight:500}.creative-grid,.media-grid{grid-template-columns:1.22fr 1fr;gap:clamp(14px,1.8vw,30px);display:grid}.media-frame{border:1px solid var(--rule);overflow:hidden}.media-frame img{object-fit:cover;width:100%;height:100%;display:block}.creative-grid img{object-fit:contain}#portfolio figcaption{padding-top:9px;line-height:1.3}#portfolio .text-link{border:1px solid var(--rule);margin-top:14px;padding:6px 12px;font-size:.9rem;font-weight:500;text-decoration:none;display:inline-block}#portfolio .text-link:hover{border-color:var(--paper);opacity:1}#work{border-top:0}.work-grid{grid-template-columns:1.04fr 1fr;gap:clamp(42px,6vw,96px) clamp(22px,4vw,66px);display:grid}.work-feature{flex-direction:column;gap:clamp(16px,2vw,30px);min-width:0;display:flex}.work-lead{grid-column:1/-1;grid-template-columns:minmax(0,2.65fr) minmax(0,1fr);align-items:center;display:grid}.work-image{aspect-ratio:16/10;border-radius:5px;place-items:center;display:grid;overflow:hidden}.work-lead .work-image{aspect-ratio:1849/829;background:#0a1321}.work-image img{object-fit:contain;width:100%;height:100%;min-height:0}.work-caption{flex:1;grid-template-rows:auto auto 1fr auto;align-content:start;gap:7px;display:grid}.work-caption h3{letter-spacing:-.06em;font-size:clamp(1.85rem,4vw,4.25rem);line-height:1}.work-lead h3{font-size:clamp(2.25rem,4.3vw,5rem)}.work-metric{color:var(--accent);font-variant-numeric:tabular-nums;font-size:clamp(.92rem,1.55vw,1.35rem);font-weight:600}.work-summary{color:var(--muted);text-wrap:pretty;max-width:51ch;padding-top:3px}.work-links{flex-wrap:wrap;gap:0 clamp(15px,1.8vw,27px);margin-top:6px;display:flex}#portfolio .work-links a,.work-more,.work-back,.work-close{align-items:center;min-height:44px;font:600 .9rem/1.2 DM Sans,sans-serif;text-decoration:none;display:inline-flex}#portfolio .work-links a:hover{color:var(--accent);opacity:1}.work-more,.work-back,.work-close{background:color-mix(in srgb, var(--paper) 8%, var(--ink));color:var(--paper);cursor:pointer;border:0;border-radius:3px;padding:0 15px;transition:background .18s}.work-more:hover,.work-back:hover,.work-close:hover{background:color-mix(in srgb, var(--paper) 16%, var(--ink))}.work-more{margin-top:clamp(32px,5vw,76px)}.work-dialog{width:min(860px,100% - 28px);max-height:min(86dvh,880px);color:var(--paper);background:color-mix(in srgb, var(--paper) 7%, var(--ink));overscroll-behavior:contain;border:0;border-radius:8px;padding:clamp(16px,3vw,38px)}.work-dialog::backdrop{background:#000a}html:has(.work-dialog[open]){overflow:hidden}.work-dialog>header{justify-content:space-between;align-items:start;gap:14px;display:flex}.work-dialog>header h2{font-size:clamp(1.8rem,4vw,3.65rem)}.work-close{gap:7px}.work-back{margin-top:18px}.work-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:28px;display:grid}#portfolio .work-archive-item{background:color-mix(in srgb, var(--paper) 5%, transparent);flex-direction:column;gap:7px;padding:14px;text-decoration:none;display:flex}.work-archive-item img{aspect-ratio:16/9;object-fit:contain;width:100%}.work-archive-item strong{font-size:1.17rem;line-height:1.2}.work-archive-item small,.work-archive-item p{color:var(--muted)}.work-archive-item small{letter-spacing:.06em;font-size:.72rem}.work-archive-item p{font-size:.88rem}.work-dialog .media-frame{border:0}.creative-archive{border-bottom:1px solid var(--rule)}.creative-archive summary{cursor:pointer;padding:14px 0;list-style:none}#portfolio summary::-webkit-details-marker{display:none}.stack{color:var(--muted);font-size:.82rem}.project-body{padding:12px 0 24px;line-height:1.6}.project-body>p:first-child{max-width:78ch}.project-body .stack{margin-top:14px!important}.inline-links{flex-wrap:wrap;gap:8px 20px;margin:12px 0 20px;display:flex}.media-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:16px}.media-grid .media-frame{aspect-ratio:16/10;background:color-mix(in srgb, var(--paper) 8%, var(--ink))}.media-grid img{object-fit:contain}.creative-grid{grid-template-columns:1fr 1.6fr}.creative-grid .media-frame{aspect-ratio:1.2;background:color-mix(in srgb, var(--paper) 8%, var(--ink))}.creative-archive{border-top:1px solid var(--rule);margin-top:26px}.creative-archive summary{justify-content:space-between;display:flex}.about-grid{grid-template-columns:1.25fr 1fr;align-items:start;gap:8%;display:grid}.statement{letter-spacing:-.055em;font-size:clamp(1.8rem,4.7vw,5rem);font-weight:600;line-height:1.08}.about-copy{border-top:1px solid var(--rule);color:var(--muted);padding-top:15px;font-size:clamp(1rem,1.6vw,1.25rem);line-height:1.65}.about-copy p+p{margin-top:14px!important}.wins-carousel{width:min(100%,200svh);container-type:inline-size}.wins-stage{background:var(--ink)}.wins-rail{--photo-height:min(53svh, 94cqi, 540px);scrollbar-width:none;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;gap:clamp(10px,1.5vw,20px);display:flex;position:relative;overflow-x:auto}.win-photo{--photo-width:calc(var(--photo-height) * var(--photo-ratio));width:var(--photo-width);scroll-snap-align:start;flex:none;scroll-margin-inline-start:calc((100cqi - var(--photo-width)) * var(--slide-progress))}.win-photo .media-frame{height:var(--photo-height);border:0}.win-photo img{object-fit:contain}.win-photo figcaption{min-height:64px;margin-top:12px;padding:0 0 12px}.win-photo strong{letter-spacing:-.035em;font-size:clamp(1.1rem,2.05vw,1.8rem);font-weight:500;line-height:1.17;display:block}.win-photo figcaption>span{color:var(--muted);margin-top:5px;font-size:.86rem;display:block}.wins-controls{border-top:1px solid var(--rule);justify-content:space-between;align-items:center;padding-top:10px;display:flex}.wins-controls>div{gap:8px;display:flex}.wins-controls button{border:1px solid var(--rule);width:46px;height:44px;color:inherit;cursor:pointer;background:0 0;font-size:1.18rem}.wins-controls button:not([aria-disabled=true]):hover{background:var(--paper);color:var(--ink)}.wins-controls button[aria-disabled=true]{opacity:.36;cursor:default}.wins-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.8rem}html:not(.is-building) body.is-revealed .wins-scrub:after{content:"";height:var(--gallery-travel);display:block}html:not(.is-building) body.is-revealed .wins-scrub .wins-stage{position:sticky;top:clamp(12px,5svh,54px)}html:not(.is-building) body.is-revealed .wins-scrub .wins-rail{scroll-snap-type:none;touch-action:pan-y pinch-zoom;overflow-x:hidden}.milestone{padding-top:24px}.timeline-list{width:min(100%,860px);margin-inline:auto}.timeline-year{grid-template-columns:clamp(64px,12vw,148px) 1fr;display:grid}.timeline-year strong{letter-spacing:-.045em;font-variant-numeric:tabular-nums;place-self:start;font-size:clamp(1.45rem,3vw,3rem);font-weight:500;line-height:1}.timeline-year ul{border-left:1px solid var(--rule);gap:11px;margin:0;padding:1px 0 38px clamp(24px,5vw,60px);line-height:1.45;list-style:none;display:grid;position:relative}.timeline-year ul:before{content:"";background:var(--accent);border-radius:50%;width:7px;height:7px;position:absolute;top:.45em;left:-4px}.timeline-year ul.build-year-waiting:before{visibility:hidden}.timeline-year li{width:fit-content;max-width:min(100%,62ch);position:relative}.timeline-year li:before{content:"–";color:var(--muted);position:absolute;left:-1em}.skills-grid{border-top:1px solid var(--rule)}.skill-row{border-bottom:1px solid var(--rule);grid-template-columns:minmax(145px,.26fr) 1fr;display:grid}#portfolio .skill-row h3{border-right:1px solid var(--rule);letter-spacing:.13em;text-transform:uppercase;align-items:center;padding:15px clamp(10px,2.2vw,32px) 15px 0;font:500 .76rem/1.4 Consolas,monospace;display:flex}.skill-row ul{grid-template-columns:repeat(8,minmax(0,1fr));gap:4px;margin:0;padding:14px 10px;list-style:none;display:grid}.skill-tile{width:100%;min-height:clamp(60px,7vw,110px);color:inherit;cursor:pointer;background:0 0;border:0;place-items:center;display:grid;position:relative}.skill-tile img{object-fit:contain;width:clamp(24px,3.2vw,46px);height:auto;max-height:46px;filter:brightness(0) invert(var(--skill-invert,1));transition:opacity .16s,transform .22s}.skill-tile span{opacity:0;text-align:center;overflow-wrap:anywhere;text-transform:uppercase;letter-spacing:.055em;place-items:center;padding:4px;font:500 clamp(.55rem,.95vw,.76rem)/1.15 Consolas,monospace;transition:opacity .16s,transform .22s;display:grid;position:absolute;inset:0;transform:translateY(5px)}.skill-tile:is(:hover,:focus-visible,[aria-pressed=true]) img{opacity:0;transform:translateY(-5px)scale(.94)}.skill-tile:is(:hover,:focus-visible,[aria-pressed=true]) span{opacity:1;transform:translateY(0)}.skill-tile[aria-pressed=true] span{text-underline-offset:5px;text-decoration:underline}#portfolio .skill-tile:focus-visible{outline-offset:-3px}.contact-grid{border-top:1px solid var(--rule);grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:36px;padding-top:28px;display:grid}.contact-mail{letter-spacing:-.045em;overflow-wrap:anywhere;min-width:0;font-size:clamp(1.05rem,3.2vw,3rem);font-weight:500;line-height:1.2}.social-links{flex-wrap:wrap;align-items:center;gap:clamp(8px,1.1vw,16px);display:flex}#portfolio .social-links a{aspect-ratio:1;border:1px solid var(--rule);border-radius:50%;place-items:center;width:clamp(46px,4.1vw,61px);text-decoration:none;transition:border-color .18s,background .18s,color .18s;display:grid}.social-links :is(img,svg){width:23px;height:23px}.social-links img{filter:brightness(0) invert(var(--skill-invert,1))}#portfolio .social-links a:is(:hover,:focus-visible){opacity:1;border-color:var(--paper);background:color-mix(in srgb, var(--paper) 10%, var(--ink))}html.is-building{overflow-anchor:none;overflow:hidden}.is-building .work-image{overflow:visible}.build-piece[data-build-state=waiting]{visibility:hidden}.build-piece[data-build-state=dragging]{translate:var(--piece-x,0px) var(--piece-y,0px);opacity:var(--piece-opacity,1)}.is-building .wins-rail{scroll-snap-type:none}.build-layer{pointer-events:auto;touch-action:manipulation;z-index:11;position:fixed;inset:0;overflow:clip}.build-rule-stroke{transform-origin:0 0;pointer-events:none;width:1px;height:1px;position:absolute;top:0;left:0}.build-layer:before{content:"";background:var(--ink);opacity:calc(.88 * var(--build-dim,0));position:absolute;inset:0}.build-caret{color:var(--paper);white-space:pre;z-index:1;align-items:center;display:flex;position:absolute;inset:0 auto auto 0}.build-caret[hidden]{display:none}.build-caret:after{content:"";background:var(--worker);width:2px;height:100%;animation:.85s step-end infinite build-caret-blink}.build-caret span{line-height:1}::highlight(build-pending){color:#0000;text-shadow:none}::highlight(build-edit){color:#14121a;background-color:#c6b2ff}@keyframes build-caret-blink{0%,68%{opacity:1}69%,to{opacity:0}}.build-worker{z-index:2;color:var(--worker);will-change:transform;align-items:start;gap:3px;display:flex;position:absolute;top:0;left:0}.build-worker svg{filter:drop-shadow(0 2px 3px #0008);width:24px;height:24px;overflow:visible}.build-worker span{background:var(--worker);color:#0b0b0b;white-space:nowrap;margin-top:16px;padding:5px 7px;font:600 11px/1 DM Sans,sans-serif}.build-worker.label-left span{position:absolute;right:calc(100% + 3px)}.build-worker.is-grabbing svg{scale:.88}.build-selection{z-index:1;border:1px solid var(--worker);background:color-mix(in srgb, var(--worker) 8%, transparent);position:absolute;top:0;left:0}.build-selection[hidden]{display:none}.build-selection:before,.build-selection:after{content:"";background:var(--worker);border:1px solid #1c1c1c;width:5px;height:5px;position:absolute}.build-selection:before{top:-4px;left:-4px}.build-selection:after{bottom:-4px;right:-4px}.build-controls{z-index:12;bottom:max(16px, env(safe-area-inset-bottom));pointer-events:none;justify-content:flex-end;align-items:center;gap:10px;display:flex;position:fixed;left:4.5%;right:4.5%}.build-controls button{pointer-events:auto;color:#f3f0e9;cursor:pointer;letter-spacing:-.015em;background:#242424;border:0;border-radius:999px;min-height:44px;padding:8px 16px;font:600 .875rem/1.2 DM Sans,sans-serif}.build-skip{flex:none}.build-boost{max-width:230px;transition:opacity .22s;animation:.3s both build-hint-in}.build-boost.is-finished{opacity:0;pointer-events:none;animation:none}.build-signature{width:min(84vw,900px,210svh);height:auto;position:absolute;top:46%;left:50%;overflow:visible;transform:translate(-50%,-50%)}.build-signature path{fill:none;stroke:var(--paper);stroke-width:2.8px;stroke-linecap:round;stroke-linejoin:round}@keyframes build-hint-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media (width<=720px){.portfolio-nav{flex-wrap:wrap;align-content:center;gap:0 12px;min-height:58px;padding:3px 0}.portfolio-nav>div{gap:12px}.portfolio-nav a{align-items:center;min-height:44px;font-size:.79rem;display:inline-flex}.hero-grid{align-items:start;min-height:74svh;padding:11svh 0 44px}#portfolio-name{font-size:clamp(3.45rem,16vw,7.5rem)}.hero-deck{padding-top:19px}.hero-link{align-items:center;gap:.35em;min-height:44px;margin-top:6px;display:inline-flex}.portrait{z-index:0;width:min(94%,440px,max(140px,74svh - 36px));bottom:6svh;right:-2%}.hero-type{max-width:100%}.chapter-head{flex-direction:column;align-items:start;gap:13px}.chapter h2{letter-spacing:-.075em;font-size:clamp(2.55rem,10.8vw,4.8rem)}.about-grid,.contact-grid{grid-template-columns:1fr;gap:22px}.work-grid,.work-lead,.work-archive-grid,.creative-grid{grid-template-columns:1fr}.chapter-head:has(.chapter-label){grid-template-columns:1fr}.skill-row{grid-template-columns:1fr}#portfolio .skill-row h3{border-right:0;padding:12px 0 0}.skill-row ul{grid-template-columns:repeat(4,minmax(0,1fr));padding:4px 0 12px}#portfolio .text-link{align-items:center;min-height:44px;display:inline-flex}.contact-mail a{min-height:44px;padding-block:11px;display:inline-block}}@media (width<=720px) and (orientation:portrait){.hero-grid{align-content:space-between;gap:10px;min-height:0;padding:clamp(28px,7svh,60px) 0 18px}.portrait{justify-self:end;width:min(94%,440px,43svh);position:relative;inset:auto}}
