/* ==========================================================================
   LEI WORLDWIDE — BLOG COMPONENT STYLES
   Loaded on the front end and in the Gutenberg editor (see the plugin file).

   Tokens are prefixed --leiw-* so they cannot clash with theme variables.
   Component selectors are doubled (.leiw-answer.leiw-answer) to outrank the
   theme without !important and without needing an ancestor wrapper.

   Colours match the site Global Colors: navy #030F39, lime #BDEB01.
   Fonts are NOT loaded here — add them via Elementor Custom Fonts or
   wp_enqueue_style, and check first what the theme already loads.

   The components are built for a dark page. The "DARK ARTICLE PAGE" section
   further down is what makes single posts dark; everything here is tokens
   only, which paint nothing on their own.
   ========================================================================== */

:root,.editor-styles-wrapper{
  /* --- colour tokens: edit these and every component follows --- */
  --leiw-navy-deep:#020A26;
  --leiw-navy:#030F39;
  --leiw-navy-raised:#0C1E52;
  --leiw-navy-soft:#081744;
  --leiw-lime:#BDEB01;
  --leiw-lime-dim:#A5CC01;
  --leiw-line:rgba(255,255,255,.13);
  --leiw-line-strong:rgba(255,255,255,.24);
  --leiw-ink:#FFFFFF;
  --leiw-body:rgba(255,255,255,.80);
  --leiw-muted:rgba(255,255,255,.55);

  /* --- type --- */
  --leiw-display:'Poppins','Outfit','Montserrat',-apple-system,sans-serif;
  --leiw-text:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --leiw-mono:'IBM Plex Mono',ui-monospace,monospace;

  /* --- rhythm --- */
  --leiw-shell:1180px;
  --leiw-measure:70ch;
  --leiw-r:14px;

  /* --- fixed image frames: change once, applies everywhere --- */
  --leiw-fig-ratio:16/9;
  --leiw-card-ratio:16/10;
  --leiw-avatar:56px;

  /* ------------------------------------------------------------------
     HERO BACKGROUND. Swap this one line to change the header image.
     Upload to the media library first, then paste the URL in.
     NOTE: this file does not ship the image — the path below 404s until
     leiw-hero-stand.jpg is uploaded. No pattern uses .leiw-hero today.
  ------------------------------------------------------------------ */
  --leiw-hero-image:url('/wp-content/uploads/leiw-hero-stand.jpg');

  /* Scrim. The photo sits right, the headline sits left, so this fades
     from solid navy on the left to clear on the right. Move the 42%/58%
     stops to change where the photo starts showing through. */
  --leiw-hero-scrim:linear-gradient(90deg,var(--leiw-navy) 0%,var(--leiw-navy) 30%,rgba(3,15,57,.92) 42%,rgba(3,15,57,.45) 58%,rgba(3,15,57,.08) 76%,rgba(3,15,57,0) 100%),
               linear-gradient(180deg,rgba(2,10,38,.22) 0%,rgba(2,10,38,0) 28%,rgba(3,15,57,.50) 84%,var(--leiw-navy) 100%);
}

/* ==========================================================================
   DARK ARTICLE CONTAINER
   The components carry white and lime text, so whatever sits under them has
   to be dark.

   EVERYTHING IN THIS FILE HANGS OFF .leiw-article. That class is put on the
   article container by hand, in the Elementor Single Post template — nothing
   in PHP adds it. Site header, footer and every page without that container
   are untouched, which is the point: styling the <body> would have repainted
   the shared chrome too.

   The class is doubled (.leiw-article.leiw-article) for the specificity the
   rest of this file already uses, so theme and Elementor rules lose without
   needing !important. Keep the doubling when adding rules.

   NOTE the name collision: the original mock-up used .leiw-article for the
   article column inside .leiw-shell. Those rules were removed when the class
   was repurposed — do not reintroduce layout rules under this name.

   .editor-styles-wrapper is listed alongside it because the block editor has
   no Elementor container to hang off, and the canvas still has to preview
   dark. It is editor-only; the stylesheet is not loaded on the front end for
   anything but posts.

   The heading and link rules undo light-mode styling the child theme applies
   to posts in themes/hello-elementor-child/style.css — navy headings and
   navy links, which would be invisible here.
   ========================================================================== */
