/* ==========================================================================
   Spexo — Base / Reset
   Shared foundational styles: box model, typography defaults, ambient
   background effect, and the page-wide content wrapper. Loaded on every
   page (index + all /pages/*.html).
   ========================================================================== */
*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
/* The global header is intentionally fixed to the viewport so it remains visible while the page scrolls. */
body{ padding-top:var(--header-h); }
html{ scroll-behavior:smooth; }

/* Hidden on screen; css/print.css (media="print") flips this to visible
   and populates it fresh via js/print-history.js just before printing. */
#printableHistory{ display:none; }

body{
  background:
    radial-gradient(1100px 600px at 15% -10%, rgba(63,123,255,0.16), transparent 60%),
    radial-gradient(900px 500px at 90% 10%, rgba(45,217,232,0.10), transparent 55%),
    var(--bg-0);
  color:var(--text-hi);
  font-family:'Inter',sans-serif;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  display:flex;
  flex-direction:column;
}

a{ color:inherit; }
.sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

.ambient{ position:fixed; inset:0; pointer-events:none; z-index:0; opacity:var(--ambient-opacity); }
.ambient::before{
  content:''; position:absolute; top:-30%; left:50%; width:1400px; height:1400px;
  transform:translateX(-50%);
  background:conic-gradient(from 0deg, transparent 0deg, rgba(45,217,232,0.06) 40deg, transparent 90deg, transparent 360deg);
  animation:sweep 14s linear infinite; border-radius:50%;
}
@keyframes sweep{ to{ transform:translateX(-50%) rotate(360deg); } }
@media (prefers-reduced-motion: reduce){ .ambient::before{animation:none;} *{scroll-behavior:auto !important;} }

/* The logo artwork has an opaque dark-navy background baked into the
   image itself, so it always sits on a small fixed-dark "chip" regardless
   of the active theme — this keeps it crisp and correctly framed in both
   light and dark mode without needing a separate light-theme logo asset. */
.logo-chip{
  display:inline-flex;
  align-items:center;
  background:transparent;
  padding:0;
  border-radius:0;
  line-height:0;
  box-shadow:none;
}

/* Visible, consistent keyboard/remote-control focus ring across every
   interactive element — important for keyboard users and D-pad/remote
   navigation on smart TVs, where a default browser outline can be nearly
   invisible against this UI. */
:focus-visible{
  outline:2px solid var(--cyan); outline-offset:2px; border-radius:4px;
}

/* Themed scrollbars (Firefox + WebKit/Chromium) */
html{ scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track); scrollbar-width: thin; }
::-webkit-scrollbar{ width:11px; height:11px; }
::-webkit-scrollbar-track{ background:var(--scrollbar-track); }
::-webkit-scrollbar-thumb{ background:var(--scrollbar-thumb); border-radius:100px; border:2px solid var(--scrollbar-track); }

/* Shared content wrapper used inside <main> on every page */
.wrap{ position:relative; z-index:1; max-width:var(--content-max); margin:0 auto; padding:36px 20px 80px; width:100%; }

main{ flex:1 0 auto; display:flex; flex-direction:column; }

/* Generic static-page article styling (About / Privacy / Terms / Contact) */
.page-hero{ text-align:center; padding:20px 0 8px; }
.page-hero .eyebrow{ font-family:'JetBrains Mono',monospace; font-size:12px; letter-spacing:0.16em; color:var(--cyan); text-transform:uppercase; margin-bottom:10px; opacity:0.85; }
.page-hero h1{ font-family:'Space Grotesk',sans-serif; font-weight:600; font-size:clamp(26px,4vw,38px); margin:0 0 10px; letter-spacing:-0.01em; }
.page-hero p{ color:var(--text-mid); max-width:620px; margin:0 auto; font-size:15px; line-height:1.6; }

