/* ─────────────────────────────────────────────
   BettaGenesis · Páginas & módulos específicos
───────────────────────────────────────────── */

.tech-spec-row:hover {
  background: rgba(255, 255, 255, 0.06) !important;
}

/* ══ Dashboard ══ */
.dashboard-top {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) !important;
  gap: 32px !important;
  margin-bottom: 32px !important;
  background: transparent !important;
  border: none !important;
}

/* ── Hero Banner Dashboard ── */
.dash-hero-banner {
  width: 100%;
  height: 220px;
  border-radius: var(--radius-md);
  margin-bottom: 24px;
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: var(--space-xl);
  box-shadow: var(--shadow-md);
  cursor: pointer;
  border: 1px solid var(--border);
}

.dash-hero-overlay {
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  background: linear-gradient(to top, rgba(0,0,0,0.7), transparent);
  z-index: 1;
}

.dash-hero-cam-btn {
  position: absolute;
  top: 20px;
  right: 20px;
  z-index: 10;
  width: 40px;
  height: 40px;
  background: rgba(0,0,0,0.5);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  border: 1px solid rgba(255,255,255,0.2);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  cursor: pointer;
  transition: all 0.3s;
}
.dash-hero-cam-btn:hover {
  background: var(--accent-teal);
  border-color: var(--accent-teal);
  transform: scale(1.1);
}

.dash-hero-content {
  position: relative;
  z-index: 2;
  padding: 24px;
  background: rgba(0,0,0,0.2);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-radius: var(--radius-md);
  border-left: 3px solid var(--accent-teal);
  width: fit-content;
  max-width: 90%;
  box-shadow: 0 10px 30px rgba(0,0,0,0.2);
}

.dash-hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
}
.dash-hero-eyebrow-line {
  width: 20px;
  height: 1px;
  background: var(--accent-copper);
}
.dash-hero-eyebrow-text {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--accent-copper);
  letter-spacing: 0.25em;
  text-transform: uppercase;
  font-weight: 300;
}

.dash-hero-title {
  font-family: var(--font-serif);
  font-size: 32px;
  color: #fff;
  margin: 0;
  line-height: 1;
  font-weight: 300;
  letter-spacing: -0.01em;
  text-shadow: 0 2px 10px rgba(0,0,0,0.3);
}

.dash-hero-name {
  color: var(--accent-teal);
  font-style: italic;
}

.dash-hero-date {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--accent-teal);
  margin-top: 12px;
}

@media (max-width: 768px) {
  .dash-hero-banner {
    height: 300px;
    padding: var(--space-md);
  }
  .dash-hero-content {
    width: 100%;
    max-width: 100%;
    padding: 16px;
  }
  .dash-hero-title {
    font-size: 32px;
    line-height: 1.1;
  }
  .dash-hero-name {
    display: block;
    margin-top: 4px;
  }
}

@media (max-width: 480px) {
  .dash-hero-banner {
    height: 340px;
    justify-content: center;
    padding-top: 60px;
  }
  .dash-hero-title {
    font-size: 26px;
  }
  .dash-hero-cam-btn {
    top: 10px;
    right: 10px;
    width: 32px;
    height: 32px;
  }
}

@media (max-width: 900px) {
  .dashboard-top {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 480px) {
  .dashboard-top {
    grid-template-columns: 1fr;
  }
}
.dash-kpi {
  background: var(--bg-card-tex) !important;
  background-size: cover;
  background-position: center;
  padding: 16px !important; /* Reduced padding mobile */
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-md) !important;
  box-shadow: var(--shadow-sm);
  transition: transform var(--transition);
  min-height: 120px;
}
@media (max-width: 480px) {
  .dash-kpi-val { font-size: 22px; }
  .dash-kpi-lbl { font-size: 8px; }
}
.dash-kpi:hover {
  transform: translateY(-2px);
  border-color: var(--accent-teal);
}
.dash-kpi-val {
  font-family: var(--font-sans);
  font-size: 28px; font-weight: 700;
  color: var(--text-primary); line-height: 1;
  margin-bottom: 8px;
}
.dash-kpi-lbl {
  font-family: var(--font-mono); font-size: 10px; font-weight: 400;
  letter-spacing: .15em; text-transform: uppercase; color: var(--text-hint);
}

.dashboard-grid {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 32px;
  align-items: start;
}

@media (max-width: 1024px) {
  .dashboard-grid {
    grid-template-columns: 1fr;
  }
}

.alerts-list { display: flex; flex-direction: column; gap: var(--space-md); }
.alert-item {
  display: flex; align-items: flex-start; gap: var(--space-md);
  padding: var(--space-md);
  background: var(--bg-card-tex);
  background-size: cover;
  background-position: center;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  border-left: 3px solid var(--accent-warning);
}
.alert-item.critical { border-left-color: var(--accent-danger); }
.alert-item.info     { border-left-color: var(--accent-cobalt); }
.alert-item-icon { margin-top: 1px; flex-shrink: 0; }
.alert-item-body {}
.alert-item-title {
  font-size: 13px; font-weight: 700; color: var(--text-primary);
  margin-bottom: 2px;
}
.alert-item-desc {
  font-family: var(--font-mono); font-size: 13px; font-weight: 300;
  color: var(--text-hint); letter-spacing: .05em;
}

