{"id":14427,"date":"2026-07-21T15:22:54","date_gmt":"2026-07-21T21:22:54","guid":{"rendered":"https:\/\/sunnyside.com.mx\/?page_id=14427"},"modified":"2026-10-09T11:08:07","modified_gmt":"2026-10-09T17:08:07","slug":"driver-documents-extinguishers","status":"publish","type":"page","link":"https:\/\/sunnyside.com.mx\/es\/driver-documents-extinguishers\/","title":{"rendered":"Driver Documents &#038; Extinguishers"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"14427\" class=\"elementor elementor-14427\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-cfcf159 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"cfcf159\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5b0a447\" data-id=\"5b0a447\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-979b4d0 elementor-widget elementor-widget-spacer\" data-id=\"979b4d0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-17812a7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"17812a7\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-59b669f\" data-id=\"59b669f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c42a752 elementor-widget elementor-widget-html\" data-id=\"c42a752\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================================================\n     SUNNYSIDE DMC SERVICES\n     FLEET COMPLIANCE\n     DRIVERS & EXTINGUISHERS\n     OPERATIONS APP \u2014 OPTION 1\n========================================================= -->\n\n<section\n  id=\"ss-compliance-app-header\"\n  aria-labelledby=\"ss-compliance-app-title\"\n>\n\n  <!-- BACK -->\n  <a\n    class=\"ss-compliance-app-back\"\n    href=\"https:\/\/sunnyside.com.mx\/es\/central-de-reservas\/\"\n    aria-label=\"Volver a Central de Reservas\"\n  >\n\n    <span\n      class=\"ss-compliance-app-back-icon\"\n      aria-hidden=\"true\"\n    >\n      <svg viewbox=\"0 0 24 24\">\n        <path d=\"M15 18l-6-6 6-6\"><\/path>\n      <\/svg>\n    <\/span>\n\n    <span class=\"ss-compliance-app-back-copy\">\n\n      <small>\n        Volver a\n      <\/small>\n\n      <strong>\n        Central de Reservas\n      <\/strong>\n\n    <\/span>\n\n  <\/a>\n\n\n  <!-- TITLE -->\n  <div class=\"ss-compliance-app-title\">\n\n    <span class=\"ss-compliance-app-eyebrow\">\n      Fleet Compliance\n    <\/span>\n\n    <h1 id=\"ss-compliance-app-title\">\n      Drivers &amp; Extinguishers\n    <\/h1>\n\n    <p>\n      Control de documentos de operadores, vigencias y extintores de la flota.\n    <\/p>\n\n  <\/div>\n\n\n  <!-- OPERATIONS -->\n  <div class=\"ss-compliance-app-status\">\n\n    <span\n      class=\"ss-compliance-app-status-icon\"\n      aria-hidden=\"true\"\n    >\n\n      <svg viewbox=\"0 0 24 24\">\n\n        <path\n          d=\"M12 3 5 6v5c0 4.8 2.8 8.1 7 10 4.2-1.9 7-5.2 7-10V6z\"\n        ><\/path>\n\n        <path\n          d=\"m9 12 2 2 4-4\"\n        ><\/path>\n\n      <\/svg>\n\n    <\/span>\n\n\n    <span class=\"ss-compliance-app-status-copy\">\n\n      <small>\n        Operations\n      <\/small>\n\n      <span class=\"ss-compliance-app-destinations\">\n\n        <strong>\n          IXTAPA\n        <\/strong>\n\n        <i><\/i>\n\n        <strong>\n          CUN \/ RM\n        <\/strong>\n\n      <\/span>\n\n    <\/span>\n\n\n    <span\n      class=\"ss-compliance-app-status-dot\"\n      aria-hidden=\"true\"\n    ><\/span>\n\n  <\/div>\n\n<\/section>\n\n\n<style>\n\n\/* =========================================================\n   ISOLATION\n========================================================= *\/\n\n#ss-compliance-app-header,\n#ss-compliance-app-header * {\n  box-sizing: border-box;\n}\n\n\n\/* =========================================================\n   ROOT\n========================================================= *\/\n\n#ss-compliance-app-header {\n\n  --ss-navy: #071d34;\n  --ss-navy-2: #0c2b49;\n\n  --ss-gold: #c39a57;\n  --ss-gold-dark: #a67b3e;\n\n  --ss-white: #ffffff;\n  --ss-soft: #f6f8fa;\n\n  --ss-text: #18212f;\n  --ss-muted: #707d8b;\n  --ss-light: #909aa6;\n\n  --ss-border: #e0e6ec;\n\n  position: relative;\n\n  width:\n    min(\n      calc(100% - 32px),\n      1500px\n    );\n\n  min-height:\n    108px;\n\n  margin:\n    18px auto\n    9px;\n\n  padding:\n    17px\n    20px;\n\n  display: grid;\n\n  grid-template-columns:\n    220px\n    minmax(0,1fr)\n    auto;\n\n  align-items:\n    center;\n\n  gap:\n    22px;\n\n  overflow:\n    hidden;\n\n  background:\n    var(--ss-white);\n\n  border:\n    1px solid\n    var(--ss-border);\n\n  border-radius:\n    16px;\n\n  box-shadow:\n    0 8px 26px\n    rgba(7,29,52,.055);\n\n  font-family:\n    Arial,\n    Helvetica,\n    sans-serif;\n\n}\n\n\n\/* =========================================================\n   GOLD TOP ACCENT\n========================================================= *\/\n\n#ss-compliance-app-header::before {\n\n  content: \"\";\n\n  position: absolute;\n\n  top: 0;\n  left: 0;\n\n  width:\n    100%;\n\n  height:\n    3px;\n\n  background:\n    linear-gradient(\n      90deg,\n      var(--ss-gold),\n      #dfbd7c,\n      var(--ss-gold)\n    );\n\n}\n\n\n\/* =========================================================\n   BACK\n========================================================= *\/\n\n#ss-compliance-app-header\n.ss-compliance-app-back {\n\n  min-width:\n    0;\n\n  min-height:\n    54px;\n\n  padding:\n    6px\n    10px\n    6px\n    6px;\n\n  display:\n    flex;\n\n  align-items:\n    center;\n\n  gap:\n    9px;\n\n  color:\n    var(--ss-text);\n\n  background:\n    var(--ss-soft);\n\n  border:\n    1px solid\n    var(--ss-border);\n\n  border-radius:\n    11px;\n\n  text-decoration:\n    none;\n\n  transition:\n    transform .18s ease,\n    background .18s ease,\n    border-color .18s ease,\n    box-shadow .18s ease;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-back:hover {\n\n  transform:\n    translateY(-1px);\n\n  background:\n    #ffffff;\n\n  border-color:\n    #d5b781;\n\n  box-shadow:\n    0 5px 15px\n    rgba(7,29,52,.06);\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-back-icon {\n\n  width:\n    39px;\n\n  height:\n    39px;\n\n  flex:\n    0 0 39px;\n\n  display:\n    flex;\n\n  align-items:\n    center;\n\n  justify-content:\n    center;\n\n  color:\n    #ffffff;\n\n  background:\n    linear-gradient(\n      145deg,\n      var(--ss-navy),\n      var(--ss-navy-2)\n    );\n\n  border-radius:\n    9px;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-back-icon svg {\n\n  width:\n    19px;\n\n  height:\n    19px;\n\n  fill:\n    none;\n\n  stroke:\n    currentColor;\n\n  stroke-width:\n    2;\n\n  stroke-linecap:\n    round;\n\n  stroke-linejoin:\n    round;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-back-copy {\n\n  min-width:\n    0;\n\n  display:\n    flex;\n\n  flex-direction:\n    column;\n\n  line-height:\n    1.12;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-back-copy small {\n\n  margin-bottom:\n    3px;\n\n  color:\n    var(--ss-muted);\n\n  font-size:\n    8px;\n\n  font-weight:\n    750;\n\n  letter-spacing:\n    .8px;\n\n  text-transform:\n    uppercase;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-back-copy strong {\n\n  color:\n    var(--ss-navy);\n\n  font-size:\n    11px;\n\n  font-weight:\n    800;\n\n  white-space:\n    nowrap;\n\n}\n\n\n\/* =========================================================\n   TITLE\n========================================================= *\/\n\n#ss-compliance-app-header\n.ss-compliance-app-title {\n\n  min-width:\n    0;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-eyebrow {\n\n  display:\n    block;\n\n  margin-bottom:\n    4px;\n\n  color:\n    var(--ss-gold-dark);\n\n  font-size:\n    9px;\n\n  font-weight:\n    850;\n\n  letter-spacing:\n    1.6px;\n\n  text-transform:\n    uppercase;\n\n}\n\n\n#ss-compliance-app-header h1 {\n\n  margin:\n    0;\n\n  color:\n    var(--ss-navy);\n\n  font-size:\n    clamp(\n      24px,\n      2.5vw,\n      34px\n    );\n\n  line-height:\n    1.05;\n\n  font-weight:\n    850;\n\n  letter-spacing:\n    -.7px;\n\n}\n\n\n#ss-compliance-app-header p {\n\n  margin:\n    6px\n    0\n    0;\n\n  color:\n    var(--ss-muted);\n\n  font-size:\n    11px;\n\n  line-height:\n    1.4;\n\n}\n\n\n\/* =========================================================\n   OPERATIONS STATUS\n========================================================= *\/\n\n#ss-compliance-app-header\n.ss-compliance-app-status {\n\n  min-width:\n    190px;\n\n  min-height:\n    52px;\n\n  padding:\n    7px\n    10px;\n\n  display:\n    flex;\n\n  align-items:\n    center;\n\n  gap:\n    9px;\n\n  background:\n    #ffffff;\n\n  border:\n    1px solid\n    var(--ss-border);\n\n  border-radius:\n    11px;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-status-icon {\n\n  width:\n    37px;\n\n  height:\n    37px;\n\n  flex:\n    0 0 37px;\n\n  display:\n    flex;\n\n  align-items:\n    center;\n\n  justify-content:\n    center;\n\n  color:\n    var(--ss-gold-dark);\n\n  background:\n    #fff8eb;\n\n  border-radius:\n    9px;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-status-icon svg {\n\n  width:\n    18px;\n\n  height:\n    18px;\n\n  fill:\n    none;\n\n  stroke:\n    currentColor;\n\n  stroke-width:\n    1.8;\n\n  stroke-linecap:\n    round;\n\n  stroke-linejoin:\n    round;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-status-copy {\n\n  min-width:\n    0;\n\n  flex:\n    1;\n\n  display:\n    flex;\n\n  flex-direction:\n    column;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-status-copy > small {\n\n  margin-bottom:\n    3px;\n\n  color:\n    var(--ss-light);\n\n  font-size:\n    7px;\n\n  font-weight:\n    800;\n\n  letter-spacing:\n    .7px;\n\n  text-transform:\n    uppercase;\n\n}\n\n\n\/* DESTINATIONS *\/\n\n#ss-compliance-app-header\n.ss-compliance-app-destinations {\n\n  display:\n    flex;\n\n  align-items:\n    center;\n\n  gap:\n    6px;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-destinations strong {\n\n  color:\n    var(--ss-navy);\n\n  font-size:\n    9px;\n\n  font-weight:\n    850;\n\n  white-space:\n    nowrap;\n\n}\n\n\n#ss-compliance-app-header\n.ss-compliance-app-destinations i {\n\n  width:\n    3px;\n\n  height:\n    3px;\n\n  flex:\n    0 0 3px;\n\n  background:\n    var(--ss-gold);\n\n  border-radius:\n    50%;\n\n}\n\n\n\/* ACTIVE *\/\n\n#ss-compliance-app-header\n.ss-compliance-app-status-dot {\n\n  width:\n    7px;\n\n  height:\n    7px;\n\n  flex:\n    0 0 7px;\n\n  background:\n    #22a06b;\n\n  border-radius:\n    50%;\n\n  box-shadow:\n    0 0 0 3px\n    rgba(34,160,107,.11);\n\n}\n\n\n\/* =========================================================\n   TABLET\n========================================================= *\/\n\n@media (max-width:900px) {\n\n  #ss-compliance-app-header {\n\n    grid-template-columns:\n      180px\n      minmax(0,1fr)\n      auto;\n\n    gap:\n      14px;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-status {\n\n    min-width:\n      160px;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-destinations {\n\n    flex-direction:\n      column;\n\n    align-items:\n      flex-start;\n\n    gap:\n      1px;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-destinations i {\n\n    display:\n      none;\n\n  }\n\n}\n\n\n\/* =========================================================\n   MOBILE \/ APP\n========================================================= *\/\n\n@media (max-width:700px) {\n\n  #ss-compliance-app-header {\n\n    width:\n      calc(100% - 16px);\n\n    min-height:\n      auto;\n\n    margin:\n      8px auto\n      6px;\n\n    padding:\n      11px;\n\n    grid-template-columns:\n      40px\n      minmax(0,1fr)\n      42px;\n\n    align-items:\n      center;\n\n    gap:\n      9px;\n\n    border-radius:\n      13px;\n\n  }\n\n\n  \/* BACK *\/\n\n  #ss-compliance-app-header\n  .ss-compliance-app-back {\n\n    width:\n      40px;\n\n    height:\n      40px;\n\n    min-height:\n      40px;\n\n    padding:\n      0;\n\n    display:\n      flex;\n\n    align-items:\n      center;\n\n    justify-content:\n      center;\n\n    background:\n      transparent;\n\n    border:\n      0;\n\n    border-radius:\n      9px;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-back:hover {\n\n    transform:\n      none;\n\n    background:\n      transparent;\n\n    box-shadow:\n      none;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-back-icon {\n\n    width:\n      38px;\n\n    height:\n      38px;\n\n    flex-basis:\n      38px;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-back-copy {\n\n    display:\n      none;\n\n  }\n\n\n  \/* TITLE *\/\n\n  #ss-compliance-app-header\n  .ss-compliance-app-title {\n\n    min-width:\n      0;\n\n    overflow:\n      hidden;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-eyebrow {\n\n    margin-bottom:\n      2px;\n\n    font-size:\n      7px;\n\n    letter-spacing:\n      1.15px;\n\n  }\n\n\n  #ss-compliance-app-header h1 {\n\n    overflow:\n      hidden;\n\n    font-size:\n      15px;\n\n    line-height:\n      1.12;\n\n    letter-spacing:\n      -.2px;\n\n    text-overflow:\n      ellipsis;\n\n    white-space:\n      nowrap;\n\n  }\n\n\n  #ss-compliance-app-header p {\n\n    display:\n      none;\n\n  }\n\n\n  \/* OPERATIONS COMPACT *\/\n\n  #ss-compliance-app-header\n  .ss-compliance-app-status {\n\n    position:\n      relative;\n\n    width:\n      42px;\n\n    height:\n      40px;\n\n    min-width:\n      42px;\n\n    min-height:\n      40px;\n\n    padding:\n      0;\n\n    display:\n      flex;\n\n    align-items:\n      center;\n\n    justify-content:\n      center;\n\n    gap:\n      0;\n\n    background:\n      #fff8eb;\n\n    border:\n      1px solid\n      #ead9b8;\n\n    border-radius:\n      9px;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-status-icon {\n\n    width:\n      30px;\n\n    height:\n      30px;\n\n    flex:\n      0 0 30px;\n\n    color:\n      var(--ss-gold-dark);\n\n    background:\n      transparent;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-status-icon svg {\n\n    width:\n      17px;\n\n    height:\n      17px;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-status-copy {\n\n    display:\n      none;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-status-dot {\n\n    position:\n      absolute;\n\n    top:\n      5px;\n\n    right:\n      5px;\n\n    width:\n      6px;\n\n    height:\n      6px;\n\n    flex:\n      none;\n\n    border:\n      1px solid\n      #ffffff;\n\n    box-shadow:\n      0 0 0 2px\n      rgba(34,160,107,.10);\n\n  }\n\n}\n\n\n\/* =========================================================\n   SMALL MOBILE\n========================================================= *\/\n\n@media (max-width:380px) {\n\n  #ss-compliance-app-header {\n\n    width:\n      calc(100% - 12px);\n\n    padding:\n      9px;\n\n    grid-template-columns:\n      38px\n      minmax(0,1fr)\n      40px;\n\n    gap:\n      7px;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-back {\n\n    width:\n      38px;\n\n    height:\n      38px;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-back-icon {\n\n    width:\n      36px;\n\n    height:\n      36px;\n\n    flex-basis:\n      36px;\n\n  }\n\n\n  #ss-compliance-app-header h1 {\n\n    font-size:\n      14px;\n\n  }\n\n\n  #ss-compliance-app-header\n  .ss-compliance-app-status {\n\n    width:\n      40px;\n\n    min-width:\n      40px;\n\n    height:\n      38px;\n\n    min-height:\n      38px;\n\n  }\n\n}\n\n\n\/* =========================================================\n   REDUCED MOTION\n========================================================= *\/\n\n@media (prefers-reduced-motion:reduce) {\n\n  #ss-compliance-app-header *,\n  #ss-compliance-app-header *::before,\n  #ss-compliance-app-header *::after {\n\n    transition:\n      none !important;\n\n  }\n\n}\n\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-123bf55 elementor-widget elementor-widget-html\" data-id=\"123bf55\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================================================\n     SUNNYSIDE DMC SERVICES\n     DRIVERS & EXTINGUISHERS\n     SECURE IFRAME CONTROLLER\n========================================================= -->\n\n<section id=\"ss-compliance-app-shell\">\n\n  <!-- =====================================================\n       FRAME\n  ====================================================== -->\n\n  <div\n    class=\"ss-compliance-app-frame-shell is-loading\"\n    id=\"ssComplianceAppFrameShell\"\n  >\n\n    <!-- LOADER -->\n\n    <div\n      class=\"ss-compliance-app-loader\"\n      id=\"ssComplianceAppLoader\"\n      aria-live=\"polite\"\n    >\n\n      <div\n        class=\"ss-compliance-app-spinner\"\n        id=\"ssComplianceAppSpinner\"\n        aria-hidden=\"true\"\n      ><\/div>\n\n      <div class=\"ss-compliance-app-loader-copy\">\n\n        <strong\n          id=\"ssComplianceAppLoaderTitle\"\n        >\n          Cargando\n        <\/strong>\n\n        <span\n          id=\"ssComplianceAppLoaderText\"\n        >\n          Verificando acceso a Drivers &amp; Extinguishers...\n        <\/span>\n\n      <\/div>\n\n    <\/div>\n\n\n    <!-- =====================================================\n         GOOGLE APPS SCRIPT\n\n         IMPORTANT:\n         Apps Script is NOT loaded directly anymore.\n\n         WordPress first issues a short-lived signed token.\n    ====================================================== -->\n\n    <iframe\n      id=\"ssComplianceAppFrame\"\n      name=\"ss-driver-documents-frame\"\n      class=\"ss-compliance-app-iframe\"\n      src=\"about:blank\"\n      title=\"Driver Documents and Fire Extinguisher Control\"\n      loading=\"eager\"\n      referrerpolicy=\"strict-origin-when-cross-origin\"\n    ><\/iframe>\n\n  <\/div>\n\n<\/section>\n\n\n<style>\n\n\/* =========================================================\n   ISOLATION\n========================================================= *\/\n\n#ss-compliance-app-shell,\n#ss-compliance-app-shell * {\n  box-sizing:\n    border-box;\n}\n\n\n\/* =========================================================\n   ROOT\n========================================================= *\/\n\n#ss-compliance-app-shell {\n\n  --ss-navy:\n    #071d34;\n\n  --ss-navy-2:\n    #0c2b49;\n\n  --ss-gold:\n    #c39a57;\n\n  --ss-bg:\n    #f4f6f8;\n\n  --ss-text:\n    #18212f;\n\n  --ss-muted:\n    #6c7786;\n\n  --ss-border:\n    #e0e6ec;\n\n  --ss-error:\n    #a9364b;\n\n  width:\n    min(\n      calc(100% - 32px),\n      1500px\n    );\n\n  margin:\n    0 auto\n    30px;\n\n  font-family:\n    Arial,\n    Helvetica,\n    sans-serif;\n\n}\n\n\n\/* =========================================================\n   FRAME SHELL\n========================================================= *\/\n\n#ss-compliance-app-shell\n.ss-compliance-app-frame-shell {\n\n  position:\n    relative;\n\n  width:\n    100%;\n\n  overflow:\n    hidden;\n\n  background:\n    var(--ss-bg);\n\n  border:\n    1px solid\n    var(--ss-border);\n\n  border-radius:\n    14px;\n\n  box-shadow:\n    0 7px 22px\n    rgba(7,29,52,.035);\n\n}\n\n\n\/* =========================================================\n   IFRAME\n========================================================= *\/\n\n#ss-compliance-app-shell\n.ss-compliance-app-iframe {\n\n  width:\n    100%;\n\n  height:\n    1800px;\n\n  display:\n    block;\n\n  background:\n    var(--ss-bg);\n\n  border:\n    0;\n\n  transition:\n    opacity .22s ease;\n\n}\n\n\n\/* =========================================================\n   LOADER\n========================================================= *\/\n\n#ss-compliance-app-shell\n.ss-compliance-app-loader {\n\n  position:\n    absolute;\n\n  z-index:\n    10;\n\n  inset:\n    0;\n\n  min-height:\n    220px;\n\n  padding-top:\n    70px;\n\n  display:\n    flex;\n\n  align-items:\n    flex-start;\n\n  justify-content:\n    center;\n\n  gap:\n    11px;\n\n  color:\n    var(--ss-text);\n\n  background:\n    rgba(244,246,248,.97);\n\n  opacity:\n    0;\n\n  visibility:\n    hidden;\n\n  pointer-events:\n    none;\n\n  transition:\n    opacity .20s ease,\n    visibility .20s ease;\n\n}\n\n\n#ss-compliance-app-shell\n.ss-compliance-app-frame-shell.is-loading\n.ss-compliance-app-loader,\n\n#ss-compliance-app-shell\n.ss-compliance-app-frame-shell.has-error\n.ss-compliance-app-loader {\n\n  opacity:\n    1;\n\n  visibility:\n    visible;\n\n  pointer-events:\n    auto;\n\n}\n\n\n#ss-compliance-app-shell\n.ss-compliance-app-frame-shell.is-loading\n.ss-compliance-app-iframe,\n\n#ss-compliance-app-shell\n.ss-compliance-app-frame-shell.has-error\n.ss-compliance-app-iframe {\n\n  opacity:\n    .14;\n\n}\n\n\n\/* =========================================================\n   ERROR\n========================================================= *\/\n\n#ss-compliance-app-shell\n.ss-compliance-app-frame-shell.has-error\n.ss-compliance-app-loader-copy strong {\n\n  color:\n    var(--ss-error);\n\n}\n\n\n#ss-compliance-app-shell\n.ss-compliance-app-frame-shell.has-error\n.ss-compliance-app-spinner {\n\n  display:\n    none;\n\n}\n\n\n\/* =========================================================\n   SPINNER\n========================================================= *\/\n\n#ss-compliance-app-shell\n.ss-compliance-app-spinner {\n\n  width:\n    25px;\n\n  height:\n    25px;\n\n  border:\n    3px solid\n    #dfe4e9;\n\n  border-top-color:\n    var(--ss-navy);\n\n  border-radius:\n    50%;\n\n  animation:\n    ssComplianceSpin\n    .8s\n    linear\n    infinite;\n\n}\n\n\n#ss-compliance-app-shell\n.ss-compliance-app-loader-copy {\n\n  display:\n    flex;\n\n  flex-direction:\n    column;\n\n  gap:\n    3px;\n\n}\n\n\n#ss-compliance-app-shell\n.ss-compliance-app-loader-copy strong {\n\n  color:\n    var(--ss-navy);\n\n  font-size:\n    11px;\n\n  font-weight:\n    800;\n\n}\n\n\n#ss-compliance-app-shell\n.ss-compliance-app-loader-copy span {\n\n  max-width:\n    420px;\n\n  color:\n    var(--ss-muted);\n\n  font-size:\n    9px;\n\n  line-height:\n    1.4;\n\n}\n\n\n@keyframes ssComplianceSpin {\n\n  to {\n\n    transform:\n      rotate(360deg);\n\n  }\n\n}\n\n\n\/* =========================================================\n   TABLET\n========================================================= *\/\n\n@media (max-width:800px) {\n\n  #ss-compliance-app-shell {\n\n    width:\n      min(\n        calc(100% - 20px),\n        1500px\n      );\n\n    margin:\n      6px auto\n      26px;\n\n  }\n\n\n  #ss-compliance-app-shell\n  .ss-compliance-app-iframe {\n\n    height:\n      2050px;\n\n  }\n\n}\n\n\n\/* =========================================================\n   MOBILE \/ ANDROID APP\n========================================================= *\/\n\n@media (max-width:600px) {\n\n  #ss-compliance-app-shell {\n\n    width:\n      calc(100% - 10px);\n\n    margin:\n      5px auto\n      18px;\n\n  }\n\n\n  #ss-compliance-app-shell\n  .ss-compliance-app-frame-shell {\n\n    border-radius:\n      11px;\n\n  }\n\n\n  #ss-compliance-app-shell\n  .ss-compliance-app-iframe {\n\n    height:\n      2300px;\n\n  }\n\n\n  #ss-compliance-app-shell\n  .ss-compliance-app-loader {\n\n    padding-top:\n      55px;\n\n  }\n\n}\n\n\n\/* =========================================================\n   SMALL MOBILE\n========================================================= *\/\n\n@media (max-width:420px) {\n\n  #ss-compliance-app-shell\n  .ss-compliance-app-iframe {\n\n    height:\n      2400px;\n\n  }\n\n}\n\n\n\/* =========================================================\n   REDUCED MOTION\n========================================================= *\/\n\n@media (prefers-reduced-motion:reduce) {\n\n  #ss-compliance-app-shell *,\n  #ss-compliance-app-shell *::before,\n  #ss-compliance-app-shell *::after {\n\n    transition:\n      none !important;\n\n    animation-duration:\n      .01ms !important;\n\n    animation-iteration-count:\n      1 !important;\n\n  }\n\n}\n\n<\/style>\n\n\n<script>\n\n(function () {\n\n  \"use strict\";\n\n\n  \/* =========================================================\n     CONFIGURATION\n  ========================================================= *\/\n\n  const APPS_SCRIPT_URL =\n    \"https:\/\/script.google.com\/macros\/s\/AKfycbzG4wSTX21lB-qnjNMVhxVO1gIFZtcKqtFM6rWt9241ZdT2o-3uVnJ_E91-qmbli8Oi_g\/exec\";\n\n\n  const TOKEN_ENDPOINT =\n    window.location.origin +\n    \"\/wp-admin\/admin-ajax.php?action=ss_drivers_token\";\n\n\n  \/* =========================================================\n     ELEMENTS\n  ========================================================= *\/\n\n  const frame =\n    document.getElementById(\n      \"ssComplianceAppFrame\"\n    );\n\n\n  const frameShell =\n    document.getElementById(\n      \"ssComplianceAppFrameShell\"\n    );\n\n\n  const loaderTitle =\n    document.getElementById(\n      \"ssComplianceAppLoaderTitle\"\n    );\n\n\n  const loaderText =\n    document.getElementById(\n      \"ssComplianceAppLoaderText\"\n    );\n\n\n  if (\n    !frame ||\n    !frameShell ||\n    !loaderTitle ||\n    !loaderText\n  ) {\n\n    return;\n\n  }\n\n\n  \/* =========================================================\n     LOADING STATE\n  ========================================================= *\/\n\n  function showLoading(\n    message\n  ) {\n\n    frameShell.classList.remove(\n      \"has-error\"\n    );\n\n\n    frameShell.classList.add(\n      \"is-loading\"\n    );\n\n\n    loaderTitle.textContent =\n      \"Cargando\";\n\n\n    loaderText.textContent =\n      message ||\n      \"Preparando Drivers & Extinguishers...\";\n\n  }\n\n\n  function hideLoading() {\n\n    frameShell.classList.remove(\n      \"is-loading\"\n    );\n\n\n    frameShell.classList.remove(\n      \"has-error\"\n    );\n\n  }\n\n\n  \/* =========================================================\n     ERROR STATE\n  ========================================================= *\/\n\n  function showError(\n    message\n  ) {\n\n    frameShell.classList.remove(\n      \"is-loading\"\n    );\n\n\n    frameShell.classList.add(\n      \"has-error\"\n    );\n\n\n    loaderTitle.textContent =\n      \"No se pudo cargar\";\n\n\n    loaderText.textContent =\n      message ||\n      \"No fue posible verificar el acceso al m\u00f3dulo.\";\n\n  }\n\n\n  \/* =========================================================\n     TOKEN\n  ========================================================= *\/\n\n  async function getDriversToken() {\n\n    const response =\n      await fetch(\n\n        TOKEN_ENDPOINT,\n\n        {\n\n          method:\n            \"GET\",\n\n          credentials:\n            \"same-origin\",\n\n          cache:\n            \"no-store\",\n\n          headers: {\n\n            \"Accept\":\n              \"application\/json\"\n\n          }\n\n        }\n\n      );\n\n\n    let payload =\n      null;\n\n\n    try {\n\n      payload =\n        await response.json();\n\n    } catch (error) {\n\n      throw new Error(\n        \"WordPress devolvi\u00f3 una respuesta de autorizaci\u00f3n no v\u00e1lida.\"\n      );\n\n    }\n\n\n    if (\n      !response.ok\n    ) {\n\n      const message =\n        payload &&\n        payload.data &&\n        payload.data.message\n          ? payload.data.message\n          : \"No fue posible autorizar el m\u00f3dulo.\";\n\n\n      throw new Error(\n        message\n      );\n\n    }\n\n\n    if (\n      !payload ||\n      payload.success !== true ||\n      !payload.data\n    ) {\n\n      throw new Error(\n        \"WordPress no pudo generar la autorizaci\u00f3n.\"\n      );\n\n    }\n\n\n    if (\n      payload.data.module !==\n      \"drivers\"\n    ) {\n\n      throw new Error(\n        \"La autorizaci\u00f3n recibida no corresponde al m\u00f3dulo Drivers.\"\n      );\n\n    }\n\n\n    if (\n      !payload.data.token\n    ) {\n\n      throw new Error(\n        \"WordPress no devolvi\u00f3 un token de autorizaci\u00f3n.\"\n      );\n\n    }\n\n\n    return String(\n      payload.data.token\n    );\n\n  }\n\n\n  \/* =========================================================\n     BUILD SECURE APPS SCRIPT URL\n  ========================================================= *\/\n\n  function buildAuthorizedUrl(\n    token\n  ) {\n\n    const url =\n      new URL(\n        APPS_SCRIPT_URL\n      );\n\n\n    url.searchParams.set(\n      \"token\",\n      token\n    );\n\n\n    \/*\n     * Prevent browser \/ WebView cache from preserving\n     * an older authorization URL.\n     *\/\n\n    url.searchParams.set(\n      \"_ss\",\n      String(\n        Date.now()\n      )\n    );\n\n\n    return url.toString();\n\n  }\n\n\n  \/* =========================================================\n     LOAD APP\n  ========================================================= *\/\n\n  async function loadSecureApp() {\n\n    showLoading(\n      \"Verificando acceso a Drivers & Extinguishers...\"\n    );\n\n\n    \/*\n     * Never leave an old Apps Script URL in the iframe\n     * while authorization is being renewed.\n     *\/\n\n    frame.src =\n      \"about:blank\";\n\n\n    try {\n\n      const token =\n        await getDriversToken();\n\n\n      showLoading(\n        \"Preparando Drivers & Extinguishers...\"\n      );\n\n\n      const authorizedUrl =\n        buildAuthorizedUrl(\n          token\n        );\n\n\n      frame.src =\n        authorizedUrl;\n\n\n    } catch (error) {\n\n      console.error(\n        \"Drivers authorization error:\",\n        error\n      );\n\n\n      showError(\n\n        error &&\n        error.message\n          ? error.message\n          : \"No se pudo verificar el acceso.\"\n\n      );\n\n    }\n\n  }\n\n\n  \/* =========================================================\n     IFRAME LOAD\n  ========================================================= *\/\n\n  frame.addEventListener(\n\n    \"load\",\n\n    function () {\n\n      \/*\n       * about:blank also fires a load event.\n       * Only hide the loader after the real\n       * Apps Script URL has been assigned.\n       *\/\n\n      if (\n        !frame.src ||\n        frame.src ===\n        \"about:blank\"\n      ) {\n\n        return;\n\n      }\n\n\n      window.setTimeout(\n\n        function () {\n\n          hideLoading();\n\n        },\n\n        220\n\n      );\n\n    }\n\n  );\n\n\n  \/* =========================================================\n     INITIAL LOAD\n  ========================================================= *\/\n\n  loadSecureApp();\n\n\n  \/* =========================================================\n     OPTIONAL PUBLIC RELOAD HOOK\n\n     Allows this controller to request a completely fresh\n     WordPress token if we later need to reload the iframe.\n  ========================================================= *\/\n\n  window.ssReloadDriversApp =\n    function () {\n\n      loadSecureApp();\n\n    };\n\n\n})();\n\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Volver a Central de Reservas Fleet Compliance Drivers &amp; Extinguishers Control de documentos de operadores, vigencias y extintores de la flota. Operations IXTAPA CUN \/ RM Cargando Verificando acceso a Drivers &amp; Extinguishers&#8230;<\/p>","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-14427","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/pages\/14427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/comments?post=14427"}],"version-history":[{"count":23,"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/pages\/14427\/revisions"}],"predecessor-version":[{"id":16180,"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/pages\/14427\/revisions\/16180"}],"wp:attachment":[{"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/media?parent=14427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}