.leiw-article.leiw-article,.editor-styles-wrapper{
  background:var(--leiw-navy);
  color:var(--leiw-body);
  font-family:var(--leiw-text);
  font-size:17px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
/* Headings. Elementor writes per-element rules like
   `.elementor-11044 .elementor-element-abc .elementor-heading-title{color:…}`,
   which outrank anything reasonable a stylesheet can say, and its kit resolves
   --e-global-color-primary to navy — invisible here. !important is the only
   thing that reaches past generated per-element CSS, and it is what the child
   theme already does for the same reason. Scoped to blog posts, so it cannot
   reach a heading anywhere else on the site. */
.leiw-article.leiw-article h1,.leiw-article.leiw-article h2,
.leiw-article.leiw-article h3,.leiw-article.leiw-article h4,
.leiw-article.leiw-article .elementor-heading-title,
.leiw-article.leiw-article .entry-title,
.leiw-article.leiw-article .page-header h1{color:var(--leiw-ink) !important;}
.leiw-article.leiw-article .post a,.leiw-article.leiw-article .entry-content a{color:var(--leiw-lime);}

.leiw-article.leiw-article .elementor-widget-table-of-contents a { color:var(--leiw-ink);}

/* ==========================================================================
   NATIVE GUTENBERG BLOCKS
   So authors write with the ordinary Paragraph / Heading / List blocks and it
   comes out right, without reaching for a pattern. Deliberately NOT done with
   classes: press Enter at the end of a class-styled paragraph and the new one
   is created without the class, which is impossible for an author to debug.

   These rules used to be tied to the content container — direct children of
   .elementor-widget-theme-post-content or .entry-content — as a way of
   keeping them off component internals. That was a guess at Elementor's
   markup and it was wrong: the reset never matched, while the ::before rules
   (which were never container-bound) did, so every bullet rendered twice.

   They are scoped to .leiw-article as a whole now. The one list that lives
   inside a component, the ordered list in .leiw-sources, is excluded
   explicitly at the end of this block. Component paragraphs set their own
   type, so the measure below is harmless to them.
   ========================================================================== */

/* Hold the measure so long lines stay readable on wide screens. */
.leiw-article.leiw-article p{max-width:var(--leiw-measure);}
/* The quote card sets a tighter measure of its own. */
.leiw-article.leiw-article .leiw-quotecard-text{max-width:60ch;}

/* Headings written in the editor. Colour is set for the whole page above;
   this adds the display face and the vertical rhythm. */
.leiw-article.leiw-article .wp-block-heading{
  font-family:var(--leiw-display);font-weight:600;letter-spacing:-.01em;
  color:var(--leiw-ink);
  scroll-margin-top:24px;
}
.leiw-article.leiw-article h2.wp-block-heading{
  font-size:clamp(23px,3.2vw,31px);line-height:1.24;
  margin:clamp(44px,6vw,64px) 0 18px;max-width:26ch;
}
.leiw-article.leiw-article h3.wp-block-heading{
  font-size:clamp(18px,2.3vw,21px);line-height:1.35;margin:36px 0 14px;
}

/* Lists: lime dots for bullets, mono lime figures for numbers — the look the
   template carried on .leiw-list, applied to the core List block instead.

   The reset and the markers must stay scoped the same way. When only one of
   them matched, the browser drew the native marker and the lime one on top of
   each other. If you ever narrow one of these selectors, narrow both. */
.leiw-article.leiw-article ul.wp-block-list,
.leiw-article.leiw-article ol.wp-block-list{
  list-style:none;margin:0 0 24px;padding:0;max-width:var(--leiw-measure);
}
.leiw-article.leiw-article ul.wp-block-list > li{position:relative;padding-left:22px;margin-bottom:11px;}
.leiw-article.leiw-article ul.wp-block-list > li::before{
  content:'';position:absolute;left:2px;top:11px;width:6px;height:6px;
  border-radius:50%;background:var(--leiw-lime);
}
.leiw-article.leiw-article ol.wp-block-list{counter-reset:leiwnum;}
.leiw-article.leiw-article ol.wp-block-list > li{position:relative;padding-left:32px;margin-bottom:11px;}
.leiw-article.leiw-article ol.wp-block-list > li::before{
  counter-increment:leiwnum;content:counter(leiwnum);position:absolute;left:0;top:0;
  font-family:var(--leiw-mono);font-size:13px;color:var(--leiw-lime);
}
/* The sources list keeps plain decimal numbering, not the lime treatment.
   These selectors carry the .leiw-article.leiw-article prefix purely to outrank the
   generic ol rules above — without it the lime counter renders on top of the
   decimal marker and every source is numbered twice. */
.leiw-article.leiw-article .leiw-sources.leiw-sources ol{
  list-style:decimal;counter-reset:none;
  /* The reset above zeroes padding on every list; the decimal markers need
     their indent back or they sit outside the box. */
  padding-left:20px;
}
.leiw-article.leiw-article .leiw-sources.leiw-sources ol > li{padding-left:0;position:static;}
.leiw-article.leiw-article .leiw-sources.leiw-sources ol > li::before{content:none;}

/* reset the handful of things WordPress themes usually stomp */
.leiw-article *{box-sizing:border-box;}
.leiw-p.leiw-p,.leiw-h1.leiw-h1,.leiw-h2.leiw-h2,.leiw-h3.leiw-h3{margin:0;}
.leiw-list.leiw-list{margin:0;padding:0;}
/* Links.
   Styled on the element, not on a .leiw-a class. A class only ever reaches
   links that shipped inside a pattern: the moment an author selects text and
   hits the link button, Gutenberg writes a bare <a>, which then fell through
   to the child theme's `.post a{color:#030f39}` — navy text on a navy page.
   The class is kept below so older content keeps working. */
.leiw-article.leiw-article a,
.leiw-a.leiw-a{color:var(--leiw-lime);text-decoration:none;border-bottom:1px solid rgba(189,235,1,.4);transition:border-color .15s ease;}
.leiw-article.leiw-article a:hover,
.leiw-a.leiw-a:hover{border-bottom-color:var(--leiw-lime);}

/* Anything inside the article that is a control rather than a body link and
   owns its colour. Without this the rule above would draw a lime underline
   through the table of contents and the buttons. */
.leiw-article.leiw-article .elementor-widget-table-of-contents a,
.leiw-article.leiw-article .leiw-btn,
.leiw-article.leiw-article .leiw-card,
.leiw-article.leiw-article .leiw-toc-link{border-bottom:0;}
.leiw-article.leiw-article .leiw-btn--primary{color:var(--leiw-navy-deep);}
.leiw-article.leiw-article .leiw-btn--ghost,
.leiw-article.leiw-article .leiw-card{color:var(--leiw-ink);}
.leiw-a.leiw-a:focus-visible,.leiw-btn.leiw-btn:focus-visible,
.leiw-toc-link.leiw-toc-link:focus-visible,
.leiw-faq-toggle:focus-visible{outline:2px solid var(--leiw-lime);outline-offset:3px;}
.leiw-article img{max-width:100%;display:block;}

/* ==========================================================================
   ARTICLE SHELL — NOT USED BY ANY PATTERN
   Hero, TOC, shell grid, FAQ, author box, buttons, CTA, related cards and
   the writing guides come from the original HTML mock-up. No pattern in
   /patterns/ emits these classes: on this site the article wrapper is built
   in the Elementor Single Post template. Kept as reference for that build;
   safe to delete once the template is done.
   ========================================================================== */

/* ============ [HERO] (shell) ============ */
.leiw-hero.leiw-hero{
  position:relative;
  padding:clamp(56px,9vw,104px) 24px clamp(40px,6vw,64px);
  min-height:clamp(380px,42vw,540px);
  display:flex;align-items:center;
  background-color:var(--leiw-navy);
  background-image:var(--leiw-hero-scrim), var(--leiw-hero-image);
  /* auto 100% sizes the photo to the hero height and keeps its own
     proportions, so nothing is stretched. right center pins it to the
     right edge, clear of the headline.                              */
  background-size:auto, auto 100%;
  background-position:center, right center;
  background-repeat:no-repeat, no-repeat;
}
/* Old behaviour if you ever want it back: full width, cropped to fill. */
.leiw-hero--fullbleed.leiw-hero--fullbleed{
  background-size:auto, cover;
  background-position:center, 62% center;
}
.leiw-hero-inner.leiw-hero-inner{max-width:var(--leiw-shell);margin:0 auto;}
.leiw-eyebrow.leiw-eyebrow{
  display:inline-block;font-family:var(--leiw-mono);font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--leiw-lime);
  border:1px solid rgba(189,235,1,.35);border-radius:99px;padding:6px 14px;margin-bottom:22px;
}
.leiw-h1.leiw-h1{
  font-family:var(--leiw-display);font-weight:700;color:var(--leiw-ink);
  font-size:clamp(30px,5.2vw,52px);line-height:1.12;letter-spacing:-.015em;
  max-width:20ch;
}
.leiw-standfirst.leiw-standfirst{
  margin:20px 0 0;max-width:60ch;font-size:clamp(17px,2.1vw,20px);
  line-height:1.6;color:rgba(255,255,255,.86);
}
.leiw-meta.leiw-meta{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;
  margin-top:32px;padding-top:22px;border-top:1px solid var(--leiw-line);
  font-size:14px;color:var(--leiw-muted);
}
.leiw-meta.leiw-meta strong{color:var(--leiw-ink);font-weight:600;}
.leiw-dot.leiw-dot{width:3px;height:3px;border-radius:50%;background:var(--leiw-line-strong);}

