/* ==================================================================
   Estética tipo Notion: blanco, tipografía limpia, bordes sutiles
   ================================================================== */
:root {
  --n-text:    #37352f;
  --n-muted:   rgba(55, 53, 47, .65);
  --n-faint:   rgba(55, 53, 47, .45);
  --n-border:  rgba(55, 53, 47, .09);
  --n-hover:   rgba(55, 53, 47, .04);
  --n-sidebar: #f7f7f5;
  --n-radius:  6px;
}

body {
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  font-size: 15px;
  color: var(--n-text);
  background: #fff;
  -webkit-font-smoothing: antialiased;
}

/* ---------- Sidebar ---------- */
.n-sidebar {
  width: 240px; min-height: 100vh; position: sticky; top: 0; flex-shrink: 0;
  background: var(--n-sidebar); border-right: 1px solid var(--n-border);
}
.n-workspace { font-weight: 600; padding: .5rem .6rem; border-radius: 4px; }
.n-avatar {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 4px; background: var(--n-text);
  color: #fff; font-size: .75rem; margin-right: .5rem;
}
.n-nav-link {
  display: flex; align-items: center; gap: .55rem; padding: .3rem .6rem;
  color: var(--n-muted); text-decoration: none; border-radius: 4px; font-size: .9rem;
}
.n-nav-link:hover, .n-nav-link.active { background: rgba(55, 53, 47, .08); color: var(--n-text); }

/* ---------- Contenido ---------- */
.n-main { max-width: 1100px; padding: 3rem 1.25rem; }
@media (min-width: 992px) { .n-main { padding: 3.5rem 4rem; } }

.n-breadcrumb { font-size: .85rem; color: var(--n-muted); }
.n-breadcrumb a { color: var(--n-muted); text-decoration: none; }
.n-icon  { font-size: 3.5rem; line-height: 1; margin-bottom: .5rem; }
.n-title { font-size: 2.5rem; font-weight: 700; letter-spacing: -.02em; margin: 0 0 .5rem; }
.n-h2    { font-size: 1.2rem; font-weight: 600; margin: 0; }
.n-muted { color: var(--n-muted) !important; }

/* ---------- Propiedades (filas tipo base de datos de Notion) ---------- */
.n-props { border-top: 1px solid var(--n-border); border-bottom: 1px solid var(--n-border); padding: .5rem 0; }
.n-prop  { display: grid; grid-template-columns: 170px 1fr; align-items: center; padding: .35rem 0; font-size: .9rem; }
.n-prop-label { color: var(--n-muted); display: flex; align-items: center; gap: .45rem; }
.n-tag { background: rgba(55, 53, 47, .08); color: var(--n-text); font-weight: 500; }

/* ---------- Tarjetas ---------- */
.card { border: 1px solid var(--n-border); border-radius: var(--n-radius); box-shadow: none; transition: background-color .15s ease; }
.card:hover { background-color: var(--n-hover); }
.n-card-label { font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; color: var(--n-faint); font-weight: 600; margin-bottom: .6rem; }
.n-metric { font-size: 2rem; font-weight: 700; letter-spacing: -.02em; }

/* ---------- Progreso ---------- */
.progress { height: 8px; background: rgba(55, 53, 47, .08); border-radius: 4px; }
.progress-bar { transition: width .6s ease; }

/* ---------- Badges ---------- */
.badge { font-weight: 500; border-radius: 4px; padding: .3em .55em; }
.n-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: currentColor; margin-right: .35rem; }

