/* Protector Class component layer.
 *
 * The two brands share one codebase, and the component set came across intact:
 * every card, button, pill, input and band on LeakTrace is frosted glass -
 * backdrop-filter blur, a translucent white fill, an inset white top highlight
 * and a wide soft shadow, on a rounded rectangle. Re-pointing the accent to
 * violet never touched any of it, which is why the two sites still read as one
 * company page for page.
 *
 * Protector Class is the other thing. Opaque paper, hairline rules, square
 * corners, and depth carried by the accent rather than by glow.
 *
 * The class lists below are measured off the rendered pages, not guessed - a
 * sweep for backdrop-filter, px border-radius and wide soft shadows across all
 * 19 public URLs, with newlines collapsed first: the HTML minifier leaves them
 * inside <style>, so a first pass that read the served bytes line by line saw
 * only the single-line rules and undercounted shadows 19 to 101. Overlays, the sticky nav and genuine circles (dots, status
 * lamps) are excluded by name: blur is functional on an overlay, and a squared
 * dot is just a bug.
 */

:root{
  --pc-paper:#FBFAFD;
  --pc-paper-2:#F6F4FA;
  --pc-rule:rgba(13,14,20,0.13);
  --pc-rule-strong:rgba(13,14,20,0.22);
  --pc-accent:#7C3AED;
}

/* ---- 1. No glass. Overlays and the sticky nav keep theirs; it is load-bearing
        there, and a transparent nav with no blur is unreadable over content. */
*:not(.modal):not(.modal-overlay):not(.modal-close):not(.mmenu):not(.mnav):not(.mobile-nav):not(.nav):not(.nav-wrap):not(.nav-dd):not(.sticky-cta){
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}

/* ---- 2. Panels: paper, one hairline, square, no lift.
   .applybox is deliberately NOT in this list. It is the academy's dark CTA
   panel: the page paints it var(--pt-9) and colours every child white. This
   sheet is injected last, so forcing it to paper here won the cascade on
   source order and left white text on near-white paper -- the eight field
   labels measured 1.02:1, the lead paragraph 1.04:1, and the text an applicant
   TYPED was white on white. That is the only conversion surface on the page.
   Removed 3 Sep 2026. Anything added to this list must have its child text
   colours checked, not just its background. */
/* ---- 2. Panels: paper, one hairline, square, no lift. */
.gc,.mcard,.rcard,.fcard,.feat-card,.receive-card,.path-card,.cc,.stat-card,
.dash-callout,.comp-card,.use-card,.ifc-card,.risk-card,.pricecard,.price-table,
.notice-box,.rights-box,.faq,.faq-contact,.sc-about-card,
.sc-bonus-card,.sc-upgrade-card,.sc-wtf-card,.sc-callout,.sc-earnings,
.sc-thanks,.sc-timeline-day,.sc-section,.sc-free-strip,.tl-content,.spec-item{
  background:var(--pc-paper) !important;
  border:1px solid var(--pc-rule) !important;
  border-radius:0 !important;
  box-shadow:none !important;
}
.gc:hover,.mcard:hover,.rcard:hover,.fcard:hover,.feat-card:hover,
.path-card:hover,.cc:hover,.receive-card:hover,.comp-card:hover,
.use-card:hover,.ifc-card:hover,.risk-card:hover,.sc-about-card:hover{
  transform:none !important;
  box-shadow:none !important;
  background:#FFFFFF !important;
  border-color:rgba(124,58,237,0.42) !important;
}

/* ---- 3. Eyebrows take a leading accent rule where LeakTrace uses a pill. */
.hero-badge,.heyebrow{
  width:fit-content !important;
  border-radius:0 !important;
  box-shadow:none !important;
  background:#FFFFFF !important;
  border:1px solid var(--pc-rule) !important;
  /* The 3px accent rail is gone. It ran down the left edge of every eyebrow
     and every inner-page label on the site, which is the coloured-rail tell,
     repeated on each section of each page. The accent it carried is already
     in the dot inside the plate, so nothing is lost by dropping it -- the
     chip keeps its hairline box and its dot, and reads as a plate rather
     than a component with a stripe bolted to one side. */
}

/* ---- 4. Every other chip, badge and button squares off. */
.comp-badge,.rbadge,.sect-chip,.update-chip,.viz-badge,.trust-item-status,
.panel-badge,.sc-rolling-pill,.chip,.badge,.bp,.tech-label,.tech-status,.mark,
.btn-red,.btn-lt,.btn-sm,.bs,.nav-cta,.ncta,.nsi,.mmenu-cta,.mmenu-si,
.mnav-signin,.nav-signin,.sc-cta-primary,.sc-cta-secondary,
.feat-ico,.feat-icon,.mcard-icon,.use-icon,.trust-item-icon,.ifc-ic,.ifc-viz,
.viz-row,.viz-stat,.viz-meter,.viz-meter-fill,.data-row-icon,.payopt,
.ps-num,.ps-sub,.sc-cal-label,.input,.cf-input{
  border-radius:0 !important;
}

