/* ══════════════════════════════════════════════════════════════
   Copyscripto — Public Blade Theme
   Ported from web/app/globals.css (Next.js).
   Works alongside Tailwind (CDN or build). All brand tokens are
   exposed as CSS variables so Tailwind utilities resolve at runtime.
══════════════════════════════════════════════════════════════ */

/* ── Brand font: Tajawal (Arabic) — weight 500, self-hosted ─── */
@font-face {
  font-family: 'Tajawal';
  src: url('/fonts/Tajawal-Medium.ttf') format('truetype');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0600-06FF, U+0750-077F, U+08A0-08FF, U+FB50-FDFF, U+FE70-FEFF;
}

/* ── Poppins via Google Fonts fallback chain ─────────────────── */
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&display=swap');

/* ══════════════════════════════════════════════════════════════
   LIGHT THEME (default)
══════════════════════════════════════════════════════════════ */
:root,
[data-theme="light"] {
  --cs-bg:       #FFFFFF;
  --cs-surface:  #F8F7F7;
  --cs-elevated: #FFFFFF;
  --cs-inset:    #EEEDEC;
  --cs-canvas:   #221F1F;

  --cs-fg:       #221F1F;
  --cs-body:     #3C3939;
  --cs-muted:    #706D6D;
  --cs-subtle:   #9E9B9B;

  --cs-brand:          #0000FF;
  --cs-brand-hover:    #0000D9;
  --cs-brand-bg:       rgba(0, 0, 255, 0.06);
  --cs-brand-border:   rgba(0, 0, 255, 0.14);
  --cs-brand-muted:    #3D3DFF;

  --cs-border:         rgba(34, 31, 31, 0.09);
  --cs-border-strong:  rgba(34, 31, 31, 0.20);

  --cs-green:      #5BAE6C;
  --cs-tangerine:  #F58700;
  --cs-red:        #E33B3B;
  --cs-verdigris:  #54B6B2;

  --cs-shadow-sm:      0 1px 3px rgba(34, 31, 31, 0.07), 0 1px 2px rgba(34, 31, 31, 0.04);
  --cs-shadow-md:      0 4px 16px rgba(34, 31, 31, 0.08), 0 2px 6px rgba(34, 31, 31, 0.04);
  --cs-shadow-lg:      0 10px 40px rgba(34, 31, 31, 0.10), 0 4px 12px rgba(34, 31, 31, 0.05);
  --cs-shadow-xl:      0 20px 72px rgba(34, 31, 31, 0.10), 0 8px 24px rgba(34, 31, 31, 0.06);
  --cs-shadow-brand:   0 4px 24px rgba(0, 0, 255, 0.22);
  --cs-shadow-brand-h: 0 8px 36px rgba(0, 0, 255, 0.32);

  --cs-grid-line:  rgba(34, 31, 31, 0.04);
  --cs-grid-hover: rgba(0, 0, 255, 0.04);
  --cs-grid-click: rgba(0, 0, 255, 0.18);

  --logo-text:   #221F1F;
  --logo-accent: #0000FF;
}

/* ══════════════════════════════════════════════════════════════
   DARK THEME
══════════════════════════════════════════════════════════════ */
[data-theme="dark"] {
  --cs-bg:       #131111;
  --cs-surface:  #1C1A1A;
  --cs-elevated: #262323;
  --cs-inset:    #0E0C0C;
  --cs-canvas:   #221F1F;

  --cs-fg:       #F3F0F0;
  --cs-body:     #ACA8A8;
  --cs-muted:    #7E7B7B;
  --cs-subtle:   #3E3B3B;

  --cs-brand:          #4040FF;
  --cs-brand-hover:    #5A5AFF;
  --cs-brand-bg:       rgba(64, 64, 255, 0.12);
  --cs-brand-border:   rgba(64, 64, 255, 0.25);
  --cs-brand-muted:    #8080FF;

  --cs-border:         rgba(243, 240, 240, 0.09);
  --cs-border-strong:  rgba(243, 240, 240, 0.17);

  --cs-green:      #4DBF78;
  --cs-tangerine:  #FFA033;
  --cs-red:        #FF5252;
  --cs-verdigris:  #65C8C3;

  --cs-shadow-sm:      0 1px 4px rgba(0, 0, 0, 0.45);
  --cs-shadow-md:      0 4px 20px rgba(0, 0, 0, 0.55);
  --cs-shadow-lg:      0 10px 40px rgba(0, 0, 0, 0.65);
  --cs-shadow-xl:      0 20px 72px rgba(0, 0, 0, 0.65), 0 8px 24px rgba(0, 0, 0, 0.45);
  --cs-shadow-brand:   0 4px 24px rgba(64, 64, 255, 0.35), 0 0 0 1px rgba(64, 64, 255, 0.15);
  --cs-shadow-brand-h: 0 8px 36px rgba(64, 64, 255, 0.50), 0 0 0 1px rgba(64, 64, 255, 0.25);

  --cs-grid-line:  rgba(243, 240, 240, 0.05);
  --cs-grid-hover: rgba(64, 64, 255, 0.18);
  --cs-grid-click: rgba(64, 64, 255, 0.32);

  --logo-text:   #F3F0F0;
  --logo-accent: #4040FF;
}