.tasks-list { display: flex; flex-direction: column; gap: var(--space-sm); }
.task-item {
  display: flex; align-items: center; gap: var(--space-md);
  padding: 11px var(--space-md);
  background: var(--bg-card-tex);
  background-size: cover;
  background-position: center;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: background var(--transition);
}
.task-item:hover { background: var(--bg-raised); }
.task-checkbox {
  width: 16px; height: 16px; border-radius: 50%;
  border: 1.5px solid var(--border-strong); flex-shrink: 0;
  transition: background var(--transition), border-color var(--transition);
}
.task-item.done .task-checkbox { background: var(--accent-teal); border-color: var(--accent-teal); }
.task-item.done .task-text { text-decoration: line-through; color: var(--text-hint); }
.task-text { font-size: 13px; color: var(--text-secondary); flex: 1; }
.task-due {
  font-family: var(--font-mono); font-size: 13px; font-weight: 300;
  color: var(--text-hint); letter-spacing: .1em;
}

/* ══ Árbol genealógico — vista espacial ══ */
:root {
  --tree-glow-1: color-mix(in srgb, var(--accent-teal) 15%, transparent);
  --tree-glow-2: color-mix(in srgb, var(--accent-cobalt) 12%, transparent);
  --tree-glow-3: color-mix(in srgb, var(--accent-copper) 15%, transparent);
  --tree-glow-gold: color-mix(in srgb, var(--accent-warning) 10%, transparent);
  --tree-particle: var(--text-hint);
}
[data-theme$="oscuro"], [data-theme="dark"] {
  --tree-glow-1: color-mix(in srgb, var(--accent-teal) 22%, transparent);
  --tree-glow-2: color-mix(in srgb, var(--accent-cobalt) 18%, transparent);
  --tree-glow-3: color-mix(in srgb, var(--accent-copper) 20%, transparent);
  --tree-glow-gold: color-mix(in srgb, var(--accent-warning) 15%, transparent);
  --tree-particle: rgba(255, 255, 255, 0.4);
}

.tree-canvas-viewport {
  position: relative;
  width: 100%;
  height: 65vh;
  min-height: 500px;
  background: var(--bg-primary);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  overflow: hidden;
  cursor: grab;
  user-select: none;
  perspective: 1000px;
}

.tree-canvas-viewport::before {
  content: '';
  position: absolute;
  inset: -1000px;
  background: 
    radial-gradient(circle at 20% 35%, var(--tree-glow-1) 0%, transparent 40%),
    radial-gradient(circle at 80% 45%, var(--tree-glow-2) 0%, transparent 40%),
    radial-gradient(circle at 45% 75%, var(--tree-glow-3) 0%, transparent 45%),
    radial-gradient(circle at 65% 15%, var(--tree-glow-1) 0%, transparent 40%),
    /* Golden Sunbeams/Lights */
    radial-gradient(ellipse at 30% 10%, var(--tree-glow-gold) 0%, transparent 50%),
    radial-gradient(ellipse at 70% 20%, var(--tree-glow-gold) 0%, transparent 40%);
  filter: blur(160px);
  pointer-events: none;
  z-index: 0;
  animation: bg-drift 120s linear infinite alternate;
  will-change: transform;
}

@keyframes bg-drift {
  0% { transform: translate(0, 0) scale(1) translateZ(0); }
  100% { transform: translate(250px, 150px) scale(1.3) translateZ(50px); }
}

.tree-canvas-viewport::after {
  content: '';
  position: absolute;
  inset: 0;
  background: 
    linear-gradient(rgba(255,255,255,0.03) 0%, transparent 30%),
    radial-gradient(ellipse at 50% 0%, rgba(255,255,255,0.05) 0%, transparent 70%),
    /* Vignette for depth */
    radial-gradient(circle at 50% 50%, transparent 40%, rgba(0,0,0,0.25) 100%);
  pointer-events: none;
  z-index: 1;
}

[data-theme$="oscuro"] .tree-canvas-viewport::after, [data-theme="dark"] .tree-canvas-viewport::after {
  background: 
    linear-gradient(rgba(255,255,255,0.01) 0%, transparent 30%),
    radial-gradient(ellipse at 50% 0%, color-mix(in srgb, var(--accent-warning) 5%, transparent) 0%, transparent 60%),
    radial-gradient(circle at 50% 50%, transparent 30%, rgba(0,0,0,0.6) 100%);
}

.unassigned-item {
  box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}
.unassigned-item:hover {
  background: var(--bg-raised) !important;
  border-color: var(--accent-teal) !important;
  transform: translateX(4px);
}
.tree-canvas-viewport:active {
  cursor: grabbing;
}
[data-theme="dark"] .unassigned-item:hover {
  background: rgba(255,255,255,0.08) !important;
  border-color: var(--accent-teal) !important;
}
.tree-stage {
  position: absolute;
  top: 0; left: 0;
  width: 8000px;
  height: 8000px;
  transform-origin: 0 0;
  /* Optimized for zooming: removed will-change from parent to prevent low-res raster caching */
  /* and added translateZ for hardware acceleration without sacrificing sharp vector rendering */
  transform: translate3d(0,0,0);
}
.connectors-svg {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  pointer-events: none;
  overflow: visible;
  filter: drop-shadow(0 0 1px rgba(0,0,0,0.1));
}
[data-theme="dark"] .connectors-svg {
  filter: drop-shadow(0 0 3px rgba(255,255,255,0.05));
}

@keyframes connector-flow {
  from { stroke-dashoffset: 24; stroke-opacity: 0.2; }
  50% { stroke-opacity: 0.6; }
  to { stroke-dashoffset: 0; stroke-opacity: 0.2; }
}
.tree-connector-anim {
  animation: connector-flow 3s linear infinite;
}

