*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}img{display:block;max-width:100%}a{text-decoration:none;color:inherit}html{scroll-behavior:smooth}:root{--bg: #F8F7F4;--surface: #FFFFFF;--card-bg: #EDECEA;--text-1: #1A1A1A;--text-2: #555555;--text-3: #999999;--border: #E8E6E0;--font: "Inter", sans-serif;--ease: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(0, 0, .2, 1)}body{cursor:none}#cursor{position:fixed;width:8px;height:8px;background:var(--text-1);border-radius:50%;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);transition:transform .1s var(--ease),width .25s var(--ease),height .25s var(--ease),background .25s var(--ease),opacity .3s;will-change:left,top}#cursor-ring{position:fixed;width:36px;height:36px;border:1.5px solid rgba(26,26,26,.25);border-radius:50%;pointer-events:none;z-index:9998;transform:translate(-50%,-50%);transition:width .35s var(--ease),height .35s var(--ease),border-color .25s,opacity .3s;will-change:left,top}body.cursor-hover #cursor{width:14px;height:14px;background:var(--text-1)}body.cursor-hover #cursor-ring{width:52px;height:52px;border-color:#1a1a1a1f}body.cursor-card #cursor{width:60px;height:60px;background:var(--text-1);mix-blend-mode:normal}body.cursor-card #cursor-ring{opacity:0}#cursor-label{position:fixed;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);font-family:var(--font);font-size:13px;font-weight:500;color:#fff;letter-spacing:.04em;opacity:0;transition:opacity .2s var(--ease);white-space:nowrap}body.cursor-card #cursor-label{opacity:1}body{font-family:var(--font);background:var(--bg);color:var(--text-1);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:clip}.page-fade{animation:fadeIn .5s var(--ease)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}nav{display:flex;justify-content:space-between;align-items:center;padding:28px 48px;position:sticky;top:0;z-index:100;background:var(--bg);transition:box-shadow .3s var(--ease),backdrop-filter .3s}nav.scrolled{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:#f8f7f4d9;box-shadow:0 1px 0 var(--border)}.nav-logo{font-size:15px;font-weight:500;color:var(--text-1);letter-spacing:-.01em;position:relative}.nav-links{display:flex;gap:32px}.nav-links a{font-size:15px;color:var(--text-3);letter-spacing:.01em;position:relative;padding-bottom:2px}.nav-links a:after{content:"";position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--text-1);transition:width .25s var(--ease)}.nav-links a:hover{color:var(--text-1)}.nav-links a:hover:after{width:100%}.hero{padding:88px 48px 72px;max-width:760px}.hero-eyebrow{font-size:15px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);margin-bottom:20px;opacity:0;transform:translateY(10px);animation:heroLine .6s var(--ease-out) .1s forwards}.hero h1{font-size:48px;font-weight:500;color:var(--text-1);line-height:1.1;letter-spacing:-.03em;margin-bottom:20px;opacity:0;transform:translateY(12px);animation:heroLine .6s var(--ease-out) .25s forwards}.hero p{font-size:17px;color:var(--text-2);line-height:1.65;max-width:520px;opacity:0;transform:translateY(10px);animation:heroLine .6s var(--ease-out) .4s forwards}@keyframes heroLine{to{opacity:1;transform:translateY(0)}}.work{padding:0 48px 96px}.section-label{font-size:15px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);margin-bottom:28px;padding-top:48px;border-top:1px solid var(--border)}.project-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}.project-grid>.project-card{grid-column:span 2}.project-grid>.project-card:nth-child(1),.project-grid>.project-card:nth-child(2){grid-column:span 3}.project-card{position:relative;overflow:hidden;background:var(--card-bg);display:block;opacity:0;transform:translateY(20px);transition:opacity .55s var(--ease-out),transform .55s var(--ease-out)}.project-card.featured{grid-column:1 / -1}.project-card.visible{opacity:1;transform:translateY(0)}.project-card img,.project-card .img-placeholder{width:100%;display:block;transition:transform .5s var(--ease)}.project-card.featured img,.project-card.featured .img-placeholder{aspect-ratio:16 / 7;object-fit:cover}.project-card:not(.featured) img,.project-card:not(.featured) .img-placeholder{aspect-ratio:4 / 3;object-fit:cover}.project-grid>.project-card:nth-child(1) img,.project-grid>.project-card:nth-child(1) .img-placeholder,.project-grid>.project-card:nth-child(2) img,.project-grid>.project-card:nth-child(2) .img-placeholder{aspect-ratio:2 / 1}.img-placeholder{background:var(--card-bg)}.card-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,#0a0a0af5,#0a0a0adb);opacity:0;transition:opacity .3s var(--ease);display:flex;flex-direction:column;justify-content:flex-end;padding:28px}.card-overlay-inner{transform:translateY(10px);transition:transform .3s var(--ease)}.project-card:hover .card-overlay{opacity:1}.project-card:hover .card-overlay-inner{transform:translateY(0)}.project-card:hover img,.project-card:hover .img-placeholder{transform:scale(1.03)}.card-overlay h3{font-size:18px;font-weight:500;color:#fff;letter-spacing:-.01em;margin-bottom:4px}.card-overlay p{font-size:15px;color:#ffffff8c;margin:0}.badge{position:absolute;top:20px;left:20px;z-index:1;display:inline-block;font-size:15px;padding:3px 10px;background:#ffffff1f;color:#ffffffbf;border-radius:100px;border:1px solid rgba(255,255,255,.18)}.card-year{font-size:14px;font-weight:400;color:#ffffff8c;letter-spacing:.02em;margin-right:8px}.card-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.card-tag{font-size:15px;padding:3px 10px;border-radius:100px;background:transparent;color:#ffffffd9;border:1px solid rgba(255,255,255,.3);white-space:nowrap}.meta-row{display:flex;gap:8px;align-items:center;padding:20px 0 0;font-size:15px;color:var(--text-3)}.meta-row span.dot{color:var(--border)}.about-hero{padding:72px 48px 24px;max-width:760px}.about-hero .eyebrow{font-size:15px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);margin-bottom:16px}.about-hero h1{font-size:48px;font-weight:500;letter-spacing:-.03em;line-height:1.1;margin-bottom:20px}.about-hero .lead{font-size:19px;color:var(--text-2);line-height:1.6;max-width:600px}.about-body{padding:32px 48px 96px;max-width:760px}.about-body p{font-size:16px;color:var(--text-2);line-height:1.75;margin-bottom:1.2rem}.about-body p strong{color:var(--text-1);font-weight:500}.about-body .section-label{font-size:15px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);margin:56px 0 16px;padding-top:0;border-top:none}.divider{border:none;border-top:1px solid var(--border);margin:48px 0}.portrait{width:100%;background:var(--card-bg);border-radius:12px;aspect-ratio:16 / 9;margin:8px 0 0}ul.clean{list-style:none;padding:0;margin:12px 0 24px}ul.clean li{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);font-size:16px;color:var(--text-2);line-height:1.6}ul.clean li:last-child{border-bottom:none}ul.clean li:before{content:"→";color:var(--text-3);flex-shrink:0;margin-top:1px}.detail{background:#f3f2ef;border-radius:12px;padding:20px 24px}.detail .label{font-size:15px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);margin-bottom:6px}.detail .value{font-size:15px;font-weight:500;color:var(--text-1);line-height:1.5}.about-body a.link{color:var(--text-1);position:relative;padding-bottom:2px}.about-body a.link:after{content:"";position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--text-1);transition:width .25s var(--ease)}.about-body a.link:hover:after{width:100%}.password-gate{min-height:70vh;display:flex;align-items:center;justify-content:center;padding:72px 24px}.password-card{width:100%;max-width:440px}.password-card .eyebrow{margin-bottom:16px}.password-card h1{font-size:32px;font-weight:500;letter-spacing:-.02em;line-height:1.15;margin-bottom:12px}.password-card .lead{font-size:17px;color:var(--text-2);line-height:1.6;margin-bottom:24px}.password-row{display:flex;gap:8px}.password-row input{flex:1;font-size:16px;padding:12px 16px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text-1);outline:none;transition:border-color .2s var(--ease)}.password-row input:focus{border-color:var(--text-1)}.password-row input[aria-invalid=true]{border-color:#c0392b}.password-row button{font-size:16px;font-weight:500;padding:12px 24px;border:none;border-radius:10px;background:var(--text-1);color:#fff;cursor:pointer;transition:opacity .2s var(--ease)}.password-row button:hover{opacity:.85}.password-error{font-size:15px;color:#c0392b;margin:12px 0 0}.cs-hero{padding:72px 48px 56px;max-width:1080px;margin:0 auto}.cs-hero .eyebrow{margin-bottom:16px}.cs-hero h1{font-size:48px;font-weight:500;letter-spacing:-.03em;line-height:1.1;margin-bottom:16px}.cs-hero .lead{font-size:17px;color:var(--text-2);line-height:1.65;max-width:560px;margin-bottom:24px}.eyebrow{font-size:15px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3)}.tags{display:flex;flex-wrap:wrap;gap:8px}.tag{font-size:15px;padding:4px 12px;border-radius:100px;border:1px solid var(--border);color:var(--text-3)}.tag.dark{background:var(--text-1);color:#fff;border-color:var(--text-1)}.cs-meta{display:flex;flex-wrap:wrap;gap:32px;padding:24px 48px;max-width:1080px;margin:0 auto;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.meta-item{display:flex;flex-direction:column;gap:3px}.meta-item .label{font-size:15px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3)}.meta-item .value{font-size:15px;font-weight:500;color:var(--text-1)}.cs-body{padding:0 48px 96px;max-width:1080px;margin:0 auto}.cs-body .section-label{font-size:15px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);margin:56px 0 8px;padding-top:0;border-top:none}.cs-body h2{font-size:28px;font-weight:500;letter-spacing:-.02em;line-height:1.2;margin-bottom:16px}.cs-body p{font-size:16px;color:var(--text-2);line-height:1.7;margin-bottom:1rem}.cs-body img{width:100%;border-radius:12px;margin:24px 0}.callout{border-left:2px solid var(--text-1);padding:14px 24px;margin:32px 0}.callout p{font-size:17px;font-style:italic;color:var(--text-1);margin:0;line-height:1.55}.cs-body .img-placeholder{width:100%;background:var(--card-bg);border-radius:12px;margin:24px 0}.grid{display:grid;gap:24px;align-items:start;margin:24px 0}.grid.cols-2{grid-template-columns:1fr 1fr}.grid.cols-3{grid-template-columns:1fr 1fr 1fr}.grid.cols-4{grid-template-columns:repeat(4,1fr)}.grid.ratio-2-1{grid-template-columns:2fr 1fr}.grid.ratio-1-2{grid-template-columns:1fr 2fr}.cs-body .grid>img{width:100%;max-height:none;margin:0}.cs-body .grid.phones{display:flex;flex-wrap:wrap}.cs-body .grid.phones>img{width:auto;height:440px;max-height:none}.grid>video{width:100%;border-radius:12px;display:block;background:var(--text-1)}.grid>.img-placeholder{margin:0}.grid>*>:first-child{margin-top:0}.grid>div>.info-card+.info-card{margin-top:12px}.cs-body>.section-label,.cs-body>h2,.cs-body>h3,.cs-body>p,.cs-body>ul,.cs-body>.callout,.cs-body>.status-row{max-width:66.66%}.cs-body img{width:auto;max-width:100%;max-height:440px;margin:24px 0;display:block}.cs-body img.cs-header-img{width:100%;max-height:none;margin:0 0 8px;border-radius:12px}.img-placeholder.portrait{aspect-ratio:9 / 16;min-height:0}.features-panel{background:#f3f2ef;margin:48px calc(50% - 50vw);padding:56px 0}.features-inner{max-width:1080px;margin:0 auto;padding:0 48px}.features-inner>:first-child{margin-top:0}.features-inner .grid:last-child{margin-bottom:0}.info-card{background:#f3f2ef;border-radius:12px;padding:20px 24px}.info-card h3{font-size:16px;font-weight:500;margin-bottom:6px}.info-card p{font-size:16px;color:var(--text-2);margin:0;line-height:1.6}.dev-panel{background:#f3f2ef;border:1px solid var(--border);border-radius:12px;padding:28px 32px;margin:24px 0}.dev-panel h3{font-size:16px;font-weight:500;margin-bottom:8px}.dev-panel p{font-size:16px;color:var(--text-2);margin:0;line-height:1.6}.next-project{padding-top:48px;border-top:1px solid var(--border);margin-top:48px}.next-project .np-label{font-size:15px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);margin-bottom:8px}.next-project a{font-size:19px;font-weight:500;color:var(--text-1);letter-spacing:-.01em;position:relative;display:inline-block;padding-bottom:2px}.next-project a:after{content:"";position:absolute;bottom:0;left:0;width:0;height:1px;background:var(--text-1);transition:width .25s var(--ease)}.next-project a:hover:after{width:100%}.img-placeholder.h-280{min-height:280px}.img-placeholder.h-320{min-height:320px}.img-placeholder.h-360{min-height:360px}.img-placeholder.h-400{min-height:400px}.img-placeholder.h-480{min-height:480px}.img-placeholder.dark{background:#1a1f2e}.img-placeholder.darker{background:#0d1117}.img-placeholder.light{background:#f4f4f4;border:1px solid var(--border)}.feature-num{font-size:15px;font-weight:400;color:var(--text-3);margin-right:12px;font-variant-numeric:tabular-nums}.cs-body .subhead{font-size:20px;font-weight:500;letter-spacing:-.02em;line-height:1.2;margin:32px 0 16px}.cs-body.screens .subhead{margin-top:50px}.timeline{margin:24px 0 8px}.timeline-item{position:relative;border-left:2px solid var(--border);padding:0 0 24px 24px}.timeline-item:last-child{padding-bottom:0}.timeline-dot{position:absolute;left:-5px;top:6px;width:8px;height:8px;border-radius:50%;background:var(--text-1)}.timeline-period{font-size:15px;font-weight:500;color:var(--text-1);margin-bottom:4px}.timeline-item p{margin:0}.detail.stat .value{font-size:28px;letter-spacing:-.02em;margin-bottom:4px}.detail.stat .label{margin-bottom:0}.cs-body p.outcome-note{margin-top:24px}.status-row{display:flex;align-items:center;gap:10px;margin-top:32px}.status-dot{width:7px;height:7px;border-radius:50%;background:#4caf50;flex-shrink:0}.status-text{font-size:15px;color:var(--text-3)}footer{background:var(--text-1);color:#fff;padding:56px 48px 40px}.footer-inner{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:32px}.footer-left h2{font-size:28px;font-weight:500;letter-spacing:-.02em;margin-bottom:10px}.footer-email{font-size:15px;color:#ffffff8c;display:inline-block;position:relative;transition:color .2s}.footer-email:after{content:"";position:absolute;bottom:-1px;left:0;width:0;height:1px;background:#fff9;transition:width .3s var(--ease)}.footer-email:hover{color:#fff}.footer-email:hover:after{width:100%}.footer-links{display:flex;gap:24px;align-items:center}.footer-links a{font-size:15px;color:#ffffff73;transition:color .2s;position:relative}.footer-links a:after{content:"";position:absolute;bottom:-1px;left:0;width:0;height:1px;background:#ffffff80;transition:width .25s var(--ease)}.footer-links a:hover{color:#ffffffe6}.footer-links a:hover:after{width:100%}.footer-bottom{margin-top:40px;padding-top:20px;border-top:1px solid rgba(255,255,255,.1);font-size:15px;color:#ffffff40}@media (max-width: 768px){body{cursor:auto}#cursor,#cursor-ring,#cursor-label{display:none}nav{padding:20px 24px}.hero{padding:48px 24px 40px}.hero h1{font-size:32px}.work{padding:0 24px 60px}.project-grid{grid-template-columns:1fr}.project-card.featured{grid-column:1}.project-grid>.project-card,.project-grid>.project-card:nth-child(1),.project-grid>.project-card:nth-child(2){grid-column:auto}.about-hero{padding:48px 24px 16px}.about-hero h1{font-size:32px}.about-hero .lead{font-size:17px}.about-body{padding:24px 24px 60px}.cs-hero{padding:48px 24px 40px}.cs-hero h1{font-size:32px}.cs-meta{padding:20px 24px;gap:24px}.cs-body{padding:0 24px 60px}.grid{grid-template-columns:1fr}.features-inner{padding:0 24px}.cs-body>.section-label,.cs-body>h2,.cs-body>h3,.cs-body>p,.cs-body>ul,.cs-body>.callout,.cs-body>.status-row{max-width:100%}footer{padding:40px 24px 32px}.footer-inner{flex-direction:column}}
