/* TheWorldInNumbers — data-platform design system v4.0 */
:root{
  --bg:#FFFFFF; --bg-soft:#F8FAFC; --bg-softer:#F1F5F9;
  --text:#0F172A; --muted:#64748B; --faint:#94A3B8; --line:#E2E8F0;
  --accent:#2563EB; --accent-dark:#1D4ED8; --accent-soft:#EFF6FF; --accent-border:#BFDBFE;
  --pos:#059669; --pos-soft:#ECFDF5; --neg:#DC2626; --neg-soft:#FEF2F2;
  --amber:#D97706; --amber-soft:#FFFBEB;
  --font:'Inter',-apple-system,'Segoe UI',Arial,sans-serif;
  --wrap:1160px; --r:12px; --r-sm:8px;
  --shadow:0 1px 2px rgba(15,23,42,.05);
  --shadow-md:0 4px 16px rgba(15,23,42,.08);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased}
a{color:inherit}
a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
img,svg{max-width:100%;height:auto;display:block}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
.eyebrow{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.skip{position:absolute;left:-9999px;top:0;background:var(--accent);color:#fff;padding:10px 18px;font-size:13px;z-index:100;border-radius:0 0 8px 0}
.skip:focus{left:0;top:0}
.reveal{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
  *,*::before,*::after{animation:none!important;transition:none!important}
}

/* Header */
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.85);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.mast{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 0}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:700;font-size:18px;letter-spacing:-.02em;white-space:nowrap}
.logo-mark{width:32px;height:32px;border-radius:8px;background:var(--accent);color:#fff;display:flex;
  align-items:center;justify-content:center;font-weight:800;font-size:13px;letter-spacing:0}