/* Glass Card */
.fish-card{
  position:absolute;
  width:180px;
  height: 240px;
  background: var(--bg-surface);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: 0 8px 32px rgba(0,0,0,0.08);
  overflow:hidden;
  cursor:pointer;
  transition: all 450ms cubic-bezier(0.23, 1, 0.32, 1);
  /* Force high quality rendering during transforms */
  backface-visibility: hidden;
  -webkit-font-smoothing: antialiased;
  transform: translate3d(0,0,0);
  display: flex;
  flex-direction: column;
}
[data-theme$="oscuro"] .fish-card, [data-theme="dark"] .fish-card {
  background: color-mix(in srgb, var(--bg-surface) 75%, transparent);
  border-color: rgba(255, 255, 255, 0.12);
  box-shadow: 0 12px 40px rgba(0,0,0,0.4);
}
.fish-card:hover{
  border-color: color-mix(in srgb, var(--accent-teal) 70%, transparent);
  box-shadow: 0 15px 35px rgba(0,0,0,0.4), 0 0 15px color-mix(in srgb, var(--accent-teal) 30%, transparent);
  transform: translateY(-5px) scale(1.02);
  z-index: 10;
}
.fish-card.selected{
  border-color: var(--accent-copper);
  box-shadow: 0 0 0 2px var(--accent-copper), 0 15px 35px color-mix(in srgb, var(--accent-copper) 25%, transparent);
  z-index: 20;
}
.card-photo-strip{
  height:72px;
  position:relative;
  overflow:hidden;
  background:#1A2820;
  display:flex;align-items:center;justify-content:center;
}
.card-photo-strip::before{
  content:'';position:absolute;inset:0;
  background:
    linear-gradient(127deg,transparent 30%,rgba(255,255,255,.07) 31%,rgba(255,255,255,.04) 33%,transparent 34%),
    radial-gradient(ellipse 80% 60% at 45% 65%,var(--fish-color,#1d4a35) 0%,#0e1f18 100%);
}
.card-fish-svg{
  position:relative;z-index:1;
  width:80px;height:50px;
  opacity:.9;
}
.card-morph-tag{
  position:absolute;top:8px;right:8px;z-index:2;
  font-family:var(--font-mono);font-size:7px;font-weight:400;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--accent-teal);border:1px solid rgba(13,107,92,.3);
  padding:2px 6px;border-radius:1px;
  background:rgba(13,107,92,.05);
}
[data-theme="dark"] .card-morph-tag{
  color:#7AB0E8;border-color:rgba(122,176,232,.4);background:rgba(74,122,184,.18);
}
.card-gen-wm{
  position:absolute;bottom:4px;left:8px;z-index:1;
  font-family:var(--font-mono);font-size:8px;font-weight:300;
  color:rgba(122,132,120,.5);letter-spacing:.2em;
}
[data-theme="dark"] .card-gen-wm {
  color:rgba(255,255,255,.3);
}
.card-body{padding:12px 14px 14px}
.card-eyebrow{
  display:flex;align-items:center;gap:6px;margin-bottom:8px
}
.card-eyebrow-line{width:14px;height:1px;background:var(--copper)}
.card-eyebrow-text{
  font-family:var(--font-mono);font-size:8px;font-weight:300;
  letter-spacing:.2em;text-transform:uppercase;color:var(--copper)
}
.card-name{
  font-family:var(--font-serif);font-size:16px;font-weight:600;
  line-height:1.2;color:var(--text-primary);margin-bottom:2px;letter-spacing:-.01em;
}
.card-name em{font-style:italic;color:var(--iridescent)}
.card-species{
  font-family:var(--font-serif);font-style:italic;font-size:11px;
  font-weight:300;color:var(--text-hint);margin-bottom:10px;
}
.card-divider{height:1px;background:var(--border);margin-bottom:10px}
.card-stats{display:grid;grid-template-columns:1.2fr 0.8fr 1fr;gap:0}
.card-stat{padding:0 4px 0 0;border-right:1px solid var(--border)}
.card-stat:last-child{border-right:none;padding-left:4px;padding-right:0}
.card-stat:nth-child(2){padding-left:4px}
.card-stat-val{
  font-family:var(--font-mono);font-size:10px;font-weight:500;
  color:var(--text-primary);line-height:1.1;margin-bottom:2px;
  white-space:nowrap;
}
.card-stat-lbl{
  font-family:var(--font-mono);font-size:7px;font-weight:400;
  letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);
}
.card-status{
  display:flex;align-items:center;gap:5px;margin-top:10px;
  padding-top:8px;border-top:1px solid var(--border);
}
.card-status-dot{
  width:5px;height:5px;border-radius:50%;background:var(--accent-moss);
  flex-shrink:0;
}
.card-status-dot.breed{background:var(--accent-teal)}
.card-status-dot.rest{background:var(--copper)}
.card-status-dot.danger{background:var(--accent-danger)}
.card-status-text{
  font-family:var(--font-mono);font-size:8px;font-weight:300;
  color:var(--text-hint);letter-spacing:.1em;text-transform:uppercase;
}

