/* ============================================================
   CopasSec — Portfólio do Educador
   Design tokens + components. Dark-first, magenta accent.
   Display font slot: --font-display (drop Altima here later).
   ============================================================ */

:root{
  /* ---- surfaces (deep, slightly cool near-black) ---- */
  --bg:        #08090c;
  --bg-1:      #0d0e12;
  --bg-2:      #14151b;
  --bg-3:      #1c1e25;
  --line:      rgba(242,243,245,.10);
  --line-2:    rgba(242,243,245,.18);

  /* ---- ink (warm-ish white + greys) ---- */
  --fg:        #f3f4f6;
  --fg-dim:    #a3a5ad;
  --fg-mute:   #62646d;

  /* ---- accents (share chroma/lightness, vary hue) ---- */
  --accent:    oklch(0.68 0.25 354);   /* magenta — primary */
  --accent-press: oklch(0.60 0.25 354);
  --accent-2:  oklch(0.70 0.16 250);   /* electric blue — rare, "live" data */
  --accent-3:  oklch(0.80 0.16 90);    /* amber — used only in highlight marks occasionally */
  --on-accent: #0a0506;

  /* ---- type ---- */
  --font-display: "CopasTactics", "Space Grotesk", "Archivo", system-ui, sans-serif;
  --font-body:    "Space Grotesk", system-ui, -apple-system, sans-serif;
  --font-mono:    "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;

  /* ---- spacing / shape ---- */
  --pad: clamp(20px, 5vw, 96px);
  --radius: 4px;
  --maxw: 1400px;

  --ease: cubic-bezier(.2,.7,.2,1);
  --ease-out: cubic-bezier(.16,1,.3,1);
}

/* accent palette swapping (driven by Tweaks) */
[data-accent="blue"]{   --accent: oklch(0.70 0.18 250); --accent-press: oklch(0.62 0.18 250); }
[data-accent="amber"]{  --accent: oklch(0.80 0.16 78);  --accent-press: oklch(0.72 0.16 78); --on-accent:#1a1206; }
[data-accent="magenta"]{--accent: oklch(0.68 0.25 354); --accent-press: oklch(0.60 0.25 354); }

*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font-family:var(--font-body);
  font-size:17px;
  line-height:1.55;
  letter-spacing:.005em;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
body[data-motion="off"] *{ animation:none !important; transition:none !important; }

::selection{ background:var(--accent); color:var(--on-accent); }

a{ color:inherit; text-decoration:none; }
img{ max-width:100%; display:block; }
h1,h2,h3,h4{ margin:0; font-family:var(--font-display); font-weight:800; line-height:.94; letter-spacing:-.02em; }
p{ margin:0; text-wrap:pretty; }

/* ---------- layout helpers ---------- */
.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--pad); }
.section{ position:relative; padding-block:clamp(80px,11vw,200px); content-visibility:auto; contain-intrinsic-size:auto 900px; }
.section + .section{ border-top:1px solid var(--line); }

/* monospace eyebrow / kicker */
.kicker{
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--fg-mute);
  display:flex; align-items:center; gap:12px;
}
.kicker::before{
  content:""; width:34px; height:1px; background:var(--accent);
  display:inline-block; flex:none;
}
.kicker--plain::before{ display:none; }

/* highlight bar on text (reference DNA) */
.mark{
  background:var(--accent);
  color:var(--on-accent);
  padding:.02em .22em;
  box-decoration-break:clone;
  -webkit-box-decoration-break:clone;
}
.ul-accent{
  background-image:linear-gradient(var(--accent),var(--accent));
  background-size:100% .12em; background-position:0 .92em; background-repeat:no-repeat;
}

/* ---------- buttons ---------- */
.btn{
  --b:var(--fg);
  font-family:var(--font-mono); font-size:13px; letter-spacing:.06em;
  display:inline-flex; align-items:center; gap:10px;
  padding:14px 22px; border:1px solid var(--line-2); border-radius:var(--radius);
  background:transparent; color:var(--fg); cursor:pointer;
  position:relative; overflow:hidden; transition:.35s var(--ease);
  text-transform:uppercase;
}
.btn .arr{ transition:transform .35s var(--ease); }
.btn:hover{ border-color:var(--fg); }
.btn:hover .arr{ transform:translateX(4px); }
.btn--accent{
  background:var(--accent); color:var(--on-accent); border-color:var(--accent);
  font-weight:600;
}
.btn--accent:hover{ background:var(--accent-press); border-color:var(--accent-press); }
.btn--lg{ padding:18px 30px; font-size:14px; }