/* ============ SHELL + [TOC] (shell) ============ */
.leiw-shell.leiw-shell{
  max-width:var(--leiw-shell);margin:0 auto;padding:0 24px clamp(56px,8vw,96px);
  display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:clamp(32px,5vw,64px);
  align-items:start;
}
.leiw-toc.leiw-toc{
  position:sticky;top:24px;order:2;
  background:var(--leiw-navy-soft);border:1px solid var(--leiw-line);border-radius:var(--leiw-r);
  padding:22px 20px;
}
.leiw-toc-label.leiw-toc-label{
  font-family:var(--leiw-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--leiw-muted);margin-bottom:14px;display:block;
}
.leiw-toc-list.leiw-toc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;}
.leiw-toc-link.leiw-toc-link{
  display:block;padding:7px 0 7px 14px;font-size:14.5px;line-height:1.45;
  color:var(--leiw-body);text-decoration:none;border-left:2px solid var(--leiw-line);
  transition:color .15s ease,border-color .15s ease;
}
.leiw-toc-link.leiw-toc-link:hover{color:var(--leiw-ink);border-left-color:var(--leiw-lime);}
/* The mock-up used .leiw-article for the article column inside .leiw-shell and
   set order / padding-top on it here. That class now names the Elementor
   container the whole component set hangs off, so those rules are gone —
   they would have pushed the real container around. */
/* If you delete the TOC, this makes the article span the full width. */
.leiw-shell--notoc.leiw-shell--notoc{grid-template-columns:minmax(0,1fr);}

/* ==========================================================================
   COMPONENTS — everything below IS emitted by the patterns
   ========================================================================== */

