/* =============================================================================
   Panel de gestion.

   Igual que el area publica, este fichero NO define colores: los tokens `--wm-*`
   los inyecta Branding::css_vars('oscuro') en el <head>. El panel mantiene el
   modo oscuro (es una herramienta de trabajo, no una pagina de marca) pero
   tintado hacia el burdeos, no hacia un gris neutro.
   ============================================================================= */
:root { font-size: 15px; }

* { box-sizing: border-box; }
body {
    margin: 0;
    font-family: var(--wm-font);
    background: var(--wm-bg);
    color: var(--wm-ink);
    -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
code { background: var(--wm-surface-2); padding: 1px 5px; border-radius: 5px; font-size: .85em; }

/* Los bordes van con `--wm-line-soft`, nunca con `--wm-line` a plena opacidad:
   es la regla del sistema v3 para el esquema claro, y la que ya cumplen
   public.css y portal.css. En oscuro los dos tokens valen lo mismo, asi que el
   panel de siempre no cambia ni un pixel. */

/* --- Shell ---------------------------------------------------------------- */
.wm-shell { display: flex; min-height: 100vh; }
.wm-sidebar {
    width: 248px; flex: 0 0 248px;
    background: var(--wm-surface); border-right: 1px solid var(--wm-line-soft);
    padding: 18px 14px; display: flex; flex-direction: column; gap: 14px;
}
.wm-main { flex: 1; display: flex; flex-direction: column; min-width: 0; }

/* --- Marca ---------------------------------------------------------------- */
/* Sobre el fondo oscuro va la version blanca del wordmark (Branding::logo). */
.wm-brand { display: block; padding: 6px 6px 12px; }
.wm-brand img { height: 30px; width: auto; display: block; }
.wm-brand small {
    display: block; margin-top: 9px;
    color: var(--wm-muted); font-weight: 600; font-size: .66rem;
    text-transform: uppercase; letter-spacing: .08em; white-space: nowrap;
}
.wm-brand-lg { text-align: center; padding: 0; margin-bottom: 26px; }
.wm-brand-lg img { height: 38px; margin: 0 auto; }

/* --- Navegacion ----------------------------------------------------------- */
.wm-nav { display: flex; flex-direction: column; gap: 2px; }

/* Grupos plegables. El titulo del grupo ES el tirador: pinchar en "Configuracion"
   la abre y la cierra, sin una flechita minuscula que haya que cazar. */
.wm-nav-group { display: flex; flex-direction: column; gap: 2px; }
.wm-nav-sep {
    color: var(--wm-muted); font-size: .68rem; font-weight: 600; text-transform: uppercase;
    letter-spacing: .09em; margin: 16px 8px 5px;
}
summary.wm-nav-sep {
    display: flex; align-items: center; gap: 6px;
    cursor: pointer; user-select: none; list-style: none;
}
summary.wm-nav-sep::-webkit-details-marker { display: none; }
/* Cheurón dibujado con bordes: sin icono que cargar. */
summary.wm-nav-sep::after {
    content: ''; width: 5px; height: 5px; margin-bottom: 2px;
    border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
    transform: rotate(-45deg); transition: transform .15s;
}
.wm-nav-group[open] > summary.wm-nav-sep::after { transform: rotate(45deg); margin-bottom: 0; }
summary.wm-nav-sep:hover { color: var(--wm-ink); }

.wm-nav-item {
    display: flex; align-items: center; gap: 11px;
    padding: 9px 11px; border-radius: 10px; color: var(--wm-muted);
    font-size: .92rem; transition: background .12s, color .12s;
}
.wm-nav-item:hover { background: var(--wm-surface-2); color: var(--wm-ink); }
.wm-nav-item.is-active { background: var(--wm-primary); color: #fff; }
.wm-nav-item.is-active .wm-icon { color: var(--wm-accent); }
.wm-icon { flex: 0 0 auto; }

/* Contador de pendientes. Va pegado a la derecha y solo aparece si hay algo:
   un cero permanente deja de leerse a los dos dias. */
.wm-nav-badge {
    margin-left: auto; font-style: normal; font-size: .7rem; font-weight: 700;
    min-width: 19px; padding: 1px 6px; border-radius: 999px; text-align: center;
    background: var(--wm-primary); color: #fff; line-height: 1.5;
}
.wm-nav-item.is-active .wm-nav-badge { background: rgba(255, 255, 255, .22); }

/* --- Barra superior ------------------------------------------------------- */
.wm-topbar {
    display: flex; align-items: center; justify-content: space-between; gap: 16px;
    padding: 16px 26px; border-bottom: 1px solid var(--wm-line-soft);
    background: var(--wm-surface);
}
.wm-topbar h1 { font-size: 1.15rem; font-weight: 600; margin: 0; }
.wm-user { display: flex; align-items: center; gap: 14px; color: var(--wm-muted); font-size: .9rem; }

/* Interruptor de tema: solo el icono, que la barra ya tiene dos botones de
   texto y un tercero la convertiria en una fila de palabras. */
.wm-btn-icono { display: flex; align-items: center; padding: 7px 9px; color: var(--wm-muted); }
.wm-btn-icono:hover { color: var(--wm-ink); }
/* Visible para un lector de pantalla, no para el ojo: el icono solo no dice
   nada a quien no lo ve. */
.wm-solo-lectores {
    position: absolute; width: 1px; height: 1px; overflow: hidden;
    clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

/* --- Contenido ------------------------------------------------------------ */
.wm-content { padding: 26px; }

/* --- Tarjetas ------------------------------------------------------------- */
.wm-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; margin-bottom: 22px; }
.wm-card { background: var(--wm-surface); border: 1px solid var(--wm-line-soft); border-radius: var(--wm-radius); padding: 16px 18px; }
.wm-card-k { color: var(--wm-muted); font-size: .74rem; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; }
.wm-card-v { font-size: 1.75rem; font-weight: 700; margin-top: 4px; font-variant-numeric: tabular-nums; }

/* --- Paneles y tablas ----------------------------------------------------- */
.wm-panel { background: var(--wm-surface); border: 1px solid var(--wm-line-soft); border-radius: var(--wm-radius); padding: 20px 22px; }
.wm-panel h2 { margin: 0 0 6px; font-size: 1.05rem; font-weight: 600; }
.wm-muted { color: var(--wm-muted); }
.wm-table { width: 100%; border-collapse: collapse; margin-top: 14px; }
.wm-table th, .wm-table td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--wm-line-soft); vertical-align: top; }
.wm-table th { color: var(--wm-muted); font-size: .72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; }

