/* RJM palette values reused from frontend/src/styles/themes/rjm.css. */

@font-face { font-family: 'Montserrat'; src: url('/fonts/montserrat/Montserrat-Regular.woff2') format('woff2'); font-weight: 400; font-display: swap; }

@font-face { font-family: 'Montserrat'; src: url('/fonts/montserrat/Montserrat-Medium.woff2') format('woff2'); font-weight: 500; font-display: swap; }

@font-face { font-family: 'Montserrat'; src: url('/fonts/montserrat/Montserrat-SemiBold.woff2') format('woff2'); font-weight: 600; font-display: swap; }

@font-face { font-family: 'Montserrat'; src: url('/fonts/montserrat/Montserrat-Bold.woff2') format('woff2'); font-weight: 700; font-display: swap; }

[data-theme^="rjm-"] {
  --rjm-cyan: #3bb8db;
  --rjm-coral: #ff7a59;
  --rjm-purple: #8b5cf6;
  --rjm-emerald: #10b981;
  --font-sans: 'Montserrat', system-ui, sans-serif;
  --text-on-dark: #ffffff;
  --text-inverse: #ffffff;
}

[data-theme^="rjm-"][data-theme$="-light"] {
  color-scheme: light;
  --surface-bg: #ffffff;
  --surface-primary: #f4f9fb;
  --surface-secondary: #eaf3f7;
  --surface-elevated: #ffffff;
  --surface-border: #e2e8f0;
  --surface-border-strong: #738892;
  --surface-hover: #eaf3f7;
  --text-primary: #1a262b;
  --text-secondary: #526873;
  --text-muted: #526873;
  --accent-text: #ffffff;
  --success: #0b7755;
  --success-bg: #e8f8f1;
  --success-text: #0b7755;
  --success-border: #0b7755;
  --warning: #8b5906;
  --warning-bg: #fff5dc;
  --warning-text: #8b5906;
  --warning-border: #8b5906;
  --danger: #b12d2d;
  --danger-bg: #ffebeb;
  --danger-text: #b12d2d;
  --danger-border: #b12d2d;
  --info: #247086;
  --info-bg: #d8f1f8;
  --info-text: #247086;
  --info-border: #247086;
  --success-on-solid: #ffffff;
  --danger-on-solid: #ffffff;
  --warning-on-solid: #ffffff;
  --info-on-solid: #ffffff;
  --overlay-bg: rgba(13, 20, 24, 0.45);
}

[data-theme^="rjm-"][data-theme$="-dark"] {
  color-scheme: dark;
  --surface-bg: #0d1418;
  --surface-primary: #17232a;
  --surface-secondary: #1f2e36;
  --surface-elevated: #1f2e36;
  --surface-border: #2c3e48;
  --surface-border-strong: #718793;
  --surface-hover: #263943;
  --text-primary: #f8fafc;
  --text-secondary: #a6b5c6;
  --text-muted: #a6b5c6;
  --accent-text: #0d1418;
  --text-inverse: #0d1418;
  --success: #10b981;
  --success-bg: #15332a;
  --success-text: #10b981;
  --success-border: #10b981;
  --warning: #f59e0b;
  --warning-bg: #382b18;
  --warning-text: #f59e0b;
  --warning-border: #f59e0b;
  --danger: #f87171;
  --danger-bg: #382124;
  --danger-text: #f87171;
  --danger-border: #f87171;
  --info: #3bb8db;
  --info-bg: #163340;
  --info-text: #3bb8db;
  --info-border: #3bb8db;
  --success-on-solid: #0d1418;
  --danger-on-solid: #0d1418;
  --warning-on-solid: #0d1418;
  --info-on-solid: #0d1418;
  --overlay-bg: rgba(0, 0, 0, 0.65);
}

[data-theme="rjm-cyan-light"] {
  --accent: #247086;
  --accent-hover: #1b596c;
  --accent-bg: #d8f1f8;
}

[data-theme="rjm-cyan-dark"] {
  --accent: #3bb8db;
  --accent-hover: #62c6e2;
  --accent-bg: #163340;
}

[data-theme="rjm-coral-light"] {
  --accent: #9e513f;
  --accent-hover: #843f30;
  --accent-bg: #ffebe5;
}

[data-theme="rjm-coral-dark"] {
  --accent: #ff7a59;
  --accent-hover: #ff957b;
  --accent-bg: #3b2925;
}

[data-theme="rjm-purple-light"] {
  --accent: #7851d4;
  --accent-hover: #6743bc;
  --accent-bg: #f0eaff;
}

[data-theme="rjm-purple-dark"] {
  --accent: #b495f9;
  --accent-hover: #c0aaf9;
  --accent-bg: #302541;
}

[data-theme="rjm-emerald-light"] {
  --accent: #0b7755;
  --accent-hover: #085d42;
  --accent-bg: #e8f8f1;
}

