:root {
  --bg:#f3f5f9; --fg:#162033; --muted:#64748b; --accent:#1d5fd1; --accent-2:#e8f0fd; --card:#fff; --border:#e2e8f0; --warn:#fff6e5; --err:#b42318;
  --side:#0f2747; --side-2:#16335c; --side-fg:#c9d6ea; --side-active:#ffffff; --ok:#067647; --radius:10px; --shadow:0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.08);
}
* { box-sizing: border-box; }
[hidden] { display:none !important; }
body { margin:0; font-family: Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; font-size:14px; background:var(--bg); color:var(--fg); -webkit-font-smoothing:antialiased; }
h1, h2, h3, h4 { margin:0 0 10px; font-weight:600; letter-spacing:-.01em; } h3 { font-size:16px; } h4 { font-size:14px; margin-top:14px; }
select, input, button, textarea { font:inherit; padding:8px 10px; border:1px solid var(--border); border-radius:8px; background:#fff; color:var(--fg); }
input:focus, select:focus, textarea:focus { outline:2px solid var(--accent-2); border-color:var(--accent); }
button { background:var(--accent); color:#fff; border:1px solid var(--accent); cursor:pointer; font-weight:500; display:inline-flex; align-items:center; gap:6px; }
button:hover { filter:brightness(1.07); } button:disabled { opacity:.55; cursor:default; }
button.ghost { background:#fff; color:var(--fg); border:1px solid var(--border); } button.ghost:hover { background:#f8fafc; filter:none; }
button.small { padding:6px 10px; font-size:13px; }
a.button { display:inline-flex; align-items:center; gap:6px; background:var(--accent); color:#fff; padding:8px 14px; border-radius:8px; text-decoration:none; font-weight:500; }
.ico { width:18px; height:18px; flex:0 0 18px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }

/* Estructura: menú lateral fijo + contenido */
#layout { display:flex; min-height:100vh; align-items:stretch; }
#side { flex:0 0 248px; width:248px; background:var(--side); color:var(--side-fg); position:sticky; top:0; height:100vh; overflow-y:auto; display:flex; flex-direction:column; padding:0 0 16px; }
.brand-box { display:flex; align-items:center; gap:10px; padding:16px 16px 12px; border-bottom:1px solid rgba(255,255,255,.08); }
.brand-logo { width:44px; height:44px; flex:0 0 44px; border-radius:10px; background:#fff; color:var(--side); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:14px; overflow:hidden; }
.brand-logo img { width:100%; height:100%; object-fit:contain; padding:3px; }
.brand-logo.big { width:56px; height:56px; flex-basis:56px; background:var(--side); color:#fff; font-size:15px; }
.brand-text { display:flex; flex-direction:column; min-width:0; } .brand-text strong { color:#fff; font-size:15px; line-height:1.2; overflow:hidden; text-overflow:ellipsis; } .brand-text small { color:#8fa6c8; font-size:12px; }
.menu-toggle { display:none; margin-left:auto; background:transparent; border:1px solid rgba(255,255,255,.2); color:#fff; padding:6px 10px; }
.company-pick { display:flex; flex-direction:column; gap:4px; padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:#8fa6c8; }
.company-pick select { background:var(--side-2); color:#fff; border-color:rgba(255,255,255,.15); text-transform:none; letter-spacing:0; font-size:14px; }
#side-nav { display:flex; flex-direction:column; padding:4px 10px; }
#side-nav > div { display:flex; flex-direction:column; gap:2px; margin-bottom:6px; }
#side > div[hidden], #side-nav > div[hidden], #side button[hidden], #side small[hidden] { display:none; }
#side .side-title { color:#7f97bb; text-transform:uppercase; font-size:11px; font-weight:600; letter-spacing:.07em; margin:12px 10px 4px; }
/* Menú plegable (sesión 14): cada categoría se abre y cierra al pincharla; al entrar solo se ven las categorías. */
#side .side-toggle { background:transparent; border:none; width:calc(100% - 4px); display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:8px 10px; margin:2px 2px 0; border-radius:8px; cursor:pointer; text-align:left; filter:none; }
#side .side-toggle:hover { background:rgba(255,255,255,.06); color:#c6d4ea; }
#side .side-toggle::after { content:''; width:7px; height:7px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(45deg); transition:transform .15s; margin-right:2px; }
#side [data-group].collapsed .side-toggle::after { transform:rotate(-45deg); }
#side [data-group].collapsed > button[data-view] { display:none; }
#side-nav > div { margin-bottom:2px; }
#side button[data-view] { background:transparent; color:var(--side-fg); border:none; text-align:left; white-space:nowrap; padding:8px 10px; border-radius:8px; font-weight:500; display:flex; align-items:center; gap:10px; width:100%; }
#side button[data-view]:hover { background:rgba(255,255,255,.07); color:#fff; filter:none; }
#side button[data-view].active { background:var(--accent); color:var(--side-active); box-shadow:0 1px 2px rgba(0,0,0,.25); }
#content { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; }
#topbar { display:flex; align-items:center; gap:16px; padding:14px 24px; background:var(--card); border-bottom:1px solid var(--border); position:sticky; top:0; z-index:5; }
.page-head small { color:var(--muted); text-transform:uppercase; font-size:11px; letter-spacing:.07em; font-weight:600; }
.page-head h1 { font-size:20px; margin:0; }
.user-box { margin-left:auto; display:flex; align-items:center; gap:8px; } .user-name { font-weight:500; }
#legal-warning { margin:12px 24px 0; border-radius:8px; }
@media (max-width: 900px) {
  #layout { flex-direction:column; }
  #side { position:sticky; z-index:10; width:100%; flex:0 0 auto; height:auto; max-height:none; overflow:visible; }
  .menu-toggle { display:inline-flex; }
  .company-pick, #side-nav { display:none; }
  body.menu-open .company-pick, body.menu-open #side-nav { display:flex; }
  body.menu-open #side { max-height:100vh; overflow-y:auto; }
  #topbar { position:static; padding:12px 16px; flex-wrap:wrap; }
  .user-box { margin-left:0; flex-wrap:wrap; }
}
main { padding:20px 24px 40px; } @media (max-width: 900px) { main { padding:16px 12px 32px; } }
.card { background:var(--card); border:1px solid var(--border); border-radius:var(--radius); padding:18px; margin-bottom:16px; box-shadow:var(--shadow); }
.narrow { max-width:380px; margin:10vh auto; }
.narrow label { display:block; margin-bottom:10px; } .narrow input { width:100%; margin-top:4px; }
.grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(170px,1fr)); gap:12px; }
.kpi { font-size:26px; font-weight:700; } .muted { color:var(--muted); font-size:13px; }
table { width:100%; border-collapse:collapse; font-size:14px; } th, td { text-align:left; padding:8px; border-bottom:1px solid var(--border); vertical-align:top; }
.table-wrap { overflow-x:auto; }
.badge { font-size:12px; background:#eef2ff; padding:3px 8px; border-radius:999px; }
.warn { background:var(--warn); padding:8px 16px; font-size:14px; }
.error { color:var(--err); } .ok { color:#067647; }
form.inline { display:flex; flex-wrap:wrap; gap:8px; align-items:flex-end; }
pre { white-space:pre-wrap; font-size:12px; background:#f8fafc; padding:10px; border-radius:8px; }

.kpi { font-size: clamp(1.25rem, 2.2vw, 1.75rem); overflow-wrap: anywhere; }

.link-box { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-top:8px; }
.link-box input { flex:1 1 320px; min-width:0; font-family:ui-monospace, SFMono-Regular, Menlo, monospace; font-size:12px; }
.kpi.small { font-size: 1rem; }
.warn-card { background:var(--warn); } .warn-badge { background:#fef0c7; } #inv-lines input[name=description] { width:100%; min-width:180px; }
#inv-totals { margin:12px 0; padding-top:8px; border-top:1px solid var(--border); }
/* Formularios de ficha (Empresa, Nuevo documento sin OC): campos en columnas que no se montan */
#co-form .grid, #inv-manual .grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:10px 14px; }
#co-form label, #inv-manual label { display:flex; flex-direction:column; gap:4px; min-width:0; }
#co-form input, #co-form select, #inv-manual input, #inv-manual select { width:100%; box-sizing:border-box; }
/* Proveedores y contactos (sesión 12) */
.grid-form { display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:10px 14px; margin-top:10px; }
.grid-form > label { display:flex; flex-direction:column; gap:4px; min-width:0; }
.grid-form input, .grid-form select, .grid-form textarea { width:100%; box-sizing:border-box; }
.grid-form .wide { grid-column:1 / -1; }
.grid-form fieldset { border:1px solid var(--border); border-radius:8px; }
.grid-form fieldset label { display:inline-flex; gap:4px; align-items:center; }
.grid-form input[type=checkbox] { width:auto; }
tr.best td { background:#ecfdf3; }
.card.warn { padding:12px 16px; }
/* Compras a proveedores: tablero (sesión 12) */
.kanban { display:grid; grid-template-columns:repeat(auto-fit, minmax(170px, 1fr)); gap:10px; align-items:start; }
.kcol { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:8px; min-width:0; }
.kcol h4 { margin:2px 4px 8px; font-size:14px; }
.kcard { display:block; width:100%; text-align:left; background:var(--bg); color:var(--fg); border:1px solid var(--border); border-radius:8px; padding:8px; margin-bottom:6px; font-size:13px; }
.kcard:hover { border-color:var(--accent); }
.warn-text { color:#b54708; }
/* Finanzas (sesión 12) */
#side small[hidden] { display:none; }
.is-table th { text-align:left; font-weight:400; white-space:nowrap; }
.is-table td.n, .is-table th.n, td.n, th.n { text-align:right; white-space:nowrap; }
.is-table tr.is-detalle th { padding-left:20px; color:var(--muted); }
.is-table tr.is-subtotal th, .is-table tr.is-subtotal td { font-weight:600; }
.is-table tr.is-resultado th, .is-table tr.is-resultado td { font-weight:700; border-top:2px solid var(--fg); }
td.neg { color:#b42318; }

/* Pulido general (sesión 12, estética tipo ERP) */
table { font-size:13.5px; } th { background:#f8fafc; color:#475467; font-weight:600; font-size:12px; text-transform:uppercase; letter-spacing:.03em; }
tbody tr:hover td { background:#fafcff; }
.grid .card { margin-bottom:0; } .grid { margin-bottom:16px; }
.grid > .card > .muted:first-child, .kpis .card { color:var(--muted); font-size:13px; }
.kpi { font-size: clamp(1.25rem, 2vw, 1.6rem); font-weight:700; color:var(--fg); margin-top:4px; }
.badge { display:inline-block; padding:2px 8px; border-radius:999px; background:var(--accent-2); color:var(--accent); font-size:12px; font-weight:600; }
.warn-card { border-left:4px solid #f79009; }
.inline { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.hero { display:flex; align-items:center; gap:20px; background:linear-gradient(120deg, var(--side) 0%, #1d4f91 100%); color:#fff; border-radius:14px; padding:22px 26px; margin-bottom:18px; box-shadow:var(--shadow); flex-wrap:wrap; }
.hero-logo { width:84px; height:84px; border-radius:14px; background:#fff; display:flex; align-items:center; justify-content:center; overflow:hidden; flex:0 0 84px; }
.hero-logo img { width:100%; height:100%; object-fit:contain; padding:6px; } .hero-logo span { color:var(--side); font-weight:700; font-size:26px; }
.hero-text small { color:#b9cbe6; } .hero-text h2 { margin:2px 0 4px; font-size:24px; color:#fff; } .hero-text p { margin:0; color:#d7e3f5; }
.hero-actions { margin-left:auto; display:flex; gap:8px; flex-wrap:wrap; } .hero-actions button.ghost { background:rgba(255,255,255,.1); color:#fff; border-color:rgba(255,255,255,.3); }
.login-card { padding:28px; } .login-brand { display:flex; gap:14px; align-items:center; margin-bottom:18px; } .login-brand h1 { font-size:20px; margin:0; } .login-brand p { margin:2px 0 0; }
.login-card button[type=submit] { width:100%; justify-content:center; margin-top:6px; }
.kpi { white-space:nowrap; font-size: clamp(1.1rem, 1.6vw, 1.5rem); }

/* Chips de estado por color y herramientas de tabla (filtro, orden, ocultar anulados) */
.chip { display:inline-block; padding:2px 9px; border-radius:999px; font-size:12px; font-weight:600; white-space:nowrap; border:1px solid transparent; }
.tone-ok { background:#ecfdf3; color:#067647; border-color:#abefc6; }
.tone-info { background:#eff8ff; color:#175cd3; border-color:#b2ddff; }
.tone-warn { background:#fffaeb; color:#b54708; border-color:#fedf89; }
.tone-bad { background:#fef3f2; color:#b42318; border-color:#fecdca; }
.tone-neutral { background:#f2f4f7; color:#344054; border-color:#d0d5dd; }
th.sortable { cursor:pointer; user-select:none; } th.sortable:hover { color:var(--fg); }
th[data-dir=asc]::after { content:' ▲'; font-size:10px; } th[data-dir=desc]::after { content:' ▼'; font-size:10px; }
.tbl-tools { display:flex; flex-wrap:wrap; gap:12px; align-items:center; margin:4px 0 10px; }
.tbl-tools input[type=search] { max-width:280px; } .tbl-tools label { display:flex; gap:6px; align-items:center; font-size:13px; }
.tbl-pager { display:flex; gap:6px; align-items:center; margin-left:auto; } .tbl-pager .tbl-page { font-size:13px; }
/* OC a proveedor: formulario para agregar líneas sin tapar la tabla */
#so-add { display:grid; grid-template-columns:minmax(220px, 3fr) repeat(4, minmax(90px, 1fr)) auto; gap:8px; align-items:end; margin-top:10px; }
#so-add label { display:flex; flex-direction:column; gap:2px; font-size:12px; color:var(--muted); }
#so-add .hint { grid-column:1 / -1; font-size:12px; color:var(--muted); min-height:1em; }
@media (max-width: 760px) { #so-add { grid-template-columns:1fr 1fr; } #so-add label:first-child { grid-column:1 / -1; } }
#so-items input { min-width:0; } #so-items td:nth-child(2) input { min-width:200px; }

/* Acciones por fila agrupadas (oportunidades) */
.row-actions { display:flex; flex-direction:column; gap:6px; min-width:230px; }
.ra-group { display:grid; grid-template-columns:78px 1fr; align-items:center; gap:6px; }
.ra-label { font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); }
.ra-btns { display:flex; flex-wrap:wrap; gap:4px; align-items:center; }
.btn-sm, select.btn-sm { white-space:nowrap; padding:3px 10px; font-size:12px; min-height:26px; border-radius:6px; }
select.btn-sm { width:auto; max-width:170px; }
.seg { display:inline-flex; } .seg button { border-radius:0; margin:0; } .seg button:first-child { border-radius:6px 0 0 6px; } .seg button:last-child { border-radius:0 6px 6px 0; border-left:0; }
.seg .dec-yes { background:#fff; color:#067647; border:1px solid #abefc6; } .seg .dec-yes.on { background:#067647; color:#fff; border-color:#067647; }
.seg .dec-no { background:#fff; color:#b42318; border:1px solid #fecdca; } .seg .dec-no.on { background:#b42318; color:#fff; border-color:#b42318; }
/* Buscador con sugerencias */
.picker { position:relative; display:inline-block; flex:1 1 320px; min-width:220px; } .picker > input { width:100%; }
.picker-list { position:absolute; z-index:50; left:0; right:0; top:calc(100% + 2px); margin:0; padding:4px 0; list-style:none; background:#fff; border:1px solid var(--line, #d0d5dd); border-radius:8px; box-shadow:0 8px 24px rgba(16,24,40,.12); max-height:320px; overflow:auto; }
.picker-list li { padding:6px 10px; cursor:pointer; display:flex; flex-direction:column; gap:1px; font-size:13px; }
.picker-list li small { color:var(--muted); font-size:11.5px; }
.picker-list li.on, .picker-list li:hover { background:#eff8ff; }
.picker-list li.empty { color:var(--muted); cursor:default; }
#so-add .picker { display:block; }
/* Revisión de cotizaciones */
.review-log { list-style:none; margin:10px 0 0; padding:0; display:flex; flex-direction:column; gap:8px; }
.review-log li { border-left:3px solid var(--line, #d0d5dd); padding:4px 10px; font-size:13px; }
.review-log li div { margin-top:2px; white-space:pre-wrap; }

.card.clickable { cursor: pointer; }
.card.clickable:hover { outline: 2px solid var(--accent, #2563eb); }

.net-banner { position: fixed; left: 50%; bottom: 16px; transform: translateX(-50%); z-index: 1000; background: #b45309; color: #fff; padding: 10px 16px; border-radius: 8px; box-shadow: 0 4px 16px rgba(0,0,0,.25); font-size: 14px; max-width: calc(100% - 32px); }

/* ---------- Inicio: tablero de procesos y estadísticas (sesión 15) ---------- */
.clickable { cursor:pointer; } .clickable:hover { border-color:var(--accent); }
.proc-board { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:12px; }
.proc-col { background:#f6f8fc; border-radius:8px; border-top:4px solid var(--muted); display:flex; flex-direction:column; min-height:220px; }
.proc-col header { display:flex; justify-content:space-between; gap:8px; padding:12px 12px 8px; }
.proc-col header strong { display:block; font-size:13.5px; line-height:1.3; } .proc-col header small { color:var(--muted); font-size:12px; }
.proc-count { min-width:26px; height:22px; padding:0 8px; border-radius:11px; font-size:12px; font-weight:600; display:inline-flex; align-items:center; justify-content:center; }
.proc-list { padding:0 10px 10px; display:flex; flex-direction:column; gap:8px; max-height:330px; overflow-y:auto; }
.proc-item { all:unset; box-sizing:border-box; display:flex; flex-direction:column; gap:3px; background:#fff; border:1px solid var(--border); border-radius:6px; padding:9px 10px; cursor:pointer; }
.proc-item:hover, .proc-item:focus-visible { border-color:var(--accent); box-shadow:var(--shadow); }
.proc-code { font-weight:600; font-size:12.5px; } .proc-title { font-size:12.5px; color:var(--fg); text-transform:uppercase; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.proc-meta { font-size:12px; color:var(--muted); } .proc-item .chip { align-self:flex-start; font-size:11px; }
.proc-empty { color:var(--muted); text-align:center; margin:40px 0; font-size:13px; }
.proc-prep { border-top-color:#e8890c; } .proc-prep .proc-count { background:#fdf0dc; color:#9a5a05; } .proc-prep .proc-code { color:#b86b06; }
.proc-open { border-top-color:#0f9d6b; } .proc-open .proc-count { background:#dcf5ea; color:#067647; } .proc-open .proc-code { color:#067647; }
.proc-closed { border-top-color:#8492a6; } .proc-closed .proc-count { background:#e9edf3; color:#475467; } .proc-closed .proc-code { color:#64748b; }
.proc-res { border-top-color:#1d5fd1; } .proc-res .proc-count { background:var(--accent-2); color:var(--accent); } .proc-res .proc-code { color:var(--accent); }
@media (max-width: 1100px) { .proc-board { grid-template-columns:repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .proc-board { grid-template-columns:1fr; } }
.wl-bar { display:flex; height:6px; border-radius:3px; overflow:hidden; background:var(--border); margin:6px 0 4px; gap:2px; }
.wl-bar .won { background:#0f9d6b; } .wl-bar .lost { background:#d0d5dd; }
.home-stats { display:grid; grid-template-columns:repeat(auto-fit, minmax(380px, 1fr)); gap:16px; } .home-stats .card { margin-bottom:0; }
.home-chart { width:100%; height:auto; display:block; } .home-chart .grid-line { stroke:#eef1f6; stroke-width:1; } .home-chart .axis { fill:#8a94a6; font-size:11px; }
.legend { display:flex; flex-wrap:wrap; gap:14px; font-size:12.5px; color:var(--muted); margin-top:6px; } .legend i { display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:6px; vertical-align:-1px; }
.fun-row, .bar-row { display:grid; grid-template-columns:110px 1fr 40px 60px; align-items:center; gap:10px; margin:8px 0; font-size:13px; }
.bar-row { grid-template-columns:minmax(0, 1.3fr) 1fr 32px 90px; } .bar-row > span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fun-bar { background:#eef1f6; border-radius:4px; height:10px; overflow:hidden; } .fun-bar i { display:block; height:100%; background:var(--accent); border-radius:4px; }
.fun-row strong, .bar-row strong { text-align:right; }
.seg [data-days] { background:#fff; color:var(--accent); border:1px solid var(--accent); } .seg [data-days].on { background:var(--accent); color:#fff; }

/* ---------- RRHH: calendario de asistencia (sesión 15) ---------- */
.cal-team { border-collapse:separate; border-spacing:2px; font-size:12px; }
.cal-team th { font-weight:500; color:var(--muted); text-align:center; padding:2px; min-width:24px; } .cal-team th.we { color:#94a3b8; } .cal-team th.hol { color:#7c3aed; }
.cal-team tbody th { text-align:left; white-space:nowrap; padding-right:8px; min-width:140px; }
.cal-c { width:24px; height:24px; text-align:center; border-radius:4px; font-weight:600; font-size:11px; cursor:pointer; position:relative; display:table-cell; }
.legend .cal-c { display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; margin-right:6px; font-style:normal; }
.linklike { all:unset; cursor:pointer; color:var(--accent); font-weight:500; } .linklike:hover { text-decoration:underline; }
.st-trabajado { background:#dcf5ea; color:#067647; } .st-ausente { background:#fde4e2; color:#b42318; } .st-incompleto { background:#fdf0dc; color:#9a5a05; }
.st-feriado { background:#efe7fd; color:#6d28d9; } .st-descanso { background:#f2f4f7; color:#98a2b3; } .st-licencia { background:#e0e7ff; color:#3730a3; }
.st-vacaciones { background:#dbeafe; color:#1d4ed8; } .st-permiso_con_goce { background:#ccfbf1; color:#0f766e; } .st-permiso_sin_goce { background:#fee4cb; color:#9a3412; }
.st-sin_datos { background:#fff; color:#98a2b3; border:1px dashed #d0d5dd; } .st-fuera { background:transparent; cursor:default; }
.cal-c.fixed::after, .cal-day.fixed::after { content:''; position:absolute; top:2px; right:2px; width:6px; height:6px; border-radius:50%; background:#1d5fd1; }
.legend .cal-c.fixed { background:#fff; border:1px solid var(--border); }
.cal-month { display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); gap:6px; margin-top:12px; }
.cal-h { text-align:center; font-size:12px; color:var(--muted); font-weight:600; }
.cal-day { min-height:86px; border-radius:6px; padding:6px 8px; display:flex; flex-direction:column; gap:2px; cursor:pointer; position:relative; font-size:12px; }
.cal-day.empty { background:transparent; cursor:default; } .cal-day small { font-size:11px; opacity:.9; } .cal-top { display:flex; justify-content:space-between; gap:4px; } .cal-top span { font-size:10.5px; text-align:right; }
.cal-day:hover, .cal-day:focus-visible, .cal-team td[data-d]:hover { outline:2px solid var(--accent); outline-offset:-1px; }
.fix-tag { color:var(--accent); font-weight:600; }
.punch { margin:4px 0; } .punch input { width:120px; }
@media (max-width: 760px) { .cal-day { min-height:64px; padding:4px; } .cal-top span { display:none; } }
.vac-conflict { background:#fde68a !important; color:#92400e !important; } .vac-dim { opacity:.55; }

/* Marca GanaEstado (03-11-26): logo en el login y marca del producto al pie del menú. */
.login-logo { display:block; width:min(300px, 100%); height:auto; margin:0 auto 4px; }
.login-brand:has(.login-logo) { justify-content:center; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.product-mark { margin-top:auto; padding:14px 18px 0; display:flex; align-items:center; gap:8px; font-size:12px; font-weight:600; opacity:.75; letter-spacing:.2px; }
.product-mark img { border-radius:4px; }