.logo span.n{color:var(--accent)}
.nav-desktop{display:flex;gap:6px;font-size:14px;font-weight:500;align-items:center}
.nav-desktop a{text-decoration:none;color:var(--muted);padding:8px 12px;border-radius:8px}
.nav-desktop a:hover{color:var(--text);background:var(--bg-soft)}
.nav-desktop a.active{color:var(--accent);background:var(--accent-soft)}
.nav-cta{background:var(--accent);color:#fff!important;padding:9px 16px;border-radius:8px;margin-left:6px}
.nav-cta:hover{background:var(--accent-dark)!important}
.menu-btn{display:none;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 14px;
  font-family:var(--font);font-size:13px;font-weight:500;color:var(--text);cursor:pointer}
.nav-mobile{display:none;border-top:1px solid var(--line);background:var(--bg)}
.nav-mobile.open{display:block}
.nav-mobile a{display:block;padding:14px 24px;font-size:14px;font-weight:500;text-decoration:none;
  color:var(--text);border-bottom:1px solid var(--line)}

/* Hero */
.hero{padding:76px 0 56px;background:linear-gradient(180deg,var(--bg-soft),var(--bg));border-bottom:1px solid var(--line)}
.hero-inner{max-width:760px}
.hero h1{font-size:clamp(34px,5vw,56px);font-weight:800;letter-spacing:-.03em;line-height:1.08;margin:16px 0 16px}
.hero h1 em{font-style:normal;color:var(--accent)}
.hero p.sub{font-size:19px;color:var(--muted);max-width:56ch}
.hero-search{margin-top:28px;display:flex;gap:10px;max-width:560px}
.hero-search input{flex:1;font-family:var(--font);font-size:15px;padding:14px 18px;border:1px solid var(--line);
  border-radius:10px;background:var(--bg);box-shadow:var(--shadow)}
.hero-search input::placeholder{color:var(--faint)}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.chip{font-size:12.5px;font-weight:500;color:var(--muted);background:var(--bg);border:1px solid var(--line);
  border-radius:999px;padding:6px 14px}
.chip strong{color:var(--text);font-weight:600}

/* KPI cards */
.kpis{padding:36px 0;border-bottom:1px solid var(--line)}
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.kpi{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px;box-shadow:var(--shadow)}
.kpi .lbl{font-size:12.5px;font-weight:500;color:var(--muted)}
.kpi .val{font-size:30px;font-weight:800;letter-spacing:-.02em;margin:6px 0 8px;font-variant-numeric:tabular-nums}
.delta{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;border-radius:999px;padding:3px 10px}
.delta.up{color:var(--pos);background:var(--pos-soft)}
.delta.down{color:var(--neg);background:var(--neg-soft)}
.delta.flat{color:var(--amber);background:var(--amber-soft)}
.kpi .src{font-size:11.5px;color:var(--faint);margin-top:10px}

/* Sections */
section{padding:64px 0;border-bottom:1px solid var(--line)}
.section-head{display:flex;align-items:end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:10px}
.section-head h2{font-size:clamp(24px,3vw,32px);font-weight:800;letter-spacing:-.02em}
.section-sub{color:var(--muted);font-size:16px;max-width:64ch;margin-bottom:28px}
.link-more{font-size:14px;font-weight:600;color:var(--accent);text-decoration:none;white-space:nowrap}
.link-more:hover{text-decoration:underline}
.page-head{padding:64px 0 44px;background:linear-gradient(180deg,var(--bg-soft),var(--bg));border-bottom:1px solid var(--line)}
.page-head h1{font-size:clamp(30px,4.4vw,46px);font-weight:800;letter-spacing:-.03em;margin:14px 0 12px}
.page-head p{font-size:18px;color:var(--muted);max-width:62ch}

/* World table */
.wt-controls{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.wt-controls select,.wt-controls input{font-family:var(--font);font-size:14px;color:var(--text);
  background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 14px;box-shadow:var(--shadow)}
.wt-controls input{flex:1;min-width:200px}
.wt-card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.wt-scroll{overflow-x:auto}
table.wt{width:100%;border-collapse:collapse;min-width:720px}
.wt th{font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);
  text-align:right;padding:13px 16px;background:var(--bg-soft);border-bottom:1px solid var(--line);
  cursor:pointer;user-select:none;white-space:nowrap;position:sticky;top:0}
.wt th:first-child{text-align:left}
.wt th:hover{color:var(--accent)}
.wt th[aria-sort]{color:var(--accent)}
.wt th[aria-sort]::after{content:" ↓";font-size:10px}
.wt th[aria-sort="ascending"]::after{content:" ↑"}
.wt td{font-size:14.5px;padding:12px 16px;border-bottom:1px solid var(--line);text-align:right;
  font-variant-numeric:tabular-nums;white-space:nowrap}
.wt tbody tr:last-child td{border-bottom:none}
.wt td:first-child{text-align:left;font-weight:600}
.wt td .rg{font-size:11px;font-weight:500;color:var(--faint);display:block;margin-top:1px}
.wt tbody tr:hover td{background:var(--bg-soft)}
.wt tr.home td{background:var(--accent-soft)}
.wt tr.home td:first-child{color:var(--accent-dark)}
.wt tr.home .rg{color:var(--accent)}
.pill{display:inline-block;font-size:12px;font-weight:600;border-radius:999px;padding:2px 10px}
.pill.up{color:var(--pos);background:var(--pos-soft)}
.pill.down{color:var(--neg);background:var(--neg-soft)}
.wt-note{font-size:13px;color:var(--faint);margin-top:14px}

/* Rankings */
.rank-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.rank{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:20px 22px}
.rank h3{font-size:15px;font-weight:700;margin-bottom:14px}
.rank ol{list-style:none;counter-reset:rk}
.rank li{counter-increment:rk;display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}
.rank li:last-child{border-bottom:none}
.rank li::before{content:counter(rk);font-size:11px;font-weight:700;color:var(--faint);width:18px;flex:none}
.rank li .c{flex:1;font-weight:600}
.rank li .v{font-variant-numeric:tabular-nums;font-weight:600;color:var(--muted)}
.rank li.home .c{color:var(--accent-dark)}

/* Cards (categories, services entry points) */
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  padding:22px;text-decoration:none;display:flex;flex-direction:column;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--accent-border)}
.card .ic{width:38px;height:38px;border-radius:10px;background:var(--accent-soft);color:var(--accent);
  display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;margin-bottom:14px}
.card h3{font-size:16px;font-weight:700;margin-bottom:4px}
.card p{font-size:13.5px;color:var(--muted)}
.card .go{margin-top:auto;padding-top:14px;font-size:13px;font-weight:600;color:var(--accent)}

/* Figures archive */
.arch-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.arch{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow);
  transition:transform .18s ease,box-shadow .18s ease}
.arch:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.arch img{width:100%;border-bottom:1px solid var(--line)}
.arch .meta{padding:14px 16px 16px}
.arch .meta h3{font-size:15px;font-weight:700;line-height:1.3}
.arch .meta p{font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin-top:5px}

/* Services */
.svc-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.svc{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  padding:28px;display:flex;flex-direction:column;position:relative}
.svc.featured{border:2px solid var(--accent)}
.svc .badge{position:absolute;top:-11px;left:24px;background:var(--accent);color:#fff;font-size:11px;
  font-weight:600;border-radius:999px;padding:4px 12px}