/* ---- 5. Icon tiles: the mark, not a chip. */
.cc-icon,.feat-ico,.feat-icon,.mcard-icon,.iico,.fgi,.aico,.cert-ico,.hv-icon,
.use-icon,.ifc-ic{
  background:none !important;
  border:0 !important;
  box-shadow:none !important;
}

/* ---- 6. The wide soft shadow goes everywhere it appears. */
.ai-bi,.aico,.bs,.cc-icon,.cert-ico,.dstat,.fgi,.fi,.gc,.heyebrow,.iico,
.mcard,.mcard-icon,.rbadge,.rcard,.sico,.tb,.hero-badge,.sect-chip,
.sc-rolling-pill,.viz-badge,.comp-badge{
  box-shadow:none !important;
}

/* ---- 7. Secondary button: outline, not glass. */
.bs{
  background:#FFFFFF !important;
  border:1px solid var(--pc-rule-strong) !important;
}
.bs:hover{
  background:var(--pc-paper-2) !important;
  border-color:rgba(124,58,237,0.45) !important;
  transform:none !important;
  box-shadow:none !important;
}

/* ---- 8. Bands: ruled, not floated. */
.tb,.sect-chip-band{
  background:var(--pc-paper-2) !important;
  box-shadow:none !important;
  border-top:1px solid var(--pc-rule) !important;
  border-bottom:1px solid var(--pc-rule) !important;
}

/* ---- 9. Inputs: square, accent focus. */
.cf-input,.input{
  background:#FFFFFF !important;
  border:1px solid rgba(13,14,20,0.20) !important;
  box-shadow:none !important;
}
.cf-input:focus,.input:focus{
  border-color:var(--pc-accent) !important;
  box-shadow:0 0 0 3px rgba(124,58,237,0.12) !important;
}

/* ==== Second sweep. The first pass read the served HTML line by line, which
   only ever saw single-line rules; collapsing newlines first surfaced 52 more
   classes, including the /individual/ hero eyebrow and scan form - the two
   loudest components on the highest-traffic page. State and colour modifiers
   (.active .red .green .blue), circles (.dot-d .fsuc-ico) and the nav are
   excluded by name. Dark surfaces get the flattening but keep their ground,
   so nothing turns dark-on-dark. ==== */

/* Light panels join the paper set. */
.card,.trust-card,.cat-card,.band-card,.free-tool,.feat-col,.glass-panel,
.method-hero,.stats-strip{
  background:var(--pc-paper) !important;
  border:1px solid var(--pc-rule) !important;
  border-radius:0 !important;
  box-shadow:none !important;
}
.card:hover,.trust-card:hover,.cat-card:hover,.band-card:hover,
.free-tool:hover,.feat-col:hover{
  transform:none !important;
  box-shadow:none !important;
  background:#FFFFFF !important;
  border-color:rgba(124,58,237,0.42) !important;
}

/* /individual/ runs its own eyebrow class. Same leading-rule treatment. */
/* width:fit-content because .hero-eyebrow is a pill on /individual/ but a
   plain full-width <div> on /methodology/ - same class, two components. Boxing
   the second one drew an 806px white bar across the page. fit-content is a
   no-op on the inline-flex one. */
.hero-eyebrow{
  width:fit-content !important;
  border-radius:0 !important;
  box-shadow:none !important;
  background:#FFFFFF !important;
  border:1px solid var(--pc-rule) !important;
  /* The 3px accent rail is gone. It ran down the left edge of every eyebrow
     and every inner-page label on the site, which is the coloured-rail tell,
     repeated on each section of each page. The accent it carried is already
     in the dot inside the plate, so nothing is lost by dropping it -- the
     chip keeps its hairline box and its dot, and reads as a plate rather
     than a component with a stripe bolted to one side. */
}

/* The scan form is the conversion element on /individual/. Flat and square. */
.scan-row{
  background:#FFFFFF !important;
  border:1px solid rgba(13,14,20,0.20) !important;
  border-radius:0 !important;
  box-shadow:none !important;
}
.scan-row:focus-within{
  border-color:var(--pc-accent) !important;
  box-shadow:0 0 0 3px rgba(124,58,237,0.12) !important;
}
.scan-btn,.sticky-btn,.sticky-input,.mid-cta,.feat-cta,.lt-btn-dk,.lt-btn-wt,
.callout,.disc-card,.sc-header,.sc-timeline,.hreveal,.rtl,.rtb-eyebrow,
.rtb-note,.receive-icon,.principle-icon,.flow-output-icon,.ft-icon,.bi,
.hero-version,.cur-week,.mid-stat,.features,.nav-help{
  border-radius:0 !important;
}
.callout,.disc-card,
.sc-header,.hreveal,.rtl,.receive-icon,.principle-icon,.flow-output-icon,
.ft-icon,.bi,.trust-card,.cat-card,.band-card,.free-tool,.feat-col,
.glass-panel,.method-hero,.stats-strip,.card,.hero-eyebrow,.scan-row{
  box-shadow:none !important;
}
/* Dark surfaces: flattened, ground untouched so text stays legible. */
.panel-dark,.sticky-bar{
  border-radius:0 !important;
  box-shadow:none !important;
}

