/* ERA static sites — shared base.
 *
 * Every value here is the marketing site's (era-wallet.com, the branded
 * CUSTOM_CODE tiles): near-black #07080F, orange #FF6A1A, Chakra Petch for
 * display, IBM Plex Sans for copy, IBM Plex Mono for labels and codes, pill
 * CTAs with an orange glow, 16px cards on a 7% white border. The two pages
 * that load this are meant to read as siblings of era-wallet.com/companion-app.
 *
 * Fonts are self-hosted (SIL OFL) under /s/fonts — no third-party origin,
 * so the pages keep working where CloudFront and Google are unreachable.
 */

@font-face { font-family: 'Chakra Petch'; font-style: normal; font-weight: 600; font-display: swap; src: url('/s/fonts/ChakraPetch-600.woff2') format('woff2'); }
@font-face { font-family: 'Chakra Petch'; font-style: normal; font-weight: 700; font-display: swap; src: url('/s/fonts/ChakraPetch-700.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 300; font-display: swap; src: url('/s/fonts/IBMPlexSans-300.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('/s/fonts/IBMPlexSans-400.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('/s/fonts/IBMPlexSans-500.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url('/s/fonts/IBMPlexMono-400.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url('/s/fonts/IBMPlexMono-500.woff2') format('woff2'); }

:root {
  --bg: #07080F;
  --bg-2: #0D0E1C;
  --card: rgba(255, 255, 255, 0.04);
  --card-2: #0F1020;
  --border: rgba(255, 255, 255, 0.07);
  --border-2: rgba(255, 255, 255, 0.12);
  --text: #FFFFFF;
  --text-2: #B0B0CC;
  --text-3: #8888AA;
  --dim: rgba(255, 255, 255, 0.45);
  --orange: #FF6A1A;
  --orange-2: #FF8C42;
  --orange-tint: rgba(255, 106, 26, 0.10);
  --orange-line: rgba(255, 106, 26, 0.30);
  --green: #22D47A;
  --red: #E03030;
  --amber: #F59E0B;
  --display: 'Chakra Petch', 'Impact', sans-serif;
  --body: 'IBM Plex Sans', 'Helvetica Neue', -apple-system, system-ui, sans-serif;
  --mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
  --wrap: 1120px;
  --pad: 24px;
}

*, *::before, *::after { box-sizing: border-box; }
html { background: var(--bg); color-scheme: dark; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  color: var(--text);
  font-family: var(--body);
  font-weight: 400;
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, p, ul, ol, dl, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
code, .mono { font-family: var(--mono); }
:focus-visible { outline: 2px solid var(--orange-2); outline-offset: 3px; border-radius: 4px; }
/* Author display values (grid/flex on cards) must not resurrect a hidden node. */
[hidden] { display: none !important; }

.wrap { width: 100%; max-width: var(--wrap); margin: 0 auto; padding: 0 var(--pad); }
.main { flex: 1 0 auto; }

/* ---- header / footer ---------------------------------------------------- */
.hdr { height: 64px; display: flex; align-items: center; justify-content: space-between; }
.hdr-logo img { height: 30px; width: auto; }
.hdr-nav { display: flex; gap: 22px; font-size: 13px; color: var(--text-2); }
.hdr-nav a:hover { color: var(--text); }
.hdr-nav .cur { color: var(--text); }

.ftr { border-top: 1px solid var(--border); margin-top: 72px; padding: 40px 0 28px; color: var(--text-2); font-size: 13px; font-weight: 300; }
.ftr-top { display: flex; flex-wrap: wrap; gap: 28px 48px; align-items: flex-start; justify-content: space-between; }
.ftr-logo img { height: 34px; width: auto; margin-bottom: 14px; }
.ftr-co { font-size: 12px; color: var(--text-3); line-height: 1.7; max-width: 300px; }
.ftr-cols { display: flex; gap: 48px; flex-wrap: wrap; }
.ftr-col h3 { font-family: var(--display); font-weight: 700; font-size: 12px; letter-spacing: .5px; text-transform: uppercase; color: var(--text); margin-bottom: 12px; }
.ftr-col a { display: block; padding: 3px 0; font-size: 14px; }
.ftr-col a:hover { color: var(--text); }
.ftr-legal { margin-top: 32px; padding-top: 18px; border-top: 1px solid var(--border); display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 11px; color: rgba(255,255,255,.35); }
.ftr-legal a:hover { color: var(--text-2); }

/* ---- type ---------------------------------------------------------------- */
.eyebrow {
  display: inline-flex; align-items: center; gap: 12px;
  font-family: var(--mono); font-size: 11px; font-weight: 500; letter-spacing: .18em; text-transform: uppercase;
  color: var(--orange); margin-bottom: 22px;
}
.eyebrow::before { content: ''; width: 24px; height: 1px; background: var(--orange); opacity: .8; }
.h1 { font-family: var(--display); font-weight: 700; font-size: clamp(34px, 7vw, 60px); line-height: 1.05; letter-spacing: -1px; }
.h1 em { font-style: normal; color: var(--orange); }
.h2 { font-family: var(--display); font-weight: 700; font-size: clamp(26px, 4vw, 38px); line-height: 1.1; letter-spacing: -.5px; }
.h2 em { font-style: normal; color: var(--orange); }
.h3 { font-family: var(--display); font-weight: 600; font-size: 16px; letter-spacing: .2px; }
.lead { font-size: 17px; line-height: 1.7; font-weight: 300; color: var(--text-2); max-width: 540px; }
.lead strong, .copy strong { color: var(--text); font-weight: 500; }
.copy { font-size: 15px; line-height: 1.65; font-weight: 300; color: var(--text-2); }
.copy a, .lead a { color: var(--orange-2); }
.copy a:hover, .lead a:hover { color: var(--text); }
.small { font-size: 13px; color: var(--text-3); font-weight: 300; line-height: 1.6; }
.label { font-family: var(--mono); font-size: 10px; letter-spacing: .8px; text-transform: uppercase; color: var(--dim); }

/* ---- buttons -------------------------------------------------------------- */
.btn {
  position: relative; overflow: hidden; isolation: isolate;
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 52px; padding: 0 32px; border-radius: 100px;
  background: var(--orange); color: #fff;
  font-family: var(--display); font-weight: 600; font-size: 14px; letter-spacing: .8px; text-transform: uppercase;
  box-shadow: 0 0 32px rgba(255,106,26,.4), 0 4px 20px rgba(0,0,0,.5);
  transition: transform .25s, box-shadow .25s, background .25s;
  white-space: nowrap;
}
.btn:hover { background: var(--orange-2); transform: translateY(-2px); box-shadow: 0 0 52px rgba(255,106,26,.65), 0 8px 28px rgba(0,0,0,.5); }
.btn::after {
  content: ''; position: absolute; top: 0; bottom: 0; left: -75%; width: 50%;
  background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,.25) 50%, transparent 70%);
  transform: skewX(-15deg); opacity: 0;
}
.btn:hover::after { animation: shine .55s ease-out forwards; }
@keyframes shine { from { left: -75%; opacity: 1; } to { left: 125%; opacity: 0; } }
.btn svg { width: 18px; height: 18px; flex: none; }
.btn-ghost {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 40px; padding: 0 20px; border-radius: 100px;
  background: var(--orange-tint); border: 1px solid var(--orange-line); color: var(--orange-2);
  font-size: 13px; font-weight: 500; transition: background .2s, border-color .2s;
}
.btn-ghost:hover { background: rgba(255,106,26,.2); border-color: rgba(255,106,26,.6); }
.btn-ghost { white-space: nowrap; }
.btn-ghost svg { width: 14px; height: 14px; flex: none; }
.btn-link { display: inline-flex; align-items: center; gap: 8px; color: var(--text-2); font-size: 14px; transition: color .2s; }
.btn-link:hover { color: var(--text); }
.btn-link svg { width: 15px; height: 15px; }

/* ---- surfaces -------------------------------------------------------------- */
.card { background: var(--card); border: 1px solid var(--border); border-radius: 16px; padding: 28px; }
.note { background: rgba(255,255,255,.02); border-left: 2px solid rgba(255,106,26,.28); border-radius: 8px; padding: 16px 20px; }
.badge {
  display: inline-flex; align-items: center; gap: 12px;
  background: rgba(7,8,18,.93); border: 1px solid rgba(255,255,255,.1); border-radius: 9px; padding: 11px 16px;
  box-shadow: 0 8px 32px rgba(0,0,0,.7);
}
.badge-t { font-family: var(--display); font-weight: 600; font-size: 11px; letter-spacing: .5px; color: var(--text); }
.badge-s { font-family: var(--mono); font-size: 10px; color: var(--text-3); margin-top: 2px; }
.dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.dot-green { background: var(--green); box-shadow: 0 0 10px rgba(34,212,122,.7); }
.dot-orange { background: var(--orange); box-shadow: 0 0 10px rgba(255,106,26,.7); }
.dot-gray { background: var(--text-3); box-shadow: 0 0 8px rgba(136,136,170,.5); }
.dot-red { background: var(--red); box-shadow: 0 0 10px rgba(224,48,48,.7); }
.dot-pulse { animation: pulse 2s ease-in-out infinite; }
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

.pill { display: inline-flex; align-items: center; gap: 8px; font-family: var(--mono); font-weight: 600; font-size: 10px; letter-spacing: .5px; text-transform: uppercase; padding: 4px 10px; border-radius: 100px; border: 1px solid transparent; }
.pill-ok { background: rgba(34,212,122,.12); color: var(--green); border-color: rgba(34,212,122,.2); }
.pill-warn { background: rgba(245,158,11,.12); color: var(--amber); border-color: rgba(245,158,11,.25); }
.pill-bad { background: rgba(224,48,48,.12); color: #FF6B6B; border-color: rgba(224,48,48,.25); }
.pill-muted { background: rgba(255,255,255,.05); color: var(--text-3); border-color: rgba(255,255,255,.1); }
.pill-orange { background: var(--orange-tint); color: var(--orange); border-color: rgba(255,106,26,.2); }

.steps { display: grid; gap: 16px; }
.step { display: grid; grid-template-columns: 32px 1fr; gap: 16px; align-items: start; }
.step-n { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; background: var(--orange-tint); border: 1px solid rgba(255,106,26,.25); color: var(--orange); font-family: var(--display); font-weight: 700; font-size: 13px; }
.step-t { font-family: var(--display); font-weight: 600; font-size: 15px; margin-bottom: 4px; }

/* ---- atmosphere ------------------------------------------------------------ */
.grid-bg { position: absolute; inset: 0; pointer-events: none; background-image: linear-gradient(rgba(255,255,255,.013) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.013) 1px, transparent 1px); background-size: 52px 52px; mask-image: linear-gradient(180deg, #000 60%, transparent); -webkit-mask-image: linear-gradient(180deg, #000 60%, transparent); }
.glow { position: absolute; pointer-events: none; border-radius: 50%; filter: blur(30px); background: radial-gradient(ellipse 68% 62% at 58% 52%, rgba(255,60,3,.28) 0%, rgba(190,35,0,.10) 40%, transparent 65%); animation: breathe 5s ease-in-out infinite; }
@keyframes breathe { 0%, 100% { opacity: .85; } 50% { opacity: 1; } }
.device { filter: drop-shadow(0 50px 80px rgba(0,0,0,.9)) drop-shadow(0 0 3px rgba(0,0,0,.8)); animation: float 5.5s ease-in-out infinite; }
@keyframes float { 0%, 100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-14px) rotate(.4deg); } }

@media (prefers-reduced-motion: reduce) {
  .device, .glow, .dot-pulse { animation: none; }
  .btn, .btn-ghost, .btn-link { transition: none; }
  .btn:hover::after { animation: none; }
}
