:root{--bg: #111214;--bg-2: #17181b;--text: #e6e6e6;--muted: #8a8d93;--dim: #5c5f66;--line: rgba(255, 255, 255, .1);--line-strong: rgba(255, 255, 255, .22);--glass-bg: rgba(255, 255, 255, .06);--glass-border: rgba(255, 255, 255, .14);--blur: 16px;--radius: 14px;--font: "Atkinson Hyperlegible", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}.bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px) 0 0 / 100% 64px,linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px) 0 0 / 64px 100%,radial-gradient(900px 600px at 15% 20%,#202226 0%,transparent 60%),radial-gradient(800px 600px at 85% 80%,#1b1c20 0%,transparent 60%),var(--bg)}.bg:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:.08;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");pointer-events:none}.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:16px 32px;font-size:.85rem;border-bottom:1px solid var(--line);background:#1112148c;backdrop-filter:blur(var(--blur));-webkit-backdrop-filter:blur(var(--blur))}.nav-brand{color:var(--text);font-weight:600}.nav-links{display:flex;gap:28px;color:var(--muted)}.nav-links a:hover{color:var(--text)}.hero{min-height:100vh;display:flex;align-items:center;padding:120px 32px 80px;position:relative;max-width:1180px;margin:0 auto}.hero-inner{display:flex;align-items:center;gap:48px;animation:rise .8s cubic-bezier(.2,.8,.2,1) both}.logo{width:180px;height:180px;flex:0 0 auto;border-radius:28px;object-fit:cover;border:1px solid var(--line-strong);box-shadow:0 20px 60px #00000080,inset 0 1px #ffffff26}.hello{color:var(--muted);font-size:.95rem;margin-bottom:6px}.name{font-size:clamp(2.6rem,7vw,5.2rem);font-weight:700;line-height:1;letter-spacing:-.03em}.bio{color:var(--muted);font-size:.95rem;margin-top:14px}.scroll-hint{position:absolute;bottom:28px;left:32px;color:var(--dim);font-size:.8rem;animation:bob 1.8s ease-in-out infinite}@keyframes bob{50%{transform:translateY(6px)}}@keyframes rise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.projects{max-width:1180px;margin:0 auto;padding:40px 32px 120px}.section-head{text-align:left;margin-bottom:36px;padding-bottom:16px;border-bottom:1px solid var(--line)}.section-head h2{font-size:clamp(1.4rem,3vw,2rem);font-weight:600;letter-spacing:-.01em}.section-head p{color:var(--dim);margin-top:4px;font-size:.9rem}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.card{position:relative;display:block;aspect-ratio:4 / 3;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line-strong);background:var(--bg-2);box-shadow:0 20px 50px #00000073;opacity:0;transform:translateY(20px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.2,1),border-color .3s}.card.in{opacity:1;transform:translateY(0)}.card.in:hover{transform:translateY(-4px);border-color:#fff6;transition:opacity .7s ease,transform .35s cubic-bezier(.2,.8,.2,1),border-color .3s}.card img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.8,.2,1)}.card:hover img{transform:scale(1.04)}.card-overlay{position:absolute;left:0;right:0;bottom:0;height:25%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 18px;background:#111214b8;border-top:1px solid var(--glass-border);backdrop-filter:blur(var(--blur)) saturate(120%);-webkit-backdrop-filter:blur(var(--blur)) saturate(120%);box-shadow:inset 0 1px #ffffff1a}.card-title{font-weight:600;font-size:1rem;position:relative;text-shadow:0 1px 6px rgba(0,0,0,.6)}.card-tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.tag{font-size:.68rem;padding:2px 8px;border-radius:4px;color:var(--text);background:#111214d9;border:1px solid rgba(255,255,255,.28);white-space:nowrap}.card-arrow{position:absolute;top:12px;right:12px;width:34px;height:34px;border-radius:8px;display:grid;place-items:center;background:#14151880;border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;transform:translate(-4px,4px);transition:opacity .3s,transform .3s}.card:hover .card-arrow{opacity:1;transform:none}.contact{border-top:1px solid var(--line);padding:60px 32px 48px}.contact-inner{max-width:1180px;margin:0 auto}.contact h2{font-size:1.4rem;font-weight:600;margin-bottom:14px}.mail{color:var(--text);border-bottom:1px solid var(--line-strong)}.mail:hover{border-bottom-color:var(--text)}.socials{display:flex;gap:24px;margin-top:18px;color:var(--muted);font-size:.9rem}.socials a:hover{color:var(--text)}.copy{color:var(--dim);font-size:.8rem;margin-top:40px}@media(max-width:640px){.nav{padding:14px 20px}.hero{padding:100px 20px 80px}.hero-inner{flex-direction:column;align-items:flex-start;gap:28px}.logo{width:120px;height:120px;border-radius:20px}.scroll-hint{left:20px}.projects,.contact{padding-left:20px;padding-right:20px}.grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.card{opacity:1;transform:none}}.project-backdrop{position:absolute;top:0;left:0;right:0;height:78vh;min-height:480px;z-index:-1;overflow:hidden;pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 35%,rgba(0,0,0,0) 100%);mask-image:linear-gradient(to bottom,#000,#000 35%,#0000)}.project-backdrop img{width:100%;height:100%;object-fit:cover;object-position:center top;filter:grayscale(.35) contrast(1.05) brightness(.85);opacity:0;transform:scale(1.04);transition:opacity 1s ease,transform 1.6s cubic-bezier(.2,.8,.2,1)}.project-backdrop img.loaded{opacity:1;transform:none}.project-backdrop:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,#1112148c,#11121440 40%,#111214d9)}.page-project{position:relative}.project{position:relative;max-width:1180px;margin:0 auto;padding:52vh 32px 100px;animation:rise .8s cubic-bezier(.2,.8,.2,1) both}.back{display:inline-block;color:var(--muted);font-size:.85rem;margin-bottom:28px;padding:6px 12px;border:1px solid var(--line);border-radius:8px;background:#11121473;backdrop-filter:blur(var(--blur));-webkit-backdrop-filter:blur(var(--blur))}.back:hover{color:var(--text);border-color:var(--line-strong)}.project-head{max-width:820px}.project-meta{color:var(--muted);font-size:.9rem;margin-bottom:10px}.project-title{font-size:clamp(2.4rem,6vw,4.4rem);font-weight:700;line-height:1;letter-spacing:-.03em;margin-bottom:18px}.project-summary{color:var(--text);font-size:1.05rem;max-width:640px;margin-bottom:18px}.project-tags{display:flex;gap:8px;flex-wrap:wrap}.project-body{display:grid;grid-template-columns:minmax(0,2fr) minmax(220px,1fr);gap:48px;margin-top:56px;padding-top:40px;border-top:1px solid var(--line)}.project-desc p{color:var(--muted);margin-bottom:18px;max-width:68ch}.project-desc p:first-child{color:var(--text)}.project-side dl{font-size:.9rem}.project-side dt{color:var(--dim);margin-bottom:4px}.project-side dd{margin-bottom:22px;color:var(--text)}.project-links{list-style:none}.project-links a{color:var(--text);border-bottom:1px solid var(--line-strong)}.project-links a:hover{border-bottom-color:var(--text)}.project-notfound{padding-top:10vh}.project-notfound h1{font-size:4rem;line-height:1;margin-bottom:8px}.project-notfound p{color:var(--muted);margin-bottom:24px}@media(max-width:760px){.project{padding:44vh 20px 80px}.project-backdrop{height:64vh;min-height:380px}.project-body{grid-template-columns:1fr;gap:28px}}.project-desc p:last-of-type{color:var(--dim);font-size:.9rem}.project-highlights{margin-top:48px}.project-highlights h2{font-size:1.1rem;font-weight:600;margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid var(--line)}.project-highlights ul{list-style:none;display:grid;gap:14px}.project-highlights li{padding:16px 18px;border:1px solid var(--line);border-radius:10px;background:#ffffff08}.project-highlights li:hover{border-color:var(--line-strong)}.project-highlights h3{font-size:.95rem;font-weight:600;margin-bottom:6px}.project-highlights li p{color:var(--muted);font-size:.9rem;margin:0;max-width:none}.project-desc .project-highlights p:last-of-type{color:var(--muted);font-size:.9rem}.project-stack{list-style:none;display:flex;flex-wrap:wrap;gap:6px}.project-gallery{margin-top:48px}.project-gallery h2{font-size:1.1rem;font-weight:600;margin-bottom:4px}.project-gallery-hint{color:var(--dim);font-size:.85rem;margin-bottom:18px}.project-desc .project-gallery-hint{color:var(--dim);font-size:.85rem;max-width:none}.hover-gif{margin:0 0 26px;cursor:pointer}.hover-gif-frame{position:relative;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line-strong);background:var(--bg-2);box-shadow:0 20px 50px #00000073;transition:border-color .3s,transform .35s cubic-bezier(.2,.8,.2,1)}.hover-gif:hover .hover-gif-frame{border-color:#fff6;transform:translateY(-3px)}.hover-gif-poster,.hover-gif-anim{display:block;width:100%;height:auto}.hover-gif-poster{filter:grayscale(.6) contrast(1.02);transition:filter .4s}.hover-gif.playing .hover-gif-poster{filter:none}.hover-gif-anim{position:absolute;top:0;right:0;bottom:0;left:0;height:100%;object-fit:cover}.hover-gif-badge{position:absolute;top:12px;right:12px;font-size:.7rem;padding:4px 9px;border-radius:6px;color:var(--muted);background:#14151899;border:1px solid var(--glass-border);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.hover-gif.playing .hover-gif-badge{color:#e6e6e6}.hover-gif figcaption{color:var(--dim);font-size:.85rem;margin-top:10px}.project-desc .hover-gif figcaption{max-width:none}.pitch{border-top:1px solid var(--line);padding:90px 32px}.pitch-inner{max-width:1180px;margin:0 auto}.pitch-head{max-width:640px;margin-bottom:44px}.pitch-head h2{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:700;letter-spacing:-.02em;margin-bottom:12px}.pitch-head p{color:var(--muted);font-size:1.05rem}.pitch-steps{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-bottom:36px}.pitch-steps li{position:relative;padding:26px 22px 24px;border:1px solid var(--line);border-radius:var(--radius);background:var(--glass-bg);backdrop-filter:blur(var(--blur));-webkit-backdrop-filter:blur(var(--blur));box-shadow:inset 0 1px #ffffff14;transition:border-color .3s,transform .35s cubic-bezier(.2,.8,.2,1)}.pitch-steps li:hover{border-color:var(--line-strong);transform:translateY(-3px)}.pitch-num{display:inline-block;color:var(--dim);font-size:.85rem;font-weight:700;letter-spacing:.06em;margin-bottom:12px}.pitch-steps h3{font-size:1.05rem;font-weight:700;margin-bottom:8px}.pitch-steps p{color:var(--muted);font-size:.95rem}.pitch-cta{display:inline-flex;align-items:center;padding:14px 24px;border-radius:999px;font-weight:700;color:#0b0c0e;background:var(--text);border:1px solid transparent;transition:transform .2s,box-shadow .2s,background .2s}.pitch-cta:hover{transform:translateY(-2px);background:#fff;box-shadow:0 10px 30px #ffffff1f}@media(max-width:760px){.pitch{padding:64px 20px}.pitch-steps{grid-template-columns:1fr}}.socials button.wa{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}.socials button.wa:hover{color:var(--text)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:20px;background:#08090bb8;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:fadeIn .2s ease both}.modal{position:relative;width:min(420px,100%);padding:28px 28px 24px;border-radius:var(--radius);background:var(--bg-2);border:1px solid var(--line-strong);box-shadow:0 30px 80px #0009,inset 0 1px #ffffff14;text-align:center;animation:pop .25s cubic-bezier(.2,.8,.2,1) both}.modal h3{font-size:1.2rem;font-weight:700;margin-bottom:6px}.modal p{color:var(--muted);font-size:.95rem;margin-bottom:18px}.modal-qr{display:block;width:260px;max-width:100%;margin:0 auto 4px;border-radius:12px;background:#fff;padding:10px}.modal-close{position:absolute;top:10px;right:10px;width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:transparent;color:var(--muted);font-size:1.1rem;cursor:pointer}.modal-close:hover{color:var(--text);border-color:var(--line-strong)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