/* --- Etiquetas y avisos --------------------------------------------------- */
.wm-tag { display: inline-block; padding: 3px 10px; border-radius: var(--wm-radius-pill); font-size: .72rem; font-weight: 500; background: var(--wm-surface-2); color: var(--wm-muted); }
.wm-tag-on { background: var(--wm-ok-soft); color: var(--wm-ok-ink); }
.wm-tag-off { background: var(--wm-neutral-soft); color: var(--wm-muted); }
.wm-alert { background: var(--wm-surface-2); border: 1px solid var(--wm-line-soft); border-radius: var(--wm-radius); padding: 12px 14px; margin-top: 12px; }
.wm-alert-warn { border-color: var(--wm-warn); }
.wm-alert-error { border-color: var(--wm-error); color: var(--wm-error-ink); }

/* --- Botones -------------------------------------------------------------- */
.wm-btn {
    display: inline-block; padding: 9px 16px; border-radius: 10px; cursor: pointer; font: inherit;
    font-size: .9rem; font-weight: 500; border: 1px solid var(--wm-line-soft);
    background: var(--wm-surface-2); color: var(--wm-ink); transition: background .12s, border-color .12s;
}
.wm-btn:hover { border-color: var(--wm-line-strong); }
.wm-btn-primary { background: var(--wm-primary); border-color: var(--wm-primary); color: #fff; width: 100%; font-weight: 600; }
.wm-btn-primary:hover { background: var(--wm-primary-alt); border-color: var(--wm-primary-alt); }
.wm-btn-ghost { background: transparent; }
.wm-btn-ghost:hover { background: var(--wm-surface-2); }

/* --- Acceso --------------------------------------------------------------- */
.wm-login { display: flex; align-items: center; justify-content: center; min-height: 100vh; padding: 20px; }
.wm-login-card {
    background: var(--wm-surface); border: 1px solid var(--wm-line-soft);
    border-radius: var(--wm-radius-card); padding: 36px 32px; width: 100%; max-width: 380px;
}
.wm-login-card-wide { max-width: 460px; }
.wm-login-card h1 { font-size: 1.15rem; font-weight: 600; text-align: center; margin: 0 0 20px; }
.wm-login-card label { display: block; margin-bottom: 14px; font-size: .8rem; font-weight: 500; color: var(--wm-muted); }
.wm-login-card input {
    width: 100%; margin-top: 6px; padding: 11px 13px; border-radius: 10px;
    border: 1px solid var(--wm-line-soft); background: var(--wm-bg); color: var(--wm-ink); font: inherit;
}
.wm-login-card input:focus { outline: none; border-color: var(--wm-primary-alt); }
/* Casilla "recuerda este dispositivo": la etiqueta no debe ocupar toda la
   anchura como el resto de campos del formulario de acceso. */
.wm-login-card .wm-check {
    display: flex; align-items: flex-start; gap: 8px;
    margin: 2px 0 8px; font-weight: 400; line-height: 1.35;
}
.wm-login-card .wm-check input[type="checkbox"] { width: auto; margin: 2px 0 0; flex: 0 0 auto; }
.wm-hint { font-size: .75rem; margin: 0 0 14px; }
.wm-auth-foot { text-align: center; font-size: .85rem; margin: 12px 0 0; }
.wm-auth-foot a { color: var(--wm-link); }
.wm-qr { text-align: center; margin: 10px 0; }
.wm-qr img { background: #fff; padding: 8px; border-radius: 10px; }
.wm-codes { list-style: none; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 16px 0; }
.wm-codes li { background: var(--wm-bg); border: 1px solid var(--wm-line-soft); border-radius: 8px; padding: 8px; text-align: center; font-variant-numeric: tabular-nums; }

/* --- Formularios y varios ------------------------------------------------- */
.wm-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.wm-btn-inline { width: auto; display: inline-block; }
.wm-btn-sm { padding: 6px 12px; font-size: .8rem; }
.wm-form label { display: block; margin-bottom: 14px; font-size: .8rem; font-weight: 500; color: var(--wm-muted); }
.wm-form input[type=text], .wm-form input[type=email], .wm-form input[type=password] {
    width: 100%; margin-top: 6px; padding: 10px 12px; border-radius: 10px;
    border: 1px solid var(--wm-line-soft); background: var(--wm-bg); color: var(--wm-ink); font: inherit;
}
.wm-form input:focus, .wm-form select:focus, .wm-form textarea:focus { outline: none; border-color: var(--wm-primary-alt); }
.wm-check { display: flex; align-items: center; gap: 8px; color: var(--wm-ink) !important; margin-bottom: 8px; }
.wm-check input { width: auto; margin: 0; }
.wm-fieldset { border: 1px solid var(--wm-line-soft); border-radius: 10px; padding: 12px 14px; margin: 8px 0 18px; }
.wm-fieldset legend { color: var(--wm-muted); font-size: .78rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; padding: 0 6px; }
.wm-form-actions { display: flex; gap: 10px; align-items: center; }
.wm-form select, .wm-form textarea {
    width: 100%; margin-top: 6px; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--wm-line-soft);
    background: var(--wm-bg); color: var(--wm-ink); font: inherit;
}
.wm-form textarea { resize: vertical; }
.wm-form select:disabled { opacity: .6; }
.wm-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.wm-grid3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 16px; }
@media (max-width: 720px) { .wm-grid2, .wm-grid3 { grid-template-columns: 1fr; } }
.wm-form input[type=date], .wm-form input[type=number], .wm-form input[type=tel] {
    width: 100%; margin-top: 6px; padding: 10px 12px; border-radius: 10px;
    border: 1px solid var(--wm-line-soft); background: var(--wm-bg); color: var(--wm-ink); font: inherit;
}

