:root{
  --bg:#0e0f0c;--bg2:#15170f;--line:#2a2e1f;--text:#eceee4;--muted:#a9ae98;
  --acc:#d4ff3a;--acc-ink:#121400;--warm:#ffb86b;
  --head:"Bricolage Grotesque",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --body:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:400 1rem/1.6 var(--body);overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2,h3{font-family:var(--head);line-height:1.1;margin:0}
ul,ol{list-style:none;margin:0;padding:0}
:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
.wrap{width:100%;max-width:1120px;margin:0 auto;padding:0 20px}
.skip{position:absolute;left:-999px;top:8px;background:var(--acc);color:var(--acc-ink);padding:8px 12px;z-index:10}
.skip:focus{left:8px}

/* header */
.top{position:sticky;top:0;z-index:5;background:rgba(14,15,12,.94);border-bottom:1px solid var(--line)}
.top-in{display:flex;align-items:center;justify-content:space-between;height:58px;gap:12px}
.brand{font:800 1.05rem var(--head);text-decoration:none;display:flex;align-items:center;gap:8px;white-space:nowrap}
.mark{font:700 .8rem var(--mono);background:var(--acc);color:var(--acc-ink);padding:3px 6px;border-radius:5px}
.top nav{display:flex;gap:16px}
.top nav a{text-decoration:none;color:var(--muted);font-size:.92rem}
.top nav a:hover{color:var(--text)}
@media (max-width:560px){.top nav a:not([href="#contact"]){display:none}.top nav a[href="#contact"]{color:var(--acc)}}

/* hero */
.hero{padding:44px 0 56px;border-bottom:1px solid var(--line);
  background-image:linear-gradient(#1b1e14 1px,transparent 1px),linear-gradient(90deg,#1b1e14 1px,transparent 1px);
  background-size:44px 44px;background-position:-1px -1px}
.hero-grid{display:grid;gap:40px}
.tag{display:inline-flex;align-items:center;gap:8px;font:600 .8rem var(--mono);color:var(--acc);background:var(--bg);border:1px solid var(--line);padding:6px 10px;border-radius:999px;margin:0 0 18px}
.dot{width:8px;height:8px;border-radius:50%;background:var(--acc);box-shadow:0 0 0 3px rgba(212,255,58,.2)}
h1{font-size:clamp(2.9rem,13vw,5.6rem);font-weight:800;letter-spacing:-.03em}
.lead{font-size:clamp(1.08rem,3.6vw,1.3rem);color:var(--text);max-width:34ch;margin:16px 0 26px}
.btns{display:flex;flex-wrap:wrap;gap:12px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 20px;border-radius:10px;font-weight:700;text-decoration:none;font-size:1rem}
.btn-main{background:var(--acc);color:var(--acc-ink)}
.btn-main:hover{background:#e4ff7a}
.btn-ghost{border:1.5px solid var(--text);color:var(--text);background:var(--bg)}
.btn-ghost:hover{border-color:var(--acc);color:var(--acc)}

.hero-art{position:relative;height:400px;max-width:420px;width:100%;margin:0 auto}
.code-card{position:absolute;left:0;top:60px;width:78%;max-width:300px;transform:rotate(-4deg);filter:drop-shadow(0 18px 30px rgba(0,0,0,.5))}
.caret{animation:blink 1.1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.phone{background:#050505;border:2px solid #34382a;border-radius:30px;padding:8px;box-shadow:0 0 0 1px #000,0 24px 50px rgba(0,0,0,.55);position:relative}
.phone::before{content:"";position:absolute;top:13px;left:50%;width:56px;height:5px;margin-left:-28px;background:#1e2018;border-radius:4px;z-index:1}
.phone img{border-radius:22px;width:100%;aspect-ratio:540/850}
.phone-hero{position:absolute;right:0;top:0;width:230px;transform:rotate(3deg)}
.live-pill{position:absolute;left:8%;top:300px;display:flex;align-items:center;gap:7px;background:var(--acc);color:var(--acc-ink);font:800 .8rem var(--mono);padding:8px 12px;border-radius:8px;transform:rotate(-3deg)}
.live-pill span{width:9px;height:9px;border-radius:50%;background:#d6001c;animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}

@media (min-width:900px){
  .hero{padding:80px 0 90px}
  .hero-grid{grid-template-columns:1.1fr .9fr;align-items:center}
  .hero-art{height:450px;margin:0 0 0 auto}
  .phone-hero{width:260px}
}

/* sections */
.sec{padding:64px 0;border-bottom:1px solid var(--line)}
.kicker{font:600 .8rem var(--mono);color:var(--acc);margin:0 0 10px;letter-spacing:.04em}
h2{font-size:clamp(1.8rem,6.5vw,2.7rem);font-weight:800;letter-spacing:-.02em;margin-bottom:28px}

.project{background:var(--bg2);border:1px solid var(--line);border-radius:18px;padding:24px 20px 28px;border-top:4px solid var(--acc)}
.project h3{font-size:clamp(1.9rem,7vw,2.6rem);letter-spacing:.02em}
.project-head p{color:var(--muted);max-width:56ch;margin:10px 0 18px;font-size:1.05rem}
.feat{display:grid;gap:8px;margin-bottom:28px}
.feat li{padding-left:22px;position:relative}
.feat li::before{content:"";position:absolute;left:0;top:.62em;width:10px;height:2px;background:var(--acc)}
.gallery{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 4px 18px;margin:0 -4px 22px}
.gallery figure{margin:0;flex:0 0 68%;max-width:250px;scroll-snap-align:start}
.gallery .phone{border-radius:26px;padding:7px}
.gallery .phone img{border-radius:19px}
.gallery figcaption{font:600 .82rem var(--mono);color:var(--muted);margin-top:10px;text-align:center}
@media (min-width:760px){
  .project{padding:40px}
  .feat{grid-template-columns:1fr 1fr;column-gap:32px}
  .gallery{overflow:visible;justify-content:flex-start;gap:28px}
  .gallery figure{flex:0 1 240px}
  .gallery figure:nth-child(2){transform:translateY(-14px)}
}

.cards{display:grid;gap:14px}
.card{background:var(--bg2);border:1px solid var(--line);border-radius:14px;padding:22px}
.card h3{font-size:1.12rem;font-weight:800}
.card p{color:var(--muted);margin:8px 0 0}
.ic{width:38px;height:38px;fill:none;stroke:var(--acc);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;margin-bottom:16px}
@media (min-width:640px){.cards{grid-template-columns:1fr 1fr}}
@media (min-width:980px){.cards{grid-template-columns:repeat(3,1fr)}}

.chips{display:flex;flex-wrap:wrap;gap:10px}
.chips li{font:500 .9rem var(--mono);border:1px solid var(--line);background:var(--bg2);padding:8px 13px;border-radius:8px}

.steps{display:grid;gap:12px;counter-reset:s}
.steps li{display:flex;gap:16px;align-items:flex-start;padding:18px;border:1px solid var(--line);border-radius:14px}
.steps .n{flex:0 0 40px;width:40px;height:40px;display:grid;place-items:center;border-radius:10px;background:var(--acc);color:var(--acc-ink);font:800 1.1rem var(--head)}
.steps p{margin:7px 0 0;font-size:1.05rem}
@media (min-width:900px){.steps{grid-template-columns:repeat(4,1fr)}.steps li{flex-direction:column}.steps .n{flex:none}}

.about{display:grid;gap:28px;align-items:center}
.about p{color:var(--muted);max-width:60ch;font-size:1.05rem}
.about h2{margin-bottom:16px}
.avatar{width:160px;height:160px;border-radius:50%;display:grid;place-items:center;overflow:hidden;
  background:radial-gradient(circle at 30% 30%,#2a3015,#15170f 70%);border:3px solid var(--acc);box-shadow:0 0 0 8px var(--bg),0 0 0 9px var(--line)}
.avatar span{font:800 3.2rem var(--head);color:var(--acc);letter-spacing:-.04em}
.avatar img{width:100%;height:100%;object-fit:cover}
@media (min-width:760px){.about{grid-template-columns:220px 1fr}.avatar{width:200px;height:200px}}

.contact-list{display:grid;gap:12px;max-width:560px}
.contact-list a{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:18px 20px;border:1px solid var(--line);border-radius:14px;background:var(--bg2);text-decoration:none}
.contact-list a:hover{border-color:var(--acc)}
.lbl{font:600 .85rem var(--mono);color:var(--muted)}
.val{font:800 1.2rem var(--head);color:var(--acc)}
.based{color:var(--muted);margin:24px 0 0}

.foot{padding:28px 0 36px;color:var(--muted);font-size:.9rem}

/* 404 */
.nf{min-height:80vh;display:grid;place-items:center;text-align:center;padding:40px 20px}
.nf .code{font:800 clamp(5rem,28vw,10rem) var(--head);color:var(--acc);line-height:1}
.nf p{color:var(--muted)}

/* photo backgrounds (dark overlay keeps text readable) */
.hero{background-color:var(--bg);
  background-image:linear-gradient(#1b1e1466 1px,transparent 1px),linear-gradient(90deg,#1b1e1466 1px,transparent 1px),
    linear-gradient(180deg,rgba(10,11,8,.80) 0%,rgba(10,11,8,.72) 45%,rgba(10,11,8,.94) 100%),url(img/bg-hero-800.webp);
  background-size:44px 44px,44px 44px,cover,cover;background-position:-1px -1px,-1px -1px,center,center top}
@media (min-width:900px){.hero{background-image:linear-gradient(#1b1e1466 1px,transparent 1px),linear-gradient(90deg,#1b1e1466 1px,transparent 1px),
    linear-gradient(90deg,rgba(10,11,8,.90) 0%,rgba(10,11,8,.74) 55%,rgba(10,11,8,.62) 100%),url(img/bg-hero-1600.webp);background-position:-1px -1px,-1px -1px,center,center}}
.band{--ov:linear-gradient(180deg,rgba(10,11,8,.86),rgba(10,11,8,.80) 50%,rgba(10,11,8,.90));background:var(--bg) center/cover no-repeat}
.band.in{background-image:var(--ov),var(--m)}
@media (min-width:900px){.band.in{background-image:var(--ov),var(--d)}}
.bg-services{--m:url(img/bg-services-800.webp);--d:url(img/bg-services-1600.webp)}
.bg-process{--m:url(img/bg-process-800.webp);--d:url(img/bg-process-1600.webp)}
.bg-contact{--m:url(img/bg-contact-800.webp);--d:url(img/bg-contact-1600.webp)}
.band .card,.band .contact-list a{background:rgba(21,23,15,.82);backdrop-filter:blur(2px)}
.band .steps li{background:rgba(14,15,12,.72)}
.band .based{color:#c9cdb8}
.tag{background:rgba(14,15,12,.8)}
.btn-ghost{background:rgba(14,15,12,.6)}
.avatar{background:#000}