/* Detail panel */
.detail-panel{
  position:fixed;
  right:0;top:0;bottom:0;
  width:320px;
  background: var(--bg-sidebar);
  background-size: cover;
  background-position: center;
  border-left:1px solid var(--border);
  z-index:2000; /* Above mobile nav */
  overflow-y:auto;
  transform:translateX(100%);
  transition:transform 300ms cubic-bezier(.4,0,.2,1);
  display:flex;flex-direction:column;
  box-shadow: -8px 0 30px rgba(0,0,0,0.2);
}
@media (max-width: 768px) {
  .detail-panel { width: 100%; border-left: none; }
  .detail-body { padding: 16px; padding-bottom: 100px; }
  .detail-name { font-size: 28px; }
}
.detail-panel.open{transform:translateX(0)}
.detail-header{
  padding:20px 20px 16px;
  border-bottom:1px solid var(--border);
  display:flex;align-items:flex-start;justify-content:space-between;
}
.detail-close{
  width:28px;height:28px;border-radius:50%;
  border:1px solid var(--border);display:flex;align-items:center;justify-content:center;
  cursor:pointer;color:var(--text-hint);flex-shrink:0;font-size:14px;
  transition:all var(--transition);background:none;
}
.detail-close:hover{border-color:var(--border-strong);color:var(--text-primary)}
.detail-photo{
  height:140px;background:#1A2820;position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.detail-photo::before{
  content:'';position:absolute;inset:0;
  background:
    linear-gradient(127deg,transparent 30%,rgba(255,255,255,.07) 31%,rgba(255,255,255,.04) 33%,transparent 34%),
    radial-gradient(ellipse 80% 60% at 45% 65%,var(--fish-color,#1d4a35) 0%,#0e1f18 100%);
}
.detail-photo.has-photo::before { display: none; }
.detail-fish-svg{position:relative;z-index:1;width:140px;height:88px}
.detail-body{padding:20px;flex:1}
.detail-name{
  font-family:var(--font-serif);font-size:32px;font-weight:300;
  line-height:.95;color:var(--text-primary);margin-bottom:3px;
}
.detail-name em{font-style:italic;color:var(--iridescent)}
.detail-species{
  font-family:var(--font-serif);font-style:italic;font-size:12px;color:var(--text-hint);
  margin-bottom:16px;
}
.detail-section-label{
  font-family:var(--font-mono);font-size:8px;font-weight:300;
  letter-spacing:.25em;text-transform:uppercase;color:var(--text-hint);
  margin-bottom:8px;
}
.detail-row{
  display:flex;justify-content:space-between;align-items:baseline;
  padding:8px 0;border-bottom:1px solid var(--border);
}
.detail-row:last-child{border-bottom:none}
.detail-row-label{font-family:var(--font-mono);font-size:10px;color:var(--text-hint);letter-spacing:.05em}
.detail-row-val{font-size:13px;color:var(--text-primary);font-weight:400}
.detail-row-val.mono{font-family:var(--font-mono);font-size:11px;color:var(--iridescent)}
.detail-row-val.copper{color:var(--copper)}
.genome-block{
  font-family:var(--font-mono);font-size:11px;font-weight:300;
  color:var(--text-secondary);line-height:2;
  background:var(--bg-raised);border-radius:var(--radius-md);
  padding:10px 12px;margin-bottom:16px;
}
.genome-block span{color:var(--iridescent)}
.water-gauge{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.gauge-row{display:flex;align-items:center;gap:8px}
.gauge-lbl{font-family:var(--font-mono);font-size:9px;color:var(--text-hint);min-width:28px}
.gauge-track{flex:1;height:2px;background:var(--border);position:relative;border-radius:1px}
.gauge-fill{position:absolute;top:0;left:0;bottom:0;border-radius:1px;background:var(--iridescent)}
.gauge-fill.warn{background:var(--copper)}
.gauge-val{font-family:var(--font-sans);font-size:11px;font-weight:800;color:var(--text-primary);min-width:36px;text-align:right}
.notes-block{
  display:block !important; width:100%; box-sizing:border-box;
  font-family:var(--font-serif);font-style:italic;font-size:13px;
  color:var(--text-secondary);line-height:1.6;
  border-left:2px solid var(--copper);padding-left:12px;margin-bottom:16px;
}

/* ══ Módulo genético — Calculadora ══ */
.genetics-calc {
  background: var(--bg-card-tex);
  background-size: cover;
  background-position: center;
  border: 1px solid var(--border);
  border-radius: var(--radius-md); overflow: hidden;
}
.genetics-calc-header {
  padding: var(--space-lg);
  background: var(--bg-raised);
  border-bottom: 1px solid var(--border);
  font-family: var(--font-mono); font-size: 11px; font-weight: 300;
  letter-spacing: .2em; text-transform: uppercase; color: var(--text-hint);
}
.genetics-calc-body { padding: var(--space-lg); }
.gene-table { width: 100%; border-collapse: collapse; }
.gene-table th {
  font-family: var(--font-mono); font-size: 10px; font-weight: 300;
  letter-spacing: .2em; text-transform: uppercase; color: var(--stone);
  padding: var(--space-sm) var(--space-md);
  border-bottom: 1px solid var(--border); text-align: left;
}
.gene-table td {
  padding: 10px var(--space-md);
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.gene-table .gene-locus {
  font-family: var(--font-mono); font-size: 12px; color: var(--copper);
}
.gene-table .gene-alleles {
  font-family: var(--font-mono); font-size: 11px; color: var(--iridescent);
}
.gene-table .gene-effect {
  font-family: var(--font-serif); font-style: italic; color: var(--text-secondary);
}

/* ══ Base de datos enciclopédica ══ */
.db-filter-bar {
  display: flex; gap: 8px; align-items: center;
  margin-bottom: var(--space-xl);
  flex-wrap: wrap;
}
@media (max-width: 600px) {
  .db-filter-bar { gap: 6px; }
  .db-filter-btn { padding: 0 12px; font-size: 9px; height: 36px; }
  .db-search { width: 100%; }
}
.db-filter-btn {
  font-family: var(--font-mono); font-size: 10px; font-weight: 400;
  letter-spacing: .12em; text-transform: uppercase;
  height: var(--btn-h);
  padding: 0 20px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--border); border-radius: var(--radius-md);
  color: var(--text-secondary); background: var(--bg-surface);
  transition: all var(--transition); cursor: pointer;
  user-select: none;
  -webkit-user-select: none;
}
.db-filter-btn:hover  { border-color: var(--border-strong); color: var(--text-primary); }
.db-filter-btn.active { border-color: var(--accent-teal); color: var(--accent-teal); background: var(--accent-teal-soft); }

.db-search {
  flex: 1; min-width: 200px;
  height: var(--input-h);
  background: var(--bg-input); border: 1px solid var(--border);
  border-radius: var(--radius-md); padding: 0 16px;
  font-family: var(--font-mono); font-size: 12px; font-weight: 300;
  color: var(--text-primary); outline: none;
  transition: border-color var(--transition);
}
.db-search:focus { border-color: var(--border-strong); }
.db-search::placeholder { color: var(--text-hint); }

.compat-stars { color: var(--copper); font-size: 10px; letter-spacing: 1px; }
.compat-stars.low  { color: var(--accent-danger); }
.compat-stars.mid  { color: var(--accent-warning); }
.compat-stars.high { color: var(--accent-moss); }

/* ══ Salud — historial clínico ══ */
.timeline { display: flex; flex-direction: column; position: relative; }
.timeline::before {
  content: '';
  position: absolute; left: 20px; top: 0; bottom: 0;
  width: 1px; background: var(--border);
}
.timeline-item {
  display: flex; gap: var(--space-md); padding: 0 0 var(--space-lg) 0;
  position: relative;
}
.timeline-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--accent-teal); flex-shrink: 0;
  margin-top: 5px; margin-left: 17px;
  z-index: 1; position: relative;
}
.timeline-dot.danger  { background: var(--accent-danger); }
.timeline-dot.warning { background: var(--accent-warning); }
.timeline-content {
  background: var(--bg-surface); border: 1px solid var(--border);
  border-radius: var(--radius-md); padding: var(--space-md);
  flex: 1;
}
.timeline-date {
  font-family: var(--font-mono); font-size: 11px; font-weight: 300;
  color: var(--text-hint); letter-spacing: .15em; margin-bottom: 4px;
}
.timeline-title { font-size: 13px; font-weight: 700; color: var(--text-primary); }
.timeline-desc {
  font-family: var(--font-serif); font-style: italic;
  font-size: 13px; color: var(--text-secondary); margin-top: 4px; line-height: 1.5;
}

/* ══ Modal de Tareas / Agenda ══ */
.edit-task-modal {
  padding: 24px;
  color: var(--text-primary);
  font-family: var(--font-sans);
}
.edit-task-modal h3 {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--text-hint);
  margin-bottom: 24px;
}
.edit-task-modal input,
.edit-task-modal select {
  width: 100%;
  padding: 12px;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-family: var(--font-sans);
  margin-bottom: 12px;
}
.edit-task-modal .actions {
  display: flex;
  gap: 12px;
  margin-top: 16px;
}
.btn-save {
  flex: 1;
  padding: 12px;
  background: var(--accent-teal);
  color: var(--text-on-accent);
  border: none;
  border-radius: var(--radius-md);
  cursor: pointer;
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  transition: filter var(--transition);
}
.btn-save:hover { filter: brightness(1.1); }
.btn-del {
  padding: 12px;
  background: transparent;
  color: var(--accent-danger);
  border: 1px solid var(--accent-danger);
  border-radius: var(--radius-md);
  cursor: pointer;
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  transition: all var(--transition);
}
.btn-del:hover { background: var(--accent-danger); color: #fff; }

.settings-section {
  background: var(--bg-card-tex);
  background-size: cover;
  background-position: center;
  border: 1px solid var(--border);
  border-radius: var(--radius-md); overflow: hidden; margin-bottom: var(--space-lg);
}
.settings-section-header {
  padding: var(--space-md) var(--space-lg);
  background: var(--bg-raised); border-bottom: 1px solid var(--border);
  font-family: var(--font-mono); font-size: 11px; font-weight: 300;
  letter-spacing: .2em; text-transform: uppercase; color: var(--text-hint);
}
.settings-section-body {
  padding: var(--space-lg);
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}
.settings-card {
  background: var(--bg-raised);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}
.settings-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--space-md) var(--space-lg);
  border-bottom: 1px solid var(--border);
}
.settings-row:last-child { border-bottom: none; }
.settings-row-label { font-size: 13px; color: var(--text-primary); }
.settings-row-desc {
  font-family: var(--font-serif); font-style: italic;
  font-size: 12px; color: var(--text-hint); margin-top: 2px;
}
.toggle {
  width: 36px; height: 20px; border-radius: 10px;
  background: var(--border-strong); position: relative; cursor: pointer;
  transition: background var(--transition); flex-shrink: 0;
}
.toggle.on { background: var(--accent-teal); }
.toggle::after {
  content: ''; position: absolute; top: 2px; left: 2px;
  width: 16px; height: 16px; border-radius: 50%;
  background: #fff; transition: transform var(--transition);
}
.toggle.on::after { transform: translateX(16px); }

