/* ─────────────────────────────────────────────────────────────────────────────
   agentwave-wave.css — AgentWave "Wave" brand skin (task agzqxz).

   Token maps live in app.css ([data-theme="agentwave"] = brand DARK default,
   [data-theme="agentwave-light"] = opt-in light). This file holds ONLY what
   tokens cannot express: self-hosted fonts, the persistent product mark, the
   large-wave login moment, mono eyebrow labels, square-geometry overrides for
   legacy hardcoded radii, and the light-mode acid-fill rules (split accent).

   Contract: app/public/assets/brand/agentwave-wave/ (tokens.json et al.) —
   versioned copy of ideajetlab-2/docs/agentwave-wave-theme-v1. Do not derive
   logo treatments with CSS filter/invert; use the exported assets.
   ───────────────────────────────────────────────────────────────────────────── */

/* ── Self-hosted fonts (GDPR-clean; downloaded only when a theme uses them) ── */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url('/assets/brand/agentwave-wave/fonts/manrope-latin-ext-variable.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02FF, U+1D00-1DBF, U+1E00-1EFF, U+20A0-20AB, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url('/assets/brand/agentwave-wave/fonts/manrope-latin-variable.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/brand/agentwave-wave/fonts/ibm-plex-mono-latin-ext-400.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02FF, U+1D00-1DBF, U+1E00-1EFF, U+20A0-20AB, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/brand/agentwave-wave/fonts/ibm-plex-mono-latin-400.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/assets/brand/agentwave-wave/fonts/ibm-plex-mono-latin-ext-500.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02FF, U+1D00-1DBF, U+1E00-1EFF, U+20A0-20AB, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/assets/brand/agentwave-wave/fonts/ibm-plex-mono-latin-500.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── Persistent product mark (ALL themes — the wave is the product identity;
      the configured emoji stays the assistant's identity/avatar) ── */
.header h1 { display: flex; align-items: center; gap: 7px; }
.header-brand-mark {
  height: 24px; width: auto; display: inline-block; flex-shrink: 0;
  user-select: none; -webkit-user-drag: none;
}

/* ── AgentWave theme-scoped rules ── */

/* Two type voices: IBM Plex Mono for eyebrow/metadata labels, 11px uppercase */
[data-theme="agentwave"] .ou-section-title,
[data-theme="agentwave-light"] .ou-section-title,
[data-theme="agentwave"] .app-section-label,
[data-theme="agentwave-light"] .app-section-label,
[data-theme="agentwave"] .app-category-label,
[data-theme="agentwave-light"] .app-category-label {
  font-family: var(--font-mono);
  font-size: 11px; font-weight: 500;
  letter-spacing: .08em; text-transform: uppercase;
}

/* Sharp geometry: square the legacy HARDCODED radii the --radius tokens can't
   reach. Pills (tags/status/avatars) intentionally keep --radius-pill. */
[data-theme="agentwave"] .ou-btn-sm,
[data-theme="agentwave-light"] .ou-btn-sm,
[data-theme="agentwave"] .ou-btn-xs,
[data-theme="agentwave-light"] .ou-btn-xs,
[data-theme="agentwave"] #globalBusinessSelect,
[data-theme="agentwave-light"] #globalBusinessSelect,
[data-theme="agentwave"] .input-container,
[data-theme="agentwave-light"] .input-container,
[data-theme="agentwave"] .login-box,
[data-theme="agentwave-light"] .login-box,
[data-theme="agentwave"] .login-box input,
[data-theme="agentwave-light"] .login-box input,
[data-theme="agentwave"] .login-box button,
[data-theme="agentwave-light"] .login-box button,
[data-theme="agentwave"] .menu-btn,
[data-theme="agentwave-light"] .menu-btn,
[data-theme="agentwave"] .thread-mobile-menu,
[data-theme="agentwave-light"] .thread-mobile-menu,
[data-theme="agentwave"] .theme-card,
[data-theme="agentwave-light"] .theme-card,
[data-theme="agentwave"] .theme-card-preview,
[data-theme="agentwave-light"] .theme-card-preview {
  border-radius: 0;
}

/* Split accent model — primary actions are ACID FILLS with dark ink. In dark
   mode --accent == --brand-acid anyway; in light mode this is what keeps acid
   off text duty (olive --accent handles links/focus). */
[data-theme="agentwave"] .ou-btn-primary,
[data-theme="agentwave-light"] .ou-btn-primary,
[data-theme="agentwave"] .tb-btn.primary,
[data-theme="agentwave-light"] .tb-btn.primary,
[data-theme="agentwave"] .login-box button,
[data-theme="agentwave-light"] .login-box button,
[data-theme="agentwave"] .tasks-btn-primary,
[data-theme="agentwave-light"] .tasks-btn-primary {
  background: var(--brand-acid);
  border-color: var(--brand-acid);
  color: var(--brand-acid-ink);
}
[data-theme="agentwave"] .ou-btn-primary:hover,
[data-theme="agentwave-light"] .ou-btn-primary:hover,
[data-theme="agentwave"] .tb-btn.primary:hover,
[data-theme="agentwave-light"] .tb-btn.primary:hover,
[data-theme="agentwave"] .login-box button:hover,
[data-theme="agentwave-light"] .login-box button:hover,
[data-theme="agentwave"] .tasks-btn-primary:hover,
[data-theme="agentwave-light"] .tasks-btn-primary:hover {
  background: var(--brand-acid-hover);
  border-color: var(--brand-acid-hover);
  color: var(--brand-acid-ink);
  filter: none;
}
/* SVG icons inside acid fills inherit the ink */
[data-theme="agentwave"] .tb-btn.primary svg,
[data-theme="agentwave-light"] .tb-btn.primary svg { color: var(--brand-acid-ink); }

/* The large wave gets space: login is a brand moment (only here — never behind
   ordinary tables/forms). Faint radial glow is the single permitted gradient. */
[data-theme="agentwave"] .login-overlay,
[data-theme="agentwave-light"] .login-overlay { position: fixed; }
[data-theme="agentwave"] .login-overlay::before,
[data-theme="agentwave-light"] .login-overlay::before {
  content: '';
  position: absolute; inset: 0;
  background:
    radial-gradient(55% 45% at 50% 60%, var(--accent-tint), transparent 70%),
    url('/assets/brand/agentwave-wave/wave-large-yellow.png') no-repeat center calc(50% + 21vmin) / min(58vmin, 520px);
  pointer-events: none;
}
[data-theme="agentwave-light"] .login-overlay::before { opacity: .55; }
[data-theme="agentwave"] .login-box,
[data-theme="agentwave-light"] .login-box { position: relative; }

/* Voxel app icons (rendered by OscarUI.voxelIcon under this theme only) */
.app-icon svg.ou-voxel { width: 30px; height: 30px; }
.menu-btn svg.ou-voxel { width: 24px; height: 24px; }