/* --- Embudo de venta ------------------------------------------------------ */
/* La barra de pasos es a la vez el estado y el mando: cada paso es un boton que
   mueve la ficha, y el actual va marcado y desactivado. */
.wm-embudo { margin: 16px 0 6px; }
.wm-pasos { display: flex; flex-wrap: wrap; gap: 8px; }
.wm-paso {
    flex: 1 1 150px; display: flex; align-items: center; gap: 10px;
    padding: 12px 14px; border-radius: var(--wm-radius); cursor: pointer;
    border: 1px solid var(--wm-line-soft); background: var(--wm-surface-2);
    color: var(--wm-muted); font: inherit; font-size: .88rem; text-align: left;
    transition: border-color .14s, color .14s, background .14s;
}
.wm-paso:hover:not(:disabled) { border-color: var(--wm-primary-alt); color: var(--wm-ink); }
.wm-paso-n {
    flex: 0 0 auto; width: 24px; height: 24px; border-radius: var(--wm-radius-pill);
    display: flex; align-items: center; justify-content: center;
    background: var(--wm-bg); font-size: .75rem; font-weight: 700; font-variant-numeric: tabular-nums;
}
.wm-paso-t { font-weight: 500; }
.wm-paso.is-hecho { color: var(--wm-ink); border-color: var(--wm-line-soft); }
.wm-paso.is-hecho .wm-paso-n { background: var(--wm-primary); color: #fff; }
.wm-paso.is-actual {
    background: var(--wm-primary); border-color: var(--wm-primary); color: #fff;
    cursor: default; opacity: 1;
}
.wm-paso.is-actual .wm-paso-n { background: rgba(255,255,255,.22); color: #fff; }
.wm-embudo-pie { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-top: 12px; }
.wm-embudo-pie .wm-check { margin: 0; font-size: .84rem; color: var(--wm-muted) !important; }

/* Datos de cabecera de la venta: responsable, ultimo y proximo contacto. */
.wm-venta-datos {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px;
    margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--wm-line-soft);
}
.wm-venta-datos label {
    display: block; margin: 0 0 4px; font-size: .72rem; font-weight: 600;
    text-transform: uppercase; letter-spacing: .06em; color: var(--wm-muted);
}
.wm-venta-datos select { width: 100%; padding: 8px 10px; border-radius: 10px;
    border: 1px solid var(--wm-line-soft); background: var(--wm-bg); color: var(--wm-ink); font: inherit; font-size: .9rem; }
.wm-vencido { color: var(--wm-error); font-weight: 600; }

/* Etiqueta de estado comercial. Solo el estado final lleva color propio: si
   todos gritan, no se distingue ninguno. */
.wm-etapa {
    display: inline-block; padding: 3px 10px; border-radius: var(--wm-radius-pill);
    font-size: .72rem; font-weight: 600; background: var(--wm-surface-2); color: var(--wm-muted);
    border: 1px solid var(--wm-line-soft); white-space: nowrap;
}
.wm-etapa-proposal { color: var(--wm-ink); }
.wm-etapa-won { background: var(--wm-primary); border-color: var(--wm-primary); color: #fff; }
.wm-etapa-lost { opacity: .6; }
.wm-fila-alerta td { background: var(--wm-surface-2); }
.wm-tab-alerta { border-color: var(--wm-error); color: var(--wm-ink); }

/* --- Historial de contactos ---------------------------------------------- */
.wm-historial { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; }
.wm-historial li {
    position: relative; padding: 0 0 18px 22px; border-left: 2px solid var(--wm-line-soft);
}
.wm-historial li:last-child { border-left-color: transparent; padding-bottom: 0; }
.wm-historial li::before {
    content: ''; position: absolute; left: -6px; top: 6px; width: 10px; height: 10px;
    border-radius: var(--wm-radius-pill); background: var(--wm-primary-alt);
}
.wm-historial li.es-estado::before { background: var(--wm-muted); }
.wm-historial-cab { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-size: .9rem; }
.wm-historial p { margin: 6px 0 0; font-size: .93rem; }

/* Los dos planos, uno al lado del otro: la diferencia entre ellos es la que
   hay que ver antes de pulsar. */
.wm-planos { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 14px; }
.wm-planos > div { border: 1px solid var(--wm-line-soft); border-radius: var(--wm-radius); padding: 16px 18px; }
.wm-planos h3 { margin: 0 0 6px; font-size: .95rem; }
.wm-planos code { font-size: .8rem; word-break: break-all; }
@media (max-width: 720px) { .wm-planos { grid-template-columns: 1fr; } }
.wm-inline { margin: 0; }
.wm-search select {
    padding: 8px 12px; border-radius: 10px; border: 1px solid var(--wm-line-soft);
    background: var(--wm-bg); color: var(--wm-ink); font: inherit; font-size: .88rem;
}

/* --- Previsualizacion de email ------------------------------------------- */
.wm-preview { border: 1px solid var(--wm-line-soft); border-radius: var(--wm-radius); overflow: hidden; }
.wm-preview-subject { background: var(--wm-surface-2); padding: 10px 14px; border-bottom: 1px solid var(--wm-line-soft); font-size: .9rem; }
/* El email va en un iframe: es un documento completo y trae su propio fondo. */
.wm-preview-frame { display: block; width: 100%; height: 560px; border: 0; background: #fff; }

/* --- Filtros y buscador de listados -------------------------------------- */
.wm-filters { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: space-between; margin: 14px 0 4px; }
.wm-tabs { display: flex; gap: 4px; flex-wrap: wrap; }
.wm-tab { padding: 6px 13px; border-radius: var(--wm-radius-pill); border: 1px solid var(--wm-line-soft); color: var(--wm-muted); font-size: .86rem; }
.wm-tab:hover { background: var(--wm-surface-2); color: var(--wm-ink); }
.wm-tab.is-active { background: var(--wm-primary); border-color: var(--wm-primary); color: #fff; }
.wm-tab-n { opacity: .75; margin-left: 3px; font-variant-numeric: tabular-nums; }
.wm-search { display: flex; gap: 6px; align-items: center; }
.wm-search input {
    padding: 8px 12px; border-radius: 10px; border: 1px solid var(--wm-line-soft);
    background: var(--wm-bg); color: var(--wm-ink); font: inherit; font-size: .88rem; min-width: 260px;
}
.wm-search input:focus { outline: none; border-color: var(--wm-primary-alt); }

/* Tabla clave-valor para fichas de detalle */
.wm-table-kv th { width: 230px; color: var(--wm-muted); font-weight: 500; text-transform: none; letter-spacing: 0; font-size: .9rem; }
.wm-table-kv td { font-size: .93rem; }
.wm-kv-sec {
    color: var(--wm-ink) !important; text-transform: uppercase !important; font-size: .72rem !important;
    letter-spacing: .08em !important; font-weight: 700 !important; padding-top: 18px !important; background: transparent;
}