/* ============ [PARA] [H2] [H3] [LIST] ============ */
.leiw-p.leiw-p{margin:0 0 22px;max-width:var(--leiw-measure);}
.leiw-h2.leiw-h2{
  font-family:var(--leiw-display);font-weight:600;color:var(--leiw-ink);
  font-size:clamp(23px,3.2vw,31px);line-height:1.24;letter-spacing:-.01em;
  margin:clamp(44px,6vw,64px) 0 18px;scroll-margin-top:24px;max-width:26ch;
}
.leiw-h3.leiw-h3{
  font-family:var(--leiw-display);font-weight:600;color:var(--leiw-ink);
  font-size:clamp(18px,2.3vw,21px);line-height:1.35;
  margin:36px 0 14px;scroll-margin-top:24px;
}
.leiw-list.leiw-list{list-style:none;margin:0 0 24px;padding:0;max-width:var(--leiw-measure);}
.leiw-list.leiw-list li{position:relative;padding-left:22px;margin-bottom:11px;}
.leiw-list.leiw-list li::before{
  content:'';position:absolute;left:2px;top:11px;width:6px;height:6px;
  border-radius:50%;background:var(--leiw-lime);
}
.leiw-list--num.leiw-list--num{counter-reset:leiwnum;}
.leiw-list--num.leiw-list--num li{padding-left:32px;}
.leiw-list--num.leiw-list--num li::before{
  counter-increment:leiwnum;content:counter(leiwnum);
  left:0;top:0;width:auto;height:auto;border-radius:0;background:none;
  font-family:var(--leiw-mono);font-size:13px;color:var(--leiw-lime);
}

/* ============ [ANSWER] ============ */
.leiw-answer.leiw-answer{
  border-left:3px solid var(--leiw-lime);
  background:linear-gradient(90deg,rgba(189,235,1,.07),rgba(189,235,1,0));
  padding:22px 26px;border-radius:0 var(--leiw-r) var(--leiw-r) 0;margin:0 0 36px;
}
.leiw-answer-label.leiw-answer-label{
  font-family:var(--leiw-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--leiw-lime);display:block;margin-bottom:9px;
}
.leiw-answer.leiw-answer p{margin:0;color:var(--leiw-ink);font-size:18px;line-height:1.6;}

/* ============ [REG] regulation citation ============ */
.leiw-reg.leiw-reg{
  background:var(--leiw-navy-raised);border:1px solid var(--leiw-line);
  border-radius:var(--leiw-r);padding:24px 26px;margin:32px 0;
  display:grid;grid-template-columns:auto 1fr;gap:6px 18px;align-items:start;
}
.leiw-reg-rule.leiw-reg-rule{
  grid-column:1;font-family:var(--leiw-mono);font-size:12px;letter-spacing:.06em;
  color:var(--leiw-navy-deep);background:var(--leiw-lime);padding:5px 10px;border-radius:5px;
  white-space:nowrap;font-weight:500;
}
.leiw-reg-juris.leiw-reg-juris{
  grid-column:2;font-family:var(--leiw-mono);font-size:11px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--leiw-muted);padding-top:7px;
}
.leiw-reg-body.leiw-reg-body{grid-column:1 / -1;margin-top:10px;}
.leiw-reg-body.leiw-reg-body p{margin:0 0 12px;color:var(--leiw-body);}
.leiw-reg-src.leiw-reg-src{font-size:13.5px;color:var(--leiw-muted);display:flex;flex-wrap:wrap;align-items:center;gap:7px;}

/* ============ [STEPS] ============ */
.leiw-steps.leiw-steps{
  border:1px solid var(--leiw-line);border-radius:var(--leiw-r);
  padding:clamp(24px,4vw,34px);margin:36px 0;
  /* auto-fit means the step count is not baked in: six steps land as 3x2 at
     article width, and reflow to 2 or 1 column as the screen narrows. Rows
     are given more room than columns so the two ranks read as separate. */
  display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:34px 28px;
}
.leiw-step-n.leiw-step-n{
  font-family:var(--leiw-display);font-size:34px;font-weight:700;color:var(--leiw-lime);
  line-height:1;margin-bottom:12px;
}
.leiw-step-t.leiw-step-t{font-family:var(--leiw-display);font-weight:600;color:var(--leiw-ink);font-size:16px;margin-bottom:8px;}
.leiw-step-d.leiw-step-d{font-size:14.5px;line-height:1.6;color:var(--leiw-body);margin:0;}

/* ============ [FIGURE] fixed image frame ============ */
/* The frame is a fixed shape. Any image dropped in is cropped to fill
   it, so nothing shifts and every post looks consistent.             */
.leiw-figure.leiw-figure{margin:36px 0;}
.leiw-figure.leiw-figure img{
  width:100%;
  aspect-ratio:var(--leiw-fig-ratio);
  object-fit:cover;
  object-position:center;
  border-radius:var(--leiw-r);
  border:1px solid var(--leiw-line);
  background:var(--leiw-navy-raised);
}
/* Alternative frames. These are registered as block styles (see
   leiw_blog_register_block_styles), so authors pick them from the Styles
   panel and WordPress writes the class. They work on any image block, not
   only on one carrying .leiw-figure. */
.leiw-article.leiw-article .is-style-leiw-wide img{aspect-ratio:21/9;object-fit:cover;width:100%;}
.leiw-article.leiw-article .is-style-leiw-tall img{aspect-ratio:4/3;object-fit:cover;width:100%;}
/* Fallback for very old browsers with no aspect-ratio support */
@supports not (aspect-ratio:16/9){
  .leiw-figure.leiw-figure img{height:clamp(200px,34vw,460px);}
}
.leiw-figcaption.leiw-figcaption{
  margin-top:11px;font-size:13.5px;color:var(--leiw-muted);line-height:1.55;
  padding-left:13px;border-left:2px solid var(--leiw-line-strong);
}

