/* ============ TOKENS ============ */
:root{
  --bg:#eef1f4;
  --bg-raised:#ffffff;
  --bg-card:#f6f8fa;
  --ink:#141b22;
  --ink-soft:#4c5966;
  --ink-faint:#7c8894;
  --line:#ccd5dd;
  --line-soft:#dde4ea;
  --steel:#2c5b82;
  --steel-strong:#1c3a54;
  --shadow: 0 1px 2px rgba(20,27,34,.06), 0 8px 24px -12px rgba(20,27,34,.18);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#10151b;
    --bg-raised:#171f27;
    --bg-card:#1b242d;
    --ink:#eef2f5;
    --ink-soft:#aab6c1;
    --ink-faint:#7e8b97;
    --line:#2b3742;
    --line-soft:#242e38;
    --steel:#6ea6d4;
    --steel-strong:#9bc6ea;
    --shadow: 0 1px 2px rgba(0,0,0,.4), 0 12px 28px -14px rgba(0,0,0,.55);
  }
}
:root[data-theme="dark"]{
  --bg:#10151b;
  --bg-raised:#171f27;
  --bg-card:#1b242d;
  --ink:#eef2f5;
  --ink-soft:#aab6c1;
  --ink-faint:#7e8b97;
  --line:#2b3742;
  --line-soft:#242e38;
  --steel:#6ea6d4;
  --steel-strong:#9bc6ea;
  --shadow: 0 1px 2px rgba(0,0,0,.4), 0 12px 28px -14px rgba(0,0,0,.55);
}
/* fixed brand surfaces — same in both themes */
:root{
  --deep:#152c3f;
  --deep-2:#0f202e;
  --on-deep:#eef3f7;
  --on-deep-soft:#a9bccb;
  --safety:#f2a900;
  --safety-ink:#2a1c00;
  --line-deep:#28455c;
}

/* ============ RESET / BASE ============ */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:'IBM Plex Sans', system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
h1,h2,h3{ font-family:'Oswald', system-ui, sans-serif; line-height:1.1; margin:0; text-wrap:balance; }
p{ margin:0; }
a{ color:inherit; }
ul{ margin:0; padding:0; list-style:none; }
.mono{ font-family:'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace; font-variant-numeric:tabular-nums; }

.eyebrow{
  font-family:'IBM Plex Mono', monospace;
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--steel);
  display:flex;
  align-items:center;
  gap:.6em;
}
.eyebrow::before{
  content:"";
  width:18px; height:2px;
  background:var(--safety);
  display:inline-block;
  flex:none;
}
.eyebrow.on-deep{ color:var(--on-deep-soft); }
.eyebrow.on-deep::before{ background:var(--safety); }

.wrap{ max-width:1180px; margin:0 auto; padding-inline:24px; }
@media (max-width:640px){ .wrap{ padding-inline:18px; } }

section{ padding-block:clamp(56px,8vw,96px); }

.rule{ border:none; border-top:1px solid var(--line); margin:0; }

h2.title{ font-size:clamp(1.7rem,3.2vw,2.5rem); font-weight:600; letter-spacing:-.01em; margin-top:.5rem; max-width:20ch; }
.lede{ font-size:1.05rem; color:var(--ink-soft); max-width:62ch; margin-top:1rem; }

/* ============ CORNER TICKS (blueprint sheet marks) ============ */
.tick-frame{ position:relative; }
.tick{ position:absolute; width:16px; height:16px; border:2px solid var(--safety); opacity:.9; }
.tick-tl{ top:-1px; left:-1px; border-right:none; border-bottom:none; }
.tick-tr{ top:-1px; right:-1px; border-left:none; border-bottom:none; }
.tick-bl{ bottom:-1px; left:-1px; border-right:none; border-top:none; }
.tick-br{ bottom:-1px; right:-1px; border-left:none; border-top:none; }

