.v4-root{--paper:#050507;--ink:#f4efe3;--rail:#17161c;--ink-72:rgba(244,239,227,0.72);--ink-45:rgba(244,239,227,0.42);--ink-12:rgba(244,239,227,0.14);--signal:#7c3aed;--v4-cap:1440px;--v4-content:1280px;--v4-margin:clamp(24px,5vw,64px);--v4-gap:24px;--v4-ease-out:cubic-bezier(0,0,0.2,1);--v4-dur:500ms;--v4-dur-hero:620ms;--v4-serif:var(--font-sentient),Georgia,"Times New Roman",serif;--v4-mono:var(--font-mono),ui-monospace,"SFMono-Regular",monospace;min-height:100dvh;background:var(--paper);color:var(--ink);font-family:var(--font-body),system-ui,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:clip}.v4-shell{max-width:var(--v4-cap);margin-inline:auto;padding-inline:var(--v4-margin)}.v4-rule{border:0;border-top:1px solid var(--ink-12);margin-block:clamp(48px,8vw,112px)}.v4-display{font-family:var(--v4-serif);font-weight:400;line-height:1.02;letter-spacing:-.01em}.v4-label{font-family:var(--v4-mono);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-45)}.v4-root .sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}.v4-frame{position:relative;background:var(--rail);display:grid;place-items:center;overflow:hidden;background-image:linear-gradient(to top right,transparent calc(50% - .5px),var(--ink-12) 50%,transparent calc(50% + .5px)),linear-gradient(to bottom right,transparent calc(50% - .5px),var(--ink-12) 50%,transparent calc(50% + .5px))}.v4-frame>.v4-label{position:relative;background:var(--rail);padding:4px 10px}.v4-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding-block:var(--v4-gap)}.v4-header__mark{font-family:var(--v4-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);text-decoration:none}.v4-header__nav{display:flex;gap:clamp(16px,3vw,40px)}.v4-header__nav a{font-family:var(--v4-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-72);text-decoration:none;transition:color var(--v4-dur) var(--v4-ease-out)}.v4-header__nav a:hover{color:var(--ink)}.v4-hero{min-height:calc(100svh - 66px);flex-direction:column;padding-block:clamp(10px,1.6vw,22px) clamp(10px,1.6vw,22px)}.v4-hero,.v4-hero__meta{position:relative;display:flex}.v4-hero__meta{z-index:2;justify-content:space-between;gap:var(--v4-gap);flex-wrap:wrap}.v4-hero__version{margin-inline-start:auto}.v4-hero__stage{position:relative;z-index:1;flex:1 1 auto;min-height:260px;margin-top:clamp(12px,2vw,28px)}.v4-hero__portrait{position:absolute;left:50%;bottom:0;transform:translateX(-50%);height:min(96vh,1000px);width:auto;max-width:78vw;aspect-ratio:2/3;z-index:0}.v4-portrait{display:block;width:100%;height:100%;-webkit-mask-image:linear-gradient(180deg,#000 62%,transparent);mask-image:linear-gradient(180deg,#000 62%,transparent)}.v4-hero__role{position:absolute;bottom:0;display:flex;flex-direction:column;gap:4px;max-width:48vw;z-index:1}.v4-hero__role--left{left:0}.v4-hero__role--right{right:0;align-items:flex-end;text-align:right}.v4-hero__num{color:var(--ink-45)}.v4-hero__word{font-size:clamp(28px,4.4vw,64px);font-weight:500;line-height:.9;letter-spacing:-.04em;text-transform:uppercase}.v4-hero__thesis{position:relative;z-index:2;display:flex;align-items:baseline;justify-content:space-between;gap:var(--v4-gap);flex-wrap:wrap;padding-top:clamp(12px,2vw,24px)}.v4-hero__headline{font-size:clamp(12px,1.1vw,15px);line-height:1.45;max-width:40ch;color:var(--ink-72);text-wrap:balance}.v4-availability{display:inline-flex;align-items:center;gap:8px}.v4-availability:before{content:"";width:8px;height:8px;background:var(--signal);border-radius:50%}@media (max-width:720px){.v4-hero__stage{position:static;min-height:0;display:flex;flex-direction:column;gap:var(--v4-gap)}.v4-hero__portrait{position:static;transform:none;height:auto;width:100%;aspect-ratio:2/3}.v4-hero__role{position:static;max-width:100%}.v4-hero__role--right{align-items:flex-start;text-align:left}}.v4-section{padding-block:clamp(24px,4vw,48px)}.v4-section__head{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--v4-gap);align-items:baseline;padding-bottom:clamp(24px,4vw,48px)}.v4-section__title{grid-column:1/8;font-size:clamp(28px,4vw,52px)}.v4-section__note{grid-column:9/-1;font-size:14px;line-height:1.5;color:var(--ink-72)}@media (max-width:720px){.v4-section__note,.v4-section__title{grid-column:1/-1}}.v4-wt{--wt-cols:76px 1.5fr 92px 3fr 104px}.v4-wt__head{display:grid;grid-template-columns:var(--wt-cols);gap:var(--v4-gap);padding-bottom:12px;border-bottom:1px solid var(--ink);font-family:var(--v4-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-45)}.v4-wt-sort,.v4-wt__head>span{padding:2px 0}.v4-wt-sort{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;font:inherit;letter-spacing:inherit;text-transform:inherit;text-align:left;color:var(--ink-45);cursor:pointer;transition:color var(--v4-dur) var(--v4-ease-out)}.v4-wt-sort:hover{color:var(--ink)}.v4-wt-sort[data-active=true]{color:var(--signal)}.v4-wt__rows{list-style:none;margin:0;padding:0}.v4-wt__row{display:grid;grid-template-columns:var(--wt-cols);gap:var(--v4-gap);align-items:baseline;padding:14px 0;border-bottom:1px solid var(--ink-12);color:inherit;text-decoration:none;transition:background var(--v4-dur) var(--v4-ease-out)}a.v4-wt__row:hover{background:color-mix(in srgb,var(--ink) 5%,transparent)}.v4-wt__year{font-family:var(--v4-mono);font-size:12px;color:var(--ink-45)}.v4-wt__project{font-weight:500}.v4-wt__type{font-family:var(--v4-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-45)}.v4-wt__desc{font-size:14px;line-height:1.45;color:var(--ink-72)}.v4-wt__link{font-family:var(--v4-mono);font-size:11px;letter-spacing:.06em;color:var(--ink-45);transition:color var(--v4-dur) var(--v4-ease-out)}a.v4-wt__row:hover .v4-wt__link{color:var(--signal)}a.v4-wt__row:hover .v4-wt__project{color:var(--ink)}@media (max-width:760px){.v4-wt__head{display:none}.v4-wt__row{grid-template-columns:72px 1fr;row-gap:4px;padding:16px 0}.v4-wt__type{display:none}.v4-wt__desc{grid-column:1/-1}.v4-wt__link{grid-column:2/-1}}.v4-work{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--v4-gap) var(--v4-gap)}.v4-tile{grid-column:span 6;display:flex;flex-direction:column;gap:16px;border:1px solid var(--ink-12);padding:var(--v4-gap);background:transparent;text-align:left;color:inherit;text-decoration:none}.v4-tile--link{transition:border-color var(--v4-dur) var(--v4-ease-out)}.v4-tile--link .v4-tile__route{opacity:1;transform:none}.v4-tile--link:hover{border-color:var(--ink-45)}.v4-tile--link:hover .v4-tile__route{color:var(--signal)}.v4-tile:first-child{grid-column:1/-1}.v4-tile:first-child .v4-frame{aspect-ratio:21/9}.v4-tile__frame{aspect-ratio:16/10;width:100%;overflow:hidden;position:relative}.v4-tile__thumb{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.v4-tile__row{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.v4-tile__name{font-family:var(--v4-serif);font-size:clamp(20px,2vw,28px)}.v4-tile__claim{font-size:15px;line-height:1.45;color:var(--ink-72);max-width:46ch}.v4-tile__route{font-family:var(--v4-mono);font-size:10px;letter-spacing:.12em;color:var(--ink-45);opacity:0;transform:translateX(-4px);transition:opacity var(--v4-dur) var(--v4-ease-out),transform var(--v4-dur) var(--v4-ease-out)}@media (max-width:720px){.v4-tile{grid-column:1/-1}}@media (hover:hover){.v4-tile__frame{transition:transform var(--v4-dur) var(--v4-ease-out)}.v4-tile:focus-visible .v4-tile__frame,.v4-tile:hover .v4-tile__frame{transform:scale(1.012)}.v4-tile:focus-visible .v4-tile__route,.v4-tile:hover .v4-tile__route{opacity:1;transform:none}.v4-tile:hover .v4-frame>.v4-label:after{content:" · evidence";color:var(--ink-45)}}.v4-about__body{font-size:clamp(15px,1.6vw,18px);line-height:1.55;color:var(--ink-72);max-width:52ch}.v4-ledger{border-top:1px solid var(--ink)}.v4-ledger__row{display:grid;grid-template-columns:160px 1fr 1.4fr;gap:var(--v4-gap);padding-block:18px;border-bottom:1px solid var(--ink-12);align-items:baseline}.v4-ledger__period{font-family:var(--v4-mono);font-size:12px;color:var(--ink-45)}.v4-ledger__role{font-weight:500}.v4-ledger__detail{color:var(--ink-72)}@media (max-width:640px){.v4-ledger__row{grid-template-columns:1fr;gap:4px}}.v4-tools{font-family:var(--v4-serif);font-size:clamp(28px,4.5vw,56px);line-height:1.15;padding-block:clamp(24px,4vw,48px)}.v4-tools span:not(:last-child):after{content:" · ";color:var(--ink-45)}.v4-contact{padding-block:clamp(48px,8vw,120px);text-align:center}.v4-contact__statement{font-family:var(--v4-serif);font-size:clamp(44px,8vw,104px);line-height:1.02;color:var(--rail);transition:color var(--v4-dur-hero) var(--v4-ease-out)}.v4-contact__actions{display:flex;justify-content:center;gap:clamp(16px,3vw,40px);flex-wrap:wrap;padding-top:clamp(24px,4vw,48px)}.v4-contact__actions a{font-family:var(--v4-mono);font-size:12px;letter-spacing:.08em;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:2px;transition:color var(--v4-dur) var(--v4-ease-out),border-color var(--v4-dur) var(--v4-ease-out)}.v4-contact__actions a:hover{color:var(--ink);border-color:var(--ink)}.v4-root [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity var(--v4-dur) var(--v4-ease-out),transform var(--v4-dur) var(--v4-ease-out);transition-delay:calc(var(--i, 0) * 45ms);will-change:transform,opacity}.v4-root [data-reveal].is-in{opacity:1;transform:none}.v4-hero__portrait[data-reveal]{transform:scale(1.03)}.v4-hero__portrait[data-reveal].is-in{transform:scale(1);transition-duration:var(--v4-dur-hero)}.v4-contact__statement.is-in{color:var(--ink)}.v4-root a:focus-visible,.v4-tile:focus-visible{outline:2px solid var(--signal);outline-offset:3px}@media (prefers-reduced-motion:reduce){.v4-hero__portrait[data-reveal],.v4-root [data-reveal]{opacity:1;transform:none;transition:none}.v4-contact__statement{color:var(--ink)}.v4-tile__route{opacity:1;transform:none}}