.prose{
  max-width:760px; margin:36px auto 0; background:var(--panel); border:1px solid var(--panel-border);
  border-radius:var(--radius-lg); padding:34px clamp(20px,4vw,44px); backdrop-filter:blur(18px);
  line-height:1.75; font-size:15px; color:var(--text-mid);
}
.prose h2{ font-family:'Space Grotesk',sans-serif; color:var(--text-hi); font-size:20px; margin:28px 0 10px; }
.prose h2:first-child{ margin-top:0; }
.prose h3{ font-family:'Space Grotesk',sans-serif; color:var(--text-hi); font-size:16.5px; margin:20px 0 8px; }
.prose p{ margin:0 0 14px; }
.prose ul, .prose ol{ margin:0 0 14px; padding-left:22px; }
.prose li{ margin-bottom:6px; }
.prose a{ color:var(--cyan); text-decoration:underline; text-underline-offset:2px; }
@media (hover:hover) and (pointer:fine){
  .prose a:hover{ color:var(--text-hi); }
}
.prose strong{ color:var(--text-hi); }
.prose .updated{ font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--text-low); margin-bottom:22px; display:block; }
.prose hr{ border:none; border-top:1px solid var(--panel-border); margin:26px 0; }

/* Simple contact layout */
.contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:36px; }
@media (max-width:640px){ .contact-grid{ grid-template-columns:1fr; } }
.contact-card{
  background:var(--panel); border:1px solid var(--panel-border); border-radius:var(--radius-md);
  padding:22px; backdrop-filter:blur(18px);
}
.contact-card h3{ font-family:'Space Grotesk',sans-serif; font-size:15px; margin:0 0 8px; display:flex; align-items:center; gap:8px; }
.contact-card h3 svg{ width:16px; height:16px; color:var(--cyan); }
.contact-card p, .contact-card a{ color:var(--text-mid); font-size:13.5px; line-height:1.6; }
.contact-card a{ color:var(--cyan); }

/* Tables inside prose content (Privacy/Cookie/DMCA/etc.) */
.prose table{
  width:100%; border-collapse:collapse; margin:18px 0 22px; font-size:13.5px;
  border:1px solid var(--panel-border); border-radius:var(--radius-sm); overflow:hidden;
}
.prose caption{ caption-side:top; text-align:left; font-family:'JetBrains Mono',monospace; font-size:11px; color:var(--text-low); margin-bottom:8px; letter-spacing:0.04em; text-transform:uppercase; }
.prose th, .prose td{ padding:11px 14px; text-align:left; border-bottom:1px solid var(--hairline); vertical-align:top; }
.prose thead th{
  background:var(--surface-hover-soft); color:var(--text-hi); font-family:'JetBrains Mono',monospace;
  font-size:11px; text-transform:uppercase; letter-spacing:0.06em; font-weight:500;
}
.prose tbody tr:last-child td{ border-bottom:none; }
@media (hover:hover) and (pointer:fine){
  .prose tbody tr:hover td{ background:var(--surface-hover-soft); }
}
@media (max-width:640px){ .prose table{ display:block; overflow-x:auto; } }

