:root{--blue:#244bea;--ink:#17191d;--muted:#60646e;--line:#dedfe3;--paper:#fafafa;--site-header-h:80px}*{box-sizing:border-box}html{--scroll-offset:calc(var(--site-header-h) + 24px);scroll-behavior:smooth;scroll-padding-top:var(--scroll-offset)}body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}button,a,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,summary:focus-visible{outline-offset:6px;outline:3px solid #ff9f45}a:hover{color:var(--blue)}.wrap{max-width:1280px;margin:auto;padding-left:64px;padding-right:64px}.brand{letter-spacing:-1.7px;font-size:32px;font-weight:800}.brand span,.blue{color:var(--blue)}.hero{padding-top:84px}.eyebrow{letter-spacing:1.5px;font-size:12px;font-weight:600;line-height:1.6}.hero .eyebrow{align-items:center;gap:12px;display:flex}.line{background:var(--blue);width:25px;height:2px}h1{letter-spacing:-6px;margin:31px 0 34px;font-size:clamp(48px,7.5vw,102px);font-weight:600;line-height:1.04}h2{letter-spacing:-1.8px;margin:16px 0 0;font-size:44px;font-weight:500;line-height:1.1}p{color:var(--muted);font-size:16px;line-height:1.7}.hero-bottom p{max-width:550px;margin:0;font-size:18px}.hero-actions{flex-wrap:wrap;align-items:center;gap:16px 22px;margin-top:28px;display:flex}.button{white-space:nowrap;border-radius:5px;justify-content:center;align-items:center;padding:16px 24px;font-size:15px;font-weight:600;transition:transform .2s,background .2s;display:inline-flex}.button:hover{transform:translateY(-3px)}.primary{background:var(--blue);color:#fff}.primary:hover{color:#fff;background:#1837bc}.outline{border:1px solid var(--line);background:#fff;padding:15px 23px}.outline:hover{border-color:var(--blue)}.outline svg{vertical-align:-1px;margin-left:8px;transition:transform .2s}.outline:hover svg{transform:translate(2px,-2px)}.hero-foot{border-top:1px solid var(--line);letter-spacing:1px;color:var(--muted);justify-content:space-between;gap:16px;margin-top:clamp(40px,4vw,56px);margin-bottom:80px;padding-top:20px;font-size:11px;display:flex}.section-head{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:36px;display:flex}.section-head p{margin:0;font-size:15px}.project{border:1px solid var(--line);border-radius:10px;overflow:hidden}.featured{background:#fff;grid-template-columns:1fr 1fr;display:grid}.project-copy{padding:44px}.project h3{letter-spacing:-1.2px;margin:24px 0 18px;font-size:35px;font-weight:500;line-height:1.15}.project p{max-width:410px}.tags{flex-wrap:wrap;gap:8px;margin:26px 0;display:flex}.tags span{border:1px solid var(--line);border-radius:30px;padding:7px 11px;font-size:12px}.project-grid{grid-template-columns:1fr 1fr;gap:24px;margin:24px 0 90px;display:grid}.secondary{background:#eff1f5;padding:40px}.secondary.dark{color:#fff;background:#1c1e24;border-color:#1c1e24}.dark p{color:#b6bac6}.dark .tags span{border-color:#45474e}.metric{align-items:center;gap:20px;margin:35px 0;display:flex}.metric strong{letter-spacing:-2px;font-size:52px;font-weight:500}.metric span{max-width:150px;color:var(--muted);font-size:14px;line-height:1.5}.dark .metric span{color:#b6bac6}.metric--adoption{margin-bottom:10px}.metric--adoption strong{white-space:nowrap;font-variant-numeric:tabular-nums;flex-shrink:0}.metric--adoption span{text-wrap:balance;max-width:190px}.metric-note{margin:0;font-size:13px;line-height:1.5}.dark .metric-note{color:#9ea2ae}@media (max-width:620px){.metric--adoption{flex-direction:column;align-items:flex-start;gap:4px}.metric--adoption span{max-width:none}}details{border-top:1px solid var(--line);margin-top:30px}.dark details{border-color:#45474e}summary{cursor:pointer;justify-content:space-between;padding-top:21px;font-size:14px;font-weight:600;list-style:none;display:flex}summary::-webkit-details-marker{display:none}summary span{font-size:21px;font-weight:400;line-height:16px;transition:transform .2s}details[open] summary span{transform:rotate(45deg)}.detail-body{color:var(--muted);padding-top:20px;font-size:15px;line-height:1.7}.dark .detail-body{color:#b6bac6}.project-cta{border-top:1px solid var(--line);margin-top:30px}.dark .project-cta{border-color:#45474e}.dark .cf-cta:hover{color:#8aa1ff}.large-copy{letter-spacing:-.5px;color:var(--ink);margin-top:0;font-size:24px;line-height:1.5}.experience{padding-top:85px;padding-bottom:85px}.text-link{border-bottom:1px solid;padding-bottom:5px;font-size:14px}.timeline article{border-top:1px solid var(--line);grid-template-columns:210px 1fr 170px;gap:22px;padding:29px 0;display:grid}.job-date{letter-spacing:.8px;color:var(--muted);padding-top:5px;font-size:11px}.timeline h3{letter-spacing:-.4px;margin:0 0 8px;font-size:22px;font-weight:500}.timeline span{color:var(--muted);font-size:14px}.timeline p{max-width:480px;margin-bottom:0;font-size:14px}.job-place{text-align:right;padding-top:5px;font-size:12px!important}.contact,.contact-signoff{--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--ease-out:cubic-bezier(.22, 1, .36, 1);--ink-80:color-mix(in srgb, var(--ink) 80%, transparent);--ink-72:color-mix(in srgb, var(--ink) 72%, transparent);--ink-64:color-mix(in srgb, var(--ink) 64%, transparent)}.contact{isolation:isolate;--wrap-left:calc((100cqw - min(100cqw, 1280px)) / 2 + 64px);--u:calc((min(100cqw, 1280px) - 128px) / 1248);--a:var(--u);position:relative;overflow:clip;container-type:inline-size}.contact :focus-visible,.contact-signoff :focus-visible{outline:2px solid var(--blue);outline-offset:4px;border-radius:2px}.contact__body{grid-template-columns:calc(212 * var(--u)) minmax(0, 1fr);padding-top:calc(96 * var(--u));padding-bottom:calc(104 * var(--u));align-items:start;display:grid;position:relative}.contact__body>*{grid-column:2}.contact__eyebrow{font:12px/16px var(--mono);letter-spacing:.08em;color:var(--ink-64);grid-column:1/-1}.contact__title{margin:calc(72 * var(--u)) 0 0;color:var(--ink);font-size:inherit;letter-spacing:normal;grid-column:1/-1;font-weight:400;line-height:normal}.contact__come{font-size:max(64px, calc(112 * var(--u)));letter-spacing:-.045em;margin-left:-.05em;font-weight:500;line-height:1;display:block}.contact__room{margin:calc(24 * var(--u)) 0 0 calc(212 * var(--u));font-size:max(34px, calc(56 * var(--u)));letter-spacing:-.03em;line-height:1.08;display:block}.contact__lede{max-width:max(340px, calc(448 * var(--u)));margin:calc(63 * var(--u)) 0 0;color:var(--ink-80);letter-spacing:-.01em;font-size:17px;line-height:1.6}.contact__status{margin:calc(36 * var(--u)) 0 0;color:var(--ink-72);font:11px/15px var(--mono);letter-spacing:.04em;align-items:center;gap:10px;display:flex}.contact__status:before{content:"";background:var(--blue);border-radius:50%;flex:none;width:6px;height:6px}.contact__status-open,.contact[data-composer-open] .contact__status-idle{display:none}.contact[data-composer-open] .contact__status-open{display:inline}.contact__rows{grid-column:1/-1;grid-template-columns:subgrid;margin-top:calc(36 * var(--u));display:grid}.contact__row{grid-column:1/-1;grid-template-columns:subgrid;align-items:baseline;display:grid}.contact__row+.contact__row{margin-top:calc(40 * var(--u))}.contact__row>:last-child{min-width:0}.contact__label{color:var(--ink-64);font:10px/13px var(--mono);letter-spacing:.06em}.contact-note__cta,.contact-note__submit{--line-w:160;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto auto;align-items:center;column-gap:20px;padding:0;display:inline-grid}.contact-note__cta[hidden]{display:none}.contact-note__cta:hover{color:var(--ink)}.contact-note__label{white-space:nowrap;letter-spacing:-.01em;font-size:20px;font-weight:500;line-height:24px}.contact-note__line{width:calc(var(--line-w) * 1px);height:12px;position:relative}.contact-note__line:before{content:"";background:var(--ink);transform-origin:0;height:1px;transition:transform .32s var(--ease-out);position:absolute;top:5.5px;left:0;right:0}.contact-note__line img{transition:transform .32s var(--ease-out);position:absolute;top:-.44px;right:-.88px}.contact-note__cta:is(:hover,:focus-visible) .contact-note__line:before,.contact-note__submit:is(:hover,:focus-visible):not([aria-disabled]) .contact-note__line:before{transform:scaleX(calc(1 + 6 / var(--line-w)))}.contact-note__cta:is(:hover,:focus-visible) .contact-note__line img,.contact-note__submit:is(:hover,:focus-visible):not([aria-disabled]) .contact-note__line img{transform:translate(6px)}.contact-note__hint{width:0;color:var(--ink-64);white-space:nowrap;opacity:0;transition:opacity .32s var(--ease-out), transform .32s var(--ease-out);grid-column:2;margin-top:1px;font-size:12.5px;line-height:15px;transform:translateY(4px)}.contact-note__cta:is(:hover,:focus-visible) .contact-note__hint{opacity:1;transform:none}.contact-note__fallback{display:none}.contact-note__sent{color:var(--ink);letter-spacing:-.01em;outline:none;align-items:center;gap:8px;margin:0;font-size:20px;font-weight:500;line-height:24px;display:flex}.contact-note__dot{background:var(--blue);border-radius:50%;width:6px;height:6px}.contact-note__composer{visibility:hidden;transition:grid-template-rows .48s var(--ease-out), visibility 0s .48s;grid-template-rows:0fr;display:grid}.contact-note[data-open] .contact-note__composer{visibility:visible;transition:grid-template-rows .48s var(--ease-out);grid-template-rows:1fr}.contact-note__form{width:min(100%,480px);min-height:0;margin:-6px;padding:6px;position:relative;overflow:hidden}.contact-note__form>*{opacity:0;transition:opacity .3s var(--ease-out)}.contact-note[data-open] .contact-note__form>*{opacity:1}.contact-note[data-open] .contact-note__form>:first-child{transition-delay:.16s}.contact-note[data-open] .contact-note__form>:nth-child(2){transition-delay:.22s}.contact-note[data-open] .contact-note__form>:nth-child(4){transition-delay:.28s}.contact-note[data-open] .contact-note__form>:nth-child(5){transition-delay:.34s}.contact-note__field{flex-direction:column;display:flex}.contact-note__field+.contact-note__field{margin-top:36px}.contact-note__field label{color:var(--ink-72);font:11px/15px var(--mono);letter-spacing:.04em;transition:color .2s}.contact-note__field:focus-within label{color:var(--blue)}.contact-note__input{border:0;border-bottom:1px solid color-mix(in srgb, var(--ink) 50%, transparent);color:var(--ink);font:inherit;letter-spacing:-.01em;background:0 0;border-radius:0;margin-top:11px;padding:0 0 10px;font-size:18px;line-height:22px;transition:border-color .2s,box-shadow .2s}.contact-note__input::placeholder{color:color-mix(in srgb, var(--ink) 60%, transparent);opacity:1}.contact .contact-note__input:focus-visible,.contact .contact-note__input:focus{border-bottom-color:var(--blue);box-shadow:0 .5px 0 var(--blue);outline:none}.contact-note__input[aria-invalid]{border-bottom-color:var(--ink)}.contact-note__message{resize:none;field-sizing:content;height:96px;min-height:96px;max-height:240px}.contact-note__under{justify-content:space-between;gap:16px;display:flex}.contact-note__count{color:var(--ink-64);font:10px/13px var(--mono);letter-spacing:.04em;margin:10px 0 0 auto}.contact-note__error{color:var(--ink);margin:8px 0 0;font-size:12px;line-height:15px}.contact-note__trap{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.contact-note__actions{justify-content:space-between;align-items:center;gap:16px;margin-top:21px;display:flex}.contact-note__submit{--line-w:40;min-height:44px}.contact-note__submit[aria-disabled]{cursor:default}.contact-note__submit[aria-disabled] .contact-note__label{color:var(--ink-64)}.contact-note__submit[aria-disabled] .contact-note__line img{opacity:0}.contact-note__submit[aria-disabled] .contact-note__line:before{background:linear-gradient(90deg, var(--ink) 0 57%, color-mix(in srgb, var(--ink) 20%, transparent) 57%) 0 0 / 175% 100%;animation:contact-sending 1.2s var(--ease-out) infinite alternate}@keyframes contact-sending{to{background-position:100% 0}}.contact-note__cancel,.contact__copy{color:var(--ink-64);font:11px/15px var(--mono);letter-spacing:.04em;cursor:pointer;background:0 0;border:0;margin:-14px 0;padding:14px 0;transition:color .2s}.contact-note__cancel{text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--ink) 32%, transparent);text-decoration-color:color-mix(in srgb, var(--ink) 32%, transparent);text-underline-offset:4px}.contact__copy span{border-bottom:1px solid color-mix(in srgb, var(--ink) 32%, transparent);padding-bottom:2px;transition:border-color .2s}.contact-note__cancel:hover,.contact__copy:hover,.contact__copy[data-copied]{color:var(--ink)}.contact__copy[data-copied] span{border-color:var(--ink)}.contact-note__reassurance{color:var(--ink-64);letter-spacing:-.005em;margin:20px 0 0;font-size:13px;line-height:16px}.contact-note__reassurance a{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.contact__email{flex-wrap:wrap;align-items:baseline;gap:12px 24px;display:flex}.contact__address{color:var(--ink);font-size:max(20px, calc(26 * var(--u)));letter-spacing:-.02em;overflow-wrap:anywhere;line-height:31px;transition:color .2s}.contact__announce{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.contact__links{flex-wrap:wrap;gap:4px 40px;margin:0;padding:0;list-style:none;display:flex}.contact__links a{color:var(--ink);letter-spacing:-.005em;margin:-13px 0;padding:13px 0;font-size:15px;line-height:18px;display:inline-block}.contact__links a>span:first-child{position:relative}.contact__links a>span:first-child:after{content:"";background:var(--ink);transform-origin:0;height:1px;transition:transform .3s var(--ease-out);position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.contact__links a:is(:hover,:focus-visible)>span:first-child:after{transform:scaleX(1)}.contact-art{z-index:-1;top:calc(-80 * var(--a));bottom:0;left:calc(var(--wrap-left) + 704 * var(--u));pointer-events:none;-webkit-user-select:none;user-select:none;position:absolute;right:0}.contact-art__plan{position:absolute;inset:0}.contact-art__plan>*,.contact-art__dot{position:absolute}.contact-art img{display:block}.contact-art__grid{left:calc(16 * var(--a));top:calc(80 * var(--a));width:calc(624.5 * var(--a));bottom:0;overflow:hidden}.contact-art__grid img{width:100%;height:calc(952 * var(--a));position:absolute;left:0}.contact-art__grid img+img{top:calc(936 * var(--a));clip-path:inset(calc(16 * var(--a)) 0 0)}.contact-art__interior{left:calc(160 * var(--a));width:calc(560 * var(--a));height:calc(840 * var(--a));background:color-mix(in srgb, var(--ink) 3%, transparent);top:0}.contact-art__spill{left:calc(672 * var(--a));top:calc(520 * var(--a));width:calc(224 * var(--a));height:calc(480 * var(--a))}.contact-art__axis{left:0;top:calc(539.665 * var(--a));width:calc(720 * var(--a));height:calc(.67 * var(--a))}.contact-art__swing{left:calc(160 * var(--a));top:calc(379.665 * var(--a));width:calc(320.335 * var(--a));height:calc(320.335 * var(--a))}.contact-art__dimension{left:calc(88 * var(--a));top:calc(376 * var(--a));width:calc(50 * var(--a));height:calc(328.474 * var(--a))}.contact-art__label{color:color-mix(in srgb, var(--ink) 50%, transparent);font-family:var(--mono);white-space:nowrap;line-height:1}.contact-art__dimension-label{left:calc(81.5 * var(--a));top:calc(540 * var(--a));font-size:calc(8 * var(--a));letter-spacing:.08em;transform:translate(-50%,-50%)rotate(-90deg)}.contact-art__monogram{left:calc(375.5 * var(--a));top:calc(151.5 * var(--a));width:calc(97 * var(--a));height:calc(73 * var(--a))}.contact-art__monogram-dot{left:calc(482 * var(--a));top:calc(220 * var(--a));width:calc(4 * var(--a));height:calc(4 * var(--a));background:color-mix(in srgb, var(--ink) 5%, transparent)}.contact-art__wall-top{left:calc(143.375 * var(--a));width:calc(17.25 * var(--a));height:calc(380.625 * var(--a));top:0}.contact-art__wall-edge{left:calc(143.375 * var(--a));top:calc(699.375 * var(--a));width:calc(616.625 * var(--a));height:calc(157.25 * var(--a))}.contact-art__leaf{left:calc(160 * var(--a));top:calc(600.52 * var(--a));width:calc(304.724 * var(--a));height:calc(100.074 * var(--a));transform-origin:0 100%}.contact-art__annotation{left:calc(176 * var(--a));top:calc(816 * var(--a));font-size:calc(7.33 * var(--a));letter-spacing:.04em}.contact-art__dot{left:calc(114 * var(--a));top:calc(346 * var(--a));width:calc(12 * var(--a));height:calc(12 * var(--a))}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.contact-art__leaf{transition:rotate .7s var(--ease-out)}.contact-art__dot{transition:scale .7s var(--ease-out)}.contact:not([data-door=closed]):hover .contact-art__leaf{rotate:1.5deg}.contact:hover .contact-art__dot{scale:1.08}}.contact-signoff{min-height:0;padding-top:0;padding-bottom:0;display:block}.contact-signoff__row{border-top:1px solid var(--line);font-size:inherit;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 32px;padding:23px 0 46px;display:flex}.contact-signoff__note{color:var(--ink-72);letter-spacing:-.005em;margin:0;font-size:13px;line-height:16px}.contact-signoff__meta{align-items:center;gap:32px;display:flex}.contact-signoff__small{color:var(--ink-64);font:10px/13px var(--mono);letter-spacing:.06em;gap:24px;display:flex}.contact-signoff__small a{margin:-15px 0;padding:15px 0}.contact-signoff__imprint{color:var(--ink);letter-spacing:-.03em;align-items:baseline;gap:2px;font-size:17px;font-weight:600;line-height:21px;display:inline-flex}.contact-signoff__dot{background:var(--blue);border-radius:50%;width:5px;height:5px}@media (scripting:none){.contact__copy,.contact-note>:not(.contact-note__fallback){display:none}.contact-note__fallback{display:inline-grid}}@media (prefers-reduced-motion:reduce){.contact-note__composer,.contact-note[data-open] .contact-note__composer,.contact-note__form>*,.contact-note__line:before,.contact-note__line img,.contact-note__hint,.contact__links a>span:first-child:after{transition:none!important}.contact-note__line img,.contact-note__hint{transform:none!important}.contact-note__submit[aria-disabled] .contact-note__line:before{animation:none}}@media (max-width:900px){.contact{--a:1.2px}.contact__body{padding-top:48px;padding-bottom:72px;display:block}.contact__eyebrow{font-size:11px;line-height:15px}.contact__title{margin-top:41px}.contact__come{font-size:clamp(60px,19.5vw,104px)}.contact__room{letter-spacing:-.025em;margin:14px 0 0;font-size:clamp(30px,8.7vw,52px);line-height:1.1}.contact__lede{max-width:448px;margin-top:63px;font-size:16px}.contact__status{margin-top:32px}.contact__rows{margin-top:28px;display:block}.contact__row{display:block}.contact__row+.contact__row{margin-top:48px}.contact__row:last-child{margin-top:36px}.contact__label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.contact-note__cta{--line-w:120}.contact-note__label,.contact-note__sent{font-size:19px}.contact__email{flex-direction:column;align-items:flex-start}.contact__address{font-size:clamp(18px,5.6vw,22px);line-height:1.22}.contact__links{gap:4px 28px}.contact[data-composer-open] .contact__rows{background:var(--paper);box-shadow:0 0 0 100vmax var(--paper);clip-path:inset(-28px -100vmax -100vmax);position:relative}.contact-art{top:-124px;left:calc(100% - 238.8px)}.contact-art__plan{opacity:.42}.contact-art__spill{left:calc(-64 * var(--a));top:calc(300 * var(--a))}.contact-signoff__note{width:100%}.contact-signoff__meta{flex:1;justify-content:space-between}}footer{justify-content:space-between;align-items:center;gap:24px;min-height:120px;display:flex}footer>span{color:var(--muted);font-size:12px}footer>div{gap:24px;font-size:14px;display:flex}.skip{background:var(--ink);color:#fff;z-index:20;padding:15px;position:absolute;top:-70px;left:16px}.skip:focus{top:16px}@media (min-width:1500px){.hero{padding-top:100px}}@media (max-width:900px){.wrap{padding-left:32px;padding-right:32px}h1{letter-spacing:-4px}.hero-bottom p{font-size:18px}.project-copy,.secondary{padding:30px}.project h3{font-size:29px}.timeline article{grid-template-columns:165px 1fr}.job-place{display:none}.hero-foot span:first-child{max-width:220px;line-height:1.7}}@media (max-width:620px){.wrap{padding-left:23px;padding-right:23px}.brand{font-size:29px}.hero{padding-top:52px}h1{letter-spacing:-2.6px;margin-top:25px;font-size:clamp(40px,9.6vw,60px);line-height:1.12}.hero .eyebrow{letter-spacing:1px;font-size:10px}.hero-bottom p{font-size:18px}.hero-foot{gap:15px;margin-bottom:52px;font-size:10px}.hero-foot span:last-child{text-align:right;max-width:150px;line-height:1.7}.section-head{flex-direction:column;align-items:flex-start;gap:20px}.section-head p br{display:none}h2{font-size:35px}.featured,.project-grid{grid-template-columns:1fr}.project-copy,.secondary{padding:28px}.project-grid{gap:20px;margin-bottom:55px}.project h3{font-size:32px}.large-copy{font-size:22px}.experience{padding-top:55px;padding-bottom:55px}.timeline article{grid-template-columns:1fr;gap:13px;padding:24px 0}.timeline p{font-size:15px}footer{flex-wrap:wrap;padding-top:28px;padding-bottom:28px}footer>span{order:3;width:100%}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}.hero-body{--portrait-w:clamp(280px, 30vw, 400px);--hero-gap:clamp(40px, 5vw, 80px);--hero-h1-max:96px;grid-template-columns:minmax(0, 1fr) var(--portrait-w);column-gap:var(--hero-gap);grid-template-rows:auto 1fr;align-items:start;margin-top:31px;display:grid;container-type:inline-size}.hero h1{font-size:min(var(--hero-h1-max), (100cqi - var(--portrait-w) - var(--hero-gap)) / 7.9);letter-spacing:-.057em;grid-area:1/1;margin:0 0 28px;line-height:1.04}.hero-bottom{grid-area:2/1}.hero-portrait{grid-area:1/2/span 2;margin:0}.hero-stage{--mono-reach:min(12cqi, var(--hero-gap) * .6);--mono-lift:50px;isolation:isolate;position:relative;container-type:inline-size}.hero-monogram{z-index:-1;left:calc(var(--mono-reach) * -1);top:calc(var(--mono-lift) * -1);width:calc(100cqi + var(--mono-reach));aspect-ratio:187/110;pointer-events:none;background:#e9eaed;position:absolute;-webkit-mask:url(../media/black.190l0f7efe26y.svg) 50%/100% 100% no-repeat;mask:url(../media/black.190l0f7efe26y.svg) 50%/100% 100% no-repeat}.hero-photo{aspect-ratio:4/5;object-fit:cover;object-position:50% 0;border-radius:5px;width:100%;height:auto;display:block}.hero-caption{letter-spacing:.3px;color:var(--muted);align-items:center;gap:10px;margin-top:14px;font-size:12px;display:flex}.hero-caption:before{content:"";background:var(--ink);width:24px;height:1px}@media (max-width:840px){.hero-body{--portrait-w:0px;--hero-gap:0px;--hero-h1-max:72px;grid-template-rows:none;grid-template-columns:minmax(0,1fr)}.hero h1,.hero-bottom,.hero-portrait{grid-area:auto/1}.hero-portrait{width:min(300px,100%);margin-top:40px}.hero-monogram{display:none}}@media (max-width:620px){.hero-body{margin-top:25px}.hero h1{margin-bottom:22px}.hero-portrait{margin-top:32px}}.about-section{--about-rule:#d4d5da;--about-bg:#f0f1f3;background:var(--about-bg);padding:84px 0;overflow-x:clip}.about-head h2{font-size:clamp(32px,2.6vw + 14px,42px)}.about-main,.about-outside{grid-template-columns:minmax(0,4fr) minmax(0,6fr);gap:32px clamp(40px,5vw,72px);display:grid}.about-main{align-items:center;margin-top:44px}.about-mark{--mark-w:clamp(200px, 22vw, 300px);--guide-run:48px;padding:calc(var(--mark-w) * .08 + 8px) var(--guide-run) calc(var(--mark-w) * .18 + 16px) 0}.about-mark__plate{width:var(--mark-w);position:relative}.about-mark__logo{width:100%;height:auto;display:block}.construction,.construction-sheet,.construction-labels{pointer-events:none;position:absolute}.construction,.construction-labels{inset:0}.construction-sheet{width:186.26%;height:188.55%;top:-48.55%;left:-65.94%;overflow:visible}.construction-sheet *{fill:none;stroke-width:1px;vector-effect:non-scaling-stroke}.construction-guide--base{stroke:var(--ink);opacity:.16}.construction-guide--minor,.construction-guide--hover{stroke:var(--line)}.construction-guide--hover{opacity:0}.construction-bbox{stroke:var(--muted);stroke-dasharray:2 2;opacity:.32}.construction-outline path{stroke:var(--ink)}.construction-anchors rect{fill:var(--about-bg);stroke:var(--ink)}.construction-anchor{opacity:.6}.construction-anchor--minor{opacity:0}.construction-marker circle{stroke:var(--line)}.construction-marker line,.construction-measurements line{stroke:var(--ink);opacity:.3}.construction-label{letter-spacing:.4px;white-space:nowrap;color:var(--muted);opacity:.75;font-size:10px;line-height:1.2;position:absolute}.construction-label--stem{top:-12%;left:-.75%}.construction-label--size{top:106%;left:50%;transform:translate(-50%)}.construction-label--marker{top:89.55%;left:111.07%;transform:translateY(-50%)}.construction-label--x,.construction-label--baseline{right:calc(100% + 20px)}.construction-label--x{top:4px}.construction-label--baseline{bottom:4px}.construction-label--r,.construction-label--s{top:112.7%}.construction-label--r{left:0}.construction-label--s{left:36.33%}.construction-label--title{top:129.7%;left:0}.construction-label--hover{opacity:0}@media (hover:hover) and (pointer:fine){.construction-guide,.construction-bbox,.construction-anchor,.construction-label{transition:opacity .4s}.about-mark:hover .construction-guide--base{opacity:.24}.about-mark:hover .construction-guide--hover{opacity:1}.about-mark:hover .construction-bbox{opacity:.5}.about-mark:hover .construction-anchor,.about-mark:hover .construction-label--hover{opacity:.75}}.about-copy p{max-width:31em;margin:20px 0 0;font-size:17px}.about-copy .about-lead{letter-spacing:-.4px;max-width:26em;color:var(--ink);margin:0;font-size:23px;line-height:1.45}.about-label{letter-spacing:1.4px;color:var(--muted);font-size:11px;line-height:1.6;display:block}.about-copy .about-label{margin-top:28px}.about-outside{border-top:1px solid var(--about-rule);margin-top:48px;padding-top:40px}.about-outside h3,.about-index__title{letter-spacing:-.4px;color:var(--ink);font-size:23px;font-weight:500;line-height:1.3}.about-outside h3{margin:14px 0 0}.about-outside__intro p{max-width:30em;margin:12px 0 0}.about-index{margin:0;padding:0;list-style:none}.about-index li+li{border-top:1px solid var(--about-rule)}.about-index__row{grid-template-columns:44px minmax(0,1fr) auto;align-items:start;column-gap:20px;padding:22px 0;display:grid;position:relative}.about-index li:first-child .about-index__row{padding-top:4px}.about-index li:last-child .about-index__row{padding-bottom:4px}.about-index__symbol{width:44px;height:44px;color:var(--ink);align-self:center;display:block}.about-index__text{flex-direction:column;min-width:0;display:flex}.about-index__label{letter-spacing:1.4px;color:var(--muted);font-size:11px;line-height:1.6}.about-index__title{margin-top:6px;transition:color .18s}.about-index__title-text{text-underline-offset:5px;background:linear-gradient(var(--blue), var(--blue)) 0 100% / 0 1px no-repeat;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-bottom:1px;-webkit-text-decoration:underline #244bea73;text-decoration:underline #244bea73;text-decoration-thickness:1px;transition:background-size .18s ease-out}.about-index__description{color:var(--muted);margin-top:6px;font-size:15px;line-height:1.5}.about-index__arrow{color:var(--ink);align-self:center;font-size:22px;transition:transform .22s ease-out,color .18s}.about-index__link:is(:hover,:focus-visible) :is(.about-index__title,.about-index__arrow){color:var(--blue)}.about-index__link:is(:hover,:focus-visible) .about-index__title-text{background-size:100% 1px}.about-index__link:is(:hover,:focus-visible) .about-index__arrow{transform:translate(4px)}.about-index__link[target=_blank]:is(:hover,:focus-visible) .about-index__arrow{transform:translate(2px,-2px)}.about-index__link:focus-visible{outline-offset:4px}.about-index__hint{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.about-index__link .about-index__arrow{transform:none!important}}.about-skills{border-top:1px solid var(--about-rule);grid-template-columns:repeat(4,minmax(0,1fr));gap:24px clamp(24px,3vw,48px);margin:48px 0 0;padding:32px 0 0;list-style:none;display:grid}.about-skills h3{margin:0 0 8px;font-size:15px;font-weight:600}.about-skills p{margin:0;font-size:14px;line-height:1.8}@media (max-width:1040px){.about-main{grid-template-columns:auto minmax(0,1fr);gap:32px 40px}.about-mark{--mark-w:clamp(200px, 24vw, 240px);--guide-run:32px}.about-outside{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px 40px}.about-copy .about-lead{font-size:21px}}@media (max-width:900px){.about-skills{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 32px}}@media (max-width:1040px){.construction-label--marker{display:none}}@media (max-width:1319px){.construction-label--x,.construction-label--baseline{display:none}}@media (max-width:780px){.about-main,.about-outside{grid-template-columns:minmax(0,1fr)}.about-main{margin-top:36px}.about-mark{--mark-w:200px;--guide-run:40px;justify-self:start}.about-outside{gap:28px}.construction-label--stem,.construction-label--size,.construction-label--hover,.construction-measurements{display:none}}@media (max-width:620px){.about-section{padding:52px 0}.about-main{margin-top:32px}.about-mark{--mark-w:172px;--guide-run:28px;padding-top:4px}.construction-guide--minor,.construction-guide--hover,.construction-bbox,.construction-anchors,.construction-marker{display:none}.about-copy p{font-size:16px}.about-outside,.about-skills{margin-top:40px;padding-top:32px}.about-outside h3,.about-index__title{font-size:21px}.about-index__row{grid-template-columns:34px minmax(0,1fr) auto;column-gap:16px}.about-index__symbol{width:34px;height:34px}.about-skills{gap:24px 16px}}@media (max-width:360px){.about-skills{grid-template-columns:minmax(0,1fr)}.about-index__row{grid-template-columns:minmax(0,1fr) auto}.about-index__symbol{grid-column:1/-1;align-self:start;margin-bottom:10px}}.recommendations{--wrap-left:calc((100cqw - min(100cqw, 1280px)) / 2 + 64px);--u:calc((min(100cqw, 1280px) - 128px) / 1248);--rec-serif:var(--font-recommendations-serif), Georgia, "Times New Roman", serif;padding-top:85px;position:relative;overflow-x:clip;container-type:inline-size}.recommendations-layout{grid-template-columns:calc(600 * var(--u)) calc(120 * var(--u)) calc(624 * var(--u));margin-top:max(24px, 138 * var(--u) - 36px);margin-left:calc(var(--wrap-left) - 96 * var(--u));display:grid}.recommendations-visual{height:calc(1000 * var(--u));align-self:start;position:relative;overflow:visible clip}.recommendation-trace{width:100%;height:100%;display:block;overflow:visible}.trace-annotation{letter-spacing:.44px;fill:var(--ink);fill-opacity:.32;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.recommendations-list{padding-top:calc(60 * var(--u));padding-bottom:calc(140 * var(--u));grid-column:3}@media (min-height:600px){.recommendations-visual{top:min(var(--site-header-h), 100vh - 1000 * var(--u));top:min(var(--site-header-h), 100svh - 1000 * var(--u));position:sticky}}.recommendation-item{margin:0 0 calc(72 * var(--u))}.recommendation-quote{margin:0}.recommendation-quote p{font-family:var(--rec-serif);font-size:max(22px, 31 * var(--u));letter-spacing:-.01em;color:var(--ink);text-wrap:pretty;margin:0;font-weight:400;line-height:1.34}.recommendation-meta{margin-top:max(18px, 22 * var(--u));flex-direction:column;gap:6px;display:flex}.recommendation-name{letter-spacing:1.5px;text-transform:uppercase;color:var(--ink);font-size:12px;font-style:normal;font-weight:600;line-height:1.6}.recommendation-detail{color:var(--muted);font-size:13px;line-height:1.5}.recommendation-source:hover{color:var(--blue)}.recommendation-item>*{transition:opacity .45s cubic-bezier(.25,1,.5,1)}.recommendations-list.is-tracking .recommendation-item:not(.is-active)>*{opacity:.42}.recommendations-list.is-tracking .recommendation-item:focus-within>*{opacity:1}.recommendations-end{border-top:1px solid var(--line);padding-top:max(24px, 28 * var(--u))}.recommendation-continuation{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}@media (max-width:900px){.recommendations-layout{margin:0;display:block}.recommendations-visual{--trace-w:max(100vw, 520px);height:min(var(--trace-w) * .8, 560px);position:relative;top:auto;overflow:hidden}.recommendation-trace{left:0;top:calc(var(--trace-w) * -.6444);width:var(--trace-w);height:auto;position:absolute}.recommendations-list{max-width:688px;padding:48px 32px 96px}.recommendation-item{margin-bottom:64px}.recommendation-quote p{font-size:25px}}@media (max-width:620px){.recommendations{padding-top:55px}.recommendations-list{padding:36px 23px 72px}.recommendation-item{margin-bottom:48px}.recommendation-quote p{font-size:clamp(21px,5.8vw,24px);line-height:1.36}}.site-header{z-index:15;height:var(--site-header-h);background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0}.site-header :is(a,button){scroll-margin-top:calc(-1 * var(--scroll-offset))}.site-header__bar{justify-content:space-between;align-items:center;gap:32px;height:100%;display:flex}.site-header__identity{flex-shrink:0;align-items:center;gap:13px;display:flex}.site-header__mark{width:auto;height:38px;display:block}.site-header__text{white-space:nowrap;flex-direction:column;gap:3px;display:flex}.site-header__name{letter-spacing:-.2px;font-size:16px;font-weight:600;line-height:1.2}.site-header__role{color:var(--muted);font-size:12px;line-height:1.3}.site-header__nav,.site-header__panel{align-items:center;display:flex}.site-header__toggle{display:none}.site-header__list{gap:28px;margin:0;padding:0;list-style:none;display:flex}.site-header__link{white-space:nowrap;align-items:center;gap:5px;min-height:44px;padding:0 2px;font-size:15px;display:inline-flex}.site-header__num{letter-spacing:.4px;font-variant-numeric:tabular-nums;color:var(--muted);font-size:10.5px;transition:color .2s;position:relative;top:-5px}.site-header__label{color:var(--ink);flex-direction:column;display:inline-flex}.site-header__label:after{content:attr(data-label);content:attr(data-label) / "";visibility:hidden;pointer-events:none;-webkit-user-select:none;user-select:none;height:0;font-weight:600;overflow:hidden}.site-header__link[aria-current] .site-header__label{font-weight:600}.site-header__link[aria-current] .site-header__num{color:var(--ink)}.site-header__link:hover .site-header__num,.site-header__link:focus-visible .site-header__num{color:var(--blue)}.site-header__rule{background:var(--line);width:1px;height:16px;margin:0 24px}.site-header__github{min-height:44px;color:var(--muted);white-space:nowrap;align-items:center;gap:5px;font-size:14px;display:inline-flex}.site-header__arrow{transition:transform .2s;display:inline-block}.site-header__github:hover .site-header__arrow,.site-header__github:focus-visible .site-header__arrow{transform:translate(2px,-2px)}.site-header__marker{background:var(--blue);opacity:0;pointer-events:none;width:28px;height:2px;transition:opacity .2s;position:absolute;bottom:-1px;left:0}.site-header__marker[data-visible]{opacity:1;transition:transform .22s cubic-bezier(.2,.7,.2,1),opacity .2s}.site-header__marker[data-settling]{transition:opacity .2s}main section[tabindex="-1"]:focus{outline:none}@media (max-width:1040px){.site-header__list{gap:22px}.site-header__rule{margin:0 18px}}@media (max-width:840px){:root{--site-header-h:64px}.site-header__mark{height:32px}.site-header__text{gap:2px}.site-header__name{font-size:15px}.site-header__toggle{min-height:44px;font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;margin-right:-6px;padding:0 6px;font-size:14px;font-weight:600;display:inline-flex}.site-header__toggle span{text-align:center;width:.6em;font-size:17px;font-weight:400}.site-header__toggle:hover{color:var(--blue)}.site-header__panel{max-height:calc(100dvh - var(--site-header-h));overscroll-behavior:contain;background:var(--paper);border-bottom:1px solid var(--line);visibility:hidden;opacity:0;padding:10px 32px 18px;transition:opacity .2s,transform .2s,visibility 0s linear .2s;display:block;position:absolute;top:calc(100% + 1px);left:0;right:0;overflow-y:auto;transform:translateY(-6px)}.site-header__nav[data-open] .site-header__panel{visibility:visible;opacity:1;transition:opacity .2s,transform .2s cubic-bezier(.2,.7,.2,1);transform:none}.site-header__list{flex-direction:column;gap:0}.site-header__list li+li{border-top:1px solid var(--line)}.site-header__link{gap:14px;min-height:56px;padding:0;font-size:18px;display:flex}.site-header__num{width:18px;font-size:11px;top:0}.site-header__rule,.site-header__marker{display:none}.site-header__github{border-top:1px solid var(--line);min-height:52px;display:flex}}@media (max-width:620px){.site-header__panel{padding-left:23px;padding-right:23px}}@media (max-width:360px){.site-header__role{display:none}}@media (scripting:none) and (max-width:840px){:root{--site-header-h:0px}.site-header{height:auto;position:relative}.site-header__bar{flex-wrap:wrap;row-gap:0;min-height:64px;padding-top:12px;padding-bottom:4px}.site-header__toggle{display:none}.site-header__nav,.site-header__panel{width:100%}.site-header__panel{visibility:visible;opacity:1;background:0 0;border:0;flex-wrap:wrap;column-gap:20px;max-height:none;padding:0;display:flex;position:static;transform:none}.site-header__list{flex-flow:wrap;column-gap:20px}.site-header__list li+li{border-top:0}.site-header__link{gap:5px;min-height:44px;font-size:15px}.site-header__num{width:auto;font-size:10.5px;top:-5px}.site-header__github{border-top:0;min-height:44px}}@media (prefers-reduced-motion:reduce){.site-header__github:hover .site-header__arrow,.site-header__github:focus-visible .site-header__arrow{transform:none}}.headline-mask{margin-bottom:-.12em;padding-bottom:.12em;display:block;overflow:clip}.headline-line{white-space:nowrap;transform-origin:0 100%;display:block}.button>span{pointer-events:none;display:inline-block}.project{transition:border-color .3s,box-shadow .3s}@media (hover:hover) and (pointer:fine){.project:hover{border-color:#a4b4f5;box-shadow:0 14px 40px -24px #244bea55}}@media (prefers-reduced-motion:reduce){.headline-mask{overflow:visible}.button:hover,.outline:hover svg{transform:none}}@media (scripting:enabled) and (prefers-reduced-motion:no-preference){[data-motion-root]:not([data-motion-ready]) :is(.site-header__identity,.site-header__toggle,.site-header__link,.site-header__rule,.site-header__github,.hero>.eyebrow,.headline-line,.hero-bottom>*,.hero-portrait,.hero-foot,.contact-art__leaf){visibility:hidden;animation:0s 2.5s forwards motion-failsafe}}@keyframes motion-failsafe{to{visibility:visible}}.loader{--l-muted:#666;z-index:9999;color:#171717;background:radial-gradient(at 100% 110%,#333 0%,#999 9%,#e8e8e8 24%,#fafafa 43%,#fff 68%);flex-direction:column;justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;display:flex;position:fixed;inset:0}.loader.is-leaving{opacity:0;pointer-events:none;transition:opacity .9s cubic-bezier(.65,0,.35,1) .3s}.loader__greeting,.loader__caption,.loader__line{will-change:transform, opacity, filter}@media (prefers-reduced-motion:no-preference){.loader.is-leaving :is(.loader__greeting,.loader__caption,.loader__line){opacity:0;filter:blur(6px);transition:opacity .55s cubic-bezier(.4,0,.2,1),transform .7s cubic-bezier(.22,1,.36,1),filter .55s cubic-bezier(.4,0,.2,1);transform:translateY(-18px)}.loader.is-leaving .loader__caption{transition-delay:60ms}.loader.is-leaving .loader__line{transition-delay:.12s}}.loader.is-done{display:none}.loader__halo{opacity:.5;background:radial-gradient(#00000005 0%,#0000 69%);border-radius:50%;width:340px;height:250px;position:absolute;transform:translateY(-15px)}.loader__greeting{place-items:center;width:100%;height:105px;margin-top:-24px;display:grid;position:relative}.loader__greeting span{letter-spacing:-3px;opacity:0;font-size:clamp(40px,7vw,68px);font-weight:400;line-height:1.4;display:block}@media (scripting:none){.loader__greeting span{opacity:1}}.loader__greeting span:after{content:".";color:var(--blue);letter-spacing:0;margin-left:2px}.loader__caption{letter-spacing:.1px;color:var(--l-muted);margin-top:16px;font-size:13px;position:relative}.loader__line{background:#00000012;border-radius:10px;width:44px;height:2px;margin-top:27px;overflow:hidden}.loader__line div{transform-origin:0;background:#222;height:100%;transform:scaleX(0)}@media (max-width:460px){.loader__caption{letter-spacing:0;font-size:12px}}@media (prefers-reduced-motion:reduce){.loader.is-leaving{transition:opacity .4s!important}}@media (scripting:none){.loader{display:none}}@media (scripting:enabled){html:has(.loader:not(.is-leaving,.is-done)){animation:0s 6s forwards loader-failsafe-scroll;overflow:hidden}.loader:not(.is-in){animation:0s 6s forwards loader-failsafe}}@keyframes loader-failsafe{to{visibility:hidden}}@keyframes loader-failsafe-scroll{to{overflow:visible}}.privacy .button{color:inherit;font:inherit;cursor:pointer;background:0 0;border:1px solid #45474e;padding:14px 22px;font-size:14px;font-weight:600}button:focus-visible{outline-offset:4px;outline:3px solid #ff9f45}.privacy{max-width:860px;padding-top:72px;padding-bottom:96px}.privacy h1{letter-spacing:-3px;margin:24px 0;font-size:clamp(40px,6vw,72px)}.privacy section{border-top:1px solid var(--line);margin-top:48px;padding-top:8px}.privacy h2{letter-spacing:-.8px;font-size:28px}.privacy h3{margin:24px 0 0;font-size:17px;font-weight:600}.privacy code{font-size:14px}.privacy .text-link{padding-bottom:2px}.privacy-status{margin:8px 0 14px}.privacy-actions{flex-wrap:wrap;gap:12px;max-width:520px;display:flex}.privacy .button{border-color:var(--line);flex:0 240px}.privacy .button:hover,.privacy .button[aria-pressed=true]{border-color:var(--blue);color:var(--blue)}@media (max-width:620px){.privacy{padding-top:48px;padding-bottom:64px}}.featured--compfeed{grid-template:"copy preview"1fr"cta preview"/calc(50% - 12px) minmax(0,1fr)}.featured--compfeed .project-copy{grid-area:copy;padding:40px 40px 0}.cf-capabilities{color:var(--muted);flex-wrap:wrap;gap:6px 0;margin:26px 0 0;padding:0;font-size:13px;list-style:none;display:flex}.cf-capabilities li:not(:last-child):after{content:"·";margin:0 9px}.cf-cta-row{grid-area:cta;padding:32px 40px 40px}.cf-cta{border-bottom:1px solid;align-items:center;gap:8px;padding:20px 0 6px;font-size:15px;font-weight:600;display:inline-flex}.cf-cta svg{transition:transform .2s}.cf-preview{background:#f0f1f3;grid-area:preview;padding:30px 30px 28px;position:relative;overflow:hidden}.cf-shot{border:1px solid var(--line);pointer-events:none;background:#fff;overflow:hidden}.cf-shot img{width:100%;height:auto;display:block}.cf-shot--main{border-radius:8px;transition:transform .35s;box-shadow:0 12px 32px #17191d14}@media (hover:hover) and (pointer:fine){.featured--compfeed:hover .cf-shot--main{transform:scale(1.015)}.cf-cta:hover svg{transform:translate(2px,-2px)}}.featured--compfeed:focus-within .cf-shot--main{transform:scale(1.015)}.cf-cta:focus-visible svg{transform:translate(2px,-2px)}@media (prefers-reduced-motion:reduce){.cf-shot--main,.cf-cta svg{transition:none;transform:none!important}}@media (max-width:1064px){.featured--compfeed{grid-template:"copy""preview""cta"/minmax(0,1fr)}.featured--compfeed .project-copy{padding-bottom:32px}.cf-break{display:none}.cf-preview{padding:28px 30px 26px}.cf-cta-row{padding:22px 40px 36px}}@media (max-width:900px){.featured--compfeed .project-copy{padding:30px 30px 28px}.cf-cta-row{padding:22px 30px 30px}}@media (max-width:620px){.featured--compfeed .project-copy{padding:28px 28px 24px}.cf-preview{padding:18px}.cf-cta-row{padding:18px 28px 26px}}