/* ============ [PULLQUOTE] ============ */
.leiw-quote.leiw-quote{margin:36px 0;padding:26px 0 26px 28px;border-left:3px solid var(--leiw-lime);}
.leiw-quote.leiw-quote p{
  font-family:var(--leiw-display);font-weight:500;font-size:clamp(19px,2.6vw,23px);
  line-height:1.45;color:var(--leiw-ink);margin:0 0 14px;
}
.leiw-quote.leiw-quote cite{font-style:normal;font-size:14px;color:var(--leiw-muted);}

/* ============ [QUOTECARD] sourced quote with attribution ============ */
.leiw-quotecard.leiw-quotecard{
  background:var(--leiw-navy-raised);border:1px solid var(--leiw-line);border-radius:var(--leiw-r);
  padding:clamp(24px,4vw,32px);margin:36px 0;
  display:grid;grid-template-columns:112px 1fr;gap:26px;align-items:start;
}
.leiw-quotecard--nologo.leiw-quotecard--nologo{grid-template-columns:1fr;}
.leiw-quotecard-logo.leiw-quotecard-logo{
  width:112px;height:64px;border-radius:8px;background:#fff;
  display:flex;align-items:center;justify-content:center;padding:12px;
}
.leiw-quotecard-logo.leiw-quotecard-logo img{width:100%;height:100%;object-fit:contain;}
.leiw-quotecard-body.leiw-quotecard-body{min-width:0;}
.leiw-quotecard-mark.leiw-quotecard-mark{
  font-family:var(--leiw-display);font-size:38px;line-height:.7;color:var(--leiw-lime);
  display:block;margin-bottom:10px;
}
.leiw-quotecard-text.leiw-quotecard-text{
  margin:0 0 16px;font-size:clamp(16.5px,2.1vw,18.5px);line-height:1.6;
  color:var(--leiw-ink);max-width:60ch;
}
.leiw-quotecard-attr.leiw-quotecard-attr{
  margin:0;font-size:14px;line-height:1.5;color:var(--leiw-muted);font-style:normal;
  padding-top:14px;border-top:1px solid var(--leiw-line);
}
.leiw-quotecard-attr.leiw-quotecard-attr strong{display:block;color:var(--leiw-ink);font-weight:600;font-size:14.5px;margin-bottom:2px;}

/* ============ [TABLE] ============ */
/* Styled in the bridge section at the foot of this file, where the selectors
   can account for wp:table putting the class on <figure> rather than <table>.
   The mock-up's .leiw-tablewrap / bare .leiw-table rules used to live here;
   they were removed because .leiw-table matches the <figure> too, so their
   min-width:520px was landing on the scroll container itself and pushing the
   whole page sideways on phones instead of letting the table scroll inside. */

/* ============ [FAQ] Rank Math accordion ============ */
/* The FAQ is Rank Math's block, not a pattern of ours — it emits the FAQPage
   schema and keeps it in sync with the visible copy, which a component of our
   own would only duplicate. What it does not do is collapse: it renders a
   flat run of headings and answers. These rules plus assets/leiw-faq.js add
   the disclosure behaviour on top of its markup.

   Everything that hides an answer is gated behind .leiw-faq-ready, which the
   script adds once it has wired the buttons up. If the script fails to load,
   the FAQ stays a readable flat list rather than a column of invisible text. */
.leiw-article.leiw-article #rank-math-faq{margin:36px 0;border-top:1px solid var(--leiw-line);}
.leiw-article.leiw-article .rank-math-list-item{border-bottom:1px solid var(--leiw-line);}

/* The question is an <h3>, so it arrives carrying the theme's heading rules —
   padding-bottom:30px from style.css, plus whatever case and face the
   Elementor kit sets for headings. All of that is reset here: the question is
   a row label in a list, not a section heading, and it should read in the
   same face as the article body. */
.leiw-article.leiw-article .rank-math-question{
  margin:0;padding:0;
  font-family:inherit;font-size:inherit;line-height:inherit;
  text-transform:none;letter-spacing:normal;
}
.leiw-article.leiw-article .rank-math-answer{max-width:var(--leiw-measure);padding-bottom:20px;}

.leiw-article.leiw-article .leiw-faq-toggle{
  display:block;width:100%;position:relative;
  padding:15px 34px 15px 0;
  background:none;border:0;cursor:pointer;text-align:left;
  font-family:inherit;font-weight:600;font-size:17px;line-height:1.45;
  text-transform:none;letter-spacing:normal;
  color:var(--leiw-ink);
}
/* Authors often wrap the question in <strong>, which would stack on top of
   the weight already set here. */
.leiw-article.leiw-article .leiw-faq-toggle strong{font-weight:inherit;}
.leiw-article.leiw-article .leiw-faq-toggle::after{
  content:'+';position:absolute;right:6px;top:50%;transform:translateY(-50%);
  font-family:var(--leiw-mono);font-size:20px;color:var(--leiw-lime);
}
.leiw-article.leiw-article .leiw-faq-toggle[aria-expanded="true"]::after{content:'\2212';}

/* Collapsed state — only once the script is in charge.

   The open/close animates grid-template-rows from 0fr to 1fr. display:none
   cannot be transitioned at all, and a max-height guess is always either too
   short for a long answer or too slow for a short one; an fr unit resolves to
   the content's own height, so the timing is right whatever is inside.
   Spacing goes on the content, never on .leiw-faq-answer-inner itself —
   padding on the clipped box would still occupy height at 0fr. */