/* Call-to-action block used at the end of policy/info pages */
.cta-box{
  margin:36px 0 8px; padding:28px clamp(20px,4vw,36px); border-radius:var(--radius-lg);
  background:linear-gradient(135deg, rgba(45,217,232,0.10), rgba(63,123,255,0.08));
  border:1px solid var(--panel-border-hi); text-align:center;
}
.cta-box h3{ font-family:'Space Grotesk',sans-serif; font-size:19px; margin:0 0 8px; color:var(--text-hi); }
.cta-box p{ color:var(--text-mid); font-size:14px; margin:0 0 18px; max-width:480px; margin-left:auto; margin-right:auto; }
.cta-buttons{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
.cta-btn{
  font-family:'Space Grotesk',sans-serif; font-weight:600; font-size:14px; text-decoration:none;
  padding:12px 26px; border-radius:100px; transition:transform .15s ease, box-shadow .15s ease;
  display:inline-block;
}
.cta-btn.primary{
  color:#03151a; background:linear-gradient(135deg, var(--grad-cyan), var(--grad-blue));
  box-shadow:0 8px 24px rgba(45,217,232,0.25);
}
.cta-btn.secondary{
  color:var(--text-hi); background:transparent; border:1px solid var(--panel-border-hi);
}
@media (hover:hover) and (pointer:fine){
  .cta-btn.primary:hover{ transform:translateY(-2px); box-shadow:0 12px 28px rgba(45,217,232,0.35); }
  .cta-btn.secondary:hover{ background:var(--surface-hover); }
}

/* FAQ accordion */
.faq-list{ display:flex; flex-direction:column; gap:10px; margin-top:28px; }
.faq-item{
  background:var(--panel); border:1px solid var(--panel-border); border-radius:var(--radius-md);
  overflow:hidden; transition:border-color .2s;
}
.faq-item[open]{ border-color:var(--panel-border-hi); }
.faq-item summary{
  list-style:none; cursor:pointer; padding:18px 22px; display:flex; align-items:center; justify-content:space-between;
  gap:14px; font-family:'Space Grotesk',sans-serif; font-weight:600; font-size:15px; color:var(--text-hi);
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{
  content:'+'; font-size:20px; font-weight:400; color:var(--cyan); flex-shrink:0; transition:transform .2s; line-height:1;
}
.faq-item[open] summary::after{ content:'−'; }
.faq-answer{ padding:0 22px 20px; color:var(--text-mid); font-size:14px; line-height:1.7; }
.faq-answer p{ margin:0 0 10px; }
.faq-answer p:last-child{ margin-bottom:0; }
.faq-category{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:var(--cyan); margin:34px 0 4px; }
.faq-category:first-child{ margin-top:8px; }

/* HTML sitemap page */
.sitemap-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:32px; }
@media (max-width:800px){ .sitemap-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .sitemap-grid{ grid-template-columns:1fr; } }
.sitemap-group{
  background:var(--panel); border:1px solid var(--panel-border); border-radius:var(--radius-md); padding:20px 22px;
}
.sitemap-group h3{
  font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.1em; text-transform:uppercase;
  color:var(--text-low); margin:0 0 14px;
}
.sitemap-group ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:11px; }
.sitemap-group a{
  color:var(--text-mid); text-decoration:none; font-size:14px; display:flex; align-items:center; gap:8px; transition:color .2s;
}
@media (hover:hover) and (pointer:fine){
  .sitemap-group a:hover{ color:var(--cyan); }
}
.sitemap-group a svg{ width:14px; height:14px; flex-shrink:0; opacity:0.6; }

/* Feature/checklist rows used on Accessibility, Editorial, Advertise pages */
.feature-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px; }
.feature-list li{ display:flex; align-items:flex-start; gap:12px; }
.feature-list .fl-icon{
  width:22px; height:22px; border-radius:50%; background:rgba(45,217,232,0.12); color:var(--cyan);
  display:flex; align-items:center; justify-content:center; flex-shrink:0; margin-top:1px;
}
.feature-list .fl-icon svg,.feature-list .fl-icon i{ width:12px; height:12px; font-size:12px; display:block; }

/* Simple stat/pricing style cards for Advertise page */
.spec-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin:22px 0; }
@media (max-width:700px){ .spec-grid{ grid-template-columns:1fr; } }
.spec-card{ background:var(--surface-hover-soft); border:1px solid var(--panel-border); border-radius:var(--radius-sm); padding:16px 18px; }
.spec-card .spec-label{ font-family:'JetBrains Mono',monospace; font-size:10.5px; letter-spacing:0.08em; text-transform:uppercase; color:var(--text-low); }
.spec-card .spec-value{ font-family:'Space Grotesk',sans-serif; font-size:20px; font-weight:600; color:var(--text-hi); margin-top:6px; }

@media (max-width:600px){
  .wrap{ padding:26px 14px 60px; }
}

/* Large screens / smart TVs (4K displays, TV browsers, ultra-wide monitors) —
   scale the content column and prose width up modestly so text doesn't look
   lost in a sea of empty space, and bump touch/click targets slightly for
   remote-control-style navigation. */
@media (min-width:1600px){
  .wrap{ max-width:1360px; }
  .prose{ max-width:860px; font-size:16px; }
  .page-hero h1{ font-size:clamp(30px, 2.6vw, 44px); }
  .page-hero p{ max-width:680px; font-size:16px; }
  .cta-btn{ padding:14px 30px; font-size:15px; }
}