/* ══ Campos Editables (Inline Editing) ══ */
.editable-field, .editable-select-wrap {
  cursor: pointer;
  position: relative;
  transition: all var(--transition);
  border-bottom: 1px dashed transparent;
  display: inline-block;
  min-width: 20px;
}

.editable-field:hover, .editable-select-wrap:hover {
  border-bottom: 1px dashed currentColor;
}

.editable-field::after, .editable-select-wrap::after {
  content: none !important;
  display: none !important;
}

.editable-field:hover::after, .editable-select-wrap:hover::after {
  opacity: 1;
}

/* Ajustes específicos para tarjetas de acuario */
.card-d-param-val.editable-field {
  padding: 2px 6px;
  margin-left: -6px;
}

/* Ocultar banner si ya hay un input activo */
.editable-field:focus-within::before,
.editable-field:focus-within::after,
.editable-field.editing::after {
  display: none;
}

.editable-field input {
  animation: bgPulseSoft 1.5s infinite;
  box-sizing: border-box;
}

@keyframes bgPulseSoft {
  0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent-teal) 40%, transparent); }
  70% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--accent-teal) 0%, transparent); }
  100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent-teal) 0%, transparent); }
}

/* ══ Elite UI Toolkit ══ */
.edit-modal-wrapper { font-family: var(--font-sans); color: var(--text-primary); padding: 40px; width: 800px; max-width: 100%; box-sizing: border-box; }
.edit-header { margin-bottom: 55px; border-bottom: 1px solid var(--border); padding-bottom: 30px; }
.edit-title-big { font-family: var(--font-serif); font-size: 42px; font-weight: 300; margin: 0; color: var(--text-primary); letter-spacing: -0.02em; }