/* ============ BUTTONS ============ */
.btn{
  display:inline-flex; align-items:center; gap:.5em;
  font-family:'IBM Plex Mono', monospace;
  font-size:.82rem; font-weight:600; letter-spacing:.06em; text-transform:uppercase;
  padding:.9em 1.5em;
  border-radius:3px;
  border:1px solid transparent;
  cursor:pointer;
  text-decoration:none;
  transition:transform 150ms ease-out, background 150ms ease-out, border-color 150ms ease-out;
}
.btn:focus-visible{ outline:2px solid var(--safety); outline-offset:2px; }
.btn-primary{ background:var(--safety); color:var(--safety-ink); }
.btn-primary:hover{ transform:translateY(-1px); background:#ffb812; }
.btn-ghost-deep{ background:transparent; color:var(--on-deep); border-color:var(--line-deep); }
.btn-ghost-deep:hover{ border-color:var(--on-deep-soft); transform:translateY(-1px); }
.btn-ghost{ background:transparent; color:var(--ink); border-color:var(--line); }
.btn-ghost:hover{ border-color:var(--steel); transform:translateY(-1px); }

/* ============ NAV ============ */
header{
  position:sticky; top:0; z-index:40;
  background:var(--deep-2);
  border-bottom:1px solid var(--line-deep);
}
.nav{ display:flex; align-items:center; justify-content:space-between; gap:24px; padding-block:14px; }
.logo{ display:flex; align-items:center; height:30px; }
.logo img{ height:100%; width:auto; }
.navlinks{ display:flex; align-items:center; gap:28px; }
.navlinks a{
  font-family:'IBM Plex Mono', monospace; font-size:.78rem; font-weight:500;
  letter-spacing:.05em; text-transform:uppercase;
  color:var(--on-deep-soft); text-decoration:none;
  transition:color 150ms ease-out;
}
.navlinks a:hover{ color:var(--on-deep); }
.navlinks a:focus-visible{ outline:2px solid var(--safety); outline-offset:4px; }
@media (max-width:860px){ .navlinks{ display:none; } }

/* ============ HERO ============ */
.hero{
  position:relative;
  background:var(--bg-raised);
  overflow:hidden;
  padding-block:clamp(56px,9vw,104px);
  border-bottom:1px solid var(--line);
}
.hero::before{
  content:"";
  position:absolute; inset:0;
  background-image:
    linear-gradient(var(--line-soft) 1px, transparent 1px),
    linear-gradient(90deg, var(--line-soft) 1px, transparent 1px);
  background-size:34px 34px;
  -webkit-mask-image:linear-gradient(to bottom, black, transparent 92%);
          mask-image:linear-gradient(to bottom, black, transparent 92%);
  pointer-events:none;
}
.hero-inner{ position:relative; display:grid; grid-template-columns:1.15fr .85fr; gap:56px; align-items:center; }
@media (max-width:900px){ .hero-inner{ grid-template-columns:1fr; } }
.hero h1{ font-size:clamp(2.15rem,4.4vw,3.6rem); font-weight:700; letter-spacing:-.015em; margin-top:.6rem; color:var(--ink); }
.hero h1 em{ font-style:normal; color:var(--steel); }
.hero .lede{ font-size:1.1rem; }
.hero-ctas{ display:flex; gap:14px; flex-wrap:wrap; margin-top:2rem; }

.spec-strip{
  margin-top:2.75rem;
  display:grid; grid-template-columns:repeat(3,1fr);
  border:1px solid var(--line); border-radius:4px;
  background:var(--bg-card);
  overflow:hidden;
}
.spec-strip > div{ padding:16px 18px; border-left:1px solid var(--line); }
.spec-strip > div:first-child{ border-left:none; }
@media (max-width:560px){
  .spec-strip{ grid-template-columns:1fr; }
  .spec-strip > div{ border-left:none; border-top:1px solid var(--line); }
  .spec-strip > div:first-child{ border-top:none; }
}
.spec-num{ font-family:'IBM Plex Mono',monospace; font-size:1.5rem; font-weight:600; color:var(--steel-strong); }
.spec-num-sm{ font-size:1rem; line-height:1.3; }
.spec-label{ font-size:.78rem; color:var(--ink-soft); margin-top:.2rem; }

.hero-figure{ position:relative; padding:20px; }
.hero-figure img{ width:100%; height:auto; border-radius:6px; }
.hero-figure-cap{
  margin-top:12px; font-family:'IBM Plex Mono',monospace; font-size:.72rem;
  letter-spacing:.06em; text-transform:uppercase; color:var(--ink-faint); text-align:center;
}

/* ============ SERVICIOS ============ */
.svc-grid{ margin-top:2.75rem; display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:6px; overflow:hidden; }
@media (max-width:820px){ .svc-grid{ grid-template-columns:1fr; } }
.svc-card{ background:var(--bg-raised); padding:28px 26px; display:flex; flex-direction:column; gap:12px; }
.svc-tag{ font-family:'IBM Plex Mono',monospace; font-size:.7rem; color:var(--ink-faint); letter-spacing:.08em; }
.svc-card h3{ font-size:1.3rem; font-weight:600; color:var(--ink); }
.svc-card p{ color:var(--ink-soft); font-size:.95rem; }
.svc-list{ margin-top:2.25rem; display:grid; grid-template-columns:repeat(2,1fr); gap:10px 32px; }
@media (max-width:700px){ .svc-list{ grid-template-columns:1fr; } }
.svc-list li{ display:flex; gap:12px; align-items:baseline; font-size:.96rem; color:var(--ink-soft); }
.svc-list li::before{ content:"—"; color:var(--steel); flex:none; }

/* ============ EQUIPO ============ */
.eq-group{ margin-top:2.75rem; }
.eq-group + .eq-group{ margin-top:2.5rem; }
.eq-group-label{ font-family:'IBM Plex Mono',monospace; font-size:.75rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-faint); padding-bottom:.6rem; border-bottom:1px solid var(--line); }
.eq-grid{ margin-top:1.25rem; display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:18px; }
.eq-card{ background:var(--bg-card); border:1px solid var(--line); border-radius:8px; overflow:hidden; box-shadow:var(--shadow); }
.eq-photo{ aspect-ratio:4/5; background:var(--bg-card); display:flex; align-items:center; justify-content:center; padding:8px; }
.eq-photo img{ width:100%; height:100%; object-fit:contain; }
.eq-cap{ padding:12px 14px 14px; border-top:1px solid var(--line); }
.eq-cap .model{ font-family:'IBM Plex Mono',monospace; font-size:.72rem; font-weight:600; color:var(--steel-strong); letter-spacing:.03em; }
.eq-cap .kind{ font-size:.82rem; color:var(--ink-soft); margin-top:.15rem; }