/* ══════════════════════════════════════════════════════════════
   BASE STYLES
══════════════════════════════════════════════════════════════ */
*, *::before, *::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-family: 'Poppins', 'Tajawal', system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
  color: var(--cs-fg);
  background-color: var(--cs-bg);
  line-height: 1.6;
  margin: 0;
  padding: 0;
}

h1, h2, h3, h4, h5, h6 {
  line-height: 1.1;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--cs-fg);
  margin: 0;
}

img { max-width: 100%; height: auto; display: block; }
a { text-decoration: none; color: inherit; }
::selection { background: var(--cs-brand); color: #fff; }
:focus-visible { outline: 2px solid var(--cs-brand); outline-offset: 2px; }

::-webkit-scrollbar        { width: 6px; }
::-webkit-scrollbar-track  { background: var(--cs-surface); }
::-webkit-scrollbar-thumb  { background: var(--cs-muted); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--cs-brand); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ══════════════════════════════════════════════════════════════
   HEADER — scrolled state
══════════════════════════════════════════════════════════════ */
.header-scrolled {
  background-color: var(--cs-elevated);
  box-shadow: 0 1px 0 var(--cs-border), var(--cs-shadow-sm);
}

@media (pointer: fine) {
  .header-scrolled {
    background-color: color-mix(in srgb, var(--cs-elevated) 90%, transparent);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
  }
}

/* ══════════════════════════════════════════════════════════════
   GRID BACKGROUND (hero decorative)
══════════════════════════════════════════════════════════════ */
.cs-grid-bg {
  position: relative;
  background-image:
    linear-gradient(to right,  var(--cs-grid-line) 1px, transparent 1px),
    linear-gradient(to bottom, var(--cs-grid-line) 1px, transparent 1px);
  background-size: 48px 48px;
}

.cs-grid-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse 80% 50% at 50% 0%, var(--cs-brand-bg), transparent 70%);
}

/* ══════════════════════════════════════════════════════════════
   SEMANTIC HELPERS — used by Blade views
══════════════════════════════════════════════════════════════ */
.cs-container      { max-width: 1200px; margin-inline: auto; padding-inline: 1.5rem; }
@media (min-width: 1024px) { .cs-container { padding-inline: 2.5rem; } }

.cs-section        { padding-block: 5rem; }
@media (min-width: 1024px) { .cs-section { padding-block: 7rem; } }

.cs-bg-background  { background-color: var(--cs-bg); }
.cs-bg-surface     { background-color: var(--cs-surface); }
.cs-bg-elevated    { background-color: var(--cs-elevated); }
.cs-bg-canvas      { background-color: var(--cs-canvas); color: #fff; }

.cs-text-fg        { color: var(--cs-fg); }
.cs-text-body      { color: var(--cs-body); }
.cs-text-muted     { color: var(--cs-muted); }
.cs-text-subtle    { color: var(--cs-subtle); }
.cs-text-brand     { color: var(--cs-brand); }

.cs-border         { border: 1px solid var(--cs-border); }
.cs-border-t       { border-top: 1px solid var(--cs-border); }
.cs-border-b       { border-bottom: 1px solid var(--cs-border); }

.cs-shadow-sm { box-shadow: var(--cs-shadow-sm); }
.cs-shadow-md { box-shadow: var(--cs-shadow-md); }
.cs-shadow-lg { box-shadow: var(--cs-shadow-lg); }
.cs-shadow-xl { box-shadow: var(--cs-shadow-xl); }
.cs-shadow-brand { box-shadow: var(--cs-shadow-brand); }

/* ── Buttons ─────────────────────────────────────────────────── */
.cs-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  border-radius: 9999px;
  padding: 0.875rem 1.75rem;
  font-size: 0.875rem;
  font-weight: 600;
  transition: opacity .2s, transform .2s, box-shadow .2s;
}
.cs-btn-primary {
  background: var(--cs-brand);
  color: #fff;
  box-shadow: var(--cs-shadow-brand);
}
.cs-btn-primary:hover { opacity: .92; box-shadow: var(--cs-shadow-brand-h); }
.cs-btn-ghost {
  color: var(--cs-fg);
  background: transparent;
}
.cs-btn-ghost:hover { color: var(--cs-brand); }