@media (max-width: 768px) {
  .edit-title-big {
    font-size: 28px;
  }
  .edit-modal-wrapper {
    padding: 24px;
  }
  .tech-group-title {
    font-size: 20px;
  }
}
.edit-subtitle { font-family: var(--font-mono); font-size: 11px; color: var(--accent-copper); letter-spacing: 0.4em; text-transform: uppercase; margin-bottom: 12px; display: block; opacity: 0.8; }

.tech-group { margin-bottom: 70px; position: relative; }
.tech-group-header { display: flex; align-items: center; gap: 20px; margin-bottom: 35px; }
.tech-group-line { height: 1px; flex: 1; background: linear-gradient(to right, var(--accent-copper), transparent); opacity: 0.2; }
.tech-group-title { font-family: var(--font-serif); font-size: 26px; font-style: italic; color: var(--accent-copper); flex-shrink: 0; font-weight: 400; }

.tech-grid-container { padding-left: 35px; border-left: 1px solid var(--border); margin-left: 6px; }
.tech-grid { 
  display: grid; 
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); 
  gap: 40px; 
}

@media (max-width: 600px) {
  .tech-grid {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .tech-grid-container {
    padding-left: 16px;
    margin-left: 4px;
  }
  .tech-group-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    margin-bottom: 24px;
  }
  .tech-group-line {
    width: 100%;
  }
}
.tech-grid-span-2 { grid-column: span 2; }
@media (max-width: 600px) { .tech-grid-span-2 { grid-column: span 1; } }
.tech-grid-span-3 { grid-column: span 3; }
@media (max-width: 800px) { .tech-grid-span-3 { grid-column: span 1; } }

.elite-label { display: block; font-family: var(--font-mono); font-size: 11px; color: var(--accent-teal); text-transform: uppercase; letter-spacing: 0.2em; margin-bottom: 14px; font-weight: 500; }

.elite-input {
  width: 100%; background: var(--bg-surface); border: 1px solid var(--border); color: var(--text-primary);
  padding: 0 20px; height: var(--input-h); font-family: var(--font-serif); font-size: 16px; transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1); border-radius: var(--radius-md); border-left-width: 3px;
}
.elite-input:focus { border-color: var(--accent-teal); outline: none; background: var(--bg-raised); box-shadow: 0 10px 30px rgba(0,0,0,0.15); transform: translateY(-2px); }

.elite-select {
  width: 100%; background: var(--bg-surface); border: 1px solid var(--border); color: var(--text-primary);
  padding: 0 20px; height: var(--input-h); font-family: var(--font-mono); font-size: 11px; cursor: pointer; border-radius: var(--radius-md); transition: all 0.3s; border-left: 1px solid var(--border);
}
.elite-select:focus { border-color: var(--accent-teal); outline: none; background: var(--bg-raised); border-left-width: 3px; }

.media-admin-area { background: var(--bg-raised); padding: var(--space-xl); border-radius: var(--radius-lg); border: 1px solid var(--border); margin: 80px 0; box-shadow: inset 0 0 50px rgba(0,0,0,0.05); }
.media-grid-pro { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 25px; }
.media-card-pro { position: relative; aspect-ratio: 4/5; border-radius: var(--radius-md); overflow: hidden; border: 1px solid var(--border); background: #0c0c0c; transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1); }
.media-card-pro:hover { transform: translateY(-10px) scale(1.02); box-shadow: 0 25px 50px rgba(0,0,0,0.5); border-color: var(--accent-teal); }
.media-overlay-pro { position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,0.98), rgba(0,0,0,0.4)); display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 15px; opacity: 0; transition: all 0.3s ease; padding: 25px; }
.media-card-pro:hover .media-overlay-pro { opacity: 1; }

