/* ==========================================================================
   Lottery Data Hub — design tokens
   ========================================================================== */
:root{
  --ldh-ink:#140f1e;
  --ldh-ink-soft:#5f5872;
  --ldh-line:#e9e7f1;
  --ldh-bg:#ffffff;
  --ldh-bg-alt:#f7f6fb;
  --ldh-card:#ffffff;

  --ldh-purple-900:#150127;
  --ldh-purple-800:#22053a;
  --ldh-purple-700:#340a55;
  --ldh-purple-600:#4a1077;

  --ldh-pink:#ff1f6b;
  --ldh-pink-dark:#d80f52;
  --ldh-gold:#ffc531;
  --ldh-teal:#1fd1c1;
  --ldh-blue:#5b8cff;
  --ldh-violet:#a855f7;

  --ldh-radius:14px;
  --ldh-radius-lg:22px;
  --ldh-shadow:0 18px 40px -24px rgba(21,1,39,.35);
  --ldh-shadow-lg:0 30px 60px -30px rgba(21,1,39,.45);
  --ldh-wrap:1180px;

  --ldh-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --ldh-display:"Archivo","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Impact,sans-serif;
}

/* ==========================================================================
   Base
   ========================================================================== */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--ldh-bg);color:var(--ldh-ink);
  font-family:var(--ldh-font);font-size:16px;line-height:1.65;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}
img{max-width:100%;height:auto;display:block}
/* Last-resort guard against a sideways-scrolling page. `clip` rather than
   `hidden`: hidden would turn <body> into a scroll container and break the
   sticky header. Every known overflow is fixed at its source below; this only
   catches whatever a future page gets wrong. */
body{overflow-x:clip}
a{color:var(--ldh-pink-dark);text-decoration:none}
a:hover{color:var(--ldh-pink)}
button{font:inherit}
/* break-word, not anywhere: a heading only ever splits a word that cannot fit
   the line on its own — "LotteryDataHub" on a 320px phone — and never one that
   would have wrapped cleanly. */
h1,h2,h3,h4{font-family:var(--ldh-display);line-height:1.08;margin:0;letter-spacing:-.01em;overflow-wrap:break-word}
p{margin:0 0 1rem}
:focus-visible{outline:3px solid var(--ldh-pink);outline-offset:3px;border-radius:6px}