/* ==================================================================
   CTA layer — gradient amber, option B.
   ==================================================================
   Decided 30 Aug 2026. Six different primary-button treatments were
   live across the brand: flat amber on 5 academy templates, flat ink,
   two violet gradients, a gold gradient and one red-into-violet left
   over from LeakTrace. This collapses all of them into one.

   The gradient runs on the same 168deg axis as the chrome headline
   gradient, so buttons and headlines finally read as one house style.

   Ink is dark violet, never white. Measured: dark on the darkest stop
   in this fill is 5.92:1 (passes AA); white on amber is 2.15:1 and
   fails. Nothing at #4C1D95 or darker goes inside the fill - it drops
   to 3.76:1 against dark ink - so it is the hard bottom edge only,
   which is also what makes the button read as a physical key.

   Arrows inside these buttons are marked stroke="white" in the
   templates. On amber that measures 2.15:1, so they are forced to the
   ink colour or they disappear.

   Amber goes on nothing that is not clickable. Secondary buttons are
   pinned to an outline below, because base_public.html was handing
   .btn-lt - the secondary - the same --cta fill as the primary, which
   defeats the whole point of reserving the colour.
   ================================================================== */

:root{
  /* Violet gloss per the 1 Sep design pass. Amber was the CTA colour from
     30 Aug; the redesign removed amber sitewide and Matt approved. Ink is
     white now: it computes 7.10:1 on #6D28D9, while the old dark ink was
     chosen for amber and fails on violet. */
  --pc-cta:linear-gradient(180deg,#8B5CF6 0%,#7C3AED 55%,#6D28D9 100%);
  --pc-cta-ink:#FFFFFF;
  --pc-cta-edge:#4C1D95;
}


/* Second CTA pass. The first list came from the class names I had in hand;
   probing the rendered pages turned up more primaries still off-palette -
   .bp is the hero button on /business/, .bsub its form submit, .mmenu-cta the
   mobile menu CTA, and .intel-btn still carried a #7a241c stop, another
   LeakTrace red that was never repainted. Bare `.btn` is deliberately NOT
   here: it is a base class with -danger and -ghost modifiers, so amber-ing it
   would repaint destructive buttons. */
.btn-primary,.cta-primary,.btn-red,.ncta,.nav-cta,.scan-btn,.sc-cta-primary,
.cta-btn,.mid-cta,.btn-dk,.sticky-btn,.feat-cta,
.bp,.bsub,.mmenu-cta,.sect-cta-primary,.cta,.fcbtn,.fcb-btn,.intel-btn,.phone-btn,.reveal-btn,.btn-unlock,.exit-cta,.pay-btn,.cf-submit,.lt-submit-btn,.lt-email-submit,.lt-btn-dk{
  background:var(--pc-cta) !important;
  color:var(--pc-cta-ink) !important;
  border:0 !important;
  border-radius:0 !important;
  box-shadow:0 3px 0 var(--pc-cta-edge) !important;
  text-shadow:none !important;
  transition:filter .14s ease, box-shadow .14s ease, transform .14s ease !important;
}
.btn-primary svg *,.cta-primary svg *,.btn-red svg *,.ncta svg *,.nav-cta svg *,
.scan-btn svg *,.sc-cta-primary svg *,.cta-btn svg *,.mid-cta svg *,
.btn-dk svg *,.sticky-btn svg *,.feat-cta svg *,
.bp svg *,.bsub svg *,.mmenu-cta svg *,.sect-cta-primary svg *,.cta svg *,
.fcbtn svg *,.fcb-btn svg *,.intel-btn svg *,.phone-btn svg *,.reveal-btn svg *,
.btn-unlock svg *,.exit-cta svg *,.pay-btn svg *,.cf-submit svg *,
.lt-submit-btn svg *,.lt-email-submit svg *,.lt-btn-dk svg *{
  stroke:var(--pc-cta-ink) !important;
}
.btn-primary:hover,.cta-primary:hover,.btn-red:hover,.ncta:hover,.nav-cta:hover,
.scan-btn:hover,.sc-cta-primary:hover,.cta-btn:hover,.mid-cta:hover,
.btn-dk:hover,.sticky-btn:hover,.feat-cta:hover,
.bp:hover,.bsub:hover,.mmenu-cta:hover,.sect-cta-primary:hover,.cta:hover,
.fcbtn:hover,.fcb-btn:hover,.intel-btn:hover,.phone-btn:hover,.reveal-btn:hover,
.btn-unlock:hover,.exit-cta:hover,.pay-btn:hover,.cf-submit:hover,
.lt-submit-btn:hover,.lt-email-submit:hover,.lt-btn-dk:hover{
  filter:brightness(1.05) !important;
  box-shadow:0 2px 0 var(--pc-cta-edge) !important;
  transform:translateY(1px) !important;
}
.btn-primary:active,.cta-primary:active,.btn-red:active,.ncta:active,
.nav-cta:active,.scan-btn:active,.sc-cta-primary:active,.cta-btn:active,
.mid-cta:active,.btn-dk:active,.sticky-btn:active,.feat-cta:active,
.bp:active,.bsub:active,.mmenu-cta:active,.sect-cta-primary:active,.cta:active,
.fcbtn:active,.fcb-btn:active,.intel-btn:active,.phone-btn:active,
.reveal-btn:active,.btn-unlock:active,.exit-cta:active,.pay-btn:active,
.cf-submit:active,.lt-submit-btn:active,.lt-email-submit:active,.lt-btn-dk:active{
  box-shadow:0 0 0 var(--pc-cta-edge) !important;
  transform:translateY(3px) !important;
}
.btn-primary:focus-visible,.cta-primary:focus-visible,.btn-red:focus-visible,
.ncta:focus-visible,.nav-cta:focus-visible,.scan-btn:focus-visible,
.sc-cta-primary:focus-visible,.cta-btn:focus-visible,.mid-cta:focus-visible,
.btn-dk:focus-visible,.sticky-btn:focus-visible,.feat-cta:focus-visible,
.bp:focus-visible,.bsub:focus-visible,.mmenu-cta:focus-visible,
.sect-cta-primary:focus-visible,.cta:focus-visible,.fcbtn:focus-visible,
.fcb-btn:focus-visible,.intel-btn:focus-visible,.phone-btn:focus-visible,
.reveal-btn:focus-visible,.btn-unlock:focus-visible,.exit-cta:focus-visible,
.pay-btn:focus-visible,.cf-submit:focus-visible,.lt-submit-btn:focus-visible,
.lt-email-submit:focus-visible,.lt-btn-dk:focus-visible{
  outline:2px solid var(--pc-accent) !important;
  outline-offset:3px !important;
}

/* Secondary never competes with the CTA. */
.btn-lt,.nsi,.mmenu-si,.nav-signin,.mnav-signin,.cta-secondary,
.sc-cta-secondary,.btn-nav,.btn-ghost,.btn-back,.sect-cta-secondary,.lt-btn-wt{
  background:transparent !important;
  background-image:none !important;
  color:var(--ink,#0D0E14) !important;
  border:1px solid var(--pc-rule-strong) !important;
  border-radius:0 !important;
  box-shadow:none !important;
}
.btn-lt:hover,.nsi:hover,.mmenu-si:hover,.nav-signin:hover,.mnav-signin:hover,
.cta-secondary:hover,.sc-cta-secondary:hover,.btn-nav:hover,.lt-btn-wt:hover{
  background:rgba(124,58,237,0.06) !important;
  border-color:rgba(124,58,237,0.45) !important;
  transform:none !important;
}

@media (prefers-reduced-motion:reduce){
  .btn-primary,.cta-primary,.btn-red,.ncta,.nav-cta,.scan-btn,.sc-cta-primary,
  .cta-btn,.mid-cta,.btn-dk,.sticky-btn,.feat-cta{transition:none !important;}
}

/* ==================================================================
   Luminous layer.
   ==================================================================
   Matt, 30 Aug 2026: the AI look is fine on Protector Class - the
   audience is people who want to be part of AI. That is an explicit
   override of the no-AI-aesthetic rule in the 15 Aug handoff, and it
   is scoped to THIS BRAND ONLY. LeakTrace keeps the ban; its whole
   position is discretion, and this sheet never reaches it.

   The constraint that shapes everything below: LeakTrace's look IS
   glassmorphism - frosted, translucent, soft-shadowed. Adding glass
   back here would undo the separation the rest of this sheet just
   built. So Protector Class takes the other AI register: opaque and
   luminous. Light comes from gradient edges, ambient glow and motion,
   never from blur.

   No pseudo-elements on panels - .gc alone already defines ::before
   in nine templates - so the gradient edge is a background layer.
   ================================================================== */

/* --- 1. Gradient edge along the top of every panel. --- */
.gc,.mcard,.rcard,.fcard,.feat-card,.receive-card,.path-card,.cc,.stat-card,
.card,.trust-card,.cat-card,.band-card,.free-tool,.feat-col,.glass-panel,
.comp-card,.use-card,.ifc-card,.risk-card,.pricecard{
  background-image:linear-gradient(90deg,#7C3AED 0%,#A78BFA 34%,rgba(124,58,237,0) 76%) !important;
  background-size:100% 2px !important;
  background-repeat:no-repeat !important;
  background-position:left top !important;
}
.gc:hover,.mcard:hover,.rcard:hover,.fcard:hover,.feat-card:hover,
.path-card:hover,.cc:hover,.card:hover,.trust-card:hover,.comp-card:hover,
.use-card:hover,.ifc-card:hover{
  background-image:linear-gradient(90deg,#7C3AED 0%,#A78BFA 30%,rgba(245,158,11,0) 78%) !important;
}

/* --- 2. Ambient light behind the heroes. Two sources, violet and amber,
       off-centre so it does not read as a symmetrical stock gradient. --- */
.hero,.sol-hero{
  background-image:
    radial-gradient(58% 74% at 82% 14%,rgba(124,58,237,0.15),transparent 68%),
    radial-gradient(46% 62% at 6% 4%,rgba(245,158,11,0.09),transparent 70%) !important;
}

/* --- 3. A sheen crossing the CTA. ::after is unused on all of them. --- */
.btn-primary,.cta-primary,.btn-red,.ncta,.nav-cta,.scan-btn,.sc-cta-primary,
.cta-btn,.mid-cta,.btn-dk,.sticky-btn,.feat-cta,.bp,.bsub,.mmenu-cta,
.sect-cta-primary,.cta,.fcbtn,.fcb-btn,.intel-btn,.phone-btn,.reveal-btn,
.btn-unlock,.exit-cta,.pay-btn,.cf-submit,.lt-submit-btn,.lt-email-submit,
.lt-btn-dk{
  position:relative !important;
  overflow:hidden !important;
  isolation:isolate;
}
.btn-primary::after,.cta-primary::after,.btn-red::after,.ncta::after,
.nav-cta::after,.scan-btn::after,.sc-cta-primary::after,.cta-btn::after,
.mid-cta::after,.btn-dk::after,.sticky-btn::after,.feat-cta::after,
.bp::after,.bsub::after,.mmenu-cta::after,.sect-cta-primary::after,
.cta::after,.fcbtn::after,.fcb-btn::after,.intel-btn::after,
.phone-btn::after,.reveal-btn::after,.btn-unlock::after,.exit-cta::after,
.pay-btn::after,.cf-submit::after,.lt-submit-btn::after,
.lt-email-submit::after,.lt-btn-dk::after{
  content:'';
  position:absolute;
  top:0;bottom:0;left:-55%;
  width:38%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,0.50),transparent);
  transform:skewX(-18deg);
  pointer-events:none;
  z-index:1;
  animation:pc-sheen 5.2s cubic-bezier(.4,0,.2,1) infinite;
}
@keyframes pc-sheen{
  0%,74%{left:-55%;}
  100%{left:132%;}
}

@media (prefers-reduced-motion:reduce){
  .btn-primary::after,.cta-primary::after,.btn-red::after,.ncta::after,
  .nav-cta::after,.scan-btn::after,.sc-cta-primary::after,.cta-btn::after,
  .mid-cta::after,.btn-dk::after,.sticky-btn::after,.feat-cta::after,
  .bp::after,.bsub::after,.mmenu-cta::after,.sect-cta-primary::after,
  .cta::after,.fcbtn::after,.fcb-btn::after,.intel-btn::after,
  .phone-btn::after,.reveal-btn::after,.btn-unlock::after,.exit-cta::after,
  .pay-btn::after,.cf-submit::after,.lt-submit-btn::after,
  .lt-email-submit::after,.lt-btn-dk::after{animation:none;display:none;}
}

/* --- 4. Pseudo-elements that traced a corner radius the panels no longer have.
       .sc-earnings draws 14px corner brackets sized to the card's old 14px
       radius; squaring the card left them curving away from it as loose violet
       arcs on /careers/sales-contractor/. .mcard::after and .band-card::before
       are top accent rules with matching rounded ends. All three follow the
       card. --- */
.sc-earnings::before,.sc-earnings::after,
.mcard::after,.mcard::before,
.band-card::before{
  border-radius:0 !important;
}

/* --- 5. /paywall/ - the purchase page. It names every component differently
       (.gcard, .unlock-card, .fcb-inner, .status-strip), so none of the lists
       above reached it: the CTA went amber but the chrome around it stayed
       rounded and glassy, which read as a different site from the page that
       sent the buyer there. All light-ground, checked before touching. Badges
       square only; panels take the full treatment. --- */
.gcard,.unlock-card,.sidebar-context,.fcb-inner,.status-strip,.stats-row{
  background:var(--pc-paper) !important;
  background-image:linear-gradient(90deg,#7C3AED 0%,#A78BFA 34%,rgba(124,58,237,0) 76%) !important;
  background-size:100% 2px !important;
  background-repeat:no-repeat !important;
  background-position:left top !important;
  border:1px solid var(--pc-rule) !important;
  border-radius:0 !important;
  box-shadow:none !important;
}
.status-badge,.card-hdr-badge,.ind-level,.nav-region,.nav-email{
  border-radius:0 !important;
  box-shadow:none !important;
}

/* --- 6. Surfaces the earlier passes never reached, found by parsing every
       template's <style> for a px border-radius and diffing against what this
       sheet targets - 16 classes across three surfaces.

       Sign-in (/accounts/) was not even loading the sheet until the middleware
       branch was widened; it is the door to the rep portal, and looking like a
       different company from the page behind it is the first thing a rep saw
       every morning. Only .btn-signin goes amber: the other registration pages
       submit through a bare `.btn`, and that is a base class carrying -danger
       and -ghost elsewhere, so they are squared and keep their own fill.

       The paywall has CA/US/preview variants with their own class names, so
       fixing the generic one left a regional visitor on a different-looking
       purchase page. --- */
.signin-card,.form-group,.form-errors,.error-list,
.scat,.score-bar-wrap,.score-bar-fill,.sidebar-sticky,
.toc-list,.contact-card,.conditions,.condition-icon,.psec-num,
.request-steps,.terms-rows,
.card>.btn,.btn-back{
  border-radius:0 !important;
}
.signin-card,.toc-list,.contact-card,.conditions,.request-steps,
.terms-rows,.sidebar-sticky{
  box-shadow:none !important;
}
.btn-signin{
  background:var(--pc-cta) !important;
  color:var(--pc-cta-ink) !important;
  border:0 !important;
  border-radius:0 !important;
  box-shadow:0 3px 0 var(--pc-cta-edge) !important;
  position:relative !important;
  overflow:hidden !important;
}
.btn-signin svg *{stroke:var(--pc-cta-ink) !important;}
.btn-signin:hover{
  filter:brightness(1.05) !important;
  box-shadow:0 2px 0 var(--pc-cta-edge) !important;
  transform:translateY(1px) !important;
}
.btn-signin:focus-visible{
  outline:2px solid var(--pc-accent) !important;
  outline-offset:3px !important;
}

/* --- 7. Form fields. Every rule above targets a class, and 25 templates style
       their inputs by element selector instead - the sign-in fields carry no
       class at all - so the whole sheet was stepping straight over them. The
       result on /accounts/login/ was a squared card wrapped around rounded
       inputs sitting under an amber button.

       Typed rather than blanket `input`: checkboxes, radios, ranges and colour
       swatches are drawn by the browser and squaring them is a bug, not a
       brand. --- */
input[type="text"],input[type="email"],input[type="password"],
input[type="tel"],input[type="url"],input[type="search"],
input[type="number"],input[type="date"],input[type="time"],
input[type="datetime-local"],select,textarea{
  border-radius:0 !important;
}
input[type="text"]:focus,input[type="email"]:focus,input[type="password"]:focus,
input[type="tel"]:focus,input[type="url"]:focus,input[type="search"]:focus,
input[type="number"]:focus,select:focus,textarea:focus{
  border-color:var(--pc-accent) !important;
  box-shadow:0 0 0 3px rgba(124,58,237,0.12) !important;
  outline:none !important;
}

/* --- 8. The premium kit is exempt from the de-glass rule above.
       That rule exists to strip LeakTrace's inherited frosted-glass chrome.
       The pc-* components below are deliberate Protector Class design, so they
       get their blur back. Declared after the universal rule so it wins. --- */
.pc-glass,.pc-btn-glass,.pc-ico,.pc-sec-chip,.pc-rail-node,.pc-map-row{
  backdrop-filter:blur(18px) saturate(1.5) !important;
  -webkit-backdrop-filter:blur(18px) saturate(1.5) !important;
}

/* --- 9. Site-wide chrome, promoted off the homepage.
       Every inner page already sets its section headings with .ct - a five-stop
       chrome gradient clipped to the text. Two things were missing.

       First, robustness: .ct sets -webkit-text-fill-color:transparent with NO
       solid colour underneath. On the homepage that exact shape produced an
       invisible headline the moment another rule stripped the gradient. The
       same bomb was armed on all 35 pages carrying .ct. A solid ink fallback
       defuses it - if the gradient is ever stripped, the text degrades to
       readable ink instead of vanishing.

       Second, the mirror travel the homepage display type has. Same axis, same
       11s cycle, so the whole site moves together. --- */
.ct{
  color:#0D0E14;
  background-size:100% 240%;
  background-position:0% 12%;
  animation:pc-mirror-global 11s ease-in-out infinite;
}
@keyframes pc-mirror-global{0%,100%{background-position:0% 8%;}50%{background-position:0% 92%;}}
@media (prefers-reduced-motion:reduce){.ct{animation:none;}}

/* the inner-page eyebrow becomes a glass plate with a leading accent rule,
   matching the numbered chips on the homepage */
.lbl{
  position:relative;overflow:hidden;
  display:inline-flex !important;align-items:center;gap:9px;
  padding:7px 14px 7px 11px !important;
  border:1px solid rgba(13,14,20,0.13) !important;
  /* The 3px accent rail is gone. It ran down the left edge of every eyebrow
     and every inner-page label on the site, which is the coloured-rail tell,
     repeated on each section of each page. The accent it carried is already
     in the dot inside the plate, so nothing is lost by dropping it -- the
     chip keeps its hairline box and its dot, and reads as a plate rather
     than a component with a stripe bolted to one side. */
  border-radius:0 !important;
  background-image:linear-gradient(152deg,rgba(255,255,255,0.98) 0%,rgba(245,242,253,0.82) 50%,rgba(233,227,249,0.66) 100%) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,1),0 5px 12px -9px rgba(13,14,20,0.55) !important;
}
.lbl:after{
  content:'';position:absolute;top:0;bottom:0;left:-60%;width:34%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,0.72),transparent);
  transform:skewX(-18deg);pointer-events:none;
  animation:pc-sheen 8s cubic-bezier(.4,0,.2,1) infinite;
}
@media (prefers-reduced-motion:reduce){.lbl:after{display:none;}}


