@font-face{font-family:'Madimi One';src:url('assets/madimi-one.woff2') format('woff2');font-weight:400;font-display:swap}@font-face{font-family:Instrument;src:url('assets/instrument.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{--ink:#182c28;--paper:#f4f2e9;--green:#344f35;--line:#263c2926;--ease:cubic-bezier(.2,.75,.18,1)}
*{box-sizing:border-box}html,body{margin:0;width:100%;min-height:100%;font-family:Instrument,Arial,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased}body{overflow:hidden;background:#acd1e5}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button{border:0;background:none}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid currentColor;outline-offset:6px}button:disabled{cursor:wait}::selection{background:#b8c58f;color:#152821}.skip{position:fixed;left:20px;top:-100px;z-index:1000;background:var(--paper);padding:14px}.skip:focus{top:20px}canvas#landscape,canvas#gallery,.atmosphere{position:fixed;inset:0;width:100%;height:100%}#landscape{z-index:0}#gallery{z-index:2;transition:opacity .6s}.atmosphere{z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(238,248,255,.04),transparent 55%,rgba(32,53,16,.04))}.site-header{position:fixed;z-index:30;top:0;left:0;width:100%;display:flex;justify-content:space-between;align-items:center;padding:31px 42px}.brand{font-size:23px;letter-spacing:-1px;font-weight:550;line-height:1}.brand-dot{font-size:10px;vertical-align:top;margin-left:3px;line-height:1.2;letter-spacing:0}.site-header nav{display:flex;gap:30px;font-size:14px;line-height:24px}.site-header nav a{position:relative;padding:5px 0}.nav-mark{position:absolute;left:50%;bottom:-4px;width:4px;height:4px;border-radius:50%;background:currentColor;transform:scale(0);transition:transform .3s}.site-header nav a[aria-current] .nav-mark,.site-header nav a:hover .nav-mark{transform:scale(1)}#work-view{position:fixed;inset:0;z-index:3;pointer-events:none}.gallery-kicker{position:absolute;top:21%;left:50%;transform:translateX(-50%);width:45%;display:flex;justify-content:space-between;font-size:11px;letter-spacing:.025em;color:#29464f}.open-project{pointer-events:auto;position:absolute;left:26%;top:28%;width:48%;height:39%;cursor:default}.project-hover{position:absolute;left:50%;top:50%;width:102px;height:102px;margin:-51px 0 0 -51px;border-radius:100%;background:#f5f3eae8;color:#233529;align-items:center;justify-content:center;gap:7px;font-size:12px;display:flex;opacity:0;transform:scale(.8);transition:opacity .25s,transform .4s;backdrop-filter:blur(9px)}.open-project:focus-visible .project-hover{opacity:1;transform:scale(1)}.project-caption{position:absolute;top:73%;left:50%;transform:translateX(-50%);width:max-content;max-width:80%;text-align:center;pointer-events:auto;text-shadow:0 1px 16px #dce7b033}.project-index{font-size:10px;letter-spacing:.08em}.project-caption h1{font-size:32px;letter-spacing:-1.1px;line-height:1.2;margin:7px 0 6px;font-weight:500}.project-caption p{font-size:13px;line-height:1.4;margin:0}.read-project{margin-top:13px;padding:5px 0;font-size:11px;border-bottom:1px solid #24392366}.read-project span{margin-left:20px}.work-footer{position:absolute;bottom:27px;left:42px;right:42px;display:flex;justify-content:space-between;align-items:flex-end;pointer-events:auto;color:#fffdf1;text-shadow:0 1px 8px #13281355}.identity{display:flex;align-items:flex-start;gap:9px;font-size:12px;line-height:1.55}.identity p{margin:0}.identity p span{opacity:.8}.project-controls{position:absolute;left:50%;bottom:-4px;transform:translateX(-50%);display:flex;align-items:center;gap:14px}.arrow{font-size:22px;line-height:1;width:44px;height:44px}.project-dots{display:flex;gap:3px}.project-dots button{width:27px;height:36px;position:relative}.project-dots button:before{content:'';display:block;width:4px;height:4px;background:currentColor;opacity:.45;border-radius:50%;margin:auto;transition:width .4s,opacity .4s}.project-dots button[aria-current]:before{width:20px;opacity:1;border-radius:2px}.motion-help{display:flex;align-items:center;gap:16px;font-size:11px}.motion-help button{display:grid;place-items:center;width:30px;height:30px;border:1px solid #fff8;border-radius:50%}.loading{position:absolute;inset:0;background:#bdd9e7;display:flex;align-items:center;justify-content:center;font-size:13px;gap:14px;transition:opacity .8s;pointer-events:none}.loading span{width:15px;height:15px;border:1px solid #344b4a44;border-top-color:#344b4a;border-radius:50%;animation:spin 1.2s linear infinite}.loaded .loading{opacity:0}.live-status{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);z-index:100;background:var(--ink);color:var(--paper);font-size:12px;padding:10px 16px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .2s}.live-status.show{opacity:1}
body.detail-open{overflow:auto;background:var(--paper)}.detail-open .site-header{background:#f4f2e9ed;backdrop-filter:blur(15px);border-bottom:1px solid var(--line)}.detail-open #work-view{visibility:hidden}.detail-open #gallery{opacity:0;pointer-events:none}.detail-open #landscape,.detail-open .atmosphere{visibility:hidden}#detail-view{position:relative;z-index:10;background:var(--paper);min-height:100vh;padding-top:114px}.detail-tools{padding:0 5vw;display:flex;align-items:center;justify-content:space-between;font-size:12px}.back-work{padding:10px 0}.detail-kind{color:#576057;font-size:11px}.close-detail{font-size:28px;width:40px;height:40px}.case-hero{padding:52px 5vw 0}.case-hero-top{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:44px;gap:40px}.case-hero h1{font-size:clamp(58px,8vw,126px);font-weight:450;line-height:.95;letter-spacing:-.065em;margin:0}.case-hero-top p{max-width:370px;font-size:17px;line-height:1.5;margin:0}.case-hero-image{display:block;width:100%;aspect-ratio:1600/1000;object-fit:cover;background:#e4e6d6;border-radius:18px}.case-hero-label{font-size:11px;margin:14px 0 0;display:flex;justify-content:space-between}.case-body{display:grid;grid-template-columns:220px minmax(0,1fr);gap:7vw;padding:100px 7vw;max-width:1500px;margin:auto}.case-facts{font-size:13px;align-self:start;position:sticky;top:124px}.fact{padding-bottom:24px}.fact>span{color:#656d61;font-size:11px}.fact p{margin:8px 0 0;line-height:1.5}.fact a{border-bottom:1px solid #3c5a3d66}.case-jumps{display:grid;gap:15px;border-top:1px solid var(--line);padding-top:25px;margin-top:10px}.case-jumps a{font-size:12px}.case-copy{min-width:0}.case-section{margin-bottom:75px;scroll-margin-top:124px}.case-section h2{font-size:clamp(29px,3vw,44px);font-weight:450;line-height:1.12;letter-spacing:-.045em;margin:0 0 25px}.case-section p{font-size:17px;line-height:1.75;margin:0 0 18px;max-width:780px}.ownership{padding:30px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.ownership h2{font-size:12px;letter-spacing:0;margin-bottom:16px;color:#65705f}.ownership p{font-size:20px;line-height:1.55;margin:0}.case-figure{margin:60px -2vw 70px}.case-figure img{display:block;width:100%;height:auto}.case-figure figcaption{font-size:12px;color:#5e665c;line-height:1.6;margin:14px 2vw 0;max-width:620px}.phone-pair{display:flex;flex-wrap:wrap;justify-content:center;gap:20px;background:#e4e6d7;padding:40px}.phone-pair img{width:30%;max-height:550px;object-fit:contain}.phone-pair figcaption{flex-basis:100%}.rule-list article,.decision-notes article{padding:26px 0;border-top:1px solid var(--line)}.rule-list h3{font-size:21px;font-weight:450;letter-spacing:-.025em;margin:0 0 12px}.rule-list article p{font-size:15px;line-height:1.65;margin:0}.decision-notes{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-bottom:70px}.decision-notes p{font-size:15px;line-height:1.6}.eyebrow,.mono{font-size:11px;letter-spacing:.02em}.note{font-size:12px;line-height:1.7;color:#626c60;padding:20px 0;border-top:1px solid var(--line)}.workflow-strip{list-style:none;padding:20px 0;margin:24px 0;display:grid;grid-template-columns:repeat(4,1fr);gap:15px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.workflow-strip li{font-size:13px;display:flex;flex-direction:column;gap:8px}.workflow-strip strong{font-weight:500}.workflow-strip span{font-size:11px}.detail-footer{margin:0 5vw;padding:70px 0 34px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-end}.detail-footer a{font-size:clamp(22px,3vw,40px);line-height:1.35;letter-spacing:-.03em}.detail-footer a span{color:#697c48}.detail-footer>span{font-size:11px}.next-case{display:block;text-align:left;border-top:1px solid var(--line);width:90%;margin:0 auto 70px;padding:40px 0}.next-case span{font-size:11px;display:block;margin-bottom:12px}.next-case strong{font-size:48px;font-weight:450;letter-spacing:-2px}.zoom-proxy{position:fixed;z-index:20;object-fit:cover;pointer-events:none;transform-origin:center;will-change:width,height,left,top}.zoom-scrim{position:fixed;inset:0;background:var(--paper);z-index:9;pointer-events:none}
.info-content{padding:60px 7vw 80px;max-width:1440px;margin:auto}.interior-hero{padding:10px 0 80px}.interior-hero h1{font-size:clamp(50px,7vw,100px);font-weight:450;letter-spacing:-.055em;line-height:1.03;max-width:900px;margin:24px 0 35px}.interior-hero p:not(.eyebrow){font-size:23px;line-height:1.5;max-width:700px}.intro-actions{display:flex;gap:24px;margin:30px 0}.intro-actions a,.info-content .pill{font-size:13px;border-bottom:1px solid var(--ink);padding:13px 0;display:inline-block}.about-profile{display:grid;grid-template-columns:1fr 1fr;gap:6vw;align-items:center;margin-bottom:100px}.about-profile img{width:100%;display:block}.about-profile figure{margin:0}.about-profile figcaption{font-size:11px;margin-top:10px}.about-profile h2,.info-content h2{font-size:40px;font-weight:450;letter-spacing:-1.5px;line-height:1.1;margin:15px 0 25px}.info-content p{font-size:17px;line-height:1.7}.info-content>section:not(.interior-hero){margin-bottom:90px}.info-content h3{font-size:22px;font-weight:450;letter-spacing:-.02em;margin:15px 0}.principle-grid,.timeline{display:grid;grid-template-columns:repeat(2,1fr);gap:25px;margin-top:35px}.principle-grid article,.timeline article{border-top:1px solid var(--line);padding-top:20px}.resume-layout{display:grid;grid-template-columns:1fr 1.5fr;gap:8vw}.resume-section{margin-bottom:60px}.resume-layout .reading h2{font-size:28px;letter-spacing:-.03em}.resume-layout p{font-size:15px}.contact-content{padding:13vh 7vw 8vh;min-height:calc(100vh - 330px)}.contact-content .eyebrow{margin-bottom:30px}.contact-content h1{font-size:clamp(55px,8.5vw,130px);font-weight:450;line-height:1.05;letter-spacing:-.065em;margin:0 0 50px}.email-link{display:inline-block;font-size:clamp(18px,3vw,38px);letter-spacing:-.03em;border-bottom:1px solid #263c2970;padding-bottom:8px}.contact-actions{display:flex;gap:30px;align-items:center;margin:24px 0 65px;font-size:12px}.contact-actions button{padding:10px 0;border-bottom:1px solid var(--ink)}.contact-socials{display:flex;gap:24px;font-size:13px}#tuner{position:fixed;z-index:1000;right:24px;top:100px;width:230px;padding:20px;background:var(--paper);font-size:12px;box-shadow:0 4px 30px #0002}#tuner label{display:block;margin:15px 0}#tuner input{width:100%}#tuner button{border:1px solid #ccc;padding:6px;margin:3px}body.dragging .project-hover{opacity:0}.error-fallback{display:none}
@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:1700px){.project-caption{top:73.5%}}@media(max-height:700px) and (min-width:700px){.gallery-kicker{top:19%}.project-caption{top:72%}.project-caption h1{font-size:25px}.project-caption p{font-size:11px}.read-project{margin-top:5px}.work-footer{bottom:18px}.site-header{padding-top:24px}.gallery-kicker{font-size:10px}}
@media(max-width:700px){.site-header{padding:24px 21px}.brand{font-size:21px}.site-header nav{gap:18px;font-size:12px}.brand-dot{font-size:8px}.gallery-kicker{top:24%;width:82%;font-size:10px}.open-project{left:8%;top:31%;width:84%;height:30%}.project-hover{display:none}.project-caption{top:65%;max-width:90%}.project-caption h1{font-size:31px}.project-caption p{font-size:12px}.read-project{margin-top:16px}.work-footer{left:22px;right:22px;bottom:25px;align-items:flex-end}.identity{font-size:10px;line-height:1.5;gap:6px}.motion-help>span{display:none}.project-controls{bottom:55px}.motion-help button{width:27px;height:27px}.detail-tools{padding:0 22px}.detail-kind{display:none}#detail-view{padding-top:97px}.case-hero{padding:35px 22px 0}.case-hero-top{display:block;margin-bottom:30px}.case-hero h1{font-size:60px;margin-bottom:24px}.case-hero-top p{font-size:15px;max-width:100%}.case-hero-image{aspect-ratio:1.15;object-fit:cover}.case-hero-label{font-size:10px;gap:15px}.case-body{display:block;padding:60px 22px}.case-facts{position:static;display:grid;grid-template-columns:1fr 1fr;gap:10px 25px;margin-bottom:45px}.case-jumps{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:20px;margin-bottom:10px}.fact{padding-bottom:15px}.case-section{margin-bottom:50px}.case-section p{font-size:16px}.ownership p{font-size:18px}.case-figure{margin:40px 0}.phone-pair{padding:20px 10px;gap:10px}.phone-pair img{width:42%}.decision-notes{gap:20px;margin-bottom:45px}.workflow-strip{grid-template-columns:1fr 1fr}.detail-footer{padding-top:40px;gap:25px;align-items:flex-start}.detail-footer a{font-size:23px}.detail-footer>span{font-size:9px;white-space:nowrap}.next-case{margin-bottom:45px}.next-case strong{font-size:36px}.info-content{padding:30px 22px}.interior-hero{padding-bottom:40px}.interior-hero h1{font-size:52px}.interior-hero p:not(.eyebrow){font-size:18px}.about-profile,.resume-layout{display:block}.about-profile figure{margin-bottom:35px}.info-content h2{font-size:32px}.info-content p{font-size:16px}.principle-grid,.timeline{grid-template-columns:1fr}.resume-layout .reading{margin-bottom:45px}.contact-content{padding:12vh 22px 8vh}.contact-content h1{font-size:57px}.contact-socials{gap:20px;font-size:12px}.contact-actions{margin-bottom:50px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.001ms!important;transition-duration:.001ms!important}.loading{display:none}}

/* Final scene tuning. Keep the DOM controls above the visual-only canvases. */
#landscape,#gallery{pointer-events:none}#work-view{pointer-events:auto}.project-caption{color:#fffdee;text-shadow:0 1px 12px #17300d90}.project-index{color:#f6f4d9}.read-project{border-color:#f6f4d990}.about-profile>div{min-width:0}.about-profile .portrait img{max-height:700px;object-fit:cover}.case-hero-image{scroll-margin-top:100px}
html,body{height:100%}body.detail-open{height:auto;min-height:100%}
@media(max-width:700px){.case-hero-image{aspect-ratio:1.6;object-fit:contain}}

/* Cursor tile: replaces the mouse only while it is over a project. */
.cursor-tile{position:fixed;left:0;top:0;z-index:40;pointer-events:none;width:0;height:0}
.cursor-tile-inner{position:absolute;left:-51px;top:-51px;width:102px;height:102px;border-radius:50%;background:#f5f3eaeb;color:#233529;display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;white-space:nowrap;backdrop-filter:blur(9px);box-shadow:0 8px 30px #1a2e1a26;opacity:0;transform:scale(.4);transition:opacity .2s,transform .35s var(--ease)}
.cursor-tile.show .cursor-tile-inner{opacity:1;transform:scale(1)}
body.dragging .cursor-tile .cursor-tile-inner{transform:scale(.85)}
body.on-project,body.on-project *{cursor:none!important}
body.on-project .project-hover{opacity:0!important}
@media(hover:none){.cursor-tile{display:none}}
@media(max-width:700px){.case-hero-image{border-radius:12px}}

/* Name wordmark keeps the Madimi One typeface from the live site. */
.brand{font-family:'Madimi One',Instrument,sans-serif;font-weight:400;font-size:27px;letter-spacing:-.035em}
@media(max-width:700px){.brand{font-size:23px}}
