/* =============================================================================
   Odin - generated page design system
   -----------------------------------------------------------------------------
   Loaded alongside home.<hash>.css, which already supplies :root tokens, the nav
   and the footer. This file only adds what the generated pages need.

   Motion policy: movement is purposeful - reveals on entry, flow along the
   connection path, progress on a meter. No ambient drift, no background washes,
   no grain. Richness goes into the core element of each page, not into chrome.
   Everything degrades cleanly under prefers-reduced-motion.
   ========================================================================== */

/* ---------------------------------------------------------------- reveal ---- */
/* Content is visible by default. The hidden start state only applies once the
   inline script has set .rv-on on <html>, so a JS failure, an old browser or a
   rendering crawler still sees every section. Never hide content behind JS. */
.rv-on .rv { opacity: 0; transform: translateY(18px); transition: opacity .7s var(--ease-out), transform .7s var(--ease-out); }
.rv-on .rv.in { opacity: 1; transform: none; }
.rv-d1 { transition-delay: .07s } .rv-d2 { transition-delay: .14s }
.rv-d3 { transition-delay: .21s } .rv-d4 { transition-delay: .28s }
.rv-d5 { transition-delay: .35s } .rv-d6 { transition-delay: .42s }

@media (prefers-reduced-motion: reduce) {
  .rv-on .rv, .rv-on .rv.in { opacity: 1; transform: none; transition: none; }
  .pg-flow-dot, .pg-scan { animation: none !important; }
}

/* ------------------------------------------------------------------ hero ---- */
.pg-hero { position: relative; padding: 148px 0 72px; background: var(--bg-off); border-bottom: 1px solid var(--border); overflow: hidden; }
.pg-hero-inner { position: relative; z-index: 1; max-width: 880px; }
.pg-crumb { display: flex; align-items: center; gap: 8px; font-size: .78rem; color: var(--text-3); margin-bottom: 22px; font-family: var(--font-m); }
.pg-crumb a { color: var(--text-3); transition: color .25s } .pg-crumb a:hover { color: var(--primary) }
.pg-crumb i { font-size: .6rem; opacity: .5 }

.pg-eyebrow { display: inline-block; font-family: var(--font-m); font-size: .72rem; font-weight: 600;
  letter-spacing: .12em; text-transform: uppercase; color: var(--primary); margin-bottom: 16px; }

.pg-h1 { font-family: var(--font-d); font-weight: 900; line-height: 1.03; letter-spacing: -.02em;
  font-size: clamp(2.3rem, 5.4vw, 4rem); margin-bottom: 20px; }
.pg-h1 .grad { background: var(--gradient); -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; }

.pg-lede { font-size: clamp(1.02rem, 1.5vw, 1.2rem); line-height: 1.65; color: var(--text-2); max-width: 720px; }
.pg-lede strong { color: var(--text); font-weight: 600 }

.pg-hero-cta { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 34px; }
.pg-btn { display: inline-flex; align-items: center; gap: 10px; padding: 14px 26px; border-radius: 999px;
  font-weight: 600; font-size: .95rem; transition: transform .3s var(--ease-out), box-shadow .3s var(--ease-out); }
.pg-btn-1 { background: var(--gradient); color: #fff; }
.pg-btn-1:hover { transform: translateY(-2px); box-shadow: 0 10px 28px -10px rgba(232,75,42,.6) }
.pg-btn-2 { border: 1px solid var(--border); color: var(--text); background: var(--bg) }
.pg-btn-2:hover { border-color: var(--primary); color: var(--primary) }

/* ------------------------------------------------------------- section ---- */
.pg-sec { padding: 84px 0; }
.pg-sec.alt { background: var(--bg-off) }
.pg-sec-head { max-width: 760px; margin-bottom: 46px; }
.pg-h2 { font-family: var(--font-d); font-weight: 800; letter-spacing: -.015em; line-height: 1.12;
  font-size: clamp(1.7rem, 3.2vw, 2.5rem); margin-bottom: 14px; }
.pg-h2 .grad { background: var(--gradient); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent }
.pg-sub { font-size: 1rem; line-height: 1.7; color: var(--text-2) }

/* ------------------------------------------------- connection diagram ----- */
/* Core visual for provider pages: the account your firm issued, the provider it
   runs on, and Odin - with a packet travelling the path. */
.pg-flow { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; align-items: center; gap: 0;
  background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); padding: 38px 30px; }
@media (max-width: 820px) { .pg-flow { grid-template-columns: 1fr; gap: 26px; text-align: center } }

.pg-node { text-align: center; }
.pg-node-box { width: 96px; height: 96px; margin: 0 auto 14px; border-radius: 22px; background: var(--bg);
  border: 1px solid var(--border); display: grid; place-items: center; position: relative;
  transition: border-color .4s var(--ease-out), transform .4s var(--ease-out); }
