/* ============================================================
   DARKMATTER AI — Software Development (one-page agency)
   ============================================================ */
:root{
  --bg:#0a0a14; --bg-2:#140d31; --panel:rgba(255,255,255,.04);
  --text:#eaf0ff; --muted:#9aa6c8; --muted-2:#6b769a; --line:rgba(255,255,255,.1);
  --v:#7c3aed; --c:#a78bfa; --m:#c4b5fd;
  --grad:linear-gradient(110deg,#7c3aed,#a78bfa);
  --grad-3:linear-gradient(110deg,#7c3aed,#a78bfa,#c4b5fd);
  --grad-soft:linear-gradient(110deg,rgba(124,58,237,.20),rgba(167,139,250,.16));
  --fd:"Inter","Helvetica Neue",Arial,system-ui,sans-serif; --fb:"Inter","Segoe UI",system-ui,sans-serif;
  --fm:"IBM Plex Mono",monospace;
  --maxw:2280px; --ease:cubic-bezier(.16,1,.3,1); --shadow:0 30px 70px -30px rgba(0,0,0,.85);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;border-radius:0}
html{scroll-behavior:smooth}
html,body{overflow-x:hidden;max-width:100%}
body{font-family:var(--fb);background:var(--bg);color:var(--text);line-height:1.7;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
h1,h2,h3,h4{font-family:var(--fd);font-weight:700;line-height:1.08;letter-spacing:-.02em}
.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 clamp(22px,4.5vw,96px)}
.section{position:relative;padding:clamp(70px,10vw,130px) 0;z-index:1}
.center{text-align:center}
.grad{color:#a78bfa}

/* ---------- CATALOG ---------- */
.catalog{display:grid;grid-template-columns:repeat(2,1fr);gap:26px;margin-top:46px}
.proj{background:linear-gradient(170deg,rgba(124,58,237,.1),rgba(20,13,49,.45));border:1px solid var(--line);overflow:hidden;transition:transform .5s var(--ease),border-color .3s,box-shadow .5s}
.proj:hover{transform:translateY(-6px);border-color:rgba(167,139,250,.45);box-shadow:var(--shadow)}
.proj-shot{position:relative;aspect-ratio:16/10;overflow:hidden;background:#0c0820}
.proj-shot .bar{position:absolute;top:0;left:0;right:0;height:30px;background:rgba(10,10,20,.7);display:flex;align-items:center;gap:7px;padding:0 13px;z-index:3;border-bottom:1px solid var(--line)}
.proj-shot .bar i{width:9px;height:9px;background:#3a2f55}
.proj-shot .ph{position:absolute;inset:30px 0 0 0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;text-align:center;padding:24px}
.proj-shot .ph b{position:relative;z-index:2;font-family:var(--fd);font-weight:800;font-size:1.5rem;color:#fff;letter-spacing:-.02em;text-shadow:0 2px 12px rgba(0,0,0,.4)}
.proj-shot .ph::before{content:"";position:absolute;left:16px;right:16px;top:16px;height:44%;border:1px solid rgba(255,255,255,.22);background:linear-gradient(rgba(255,255,255,.18),rgba(255,255,255,.18)) 14px 14px/38% 7px no-repeat,linear-gradient(rgba(255,255,255,.12),rgba(255,255,255,.12)) 14px 30px/72% 6px no-repeat,linear-gradient(rgba(255,255,255,.12),rgba(255,255,255,.12)) 14px 42px/60% 6px no-repeat,linear-gradient(rgba(255,255,255,.2),rgba(255,255,255,.2)) 14px 62px/26% 12px no-repeat;opacity:.55}
.proj-shot .ph::after{content:"VISTA PREVIA";position:absolute;bottom:13px;font-family:var(--fm);font-size:.6rem;letter-spacing:.22em;color:rgba(255,255,255,.5)}
.proj-shot img{position:absolute;inset:30px 0 0 0;width:100%;height:calc(100% - 30px);object-fit:contain;object-position:center;background:#0c0820;padding:6px;z-index:2}
.proj-body{padding:24px 26px}
.proj-body .ptype{font-family:var(--fm);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--c)}
.proj-body h3{font-size:1.3rem;margin:8px 0 8px}
.proj-body p{color:var(--muted);font-size:.93rem}
.proj-body .pmeta{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.proj-body .pmeta span{font-family:var(--fm);font-size:.72rem;color:var(--muted-2);border:1px solid var(--line);padding:4px 9px}
.proj-body .plink{display:inline-flex;margin-top:16px;font-family:var(--fd);font-weight:700;font-size:.9rem;color:#a78bfa}
.proj-body .plink:hover{color:#c4b5fd}
.catalog-note{text-align:center;color:var(--muted);margin-top:34px;font-size:.98rem}
.catalog-note a{color:#a78bfa;font-weight:600}
.proj-grad-bp{background:linear-gradient(135deg,#1a0f08,#c2641e)}
.proj-grad-atlas{background:linear-gradient(135deg,#0c1830,#2f6df0)}
.proj-grad-elevate{background:linear-gradient(135deg,#06140f,#16a085)}
.proj-grad-crm{background:linear-gradient(135deg,#140d31,#7c3aed)}
.proj-grad-presta{background:linear-gradient(135deg,#0a1838,#2563eb)}
.proj-grad-spin{background:linear-gradient(135deg,#0a1a1a,#1f8a76)}
@media(max-width:820px){.catalog{grid-template-columns:1fr}}

/* ---------- AI WORLD (scroll-driven horizontal) ---------- */
.aiworld{position:relative;padding:clamp(64px,9vw,120px) 0;overflow:hidden}
.aiworld-canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.5;pointer-events:none}
.aiworld-head{position:relative;z-index:2;padding-bottom:8px}
.aiworld-head .lead{max-width:60ch}
.aiworld-marquee{position:relative;z-index:2;overflow:hidden;margin-top:34px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.aiworld-mtrack{display:flex;gap:26px;width:max-content;padding:0 13px;animation:aimarq 48s linear infinite}
.aiworld-marquee:hover .aiworld-mtrack{animation-play-state:paused}
@keyframes aimarq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.ai-panel{flex:0 0 auto;width:min(82vw,400px);background:linear-gradient(170deg,rgba(124,58,237,.14),rgba(20,13,49,.6));border:1px solid rgba(167,139,250,.22);padding:34px;display:flex;flex-direction:column;transition:transform .45s var(--ease),border-color .3s,box-shadow .45s}
.ai-panel:hover{transform:translateY(-6px);border-color:rgba(167,139,250,.5);box-shadow:0 24px 50px -28px rgba(124,58,237,.7)}
.ai-panel .ai-num{font-family:var(--fd);font-weight:800;font-size:clamp(2.6rem,6vw,4.4rem);color:#a78bfa;line-height:1;letter-spacing:-.03em}
.ai-panel h3{font-size:1.18rem;margin:12px 0 8px}
.ai-panel p{color:var(--muted);font-size:.95rem}
.ai-panel .src{font-family:var(--fm);font-size:.7rem;color:var(--muted-2);margin-top:auto;padding-top:16px;letter-spacing:.04em}
.ai-panel-cta{background:linear-gradient(160deg,#1a103d,#0c0820);border-color:rgba(167,139,250,.4)}
.ai-panel-cta .btn{margin-top:18px;align-self:flex-start}
@media(max-width:700px){.aiworld-canvas{opacity:.3}.aiworld-mtrack{animation-duration:34s}.ai-panel{width:78vw}}
@media (prefers-reduced-motion:reduce){.aiworld-mtrack{animation:none}.aiworld-marquee{overflow-x:auto}}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:var(--fd);font-weight:600;font-size:.76rem;letter-spacing:.22em;text-transform:uppercase;color:var(--c);padding:7px 15px;border:1px solid rgba(167,139,250,.3);background:var(--grad-soft)}
.h-sec{font-size:clamp(2rem,4.5vw,3.2rem);margin:16px 0 14px}
.lead{color:var(--muted);font-size:clamp(1rem,1.4vw,1.16rem);max-width:62ch}
.center .lead{margin-inline:auto}

/* particle canvas bg */
#space{position:fixed;inset:0;z-index:0;pointer-events:none}
.grid-ov{position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:linear-gradient(rgba(124,58,237,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(167,139,250,.05) 1px,transparent 1px);
  background-size:60px 60px;mask-image:radial-gradient(ellipse 90% 70% at 50% 30%,#000,transparent)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--fd);font-weight:700;font-size:.97rem;padding:14px 24px;background:#7c3aed;color:#fff;transition:transform .3s var(--ease),box-shadow .3s,background .2s;box-shadow:0 0 0 1px rgba(167,139,250,.25),0 18px 40px -18px rgba(124,58,237,.6)}
.btn:hover{background:#8b4ff0}
.btn:hover{transform:translateY(-3px);box-shadow:0 0 0 1px rgba(167,139,250,.5),0 24px 50px -16px rgba(124,58,237,.8)}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--text);box-shadow:none}
.btn.ghost:hover{border-color:var(--c)}
.btn.sm{padding:10px 18px;font-size:.88rem}

/* nav */
.nav{position:fixed;top:0;left:0;width:100%;z-index:80;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px clamp(16px,4vw,38px);transition:.4s var(--ease)}
.nav.scrolled{background:rgba(5,6,15,.78);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);padding-block:11px}
.logo{display:flex;align-items:center;gap:11px;font-family:var(--fd);font-weight:800;font-size:1.18rem;letter-spacing:-.01em}
.logo .dm-mark{width:32px;height:32px;flex:0 0 auto;filter:drop-shadow(0 0 10px rgba(124,58,237,.6))}
.logo .word{display:inline-flex;align-items:baseline;gap:.2em}
.eyebrow,.marq-t{font-family:var(--fm);letter-spacing:.14em}
.nav-links{display:flex;align-items:center;gap:26px}
.nav-links a{font-size:.92rem;color:var(--muted);transition:color .2s}
.nav-links a:hover{color:var(--text)}
.burger{display:none;width:42px;height:42px;border:1px solid var(--line);position:relative}
.burger span{position:absolute;left:11px;width:20px;height:2px;background:var(--text);transition:.3s}
.burger span:nth-child(1){top:15px}.burger span:nth-child(2){top:21px}.burger span:nth-child(3){top:27px}
body.menu-open .burger span:nth-child(1){top:21px;transform:rotate(45deg)}
body.menu-open .burger span:nth-child(2){opacity:0}
body.menu-open .burger span:nth-child(3){top:21px;transform:rotate(-45deg)}
.mpanel{position:fixed;inset:0;z-index:70;background:rgba(5,6,15,.97);backdrop-filter:blur(12px);display:flex;flex-direction:column;justify-content:center;gap:6px;padding:40px;transform:translateY(-100%);transition:transform .5s var(--ease);visibility:hidden}
body.menu-open .mpanel{transform:none;visibility:visible}
.mpanel a{font-family:var(--fd);font-weight:700;font-size:1.7rem;padding:12px 0;border-bottom:1px solid var(--line)}

/* hero */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;padding-top:120px;z-index:1;overflow:hidden}
.matrix-rain{position:absolute;top:0;right:0;width:56%;height:100%;z-index:1;opacity:.55;pointer-events:none;-webkit-mask-image:linear-gradient(90deg,transparent,#000 38%);mask-image:linear-gradient(90deg,transparent,#000 38%)}
.hero .wrap{position:relative;z-index:2}
@media(max-width:760px){.matrix-rain{opacity:.3;width:82%}}
.hero h1{font-size:clamp(2.4rem,6vw,4.6rem);margin:22px 0 20px;max-width:16ch}
.hero .lead{font-size:clamp(1.05rem,1.6vw,1.3rem);max-width:54ch}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px}
.hero-tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}
.tag{font-size:.82rem;color:var(--muted);padding:7px 13px;border:1px solid var(--line);background:var(--panel)}

/* marquee */
.marq{border-block:1px solid var(--line);background:rgba(255,255,255,.015);padding:16px 0;overflow:hidden;display:flex;white-space:nowrap;position:relative;z-index:1}
.marq-t{display:flex;gap:42px;animation:mx 24s linear infinite;padding-right:42px;font-family:var(--fd);font-weight:600;color:var(--muted-2)}
.marq:hover .marq-t{animation-play-state:paused}
.marq-t span{display:inline-flex;gap:42px;align-items:center}.marq-t span::after{content:"◆";color:var(--c);font-size:.6rem}
@keyframes mx{to{transform:translateX(-50%)}}

/* stats */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.stat{padding:26px;border:1px solid var(--line);background:var(--panel);text-align:center}
.stat .n{font-family:var(--fd);font-weight:700;font-size:clamp(2rem,4vw,2.8rem);background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat .l{color:var(--muted);font-size:.9rem;margin-top:4px}

/* cards */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:50px}
.card{position:relative;padding:30px 26px;border:1px solid var(--line);background:var(--panel);overflow:hidden;transition:transform .45s var(--ease),border-color .3s,box-shadow .45s}
.card::after{content:"";position:absolute;inset:0;background:radial-gradient(380px circle at var(--mx,50%) var(--my,0),rgba(124,58,237,.14),transparent 60%);opacity:0;transition:.4s}
.card:hover{transform:translateY(-7px);border-color:rgba(167,139,250,.4);box-shadow:var(--shadow)}
.card:hover::after{opacity:1}
.card .ic{width:54px;height:54px;display:grid;place-items:center;background:var(--grad-soft);border:1px solid rgba(124,58,237,.3);margin-bottom:18px}
.card .ic svg{width:26px;height:26px;color:var(--c)}
.card h3{font-size:1.2rem;margin-bottom:8px}
.card p{color:var(--muted);font-size:.94rem}

/* case study */
.case{display:grid;grid-template-columns:1.1fr .9fr;gap:44px;align-items:center;border:1px solid var(--line);background:linear-gradient(150deg,rgba(124,58,237,.12),rgba(167,139,250,.06));padding:clamp(28px,4vw,50px);overflow:hidden;position:relative}
.case::before{content:"";position:absolute;width:360px;height:360px;background:radial-gradient(circle,rgba(167,139,250,.3),transparent 70%);top:-150px;right:-120px;filter:blur(40px)}
.case .tags{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}
.case .tags span{font-family:var(--fd);font-size:.76rem;padding:5px 11px;border:1px solid var(--line);color:var(--c)}
.case ul{list-style:none;display:grid;gap:10px;margin:18px 0}
.case ul li{display:flex;gap:10px;color:var(--muted);font-size:.95rem}
.case ul svg{width:20px;height:20px;color:var(--c);flex:0 0 auto;margin-top:3px}
.case-visual{position:relative;border:1px solid var(--line);background:var(--bg-2);aspect-ratio:4/3;display:grid;place-items:center;overflow:hidden}
.case-visual .mock{font-family:var(--fd);font-weight:700;font-size:1.6rem;text-align:center;line-height:1.3}
.case-visual .mock small{display:block;color:var(--muted);font-size:.8rem;font-weight:400;margin-top:8px}

/* process */
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:50px;counter-reset:p}
@media(max-width:860px){.steps{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.steps{grid-template-columns:1fr}}
.pstep{padding:24px 20px;border:1px solid var(--line);background:var(--panel)}
.pstep::before{counter-increment:p;content:"0"counter(p);font-family:var(--fd);font-weight:700;font-size:1.6rem;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.pstep h4{margin:10px 0 6px;font-size:1.05rem}
.pstep p{color:var(--muted);font-size:.88rem}

/* contact */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}
.fcard{border:1px solid var(--line);background:var(--panel);padding:32px}
.field{margin-bottom:15px}
.field label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:6px;font-family:var(--fd)}
.field input,.field textarea{width:100%;padding:13px 15px;background:rgba(5,6,15,.6);border:1px solid var(--line);color:var(--text);font-family:inherit;font-size:.95rem;transition:.2s}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--c);box-shadow:0 0 0 3px rgba(167,139,250,.15)}
.field textarea{resize:vertical;min-height:120px}
.hp{position:absolute;left:-9999px}
.form-msg{display:none;margin-top:12px;padding:12px 14px;font-size:.9rem}
.form-msg.ok{display:block;background:rgba(167,139,250,.12);border:1px solid rgba(167,139,250,.4);color:#a8eefc}
.form-msg.err{display:block;background:rgba(255,90,90,.12);border:1px solid rgba(255,120,120,.4);color:#ffb3b3}
.cinfo{display:flex;align-items:center;gap:15px;padding:18px 20px;border:1px solid var(--line);background:var(--panel);margin-bottom:14px;transition:.3s var(--ease)}
.cinfo:hover{transform:translateY(-3px);border-color:rgba(167,139,250,.4)}
.cinfo .ic{width:46px;height:46px;flex:0 0 auto;display:grid;place-items:center;background:var(--grad-soft);border:1px solid rgba(124,58,237,.3)}
.cinfo .ic svg{width:22px;height:22px;color:var(--c)}
.cinfo b{font-family:var(--fd);display:block}.cinfo span{color:var(--muted);font-size:.86rem}

/* footer */
.footer{border-top:1px solid var(--line);padding:50px 0 30px;position:relative;z-index:1}
.foot-top{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.footer p{color:var(--muted-2);font-size:.86rem}
.copy{margin-top:26px;padding-top:20px;border-top:1px solid var(--line);color:var(--muted-2);font-size:.82rem;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}

/* reveal */
[data-reveal]{opacity:0;transform:translateY(50px) scale(.985);transition:opacity .9s var(--ease),transform .9s var(--ease)}
[data-reveal="left"]{transform:translateX(-58px)}[data-reveal="right"]{transform:translateX(58px)}
[data-reveal].in{opacity:1;transform:none}
[data-delay="1"]{transition-delay:.07s}[data-delay="2"]{transition-delay:.14s}[data-delay="3"]{transition-delay:.21s}[data-delay="4"]{transition-delay:.28s}[data-delay="5"]{transition-delay:.35s}
@media(prefers-reduced-motion:reduce){[data-reveal]{opacity:1!important;transform:none!important}}

/* matrix rain (tenue, lado derecho del hero) */
.matrix-rain{position:absolute;top:0;right:0;width:50%;height:100%;z-index:0;opacity:.3;pointer-events:none;-webkit-mask-image:linear-gradient(90deg,transparent,#000 55%);mask-image:linear-gradient(90deg,transparent,#000 55%)}
@media(max-width:760px){.matrix-rain{display:none}}

@media(max-width:900px){.stats,.cards{grid-template-columns:1fr 1fr}.case{grid-template-columns:1fr}.contact-grid{grid-template-columns:1fr}}
@media(max-width:620px){.nav-links{display:none}.burger{display:block}.stats,.cards{grid-template-columns:1fr}}