.btn-media-action { height: var(--btn-h); padding: 0 20px; font-family: var(--font-mono); font-size: 11px; border: none; cursor: pointer; border-radius: var(--radius-md); width: 100%; transition: all 0.2s; letter-spacing: 0.15em; font-weight: 600; text-transform: uppercase; }
.btn-media-action.cover { background: var(--accent-teal); color: #fff; }
.btn-media-action.delete { background: rgba(255,255,255,0.03); color: var(--accent-danger); border: 1px solid rgba(163, 45, 45, 0.15); }
.btn-media-action:hover { transform: scale(1.05); filter: brightness(1.2); }

.action-footer { display: flex; gap: 20px; border-top: 1px solid var(--border); padding-top: 50px; margin-top: 20px; }
.action-btn-save {
  flex: 1.5; height: var(--btn-h); background: var(--accent-teal); color: #fff; border: none; border-radius: var(--radius-md);
  font-family: var(--font-mono); font-size: 11px; font-weight: 700; letter-spacing: 0.2em; cursor: pointer;
  transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1); text-transform: uppercase;
  box-shadow: 0 4px 15px rgba(29, 168, 144, 0.2);
}
.action-btn-save:hover { background: var(--accent-teal); transform: translateY(-3px); box-shadow: 0 12px 30px color-mix(in srgb, var(--accent-teal) 40%, transparent); }
.action-btn-save:active { transform: translateY(-1px); }

.action-btn-archive {
  flex: 0.7; height: var(--btn-h); background: transparent; color: var(--accent-danger); border: 1px solid rgba(163, 45, 45, 0.3);
  border-radius: var(--radius-md); font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.15em; cursor: pointer;
  transition: all 0.3s; text-transform: uppercase;
}
.action-btn-archive:hover { background: rgba(163, 45, 45, 0.05); border-color: var(--accent-danger); color: var(--accent-danger); transform: translateY(-2px); }

/* ReactQuill Dark Mode Overrides */
[data-theme="dark"] .quill-wrapper .ql-toolbar {
  border-color: var(--border);
  background: var(--bg-raised);
}
[data-theme="dark"] .quill-wrapper .ql-toolbar button {
  filter: invert(0.8);
}
[data-theme="dark"] .quill-wrapper .ql-toolbar .ql-picker-label {
  color: var(--text-primary);
}
[data-theme="dark"] .quill-wrapper .ql-toolbar .ql-picker-options {
  background: var(--bg-surface);
  border-color: var(--border);
}
[data-theme="dark"] .quill-wrapper .ql-toolbar .ql-picker-item {
  color: var(--text-primary);
}
[data-theme="dark"] .quill-wrapper .ql-container {
  border-color: var(--border);
  background: var(--bg-input);
  color: var(--text-primary);
  font-family: inherit;
}
[data-theme="dark"] .quill-wrapper .ql-editor.ql-blank::before {
  color: var(--text-hint);
}
[data-theme="light"] .quill-wrapper .ql-toolbar,
[data-theme="light"] .quill-wrapper .ql-container {
  background: white;
  border-color: var(--border);
}
[data-theme="light"] .quill-wrapper .ql-container {
  color: black;
}
.quill-wrapper .ql-editor {
  min-height: 100px;
}

/* ══ Módulo de Autenticación ══ */
.auth-page {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 99999;
  background: var(--bg-primary);
  overflow: hidden;
  perspective: 1000px;
}

/* Background Image Layer with Blur and Color Tint */
.auth-page::before {
  content: '';
  position: absolute;
  inset: -20px; /* Slightly larger to hide blurred edges */
  background-image: url('/assets/textura1.jpg?v=3');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  filter: brightness(1.1) saturate(0.8);
  opacity: 0.9;
  z-index: -1;
}

/* Color Overlay to match site palette for glass feel */
.auth-page::after {
  content: '';
  position: absolute;
  inset: 0;
  background: 
    radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%);
  backdrop-filter: blur(1px); /* Slight glass frost effect */
  border: 1px solid rgba(255, 255, 255, 0.1);
  pointer-events: none;
  z-index: 0;
}

[data-theme="dark"] .auth-page::after {
  background: 
    radial-gradient(circle at 50% 50%, transparent 30%, rgba(0, 0, 0, 0.5) 100%),
    rgba(13, 107, 92, 0.05);
}

.auth-card {
  position: relative;
  z-index: 10;
  width: 100%;
  max-width: 400px;
  padding: 24px 40px 40px 40px;
  background: rgba(255, 255, 255, 0.2);
  backdrop-filter: blur(16px) saturate(140%);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: var(--radius-md);
  box-shadow: 0 15px 50px rgba(0,0,0,0.05);
  animation: auth-card-in 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

[data-theme="dark"] .auth-card {
  background: rgba(14, 15, 12, 0.25);
  border-color: rgba(255, 255, 255, 0.05);
  box-shadow: 0 20px 80px rgba(0,0,0,0.3);
}

.auth-logo {
  font-family: var(--font-sans);
  font-size: 24px;
  font-weight: 800;
  color: var(--text-primary);
  text-transform: uppercase;
  margin-bottom: 4px;
  letter-spacing: 0.05em;
  text-align: center;
}

.auth-subtitle {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--copper);
  letter-spacing: 0.25em;
  text-transform: uppercase;
  margin-bottom: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 15px;
  font-weight: 600;
  white-space: nowrap;
}

.auth-subtitle::before,
.auth-subtitle::after {
  content: '';
  height: 1px;
  width: 20px;
  background: var(--copper);
  opacity: 0.4;
}

.auth-label {
  display: block;
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--accent-teal);
  text-transform: uppercase;
  letter-spacing: 0.15em;
  margin-bottom: 8px;
  font-weight: 600;
  opacity: 1;
}



.auth-input {
  width: 100%;
  padding: 12px 14px;
  background: rgba(255, 255, 255, 0.9);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: #0d2e28; /* Deep natural green for input text */
  font-family: var(--font-serif);
  font-size: 16px;
  transition: all var(--transition);
}

[data-theme="dark"] .auth-input {
  background: rgba(13, 107, 92, 0.1);
  border-color: rgba(29, 168, 144, 0.2);
  color: #e1f5ee;
}