/* ---------- custom cursor ---------- */
.cursor-dot,.cursor-ring{
  position:fixed; top:0; left:0; pointer-events:none; z-index:9000;
  transform:translate(-50%,-50%); border-radius:50%; mix-blend-mode:difference;
}
.cursor-dot{ width:6px; height:6px; background:#fff; }
.cursor-ring{
  width:34px; height:34px; border:1px solid rgba(255,255,255,.6);
  transition:width .25s var(--ease), height .25s var(--ease), border-color .25s, background .25s;
}
.cursor-ring.is-hover{ width:56px; height:56px; border-color:transparent; background:rgba(255,255,255,.14); }
@media (hover:none){ .cursor-dot,.cursor-ring{ display:none; } }
.cursor-dot,.cursor-ring{ display:none; }

/* ---------- scroll reveal ---------- */
.reveal{ opacity:0; transform:translateY(26px); transition:opacity .9s var(--ease-out), transform .9s var(--ease-out); }
.reveal.in{ opacity:1; transform:none; }
.reveal[data-d="1"]{ transition-delay:.08s; }
.reveal[data-d="2"]{ transition-delay:.16s; }
.reveal[data-d="3"]{ transition-delay:.24s; }
.reveal[data-d="4"]{ transition-delay:.32s; }

/* ---------- top nav ---------- */
.nav{
  position:fixed; inset:0 0 auto 0; z-index:800;
  display:flex; align-items:center; justify-content:space-between;
  padding:18px var(--pad);
  mix-blend-mode:normal; transition:background .4s var(--ease), border-color .4s, padding .4s;
  border-bottom:1px solid transparent;
}
.nav.scrolled{
  background:color-mix(in srgb, var(--bg) 80%, transparent);
  backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid var(--line);
  padding-block:13px;
}
.brand{ display:flex; align-items:center; gap:11px; font-family:var(--font-display); font-weight:800; font-size:19px; letter-spacing:-.01em; }
.brand .glyph{
  width:26px; height:26px; flex:none; border:1.5px solid var(--accent);
  display:grid; place-items:center; color:var(--accent); font-family:var(--font-mono); font-size:13px; font-weight:700;
  position:relative;
}
.brand .glyph::after{ content:""; position:absolute; inset:3px; border:1px solid color-mix(in srgb,var(--accent) 35%,transparent); }

/* ---------- logo (Copas.Sec wordmark) ---------- */
.logo{ display:flex; align-items:center; gap:13px; }
.logo .wm{ font-family:var(--font-display); font-weight:400; font-synthesis:none; font-size:21px; line-height:1; letter-spacing:.02em; text-transform:none; }
[data-display="tactics"] .logo .wm{ letter-spacing:.05em; }
.logo .dot{ color:var(--accent); }

/* hero/title wordmark — retro "game logo" hard pixel shadow */
.logo-type{ position:relative; }
.logo-type .dot{ color:var(--accent); }
[data-display="tactics"] .logo-type{ text-shadow:.05em .055em 0 var(--accent), 0 2px 28px rgba(0,0,0,.5); }
[data-display="grotesk"] .logo-type{ text-shadow:.035em .04em 0 var(--accent), 0 2px 28px rgba(0,0,0,.5); }
.nav-links{ display:flex; gap:30px; align-items:center; }
.nav-links a{
  font-family:var(--font-mono); font-size:12.5px; letter-spacing:.06em; color:var(--fg-dim);
  text-transform:uppercase; position:relative; padding:4px 0; transition:color .25s;
}
.nav-links a::after{ content:""; position:absolute; left:0; bottom:-2px; height:1.5px; width:0; background:var(--accent); transition:width .3s var(--ease); }
.nav-links a:hover{ color:var(--fg); }
.nav-links a:hover::after{ width:100%; }
.nav-cta{ }
.nav-burger{ display:none; }
@media (max-width:880px){
  .nav-links{ display:none; }
}
/* mobile nav: drop the blur. backdrop-filter on a fixed nav re-rasterises
   the live page behind it every frame of scroll — one of the heaviest
   single effects to pay on a mobile GPU. */
@media (max-width:820px){
  .nav.scrolled{ background:color-mix(in srgb, var(--bg) 96%, transparent); backdrop-filter:none; }
}

/* ---------- stat figures ---------- */
.stat .num{ font-family:var(--font-display); font-weight:800; line-height:.9; letter-spacing:-.02em; }
.stat .lbl{ font-family:var(--font-mono); font-size:11.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--fg-mute); }
/* "+" prefix on every stat — accent-coloured, never a "dry" number */
.pls{ color:var(--accent); }

/* ---------- generic card ---------- */
.card{
  background:var(--bg-1); border:1px solid var(--line); border-radius:var(--radius);
  padding:28px; transition:border-color .35s, transform .35s var(--ease), background .35s;
  position:relative;
}
.card:hover{ border-color:var(--line-2); transform:translateY(-3px); }

/* ---------- footer ---------- */
.footer{ border-top:1px solid var(--line); padding-block:60px 40px; }

/* ---------- placeholder media ---------- */
.ph{
  position:relative; background:
    repeating-linear-gradient(135deg, var(--bg-2) 0 10px, var(--bg-1) 10px 20px);
  border:1px solid var(--line); display:grid; place-items:center; overflow:hidden;
}
.ph span{ font-family:var(--font-mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--fg-mute);
  background:var(--bg); padding:5px 10px; border:1px solid var(--line); }

/* utility */
.mono{ font-family:var(--font-mono); }
.dim{ color:var(--fg-dim); }
.mute{ color:var(--fg-mute); }
.divline{ height:1px; background:var(--line); border:0; margin:0; }