/* ============ NOSOTROS (deep band) ============ */
.deep{ background:var(--deep); color:var(--on-deep); border-top:1px solid var(--line-deep); border-bottom:1px solid var(--line-deep); }
.deep h2.title{ color:var(--on-deep); }
.deep .lede{ color:var(--on-deep-soft); }
.pillars{ margin-top:2.75rem; display:grid; grid-template-columns:repeat(3,1fr); gap:0; border-top:1px solid var(--line-deep); }
@media (max-width:820px){ .pillars{ grid-template-columns:1fr; } }
.pillar{ padding:28px 30px 0; border-left:1px solid var(--line-deep); }
.pillar:first-child{ border-left:none; padding-left:0; }
@media (max-width:820px){ .pillar{ border-left:none; border-top:1px solid var(--line-deep); padding:24px 0 0; } .pillar:first-child{ border-top:none; } }
.pillar-num{ font-family:'IBM Plex Mono',monospace; font-size:.75rem; color:var(--safety); letter-spacing:.08em; }
.pillar h3{ font-size:1.15rem; font-weight:600; margin-top:.5rem; color:var(--on-deep); }
.pillar p{ margin-top:.75rem; font-size:.92rem; color:var(--on-deep-soft); line-height:1.65; }

/* ============ CLIENTES ============ */
.client-row{ margin-top:2.5rem; display:flex; flex-wrap:wrap; gap:12px; }
.client-tag{
  font-family:'IBM Plex Mono',monospace; font-size:.85rem; font-weight:500;
  letter-spacing:.03em;
  padding:.85em 1.2em;
  background:var(--bg-card); border:1px solid var(--line); border-radius:4px;
  color:var(--ink);
}
.client-note{ margin-top:1.75rem; font-size:.85rem; color:var(--ink-faint); max-width:60ch; }

/* ============ TRABAJOS ============ */
.work-grid{ margin-top:2.75rem; display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:22px; }
.work-card{ background:var(--bg-card); border:1px solid var(--line); border-radius:8px; overflow:hidden; box-shadow:var(--shadow); transition:transform 180ms ease-out; }
.work-card:hover{ transform:translateY(-3px); }
.work-photo{ aspect-ratio:4/3.4; overflow:hidden; background:var(--bg-card); }
.work-photo img{ width:100%; height:100%; object-fit:cover; }
.work-cap{ padding:13px 15px; border-top:1px solid var(--line); font-size:.88rem; color:var(--ink-soft); }

/* ============ CONTACTO ============ */
.cta-box{
  margin-top:2.5rem;
  background:var(--bg-raised);
  border:1px solid var(--line);
  border-radius:10px;
  padding:clamp(28px,5vw,48px);
  display:grid; grid-template-columns:1.2fr 1fr; gap:40px;
  position:relative;
}
@media (max-width:820px){ .cta-box{ grid-template-columns:1fr; } }
.cta-box h2{ font-size:clamp(1.5rem,3vw,2.1rem); font-weight:600; }
.cta-box .lede{ margin-top:.9rem; }
.contact-field{ display:flex; justify-content:space-between; gap:16px; padding:12px 0; border-top:1px solid var(--line); font-size:.92rem; }
.contact-field:first-child{ border-top:none; }
.contact-field .k{ color:var(--ink-faint); font-family:'IBM Plex Mono',monospace; font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; }
.contact-field .v{ color:var(--ink-soft); text-align:right; }
.placeholder-note{
  margin-top:14px; font-size:.78rem; color:var(--ink-faint);
  background:var(--bg-card); border:1px dashed var(--line); border-radius:4px; padding:10px 12px;
}

footer{ background:var(--deep-2); color:var(--on-deep-soft); }
.foot-inner{ padding-block:28px; display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; font-size:.8rem; }
.foot-inner .logo img{ height:22px; }