[data-theme="rjm-emerald-dark"] {
  --accent: #10b981;
  --accent-hover: #40c79a;
  --accent-bg: #15332a;
}

/* Bridge existing portal primitives to the shared RJM color meanings. */
[data-theme^="rjm-"] {
  --bg: var(--surface-bg); --surface: var(--surface-primary);
  --surface-2: var(--surface-secondary); --surface-3: var(--surface-hover);
  --border: var(--surface-border); --border-strong: var(--surface-border-strong);
  --text: var(--text-primary); --text-2: var(--text-secondary); --text-3: var(--text-muted);
  --accent-2: var(--purple); --accent-glow: var(--accent-bg);
  --solid-text: var(--accent-text); --logo-text: #0d1418;
  --radius: 8px; --radius-lg: 12px; --radius-xl: 16px;
  --shadow-sm: 0 1px 3px rgba(13, 20, 24, 0.08);
  --shadow-md: 0 4px 16px rgba(13, 20, 24, 0.1);
  --shadow-lg: 0 12px 32px rgba(13, 20, 24, 0.16);
  --shadow-inset: none; --t: 150ms ease;
}
[data-theme$="-light"] { --purple: #7851d4; --purple-bg: #f0eaff; }
[data-theme$="-dark"] { --purple: #b495f9; --purple-bg: #302541; }
body { font-family: var(--font-sans); background: var(--bg); color: var(--text); }
button, input, select, textarea { font-family: inherit; }
a { color: var(--accent); text-underline-offset: 3px; }
::selection { background: var(--accent); color: var(--solid-text); }
.topbar { background: var(--surface); height: auto; min-height: 64px; padding-block: 10px; flex-wrap: wrap; }
.topbar-actions { flex-wrap: wrap; }
#topbar-nombre { overflow-wrap: anywhere; }
.logo, .canal-login-logo { background: var(--rjm-cyan); color: var(--logo-text); font-weight: 700; }
.canal-login-logo { width: 64px; height: 52px; display: inline-flex; align-items: center; justify-content: center; border-radius: 12px; font-size: 20px; }
.sidebar { background: var(--surface); }
.nav-item:hover, .btn-ghost:hover, .btn-row:hover, .action-menu-item:hover { background: var(--surface-hover); border-color: var(--border-strong); }
.nav-item.active { background: var(--accent-bg); color: var(--accent); }
.nav-item { width: 100%; border: 0; text-align: left; font-family: inherit; background: transparent; }
.btn-primary, .plan-ribbon { background: var(--accent); color: var(--solid-text); }
.btn-primary:hover { background: var(--accent-hover); }
.btn-green, .btn-red, .btn-orange, .btn-purple { color: var(--solid-text); }
.btn-green:hover { background: var(--success); }
.btn-red:hover { background: var(--danger); }
.btn-orange:hover { background: var(--warning); }
.btn-purple:hover { background: var(--purple); }
.btn-firmar-cli, .btn-firmar-cli:hover { background: var(--info) !important; }
.btn-firmar-dist, .btn-firmar-dist:hover { background: var(--purple) !important; }
.action-menu-item.danger { color: var(--danger); }
.action-menu-item.danger:hover { background: var(--danger-bg); color: var(--danger); }
.input, .input:hover, .input:focus { background: var(--surface-elevated); border-color: var(--border-strong); }
select.input, select.input:hover, select.input:focus { appearance: auto; -webkit-appearance: auto; background-image: none; padding-right: 12px; }
.input:focus { border-color: var(--accent); box-shadow: none; }
.input::placeholder { color: var(--text-muted); }
:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 3px; }
input:focus-visible, select:focus-visible, textarea:focus-visible { outline-color: var(--accent); }
.login-wrap { background: var(--bg); }
.login-box, .modal, .plan-card, .plan-card-popular { background: var(--surface); }
.modal-overlay { background: var(--overlay-bg); }
.token-box, .ticket-chat, .update-log, .msg, .plan-mini-card, .cfg-section-advanced { background: var(--surface-secondary); }
.cfg-section-desc code { background: var(--surface-secondary); }
.data-table th { background: var(--surface-secondary); }
tr:hover td { background: var(--surface-hover); }
.plan-card-popular, .plan-card-popular:hover { border-color: var(--accent); box-shadow: var(--shadow-md); }
.plan-card::before { background: var(--border); }
.plan-price-amount { background: none; color: var(--text); -webkit-text-fill-color: currentColor; font-weight: 700; }
.plan-mini-card.plan-mini-selected, .plan-mini-card:hover { background: var(--accent-bg); border-color: var(--accent); }
.plan-card-inactive, .plan-card-inactive:hover { opacity: 1; filter: none; border-style: dashed; }
.plan-mini-card input { accent-color: var(--accent); }
.badge-ok, .badge-resuelto, .badge-en_curso, .badge-firma-firmado, .badge-canal-via, .badge-email-ok, .update-status-ok {
  color: var(--success-text); background: var(--success-bg); border-color: var(--success-border);
}
.badge-pronto, .badge-escalado, .badge-firma-enviado, .update-status-running, .update-status-warn {
  color: var(--warning-text); background: var(--warning-bg); border-color: var(--warning-border);
}
.badge-expirada, .badge-firma-rechazado, .badge-email-err, .update-status-error, .btn-firma-cancelar, .btn-firma-cancelar:hover {
  color: var(--danger-text); background: var(--danger-bg); border-color: var(--danger-border);
}
.badge-abierto, .badge-canal-directo, .rol-badge, .btn-firma-reenviar, .btn-firma-reenviar:hover {
  color: var(--info-text); background: var(--info-bg); border-color: var(--info-border);
}
.badge-revocada, .rol-badge.admin { color: var(--purple); background: var(--purple-bg); border-color: var(--purple); }
.badge-email-pen, .plan-inactive-tag { color: var(--text-secondary); background: var(--surface-secondary); }
.canal-theme-control { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 500; text-transform: none; letter-spacing: normal; }
.canal-theme-control .input { width: auto; max-width: 100%; min-height: 40px; }
#theme-login-host { margin-top: 24px; }
#theme-login-host .canal-theme-control { align-items: stretch; flex-direction: column; }
#theme-topbar-host { margin-left: auto; }
.canal-manual .header { background: var(--surface-primary); color: var(--text-primary); border-bottom: 1px solid var(--border); }
.canal-manual .header::after { display: none; }
.canal-manual #theme-login-host { width: 100%; max-width: 320px; }
.canal-manual .header .version { background: var(--surface-secondary); }
.canal-manual .header h1, .canal-manual .content h1 { font-weight: 700; }
.canal-manual .content { background: var(--surface-primary); border-color: var(--border); }
.canal-manual .content :is(h1, h2, h3, h4) { color: var(--text-primary); border-color: var(--border); }
.canal-manual .content strong { color: var(--text-primary); }
.canal-manual .content :is(p, ul, ol) { color: var(--text-secondary); }
.canal-manual .content a { color: var(--accent); }
.canal-manual .content code { background: var(--surface-secondary); color: var(--warning); }
.canal-manual .content pre { background: var(--surface-secondary); color: var(--text-primary); }
.canal-manual .content pre code { color: inherit; background: transparent; }
.canal-manual .content blockquote, .canal-manual .content blockquote p { background: var(--info-bg); color: var(--info-text); border-color: var(--info); }
.canal-manual .content th { background: var(--surface-secondary); border-color: var(--border); }
.canal-manual .content td { border-color: var(--border); }
.canal-manual .content tr:hover td { background: var(--surface-hover); }
@media (max-width: 768px) {
  .topbar { padding-inline: 14px; gap: 10px; }
  #theme-topbar-host { width: 100%; margin-left: 0; }
  .canal-theme-control { flex-wrap: wrap; }
  .topbar-actions { margin-left: 0 !important; }
  .sidebar { width: 64px; padding: 12px 8px; }
  .nav-item span.nav-icon { display: inline-flex; }
  .nav-item .nav-label { display: none; }
  .sidebar-label { display: none; }
  .main { min-width: 0; padding: 14px; }
  .modal { padding: 20px; }
  .cfg-section-advanced { margin: 0 -20px -20px; padding-inline: 20px; }
  .login-wrap { padding: 16px; }
  .login-box { padding: 28px 24px; }
  .canal-manual .header { padding: 28px 24px; }
  .canal-manual .content { padding: 24px 20px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media (forced-colors: active) {
  body, .topbar, .sidebar, .login-box, .card, .modal, .plan-card { background: Canvas; color: CanvasText; }
  .input, button, .btn { border: 1px solid ButtonText; }
  .badge, .badge-email, .badge-firma, .badge-canal, .rol-badge, .update-status { border: 1px solid CanvasText; }
  td { border-bottom: 1px solid CanvasText; }
  :focus-visible { outline: 2px solid Highlight !important; }
  .nav-item.active { outline: 1px solid Highlight; }
  .plan-price-amount { -webkit-text-fill-color: CanvasText; }
}
@media print {
  .canal-manual, .canal-manual .header, .canal-manual .content,
  .canal-manual .content :is(h1, h2, h3, h4, p, ul, ol, strong, code, pre, blockquote, a, th, td) {
    color: #000000 !important; background: #ffffff !important; -webkit-text-fill-color: currentColor;
  }
  .canal-manual #theme-login-host { display: none; }
  .canal-manual .content { border: 1px solid #000000; break-inside: avoid; }
}
