:root{--green-dark:#4a6741;--green-mid:#7a9e70;--cream:#f2ede3;--sand:#c8bc9e;--ink:#1c2118;--ink-muted:#7a7a72;--white:#fafaf8}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-snap-type:y mandatory}body{background:var(--white);color:var(--ink);font-family:Space Mono,monospace;overflow-x:hidden}#hero{scroll-snap-align:start;background:var(--white);height:100vh;position:relative;overflow:hidden}#dot-canvas{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;inset:0}.top-bar{z-index:10;justify-content:space-between;align-items:flex-start;padding:28px 36px;display:flex;position:absolute;top:0;left:0;right:0}.logo{letter-spacing:-.01em;color:var(--ink);font-size:16px;font-weight:700}.top-right{text-align:right;color:#bbb;letter-spacing:.12em;text-transform:uppercase;font-size:9px;line-height:1.8}.status-dot{background:var(--green-mid);vertical-align:middle;border-radius:50%;width:5px;height:5px;margin-right:6px;animation:2.4s ease-out infinite pulse-ring;display:inline-block}@keyframes pulse-ring{0%{box-shadow:0 0 #7a9e708c}70%{box-shadow:0 0 0 7px #7a9e7000}to{box-shadow:0 0 #7a9e7000}}.top-nav{z-index:10;gap:32px;display:flex;position:absolute;top:28px;left:50%;transform:translate(-50%)}.top-nav a{letter-spacing:.15em;text-transform:uppercase;color:var(--ink);font-family:Space Mono,monospace;font-size:10px;font-weight:700;text-decoration:none;transition:color .25s,transform .25s}.top-nav a:hover{color:var(--green-dark);transform:translateY(-2px)}.side-social{z-index:10;flex-direction:column;gap:24px;display:flex;position:absolute;top:50%;left:36px;transform:translateY(-50%)}.side-social a{color:var(--ink-muted);justify-content:center;align-items:center;transition:color .25s,transform .25s;display:flex}.side-social a:hover{color:var(--green-dark);transform:scale(1.1)}.side-social svg{width:22px;height:22px}.side-right{letter-spacing:.2em;text-transform:uppercase;color:#c8c8c8;writing-mode:vertical-rl;z-index:10;font-size:8px;position:absolute;bottom:80px;right:36px}.hero-center{text-align:center;z-index:10;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-type{letter-spacing:-.01em;color:var(--ink);white-space:nowrap;font-size:clamp(16px,2.2vw,26px);font-weight:400}.hero-coords{letter-spacing:.18em;color:#d0d0c8;text-transform:uppercase;height:12px;margin-top:22px;font-family:Space Mono,monospace;font-size:8px;transition:color .3s}@keyframes blink{50%{opacity:0}}.bottom-bar{z-index:10;justify-content:space-between;align-items:flex-end;padding:24px 36px;display:flex;position:absolute;bottom:0;left:0;right:0}.bottom-hint{letter-spacing:.18em;text-transform:uppercase;color:#ccc;align-items:center;gap:10px;font-size:8px;display:flex}.bottom-hint:before{content:"";background:#ddd;width:28px;height:1px;display:block}.bottom-date{color:#ccc;letter-spacing:.1em;font-size:9px}.hero-rule{pointer-events:none;z-index:2;background:#eee;height:1px;position:absolute;bottom:42%;left:80px;right:80px}.bracket{z-index:10;pointer-events:none;width:18px;height:18px;position:absolute}.bracket-tl{border-top:1px solid #ddd;border-left:1px solid #ddd;top:68px;left:68px}.bracket-tr{border-top:1px solid #ddd;border-right:1px solid #ddd;top:68px;right:68px}.bracket-bl{border-bottom:1px solid #ddd;border-left:1px solid #ddd;bottom:68px;left:68px}.bracket-br{border-bottom:1px solid #ddd;border-right:1px solid #ddd;bottom:68px;right:68px}#works{background:var(--cream);scroll-snap-align:start;flex-direction:column;justify-content:center;min-height:100vh;padding:80px 120px;display:flex;position:relative}.wm{color:#0000;-webkit-text-stroke:1px #4a674112;pointer-events:none;-webkit-user-select:none;user-select:none;font-family:Playfair Display,serif;font-size:clamp(100px,15vw,180px);font-weight:900;line-height:1;position:absolute;bottom:-20px;right:-20px}.works-header{justify-content:space-between;align-items:flex-end;margin-bottom:72px;display:flex}.works-eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--green-mid);margin-bottom:14px;font-size:9px}.works-title{letter-spacing:-.03em;color:var(--ink);font-family:Playfair Display,serif;font-size:clamp(38px,4.5vw,58px);font-weight:700;line-height:1.05}.works-count{letter-spacing:.18em;color:var(--sand);text-transform:uppercase;border-top:1px solid var(--sand);padding-top:8px;font-size:9px}.project-list{flex-direction:column;display:flex}.project-row{cursor:pointer;border-top:1px solid #4a67411a;grid-template-columns:52px 1fr 180px 32px;align-items:center;gap:28px;padding:26px 0;transition:padding-left .3s;display:grid;position:relative}.project-row:last-child{border-bottom:1px solid #4a67411a}.project-row:after{content:"";background:var(--green-dark);transform-origin:bottom;width:2px;transition:transform .35s cubic-bezier(.4,0,.2,1);position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.project-row:hover{padding-left:10px}.project-row:hover:after{transform:scaleY(1)}.p-num{color:var(--sand);letter-spacing:.12em;font-size:10px}.p-name{color:var(--ink);letter-spacing:-.02em;font-family:Playfair Display,serif;font-size:clamp(20px,2.2vw,28px);font-weight:700}.p-meta{color:var(--ink-muted);letter-spacing:.05em;margin-top:3px;font-size:10px}.p-tags{flex-wrap:wrap;gap:6px;display:flex}.p-tag{color:var(--green-dark);letter-spacing:.1em;text-transform:uppercase;border:1px solid #4a674140;padding:3px 10px;font-size:8px}.p-arrow{color:var(--sand);justify-self:end;font-size:16px;transition:transform .2s,color .2s}.project-row:hover .p-arrow{color:var(--green-dark);transform:translate(3px,-3px)}#about{background:var(--green-dark);scroll-snap-align:start;grid-template-columns:1fr 1fr;align-content:center;align-items:center;gap:100px;min-height:100vh;padding:80px 120px;display:grid;position:relative}#about:before{content:"yo.";color:#0000;-webkit-text-stroke:1px #f2ede30d;pointer-events:none;font-family:Playfair Display,serif;font-size:clamp(120px,18vw,220px);font-weight:900;line-height:1;position:absolute;bottom:-40px;left:-10px}.about-left{z-index:1;position:relative}.a-eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--green-mid);margin-bottom:24px;font-size:9px}.a-heading{color:var(--cream);letter-spacing:-.03em;font-family:Playfair Display,serif;font-size:clamp(38px,4vw,58px);font-weight:700;line-height:1.08}.a-heading em{color:var(--green-mid);font-style:italic}.about-right{z-index:1;position:relative}.a-body{color:#f2ede399;margin-bottom:52px;font-family:Inter,sans-serif;font-size:16px;font-weight:300;line-height:1.82}.a-stats{grid-template-columns:1fr 1fr;gap:28px;display:grid}.a-stat{border-top:1px solid #f2ede31a;padding-top:20px}.a-num{color:var(--cream);letter-spacing:-.04em;font-family:Playfair Display,serif;font-size:48px;font-weight:900;line-height:1}.a-label{color:#f2ede359;letter-spacing:.12em;text-transform:uppercase;margin-top:6px;font-size:9px}.stack-row{flex-wrap:wrap;gap:8px;margin-top:48px;display:flex}.stack-pill{letter-spacing:.1em;text-transform:uppercase;color:#f2ede380;border:1px solid #f2ede326;padding:6px 14px;font-size:9px;transition:border-color .2s,color .2s}.stack-pill:hover{border-color:var(--green-mid);color:var(--green-mid)}#contact{background:var(--cream);text-align:center;scroll-snap-align:start;flex-direction:column;justify-content:center;align-items:center;gap:20px;min-height:100vh;padding:80px 0;display:flex;position:relative}#contact:before{content:"Hello.";color:#0000;-webkit-text-stroke:1px #4a67410f;pointer-events:none;white-space:nowrap;font-family:Playfair Display,serif;font-size:clamp(100px,16vw,200px);font-weight:900;position:absolute}.c-eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--green-mid);z-index:1;font-size:9px;position:relative}.c-title{letter-spacing:-.04em;color:var(--ink);z-index:1;font-family:Playfair Display,serif;font-size:clamp(46px,6vw,80px);font-weight:900;line-height:1;position:relative}.c-sub{color:var(--ink-muted);z-index:1;max-width:380px;font-family:Inter,sans-serif;font-size:15px;font-weight:300;line-height:1.7;position:relative}.c-email{color:var(--green-dark);letter-spacing:.06em;border-bottom:1px solid var(--green-mid);z-index:1;padding-bottom:2px;font-size:13px;text-decoration:none;transition:color .2s;position:relative}.c-email:hover{color:var(--ink)}.c-btn{background:var(--green-dark);color:var(--cream);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;z-index:1;border:none;margin-top:12px;padding:16px 48px;font-family:Space Mono,monospace;font-size:10px;transition:transform .2s,box-shadow .2s;position:relative}.c-btn:hover{transform:translateY(-2px);box-shadow:0 10px 28px #4a674140}footer{z-index:100;mix-blend-mode:multiply;pointer-events:none;justify-content:space-between;align-items:center;padding:14px 36px;display:flex;position:fixed;bottom:0;left:0;right:0}.f-copy{color:#ccc;letter-spacing:.1em;font-size:8px}.f-links{gap:20px;display:flex}.f-links a{color:#ccc;letter-spacing:.1em;text-transform:uppercase;pointer-events:all;font-size:8px;text-decoration:none;transition:color .2s}.f-links a:hover{color:var(--green-dark)}.nav-dots{z-index:200;flex-direction:column;gap:10px;display:flex;position:fixed;top:50%;right:20px;transform:translateY(-50%)}.dot{cursor:pointer;background:#ccc;border-radius:50%;width:5px;height:5px;transition:background .3s,transform .3s}.dot.active{background:var(--green-dark);transform:scale(1.5)}@media (width<=768px){.top-bar{padding:20px 24px}.top-nav{justify-content:center;gap:16px;width:100%;top:70px}.top-nav a{font-size:9px}.side-social{gap:16px;left:16px}.side-social svg{width:18px;height:18px}.hero-type{font-size:clamp(14px,4.5vw,20px)}.bottom-bar{padding:20px 24px}.bracket-tl{top:30px;left:30px}.bracket-tr{top:30px;right:30px}.bracket-bl{bottom:30px;left:30px}.bracket-br{bottom:30px;right:30px}.side-right{display:none}#works{padding:80px 24px}.works-header{flex-direction:column;align-items:flex-start;gap:16px;margin-bottom:40px}.wm{font-size:clamp(60px,20vw,100px);bottom:0;right:-10px}.project-row{grid-template-columns:36px 1fr 24px;gap:12px}.p-tags{grid-column:2/3;margin-top:-4px}#about{grid-template-columns:1fr;gap:40px;padding:80px 24px}#about:before{font-size:clamp(80px,25vw,120px);bottom:0}.a-stats{grid-template-columns:1fr 1fr;gap:16px}#contact{padding:80px 24px}#contact:before{font-size:clamp(60px,20vw,120px)}.c-title{font-size:clamp(32px,8vw,46px)}.nav-dots{display:none}footer{justify-content:center;padding:14px 24px}}
