html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-property:overflow;transition-duration:1ms;transition-behavior:allow-discrete}.section-h2{font-size:clamp(44px,6vw,76px);font-weight:600;letter-spacing:-.02em;line-height:1;max-width:var(--maxw);margin-inline:auto}.link-arrow{display:inline-flex;align-items:center;gap:8px;font-weight:500;font-size:16px;color:var(--fg)}.link-arrow span{display:inline-grid;place-items:center;width:26px;height:26px;border:1px solid var(--border);border-radius:8px;font-size:13px}.nav{position:sticky;top:clamp(10px,1.6vw,18px);margin-top:clamp(10px,1.6vw,18px);z-index:100;padding:0 clamp(12px,3vw,40px);display:flex;justify-content:center;pointer-events:none}.nav-inner{pointer-events:auto;width:fit-content;max-width:100%;padding:0 clamp(14px,2vw,24px);height:56px;display:flex;align-items:center;gap:clamp(20px,3.5vw,48px);border-radius:999px;transition:background .4s ease,color .4s ease,box-shadow .4s ease}.nav[data-pill=dark] .nav-inner{background:#111;color:#faf7f3;box-shadow:0 12px 30px -14px #00000073}.nav[data-pill=light] .nav-inner{background:#faf7f3;color:#111;box-shadow:0 14px 34px -14px #0000008c}.brand{font-weight:700;font-size:17px;letter-spacing:-.01em;color:inherit}.nav-links{display:flex;align-items:center;gap:clamp(14px,1.8vw,26px)}.nav-links a{font-size:14px;font-weight:500;color:color-mix(in oklab,currentColor 68%,transparent);transition:color .2s}.nav-links a:hover{color:currentColor}.hero{position:relative;min-height:100vh;padding:clamp(40px,8vh,90px) var(--gut) clamp(80px,12vh,130px);display:flex;flex-direction:column;align-items:center;justify-content:center}.hero-type{position:relative;width:100%;max-width:var(--maxw);text-align:center}.hero h1{font-size:clamp(52px,13.2vw,174px);font-weight:800;line-height:.9;letter-spacing:-.02em;text-transform:uppercase}.hero h1 span{display:block}.deco{position:absolute;width:clamp(38px,5vw,74px);height:clamp(38px,5vw,74px);fill:var(--ink);filter:drop-shadow(0 8px 16px rgba(0,0,0,.25))}.deco-star{top:-.4em;left:4%}.deco-bolt{right:3%;bottom:6%}.hero-photo{margin-top:clamp(24px,4vw,48px);width:min(60vw,210px);aspect-ratio:3 / 3.7}.hero-foot{position:absolute;left:var(--gut);right:var(--gut);bottom:clamp(20px,4vh,48px);display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.hero-copy{font-size:clamp(30px,5vw,68px);font-weight:600;letter-spacing:-.02em;line-height:1}.hero-since{color:var(--muted);font-size:clamp(12px,1vw,15px);letter-spacing:.02em}.morph-slot{visibility:hidden}.morph-photo{position:fixed;top:0;left:0;z-index:5;perspective:1200px;pointer-events:none;will-change:transform,width,height}.morph-card{position:relative;width:100%;height:100%;transform-style:preserve-3d;will-change:transform}.morph-face{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;border-radius:18px;backface-visibility:hidden;-webkit-backface-visibility:hidden}.morph-back{transform:rotateY(180deg);filter:grayscale(1)}.bio{padding:clamp(220px,70vh,780px) var(--gut) clamp(60px,10vw,150px)}.bio-grid{max-width:var(--maxw);margin-inline:auto;display:grid;grid-template-columns:1fr 1.05fr 1fr;gap:clamp(24px,3vw,52px);align-items:stretch}.bio-left{display:flex;flex-direction:column;justify-content:space-between;gap:40px}.bio-left h2{font-size:clamp(48px,6vw,76px);font-weight:600;letter-spacing:-.02em}.bio-intro{font-weight:600;font-size:clamp(18px,1.5vw,23px);letter-spacing:-.01em;max-width:22ch}.bio-photo{aspect-ratio:3 / 3.7;border-radius:22px;overflow:hidden}.bio-photo img{width:100%;height:100%;object-fit:cover}.bio-right{display:flex;flex-direction:column;justify-content:flex-end;gap:18px}.bio-right p{font-size:clamp(15px,1.15vw,18px);line-height:1.55;color:var(--fg)}.reveal-text{padding:clamp(80px,14vw,190px) var(--gut)}.reveal-text p{max-width:1000px;margin-inline:auto;text-align:center;font-size:clamp(28px,4vw,52px);font-weight:500;letter-spacing:-.02em;line-height:1.18}.reveal-text span{--lp: clamp(0, calc(var(--p) * var(--n) - var(--i)), 1);color:color-mix(in oklab,var(--ink) calc(var(--lp) * 100%),var(--muted))}.services{padding:clamp(40px,6vw,90px) var(--gut) clamp(50px,7vw,110px)}.svc-list{max-width:var(--maxw);margin:clamp(30px,5vw,72px) auto 0}.svc-row{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:clamp(20px,2.4vw,34px) 0;border-top:1px solid var(--hairline)}.svc-row:last-child{border-bottom:1px solid var(--hairline)}.svc-row h3{font-size:clamp(22px,2.4vw,32px);font-weight:500;letter-spacing:-.02em}.svc-tags{display:flex;flex-wrap:wrap;gap:6px;color:var(--muted);font-size:clamp(14px,1.2vw,17px);text-align:right}.svc-tags i{font-style:normal;margin-right:6px}.projects{padding:clamp(40px,6vw,90px) var(--gut)}.projects-head{max-width:var(--maxw);margin-inline:auto;display:flex;justify-content:space-between;align-items:flex-end;gap:24px}.proj-grid{max-width:var(--maxw);margin:clamp(30px,4vw,56px) auto 0;display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,3vw,44px) clamp(20px,2vw,28px)}.proj-thumb{border-radius:16px;overflow:hidden;aspect-ratio:3 / 2.05}.proj-thumb img{width:100%;height:100%;object-fit:cover}.proj-card h3{font-size:clamp(20px,2vw,26px);font-weight:600;letter-spacing:-.01em;margin-top:18px}.proj-card p{color:var(--muted);margin-top:4px;font-size:15px}.testimonials{padding:clamp(40px,6vw,90px) var(--gut)}.tst-grid{max-width:var(--maxw);margin:clamp(30px,4vw,56px) auto 0;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(16px,1.6vw,24px)}.tst-card{background:var(--dark);color:var(--on-dark);border-radius:18px;padding:clamp(20px,1.6vw,28px);min-height:340px;display:flex;flex-direction:column;justify-content:space-between}.tst-quote{font-size:clamp(15px,1.1vw,17px);line-height:1.55}.tst-person{display:flex;align-items:center;gap:12px;margin-top:28px}.tst-person img{width:44px;height:44px;border-radius:50%;object-fit:cover}.tst-name{font-weight:600;font-size:15px}.tst-role{color:var(--on-dark-muted);font-size:14px}.thoughts{padding:clamp(40px,6vw,90px) var(--gut)}.tht-grid{max-width:var(--maxw);margin:clamp(30px,4vw,56px) auto 0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,1.6vw,24px)}.tht-card{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:3 / 3.4}.tht-card img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.tht-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:clamp(18px,1.6vw,26px);display:flex;flex-direction:column;justify-content:flex-end;color:#fff;background:linear-gradient(to top,rgba(0,0,0,.72),transparent 62%)}.tht-date{font-size:13px;opacity:.85}.tht-card h3{font-size:clamp(20px,1.8vw,26px);font-weight:600;letter-spacing:-.01em;margin-top:6px}.tht-card p{font-size:14px;opacity:.85;margin-top:8px;line-height:1.45}.tht-cta{background:var(--dark);color:var(--on-dark);border-radius:18px;padding:clamp(20px,2vw,32px);display:flex;flex-direction:column;justify-content:space-between;gap:24px}.tht-cta p{font-size:clamp(22px,2.2vw,30px);font-weight:500;letter-spacing:-.02em;line-height:1.2}.tht-cta .link-arrow{color:var(--on-dark)}.tht-cta .link-arrow span{border-color:#faf7f34d}.contact{padding:clamp(60px,8vw,120px) var(--gut)}.contact-grid{max-width:var(--maxw);margin-inline:auto;display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,80px);align-items:start}.contact-left h2{margin:0}.contact-sub{color:var(--muted);margin-top:18px;max-width:34ch;font-size:clamp(15px,1.2vw,18px);line-height:1.5}.contact-socials{display:flex;gap:12px;margin-top:36px}.contact-socials a{width:44px;height:44px;border-radius:12px;background:#0000000f;display:grid;place-items:center;font-weight:600;color:var(--fg);transition:background .2s}.contact-socials a:hover{background:#0000001f}.contact-form{background:var(--dark);color:var(--on-dark);border-radius:20px;padding:clamp(20px,2vw,32px);display:flex;flex-direction:column;gap:18px}.contact-form label{display:block;font-size:14px;margin-bottom:8px;color:var(--on-dark)}.contact-form input,.contact-form textarea{width:100%;background:transparent;border:1px solid rgba(250,247,243,.18);border-radius:10px;padding:14px 16px;color:var(--on-dark);font:inherit}.contact-form input::placeholder,.contact-form textarea::placeholder{color:#faf7f366}.contact-form textarea{min-height:130px;resize:vertical}.contact-form .field.invalid input,.contact-form .field.invalid textarea{border-color:#e2557a}.contact-submit{background:var(--on-dark);color:var(--dark);border:none;border-radius:10px;padding:16px;font:inherit;font-weight:600;cursor:pointer;transition:opacity .2s}.contact-submit:hover{opacity:.9}.contact-submit.done{opacity:.7;cursor:default}.footer{background:var(--dark);color:var(--on-dark);padding:clamp(60px,8vw,110px) var(--gut) 0;margin-top:clamp(40px,6vw,80px);position:relative;overflow:hidden}.footer-top{max-width:var(--maxw);margin-inline:auto;display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;position:relative;z-index:1}.footer-heading{font-size:clamp(40px,5vw,68px);font-weight:600;letter-spacing:-.02em;line-height:1}.footer-col h4{font-size:clamp(18px,1.4vw,26px);font-weight:500;margin-bottom:20px}.footer-pills{display:flex;flex-wrap:wrap;gap:10px}.footer-pills a{background:#faf7f31a;padding:8px 16px;border-radius:999px;font-size:14px;transition:background .2s}.footer-pills a:hover{background:#faf7f333}.footer-email{color:var(--on-dark-muted);font-size:clamp(15px,1.2vw,18px)}.footer-watermark{text-align:center;font-weight:800;letter-spacing:-.04em;font-size:clamp(110px,26vw,380px);line-height:.78;color:#faf7f30a;-webkit-user-select:none;user-select:none;margin-top:-.05em;pointer-events:none}@media (max-width: 1000px){.bio-grid{grid-template-columns:1fr}.bio-left{flex-direction:row;justify-content:space-between;align-items:flex-end}.tst-grid{grid-template-columns:repeat(2,1fr)}.tht-grid{grid-template-columns:1fr 1fr}.footer-top{grid-template-columns:1fr}}@media (max-width: 720px){.nav-links{display:none}.proj-grid,.contact-grid,.tst-grid,.tht-grid,.bio-left{grid-template-columns:1fr}.bio-left{display:flex;flex-direction:column;align-items:flex-start}.hero-foot{flex-direction:column;align-items:flex-start;gap:8px}}.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.rail{border-right:1px solid var(--border);padding:40px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.rail .brand{font-family:var(--font-display);font-weight:700;font-size:20px;letter-spacing:-.01em}.rail h1{font-family:var(--font-display);font-weight:700;font-size:clamp(36px,4.4vw,72px);line-height:.94;letter-spacing:-.04em;max-width:12ch}.rail h1 em{font-style:normal;color:var(--muted)}.rail .foot{display:flex;justify-content:space-between;align-items:center}.rail-img{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;opacity:.14;filter:grayscale(1) contrast(1.1)}.rail-img img{width:100%;height:100%;object-fit:cover}.panel{display:flex;align-items:center;justify-content:center;padding:40px}.card{width:100%;max-width:380px}.card .kick{margin-bottom:10px}.card h2{font-family:var(--font-display);font-weight:700;font-size:32px;letter-spacing:-.02em;margin-bottom:6px}.card .sub{color:var(--muted);font-size:14px;margin-bottom:36px}.login-field{border:1px solid var(--border);background:var(--surface);margin-bottom:14px;padding:14px 16px}.login-field label{display:block;font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}.login-field input{width:100%;border:0;background:transparent;color:var(--fg);font-family:var(--font-body);font-size:16px;font-weight:500;outline:none}.login-field.invalid{border-color:var(--fg)}.login-btn{width:100%;background:var(--fg);color:var(--bg);border:1px solid var(--fg);font-family:var(--font-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;padding:16px;cursor:pointer;transition:.25s;margin-top:8px}.login-btn:hover{background:transparent;color:var(--fg)}.note{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;color:var(--muted);margin-top:20px;line-height:1.7;border-top:1px solid var(--border);padding-top:16px}.err-msg{font-family:var(--font-mono);font-size:11px;color:var(--fg);background:var(--surface);border:1px solid var(--fg);padding:10px 14px;margin-bottom:16px}.row-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:40px}.topbar{position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,3vw,32px);height:62px}.tb-left{display:flex;align-items:center;gap:18px}.tb-left .brand{font-family:var(--font-display);font-weight:700;font-size:16px;letter-spacing:-.01em}.crumb{color:var(--muted);font-size:12px;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.tb-right{display:flex;align-items:center;gap:14px}.btn{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:9px 14px;border:1px solid var(--border);background:var(--surface);color:var(--fg);cursor:pointer;transition:.2s}.btn:hover{border-color:var(--fg)}.btn-solid{background:var(--fg);color:var(--bg);border-color:var(--fg)}.btn-solid:hover{background:transparent;color:var(--fg)}.btn-danger:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}.btn:disabled{opacity:.35;cursor:default;border-color:var(--border)}.shell{max-width:1440px;margin:0 auto;padding:clamp(20px,3vw,36px) clamp(18px,3vw,32px)}.head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:24px;flex-wrap:wrap}.head h1{font-family:var(--font-display);font-weight:700;font-size:clamp(28px,4vw,48px);letter-spacing:-.03em}.stats{display:flex;gap:0;border:1px solid var(--border)}.stat{padding:12px 20px;border-right:1px solid var(--border)}.stat:last-child{border-right:0}.stat .n{font-family:var(--font-display);font-weight:700;font-size:22px}.stat .l{font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:2px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;border:1px solid var(--border);padding:12px 16px;margin-bottom:20px;flex-wrap:wrap;background:var(--surface)}.toolbar .left{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.sel-info{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.toolbar .right{display:flex;gap:10px}.dropzone{border:1px dashed var(--border);background:var(--surface);padding:34px;text-align:center;margin-bottom:22px;cursor:pointer;transition:.25s;position:relative}.dropzone:hover{border-color:var(--fg)}.dropzone.drag{border-color:var(--fg);border-style:solid;background:color-mix(in oklab,var(--fg) 5%,var(--surface))}.dropzone .big{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:-.02em;margin-bottom:6px}.dropzone .sm{color:var(--muted);font-size:13px}.dropzone .arrow{font-family:var(--font-display);font-size:30px;display:block;margin-bottom:10px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}.item{border:1px solid var(--border);background:var(--surface);position:relative;cursor:grab;transition:border-color .2s,opacity .2s,transform .2s;overflow:hidden}.item:active{cursor:grabbing}.item.dragging{opacity:.4;border-color:var(--fg)}.item.over{border-color:var(--fg);transform:scale(.98)}.item.selected{border-color:var(--fg);box-shadow:inset 0 0 0 2px var(--fg)}.item .ph{aspect-ratio:4 / 5;overflow:hidden;background:var(--bg)}.item .ph img{width:100%;height:100%;object-fit:cover;filter:saturate(1.02)}.item .bar{display:flex;justify-content:space-between;align-items:center;padding:9px 11px;border-top:1px solid var(--border)}.item .fn{font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item .ord{font-family:var(--font-mono);font-size:10px;font-weight:700}.chk{position:absolute;top:10px;left:10px;width:22px;height:22px;border:1px solid var(--fg);background:color-mix(in oklab,var(--bg) 70%,transparent);display:grid;place-items:center;cursor:pointer;z-index:2;font-family:var(--font-mono);font-size:12px;color:transparent;transition:.15s}.item.selected .chk{background:var(--fg);color:var(--bg)}.handle{position:absolute;top:10px;right:10px;z-index:2;font-family:var(--font-mono);font-size:14px;color:#fff;background:#0006;width:24px;height:24px;display:grid;place-items:center;opacity:0;transition:.2s}.item:hover .handle{opacity:1}.publish{position:absolute;bottom:44px;left:10px;z-index:2;font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;background:#0000008c;color:#fff;padding:3px 7px;cursor:pointer;border:0}.publish.hidden-state{background:#0000004d}.empty{border:1px solid var(--border);padding:60px;text-align:center;color:var(--muted);font-family:var(--font-mono);font-size:12px;letter-spacing:.1em}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%) translateY(80px);background:var(--fg);color:var(--bg);font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:12px 20px;z-index:200;transition:transform .35s cubic-bezier(.2,0,.1,1),opacity .35s;opacity:0;pointer-events:none}.toast.show{transform:translate(-50%) translateY(0);opacity:1}@media (max-width: 820px){.login{grid-template-columns:1fr}.rail{display:none}.panel{padding:28px}}@media (max-width: 600px){.grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.stats{display:none}}:root{--bg: #faf7f3;--surface: #ffffff;--fg: #111111;--ink: #111111;--muted: rgba(17, 17, 17, .55);--border: rgba(0, 0, 0, .1);--hairline: rgba(0, 0, 0, .12);--dark: #111111;--on-dark: #faf7f3;--on-dark-muted: rgba(250, 247, 243, .55);--invert-bg: #111111;--invert-fg: #faf7f3;--font-display: "Archivo", system-ui, sans-serif;--font-body: "Archivo", -apple-system, system-ui, sans-serif;--font-mono: "Archivo", ui-monospace, Menlo, monospace;--maxw: 1290px;--gut: clamp(20px, 4vw, 75px)}[data-theme=dark]{--bg: #0e0d0c;--surface: #161513;--fg: #efece6;--muted: #8a867e;--border: #2b2926;--hairline: #332f2b;--invert-bg: #efece6;--invert-fg: #0e0d0c}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:16px;line-height:1.55;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background .5s ease,color .5s ease;overflow-x:hidden}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}.tag{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.display{font-family:var(--font-display);font-weight:700;letter-spacing:-.03em;line-height:.95}.mono{font-family:var(--font-mono)}.wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--gut);padding-right:var(--gut)}.section{border-top:1px solid var(--border)}.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:28px 0 0;flex-wrap:wrap}.section-head .idx{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;color:var(--muted)}.frame{border:1px solid var(--border);overflow:hidden;background:var(--surface);position:relative}.frame img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,0,.1,1)}.theme-toggle{width:52px;height:28px;border:1px solid var(--border);background:var(--surface);border-radius:0;cursor:pointer;position:relative;padding:0;display:inline-flex;align-items:center}.theme-toggle:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;background:var(--fg);transition:transform .3s cubic-bezier(.4,0,.2,1)}[data-theme=dark] .theme-toggle:after{transform:translate(24px)}.theme-toggle .ico{position:absolute;font-size:10px;font-family:var(--font-mono);color:var(--muted)}.theme-toggle .sun{right:6px}.theme-toggle .moon{left:7px}.reveal{opacity:0;transform:translateY(26px);transition:opacity .9s cubic-bezier(.2,0,.1,1),transform .9s cubic-bezier(.2,0,.1,1)}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.cell img,.frame img{transition:none}}
