* { box-sizing: border-box; margin: 0; padding: 0; }

/**
 * Sistema de diseño de Educamente / SoltechPty.
 * Los 3 colores de marca se tomaron con pixel-picking directo de imagen/icon-soltechpty.png
 * (el logo real), no a ojo. Se usan en TODAS las pantallas: cambiar estos 3 valores cambia el
 * color de todo el sitio a la vez. Referencia completa en local-dev/DESIGN.md.
 */
:root {
    --brand: #137DC5;        /* azul oscuro: estructura — encabezados, botones, bordes activos */
    --brand-light: #01ABED;  /* azul claro: acentos interactivos — foco, "procesando" */
    --brand-accent: #FB9C2A; /* naranja: detalle de marca — resaltes puntuales, no para áreas grandes */
    --brand-dark: #0F5F96;   /* azul oscuro -15%: hover/active de botones de marca */

    /* Colores de estado: significan lo mismo en cualquier producto (verde = éxito, rojo = error,
       ámbar = alerta). A propósito NO son los de marca: perderían el significado. */
    --ok: #15803d;
    --err: #b91c1c;
    --warn: #b45309;
    --info: var(--brand-light);

    --ink: #111827;
    --muted: #6b7280;
    --faint: #cbd5e0;        /* texto deliberadamente casi invisible (ej. documento en Paso 2) */
    --line: #e5e7eb;
    --bg: #ffffff;           /* fondo blanco en todas las pantallas */

    --meduca-bg: #BAE6FD;    /* azul celeste: fondo sólido para personas marcadas "meduca" */
}

html { font-size: 18px; }
body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    color: var(--ink);
    background: var(--bg);
    min-height: 100vh;
}

/* === ENCABEZADO === */
.topbar {
    background: var(--brand);
    color: #fff;
    padding: 0.6rem 1rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}
