/*
 * ALLOut Security — the house stylesheet for policy documents.
 *
 * Long-form legal typography in the 2026 ALLOut design system: the same two self-hosted
 * families, the same colour tokens and the same section rhythm as ALLOut Blocks' Article
 * Standard, so a policy reads as part of the same site as the articles and event pages.
 *
 * Enqueued by AOUV_Rewrite::enqueue_document_style() on every single policy page.
 *
 * ============================================================================
 * IT IS OPT-IN, AND THAT IS THE WHOLE SAFETY PROPERTY
 *
 * Every rule is scoped to `.aos-legal` — a single wrapper the DOCUMENT carries, not
 * something the plugin adds. A policy that does not have that wrapper is not touched by
 * one declaration in this file.
 *
 * This is deliberate and it is not theoretical. The published Licensing Terms &
 * Conditions uses an entirely different markup convention — numbered <h5> headings,
 * <h6 class="second-level-heading">, <ul class="no-list-style"> with
 * <span class="item-label">a.</span> — inside a WPBakery row. Scoping this to the body
 * class instead (`body.single-aos_doc`) would have silently restyled a live, legally
 * referenced document the moment the plugin updated. Opting in per document means an
 * existing policy adopts the house style when someone decides it should, by adding the
 * wrapper, and never by surprise.
 *
 * ELEMENT SELECTORS INSIDE THE WRAPPER. Beyond that one class the markup carries no
 * styling classes at all: section, h2, p, ul, li, article, aside, nav, details, footer.
 * A policy can be edited by anyone without knowing a class name — a new paragraph is a
 * <p>, a new section is a <section> with an <h2>, a new bullet is an <li>, and they
 * inherit the design automatically.
 *
 * TOKENS ARE ON THE WRAPPER, never on :root, because BeTheme, the customer portal and
 * WP-Client all have their own colours and share these pages' cascade.
 *
 * SPECIFICITY. Two-class-equivalent selectors (0,1,2) sit above BeTheme's element-level
 * typography (0,0,1) and its theme-options CSS, so no !important is needed anywhere in
 * the document styling. The only !important rules are in the PLUGIN FURNITURE section
 * at the bottom, where this plugin sets inline styles — and each one says why.
 *
 * SECTION NUMBERS are CSS counters on <section>, not markup. Insert or delete a section
 * and the rest renumber themselves; the numerals cannot drift out of step with the
 * headings, and they never end up in copied text or a screen reader's reading of them.
 * ============================================================================
 *
 * FONT PATHS ARE ROOT-RELATIVE and point at ALLOut Blocks, which owns the site's
 * self-hosted faces; duplicating five woff2 files into this plugin to avoid naming
 * another one is the worse trade. Identical URLs mean a page that already carries a 2026
 * block — the announcement bar is on every public page — downloads nothing twice. If
 * ALLOut Blocks is ever moved, policies fall back to the system stack: the typeface
 * changes, nothing else does. The site's Content-Security-Policy sends `font-src 'self'`,
 * which a same-origin path satisfies and a Google Fonts URL would not.
 *
 * @package AllOut\UrlVersioning
 * @author  ALLOut Security — https://alloutsecurity.com
 */

/* ==========================================================================
   FONTS — Poppins 700/800 and the Mulish variable file. Subsets and
   unicode-ranges match the rest of the site, so an English-only page pulls
   the two latin files and leaves latin-ext alone; the Google Translate
   widget is what puts latin-ext text on the page.
   ========================================================================== */