/* Very small phones (iPhone SE and similar ~360px-wide devices) */
@media (max-width:360px){
  .page-hero h1{ font-size:clamp(22px, 6vw, 28px); }
  .prose{ padding:24px 16px; }
}

/* Cross-device hardening */
html{overflow-x:hidden;}
img,svg,canvas,video{max-width:100%;}
button,input,select,textarea{max-width:100%;}
@media(max-width:700px){
  .wrap{width:100%;box-sizing:border-box;}
  .graph-card,.history-card{padding:16px 14px;}
  .graph-head,.history-head{align-items:flex-start;}
  .controls{width:100%;}
  .start-btn{width:min(100%,360px);padding:14px 28px;}
  .progress-track{width:min(100%,360px);}
}
@media(max-width:520px){
  .hero{padding-top:8px;}
  .hero p{font-size:14px;margin-bottom:22px;}
  .gauge-shell{width:min(360px,94vw);}
  .dashboard{grid-template-columns:1fr 1fr!important;}
  .card{padding:14px 12px;}
  .card-value{font-size:22px;}
  .connection-details{gap:10px;}
  .history-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .history-actions{flex-wrap:wrap;}
}
@media(max-width:380px){
  .dashboard{grid-template-columns:1fr!important;}
  .quick-stats{gap:16px;width:100%;}
  .gauge-shell{width:92vw;}
}


/* Homepage branding sizing — match the visual scale used across the rest of Spexo. */
.site-header .home-brand-logo{ height:58px!important; width:auto!important; max-width:min(270px,48vw); }
.site-footer .home-footer-logo{ height:58px!important; width:auto!important; max-width:250px; }
@media (max-width:700px){ .site-header .home-brand-logo{ height:46px!important; max-width:58vw; } .site-footer .home-footer-logo{ height:46px!important; max-width:230px; } }
@media (max-width:420px){ .site-header .home-brand-logo{ height:40px!important; max-width:66vw; } .site-footer .home-footer-logo{ height:40px!important; max-width:78vw; } }

/* ======================================================================
   SPEXO CENTRALIZED ACTION BUTTON SYSTEM
   Single project-wide action color based on the Homepage "Find Report"
   button. All primary/action buttons now share the same visual identity.
   ====================================================================== */
:root{
  --spexo-action-start:var(--cyan);
  --spexo-action-end:var(--blue);
  --spexo-action-bg:linear-gradient(135deg,var(--spexo-action-start),var(--spexo-action-end));
  --spexo-action-text:#fff;
  --spexo-action-shadow:0 10px 24px rgba(35,116,220,.22);
  --spexo-action-shadow-hover:0 14px 30px rgba(35,116,220,.32);
}

/* Standard primary/action controls across the complete project */
.start-btn,
.btn-primary,
.report-lookup-form button,
.write-review-btn,
.write-review-submit,
.review-submit,
.review-submit-btn,
.load-more-btn,
.contact-submit,
.newsletter-form button,
.blog-cta,
.faq-cta,
.view-all-faqs,
.choose-efficiently-btn,
.primary-btn,
.action-btn,
.cta-btn,
button.primary,
a.primary,
.button-primary{
  background:var(--spexo-action-bg)!important;
  color:var(--spexo-action-text)!important;
  border-color:transparent!important;
  box-shadow:var(--spexo-action-shadow)!important;
}

.start-btn:hover,
.btn-primary:hover,
.report-lookup-form button:hover,
.write-review-btn:hover,
.write-review-submit:hover,
.review-submit:hover,
.review-submit-btn:hover,
.load-more-btn:hover,
.contact-submit:hover,
.newsletter-form button:hover,
.blog-cta:hover,
.faq-cta:hover,
.view-all-faqs:hover,
.choose-efficiently-btn:hover,
.primary-btn:hover,
.action-btn:hover,
.cta-btn:hover,
button.primary:hover,
a.primary:hover,
.button-primary:hover{
  filter:brightness(.98) saturate(1.04);
  box-shadow:var(--spexo-action-shadow-hover)!important;
}