.leiw-article.leiw-article .leiw-faq-ready .rank-math-answer{
  display:grid;grid-template-rows:0fr;padding-bottom:0;
  transition:grid-template-rows .28s ease;
}
.leiw-article.leiw-article .leiw-faq-ready .is-open .rank-math-answer{grid-template-rows:1fr;}
.leiw-article.leiw-article .leiw-faq-answer-inner{overflow:hidden;}
.leiw-article.leiw-article .leiw-faq-answer-inner > :last-child{margin-bottom:20px;}

@media (prefers-reduced-motion:reduce){
  .leiw-article.leiw-article .leiw-faq-ready .rank-math-answer{transition:none;}
}

/* ============ [SOURCES] ============ */
.leiw-sources.leiw-sources{margin:48px 0 0;padding:24px 0 0;border-top:1px solid var(--leiw-line);}
.leiw-sources-label.leiw-sources-label{
  font-family:var(--leiw-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--leiw-muted);display:block;margin-bottom:14px;
}
.leiw-sources.leiw-sources ol{margin:0;padding-left:20px;font-size:14.5px;color:var(--leiw-muted);}
.leiw-sources.leiw-sources li{margin-bottom:9px;}

/* ============ [AUTHOR] (shell) ============ */
.leiw-author.leiw-author{
  margin:40px 0 0;padding:24px;background:var(--leiw-navy-soft);
  border:1px solid var(--leiw-line);border-radius:var(--leiw-r);
  display:flex;gap:18px;align-items:flex-start;
}
.leiw-avatar.leiw-avatar{
  width:var(--leiw-avatar);height:var(--leiw-avatar);flex:0 0 var(--leiw-avatar);
  border-radius:50%;object-fit:cover;border:1px solid var(--leiw-line-strong);
}
.leiw-author-name.leiw-author-name{font-family:var(--leiw-display);font-weight:600;color:var(--leiw-ink);font-size:16px;margin:0 0 3px;}
.leiw-author-role.leiw-author-role{font-size:13.5px;color:var(--leiw-lime);margin:0 0 10px;}
.leiw-author-bio.leiw-author-bio{font-size:14.5px;line-height:1.6;margin:0;color:var(--leiw-body);}

/* ============ BUTTONS + [CTA] (shell) ============ */
/* The mock-up pulled the CTA background photo from images.unsplash.com — a
   third-party request on every page this file loads. Replaced with a flat
   gradient; to use a real photo, upload it to the media library and add its
   URL after the gradient, the way --leiw-hero-image does it. */
.leiw-btn.leiw-btn{
  display:inline-block;font-family:var(--leiw-display);font-weight:600;font-size:13px;
  letter-spacing:.06em;text-transform:uppercase;text-decoration:none;
  padding:14px 30px;border-radius:99px;transition:all .18s ease;border:1px solid transparent;
}
.leiw-btn--primary.leiw-btn--primary{background:var(--leiw-lime);color:var(--leiw-navy-deep);}
.leiw-btn--primary.leiw-btn--primary:hover{background:var(--leiw-lime-dim);}
.leiw-btn--ghost.leiw-btn--ghost{border-color:rgba(255,255,255,.5);color:var(--leiw-ink);}
.leiw-btn--ghost.leiw-btn--ghost:hover{border-color:var(--leiw-ink);background:rgba(255,255,255,.06);}

.leiw-cta.leiw-cta{
  padding:clamp(48px,7vw,80px) 24px;text-align:center;
  background:linear-gradient(180deg,var(--leiw-navy),var(--leiw-navy-deep));
}
.leiw-cta.leiw-cta h2{
  font-family:var(--leiw-display);font-weight:600;color:var(--leiw-ink);
  font-size:clamp(22px,3.4vw,32px);line-height:1.25;margin:0 auto 14px;max-width:22ch;
}
.leiw-cta.leiw-cta p{max-width:52ch;margin:0 auto 28px;color:rgba(255,255,255,.82);}
.leiw-cta-btns.leiw-cta-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}

/* ============ [RELATED] (shell) ============ */
.leiw-related.leiw-related{background:var(--leiw-navy-deep);padding:clamp(48px,7vw,80px) 24px;}
.leiw-related-inner.leiw-related-inner{max-width:var(--leiw-shell);margin:0 auto;}
.leiw-related.leiw-related h2{
  font-family:var(--leiw-display);font-weight:600;color:var(--leiw-ink);
  font-size:clamp(20px,2.8vw,26px);margin:0 0 28px;
}
.leiw-cards.leiw-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;}
.leiw-card.leiw-card{
  background:var(--leiw-navy-raised);border:1px solid var(--leiw-line);border-radius:var(--leiw-r);
  overflow:hidden;text-decoration:none;display:flex;flex-direction:column;
  transition:border-color .18s ease,transform .18s ease;
}
.leiw-card.leiw-card:hover{border-color:rgba(189,235,1,.45);transform:translateY(-3px);}
.leiw-card.leiw-card img{width:100%;aspect-ratio:var(--leiw-card-ratio);object-fit:cover;object-position:center;}
@supports not (aspect-ratio:16/10){.leiw-card.leiw-card img{height:180px;}}
.leiw-card-body.leiw-card-body{padding:20px;}
.leiw-card-tag.leiw-card-tag{
  font-family:var(--leiw-mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--leiw-lime);display:block;margin-bottom:9px;
}
.leiw-card-t.leiw-card-t{font-family:var(--leiw-display);font-weight:600;color:var(--leiw-ink);font-size:16.5px;line-height:1.35;margin:0 0 8px;}
.leiw-card-d.leiw-card-d{font-size:14px;line-height:1.55;color:var(--leiw-muted);margin:0;}