/* ══════════════════════════════════════════════════════════════════════
   12. LEGIBILITY FLOOR
   Measured 31 Aug 2026: 1,085 font-size declarations under 12.5px across 89
   Protector Class templates, the smallest at 8.5px. The pattern is the same
   everywhere - a monospace label, uppercased, tracked out past 0.14em, at a
   size where the tracking is what breaks it. Two things are set here: a floor
   on size, and a cap on tracking at that size. Contrast is raised on the
   footer and nav, where the ink was set by opacity and measured under 4.5:1.

   This lives in the brand sheet rather than in 89 templates because the sheet
   is injected last, after every page's own <style>, so a single declaration
   reaches all of them. Page rules that are more specific are matched with
   !important deliberately, not by habit.
   ══════════════════════════════════════════════════════════════════════ */

/* --- navigation --- */
.nav-links a,.nav-dropdown a,.nav-more-btn,.nav-back{
  font-size:13.5px !important;letter-spacing:0.02em !important;}
.nav-badge{font-size:13px !important;letter-spacing:0.07em !important;}

/* --- footer: the smallest type on the site, and the palest --- */
footer.site .fcol-t{font-size:13px !important;letter-spacing:0.11em !important;
  color:rgba(255,255,255,0.62) !important;}
footer.site .fcol a,footer.site .fcol ul a{font-size:14px !important;
  color:rgba(255,255,255,0.74) !important;}