.pg-node-box img { max-width: 54px; max-height: 40px; object-fit: contain }
.pg-node-box i { font-size: 1.6rem; color: var(--primary) }
.pg-flow:hover .pg-node-box { border-color: rgba(232,75,42,.35) }
.pg-node-label { font-weight: 700; font-size: .95rem; margin-bottom: 3px }
.pg-node-meta { font-size: .78rem; color: var(--text-3); font-family: var(--font-m) }

.pg-link { position: relative; height: 2px; min-width: 90px; overflow: hidden;
  background: linear-gradient(90deg, var(--border), rgba(232,75,42,.35), var(--border)); }
@media (max-width: 820px) { .pg-link { width: 2px; height: 54px; min-width: 0; margin: 0 auto } }
.pg-flow-dot { position: absolute; top: 50%; left: 0; width: 7px; height: 7px; margin-top: -2.5px;
  border-radius: 50%; background: var(--primary); box-shadow: 0 0 0 3px rgba(232,75,42,.16);
  animation: pgFlow 2.6s var(--ease-out) infinite; }
.pg-link:nth-of-type(4) .pg-flow-dot { animation-delay: .5s }
@keyframes pgFlow { 0% { left: -8px; opacity: 0 } 12% { opacity: 1 } 88% { opacity: 1 } 100% { left: 100%; opacity: 0 } }
@media (max-width: 820px) {
  .pg-flow-dot { top: 0; left: 50%; margin-left: -2.5px; margin-top: 0; animation-name: pgFlowV }
  @keyframes pgFlowV { 0% { top: -8px; opacity: 0 } 12% { opacity: 1 } 88% { opacity: 1 } 100% { top: 100%; opacity: 0 } }
}

/* ------------------------------------------------------------- cards ------ */
.pg-grid { display: grid; gap: 20px; }
.pg-grid.c2 { grid-template-columns: repeat(2, 1fr) }
.pg-grid.c3 { grid-template-columns: repeat(3, 1fr) }
.pg-grid.c4 { grid-template-columns: repeat(4, 1fr) }
@media (max-width: 980px) { .pg-grid.c3, .pg-grid.c4 { grid-template-columns: repeat(2, 1fr) } }
@media (max-width: 640px) { .pg-grid.c2, .pg-grid.c3, .pg-grid.c4 { grid-template-columns: 1fr } }

.pg-card { position: relative; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 26px 24px; transition: transform .4s var(--ease-out), border-color .4s var(--ease-out); }
/* Gradient hairline that draws in on hover - the accent, not a glow. */
.pg-card::after { content: ''; position: absolute; inset: 0 auto auto 0; height: 2px; width: 0;
  background: var(--gradient); border-radius: var(--radius) var(--radius) 0 0; transition: width .45s var(--ease-out) }
.pg-card:hover { transform: translateY(-3px); border-color: rgba(232,75,42,.25) }
.pg-card:hover::after { width: 100% }
.pg-card i.pg-ico { font-size: 1.15rem; color: var(--primary); margin-bottom: 14px; display: block }
.pg-card h3 { font-family: var(--font-d); font-size: 1.06rem; font-weight: 700; margin-bottom: 8px }
.pg-card p { font-size: .9rem; line-height: 1.65; color: var(--text-2) }
.pg-card p strong { color: var(--text); font-weight: 600 }

/* ------------------------------------------------------------- code ------- */
.pg-code-wrap { position: relative; background: #0E0B09; border-radius: var(--radius); overflow: hidden;
  border: 1px solid rgba(255,255,255,.08); }
.pg-code-bar { display: flex; align-items: center; gap: 8px; padding: 13px 18px; border-bottom: 1px solid rgba(255,255,255,.07) }
.pg-code-dot { width: 10px; height: 10px; border-radius: 50% }
.pg-code-name { margin-left: 8px; font-family: var(--font-m); font-size: .74rem; color: rgba(255,255,255,.42) }
.pg-code { margin: 0; padding: 22px 24px; font-family: var(--font-m); font-size: .84rem; line-height: 1.75;
  color: rgba(255,255,255,.86); overflow-x: auto; }
.pg-code .c { color: #6b7280 } .pg-code .k { color: #DBA028 } .pg-code .f { color: #E84B2A }
.pg-code .s { color: #7fb069 } .pg-code .n { color: #8ab4f8 }
/* A single scan pass on entry - reads as "it ran", then stops. */
.pg-scan { position: absolute; left: 0; right: 0; top: 0; height: 74px; pointer-events: none;
  background: linear-gradient(180deg, rgba(232,75,42,0) 0%, rgba(232,75,42,.13) 55%, rgba(232,75,42,0) 100%);
  transform: translateY(-100%); }
.in .pg-scan { animation: pgScan 1.5s var(--ease-out) .25s 1 forwards }
@keyframes pgScan { 0% { transform: translateY(-100%) } 100% { transform: translateY(560%) } }

/* ------------------------------------------------------------- table ------ */
.pg-table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg) }
.pg-table { width: 100%; border-collapse: collapse; min-width: 620px }
.pg-table th, .pg-table td { padding: 15px 20px; text-align: left; border-bottom: 1px solid var(--border); font-size: .92rem }
.pg-table thead th { font-family: var(--font-m); font-size: .72rem; letter-spacing: .07em; text-transform: uppercase;
  color: var(--text-3); font-weight: 600; background: var(--bg-off) }