/* ============ WRITING GUIDES (shell — delete the blocks before publishing) ============ */
.leiw-guide.leiw-guide{
  border:1px dashed rgba(189,235,1,.45);border-radius:10px;
  background:rgba(189,235,1,.045);padding:16px 18px;margin:0 0 26px;
  font-size:14px;line-height:1.6;color:rgba(255,255,255,.72);max-width:var(--leiw-measure);
}
.leiw-guide.leiw-guide b{
  display:block;font-family:var(--leiw-mono);font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--leiw-lime);margin-bottom:7px;font-weight:500;
}
.leiw-guide.leiw-guide ul{margin:8px 0 0;padding-left:18px;}
.leiw-guide.leiw-guide li{margin-bottom:5px;}
.leiw-brief.leiw-brief{max-width:var(--leiw-shell);margin:0 auto;padding:20px 24px 0;}
.leiw-brief-inner.leiw-brief-inner{border:2px dashed var(--leiw-lime);border-radius:var(--leiw-r);padding:24px;background:rgba(189,235,1,.06);}


/* Desktop only (shell): hold the text column left so it never runs under
   the hero photo. */
@media (min-width:981px){
  .leiw-h1.leiw-h1{max-width:16ch;}
  .leiw-standfirst.leiw-standfirst{max-width:44ch;}
  .leiw-meta.leiw-meta{max-width:52ch;}
}

/* ============ RESPONSIVE ============ */
/* 980px: no room for a side-by-side hero, so the photo goes full width
   behind a heavier scrim and the text sits on top; the TOC un-sticks and
   moves above the article. Both are shell-only rules.
   620px: the component breakpoint — reg and quotecard drop to one column.
   The other components are fluid (steps uses auto-fit, figure uses
   aspect-ratio, table scrolls horizontally) and need no breakpoint. */
@media (max-width:980px){
  .leiw-hero.leiw-hero{
    min-height:0;display:block;
    background-image:
      linear-gradient(180deg,rgba(2,10,38,.90) 0%,rgba(2,10,38,.86) 45%,rgba(3,15,57,.92) 80%,var(--leiw-navy) 100%),
      var(--leiw-hero-image);
    background-size:auto, cover;
    background-position:center, 72% center;
  }
  .leiw-shell.leiw-shell{grid-template-columns:1fr;}
  .leiw-toc.leiw-toc{position:static;order:1;}
}
@media (max-width:620px){
  .leiw-article.leiw-article{font-size:16.5px;}
  .leiw-hero.leiw-hero,.leiw-shell.leiw-shell{padding-left:20px;padding-right:20px;}
  .leiw-reg.leiw-reg{grid-template-columns:1fr;}
  .leiw-reg-juris.leiw-reg-juris{grid-column:1;padding-top:0;}
  .leiw-quotecard.leiw-quotecard{grid-template-columns:1fr;gap:18px;}
  .leiw-author.leiw-author{flex-direction:column;}
}
/* Narrow phones: pull in the padding the cards carry, and let a long
   regulation name wrap instead of pushing the card off-screen. */
@media (max-width:480px){
  .leiw-answer.leiw-answer{padding:18px 18px 18px 20px;}
  .leiw-quote.leiw-quote{padding-left:20px;}
  .leiw-reg.leiw-reg{padding:20px 18px;}
  .leiw-reg-rule.leiw-reg-rule{white-space:normal;}
  .leiw-steps.leiw-steps{gap:22px;}
}
@media (prefers-reduced-motion:reduce){
  [class*="leiw-"]{transition:none !important;animation:none !important;}
}

/* ==========================================================================
   SAFETY NET FOR EDITORIAL PROMPTS
   Uncomment in production if you would rather not rely on authors deleting
   the writing-guide blocks by hand before publishing.
   ========================================================================== */
/*
body:not(.wp-admin) .leiw-guide.leiw-guide,
body:not(.wp-admin) .leiw-brief.leiw-brief { display:none !important; }
*/

/* ==========================================================================
   BRIDGE TO NATIVE GUTENBERG BLOCKS
   Every pattern is built on core blocks so authors edit text inline and see
   the component render live, instead of editing raw HTML in a code box.
   Core blocks add their own wrappers, classes and margins; these rules hook
   onto them.
   ========================================================================== */

/* Group blocks wrap their children in .wp-block-group__inner-container in
   some builds and not others. That extra div would leave the three grid
   components with a single child and collapse the layout. display:contents
   removes the wrapper from the box tree so the children join the parent
   grid directly, whichever markup WordPress emits. */
.leiw-reg.leiw-reg > .wp-block-group__inner-container,
.leiw-steps.leiw-steps > .wp-block-group__inner-container,
.leiw-quotecard.leiw-quotecard > .wp-block-group__inner-container{display:contents;}

/* WordPress renders every Group with is-layout-flow, and its global stylesheet
   gives each non-first child a margin-block-start. In a flow container that is
   the intended rhythm. In a grid it is not collapsed away: it pushes items
   2..n down their own tracks, so the first card sits high and the rest sag —
   which looks like broken markup and is not.
   The core rules are written with :where(), so they carry no specificity at
   all and a plain class selector is enough to undo them. */