.brand { font-size: 1rem; }
.status { display: flex; gap: 0.8rem; align-items: center; font-size: 0.85rem; flex-wrap: wrap; }
.dot { font-weight: 700; }
.dot.on  { color: #86efac; }
.dot.off { color: #fca5a5; }
.pill { background: #fbbf24; color: #111; font-weight: 700; padding: 0.1rem 0.6rem; border-radius: 999px; }
.faint { opacity: 0.75; }

.link-btn {
    background: none;
    border: none;
    text-decoration: underline;
    font-size: 0.85rem;
    cursor: pointer;
    padding: 0 0.3rem;
}
.link-btn.light { color: rgba(255, 255, 255, 0.75); }
.link-btn.light:hover { color: #fff; }
a.link-btn { display: inline-block; }

/* === NAV DEL ADMINISTRADOR === */
.admin-nav { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.admin-nav a {
    color: rgba(255, 255, 255, 0.85);
    text-decoration: none;
    font-size: 0.85rem;
    padding: 0.35rem 0.7rem;
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.12);
}
.admin-nav a:hover { background: rgba(255, 255, 255, 0.22); }

/* === PASO 1: BÚSQUEDA Y REGISTRO === */
.sticky {
    position: sticky;
    top: 0;
    z-index: 5;
    background: var(--bg);
    padding: 0.7rem 1rem 0.6rem;
    max-width: 900px;
    margin: 0 auto;
}
.stats { display: flex; gap: 1.4rem; font-size: 0.85rem; color: var(--muted); margin-bottom: 0.5rem; flex-wrap: wrap; }
.stats b { color: var(--ink); font-size: 1rem; }

.search {
    width: 100%;
    font-size: 1.8rem;
    padding: 0.7rem 1rem;
    border: 3px solid var(--brand);
    border-radius: 10px;
    outline: none;
    letter-spacing: 0.04em;
}
.search:focus { border-color: var(--info); box-shadow: 0 0 0 4px rgba(1, 171, 237, 0.2); }

.banner {
    margin-top: 0.6rem;
    min-height: 5.2rem;
    border-radius: 10px;
    padding: 0.7rem 1rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    color: #fff;
}
.banner[hidden] { display: none; }
.banner.idle    { background: #e5e7eb; color: var(--muted); font-size: 0.95rem; }
.banner.pending { background: var(--info); }
.banner.ok      { background: var(--ok); }
.banner.error   { background: var(--err); }
.banner.offline { background: var(--warn); }
.banner.hint    { background: #374151; }
.banner .title  { font-size: 1.5rem; font-weight: 800; line-height: 1.15; }
.banner .detail { font-size: 1.05rem; opacity: 0.95; margin-top: 0.15rem; }
.banner button {
    background: rgba(255, 255, 255, 0.2);
    color: #fff;
    border: 2px solid rgba(255, 255, 255, 0.7);
    border-radius: 8px;
    font-size: 1rem;
    font-weight: 700;
    padding: 0.6rem 1rem;
    cursor: pointer;
    white-space: nowrap;
}
.banner button:hover { background: rgba(255, 255, 255, 0.35); }

.main { max-width: 900px; margin: 0 auto; padding: 0 1rem 2rem; }
.count { font-size: 0.85rem; color: var(--muted); padding: 0.3rem 0.2rem; min-height: 1.6rem; }

.results { list-style: none; background: #fff; border-radius: 10px; overflow: hidden; border: 1px solid var(--line); }
.results:empty { display: none; }
.row {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.8rem 1rem;
    border-bottom: 1px solid var(--line);
    border-left: 6px solid transparent;
    min-height: 3.4rem;
}
.row:last-child { border-bottom: none; }
.row.done { color: var(--muted); }
.row.meduca { background: var(--meduca-bg); }
.row .id { font-family: ui-monospace, Consolas, monospace; font-size: 1rem; font-weight: 700; color: var(--muted); min-width: 3.5rem; }
.row .doc { font-family: ui-monospace, Consolas, monospace; font-size: 1.25rem; font-weight: 700; min-width: 8.5rem; }
.row .name { flex: 1; font-size: 1.15rem; }
.row .state { font-size: 0.9rem; text-align: right; }
.row .state.ok   { color: var(--ok); }
.row .state.wait { color: var(--warn); font-weight: 700; }
.row .state.dup  { color: var(--err); font-weight: 700; }
.row button {
    background: var(--brand);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 1rem;
    font-weight: 700;
    padding: 0.7rem 1.3rem;
    min-height: 48px;
    cursor: pointer;
}
.row button:hover { background: var(--brand-dark); }
.row button:disabled { opacity: 0.5; cursor: wait; }
/* ============================================================================================
   LISTADO DEL ADMINISTRADOR (listado.php). Todo va bajo body.listado: es una pantalla de
   consulta para una persona sentada frente a un computador, no una estación de mesa como el
   Paso 1 — por eso es compacta y densa (filas de una línea, columnas alineadas). Los fondos
   siguen siendo solo blanco o celeste meduca.
   ============================================================================================ */
body.listado .sticky { max-width: 1200px; padding: 0.5rem 1rem 0.4rem; display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 1.2rem; }
body.listado .sticky .search { order: 1; flex: 1 1 18rem; width: auto; font-size: 0.95rem; padding: 0.4rem 0.8rem; border-width: 2px; border-radius: 8px; letter-spacing: 0; }
body.listado .sticky .search:focus { box-shadow: 0 0 0 3px rgba(1, 171, 237, 0.2); }
body.listado .sticky .stats { order: 2; margin: 0; gap: 1rem; font-size: 0.78rem; }
body.listado .sticky .stats b { font-size: 0.88rem; }
body.listado .sticky .banner { order: 3; flex: 1 1 100%; margin: 0; min-height: 0; padding: 0.3rem 0.7rem; border-radius: 8px; }
body.listado .banner[hidden] { display: none; }
body.listado .banner .title { font-size: 0.88rem; font-weight: 700; }
body.listado .banner .detail { font-size: 0.78rem; margin-top: 0; }
body.listado .banner.idle { font-size: 0.8rem; }
body.listado .banner button { font-size: 0.8rem; padding: 0.25rem 0.7rem; border-width: 1px; }

body.listado .main { max-width: 1200px; padding-bottom: 1.5rem; }

/* Filtros: una sola barra compacta; el filtro activo se remarca con el azul de marca */
body.listado .filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 0.4rem 0.8rem; margin: 0.3rem 0 0.2rem; }
body.listado .filters label { display: flex; flex-direction: column; gap: 0.1rem; font-size: 0.68rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted); flex: 0 1 9.5rem; min-width: 7rem; }
body.listado .filters select {
    background: #fff;
    color: var(--ink);
    border: 1px solid #cbd5e0;
    border-radius: 6px;
    font-size: 0.82rem;
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    padding: 0.25rem 0.4rem;
    min-height: 32px;
    cursor: pointer;
}
body.listado .filters select:hover:not(:disabled) { border-color: var(--brand); }
body.listado .filters select:focus-visible { outline: 2px solid var(--info); outline-offset: 1px; }
body.listado .filters select.active { border-color: var(--brand); border-width: 2px; color: var(--brand-dark); font-weight: 700; }
body.listado .filters select:disabled { opacity: 0.5; cursor: not-allowed; }
body.listado .btn-limpiar {
    background: none;
    border: none;
    color: var(--brand-dark);
    font-size: 0.82rem;
    font-weight: 700;
    text-decoration: underline;
    padding: 0.3rem 0.4rem;
    min-height: 32px;
    cursor: pointer;
}
body.listado .btn-limpiar:hover:not(:disabled) { color: var(--brand); }
body.listado .btn-limpiar:disabled { color: var(--muted); text-decoration: none; opacity: 0.6; cursor: default; }

/* Conteo (izquierda) y paginación (derecha) en la misma línea */
body.listado .list-bar { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem 1rem; flex-wrap: wrap; min-height: 2.1rem; }
body.listado .count { padding: 0.2rem 0; min-height: 0; font-size: 0.8rem; }
body.listado .pager { display: flex; align-items: center; gap: 0.25rem; flex-wrap: wrap; margin: 0; }
body.listado .pager[hidden] { display: none; }
body.listado #pagerBottom { justify-content: flex-end; margin-top: 0.5rem; }
body.listado .pager button {
    background: #fff;
    color: var(--ink);
    border: 1px solid #cbd5e0;
    border-radius: 6px;
    font-size: 0.85rem;
    font-weight: 700;
    padding: 0 0.5rem;
    min-height: 30px;
    min-width: 30px;
    cursor: pointer;
}
body.listado .pager button:hover:not(:disabled) { background: var(--brand); border-color: var(--brand); color: #fff; }
body.listado .pager button:disabled { opacity: 0.35; cursor: default; }
body.listado .pager-info { font-size: 0.8rem; font-weight: 700; color: var(--muted); padding: 0 0.4rem; }

/* Tabla: encabezado + filas comparten las mismas 7 columnas */
body.listado .list-head,
body.listado .row {
    display: grid;
    grid-template-columns: 3.2rem 7.5rem minmax(0, 1fr) 4.4rem 6.5rem minmax(8rem, 12rem) 8.8rem;
    align-items: center;
    gap: 0 0.8rem;
    padding: 0.3rem 0.8rem;
}
body.listado .list-head {
    border: 1px solid var(--line);
    border-bottom: 2px solid var(--line);
    border-radius: 8px 8px 0 0;
    background: #fff;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--muted);
}
body.listado .list-head[hidden] { display: none; }
body.listado .results { border-top: none; border-radius: 0 0 8px 8px; }
body.listado .row { min-height: 2.3rem; border-left: none; }
body.listado .row .id { font-size: 0.75rem; font-weight: 600; min-width: 0; }
body.listado .row .doc { font-size: 0.88rem; font-weight: 600; min-width: 0; }
body.listado .row .name { flex: none; font-size: 0.92rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.listado .row .grupo,
body.listado .row .mesa { font-size: 0.8rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body.listado .row .state { font-size: 0.78rem; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body.listado .row .estado-select {
    width: 100%;
    background: #fff;
    color: var(--ink);
    border: 1px solid #cbd5e0;
    border-radius: 6px;
    font-size: 0.8rem;
    font-weight: 600;
    padding: 0.15rem 0.3rem;
    min-height: 30px;
    cursor: pointer;
}
body.listado .row .estado-select:hover:not(:disabled) { border-color: var(--brand); }
body.listado .row .estado-select:focus-visible { outline: 2px solid var(--info); outline-offset: 1px; }
body.listado .row .estado-select:disabled { opacity: 0.5; cursor: wait; }

/* Pantallas angostas: se apila cada persona en dos líneas y se oculta el encabezado */
@media (max-width: 760px) {
    body.listado .list-head { display: none; }
    body.listado .results { border-top: 1px solid var(--line); border-radius: 8px; }
    body.listado .row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.15rem 0.6rem; padding: 0.45rem 0.7rem; }
    body.listado .row .id { order: 1; }
    body.listado .row .doc { order: 2; }
    body.listado .row .cambiar { order: 3; margin-left: auto; width: 8.8rem; }
    body.listado .row .name { order: 4; flex: 1 1 100%; }
    body.listado .row .grupo { order: 5; }
    body.listado .row .mesa { order: 6; }
    body.listado .row .state { order: 7; }
    body.listado .filters label { flex: 1 1 7rem; }
}

.conflicts {
    margin-top: 1.2rem;
    background: #fffbeb;
    border: 2px solid var(--warn);
    border-radius: 10px;
    padding: 0.8rem 1rem;
}
.conflicts h2 { font-size: 1.05rem; color: var(--warn); }
.conflicts-help { font-size: 0.85rem; color: var(--muted); margin: 0.2rem 0 0.6rem; }
.conflicts li { list-style: none; display: flex; justify-content: space-between; gap: 1rem; align-items: center; padding: 0.4rem 0; border-top: 1px solid #fde68a; font-size: 0.95rem; }
.conflicts button { border: 1px solid var(--warn); background: #fff; color: var(--warn); border-radius: 6px; padding: 0.3rem 0.7rem; cursor: pointer; }

/* === PASO 2: TABLERO DE 4 COLUMNAS === */
.paso2-toolbar {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.7rem 1rem;
}
.paso2-summary { font-size: 1rem; color: var(--muted); }

.board {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.8rem;
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 0.8rem 1.5rem;
    align-items: start;
}
.board-col {
    background: #f7fafc;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    padding: 0.6rem;
    min-height: 200px;
}
.board-col-title {
    text-align: center;
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--brand);
    padding: 0.3rem 0 0.6rem;
    border-bottom: 1px solid #e2e8f0;
    margin-bottom: 0.6rem;
}
.board-col-list {
    list-style: none;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 0.5rem;
    max-height: 78vh;
    overflow-y: auto;
}

/* Jerarquía a propósito: el NÚMERO es lo primero que se lee, el NOMBRE confirma quién es,
   y el documento queda casi invisible porque en este paso no hace falta verlo. */
.card {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-top: 4px solid var(--brand-accent);
    border-radius: 10px;
    padding: 0.7rem 0.6rem;
    aspect-ratio: 1 / 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 0.25rem;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(19, 125, 197, 0.08);
}
.card-id { font-family: ui-monospace, Consolas, monospace; font-size: 1.5rem; font-weight: 800; color: var(--brand); line-height: 1; }
.card-name { font-size: 0.85rem; font-weight: 600; color: #2d3748; line-height: 1.2; }
.card-doc { font-family: ui-monospace, Consolas, monospace; font-size: 0.6rem; color: var(--faint); }
.card-in { animation: card-in 0.4s ease-out; }
@keyframes card-in {
    from { opacity: 0; transform: scale(0.85); }
    to   { opacity: 1; transform: scale(1); }
}

/* Tocar una tarjeta la entrega: se ve y se comporta como un botón. */
.card { cursor: pointer; transition: transform 0.1s ease, box-shadow 0.15s ease; }
.card:hover { border-color: var(--brand); box-shadow: 0 2px 8px rgba(19, 125, 197, 0.18); transform: translateY(-1px); }
.card:focus-visible { outline: 3px solid var(--brand-light); outline-offset: 1px; }
.card.entregando { opacity: 0.45; cursor: wait; pointer-events: none; }
.card.meduca { background: var(--meduca-bg); }

.paso2-note { text-align: center; color: var(--faint); font-size: 0.8rem; padding: 0.5rem 1rem 1.5rem; }

/* === SELECTOR DE UNA SOLA COLUMNA (celular) === */
.col-selector-label { display: flex; align-items: center; gap: 0.4rem; font-size: 0.85rem; color: var(--muted); }
.col-selector-label select {
    padding: 0.3rem 0.5rem;
    border: 1px solid var(--line);
    border-radius: 6px;
    font-size: 0.9rem;
    background: #fff;
}
.board-una-columna { grid-template-columns: 1fr; max-width: 640px; }
.board-una-columna .board-col-list { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); max-height: none; }

/* === AVISO FLOTANTE (Paso 2: resultado de una entrega) === */
.toast {
    position: fixed;
    left: 50%;
    bottom: 1.2rem;
    transform: translateX(-50%);
    max-width: 90vw;
    background: var(--ink);
    color: #fff;
    padding: 0.8rem 1.1rem;
    border-radius: 10px;
    display: flex;
    align-items: center;
    gap: 1rem;
    font-size: 0.95rem;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
    z-index: 60;
}
.toast.ok    { background: var(--ok); }
.toast.error { background: var(--err); }
.toast button {
    background: rgba(255, 255, 255, 0.2);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.6);
    border-radius: 6px;
    padding: 0.35rem 0.7rem;
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
}
.toast button:hover { background: rgba(255, 255, 255, 0.35); }

.sin-configurar {
    max-width: 640px;
    margin: 1rem auto;
    background: #fffbeb;
    border: 2px solid var(--warn);
    border-radius: 10px;
    padding: 1rem 1.2rem;
    text-align: center;
}
.sin-configurar h2 { color: var(--warn); font-size: 1.1rem; margin-bottom: 0.5rem; }
.sin-configurar p { color: #78350f; font-size: 0.9rem; line-height: 1.5; }
.sin-configurar code { background: rgba(0, 0, 0, 0.06); padding: 0.1rem 0.35rem; border-radius: 4px; font-size: 0.85em; }

/* === INGRESO (index.php) === */
.login-body {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100vh;
    padding: 1rem;
}
.login-box {
    background: #fff;
    border: 1px solid var(--line);
    padding: 2rem;
    border-radius: 12px;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
    width: 100%;
    max-width: 380px;
    text-align: center;
}
.login-box img { width: 80px; margin-bottom: 1rem; }
.login-box h2 { margin-bottom: 1.5rem; color: var(--brand); }
.login-box .input-group1 { text-align: left; margin-bottom: 1rem; }
.login-box label { display: block; margin-bottom: 0.3rem; font-size: 0.9rem; color: var(--muted); }
.login-box input[type="text"],
.login-box input[type="password"] {
    width: 100%;
    padding: 0.7rem;
    border: 1px solid var(--line);
    border-radius: 8px;
    font-size: 1rem;
}
.login-box input[type="text"]:focus,
.login-box input[type="password"]:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px rgba(19, 125, 197, 0.15); }
.login-box button {
    background: var(--brand);
    color: #fff;
    font-weight: 600;
    border: none;
    padding: 0.7rem 1.2rem;
    border-radius: 8px;
    cursor: pointer;
    width: 100%;
    font-size: 1rem;
}
.login-box button:hover { background: var(--brand-dark); }
.login-box .error-message { margin-top: 1rem; color: var(--err); font-weight: 500; }
.login-back { margin-top: 1rem; font-size: 0.85rem; }
.login-back a { color: var(--muted); }
.login-admin-link { margin-top: 1.2rem; font-size: 0.85rem; }
.login-admin-link a { color: var(--muted); }

/* === LOGIN DE MESAS (index.php): dos opciones, nada más ===
   1) botones de mesa -> Paso 1 (registro)
   2) un único botón -> Paso 2 (tablero en vivo) */
.mesa-login-box { max-width: 420px; }
.mesa-pregunta { font-size: 0.9rem; color: var(--muted); margin-bottom: 0.6rem; text-align: left; }
.mesa-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.6rem; }
.mesa-btn {
    background: var(--brand);
    color: #fff;
    border: none;
    border-radius: 8px;
    padding: 0.9rem 0.4rem;
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
}
.mesa-btn:hover { background: var(--brand-dark); }

.paso2-entry { margin-top: 1.2rem; text-align: center; }
.link-btn-inline {
    background: none;
    border: none;
    color: var(--brand);
    text-decoration: underline;
    font-size: 0.9rem;
    cursor: pointer;
    padding: 0;
}
.link-btn-inline:hover { color: var(--brand-dark); }

/* === DASHBOARD (admin) === */
.dashboard { max-width: 1100px; margin: 0 auto; padding: 1.2rem 1rem 3rem; }
.stats-grid-main {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 1rem;
    margin-bottom: 2rem;
}
.stat-card-main {
    background: #f7fafc;
    border: 1px solid var(--line);
    border-top: 4px solid #cbd5e0;
    border-radius: 10px;
    padding: 1.2rem;
    text-align: center;
}
.stat-card-main.total       { border-top-color: var(--brand); }
.stat-card-main.registrados { border-top-color: var(--brand-light); }
.stat-card-main.entregados  { border-top-color: var(--ok); }
.stat-card-main.pendientes  { border-top-color: var(--warn); }
.stat-card-main.meduca      { border-top-color: var(--brand-light); }
.stat-card-main.tiempo      { border-top-color: var(--brand-accent); }
.stat-number { font-size: 1.8rem; font-weight: 800; color: var(--ink); }
.stat-label { font-size: 0.8rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.03em; margin-top: 0.2rem; }

.table-section { margin-bottom: 2rem; }
.section-title { font-size: 1.05rem; margin-bottom: 0.6rem; color: var(--ink); }
.report-table { width: 100%; border-collapse: collapse; background: #fff; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
.report-table th, .report-table td { padding: 0.6rem 0.9rem; text-align: left; border-bottom: 1px solid var(--line); font-size: 0.9rem; }
.report-table th { background: #f7fafc; color: var(--muted); font-weight: 600; font-size: 0.8rem; text-transform: uppercase; }
.report-table tr:last-child td { border-bottom: none; }
.dashboard-updated { color: var(--faint); font-size: 0.8rem; text-align: center; margin-top: 1rem; }
.dashboard-note { color: var(--muted); font-size: 0.85rem; text-align: center; margin: -0.5rem 0 1.5rem; }

.refresh-btn {
    position: fixed;
    right: 1.2rem;
    bottom: 1.2rem;
    background: var(--brand);
    color: #fff;
    border: none;
    border-radius: 24px;
    padding: 0.7rem 1.2rem;
    font-weight: 600;
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.refresh-btn:hover { background: var(--brand-dark); }

@media (max-width: 900px) {
    .board { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
    html { font-size: 16px; }
    .row { flex-wrap: wrap; }
    .row .doc { min-width: 0; }
    .board { grid-template-columns: 1fr; }
    .board-col-list { grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); }
    .mesa-grid { grid-template-columns: repeat(2, 1fr); }
    .paso2-toolbar { flex-direction: column; gap: 0.5rem; }
}
