:root{color-scheme:dark;--bg:#0b0c0d;--surface:#121416;--surface-2:#181b1d;--ink:#f2f0e9;--muted:#9b9d98;--line:rgba(242,240,233,.14);--acid:#c8ff45;--blue:#72a7ff}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:1rem;line-height:1.5}body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(to bottom,#000,transparent 42rem)}a{color:inherit;text-decoration:none}.shell{width:min(100% - 2rem,88rem);margin-inline:auto}.skip-link{position:fixed;z-index:100;top:.6rem;left:.6rem;padding:.7rem 1rem;background:var(--acid);color:#111;transform:translateY(-150%)}.skip-link:focus{transform:none}.site-header{position:fixed;z-index:50;top:1rem;left:0;width:100%;pointer-events:none}.site-nav{display:flex;align-items:center;justify-content:space-between;padding:.62rem .75rem .62rem 1rem;border:1px solid var(--line);border-radius:999px;background:rgba(11,12,13,.78);backdrop-filter:blur(16px);pointer-events:auto}.brand{display:flex;align-items:center;gap:.65rem;font-size:.86rem;font-weight:700}.brand span:first-child{color:var(--acid);font-family:ui-monospace,monospace}.nav-links{display:flex;gap:.15rem}.nav-links a{padding:.48rem .75rem;border-radius:999px;color:var(--muted);font-size:.84rem;transition:color .2s ease,background .2s ease}.nav-links a:hover,.nav-links a:focus-visible{color:var(--ink);background:var(--surface-2)}
.hero{min-height:min(51rem,92svh);padding-top:9rem;padding-bottom:4rem;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(19rem,.65fr);align-items:center;gap:6vw}.kicker,.section-index{margin:0;color:var(--muted);font:700 .74rem/1.2 ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase}.kicker{display:flex;align-items:center;gap:.65rem}.kicker span{width:.48rem;height:.48rem;border-radius:50%;background:var(--acid);box-shadow:0 0 0 .3rem rgba(200,255,69,.08)}h1{margin:2rem 0 1.5rem;font-size:clamp(3.6rem,8.6vw,8.7rem);line-height:.84;letter-spacing:-.075em;font-weight:600}h1 span{display:block;margin-top:1.15rem;color:var(--muted);font-size:.27em;line-height:1;letter-spacing:.02em;font-weight:500}.hero-intro{max-width:37rem;margin:0;color:#c8c8c1;font-size:clamp(1.18rem,2vw,1.55rem);line-height:1.45}.hero-actions{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:2.2rem}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:1.4rem;min-height:3rem;padding:.7rem 1rem;border:1px solid var(--line);border-radius:.4rem;font-size:.9rem;transition:transform .2s ease,border-color .2s ease,background .2s ease}.button:hover{transform:translateY(-2px);border-color:rgba(242,240,233,.36)}.button-primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.button-primary:hover{background:var(--acid);border-color:var(--acid)}.button-quiet{color:#c7c7c2}.hero-signal{position:relative;justify-self:end;width:min(100%,22rem);aspect-ratio:1;display:grid;place-items:center}.signal-label,.signal-coord{position:absolute;color:#6f726d;font:700 .65rem ui-monospace,monospace;letter-spacing:.1em}.signal-label{top:0;left:0}.signal-coord{right:0;bottom:0}.signal-orbit{position:relative;width:76%;aspect-ratio:1;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%}.signal-orbit::before{content:"";position:absolute;inset:17%;border:1px dashed rgba(242,240,233,.2);border-radius:50%}.signal-orbit::after{content:"";position:absolute;inset:50% -14%;height:1px;background:var(--line)}.signal-core{z-index:1;display:grid;place-items:center;width:5rem;aspect-ratio:1;border-radius:50%;background:var(--acid);color:#111;font:700 .78rem ui-monospace,monospace}.signal-node{position:absolute;z-index:2;display:grid;place-items:center;width:2.3rem;aspect-ratio:1;border:1px solid var(--line);border-radius:50%;background:var(--bg);color:var(--muted);font:700 .64rem ui-monospace,monospace}.node-one{top:4%;left:25%}.node-two{right:-4%;top:48%}.node-three{bottom:4%;left:18%;width:3rem}
.projects{padding-block:5rem 8rem;border-top:1px solid var(--line)}.section-heading{display:grid;grid-template-columns:1fr 2fr;align-items:end;gap:2rem;margin-bottom:2.5rem}.section-heading h2{max-width:16ch;margin:0;font-size:clamp(2.5rem,5.5vw,5.3rem);line-height:.98;letter-spacing:-.055em;font-weight:500}.project-list{display:grid;gap:1.25rem}.project-card{position:relative;min-height:36rem;display:grid;grid-template-columns:.82fr 1.18fr;overflow:hidden;border:1px solid var(--line);border-radius:.8rem;background:var(--surface)}.project-card::before{content:"";position:absolute;z-index:3;left:0;top:0;width:.28rem;height:100%;background:var(--blue)}.project-lime::before{background:var(--acid)}.project-reversed .project-info{order:2}.project-hitbox{position:absolute;inset:0;z-index:4}.project-info{position:relative;padding:clamp(1.5rem,4vw,3.5rem);display:flex;flex-direction:column;justify-content:flex-end}.project-meta{position:absolute;top:1.4rem;left:clamp(1.5rem,4vw,3.5rem);right:1.5rem;display:flex;gap:1rem;color:var(--muted);font:700 .68rem ui-monospace,monospace;letter-spacing:.06em;text-transform:uppercase}.project-status{margin-left:auto}.project-status::before{content:"";display:inline-block;width:.42rem;height:.42rem;margin-right:.45rem;border-radius:50%;background:var(--blue)}.project-lime .project-status::before{background:var(--acid)}.project-info h3{margin:0 0 1.4rem;font-size:clamp(3.4rem,6vw,6rem);line-height:.9;letter-spacing:-.065em;font-weight:550}.project-info>p{max-width:34rem;margin:0;color:#aeb0aa;font-size:1.06rem}.stack-list{display:flex;flex-wrap:wrap;gap:.45rem;padding:0;margin:2rem 0 0;list-style:none}.stack-list li{padding:.38rem .65rem;border:1px solid var(--line);border-radius:999px;color:#c4c5c0;font:600 .73rem ui-monospace,monospace}.project-visual{position:relative;display:grid;place-items:center;overflow:hidden;background:var(--blue)}.image-visual::after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(114,167,255,.13),transparent 40%);pointer-events:none}.image-visual img{width:82%;height:auto;border:1px solid rgba(0,0,0,.28);border-radius:.45rem;box-shadow:0 2rem 5rem rgba(0,0,0,.28);transform:rotate(-1.5deg) scale(1.04);transition:transform .5s cubic-bezier(.2,.8,.2,1)}.project-card:hover .image-visual img{transform:rotate(0) scale(1.08)}.party-visual{background:var(--acid)}.party-window{width:78%;aspect-ratio:1.18;overflow:hidden;border:1px solid rgba(0,0,0,.26);border-radius:.5rem;background:#101211;color:#f1efe8;box-shadow:0 2.2rem 5rem rgba(0,0,0,.28);transform:rotate(-2deg);transition:transform .45s cubic-bezier(.2,.8,.2,1)}.project-card:hover .party-window{transform:rotate(0) scale(1.025)}.window-bar{height:2rem;display:flex;align-items:center;gap:.3rem;padding-inline:.7rem;border-bottom:1px solid rgba(255,255,255,.1)}.window-bar span{width:.38rem;height:.38rem;border-radius:50%;background:#737873}.party-layout{position:relative;height:calc(100% - 2rem);padding:10%;overflow:hidden}.party-copy{width:62%;display:grid;gap:.8rem}.party-copy small{color:var(--acid);font:700 .55rem ui-monospace,monospace;letter-spacing:.12em}.party-copy strong{font-size:clamp(1.3rem,2.4vw,2.5rem);line-height:.95;letter-spacing:-.04em}.party-copy i{width:3.8rem;height:.3rem;border-radius:1rem;background:var(--acid)}.party-card{position:absolute;width:40%;aspect-ratio:.76;padding:8%;border-radius:.45rem;background:#292d2b;box-shadow:0 1rem 2rem rgba(0,0,0,.35)}.party-card-back{right:7%;bottom:-25%;transform:rotate(12deg);color:#8f948e;font:.55rem ui-monospace,monospace}.party-card-front{right:15%;bottom:-15%;display:flex;flex-direction:column;justify-content:flex-end;transform:rotate(-5deg);background:#f1efe8;color:#111}.party-card-front span{position:absolute;top:8%;left:8%;color:#477200;font:700 .5rem ui-monospace,monospace}.party-card-front b{font-size:clamp(.8rem,1.4vw,1.25rem);line-height:1}.party-card-front small{margin-top:.35rem;color:#5f625e;font-size:.5rem}.project-arrow{position:absolute;z-index:2;top:1.25rem;right:1.25rem;display:grid;place-items:center;width:3rem;aspect-ratio:1;border-radius:50%;background:#111;color:var(--blue);font-size:1.2rem}.project-lime .project-arrow{color:var(--acid)}.next-project{display:grid;grid-template-columns:4rem 1fr auto;align-items:center;gap:1rem;margin-top:2rem;padding:1.4rem 0;border-block:1px solid var(--line);color:var(--muted)}.next-project span{font:700 .7rem ui-monospace,monospace}.next-project p{margin:0}.next-project i{color:var(--acid);font-style:normal}.noscript{padding:1rem;border:1px solid var(--line)}.noscript a{text-decoration:underline}
.about{display:grid;grid-template-columns:1.2fr .8fr;gap:8vw;padding-block:8rem;border-top:1px solid var(--line)}.about-copy h2{max-width:11ch;margin:2rem 0;font-size:clamp(3rem,6vw,6.5rem);line-height:.9;letter-spacing:-.065em;font-weight:500}.about-copy>p:not(.section-index){max-width:38rem;color:#c2c3bd;font-size:1.2rem}.about-copy .about-note{margin-top:2rem;padding-left:1.2rem;border-left:2px solid var(--acid);color:var(--muted);font-size:.95rem}.stack-panel{align-self:end}.stack-panel>p{display:flex;justify-content:space-between;padding-bottom:1rem;margin:0;border-bottom:1px solid var(--ink);font:700 .7rem ui-monospace,monospace;text-transform:uppercase}.stack-panel ul{padding:0;margin:0;list-style:none}.stack-panel li{display:grid;grid-template-columns:3rem 1fr;align-items:center;padding:.75rem 0;border-bottom:1px solid var(--line)}.stack-panel li span{color:#6f726d;font:.65rem ui-monospace,monospace}.stack-panel li strong{font-size:clamp(1.15rem,2vw,1.65rem);font-weight:500;letter-spacing:-.025em}.contact{padding-block:8rem 2rem;border-top:1px solid var(--line)}.contact-main{display:grid;grid-template-columns:1.25fr .75fr;gap:5vw;align-items:end;padding-block:4rem 8rem}.contact-main h2{margin:0;font-size:clamp(3.7rem,8.5vw,9rem);line-height:.82;letter-spacing:-.075em;font-weight:500}.contact-mail{display:grid;grid-template-columns:1fr auto;gap:.75rem;align-items:center;padding:1.2rem 0;border-block:1px solid var(--ink)}.contact-mail span{grid-column:1/-1;color:var(--muted);font:.7rem ui-monospace,monospace;text-transform:uppercase}.contact-mail strong{overflow-wrap:anywhere;font-size:clamp(1rem,2vw,1.35rem);font-weight:500}.contact-mail i{color:var(--acid);font-size:1.4rem;font-style:normal}footer{display:grid;grid-template-columns:1fr auto 1fr;gap:1.5rem;padding-top:1.5rem;border-top:1px solid var(--line);color:var(--muted);font-size:.78rem}footer div{display:flex;gap:1.5rem}footer>a{justify-self:end}footer a:hover{color:var(--ink)}
.reveal{opacity:0;transform:translateY(2rem);transition:opacity .75s ease var(--delay,0ms),transform .75s cubic-bezier(.2,.7,.2,1) var(--delay,0ms)}.reveal.is-visible{opacity:1;transform:none}.intro-up{animation:intro-up .8s both}.intro-signal{animation:intro-fade 1s .18s both}@keyframes intro-up{from{opacity:0;transform:translateY(1.5rem)}}@keyframes intro-fade{from{opacity:0;transform:translateX(1.5rem)}}
@media(max-width:760px){.nav-links a:nth-child(2),.nav-links a:nth-child(3){display:none}.hero{min-height:auto;padding-top:8.5rem;grid-template-columns:1fr}.hero-signal{width:12rem;margin-top:1rem;justify-self:end}.signal-label,.signal-coord{display:none}.section-heading{grid-template-columns:1fr}.project-card{min-height:44rem;grid-template-columns:1fr;grid-template-rows:1fr 1.05fr}.project-info,.project-reversed .project-info{order:2}.project-meta{top:1.35rem}.project-info h3{margin-top:3rem}.about,.contact-main{grid-template-columns:1fr}.about,.contact{padding-block:6rem}.stack-panel{margin-top:2rem}.contact-main{padding-block:3rem 6rem}.contact-mail{margin-top:2rem}footer{grid-template-columns:1fr auto}footer div{order:3;grid-column:1/-1}footer>a{justify-self:end}}
@media(max-width:430px){.shell{width:min(100% - 1.25rem,88rem)}.nav-links a:nth-child(4){display:none}h1{font-size:clamp(3.4rem,19vw,5rem)}.hero-actions{display:grid;grid-template-columns:1fr 1fr}.button-primary{grid-column:1/-1}.project-card{min-height:42rem}.project-meta span:nth-child(2){display:none}.party-window{width:88%}.image-visual img{width:92%}.next-project{grid-template-columns:2.3rem 1fr auto}.contact-main h2{font-size:clamp(3.2rem,16vw,5rem)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{opacity:1;transform:none}}

/* PartyUp is a mobile-first product: preserve the portrait UI instead of forcing a desktop crop. */
.project-lime .project-visual{background:var(--acid)}
.image-mobile::before{content:"MOBILE / FIRST";position:absolute;left:1.4rem;bottom:1.2rem;color:rgba(11,12,13,.5);font:700 .65rem ui-monospace,monospace;letter-spacing:.12em;writing-mode:vertical-rl}
.image-mobile img{width:auto;height:88%;max-width:62%;object-fit:cover;object-position:top;border-radius:.75rem;transform:rotate(2deg);box-shadow:0 2rem 5rem rgba(0,0,0,.34)}
.project-card:hover .image-mobile img{transform:rotate(0) scale(1.025)}
@media(max-width:760px){.image-mobile img{height:92%;max-width:72%}.image-mobile::before{left:.8rem;bottom:.8rem}}

/* Mobile cards size themselves from their content; metadata no longer floats over an empty panel. */
@media(max-width:760px){
  .project-card{min-height:0;grid-template-rows:clamp(20rem,70vw,28rem) auto}
  .project-info,.project-reversed .project-info{justify-content:flex-start;padding-top:4.8rem;padding-bottom:2rem}
  .project-info h3{margin-top:0}
}

/* Kustral is private client work: present the product without implying public access. */
.project-violet::before{background:#9d68ff}
.project-violet .project-status::before{background:#9d68ff}
.project-violet .project-visual{background:#604092}
.project-violet .image-visual::after{background:linear-gradient(135deg,rgba(157,104,255,.22),transparent 45%)}
.project-private-mark{position:absolute;z-index:2;top:1.25rem;right:1.25rem;padding:.55rem .7rem;border:1px solid rgba(255,255,255,.32);border-radius:999px;background:rgba(11,12,13,.78);color:#eee8fa;font:700 .62rem ui-monospace,monospace;letter-spacing:.08em;text-transform:uppercase;backdrop-filter:blur(10px)}
.project-info>.project-access{margin-top:1rem;color:#cbc0e2;font:700 .7rem ui-monospace,monospace;letter-spacing:.08em;text-transform:uppercase}
@media(max-width:430px){.project-private-mark{top:.8rem;right:.8rem;font-size:.56rem}.project-info>.project-access{font-size:.65rem}}
