:root { --bg: #f0f2f5; --panel: #ffffff; --ink: #23272e; --muted: #8b97a3; --teal: #1f8a7a; --teal-claro: #2fa593; --teal-oscuro: #176b5f; --navy: #16324f; --navy-claro: #23486b; --navy-oscuro: #0f2338; --line: #dfe4ea; --red: #c0392b; --amber: #e8a33d; --sidebar: #ffffff; } * { box-sizing: border-box; } body { font-family: "Segoe UI", "Segoe UI Web", Tahoma, Arial, sans-serif; background: var(--bg); color: var(--ink); margin: 0; font-size: 14px; } .app-menu { background: var(--panel); border-bottom: 1px solid var(--line); display: flex; align-items: center; gap: 2px; padding: 0 10px; height: 42px; position: sticky; top: 0; z-index: 20; } .app-menu .logo { width: 34px; height: 34px; border-radius: 50%; background: var(--teal); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; margin-right: 12px; flex: 0 0 auto; } .app-menu a { color: var(--ink); text-decoration: none; padding: 10px 12px; font-size: 14px; border-radius: 4px; white-space: nowrap; } .app-menu a:hover { background: #eef1f4; } .app-menu a.activo { color: var(--teal); font-weight: 600; } .app-shell { display: flex; min-height: calc(100vh - 42px); } .sidebar { width: 58px; background: var(--sidebar); border-right: 1px solid var(--line); display: flex; flex-direction: column; align-items: center; padding-top: 10px; gap: 4px; flex: 0 0 58px; } .sidebar a { width: 40px; height: 40px; border-radius: 6px; display: flex; align-items: center; justify-content: center; color: var(--muted); text-decoration: none; } .sidebar a:hover { background: #eef1f4; color: var(--teal); } .sidebar a.activo { background: #e4f2ef; color: var(--teal); } .sidebar svg { width: 20px; height: 20px; } .main { flex: 1; padding: 22px 28px; overflow-x: auto; } .page-title { font-size: 26px; font-weight: 600; margin: 0 0 2px; } .page-sub { text-align: center; color: var(--muted); font-size: 13px; margin: 0 0 22px; } .kpis { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 22px; } .kpi { flex: 1 1 200px; background: var(--panel); border: 1px solid var(--line); border-radius: 3px; padding: 18px 20px; display: flex; align-items: center; gap: 14px; } .kpi .icono { width: 34px; height: 34px; flex: 0 0 34px; color: var(--teal); } .kpi .icono.alerta { color: var(--red); } .kpi .icono.navy { color: var(--navy); } .kpi .valor { font-size: 26px; font-weight: 600; line-height: 1.1; } .kpi .valor.rojo { color: var(--red); } .kpi .etiqueta { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: .4px; margin-top: 4px; } .paneles { display: flex; gap: 18px; flex-wrap: wrap; margin-bottom: 22px; } .panel-graf { flex: 1 1 460px; background: var(--panel); border: 1px solid var(--line); border-radius: 3px; padding: 18px 20px 10px; } .panel-graf h2 { font-size: 13px; font-weight: 700; letter-spacing: .3px; text-transform: uppercase; color: var(--ink); margin: 0 0 14px; } .seccion { background: var(--panel); border: 1px solid var(--line); border-radius: 3px; margin-bottom: 22px; } .seccion > h2 { background: var(--navy); color: #fff; margin: 0; font-size: 15px; font-weight: 600; padding: 12px 18px; } .seccion .cuerpo { padding: 14px 18px 18px; } table { width: 100%; border-collapse: collapse; background: var(--panel); } th { text-align: left; font-size: 13px; font-weight: 600; color: var(--ink); padding: 9px 12px; border-bottom: 1px solid var(--line); background: #fafbfc; } td { padding: 9px 12px; font-size: 13px; border-bottom: 1px solid #f1f3f5; } tbody tr:hover { background: #f7f9fa; } td.num, th.num { text-align: right; } label { display: block; font-size: 12px; color: var(--muted); margin: 12px 0 4px; } input, select, textarea { width: 100%; padding: 7px 10px; border: 1px solid var(--line); border-radius: 3px; font-size: 14px; font-family: inherit; background: #fff; } input:focus, select:focus { outline: 2px solid #cfe6e1; border-color: var(--teal); } button { background: var(--teal); color: #fff; border: none; border-radius: 3px; padding: 8px 16px; font-size: 14px; cursor: pointer; margin-top: 12px; font-family: inherit; } button:hover { background: var(--teal-oscuro); } button.secundario { background: var(--panel); color: var(--ink); border: 1px solid var(--line); } button.secundario:hover { background: #eef1f4; } .fila-form { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end; } .fila-form > div { flex: 1; min-width: 150px; } .error { background: #fdecea; color: var(--red); padding: 10px 14px; border-radius: 3px; font-size: 13px; margin-bottom: 14px; } .badge { font-size: 11px; padding: 3px 9px; border-radius: 12px; font-weight: 600; display: inline-block; } .badge.ok { background: #e4f2ef; color: var(--teal-oscuro); } .badge.mal { background: #fdecea; color: var(--red); } .badge.aviso { background: #fcf2e2; color: #a8702a; } .badge.gris { background: #eef1f4; color: var(--muted); } .card { background: var(--panel); border: 1px solid var(--line); border-radius: 3px; padding: 18px 20px; margin-bottom: 18px; } .card h2 { font-size: 15px; margin: 0 0 12px; color: var(--navy); } .login-wrap { max-width: 380px; margin: 70px auto; background: var(--panel); border: 1px solid var(--line); border-radius: 4px; padding: 30px 32px; box-shadow: 0 1px 3px rgba(0,0,0,.05); } .login-wrap h1 { color: var(--navy); font-size: 20px; margin: 0 0 6px; } .login-wrap p { color: var(--muted); font-size: 13px; margin: 0 0 16px; } .login-wrap button { width: 100%; margin-top: 18px; padding: 10px; } .topbar { background: var(--panel); border-bottom: 1px solid var(--line); padding: 12px 24px; display: flex; justify-content: space-between; align-items: center; } .topbar h1 { font-size: 17px; color: var(--navy); margin: 0; } .contenido { padding: 22px 28px; } .gr3d { display: flex; align-items: flex-end; gap: 26px; height: 230px; padding: 24px 12px 0; } .gr3d .col { display: flex; flex-direction: column; align-items: center; flex: 1; height: 100%; justify-content: flex-end; } .gr3d .valor3d { font-size: 11px; color: #555; margin-bottom: 6px; white-space: nowrap; } .gr3d .barra3d { position: relative; width: 46px; } .gr3d .barra3d .cara { width: 46px; background: var(--teal); position: relative; z-index: 2; } .gr3d .barra3d .lado { position: absolute; top: -9px; right: -11px; width: 11px; height: 100%; background: var(--teal-oscuro); transform: skewY(-40deg); transform-origin: bottom left; z-index: 1; } .gr3d .barra3d .tapa { position: absolute; top: -9px; left: 0; width: 46px; height: 11px; background: var(--teal-claro); transform: skewX(45deg); transform-origin: bottom left; z-index: 3; } .gr3d .etiqueta3d { font-size: 12px; color: #444; margin-top: 10px; } .gr3d.navy .barra3d .cara { background: var(--navy); } .gr3d.navy .barra3d .lado { background: var(--navy-oscuro); } .gr3d.navy .barra3d .tapa { background: var(--navy-claro); } .gr3d-suelo { height: 10px; margin: 0 12px; background: linear-gradient(180deg, #e7e2d8, #f3f1ec); transform: skewX(45deg); transform-origin: top left; }

/* ===== Estructura y estilo del escritorio (main.py: _build_layout / _build_style) ===== */
body.fg { --bg:#eef1f4; --ink:#20242a; --muted:#7a8794; --line:#dde3e9; --navy:#16324f; --teal:#1f8a7a;
  background:var(--bg); color:var(--ink); font-size:13px; margin:0; }
.fg-shell { display:flex; min-height:100vh; }
.fg-sidebar { width:64px; flex:0 0 64px; background:#fbfcfd; border-right:1px solid var(--line);
  display:flex; flex-direction:column; align-items:stretch; position:sticky; top:0; height:100vh; z-index:30; }
.fg-brand { height:58px; display:flex; align-items:center; justify-content:center; flex:0 0 58px; }
.fg-brand img { width:40px; height:40px; }
.sb-grupo { position:relative; margin:2px 6px; }
.sb-icono { display:flex; align-items:center; justify-content:center; height:40px; font-size:19px; cursor:pointer;
  border-radius:3px; color:var(--navy); user-select:none; }
.sb-grupo:hover .sb-icono, .sb-grupo.activo .sb-icono { background:#e3f4f1; }
.sb-sub { display:none; position:absolute; left:100%; top:0; margin-left:4px; width:220px; background:#fff;
  border:1px solid var(--line); box-shadow:2px 3px 10px rgba(0,0,0,.12); padding:4px; }
.sb-grupo:hover .sb-sub { display:block; }
.sb-grupo:hover .sb-sub::before { content:""; position:absolute; left:-8px; top:0; width:8px; height:100%; }
.sb-titulo { font-size:11px; font-weight:700; color:#fff; background:var(--navy); padding:5px 10px; margin:-4px -4px 4px; }
.sb-sub a, .mb-sub a { display:block; padding:7px 12px; color:var(--ink); text-decoration:none; font-size:13px; white-space:nowrap; }
.sb-sub a:hover, .mb-sub a:hover, .sb-sub a.activo, .mb-sub a.activo { background:#e3f4f1; }
.sb-sub a.pendiente, .mb-sub a.pendiente { color:#9aa5b1; }
.fg-main { flex:1; min-width:0; display:flex; flex-direction:column; }
.fg-menubar { height:30px; background:#fff; border-bottom:1px solid var(--line); display:flex; align-items:stretch;
  position:sticky; top:0; z-index:25; flex-wrap:nowrap; }
.mb-grupo { position:relative; }
.mb-grupo > span { display:flex; align-items:center; height:100%; padding:0 10px; font-size:12px; cursor:default; white-space:nowrap; }
.mb-grupo:hover > span { background:#e3f4f1; color:var(--navy); }
.mb-grupo.activo > span { color:var(--teal); font-weight:600; }
.mb-sub { display:none; position:absolute; top:100%; left:0; min-width:200px; background:#fff; border:1px solid #b9c3cc;
  box-shadow:2px 3px 8px rgba(0,0,0,.15); padding:2px 0; z-index:40; }
.mb-grupo:hover .mb-sub { display:block; }
.mb-salir { margin:0 0 0 auto; display:flex; align-items:center; padding-right:8px; }
.mb-salir button { margin:0; padding:2px 10px; font-size:12px; background:none; color:var(--muted); border:0; }
.mb-salir button:hover { background:#eef1f4; color:var(--red); }
.fg-header { background:#fff; border-bottom:1px solid var(--line); padding:10px 26px; display:flex; align-items:center; justify-content:space-between; gap:16px; }
.fg-titulo { font-size:21px; font-weight:700; color:var(--ink); line-height:1.3; }
.fg-subtitulo { font-size:12px; color:var(--muted); }
.fg-header-acciones button { margin:0; }
.fg-contenido { padding:16px 20px; }
.fg-contenido > .contenido { padding:0; }

/* Tarjetas: cabecera en franja azul marino (App.card) */
body.fg .card, body.fg .seccion { border:1px solid var(--line); border-radius:0; padding:0 0 14px; margin-bottom:16px; background:#fff; }
body.fg .card > h2, body.fg .seccion > h2 { background:var(--navy); color:#fff; font-size:13px; font-weight:700;
  height:32px; line-height:32px; padding:0 12px; margin:0 0 14px; }
body.fg .card > :not(h2), body.fg .seccion > .cuerpo { margin-left:18px; margin-right:18px; }
body.fg .card > h2 + *, body.fg .card > :first-child:not(h2) { margin-top:14px; }
body.fg .seccion > .cuerpo { padding:0; }

/* Tablas: estilo Treeview */
body.fg table { border:1px solid var(--line); background:#fff; }
body.fg th { background:#fafbfc; color:#8592a0; font-size:12px; font-weight:700; padding:5px 6px; border-bottom:1px solid var(--line); }
body.fg td { padding:0 6px; height:24px; font-size:13px; border-bottom:1px solid #f0f2f4; }
body.fg tbody tr:hover { background:#f3faf8; }
body.fg tbody tr:focus-within, body.fg tbody tr.sel { background:#e3f4f1; }
body.fg td a { color:var(--teal); }

/* Campos: fondo crema, borde hundido */
body.fg input:not([type=checkbox]):not([type=radio]):not([type=submit]), body.fg select, body.fg textarea {
  background:#fffef2; color:var(--ink); border:1px solid #9aa5b1; border-top-color:#7d8894; border-left-color:#7d8894;
  border-radius:0; padding:4px 6px; font-size:13px; }
body.fg label { font-size:12px; color:var(--ink); margin:10px 0 3px; }

/* Botones: clásicos en relieve; el principal en teal */
body.fg button { background:var(--teal); color:#fff; border:1px solid #17705f; border-radius:2px; padding:6px 12px; font-size:13px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2); }
body.fg button:hover { background:var(--navy); }
body.fg button.secundario { background:#f2f2f0; color:var(--ink); border:1px solid #b5b8bc; box-shadow:inset 0 1px 0 #fff, 0 1px 0 rgba(0,0,0,.05); }
body.fg button.secundario:hover { background:#e2e2df; }

/* Barra de herramientas, acciones y listas (view_* del escritorio) */
.fg-toolbar { display:flex; gap:8px; align-items:center; margin-bottom:12px; }
.fg-toolbar a { text-decoration:none; }
body.fg .fg-toolbar input.fg-buscar { width:260px; }
body.fg .fg-toolbar button, body.fg .fg-acciones button, body.fg .fg-dialogo-botones button { margin:0; }
.fg-acciones { display:flex; gap:8px; margin-top:10px; }
body.fg button.peligro { background:#fbeceb; color:var(--red); border:1px solid #e3b5b0; }
body.fg button.peligro:hover { background:#f6d9d6; }
body.fg table.fg-tabla tbody tr[data-id] { cursor:default; user-select:none; }
body.fg table.fg-tabla tr.sel, body.fg table.fg-tabla tr.sel:hover { background:#e3f4f1; }
body.fg table.fg-tabla tr.bajo-stock td { color:var(--red); }
body.fg table.fg-tabla tr.fg-sin-resultados td { text-align:center; color:var(--muted); height:40px; }
body.fg th.num, body.fg td.num { text-align:right; }

/* Fichas: ventana de diálogo como los Toplevel del escritorio (dialog_header) */
.fg-dialogo { max-width:640px; background:#fff; border:1px solid #b9c3cc; box-shadow:0 4px 18px rgba(0,0,0,.12); margin:0 auto 20px; }
.fg-dialogo-cabecera { background:var(--navy); color:#fff; height:34px; display:flex; align-items:center; justify-content:space-between;
  padding:0 10px 0 14px; font-size:14px; font-weight:700; }
.fg-cerrar { color:#fff; text-decoration:none; font-weight:700; padding:2px 6px; }
.fg-cerrar:hover { background:#666; }
.fg-dialogo-cuerpo { padding:4px 28px 10px 20px; }
body.fg .fg-dialogo-cuerpo label { text-transform:uppercase; font-size:11px; color:var(--muted); margin:10px 0 2px; }
body.fg .fg-dialogo-cuerpo label.fg-check { text-transform:none; font-size:13px; color:var(--ink); margin-top:10px; display:flex; align-items:center; gap:6px; }
body.fg .fg-dialogo-cuerpo input:not([type=checkbox]), body.fg .fg-dialogo-cuerpo select { width:100%; }
.fg-seccion { font-weight:700; color:var(--navy); margin-top:18px; padding-bottom:4px; border-bottom:1px solid var(--line); }
.fg-nota { font-size:11px; color:var(--muted); margin-top:3px; line-height:1.35; }
.fg-nota.rojo { color:var(--red); }
.fg-fila { display:flex; gap:10px; }
.fg-fila > div { flex:1; }
.fg-dialogo-botones { display:flex; gap:8px; align-items:center; padding:16px 20px; border-top:1px solid var(--line); background:#fff; position:sticky; bottom:0; }
.fg-dialogo-botones a { text-decoration:none; }
.fg-espacio { flex:1; }

/* Versión y plan, discretos a la derecha del menú */
.mb-version { display:flex; align-items:center; margin-left:auto; padding:0 10px; font-size:11px; color:var(--muted); white-space:nowrap; }
.mb-version b { color:var(--teal); font-weight:600; margin-left:6px; }
.fg-menubar .mb-salir { margin-left:0; }

/* Ajustes (Datos de la empresa) */
body.fg .card label { text-transform:uppercase; font-size:11px; color:var(--muted); margin:10px 0 2px; }
body.fg .card label.fg-check-simple, body.fg .card label.fg-check { text-transform:none; font-size:13px; color:var(--ink); display:flex; gap:6px; align-items:center; }
.fg-texto { color:var(--muted); margin:0 0 10px; line-height:1.4; }
.aviso-ok { background:#e3f4f1; color:#176b5f; padding:8px 12px; margin-bottom:12px; border:1px solid #b9ded6; }
body.fg .error { border-radius:0; border:1px solid #f0c4bf; }
.fg-botones-izq { display:flex; gap:8px; margin-top:14px; }
.fg-botones-der { display:flex; justify-content:flex-end; gap:8px; margin-top:16px; }
body.fg .fg-botones-izq button, body.fg .fg-botones-der button { margin:0; }
.fg-form-ajustes { max-width:820px; }
.fg-fila-etiqueta { display:flex; align-items:center; margin:4px 0; }
.fg-fila-etiqueta > span { width:220px; text-transform:uppercase; font-size:11px; color:var(--muted); }
body.fg .fg-fila-etiqueta input, body.fg .fg-fila-etiqueta select { width:180px; }
.fg-ejemplo { color:var(--navy); font-size:11px; margin-top:8px; }
.fg-logo-vista { display:flex; align-items:center; gap:10px; min-height:30px; }
.fg-logo-vista img { max-width:300px; max-height:120px; }
.fg-tamano { display:flex; align-items:center; gap:6px; }
body.fg .fg-tamano input { width:70px !important; margin-right:10px; }
.fg-etiqueta-mayus { margin-top:16px !important; }
dialog.fg-dialogo-modal { padding:0; width:520px; max-width:95vw; }
dialog.fg-dialogo-modal::backdrop { background:rgba(22,50,79,.35); }

/* Permisos por sección (ficha de usuario) */
.fg-permisos { display:grid; grid-template-columns:repeat(auto-fill, minmax(180px, 1fr)); gap:8px 16px; margin-top:8px; }
.fg-permisos-titulo { font-size:11px; font-weight:700; color:var(--navy); margin-top:6px; }
body.fg .fg-permisos label.fg-check { margin:3px 0; font-size:12px; }

/* Documentos (lista, formulario y ficha) */
.aviso-amarillo { background:#fbeecd; color:#8a6314; padding:8px 12px; margin-bottom:12px; }
.fg-filtros { display:flex; flex-wrap:wrap; gap:10px; align-items:flex-end; }
.fg-filtros > div { flex:1 1 200px; }
.fg-filtros > div.estrecho { flex:0 0 140px; }
.fg-filtros > div.botones { flex:0 0 auto; display:flex; gap:8px; }
body.fg .fg-filtros label { margin-top:0; }
body.fg .fg-filtros select, body.fg .fg-filtros input { width:100%; }
body.fg .fg-filtros button { margin:0; }
.fg-dialogo-ancho { max-width:960px; }
table.fg-lineas { width:100%; border:1px solid var(--line); margin-top:6px; }
body.fg table.fg-lineas td { padding:1px 2px; height:auto; border-bottom:1px solid #f0f2f4; }
body.fg table.fg-lineas input { width:100%; padding:3px 4px !important; font-size:12px !important; }
table.fg-lineas td.cant { display:flex; align-items:center; gap:2px; }
table.fg-lineas td.cant .unidad { font-size:10px; color:var(--muted); width:26px; }
table.fg-lineas td.total-linea { font-size:12px; padding-right:6px; }
table.fg-lineas tr.texto td { background:#fafbfc; }
table.fg-lineas tr.texto input { font-style:italic; width:calc(100% - 50px) !important; }
.etiqueta-texto { font-size:11px; color:var(--muted); margin:0 6px 0 4px; }
body.fg button.fg-quitar { background:none; border:0; color:var(--red); padding:2px 6px; box-shadow:none; }
body.fg button.fg-quitar:hover { background:#fbeceb; }
.fg-totales { text-align:right; font-weight:700; color:var(--navy); margin-top:10px; white-space:pre; }
.fg-origen { color:#b8823a; font-size:12px; margin:6px 0; }
.fg-sub { color:var(--muted); font-size:12px; margin-top:10px; }
.fg-convertido { color:var(--teal); font-size:12px; }
body.fg textarea { width:100%; }
.fg-exportar { display:flex; align-items:center; gap:6px; padding:0 20px 14px; }
.fg-exportar span { font-size:11px; color:var(--muted); }
body.fg .fg-exportar button { margin:0; padding:3px 10px; }
.fg-dialogo-botones { flex-wrap:wrap; }

/* Tesorería y formas de pago */
.fg-kpis { display:flex; gap:8px; margin-bottom:10px; }
.fg-kpi { flex:1; background:#fff; border:1px solid var(--line); padding:10px 14px; }
.fg-kpi .valor { font-size:21px; font-weight:700; }
.fg-kpi .valor.rojo { color:var(--red); }
.fg-kpi .valor.verde { color:var(--teal); }
.fg-kpi .etiqueta { font-size:11px; color:var(--muted); }
table.fg-multi td a { color:var(--teal); }
.fg-vencimientos { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.fg-venc { display:flex; align-items:center; }
body.fg .fg-venc input { width:60px !important; }

/* Informes: pestañas como el ttk.Notebook del escritorio */
.fg-pestanas { display:flex; flex-wrap:wrap; gap:2px; border-bottom:1px solid #b9c3cc; margin-bottom:12px; }
.fg-pestanas a { padding:6px 14px; background:#e6eaee; border:1px solid #b9c3cc; border-bottom:0; color:var(--ink); text-decoration:none; font-size:13px; margin-bottom:-1px; }
.fg-pestanas a.activa { background:#fff; font-weight:600; padding-bottom:7px; }
.fg-pestanas a:hover { background:#f3f5f7; }
.fg-filtros .salto { flex-basis:100%; height:0; }
.fg-filtros .botones a { text-decoration:none; }
.fg-balance { display:flex; gap:10px; }
.fg-balance > div { flex:1; background:var(--bg); text-align:center; padding:10px 12px; }
.fg-balance .valor { font-size:19px; font-weight:700; color:var(--navy); }
.fg-balance .etiqueta { font-size:11px; color:var(--muted); }
body.fg table.fg-tabla tr.supera td { background:#fdf6e7; }
body.fg table.fg-tabla tr.familia td { font-weight:700; background:#f3f5f7; }
body.fg table.fg-tabla tr.subtotal td { font-weight:700; color:var(--navy); border-bottom:1px solid var(--line); }
svg.fg-lineas3d { width:100%; height:auto; margin-top:10px; }
svg.fg-lineas3d .rejilla { stroke:#e6eaee; }
svg.fg-lineas3d .eje { font-size:11px; fill:var(--muted); }
svg.fg-lineas3d polyline { fill:none; stroke-width:3; stroke-linejoin:round; }
svg.fg-lineas3d .sombra { stroke:rgba(0,0,0,.15); }
svg.fg-lineas3d .ventas { stroke:#1f8a7a; } svg.fg-lineas3d .compras { stroke:#16324f; }
svg.fg-lineas3d .ventas-p { fill:#1f8a7a; } svg.fg-lineas3d .compras-p { fill:#16324f; }
.fg-leyenda { display:flex; gap:16px; font-size:12px; margin-top:4px; }
.fg-leyenda .ventas { color:#1f8a7a; } .fg-leyenda .compras { color:#16324f; }
@media print { .fg-sidebar, .fg-menubar, .fg-pestanas, form, .fg-acciones { display:none !important; } body.fg { background:#fff; } }
.fg-mono { font-family:Consolas, "Courier New", monospace; font-size:12px; }
.fg-ok { color:var(--teal); font-weight:700; margin-top:10px; }
.fg-mal { color:var(--red); font-weight:700; margin-top:10px; }
.aviso-verde { background:#e4ede9; color:var(--navy); padding:8px 12px; margin-bottom:12px; }
/* Desglose de IVA y recargo de equivalencia, cada dato en su casilla (escritorio 2.149) */
.fg-desglose { width: auto; border-collapse: collapse; margin: 8px 0 0 auto; }
.fg-desglose th { font-size: 11px; color: var(--muted); font-weight: 600; background: none; border: none; padding: 2px 8px; text-align: right; }
.fg-desglose td { border: 1px solid var(--line); background: #fffef2; padding: 4px 10px; text-align: right; min-width: 90px; font-variant-numeric: tabular-nums; }
.fg-total-grande { text-align: right; font-size: 20px; font-weight: 700; color: var(--navy); margin-top: 6px; }

/* ===== Diseño corporativo (escritorio 2.152-2.156) ===== */
/* Barra superior con Empresa y Ejercicio en todas las pantallas */
.fg-barra-corp { display:flex; align-items:center; gap:6px; background:#fff; border:1px solid var(--line);
  padding:6px 10px; margin:0 0 10px; flex-wrap:wrap; }
.fg-barra-corp label { display:inline; margin:0 2px 0 10px; font-size:13px; font-weight:700; color:var(--ink); }
.fg-barra-corp label:first-child { margin-left:0; }
body.fg .fg-barra-corp select { width:auto; min-width:96px; padding:3px 6px; }
.fg-campo-ro { border:1px solid #9aa5b1; background:#fffdf3; padding:2px 8px; font-size:13px; }
/* Botonera siempre visible abajo, como la del escritorio */
body.fg .fg-acciones, body.fg .fg-dialogo-botones, body.fg .botones {
  position:sticky; bottom:0; z-index:15; background:#eef1f4; border-top:1px solid var(--line);
  padding:6px 8px; margin-left:0; margin-right:0; }
body.fg .fg-acciones button, body.fg .fg-dialogo-botones button, body.fg .botones button { margin-top:0; }
@media (max-width: 600px) { .fg-barra-corp label { margin-left:4px; } }

.fg-menubar { overflow-x: clip; overflow-y: visible; }

/* ===== FacturaGesTOTAL RRHH: pantalla lista + ficha (ui.VistaFicha del escritorio) ===== */
.rh-barra { background:#fff; border:1px solid var(--line); display:flex; align-items:center; gap:8px; padding:6px 10px; margin-bottom:6px; flex-wrap:wrap; }
.rh-barra b { font-size:13px; }
body.fg .rh-barra input.rh-filtro { width:240px; }
body.fg .rh-barra select { width:auto; min-width:200px; }
body.fg .rh-barra input.num { width:90px; }
.rh-barra .fg-nota { margin:0; }
.rh-lista { background:#fff; border:1px solid var(--line); max-height:38vh; overflow:auto; }
body.fg .rh-lista table { border:0; }
body.fg .rh-lista thead th { position:sticky; top:0; z-index:1; }
body.fg .rh-lista tr.baja td { color:#9aa5b1; }
.rh-ficha { background:#fff; border:1px solid var(--line); margin-top:6px; padding:8px 10px; }
.rh-bloque { border:1px solid var(--line); margin:0 0 10px; padding:4px 10px 10px; }
.rh-bloque > legend { color:var(--navy); font-weight:700; font-size:13px; padding:0 4px; }
.rh-fila { display:flex; flex-wrap:wrap; gap:6px 12px; align-items:flex-end; }
.rh-campo { display:flex; flex-direction:column; }
.rh-campo.expand { flex:1 1 auto; }
body.fg .rh-campo label { font-size:11px; color:var(--muted); margin:6px 0 2px; }
body.fg .rh-campo input:disabled, body.fg .rh-campo select:disabled, body.fg .rh-campo textarea:disabled { background:#fffef2; color:var(--ink); opacity:1; }
body.fg .rh-campo.editando input, body.fg .rh-campo.editando select, body.fg .rh-campo.editando textarea { background:#fff; }
.rh-campo.check label.rh-check { display:flex; gap:6px; align-items:center; font-size:13px; color:var(--ink); margin-top:18px; }
body.fg .rh-campo textarea { min-height:52px; resize:vertical; }
.rh-botonera { display:flex; gap:4px; align-items:center; margin-top:6px; flex-wrap:wrap; }
body.fg .rh-botonera button { margin:0; display:inline-flex; align-items:center; gap:5px; padding:3px 8px; }
body.fg .rh-botonera button img { width:18px; height:18px; }
body.fg .rh-botonera button:disabled { opacity:.45; cursor:default; }
.rh-botonera .rh-estado { margin-left:auto; font-weight:700; color:var(--navy); padding:0 8px; }
.rh-botonera .rh-estado.editando { color:var(--red); }
.rh-sub table { margin-bottom:4px; }
body.fg .rh-sub .rh-botonera button { padding:1px 8px; }
.rh-dialogo-fondo { position:fixed; inset:0; background:rgba(15,35,56,.35); display:flex; align-items:center; justify-content:center; z-index:100; }
.rh-dialogo { background:#fff; border:1px solid #b9c3cc; box-shadow:0 6px 24px rgba(0,0,0,.2); min-width:360px; max-width:92vw; }
.rh-dialogo .fg-dialogo-cuerpo { padding:8px 18px 12px; }
.rh-avisos li { margin:4px 0; }
.rh-kpis { display:flex; gap:12px; flex-wrap:wrap; margin-bottom:14px; }
.rh-kpi { background:#fff; border:1px solid var(--line); padding:12px 16px; min-width:180px; }
.rh-kpi .v { font-size:24px; font-weight:700; color:var(--navy); }
.rh-kpi .e { font-size:11px; color:var(--muted); text-transform:uppercase; }

/* ===== Portal del empleado ===== */
body.portal { background:#eef1f4; margin:0; font-family:"Segoe UI", Tahoma, Arial, sans-serif; color:#20242a; }
.pt-cab { background:#16324f; color:#fff; display:flex; align-items:center; gap:12px; padding:8px 16px; }
.pt-cab img { width:34px; height:34px; }
.pt-cab .pt-nombre { font-weight:600; }
.pt-cab .pt-empresa { font-size:12px; opacity:.8; }
.pt-cab form { margin-left:auto; }
.pt-cab button { background:none; border:1px solid rgba(255,255,255,.4); color:#fff; padding:4px 10px; cursor:pointer; margin:0; }
.pt-cuerpo { max-width:920px; margin:16px auto; padding:0 12px; display:grid; grid-template-columns:minmax(260px, 340px) 1fr; gap:16px; }
@media (max-width:760px) { .pt-cuerpo { grid-template-columns:1fr; } }
.pt-reloj { background:#071526; color:#f7fbff; padding:22px 20px; text-align:center; border-radius:4px; }
.pt-estado { font-weight:700; letter-spacing:3px; font-size:15px; }
.pt-tiempo { font-size:52px; font-weight:700; letter-spacing:2px; margin:4px 0; font-variant-numeric:tabular-nums; }
.pt-desde { color:#9fb0c2; font-size:13px; min-height:18px; }
.pt-botones { display:flex; flex-direction:column; gap:8px; margin-top:16px; }
.pt-botones button { border:0; border-radius:4px; padding:12px; font-size:17px; cursor:pointer; color:#fff; background:#1f8a7a; }
.pt-botones .fila { display:flex; gap:8px; }
.pt-botones .fila button { flex:1; background:#2b3b4f; font-size:15px; }
.pt-botones button.parar { background:#c0392b; }
.pt-botones button[hidden] { display:none; }
.pt-nota { width:100%; margin-top:10px; padding:7px; border:1px solid #33475e; background:#0d2036; color:#fff; box-sizing:border-box; }
.pt-msg { min-height:18px; margin-top:8px; font-size:13px; color:#ffd58a; }
.pt-panel { background:#fff; border:1px solid #dde3e9; }
.pt-panel h2 { background:#16324f; color:#fff; font-size:13px; margin:0; padding:8px 12px; display:flex; align-items:center; gap:8px; }
.pt-panel h2 select { margin-left:auto; }
.pt-panel table { width:100%; border-collapse:collapse; font-size:13px; }
.pt-panel th, .pt-panel td { padding:5px 8px; border-bottom:1px solid #f0f2f4; text-align:left; }
.pt-panel td.num, .pt-panel th.num { text-align:right; }
.pt-panel tr.nolab td { color:#9aa5b1; }
.pt-panel tfoot td { font-weight:700; }
.pt-login { max-width:360px; margin:60px auto; background:#fff; border:1px solid #dde3e9; padding:26px 28px; }
.pt-login h1 { color:#16324f; font-size:20px; margin:8px 0 4px; }
.pt-login label { display:block; font-size:12px; color:#7a8794; margin:12px 0 4px; }
.pt-login input { width:100%; padding:8px; border:1px solid #9aa5b1; box-sizing:border-box; font-size:14px; }
.pt-login button { width:100%; margin-top:18px; padding:10px; background:#1f8a7a; color:#fff; border:0; font-size:15px; cursor:pointer; }
.pt-login .error { background:#fdecea; color:#c0392b; padding:8px 10px; font-size:13px; margin-top:10px; }
/* informes (registro salarial, estadísticas) */
.rh-informe { max-height:none; margin-bottom:10px; overflow-x:auto; }
.rh-informe table.fg-tabla th { white-space:nowrap; }
body.fg table.fg-tabla tr.rh-alerta td { color:var(--red); font-weight:600; }
.rh-subtitulo { font-size:13px; color:var(--teal-oscuro, #176b5f); margin:12px 0 4px; }
.rh-barra label { display:inline-flex; align-items:center; gap:4px; margin:0; font-size:13px; color:inherit; }
.rh-barra label input { width:auto; }
#avisos div { color:var(--red); font-size:12px; margin:3px 0; }
@media print { .rh-barra, .rh-botonera { display:none !important; } .rh-informe { overflow:visible; } }
/* jornadas reales agrarias */
.rh-jornadas table.fg-tabla th.rh-dia, .rh-jornadas table.fg-tabla td.rh-dia { width:24px; min-width:24px; padding:4px 0; text-align:center; font-weight:600; }
.rh-jornadas td.rh-dia { cursor:pointer; user-select:none; }
.rh-jornadas td.rh-dia:hover { outline:1px solid var(--teal); }
.rh-jornadas .rh-domingo { background:#f3f5f7; }
.rh-jornadas td.rh-marca-S { color:var(--teal-oscuro, #176b5f); background:#e4f2ef; }
.rh-jornadas td.rh-marca-P { color:#a8702a; background:#fcf2e2; }
.rh-jornadas td.rh-marca-N { color:var(--muted); }
.rh-jornadas tr.rh-cambiado td:first-child { color:var(--teal-oscuro, #176b5f); font-weight:600; }
/* campos de los diálogos de botones propios */
.rh-dialogo-campos { display:flex; flex-direction:column; gap:2px; min-width:320px; }
.rh-dialogo-campos label { margin:8px 0 2px; }
.rh-dialogo-campos { max-height:70vh; overflow:auto; }
.rh-dialogo-casillas { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:2px 14px; margin-top:6px; }
.rh-dialogo-casillas label { margin:2px 0; display:flex; gap:6px; align-items:center; font-weight:normal; }

/* ---- portal del empleado: secciones (0.24) */
.pt-nav { background:#fff; border-bottom:1px solid #dde3e9; display:flex; gap:2px; overflow-x:auto; padding:0 10px; position:sticky; top:0; z-index:5; }
.pt-nav a { padding:10px 12px; color:#20242a; text-decoration:none; white-space:nowrap; font-size:14px; border-bottom:2px solid transparent; }
.pt-nav a:hover { color:#1f8a7a; }
.pt-nav a.activo { color:#1f8a7a; border-bottom-color:#1f8a7a; font-weight:600; }
.pt-nav a[hidden] { display:none; }
.pt-contador { background:#c0392b; color:#fff; border-radius:9px; padding:0 6px; font-size:11px; }
.pt-contador:empty { display:none; }
.pt-cuerpo { max-width:1180px; grid-template-columns:minmax(250px, 300px) 1fr; align-items:start; }
.pt-reloj { position:sticky; top:52px; }
.pt-geo { display:flex; align-items:center; gap:6px; justify-content:center; font-size:12px; color:#9fb0c2; margin-top:8px; }
.pt-geo input { width:auto; margin:0; }
.pt-secciones { min-width:0; }
.pt-sec > .pt-panel { margin-bottom:14px; }
.pt-caja { padding:12px 14px; }
.pt-caja > table { margin:0 -14px; width:calc(100% + 28px); }
.pt-texto { color:#7a8794; font-size:13px; margin:4px 0 10px; line-height:1.4; }
.pt-kpis { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:10px; margin-bottom:14px; }
.pt-caja .pt-kpis { margin-bottom:0; }
.pt-kpi { background:#fff; border:1px solid #dde3e9; padding:12px 14px; }
.pt-kpi .valor { font-size:24px; font-weight:700; color:#16324f; font-variant-numeric:tabular-nums; }
.pt-kpi .valor.rojo { color:#c0392b; }
.pt-kpi .valor.verde { color:#1f8a7a; }
.pt-kpi .etiqueta { font-size:12px; color:#7a8794; margin-top:2px; }
.pt-barra { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:10px; }
.pt-barra select, .pt-barra button { width:auto; margin:0; }
.pt-fila { display:flex; gap:10px; flex-wrap:wrap; }
.pt-fila > .pt-campo { flex:1 1 140px; }
.pt-campo { display:block; margin:0 0 10px; }
.pt-campo > span { display:block; font-size:12px; color:#7a8794; margin-bottom:3px; }
.pt-campo input, .pt-campo select, .pt-campo textarea { width:100%; box-sizing:border-box; padding:7px 8px; border:1px solid #b9c3cc; font:inherit; font-size:14px; }
.pt-rejilla { display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:0 12px; }
.pt-fijos { display:grid; grid-template-columns:repeat(auto-fit, minmax(160px, 1fr)); gap:8px; margin-bottom:10px; }
.pt-fijos span { display:block; font-size:11px; color:#7a8794; text-transform:uppercase; }
.pt-caja button, .pt-dialogo button { background:#1f8a7a; color:#fff; border:1px solid #17705f; padding:7px 14px; cursor:pointer; font:inherit; font-size:14px; margin:0; }
.pt-caja button.secundario, .pt-dialogo button.secundario { background:#f2f2f0; color:#20242a; border-color:#b5b8bc; }
.pt-caja button.peligro { background:#fbeceb; color:#c0392b; border-color:#e3b5b0; }
.pt-caja button.pt-mini { padding:3px 9px; font-size:12px; }
.pt-acciones { display:flex; gap:4px; }
.pt-panel td.vacio { color:#9aa5b1; text-align:center; }
.pt-badge { font-size:11px; padding:2px 8px; border-radius:10px; font-weight:600; background:#eef1f4; color:#7a8794; }
.pt-badge.ok { background:#e4f2ef; color:#176b5f; }
.pt-badge.mal { background:#fdecea; color:#c0392b; }
.pt-badge.aviso { background:#fcf2e2; color:#a8702a; }
.pt-punto::before { content:"●"; margin-right:5px; }
.pt-punto.working { color:#1f8a7a; } .pt-punto.paused { color:#e4a93b; } .pt-punto.stopped { color:#9aa5b1; }
.pt-anuncio { border-left:3px solid #dde3e9; padding:4px 10px; margin-bottom:10px; }
.pt-anuncio.importante { border-left-color:#c0392b; }
.pt-anuncio p { margin:4px 0 0; white-space:pre-line; font-size:13px; }
.pt-fecha { color:#7a8794; font-size:12px; margin-left:8px; }
.pt-scroll { overflow-x:auto; margin:0 -14px; }
table.pt-cal { font-size:11px; }
table.pt-cal th.dia, table.pt-cal td.dia { width:24px; min-width:24px; padding:3px 0; text-align:center; border-left:1px solid #f0f2f4; }
table.pt-cal .finde { background:#f3f5f7; }
table.pt-cal td.nombre { white-space:nowrap; padding-right:10px; }
table.pt-cal tr.yo td.nombre { font-weight:700; color:#1f8a7a; }
table.pt-cal td.vac { background:#d9efe9; color:#176b5f; font-weight:700; }
table.pt-cal td.fuera { background:#fcf2e2; color:#a8702a; font-weight:700; }
table.pt-cal td.turno { background:#e6edf5; color:#16324f; }
table.pt-cal td.libre { color:#9aa5b1; }
.pt-dialogo-fondo { position:fixed; inset:0; background:rgba(10,20,35,.45); display:flex; align-items:center; justify-content:center; z-index:50; padding:16px; }
.pt-dialogo { background:#fff; width:100%; max-width:480px; padding:18px 20px; box-shadow:0 8px 30px rgba(0,0,0,.25); }
.pt-dialogo h3 { margin:0 0 12px; color:#16324f; }
.pt-dialogo-botones { display:flex; gap:8px; margin-top:12px; }
.pt-error { color:#c0392b; font-size:13px; min-height:16px; }
.pt-aviso { position:fixed; bottom:18px; left:50%; transform:translateX(-50%); background:#16324f; color:#fff; padding:10px 18px; z-index:60; max-width:90vw; box-shadow:0 4px 14px rgba(0,0,0,.25); }
.pt-aviso.error { background:#c0392b; }
@media (max-width:760px) { .pt-reloj { position:static; } .pt-cuerpo { grid-template-columns:1fr; } }
.rh-turnos { display:flex; gap:6px; flex-wrap:wrap; margin:8px 0; }
.rh-turnos button { margin:0; }
.rh-turnos button.elegido { outline:2px solid var(--navy); font-weight:700; }
table.rh-cuadrante td.celda { cursor:pointer; text-align:center; min-width:90px; }
table.rh-cuadrante td.celda:hover { outline:1px solid var(--teal); }

/* ---- quiosco de fichaje */
body.quiosco { margin:0; background:#071526; color:#f7fbff; font-family:"Segoe UI", Tahoma, Arial, sans-serif; min-height:100vh; }
.qk-cab { display:flex; align-items:center; gap:12px; padding:10px 18px; background:#0b1f36; }
.qk-cab img { width:36px; height:36px; }
.qk-cab span { display:block; font-size:12px; color:#9fb0c2; }
.qk-hora { margin-left:auto; font-size:28px; font-weight:700; font-variant-numeric:tabular-nums; }
.qk-cuerpo { max-width:900px; margin:0 auto; padding:18px; text-align:center; }
.qk-buscar { width:100%; box-sizing:border-box; padding:14px; font-size:20px; border:0; border-radius:6px; margin-bottom:14px; }
.qk-nombres { display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:10px; }
.qk-nombre { padding:18px 10px; font-size:17px; border:0; border-radius:6px; background:#18283b; color:#fff; cursor:pointer; border-left:6px solid #758295; }
.qk-nombre.working { border-left-color:#20b89f; } .qk-nombre.paused { border-left-color:#e4a93b; }
.qk-nombre:disabled { opacity:.45; cursor:not-allowed; }
.qk-puntos { font-size:30px; letter-spacing:8px; min-height:44px; margin:10px 0; color:#9fb0c2; }
.qk-teclado { display:grid; grid-template-columns:repeat(3, 96px); gap:10px; justify-content:center; }
.qk-teclado button { height:78px; font-size:28px; border:0; border-radius:8px; background:#18283b; color:#fff; cursor:pointer; }
.qk-teclado button.ok { background:#1f8a7a; font-size:22px; }
.qk-estado { font-size:22px; margin:10px 0 18px; }
.qk-estado.working { color:#20b89f; } .qk-estado.paused { color:#e4a93b; } .qk-estado.stopped { color:#9fb0c2; }
.qk-acciones { display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
.qk-acciones button { min-width:200px; padding:22px; font-size:22px; border:0; border-radius:8px; color:#fff; background:#1f8a7a; cursor:pointer; }
.qk-acciones button.pause, .qk-acciones button.resume { background:#2b3b4f; }
.qk-acciones button.stop { background:#c0392b; }
.qk-msg { min-height:22px; margin-top:14px; color:#ffd58a; font-size:16px; }
.qk-volver { margin-top:22px; background:none; border:1px solid #33475e; color:#9fb0c2; padding:10px 24px; font-size:16px; border-radius:6px; cursor:pointer; }
.qk-qr { display:flex; align-items:center; gap:16px; justify-content:center; margin:18px auto 0; max-width:520px; background:#0b1f36; border-radius:8px; padding:12px 16px; text-align:left; }
.qk-qr .qk-qr-img { width:150px; height:150px; flex:none; background:#fff; border-radius:4px; }
.qk-qr .qk-qr-img svg { width:100%; height:100%; display:block; }
.qk-qr p { margin:0; color:#9fb0c2; font-size:15px; } .qk-qr b { color:#fff; font-size:17px; display:block; margin-bottom:4px; }
/* portal: fichar escaneando el QR del quiosco (0.89) */
.pt-qr .qk-estado { font-size:20px; } .pt-qr .qk-estado.working { color:#1f8a7a; } .pt-qr .qk-estado.stopped { color:#7a8794; }
.pt-qr-acciones { display:flex; flex-direction:column; gap:10px; margin:12px 0; }
.pt-qr-acciones button { padding:16px; font-size:18px; border:0; border-radius:6px; color:#fff; background:#1f8a7a; cursor:pointer; }
.pt-qr-acciones button.pause, .pt-qr-acciones button.resume { background:#5d6b7a; } .pt-qr-acciones button.stop { background:#c0392b; }

/* ---- portal: organigrama y campos ocultos (0.25) */
.pt-campo[hidden] { display:none; }
ul.pt-arbol, ul.pt-arbol ul { list-style:none; margin:0; padding-left:18px; border-left:1px solid #dde3e9; }
ul.pt-arbol { border-left:0; padding-left:0; }
ul.pt-arbol li { margin:6px 0; }
.pt-org { display:inline-flex; flex-direction:column; background:#f4f7f9; border:1px solid #dde3e9; border-left:3px solid #1f8a7a; padding:5px 10px; }
.pt-org small { color:#7a8794; }

/* ---- cabecera: letra y ayuda (0.28) */
.fg-herramientas { display:flex; align-items:center; gap:6px; margin-left:auto; }
.fg-herramientas button { margin:0; padding:4px 10px; }
.fg-letra-nivel { font-size:11px; color:var(--muted); min-width:38px; text-align:center; }
.rh-ayuda { position:fixed; top:70px; right:18px; width:min(460px, calc(100vw - 36px)); max-height:calc(100vh - 90px); display:flex;
  flex-direction:column; background:#fff; border:1px solid var(--line); box-shadow:0 10px 30px rgba(0,0,0,.2); z-index:80; }
.rh-ayuda-cab { background:var(--navy); color:#fff; display:flex; align-items:center; justify-content:space-between; padding:6px 12px; }
.rh-ayuda-cerrar { background:none !important; border:0 !important; color:#fff !important; font-size:20px; padding:0 4px !important; margin:0 !important; }
.rh-ayuda-cuerpo { overflow:auto; padding:10px 16px 14px; font-size:13px; line-height:1.45; }
.rh-ayuda-cuerpo h2 { color:var(--navy); font-size:17px; margin:4px 0 6px; }
.rh-ayuda-cuerpo h3 { color:var(--teal); font-size:13px; margin:14px 0 4px; }
.rh-ayuda-cuerpo dt { font-weight:700; margin-top:8px; }
.rh-ayuda-cuerpo dd { margin:2px 0 0 14px; color:#3b4652; }
.rh-ayuda-cuerpo ol { margin:4px 0; padding-left:20px; }
.rh-oblig { font-size:10px; color:var(--red); margin-left:8px; }
.rh-ayuda-pie { font-size:11px; color:var(--muted); padding:6px 12px; border-top:1px solid var(--line); background:#fafbfc; }

.pt-herramientas { margin-left:auto; display:flex; gap:4px; }
.pt-herramientas button { background:none; border:1px solid rgba(255,255,255,.4); color:#fff; padding:4px 9px; cursor:pointer; margin:0; font-weight:700; }
.pt-cab .pt-herramientas + form { margin-left:8px; }

/* ---- pantallas especiales (operaciones_web.py) */
.rh-pasos { display:flex; align-items:center; gap:6px; margin:4px 0 8px; flex-wrap:wrap; }
.rh-paso { background:#fff !important; color:var(--navy) !important; border:1px solid var(--line) !important; font-weight:700; padding:6px 16px !important; margin:0 !important; box-shadow:none !important; }
.rh-paso.hecho { background:#e3f4f1 !important; }
.rh-paso-flecha { color:var(--muted); font-weight:700; }
table.rh-op-tabla tbody tr { cursor:default; }
table.rh-op-tabla tbody tr.sel td { background:#e3f4f1; }
table.rh-op-tabla tr.pend td { color:var(--muted); }
table.rh-op-tabla tr.ambar td { color:#8a5a00; }
.rh-op-pie { background:#fff; border:1px solid var(--line); padding:8px 12px; font-weight:700; color:var(--navy); margin-top:6px; }
.rh-op-dialogo { width:100%; }
.rh-op-texto { white-space:pre-line; max-height:60vh; overflow:auto; }
.rh-op-campos { display:grid; grid-template-columns:auto 110px 1fr; gap:6px 10px; align-items:center; margin-bottom:8px; }
.rh-op-campos label { margin:0 !important; text-transform:none !important; font-size:13px !important; color:var(--ink) !important; }
input.num { text-align:right; }
.rh-nom-cab { display:flex; gap:12px; align-items:baseline; flex-wrap:wrap; border:1px solid var(--line); padding:8px 12px; }
.rh-nom-liq { margin-left:auto; color:var(--teal); font-size:16px; }
.rh-nom-aviso { background:#fff6e0; color:#8a5a00; padding:4px 10px; margin-top:4px; }
.rh-nom-cuerpo { display:grid; grid-template-columns:1fr 300px; gap:10px; margin-top:8px; }
.rh-nom-tabla { max-height:60vh; overflow:auto; }
.rh-nom-tabla tr.titulo td { color:var(--navy); font-weight:700; background:#fafbfc; }
.rh-nom-tabla tr.total td { font-weight:700; }
.rh-nom-tabla tr.sel td { background:#e3f4f1; }
.rh-nom-tabla tbody tr:not(.titulo) { cursor:pointer; }
.rh-nom-expl { border:1px solid var(--line); padding:10px 12px; margin-bottom:8px; }
.rh-nom-expl-t { font-weight:700; color:var(--navy); font-size:14px; }
.rh-nom-expl-i { font-size:20px; font-weight:700; margin:4px 0; }
.rh-nom-expl-c { background:#fffef2; padding:6px; white-space:pre-line; }
.rh-nom-expl-d { white-space:pre-line; }
@media (max-width:900px) { .rh-nom-cuerpo { grid-template-columns:1fr; } }
.rh-op-dialogo .fg-cerrar { background:none !important; border:0 !important; color:#fff !important; font-size:18px; padding:0 6px !important; margin:0 !important; box-shadow:none !important; }
.rh-dialogo.rh-op-dialogo { max-height:92vh; overflow:auto; }
/* pantallas especiales: tablas secundarias, casillas, resultado e impresión */
.rh-op-acciones { margin-left:auto; display:flex; gap:6px; flex-wrap:wrap; }
.rh-op-acciones button { margin:0 !important; }
.rh-op-pie:empty, .rh-op-nota:empty, .rh-op-subtitulo:empty { display:none; }
.rh-op-nota { margin:4px 0 6px; white-space:pre-line; }
.rh-op-cabecera { margin:0 0 6px; }
.rh-op-subtitulo { font-weight:700; color:var(--teal-oscuro, #176b5f); margin:8px 0 4px; }
table.rh-op-tabla tr.total td { font-weight:700; }
.rh-op-tablas { display:flex; flex-wrap:wrap; gap:0 10px; }
.rh-op-tablas .rh-op-seccion { flex:1 1 100%; min-width:0; }
.rh-op-tablas .rh-op-mitad { flex:1 1 calc(50% - 10px); }
.rh-op-tablas .rh-op-tercio { flex:1 1 calc(33.33% - 10px); }
.rh-op-tarjeta { background:#fff; border:1px solid var(--line); padding:14px 20px; max-width:720px; }
.rh-op-tarjeta-t { font-weight:700; font-size:15px; color:var(--navy); margin-bottom:8px; }
.rh-op-casillas { display:grid; grid-template-columns:auto 180px; gap:6px 14px; align-items:center; }
.rh-op-casilla { background:#fffef2; border:1px solid var(--line); text-align:right; padding:2px 8px; font-size:15px; }
.rh-op-resultado { background:#fff; border:1px solid var(--line); padding:12px 20px; white-space:pre; font-size:15px; margin:8px 0; overflow:auto; }
.rh-op-titulo-impresion { display:none; }
@media (max-width:900px) { .rh-op-tablas .rh-op-mitad, .rh-op-tablas .rh-op-tercio { flex-basis:100%; } }
@media print {
  .rh-op-titulo-impresion { display:block; font-size:16px; margin:0 0 8px; }
  .rh-pasos, #estado { display:none !important; }
  body.rh-imprimir-solo .rh-op-seccion:not(.rh-imprimible), body.rh-imprimir-solo .rh-op-pie,
  body.rh-imprimir-solo .rh-op-nota, body.rh-imprimir-solo .rh-op-tarjeta { display:none !important; }
}
.rh-op-param { display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
table.rh-op-tabla td.num { white-space:nowrap; }
table.rh-op-tabla tr.rojo td { color:var(--red); }
.rh-op-fila { display:flex; gap:8px; align-items:flex-start; }
.rh-op-fila > #principal { flex:1 1 auto; min-width:0; }
.rh-op-lado { flex:0 0 420px; }
@media (max-width:1000px) { .rh-op-fila { flex-wrap:wrap; } .rh-op-lado { flex-basis:100%; } }
table.rh-op-tabla tr.nolab td { color:var(--muted); background:#f6f7f9; }
table.rh-op-tabla tr.baja td { color:var(--muted); text-decoration:line-through; }
.rh-op-calendario { margin-top:8px; }
table.rh-op-cal { width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--line); table-layout:fixed; }
table.rh-op-cal th { font-size:10px; color:var(--muted); font-weight:400; text-align:center; padding:2px 0; line-height:1.2; }
table.rh-op-cal th:first-child, table.rh-op-cal td.rh-op-cal-n { width:180px; }
table.rh-op-cal td { padding:2px 1px; border:0; }
table.rh-op-cal td.rh-op-cal-n { font-size:12px; padding-left:6px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
table.rh-op-cal td span { display:block; height:14px; border:1px solid var(--line); }
.rh-op-leyenda { display:flex; gap:14px; font-size:12px; margin:4px 0; flex-wrap:wrap; }
.rh-op-leyenda i { display:inline-block; width:14px; height:12px; margin-right:4px; vertical-align:middle; }
.rh-op-ventana-nota { font-weight:700; color:var(--teal); margin:8px 0 0; }
.rh-op-ventana-nota.rojo { color:var(--red); }
.rh-op-fila.con-lado .rh-lista { max-height:330px; overflow:auto; }
.rh-op-seleccion { background:#fff; border:1px solid var(--line); padding:4px 8px 6px; margin-bottom:6px; }
.rh-op-sel-barra { display:flex; align-items:center; gap:8px; margin-bottom:4px; }
.rh-op-sel-barra select { width:auto; min-width:180px; }
.rh-op-sel-barra button { margin:0 !important; padding:4px 12px !important; }
.rh-op-sel-cuerpo { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:2px 20px; }
.rh-op-sel-item { display:flex !important; align-items:center; gap:6px; margin:0 !important; font-size:13px !important; color:var(--ink) !important; text-transform:none !important; }
.rh-op-sel-item input { width:auto; }
@media (max-width:900px) { .rh-op-sel-cuerpo { grid-template-columns:1fr; } }
.rh-op-kpis { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.rh-op-kpi { flex:1 1 200px; background:#fff; border:1px solid var(--line); border-left:5px solid var(--kpi); padding:10px 14px; display:grid;
  grid-template-columns:1fr auto; color:inherit; text-decoration:none; }
.rh-op-kpi b { font-size:28px; color:var(--kpi); grid-column:1; grid-row:1; line-height:1.1; }
.rh-op-kpi span:last-child { grid-column:1; color:var(--muted); font-size:13px; }
.rh-op-kpi-i { grid-column:2; grid-row:1 / span 2; font-size:26px; align-self:center; }
a.rh-op-kpi:hover { background:#f7f9fa; }

/* portal: encuestas, evaluaciones y tareas */
.pt-pregunta { margin:12px 0; }
.pt-pregunta-t { font-weight:600; margin-bottom:6px; }
.pt-opciones { display:flex; flex-wrap:wrap; gap:6px 14px; }
.pt-opciones.escala { gap:4px; }
.pt-opcion { display:inline-flex; align-items:center; gap:4px; font-size:14px; cursor:pointer; }
.pt-opciones.escala .pt-opcion { border:1px solid #dde3e9; border-radius:4px; padding:3px 7px; }
.pt-opcion input { width:auto; margin:0; }
.pt-criterio { display:grid; grid-template-columns:1fr 80px; gap:10px; align-items:center; border-bottom:1px solid #eef1f4; padding:6px 0; }
.pt-fila-ev { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:6px 0; }
.pt-dialogo.pt-dialogo-ancho { max-width:720px; width:100%; max-height:90vh; overflow:auto; }

/* ---- portal del empleado en el móvil: el reloj no tapa el contenido */
@media (max-width:760px) {
  .pt-cab { gap:8px; padding:6px 10px; }
  .pt-cab img { width:30px; height:30px; }
  .pt-cab > div:nth-of-type(1) { min-width:0; flex:1; }
  .pt-cab .pt-nombre, .pt-cab .pt-empresa { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .pt-cab form { margin-left:0; }
  .pt-cab button { padding:5px 8px; }
  .pt-nav { padding:0 4px; scrollbar-width:none; }
  .pt-nav::-webkit-scrollbar { display:none; }
  .pt-nav a { padding:11px 10px; }
  .pt-cuerpo { margin:10px auto; gap:10px; padding:0 8px; }
  .pt-reloj { position:static; padding:16px 14px; }
  .pt-tiempo { font-size:44px; }
  .pt-botones button { min-height:46px; }
  /* fuera de Inicio: barra fina fija con el estado, el tiempo y los botones de fichar */
  body.pt-compacto .pt-reloj { position:sticky; top:var(--alto-nav, 42px); z-index:4; display:grid;
    grid-template-columns:auto 1fr; align-items:center; gap:0 10px; padding:7px 10px; margin:-10px -8px 0;
    text-align:left; border-radius:0; box-shadow:0 2px 6px rgba(0,0,0,.25); }
  body.pt-compacto .pt-estado { grid-column:1; grid-row:1; font-size:10px; letter-spacing:1px; }
  body.pt-compacto .pt-tiempo { grid-column:1; grid-row:2; font-size:21px; margin:0; letter-spacing:0; }
  body.pt-compacto .pt-botones { grid-column:2; grid-row:1 / span 2; flex-direction:row; justify-content:flex-end;
    margin:0; gap:6px; }
  body.pt-compacto .pt-botones .fila { flex:0 0 auto; gap:6px; }
  body.pt-compacto .pt-botones button { min-height:38px; padding:6px 12px; font-size:14px; }
  body.pt-compacto .pt-desde, body.pt-compacto .pt-nota, body.pt-compacto .pt-geo { display:none; }
  body.pt-compacto .pt-msg { grid-column:1 / span 2; margin:4px 0 0; }
  body.pt-compacto .pt-msg:empty { display:none; }
  .pt-caja { overflow-x:auto; }
  .pt-caja > table { margin:0; width:100%; min-width:100%; }
  .pt-caja button, .pt-dialogo button { min-height:38px; }
  .pt-caja button.pt-mini { min-height:32px; }
  .pt-dialogo-fondo { align-items:flex-start; padding-top:6px; }
  .pt-dialogo, .pt-dialogo.pt-dialogo-ancho { max-width:none !important; width:calc(100% - 12px); max-height:92vh; overflow:auto;
    padding:14px; box-sizing:border-box; }
  .pt-kpi { padding:10px 12px; }
  .pt-kpi .valor { font-size:21px; }
  .pt-criterio { grid-template-columns:1fr 70px; }
  .pt-panel th, .pt-panel td { padding:5px 5px; font-size:12.5px; }
  .pt-panel td:first-child { white-space:nowrap; }
  .pt-caja button.pt-mini { padding:3px 7px; }
  .pt-panel .pt-largo { display:none; }
  .pt-panel .pt-corto { display:inline; font-size:15px; }
  .pt-caja { padding:10px 8px; }
}
.pt-corto { display:none; }

/* ---- vista previa, impresión y exportación de listados (listado.js) */
.rh-lst-pre { display:flex; justify-content:flex-end; margin:2px 0 3px; }
.rh-lst-boton { background:none !important; border:0 !important; color:#176b5f !important; font-size:12px !important;
  padding:1px 4px !important; margin:0 !important; cursor:pointer; box-shadow:none !important; min-height:0 !important; }
.rh-lst-boton:hover { text-decoration:underline; }
.rh-lst-fondo { position:fixed; inset:0; background:rgba(10,20,35,.5); z-index:80; display:flex; justify-content:center;
  align-items:flex-start; padding:14px; }
.rh-lst-caja { background:#eef1f4; width:100%; max-width:1180px; max-height:calc(100vh - 28px); display:flex; flex-direction:column;
  box-shadow:0 10px 40px rgba(0,0,0,.35); }
.rh-lst-barra { display:flex; align-items:center; gap:6px; flex-wrap:wrap; background:#fff; border-bottom:1px solid #dde3e9; padding:8px 10px; }
.rh-lst-barra button { margin:0 !important; padding:5px 11px !important; background:#f2f2f0; color:#20242a; border:1px solid #c9ccd0;
  cursor:pointer; font:inherit; font-size:13px; }
.rh-lst-barra button:not(.rh-lst-principal) { background:#f2f2f0 !important; color:#20242a !important; border:1px solid #c9ccd0 !important; }
.rh-lst-barra button:not(.rh-lst-principal):hover { background:#e2e2df !important; }
.rh-lst-barra button.rh-lst-principal { background:#1f8a7a; color:#fff; border-color:#17705f; margin-right:10px !important; }
.rh-lst-barra .rh-lst-cerrar { margin-left:auto !important; font-size:18px; line-height:1; padding:2px 10px !important; }
.rh-lst-et { font-weight:700; font-size:13px; color:#16324f; }
.rh-lst-estado { font-size:12px; color:#7a8794; }
.rh-lst-hoja { background:#fff; margin:12px; padding:18px 22px; overflow:auto; box-shadow:0 1px 4px rgba(0,0,0,.12); }
.rh-lst-hoja h1 { color:#16324f; font-size:18px; margin:0 0 2px; }
.rh-lst-sub { color:#7a8794; margin:0 0 10px; font-size:12px; }
.rh-lst-scroll { overflow-x:auto; }
table.rh-lst-tabla { border-collapse:collapse; width:100%; font-size:12px; }
table.rh-lst-tabla th { background:#1f8a7a; color:#fff; text-align:left; padding:5px 6px; white-space:nowrap; }
table.rh-lst-tabla td { padding:4px 6px; border-bottom:1px solid #dde3e9; }
table.rh-lst-tabla .num { text-align:right; white-space:nowrap; }
table.rh-lst-tabla tr.total td { font-weight:700; border-top:2px solid #16324f; }
table.rh-lst-tabla tr.ambar td { color:#8a5a00; } table.rh-lst-tabla tr.rojo td { color:#c0392b; }
table.rh-lst-tabla tr.baja td, table.rh-lst-tabla tr.pend td, table.rh-lst-tabla tr.nolab td { color:#9aa5b1; }
.rh-lst-pie { color:#7a8794; font-size:11px; margin:8px 0 0; }
@media (max-width:760px) { .rh-lst-fondo { padding:0; } .rh-lst-caja { max-height:100vh; } .rh-lst-hoja { margin:6px; padding:10px; } }
/* canal de denuncias en el portal */
.pt-codigos{background:#fff6e0;border:1px solid #e5c56b;border-radius:6px;padding:10px 12px;margin-top:10px}
.pt-codigos b{font-family:Consolas,monospace;font-size:17px;letter-spacing:1px}
.pt-mensaje{border-left:3px solid #1f8a7a;background:#f6f9fa;padding:6px 10px;margin:6px 0}
.pt-mensaje.mio{border-color:#16324f} .pt-mensaje small{display:block;color:#7a8794}

/* objetivos en el portal */
.pt-progreso{height:8px;background:#e9edf1;border-radius:4px;overflow:hidden;margin:4px 0 8px}
.pt-progreso>div{height:100%;background:#1f8a7a}

/* demo pública */
.fg-demo{background:#fff7e0;border-bottom:1px solid #f0d9a0;color:#6b4e00;font-size:13px;padding:7px 18px;display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.fg-demo a{color:#16324f;font-weight:600}
.pt-demo-volver{color:#fff;font-size:13px;text-decoration:underline;margin-left:8px;white-space:nowrap}

/* empresa activa en la cabecera (como en el escritorio) */
.rh-empresa-activa { position:relative; }
.rh-empresa-activa > button { font-weight:600; max-width:340px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rh-empresa-menu { position:absolute; right:0; top:calc(100% + 4px); z-index:50; min-width:260px; max-height:60vh; overflow:auto;
  background:var(--panel); border:1px solid var(--line); border-radius:8px; box-shadow:0 8px 24px rgba(0,0,0,.15);
  padding:4px; display:flex; flex-direction:column; }
.rh-empresa-menu button { margin:0; text-align:left; background:transparent; color:inherit; border:0; padding:7px 10px;
  border-radius:6px; font-weight:400; }
.rh-empresa-menu button:hover { background:rgba(99,102,241,.12); }
.rh-empresa-menu button.activa { font-weight:700; }
@media (max-width:700px) { .rh-empresa-activa > button { max-width:180px; } }