.auth-input:focus {
  outline: none;
  border-color: var(--accent-teal);
  background: #fff;
  box-shadow: 0 0 0 4px rgba(13, 107, 92, 0.15);
}

[data-theme="dark"] .auth-input:focus {
  background: rgba(13, 107, 92, 0.2);
  box-shadow: 0 0 0 4px rgba(29, 168, 144, 0.15);
}

.auth-btn-secondary {
  width: 100%;
  padding: 12px;
  background: rgba(255,255,255,0.3);
  color: var(--text-secondary);
  border: 1px solid rgba(0,0,0,0.05);
  border-radius: var(--radius-md);
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  transition: all var(--transition);
}

[data-theme="dark"] .auth-btn-secondary {
  background: rgba(255,255,255,0.05);
  color: var(--text-primary);
  border-color: rgba(255,255,255,0.1);
}

.auth-btn-secondary:hover {
  background: rgba(255,255,255,0.6);
  color: var(--text-primary);
}

[data-theme="dark"] .auth-btn-secondary:hover {
  background: rgba(255,255,255,0.1);
}

.auth-btn-primary {
  width: 100%;
  padding: 14px;
  background: var(--accent-teal);
  color: #fff;
  border: none;
  border-radius: var(--radius-md);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.3s;
  box-shadow: 0 4px 15px color-mix(in srgb, var(--accent-teal) 20%, transparent);
  margin-top: 10px;
}

.auth-btn-primary:hover {
  filter: brightness(1.1);
  transform: translateY(-2px);
  box-shadow: 0 8px 25px color-mix(in srgb, var(--accent-teal) 30%, transparent);
}

.auth-footer-link {
  display: block;
  text-align: center;
  margin-top: 24px;
  font-size: 12px;
  color: var(--text-hint);
  text-decoration: none;
  cursor: pointer;
  transition: color 0.2s;
  font-family: var(--font-serif);
  font-style: italic;
}

.auth-footer-link:hover {
  color: var(--accent-teal);
}
 
/* ══ Kanban Board ══ */
.kanban-board {
  display: flex;
  gap: 24px;
  overflow-x: auto;
  padding-bottom: 24px;
  min-height: 70vh;
}
.kanban-col {
  flex: 1;
  min-width: 280px;
  display: flex;
  flex-direction: column;
  background: rgba(0,0,0,0.02);
  border-radius: var(--radius-md);
  padding: 16px;
}
.kanban-col-header {
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--text-hint);
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.kanban-count {
  background: var(--border);
  color: var(--text-secondary);
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  font-size: 10px;
}
.kanban-cards-container {
  display: flex;
  flex-direction: column;
  gap: 12px;
  flex: 1;
}
.kanban-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 16px;
  box-shadow: var(--shadow-sm);
  transition: all 0.2s ease;
}
.kanban-card:hover {
  transform: translateY(-2px);
  border-color: var(--accent-teal);
  box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}
.kanban-card.dragging {
  opacity: 0.5;
  border-style: dashed;
}

/* Genetics Page Layout */
.genetics-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 40px;
  margin-bottom: 60px;
  overflow: visible;
}

.parent-grid {
  display: grid;
  grid-template-columns: 1fr 60px 1fr;
  gap: 32px;
  align-items: center;
}

.tech-ency-container {
  padding: 48px;
  border-radius: var(--radius-lg);
  margin-top: 40px;
  background: var(--bg-raised);
  border: 1px solid var(--border);
}

@media (max-width: 900px) {
  .genetics-layout {
    grid-template-columns: 1fr;
    gap: 24px;
  }
}

@media (max-width: 600px) {
  .parent-grid {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .parent-grid > div:nth-child(2) {
    transform: rotate(90deg);
    margin: 10px 0;
  }
  .tech-ency-container {
    padding: 24px 16px;
  }
}

.settings-row-label {
    font-size: 13px;
    font-family: var(--font-sans);
    font-weight: 600;
    color: var(--text-primary);
}

.settings-row-desc {
    font-size: 12px;
    font-family: var(--font-sans);
    color: var(--text-hint);
    margin-top: 2px;
}

.auth-brand-img { height: 120px; width: auto; object-fit: contain; filter: drop-shadow(0 4px 10px rgba(0,0,0,0.1)); transition: all 0.3s ease; }
[data-theme="dark"] .auth-brand-img,
[data-theme*="oscuro"] .auth-brand-img { /* swapped via JS now */ }


.auth-brand-mask {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  height: 380px;
  width: 100%;
  max-width: 360px;
  margin: -30px auto -30px auto;
  background-color: var(--copper);
  mask-image: url('/assets/Logo.png');
  mask-size: contain;
  mask-repeat: no-repeat;
  mask-position: center;
  -webkit-mask-image: url('/assets/Logo.png');
  -webkit-mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-position: center;
  filter: drop-shadow(0 4px 10px rgba(0,0,0,0.1));
}

@media (max-width: 480px) {
  .auth-brand-mask {
    height: 280px;
    max-width: 320px;
    margin: -10px auto -10px auto;
  }
}

.topbar-brand-img { height: 135px; width: auto; object-fit: contain; filter: drop-shadow(0 4px 8px rgba(0,0,0,0.2)); margin-top: -10px; margin-bottom: -10px; position: relative; z-index: 1001; }
@media (max-width: 600px) {
  .topbar-brand-img { height: 44px; }
}
[data-theme="dark"] .topbar-brand-img,
[data-theme*="oscuro"] .topbar-brand-img { filter: brightness(0) invert(1) drop-shadow(0 2px 4px rgba(0,0,0,0.2)); }