/* ============================================================
   site.css — shared styles for gianmarco.cloud expertise pages
   Design tokens & base lifted from the homepage so the pillar
   pages match exactly. The homepage keeps its own inline styles;
   this file powers /cyber/ and the Spanish page /es/ciberseguridad/.
   Keep visual parity with index.html.
   ============================================================ */

:root{
  --bg:#FFFFFF;
  --text:#141414;
  --muted:#6B6B6B;
  --faint:#A3A3A3;
  --accent:#141414;
  --border:#E4E4E4;
  --grain:.04;
  --glow:rgba(0,0,0,.025);
  --mono-filter:none;
  --serif:'Cormorant Garamond',Georgia,serif;
  --sans:'Outfit',-apple-system,sans-serif;
  --mono:'Fira Code',monospace;
  --tt:.5s cubic-bezier(.4,0,.2,1);
}
[data-theme="dark"]{
  --bg:#0B0B0B;
  --text:#F4F4F4;
  --muted:#9A9A9A;
  --faint:#5C5C5C;
  --accent:#F4F4F4;
  --border:#262626;
  --grain:.05;
  --glow:rgba(255,255,255,.035);
  --mono-filter:invert(1);
}

*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;scroll-behavior:smooth}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--sans);
  position:relative;
  transition:background var(--tt),color var(--tt);
  overflow-x:hidden;
}
body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(ellipse 58% 46% at 50% 32%,var(--glow),transparent 70%);
  transition:background var(--tt);
}
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:2;
  opacity:var(--grain);transition:opacity var(--tt);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ── calling-card frame (brand signature) ── */
.frame{
  position:fixed;inset:20px;z-index:1;pointer-events:none;
  border:1px solid var(--border);border-radius:3px;
  transition:border-color var(--tt);
  animation:fadeIn 1.4s var(--tt) .15s both;
}

/* ── page header / nav ── */
.page-head{
  position:relative;z-index:3;
  max-width:760px;margin:0 auto;
  padding:46px 40px 0;
  text-align:center;
  animation:up .8s var(--tt) .1s both;
}
.page-ctrls{position:absolute;top:42px;right:40px;display:flex;align-items:center;gap:16px}
.page-mark{display:inline-flex;width:46px;flex:none}
.page-mark img{
  width:100%;height:auto;display:block;filter:var(--mono-filter,none);
  transition:transform .8s cubic-bezier(.22,1,.36,1),filter var(--tt);
}
.page-mark:hover img{transform:rotate(360deg)}
.page-nav{display:flex;align-items:center;gap:20px;flex-wrap:wrap;justify-content:flex-end}
.page-nav a{
  font-family:var(--mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted);text-decoration:none;transition:color .35s ease;
}
.page-nav a:hover{color:var(--accent)}
.page-nav a[aria-current="page"]{color:var(--accent)}
.page-lang{
  font-family:var(--mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted);text-decoration:none;border:1px solid var(--border);border-radius:100px;
  padding:5px 11px;transition:color .35s ease,border-color .35s ease;
}
.page-lang:hover{color:var(--accent);border-color:var(--accent)}
.ctl{
  background:none;border:none;cursor:pointer;color:var(--muted);
  padding:4px;line-height:1;display:inline-flex;align-items:center;
  transition:color .35s ease;
}
.ctl:hover{color:var(--accent)}
.ctl svg{width:15px;height:15px;display:block}
.icon-sun{display:none}
[data-theme="dark"] .icon-sun{display:block}
[data-theme="dark"] .icon-moon{display:none}

/* ── article ── */
.article{
  position:relative;z-index:3;
  max-width:680px;margin:0 auto;
  padding:118px 40px 96px;
}
.article .kicker{
  font-family:var(--mono);font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--accent);margin-bottom:22px;display:flex;align-items:center;gap:13px;
}
.article .kicker::before{content:"";height:1px;width:30px;background:var(--border);transition:background var(--tt)}
.article h1{
  font-family:var(--serif);font-weight:500;letter-spacing:-.01em;
  font-size:clamp(2.3rem,5.6vw,3.5rem);line-height:1.06;color:var(--text);
}
.article h1 em{font-style:italic}
.article .lede{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(1.28rem,2.7vw,1.55rem);line-height:1.5;
  color:var(--muted);margin-top:24px;
}
.article h2{
  font-family:var(--serif);font-weight:500;letter-spacing:-.005em;
  font-size:clamp(1.5rem,3.1vw,1.95rem);line-height:1.2;color:var(--text);
  margin-top:56px;margin-bottom:16px;
}
.article h3{
  font-family:var(--serif);font-weight:500;font-size:1.32rem;line-height:1.3;color:var(--text);
  margin-top:34px;margin-bottom:10px;
}
.article p{
  font-family:var(--sans);font-weight:300;font-size:1.04rem;line-height:1.78;
  color:var(--text);margin-bottom:18px;
}
.article p.note{font-size:.92rem;color:var(--muted);font-style:italic}
.article ul,.article ol{margin:0 0 18px 1.15em;padding:0}
.article li{
  font-family:var(--sans);font-weight:300;font-size:1.04rem;line-height:1.7;
  color:var(--text);margin-bottom:9px;
}
.article strong{font-weight:500;color:var(--text)}
.article a{
  color:var(--text);text-decoration:underline;text-decoration-color:var(--faint);
  text-underline-offset:3px;transition:text-decoration-color .35s ease;
}
.article a:hover{text-decoration-color:var(--accent)}
.article hr{
  border:none;height:1px;background:var(--border);
  width:64px;margin:48px 0;transition:background var(--tt);
}

/* topical cross-links at the foot of an article */
.article .cross-link{
  display:flex;align-items:center;justify-content:space-between;gap:22px;
  margin-top:30px;padding:19px 0;border-top:1px solid var(--border);
  text-decoration:none;color:inherit;transition:border-color var(--tt);
}
.cross-link .cl-label{
  font-family:var(--mono);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--muted);display:block;margin-bottom:7px;
}
.cross-link .cl-title{
  font-family:var(--serif);font-size:1.4rem;font-weight:500;line-height:1.25;
  display:block;transition:color .35s ease;
}
.cross-link:hover .cl-title{color:var(--accent)}
.cross-link .cl-arrow{flex-shrink:0;color:var(--faint);transition:transform .35s ease,color .35s ease}
.cross-link:hover .cl-arrow{transform:translateX(4px);color:var(--accent)}
.cross-link .cl-arrow svg{display:block;width:18px;height:18px}

/* ── footer ── */
footer{
  padding:50px 40px 58px;border-top:1px solid var(--border);text-align:center;
  position:relative;z-index:3;transition:border-color var(--tt);
}
.foot-copy{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;color:var(--muted)}
.foot-copy a{color:var(--muted);text-decoration:none;transition:color .35s ease}
.foot-copy a:hover{color:var(--accent)}

@keyframes up{from{opacity:0;transform:translateY(11px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

@media (max-width:560px){
  .frame{inset:13px}
  .page-head{padding:32px 22px 0;gap:14px}
  .page-nav{gap:14px}
  .article{padding:72px 22px 64px}
  footer{padding:42px 22px 50px}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;animation-delay:0ms!important}
}