footer.site .fcopy{font-size:13px !important;letter-spacing:0.04em !important;
  color:rgba(255,255,255,0.58) !important;}
footer.site .fdisc{font-size:13px !important;line-height:1.75 !important;
  color:rgba(255,255,255,0.52) !important;}
footer.site .fadr{font-size:13px !important;color:rgba(255,255,255,0.58) !important;}
/* The four selectors above name the LeakTrace footer's classes. The Protector
   Class base renders .foot-legal / .foot-links / .foot-wordmark instead, so the
   floor above never matched anything here and the legal line — which carries the
   earnings disclaimer — sat at 50% white on every page using this base. */
footer.site .foot-legal{font-size:13px !important;line-height:1.75 !important;
  color:rgba(255,255,255,0.82) !important;}
footer.site .foot-legal a{color:rgba(255,255,255,0.82) !important;}
footer.site .foot-links a{font-size:13px !important;color:rgba(255,255,255,0.82) !important;}
footer.site .ftag{font-size:14px !important;color:rgba(255,255,255,0.66) !important;}

/* --- eyebrows and section labels --- */
.eyebrow,.lt-lbl,.lt-flabel,.lbl,.sec-label,.kicker{
  font-size:13px !important;letter-spacing:0.12em !important;}

/* --- chips, badges and readouts inside the product surfaces --- */
.status-badge,.card-hdr-badge,.scan-status,.stat-lbl,.notif-ts,
.scan-row-detail,.lt-modal-trust,.tag,.pill,.chip-lbl,.meta-lbl{
  font-size:13px !important;letter-spacing:0.07em !important;}

