/*
 * MiCerebro — auditoría final Pro
 * Última capa de contraste, tactilidad, estabilidad visual y NeuroMap wireframe.
 */

:root {
  --nv-readable: #f4f8ff;
  --nv-readable-soft: #d9e5f6;
  --nv-readable-muted: #9cacc7;
  --nv-chat-assistant: rgba(7, 17, 36, .97);
  --nv-chat-user-a: #087fd9;
  --nv-chat-user-b: #3d52e8;
  --nv-chat-user-c: #7148d7;
  --nv-focus: #42d9ff;
  --nv-safe-vh: 100dvh;
}

/* ---------- legibilidad global ---------- */
body.nv5 {
  color: var(--nv-readable);
  background-color: #02050c;
}
body.nv5 .muted { color: var(--nv-readable-muted); }
body.nv5 label { color: #b4c2d8; }
body.nv5 small { color: #91a1bd; }
body.nv5 strong,
body.nv5 b { text-rendering: optimizeLegibility; }
body.nv5 code,
body.nv5 .code {
  color: #bfeaff;
  border-color: rgba(72, 175, 255, .22);
  background: rgba(4, 14, 31, .78);
}
body.nv5 hr { border-color: rgba(113, 150, 217, .15); }
body.nv5 input::placeholder,
body.nv5 textarea::placeholder { color: #72829e; opacity: 1; }
body.nv5 select option { color: #edf5ff; background: #071022; }
body.nv5 input:-webkit-autofill,
body.nv5 textarea:-webkit-autofill,
body.nv5 select:-webkit-autofill {
  -webkit-text-fill-color: #eef6ff;
  caret-color: #eef6ff;
  box-shadow: 0 0 0 1000px #071224 inset !important;
  transition: background-color 99999s ease-out;
}
body.nv5 button:focus-visible,
body.nv5 a:focus-visible,
body.nv5 input:focus-visible,
body.nv5 textarea:focus-visible,
body.nv5 select:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--nv-focus) 72%, transparent);
  outline-offset: 3px;
}

/* ---------- chat: contraste cerrado y verificable ---------- */
body.nv5 .chat-wrap,
body.nv5 .ub-chat,
body.nv5 .brain-chat { color: var(--nv-readable); }
body.nv5 .chat-scroll {
  padding-left: 36px;
  padding-right: 4px;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}
body.nv5 .msg,
body.nv5 .ub-message {
  overflow-wrap: anywhere;
  word-break: normal;
  color: var(--nv-readable);
  isolation: isolate;
}
body.nv5 .msg.user,
body.nv5 .ub-message.user {
  color: #fff !important;
  border-color: rgba(86, 204, 255, .40) !important;
  background: linear-gradient(135deg, var(--nv-chat-user-a), var(--nv-chat-user-b) 57%, var(--nv-chat-user-c)) !important;
  text-shadow: 0 1px 1px rgba(0, 0, 0, .12);
}
body.nv5 .msg.assistant,
body.nv5 .ub-message.assistant {
  color: var(--nv-readable) !important;
  border-color: rgba(94, 168, 243, .25) !important;
  background:
    radial-gradient(300px 120px at 6% 0, rgba(29, 139, 255, .11), transparent 72%),
    linear-gradient(145deg, rgba(13, 27, 52, .98), var(--nv-chat-assistant)) !important;
  box-shadow: 0 15px 42px rgba(0, 0, 0, .22), inset 0 1px 0 rgba(255, 255, 255, .035) !important;
}
body.nv5 .msg.assistant > :not(.actions):not(.ai-routing-badge),
body.nv5 .ub-message.assistant > :not(.actions):not(.ai-routing-badge) { color: inherit; }
body.nv5 .msg.assistant a,
body.nv5 .ub-message.assistant a { color: #72d8ff; text-decoration-color: rgba(114, 216, 255, .48); }
body.nv5 .msg.assistant code,
body.nv5 .ub-message.assistant code {
  color: #d6f3ff;
  background: rgba(0, 6, 18, .64);
  border: 1px solid rgba(86, 175, 239, .18);
  border-radius: 7px;
  padding: 1px 5px;
}
body.nv5 .msg .actions,
body.nv5 .ub-message .actions,
body.nv5 .success .actions {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 10px;
  color: #dce9fa !important;
}
body.nv5 .msg .actions b,
body.nv5 .ub-message .actions b,
body.nv5 .success .actions b {
  flex-basis: 100%;
  color: #f7fbff !important;
  font-weight: 600;
}
body.nv5 .msg .actions span,
body.nv5 .ub-message .actions span,
body.nv5 .success .actions span {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 5px 9px;
  color: #c9efff !important;
  border: 1px solid rgba(63, 182, 255, .25) !important;
  border-radius: 999px;
  background: rgba(8, 55, 94, .66) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .025);
}
body.nv5 .msg .actions span:last-child,
body.nv5 .ub-message .actions span:last-child { margin-right: 0; }
body.nv5 .ai-routing-badge {
  color: #b9c9df !important;
  border-color: rgba(111, 151, 219, .24) !important;
  background: rgba(7, 16, 33, .82) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .025);
}
body.nv5 .ai-routing-badge.ai-routing-deep {
  color: #e1cfff !important;
  border-color: rgba(181, 111, 255, .30) !important;
  background: rgba(61, 29, 101, .48) !important;
}
body.nv5 .ai-routing-badge.ai-routing-fast {
  color: #b5f0dd !important;
  border-color: rgba(70, 215, 161, .26) !important;
  background: rgba(18, 75, 62, .48) !important;
}
body.nv5 .chat-input {
  color: var(--nv-readable);
  border-color: rgba(89, 171, 245, .27) !important;
  background: linear-gradient(145deg, rgba(8, 19, 39, .97), rgba(4, 11, 25, .97)) !important;
  box-shadow: 0 -18px 50px rgba(0, 0, 0, .25), 0 0 0 1px rgba(36, 151, 255, .035) !important;
}
body.nv5 .chat-input textarea {
  color: #f3f8ff !important;
  background: transparent !important;
  caret-color: #47d9ff;
}
body.nv5 .chat-input .btn {
  color: #fff;
  border: 1px solid rgba(83, 206, 255, .38);
}
body.nv5 #chat-error {
  min-height: 20px;
  color: #ffabb5 !important;
  background: rgba(112, 27, 49, .18);
  border-radius: 10px;
  padding: 0 8px;
}
body.nv5 .success { color: #8ce8c3; }
body.nv5 .error { color: #ff9eaa; }

/* El auditor de contraste añade estas clases solo cuando el ratio real no llega a 4.5:1. */
body.nv5 .nv-contrast-light { color: #f7fbff !important; }
body.nv5 .nv-contrast-dark { color: #071221 !important; }
body.nv5 .nv-contrast-light:not(.msg):not(.ub-message) > *,
body.nv5 .nv-contrast-dark:not(.msg):not(.ub-message) > * { color: inherit; }

/* ---------- superficies que todavía podían heredar blanco ---------- */
body.nv5 .sheet,
body.nv5 .mobile-more-panel,
body.nv5 .life-library,
body.nv5 .life-lib-side,
body.nv5 .life-lib-head,
body.nv5 .neuromap-detail,
body.nv5 .neuromap-evolution,
body.nv5 .uc-panel,
body.nv5 .mo-panel,
body.nv5 .history-panel,
body.nv5 .cp-dialog,
body.nv5 .ea-sheet {
  color: var(--nv-readable);
  background-color: #061022;
}
body.nv5 .sheet .row,
body.nv5 .uc-actions,
body.nv5 .history-head,
body.nv5 .mobile-more-head { background-color: transparent; }
body.nv5 .mobile-more-grid button,
body.nv5 .mobile-more-close {
  color: #dce8f8;
  border-color: rgba(102, 151, 226, .20);
  background: rgba(12, 26, 51, .90);
}
body.nv5 .mobile-more-grid button.active {
  color: #fff;
  border-color: rgba(57, 181, 255, .42);
  background: linear-gradient(135deg, rgba(13, 127, 224, .66), rgba(86, 63, 211, .62));
}

/* ---------- tamaños táctiles, desbordes y estados ---------- */
body.nv5 button,
body.nv5 .btn,
body.nv5 [role="button"] { min-height: 42px; }
body.nv5 .nav-btn,
body.nv5 .bottom-nav button,
body.nv5 .neuromap-tools button,
body.nv5 .neuromap-crumbs button { min-height: 44px; }
body.nv5 img,
body.nv5 canvas,
body.nv5 svg { max-width: 100%; }
body.nv5 .card,
body.nv5 .task,
body.nv5 .entry,
body.nv5 .life-lib-card,
body.nv5 .neuromap-detail { min-width: 0; overflow-wrap: anywhere; }
body.nv5 [hidden] { display: none !important; }
body.nv5 [aria-disabled="true"],
body.nv5 button:disabled { cursor: not-allowed; }

/* ---------- NeuroMap: shell de la nueva malla poligonal ---------- */
body.nv5 .neuromap-shell {
  border-color: rgba(34, 193, 222, .21) !important;
  background:
    radial-gradient(720px 460px at 50% 45%, rgba(9, 153, 174, .12), transparent 69%),
    radial-gradient(560px 400px at 78% 30%, rgba(75, 67, 201, .09), transparent 72%),
    linear-gradient(155deg, #02080d, #031117 50%, #02070d) !important;
  box-shadow: 0 28px 84px rgba(0, 0, 0, .46), inset 0 0 0 1px rgba(74, 198, 224, .025) !important;
}
body.nv5 .neuromap-shell::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: .34;
  background-image:
    radial-gradient(circle at 16% 18%, rgba(50, 221, 244, .38) 0 1px, transparent 2px),
    radial-gradient(circle at 84% 22%, rgba(126, 106, 255, .30) 0 1px, transparent 2px),
    linear-gradient(118deg, transparent 48.5%, rgba(34, 201, 230, .045) 49%, transparent 49.5%);
  background-size: 91px 91px, 127px 127px, 63px 63px;
  mask-image: radial-gradient(ellipse at center, #000 0 44%, transparent 86%);
}
body.nv5 .neuromap-head,
body.nv5 .neuromap-evolution {
  border-color: rgba(68, 174, 218, .15) !important;
  background: rgba(2, 9, 17, .76) !important;
  backdrop-filter: blur(20px) saturate(128%);
}
body.nv5 .neuromap-title h2 { color: #f4faff !important; }
body.nv5 .neuromap-title p { color: #8799b5 !important; }
body.nv5 .neuromap-tools button,
body.nv5 .neuromap-crumbs button,
body.nv5 .neuromap-periods button,
body.nv5 .neuromap-detail button {
  color: #b9cbe0 !important;
  border-color: rgba(82, 157, 218, .22) !important;
  background: rgba(5, 18, 34, .82) !important;
}
body.nv5 .neuromap-tools button:hover,
body.nv5 .neuromap-crumbs button:hover,
body.nv5 .neuromap-periods button:hover {
  color: #fff !important;
  border-color: rgba(63, 204, 239, .40) !important;
  background: rgba(9, 44, 70, .86) !important;
}
body.nv5 .neuromap-tools button.active,
body.nv5 .neuromap-periods button.active {
  color: #fff !important;
  background: linear-gradient(135deg, #087dbe, #464fc8) !important;
}
body.nv5 .neuromap-stage-wrap { background: #02090e; }
body.nv5 .neuromap-canvas { filter: saturate(1.08) contrast(1.04); }
body.nv5 .neuromap-legend,
body.nv5 .neuromap-stat,
body.nv5 .neuromap-detail,
body.nv5 .neuromap-insight {
  color: #afc0d7 !important;
  border-color: rgba(63, 174, 213, .20) !important;
  background: rgba(3, 14, 25, .84) !important;
  box-shadow: 0 14px 44px rgba(0, 0, 0, .28);
}
body.nv5 .neuromap-legend b,
body.nv5 .neuromap-stat b,
body.nv5 .neuromap-detail h3,
body.nv5 .neuromap-detail-grid b,
body.nv5 .neuromap-insight b { color: #ecf7ff !important; }
body.nv5 .neuromap-detail p { color: #9bacc3 !important; }
body.nv5 .neuromap-detail-grid div { background: rgba(9, 39, 55, .68) !important; }
body.nv5 .neuromap-time-label { color: #bcd0e5 !important; }
body.nv5 .neuromap-timeline input { accent-color: #25c9e9; }

/* Preview wireframe del inicio: sustituye el canvas anterior sin tocar sus datos. */
.nv-dashboard-hero { isolation: isolate; }
.nv-dashboard-hero.nv-wire-ready .nv-brain-preview { opacity: 0; }
.nv-wire-preview {
  position: absolute;
  inset: 62px 0 0;
  z-index: 1;
  width: 100%;
  height: calc(100% - 62px);
  display: block;
  cursor: pointer;
  touch-action: manipulation;
}
.nv-dashboard-hero-head,
.nv-brain-preview-hint,
.nv-brain-preview-action { position: relative; z-index: 3; }

/* ---------- móvil: últimos conflictos detectados ---------- */
@media (max-width: 760px) {
  body.nv5 .main {
    padding-left: 12px;
    padding-right: 12px;
    padding-bottom: calc(104px + env(safe-area-inset-bottom));
  }
  body.nv5 .chat-wrap {
    height: calc(var(--nv-safe-vh) - 86px - env(safe-area-inset-bottom));
    min-height: 330px;
  }
  body.nv5 .chat-scroll { padding-left: 3px; padding-right: 3px; }
  body.nv5 .msg,
  body.nv5 .ub-message { max-width: 92%; font-size: 14px; }
  body.nv5 .msg.assistant::before { display: none; }
  body.nv5 .chat-input {
    position: sticky;
    bottom: 0;
    padding: 8px;
    border-radius: 16px;
  }
  body.nv5 .chat-input textarea { min-height: 48px; max-height: 116px; }
  body.nv5 .bottom-nav {
    min-height: calc(72px + env(safe-area-inset-bottom));
    padding-bottom: env(safe-area-inset-bottom);
  }
  body.nv5 .fab {
    right: 16px;
    bottom: calc(82px + env(safe-area-inset-bottom));
  }
  body.nv5 .cp-launcher,
  body.nv5 .uc-fab,
  body.nv5 .mo-fab { display: none !important; }
  body.nv5 .neuromap-shell { min-height: var(--nv-safe-vh); }
  body.nv5 .neuromap-stage-wrap,
  body.nv5 .neuromap-canvas { min-height: calc(var(--nv-safe-vh) - 112px); height: calc(var(--nv-safe-vh) - 112px); }
  body.nv5 .neuromap-legend { max-width: calc(100% - 92px); }
  body.nv5 .neuromap-detail { color: #eef7ff; }
  body.nv5 .life-lib-item { gap: 10px; }
  .nv-wire-preview { inset-top: 58px; }
}

@media (max-width: 390px) {
  body.nv5 .main { padding-left: 9px; padding-right: 9px; }
  body.nv5 .msg,
  body.nv5 .ub-message { max-width: 96%; }
  body.nv5 .neuromap-tools { max-width: 52%; }
  body.nv5 .neuromap-tools button { padding-inline: 9px; }
}

@media (prefers-contrast: more) {
  body.nv5 { --nv-muted: #aebbd0; --nv-line: rgba(153, 184, 236, .35); }
  body.nv5 .card,
  body.nv5 .msg.assistant,
  body.nv5 .chat-input { border-width: 2px; }
}

@media (prefers-reduced-motion: reduce) {
  body.nv5 *,
  body.nv5 *::before,
  body.nv5 *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