@font-face{font-family:'Poppins';font-style:normal;font-weight:700;font-display:swap;
  src:url('/wp-content/plugins/allout-blocks/assets/fonts/poppins/poppins-700-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Poppins';font-style:normal;font-weight:700;font-display:swap;
  src:url('/wp-content/plugins/allout-blocks/assets/fonts/poppins/poppins-700-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

@font-face{font-family:'Poppins';font-style:normal;font-weight:800;font-display:swap;
  src:url('/wp-content/plugins/allout-blocks/assets/fonts/poppins/poppins-800-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Poppins';font-style:normal;font-weight:800;font-display:swap;
  src:url('/wp-content/plugins/allout-blocks/assets/fonts/poppins/poppins-800-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

@font-face{font-family:'Mulish';font-style:normal;font-weight:200 1000;font-display:swap;
  src:url('/wp-content/plugins/allout-blocks/assets/fonts/mulish/mulish-variable-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Mulish';font-style:normal;font-weight:200 1000;font-display:swap;
  src:url('/wp-content/plugins/allout-blocks/assets/fonts/mulish/mulish-variable-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* ==========================================================================
   TOKENS + THE ONE SCOPE
   ========================================================================== */

.aos-legal{
  /* brand */
  --red-400:#F0555F; --red-500:#E8323F; --red-600:#D11F2C; --red-700:#AE1822;
  --navy-700:#14224A; --navy-800:#0E1C40; --navy-900:#081634;
  --blue-400:#3D63D8; --blue-500:#2B4FC9; --blue-600:#1F3CA6;

  /* neutrals */
  --gray-50:#F7F8FB; --gray-100:#EFF1F6; --gray-200:#E3E7EF; --gray-300:#D2D8E4;
  --gray-500:#7B8499; --gray-700:#3E4658;

  /* semantic */
  --text-strong:var(--navy-700);
  --text-body:var(--gray-700);
  --text-muted:var(--gray-500);
  --border-subtle:var(--gray-200);
  --color-primary:var(--red-500);
  --color-link:var(--blue-500);

  /* type */
  --font-display:'Poppins',system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-body:'Mulish',system-ui,-apple-system,'Segoe UI',sans-serif;

  /* radius + shadow */
  --radius-sm:6px; --radius-md:8px; --radius-lg:12px; --radius-card:14px; --radius-xl:16px;
  --shadow-card:0 4px 16px rgba(14,28,64,.08);
  --shadow-focus:0 0 0 3px rgba(61,99,216,.35);

  /* the site header is sticky; every in-page anchor has to clear it */
  --sticky-offset:110px;

  font-family:var(--font-body);
  color:var(--text-body);
  font-size:16px;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;

  /* layout: the contents rail beside the policy, one column when there is no
     room for a rail that does not squeeze the measure */
  display:grid;
  grid-template-columns:242px minmax(0,1fr);
  gap:0 64px;
  align-items:start;
}

.aos-legal *,.aos-legal *::before,.aos-legal *::after{box-sizing:border-box;}
.aos-legal svg{display:block;flex:none;}

/* WPBakery's text element — and the_content on a policy page — run wpautop over this
   markup. Anything it wraps in a stray paragraph would otherwise inherit a bottom
   margin and open gaps between the panels; an empty paragraph carries no content, so
   it carries no space either. */
.aos-legal p:empty{display:none;}

/* ==========================================================================
   HEAD — the document meta strip.

   Present only in the WPBakery-page build. The ALLOut Policies build drops it,
   because that plugin prints its own "Last reviewed:" line from the version being
   served; see the ALLOUT POLICIES section at the bottom.

   The page already has BeTheme's own H1 above it, so this deliberately does not
   repeat the title. It carries the one fact the H1 does not: currency.
   ========================================================================== */

.aos-legal > header{
  grid-column:1 / -1;
  display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  padding:0 0 22px;margin:0 0 40px;
  border-bottom:1px solid var(--border-subtle);
}

.aos-legal > header > p{
  font-size:13px;font-weight:700;line-height:1.3;letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-muted);margin:0;
}

.aos-legal > header > span{
  display:inline-flex;align-items:center;gap:10px;
  font-size:13.5px;font-weight:700;line-height:1.3;letter-spacing:.02em;
  color:var(--text-strong);
  background:var(--gray-50);border:1px solid var(--border-subtle);
  border-radius:999px;padding:8px 16px 8px 12px;
}
.aos-legal > header > span > svg{color:var(--red-500);}

/* ==========================================================================
   CONTENTS RAIL — <nav>, the first grid column
   ========================================================================== */

.aos-legal > nav{position:sticky;top:var(--sticky-offset);}

/* the rail's own heading. Selected one level deeper than the section headings
   (0,1,3 against 0,1,2) so it wins regardless of source order. */
.aos-legal > nav > h2{
  font-family:var(--font-body);
  font-size:12px;font-weight:700;line-height:1.3;letter-spacing:.1em;text-transform:uppercase;
  color:var(--red-500);margin:0 0 14px;padding:0 0 0 14px;
}

.aos-legal > nav > ol{
  list-style:none;margin:0;padding:0;
  border-left:1px solid var(--border-subtle);
}
.aos-legal > nav > ol > li{margin:0;padding:0;}

.aos-legal > nav a{
  display:block;
  padding:7px 0 7px 14px;margin-left:-1px;
  border-left:2px solid transparent;
  font-size:14.5px;line-height:1.4;font-weight:600;
  color:var(--text-muted);text-decoration:none;
  transition:color .15s ease,border-color .15s ease;
}
.aos-legal > nav a:hover,
.aos-legal > nav a:focus-visible{
  color:var(--text-strong);border-left-color:var(--red-500);text-decoration:none;
}

/* ==========================================================================
   THE POLICY COLUMN — the second grid child
   ========================================================================== */

.aos-legal > div{min-width:0;counter-reset:aos-sec;}

/* contents, phone and tablet: a closed disclosure above the policy ---------- */

.aos-legal > div > details{
  display:none;
  border:1px solid var(--border-subtle);border-radius:var(--radius-card);
  background:var(--gray-50);margin:0 0 36px;
}
.aos-legal > div > details > summary{
  list-style:none;cursor:pointer;
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:15px 18px;
  font-family:var(--font-display);font-weight:700;font-size:15px;color:var(--text-strong);
}
.aos-legal > div > details > summary::-webkit-details-marker{display:none;}
.aos-legal > div > details > summary > svg{color:var(--text-muted);transition:transform .2s ease;}
.aos-legal > div > details[open] > summary > svg{transform:rotate(180deg);}
.aos-legal > div > details[open] > summary{border-bottom:1px solid var(--border-subtle);}

.aos-legal > div > details > ol{
  list-style:none;margin:0;padding:8px 8px 12px;counter-reset:aos-toc;
}
.aos-legal > div > details > ol > li{counter-increment:aos-toc;margin:0;}
.aos-legal > div > details a{
  display:block;padding:8px 10px;border-radius:var(--radius-sm);
  font-size:15px;line-height:1.4;font-weight:600;color:var(--text-body);text-decoration:none;
}
/* the same numerals the headings carry, from a counter rather than the markup */
.aos-legal > div > details a::before{
  content:counter(aos-toc,decimal-leading-zero);
  color:var(--red-500);font-weight:800;font-size:12px;margin-right:10px;
}
.aos-legal > div > details a:hover{background:#fff;color:var(--text-strong);}

/* ==========================================================================
   SECTIONS
   ========================================================================== */

.aos-legal section{
  counter-increment:aos-sec;
  scroll-margin-top:var(--sticky-offset);
  margin:0 0 54px;
}
.aos-legal section:last-child{margin-bottom:0;}

/* the red rule above a heading is what gives the page its sections. It sits on the
   section rather than the h2 because the h2's own ::before is the numeral. */
.aos-legal section::before{
  content:"";display:block;width:44px;height:3px;border-radius:2px;
  background:var(--red-500);margin:0 0 20px;
}

.aos-legal section > h2{
  font-family:var(--font-display);font-weight:700;
  font-size:30px;line-height:1.18;letter-spacing:-.015em;
  color:var(--text-strong);margin:0 0 18px;text-wrap:balance;
  display:flex;align-items:baseline;gap:14px;
}
/* 01, 02, 03 … generated, never typed */
.aos-legal section > h2::before{
  content:counter(aos-sec,decimal-leading-zero);
  flex:none;position:relative;top:-.35em;
  font-family:var(--font-display);font-weight:800;
  font-size:14px;line-height:1;letter-spacing:.04em;
  color:var(--red-500);
}

/* text -------------------------------------------------------------------- */

.aos-legal section > p{font-size:17px;line-height:1.72;margin:0 0 18px;color:var(--text-body);}
.aos-legal section > p:last-child{margin-bottom:0;}
/* the opening paragraph of the policy, and only that one — a positional rule, so
   nothing in the markup has to declare itself the lead */
.aos-legal section:first-of-type > p:first-of-type{
  font-size:18px;line-height:1.68;color:var(--navy-800);font-weight:500;
}

.aos-legal strong,.aos-legal b{font-weight:800;color:var(--text-strong);}

/* lists ------------------------------------------------------------------- */

.aos-legal section > ul{
  list-style:none;margin:0 0 20px;padding:0;
  font-size:17px;line-height:1.68;color:var(--text-body);
}
.aos-legal section > ul > li{position:relative;padding-left:28px;margin:0 0 9px;}
.aos-legal section > ul > li:last-child{margin-bottom:0;}
.aos-legal section > ul > li::before{
  content:"";position:absolute;left:3px;top:.66em;
  width:7px;height:7px;border-radius:2px;background:var(--red-500);
}

/* links ------------------------------------------------------------------- */

.aos-legal section a{
  color:var(--color-link);text-decoration:underline;text-decoration-thickness:1px;
  text-underline-offset:.16em;transition:color .15s ease;
}
.aos-legal section a:hover{color:var(--blue-600);text-decoration-thickness:2px;}

.aos-legal a:focus-visible,
.aos-legal summary:focus-visible{
  outline:2px solid var(--blue-400);outline-offset:2px;box-shadow:var(--shadow-focus);
  border-radius:3px;
}

/* "Privacy Settings" — the real control, named exactly as the policy names it.
 *
 * This is the one class in the markup that is not the scope root, and it is not a
 * styling hook: it is the WordPress GDPR plugin's own selector, which is what makes
 * these words open the consent manager. The plugin binds the click itself, so the page
 * ships no JavaScript and the strict script-src CSP is untouched. Styling off it is
 * therefore free — the class has to be there regardless.
 *
 * Deliberately NOT a chip. A boxed pill has horizontal padding, and in a legal
 * document that padding opens a gap between the control and the punctuation that
 * follows it — "…through our  Privacy Settings ." reads as a typo. Weight, colour
 * and a red underline mark it as a control while letting the sentence close cleanly,
 * and they keep it distinct from the ordinary blue page links around it. */
.aos-legal a.wordpress-gdpr-open-privacy-settings-modal{
  font-weight:800;letter-spacing:.005em;white-space:nowrap;
  color:var(--navy-700);text-decoration:none;
  border-bottom:2px solid rgba(232,50,63,.38);
  transition:color .15s ease,border-color .15s ease;
}
.aos-legal a.wordpress-gdpr-open-privacy-settings-modal:hover{
  color:var(--red-600);border-bottom-color:var(--red-500);text-decoration:none;
}

/* ==========================================================================
   PANELS
   ========================================================================== */

/* contact — <aside> inside section 01 ------------------------------------- */

.aos-legal aside{
  display:flex;align-items:flex-start;gap:16px;
  background:var(--gray-50);border:1px solid var(--border-subtle);
  border-radius:var(--radius-card);padding:22px 24px;margin:26px 0 0;
}
/* the icon tile is the svg itself — no wrapper element needed, because a padded,
   rounded background on the svg box gives the identical result */
.aos-legal aside > svg{
  width:40px;height:40px;padding:10px;border-radius:var(--radius-md);
  background:rgba(232,50,63,.10);color:var(--red-600);
}
.aos-legal aside > div{min-width:0;}
.aos-legal aside p{font-size:15px;line-height:1.5;margin:0 0 4px;color:var(--text-body);}
.aos-legal aside p:last-child{
  font-family:var(--font-display);font-weight:700;font-size:16px;line-height:1.4;
  color:var(--text-strong);margin:0;word-break:break-word;
}
.aos-legal aside p:last-child strong{font-family:var(--font-body);margin-right:2px;}

/* category cards — <article> ---------------------------------------------- */

/* the only bare <div> inside a section is the card grid */
.aos-legal section > div{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;
  margin:24px 0;
}

.aos-legal article{
  background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-card);
  padding:24px 26px;
  /* icon and title share the first row; every paragraph spans the full width */
  display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:13px;
  /* The outer grid stretches all four cards to the tallest, and a grid's auto rows
     absorb that spare height by default — which pushed the title in the shorter
     cards below its own icon. Pack the rows to the top and the four headers line
     up across the row again. */
  align-content:start;
}
.aos-legal article > svg{
  grid-column:1;grid-row:1;
  width:38px;height:38px;padding:9px;border-radius:var(--radius-md);
  background:rgba(232,50,63,.10);color:var(--red-600);
}
/* three tile colours across four cards, positional — nothing to label in the markup */
.aos-legal article:nth-of-type(2) > svg{background:rgba(20,34,74,.08);color:var(--navy-700);}
.aos-legal article:nth-of-type(3) > svg{background:rgba(43,79,201,.10);color:var(--blue-500);}

.aos-legal article > h3{
  grid-column:2;grid-row:1;align-self:center;
  font-family:var(--font-display);font-weight:700;
  font-size:17.5px;line-height:1.3;letter-spacing:-.005em;
  color:var(--text-strong);margin:0;
}
.aos-legal article > p{
  grid-column:1 / -1;
  font-size:15.5px;line-height:1.66;margin:14px 0 0;color:var(--text-body);
}
/* every card closes on its consent rule — "with consent" / "without consent" */
.aos-legal article > p:last-child{
  font-size:14.5px;line-height:1.55;font-weight:700;color:var(--navy-800);
  border-top:1px solid var(--gray-100);padding-top:12px;margin-top:14px;
}

/* the action — <footer> inside section 07 --------------------------------- */

.aos-legal section > footer{
  border-top:1px solid var(--border-subtle);margin:26px 0 0;padding:22px 0 0;
}
.aos-legal section > footer > a{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:var(--font-body);font-weight:700;font-size:15px;line-height:1;
  height:48px;padding:0 24px;border:1px solid transparent;border-radius:var(--radius-md);
  background:var(--red-500);color:#fff;text-decoration:none;cursor:pointer;
  box-shadow:0 2px 8px rgba(232,50,63,.28);
  transition:background .15s ease,transform .08s ease;
}
.aos-legal section > footer > a:hover{background:var(--red-600);color:#fff;text-decoration:none;}
.aos-legal section > footer > a:active{transform:translateY(1px);}
.aos-legal section > footer > a > svg{width:17px;height:17px;}

/* ==========================================================================
   PLUGIN FURNITURE — this plugin's own "Last reviewed" lines and doc footer.

   The plugin injects these as SIBLINGS of .aos-legal, inside .the_content_wrapper,
   so a .aos-legal-scoped rule cannot reach them. They are gated on
   `body:has(.aos-legal)` instead: the furniture is restyled only on a document that
   has opted into the house style, and a policy using another convention keeps the
   plugin's own default appearance. Without that gate, updating this plugin would
   have restyled the published Licensing Terms & Conditions.

   :has() carries this file's one graceful failure: in a browser without it the rules
   simply do not match and the plugin's plain italic line shows. Degraded, never broken.

   What the plugin emits (AOUV_Rewrite::reviewed_line / ::append_footer):

     <p class="aouv-reviewed aouv-reviewed-top"
        style="text-align:left;font-style:italic;margin:1.25em 0 0em !important;display:block">
     …the policy…
     <p class="aouv-reviewed aouv-reviewed-bottom"
        style="text-align:left;font-style:italic;margin:0 0 1.5em 1.2em">
     <div class="aouv-doc-footer" style="margin-top:2em;padding-top:1em;…">

   Those are INLINE styles, so a plain rule here loses to them. `!important` in a
   stylesheet beats a normal inline declaration, which is why it appears below —
   and only on the properties the plugin sets inline. The one thing that cannot be
   overridden is the top line's margin: an inline `!important` outranks everything,
   so its 1.25em top / 0 bottom stands, and the gap under it is opened from
   .aos-legal instead.
   ========================================================================== */

body:has(.aos-legal) .aouv-reviewed{
  font-family:'Mulish',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-style:normal!important;      /* inline: italic */
  letter-spacing:.02em;
}

body:has(.aos-legal) .aouv-reviewed-top{
  display:inline-flex!important;    /* inline: block — a pill must not span the column */
  align-items:center;
  font-size:13.5px;font-weight:700;line-height:1.3;
  color:#14224A;
  background:#F7F8FB;border:1px solid #E3E7EF;border-radius:999px;
  padding:8px 16px;
}
/* The top line's own bottom margin is locked at 0 by an inline !important, so the
   space under it — and the hairline that opens the document — are drawn from this
   side instead. Only applies when the plugin's line is actually there. */
.aouv-reviewed-top + .aos-legal{
  margin-top:22px;padding-top:34px;
  border-top:1px solid var(--border-subtle);
}

body:has(.aos-legal) .aouv-reviewed-bottom{
  font-size:13px;font-weight:600;line-height:1.5;
  color:#7B8499;
  margin:38px 0 0!important;        /* inline: 0 0 1.5em 1.2em — kill the stray indent */
  padding-top:20px;
  border-top:1px solid #E3E7EF;
}

body:has(.aos-legal) .aouv-doc-footer{
  font-family:'Mulish',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:14.5px;line-height:1.65;color:#7B8499;
  margin-top:28px;padding-top:20px;
  border-top:1px solid #E3E7EF;
}
body:has(.aos-legal) .aouv-doc-footer a{color:#2B4FC9;}

/* ==========================================================================
   RESPONSIVE — the two breakpoints used site-wide
   ========================================================================== */

@media (max-width:1000px){
  .aos-legal{grid-template-columns:minmax(0,1fr);gap:0;}
  .aos-legal > nav{display:none;}
  .aos-legal > div > details{display:block;}
  .aos-legal section > h2{font-size:27px;}
  .aos-legal section > div{grid-template-columns:minmax(0,1fr);}
}

@media (max-width:640px){
  .aos-legal > header{margin-bottom:30px;}
  .aos-legal section > h2{font-size:24px;line-height:1.22;gap:10px;}
  .aos-legal section{margin-bottom:44px;}
  .aos-legal section > p,
  .aos-legal section > ul{font-size:16.5px;}
  .aos-legal section:first-of-type > p:first-of-type{font-size:17px;}
  .aos-legal article{padding:20px;}
  .aos-legal aside{flex-direction:column;gap:14px;padding:20px;}
  .aos-legal section > footer > a{width:100%;}
}

/* ==========================================================================
   PRINT — a legal page gets printed and filed. Drop the navigation, keep the
   structure, and let the URLs behind the links survive on paper.
   ========================================================================== */

@media print{
  .aos-legal{display:block;color:#000;font-size:11pt;}
  .aos-legal > nav,
  .aos-legal > div > details,
  .aos-legal section > footer{display:none;}
  /* the review date is the single most important thing on a filed copy.
     Gated like the rest of the furniture, so printing another policy is unaffected. */
  body:has(.aos-legal) .aouv-reviewed-top{
    background:none;border:0;padding:0;color:#000;font-size:10pt;
  }
  body:has(.aos-legal) .aouv-reviewed-bottom,
  body:has(.aos-legal) .aouv-doc-footer{color:#000;border-top-color:#999;}
  .aos-legal section{page-break-inside:auto;margin-bottom:22pt;}
  .aos-legal section > h2{page-break-after:avoid;font-size:15pt;color:#000;}
  .aos-legal article > h3{page-break-after:avoid;}
  .aos-legal article,
  .aos-legal aside{border:1px solid #999;background:none;page-break-inside:avoid;}
  .aos-legal section > div{display:block;}
  .aos-legal article{margin-bottom:10pt;}
  .aos-legal section a{color:#000;text-decoration:underline;}
  .aos-legal section a[href^="http"]::after{content:" (" attr(href) ")";font-size:9pt;color:#444;}
  /* the consent control is an on-page action; on paper it is just a name */
  .aos-legal a.wordpress-gdpr-open-privacy-settings-modal{
    border-bottom:0;font-weight:700;color:#000;text-decoration:none;
  }
  .aos-legal a.wordpress-gdpr-open-privacy-settings-modal::after{content:none;}
}