/* ---------- Tareas ---------- */
.n-task-title { font-size: .98rem; font-weight: 600; margin: .25rem 0 1rem; }
.n-task-overdue { border-left: 3px solid var(--bs-danger); }
.n-status { font-size: .75rem; padding: .15rem .45rem; border-radius: 4px; background: rgba(55, 53, 47, .06); color: var(--n-muted); }
.n-status-en_progreso { background: rgba(35, 131, 226, .1);  color: #1f6fbf; }
.n-status-en_revision { background: rgba(144, 101, 176, .12); color: #6e4b8c; }
.n-status-bloqueada   { background: rgba(212, 76, 71, .1);   color: #b23b36; }

/* ---------- Listas y formularios ---------- */
.list-group-item { border-color: var(--n-border); }
.form-control, .form-select { border-color: rgba(55, 53, 47, .16); border-radius: 4px; }
.form-control:focus, .form-select:focus { border-color: rgba(35, 131, 226, .6); box-shadow: 0 0 0 3px rgba(35, 131, 226, .15); }
.btn-dark { background: var(--n-text); border-color: var(--n-text); }
.n-alert  { border-radius: var(--n-radius); border: 1px solid var(--n-border); }
.n-empty  { border: 1px dashed var(--n-border); border-radius: var(--n-radius); padding: 2rem; text-align: center; color: var(--n-muted); }

/* ==================================================================
   Tablero de seguimiento por desarrollador
   ================================================================== */
.n-main-wide { max-width: 1440px; }
@media (min-width: 992px) { .n-main-wide { padding: 2.75rem 2.5rem; } }

/* Grid proporcional: En curso (más ancho) · Necesito apoyo en · Lo que sigue */
.pp-board { display: grid; gap: 1.5rem; grid-template-columns: 1fr; }
@media (min-width: 768px) {
  .pp-board { grid-template-columns: 1fr 1fr; }
  .pp-board > .pp-col:first-child { grid-column: 1 / -1; }
}
@media (min-width: 1200px) {
  .pp-board { grid-template-columns: 1.35fr 1fr 1.05fr; }
  .pp-board > .pp-col:first-child { grid-column: auto; }
}
:root {
  --pp-navy:   #1f3a5f;
  --pp-teal:   #11806a;
  --pp-orange: #d9730d;
  --pp-panel:  #f0f3f7;
  --pp-line:   rgba(31, 58, 95, .28);
  --pp-thead:  #d3e9e5;
}

.pp-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: 1.5rem; }
.pp-head-main { flex: 1 1 420px; min-width: 0; }
.pp-dev-name { font-size: 2.6rem; font-weight: 700; color: var(--pp-navy); letter-spacing: -.01em; margin: 0 0 .6rem; }
.pp-rol-box { border: 1px solid var(--pp-line); padding: .45rem .7rem; max-width: 640px; color: var(--pp-navy); }
.pp-rol-box em { color: var(--n-muted); }

.pp-head-estado { display: flex; align-items: flex-start; gap: 1.25rem; padding-top: .5rem; }
.pp-estado-label { font-weight: 600; color: var(--pp-navy); padding-top: .55rem; white-space: nowrap; }
.pp-estado-pill {
  display: inline-block; min-width: 220px; text-align: center; border-radius: 999px;
  padding: .6rem 2rem; font-size: 1.05rem; font-weight: 600;
}
.pp-estado-motivo { font-size: .8rem; color: var(--n-muted); text-align: center; margin-top: .35rem; max-width: 260px; }

.pp-panel {
  background: var(--pp-panel); border: 1px solid var(--pp-line); border-radius: 2px;
  padding: 1.5rem; height: 100%;
}
.pp-panel-head { display: flex; gap: .6rem; margin-bottom: 1.5rem; }
.pp-icon-box {
  width: 64px; height: 64px; flex-shrink: 0; border: 1px solid var(--pp-line);
  display: flex; align-items: center; justify-content: center;
}
.pp-icon {
  width: 48px; height: 48px; border-radius: 50%; color: #fff; font-size: 1.35rem;
  display: flex; align-items: center; justify-content: center;
}
.pp-icon-teal   { background: var(--pp-teal); }
.pp-icon-orange { background: var(--pp-orange); }
.pp-icon-navy   { background: var(--pp-navy); }
.pp-panel-title {
  flex: 1; min-width: 0; margin: 0; border: 1px solid var(--pp-line); display: flex; align-items: center;
  padding: .35rem .75rem; font-size: 1.3rem; font-weight: 600; color: var(--pp-navy); line-height: 1.2;
}

.pp-table { background: #fff; border: 1px solid var(--pp-line); font-size: .92rem; }
.pp-table thead th {
  background: var(--pp-thead); color: var(--pp-navy); font-weight: 600;
  border-bottom: 0; padding: .85rem .6rem;
}
.pp-table td { padding: .7rem .6rem; vertical-align: middle; border-color: #e3e8ef; }
.pp-table td + td, .pp-table th + th { border-left: 1px solid #e3e8ef; }
.pp-actividad { color: var(--pp-navy); font-weight: 500; }
.pp-meta { font-size: .76rem; color: var(--n-muted); }
.pp-valor { font-style: italic; color: #5b6b80; }
.pp-col-avance { width: 128px; }
.pp-col-fecha  { width: 76px; white-space: nowrap; }
td.pp-col-fecha { color: #5b6b80; font-style: italic; }
.pp-col-accion { width: 48px; text-align: center; }
.pp-avance-form .form-control { max-width: 64px; }
.pp-mini-progress { height: 4px; margin-top: .4rem; }
.pp-vacio { color: var(--n-muted); font-style: italic; text-align: center; padding: 1.5rem .5rem !important; }

.pp-apoyo-box { background: var(--pp-panel); border: 1px solid var(--pp-line); padding: .75rem; min-height: 340px; }
.pp-apoyo + .pp-apoyo { border-top: 1px solid var(--pp-line); margin-top: .9rem; padding-top: .9rem; }
.pp-apoyo-vencido { border-left: 3px solid var(--bs-danger); padding-left: .6rem; }
.pp-apoyo-label { font-weight: 700; color: #1d2633; font-size: .92rem; margin-top: .35rem; display: block; }
.pp-apoyo-valor { font-style: italic; color: #5b6b80; margin-bottom: .35rem; }

.pp-dev-card { border-top: 3px solid transparent; }
.pp-borde-success { border-top-color: var(--bs-success); }
.pp-borde-warning { border-top-color: var(--bs-warning); }
.pp-borde-danger  { border-top-color: var(--bs-danger); }

@media (max-width: 575.98px) {
  .pp-dev-name { font-size: 2rem; }
  .pp-head-estado { flex-direction: column; gap: .4rem; }
  .pp-estado-pill { min-width: 0; width: 100%; }
}

/* ---------- Navegación móvil ---------- */
.min-w-0 { min-width: 0; }
.n-mobile-bar { background: var(--n-sidebar); border-bottom: 1px solid var(--n-border); padding: .75rem 1rem .5rem; }
.n-mobile-nav { display: flex; gap: .25rem; overflow-x: auto; padding-bottom: .25rem; }
.n-mobile-nav .n-nav-link { white-space: nowrap; }
@media (max-width: 767.98px) { .pp-apoyo-box { min-height: 0; } }

/* ---------- Chips de "Otros proyectos" ---------- */
.pp-otros { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; }
.pp-chip {
  display: inline-flex; align-items: center; gap: .35rem; font-size: .8rem; text-decoration: none;
  color: var(--pp-navy); border: 1px solid var(--pp-line); border-radius: 999px; padding: .15rem .6rem;
}
.pp-chip:hover { background: var(--n-hover); }
.pp-chip-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.pp-actividad a { text-decoration: none; }
.pp-actividad a:hover { text-decoration: underline; }

/* Los formularios no cambian de fondo al pasar el mouse (solo las tarjetas navegables) */
form.card:hover, section.card:hover, .card:has(table):hover { background-color: #fff; }

/* ---------- Matriz de permisos ---------- */
.pp-matriz th { white-space: nowrap; }
.pp-matriz-grupo td { background: var(--n-sidebar); font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--n-muted); }
.nav-tabs .nav-link { color: var(--n-muted); }
.nav-tabs .nav-link.active { color: var(--n-text); font-weight: 500; }
.table a.text-reset, .pp-matriz th a { text-decoration: none; }
.table a.text-reset:hover, .pp-matriz th a:hover { text-decoration: underline; }

/* ---------- Mapa de calor de riesgos ---------- */
.pp-heat { border-collapse: separate; border-spacing: 4px; }
.pp-heat td { width: 52px; height: 44px; text-align: center; font-weight: 700; border-radius: 4px; color: #1d2633; }
.pp-heat-success { background: #d7efe2; }
.pp-heat-warning { background: #fdecc0; }
.pp-heat-danger  { background: #f6d0d2; }
.pp-heat td.pp-heat-con.pp-heat-success { background: #2f9e64; color: #fff; }
.pp-heat td.pp-heat-con.pp-heat-warning { background: #f0b429; }
.pp-heat td.pp-heat-con.pp-heat-danger  { background: #d64550; color: #fff; }
.pp-heat-label { font-size: .75rem; color: var(--n-muted); text-align: center; font-weight: 500; padding: 0 4px; }
.pp-heat-eje { width: 18px; padding: 0; }
.pp-heat-eje span { display: block; transform: rotate(-90deg); font-size: .72rem; color: var(--n-muted); white-space: nowrap; width: 18px; }
.pp-heat-eje-x { font-size: .72rem; color: var(--n-muted); text-align: center; font-weight: 500; }
.pp-heat-dot { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: .3rem; vertical-align: -1px; }
.pp-chip-activo { background: var(--pp-navy); color: #fff !important; border-color: var(--pp-navy); }
/* Fila de riesgo cerrado/mitigado: atenúa el contenido, no los botones */
.pp-fila-inactiva > td:not(:last-child) { opacity: .5; }

/* ---------- Primeros pasos de un proyecto nuevo ---------- */
.pp-pasos { border-left: 3px solid var(--pp-navy); }
.pp-pasos .bi-1-circle, .pp-pasos .bi-2-circle, .pp-pasos .bi-3-circle { color: var(--pp-navy); }

/* ---------- Logo de la empresa en la barra de opciones ---------- */
.n-logo { display: block; padding: .75rem .6rem .25rem; text-decoration: none; }
.n-logo img { display: block; max-width: 100%; max-height: 48px; object-fit: contain; }
.n-logo-app { display: block; margin-top: .5rem; font-size: .78rem; font-weight: 600; letter-spacing: .04em;
              text-transform: uppercase; color: var(--n-muted); }
.n-logo-movil { padding: 0; }
.n-logo-movil img { max-height: 32px; }

/* ---------- Selector de íconos del proyecto ---------- */
.pp-icono-actual { width: 96px; height: 64px; font-size: 2rem; padding: 0; }
.pp-iconos { display: grid; gap: .6rem; }
.pp-iconos-grupo { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem; }
.pp-iconos-titulo { width: 88px; font-size: .75rem; color: var(--n-muted); }
.pp-icono {
  width: 38px; height: 38px; font-size: 1.3rem; line-height: 1; padding: 0;
  background: transparent; border: 1px solid transparent; border-radius: 6px; cursor: pointer;
}
.pp-icono:hover { background: var(--n-hover); border-color: var(--n-border); }
.pp-icono:focus-visible { outline: 2px solid var(--pp-navy); outline-offset: 1px; }
.pp-icono.activo { background: rgba(31, 58, 95, .1); border-color: var(--pp-navy); }
@media (max-width: 575.98px) { .pp-iconos-titulo { width: 100%; } }