.cs-btn-sm { padding: 0.55rem 1.25rem; font-size: 0.8125rem; }

/* ── Badges ─────────────────────────────────────────────────── */
.cs-badge {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .35rem .85rem;
  border-radius: 9999px;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .02em;
  background: var(--cs-brand-bg);
  color: var(--cs-brand);
  border: 1px solid var(--cs-brand-border);
}
.cs-badge .dot {
  width: .45rem; height: .45rem; border-radius: 9999px;
  background: var(--cs-brand);
  position: relative;
}
.cs-badge .dot::after {
  content:''; position: absolute; inset: -4px; border-radius: 9999px;
  background: var(--cs-brand); opacity: .3;
  animation: cs-ping 2s cubic-bezier(0,0,0.2,1) infinite;
}
@keyframes cs-ping {
  75%,100%{ transform:scale(2); opacity:0; }
}
@media (pointer: coarse) {
  .cs-badge .dot::after { display: none; }
}

/* ── Cards ──────────────────────────────────────────────────── */
.cs-card {
  background: var(--cs-elevated);
  border: 1px solid var(--cs-border);
  border-radius: 1.25rem;
  padding: 1.75rem;
  transition: box-shadow .25s, transform .25s, border-color .25s;
}
.cs-card:hover {
  border-color: var(--cs-brand-border);
  box-shadow: var(--cs-shadow-lg);
  transform: translateY(-2px);
}

/* ── Section header ────────────────────────────────────────── */
.cs-section-label {
  display: inline-block;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .15em;
  text-transform: uppercase;
  color: var(--cs-brand);
  margin-bottom: 1rem;
}
.cs-section-title {
  font-size: clamp(1.75rem, 3vw + 1rem, 2.75rem);
  letter-spacing: -0.03em;
  line-height: 1.1;
}
.cs-section-desc {
  margin-top: 1rem;
  font-size: 1.0625rem;
  line-height: 1.7;
  color: var(--cs-body);
  max-width: 620px;
}

/* ── Input ─────────────────────────────────────────────────── */
/* `color-scheme` makes the browser's native UA stylesheet for inputs match
   the app theme (Chrome/Safari otherwise force dark text in dark mode). */
[data-theme="light"] { color-scheme: light; }
[data-theme="dark"]  { color-scheme: dark; }

.cs-input {
  width: 100%;
  padding: .85rem 1.125rem;
  border-radius: .75rem !important;
  border: 1px solid var(--cs-border-strong) !important;
  background-color: var(--cs-inset) !important;
  color: var(--cs-fg) !important;
  font-size: .95rem;
  outline: none;
  transition: border-color .15s, box-shadow .15s;
  -webkit-text-fill-color: var(--cs-fg);
}
.cs-input::placeholder { color: var(--cs-muted); opacity: 1; }
.cs-input:focus {
  border-color: var(--cs-brand);
  box-shadow: 0 0 0 3px var(--cs-brand-bg);
}
/* Defeat Chrome autofill's white text + yellow background. */
.cs-input:-webkit-autofill,
.cs-input:-webkit-autofill:hover,
.cs-input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--cs-fg) !important;
  -webkit-box-shadow: 0 0 0 1000px var(--cs-inset) inset !important;
  caret-color: var(--cs-fg);
  transition: background-color 9999s ease-in-out 0s;
}
/* Native select arrow stays readable on either theme. */
select.cs-input {
  background-image:
    linear-gradient(45deg, transparent 50%, var(--cs-fg) 50%),
    linear-gradient(-45deg, transparent 50%, var(--cs-fg) 50%);
  background-position: calc(100% - 18px) 50%, calc(100% - 12px) 50%;
  background-size: 6px 6px, 6px 6px;
  background-repeat: no-repeat;
  padding-right: 2.25rem;
  appearance: none;
  -webkit-appearance: none;
}

/* Newsletter / form in dark footer (always on dark canvas, regardless of theme).
   `!important` defeats Tailwind CDN's `forms` plugin, which injects
   `[type='email'] { border-radius: 0 }` via JS *after* this file loads
   and would otherwise win by source-order on equal specificity. */
