@font-face{
  font-family:"Biome W04";
  src:url("../assets/fonts/BiomeW04-ExtraLight.woff2") format("woff2"),
      url("../assets/fonts/BiomeW04-ExtraLight.woff") format("woff");
  font-weight:200;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:"Biome W04";
  src:url("../assets/fonts/BiomeW04-Regular.woff2") format("woff2"),
      url("../assets/fonts/BiomeW04-Regular.woff") format("woff");
  font-weight:400;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:"Biome W04";
  src:url("../assets/fonts/BiomeW04-Italic.ttf") format("truetype");
  font-weight:400;
  font-style:italic;
  font-display:swap;
}
@font-face{
  font-family:"Biome W04";
  src:url("../assets/fonts/BiomeW04-Bold.ttf") format("truetype");
  font-weight:700;
  font-style:normal;
  font-display:swap;
}

:root{
  color-scheme:dark;
  --blue:#4FB3E8;
  --blue-deep:#7FCBF2;
  --gold:#FFC24D;
  --bg:#081C2B;
  --surface:#0F2A3D;
  --surface-2:#0C2334;
  --ink:#E9F1F6;
  --ink-soft:#A9C3D2;
  --ink-faint:#7692A3;
  --line:#1B3A4E;
  --shadow: 0 1px 2px rgba(0,0,0,0.35);
  --serif: "Biome W04", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --sans: "Biome W04", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

*{box-sizing:border-box;}
html,body{margin:0; padding:0;}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--sans);
  -webkit-font-smoothing:antialiased;
  padding-inline: clamp(18px, 5vw, 64px);
}
a{color:inherit;}
h1,h2,h3{font-family:var(--serif); font-weight:700; text-wrap:balance; margin:0;}
p{margin:0; color:var(--ink-soft); line-height:1.6; font-weight:400;}
img{max-width:100%;}
.wrap{max-width:1180px; margin-inline:auto;}
.eyebrow{
  font-family:var(--mono); text-transform:uppercase; letter-spacing:.12em;
  font-size:.72rem; color:var(--blue); display:flex; align-items:center; gap:.6em;
}
.eyebrow::before{content:""; width:16px; height:1px; background:var(--blue); display:inline-block;}
section{padding-block: clamp(48px, 8vw, 96px);}
.btn{
  font-family:var(--sans); font-weight:600; font-size:.92rem;
  padding:.85em 1.5em; border-radius:3px; border:1px solid transparent;
  cursor:pointer; display:inline-flex; align-items:center; gap:.5em;
  text-decoration:none; transition:transform .15s ease, background .15s ease, color .15s ease;
}
.btn:hover{transform:translateY(-1px);}
.btn-primary{background:var(--gold); color:#241300;}
.btn-primary:hover{background:var(--blue); color:#fff;}
.btn-ghost{border-color:var(--line); color:var(--ink);}
.btn-ghost:hover{border-color:var(--ink-faint);}
.btn-link{color:var(--ink); font-weight:600; text-decoration:none; border-bottom:1px solid var(--gold); padding-bottom:2px;}

/* ---------- Nav ---------- */
header{
  position:sticky; top:env(safe-area-inset-top,0px); z-index:50;
  background:color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
  margin-inline:calc(-1 * clamp(18px,5vw,64px));
  padding-inline:clamp(18px,5vw,64px);
}
nav{
  max-width:1180px; margin-inline:auto;
  display:flex; align-items:center; justify-content:space-between;
  padding-block:14px;
}
.logo{display:flex; align-items:center; text-decoration:none;}
.logo img{height:34px; width:auto; display:block;}
.navlinks{display:flex; gap:2.2em; align-items:center; list-style:none; margin:0; padding:0;}
.navlinks a{text-decoration:none; font-size:.92rem; color:var(--ink-soft); transition:color .15s;}
.navlinks a:hover{color:var(--blue);}
.navcta{display:flex; align-items:center; gap:1.6em;}
.burger{display:none; background:none; border:none; cursor:pointer; padding:6px; color:var(--ink);}
.burger svg{display:block;}
@media (max-width:820px){
  .navlinks{display:none;}
  .navcta .btn-primary-nav{display:none;}
  .burger{display:block;}
}
#mobilemenu{display:none; flex-direction:column; gap:1.1em; padding-block:18px 22px; border-top:1px solid var(--line);}
#mobilemenu.open{display:flex;}
#mobilemenu a{text-decoration:none; color:var(--ink); font-size:1rem;}

/* ---------- Hero ---------- */
.hero{padding-block: clamp(40px,7vw,72px) clamp(56px,9vw,96px);}
.hero-grid{display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(28px,5vw,60px); align-items:center;}
@media (max-width:900px){.hero-grid{grid-template-columns:1fr;}}
.hero h1{font-size:clamp(2.1rem, 4.4vw, 3.4rem); line-height:1.08; margin-block:.5em .45em; letter-spacing:-.01em;}
.hero h1 em{font-style:italic; color:var(--gold);}
.hero p.lead{font-size:1.08rem; max-width:46ch; margin-bottom:1.8em;}
.group-note{font-size:.9rem; margin:-.8em 0 1.8em; color:var(--ink-faint);}
.group-note a{color:var(--blue); text-decoration:none; border-bottom:1px solid var(--gold); padding-bottom:1px;}
.group-note a:hover{color:var(--gold);}
.hero-ctas{display:flex; flex-wrap:wrap; gap:1em; align-items:center; margin-bottom:1.8em;}
.hero-stats{font-family:var(--mono); font-size:.78rem; color:var(--ink-faint); display:flex; flex-wrap:wrap; gap:.5em 1.1em;}
.hero-stats b{color:var(--ink-soft); font-weight:600;}

/* console + device mock */
.mock-stage{position:relative; display:flex; align-items:flex-end; justify-content:center; min-height:380px;}
.browser{
  width:100%; max-width:420px; background:var(--surface); border:1px solid var(--line);
  border-radius:8px; box-shadow:0 20px 50px -20px rgba(12,38,55,.35); overflow:hidden;
}
.browser-bar{display:flex; align-items:center; gap:6px; padding:9px 12px; border-bottom:1px solid var(--line); background:var(--surface-2);}
.browser-bar span{width:8px; height:8px; border-radius:50%; background:var(--line);}
.browser-url{font-family:var(--mono); font-size:.68rem; color:var(--ink-faint); background:var(--bg); border-radius:3px; padding:3px 10px; margin-left:6px; flex:1;}
.browser-body{padding:16px; display:grid; gap:10px;}
.skel-row{height:10px; border-radius:2px; background:var(--surface-2);}
.skel-card{border:1px solid var(--line); border-radius:6px; padding:10px; display:grid; gap:8px;}
.skel-bar{height:26px; border-radius:4px; background:linear-gradient(90deg, var(--blue), var(--gold)); opacity:.9;}

.phone{
  position:absolute; right:-6px; bottom:-26px; width:150px; height:300px;
  background:var(--ink); border-radius:26px; padding:8px; box-shadow:0 24px 40px -14px rgba(12,38,55,.45);
  border:1px solid var(--line);
}
.phone-screen{background:var(--surface); width:100%; height:100%; border-radius:19px; overflow:hidden; padding:14px 10px; display:flex; flex-direction:column; gap:8px;}
.phone-notch{width:38%; height:5px; background:var(--ink); border-radius:3px; margin:0 auto 6px;}
.phone-row{height:8px; border-radius:2px; background:var(--surface-2);}
.phone-pill{height:30px; border-radius:15px; background:var(--gold); opacity:.95; margin-top:auto;}

.console{
  margin-top:16px; width:100%; max-width:420px; background:#071B29; color:#CFE6DF;
  border-radius:8px; padding:14px 16px; font-family:var(--mono); font-size:.74rem; line-height:1.75;
  box-shadow:0 20px 50px -24px rgba(12,38,55,.5); border:1px solid #123449;
}
.console .ln{opacity:0; animation:fadeIn .4s ease forwards;}
@media (prefers-reduced-motion: reduce){.console .ln{opacity:1; animation:none;}}
.console .ok{color:#7CE0B8;}
.console .tag{color:#FFC24D;}
.console .path{color:#7FCBF2;}
@keyframes fadeIn{to{opacity:1;}}

/* ---------- Marquee / trust strip ---------- */
.strip{border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding-block:22px; overflow:hidden;}
.strip-track{display:flex; gap:2.5em; font-family:var(--mono); font-size:.78rem; color:var(--ink-soft); white-space:nowrap; width:max-content; animation:scroll 32s linear infinite;}
@media (prefers-reduced-motion: reduce){.strip-track{animation:none;}}
.strip-track span{display:flex; align-items:center; gap:2.5em;}
.strip-track b{color:var(--ink);}
.strip-track .sep{color:var(--gold);}
@keyframes scroll{from{transform:translateX(0);} to{transform:translateX(-50%);}}

/* ---------- Section headers ---------- */
.sec-head{display:grid; grid-template-columns:1fr auto; gap:2em; align-items:end; margin-bottom:clamp(28px,4vw,44px);}
.sec-head h2{font-size:clamp(1.7rem,3vw,2.3rem);}
.sec-head p{max-width:42ch;}
@media (max-width:700px){.sec-head{grid-template-columns:1fr;}}

/* ---------- Services ---------- */
.services{display:grid; grid-template-columns:repeat(2,1fr); border-top:1px solid var(--line); border-left:1px solid var(--line);}
@media (max-width:760px){.services{grid-template-columns:1fr;}}
.service{border-right:1px solid var(--line); border-bottom:1px solid var(--line); padding:clamp(24px,3vw,36px); display:flex; flex-direction:column; gap:14px;}
.service .num{font-family:var(--mono); font-size:.75rem; color:var(--ink-faint);}
.service svg{color:var(--blue);}
.service h3{font-size:1.25rem;}

/* ---------- Process ---------- */
.timeline{display:grid; grid-template-columns:auto 1fr; column-gap:clamp(20px,4vw,40px);}
.tl-step{display:contents;}
.tl-num{font-family:var(--serif); font-style:italic; font-size:1.6rem; color:var(--gold); position:relative; padding-block:18px 0;}
.tl-line{position:relative;}
.tl-line::before{content:""; position:absolute; left:-1px; top:0; bottom:0; width:1px; background:var(--line);}
.tl-step:last-child .tl-line::before{bottom:auto; height:60px;}
.tl-content{padding:18px 0 34px 22px; position:relative;}
.tl-content::before{content:""; position:absolute; left:-4.5px; top:26px; width:8px; height:8px; border-radius:50%; background:var(--blue);}
.tl-content h3{font-size:1.15rem; margin-bottom:.4em;}
.tl-content p{max-width:52ch;}

/* ---------- Work ---------- */
.work-grid{display:grid; gap:20px;}
.work-card{
  display:grid; grid-template-columns:1fr 1.15fr; gap:0; border:1px solid var(--line); border-radius:10px; overflow:hidden; background:var(--surface);
}
@media (max-width:760px){.work-card{grid-template-columns:1fr;}}
.work-visual{position:relative; padding:26px; display:flex; flex-direction:column; justify-content:center; gap:8px; min-height:180px;}
.work-visual .wv-bar{height:9px; border-radius:2px;}
.work-visual.has-photo{padding:0; min-height:220px; overflow:hidden;}
.work-visual.has-photo img{width:100%; height:100%; object-fit:cover; object-position:left center; display:block;}

.work-visual.has-devices{
  min-height:290px; padding:18px;
  display:flex; align-items:center; justify-content:center;
  background:
    radial-gradient(1px 1px at 12px 12px, color-mix(in srgb, var(--blue) 45%, transparent) 1px, transparent 1.5px) 0 0/24px 24px,
    radial-gradient(120% 130% at 12% -10%, color-mix(in srgb, var(--blue) 20%, var(--surface)) 0%, var(--surface) 55%);
}
.cp-stage{position:relative; width:100%; max-width:340px; height:230px; margin-inline:auto;}
.cp-browser{position:absolute; left:0; top:0; width:256px; max-width:84%;}
.cp-shot-wrap{height:168px; overflow:hidden; background:var(--surface);}
.cp-shot{width:100%; display:block; object-fit:cover; object-position:top center;}
.cp-phone{position:absolute; right:0; bottom:0; width:88px; height:176px; padding:4px; border-radius:13px;}
.cp-phone-screen{padding:0; border-radius:9px; overflow:hidden;}
.cp-shot-mobile{width:100%; height:100%; object-fit:cover; object-position:top center; display:block;}

.cp-chat{
  position:absolute; right:0; bottom:0; width:196px; border-radius:8px; overflow:hidden;
  background:var(--surface); border:1px solid var(--line); box-shadow:0 18px 36px -16px rgba(8,28,43,.55);
}
.cp-chat-bar{
  display:flex; align-items:center; gap:6px; padding:7px 10px; font-family:var(--mono); font-size:.62rem;
  color:#fff; background:#128C4A; text-transform:uppercase; letter-spacing:.04em;
}
.cp-chat-dot{width:6px; height:6px; border-radius:50%; background:#fff; opacity:.9;}
.cp-chat-shot-wrap{height:118px; overflow:hidden;}
.cp-chat-shot{width:100%; height:100%; object-fit:cover; object-position:center 75%; display:block;}
.work-body{padding:clamp(22px,3vw,32px); display:flex; flex-direction:column; gap:10px; justify-content:center;}
.work-tag{font-family:var(--mono); font-size:.7rem; color:var(--blue); text-transform:uppercase; letter-spacing:.08em;}
.work-body h3{font-size:1.3rem;}
.work-meta{display:flex; gap:1.2em; flex-wrap:wrap; font-family:var(--mono); font-size:.72rem; color:var(--ink-faint); margin-top:4px;}

/* ---------- Stack ---------- */
.stackrow{display:flex; flex-wrap:wrap; gap:10px;}
.chip{font-family:var(--mono); font-size:.8rem; border:1px solid var(--line); border-radius:20px; padding:.5em 1.1em; color:var(--ink-soft);}

/* ---------- Studio ---------- */
.studio-grid{display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,5vw,70px); align-items:start;}
@media (max-width:800px){.studio-grid{grid-template-columns:1fr;}}
.studio-grid h2{font-size:clamp(1.7rem,3vw,2.3rem); margin-bottom:.6em;}
.studio-grid p{font-size:1.02rem; max-width:52ch; margin-bottom:1em;}
.factlist{display:grid; gap:0; border-top:1px solid var(--line);}
.fact{display:flex; justify-content:space-between; flex-wrap:wrap; gap:4px 16px; padding:14px 0; border-bottom:1px solid var(--line); font-size:.92rem;}
.fact span:first-child{color:var(--ink-faint); font-family:var(--mono); font-size:.75rem; text-transform:uppercase; letter-spacing:.06em; flex-shrink:0;}
.fact span:last-child{text-align:right; max-width:64%;}

/* ---------- Contact ---------- */
.contact-box{border:1px solid var(--line); border-radius:12px; background:var(--surface); padding:clamp(24px,4vw,44px); display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,4vw,50px);}
@media (max-width:760px){.contact-box{grid-template-columns:1fr;}}
.contact-box h2{font-size:clamp(1.6rem,3vw,2.1rem); margin-bottom:.4em;}
.field{display:flex; flex-direction:column; gap:6px; margin-bottom:14px;}
.field label{font-family:var(--mono); font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-faint);}
.field input, .field textarea{
  font-family:var(--sans); font-size:.95rem; background:var(--bg); border:1px solid var(--line); border-radius:6px;
  padding:.7em .9em; color:var(--ink); resize:vertical;
}
.field input:focus, .field textarea:focus{outline:2px solid var(--gold); outline-offset:1px;}
.contact-direct{display:flex; flex-direction:column; gap:1.4em;}
.contact-direct a{text-decoration:none; font-size:1.05rem; font-weight:600; color:var(--blue); border-bottom:1px solid var(--gold); width:fit-content; padding-bottom:2px;}
#formok{display:none; font-family:var(--mono); font-size:.85rem; color:var(--blue); margin-top:10px;}

footer{border-top:1px solid var(--line); padding-block:28px clamp(28px, 5vw, 40px); display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:14px; font-size:.82rem; color:var(--ink-faint);}
footer a{text-decoration:none; color:var(--ink-faint);}
.footer-group a{color:var(--blue); border-bottom:1px solid var(--gold); padding-bottom:1px;}
.footer-group a:hover{color:var(--gold);}
footer img{height:20px; width:auto; opacity:.85;}
.reveal{opacity:0; transform:translateY(14px); transition:opacity .5s ease, transform .5s ease;}
.reveal.in{opacity:1; transform:none;}
@media (prefers-reduced-motion: reduce){.reveal{opacity:1; transform:none; transition:none;}}
