/* ============================================================
   Competence Alliance / FIBRE® – v2 "light & typographic"
   Light editorial ground, oversized Archivo display type.
   Dark navy reserved for "platform windows": the interactive
   product moments (instant win, market map, receipt scan) and
   the footer. Accent: fibre teal. Mono: market codes & labels.
   ============================================================ */

:root{
  color-scheme: light dark;
  --bg:        #FAFBFD;
  --card:      #FFFFFF;
  --header-bg: rgba(250,251,253,.85);
  --tint:      #EEF2F7;
  --ink:       #0B1524;
  --mut:       #5A6880;
  --line:      rgba(11,21,36,.12);

  --navy:      #0B1524;
  --navy-2:    #101E33;
  --ink-d:     #ECF1F8;
  --mut-d:     #9AA8BE;
  --line-d:    rgba(148,170,204,.18);

  --acc:       #17B9AE;
  --acc-ink:   #0C7C74;
  --acc-dim:   rgba(23,185,174,.1);

  --disp: "Archivo", system-ui, sans-serif;
  --body: "Instrument Sans", system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, monospace;

  --max: 1180px;
  --r: 16px;
}

*{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; }
body{
  font-family:var(--body); background:var(--bg); color:var(--ink);
  line-height:1.7; font-size:17px; -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
a{ color:inherit; }
.wrap{ max-width:var(--max); margin:0 auto; padding:0 28px; }
.wrap.narrow > *{ max-width:820px; }

/* ---------- typography ---------- */
h1,h2,h3{ font-family:var(--disp); line-height:1.04; letter-spacing:-.025em; }
h1{ font-size:clamp(2.7rem,6.4vw,5.2rem); font-weight:800; font-stretch:116%; }
h2{ font-size:clamp(1.9rem,3.8vw,3rem); font-weight:750; font-stretch:110%; letter-spacing:-.02em; }
h3{ font-size:1.16rem; font-weight:650; letter-spacing:-.005em; line-height:1.3; }
.lede{ font-size:clamp(1.08rem,1.7vw,1.3rem); max-width:42em; color:var(--mut); }

.eyebrow{
  font-family:var(--mono); font-size:1.12rem; font-weight:700; letter-spacing:.16em;
  text-transform:uppercase; color:var(--acc-ink); display:flex; gap:.9em;
  align-items:center; margin-bottom:1.35rem;
}
@media (max-width:720px){ .eyebrow{ font-size:.98rem; } }
.eyebrow::before{ content:""; width:40px; height:2px; background:var(--acc-ink); border-radius:2px; }
.on-dark .eyebrow{ color:var(--acc); } .on-dark .eyebrow::before{ background:var(--acc); }

html{ scroll-padding-top:118px; }

/* ---------- header ---------- */
header.site{
  position:sticky; top:0; z-index:50;
  background:var(--header-bg); backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.nav{ display:flex; align-items:center; gap:28px; height:100px; }
.nav .logo{ flex:0 0 auto; display:flex; align-items:center; }
.nav .logo img{ height:62px; width:auto; max-width:none; object-fit:contain;
  filter:brightness(0); opacity:.95; }
.nav nav{ display:flex; gap:24px; margin-left:auto; }
.nav nav a{ text-decoration:none; font-size:.96rem; color:var(--mut); white-space:nowrap;
  padding:6px 2px; border-bottom:2px solid transparent; }
.nav nav a:hover{ color:var(--ink); }
.nav nav a[aria-current="page"]{ color:var(--ink); border-bottom-color:var(--acc); }
.menu-btn{ display:none; margin-left:auto; background:none; border:1px solid var(--line);
  color:var(--ink); border-radius:8px; padding:8px 12px; font-family:var(--mono); font-size:.8rem; cursor:pointer; }

/* ---------- buttons ---------- */
.btn{ display:inline-block; text-decoration:none; font-weight:600; font-size:.98rem;
  padding:14px 26px; border-radius:12px; border:1.5px solid transparent;
  transition:transform .15s ease, background .15s ease, border-color .15s; }
.btn:hover{ transform:translateY(-1px); }
.btn-acc{ background:var(--ink); color:#fff; }
.btn-acc:hover{ background:#1B2C47; }
.btn-ghost{ border-color:var(--line); color:var(--ink); background:var(--card); }
.btn-ghost:hover{ border-color:var(--ink); }
.on-dark .btn-acc{ background:var(--acc); color:#04211E; }
.on-dark .btn-acc:hover{ background:#22D2C6; }
.on-dark .btn-ghost{ border-color:var(--line-d); color:var(--ink-d); background:transparent; }

/* ---------- hero ---------- */
.hero{ padding:clamp(52px,8vw,92px) 0 clamp(40px,6vw,64px); background:var(--bg); }
.hero-grid{ display:grid; grid-template-columns:1.15fr .85fr; gap:56px; align-items:center; }
.hero h1{ margin-bottom:1.3rem; }
.hero h1 em{ font-style:normal; color:var(--acc-ink); }
.hero .lede{ margin-bottom:2.2rem; }
.hero .actions{ display:flex; gap:14px; flex-wrap:wrap; }

/* stats ledger */
.ledger{ display:flex; flex-wrap:wrap; margin-top:3rem;
  border:1px solid var(--line); border-radius:var(--r); overflow:hidden; background:var(--card); }
.ledger div{ flex:1 1 150px; padding:26px 24px; border-right:1px solid var(--line); }
.ledger div:last-child{ border-right:0; }
.ledger b{ font-family:var(--disp); font-size:clamp(1.7rem,2.4vw,2.4rem); font-weight:800; display:block; letter-spacing:-.02em; line-height:1.1; margin-bottom:8px; white-space:nowrap; }
.ledger span{ font-size:.82rem; letter-spacing:.01em; color:var(--mut); line-height:1.4; }

/* ---------- instant win (scratch card) ---------- */
.playbox{
  background:linear-gradient(160deg,var(--navy) 0%,var(--navy-2) 100%);
  border-radius:22px; padding:30px 28px 26px; color:var(--ink-d);
  box-shadow:0 30px 60px -30px rgba(11,21,36,.45);
}
.playbox .k{ font-family:var(--mono); font-size:.72rem; letter-spacing:.16em;
  text-transform:uppercase; color:var(--acc); display:block; margin-bottom:14px; }
.scratch-wrap{ position:relative; border-radius:14px; overflow:hidden;
  border:1px solid var(--line-d); }
.scratch-prize{
  aspect-ratio:16/9; display:flex; flex-direction:column; gap:6px;
  align-items:center; justify-content:center; text-align:center;
  background:
    radial-gradient(90% 130% at 50% -10%, rgba(245,176,76,.28) 0%, transparent 55%),
    radial-gradient(120% 120% at 50% 0%, #14324D 0%, #0A1420 75%);
  padding:22px; position:relative;
}
.scratch-prize::before{
  content:""; position:absolute; inset:10px; border:1px solid rgba(201,164,92,.6);
  border-radius:8px; pointer-events:none;
}
.scratch-prize::after{
  content:""; position:absolute; inset:15px; border:1px solid rgba(201,164,92,.25);
  border-radius:6px; pointer-events:none;
}
.scratch-prize b{ font-family:var(--disp); letter-spacing:.08em; font-size:1.25rem;
  color:#EFE3C8; text-shadow:0 2px 14px rgba(201,164,92,.3); }
.scratch-prize span{ letter-spacing:.02em; }
.scratch-prize b{ font-family:var(--disp); font-size:1.5rem; font-weight:800; }
.scratch-prize span{ color:var(--mut-d); font-size:.92rem; }
.scratch-prize em{ font-style:normal; font-family:var(--mono); font-weight:700;
  font-size:.95rem; letter-spacing:.22em; color:#F0C36A; text-transform:uppercase; }
.scratch-prize.lose{
  background:
    radial-gradient(90% 130% at 50% -10%, rgba(120,140,170,.2) 0%, transparent 55%),
    radial-gradient(120% 120% at 50% 0%, #1C2736 0%, #0A1420 78%);
}
.scratch-prize.lose em{ color:#9FB0C8; }
.scratch-prize.lose::before{ border-color:rgba(140,155,180,.45); }
.scratch-wrap canvas{ position:absolute; inset:0; width:100%; height:100%;
  cursor:crosshair; touch-action:none; }
.playbox .after{ margin-top:16px; font-size:.95rem; color:var(--mut-d); }
.playbox .after b{ color:var(--ink-d); }
.play-reset{ margin-top:12px; background:none; border:1px solid var(--line-d);
  color:var(--mut-d); border-radius:8px; padding:7px 14px; font-family:var(--mono);
  font-size:.74rem; letter-spacing:.1em; cursor:pointer; }
.play-reset:hover{ color:var(--ink-d); border-color:var(--acc); }

/* confetti */
.coin{ position:fixed; left:0; top:0; z-index:999; pointer-events:none; border-radius:50%;
  background:radial-gradient(circle at 32% 30%, #FFF3C4 0%, #F5D06A 34%, #D9A83C 62%, #8A6420 100%);
  box-shadow:inset 0 0 0 1.5px rgba(120,86,25,.85), inset 2px 2px 3px rgba(255,255,240,.7), 0 2px 6px rgba(0,0,0,.35);
  will-change:transform,opacity; }
.spark{ position:fixed; left:0; top:0; z-index:999; pointer-events:none; border-radius:50%;
  background:radial-gradient(circle, #FFF8DC 0%, rgba(240,195,106,.85) 45%, rgba(240,195,106,0) 72%);
  will-change:transform,opacity; }

/* ---------- market ticker ---------- */
.ticker{ overflow:hidden; white-space:nowrap; padding:20px 0; background:var(--card);
  border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.ticker-inner{ max-width:1120px; margin:0 auto; overflow:hidden; position:relative;
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.ticker-track{ display:inline-block; animation:tick 95s linear infinite; }
.ticker .tick-item{ display:inline-flex; align-items:center; padding:0 1.1em; }
.ticker .tick-item .fi{ width:2.4em; line-height:1.6em; border-radius:4px;
  box-shadow:0 0 0 1px var(--line), 0 2px 6px rgba(0,0,0,.12); }
.ticker .tick-item::after{ content:"·"; color:var(--acc-ink); padding-left:2.2em; font-size:.9rem; }
@keyframes tick{ from{transform:translateX(0)} to{transform:translateX(-50%)} }

/* ---------- sections ---------- */
section{ padding:clamp(56px,9vw,96px) 0; }
.on-paper{ background:var(--bg); }
.tint{ background:var(--tint); }
.on-dark{ background:var(--navy); color:var(--ink-d); }
.on-dark p{ color:#C5D0E0; }
.sec-head{ max-width:56em; margin-bottom:2.8rem; }
.sec-head p{ margin-top:1.4rem; color:var(--mut); max-width:44em; }
.on-dark .sec-head p{ color:var(--mut-d); }
.workflow-lead{ font-size:clamp(1.05rem,1.6vw,1.3rem); line-height:1.5; color:var(--ink-d) !important; max-width:40em; }
.ledger-note{ text-align:center; font-size:.82rem; color:var(--mut-d); margin-top:20px; opacity:.9; }

/* scroll reveal */
.rv{ opacity:0; transform:translateY(22px); transition:opacity .7s ease, transform .7s ease; }
.rv.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  .rv{ opacity:1; transform:none; transition:none; }
  .scanbox.play .scanline{ animation:none; opacity:0; }
  .stamp,.paychip{ transition:none; }
  .ticker-track{ animation:none; }
  .coin,.spark{ display:none; }
  *{ scroll-behavior:auto !important; }
}

/* ---------- cards ---------- */
.grid{ display:grid; gap:clamp(16px,2.2vw,24px); }
.g2{ grid-template-columns:repeat(2,1fr); }
.g3{ grid-template-columns:repeat(3,1fr); }
.g4{ grid-template-columns:repeat(4,1fr); }
.card{ border-radius:var(--r); padding:28px; background:var(--card); border:1px solid var(--line); }
.card h3{ margin-bottom:.7rem; line-height:1.32; }
.card p{ color:var(--mut); }
.card .k{ font-family:var(--mono); font-size:.7rem; letter-spacing:.15em;
  text-transform:uppercase; color:var(--acc-ink); display:block; margin-bottom:1rem; }
.on-dark .card{ background:var(--navy-2); border-color:var(--line-d); }
.on-dark .card p{ color:var(--mut-d); line-height:1.62; }
.on-dark .card .k{ color:var(--acc); }
.card a{ color:var(--acc-ink); font-weight:600; text-decoration:none; }
.card a:hover{ text-decoration:underline; }
.on-dark .card a{ color:var(--acc); }

/* use cases */
.case{ overflow:hidden; padding:0; display:flex; flex-direction:column; }
.case img{ aspect-ratio:11/5; object-fit:cover; width:100%; }
.case .body{ padding:24px 26px 28px; }

/* logo row */
.logos{ display:flex; flex-wrap:wrap; gap:30px 46px; align-items:center;
  justify-content:center; padding:10px 0; }
.logos img{ height:28px; width:auto; background:#fff; padding:5px 10px; border-radius:8px; box-sizing:content-box; filter:grayscale(1); opacity:.85; }

/* steps */
.steps{ counter-reset:step; }
.steps .card{ position:relative; padding-top:58px; }
.steps .card::before{ counter-increment:step; content:"0" counter(step);
  position:absolute; top:22px; left:26px; font-family:var(--mono);
  font-size:.8rem; letter-spacing:.14em; color:var(--acc-ink); }
.on-dark .steps .card::before{ color:var(--acc); }

/* acronym */
.acro{ border:1px solid var(--line); border-radius:var(--r); overflow:hidden; background:var(--card); }
.acro div{ display:grid; grid-template-columns:78px 1fr; border-bottom:1px solid var(--line); }
.acro div:last-child{ border-bottom:0; }
.acro b{ font-family:var(--disp); font-size:2rem; font-weight:800; display:flex;
  align-items:center; justify-content:center; color:var(--acc-ink); background:var(--acc-dim); }
.acro p{ padding:16px 20px; align-self:center; color:var(--mut); }

/* quotes */
.quote{ border-left:3px solid var(--acc); padding:8px 0 8px 26px; }
.stack-line{ font-size:.95rem; color:var(--mut); margin-top:14px; line-height:1.6; }
.entity-line{ font-size:.8rem; color:var(--mut); margin:10px auto 0; max-width:640px; line-height:1.55; }
.split-arch{ display:flex; align-items:stretch; gap:0; max-width:820px; margin:32px auto; text-align:left; }
.split-arch .sa-half{ flex:1; background:var(--navy-2); border:1px solid var(--line-d); border-radius:16px; padding:24px 26px; }
.split-arch .sa-tag{ display:inline-block; font-family:var(--mono); font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; color:var(--acc); margin-bottom:12px; }
.split-arch .sa-lead{ font-size:1.4rem; font-weight:700; color:var(--ink-d); margin:0 0 10px; letter-spacing:-.01em; }
.sa-together{ text-align:center; max-width:820px; margin:24px auto 0; font-size:1.2rem; font-weight:600; color:var(--ink-d); }
.sa-together span{ display:inline-block; color:var(--acc); font-family:var(--mono); font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; margin-right:12px; transform:translateY(-2px); }
.behind-head{ text-align:center; font-weight:600; font-size:1.08rem; color:var(--ink); margin:0 0 20px; }
.behind-sub{ text-align:center; color:var(--mut); margin:-12px auto 24px; font-size:.95rem; max-width:44em; }
.behind-foot{ text-align:center; font-weight:700; color:var(--ink); margin:24px 0 0; font-size:1.05rem; }
.sb-func{ font-size:.82rem; font-weight:600; color:var(--mut); margin:12px 0 4px; line-height:1.35; }
.quote.featured .q-lead{ font-size:1.85rem; font-weight:800; line-height:1.25; margin:0 0 16px; letter-spacing:-.015em; color:var(--acc); }
.behind-steps{ list-style:none; margin:0 auto; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; max-width:840px; }
.behind-steps li{ display:flex; align-items:flex-start; gap:11px; background:var(--card); border:1px solid var(--line); border-radius:10px; padding:13px 15px; font-size:.88rem; font-weight:500; color:var(--ink); }
.behind-steps li span{ display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; border-radius:50%; background:var(--acc); color:#04212a; font-size:.72rem; font-weight:700; flex:none; margin-top:1px; }
.behind-steps.arch li .bx b{ display:block; font-weight:700; color:var(--ink); line-height:1.3; }
.behind-steps.arch li .bx small{ display:block; font-size:.8rem; color:var(--mut); margin-top:2px; line-height:1.35; }
@media(max-width:760px){ .behind-steps{ grid-template-columns:repeat(2,1fr); } }
@media(max-width:460px){ .behind-steps{ grid-template-columns:1fr; } }
.split-arch .sa-desc{ font-size:.9rem; color:var(--mut-d); line-height:1.55; margin:0; }
.split-arch .sa-plus{ display:flex; align-items:center; justify-content:center; font-size:1.6rem; font-weight:700; color:var(--acc); flex:0 0 44px; }
@media(max-width:640px){ .split-arch{ flex-direction:column; } .split-arch .sa-plus{ flex-basis:auto; padding:6px 0; } }
.cov-wrap{ overflow-x:auto; border:1px solid var(--line); border-radius:14px; }
.cov-table{ border-collapse:collapse; width:100%; min-width:640px; font-size:.9rem; }
.cov-table th[scope="col"]{ background:var(--navy); color:#fff; font-weight:600; text-align:center; padding:12px 10px; font-size:.82rem; position:sticky; top:0; }
.cov-table th[scope="col"]:first-child{ text-align:left; }
.cov-table th[scope="row"]{ text-align:left; font-weight:600; padding:9px 12px; white-space:nowrap; }
.cov-table th[scope="row"] .fi{ margin-right:9px; border-radius:2px; vertical-align:-2px; }
.cov-table td{ text-align:center; padding:9px 10px; color:var(--acc-ink); font-weight:700; }
.cov-table tbody tr:nth-child(even){ background:var(--card); }
.cov-table tbody tr:hover{ background:color-mix(in srgb, var(--acc) 8%, transparent); }
.cov-note{ margin-top:18px; font-size:.85rem; color:var(--mut); line-height:1.6; max-width:60em; }
.cov-soon{ color:#b7791f !important; font-weight:600 !important; font-size:.8rem; white-space:nowrap; }
.cov-legend{ margin-top:16px; font-size:.82rem; color:var(--mut); line-height:1.6; max-width:60em; }
.cov-legend .lg-ok{ color:var(--acc-ink); font-weight:700; }
.cov-legend .lg-soon{ color:#b7791f; font-weight:600; }
.pipe-wrap{ display:flex; gap:34px; align-items:flex-start; margin-top:26px; }
.pipe-wrap .pipeline{ margin-top:0; flex:1; }
.pipe-phone{ flex:0 0 240px; margin:0; text-align:center; }
.pipe-phone img{ width:100%; max-width:240px; height:auto; display:block; margin:0 auto; }
.pipe-phone figcaption{ font-size:.78rem; color:var(--mut); margin-top:12px; font-style:italic; }
@media(max-width:820px){ .pipe-wrap{ flex-direction:column; align-items:center; } .pipe-phone{ flex-basis:auto; margin-bottom:20px; } .pipe-phone img{ max-width:200px; } }
.showcase{ display:flex; gap:48px; align-items:center; }
.showcase-phone{ flex:0 0 260px; margin:0; text-align:center; }
.showcase-phone img{ width:100%; max-width:260px; height:auto; display:block; margin:0 auto; filter:drop-shadow(0 18px 40px rgba(0,0,0,.28)); }
.showcase-phone figcaption{ font-size:.78rem; color:var(--mut); margin-top:14px; font-style:italic; }
.showcase-copy{ flex:1; }
.showcase-copy h2{ margin:.3rem 0 .8rem; }
@media(max-width:820px){ .showcase{ flex-direction:column; gap:24px; text-align:center; } .showcase-phone img{ max-width:220px; } }
.pipeline{ display:flex; flex-wrap:wrap; gap:14px; margin-top:26px; }
.pstep{ flex:1 1 150px; min-width:150px; border:1px solid var(--line); border-radius:12px; padding:16px 14px; background:rgba(255,255,255,.03); }
.pstep .n{ font-family:var(--mono); font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; color:var(--acc); display:block; margin-bottom:8px; }
.pstep h3{ font-size:.95rem; margin:0 0 6px; }
.pstep p{ font-size:.82rem; color:var(--mut); margin:0; line-height:1.5; }
.foot-note{ font-size:.78rem; color:var(--mut); margin-top:.55rem; max-width:340px; }
.quote.featured{ grid-column:1/-1; }
.quote.featured p{ font-size:1.28rem; line-height:1.6; }
.quote p{ font-size:1.12rem; color:var(--ink); }
.quote footer{ margin-top:1rem; font-size:.86rem;
  color:var(--mut); }
.on-dark .quote p{ color:var(--ink-d); }
.on-dark .quote footer{ color:var(--mut-d); }

/* FAQ */
details{ border:1px solid var(--line); border-radius:12px; background:var(--card);
  padding:18px 22px; margin-bottom:12px; }
details p{ padding-top:10px; color:var(--mut); }
summary{ cursor:pointer; font-weight:600; font-family:var(--disp); }
.on-dark details{ background:var(--navy-2); border-color:var(--line-d); }
.on-dark details p{ color:var(--mut-d); }

/* lists */
.checks{ list-style:none; display:grid; gap:11px; }
.checks li{ padding-left:28px; position:relative; color:var(--mut); }
.checks li::before{ content:"✓"; position:absolute; left:0; color:var(--acc-ink); font-weight:700; }
.on-dark .checks li{ color:var(--mut-d); }
.on-dark .checks li::before{ color:var(--acc); }
.included{ margin-top:40px; padding:30px 32px; background:var(--card); border:1px solid var(--line); border-radius:16px; }
.included h3{ font-size:1.15rem; margin:0 0 20px; }
.incl-grid{ list-style:none; display:grid; grid-template-columns:1fr 1fr; gap:13px 32px; padding:0; margin:0; }
.incl-grid li{ padding-left:30px; position:relative; font-weight:600; color:var(--ink); }
.incl-grid li::before{ content:"✓"; position:absolute; left:0; top:-1px; color:#fff; background:var(--acc-ink); width:19px; height:19px; border-radius:50%; font-size:.72rem; font-weight:700; display:flex; align-items:center; justify-content:center; }
.incl-note{ margin-top:22px; padding-top:18px; border-top:1px solid var(--line); font-size:.86rem; color:var(--mut); }
.on-dark .included{ background:var(--navy-2); border-color:var(--line-d); }
.on-dark .incl-grid li{ color:var(--ink-d); }
.on-dark .incl-note{ color:var(--mut-d); border-top-color:var(--line-d); }
@media(max-width:640px){ .incl-grid{ grid-template-columns:1fr; } }

/* split */
.split{ display:grid; grid-template-columns:1.05fr .95fr; gap:52px; align-items:center; }
.split img{ border-radius:var(--r); border:1px solid var(--line); }
.on-dark .split img{ border-color:var(--line-d); }

/* ---------- market map (platform window) ---------- */
.mapbox{ background:linear-gradient(150deg,var(--navy) 0%,var(--navy-2) 100%);
  border-radius:26px; padding:56px 48px; color:var(--ink-d); overflow:hidden; }
.mapbox .grid-inner{ display:grid; grid-template-columns:.9fr 1.1fr; gap:44px; align-items:center; }
#eumap{ width:100%; height:auto; display:block; }
#eumap circle{ fill:#22405C; transition:fill .3s, r .3s; }
#eumap circle.lit{ fill:var(--acc); }
#eumap text{ font-family:var(--mono); font-size:9.5px; fill:var(--mut-d);
  opacity:0; transition:opacity .3s; }
#eumap text.lit{ opacity:.95; fill:#CFE9E6; }
.map-count{ font-family:var(--disp); font-size:clamp(3.4rem,7vw,5.6rem);
  font-weight:800; letter-spacing:-.03em; line-height:1; }
.map-count small{ font-size:.35em; color:var(--acc); font-weight:700; }

/* ---------- receipt scan (platform window) ---------- */
.scanbox{ display:grid; grid-template-columns:.95fr 1.05fr; gap:52px; align-items:center; }
.receipt{ background:#fff; color:#1A2436; border-radius:10px; max-width:340px;
  margin:0 auto; padding:26px 24px 30px; font-family:var(--mono); font-size:.8rem;
  box-shadow:0 24px 50px -22px rgba(11,21,36,.5); position:relative; overflow:hidden;
  border:1px solid var(--line); }
.receipt h5{ font-family:var(--mono); text-align:center; letter-spacing:.14em;
  font-size:.78rem; margin-bottom:14px; }
.receipt .row{ display:flex; justify-content:space-between; padding:4px 0;
  border-bottom:1px dashed rgba(11,21,36,.14); position:relative; }
.receipt .row.ok::after{ content:"✓"; position:absolute; right:-16px; color:var(--acc-ink); font-weight:700; }
.receipt .row.promo{ font-weight:700; }
.receipt .row.promo.ok{ background:var(--acc-dim); }
.receipt .total{ margin-top:10px; padding-top:8px; border-top:2px solid #1A2436;
  display:flex; justify-content:space-between; font-weight:700; }
.scanline{ position:absolute; left:0; right:0; top:-8%; height:5px;
  background:linear-gradient(90deg,transparent,var(--acc),transparent); opacity:0; }
.scanbox.play .scanline{ animation:scan 2.2s ease-in-out forwards; }
@keyframes scan{ 0%{opacity:1; top:-2%} 90%{opacity:1} 100%{opacity:0; top:102%} }
.stamp{ position:absolute; top:38%; left:50%; transform:translate(-50%,-50%) rotate(-10deg) scale(2.4);
  border:3px solid var(--acc-ink); color:var(--acc-ink); border-radius:8px;
  padding:6px 14px; font-family:var(--disp); font-weight:800; letter-spacing:.1em;
  opacity:0; transition:opacity .3s ease, transform .3s ease; background:rgba(255,255,255,.85); }
.stamp.show{ opacity:1; transform:translate(-50%,-50%) rotate(-10deg) scale(1); }
.paychip{ display:inline-flex; gap:10px; align-items:center; margin-top:20px;
  background:var(--navy-2); border:1px solid var(--line-d); border-radius:999px;
  padding:10px 20px; font-family:var(--mono); font-size:.8rem; letter-spacing:.08em;
  color:var(--mut-d); opacity:0; transform:translateY(8px); transition:all .4s .2s; }
.paychip.show{ opacity:1; transform:none; }
.paychip b{ color:var(--acc); }

/* CTA band */
.cta-band{ background:var(--navy); color:var(--ink-d);
  border-top:1px solid var(--line-d); border-bottom:1px solid var(--line-d); }
.cta-band p{ color:var(--mut-d); }
.cta-band .inner{ display:flex; gap:26px; align-items:center;
  justify-content:space-between; flex-wrap:wrap; }

/* forms */
form.contact{ display:grid; gap:14px; max-width:560px; }
form.contact input, form.contact select, form.contact textarea{ width:100%; padding:14px 16px;
  border-radius:12px; font:inherit; border:1px solid var(--line); background:var(--card); color:var(--ink); }
form.contact input:focus, form.contact textarea:focus{ outline:2px solid var(--acc); outline-offset:1px; }
form.contact button{ cursor:pointer; border:0; }
form.contact .ferr{ margin:-8px 0 0; font-size:.85rem; color:#c2410b; }
form.contact .is-err{ border-color:#c2410b !important; }

/* footer */
footer.site{ background:var(--navy); color:var(--ink-d); padding:60px 0 32px; }
.foot{ display:grid; grid-template-columns:2fr 1fr 1fr 1.4fr; gap:36px; }
.foot h4{ font-family:var(--mono); font-size:.74rem; letter-spacing:.16em;
  text-transform:uppercase; color:var(--mut-d); margin-bottom:14px; }
.foot ul{ list-style:none; display:grid; gap:8px; }
.foot a{ color:var(--mut-d); text-decoration:none; font-size:.95rem; }
.foot a:hover{ color:var(--ink-d); }
.foot p{ color:var(--mut-d); font-size:.95rem; }
.foot img{ height:36px; width:auto; max-width:none; object-fit:contain; margin-bottom:16px; }
.copy{ margin-top:42px; padding-top:22px; border-top:1px solid var(--line-d);
  font-size:.86rem; letter-spacing:0; color:var(--mut-d);
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; }

a:focus-visible,button:focus-visible{ outline:2px solid var(--acc); outline-offset:2px; border-radius:4px; }

/* responsive */
@media (max-width:1020px){
  .g4,.g3{ grid-template-columns:repeat(2,1fr); }
  .split,.hero-grid,.mapbox .grid-inner,.scanbox{ grid-template-columns:1fr; }
  .foot{ grid-template-columns:1fr 1fr; }
}
@media (max-width:1120px){
  .nav nav{ display:none; position:absolute; top:100px; left:0; right:0;
    background:var(--bg); flex-direction:column; padding:18px 28px; gap:14px;
    border-bottom:1px solid var(--line); }
  .nav nav.open{ display:flex; }
  .menu-btn{ display:block; }
}
@media (max-width:680px){
  .nav .cta{ display:none; }
  .g2,.g3,.g4{ grid-template-columns:1fr; }
  .foot{ grid-template-columns:1fr; }
  .hero{ padding:56px 0 44px; }
  section{ padding:64px 0; }
  .mapbox{ padding:36px 24px; }
}

/* negative comparison list */
.crosses li::before{ content:"✕"; color:#C25454; }

/* skip link */
.skip{ position:absolute; left:-999px; top:0; background:var(--acc); color:#04211E;
  padding:10px 18px; border-radius:0 0 10px 0; font-weight:600; z-index:100; }
.skip:focus{ left:0; }


/* ---------- FIBRE brand spectrum ---------- */
.spectrum{ height:3px; background:linear-gradient(90deg,#22D3EE,#3B82F6,#8B5CF6,#D946EF,#F43F5E,#F97316); }
.emblem-panel{
  display:flex; align-items:center; justify-content:center; padding:28px;
}
.emblem-panel img{ width:100%; max-width:420px; height:auto; }
.foot .fibre-mark{ height:auto; width:220px; margin-top:18px; border-radius:10px; }

/* ---------- comparison table ---------- */
.cmp{ width:100%; border-collapse:separate; border-spacing:0; background:var(--card);
  border:1px solid var(--line); border-radius:var(--r); overflow:hidden; }
.cmp th,.cmp td{ padding:14px 18px; text-align:center; border-bottom:1px solid var(--line); font-size:.95rem; }
.cmp th{ font-family:var(--mono); font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:var(--mut); }
.cmp td:first-child,.cmp th:first-child{ text-align:left; }
.cmp tr:last-child td{ border-bottom:0; }
.cmp .fibre-col{ background:var(--acc-dim); font-weight:600; }
.cmp .y{ color:var(--acc-ink); font-weight:700; }
.cmp .n{ color:#C25454; }
.cmp .p{ color:var(--mut); }

/* ---------- calculator ---------- */
.calc{ background:var(--navy); color:var(--ink-d); border-radius:26px; padding:48px; }
.calc .grid-inner{ display:grid; grid-template-columns:1fr 1.1fr; gap:44px; align-items:center; }
.calc label{ display:block; font-size:.82rem; letter-spacing:.01em;
  color:var(--mut-d); margin:22px 0 8px; }
.calc input[type=range]{ width:100%; accent-color:#8B5CF6; }
.calc .val{ font-family:var(--disp); font-weight:750; font-size:1.2rem; }
.calc-out{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.calc-out div{ background:var(--navy-2); border:1px solid var(--line-d); border-radius:14px; padding:20px 18px; }
.calc-out b{ font-family:var(--disp); font-size:1.9rem; font-weight:800; display:block;
  background:linear-gradient(90deg,#22D3EE,#8B5CF6,#F97316); -webkit-background-clip:text; background-clip:text; color:transparent; }
.calc-out span{ font-size:.8rem; letter-spacing:.01em; color:var(--mut-d); }
.calc .note{ font-size:.8rem; color:var(--mut-d); margin-top:18px; }
.calc-assumptions{ margin-top:14px; font-size:.82rem; color:var(--mut-d); }
.calc-assumptions summary{ cursor:pointer; color:var(--acc); font-weight:600; padding:6px 0; user-select:none; }
.calc-assumptions summary:hover{ text-decoration:underline; }
.calc-assumptions p{ margin:.6rem 0; line-height:1.55; }
.calc-assumptions ul{ margin:.6rem 0; padding-left:1.1rem; }
.calc-assumptions li{ margin:.5rem 0; line-height:1.5; }
.calc-assumptions b{ color:var(--ink-d); }

/* ---------- industries ---------- */
.ind .card{ text-align:left; }
.ind .card b{ font-family:var(--disp); font-size:1.05rem; }

/* ---------- trust strip ---------- */
.trust{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.trust div{ border-top:3px solid; border-image:linear-gradient(90deg,#22D3EE,#F97316) 1;
  padding:16px 4px 0; }
.trust b{ font-family:var(--disp); display:block; margin-bottom:4px; }
.trust p{ font-size:.92rem; }

/* ---------- logo marquee ---------- */
.logo-marquee{ overflow:hidden; white-space:nowrap; }
.logo-marquee .track{ display:inline-flex; gap:56px; align-items:center; animation:tick 70s linear infinite; padding-right:56px; }
.logo-marquee img{ height:110px; width:auto; background:#fff; padding:20px 36px; border-radius:18px;
  box-sizing:content-box; border:1px solid rgba(0,0,0,.06);
  box-shadow:0 2px 10px rgba(10,20,40,.05); transition:transform .25s; }
.logo-marquee img:hover{ transform:translateY(-3px); }
@media (max-width:720px){ .logo-marquee img{ height:76px; padding:14px 24px; } }
@media (prefers-reduced-motion: reduce){ .logo-marquee .track{ animation:none; } }
@media (max-width:900px){ .calc .grid-inner{ grid-template-columns:1fr; } .trust{ grid-template-columns:1fr 1fr; } .calc-out{ grid-template-columns:1fr; } .cmp{ font-size:.85rem; } }

/* ---------- switchable dark mode ---------- */
:root[data-theme="dark"]{
  --bg:#0B1524; --tint:#0E1A2C; --card:#121F35;
  --ink:#ECF1F8; --mut:#9AA8BE; --line:rgba(148,170,204,.18);
  --acc-ink:#2BC6BB; --header-bg:rgba(11,21,36,.85);
}
[data-theme="dark"] .nav .logo img{ filter:none; }
[data-theme="dark"] .logo-marquee img{ border-color:rgba(255,255,255,.1); box-shadow:0 2px 14px rgba(0,0,0,.35); }
[data-theme="dark"] .btn-acc{ background:var(--acc); color:#04211E; }
[data-theme="dark"] .btn-acc:hover{ background:#22D2C6; }
[data-theme="dark"] .on-dark{ background:var(--navy-2); }
[data-theme="dark"] .playbox,[data-theme="dark"] .mapbox,[data-theme="dark"] .calc{ border:1px solid var(--line-d); box-shadow:none; }
[data-theme="dark"] .receipt{ box-shadow:0 24px 50px -22px rgba(0,0,0,.7); }
[data-theme="dark"] .quote p{ color:var(--ink); }
[data-theme="dark"] .skip{ color:#04211E; }
[data-theme="dark"] .emblem-panel{ border:1px solid var(--line-d); box-shadow:none; }

.theme-btn{
  background:none; border:1px solid var(--line); color:var(--ink);
  border-radius:10px; width:38px; height:38px; cursor:pointer;
  font-size:1.05rem; line-height:1; display:inline-flex; align-items:center; justify-content:center;
}
.theme-btn:hover{ border-color:var(--acc); }
@media (max-width:680px){ .theme-btn{ margin-left:auto; } .menu-btn{ margin-left:10px; } }

/* ---------- playbox tabs + wheel ---------- */
.play-tabs{ display:flex; gap:8px; margin-bottom:14px; }
.play-tabs button{ flex:1; background:none; border:1px solid var(--line-d); color:var(--mut-d);
  border-radius:9px; padding:8px 0; font-family:var(--mono); font-size:.72rem;
  letter-spacing:.12em; text-transform:uppercase; cursor:pointer; }
.play-tabs button[aria-selected="true"]{ border-color:#C9A45C; color:#EFE3C8; background:rgba(201,164,92,.1); }
.wheel-wrap{ position:relative; display:flex; flex-direction:column; align-items:center; gap:14px; }
.wheel-wrap canvas{ width:100%; max-width:280px; height:auto; }
.wheel-ptr{ position:absolute; top:-8px; left:50%; transform:translateX(-50%);
  z-index:2; width:30px; height:26px; transition:transform .08s ease;
  filter:drop-shadow(0 3px 4px rgba(0,0,0,.5)); }
.wheel-ptr svg{ display:block; width:100%; height:100%; }
.wheel-ptr.kick{ transform:translateX(-50%) rotate(-14deg); }
.wheel-wrap > div:first-child{ filter:drop-shadow(0 18px 26px rgba(0,0,0,.45)); }
.wheel-result{ min-height:1.5em; font-weight:600; color:var(--ink-d); text-align:center; }
.spin-btn{ background:linear-gradient(180deg,#E8CF96 0%,#C9A45C 55%,#A87F35 100%);
  color:#241A08; border:1px solid #8A6524; border-radius:10px;
  padding:11px 30px; font-weight:700; font-size:.9rem; letter-spacing:.12em; cursor:pointer;
  text-transform:uppercase; box-shadow:0 3px 10px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.5); }
.spin-btn:hover{ filter:brightness(1.06); }
.spin-btn:disabled{ opacity:.5; cursor:default; }
.scan-replay{ margin-top:14px; background:none; border:1px solid var(--line-l); color:var(--mut);
  border-radius:8px; padding:7px 14px; font-family:var(--mono); font-size:.72rem; letter-spacing:.1em; cursor:pointer; }
.scan-replay:hover{ border-color:var(--acc-ink); color:var(--ink); }
#eumap circle.lit{ animation:mapPulse 2.8s ease-in-out infinite; }
@keyframes mapPulse{ 0%,100%{ r:5 } 50%{ r:6.5 } }
@media (prefers-reduced-motion: reduce){ #eumap circle.lit{ animation:none; } }

/* ---------- solutions dropdown ---------- */
.nav-drop{ position:relative; display:inline-flex; }
.nav-drop > button{
  background:none; border:0; cursor:pointer; font:inherit; color:inherit;
  padding:0; display:inline-flex; align-items:center; gap:5px;
}
.nav-drop > button span{ font-size:.7em; transition:transform .15s; }
.nav-drop.is-active > button{ color:var(--acc-ink); font-weight:600; }
.drop-panel{
  position:absolute; top:calc(100% + 14px); left:50%; transform:translateX(-50%);
  background:var(--card); border:1px solid var(--line); border-radius:14px;
  padding:10px; min-width:240px; display:none; flex-direction:column; gap:2px;
  box-shadow:0 18px 40px -18px rgba(11,21,36,.35); z-index:60;
}
.drop-panel::before{ content:""; position:absolute; top:-14px; left:-12px; right:-12px; height:14px; }
.drop-panel a{ padding:9px 14px; border-radius:9px; white-space:nowrap; }
.drop-panel a:hover{ background:var(--tint); }
.nav-drop:hover .drop-panel,
.nav-drop:focus-within .drop-panel,
.nav-drop.open .drop-panel{ display:flex; }
.nav-drop:hover > button span,
.nav-drop.open > button span{ transform:rotate(180deg); }
@media (max-width:680px){
  .nav-drop{ display:block; }
  .nav-drop > button{ font-family:var(--mono); font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; padding:10px 0; }
  .drop-panel{ position:static; transform:none; display:flex; border:0; box-shadow:none; padding:0 0 0 16px; background:none; }
  .nav-drop > button span{ display:none; }
}

/* ---------- ecosystem orbit ---------- */
.orbit-wrap{ position:relative; max-width:560px; aspect-ratio:1; margin:30px auto 10px; }
.orbit-rings{ position:absolute; inset:0; width:100%; height:100%; }
.ring{ transform-origin:300px 300px; }
.r1{ animation:orbspin 46s linear infinite; }
.r2{ animation:orbspin 34s linear infinite reverse; }
.r3{ animation:orbspin 58s linear infinite; }
@keyframes orbspin{ to{ transform:rotate(360deg); } }
.orbit-node{ position:absolute; transform:translate(-50%,-50%); display:flex; flex-direction:column;
  align-items:center; gap:8px; cursor:pointer; opacity:.82; transition:opacity .4s; z-index:2; }
.orbit-node .on-chip{ width:84px; height:84px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:radial-gradient(circle at 32% 28%, #16263E 0%, #0B1524 78%);
  border:1px solid rgba(255,255,255,.22); box-shadow:0 10px 28px rgba(0,0,0,.45);
  color:#fff; transition:border-color .4s, box-shadow .4s, transform .35s; }
.orbit-node svg{ width:44px; height:44px; }
.orbit-node img{ width:58px; height:58px; }
.orbit-node b{ font-size:.74rem; font-weight:600; letter-spacing:.09em; text-transform:uppercase;
  color:rgba(255,255,255,.82); text-shadow:0 2px 8px rgba(0,0,0,.6); white-space:nowrap; }
.orbit-node:hover{ opacity:1; }
.orbit-node.active{ opacity:1; }
.orbit-node.active .on-chip{ border-color:#F97316; box-shadow:0 0 0 3px rgba(249,115,22,.28), 0 0 34px rgba(249,115,22,.55), 0 10px 28px rgba(0,0,0,.5); transform:scale(1.06); }
@media (max-width:720px){
  .orbit-node .on-chip{ width:58px; height:58px; }
  .orbit-node svg{ width:30px; height:30px; }
  .orbit-node img{ width:40px; height:40px; }
  .orbit-node b{ font-size:.6rem; }
}
.orbit-center{ position:absolute; inset:22%; display:flex; flex-direction:column;
  align-items:center; justify-content:center; text-align:center; gap:10px; }
.oc-icons{ position:relative; width:64px; height:64px; }
.oc-icons span{ position:absolute; inset:0; opacity:0; transition:opacity .55s; }
.oc-icons span.on{ opacity:1; }
.oc-icons svg{ width:100%; height:100%; }
.oc-icons img{ width:100%; height:100%; }
.oc-title{ color:#fff; font-family:var(--disp); font-size:1.7rem; margin:0; transition:opacity .4s; }
.oc-desc{ color:var(--mut-d); max-width:26ch; margin:0; transition:opacity .4s; }
.orbit-wrap.fade .oc-title, .orbit-wrap.fade .oc-desc{ opacity:0; }
@media (prefers-reduced-motion: reduce){ .r1,.r2,.r3{ animation:none; } }
/* ---------- platform screenshot strip ---------- */
.shot-strip{ display:flex; gap:16px; overflow-x:auto; padding:6px 2px 14px;
  scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; }
.shot-strip img{ height:230px; width:auto; border-radius:12px; border:1px solid var(--line);
  scroll-snap-align:start; box-shadow:0 10px 26px -14px rgba(11,21,36,.35); }

/* FIBRE brand band */
.brand-band{ text-align:center; padding:72px 0 66px; }
.brand-band img{ width:min(680px,86%); height:auto; margin-left:auto; margin-right:auto; filter:drop-shadow(0 18px 50px rgba(37,99,235,.35)); }
.brand-band p{ max-width:560px; margin:1.6rem auto 0; color:rgba(255,255,255,.78); }
.brand-band .actions{ justify-content:center; margin-top:1.8rem; display:flex; gap:12px; flex-wrap:wrap; }
.sol-hero-logo{ width:min(300px,52%); height:auto; margin-bottom:1.4rem; display:block; }

/* FIBRE product family lockups */
.subbrand{ display:flex; align-items:center; gap:14px; margin-bottom:1.5rem; }
.subbrand img{ width:54px; height:54px; }
.subbrand .sb-t{ display:flex; flex-direction:column; line-height:1.05; }
.subbrand .sb-t b{ font-family:var(--sans); font-weight:800; font-size:1.7rem; letter-spacing:.02em; }
.subbrand .sb-t span{ font-family:var(--mono); font-weight:700; font-size:1.02rem; letter-spacing:.3em; text-transform:uppercase; margin-top:4px; }
.subbrand.hub .sb-t span{ color:#22D3EE; }
.subbrand.engine .sb-t span{ color:var(--acc); }
.subbrand.guarantee .sb-t span{ color:#F0C36A; }
.subbrand.big img{ width:72px; height:72px; }
.subbrand.big .sb-t b{ font-size:2.3rem; }
.subbrand.big .sb-t span{ font-size:1.25rem; }
.card .subbrand{ margin-bottom:.9rem; }
.card .subbrand img{ width:38px; height:38px; }
.card .subbrand .sb-t b{ font-size:1.15rem; }
.card .subbrand .sb-t span{ font-size:.74rem; letter-spacing:.24em; }

/* Senior partners */
.team-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
@media (max-width:900px){ .team-grid{ grid-template-columns:1fr 1fr; } }
.tp-card{ text-align:center; padding:30px 18px 26px; }
.tp-ava{ width:96px; height:96px; border-radius:50%; margin:0 auto 16px; display:flex; align-items:center; justify-content:center;
  font-family:var(--disp); font-weight:800; font-size:1.6rem; color:#fff; letter-spacing:.02em;
  background:radial-gradient(circle at 32% 28%, #1E3A5F 0%, #0B1524 80%); border:2px solid rgba(240,195,106,.55);
  box-shadow:0 10px 26px rgba(0,0,0,.35); }
.tp-card h3{ font-size:1.08rem; margin-bottom:4px; }
.tp-role{ font-family:var(--mono); font-size:.78rem; letter-spacing:.14em; text-transform:uppercase; color:var(--acc-ink); }

/* leadership / senior partners */
.people{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
@media (max-width:900px){ .people{ grid-template-columns:repeat(2,1fr); } }
.person{ text-align:center; padding:30px 18px; }
.person .ava{ width:96px; height:96px; border-radius:50%; margin:0 auto 16px; display:flex; align-items:center; justify-content:center;
  font-family:var(--disp); font-weight:800; font-size:1.6rem; letter-spacing:.04em; color:#fff;
  background:radial-gradient(circle at 32% 28%, #1B3C64 0%, #0B1524 80%); border:2px solid rgba(43,198,187,.55);
  box-shadow:0 10px 26px rgba(0,0,0,.35); }
.person b{ display:block; font-size:1.06rem; margin-bottom:4px; }
.person span{ display:block; font-family:var(--mono); font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; color:var(--mut); line-height:1.5; }

/* leadership cards */
.tcard{ text-align:center; }
.tcard .avatar{ width:84px; height:84px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  font-family:var(--disp); font-weight:800; font-size:1.6rem; color:#fff; margin-bottom:14px;
  box-shadow:inset 0 -3px 8px rgba(0,0,0,.25), 0 8px 20px rgba(0,0,0,.18); }
.tcard .av1{ background:radial-gradient(circle at 32% 28%, #FF9A4D, #C2410C); }
.tcard .av2{ background:radial-gradient(circle at 32% 28%, #34E3D5, #0E7490); }
.tcard .av3{ background:radial-gradient(circle at 32% 28%, #F5D06A, #92700F); }
.tcard .av4{ background:radial-gradient(circle at 32% 28%, #7AA7FF, #1E3A8A); }
.tcard .av5{ background:radial-gradient(circle at 32% 28%, #C4B5FD, #5B21B6); }
.tcard .av6{ background:radial-gradient(circle at 32% 28%, #6EE7B7, #065F46); }
.tcard .av7{ background:radial-gradient(circle at 32% 28%, #FDA4AF, #9F1239); }
.tcard .av5{ background:radial-gradient(circle at 32% 28%, #FF8FA3, #9D1C3F); }
.tcard .av6{ background:radial-gradient(circle at 32% 28%, #A78BFA, #4C1D95); }
.tcard .av7{ background:radial-gradient(circle at 32% 28%, #6EE7B7, #065F46); }
.tcard h3{ margin-bottom:4px; font-size:1.08rem; }
.tcard .trole{ color:var(--mut); font-size:.88rem; line-height:1.4; }
@media (max-width:900px){ .team{ grid-template-columns:1fr 1fr; } }

/* language switcher */
.lang-sw{ display:inline-flex; gap:2px; border:1px solid var(--line); border-radius:99px; padding:3px; margin-left:6px; }
.lang-sw a{ display:inline-flex; align-items:center; gap:6px; padding:4px 11px; border-radius:99px;
  font-family:var(--mono); font-size:.78rem; font-weight:600; text-decoration:none; color:var(--mut); }
.lang-sw a.on{ background:var(--card); color:var(--ink); box-shadow:0 1px 4px rgba(0,0,0,.12); }
.lang-sw .fi{ width:16px; height:12px; border-radius:2px; }
@media (max-width:900px){ .lang-sw a{ padding:4px 8px; } }

/* rules map */
.rules-grid{ display:grid; grid-template-columns: 1.15fr .85fr; gap:34px; align-items:center; }
@media (max-width:900px){ .rules-grid{ grid-template-columns:1fr; } }
#rulesmap{ width:100%; height:auto; }
#rulesmap circle{ fill:var(--line); opacity:.55; transition:.25s; }
#rulesmap text{ font-family:var(--mono); font-size:10px; fill:var(--mut); opacity:.6; pointer-events:none; }
#rulesmap g.mk{ cursor:default; }
#rulesmap g.mk.pub{ cursor:pointer; }
#rulesmap g.mk.pub circle{ fill:var(--acc); opacity:.95; r:7; filter:drop-shadow(0 0 6px rgba(249,115,22,.45)); }
#rulesmap g.mk.pub text{ fill:var(--ink); opacity:1; font-weight:700; }
#rulesmap g.mk.pub:hover circle, #rulesmap g.mk.pub.sel circle{ fill:var(--acc-ink); }
#rulesmap g.mk.pub.sel circle{ stroke:var(--ink); stroke-width:2; }
.rules-panel{ background:var(--card); border:1px solid var(--line); border-radius:18px; padding:26px 26px; min-height:280px; }
.rules-panel h3{ margin:.35rem 0 .7rem; }
.rules-panel .checks li{ font-size:.95rem; }

/* fibre thread divider: one per page, above the footer */
.fibre-thread{ position:relative; max-width:1200px; margin:0 auto; height:2px; }
.fibre-thread::before{ content:""; position:absolute; left:24px; right:24px; top:0; height:2px; border-radius:2px;
  background:linear-gradient(90deg,#22D3EE,#4B7AF6,#E642A6,#F23F64,#F97316); opacity:.5; }
:root[data-theme="dark"] .fibre-thread::before{ opacity:.75; }
.ft-dot{ position:absolute; top:-2px; width:6px; height:6px; border-radius:50%; }
.ft-dot.l{ left:21px; background:#22D3EE; box-shadow:0 0 10px 2px rgba(34,211,238,.55); }
.ft-dot.r{ right:21px; background:#F97316; box-shadow:0 0 10px 2px rgba(249,115,22,.55); }
.ft-pulse{ position:absolute; top:-1px; left:24px; width:4px; height:4px; border-radius:50%;
  background:#fff; box-shadow:0 0 8px 3px rgba(120,160,255,.8); opacity:0;
  animation:ftpulse 7s linear infinite; }
@keyframes ftpulse{
  0%,58%{ left:24px; opacity:0; }
  60%{ opacity:1; }
  88%{ opacity:1; }
  90%,100%{ left:calc(100% - 28px); opacity:0; }
}
@media (prefers-reduced-motion: reduce){ .ft-pulse{ animation:none; opacity:0; } }

/* fibre thread as section accent: rebrand the existing eyebrow line */
.eyebrow::before{ background:linear-gradient(90deg,#22D3EE,#4B7AF6,#E642A6,#F23F64,#F97316); }
.on-dark .eyebrow::before{ background:linear-gradient(90deg,#22D3EE,#4B7AF6,#E642A6,#F23F64,#F97316); filter:saturate(1.15); }

/* structural mid-page thread (demo on homepage): no pulse, quieter */
.fibre-thread.mid{ margin:0 auto; }
.fibre-thread.mid::before{ opacity:.35; }
:root[data-theme="dark"] .fibre-thread.mid::before{ opacity:.5; }
.fibre-thread.mid .ft-dot{ width:5px; height:5px; }

/* mid thread pulses too, offset so the two signals alternate */
.fibre-thread.mid .ft-pulse{ animation-delay:3.5s; }

/* laptop widths: tighten the nav so everything stays on one line */
@media (max-width:1480px) and (min-width:1121px){
  .nav{ gap:18px; }
  .nav nav{ gap:15px; }
  .nav nav a{ font-size:.9rem; }
  .nav .cta{ padding-left:16px; padding-right:16px; }
}


/* dropdown parents: identical look to plain nav links */
.nav-drop > button{
  font:inherit; font-size:.96rem; font-weight:400; color:var(--mut);
  background:none; border:none; cursor:pointer; padding:6px 2px;
  border-bottom:2px solid transparent; white-space:nowrap; letter-spacing:inherit;
}
.nav-drop > button:hover{ color:var(--ink); }
@media (max-width:1480px) and (min-width:1121px){
  .nav-drop > button{ font-size:.9rem; }
}

/* self-hosted flags for the language switcher (no CDN, works everywhere) */
.fi{ display:inline-block; width:18px; height:13px; border-radius:2px;
  background-size:cover; background-position:center; vertical-align:-1px;
  box-shadow:0 0 0 1px rgba(0,0,0,.12); }
.fi-de{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 5 3'><rect width='5' height='3' fill='%23000'/><rect width='5' height='2' y='1' fill='%23D00'/><rect width='5' height='1' y='2' fill='%23FFCE00'/></svg>"); }
.fi-gb{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 30'><clipPath id='a'><path d='M0 0v30h60V0z'/></clipPath><path d='M0 0v30h60V0z' fill='%23012169'/><path d='M0 0l60 30m0-30L0 30' stroke='%23fff' stroke-width='6'/><path d='M0 0l60 30m0-30L0 30' stroke='%23C8102E' stroke-width='4' clip-path='url(%23a)'/><path d='M30 0v30M0 15h60' stroke='%23fff' stroke-width='10'/><path d='M30 0v30M0 15h60' stroke='%23C8102E' stroke-width='6'/></svg>"); }

/* self-hosted ticker flags, simplified for 13-18px rendering */
.fi-al{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='40' fill='%23E41E20'/><path d='M30 8 L22 14 L27 15 L20 20 L27 21 L23 27 L30 23 L37 27 L33 21 L40 20 L33 15 L38 14 Z' fill='%23000'/></svg>"); }
.fi-at{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='13.833333333333334' y='0.0' fill='%23ED2939'/><rect width='60' height='13.833333333333334' y='13.333333333333334' fill='%23fff'/><rect width='60' height='13.833333333333334' y='26.666666666666668' fill='%23ED2939'/></svg>"); }
.fi-be{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='20.5' height='40' x='0.0' fill='%23000'/><rect width='20.5' height='40' x='20.0' fill='%23FDDA24'/><rect width='20.5' height='40' x='40.0' fill='%23EF3340'/></svg>"); }
.fi-bg{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='13.833333333333334' y='0.0' fill='%23fff'/><rect width='60' height='13.833333333333334' y='13.333333333333334' fill='%2300966E'/><rect width='60' height='13.833333333333334' y='26.666666666666668' fill='%23D62612'/></svg>"); }
.fi-ch{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='40' fill='%23DA291C'/><rect x='26' y='8' width='8' height='24' fill='%23fff'/><rect x='18' y='16' width='24' height='8' fill='%23fff'/></svg>"); }
.fi-cy{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='40' fill='%23fff'/><ellipse cx='30' cy='17' rx='14' ry='7' fill='%23D57800'/><path d='M20 27 Q30 23 40 27' stroke='%234E5B31' stroke-width='2.5' fill='none'/></svg>"); }
.fi-cz{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='20' fill='%23fff'/><rect y='20' width='60' height='20' fill='%23D7141A'/><path d='M0 0 L30 20 L0 40 Z' fill='%2311457E'/></svg>"); }
.fi-dk{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='40' fill='%23C8102E'/><rect x='16' width='10' height='40' fill='%23fff'/><rect y='15' width='60' height='10' fill='%23fff'/></svg>"); }
.fi-ee{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='13.833333333333334' y='0.0' fill='%230072CE'/><rect width='60' height='13.833333333333334' y='13.333333333333334' fill='%23000'/><rect width='60' height='13.833333333333334' y='26.666666666666668' fill='%23fff'/></svg>"); }
.fi-es{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='40' fill='%23AA151B'/><rect y='10' width='60' height='20' fill='%23F1BF00'/></svg>"); }
.fi-fi{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='40' fill='%23fff'/><rect x='16' width='10' height='40' fill='%23003580'/><rect y='15' width='60' height='10' fill='%23003580'/></svg>"); }
.fi-gr{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='4.5' y='0.0' fill='%230D5EAF'/><rect width='60' height='4.5' y='4.44' fill='%23fff'/><rect width='60' height='4.5' y='8.88' fill='%230D5EAF'/><rect width='60' height='4.5' y='13.32' fill='%23fff'/><rect width='60' height='4.5' y='17.76' fill='%230D5EAF'/><rect width='60' height='4.5' y='22.200000000000003' fill='%23fff'/><rect width='60' height='4.5' y='26.64' fill='%230D5EAF'/><rect width='60' height='4.5' y='31.080000000000002' fill='%23fff'/><rect width='60' height='4.5' y='35.52' fill='%230D5EAF'/><rect width='22' height='22' fill='%230D5EAF'/><rect x='9' width='4.5' height='22' fill='%23fff'/><rect y='9' width='22' height='4.5' fill='%23fff'/></svg>"); }
.fi-hr{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='13.833333333333334' y='0.0' fill='%23FF0000'/><rect width='60' height='13.833333333333334' y='13.333333333333334' fill='%23fff'/><rect width='60' height='13.833333333333334' y='26.666666666666668' fill='%23171796'/><g><rect x='24' y='12' width='4' height='4' fill='%23FF0000'/><rect x='24' y='16' width='4' height='4' fill='%23fff'/><rect x='24' y='20' width='4' height='4' fill='%23FF0000'/><rect x='24' y='24' width='4' height='4' fill='%23fff'/><rect x='28' y='12' width='4' height='4' fill='%23fff'/><rect x='28' y='16' width='4' height='4' fill='%23FF0000'/><rect x='28' y='20' width='4' height='4' fill='%23fff'/><rect x='28' y='24' width='4' height='4' fill='%23FF0000'/><rect x='32' y='12' width='4' height='4' fill='%23FF0000'/><rect x='32' y='16' width='4' height='4' fill='%23fff'/><rect x='32' y='20' width='4' height='4' fill='%23FF0000'/><rect x='32' y='24' width='4' height='4' fill='%23fff'/></g></svg>"); }
.fi-hu{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='13.833333333333334' y='0.0' fill='%23CE2939'/><rect width='60' height='13.833333333333334' y='13.333333333333334' fill='%23fff'/><rect width='60' height='13.833333333333334' y='26.666666666666668' fill='%23477050'/></svg>"); }
.fi-ie{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='20.5' height='40' x='0.0' fill='%23169B62'/><rect width='20.5' height='40' x='20.0' fill='%23fff'/><rect width='20.5' height='40' x='40.0' fill='%23FF883E'/></svg>"); }
.fi-it{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='20.5' height='40' x='0.0' fill='%23009246'/><rect width='20.5' height='40' x='20.0' fill='%23fff'/><rect width='20.5' height='40' x='40.0' fill='%23CE2B37'/></svg>"); }
.fi-lt{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='13.833333333333334' y='0.0' fill='%23FDB913'/><rect width='60' height='13.833333333333334' y='13.333333333333334' fill='%23006A44'/><rect width='60' height='13.833333333333334' y='26.666666666666668' fill='%23C1272D'/></svg>"); }
.fi-lu{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='13.833333333333334' y='0.0' fill='%23EF3340'/><rect width='60' height='13.833333333333334' y='13.333333333333334' fill='%23fff'/><rect width='60' height='13.833333333333334' y='26.666666666666668' fill='%2300A2E1'/></svg>"); }
.fi-lv{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='40' fill='%239E3039'/><rect y='16' width='60' height='8' fill='%23fff'/></svg>"); }
.fi-mk{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='40' fill='%23D20000'/><path d='M30 20 L2 13.0 L2 27.0 Z' fill='%23FFE600'/><path d='M30 20 L58 13.0 L58 27.0 Z' fill='%23FFE600'/><path d='M30 20 L21.6 -8 L38.4 -8 Z' fill='%23FFE600'/><path d='M30 20 L21.6 48 L38.4 48 Z' fill='%23FFE600'/><path d='M30 20 L2 -5.199999999999999 L13.2 -8 Z' fill='%23FFE600'/><path d='M30 20 L46.8 -8 L58 -5.199999999999999 Z' fill='%23FFE600'/><path d='M30 20 L2 45.2 L13.2 48 Z' fill='%23FFE600'/><path d='M30 20 L46.8 48 L58 45.2 Z' fill='%23FFE600'/><circle cx='30' cy='20' r='7' fill='%23FFE600'/><circle cx='30' cy='20' r='7' fill='none' stroke='%23D20000' stroke-width='1'/></svg>"); }
.fi-mt{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='30' height='40' fill='%23fff'/><rect x='30' width='30' height='40' fill='%23CF142B'/><rect x='4' y='4' width='8' height='8' fill='%239CA3AF'/></svg>"); }
.fi-nl{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='13.833333333333334' y='0.0' fill='%23AE1C28'/><rect width='60' height='13.833333333333334' y='13.333333333333334' fill='%23fff'/><rect width='60' height='13.833333333333334' y='26.666666666666668' fill='%2321468B'/></svg>"); }
.fi-no{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='40' fill='%23BA0C2F'/><rect x='16' width='10' height='40' fill='%23fff'/><rect y='15' width='60' height='10' fill='%23fff'/><rect x='18.5' width='5' height='40' fill='%2300205B'/><rect y='17.5' width='60' height='5' fill='%2300205B'/></svg>"); }
.fi-pl{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='20.5' y='0.0' fill='%23fff'/><rect width='60' height='20.5' y='20.0' fill='%23DC143C'/></svg>"); }
.fi-pt{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='24' height='40' fill='%23046A38'/><rect x='24' width='36' height='40' fill='%23DA291C'/><circle cx='24' cy='20' r='8' fill='%23FFE900'/><circle cx='24' cy='20' r='5' fill='%23DA291C'/></svg>"); }
.fi-ro{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='20.5' height='40' x='0.0' fill='%23002B7F'/><rect width='20.5' height='40' x='20.0' fill='%23FCD116'/><rect width='20.5' height='40' x='40.0' fill='%23CE1126'/></svg>"); }
.fi-rs{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='13.833333333333334' y='0.0' fill='%23C6363C'/><rect width='60' height='13.833333333333334' y='13.333333333333334' fill='%230C4076'/><rect width='60' height='13.833333333333334' y='26.666666666666668' fill='%23fff'/><rect x='18' y='12' width='10' height='13' rx='2' fill='%23C6363C' stroke='%23F1BF00' stroke-width='1.5'/></svg>"); }
.fi-se{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='40' fill='%23006AA7'/><rect x='16' width='10' height='40' fill='%23FECC02'/><rect y='15' width='60' height='10' fill='%23FECC02'/></svg>"); }
.fi-si{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='13.833333333333334' y='0.0' fill='%23fff'/><rect width='60' height='13.833333333333334' y='13.333333333333334' fill='%23005CE6'/><rect width='60' height='13.833333333333334' y='26.666666666666668' fill='%23ED1C24'/><path d='M12 8 L19 8 L19 15 Q15.5 19 12 15 Z' fill='%23005CE6' stroke='%23fff' stroke-width='1'/></svg>"); }
.fi-sk{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='60' height='13.833333333333334' y='0.0' fill='%23fff'/><rect width='60' height='13.833333333333334' y='13.333333333333334' fill='%230B4EA2'/><rect width='60' height='13.833333333333334' y='26.666666666666668' fill='%23EE1C25'/><path d='M12 10 L22 10 L22 22 Q17 27 12 22 Z' fill='%23EE1C25' stroke='%23fff' stroke-width='1'/><rect x='16' y='12' width='2' height='10' fill='%23fff'/><rect x='13.5' y='14' width='7' height='2' fill='%23fff'/><rect x='14' y='17.5' width='6' height='2' fill='%23fff'/></svg>"); }
.tick-item .fi{ width:27px; height:18px; border-radius:3px; }
.fi-fr{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'><rect width='20.5' height='40' fill='%23002395'/><rect x='20' width='20.5' height='40' fill='%23fff'/><rect x='40' width='20' height='40' fill='%23ED2939'/></svg>"); }


/* ---------- mobile hardening ---------- */
/* wide comparison tables scroll horizontally on small screens instead of squeezing */
@media (max-width:680px){
  .cmp{ display:block; overflow-x:auto; -webkit-overflow-scrolling:touch; font-size:.85rem; }
  .cmp th,.cmp td{ padding:11px 12px; white-space:normal; min-width:120px; }
  .cmp td:first-child,.cmp th:first-child{ min-width:140px; }
  .ledger div{ flex:1 1 44%; padding:16px 14px; border-right:0; border-bottom:1px solid var(--line); }
  .ledger b{ font-size:2rem; }
  .rules-panel{ padding:20px 18px; min-height:0; }
  .quote p{ font-size:1rem; }
  h1{ overflow-wrap:break-word; hyphens:auto; }
  .actions{ display:flex; flex-direction:column; gap:10px; align-items:stretch; }
  .actions .btn{ text-align:center; }
  .cta-band .inner{ flex-direction:column; align-items:flex-start; gap:16px; }
  table.cmp tr th, table.cmp tr td{ vertical-align:top; }
}
/* nothing may push the page wider than the viewport */
html,body{ max-width:100%; overflow-x:hidden; }
img,svg,table{ max-width:100%; }

@media (max-width:680px){ .nav .logo img{ height:46px; } }
@media (max-width:400px){ .nav .logo img{ height:40px; } }

/* ---------- cookie banner ---------- */
.ck-banner{ position:fixed; left:16px; right:16px; bottom:16px; z-index:120;
  background:var(--card); border:1px solid var(--line); border-radius:18px;
  box-shadow:0 18px 48px rgba(8,16,32,.28); padding:20px 22px;
  display:none; gap:20px; align-items:center; max-width:1080px; margin:0 auto; }
.ck-banner.show{ display:flex; }
.ck-banner p{ margin:0; font-size:.93rem; color:var(--mut); line-height:1.55; }
.ck-banner p b{ color:var(--ink); font-weight:650; }
.ck-banner a{ color:var(--acc-ink); text-decoration:underline; }
.ck-actions{ display:flex; gap:10px; flex-shrink:0; }
.ck-actions button{ font:inherit; font-size:.9rem; font-weight:600; cursor:pointer;
  padding:11px 20px; border-radius:999px; border:1px solid var(--line);
  background:transparent; color:var(--ink); white-space:nowrap; transition:.2s; }
.ck-actions button:hover{ border-color:var(--acc-ink); }
.ck-actions button.acc{ background:var(--acc-ink); border-color:var(--acc-ink); color:#fff; }
.ck-actions button.acc:hover{ filter:brightness(1.08); }
@media (max-width:820px){
  .ck-banner{ flex-direction:column; align-items:stretch; gap:14px; padding:18px; }
  .ck-actions{ flex-direction:column; }
  .ck-actions button{ width:100%; }
}

/* ---------- hero FIBRE lockup ---------- */
.hero-brandline{ display:flex; align-items:center; gap:16px; margin-bottom:18px; }
.hero-brandline .eyebrow{ margin:0; }
.hero-mark{ display:inline-flex; line-height:0; flex:0 0 auto; }
.hero-mark img{ height:40px; width:40px; display:block; }
@media (max-width:720px){ .hero-mark img{ height:34px; width:34px; } .hero-brandline{ gap:12px; } }

/* ---------- dashboard grid ---------- */
.dash-grid{ display:grid; grid-template-columns:1fr 1fr; gap:26px; margin-top:26px; }
.dash-grid figure{ margin:0; }
.dash-grid figcaption{ margin-top:8px; font-size:.85rem; opacity:.75; }
@media (max-width:900px){ .dash-grid{ grid-template-columns:1fr; } }
@media (max-width:720px){ .m-hide{ display:none; } }

.fi-is{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 25 18'><rect width='25' height='18' fill='%23003897'/><rect x='7' width='4' height='18' fill='%23fff'/><rect y='7' width='25' height='4' fill='%23fff'/><rect x='8' width='2' height='18' fill='%23DC1E35'/><rect y='8' width='25' height='2' fill='%23DC1E35'/></svg>"); }
.fi-li{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 5 3'><rect width='5' height='1.5' fill='%23002780'/><rect y='1.5' width='5' height='1.5' fill='%23CE1126'/></svg>"); }
.fi-ba{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 5'><rect width='10' height='5' fill='%23001489'/><path d='M3.3,0 L10,0 L10,5 Z' fill='%23FECB00'/></svg>"); }
.fi-me{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 10'><rect width='20' height='10' fill='%23C40308'/><rect x='0.7' y='0.7' width='18.6' height='8.6' fill='none' stroke='%23D4AF37' stroke-width='0.7'/></svg>"); }
.fi-xk{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 14'><rect width='20' height='14' fill='%23244AA5'/><ellipse cx='10' cy='8.5' rx='4' ry='4.2' fill='%23D0A650'/></svg>"); }
.fi-md{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 2'><rect width='1' height='2' fill='%230046AE'/><rect x='1' width='1' height='2' fill='%23FFD200'/><rect x='2' width='1' height='2' fill='%23CC092F'/></svg>"); }
.fi-ua{ background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 2'><rect width='3' height='1' fill='%230057B7'/><rect y='1' width='3' height='1' fill='%23FFD700'/></svg>"); }

/* Hero: selbstbewusste FIBRE-Wortmarke + Betreiber-Nennung (Mondelez-Feedback) */
.hero-wordmark{ display:inline-flex; line-height:0; flex:0 0 auto; }
.hero-wordmark img{ height:72px; width:auto; display:block; }
.hero-wordmark .hw-dark{ display:none; }
:root[data-theme="dark"] .hero-wordmark .hw-light{ display:none; }
:root[data-theme="dark"] .hero-wordmark .hw-dark{ display:block; }
.hero-by{ font-size:1.05rem; color:var(--mut); font-weight:500; letter-spacing:.01em; }
.hero-brandline + .eyebrow{ display:block; margin:2px 0 14px; }
@media (max-width:600px){ .hero-wordmark img{ height:56px; } .hero-by{ font-size:.95rem; } }

/* Hero: Competence-Alliance-Logo als Betreiber-Marke (Bild statt Text), Hell/Dunkel-Umschaltung nach gemessener Textfarbe */
.hero-ca{ display:inline-flex; line-height:0; flex:0 0 auto; }
.hero-ca img{ height:44px; width:auto; display:block; }
.hero-ca .ca-dark{ display:none; }
:root[data-theme="dark"] .hero-ca .ca-light{ display:none; }
:root[data-theme="dark"] .hero-ca .ca-dark{ display:block; }
@media (max-width:600px){ .hero-ca img{ height:36px; } }

/* Alliance-Seite: Competence-Alliance-Logo im Seitenkopf */
.alliance-hero-logo{ margin-bottom:20px; line-height:0; }
.alliance-hero-logo img{ height:64px; width:auto; display:block; }
.alliance-hero-logo .ca-dark{ display:none; }
:root[data-theme="dark"] .alliance-hero-logo .ca-light{ display:none; }
:root[data-theme="dark"] .alliance-hero-logo .ca-dark{ display:block; }
@media (max-width:600px){ .alliance-hero-logo img{ height:52px; } }

/* Europa-Silhouette hinter den interaktiven Karten-Punkten */
#rulesmap .rm-land, #eumap .rm-land{ fill:rgba(130,160,195,.09); stroke:rgba(150,180,215,.28); stroke-width:.6; stroke-linejoin:round; pointer-events:none; }

/* --- Lesefreundlichkeit: Stufung & Rhythmus, seitenweit (theme-sicher) --- */
.sec-head p{ font-size:1.14rem; line-height:1.62; max-width:46em; }
.wrap p{ line-height:1.72; }
.wrap p + p{ margin-top:1.55rem; }
.card h3{ margin-bottom:.7rem; }
.card p{ line-height:1.68; }

/* Snacking-Ledger: alle Werte in eine Zeile, kleiner */
.ledger.one-line{ flex-wrap:nowrap; }
.ledger.one-line div{ flex:1 1 0; min-width:0; padding:18px 12px; }
.ledger.one-line b{ font-size:clamp(1.1rem,1.65vw,1.7rem); }
.ledger.one-line span{ font-size:.72rem; line-height:1.35; }
@media (max-width:620px){ .ledger.one-line{ flex-wrap:wrap; } .ledger.one-line div{ flex:1 1 40%; } }

/* FIBRE-Wortmarke: Schriftzug folgt dem Theme (hell: dunkle Schrift, dunkel: weisse Footer-Variante) */
.fl-dark{ display:none; }
:root[data-theme="dark"] .fl-light{ display:none; }
:root[data-theme="dark"] .fl-dark{ display:inline-block; }

/* Insights: Kernsatz-Kasten + Karten-Thumbnails */
.insight-callout{ background:#0E1A2C; border-left:3px solid var(--acc); border-radius:12px; padding:18px 22px; margin:26px 0; color:#ECF1F8; font-weight:700; font-size:1.06rem; line-height:1.5; }
.insight-thumb{ display:block; width:100%; height:auto; border-radius:12px; }
.card .insight-thumb{ margin-bottom:14px; }

/* Breite Referenztabellen: am Handy horizontal wischbar statt abgeschnitten */
.tbl-scroll{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
.tbl-scroll > table{ min-width:560px; }

/* Karten-Hover: Karte reagiert sichtbar auf die Maus */
.card{ transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.card:hover{ transform:translateY(-4px); border-color:var(--acc-ink); box-shadow:0 16px 34px -18px rgba(11,21,36,.30); }
.card:hover .k{ color:var(--acc-ink); }
@media (prefers-reduced-motion:reduce){ .card{ transition:none; } .card:hover{ transform:none; } }
.img-slot{ border:2px dashed var(--line); border-radius:18px; padding:54px 22px; text-align:center; color:var(--mut); background:var(--tint); font-size:1.02rem; }
.img-slot b{ display:block; font-size:1.15rem; color:var(--ink); margin-bottom:6px; }