.ldh-wrap{width:100%;max-width:var(--ldh-wrap);margin:0 auto;padding:0 22px}
.screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}
.ldh-skip{position:absolute;left:-9999px;top:0;z-index:999;background:var(--ldh-pink);color:#fff;padding:12px 18px;font-weight:700}
.ldh-skip:focus{left:12px;top:12px;color:#fff}
#ldh-main:focus{outline:none}

/* ==========================================================================
   Buttons
   ========================================================================== */
.ldh-btn{
  display:inline-flex;align-items:center;gap:.55em;
  padding:15px 28px;border-radius:999px;border:2px solid transparent;
  font-family:var(--ldh-display);font-weight:700;font-size:.92rem;
  letter-spacing:.04em;text-transform:uppercase;cursor:pointer;
  transition:transform .18s ease,box-shadow .18s ease,background .18s ease,color .18s ease;
}
.ldh-btn svg{width:16px;height:16px;flex:none}
.ldh-btn--primary{background:linear-gradient(135deg,#ff2f6f,#e0114f);color:#fff;box-shadow:0 14px 30px -14px rgba(255,31,107,.9)}
.ldh-btn--primary:hover{color:#fff;transform:translateY(-2px);box-shadow:0 20px 38px -14px rgba(255,31,107,.95)}
.ldh-btn--ghost{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.35)}
.ldh-btn--ghost:hover{background:rgba(255,255,255,.16);color:#fff;transform:translateY(-2px)}
.ldh-btn--outline{background:#fff;color:var(--ldh-purple-700);border-color:var(--ldh-line)}
.ldh-btn--outline:hover{color:var(--ldh-pink);border-color:var(--ldh-pink)}
.ldh-btn--sm{padding:11px 20px;font-size:.78rem}

.ldh-link-more{
  display:inline-flex;align-items:center;gap:.5em;font-weight:700;font-size:.92rem;
  color:var(--ldh-pink-dark);letter-spacing:.01em;
}
.ldh-link-more::after{content:"→";transition:transform .18s ease}
.ldh-link-more:hover::after{transform:translateX(4px)}

/* ==========================================================================
   Header
   ========================================================================== */
.ldh-header{
  position:sticky;top:0;z-index:60;
  background:rgba(21,1,39,.92);backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(255,255,255,.08);
}
.ldh-header__inner{display:flex;align-items:center;gap:22px;min-height:74px}
.ldh-brand{display:inline-flex;align-items:center;gap:10px;color:#fff;font-family:var(--ldh-display);font-weight:800;font-size:1.18rem;letter-spacing:-.02em}
.ldh-brand:hover{color:#fff}
.ldh-brand__mark{width:34px;height:34px;flex:none}
.ldh-brand__dot{color:var(--ldh-pink)}
.ldh-nav{margin-left:auto}
.ldh-nav ul{display:flex;align-items:center;gap:28px;list-style:none;margin:0;padding:0}
.ldh-nav a{color:rgba(255,255,255,.82);font-size:.92rem;font-weight:600}
.ldh-nav a:hover,.ldh-nav .current-menu-item>a{color:var(--ldh-pink)}
.ldh-header__cta{display:inline-flex;gap:10px}
.ldh-burger{display:none;margin-left:auto;background:none;border:0;color:#fff;padding:8px;cursor:pointer}
.ldh-burger svg{width:26px;height:26px}

/* ==========================================================================
   Hero
   ========================================================================== */
.ldh-hero{
  position:relative;overflow:hidden;color:#fff;
  background:
    radial-gradient(900px 460px at 88% 12%,rgba(255,31,107,.42),transparent 60%),
    radial-gradient(700px 420px at 4% 84%,rgba(168,85,247,.34),transparent 62%),
    linear-gradient(150deg,var(--ldh-purple-900) 0%,var(--ldh-purple-800) 46%,#3d0a63 100%);
}
.ldh-hero__grid{
  display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center;
  padding:86px 0 96px;position:relative;z-index:2;
}
.ldh-eyebrow{
  display:inline-flex;align-items:center;gap:9px;
  padding:7px 16px 7px 8px;border-radius:999px;
  background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.18);
  font-size:.76rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#fff;
}
.ldh-eyebrow b{
  background:var(--ldh-pink);color:#fff;border-radius:999px;
  padding:3px 10px;font-size:.68rem;letter-spacing:.1em;
}
.ldh-hero h1{
  font-size:clamp(2.5rem,5.4vw,4.05rem);font-weight:900;font-style:italic;
  text-transform:uppercase;margin:22px 0 0;letter-spacing:-.02em;
}
.ldh-hero h1 .ldh-hl{color:var(--ldh-gold)}
.ldh-hero__sub{
  margin:20px 0 32px;max-width:34em;font-size:1.06rem;color:rgba(255,255,255,.78);
}
.ldh-hero__actions{display:flex;flex-wrap:wrap;gap:14px}
.ldh-hero__trust{
  display:flex;flex-wrap:wrap;gap:10px 26px;margin-top:30px;
  font-size:.85rem;color:rgba(255,255,255,.66);
}
.ldh-hero__trust span{display:inline-flex;align-items:center;gap:8px}
.ldh-hero__trust svg{width:15px;height:15px;color:var(--ldh-teal);flex:none}

/* Hero visual — draw machine */
.ldh-hero__visual{position:relative;display:flex;justify-content:center}
.ldh-hero__card{
  width:100%;max-width:420px;border-radius:26px;padding:26px;
  background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.05));
  border:1px solid rgba(255,255,255,.2);
  box-shadow:0 40px 80px -40px rgba(0,0,0,.8);
  backdrop-filter:blur(6px);
}
.ldh-hero__card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.ldh-hero__card-top strong{font-family:var(--ldh-display);font-size:1rem;letter-spacing:.02em}
.ldh-live{
  display:inline-flex;align-items:center;gap:7px;font-size:.7rem;font-weight:800;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ldh-teal);
}
.ldh-live i{width:8px;height:8px;border-radius:50%;background:var(--ldh-teal);animation:ldh-pulse 1.8s infinite}
@keyframes ldh-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.75)}}
.ldh-hero__balls{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;padding:14px 0 18px}
.ldh-hero__meta{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;
  border-top:1px solid rgba(255,255,255,.16);padding-top:16px;
}
.ldh-hero__meta div{font-size:.78rem;color:rgba(255,255,255,.6)}
.ldh-hero__meta b{display:block;font-family:var(--ldh-display);font-size:1.02rem;color:#fff;margin-top:2px}
.ldh-hero__glow{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55;z-index:1}
.ldh-hero__glow--a{width:280px;height:280px;background:var(--ldh-pink);top:-60px;right:14%}
.ldh-hero__glow--b{width:240px;height:240px;background:var(--ldh-violet);bottom:-70px;left:8%}

/* Lottery balls */
.ldh-ball{
  width:46px;height:46px;border-radius:50%;flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--ldh-display);font-weight:800;font-size:1.02rem;color:#1a1329;
  background:radial-gradient(circle at 32% 28%,#ffffff,#dfdcea 78%);
  box-shadow:inset 0 -4px 8px rgba(0,0,0,.16),0 6px 14px -6px rgba(0,0,0,.5);
}
.ldh-ball--sm{width:38px;height:38px;font-size:.88rem}
.ldh-ball--bonus{
  color:#fff;background:radial-gradient(circle at 32% 28%,#ff6d9e,var(--ldh-pink) 74%);
}
.ldh-ball--gold{color:#3a2a00;background:radial-gradient(circle at 32% 28%,#ffe89b,var(--ldh-gold) 76%)}
.ldh-ball--empty{color:#a49dba;background:radial-gradient(circle at 32% 28%,#f4f2f9,#e3e0ec 78%)}
/* A number its game has retired. Only ever appears in a historical frequency
   table — rankings drop these — so it has to read as "on the record, not on
   the ticket": drained of colour, dashed outline, struck through. */
.ldh-ball--retired{
  color:#8a8397;background:radial-gradient(circle at 32% 28%,#f6f5f9,#e6e3ee 78%);
  box-shadow:inset 0 0 0 1px #b9b3c6;outline:1px dashed #b9b3c6;outline-offset:2px;
  text-decoration:line-through;text-decoration-thickness:1.5px;
}
.ldh-hero .ldh-ball--empty{color:rgba(255,255,255,.5);background:rgba(255,255,255,.14);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}

/* ==========================================================================
   Stat strip
   ========================================================================== */
.ldh-stats{margin-top:-46px;position:relative;z-index:5}
.ldh-stats__grid{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;
}
.ldh-stat{
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);
  padding:24px 20px;text-align:center;box-shadow:var(--ldh-shadow);
}
.ldh-stat svg{width:30px;height:30px;margin:0 auto 10px;color:var(--ldh-pink)}
.ldh-stat b{display:block;font-family:var(--ldh-display);font-size:1.7rem;font-weight:900;font-style:italic;color:var(--ldh-purple-700)}
.ldh-stat span{font-size:.74rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--ldh-ink-soft)}

/* ==========================================================================
   Sections
   ========================================================================== */
.ldh-section{padding:84px 0}
.ldh-section--alt{background:var(--ldh-bg-alt);border-top:1px solid var(--ldh-line);border-bottom:1px solid var(--ldh-line)}
.ldh-section--tight{padding:64px 0}
.ldh-shead{text-align:center;max-width:720px;margin:0 auto 44px}
.ldh-shead--left{text-align:left;margin-left:0}
.ldh-shead h2{
  font-size:clamp(1.75rem,3.4vw,2.55rem);font-weight:900;font-style:italic;
  text-transform:uppercase;color:var(--ldh-purple-800);
}
/* The underline is a background on the inline box, not an absolutely
   positioned bar. The bar had to be kept on one line — white-space:nowrap —
   or it would stretch across the whole two-line inline box, and that nowrap
   pushed long headings past the edge of a 320px phone. A background with
   box-decoration-break:clone gets its own underline per line instead, so the
   heading is free to wrap. */
.ldh-shead h2 .ldh-hl{
  color:var(--ldh-pink);padding-bottom:11px;
  background:linear-gradient(90deg,var(--ldh-pink),var(--ldh-gold)) 0 100%/100% 5px no-repeat;
  opacity:1;-webkit-box-decoration-break:clone;box-decoration-break:clone;
}
.ldh-shead p{margin:20px 0 0;color:var(--ldh-ink-soft);font-size:1.02rem}
.ldh-shead__foot{margin-top:34px;text-align:center}

/* ==========================================================================
   Latest results table
   ========================================================================== */
.ldh-results{
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius-lg);
  box-shadow:var(--ldh-shadow);overflow:hidden;
}
/* Horizontal scroller for every data table. The two `local` gradients paint
   the card's own white over each edge; the two `scroll` radials sit behind
   them, so a shadow only shows on a side that still has rows hidden past it.
   That gives the swipe a visible affordance and costs no markup or JS. */
.ldh-results__scroll{
  overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
  background:
    linear-gradient(to right,var(--ldh-card) 30%,rgba(255,255,255,0)) left center/28px 100% no-repeat local,
    linear-gradient(to left,var(--ldh-card) 30%,rgba(255,255,255,0)) right center/28px 100% no-repeat local,
    radial-gradient(farthest-side at 0 50%,rgba(21,1,39,.16),rgba(21,1,39,0)) left center/12px 100% no-repeat scroll,
    radial-gradient(farthest-side at 100% 50%,rgba(21,1,39,.16),rgba(21,1,39,0)) right center/12px 100% no-repeat scroll;
}
.ldh-table{width:100%;border-collapse:collapse;min-width:760px}
.ldh-table thead th{
  background:linear-gradient(120deg,var(--ldh-purple-800),var(--ldh-purple-600));color:#fff;
  font-family:var(--ldh-display);font-size:.74rem;font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;text-align:left;padding:16px 22px;
}
.ldh-table tbody td{padding:18px 22px;border-top:1px solid var(--ldh-line);vertical-align:middle}
.ldh-table tbody tr:hover{background:#fdf3f7}
.ldh-lottery-cell{display:flex;align-items:center;gap:13px}
.ldh-lottery-cell .ldh-badge{
  width:42px;height:42px;flex:none;border-radius:12px;display:grid;place-items:center;
  font-family:var(--ldh-display);font-weight:900;font-size:.9rem;color:#fff;
}
.ldh-lottery-cell a{font-family:var(--ldh-display);font-weight:800;font-size:1.02rem;color:var(--ldh-purple-800);letter-spacing:-.01em}
.ldh-lottery-cell a:hover{color:var(--ldh-pink)}
.ldh-lottery-cell small{display:block;font-family:var(--ldh-font);font-weight:600;font-size:.76rem;color:var(--ldh-ink-soft)}
.ldh-date{font-size:.9rem;color:var(--ldh-ink-soft);white-space:nowrap}
/* Never wrap a ball row inside a table. A wrapping .ldh-numbers has a
   min-content width of one ball, so auto table layout starves its column and
   the balls stack into a ~390px-tall row with white space either side of it —
   the single worst thing on a phone. Outside a table (cards, panels) the
   wrapping version is still what we want. */
.ldh-numbers{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.ldh-table .ldh-numbers{flex-wrap:nowrap}
.ldh-jackpot{font-family:var(--ldh-display);font-weight:900;font-size:1.05rem;color:var(--ldh-pink-dark);white-space:nowrap}
.ldh-td-action{text-align:right;white-space:nowrap}
.ldh-note{margin:18px 0 0;font-size:.82rem;color:var(--ldh-ink-soft);text-align:center}
/* Pool-change note (ldh_stats_pool_note_html) — sits under a ranking whose
   shape a mid-history rule change would otherwise distort in silence. */
.ldh-poolnote{
  max-width:760px;margin:16px auto 0;padding:12px 16px;
  background:#fff6e2;border:1px solid #f0d79a;border-radius:var(--ldh-radius);
  color:#5b4300;font-size:.84rem;line-height:1.55;text-align:left;
}
.ldh-poolnote b{font-weight:800;text-transform:uppercase;letter-spacing:.04em;font-size:.76rem;margin-right:4px}

/* Degraded-data banner (ldh_data_notice) */
.ldh-databanner{background:#fff6e2;border-bottom:1px solid #f0d79a;color:#5b4300;font-size:.86rem;line-height:1.5}
.ldh-databanner .ldh-wrap{padding-top:11px;padding-bottom:11px}
.ldh-databanner strong{font-weight:800;text-transform:uppercase;letter-spacing:.04em;font-size:.78rem;margin-right:6px}

/* Badge colours */
.ldh-c-pb{background:linear-gradient(135deg,#ff2f6f,#c2185b)}
.ldh-c-mm{background:linear-gradient(135deg,#ffb01f,#f57c00)}
.ldh-c-lo{background:linear-gradient(135deg,#5b8cff,#2c4fd8)}
.ldh-c-em{background:linear-gradient(135deg,#1fd1c1,#0a9c8f)}
.ldh-c-ej{background:linear-gradient(135deg,#a855f7,#6d28d9)}
.ldh-c-se{background:linear-gradient(135deg,#43c96b,#1e8a44)}

/* ==========================================================================
   Card grids
   ========================================================================== */
.ldh-grid{display:grid;gap:22px}
/* A grid item's automatic minimum is its min-content width, so one long
   unbreakable run inside a card widens its whole column. Opting out keeps the
   overflow inside the card instead of pushing the page sideways. */
.ldh-grid>*,.ldh-rescards>*,.ldh-numgrid>*,.ldh-months>*,.ldh-statgrid>*,
.ldh-steps>*,.ldh-stats__grid>*,.ldh-footer__grid>*,.ldh-databox>*{min-width:0}
.ldh-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ldh-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.ldh-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}

.ldh-card{
  position:relative;display:flex;flex-direction:column;
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);
  padding:26px 24px;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.ldh-card:hover{transform:translateY(-4px);box-shadow:var(--ldh-shadow-lg);border-color:#e0d3ea}
.ldh-card__icon{
  width:48px;height:48px;border-radius:13px;display:grid;place-items:center;margin-bottom:16px;
  color:#fff;background:linear-gradient(135deg,var(--ldh-pink),var(--ldh-pink-dark));
}
.ldh-card__icon svg{width:24px;height:24px}
.ldh-card h3{font-size:1.16rem;font-weight:800;color:var(--ldh-purple-800);margin-bottom:9px}
.ldh-card h3 a{color:inherit}
.ldh-card h3 a:hover{color:var(--ldh-pink)}
.ldh-card p{color:var(--ldh-ink-soft);font-size:.94rem;margin-bottom:16px}
.ldh-card .ldh-link-more{margin-top:auto}
.ldh-card__stretch::after{content:"";position:absolute;inset:0;border-radius:inherit}

/* Lottery cards */
.ldh-lot{
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);
  padding:24px;text-align:center;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.ldh-lot:hover{transform:translateY(-5px);box-shadow:var(--ldh-shadow-lg);border-color:#e0d3ea}
.ldh-lot__badge{
  width:58px;height:58px;margin:0 auto 14px;border-radius:16px;display:grid;place-items:center;
  color:#fff;font-family:var(--ldh-display);font-weight:900;font-size:1.1rem;
  box-shadow:0 12px 26px -14px rgba(21,1,39,.7);
}
.ldh-lot h3{font-size:1.14rem;font-weight:800;color:var(--ldh-purple-800)}
.ldh-lot__flag{display:block;margin-top:4px;font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ldh-ink-soft)}
/* Flex rather than inline text: the three labels are printed with no
   whitespace between them, so as plain nowrap inlines the row was one
   unbreakable 293px run and pushed the whole page sideways on a phone.
   As flex items they wrap between labels while each label stays intact. */
.ldh-lot__links{
  margin:14px 0 18px;padding:12px 0;border-top:1px solid var(--ldh-line);border-bottom:1px solid var(--ldh-line);
  font-size:.83rem;color:var(--ldh-ink-soft);
  display:flex;flex-wrap:wrap;justify-content:center;row-gap:4px;
}
.ldh-lot__links span{white-space:nowrap}
.ldh-lot__links span+span::before{content:"·";margin:0 7px;color:var(--ldh-pink)}
.ldh-lot__desc{color:var(--ldh-ink-soft);font-size:.9rem;margin:10px 0 16px}

/* ==========================================================================
   Steps
   ========================================================================== */
.ldh-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;counter-reset:ldh-step}
.ldh-step{
  position:relative;background:var(--ldh-card);border:1px solid var(--ldh-line);
  border-radius:var(--ldh-radius);padding:30px 26px 26px;
}
.ldh-step__num{
  width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  font-family:var(--ldh-display);font-weight:900;font-size:1.1rem;color:#fff;
  background:linear-gradient(135deg,var(--ldh-purple-600),var(--ldh-purple-800));
  margin-bottom:16px;box-shadow:0 12px 24px -14px rgba(21,1,39,.9);
}
.ldh-step:nth-child(2) .ldh-step__num{background:linear-gradient(135deg,#ff2f6f,#c2185b)}
.ldh-step:nth-child(3) .ldh-step__num{background:linear-gradient(135deg,#ffb01f,#f57c00)}
.ldh-step h3{font-size:1.1rem;font-weight:800;color:var(--ldh-purple-800);margin-bottom:8px}
.ldh-step p{color:var(--ldh-ink-soft);font-size:.94rem;margin:0}

/* ==========================================================================
   Tracker banner
   ========================================================================== */
.ldh-banner{
  position:relative;overflow:hidden;border-radius:var(--ldh-radius-lg);color:#fff;
  padding:52px 48px;display:grid;grid-template-columns:1.35fr .65fr;gap:34px;align-items:center;
  background:
    radial-gradient(520px 320px at 88% 10%,rgba(255,255,255,.22),transparent 62%),
    linear-gradient(120deg,#ff2f6f 0%,#d2114f 48%,#8b0f6b 100%);
  box-shadow:0 34px 70px -34px rgba(216,15,82,.75);
}
.ldh-banner h2{
  font-size:clamp(1.6rem,3.1vw,2.3rem);font-weight:900;font-style:italic;text-transform:uppercase;
}
.ldh-banner p{margin:16px 0 26px;color:rgba(255,255,255,.9);max-width:44em}
.ldh-banner .ldh-btn--primary{background:#fff;color:var(--ldh-pink-dark);box-shadow:0 16px 34px -16px rgba(0,0,0,.6)}
.ldh-banner .ldh-btn--primary:hover{color:var(--ldh-purple-800)}
.ldh-banner__balls{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.ldh-banner__balls .ldh-ball{animation:ldh-float 4s ease-in-out infinite}
.ldh-banner__balls .ldh-ball:nth-child(2){animation-delay:.4s}
.ldh-banner__balls .ldh-ball:nth-child(3){animation-delay:.8s}
.ldh-banner__balls .ldh-ball:nth-child(4){animation-delay:1.2s}
@keyframes ldh-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}

/* ==========================================================================
   Countries
   ========================================================================== */
.ldh-country{
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);padding:24px;
  transition:transform .2s ease,box-shadow .2s ease;
}
.ldh-country:hover{transform:translateY(-4px);box-shadow:var(--ldh-shadow-lg)}
.ldh-country h3{
  display:flex;align-items:center;gap:10px;font-size:1.02rem;font-weight:800;
  color:var(--ldh-purple-800);padding-bottom:13px;border-bottom:1px solid var(--ldh-line);
}
.ldh-country h3 em{font-style:normal;font-size:1.3rem;line-height:1}
.ldh-country ul{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:9px}
.ldh-country li a{
  display:flex;align-items:center;gap:9px;font-size:.94rem;font-weight:600;color:var(--ldh-ink);
}
.ldh-country li a::before{
  content:"";width:8px;height:8px;border-radius:50%;background:var(--ldh-pink);flex:none;
}
.ldh-country li a:hover{color:var(--ldh-pink)}

/* ==========================================================================
   FAQ
   ========================================================================== */
.ldh-faq__grid{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:start}
.ldh-faq__intro h2{
  font-size:clamp(1.75rem,3.4vw,2.55rem);font-weight:900;font-style:italic;
  text-transform:uppercase;color:var(--ldh-purple-800);
}
.ldh-faq__intro h2 .ldh-hl{
  color:var(--ldh-pink);padding-bottom:11px;
  background:linear-gradient(90deg,var(--ldh-pink),var(--ldh-gold)) 0 100%/100% 5px no-repeat;
  -webkit-box-decoration-break:clone;box-decoration-break:clone;
}
.ldh-faq__intro p{margin-top:20px;color:var(--ldh-ink-soft)}
.ldh-faq__list{display:grid;gap:12px}
.ldh-acc{background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);overflow:hidden}
.ldh-acc__q{
  width:100%;display:flex;align-items:center;gap:14px;justify-content:space-between;
  background:none;border:0;padding:18px 20px;text-align:left;cursor:pointer;
  font-family:var(--ldh-display);font-weight:800;font-size:1rem;color:var(--ldh-purple-800);
}
.ldh-acc__q:hover{color:var(--ldh-pink)}
.ldh-acc__q i{
  width:28px;height:28px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:var(--ldh-bg-alt);border:1px solid var(--ldh-line);color:var(--ldh-pink);
  font-style:normal;font-size:1.1rem;line-height:1;transition:transform .22s ease,background .22s ease,color .22s ease;
}
.ldh-acc[open] .ldh-acc__q i,.ldh-acc.is-open .ldh-acc__q i{
  transform:rotate(45deg);background:var(--ldh-pink);color:#fff;border-color:var(--ldh-pink);
}
.ldh-acc__a{padding:0 20px;max-height:0;overflow:hidden;transition:max-height .3s ease,padding .3s ease}
.ldh-acc.is-open .ldh-acc__a{padding:0 20px 20px;max-height:460px}
.ldh-acc__a p{margin:0;color:var(--ldh-ink-soft);font-size:.95rem}

/* ==========================================================================
   SEO text block
   ========================================================================== */
.ldh-prose{max-width:900px;margin:0 auto}
.ldh-prose h2{
  font-size:clamp(1.6rem,3vw,2.2rem);font-weight:900;font-style:italic;text-transform:uppercase;
  color:var(--ldh-purple-800);text-align:center;margin-bottom:28px;
}
.ldh-prose h2 .ldh-hl{color:var(--ldh-pink)}
.ldh-prose p{color:var(--ldh-ink-soft);font-size:1rem}
.ldh-prose p:last-child{margin-bottom:0}
.ldh-prose a{font-weight:600}

/* ==========================================================================
   Legal / policy pages
   ========================================================================== */
.ldh-legal{max-width:840px;margin:0 auto}
.ldh-legal__updated{color:var(--ldh-ink-soft);font-size:.86rem;margin-bottom:36px}
.ldh-legal section{margin-bottom:40px;scroll-margin-top:90px}
.ldh-legal section:last-child{margin-bottom:0}
.ldh-legal h2{
  font-size:clamp(1.25rem,2.4vw,1.55rem);font-weight:800;color:var(--ldh-purple-800);
  margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--ldh-line);
}
.ldh-legal h3{font-size:1.05rem;font-weight:700;color:var(--ldh-purple-800);margin:22px 0 10px}
.ldh-legal p{color:var(--ldh-ink-soft);margin:0 0 14px}
.ldh-legal p:last-child{margin-bottom:0}
.ldh-legal ul,.ldh-legal ol{color:var(--ldh-ink-soft);margin:0 0 14px;padding-left:22px}
.ldh-legal li{margin-bottom:8px}
.ldh-legal li:last-child{margin-bottom:0}
.ldh-legal strong{color:var(--ldh-ink)}
.ldh-legal a{font-weight:600}
.ldh-legal__toc{
  display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0 0 44px;padding:18px;
  background:var(--ldh-bg-alt);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);
}
.ldh-legal__toc a{
  display:inline-flex;align-items:center;padding:7px 14px;border-radius:999px;
  background:var(--ldh-card);border:1px solid var(--ldh-line);color:var(--ldh-ink);
  font-size:.82rem;font-weight:600;
}
.ldh-legal__toc a:hover{background:var(--ldh-pink);border-color:var(--ldh-pink);color:#fff}
.ldh-legal .ldh-card{margin-top:24px}
.ldh-legal .ldh-card p{margin-bottom:0}

/* ==========================================================================
   Lottery Results hub — page hero
   ========================================================================== */
.ldh-phero{
  position:relative;overflow:hidden;color:#fff;
  background:
    radial-gradient(900px 460px at 88% 12%,rgba(255,31,107,.42),transparent 60%),
    radial-gradient(700px 420px at 4% 84%,rgba(168,85,247,.34),transparent 62%),
    linear-gradient(150deg,var(--ldh-purple-900) 0%,var(--ldh-purple-800) 46%,#3d0a63 100%);
}
.ldh-phero__inner{position:relative;z-index:2;padding:52px 22px 62px;max-width:var(--ldh-wrap)}
.ldh-crumbs{
  display:flex;flex-wrap:wrap;align-items:center;gap:9px;
  font-size:.78rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:rgba(255,255,255,.5);margin-bottom:22px;
}
.ldh-crumbs a{color:rgba(255,255,255,.78)}
.ldh-crumbs a:hover{color:var(--ldh-pink)}
.ldh-crumbs [aria-current]{color:#fff}
.ldh-phero h1{
  font-size:clamp(2.3rem,5vw,3.7rem);font-weight:900;font-style:italic;
  text-transform:uppercase;letter-spacing:-.02em;margin:0;
}
.ldh-phero h1 .ldh-hl{color:var(--ldh-gold)}
.ldh-phero__sub{margin:20px 0 26px;max-width:44em;font-size:1.06rem;color:rgba(255,255,255,.78)}
.ldh-phero .ldh-eyebrow{margin:0}
.ldh-phero__jump{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}
.ldh-phero__jump a{
  display:inline-flex;align-items:center;padding:9px 18px;border-radius:999px;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);
  color:rgba(255,255,255,.85);font-size:.8rem;font-weight:700;
  letter-spacing:.05em;text-transform:uppercase;transition:background .18s ease,color .18s ease;
}
.ldh-phero__jump a:hover{background:var(--ldh-pink);border-color:var(--ldh-pink);color:#fff}

/* ==========================================================================
   Lottery Results hub — latest result cards
   ========================================================================== */
.ldh-rescards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.ldh-rescard{
  display:flex;flex-direction:column;
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius-lg);
  padding:24px;box-shadow:var(--ldh-shadow);
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.ldh-rescard:hover{transform:translateY(-4px);box-shadow:var(--ldh-shadow-lg);border-color:#e0d3ea}
.ldh-rescard__head{display:flex;align-items:center;gap:13px;margin-bottom:18px}
.ldh-rescard__head .ldh-badge{
  width:46px;height:46px;flex:none;border-radius:13px;display:grid;place-items:center;
  font-family:var(--ldh-display);font-weight:900;font-size:.95rem;color:#fff;
}
.ldh-rescard h3{font-size:1.1rem;font-weight:800;color:var(--ldh-purple-800);letter-spacing:-.01em}
.ldh-rescard h3 a{color:inherit}
.ldh-rescard h3 a:hover{color:var(--ldh-pink)}
.ldh-rescard time{display:block;margin-top:3px;font-size:.82rem;font-weight:600;color:var(--ldh-ink-soft)}
.ldh-rescard__balls{
  display:flex;flex-wrap:wrap;gap:8px;justify-content:center;
  padding:18px 6px;border-radius:var(--ldh-radius);background:var(--ldh-bg-alt);
  border:1px solid var(--ldh-line);
}
.ldh-rescard__balls .ldh-ball{width:42px;height:42px;font-size:.96rem}
.ldh-rescard__meta{
  display:grid;gap:12px;margin:18px 0;padding-top:16px;border-top:1px solid var(--ldh-line);
}
/* Label left, value right on one line each, so every card keeps the same
   height whatever a lottery happens to call its bonus balls. */
.ldh-rescard__meta div{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0}
.ldh-rescard__meta dt{
  font-size:.7rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase;
  color:var(--ldh-ink-soft);
}
.ldh-rescard__meta dd{margin:0;text-align:right}
.ldh-rescard__bonus{display:flex;gap:7px}
.ldh-rescard__jackpot{
  font-family:var(--ldh-display);font-weight:900;font-size:1.18rem;
  color:var(--ldh-pink-dark);line-height:1.2;
}
/* Three cards across a narrow wrap leaves little room for a long jackpot. */
@media (max-width:1180px){.ldh-rescard__jackpot{font-size:1.04rem}}
.ldh-rescard .ldh-link-more{margin-top:auto}

/* ==========================================================================
   Lottery Numbers hub — by-game cards
   ========================================================================== */
.ldh-numgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.ldh-numcard{
  display:flex;flex-direction:column;
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius-lg);
  padding:24px;box-shadow:var(--ldh-shadow);
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.ldh-numcard:hover{transform:translateY(-4px);box-shadow:var(--ldh-shadow-lg);border-color:#e0d3ea}
.ldh-numcard__head{display:flex;align-items:center;gap:13px;margin-bottom:14px}
.ldh-numcard__head .ldh-badge{
  width:46px;height:46px;flex:none;border-radius:13px;display:grid;place-items:center;
  font-family:var(--ldh-display);font-weight:900;font-size:.95rem;color:#fff;
}
.ldh-numcard h3{font-size:1.1rem;font-weight:800;color:var(--ldh-purple-800);letter-spacing:-.01em}
.ldh-numcard h3 a{color:inherit}
.ldh-numcard h3 a:hover{color:var(--ldh-pink)}
.ldh-numcard__flag{display:block;margin-top:2px;font-size:.76rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ldh-ink-soft)}
.ldh-numcard__links{list-style:none;margin:0;padding-top:8px;border-top:1px solid var(--ldh-line)}
.ldh-numcard__links li{border-top:1px solid var(--ldh-line)}
.ldh-numcard__links li:first-child{border-top:none}
.ldh-numcard__links a{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:11px 2px;font-size:.9rem;font-weight:600;color:var(--ldh-ink);
}
.ldh-numcard__links a::after{content:"→";color:var(--ldh-pink);transition:transform .18s ease}
.ldh-numcard__links a:hover{color:var(--ldh-pink-dark)}
.ldh-numcard__links a:hover::after{transform:translateX(4px)}
.ldh-numcard__soon{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 2px}
.ldh-numcard__soon span:first-child{font-size:.9rem;font-weight:600;color:var(--ldh-ink-soft)}

/* Generic centered row of buttons/pills, reused across the Lottery Numbers hub */
.ldh-btnrow{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:8px}

/* ==========================================================================
   Lottery Results hub — tables, filter and archive
   ========================================================================== */
.ldh-table--links tbody td,.ldh-table--archive tbody td{padding:15px 22px}
.ldh-table--links{min-width:680px}
.ldh-table--archive{min-width:720px}
.ldh-soon{
  display:inline-block;padding:5px 12px;border-radius:999px;
  background:var(--ldh-bg-alt);border:1px solid var(--ldh-line);
  font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ldh-ink-soft);
}
.ldh-row-link:hover,.ldh-arow:hover{background:#fdf3f7}
.is-hidden{display:none!important}

.ldh-filter{
  display:grid;grid-template-columns:1fr 1fr auto;gap:18px;align-items:end;
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius-lg);
  padding:24px;box-shadow:var(--ldh-shadow);
}
.ldh-filter__field{display:flex;flex-direction:column;gap:8px;min-width:0}
.ldh-filter__field label{
  font-family:var(--ldh-display);font-size:.74rem;font-weight:800;
  letter-spacing:.13em;text-transform:uppercase;color:var(--ldh-purple-800);
}
.ldh-filter select,.ldh-filter input[type="date"]{
  width:100%;padding:13px 15px;border-radius:var(--ldh-radius);
  border:1px solid var(--ldh-line);background:#fff;color:var(--ldh-ink);
  font-family:var(--ldh-font);font-size:.96rem;line-height:1.3;
  -webkit-appearance:none;appearance:none;
}
.ldh-filter select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235f5872' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:16px;padding-right:42px;
}
.ldh-filter input[type="date"]{-webkit-appearance:none;min-height:49px}
.ldh-filter select:focus,.ldh-filter input:focus{border-color:var(--ldh-pink);outline:none}
.ldh-filter select:focus-visible,.ldh-filter input:focus-visible{outline:3px solid var(--ldh-pink);outline-offset:2px}
.ldh-filter__actions{display:flex;align-items:center;gap:16px}
.ldh-filter__actions .ldh-btn{white-space:nowrap}
.ldh-filter__reset{
  font-size:.82rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ldh-ink-soft);
}
.ldh-filter__reset:hover{color:var(--ldh-pink)}
.ldh-filter__count{margin:20px 0;font-size:.9rem;color:var(--ldh-ink-soft);text-align:center}
.ldh-filter__count b{color:var(--ldh-purple-800);font-family:var(--ldh-display)}

.ldh-more{margin-top:22px;text-align:center}
/* While a History archive is fetching its next page of rows. */
[data-ldh-archive].is-loading{opacity:.55;pointer-events:none}
.ldh-empty{
  margin:22px 0 0;padding:26px 22px;text-align:center;
  background:var(--ldh-bg-alt);border:1px dashed var(--ldh-line);border-radius:var(--ldh-radius);
  color:var(--ldh-ink-soft);font-size:.95rem;
}

/* ==========================================================================
   Lottery Results hub — previous results by month
   ========================================================================== */
.ldh-months{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:start}
.ldh-month{
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);padding:22px 24px;
}
.ldh-month h3{
  font-size:1rem;font-weight:800;letter-spacing:.02em;color:var(--ldh-purple-800);
  padding-bottom:13px;border-bottom:1px solid var(--ldh-line);
}
/* Day pills rather than a list of full dates: a month with 28 draw dates
   stays four rows tall instead of twenty-eight, and the month heading
   already supplies the rest of the date. */
.ldh-days{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.ldh-days a{
  min-width:42px;height:42px;padding:0 9px;border-radius:11px;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--ldh-bg-alt);border:1px solid var(--ldh-line);
  font-family:var(--ldh-display);font-weight:800;font-size:.95rem;color:var(--ldh-purple-800);
  transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease;
}
.ldh-days a:hover{background:var(--ldh-pink);border-color:var(--ldh-pink);color:#fff;transform:translateY(-2px)}
.ldh-days a.is-active{background:var(--ldh-purple-700);border-color:var(--ldh-purple-700);color:#fff}

/* ==========================================================================
   Lottery Results hub — data panel
   ========================================================================== */
.ldh-databox{
  display:grid;grid-template-columns:1.4fr .6fr;gap:38px;align-items:center;
  background:var(--ldh-bg-alt);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius-lg);
  padding:42px 44px;
}
.ldh-databox h2{
  font-size:clamp(1.55rem,3vw,2.2rem);font-weight:900;font-style:italic;
  text-transform:uppercase;color:var(--ldh-purple-800);margin-bottom:20px;
}
.ldh-databox h2 .ldh-hl{color:var(--ldh-pink)}
.ldh-databox p{color:var(--ldh-ink-soft);font-size:1rem}
.ldh-databox__note{font-size:.9rem;margin-bottom:0}
.ldh-databox__stats{display:grid;gap:14px;margin:0}
.ldh-databox__stats div{
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);
  padding:16px 18px;
}
.ldh-databox__stats dt{
  font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ldh-ink-soft);
}
.ldh-databox__stats dd{
  margin:5px 0 0;font-family:var(--ldh-display);font-weight:900;font-style:italic;
  font-size:1.4rem;color:var(--ldh-purple-700);
}

/* ==========================================================================
   Footer
   ========================================================================== */
.ldh-footer{
  background:
    radial-gradient(700px 340px at 82% -10%,rgba(255,31,107,.28),transparent 60%),
    linear-gradient(160deg,var(--ldh-purple-900),var(--ldh-purple-800));
  color:rgba(255,255,255,.72);padding:70px 0 0;
}
.ldh-footer__grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:38px;padding-bottom:48px}
.ldh-footer h2{
  font-size:.82rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#fff;margin-bottom:18px;
}
.ldh-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.ldh-footer a{color:rgba(255,255,255,.72);font-size:.93rem}
.ldh-footer a:hover{color:var(--ldh-pink)}
.ldh-footer__about p{font-size:.93rem;margin-top:16px;max-width:32em}
.ldh-footer__bar{
  border-top:1px solid rgba(255,255,255,.12);padding:22px 0;
  display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;font-size:.85rem;
}
.ldh-footer__bar p{margin:0}

/* ==========================================================================
   Generic pages
   ========================================================================== */
.ldh-page{padding:64px 0 84px}
.ldh-page__head{margin-bottom:30px}
.ldh-page__head h1{font-size:clamp(1.9rem,4vw,2.8rem);font-weight:900;font-style:italic;text-transform:uppercase;color:var(--ldh-purple-800)}
.ldh-entry{max-width:820px}
.ldh-entry h2,.ldh-entry h3{margin:32px 0 12px;color:var(--ldh-purple-800)}

/* ==========================================================================
   Powerball Results — featured draw card
   ========================================================================== */
.ldh-pbresult{
  position:relative;max-width:760px;margin:0 auto;
  background:var(--ldh-card);border-radius:var(--ldh-radius-lg);
  padding:3px;box-shadow:var(--ldh-shadow-lg);
  background-image:linear-gradient(135deg,var(--ldh-pink),var(--ldh-gold));
}
.ldh-pbresult__inner{
  background:var(--ldh-card);border-radius:calc(var(--ldh-radius-lg) - 3px);
  padding:32px 34px;
}
.ldh-pbresult__head{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  margin-bottom:20px;
}
.ldh-pbresult__head h3{
  font-family:var(--ldh-display);font-weight:900;font-style:italic;text-transform:uppercase;
  font-size:1.3rem;color:var(--ldh-purple-800);
}
.ldh-pbresult__balls{
  display:flex;flex-wrap:wrap;gap:12px;justify-content:center;
  padding:26px 10px;border-radius:var(--ldh-radius);background:var(--ldh-bg-alt);
  border:1px solid var(--ldh-line);
}
.ldh-pbresult__balls .ldh-ball{width:52px;height:52px;font-size:1.15rem}
.ldh-pbresult__meta{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:24px 0 0;
}
.ldh-pbresult__meta div{
  background:var(--ldh-bg-alt);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);
  padding:14px 16px;text-align:center;
}
.ldh-pbresult__meta dt{
  font-size:.68rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--ldh-ink-soft);
}
.ldh-pbresult__meta dd{
  margin:6px 0 0;font-family:var(--ldh-display);font-weight:900;font-style:italic;
  font-size:1.3rem;color:var(--ldh-pink-dark);
}
.ldh-pbresult__foot{margin-top:26px;text-align:center}

/* UK Lotto — Round 1 / Round 2 tag, grouped with the Live badge */
.ldh-pbresult__tags{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ldh-round-tag{
  display:inline-flex;align-items:center;padding:5px 14px;border-radius:999px;
  background:var(--ldh-purple-700);color:#fff;font-family:var(--ldh-display);
  font-weight:800;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;
}

/* Four-step "how to check" grid */
.ldh-steps--4{grid-template-columns:repeat(4,minmax(0,1fr))}

/* Single-field "results by date" lookup */
.ldh-filter--single{grid-template-columns:1fr auto}
.ldh-byd-panel{
  max-width:760px;margin:26px auto 0;
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius-lg);
  padding:26px 28px;box-shadow:var(--ldh-shadow);
}
.ldh-byd-panel.is-hidden{display:none}
.ldh-byd-panel__head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}
.ldh-byd-panel__head strong{font-family:var(--ldh-display);font-size:.95rem;color:var(--ldh-purple-800)}

/* UK Lotto by-date panel — one block per round, Round 1 above Round 2 */
.ldh-lb-round{margin-bottom:22px}
.ldh-lb-round:last-child{margin-bottom:0}
.ldh-lb-round .ldh-round-tag{margin-bottom:12px}
.ldh-lb-round .ldh-rescard__meta{margin-top:14px}

/* ==========================================================================
   Lottery History hub
   ========================================================================== */
/* "Lottery Results by Year" — static pills, not links yet (dedicated year
   pages are not built until the historical backfill is deep enough). */
.ldh-years{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.ldh-year-pill{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:74px;height:44px;padding:0 16px;border-radius:11px;
  background:var(--ldh-bg-alt);border:1px solid var(--ldh-line);
  font-family:var(--ldh-display);font-weight:800;font-size:.98rem;color:var(--ldh-purple-800);
}

/* "Lottery Results by Date" — one row per lottery drawn on the selected date */
.ldh-lh-byd-list{display:grid;gap:16px}
.ldh-lh-byd-row{
  display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
  padding:14px 0;border-top:1px solid var(--ldh-line);
}
.ldh-lh-byd-row:first-child{border-top:none;padding-top:0}

/* "Lottery Archives" list */
.ldh-archive-list{list-style:none;margin:0 auto;padding:0;max-width:820px;display:grid;gap:14px}
.ldh-archive-list li{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:16px 20px;background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);
}
.ldh-archive-list strong{font-family:var(--ldh-display);font-weight:800;color:var(--ldh-purple-800)}

/* ==========================================================================
   /lottery-statistics/ — instant filters, hot/cold ranked lists
   ========================================================================== */
/* Two-select instant filters (no submit button — JS updates the section on
   change, reading from the page's embedded stats payload). */
.ldh-filter--pair{grid-template-columns:1fr 1fr}
.ldh-filter--solo{grid-template-columns:1fr;max-width:300px;margin:0 auto 30px}
.ldh-shead__label{
  margin:0 0 14px;font-family:var(--ldh-display);font-size:.74rem;font-weight:800;
  letter-spacing:.13em;text-transform:uppercase;color:var(--ldh-ink-soft);
}

/* Hot / Cold Numbers — ranked list with a relative-frequency bar */
.ldh-ranklist{list-style:none;margin:0;padding:0;display:grid;gap:10px;max-width:640px}
.ldh-rank{
  display:flex;align-items:center;gap:16px;padding:13px 18px;
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);
}
.ldh-rank__pos{
  width:24px;flex:none;text-align:center;
  font-family:var(--ldh-display);font-weight:900;font-style:italic;font-size:.95rem;
  color:var(--ldh-ink-soft);
}
.ldh-rank__bar{flex:1;height:8px;border-radius:999px;background:var(--ldh-bg-alt);overflow:hidden}
.ldh-rank__bar span{display:block;height:100%;border-radius:999px;background:linear-gradient(135deg,var(--ldh-pink),var(--ldh-gold))}
.ldh-rank--cold .ldh-rank__bar span{background:linear-gradient(135deg,var(--ldh-blue),var(--ldh-purple-600))}
.ldh-rank__count{flex:none;font-size:.8rem;font-weight:700;color:var(--ldh-ink-soft);white-space:nowrap}

/* Historical Statistics data box, shown per selected lottery */
.ldh-statgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.ldh-statgrid--pair{grid-template-columns:repeat(2,minmax(0,1fr))}
.ldh-statgrid div{
  background:var(--ldh-card);border:1px solid var(--ldh-line);border-radius:var(--ldh-radius);
  padding:18px 20px;
}
.ldh-statgrid dt{
  font-size:.7rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--ldh-ink-soft);
}
.ldh-statgrid dd{
  margin:8px 0 0;font-family:var(--ldh-display);font-weight:900;font-style:italic;
  font-size:1.3rem;color:var(--ldh-purple-800);
}
.ldh-statgrid div.is-selected{
  border-color:var(--ldh-pink);
  box-shadow:0 0 0 2px var(--ldh-pink) inset;
}
.ldh-statgrid div.is-selected dd{color:var(--ldh-pink-dark)}

/* ==========================================================================
   Number Generator tool (/mega-millions-number-generator/ and siblings)
   ========================================================================== */
.ldh-gen{
  max-width:760px;margin:0 auto;background:var(--ldh-card);border:1px solid var(--ldh-line);
  border-radius:var(--ldh-radius-lg);padding:32px 34px;box-shadow:var(--ldh-shadow-lg);
}
.ldh-gen__field{margin-bottom:26px}
.ldh-gen__field:last-of-type{margin-bottom:0}
.ldh-gen__label{
  display:block;margin:0 0 12px;font-family:var(--ldh-display);font-size:.74rem;font-weight:800;
  letter-spacing:.13em;text-transform:uppercase;color:var(--ldh-purple-800);
}
.ldh-gen__pills{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.ldh-gen__pills button{
  min-width:64px;height:46px;padding:0 16px;border-radius:11px;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--ldh-bg-alt);border:1px solid var(--ldh-line);
  font-family:var(--ldh-display);font-weight:800;font-size:.95rem;color:var(--ldh-purple-800);
  transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease;
}
.ldh-gen__pills button:hover{background:var(--ldh-pink);border-color:var(--ldh-pink);color:#fff;transform:translateY(-2px)}
.ldh-gen__pills button.is-active{background:var(--ldh-purple-700);border-color:var(--ldh-purple-700);color:#fff}
.ldh-gen__select{max-width:320px}
.ldh-gen__actions{margin-top:28px;text-align:center}
.ldh-gen__actions .ldh-btn{width:100%;justify-content:center}

/* Generated results */
.ldh-genresult{max-width:760px;margin:0 auto}
.ldh-genresult__single{
  position:relative;border-radius:var(--ldh-radius-lg);padding:3px;box-shadow:var(--ldh-shadow-lg);
  background-image:linear-gradient(135deg,var(--ldh-pink),var(--ldh-gold));
}
.ldh-genresult__single-inner{
  background:var(--ldh-card);border-radius:calc(var(--ldh-radius-lg) - 3px);padding:30px 30px 26px;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px;
}
.ldh-genresult__single-inner .ldh-ball{width:54px;height:54px;font-size:1.18rem}
.ldh-genresult__sep{color:var(--ldh-line);font-size:1.4rem;font-weight:300;margin:0 4px}
.ldh-gen-copyrow{margin-top:20px;text-align:center}
.ldh-empty-gen{
  padding:26px 22px;text-align:center;background:var(--ldh-bg-alt);border:1px dashed var(--ldh-line);
  border-radius:var(--ldh-radius);color:var(--ldh-ink-soft);font-size:.95rem;
}
.ldh-table--gen tbody td{vertical-align:middle}

/* Quick Pick card */
.ldh-qp{
  max-width:560px;margin:0 auto;text-align:center;background:var(--ldh-bg-alt);
  border:1px solid var(--ldh-line);border-radius:var(--ldh-radius-lg);padding:34px 30px;
}
.ldh-qp__balls{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;min-height:56px;align-items:center}
.ldh-qp__balls .ldh-ball{width:52px;height:52px;font-size:1.15rem}
.ldh-qp__actions{margin-top:24px}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width:1024px){
  .ldh-hero__grid{grid-template-columns:1fr;gap:40px;padding:64px 0 84px}
  .ldh-hero__visual{justify-content:flex-start}
  .ldh-stats__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ldh-grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ldh-faq__grid{grid-template-columns:1fr;gap:34px}
  .ldh-banner{grid-template-columns:1fr;padding:40px 32px}
  .ldh-banner__balls{justify-content:flex-start}
  .ldh-footer__grid{grid-template-columns:1fr 1fr}
  .ldh-rescards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ldh-numgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ldh-months{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ldh-filter{grid-template-columns:1fr 1fr}
  .ldh-filter__actions{grid-column:1/-1}
  .ldh-databox{grid-template-columns:1fr;gap:28px;padding:34px 30px}
  .ldh-steps--4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ldh-statgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:860px){
  .ldh-nav{
    display:none;position:absolute;top:74px;left:0;right:0;
    background:var(--ldh-purple-900);border-bottom:1px solid rgba(255,255,255,.12);padding:16px 22px 22px;
  }
  .ldh-nav.is-open{display:block}
  .ldh-nav ul{flex-direction:column;align-items:flex-start;gap:14px}
  .ldh-burger{display:inline-flex}
  .ldh-header__cta{display:none}
  .ldh-grid--3,.ldh-steps{grid-template-columns:1fr}
  .ldh-numgrid{grid-template-columns:1fr}
  .ldh-phero__jump{gap:8px}
}
@media (max-width:600px){
  .ldh-section{padding:60px 0}
  .ldh-stats{margin-top:-32px}
  .ldh-stats__grid{gap:12px}
  .ldh-stat{padding:18px 12px}
  .ldh-stat b{font-size:1.35rem}
  .ldh-grid--4,.ldh-grid--2{grid-template-columns:1fr}
  .ldh-footer__grid{grid-template-columns:1fr;gap:28px}
  .ldh-hero h1{font-size:2.15rem}
  .ldh-btn{width:100%;justify-content:center}
  .ldh-hero__actions{width:100%}
  .ldh-phero__inner{padding:38px 22px 46px}
  .ldh-phero h1{font-size:2.1rem}
  .ldh-rescards,.ldh-months{grid-template-columns:1fr}
  .ldh-filter{grid-template-columns:1fr;padding:20px}
  .ldh-filter--pair{grid-template-columns:1fr}
  .ldh-filter__actions{flex-direction:column;align-items:stretch;gap:12px}
  .ldh-filter__reset{text-align:center}
  .ldh-databox{padding:28px 22px}
  .ldh-statgrid{grid-template-columns:1fr}
  /* Three columns leave ~56px each on a 320px phone, which is narrower than
     the shortest label in the box, let alone a nine-figure jackpot. */
  .ldh-pbresult__meta{grid-template-columns:1fr}
  .ldh-pbresult__inner{padding:24px 20px}
  .ldh-pbresult__balls{padding:20px 8px;gap:9px}
  .ldh-pbresult__balls .ldh-ball{width:44px;height:44px;font-size:1rem}

  /* The clamp() floor is still too tall for a one-word heading here:
     "LotteryDataHub" needs 289px of the 276px a 320px phone leaves. */
  .ldh-shead h2,.ldh-faq__intro h2{font-size:1.55rem}
  .ldh-gen{padding:24px 20px}
  .ldh-genresult__single-inner{padding:24px 18px}
  .ldh-qp{padding:26px 20px}

  /* Tables still scroll sideways on a phone — that is the right pattern for
     this much data — but tighten them so the swipe is a short one instead of
     three screens. */
  .ldh-table{min-width:0}
  .ldh-table thead th{padding:12px 14px;font-size:.68rem;letter-spacing:.1em}
  .ldh-table tbody td{padding:13px 14px}
  .ldh-table--links tbody td,.ldh-table--archive tbody td{padding:12px 14px}
  .ldh-table .ldh-ball--sm{width:32px;height:32px;font-size:.8rem}
  .ldh-table .ldh-numbers{gap:5px}
  .ldh-lottery-cell{gap:10px}
  .ldh-lottery-cell .ldh-badge{width:36px;height:36px;border-radius:10px;font-size:.8rem}
  .ldh-lottery-cell a{font-size:.95rem}
  .ldh-jackpot{font-size:.95rem}
  /* .ldh-btn goes full-width on phones, which is right for a hero CTA and
     wrong for the small button sitting in a table cell. */
  .ldh-table .ldh-btn{width:auto}
  .ldh-results__scroll{background-size:20px 100%,20px 100%,10px 100%,10px 100%}

  /* The "Results" button column costs ~140px of swipe and goes nowhere the
     lottery name in the first cell doesn't already go, so it comes off on a
     phone. :has() keeps the header cell tied to the body cells, so a table
     without an action column is untouched. */
  .ldh-table:has(.ldh-td-action) thead th:last-child,
  .ldh-table .ldh-td-action{display:none}

  /* Pin the first column while the rest scrolls: swiping to the winning
     numbers must not cost you the row's identity. Only on a scroller that
     really overflows (main.js sets the class) — a table that already fits
     would just get a stray rule after its first column. The header cell
     already paints an opaque gradient; a body cell is transparent, so it
     needs the card colour or the scrolling rows show through it. */
  .is-scrollable .ldh-table thead th:first-child,
  .is-scrollable .ldh-table tbody td:first-child{position:sticky;left:0;z-index:2}
  .is-scrollable .ldh-table tbody td:first-child{background:var(--ldh-card);box-shadow:1px 0 0 var(--ldh-line)}
}
/* /euromillions-history/ — year pills double as an in-page filter shortcut
   here (unlike the static, non-interactive pills on /lottery-history/), so
   they get their own modifier for the clickable states instead of changing
   the shared .ldh-year-pill look everywhere it's used. */
.ldh-emh-year{cursor:pointer;font-family:inherit;transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}
.ldh-emh-year:hover{background:var(--ldh-pink);border-color:var(--ldh-pink);color:#fff;transform:translateY(-2px)}
.ldh-emh-year.is-active{background:var(--ldh-purple-700);border-color:var(--ldh-purple-700);color:#fff}

/* /superenalotto-history/ — year pills double as an in-page filter shortcut
   here, so they get their own modifier for the clickable states instead of
   changing the shared .ldh-year-pill look everywhere it's used. */
.ldh-seh-year{cursor:pointer;font-family:inherit;transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}
.ldh-seh-year:hover{background:var(--ldh-pink);border-color:var(--ldh-pink);color:#fff;transform:translateY(-2px)}
.ldh-seh-year.is-active{background:var(--ldh-purple-700);border-color:var(--ldh-purple-700);color:#fff}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

/* /powerball-history/ — clickable year pills (mirrors .ldh-year-pill, plain
   spans elsewhere, made interactive here since this page's pills filter the
   table above instead of just listing years). */
button.ldh-year-pill{cursor:pointer;font:inherit;background-color:var(--ldh-bg-alt);appearance:none;-webkit-appearance:none;transition:background-color .15s ease,border-color .15s ease,color .15s ease}
button.ldh-year-pill:hover,button.ldh-year-pill:focus-visible{border-color:var(--ldh-pink);color:var(--ldh-pink)}

/* ==========================================================================
   /contact/ — About & Contact
   ========================================================================== */
.ldh-contact__info{text-align:left}
.ldh-contact__info h3{font-size:1.16rem;font-weight:800;color:var(--ldh-purple-800);margin-bottom:9px}
.ldh-contact__info--solo{max-width:460px;margin:0 auto;text-align:center;padding:34px 30px}
.ldh-contact__info--solo .ldh-card__icon{margin-left:auto;margin-right:auto}
/* An address has no space to wrap at, so it has to be allowed to break
   anywhere or it runs off the side of a narrow phone. */
.ldh-contact__email{display:inline-block;margin:6px 0 10px;font-family:var(--ldh-display);font-weight:800;font-size:1.15rem;color:var(--ldh-pink-dark);overflow-wrap:anywhere}
.ldh-contact__email:hover{color:var(--ldh-pink)}
button.ldh-year-pill.is-active{background:var(--ldh-pink);border-color:var(--ldh-pink);color:#fff}
