{"id":19063,"date":"2026-08-03T19:58:53","date_gmt":"2026-08-04T01:58:53","guid":{"rendered":"https:\/\/www.conservisabogados.com\/?page_id=19063"},"modified":"2026-08-04T10:33:17","modified_gmt":"2026-08-04T16:33:17","slug":"calculadora-de-horas-extra-en-guatemala","status":"publish","type":"page","link":"https:\/\/www.conservisabogados.com\/en\/calculadora-de-horas-extra-en-guatemala\/","title":{"rendered":"Calculadora de horas extra en Guatemala"},"content":{"rendered":"\n<title>Calculadora de horas extra en Guatemala<\/title>\n\n<div id=\"jpHorasExtraApp\" class=\"jp-labor-app\">\n  <div class=\"jp-shell\">\n    <section class=\"jp-hero\">\n      <div>\n        <div class=\"jp-brandline\">Conservis Abogados<\/div>\n        <div class=\"jp-kicker\">Herramienta laboral para Guatemala<\/div>\n        <h1>Calculadora de horas extra en Guatemala<\/h1>\n        <p>Esta calculadora permite estimar el pago de horas extra en Guatemala usando el salario mensual ordinario, el tipo de jornada y las horas extraordinarias trabajadas.<\/p>\n        <div class=\"jp-badges\">\n          <span>Horas extra<\/span><span>Recargo 50%<\/span><span>Guatemala<\/span><span>Jornada laboral<\/span><span>PDF<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"jp-hero-card\">\n        <strong>C\u00f3mo usarla correctamente<\/strong>\n        <p>Ingresa el salario mensual ordinario, selecciona la jornada ordinaria aplicable e indica cu\u00e1ntas horas extra se deben pagar. La herramienta estima el valor de la hora ordinaria y aplica el recargo m\u00ednimo del 50%.<\/p>\n      <\/div>\n    <\/section>\n\n    <section class=\"jp-card jp-instructions\">\n      <span class=\"jp-instructions-label\">Antes de calcular<\/span>\n      <h2>\u00bfQu\u00e9 datos se necesitan?<\/h2>\n      <p>La calculadora estima el pago de horas extra con base en la jornada ordinaria seleccionada. Para evitar errores, debe utilizarse el salario mensual ordinario y no mezclar horas ordinarias con horas extraordinarias.<\/p>\n      <div class=\"jp-columns\">\n        <div>\n          <h3>Jornada diurna<\/h3>\n          <p>Usa 8 horas ordinarias diarias como referencia para calcular el valor de la hora ordinaria. Tambi\u00e9n debe revisarse el l\u00edmite semanal aplicable.<\/p>\n        <\/div>\n        <div>\n          <h3>Jornada mixta<\/h3>\n          <p>Usa 7 horas ordinarias diarias como referencia para calcular el valor de la hora ordinaria. Tambi\u00e9n debe revisarse el l\u00edmite semanal aplicable.<\/p>\n        <\/div>\n        <div>\n          <h3>Jornada nocturna<\/h3>\n          <p>Usa 6 horas ordinarias diarias como referencia para calcular el valor de la hora ordinaria. Tambi\u00e9n debe revisarse el l\u00edmite semanal aplicable.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"jp-warning-note\">\n        <strong>Importante:<\/strong> esta herramienta ofrece una estimaci\u00f3n simplificada. En casos reales debe revisarse la jornada semanal, el contrato, los registros de asistencia, descansos, asuetos, feriados y cualquier r\u00e9gimen especial aplicable.\n      <\/div>\n    <\/section>\n\n    <section class=\"jp-grid\">\n      <form id=\"jpHorasExtraForm\" class=\"jp-card jp-form\" novalidate=\"\">\n        <h2>Datos para el c\u00e1lculo<\/h2>\n        <p class=\"jp-muted\">Completa los campos y luego presiona <strong>Calcular<\/strong>.<\/p>\n\n        <div class=\"jp-field two\">\n          <label>Salario mensual ordinario (Q)\n            <input id=\"heSalary\" type=\"number\" inputmode=\"decimal\" min=\"0\" step=\"0.01\" placeholder=\"Ej. 5000\" required=\"\">\n          <\/label>\n          <label>\u00bfEl salario ingresado incluye bonificaci\u00f3n incentivo?\n            <select id=\"heIncludesBonus\">\n              <option value=\"no\">No<\/option>\n              <option value=\"yes\">S\u00ed, incluye Q250<\/option>\n            <\/select>\n          <\/label>\n        <\/div>\n        <p class=\"jp-help\">Recomendaci\u00f3n: ingresar el salario ordinario sin bonificaci\u00f3n incentivo. Si el salario ingresado incluye Q250 de bonificaci\u00f3n incentivo, selecciona \u201cS\u00ed\u201d para restarla autom\u00e1ticamente.<\/p>\n\n        <div class=\"jp-field two\">\n          <label>Tipo de jornada ordinaria\n            <select id=\"heShiftType\">\n              <option value=\"8\">Diurna \u2014 8 horas diarias<\/option>\n              <option value=\"7\">Mixta \u2014 7 horas diarias<\/option>\n              <option value=\"6\">Nocturna \u2014 6 horas diarias<\/option>\n              <option value=\"custom\">Personalizada<\/option>\n            <\/select>\n          <\/label>\n          <label id=\"heCustomHoursWrap\" style=\"display:none!important\">Horas ordinarias diarias personalizadas\n            <input id=\"heCustomDailyHours\" type=\"number\" inputmode=\"decimal\" min=\"1\" max=\"8\" step=\"0.01\" placeholder=\"Ej. 7.5\">\n          <\/label>\n        <\/div>\n        <p class=\"jp-help\">La jornada seleccionada se usa para calcular el valor de la hora ordinaria. Esta es una estimaci\u00f3n diaria; en casos reales tambi\u00e9n debe revisarse el l\u00edmite semanal y el contrato aplicable.<\/p>\n\n        <div class=\"jp-field two\">\n          <label>Horas extra a pagar\n            <input id=\"heExtraHours\" type=\"number\" inputmode=\"decimal\" min=\"0\" step=\"0.01\" placeholder=\"Ej. 12\" required=\"\">\n          <\/label>\n          <label>Mayor cantidad de horas extra en un mismo d\u00eda\n            <input id=\"heMaxExtraDay\" type=\"number\" inputmode=\"decimal\" min=\"0\" step=\"0.01\" placeholder=\"Opcional. Ej. 3\">\n          <\/label>\n        <\/div>\n        <p class=\"jp-help\">El campo de horas extra en un mismo d\u00eda es opcional. Sirve para advertir si la jornada ordinaria m\u00e1s extraordinaria podr\u00eda superar el l\u00edmite diario recomendado.<\/p>\n\n        <div class=\"jp-field two\">\n          <label>Monto ya pagado por horas extra (Q)\n            <input id=\"hePaidAmount\" type=\"number\" inputmode=\"decimal\" min=\"0\" step=\"0.01\" placeholder=\"0\">\n          <\/label>\n          <label>Ajustes documentados a restar (Q)\n            <input id=\"heDeductions\" type=\"number\" inputmode=\"decimal\" min=\"0\" step=\"0.01\" placeholder=\"0\">\n          <\/label>\n        <\/div>\n        <p class=\"jp-help\">Usa \u201cmonto ya pagado por horas extra\u201d si hubo un pago parcial. La calculadora permite reflejar otros ajustes documentados, pero no determina si una deducci\u00f3n es jur\u00eddicamente v\u00e1lida.<\/p>\n\n        <div class=\"jp-field\">\n          <label>Mostrar detalle legal\n            <select id=\"heShowLegal\">\n              <option value=\"yes\">S\u00ed<\/option>\n              <option value=\"no\">No<\/option>\n            <\/select>\n          <\/label>\n        <\/div>\n\n        <div class=\"jp-actions\">\n          <button type=\"submit\" class=\"jp-btn jp-primary\">Calcular<\/button>\n          <button type=\"button\" id=\"heResetBtn\" class=\"jp-btn jp-secondary\">Limpiar<\/button>\n        <\/div>\n        <div id=\"heError\" class=\"jp-error\" aria-live=\"polite\"><\/div>\n      <\/form>\n\n      <aside class=\"jp-card jp-results\" id=\"heResultPanel\">\n        <div class=\"jp-placeholder\">\n          <div class=\"jp-icon\">Q<\/div>\n          <h2>Resultado estimado<\/h2>\n          <p>Ingresa salario, jornada ordinaria y horas extra para ver el monto estimado.<\/p>\n          <div class=\"jp-placeholder-block\">\n            <span class=\"jp-mini-label\">Qu\u00e9 se ver\u00e1 al calcular<\/span>\n            <ul>\n              <li>Salario mensual ordinario usado.<\/li>\n              <li>Valor de hora ordinaria.<\/li>\n              <li>Valor de hora extra con recargo m\u00ednimo.<\/li>\n              <li>Horas extra ingresadas.<\/li>\n              <li>Monto bruto estimado.<\/li>\n              <li>Pagos o ajustes documentados aplicados.<\/li>\n              <li>Reporte PDF con resumen del c\u00e1lculo.<\/li>\n            <\/ul>\n          <\/div>\n          <div class=\"jp-placeholder-block jp-mini-explainer\">\n            <span class=\"jp-mini-label\">Ejemplo pr\u00e1ctico<\/span>\n            <p>Si el salario ordinario es Q5,000 y la jornada es diurna, la herramienta calcula la hora ordinaria con base en 8 horas diarias y luego aplica el recargo del 50%.<\/p>\n          <\/div>\n        <\/div>\n      <\/aside>\n    <\/section>\n\n    <section class=\"jp-card jp-explainer\">\n      <h2>\u00bfQu\u00e9 calcula esta herramienta?<\/h2>\n      <p>La herramienta estima el monto que podr\u00eda corresponder por horas extraordinarias, usando salario mensual ordinario, jornada ordinaria diaria y recargo m\u00ednimo del 50%.<\/p>\n      <div class=\"jp-columns\">\n        <div>\n          <h3>Hora ordinaria<\/h3>\n          <p>Se calcula dividiendo el salario mensual ordinario entre 30 d\u00edas y luego entre las horas ordinarias diarias de la jornada seleccionada.<\/p>\n        <\/div>\n        <div>\n          <h3>Hora extra<\/h3>\n          <p>Se calcula aplicando un recargo m\u00ednimo del 50% sobre el valor de la hora ordinaria.<\/p>\n        <\/div>\n        <div>\n          <h3>Monto pendiente<\/h3>\n          <p>Se multiplica el valor de la hora extra por las horas ingresadas y se restan pagos previos o ajustes documentados.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"jp-warning-note\">\n        <strong>Alcance de la herramienta:<\/strong> esta calculadora no determina autom\u00e1ticamente si las horas corresponden a descanso semanal, asueto, feriado, turno especial o r\u00e9gimen excepcional. En esos casos debe revisarse el caso espec\u00edfico antes de liquidar o reclamar.\n      <\/div>\n    <\/section>\n\n    <section class=\"jp-cta\">\n      <div>\n        <span class=\"jp-cta-label\">Revisi\u00f3n legal<\/span>\n        <h2>\u00bfQuieres revisar el caso con m\u00e1s detalle?<\/h2>\n        <p>El c\u00e1lculo puede variar seg\u00fan tipo de jornada, contrato, registros de asistencia, turnos, descansos, asuetos, feriados, pagos previos, pol\u00edticas internas y condiciones espec\u00edficas de la relaci\u00f3n laboral.<\/p>\n      <\/div>\n      <div class=\"jp-actions\">\n        <a class=\"jp-btn jp-primary jp-logo-cta\" href=\"https:\/\/www.conservisabogados.com\/contactenos\/\" target=\"_blank\" rel=\"noopener\">\n          <img decoding=\"async\" src=\"https:\/\/www.conservisabogados.com\/wp-content\/uploads\/2022\/04\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png\" alt=\"Conservis Abogados\">\n          <span>Solicitar asesor\u00eda laboral<\/span>\n        <\/a>\n      <\/div>\n    <\/section>\n\n    <section class=\"jp-card jp-article-reco\">\n      <div class=\"jp-article-image\">\n        <img decoding=\"async\" src=\"https:\/\/www.conservisabogados.com\/wp-content\/uploads\/2022\/04\/Recepcion-Conservis-Abogados-e1737655962406.jpeg\" alt=\"Oficina de Conservis Abogados en Guatemala\">\n      <\/div>\n      <div class=\"jp-article-content\">\n        <span class=\"jp-article-label\">Servicio relacionado<\/span>\n        <h2>Derecho laboral para empresas en Guatemala<\/h2>\n        <p>Conservis asesora a empleadores en jornadas, controles de asistencia, pol\u00edticas internas, contrataci\u00f3n, terminaciones, inspecciones y controversias laborales.<\/p>\n        <a class=\"jp-btn jp-primary\" href=\"https:\/\/www.conservisabogados.com\/abogados-laborales-en-guatemala\/\" target=\"_blank\" rel=\"noopener\">Conocer la asesor\u00eda laboral<\/a>\n      <\/div>\n    <\/section>\n\n    <section id=\"heLegalNotes\" class=\"jp-card jp-legal\">\n      <h2>Base legal utilizada<\/h2>\n      <ul>\n        <li><strong>Horas extraordinarias:<\/strong> el art\u00edculo 121 del C\u00f3digo de Trabajo establece que el trabajo realizado fuera de la jornada ordinaria debe remunerarse, por lo menos, con un 50% m\u00e1s del salario m\u00ednimo o del salario superior pactado.<\/li>\n        <li><strong>L\u00edmite diario:<\/strong> conforme al art\u00edculo 122, las jornadas ordinaria y extraordinaria no deben exceder en conjunto 12 horas al d\u00eda, salvo las excepciones legalmente previstas.<\/li>\n        <li><strong>Jornada ordinaria:<\/strong> esta herramienta usa como referencia 8 horas para jornada diurna, 7 horas para jornada mixta y 6 horas para jornada nocturna.<\/li>\n        <li><strong>Jornada semanal:<\/strong> adem\u00e1s del l\u00edmite diario, debe revisarse el l\u00edmite semanal aplicable a cada tipo de jornada.<\/li>\n        <li><strong>Descansos, asuetos y feriados:<\/strong> esta herramienta no calcula autom\u00e1ticamente escenarios especiales. Si las horas corresponden a esos casos, debe revisarse la situaci\u00f3n concreta.<\/li>\n        <li><strong>Salario base:<\/strong> la herramienta utiliza el salario mensual ordinario ingresado por el usuario, excluyendo bonificaci\u00f3n incentivo si as\u00ed se selecciona.<\/li>\n      <\/ul>\n      <p class=\"jp-muted\">Esta herramienta no sustituye una revisi\u00f3n legal. Para casos con turnos especiales, jornadas acumulativas, trabajo en descanso, asuetos, feriados, registros incompletos, salario variable o controversias laborales, conviene revisar documentos antes de tomar una decisi\u00f3n. Consulta el <a href=\"https:\/\/mcd.gob.gt\/wp-content\/uploads\/2013\/07\/codigo-de-trabajo.pdf\" target=\"_blank\" rel=\"noopener\">C\u00f3digo de Trabajo de Guatemala<\/a>.<\/p>\n    <\/section>\n  <\/div>\n<\/div>\n\n<style>\n#jpHorasExtraApp,#jpHorasExtraApp *{box-sizing:border-box!important}\n#jpHorasExtraApp{--navy:#061a3a;--navy2:#0b2d57;--gold:#c9a24d;--gold2:#a9822e;--soft:#f7f8fb;--text:#172033;--muted:#667085;--border:#dce2ea;--white:#fff;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif!important;color:var(--text)!important;background:linear-gradient(180deg,#f7f8fb 0%,#ffffff 42%,#f7f8fb 100%)!important;padding:24px 12px!important;line-height:1.55!important}\n#jpHorasExtraApp input,#jpHorasExtraApp select,#jpHorasExtraApp button,#jpHorasExtraApp a{font-family:Inter,Arial,Helvetica,sans-serif!important}\n#jpHorasExtraApp .jp-shell{max-width:1120px!important;margin:0 auto!important}\n#jpHorasExtraApp .jp-hero{display:grid!important;grid-template-columns:1.4fr .8fr!important;gap:22px!important;align-items:stretch!important;background:radial-gradient(circle at top right,rgba(201,162,77,.20),transparent 34%),linear-gradient(135deg,var(--navy),var(--navy2))!important;color:#fff!important;border-radius:28px!important;padding:36px!important;box-shadow:0 22px 55px rgba(6,26,58,.18)!important;position:relative!important;overflow:hidden!important}\n#jpHorasExtraApp .jp-hero:after{content:\"\"!important;position:absolute!important;right:-90px!important;top:-90px!important;width:260px!important;height:260px!important;border-radius:50%!important;background:rgba(201,162,77,.14)!important;filter:blur(4px)!important}\n#jpHorasExtraApp .jp-brandline{display:inline-flex!important;align-items:center!important;border:1px solid rgba(201,162,77,.45)!important;background:rgba(201,162,77,.12)!important;color:#f0d592!important;border-radius:999px!important;padding:7px 12px!important;font-size:12px!important;font-weight:900!important;letter-spacing:.05em!important;text-transform:uppercase!important;margin-bottom:12px!important}\n#jpHorasExtraApp .jp-kicker{color:#f0d592!important;font-weight:800!important;text-transform:uppercase!important;letter-spacing:.08em!important;font-size:13px!important;margin-bottom:12px!important}\n#jpHorasExtraApp h1{font-size:clamp(34px,5vw,58px)!important;line-height:1.06!important;letter-spacing:-.018em!important;margin:0 0 16px!important;color:#fff!important;font-weight:900!important}\n#jpHorasExtraApp h2{font-size:24px!important;line-height:1.18!important;color:var(--navy)!important;margin:0 0 10px!important;font-weight:900!important;letter-spacing:-.025em!important}\n#jpHorasExtraApp h3{font-size:16px!important;margin:0 0 6px!important;color:var(--navy)!important;font-weight:900!important}\n#jpHorasExtraApp p{margin:0 0 12px!important;color:inherit!important;font-size:16px!important}\n#jpHorasExtraApp .jp-hero p{color:#d8e4ef!important;max-width:780px!important}\n#jpHorasExtraApp .jp-badges{display:flex!important;flex-wrap:wrap!important;gap:9px!important;margin-top:18px!important}\n#jpHorasExtraApp .jp-badges span{border:1px solid rgba(201,162,77,.38)!important;color:#fff!important;background:rgba(255,255,255,.08)!important;border-radius:999px!important;padding:7px 11px!important;font-size:13px!important;font-weight:700!important}\n#jpHorasExtraApp .jp-hero-card{background:rgba(255,255,255,.08)!important;border:1px solid rgba(255,255,255,.16)!important;border-radius:22px!important;padding:22px!important;z-index:1!important;backdrop-filter:blur(6px)!important}\n#jpHorasExtraApp .jp-hero-card strong{display:block!important;color:#f0d592!important;font-size:18px!important;margin-bottom:8px!important}\n#jpHorasExtraApp .jp-grid{display:grid!important;grid-template-columns:1.05fr .95fr!important;gap:22px!important;margin-top:22px!important;align-items:start!important}\n#jpHorasExtraApp .jp-card{background:#fff!important;border:1px solid var(--border)!important;border-radius:24px!important;padding:24px!important;box-shadow:0 14px 38px rgba(15,23,42,.07)!important}\n#jpHorasExtraApp .jp-instructions{margin-top:22px!important}\n#jpHorasExtraApp .jp-instructions-label{display:inline-flex!important;color:var(--gold2)!important;font-size:12px!important;font-weight:900!important;letter-spacing:.08em!important;text-transform:uppercase!important;margin-bottom:10px!important}\n#jpHorasExtraApp .jp-muted,#jpHorasExtraApp .jp-help{color:var(--muted)!important;font-size:14px!important}\n#jpHorasExtraApp .jp-form label{display:grid!important;gap:8px!important;color:#334155!important;font-weight:800!important;font-size:14px!important;margin:0!important}\n#jpHorasExtraApp .jp-field{display:grid!important;gap:14px!important;margin:16px 0!important}\n#jpHorasExtraApp .jp-field.two{grid-template-columns:1fr 1fr!important}\n#jpHorasExtraApp input,#jpHorasExtraApp select{width:100%!important;border:1.5px solid var(--border)!important;border-radius:14px!important;background:#fff!important;color:#0b2740!important;padding:13px 14px!important;font-size:15px!important;font-weight:600!important;outline:none!important;box-shadow:none!important;min-height:48px!important;appearance:auto!important}\n#jpHorasExtraApp input:focus,#jpHorasExtraApp select:focus{border-color:var(--gold)!important;box-shadow:0 0 0 3px rgba(201,162,77,.16)!important}\n#jpHorasExtraApp .jp-actions{display:flex!important;flex-wrap:wrap!important;gap:12px!important;align-items:center!important;margin-top:18px!important}\n#jpHorasExtraApp .jp-btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;border-radius:14px!important;padding:13px 18px!important;font-size:15px!important;font-weight:900!important;line-height:1!important;text-decoration:none!important;cursor:pointer!important;border:1px solid transparent!important;min-height:46px!important;text-transform:none!important;letter-spacing:normal!important;box-shadow:none!important}\n#jpHorasExtraApp .jp-primary{background:linear-gradient(135deg,var(--gold),var(--gold2))!important;color:#fff!important;border-color:transparent!important;box-shadow:0 12px 26px rgba(201,162,77,.20)!important}\n#jpHorasExtraApp .jp-primary:hover{filter:brightness(.96)!important;transform:translateY(-1px)!important}\n#jpHorasExtraApp .jp-secondary{background:#fff!important;color:var(--navy)!important;border-color:rgba(15,23,42,.16)!important}\n#jpHorasExtraApp .jp-pdf-btn{background:linear-gradient(135deg,var(--navy),var(--gold2))!important;color:#fff!important;border-color:transparent!important}\n#jpHorasExtraApp .jp-logo-cta{gap:10px!important;padding-left:12px!important}\n#jpHorasExtraApp .jp-logo-cta img{width:32px!important;height:32px!important;border-radius:8px!important;background:#fff!important;object-fit:contain!important;padding:4px!important;display:block!important}\n#jpHorasExtraApp .jp-error{display:none!important;background:#fff1f2!important;border:1px solid #fecdd3!important;color:#be123c!important;border-radius:14px!important;padding:12px!important;font-size:14px!important;font-weight:800!important;margin-top:14px!important}\n#jpHorasExtraApp .jp-error.show{display:block!important}\n#jpHorasExtraApp .jp-warning-note{background:#fffbeb!important;border-left:4px solid #f59e0b!important;border-radius:14px!important;padding:14px!important;color:#92400e!important;margin-top:14px!important;font-size:14px!important;font-weight:700!important}\n#jpHorasExtraApp .jp-placeholder{text-align:left!important;padding:12px!important;color:var(--muted)!important}\n#jpHorasExtraApp .jp-icon{width:78px!important;height:78px!important;border-radius:24px!important;background:linear-gradient(135deg,var(--navy),var(--navy2))!important;color:#fff!important;display:flex!important;align-items:center!important;justify-content:center!important;font-weight:1000!important;font-size:32px!important;margin:0 0 18px!important;box-shadow:0 14px 28px rgba(7,26,47,.16)!important}\n#jpHorasExtraApp .jp-placeholder-block{margin-top:18px!important;border:1px solid var(--border)!important;border-radius:20px!important;padding:18px!important;background:linear-gradient(135deg,#ffffff,#f8fbff)!important}\n#jpHorasExtraApp .jp-placeholder-block ul{margin:8px 0 0!important;padding-left:20px!important;color:var(--text)!important}\n#jpHorasExtraApp .jp-placeholder-block li{margin:6px 0!important;color:#344054!important;font-size:14px!important}\n#jpHorasExtraApp .jp-placeholder-block p{color:var(--muted)!important;font-size:14px!important;margin:0!important}\n#jpHorasExtraApp .jp-mini-label{display:inline-flex!important;color:var(--gold2)!important;font-size:12px!important;font-weight:900!important;text-transform:uppercase!important;letter-spacing:.08em!important;margin-bottom:8px!important}\n#jpHorasExtraApp .jp-summary{display:grid!important;gap:14px!important}\n#jpHorasExtraApp .jp-total{background:linear-gradient(135deg,var(--navy),var(--navy2))!important;color:#fff!important;border-radius:22px!important;padding:22px!important;margin:0 0 14px!important;border-bottom:4px solid var(--gold)!important}\n#jpHorasExtraApp .jp-total span{color:#cbd5e1!important;font-size:13px!important;text-transform:uppercase!important;letter-spacing:.08em!important;font-weight:800!important;display:block!important;margin-bottom:6px!important}\n#jpHorasExtraApp .jp-total strong{font-size:38px!important;line-height:1!important;color:#fff!important;letter-spacing:-.04em!important}\n#jpHorasExtraApp .jp-breakdown{display:grid!important;gap:10px!important;margin-top:12px!important}\n#jpHorasExtraApp .jp-row{display:flex!important;justify-content:space-between!important;gap:14px!important;align-items:center!important;border:1px solid var(--border)!important;border-radius:14px!important;padding:12px 14px!important;background:#fff!important;color:#334155!important}\n#jpHorasExtraApp .jp-row strong{color:var(--navy)!important;white-space:nowrap!important}\n#jpHorasExtraApp .jp-row.positive strong{color:#047857!important}\n#jpHorasExtraApp .jp-row.negative strong{color:#be123c!important}\n#jpHorasExtraApp .jp-note{background:#fbf8f0!important;border-left:4px solid var(--gold)!important;border-radius:14px!important;padding:14px!important;color:#475569!important;margin-top:14px!important;font-size:14px!important}\n#jpHorasExtraApp .jp-columns{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:14px!important;margin-top:16px!important}\n#jpHorasExtraApp .jp-columns>div{border:1px solid var(--border)!important;border-radius:18px!important;padding:16px!important;background:#f8fafc!important}\n#jpHorasExtraApp .jp-explainer,#jpHorasExtraApp .jp-legal,#jpHorasExtraApp .jp-cta{margin-top:22px!important}\n#jpHorasExtraApp .jp-legal ul{margin:12px 0 0!important;padding-left:20px!important;color:#334155!important}\n#jpHorasExtraApp .jp-legal li{margin:8px 0!important}\n#jpHorasExtraApp .jp-cta{display:flex!important;justify-content:space-between!important;gap:18px!important;align-items:center!important;background:radial-gradient(circle at top right,rgba(201,162,77,.20),transparent 34%),linear-gradient(135deg,var(--navy),var(--navy2))!important;border:1px solid rgba(201,162,77,.30)!important;border-radius:24px!important;padding:26px!important;color:#fff!important;box-shadow:0 18px 44px rgba(6,26,58,.16)!important;position:relative!important;overflow:hidden!important}\n#jpHorasExtraApp .jp-cta>div{position:relative!important;z-index:1!important}\n#jpHorasExtraApp .jp-cta-label{display:inline-flex!important;color:#f0d592!important;border:1px solid rgba(201,162,77,.42)!important;background:rgba(201,162,77,.12)!important;padding:6px 10px!important;border-radius:999px!important;font-size:12px!important;font-weight:900!important;text-transform:uppercase!important;letter-spacing:.07em!important;margin-bottom:10px!important}\n#jpHorasExtraApp .jp-cta h2{color:#fff!important}\n#jpHorasExtraApp .jp-cta p{color:#d8e4ef!important}\n#jpHorasExtraApp .jp-article-reco{margin-top:22px!important;display:grid!important;grid-template-columns:.92fr 1.08fr!important;gap:20px!important;align-items:center!important;overflow:hidden!important;padding:0!important}\n#jpHorasExtraApp .jp-article-image{height:100%!important;min-height:260px!important;background:#f3f8ff!important}\n#jpHorasExtraApp .jp-article-image img{width:100%!important;height:100%!important;min-height:260px!important;object-fit:cover!important;display:block!important}\n#jpHorasExtraApp .jp-article-content{padding:24px 24px 24px 4px!important}\n#jpHorasExtraApp .jp-article-label{display:inline-flex!important;color:var(--gold2)!important;font-size:12px!important;font-weight:900!important;letter-spacing:.08em!important;text-transform:uppercase!important;margin-bottom:10px!important}\n#jpHorasExtraApp .jp-article-content p{color:var(--muted)!important}\n#jpHorasExtraApp .jp-company-card{margin:18px 0!important;display:grid!important;grid-template-columns:120px 1fr!important;gap:18px!important;align-items:center!important;background:linear-gradient(135deg,#ffffff,#f8fafc)!important;border:1px solid var(--border)!important;border-radius:22px!important;padding:20px!important;box-shadow:0 14px 34px rgba(15,23,42,.08)!important}\n#jpHorasExtraApp .jp-company-logo{width:112px!important;height:112px!important;border-radius:22px!important;background:#fff!important;border:1px solid var(--border)!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:hidden!important;padding:14px!important}\n#jpHorasExtraApp .jp-company-logo img{max-width:100%!important;max-height:100%!important;object-fit:contain!important;display:block!important}\n#jpHorasExtraApp .jp-logo-fallback{background:linear-gradient(135deg,var(--navy),var(--navy2))!important;color:#fff!important;font-size:34px!important;font-weight:1000!important;letter-spacing:-.04em!important}\n#jpHorasExtraApp .jp-company-label{display:inline-flex!important;color:var(--gold2)!important;font-size:12px!important;font-weight:900!important;letter-spacing:.08em!important;text-transform:uppercase!important;margin-bottom:8px!important}\n#jpHorasExtraApp .jp-company-content h2{font-size:22px!important;margin:0 0 8px!important;color:var(--navy)!important}\n#jpHorasExtraApp .jp-company-content p{color:var(--muted)!important;font-size:15px!important;margin:0 0 12px!important}\n#jpHorasExtraApp .jp-company-tags{display:flex!important;flex-wrap:wrap!important;gap:8px!important;margin:10px 0 14px!important}\n#jpHorasExtraApp .jp-company-tags span{display:inline-flex!important;border:1px solid rgba(201,162,77,.28)!important;background:rgba(201,162,77,.10)!important;color:#7a5b1f!important;border-radius:999px!important;padding:6px 10px!important;font-size:12px!important;font-weight:800!important}\n@media(max-width:860px){#jpHorasExtraApp .jp-hero,#jpHorasExtraApp .jp-grid,#jpHorasExtraApp .jp-columns{grid-template-columns:1fr!important}#jpHorasExtraApp .jp-field.two{grid-template-columns:1fr!important}#jpHorasExtraApp .jp-hero{padding:26px!important}#jpHorasExtraApp .jp-cta{flex-direction:column!important;align-items:flex-start!important}#jpHorasExtraApp .jp-btn{width:100%!important}#jpHorasExtraApp h1{font-size:36px!important;line-height:1.08!important;letter-spacing:-.012em!important}#jpHorasExtraApp .jp-article-reco{grid-template-columns:1fr!important}#jpHorasExtraApp .jp-article-content{padding:22px!important}#jpHorasExtraApp .jp-article-image,#jpHorasExtraApp .jp-article-image img{min-height:220px!important}}\n@media(max-width:640px){#jpHorasExtraApp .jp-company-card{grid-template-columns:1fr!important;text-align:left!important}#jpHorasExtraApp .jp-company-logo{width:96px!important;height:96px!important}}\n<\/style>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n\n<script>\n(function(){\n  const $ = (id)=>document.getElementById(id);\n  const form = $('jpHorasExtraForm');\n  const errorBox = $('heError');\n  const resultPanel = $('heResultPanel');\n  const shiftType = $('heShiftType');\n  const customHoursWrap = $('heCustomHoursWrap');\n  const customDailyHours = $('heCustomDailyHours');\n\n  const CONSERVIS_LOGO_URL = 'https:\/\/www.conservisabogados.com\/wp-content\/uploads\/2022\/04\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png';\n  const CONSERVIS_SITE = 'https:\/\/www.conservisabogados.com';\n\n  function n(id){\n    const value = parseFloat($(id).value);\n    return Number.isFinite(value) ? value : 0;\n  }\n\n  function fmt(value){\n    return 'Q' + Number(value || 0).toLocaleString('es-GT',{minimumFractionDigits:2,maximumFractionDigits:2});\n  }\n\n  function fmtNum(value){\n    return Number(value || 0).toLocaleString('es-GT',{minimumFractionDigits:2,maximumFractionDigits:2});\n  }\n\n  function clearError(){\n    errorBox.textContent = '';\n    errorBox.classList.remove('show');\n  }\n\n  function showError(message){\n    errorBox.textContent = message;\n    errorBox.classList.add('show');\n  }\n\n  function initialResultHTML(){\n    return '<div class=\"jp-placeholder\"><div class=\"jp-icon\">Q<\/div><h2>Resultado estimado<\/h2><p>Ingresa salario, jornada ordinaria y horas extra para ver el monto estimado.<\/p><div class=\"jp-placeholder-block\"><span class=\"jp-mini-label\">Qu\u00e9 se ver\u00e1 al calcular<\/span><ul><li>Salario mensual ordinario usado.<\/li><li>Valor de hora ordinaria.<\/li><li>Valor de hora extra con recargo m\u00ednimo.<\/li><li>Horas extra ingresadas.<\/li><li>Monto bruto estimado.<\/li><li>Pagos o ajustes documentados aplicados.<\/li><li>Reporte PDF con resumen del c\u00e1lculo.<\/li><\/ul><\/div><div class=\"jp-placeholder-block jp-mini-explainer\"><span class=\"jp-mini-label\">Ejemplo pr\u00e1ctico<\/span><p>Si el salario ordinario es Q5,000 y la jornada es diurna, la herramienta calcula la hora ordinaria con base en 8 horas diarias y luego aplica el recargo del 50%.<\/p><\/div><\/div>';\n  }\n\n  function toggleCustomHours(){\n    const custom = shiftType.value === 'custom';\n    customHoursWrap.style.display = custom ? 'grid' : 'none';\n    customDailyHours.required = custom;\n    if(!custom) customDailyHours.value = '';\n  }\n\n  function getShiftLabel(hours){\n    if(shiftType.value === '8') return 'Jornada diurna \u2014 8 horas diarias';\n    if(shiftType.value === '7') return 'Jornada mixta \u2014 7 horas diarias';\n    if(shiftType.value === '6') return 'Jornada nocturna \u2014 6 horas diarias';\n    return 'Jornada personalizada \u2014 ' + fmtNum(hours) + ' horas diarias';\n  }\n\n  function loadImageDataUrl(url){\n    return new Promise((resolve)=>{\n      if(!url){ resolve(null); return; }\n      const img = new Image();\n      img.crossOrigin = 'anonymous';\n      img.onload = function(){\n        try{\n          const canvas = document.createElement('canvas');\n          canvas.width = img.naturalWidth || img.width;\n          canvas.height = img.naturalHeight || img.height;\n          const ctx = canvas.getContext('2d');\n          ctx.drawImage(img,0,0);\n          resolve(canvas.toDataURL('image\/png'));\n        }catch(e){\n          resolve(null);\n        }\n      };\n      img.onerror = function(){ resolve(null); };\n      img.src = url;\n    });\n  }\n\n  function addWrappedText(doc, text, x, y, maxWidth, lineHeight){\n    const lines = doc.splitTextToSize(String(text || ''), maxWidth);\n    lines.forEach((line)=>{\n      doc.text(line, x, y);\n      y += lineHeight;\n    });\n    return y;\n  }\n\n  function addContainedImage(doc, imageData, boxX, boxY, boxWidth, boxHeight, padding){\n    if(!imageData) return;\n\n    const safePadding = Math.max(0, Number(padding) || 0);\n    const availableWidth = Math.max(1, boxWidth - (safePadding * 2));\n    const availableHeight = Math.max(1, boxHeight - (safePadding * 2));\n\n    try{\n      const properties = doc.getImageProperties(imageData);\n      const sourceWidth = Number(properties.width) || 1;\n      const sourceHeight = Number(properties.height) || 1;\n      const scale = Math.min(availableWidth \/ sourceWidth, availableHeight \/ sourceHeight);\n      const renderedWidth = sourceWidth * scale;\n      const renderedHeight = sourceHeight * scale;\n      const renderedX = boxX + ((boxWidth - renderedWidth) \/ 2);\n      const renderedY = boxY + ((boxHeight - renderedHeight) \/ 2);\n\n      doc.addImage(imageData, 'PNG', renderedX, renderedY, renderedWidth, renderedHeight, undefined, 'FAST');\n    }catch(e){\n      const fallbackSize = Math.min(availableWidth, availableHeight);\n      const fallbackX = boxX + ((boxWidth - fallbackSize) \/ 2);\n      const fallbackY = boxY + ((boxHeight - fallbackSize) \/ 2);\n      doc.addImage(imageData, 'PNG', fallbackX, fallbackY, fallbackSize, fallbackSize, undefined, 'FAST');\n    }\n  }\n\n  function addPdfFooter(doc){\n    const pageCount = doc.internal.getNumberOfPages();\n    for(let i = 1; i <= pageCount; i++){\n      doc.setPage(i);\n      doc.setFont('helvetica','normal');\n      doc.setFontSize(8);\n      doc.setTextColor(100,116,139);\n      doc.setDrawColor(201,162,77);\n      doc.setLineWidth(0.5);\n      doc.line(14,264,202,264);\n      doc.text('Generado en conservisabogados.com', 14, 270);\n      doc.text('P\u00e1gina ' + i + ' de ' + pageCount, 178, 270);\n    }\n  }\n\n  async function generatePdf(data){\n    if(!window.jspdf || !window.jspdf.jsPDF){\n      alert('No se pudo cargar la librer\u00eda para generar el PDF. Verifica la conexi\u00f3n o intenta nuevamente.');\n      return;\n    }\n\n    const { jsPDF } = window.jspdf;\n    const doc = new jsPDF('p','mm','letter');\n    const pageWidth = doc.internal.pageSize.getWidth();\n\n    const conservisLogo = await loadImageDataUrl(CONSERVIS_LOGO_URL);\n\n    doc.setFillColor(6,26,58);\n    doc.roundedRect(10,10,pageWidth-20,48,4,4,'F');\n\n    if(conservisLogo){\n      doc.setFillColor(255,255,255);\n      doc.circle(28,29,12,'F');\n      addContainedImage(doc, conservisLogo, 16, 17, 24, 24, 3.2);\n    }\n\n    doc.setFont('helvetica','bold');\n    doc.setFontSize(18);\n    doc.setTextColor(255,255,255);\n    doc.text('Conservis Abogados', conservisLogo ? 46 : 16, 24);\n\n    doc.setFont('helvetica','normal');\n    doc.setFontSize(9);\n    doc.setTextColor(203,213,225);\n    doc.text('Herramienta laboral para Guatemala', conservisLogo ? 46 : 16, 31);\n    doc.text(CONSERVIS_SITE, conservisLogo ? 46 : 16, 37);\n\n    doc.setFont('helvetica','bold');\n    doc.setFontSize(15);\n    doc.setTextColor(240,213,146);\n    doc.text('Reporte de c\u00e1lculo de horas extra', conservisLogo ? 46 : 16, 49);\n\n    doc.setFillColor(201,162,77);\n    doc.roundedRect(12,65,pageWidth-24,28,5,5,'F');\n    doc.setTextColor(255,255,255);\n    doc.setFont('helvetica','normal');\n    doc.setFontSize(10);\n    doc.text('Horas extra estimadas pendientes', 18, 76);\n    doc.setFont('helvetica','bold');\n    doc.setFontSize(22);\n    doc.text(data.totalFmt, 18, 88);\n\n    doc.setTextColor(6,26,58);\n    doc.setFont('helvetica','bold');\n    doc.setFontSize(14);\n    doc.text('Resumen del c\u00e1lculo', 14, 106);\n\n    doc.setFont('helvetica','normal');\n    doc.setFontSize(9);\n    doc.setTextColor(71,85,105);\n    let y = 114;\n    y = addWrappedText(doc, 'Jornada usada: ' + data.shiftLabel + '.', 14, y, 180, 5);\n    y = addWrappedText(doc, 'Horas ordinarias diarias usadas: ' + data.dailyHours + '.', 14, y, 180, 5);\n    y = addWrappedText(doc, 'Salario mensual ordinario usado: ' + data.salaryFmt + '.', 14, y, 180, 5);\n    y = addWrappedText(doc, 'Valor de hora ordinaria: ' + data.hourlyFmt + '.', 14, y, 180, 5);\n    y = addWrappedText(doc, 'Valor de hora extra con recargo m\u00ednimo: ' + data.extraHourlyFmt + '.', 14, y, 180, 5);\n    y = addWrappedText(doc, 'Horas extra ingresadas: ' + data.extraHours + '.', 14, y, 180, 5);\n\n    if(data.warningText){\n      y += 3;\n      doc.setFillColor(255,251,235);\n      doc.roundedRect(14,y,180,28,4,4,'F');\n      doc.setFont('helvetica','bold');\n      doc.setFontSize(9);\n      doc.setTextColor(146,64,14);\n      doc.text('Advertencia legal', 18, y+8);\n      doc.setFont('helvetica','normal');\n      addWrappedText(doc, data.warningText, 18, y+14, 168, 4);\n      y += 36;\n    }\n\n    y += 4;\n    doc.setFont('helvetica','bold');\n    doc.setFontSize(12);\n    doc.setTextColor(6,26,58);\n    doc.text('Desglose', 14, y);\n    y += 8;\n\n    const rows = [\n      ['Monto bruto por horas extra', data.grossFmt],\n      ['Monto ya pagado por horas extra', '-' + data.paidAmountFmt],\n      ['Ajustes documentados', '-' + data.deductionsFmt],\n      ['Total estimado pendiente', data.totalFmt]\n    ];\n\n    rows.forEach((row,index)=>{\n      if(y > 245){\n        doc.addPage();\n        y = 20;\n      }\n      doc.setFillColor(index % 2 === 0 ? 248 : 255, index % 2 === 0 ? 250 : 255, index % 2 === 0 ? 252 : 255);\n      doc.roundedRect(14,y-5,180,9,2,2,'F');\n      doc.setFont('helvetica','normal');\n      doc.setFontSize(9);\n      doc.setTextColor(51,65,85);\n      doc.text(row[0], 18, y+1);\n      doc.setFont('helvetica','bold');\n      doc.setTextColor(6,26,58);\n      doc.text(row[1], 160, y+1, {align:'right'});\n      y += 11;\n    });\n\n    y += 8;\n    if(y > 220){\n      doc.addPage();\n      y = 20;\n    }\n\n    doc.setFillColor(247,248,251);\n    doc.roundedRect(14,y,180,38,4,4,'F');\n    doc.setFont('helvetica','bold');\n    doc.setFontSize(10);\n    doc.setTextColor(6,26,58);\n    doc.text('Lectura del resultado', 18, y+8);\n    doc.setFont('helvetica','normal');\n    doc.setFontSize(8.5);\n    doc.setTextColor(71,85,105);\n    addWrappedText(doc, data.resultReason, 18, y+15, 168, 4.5);\n    y += 50;\n\n    if(y > 220){\n      doc.addPage();\n      y = 20;\n    }\n\n    doc.setFillColor(255,255,255);\n    doc.roundedRect(14,y,180,42,5,5,'S');\n\n    if(conservisLogo){\n      doc.setFillColor(247,248,251);\n      doc.roundedRect(19,y+6,40,30,4,4,'F');\n      addContainedImage(doc, conservisLogo, 19, y+6, 40, 30, 4);\n    }\n\n    doc.setFont('helvetica','bold');\n    doc.setFontSize(12);\n    doc.setTextColor(6,26,58);\n    doc.text('Valida este c\u00e1lculo con Conservis Abogados', 66, y+12);\n\n    doc.setFont('helvetica','normal');\n    doc.setFontSize(8.5);\n    doc.setTextColor(71,85,105);\n    addWrappedText(doc, 'Conservis Abogados puede revisar contratos, controles de asistencia, tipo de jornada, pagos previos y riesgos antes de tomar una decisi\u00f3n.', 66, y+20, 120, 4.5);\n\n    doc.setTextColor(169,130,46);\n    doc.setFont('helvetica','bold');\n    doc.text(CONSERVIS_SITE, 66, y+36);\n\n    y += 54;\n\n    if(y > 235){\n      doc.addPage();\n      y = 20;\n    }\n\n    doc.setFont('helvetica','bold');\n    doc.setFontSize(12);\n    doc.setTextColor(6,26,58);\n    doc.text('Nota importante', 14, y);\n\n    doc.setFont('helvetica','normal');\n    doc.setFontSize(8.5);\n    doc.setTextColor(71,85,105);\n    y = addWrappedText(doc, 'Este reporte es orientativo y no sustituye una revisi\u00f3n legal. El resultado puede variar seg\u00fan contrato, tipo de jornada, jornada semanal, registros de asistencia, salario variable, pagos ya realizados, descansos, asuetos, feriados y condiciones espec\u00edficas de la relaci\u00f3n laboral. La herramienta no determina si una deducci\u00f3n o ajuste es jur\u00eddicamente v\u00e1lido.', 14, y+8, 180, 4.5);\n\n    y += 5;\n    doc.setFont('helvetica','bold');\n    doc.setTextColor(6,26,58);\n    doc.text('Base legal resumida', 14, y);\n    doc.setFont('helvetica','normal');\n    doc.setTextColor(71,85,105);\n    y += 8;\n    addWrappedText(doc, 'Horas extra: el trabajo fuera de la jornada ordinaria debe remunerarse con un recargo m\u00ednimo del 50% sobre la hora ordinaria. Esta herramienta usa una f\u00f3rmula simplificada diaria y no calcula autom\u00e1ticamente escenarios especiales como descansos, asuetos o feriados.', 14, y, 180, 4.5);\n\n    addPdfFooter(doc);\n    doc.save('reporte-horas-extra-conservis.pdf');\n  }\n\n  shiftType.addEventListener('change',toggleCustomHours);\n\n  $('heResetBtn').addEventListener('click',()=>{\n    form.reset();\n    toggleCustomHours();\n    clearError();\n    resultPanel.innerHTML = initialResultHTML();\n  });\n\n  form.addEventListener('submit',function(e){\n    e.preventDefault();\n    clearError();\n\n    let salaryInput = n('heSalary');\n\n    if(salaryInput <= 0){\n      showError('Ingresa un salario mensual ordinario mayor a cero.');\n      return;\n    }\n\n    let salary = salaryInput;\n\n    if($('heIncludesBonus').value === 'yes'){\n      salary = Math.max(0, salaryInput - 250);\n    }\n\n    if(salary <= 0){\n      showError('El salario base resultante no puede ser cero. Revisa si se incluy\u00f3 bonificaci\u00f3n incentivo.');\n      return;\n    }\n\n    let dailyHours = shiftType.value === 'custom' ? n('heCustomDailyHours') : Number(shiftType.value);\n\n    if(!Number.isFinite(dailyHours) || dailyHours <= 0){\n      showError('Ingresa una cantidad v\u00e1lida de horas ordinarias diarias.');\n      return;\n    }\n\n    if(dailyHours > 8){\n      showError('La jornada personalizada no puede ser mayor de 8 horas diarias en esta herramienta general. Los reg\u00edmenes especiales requieren revisi\u00f3n espec\u00edfica.');\n      return;\n    }\n\n    const extraHours = n('heExtraHours');\n\n    if(extraHours <= 0){\n      showError('Ingresa una cantidad de horas extra mayor a cero.');\n      return;\n    }\n\n    const maxExtraDay = n('heMaxExtraDay');\n    const paidAmount = n('hePaidAmount');\n    const deductions = n('heDeductions');\n\n    if(maxExtraDay < 0 || paidAmount < 0 || deductions < 0){\n      showError('Las horas, pagos realizados y ajustes no pueden ser negativos.');\n      return;\n    }\n\n    const hourly = salary \/ 30 \/ dailyHours;\n    const extraHourly = hourly * 1.5;\n    const gross = extraHourly * extraHours;\n    const total = Math.max(0, gross - paidAmount - deductions);\n\n    const possibleDailyTotal = dailyHours + maxExtraDay;\n    const warningParts = [];\n\n    if(maxExtraDay > 0 && possibleDailyTotal > 12){\n      warningParts.push('La jornada ordinaria m\u00e1s la mayor cantidad de horas extra reportadas en un mismo d\u00eda supera 12 horas. Se recomienda revisar controles de asistencia, jornada aplicable y cumplimiento legal antes de tomar una decisi\u00f3n.');\n    }\n\n    warningParts.push('Esta herramienta no determina autom\u00e1ticamente si las horas corresponden a descanso semanal, asueto, feriado, turno especial o r\u00e9gimen excepcional. Si aplica alguno de esos casos, debe revisarse el caso espec\u00edfico.');\n\n    const warningText = warningParts.join(' ');\n\n    const shiftLabel = getShiftLabel(dailyHours);\n\n    const resultReason = 'El c\u00e1lculo toma el salario mensual ordinario, estima el valor de la hora ordinaria seg\u00fan la jornada seleccionada y aplica un recargo m\u00ednimo del 50% sobre cada hora extra ingresada. Es una estimaci\u00f3n simplificada diaria; en casos reales tambi\u00e9n debe revisarse la jornada semanal aplicable.';\n\n    const legal = $('heShowLegal').value === 'yes' ? '<div class=\"jp-note\"><strong>Detalle legal resumido:<\/strong> El trabajo fuera de la jornada ordinaria debe pagarse como jornada extraordinaria, con un recargo m\u00ednimo del 50% sobre la hora ordinaria. Tambi\u00e9n debe revisarse que la jornada total diaria y semanal no exceda los l\u00edmites legales aplicables.<\/div>' : '';\n\n    const warningHtml = warningText ? '<div class=\"jp-warning-note\"><strong>Advertencia:<\/strong> ' + warningText + '<\/div>' : '';\n\n    const calcData = {\n      totalFmt: fmt(total),\n      grossFmt: fmt(gross),\n      paidAmountFmt: fmt(paidAmount),\n      deductionsFmt: fmt(deductions),\n      salaryFmt: fmt(salary),\n      hourlyFmt: fmt(hourly),\n      extraHourlyFmt: fmt(extraHourly),\n      extraHours: fmtNum(extraHours),\n      dailyHours: fmtNum(dailyHours),\n      shiftLabel: shiftLabel,\n      resultReason: resultReason,\n      warningText: warningText\n    };\n\n    resultPanel.innerHTML = `\n      <div class=\"jp-summary\">\n        <div class=\"jp-total\"><span>Total estimado pendiente<\/span><strong>${fmt(total)}<\/strong><\/div>\n        <h2>Desglose del c\u00e1lculo<\/h2>\n        <p class=\"jp-muted\">Jornada usada: <strong>${shiftLabel}<\/strong>. Horas extra ingresadas: <strong>${fmtNum(extraHours)}<\/strong>.<\/p>\n        <div class=\"jp-breakdown\">\n          <div class=\"jp-row\"><span>Salario mensual ordinario usado<\/span><strong>${fmt(salary)}<\/strong><\/div>\n          <div class=\"jp-row\"><span>Horas ordinarias diarias usadas<\/span><strong>${fmtNum(dailyHours)}<\/strong><\/div>\n          <div class=\"jp-row\"><span>Valor de hora ordinaria<\/span><strong>${fmt(hourly)}<\/strong><\/div>\n          <div class=\"jp-row positive\"><span>Valor de hora extra con recargo 50%<\/span><strong>${fmt(extraHourly)}<\/strong><\/div>\n          <div class=\"jp-row positive\"><span>Monto bruto por horas extra<\/span><strong>${fmt(gross)}<\/strong><\/div>\n          <div class=\"jp-row negative\"><span>Monto ya pagado por horas extra<\/span><strong>-${fmt(paidAmount)}<\/strong><\/div>\n          <div class=\"jp-row negative\"><span>Ajustes documentados<\/span><strong>-${fmt(deductions)}<\/strong><\/div>\n          <div class=\"jp-row positive\"><span>Total estimado pendiente<\/span><strong>${fmt(total)}<\/strong><\/div>\n        <\/div>\n\n        ${warningHtml}\n        <div class=\"jp-note\"><strong>Lectura del resultado:<\/strong> ${resultReason}<\/div>\n        ${legal}\n\n        <section class=\"jp-company-card\">\n          <div class=\"jp-company-logo\">\n            <img decoding=\"async\" src=\"${CONSERVIS_LOGO_URL}\" alt=\"Conservis Abogados\" onerror=\"this.style.display='none'; this.parentElement.classList.add('jp-logo-fallback'); this.parentElement.innerHTML='CA';\">\n          <\/div>\n          <div class=\"jp-company-content\">\n            <span class=\"jp-company-label\">Servicio legal recomendado<\/span>\n            <h2>Valida este c\u00e1lculo con Conservis Abogados<\/h2>\n            <p>La calculadora da una estimaci\u00f3n general. Conservis Abogados puede revisar contratos, controles de asistencia, tipo de jornada, pagos previos y riesgos antes de tomar una decisi\u00f3n.<\/p>\n            <div class=\"jp-company-tags\">\n              <span>Derecho laboral<\/span>\n              <span>Horas extra<\/span>\n              <span>Jornada laboral<\/span>\n              <span>Guatemala<\/span>\n            <\/div>\n            <div class=\"jp-actions\">\n              <a class=\"jp-btn jp-primary\" href=\"https:\/\/www.conservisabogados.com\/contactenos\/\" target=\"_blank\" rel=\"noopener\">Solicitar asesor\u00eda laboral<\/a>\n            <\/div>\n          <\/div>\n        <\/section>\n\n        <div class=\"jp-actions\">\n          <button type=\"button\" class=\"jp-btn jp-pdf-btn\" id=\"heDownloadPdf\">Descargar reporte PDF<\/button>\n        <\/div>\n      <\/div>\n    `;\n\n    $('heDownloadPdf').addEventListener('click',()=>generatePdf(calcData));\n  });\n\n  toggleCustomHours();\n})();\n<\/script>\n\n\n\n<div data-block=\"hook:19058\" class=\"alignfull\"><article id=\"post-19058\" class=\"post-19058\"><div class=\"entry-content is-layout-constrained\">\n<!doctype html>\n<html lang=\"es-GT\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <title>Previsualizaci\u00f3n | Carrusel de calculadoras laborales<\/title>\n  <style>\n    body { margin: 0; padding: 42px 0 70px; background: #eef2f6; }\n    .preview-note { max-width: 1132px; margin: 0 auto 18px; padding: 0 24px; color: #667085; font: 14px\/1.5 Inter, system-ui, sans-serif; }\n  <\/style>\n  <script>window.CONSERVIS_CAROUSEL_PREVIEW_PATH = \"\/calculadora-de-indemnizacion-en-guatemala\/\";<\/script>\n<\/head>\n<body>\n  <p class=\"preview-note\">Previsualizaci\u00f3n como si el bloque estuviera en la calculadora de indemnizaci\u00f3n: esa tarjeta se excluye autom\u00e1ticamente.<\/p>\n\n<!-- Carrusel reutilizable de calculadoras laborales | Conservis Abogados -->\n<style>\n  .cvc-calculator-carousel {\n    --cvc-navy: #061a3a;\n    --cvc-navy-2: #0b2d57;\n    --cvc-gold: #c9a24d;\n    --cvc-gold-dark: #9b7627;\n    --cvc-paper: #ffffff;\n    --cvc-surface: #f4f6f8;\n    --cvc-text: #263238;\n    --cvc-muted: #667085;\n    --cvc-line: #dce2e8;\n    width: 100%;\n    max-width: 1180px;\n    margin: 64px auto 0;\n    padding: 0 24px;\n    color: var(--cvc-text);\n    font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Arial, sans-serif;\n    line-height: 1.5;\n  }\n\n  .cvc-calculator-carousel,\n  .cvc-calculator-carousel * { box-sizing: border-box; }\n\n  .cvc-calculator-carousel .cvc-shell {\n    position: relative;\n    overflow: hidden;\n    padding: 34px;\n    border: 1px solid var(--cvc-line);\n    border-radius: 26px;\n    background:\n      radial-gradient(circle at 100% 0, rgba(201, 162, 77, .12), transparent 30%),\n      linear-gradient(145deg, #fff, #f8fafc);\n    box-shadow: 0 18px 45px rgba(6, 26, 58, .08);\n  }\n\n  .cvc-calculator-carousel .cvc-header {\n    display: flex;\n    align-items: end;\n    justify-content: space-between;\n    gap: 24px;\n    margin-bottom: 24px;\n  }\n\n  .cvc-calculator-carousel .cvc-kicker {\n    margin: 0 0 7px;\n    color: var(--cvc-gold-dark);\n    font-size: 12px;\n    font-weight: 850;\n    letter-spacing: .11em;\n    text-transform: uppercase;\n  }\n\n  .cvc-calculator-carousel .cvc-title {\n    margin: 0;\n    color: var(--cvc-navy);\n    font-family: inherit;\n    font-size: clamp(25px, 3vw, 36px);\n    font-weight: 850;\n    line-height: 1.12;\n    letter-spacing: -.035em;\n  }\n\n  .cvc-calculator-carousel .cvc-all-link {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    flex: 0 0 auto;\n    color: var(--cvc-navy);\n    font-size: 14px;\n    font-weight: 800;\n    text-decoration: none;\n  }\n\n  .cvc-calculator-carousel .cvc-all-link:hover,\n  .cvc-calculator-carousel .cvc-all-link:focus-visible { color: var(--cvc-gold-dark); }\n\n  .cvc-calculator-carousel .cvc-viewport {\n    overflow-x: auto;\n    overflow-y: hidden;\n    scroll-behavior: smooth;\n    scroll-snap-type: x mandatory;\n    scrollbar-width: none;\n    overscroll-behavior-x: contain;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .cvc-calculator-carousel .cvc-viewport::-webkit-scrollbar { display: none; }\n\n  .cvc-calculator-carousel .cvc-track {\n    display: flex;\n    gap: 18px;\n    margin: 0;\n    padding: 0;\n    list-style: none;\n  }\n\n  .cvc-calculator-carousel .cvc-item {\n    flex: 0 0 calc((100% - 36px) \/ 3);\n    min-width: 0;\n    scroll-snap-align: start;\n  }\n\n  .cvc-calculator-carousel .cvc-card {\n    display: flex;\n    flex-direction: column;\n    height: 100%;\n    min-height: 238px;\n    padding: 24px;\n    border: 1px solid var(--cvc-line);\n    border-radius: 19px;\n    background: var(--cvc-paper);\n    color: var(--cvc-text);\n    text-decoration: none;\n    box-shadow: 0 8px 22px rgba(6, 26, 58, .05);\n    transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;\n  }\n\n  .cvc-calculator-carousel .cvc-card:hover,\n  .cvc-calculator-carousel .cvc-card:focus-visible {\n    border-color: rgba(201, 162, 77, .72);\n    color: var(--cvc-text);\n    transform: translateY(-3px);\n    box-shadow: 0 15px 30px rgba(6, 26, 58, .1);\n    outline: none;\n  }\n\n  .cvc-calculator-carousel .cvc-icon {\n    display: grid;\n    place-items: center;\n    width: 46px;\n    height: 46px;\n    margin-bottom: 20px;\n    border-radius: 14px;\n    background: linear-gradient(135deg, var(--cvc-navy), var(--cvc-navy-2));\n    color: #e6ca80;\n  }\n\n  .cvc-calculator-carousel .cvc-icon svg {\n    width: 23px;\n    height: 23px;\n  }\n\n  .cvc-calculator-carousel .cvc-card-title {\n    margin: 0 0 9px;\n    color: var(--cvc-navy);\n    font-family: inherit;\n    font-size: 19px;\n    font-weight: 820;\n    line-height: 1.2;\n    letter-spacing: -.018em;\n  }\n\n  .cvc-calculator-carousel .cvc-description {\n    margin: 0 0 18px;\n    color: var(--cvc-muted);\n    font-size: 14px;\n    line-height: 1.55;\n  }\n\n  .cvc-calculator-carousel .cvc-open {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    margin-top: auto;\n    color: var(--cvc-navy);\n    font-size: 13px;\n    font-weight: 850;\n  }\n\n  .cvc-calculator-carousel .cvc-card:hover .cvc-open { color: var(--cvc-gold-dark); }\n\n  .cvc-calculator-carousel .cvc-controls {\n    display: flex;\n    justify-content: flex-end;\n    gap: 10px;\n    margin-top: 20px;\n  }\n\n  .cvc-calculator-carousel .cvc-arrow {\n    display: grid;\n    place-items: center;\n    width: 44px;\n    height: 44px;\n    padding: 0;\n    border: 1px solid var(--cvc-line);\n    border-radius: 50%;\n    background: var(--cvc-paper);\n    color: var(--cvc-navy);\n    cursor: pointer;\n    transition: background-color .18s ease, border-color .18s ease, color .18s ease;\n  }\n\n  .cvc-calculator-carousel .cvc-arrow:hover:not(:disabled),\n  .cvc-calculator-carousel .cvc-arrow:focus-visible:not(:disabled) {\n    border-color: var(--cvc-gold);\n    background: var(--cvc-navy);\n    color: var(--cvc-paper);\n    outline: none;\n  }\n\n  .cvc-calculator-carousel .cvc-arrow:disabled {\n    opacity: .38;\n    cursor: default;\n  }\n\n  @media (max-width: 880px) {\n    .cvc-calculator-carousel .cvc-item { flex-basis: calc((100% - 18px) \/ 2); }\n  }\n\n  @media (max-width: 620px) {\n    .cvc-calculator-carousel { margin-top: 48px; padding: 0 14px; }\n    .cvc-calculator-carousel .cvc-shell { padding: 26px 20px 22px; border-radius: 22px; }\n    .cvc-calculator-carousel .cvc-header { align-items: flex-start; flex-direction: column; gap: 12px; }\n    .cvc-calculator-carousel .cvc-item { flex-basis: 88%; }\n    .cvc-calculator-carousel .cvc-card { min-height: 225px; }\n    .cvc-calculator-carousel .cvc-controls { justify-content: space-between; }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .cvc-calculator-carousel .cvc-viewport { scroll-behavior: auto; }\n    .cvc-calculator-carousel .cvc-card,\n    .cvc-calculator-carousel .cvc-arrow { transition: none; }\n  }\n<\/style>\n\n<section class=\"cvc-calculator-carousel\" aria-labelledby=\"cvc-carousel-title\">\n  <div class=\"cvc-shell\">\n    <header class=\"cvc-header\">\n      <div>\n        <p class=\"cvc-kicker\">Herramientas relacionadas<\/p>\n        <h2 class=\"cvc-title\" id=\"cvc-carousel-title\">Otras calculadoras laborales<\/h2>\n      <\/div>\n      <a class=\"cvc-all-link\" href=\"https:\/\/www.conservisabogados.com\/calculadoras-laborales\/\">\n        Ver todas <span aria-hidden=\"true\">\u2192<\/span>\n      <\/a>\n    <\/header>\n\n    <div class=\"cvc-viewport\" tabindex=\"0\" aria-label=\"Otras calculadoras laborales\">\n      <ul class=\"cvc-track\"><\/ul>\n    <\/div>\n\n    <div class=\"cvc-controls\" aria-label=\"Controles del carrusel\">\n      <button class=\"cvc-arrow cvc-prev\" type=\"button\" aria-label=\"Ver calculadoras anteriores\">\n        <svg width=\"19\" height=\"19\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"m15 18-6-6 6-6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n      <\/button>\n      <button class=\"cvc-arrow cvc-next\" type=\"button\" aria-label=\"Ver calculadoras siguientes\">\n        <svg width=\"19\" height=\"19\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"m9 18 6-6-6-6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n<\/section>\n\n<script>\n(function () {\n  \"use strict\";\n\n  var calculators = [\n    {\n      slug: \"calculadora-de-indemnizacion-en-guatemala\",\n      title: \"Calculadora de indemnizaci\u00f3n\",\n      description: \"Estim\u00e1 la indemnizaci\u00f3n seg\u00fan el salario y el tiempo de servicio.\",\n      url: \"https:\/\/www.conservisabogados.com\/calculadora-de-indemnizacion-en-guatemala\/\",\n      icon: '<path d=\"M12 3v18M5 6h14M7 6l-4 7h8L7 6Zm10 0-4 7h8l-4-7ZM8 21h8\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>'\n    },\n    {\n      slug: \"calculadora-de-prestaciones-laborales-en-guatemala\",\n      title: \"Calculadora de prestaciones laborales\",\n      description: \"Estim\u00e1 Bono 14, aguinaldo y vacaciones pendientes o proporcionales.\",\n      url: \"https:\/\/www.conservisabogados.com\/calculadora-de-prestaciones-laborales-en-guatemala\/\",\n      icon: '<path d=\"M7 3h10v4H7V3Zm-2 2H4v16h16V5h-1M8 12h8M8 16h5\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>'\n    },\n    {\n      slug: \"calculadora-de-bono-14-en-guatemala\",\n      title: \"Calculadora de Bono 14\",\n      description: \"Calcul\u00e1 el Bono 14 completo o proporcional seg\u00fan el per\u00edodo laborado.\",\n      url: \"https:\/\/www.conservisabogados.com\/calculadora-de-bono-14-en-guatemala\/\",\n      icon: '<path d=\"M4 7h16v12H4V7Zm3-3h10v3H7V4Zm1 9h8M8 16h5\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>'\n    },\n    {\n      slug: \"calculadora-de-aguinaldo-en-guatemala\",\n      title: \"Calculadora de aguinaldo\",\n      description: \"Obten\u00e9 una estimaci\u00f3n del aguinaldo completo o proporcional.\",\n      url: \"https:\/\/www.conservisabogados.com\/calculadora-de-aguinaldo-en-guatemala\/\",\n      icon: '<path d=\"M12 21V9m0 0c-2.8 0-5-1.8-5-4 2.8 0 5 1.8 5 4Zm0 0c2.8 0 5-1.8 5-4-2.8 0-5 1.8-5 4ZM5 12h14v9H5v-9Z\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>'\n    },\n    {\n      slug: \"calculadora-de-salario-neto-en-guatemala\",\n      title: \"Calculadora de salario neto\",\n      description: \"Estim\u00e1 el salario l\u00edquido despu\u00e9s de las deducciones ingresadas.\",\n      url: \"https:\/\/www.conservisabogados.com\/calculadora-de-salario-neto-en-guatemala\/\",\n      icon: '<path d=\"M4 6h16v12H4V6Zm0 4h16M8 15h4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>'\n    },\n    {\n      slug: \"calculadora-de-vacaciones-en-guatemala\",\n      title: \"Calculadora de vacaciones\",\n      description: \"Revis\u00e1 d\u00edas generados, gozados y pendientes por per\u00edodo.\",\n      url: \"https:\/\/www.conservisabogados.com\/calculadora-de-vacaciones-en-guatemala\/\",\n      icon: '<path d=\"M5 4v3m14-3v3M4 9h16M5 6h14a1 1 0 0 1 1 1v13H4V7a1 1 0 0 1 1-1Zm3 7h3m2 0h3m-8 3h3\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>'\n    },\n    {\n      slug: \"calculadora-de-horas-extra-en-guatemala\",\n      title: \"Calculadora de horas extra\",\n      description: \"Estim\u00e1 el valor del tiempo extraordinario seg\u00fan salario y jornada.\",\n      url: \"https:\/\/www.conservisabogados.com\/calculadora-de-horas-extra-en-guatemala\/\",\n      icon: '<circle cx=\"12\" cy=\"12\" r=\"8\" stroke=\"currentColor\" stroke-width=\"1.8\"\/><path d=\"M12 8v5l3 2M9 3h6\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>'\n    },\n    {\n      slug: \"salario-minimo-en-guatemala\",\n      title: \"Salario m\u00ednimo en Guatemala\",\n      description: \"Consult\u00e1 los montos vigentes por actividad y circunscripci\u00f3n.\",\n      url: \"https:\/\/www.conservisabogados.com\/salario-minimo-en-guatemala\/\",\n      icon: '<path d=\"M4 19h16M6 16V9m4 7V5m4 11v-4m4 4V7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>'\n    }\n  ];\n\n  function normalizedSlug(pathname) {\n    return String(pathname || \"\")\n      .split(\"?\")[0]\n      .split(\"#\")[0]\n      .replace(\/^\\\/+|\\\/+$\/g, \"\")\n      .split(\"\/\")\n      .pop()\n      .toLowerCase();\n  }\n\n  function currentSlug() {\n    var slug = normalizedSlug(window.location.pathname);\n    var isKnown = calculators.some(function (calculator) { return calculator.slug === slug; });\n    if (!isKnown && window.CONSERVIS_CAROUSEL_PREVIEW_PATH &&\n        (window.location.protocol === \"file:\" || window.location.hostname === \"localhost\")) {\n      slug = normalizedSlug(window.CONSERVIS_CAROUSEL_PREVIEW_PATH);\n    }\n    return slug;\n  }\n\n  function cardMarkup(calculator) {\n    return '<li class=\"cvc-item\" data-calculator-slug=\"' + calculator.slug + '\">' +\n      '<a class=\"cvc-card\" href=\"' + calculator.url + '\">' +\n        '<span class=\"cvc-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\">' + calculator.icon + '<\/svg><\/span>' +\n        '<h3 class=\"cvc-card-title\">' + calculator.title + '<\/h3>' +\n        '<p class=\"cvc-description\">' + calculator.description + '<\/p>' +\n        '<span class=\"cvc-open\">Abrir herramienta <span aria-hidden=\"true\">\u2192<\/span><\/span>' +\n      '<\/a>' +\n    '<\/li>';\n  }\n\n  function initialize(carousel, index) {\n    if (carousel.getAttribute(\"data-cvc-ready\") === \"true\") return;\n    carousel.setAttribute(\"data-cvc-ready\", \"true\");\n\n    var title = carousel.querySelector(\".cvc-title\");\n    var viewport = carousel.querySelector(\".cvc-viewport\");\n    var track = carousel.querySelector(\".cvc-track\");\n    var previous = carousel.querySelector(\".cvc-prev\");\n    var next = carousel.querySelector(\".cvc-next\");\n    var slug = currentSlug();\n    var visibleCalculators = calculators.filter(function (calculator) {\n      return calculator.slug !== slug;\n    });\n\n    if (title) {\n      title.id = \"cvc-carousel-title-\" + index;\n      carousel.setAttribute(\"aria-labelledby\", title.id);\n    }\n\n    track.innerHTML = visibleCalculators.map(cardMarkup).join(\"\");\n\n    function stepSize() {\n      var item = track.querySelector(\".cvc-item\");\n      if (!item) return viewport.clientWidth;\n      var styles = window.getComputedStyle(track);\n      var gap = parseFloat(styles.columnGap || styles.gap) || 0;\n      return item.getBoundingClientRect().width + gap;\n    }\n\n    function updateControls() {\n      var maxScroll = Math.max(0, viewport.scrollWidth - viewport.clientWidth);\n      previous.disabled = viewport.scrollLeft <= 2;\n      next.disabled = viewport.scrollLeft >= maxScroll - 2;\n    }\n\n    previous.addEventListener(\"click\", function () {\n      viewport.scrollBy({ left: -stepSize(), behavior: \"smooth\" });\n    });\n\n    next.addEventListener(\"click\", function () {\n      viewport.scrollBy({ left: stepSize(), behavior: \"smooth\" });\n    });\n\n    viewport.addEventListener(\"scroll\", updateControls, { passive: true });\n    window.addEventListener(\"resize\", updateControls, { passive: true });\n    requestAnimationFrame(updateControls);\n  }\n\n  function initializeAll() {\n    document.querySelectorAll(\".cvc-calculator-carousel\").forEach(initialize);\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", initializeAll, { once: true });\n  } else {\n    initializeAll();\n  }\n})();\n<\/script>\n<\/body>\n<\/html>\n<\/div><\/article><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Calculadora de horas extra en Guatemala Conservis Abogados Herramienta laboral para Guatemala Calculadora de horas extra en Guatemala Esta calculadora permite estimar el pago de horas extra en Guatemala usando el salario mensual ordinario, el tipo de jornada y las horas extraordinarias trabajadas. Horas extraRecargo 50%GuatemalaJornada laboralPDF C\u00f3mo usarla correctamente Ingresa el salario mensual ordinario, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-19063","page","type-page","status-publish","hentry"],"blocksy_meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Calculadora de horas extra en Guatemala - CONSERVIS ABOGADOS<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.conservisabogados.com\/en\/calculadora-de-horas-extra-en-guatemala\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calculadora de horas extra en Guatemala - CONSERVIS ABOGADOS\" \/>\n<meta property=\"og:description\" content=\"Calculadora de horas extra en Guatemala Conservis Abogados Herramienta laboral para Guatemala Calculadora de horas extra en Guatemala Esta calculadora permite estimar el pago de horas extra en Guatemala usando el salario mensual ordinario, el tipo de jornada y las horas extraordinarias trabajadas. Horas extraRecargo 50%GuatemalaJornada laboralPDF C\u00f3mo usarla correctamente Ingresa el salario mensual ordinario, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.conservisabogados.com\/en\/calculadora-de-horas-extra-en-guatemala\/\" \/>\n<meta property=\"og:site_name\" content=\"CONSERVIS ABOGADOS\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-04T16:33:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.conservisabogados.com\/wp-content\/uploads\/2022\/04\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/calculadora-de-horas-extra-en-guatemala\\\/\",\"url\":\"https:\\\/\\\/www.conservisabogados.com\\\/calculadora-de-horas-extra-en-guatemala\\\/\",\"name\":\"Calculadora de horas extra en Guatemala - CONSERVIS ABOGADOS\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/calculadora-de-horas-extra-en-guatemala\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/calculadora-de-horas-extra-en-guatemala\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.conservisabogados.com\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png\",\"datePublished\":\"2026-08-04T01:58:53+00:00\",\"dateModified\":\"2026-08-04T16:33:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/calculadora-de-horas-extra-en-guatemala\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.conservisabogados.com\\\/calculadora-de-horas-extra-en-guatemala\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/calculadora-de-horas-extra-en-guatemala\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.conservisabogados.com\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png\",\"contentUrl\":\"https:\\\/\\\/www.conservisabogados.com\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/calculadora-de-horas-extra-en-guatemala\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.conservisabogados.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculadora de horas extra en Guatemala\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/#website\",\"url\":\"https:\\\/\\\/www.conservisabogados.com\\\/\",\"name\":\"CONSERVIS ABOGADOS\",\"description\":\"Bufete de Abogados en Guatemala\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.conservisabogados.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/#organization\",\"name\":\"CONSERVIS ABOGADOS\",\"url\":\"https:\\\/\\\/www.conservisabogados.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.conservisabogados.com\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png\",\"contentUrl\":\"https:\\\/\\\/www.conservisabogados.com\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png\",\"width\":498,\"height\":500,\"caption\":\"CONSERVIS ABOGADOS\"},\"image\":{\"@id\":\"https:\\\/\\\/www.conservisabogados.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calculadora de horas extra en Guatemala - CONSERVIS ABOGADOS","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.conservisabogados.com\/en\/calculadora-de-horas-extra-en-guatemala\/","og_locale":"en_US","og_type":"article","og_title":"Calculadora de horas extra en Guatemala - CONSERVIS ABOGADOS","og_description":"Calculadora de horas extra en Guatemala Conservis Abogados Herramienta laboral para Guatemala Calculadora de horas extra en Guatemala Esta calculadora permite estimar el pago de horas extra en Guatemala usando el salario mensual ordinario, el tipo de jornada y las horas extraordinarias trabajadas. Horas extraRecargo 50%GuatemalaJornada laboralPDF C\u00f3mo usarla correctamente Ingresa el salario mensual ordinario, [&hellip;]","og_url":"https:\/\/www.conservisabogados.com\/en\/calculadora-de-horas-extra-en-guatemala\/","og_site_name":"CONSERVIS ABOGADOS","article_modified_time":"2026-08-04T16:33:17+00:00","og_image":[{"url":"https:\/\/www.conservisabogados.com\/wp-content\/uploads\/2022\/04\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.conservisabogados.com\/calculadora-de-horas-extra-en-guatemala\/","url":"https:\/\/www.conservisabogados.com\/calculadora-de-horas-extra-en-guatemala\/","name":"Calculadora de horas extra en Guatemala - CONSERVIS ABOGADOS","isPartOf":{"@id":"https:\/\/www.conservisabogados.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.conservisabogados.com\/calculadora-de-horas-extra-en-guatemala\/#primaryimage"},"image":{"@id":"https:\/\/www.conservisabogados.com\/calculadora-de-horas-extra-en-guatemala\/#primaryimage"},"thumbnailUrl":"https:\/\/www.conservisabogados.com\/wp-content\/uploads\/2022\/04\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png","datePublished":"2026-08-04T01:58:53+00:00","dateModified":"2026-08-04T16:33:17+00:00","breadcrumb":{"@id":"https:\/\/www.conservisabogados.com\/calculadora-de-horas-extra-en-guatemala\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.conservisabogados.com\/calculadora-de-horas-extra-en-guatemala\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.conservisabogados.com\/calculadora-de-horas-extra-en-guatemala\/#primaryimage","url":"https:\/\/www.conservisabogados.com\/wp-content\/uploads\/2022\/04\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png","contentUrl":"https:\/\/www.conservisabogados.com\/wp-content\/uploads\/2022\/04\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.conservisabogados.com\/calculadora-de-horas-extra-en-guatemala\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.conservisabogados.com\/"},{"@type":"ListItem","position":2,"name":"Calculadora de horas extra en Guatemala"}]},{"@type":"WebSite","@id":"https:\/\/www.conservisabogados.com\/#website","url":"https:\/\/www.conservisabogados.com\/","name":"CONSERVIS ABOGADOS","description":"Law Firm in Guatemala","publisher":{"@id":"https:\/\/www.conservisabogados.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.conservisabogados.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.conservisabogados.com\/#organization","name":"CONSERVIS ABOGADOS","url":"https:\/\/www.conservisabogados.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.conservisabogados.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.conservisabogados.com\/wp-content\/uploads\/2022\/04\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png","contentUrl":"https:\/\/www.conservisabogados.com\/wp-content\/uploads\/2022\/04\/cropped-cropped-Conservis-Abogados-Bufete-de-Abogados-en-Guatemala-1.png","width":498,"height":500,"caption":"CONSERVIS ABOGADOS"},"image":{"@id":"https:\/\/www.conservisabogados.com\/#\/schema\/logo\/image\/"}}]}},"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/www.conservisabogados.com\/en\/wp-json\/wp\/v2\/pages\/19063","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.conservisabogados.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.conservisabogados.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.conservisabogados.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.conservisabogados.com\/en\/wp-json\/wp\/v2\/comments?post=19063"}],"version-history":[{"count":4,"href":"https:\/\/www.conservisabogados.com\/en\/wp-json\/wp\/v2\/pages\/19063\/revisions"}],"predecessor-version":[{"id":19110,"href":"https:\/\/www.conservisabogados.com\/en\/wp-json\/wp\/v2\/pages\/19063\/revisions\/19110"}],"wp:attachment":[{"href":"https:\/\/www.conservisabogados.com\/en\/wp-json\/wp\/v2\/media?parent=19063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}