.cs-input-dark {
  background-color: rgba(255,255,255,0.06) !important;
  border: 1px solid rgba(255,255,255,0.12) !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff;
  border-radius: 9999px !important;   /* pill — matches the Subscribe button */
  padding: .65rem 1.25rem !important;
}
.cs-input-dark::placeholder { color: rgba(255,255,255,0.4); opacity: 1; }
.cs-input-dark:focus {
  border-color: rgba(255,255,255,0.5);
  box-shadow: 0 0 0 3px rgba(255,255,255,0.08);
}
.cs-input-dark:-webkit-autofill,
.cs-input-dark:-webkit-autofill:hover,
.cs-input-dark:-webkit-autofill:focus {
  -webkit-text-fill-color: #fff !important;
  -webkit-box-shadow: 0 0 0 1000px rgba(28,26,26,0.95) inset !important;
  caret-color: #fff;
}

/* ── FAQ accordion ─────────────────────────────────────────── */
.cs-faq-item { border-bottom: 1px solid var(--cs-border); }
.cs-faq-item summary {
  list-style: none;
  cursor: pointer;
  padding: 1.25rem 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  font-weight: 600;
  font-size: 1.0625rem;
  color: var(--cs-fg);
}
.cs-faq-item summary::-webkit-details-marker { display: none; }
.cs-faq-item summary::after {
  content: '+';
  font-size: 1.5rem;
  color: var(--cs-brand);
  line-height: 1;
  transition: transform .2s;
}
.cs-faq-item[open] summary::after { transform: rotate(45deg); }
.cs-faq-item p {
  padding-bottom: 1.25rem;
  color: var(--cs-body);
  line-height: 1.7;
  font-size: 1rem;
}

/* ── RTL support ───────────────────────────────────────────── */
html[dir="rtl"] body {
  font-family: 'Tajawal', 'Poppins', system-ui, sans-serif;
}

/* ── Analytics dashboard mock (right side of hero) ─────────── */
.cs-dashboard {
  background: var(--cs-elevated);
  border: 1px solid var(--cs-border);
  border-radius: 1.5rem;
  padding: 1.5rem;
  box-shadow: var(--cs-shadow-lg);
}
.cs-dashboard-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1.25rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--cs-border);
}
.cs-dashboard-metric {
  font-size: 2rem;
  font-weight: 700;
  letter-spacing: -0.02em;
}
.cs-dashboard-chart {
  height: 180px;
  background: linear-gradient(to bottom, var(--cs-brand-bg), transparent);
  border-radius: .75rem;
  position: relative;
  overflow: hidden;
}
.cs-dashboard-chart svg { width: 100%; height: 100%; }

/* ── Mobile drawer ─────────────────────────────────────────── */
.cs-drawer {
  position: fixed;
  inset: 0;
  z-index: 60;
  display: none;
}
.cs-drawer.open { display: block; }
.cs-drawer-backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,0.4);
  backdrop-filter: blur(4px);
}
.cs-drawer-panel {
  position: absolute;
  top: 0; right: 0;
  height: 100vh;
  width: min(360px, 88vw);
  background: var(--cs-elevated);
  padding: 5rem 1.5rem 2rem;
  overflow-y: auto;
  box-shadow: var(--cs-shadow-xl);
}
html[dir="rtl"] .cs-drawer-panel { right: auto; left: 0; }

/* Noscript fallback */
.cs-noscript-banner {
  background: var(--cs-brand);
  color: #fff;
  padding: .5rem;
  text-align: center;
  font-size: .85rem;
}

/* ══════════════════════════════════════════════════════════════
   FLOATING CONTACT WIDGET (FAB)
   Bottom-right hub with WhatsApp + Email actions.
══════════════════════════════════════════════════════════════ */
.cs-fab {
  position: fixed;
  right: 1.25rem; bottom: 1.25rem;
  display: flex; flex-direction: column; align-items: flex-end;
  gap: .65rem;
  z-index: 9990;
}
html[dir="rtl"] .cs-fab { right: auto; left: 1.25rem; }
@media (min-width: 768px) { .cs-fab { right: 2rem; bottom: 2rem; } html[dir="rtl"] .cs-fab { right: auto; left: 2rem; } }

.cs-fab-hub {
  width: 56px; height: 56px;
  border-radius: 9999px;
  border: none; cursor: pointer;
  background: var(--cs-brand);
  color: #fff;
  box-shadow: var(--cs-shadow-brand);
  display: flex; align-items: center; justify-content: center;
  transition: transform .2s, box-shadow .2s, background .2s;
  position: relative;
}
.cs-fab-hub:hover { transform: scale(1.05); box-shadow: var(--cs-shadow-brand-h); }
.cs-fab-hub:focus-visible { outline: 3px solid var(--cs-brand-bg); outline-offset: 4px; }
.cs-fab-icon-close { display: none; }
.cs-fab.is-open .cs-fab-icon-open  { display: none; }
.cs-fab.is-open .cs-fab-icon-close { display: block; }
.cs-fab.is-open .cs-fab-hub        { background: var(--cs-fg); }

