:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#050505;--ink-soft:#0b0b0c;--paper:#e9e5de;--paper-ink:#171719;--text:#f2f0eb;--muted:#96969d;--line:#ffffff24;--accent:#8f322b;--radius-panel:28px;--radius-card:24px;--ease-out:cubic-bezier(.16, 1, .3, 1);--nav-height:64px;background:var(--ink);color:var(--paper);font-synthesis:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Helvetica,Arial,sans-serif}*,:before,:after{box-sizing:border-box}html,body,#app{min-height:100%}body{background:var(--ink);min-width:320px;margin:0}a{color:inherit;text-decoration:none}a:focus-visible{outline:1px solid var(--paper);outline-offset:5px}.hero{isolation:isolate;background:radial-gradient(circle at 51% 34%, #1a1a1a 0%, #0a0a0a 42%, var(--ink) 76%);min-height:100svh;position:relative;overflow:hidden}.site-nav{z-index:100;width:100%;min-height:calc(var(--nav-height) + env(safe-area-inset-top));padding:env(safe-area-inset-top) clamp(20px, 4vw, 64px) 0;-webkit-backdrop-filter:blur(18px)saturate(125%);backdrop-filter:blur(18px)saturate(125%);background:#050505c2;border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0}.site-nav__brand{letter-spacing:.04em;font-size:14px;font-weight:650}.site-nav nav{align-items:center;gap:clamp(14px,2.2vw,34px);display:flex}.site-nav nav :is(a,button){min-height:44px;color:var(--muted);font:inherit;letter-spacing:.04em;cursor:pointer;transition:color .18s var(--ease-out);background:0 0;border:0;padding:0;font-size:12px}.site-nav nav :is(a,button):is(:hover,:focus-visible){color:var(--text)}.site-nav nav a[aria-current=location]{background:linear-gradient(var(--accent), var(--accent)) no-repeat 0 78% / 100% 1px;color:var(--text)}.site-nav nav button{color:#c8685f}@media (max-width:560px){:root{--nav-height:58px}.site-nav{padding-inline:16px}.site-nav__brand{font-size:12px}.site-nav nav{gap:12px}.site-nav nav :is(a,button){font-size:11px}}.hero-scene{position:absolute;inset:0}.identity{z-index:3;width:min(420px,38vw);animation:.7s cubic-bezier(.22,1,.36,1) both text-reveal;position:absolute;top:clamp(28px,4vw,58px);left:clamp(24px,4.2vw,72px)}.name{letter-spacing:.04em;margin:0;font-size:clamp(18px,1.6vw,25px);font-weight:650}.role{color:var(--accent);letter-spacing:.2em;white-space:nowrap;align-items:center;gap:12px;margin:15px 0 0;font-size:9px;font-weight:700;display:flex}.role:before{content:"";background:currentColor;flex:none;width:36px;height:1px}.identity nav{color:var(--muted);letter-spacing:.14em;text-transform:uppercase;gap:clamp(18px,2.4vw,38px);margin-top:26px;font-size:11px;display:flex}.identity nav a{color:var(--muted);transition:color .18s}.identity nav a:hover{color:var(--paper)}.portrait-stage{z-index:1;width:min(68vw,1040px);position:absolute;top:-4vh;bottom:-8vh;left:18vw}.portrait-base,.portrait-canvas{width:100%;height:100%;position:absolute;inset:0}.portrait-base{object-fit:contain;object-position:50% 18%;opacity:0}.portrait-canvas{z-index:2}.portrait-error{z-index:3;color:var(--muted);letter-spacing:.1em;opacity:1;margin:0;font-size:11px;position:absolute;bottom:12%;left:50%;transform:translate(-50%)}.portrait-stage--fallback .portrait-canvas,.portrait-stage--error .portrait-canvas,.portrait-stage.is-error .portrait-canvas{display:none}.portrait-stage--fallback .portrait-base,.portrait-stage--error .portrait-base,.portrait-stage.is-error .portrait-base{opacity:0}.hero-chat{z-index:180;right:max(20px, env(safe-area-inset-right));bottom:max(calc(20px + var(--chat-viewport-inset,0px)), env(safe-area-inset-bottom));--chat-viewport-inset:0px;background:0 0;border:0;width:auto;max-height:none;margin:0;position:fixed}.chat-orb{color:#e8e5de;-webkit-backdrop-filter:blur(18px)saturate(130%);backdrop-filter:blur(18px)saturate(130%);cursor:pointer;width:56px;min-width:52px;height:56px;min-height:52px;transition:opacity .18s var(--ease-out), transform .22s var(--ease-out), background-color .18s var(--ease-out);background:#131314e0;border:1px solid #ffffff29;border-radius:50%;place-items:center;padding:0;display:grid;position:relative;box-shadow:0 12px 38px #0000006b}.chat-orb:is(:hover,:focus-visible){outline-offset:3px;background:#252527;outline:1px solid #ffffff9e;transform:scale(1.045)}.chat-panel{width:min(400px,100vw - 32px);max-height:min(560px, calc(100dvh - 108px - var(--chat-viewport-inset,0px)));-webkit-backdrop-filter:blur(28px)saturate(125%);backdrop-filter:blur(28px)saturate(125%);opacity:0;pointer-events:none;transform-origin:100% 100%;transition:opacity .18s var(--ease-out), transform .24s var(--ease-out), visibility 0s linear .24s;visibility:hidden;background:#101011f0;border:1px solid #ffffff24;border-radius:30px 30px 22px 22px;padding:18px 20px 20px;position:absolute;bottom:calc(100% + 12px);right:0;transform:translateY(12px)scale(.965);box-shadow:0 24px 80px #00000094}.chat-panel__header{z-index:2;background:#101011f5;border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;margin:-18px -20px 17px;padding:15px 14px 12px 20px;display:flex;position:sticky;top:-18px}.chat-panel__title{color:#c8675e;letter-spacing:.17em;margin:0;font-size:9px;font-weight:700}.chat-collapse{color:#aaa9ad;cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;width:44px;height:44px;padding:0;display:grid}.chat-collapse span{background:currentColor;width:15px;height:1px}.chat-collapse:is(:hover,:focus-visible){color:var(--paper);background:#ffffff12;outline:none}.hero-chat[data-chat-presentation=expanded] .chat-panel{opacity:1;pointer-events:auto;transition:opacity .3s var(--ease-out), transform .38s var(--ease-out);visibility:visible;transform:translateY(0)scale(1)}.hero-chat[data-chat-presentation=expanded] .chat-orb{opacity:0;pointer-events:none;width:76px;min-width:76px;height:76px;min-height:76px;transform:scale(.82)}.hero-chat[data-chat-presentation=collapsed] .chat-panel{opacity:0}.hero-chat[data-chat-scrolling=true] .chat-orb{opacity:.68;transform:scale(.9)}.chat-scroll-region{overscroll-behavior:contain;scrollbar-color:#606060 transparent;scrollbar-width:thin;min-height:0;overflow-y:auto}.chat-heading{align-items:center;gap:12px;display:flex}.chat-accent{background:#bd5b52;flex:none;width:36px;height:1px}.chat-label{color:#bd5b52;letter-spacing:.18em;margin:0;font-size:10px;font-weight:700}.chat-intro{color:#aaa;margin:15px 0 0;font-size:10px;line-height:1.65}.chat-recommendations{flex-direction:column;margin-top:12px;display:flex}.chat-recommendation{color:#999;min-height:44px;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #303030;padding:9px 0;font-size:11px;line-height:1.45;transition:color .16s,transform .16s}.chat-recommendation:hover{color:var(--paper);transform:translate(5px)}.chat-recommendation:focus-visible,.chat-guide-toggle:focus-visible,.chat-input:focus-visible,.chat-send:focus-visible,.chat-sources :is(button,a):focus-visible{outline:1px solid var(--paper);outline-offset:3px}.chat-transcript{color:#d3d3d3;margin-top:14px;font-size:12px;line-height:1.65;transition:opacity .16s}.chat-transcript:not(:has(.chat-message)){display:none}.chat-sources:empty{display:none}.chat-sources{flex-wrap:wrap;align-self:flex-start;gap:0 10px;max-width:86%;margin-top:-3px;display:flex}.chat-sources :is(button,a){color:#999;min-height:28px;font:inherit;letter-spacing:.04em;cursor:pointer;background:0 0;border:0;align-items:center;padding:0;font-size:8px;display:inline-flex;position:relative}.chat-sources :is(button,a):before{content:"";position:absolute;inset:-8px -4px}.chat-composer{border-bottom:1px solid #4a4a4a;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;margin-top:14px;display:grid}.chat-input{resize:vertical;width:100%;min-height:44px;max-height:112px;color:var(--paper);font:inherit;background:0 0;border:0;padding:11px 0 8px;font-size:12px;line-height:1.5}.chat-input::placeholder{color:#7a7a7a}.chat-send{color:#bd5b52;min-width:44px;min-height:44px;font:inherit;letter-spacing:.08em;cursor:pointer;background:0 0;border:0;padding:0;font-size:11px;transition:color .16s}.chat-status{color:#7a7a7a;min-height:1.5em;margin:8px 0 0;font-size:10px;line-height:1.5;transition:opacity .16s,color .16s}.chat-cursor{animation:.8s steps(2,jump-none) infinite chat-cursor}@keyframes chat-cursor{50%{opacity:0}}.headline-wrap{z-index:3;text-align:right;width:min(62vw,900px);position:absolute;bottom:clamp(54px,7vh,94px);right:clamp(28px,4.8vw,82px)}.headline{letter-spacing:-.055em;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(58px,7.6vw,128px);font-style:italic;font-weight:400;line-height:.88;animation:.7s cubic-bezier(.22,1,.36,1) .1s both text-reveal}.headline span{white-space:nowrap;display:block}.headline em{color:#0000;font:inherit;-webkit-text-stroke:1px var(--paper)}.headline-wrap small{color:var(--muted);letter-spacing:.18em;text-transform:uppercase;margin-top:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Helvetica,Arial,sans-serif;font-size:clamp(9px,.9vw,12px);font-style:normal;display:block}.hero-index{z-index:3;color:var(--muted);letter-spacing:.18em;margin:0;font-size:9px;animation:.7s cubic-bezier(.22,1,.36,1) both text-reveal;position:absolute;bottom:clamp(28px,4vw,56px);left:clamp(24px,4.2vw,72px)}.hero-index strong{color:var(--paper);font-size:13px;font-weight:500}.portfolio-content{z-index:4;background:var(--ink);position:relative;overflow:clip}.portfolio-section{width:min(100%,1600px);margin:0 auto;padding:clamp(92px,12vw,190px) clamp(24px,5.2vw,92px);scroll-margin-top:24px}.section-heading{border-bottom:1px solid #242424;grid-template-columns:minmax(150px,.55fr) minmax(0,1.45fr);align-items:start;gap:clamp(32px,6vw,110px);padding-bottom:clamp(48px,7vw,104px);display:grid}.section-index{color:var(--muted);letter-spacing:.19em;margin:9px 0 0;font-size:9px}.section-index span{color:var(--paper);font-size:13px}.section-heading h2{letter-spacing:-.055em;max-width:960px;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(52px,7vw,118px);font-style:italic;font-weight:400;line-height:.9}.section-heading h2 span,.section-heading h2 em{display:block}.section-heading h2 em{color:#0000;font:inherit;-webkit-text-stroke:1px var(--paper)}.about-grid{grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:clamp(54px,10vw,160px);padding-top:clamp(54px,8vw,120px);display:grid}.about-copy{max-width:760px}.about-lead{letter-spacing:-.025em;margin:0;font-size:clamp(22px,2.4vw,39px);font-weight:350;line-height:1.5}.education{border-top:1px solid #242424;grid-template-columns:minmax(120px,.55fr) 1fr;gap:7px 24px;margin-top:clamp(60px,8vw,112px);padding-top:22px;display:grid}.education-label,.education p,.education time{color:var(--muted);letter-spacing:.08em;margin:0;font-size:11px;line-height:1.6}.education h3{grid-column:2;margin:0;font-size:clamp(18px,1.5vw,24px);font-weight:500}.education p:not(.education-label),.education time{grid-column:2}.capability-list{border-top:1px solid #242424}.capability{border-bottom:1px solid #242424;grid-template-columns:.85fr 1.15fr;gap:24px;padding:24px 0 28px;display:grid}.capability h3{color:var(--accent);letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:10px;font-weight:650;line-height:1.5}.capability ul,.project-tags{margin:0;padding:0;list-style:none}.capability li{color:#aaa;font-size:13px;line-height:1.8}.projects{padding-top:clamp(112px,14vw,220px)}.project-list{padding-top:clamp(64px,9vw,136px)}.project-card{border-bottom:1px solid #242424;grid-template-columns:minmax(0,1.42fr) minmax(300px,.58fr);align-items:center;gap:clamp(42px,7vw,112px);padding:clamp(46px,7vw,112px) 0;display:grid}.project-card:first-child,.project-chapters .project-card{padding-top:0}[data-project-chapter][hidden]{display:none}[data-project-chapter][data-project-transition=forward]{animation:project-reveal-forward .28s var(--ease-out) both}[data-project-chapter][data-project-transition=backward]{animation:project-reveal-backward .28s var(--ease-out) both}@keyframes project-reveal-forward{0%{opacity:.3;clip-path:inset(0 0 0 100%);transform:translate(18px)}to{opacity:1;clip-path:inset(0);transform:translate(0)}}@keyframes project-reveal-backward{0%{opacity:.3;clip-path:inset(0 100% 0 0);transform:translate(-18px)}to{opacity:1;clip-path:inset(0);transform:translate(0)}}.project-card:nth-child(2n){grid-template-columns:minmax(300px,.58fr) minmax(0,1.42fr)}.project-card:nth-child(2n) .project-media{order:2}.project-card:nth-child(2n) .project-copy{order:1}.project-media{min-width:0;margin:0}.project-reader{color:#b8b8b8;outline-offset:6px}.project-reader-stage{aspect-ratio:16/9;touch-action:pan-y;isolation:isolate;background:#070707;border:1px solid #1f1f1f;position:relative;overflow:hidden}.project-reader-stage:after{z-index:2;pointer-events:none;content:"";background:linear-gradient(135deg,#0000 60%,#9d3d3517);position:absolute;inset:0}.project-reader picture{width:100%;height:100%;display:block}.project-reader [data-page-image]{object-fit:contain;opacity:0;width:100%;height:100%;transition:opacity .18s;display:block}.project-reader [data-reader-status],.project-reader [data-reader-error]{z-index:3;color:#8d8d8d;letter-spacing:.12em;text-align:center;text-transform:uppercase;max-width:min(80%,360px);margin:0;font-size:10px;line-height:1.6;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.project-reader [data-reader-status]{transition:opacity .18s}.project-reader [data-reader-error]:not([hidden]){flex-wrap:wrap;justify-content:center;gap:10px 16px;display:flex}.project-reader [data-reader-error] p{flex-basis:100%;margin:0}.project-reader [data-reader-retry],.project-reader [data-open-original-pdf]{color:#b8b8b8;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #555;padding:0 0 2px}.project-reader [data-reader-retry]:hover,.project-reader [data-open-original-pdf]:hover{color:var(--paper)}.project-reader-chevron{z-index:4;color:#d0d0d0;opacity:.58;cursor:pointer;background:0 0;border:0;place-items:center;width:50px;min-width:44px;height:70px;min-height:44px;margin:0;padding:0;transition:opacity .16s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.project-reader-chevron--previous{left:-4px}.project-reader-chevron--next{right:-4px}.project-reader-chevron svg{width:40px;height:66px;display:block;overflow:visible}.project-reader-chevron polyline{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:square;stroke-linejoin:miter;vector-effect:non-scaling-stroke}.project-reader-chevron:hover,.project-reader-chevron:focus-visible{opacity:.82}.project-reader-chevron:focus-visible{outline-offset:-5px;outline:1px solid}.project-reader-chevron:disabled{opacity:.18;pointer-events:none;cursor:default}.project-reader-meta{text-align:center;min-height:25px;margin:11px 0 0;position:relative}.project-reader-counter{color:#7d7d7d;letter-spacing:.16em;text-align:center;margin:0;font-size:9px;line-height:1.5}.project-reader [data-open-original-pdf]{color:#666;letter-spacing:.1em;text-transform:uppercase;font-size:8px;line-height:1.5;position:absolute;top:0;right:0}.project-reader-counter strong{color:#b8b8b8;font-weight:500}.project-reader[data-reader-state=loading] [data-page-image]{opacity:0}.project-reader[data-reader-state=rendering] [data-page-image],.project-reader.is-rendering [data-page-image]{opacity:.5}.project-reader[data-reader-state=ready] [data-page-image],.project-reader.is-ready [data-page-image]{opacity:1}.project-reader[data-reader-state=ready] [data-reader-status],.project-reader[data-reader-state=error] [data-reader-status],.project-reader[data-reader-state=loading] .project-reader-chevron,.project-reader[data-reader-state=error] .project-reader-chevron{opacity:0;pointer-events:none}.project-number{color:var(--paper);margin:0 0 22px;font-family:Georgia,Times New Roman,serif;font-size:clamp(34px,3.2vw,52px);font-style:italic}.project-type{color:var(--accent);letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:9px;font-weight:650;line-height:1.5}.project-copy h3{letter-spacing:-.045em;margin:16px 0 0;font-family:Georgia,Times New Roman,serif;font-size:clamp(39px,4.4vw,72px);font-style:italic;font-weight:400;line-height:.95}.project-summary{color:#c2c2c2;margin:30px 0 0;font-size:clamp(15px,1.25vw,19px);line-height:1.75}.project-role{color:var(--muted);grid-template-columns:52px 1fr;gap:16px;margin:28px 0 0;font-size:11px;line-height:1.65;display:grid}.project-role span{color:var(--paper);letter-spacing:.14em;text-transform:uppercase;font-size:9px}.project-tags{flex-wrap:wrap;gap:8px;margin-top:28px;display:flex}.project-tags li{color:#8b8b8b;letter-spacing:.12em;text-transform:uppercase;border:1px solid #303030;padding:7px 10px 6px;font-size:8px}.contact{flex-direction:column;justify-content:space-between;min-height:80svh;padding-bottom:42px;display:flex}.contact-grid{grid-template-columns:1fr 1fr;gap:clamp(42px,8vw,130px);padding:clamp(52px,8vw,120px) 0;display:grid}.contact-grid>p{color:#b0b0b0;max-width:620px;margin:0;font-size:clamp(18px,2vw,30px);line-height:1.6}.contact-meta{flex-direction:column;align-items:flex-start;gap:17px;display:flex}.contact-meta a{border-bottom:1px solid var(--accent);overflow-wrap:anywhere;font-family:Georgia,Times New Roman,serif;font-size:clamp(22px,3vw,46px);font-style:italic}.contact-meta span{color:var(--muted);letter-spacing:.16em;text-transform:uppercase;font-size:10px}.site-footer{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;border-top:1px solid #242424;justify-content:space-between;gap:24px;padding-top:20px;font-size:9px;display:flex}@keyframes text-reveal{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@media (max-width:760px){.hero{min-height:100svh;padding-bottom:64px}.hero-scene{height:100svh;position:relative;inset:auto}.identity{width:calc(100% - 44px);top:22px;left:22px}.role{letter-spacing:.11em;gap:8px;margin-top:10px;font-size:8px}.role:before{width:20px}.identity nav{gap:16px;margin-top:15px;font-size:9px}.portrait-stage{width:128vw;top:105px;bottom:45px;left:-14vw}.portrait-base{opacity:0}.headline-wrap{width:calc(100% - 44px);bottom:42px;right:22px}.headline{font-size:clamp(43px,13vw,61px)}.headline-wrap small{letter-spacing:.12em;margin-top:14px;font-size:8px}.hero-index{display:none}.hero-chat{top:auto;right:max(14px, env(safe-area-inset-right));bottom:max(calc(14px + var(--chat-viewport-inset,0px)), env(safe-area-inset-bottom));width:auto;max-height:none;margin:0;padding:0;position:fixed;left:auto}.chat-panel{inset:auto 0;bottom:max(1px, var(--chat-viewport-inset,0px));width:100%;max-height:min(78dvh, calc(100dvh - var(--nav-height) - var(--chat-viewport-inset,0px)));padding:18px 20px max(20px, env(safe-area-inset-bottom));transform-origin:bottom;border-bottom:0;border-left:0;border-right:0;border-radius:24px 24px 0 0;position:fixed;transform:translateY(18px)scale(.985)}.portfolio-section{padding:92px 22px}.section-heading{grid-template-columns:1fr;gap:28px;padding-bottom:46px}.section-heading h2{font-size:clamp(47px,14vw,68px)}.about-grid{grid-template-columns:1fr;gap:60px;padding-top:54px}.education{grid-template-columns:1fr;margin-top:58px}.education h3,.education p:not(.education-label),.education time{grid-column:1}.education-label{margin-bottom:12px}.capability{grid-template-columns:1fr;gap:12px}.project-list{padding-top:54px}.project-card,.project-card:nth-child(2n){grid-template-columns:1fr;gap:32px;padding:62px 0}.project-card:nth-child(2n) .project-media,.project-card:nth-child(2n) .project-copy{order:initial}.project-reader-chevron svg{width:36px;height:60px}.project-reader-chevron--previous{left:-6px}.project-reader-chevron--next{right:-6px}.project-reader-meta{margin-top:9px}.project-number{margin-bottom:16px}.project-copy h3{margin-top:12px}.project-summary{margin-top:22px}.contact{min-height:100svh;padding-bottom:28px}.contact-grid{grid-template-columns:1fr;gap:42px;padding:54px 0 88px}.site-footer{flex-direction:column}}@media (max-width:760px) and (max-height:680px){.identity{top:12px}.portrait-stage{top:80px;bottom:18px}.headline-wrap{bottom:18px}.headline{font-size:clamp(38px,12vw,52px)}.headline-wrap small{margin-top:8px}}@media (prefers-reduced-motion:reduce){.identity,.headline,.hero-index{animation:none}.project-reader [data-page-image],.project-reader [data-reader-status],.project-reader-chevron,.chat-transcript,.chat-status,.chat-recommendation,.chat-send{transition:none}.chat-cursor{animation:none}}.project-reader-open{z-index:1;cursor:zoom-in;background:0 0;border:0;width:100%;position:absolute;inset:0}.project-reader-close{z-index:8;top:max(14px, env(safe-area-inset-top));right:max(14px, env(safe-area-inset-right));color:#b6b6ba;cursor:pointer;background:#050505c7;border:1px solid #ffffff2e;border-radius:50%;place-items:center;width:44px;height:44px;padding:0;font:300 28px/1 Arial,sans-serif;display:none;position:absolute}.project-reader.is-fullscreen{z-index:220;width:100vw;height:100dvh;padding:max(12px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));color:#b8b8b8;animation:reader-enter .26s var(--ease-out) both;background:#020202;grid-template-rows:minmax(0,1fr) auto;margin:0;display:grid;position:fixed;inset:0}.project-reader.is-fullscreen .project-reader-stage{aspect-ratio:auto;border:0;width:100%;height:100%}.project-reader.is-fullscreen .project-reader-stage:after,.project-reader.is-fullscreen .project-reader-open{display:none}.project-reader.is-fullscreen .project-reader-close{display:grid}.project-reader.is-fullscreen [data-page-image]{object-fit:contain;transition:opacity .22s var(--ease-out), transform .22s var(--ease-out)}.project-reader.is-fullscreen[data-reader-state=rendering] [data-page-image]{opacity:.34;transform:translate(12px)}.project-reader.is-fullscreen .project-reader-chevron--previous{left:max(4px, env(safe-area-inset-left))}.project-reader.is-fullscreen .project-reader-chevron--next{right:max(4px, env(safe-area-inset-right))}.project-reader.is-fullscreen .project-reader-meta{min-height:36px;margin:0;padding-top:10px}.reader-scroll-locked{overflow:hidden}@keyframes reader-enter{0%{opacity:.45;clip-path:inset(12% round 22px)}to{opacity:1;clip-path:inset(0)}}@media (prefers-reduced-motion:reduce){.project-reader.is-fullscreen{animation:none}.project-reader.is-fullscreen [data-page-image]{transition:none}}.hero{background:radial-gradient(circle at 50% 42%, #1c1c1d7a, transparent 48%), var(--ink);min-height:100svh}.hero-scene{inset:calc(var(--nav-height) + env(safe-area-inset-top)) 0 0;position:absolute}.hero-copy{z-index:4;pointer-events:none;width:100%;position:absolute;inset:0}.hero-copy .role{margin:0;position:absolute;top:clamp(52px,8vh,96px);left:clamp(24px,5vw,88px)}.hero-copy .headline{letter-spacing:-.04em;text-align:right;isolation:isolate;max-width:min(980px,70vw);font-size:clamp(48px,3.9vw,74px);line-height:.89;position:absolute;bottom:clamp(64px,10vh,118px);right:clamp(28px,6vw,110px)}.hero-copy .headline:before{z-index:-1;content:"";pointer-events:none;background:radial-gradient(at 72% 62%,#050505e0 0%,#0505058f 48%,#0000 78%);position:absolute;inset:-22% -7% -24% -20%}.hero-copy .headline span{white-space:nowrap;text-wrap:nowrap}.hero-copy .headline span:nth-child(2){transform:translate(16px)}.hero-supporting{color:#a6a4a0;letter-spacing:.035em;white-space:nowrap;text-align:right;max-width:none;margin:0;padding-right:0;font-size:clamp(11px,.9vw,14px);line-height:1.65;position:absolute;bottom:clamp(24px,4vh,48px);right:clamp(28px,6vw,110px)}.portrait-stage{width:100%;position:absolute;inset:0}.portrait-canvas{width:100%;height:100%}.portrait-base,.portrait-mask{visibility:hidden;pointer-events:none;position:absolute}.hero-index{bottom:clamp(28px,4vh,54px)}@media (max-width:760px){.hero-copy .headline span:nth-child(2){transform:none}.hero{min-height:100svh;padding-bottom:0}.hero-scene{inset:calc(var(--nav-height) + env(safe-area-inset-top)) 0 0;height:auto;position:absolute}.hero-copy .role{top:26px;left:20px}.hero-copy .headline{right:20px;bottom:max(108px, calc(82px + env(safe-area-inset-bottom)));text-align:right;max-width:calc(100vw - 40px);font-size:clamp(42px,12.5vw,62px)}.hero-supporting{right:20px;bottom:max(60px, calc(36px + env(safe-area-inset-bottom)));white-space:normal;max-width:30ch;padding-right:68px;font-size:11px}.hero-copy .headline span{white-space:normal;text-wrap:balance}}@media (max-width:390px){.hero-copy .headline{font-size:40px}}@media (max-width:760px) and (max-height:680px) and (orientation:landscape){.hero-copy .headline{max-width:26vw;font-size:clamp(26px,4.5vw,32px);bottom:88px;right:20px}.hero-copy .headline:before{inset:-16% -5% -16% 0}.hero-supporting{display:none}}@media (prefers-reduced-motion:reduce){.hero-copy .headline{animation:none}}.resume{background:var(--ink);padding:clamp(120px,15vh,190px) 0 clamp(96px,12vh,150px);position:relative}.resume:before{content:"";background:#ffffff29;width:min(180px,28vw);height:1px;margin:0 auto clamp(64px,9vh,110px);display:block}.resume-panel{border-radius:var(--radius-panel);background:var(--paper);width:min(90vw,1540px);min-height:min(78vh,840px);color:var(--paper-ink);border:1px solid #ffffff1a;grid-template-columns:minmax(260px,31%) minmax(0,1fr);margin:0 auto;display:grid;overflow:hidden;box-shadow:0 28px 80px #00000057}.resume-identity{color:#f4f1eb;background:#262628;grid-template-rows:minmax(0,1.18fr) auto;min-height:100%;display:grid;position:relative}.resume-portrait{object-fit:cover;object-position:54% 34%;filter:grayscale()contrast(1.06);width:100%;height:100%;min-height:0}.resume-identity__copy{padding:clamp(28px,3.6vw,58px)}.resume-identity__copy h2{letter-spacing:-.04em;margin:0;font-size:clamp(32px,3.5vw,58px);line-height:1}.resume-identity__copy>p{color:#bbb8b3;letter-spacing:.08em;margin:15px 0 0;font-size:12px}.resume-contact{flex-direction:column;gap:8px;margin-top:clamp(28px,4vh,48px);font-size:12px;line-height:1.5;display:flex}.resume-contact a{border-bottom:1px solid #f4f1eb47;width:-moz-fit-content;width:fit-content}.resume-contact span{color:#aaa6a0;margin-top:10px}.resume-body{flex-direction:column;min-width:0;padding:clamp(34px,4vw,70px);display:flex}.resume-body__header{border-bottom:1px solid #1717192b;justify-content:space-between;align-items:center;gap:20px;padding-bottom:22px;display:flex}.resume-body__header p,.resume-entry__label{color:var(--accent);letter-spacing:.16em;margin:0;font-size:10px;font-weight:700}.resume-download{border-bottom:1px solid var(--accent);align-items:center;min-height:44px;font-size:12px;display:inline-flex}.resume-entries{flex:1;grid-template-columns:repeat(2,minmax(0,1fr));align-content:center;gap:clamp(24px,3vw,48px) clamp(28px,4vw,64px);min-height:0;padding-top:clamp(30px,4vh,56px);display:grid}.resume-entry:nth-child(3){grid-row:span 2}.resume-entry h3{margin:9px 0 0;font-size:clamp(18px,1.55vw,26px);line-height:1.2}.resume-entry ul{color:#4b4a4b;gap:6px;margin:13px 0 0;padding:0;font-size:clamp(11px,.85vw,13px);line-height:1.55;list-style:none;display:grid}.resume-entry li{padding-left:11px;position:relative}.resume-entry li:before{background:var(--accent);content:"";border-radius:50%;width:3px;height:3px;position:absolute;top:.72em;left:0}@supports (animation-timeline:view()){.resume-panel{animation:resume-rise 1ms var(--ease-out) both;animation-timeline:view();animation-range:entry 10% cover 34%}}@keyframes resume-rise{0%{opacity:.7;transform:translateY(34px)}to{opacity:1;transform:translateY(0)}}@media (max-width:820px){.resume{padding-block:100px}.resume-panel{border-radius:24px;grid-template-columns:1fr;width:calc(100% - 32px)}.resume-identity{grid-template-rows:minmax(280px,44vh);grid-template-columns:minmax(140px,42%) minmax(0,1fr)}.resume-identity__copy{align-self:end;padding:26px 22px}.resume-body{padding:36px 24px 46px}.resume-entries{grid-template-columns:1fr;gap:34px}.resume-entry:nth-child(3){grid-row:auto}}@media (max-width:520px){.resume-identity{grid-template-rows:52vh auto;grid-template-columns:1fr}.resume-body__header{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){.resume-panel{animation:none}}.project-selector-rail{grid-template-columns:repeat(6,minmax(0,1fr));gap:clamp(10px,1.1vw,18px);margin-top:clamp(38px,5vw,76px);padding:8px 2px 20px;display:grid}.project-selector{border-radius:var(--radius-card);min-width:0;transition:border-color .2s var(--ease-out), transform .2s var(--ease-out), box-shadow .2s var(--ease-out);background:#101011;border:1px solid #ffffff21;grid-template-rows:auto auto;display:grid;position:relative;overflow:hidden;transform:translateZ(0)}.project-selector:after{background:var(--accent);content:"";opacity:0;width:5px;height:5px;transition:opacity .18s var(--ease-out), transform .18s var(--ease-out);border-radius:50%;position:absolute;bottom:12px;right:14px;transform:scale(.5)}.project-selector__media{aspect-ratio:16/10;background:#19191a;min-width:0;min-height:0;padding:6px;display:block;overflow:hidden}.project-selector__media picture,.project-selector__media img{width:100%;height:100%;display:block}.project-selector__media img{object-fit:contain;object-position:50% 50%;filter:saturate(.78)contrast(1.04)brightness(.86);transition:transform .22s var(--ease-out), filter .22s var(--ease-out)}.project-selector__meta{flex-direction:column;justify-content:flex-end;gap:2px;min-width:0;min-height:48px;padding:8px 14px;display:flex}.project-selector__meta small{color:#78787f;letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap;font-size:8px;overflow:hidden}.project-selector__meta strong{letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;padding-right:12px;font-size:clamp(13px,1.05vw,17px);font-weight:570;overflow:hidden}.project-selector:hover{z-index:2;border-color:#ffffff4d;transform:scale(1.03);box-shadow:0 14px 36px #0000006b}.project-selector:focus-visible{z-index:2;border-color:#ffffff4d;transform:translateY(-2px);box-shadow:0 14px 36px #0000006b}.project-selector:hover .project-selector__media img{filter:saturate(.92)contrast(1.04)brightness(.96);transform:scale(1.04)}.project-selector:focus-visible .project-selector__media img{filter:saturate(.92)contrast(1.04)brightness(.96)}.project-selector[aria-current=true]{border-color:#8f322ba8}.project-selector[aria-current=true]:after{opacity:1;transform:scale(1)}.project-chapters,[data-project-chapter]{scroll-margin-top:calc(var(--nav-height) + 28px)}@media (max-width:1179px){.project-selector-rail{scroll-snap-type:x proximity;scrollbar-width:none;grid-template-columns:none;width:calc(100% + clamp(44px,7vw,120px));margin-right:calc(-1*clamp(22px,3.5vw,60px));scroll-padding-inline:2px;display:flex;overflow-x:auto}.project-selector-rail::-webkit-scrollbar{display:none}.project-selector{scroll-snap-align:start;flex:none;width:clamp(180px,24vw,240px)}}@media (max-width:760px){.project-selector-rail{width:calc(100% + 22px);margin-right:-22px}.project-selector{width:min(68vw,260px)}}@media (prefers-reduced-motion:reduce){.project-selector,.project-selector__media img{transition-duration:.01ms}.project-selector:hover,.project-selector:focus-visible,.project-selector:hover .project-selector__media img{transform:none}[data-project-chapter][data-project-transition]{animation:none}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.chat-particle-canvas{z-index:-1;pointer-events:none;mix-blend-mode:difference;opacity:0;width:calc(100% + 20px);height:calc(100% + 20px);transition:opacity .42s var(--ease-out);position:absolute;inset:-10px}.hero-chat[data-chat-presentation=guide]{width:min(336px,100vw - 48px);inset:clamp(126px,20vh,228px) auto auto clamp(24px,5vw,88px)}.hero-chat[data-chat-presentation=guide] .chat-panel{opacity:1;pointer-events:auto;transform-origin:0 0;visibility:visible;width:100%;max-height:min(590px,100svh - 180px);position:relative;bottom:auto;right:auto;transform:none}.hero-chat[data-chat-presentation=guide] .chat-orb{opacity:0;pointer-events:none}.hero-chat[data-chat-presentation=guide] .chat-particle-canvas,.hero-chat[data-chat-presentation=expanding] .chat-particle-canvas,.hero-chat[data-chat-presentation=collapsing] .chat-particle-canvas,.hero-chat[data-chat-presentation=collapsed] .chat-particle-canvas{opacity:1}.hero-chat[data-chat-presentation=collapsed],.hero-chat[data-chat-presentation=expanding],.hero-chat[data-chat-presentation=expanded],.hero-chat[data-chat-presentation=collapsing]{width:76px;transform:translate3d(calc(var(--chat-dock-x,54px) - 38px), calc(var(--chat-dock-y,172px) - 38px), 0);transition:transform .36s var(--ease-out);will-change:transform;inset:0 auto auto 0}.hero-chat[data-chat-dragging=true]{transition:none}.hero-chat[data-chat-dragging=true] .chat-orb{cursor:grabbing;transform:scale(1.035)}.hero-chat[data-chat-presentation=collapsed] .chat-panel{display:none}.hero-chat[data-chat-presentation=collapsed] .chat-orb,.hero-chat[data-chat-presentation=expanding] .chat-orb,.hero-chat[data-chat-presentation=collapsing] .chat-orb{opacity:1;pointer-events:auto;width:76px;min-width:76px;height:76px;min-height:76px;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;touch-action:none;background:0 0;border:0;transform:none}.hero-chat[data-chat-presentation=expanding] .chat-orb{pointer-events:none}.hero-chat[data-chat-presentation=collapsed] .chat-particle-canvas,.hero-chat[data-chat-presentation=expanding] .chat-particle-canvas,.hero-chat[data-chat-presentation=collapsing] .chat-particle-canvas{z-index:2}.hero-chat[data-chat-presentation=collapsed]:before,.hero-chat[data-chat-presentation=expanding]:before,.hero-chat[data-chat-presentation=collapsing]:before{z-index:1;content:"";pointer-events:none;background:#050505;border-radius:50%;position:absolute;inset:4px}.hero-chat[data-chat-dock=left] .chat-panel{transform-origin:0;inset:50% auto auto calc(100% + 14px)}.hero-chat[data-chat-dock=right] .chat-panel{transform-origin:100%;inset:50% calc(100% + 14px) auto auto}.hero-chat[data-chat-presentation=guide][data-chat-dock] .chat-panel{inset:auto;transform:none}.hero-chat[data-chat-presentation=expanded] .chat-panel{transform:translateY(-50%)scale(1)}.hero-chat[data-chat-presentation=collapsing] .chat-panel{filter:none;opacity:0;pointer-events:none;visibility:visible;will-change:transform, opacity;transition:opacity .22s var(--ease-out), transform .38s var(--ease-out)}.hero-chat[data-chat-presentation=expanding] .chat-panel{filter:none;opacity:0;pointer-events:none;visibility:visible;will-change:transform, opacity}.chat-ball-anchor{width:30px;height:30px;box-shadow:none;background:0 0;border-radius:50%;flex:none;margin-right:8px;position:relative}.chat-ball-anchor:after{display:none}.chat-header-particle-canvas{pointer-events:none;width:calc(100% + 10px);height:calc(100% + 10px);position:absolute;inset:-5px}.hero-chat[data-chat-presentation=expanded] .chat-particle-canvas{opacity:0;pointer-events:none}.hero-chat:not([data-chat-presentation=expanded]) .chat-header-particle-canvas{opacity:0}@media (min-width:761px){.hero-chat[data-chat-presentation=guide]{top:clamp(96px,13vh,152px);left:clamp(24px,4vw,64px)}.hero-chat[data-chat-presentation=guide] .chat-panel{max-height:min(560px, calc(100svh - var(--nav-height) - 180px))}.hero-chat[data-chat-presentation=expanded] .chat-panel{transform:translateY(calc(-50% - 72px))scale(1)}.hero-chat[data-chat-presentation=collapsing][data-chat-dock=left] .chat-panel,.hero-chat[data-chat-presentation=expanding][data-chat-dock=left] .chat-panel{transform:translate(-28px,-50%)scale(.12)}.hero-chat[data-chat-presentation=collapsing][data-chat-dock=right] .chat-panel,.hero-chat[data-chat-presentation=expanding][data-chat-dock=right] .chat-panel{transform:translate(28px,-50%)scale(.12)}}.chat-guide{margin-top:12px}.chat-guide-toggle{color:#aaa9a3;width:100%;min-height:44px;font:inherit;letter-spacing:.1em;text-align:left;cursor:pointer;background:0 0;border:1px solid #292929;border-left:0;border-right:0;margin-top:10px;padding:0;font-size:9px;transition:color .16s;display:block}.chat-guide-toggle[hidden],.chat-guidance[hidden]{display:none}.chat-guide-toggle:is(:hover,:focus-visible){color:#e8e5de}.chat-section-label,.chat-topic__title,.chat-composer-label{color:#aaa9a3;letter-spacing:.12em;margin:0;font-size:8px;font-weight:700;display:block}.chat-primary-description{color:#a7a6a1;margin:4px 0 10px;font-size:10px;line-height:1.55}.chat-recommendation--primary{color:#e8e5de;background:#bd5b521f;border:1px solid #e8e5de38;border-radius:10px;margin-top:6px;padding:10px 12px}.chat-topic{margin-top:10px}.chat-guidance .chat-recommendation{font-size:10px}.chat-topic .chat-recommendation{padding-left:2px}.chat-composer{grid-template-columns:minmax(0,1fr) auto}.chat-composer-label{grid-column:1/-1;padding-top:2px}.chat-transcript{flex-direction:column;gap:9px;display:flex}.chat-message{border:1px solid #0000;border-radius:15px 15px 15px 4px;max-width:86%;margin:0;padding:9px 11px}.chat-message--assistant{color:#e8e5de;background:#242424;border-color:#e8e5de33;align-self:flex-start}.chat-message--user{color:#f3e5e0;background:#512c29;border-color:#bd5b5270;border-radius:15px 15px 4px;align-self:flex-end}.chat-message--loading{color:#c7c5be;align-items:center;gap:7px;display:inline-flex}.chat-loading-dots{align-items:center;gap:3px;display:inline-flex}.chat-loading-dot{background:currentColor;border-radius:50%;width:3px;height:3px;animation:.9s ease-in-out infinite chat-loading-dot}.chat-loading-dot:nth-child(2){animation-delay:.15s}.chat-loading-dot:nth-child(3){animation-delay:.3s}@keyframes chat-loading-dot{50%{opacity:.3;transform:translateY(-1px)}}@media (max-width:760px){.hero-chat[data-chat-presentation=guide]{top:max(92px, calc(var(--nav-height) + 18px));width:min(290px,100vw - 40px);left:20px}.hero-chat[data-chat-presentation=guide] .chat-panel{max-height:min(392px,100svh - 188px);padding:14px 16px 16px}.hero-chat[data-chat-presentation=expanded]{will-change:auto;transition:none;top:0;left:0;transform:none}.hero-chat[data-chat-presentation=expanded] .chat-panel{top:auto;right:12px;bottom:max(76px, calc(60px + var(--chat-viewport-inset,0px)), env(safe-area-inset-bottom));width:auto;max-height:min(70dvh, calc(100dvh - var(--nav-height) - 96px - var(--chat-viewport-inset,0px)));position:fixed;left:12px;transform:none}}@media (prefers-reduced-motion:reduce){.hero-chat,.hero-chat .chat-panel,.chat-particle-canvas{transition:none;animation:none}.chat-loading-dot{animation:none}}@media (min-width:761px){.portfolio-section{padding-inline:max(clamp(24px,5.2vw,92px),108px)}.resume-panel{width:min(100% - 216px,1540px)}}
