:root{--paper:#f3efe8;--ink:#0b0b0b;--gutter:clamp(16px, 3vw, 40px)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Jost,Helvetica Neue,Arial,sans-serif}.page{min-height:100svh;padding:var(--gutter);grid-template-rows:auto minmax(360px,1fr) auto;grid-template-columns:minmax(0,1fr);gap:14px;display:grid}.bar{border-bottom:1px solid var(--ink);letter-spacing:.28em;text-transform:uppercase;justify-content:space-between;align-items:center;padding-bottom:14px;font-size:12px;display:flex}.stage{flex-direction:column;gap:clamp(10px,1.6vw,22px);min-width:0;min-height:0;display:flex}.photo-wrap{flex:1;min-height:0;position:relative}.photo{aspect-ratio:4/5;opacity:0;background:#111;max-width:100%;animation:1.1s 50ms forwards fade;position:absolute;top:0;bottom:0;left:50%;overflow:hidden;transform:translate(-50%)}.photo img{object-fit:cover;object-position:50% 20%;width:100%;height:100%;display:block;position:absolute;inset:0}.photo[role=button]{cursor:pointer;-webkit-tap-highlight-color:transparent}.photo[role=button]:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.photo .alt{opacity:0}.photo.playful .alt{opacity:1}.photo.playful .main{opacity:0}.photo.wiggle{animation:1.1s 50ms forwards fade,.45s wiggle}.photo.playful:after{opacity:.025}.photo:after{content:"";opacity:.133;mix-blend-mode:overlay;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 1.1 -0.1'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:.9s steps(6,end) infinite grain;position:absolute;inset:-50%}.name{font-variation-settings:"opsz" 96;text-transform:uppercase;letter-spacing:-.02em;white-space:nowrap;text-align:center;opacity:0;width:100%;font-family:Bodoni Moda,Didot,"Bodoni 72",serif;font-size:11.6vw;font-weight:800;line-height:.9;animation:.9s cubic-bezier(.2,.7,.2,1) .25s forwards rise}.links{border-top:1px solid var(--ink);justify-content:space-between;align-items:center;padding-top:14px;display:flex}.links a,.links button{color:inherit;letter-spacing:.28em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;padding:6px 0;font-family:inherit;font-size:13px;font-weight:500;text-decoration:none;position:relative}.links a:after,.links button:after{content:"";transform-origin:0;background:currentColor;height:1px;transition:transform .3s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.links a:hover:after,.links button:hover:after,.links button:focus-visible:after{transform:scaleX(1)}.links button:focus-visible{outline:2px solid var(--ink);outline-offset:4px}dialog{background:var(--paper);color:var(--ink);border:0;border-radius:22px;margin:auto;padding:0;animation:.28s cubic-bezier(.2,.8,.2,1) pop;overflow:hidden;box-shadow:0 24px 70px #0000004d}dialog:focus{outline:none}dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0b0b0b80;animation:.28s fade-in}.icon{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.round{width:38px;height:38px;color:var(--ink);cursor:pointer;background:#0b0b0b12;border:0;border-radius:50%;place-items:center;text-decoration:none;transition:background .2s,color .2s;display:grid}.round:hover,.round:focus-visible{background:var(--ink);color:var(--paper);outline:none}.round .icon{width:18px;height:18px}.modal-bar{justify-content:flex-end;gap:8px;padding:12px 12px 0;display:flex}#contact{width:min(360px,100vw - 32px)}.tiles{grid-template-columns:1fr 1fr;gap:10px;padding:12px;list-style:none;display:grid}.tiles li{aspect-ratio:1;position:relative}.tiles a{color:var(--ink);background:#0b0b0b0f;border-radius:16px;place-items:center;transition:background .2s,color .2s,transform .2s;display:grid;position:absolute;inset:0}.tiles a:hover,.tiles a:focus-visible{background:var(--ink);color:var(--paper);outline:none;transform:translateY(-2px)}.tiles a .icon{stroke-width:1.5px;width:44px;height:44px}.tiles .copy{width:34px;height:34px;color:var(--ink);background:#f3efe8e6;position:absolute;bottom:8px;right:8px;box-shadow:0 0 0 1px #0b0b0b1f}.tiles .copy:hover,.tiles .copy:focus-visible,.tiles .copy.done{background:var(--ink);color:var(--paper)}.copy .i-check,.copy.done .i-copy{display:none}.copy.done .i-check{display:block}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}#cv{width:min(880px,100vw - 32px);height:calc(100svh - 32px)}#cv[open]{flex-direction:column;display:flex}#cv iframe{background:#fff;border:0;flex:1;width:100%;margin-top:12px}@keyframes pop{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}}@keyframes wiggle-flat{0%{transform:rotate(0)scale(1)}25%{transform:rotate(-2.5deg)scale(1.03)}55%{transform:rotate(2deg)scale(1.03)}80%{transform:rotate(-.8deg)scale(1.01)}to{transform:rotate(0)scale(1)}}@keyframes wiggle{0%{transform:translate(-50%)rotate(0)scale(1)}25%{transform:translate(-50%)rotate(-2.5deg)scale(1.03)}55%{transform:translate(-50%)rotate(2deg)scale(1.03)}80%{transform:translate(-50%)rotate(-.8deg)scale(1.01)}to{transform:translate(-50%)rotate(0)scale(1)}}@media (width>=900px) and (orientation:landscape){.stage{grid-template-columns:1fr 1fr;align-items:center;gap:clamp(16px,3vw,48px);display:grid}.name{text-align:left}.name span{width:max-content;display:block}.photo-wrap{align-self:stretch}.photo{left:auto;right:0;transform:none}.photo.wiggle{animation-name:fade,wiggle-flat}}@keyframes fade{to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes grain{0%{transform:translate(0)}17%{transform:translate(-5%,4%)}33%{transform:translate(6%,-6%)}50%{transform:translate(-4%,-3%)}67%{transform:translate(5%,5%)}83%{transform:translate(-6%,2%)}to{transform:translate(0)}}@media (prefers-reduced-motion:reduce){.photo,.name{opacity:1;animation:none}.photo.wiggle,.photo:after{animation:none}.links button:after{transition:none}dialog,dialog::backdrop{animation:none!important}}@media (width<=640px){.photo{aspect-ratio:auto;max-width:none;left:0;right:0;transform:none}.photo.wiggle{animation-name:fade,wiggle-flat}.bar{font-size:10px}.links button{letter-spacing:.2em;font-size:12px}}