.leiw-steps.leiw-steps > *,
.leiw-reg.leiw-reg > *,
.leiw-quotecard.leiw-quotecard > *{margin-block-start:0;}

/* The regulation card does want its body pushed clear of the header line, so
   that one is re-stated after the reset above rather than lost to it. */
.leiw-reg-body.leiw-reg-body{margin-block-start:10px;}

/* The rule chip, jurisdiction and step lines were <span>/<div> in the HTML
   version and are paragraphs now, so the core paragraph margins have to go. */
.leiw-reg.leiw-reg > p,
.leiw-steps.leiw-steps p,
.leiw-quotecard.leiw-quotecard > p{margin-top:0;}
.leiw-reg-rule.leiw-reg-rule{justify-self:start;margin:0;}
.leiw-reg-juris.leiw-reg-juris{margin:0;}
.leiw-step.leiw-step{min-width:0;}

/* The opening quotation mark used to be a hand-written <span>. As a
   pseudo-element it is one less block for the author to delete by accident. */
.leiw-quotecard-text.leiw-quotecard-text::before{
  content:'\201C';display:block;
  font-family:var(--leiw-display);font-size:38px;line-height:.7;
  color:var(--leiw-lime);margin-bottom:10px;
}
/* The card's grid gap now sits between quote and attribution, so the
   paragraph's own bottom margin would double the spacing. */
.leiw-quotecard-text.leiw-quotecard-text{margin-bottom:0;}
/* Except in the logo variant, where the two paragraphs sit inside
   .leiw-quotecard-body and stack in normal flow, with no gap to rely on. */
.leiw-quotecard-body.leiw-quotecard-body .leiw-quotecard-text{margin-bottom:16px;}
/* wp:image renders the logo as a <figure>, which carries its own margins. */
figure.leiw-quotecard-logo.leiw-quotecard-logo{margin:0;}

/* Some builds wrap Group children in .wp-block-group__inner-container */
.leiw-answer.leiw-answer > .wp-block-group__inner-container > p:last-child,
.leiw-answer.leiw-answer > p:last-child {
  margin: 0;
  color: var(--leiw-ink);
  font-size: 18px;
  line-height: 1.6;
}

/* wp:image puts the class on <figure>; the caption carries its own WP class */
.leiw-figure.leiw-figure figcaption,
.leiw-figure.leiw-figure .wp-element-caption {
  margin-top: 11px;
  font-size: 13.5px;
  color: var(--leiw-muted);
  line-height: 1.55;
  padding-left: 13px;
  border-left: 2px solid var(--leiw-line-strong);
  text-align: left;
}

/* wp:table puts the class on <figure>, not on <table> */
figure.leiw-table.leiw-table {
  overflow-x: auto;
  margin: 32px 0;
  -webkit-overflow-scrolling: touch;
}

/* Core's block stylesheet sets `border: 1px solid` on every cell. With no
   colour given it resolves to currentColor, which on a dark page is very
   nearly white — a bright grid drawn over the whole table. Strip every
   border first, then put back only the horizontal rules the design uses. */
figure.leiw-table.leiw-table table,
figure.leiw-table.leiw-table thead,
figure.leiw-table.leiw-table tr,
figure.leiw-table.leiw-table th,
figure.leiw-table.leiw-table td { border: 0; }

figure.leiw-table.leiw-table table {
  width: 100%;
  border-collapse: collapse;
  font-size: 15px;
  /* The page runs at line-height 1.7, which is right for prose and far too
     airy for table cells that wrap onto two lines. */
  line-height: 1.5;
  min-width: 520px;
}
figure.leiw-table.leiw-table th {
  text-align: left;
  font-family: var(--leiw-mono);
  font-size: 11px;
  letter-spacing: .11em;
  text-transform: uppercase;
  color: var(--leiw-muted);
  font-weight: 500;
  /* Symmetrical padding so the header reads as its own band. Zero on top
     left the labels flush against the edge of the component. */
  padding: 14px 16px 13px;
  border-bottom: 1px solid var(--leiw-line-strong);
}
figure.leiw-table.leiw-table td {
  padding: 13px 16px;
  border-bottom: 1px solid var(--leiw-line);
  color: var(--leiw-body);
  vertical-align: top;
}
figure.leiw-table.leiw-table tr:last-child td { border-bottom: 0; }

/* Row labels: the leftmost column is the axis of comparison, so it reads as
   a heading. Capping its width stops one long label stretching it. */
figure.leiw-table.leiw-table td:first-child {
  color: var(--leiw-ink);
  font-weight: 600;
  width: 22%;
}

/* Core renders the caption italic and centred. Match the figure caption
   instead, so both read the same way down the article. */
figure.leiw-table.leiw-table figcaption,
figure.leiw-table.leiw-table .wp-element-caption {
  margin-top: 12px;
  font-size: 13.5px;
  font-style: normal;
  line-height: 1.55;
  color: var(--leiw-muted);
  text-align: left;
  padding-left: 13px;
  border-left: 2px solid var(--leiw-line-strong);
}

/* wp:quote ships its own spacing; strip it back */
.leiw-quote.leiw-quote { border-right: 0; }
.leiw-quote.leiw-quote p { margin: 0 0 14px; }

/* wp:list nested inside .leiw-sources */
.leiw-sources.leiw-sources ol {
  margin: 0;
  padding-left: 20px;
  font-size: 14.5px;
  color: var(--leiw-muted);
}
.leiw-sources.leiw-sources li { margin-bottom: 9px; }