.pg-table thead th.is-odin { color: var(--primary) }
.pg-table tbody tr:last-child td { border-bottom: 0 }
.pg-table tbody tr { transition: background .25s }
.pg-table tbody tr:hover { background: rgba(232,75,42,.03) }
.pg-table td.is-odin { font-weight: 600 }
.pg-yes { color: #2f9e44 } .pg-no { color: var(--text-3) } .pg-part { color: #DBA028 }

/* -------------------------------------------------------------- specs ----- */
/* Individually bordered cells rather than gap-over-a-background: an auto-fit grid
   leaves unfilled tracks on the last row, and those would render as a grey slab. */
.pg-specs { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 14px }
.pg-spec { background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 22px 24px; transition: border-color .35s var(--ease-out) }
.pg-spec:hover { border-color: rgba(232,75,42,.28) }
.pg-spec dt { font-family: var(--font-m); font-size: .7rem; letter-spacing: .08em; text-transform: uppercase;
  color: var(--text-3); margin-bottom: 7px }
.pg-spec dd { font-size: 1.02rem; font-weight: 600 }
.pg-spec dd small { display: block; font-weight: 400; font-size: .82rem; color: var(--text-2); margin-top: 4px }

/* --------------------------------------------------------------- pills ---- */
.pg-pills { display: flex; flex-wrap: wrap; gap: 9px }
.pg-pill { font-family: var(--font-m); font-size: .78rem; padding: 7px 13px; border-radius: 999px;
  border: 1px solid var(--border); color: var(--text-2); background: var(--bg); transition: all .3s var(--ease-out) }
.pg-pill:hover { border-color: rgba(232,75,42,.4); color: var(--primary) }

/* ---------------------------------------------------------------- note ---- */
.pg-note { display: grid; grid-template-columns: auto 1fr; gap: 15px; padding: 20px 24px; border-radius: var(--radius);
  background: var(--bg); border: 1px solid var(--border); border-left: 3px solid var(--primary) }
.pg-note i { color: var(--primary); margin-top: 3px }
.pg-note p { font-size: .9rem; line-height: 1.68; color: var(--text-2) }
.pg-note p strong { color: var(--text); font-weight: 600 }

/* ----------------------------------------------------------------- faq ---- */
.pg-faq-item { border-bottom: 1px solid var(--border) }
.pg-faq-q { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 20px 0;
  cursor: pointer; font-weight: 600; font-size: 1rem; transition: color .25s }
.pg-faq-q:hover { color: var(--primary) }
.pg-faq-q i { color: var(--text-3); transition: transform .35s var(--ease-out), color .25s; flex-shrink: 0 }
.pg-faq-item.open .pg-faq-q i { transform: rotate(180deg); color: var(--primary) }
.pg-faq-a { max-height: 0; overflow: hidden; transition: max-height .45s var(--ease-out) }
.pg-faq-item.open .pg-faq-a { max-height: 620px }
.pg-faq-a p { padding: 0 0 22px; font-size: .93rem; line-height: 1.72; color: var(--text-2) }

/* ----------------------------------------------------------------- cta ---- */
.pg-cta { padding: 88px 0; background: #0E0B09; color: #fff; text-align: center; position: relative; overflow: hidden }
.pg-cta h2 { font-family: var(--font-d); font-weight: 900; font-size: clamp(1.9rem, 4vw, 3rem); margin-bottom: 16px; letter-spacing: -.02em }
.pg-cta h2 .grad { background: var(--gradient); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent }
.pg-cta p { color: rgba(255,255,255,.6); max-width: 560px; margin: 0 auto 30px; line-height: 1.7 }
.pg-cta .pg-hero-cta { justify-content: center }
.pg-cta .pg-btn-2 { background: transparent; border-color: rgba(255,255,255,.2); color: #fff }
.pg-cta .pg-btn-2:hover { border-color: var(--secondary); color: var(--secondary) }

/* -------------------------------------------------------------- related --- */
.pg-related a { display: block; padding: 20px 22px; border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--bg); transition: all .35s var(--ease-out) }
.pg-related a:hover { border-color: rgba(232,75,42,.3); transform: translateY(-2px) }
.pg-related span { display: block; font-family: var(--font-m); font-size: .68rem; letter-spacing: .09em;
  text-transform: uppercase; color: var(--text-3); margin-bottom: 6px }
.pg-related strong { font-family: var(--font-d); font-size: 1rem; font-weight: 700 }