/* Normalize report/modal action buttons to the same centralized palette */
.report-print-button,
.report-write-review-button{
  border-color:rgba(45,217,232,.28)!important;
}

/* Accessible keyboard focus uses the same brand color everywhere */
button:focus-visible,
[role="button"]:focus-visible,
a.button-primary:focus-visible,
a.primary:focus-visible{
  outline:3px solid rgba(45,217,232,.42)!important;
  outline-offset:3px;
}


/* ======================================================================
   SPEXO GLOBAL ACTION PALETTE
   Source: Privacy Policy CTA buttons. Keep action colors in one place.
   ====================================================================== */
:root{
  --spexo-button-start:#2dd9e8;
  --spexo-button-end:#3f7bff;
  --spexo-button-bg:linear-gradient(135deg,var(--spexo-button-start),var(--spexo-button-end));
  --spexo-button-text:#03151a;
  --spexo-button-shadow:0 10px 24px rgba(35,116,220,.22);
  --spexo-button-shadow-hover:0 14px 30px rgba(35,116,220,.32);
}
.start-btn,.btn-primary,.report-lookup-form button,.write-review-btn,.write-review-submit,.review-submit,.review-submit-btn,.load-more-btn,.contact-submit,.newsletter-form button,.blog-cta,.faq-cta,.view-all-faqs,.choose-efficiently-btn,.primary-btn,.action-btn,.cta-btn.primary,button.primary,a.primary,.button-primary,.values-cta,.header-run-test{
  background:var(--spexo-button-bg)!important; color:var(--spexo-button-text)!important; border-color:transparent!important; box-shadow:var(--spexo-button-shadow)!important;
}
.start-btn:hover,.btn-primary:hover,.report-lookup-form button:hover,.write-review-btn:hover,.write-review-submit:hover,.review-submit:hover,.review-submit-btn:hover,.load-more-btn:hover,.contact-submit:hover,.newsletter-form button:hover,.blog-cta:hover,.faq-cta:hover,.view-all-faqs:hover,.choose-efficiently-btn:hover,.primary-btn:hover,.action-btn:hover,.cta-btn.primary:hover,button.primary:hover,a.primary:hover,.button-primary:hover,.values-cta:hover,.header-run-test:hover{
  filter:brightness(.98) saturate(1.04); box-shadow:var(--spexo-button-shadow-hover)!important;
}
.ad-slot-page-impression{ margin:28px auto; min-height:90px; }

button:focus-visible,[role="button"]:focus-visible,a.button-primary:focus-visible,a.primary:focus-visible{outline:3px solid rgba(45,217,232,.42)!important;outline-offset:3px;}


/* Managed ad campaign surfaces */
.ad-campaign{width:100%;box-sizing:border-box;min-height:90px;}
.spexo-ad-popup{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:18px;}
.spexo-ad-popup-backdrop{position:absolute;inset:0;background:rgba(10,25,45,.52);backdrop-filter:blur(3px);}
.spexo-ad-popup-box{position:relative;z-index:1;width:min(560px,100%);max-height:90vh;overflow:auto;background:var(--panel,#fff);border:1px solid var(--panel-border,#dbe5f0);border-radius:18px;padding:20px;box-shadow:0 24px 70px rgba(0,0,0,.22);}
.spexo-ad-popup-close{position:absolute;right:10px;top:8px;border:0;background:transparent;font-size:25px;line-height:1;cursor:pointer;color:var(--text-mid,#64748b);}
.spexo-ad-popup-content{padding-top:10px;}

/* Pre-launch accessibility hardening */
:where(a,button,input,textarea,select,summary):focus-visible{outline:3px solid #ffffff;outline-offset:3px}
:where(input,textarea,select){color:var(--text-hi);background:var(--panel);border-color:var(--panel-border-hi)}
::selection{background:#bff8ff;color:#03151a}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media (max-width:700px){.wrap{width:min(100% - 24px,1200px)}img{max-width:100%;height:auto}.table-wrap,.admin-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}}