.cs-fab-action {
  width: 48px; height: 48px;
  border-radius: 9999px;
  display: flex; align-items: center; justify-content: center;
  text-decoration: none;
  box-shadow: var(--cs-shadow-md);
  transform: scale(0); opacity: 0;
  transition: transform .25s cubic-bezier(.34,1.56,.64,1), opacity .15s, box-shadow .2s;
  pointer-events: none;
  position: relative;
}
.cs-fab.is-open .cs-fab-action {
  transform: scale(1); opacity: 1;
  pointer-events: auto;
}
.cs-fab-action:hover { box-shadow: var(--cs-shadow-lg); transform: scale(1.06); }
.cs-fab-whatsapp { background: #25D366; color: #fff; }
.cs-fab-email    { background: var(--cs-brand); color: #fff; }

.cs-fab-tooltip {
  position: absolute; right: calc(100% + .75rem); top: 50%;
  transform: translateY(-50%);
  background: var(--cs-fg); color: var(--cs-bg);
  padding: .35rem .7rem; border-radius: .5rem;
  font-size: .75rem; font-weight: 600;
  white-space: nowrap;
  opacity: 0; pointer-events: none;
  transition: opacity .15s;
}
.cs-fab-action:hover .cs-fab-tooltip { opacity: 1; }
html[dir="rtl"] .cs-fab-tooltip { right: auto; left: calc(100% + .75rem); }

/* A subtle pulse ring on the hub button when first painted */
.cs-fab-hub::before {
  content: ""; position: absolute; inset: -4px;
  border-radius: 9999px;
  background: var(--cs-brand);
  opacity: 0;
  animation: cs-fab-pulse 2.5s cubic-bezier(0,0,.2,1) infinite;
  z-index: -1;
}
@keyframes cs-fab-pulse {
  0%   { transform: scale(.95); opacity: .35; }
  100% { transform: scale(1.4);  opacity: 0; }
}
.cs-fab.is-open .cs-fab-hub::before { display: none; }

/* ══════════════════════════════════════════════════════════════
   SMART POPUP
   Modal with a help-form, fired on long-stay / exit-intent / idle.
══════════════════════════════════════════════════════════════ */
.cs-popup {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: flex-end; justify-content: center;
  pointer-events: none;
}
@media (min-width: 768px) { .cs-popup { align-items: center; } }
.cs-popup[hidden] { display: none; }
.cs-popup-backdrop {
  position: absolute; inset: 0;
  background: rgba(34, 31, 31, 0.55);
  backdrop-filter: blur(2px);
  opacity: 0;
  transition: opacity .2s;
  pointer-events: auto;
}
.cs-popup.is-open .cs-popup-backdrop { opacity: 1; }
.cs-popup-card {
  position: relative;
  width: min(480px, 100%);
  background: var(--cs-elevated);
  border: 1px solid var(--cs-border);
  border-radius: 1.25rem 1.25rem 0 0;
  padding: 1.75rem;
  box-shadow: var(--cs-shadow-xl);
  transform: translateY(20px);
  opacity: 0;
  transition: transform .25s cubic-bezier(.34,1.56,.64,1), opacity .2s;
  pointer-events: auto;
  margin-bottom: 0;
}
@media (min-width: 768px) {
  .cs-popup-card { border-radius: 1.25rem; padding: 2.25rem; }
}
.cs-popup.is-open .cs-popup-card { transform: translateY(0); opacity: 1; }
.cs-popup-close {
  position: absolute; top: .9rem; right: .9rem;
  width: 32px; height: 32px;
  background: transparent; border: none; cursor: pointer;
  border-radius: 8px; color: var(--cs-muted);
  display: flex; align-items: center; justify-content: center;
}
.cs-popup-close:hover { background: var(--cs-surface); color: var(--cs-fg); }
.cs-popup-icon {
  width: 44px; height: 44px;
  border-radius: 12px;
  background: var(--cs-brand-bg); color: var(--cs-brand);
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 1rem;
}
.cs-popup-title {
  font-size: 1.25rem; font-weight: 700; line-height: 1.3;
  color: var(--cs-fg); margin: 0 0 .5rem;
  letter-spacing: -.02em;
}
.cs-popup-body { color: var(--cs-body); font-size: .9rem; line-height: 1.6; margin: 0 0 1.25rem; }
.cs-popup-form { display: flex; flex-direction: column; gap: .65rem; }
.cs-popup-grid { display: grid; grid-template-columns: 1fr; gap: .65rem; }
@media (min-width: 480px) { .cs-popup-grid { grid-template-columns: 1fr 1fr; } }
.cs-popup-textarea { resize: vertical; min-height: 80px; }
.cs-popup-actions {
  display: flex; align-items: center; justify-content: flex-end; gap: .65rem;
  margin-top: .5rem; flex-wrap: wrap;
}
.cs-popup-dismiss {
  background: transparent; border: none; cursor: pointer;
  color: var(--cs-muted); font-size: .85rem; font-weight: 500;
  padding: .55rem .85rem;
}
.cs-popup-dismiss:hover { color: var(--cs-fg); text-decoration: underline; }
.cs-popup-note { font-size: .7rem; color: var(--cs-subtle); margin: 1rem 0 0; text-align: center; }

/* ══════════════════════════════════════════════════════════════
   COOKIE CONSENT BANNER
══════════════════════════════════════════════════════════════ */
.cs-cookie-banner {
  position: fixed;
  left: 1rem; right: 1rem;
  bottom: 1rem;
  z-index: 9985;
  display: flex; justify-content: center;
  pointer-events: none;
}
.cs-cookie-banner[hidden] { display: none; }
.cs-cookie-card {
  background: var(--cs-elevated);
  border: 1px solid var(--cs-border);
  border-radius: 1rem;
  box-shadow: var(--cs-shadow-xl);
  padding: 1rem 1.25rem;
  display: flex; align-items: center; gap: 1rem;
  width: 100%;
  max-width: 880px;
  pointer-events: auto;
  transform: translateY(20px);
  opacity: 0;
  transition: transform .25s cubic-bezier(.34,1.56,.64,1), opacity .2s;
  flex-wrap: wrap;
}
.cs-cookie-banner.is-visible .cs-cookie-card { transform: translateY(0); opacity: 1; }
.cs-cookie-icon {
  flex-shrink: 0;
  width: 38px; height: 38px;
  border-radius: 10px;
  background: var(--cs-brand-bg); color: var(--cs-brand);
  display: flex; align-items: center; justify-content: center;
}
.cs-cookie-text { flex: 1 1 240px; min-width: 0; }
.cs-cookie-title { font-weight: 700; font-size: .95rem; color: var(--cs-fg); margin: 0 0 .25rem; }
.cs-cookie-body  { font-size: .8rem; color: var(--cs-body); line-height: 1.5; margin: 0; }
.cs-cookie-link  { color: var(--cs-brand); text-decoration: underline; }
.cs-cookie-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.cs-cookie-btn {
  border: 1px solid var(--cs-border-strong);
  background: var(--cs-bg);
  color: var(--cs-fg);
  font-size: .8rem; font-weight: 600;
  padding: .55rem 1rem;
  border-radius: 9999px;
  cursor: pointer;
}
.cs-cookie-btn:hover { background: var(--cs-surface); }
.cs-cookie-btn-primary {
  background: var(--cs-brand); color: #fff; border-color: transparent;
  box-shadow: var(--cs-shadow-brand);
}
.cs-cookie-btn-primary:hover { background: var(--cs-brand-hover); }

/* Cookie banner — expandable details */
.cs-cookie-details { margin-top: .5rem; }
.cs-cookie-details summary {
  cursor: pointer; list-style: none;
  font-size: .8rem; font-weight: 600; color: var(--cs-brand);
  padding: .25rem 0;
}
.cs-cookie-details summary::-webkit-details-marker { display: none; }
.cs-cookie-details summary::before { content: "▸ "; transition: transform .2s; display: inline-block; }
.cs-cookie-details[open] summary::before { content: "▾ "; }
.cs-cookie-details-grid {
  display: grid; grid-template-columns: 1fr; gap: 1rem;
  margin-top: .65rem; padding: .9rem; background: var(--cs-surface);
  border-radius: .65rem; border: 1px solid var(--cs-border);
}
@media (min-width: 600px) { .cs-cookie-details-grid { grid-template-columns: 1fr 1fr; } }
.cs-cookie-cat {
  font-weight: 700; font-size: .8rem; color: var(--cs-fg);
  margin: 0 0 .35rem; display: flex; align-items: center; gap: .5rem;
}
.cs-cookie-pill {
  font-size: .65rem; font-weight: 700; padding: .15rem .5rem;
  border-radius: 9999px; text-transform: uppercase; letter-spacing: .05em;
}
.cs-cookie-pill-on  { background: rgba(91,174,108,0.18); color: #3e8a4f; }
.cs-cookie-pill-off { background: rgba(34,31,31,0.10);  color: var(--cs-muted); }
.cs-cookie-list {
  font-size: .72rem; color: var(--cs-body); line-height: 1.55;
  margin: 0; padding-left: 1rem;
}
.cs-cookie-list li { margin-bottom: .35rem; }
.cs-cookie-tip { font-size: .7rem; color: var(--cs-muted); margin: .65rem 0 0; line-height: 1.5; }

/* ── Search modal (Algolia-style centered command palette) ────────────────── */
.cs-search-modal {
  position: fixed;
  inset: 0;
  z-index: 70;
  display: none;
  padding: clamp(1rem, 8vh, 6rem) 1rem 1rem;
  overflow-y: auto;
}
.cs-search-modal.open { display: block; animation: cs-search-fade-in .14s ease-out; }
@keyframes cs-search-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.cs-search-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(15, 18, 23, 0.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.cs-search-modal-panel {
  position: relative;
  margin: 0 auto;
  max-width: 640px;
  width: 100%;
  background: var(--cs-elevated);
  border: 1px solid var(--cs-border);
  border-radius: 1rem;
  box-shadow: 0 20px 50px -10px rgba(0, 0, 0, 0.35), 0 8px 20px -8px rgba(0, 0, 0, 0.25);
  overflow: hidden;
  animation: cs-search-rise .18s cubic-bezier(.2,.8,.3,1);
}
@keyframes cs-search-rise {
  from { transform: translateY(-8px) scale(.98); opacity: 0; }
  to   { transform: translateY(0)    scale(1);   opacity: 1; }
}
.cs-search-form { display: flex; flex-direction: column; }
.cs-search-input-row {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: 1rem 1.25rem;
  border-bottom: 1px solid var(--cs-border);
}
.cs-search-icon {
  width: 1.125rem; height: 1.125rem;
  color: var(--cs-muted);
  flex-shrink: 0;
}
/* The !important overrides are necessary because @tailwindcss/forms (loaded via
   the Tailwind CDN script) applies its own [type='search'] rules with equal
   specificity that can win on cascade order — they paint white bg, blue border,
   and a blue focus ring. */
.cs-search-input {
  flex: 1;
  min-width: 0;
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  appearance: none;
  -webkit-appearance: none;
  font-size: 1.05rem;
  color: var(--cs-fg) !important;
  padding: .25rem 0 !important;
  -webkit-text-fill-color: var(--cs-fg);
}
.cs-search-input::placeholder { color: var(--cs-muted); opacity: 1; }
.cs-search-input:focus,
.cs-search-input:focus-visible,
.cs-search-input:focus-within {
  outline: 0 !important;
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  background-color: transparent !important;
  border-color: transparent !important;
  --tw-ring-shadow: 0 0 #0000 !important;
  --tw-ring-offset-shadow: 0 0 #0000 !important;
  --tw-ring-color: transparent !important;
}
.cs-search-input::-webkit-search-decoration,
.cs-search-input::-webkit-search-cancel-button,
.cs-search-input::-webkit-search-results-button,
.cs-search-input::-webkit-search-results-decoration {
  -webkit-appearance: none;
  appearance: none;
}
/* Defeat Chrome autofill repaint — without this the input goes solid white
   on dark theme when the browser has remembered the search term. */
.cs-search-input:-webkit-autofill,
.cs-search-input:-webkit-autofill:hover,
.cs-search-input:-webkit-autofill:focus,
.cs-search-input:-webkit-autofill:active {
  -webkit-text-fill-color: var(--cs-fg) !important;
  -webkit-box-shadow: 0 0 0 1000px var(--cs-elevated) inset !important;
  caret-color: var(--cs-fg);
  transition: background-color 9999s ease-in-out 0s;
}
.cs-search-clear {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 9999px;
  border: 0;
  background: var(--cs-surface);
  color: var(--cs-muted);
  cursor: pointer;
  transition: color .12s, background .12s;
}
.cs-search-clear:hover { color: var(--cs-fg); background: var(--cs-inset); }
.cs-search-esc {
  display: inline-flex;
  align-items: center;
  padding: .15rem .45rem;
  font-size: .65rem;
  font-weight: 600;
  font-family: inherit;
  color: var(--cs-muted);
  background: var(--cs-surface);
  border: 1px solid var(--cs-border);
  border-radius: .35rem;
  letter-spacing: .02em;
}

.cs-search-quicklinks {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem;
  padding: .9rem 1.25rem;
  background: var(--cs-surface);
}
.cs-search-quicklinks-label {
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .15em;
  text-transform: uppercase;
  color: var(--cs-muted);
  margin-right: .25rem;
}
.cs-search-chip {
  display: inline-flex;
  align-items: center;
  gap: .375rem;
  padding: .375rem .75rem;
  border-radius: 9999px;
  font-size: .8rem;
  font-weight: 500;
  color: var(--cs-body);
  background: var(--cs-elevated);
  border: 1px solid var(--cs-border);
  transition: color .12s, background .12s, border-color .12s;
  text-decoration: none;
}
.cs-search-chip:hover {
  color: var(--cs-brand);
  background: var(--cs-brand-bg, rgba(0, 0, 255, .08));
  border-color: var(--cs-brand);
}

.cs-search-hint {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 1rem;
  padding: .65rem 1.25rem;
  font-size: .7rem;
  color: var(--cs-muted);
  border-top: 1px solid var(--cs-border);
}
.cs-search-hint kbd {
  display: inline-block;
  margin-right: .25rem;
  padding: .05rem .35rem;
  font-family: inherit;
  font-size: .65rem;
  font-weight: 600;
  color: var(--cs-body);
  background: var(--cs-surface);
  border: 1px solid var(--cs-border);
  border-radius: .25rem;
}

/* Lock body scroll while the modal is open (set by theme.js) */
body.cs-search-open { overflow: hidden; }

/* ── /search page hero input ─────────────────────────────────────────────── */
.cs-search-page-input {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .35rem .35rem .35rem 1.1rem;
  background: var(--cs-elevated);
  border: 0;
  border-radius: 9999px;
  box-shadow: 0 4px 14px -6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
  transition: box-shadow .15s, transform .15s;
}
.cs-search-page-input:focus-within {
  box-shadow: 0 0 0 3px var(--cs-brand-bg, rgba(0,0,255,.15)), 0 6px 20px -8px rgba(0,0,0,.2);
}
.cs-search-page-input > svg {
  width: 1.15rem;
  height: 1.15rem;
  color: var(--cs-muted);
  flex-shrink: 0;
}
.cs-search-page-input input[type="search"] {
  flex: 1;
  min-width: 0;
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  appearance: none;
  -webkit-appearance: none;
  font: inherit;
  font-size: 1rem;
  line-height: 1.4;
  padding: .65rem 0 !important;
  color: var(--cs-fg) !important;
  -webkit-text-fill-color: var(--cs-fg);
}
.cs-search-page-input input[type="search"]:focus,
.cs-search-page-input input[type="search"]:focus-visible {
  outline: 0 !important;
  border: 0 !important;
  box-shadow: none !important;
  border-color: transparent !important;
  background: transparent !important;
  background-color: transparent !important;
  --tw-ring-shadow: 0 0 #0000 !important;
  --tw-ring-offset-shadow: 0 0 #0000 !important;
  --tw-ring-color: transparent !important;
}
.cs-search-page-input input[type="search"]::placeholder { color: var(--cs-muted); opacity: 1; }
.cs-search-page-input input[type="search"]::-webkit-search-decoration,
.cs-search-page-input input[type="search"]::-webkit-search-cancel-button,
.cs-search-page-input input[type="search"]::-webkit-search-results-button,
.cs-search-page-input input[type="search"]::-webkit-search-results-decoration {
  -webkit-appearance: none;
  appearance: none;
}
/* Defeat Chrome autofill repaint — without this the input goes solid white
   on dark theme when the browser has remembered the search term. */
.cs-search-page-input input[type="search"]:-webkit-autofill,
.cs-search-page-input input[type="search"]:-webkit-autofill:hover,
.cs-search-page-input input[type="search"]:-webkit-autofill:focus,
.cs-search-page-input input[type="search"]:-webkit-autofill:active {
  -webkit-text-fill-color: var(--cs-fg) !important;
  -webkit-box-shadow: 0 0 0 1000px var(--cs-elevated) inset !important;
  caret-color: var(--cs-fg);
  transition: background-color 9999s ease-in-out 0s;
}
.cs-search-page-input button[type="submit"] {
  flex-shrink: 0;
  padding: .55rem 1.25rem;
  border: 0;
  border-radius: 9999px;
  background: var(--cs-brand);
  color: #fff;
  font-size: .875rem;
  font-weight: 600;
  cursor: pointer;
  transition: opacity .15s;
}
.cs-search-page-input button[type="submit"]:hover { opacity: .9; }

@media (max-width: 520px) {
  .cs-search-modal { padding-top: 4vh; }
  .cs-search-modal-panel { border-radius: .85rem; }
  .cs-search-input { font-size: 1rem; }
  .cs-search-quicklinks-label { display: none; }
}