/* --- buttons carried over from the ported design --- */
.lt-btn-dk,.lt-btn-ghost,.lt-btn-wt{font-size:13px !important;letter-spacing:0.08em !important;}


/* ══════════════════════════════════════════════════════════════════════
   13. NAVIGATION
   The brand's base sheet sets a{text-decoration:underline} globally, which is
   right for prose and wrong for a nav: every top-level link rendered with a
   1.5px underline, so the header read as unstyled HTML rather than a designed
   bar. Scoped off here rather than in the base, because the underline is
   correct everywhere else on the site.
   ══════════════════════════════════════════════════════════════════════ */

nav.nav a,
nav.nav .nav-link,
nav.nav .nav-links a,
nav.nav .nav-dropdown a,
nav.nav .pc-wordmark{text-decoration:none !important;}

nav.nav{border-bottom:1px solid rgba(13,14,20,0.12);}

/* links: quiet by default, an accent rule that draws in on hover. The rule is
   the affordance the underline was doing badly. */
nav.nav .nav-links a,
nav.nav a.nav-link{
  position:relative;
  font-weight:600 !important;
  color:rgba(13,14,20,0.78) !important;
  padding-bottom:3px;
  transition:color .16s ease;
}
nav.nav .nav-links a:after,
nav.nav a.nav-link:after{
  content:'';position:absolute;left:0;right:0;bottom:0;height:2px;
  background:linear-gradient(90deg,#7C3AED,#A78BFA);
  transform:scaleX(0);transform-origin:left center;
  transition:transform .22s cubic-bezier(.2,.7,.3,1);
}
nav.nav .nav-links a:hover,
nav.nav a.nav-link:hover{color:#0D0E14 !important;}
nav.nav .nav-links a:hover:after,
nav.nav a.nav-link:hover:after{transform:scaleX(1);}
@media (prefers-reduced-motion:reduce){
  nav.nav .nav-links a:after,nav.nav a.nav-link:after{transition:none;}
}

/* the wordmark: tighter setting, and the two words read as one lockup */
nav.nav .pc-wordmark{
  font-size:21px !important;letter-spacing:-0.005em !important;
  display:inline-flex;align-items:baseline;gap:0.28em;
}

/* sign-in sits apart from the section links, behind a hairline, because it is
   a different kind of destination */
nav.nav a[href*="login"],
nav.nav a[href*="accounts"]{
  color:rgba(13,14,20,0.62) !important;
  padding-left:20px !important;
  border-left:1px solid rgba(13,14,20,0.16);
}
nav.nav a[href*="login"]:hover,
nav.nav a[href*="accounts"]:hover{color:#0D0E14 !important;}
nav.nav a[href*="login"]:after,
nav.nav a[href*="accounts"]:after{display:none;}

/* ---- 20. Phone widths: keep the header inside the viewport.
   Measured on production 3 Sep 2026 at a 390px viewport. The nav is a flex row
   with 350px of content space after padding, and it was asking for 400:
   wordmark 168 + gap 26 + "Book your audit" 140 + gap 26 + burger 40. The
   burger is the last child, so it took the whole overflow and sat at
   left:380 -- 30px off-screen on the homepage and /business/, and fully
   off-screen at left:396 on /individual/, where the only way to open the menu
   was to scroll the page sideways first.

   Fixed by making the row actually fit rather than by hiding the menu: tighter
   gap, a smaller wordmark and CTA, and the burger pinned right and never
   allowed to shrink. The CTA stays visible because it is the conversion action
   on these pages.

   Lives here rather than in the eight page templates that each carry their own
   copy of these nav rules, so the fix cannot drift between them. */
@media (max-width: 560px) {
  .nav{
    gap:10px !important;
    padding:11px 14px !important;
    flex-wrap:nowrap !important;
  }
  .nav .wm{
    font-size:15px !important;
    min-width:0 !important;
    flex:0 1 auto !important;
    overflow:hidden !important;
    white-space:nowrap !important;
  }
  .nav .ncta{
    font-size:13px !important;
    padding:9px 12px !important;
    white-space:nowrap !important;
    flex:0 1 auto !important;
  }
  .nav .hbg{
    margin-left:auto !important;
    flex:0 0 40px !important;
  }
  /* The careers header is its own component and overflowed on one element:
     .sc-partner-tag, 107px wide, pushing the document to 442. It is a
     decorative role label ("A PROTECTOR CLASS CONTRACTOR ROLE") next to the
     page title, and at this width it was rendering clipped mid-word anyway. */
  .sc-header .sc-partner-tag{ display:none !important; }
  .sc-header .sc-header-inner{
    gap:10px !important;
    padding-left:14px !important;
    padding-right:14px !important;
    flex-wrap:nowrap !important;
  }
  /* Three leaves kept the page scrolling sideways after the nav was fixed,
     all of them one-line text wider than its box at this width:
       b inside .band-i   "Toronto & New York"  166px in 142, white-space:nowrap
       .s2-ring           "61 /100"             103px in 96
     The b simply must be allowed to wrap. The ring is a fixed-diameter circle,
     so its label cannot be made to fit by shrinking type without going under
     the 13px floor; it is clipped to its own circle instead, which is
     invisible because the label is centred in it. */
  .band-i b{ white-space:normal !important; }
  .band-in, .band-i, .spec-wrap{ min-width:0 !important; }
  .s2-ring{ overflow:hidden !important; min-width:0 !important; }
  /* .spec2 lays out to 380 inside a 350 box and .spec-wrap carries that to the
     document. It is the decorative "Exposure file / Specimen" card in the hero,
     so the last 30px are clipped at its own edge rather than chased element by
     element. Everything it clips is the right-hand margin of a mock document. */
  .spec-wrap{ overflow:hidden !important; }
  .spec-wrap > *{ max-width:100% !important; }
}