.svc h3{font-size:20px;font-weight:800;margin:10px 0 4px;letter-spacing:-.01em}
.svc .price{font-size:28px;font-weight:800;letter-spacing:-.02em;margin:6px 0 10px}
.svc .price span{font-size:14px;color:var(--muted);font-weight:500}
.svc p{font-size:14.5px;color:var(--muted);margin-bottom:12px}
.svc ul{list-style:none;margin:2px 0 22px}
.svc li{font-size:14px;padding:6px 0 6px 26px;position:relative;color:var(--text)}
.svc li::before{content:"✓";position:absolute;left:2px;color:var(--pos);font-weight:700}
.svc .btn{margin-top:auto;align-self:flex-start}

/* Feed */
.feed-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:48px;align-items:center}
.dtds{font-weight:800;font-size:clamp(24px,3.2vw,34px);letter-spacing:-.02em}
.dtds .c{color:#00B0F0}.dtds .p{color:#FF33CC}
.feed p.body{margin:14px 0 22px;max-width:46ch;color:var(--muted)}
.feed-card{background:#0F172A;color:#F8FAFC;padding:32px;border-radius:var(--r);box-shadow:var(--shadow-md)}
.feed-card .eyebrow{color:#00B0F0}
.feed-card .n{font-weight:800;font-size:56px;color:#FF33CC;line-height:1;margin:14px 0 8px;letter-spacing:-.02em}
.feed-card h3{font-weight:700;font-size:20px;margin-bottom:6px}
.feed-card p{font-size:14px;color:#94A3B8}

/* Sources strip */
.srcs{display:flex;gap:10px;flex-wrap:wrap}
.src-badge{font-size:13px;font-weight:600;color:var(--muted);background:var(--bg-soft);
  border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 16px}

/* Prose & misc */
.prose p{margin-bottom:16px;max-width:70ch}
.prose h3{font-size:20px;font-weight:700;margin:28px 0 8px}
.callout{background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:var(--r);
  padding:18px 22px;color:var(--accent-dark);font-weight:500;margin:18px 0;max-width:70ch}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.ccard{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:24px 26px}
.ccard h3{font-size:18px;font-weight:700;margin:8px 0 6px}
.ccard p{font-size:14.5px;color:var(--muted)}
.ccard a{color:var(--accent);font-weight:600}

/* CTA */
.cta-band{background:var(--bg-soft)}
.cta-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}
.cta-band h2{font-size:clamp(22px,3vw,30px);font-weight:800;letter-spacing:-.02em;margin:10px 0 8px}
.cta-band p{color:var(--muted);max-width:52ch}
.btn{display:inline-block;font-family:var(--font);font-size:14px;font-weight:600;text-decoration:none;
  padding:12px 22px;border-radius:var(--r-sm);border:none;cursor:pointer}
.btn-primary{background:var(--accent);color:#fff;box-shadow:var(--shadow)}
.btn-primary:hover{background:var(--accent-dark)}
.btn-ghost{border:1px solid var(--line);color:var(--text);background:var(--bg)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.hero-actions{margin-top:20px;display:flex;gap:10px;flex-wrap:wrap}

/* Footer */
.site-footer{padding:52px 0 36px;background:var(--bg-soft);border-top:1px solid var(--line)}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:36px;margin-bottom:36px}
.foot-grid h4{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin-bottom:12px}
.foot-grid a{display:block;font-size:14px;color:var(--muted);text-decoration:none;padding:4px 0}
.foot-grid a:hover{color:var(--accent)}
.foot-about{font-size:14px;color:var(--muted);max-width:36ch;margin-top:12px}
.foot-legal{border-top:1px solid var(--line);padding-top:20px;display:flex;justify-content:space-between;
  gap:14px;flex-wrap:wrap;font-size:13px;color:var(--faint)}
.to-top{position:fixed;right:22px;bottom:22px;z-index:40;background:var(--text);color:#fff;
  border:none;border-radius:10px;font-family:var(--font);font-size:12px;font-weight:600;padding:11px 14px;
  cursor:pointer;opacity:0;pointer-events:none;transition:opacity .25s ease;box-shadow:var(--shadow-md)}
.to-top.show{opacity:1;pointer-events:auto}
.to-top:hover{background:var(--accent)}

@media (max-width:920px){
  .kpi-grid{grid-template-columns:1fr 1fr}
  .cards{grid-template-columns:1fr 1fr}
  .rank-grid,.arch-grid{grid-template-columns:1fr}
  .feed-grid,.cta-grid,.svc-grid,.contact-grid{grid-template-columns:1fr;gap:32px}
  .nav-desktop{display:none}
  .menu-btn{display:block}
  .foot-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .kpi-grid,.cards{grid-template-columns:1fr}
}
