{"id":14116,"date":"2026-07-07T17:07:01","date_gmt":"2026-07-07T23:07:01","guid":{"rendered":"https:\/\/sunnyside.com.mx\/?page_id=14116"},"modified":"2026-10-09T11:07:42","modified_gmt":"2026-10-09T17:07:42","slug":"ods-ixt","status":"publish","type":"page","link":"https:\/\/sunnyside.com.mx\/es\/ods-ixt\/","title":{"rendered":"ODS IXT"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"14116\" class=\"elementor elementor-14116\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4c9eb1e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4c9eb1e\" 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-0e1c046\" data-id=\"0e1c046\" 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-0863334 elementor-widget elementor-widget-spacer\" data-id=\"0863334\" 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-5180db2 elementor-section-full_width elementor-section-stretched elementor-section-height-default elementor-section-height-default\" data-id=\"5180db2\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\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-885515f\" data-id=\"885515f\" 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-3bb125f elementor-widget elementor-widget-html\" data-id=\"3bb125f\" 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     ODS IXTAPA-ZIHUATANEJO\n     OPERATIONS APP \u2014 OPTION 1\n========================================================= -->\n\n<section\n  id=\"ss-ixtapa-app-header\"\n  aria-labelledby=\"ss-ixtapa-app-title\"\n>\n\n  <!-- BACK -->\n  <a\n    class=\"ss-ixtapa-app-back\"\n    href=\"https:\/\/sunnyside.com.mx\/central-de-reservas\/\"\n    aria-label=\"Volver a Central de Reservas\"\n  >\n\n    <span\n      class=\"ss-ixtapa-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-ixtapa-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-ixtapa-app-title\">\n\n    <span class=\"ss-ixtapa-app-eyebrow\">\n      Service Orders\n    <\/span>\n\n    <h1 id=\"ss-ixtapa-app-title\">\n      ODS Ixtapa-Zihuatanejo\n    <\/h1>\n\n    <p>\n      Generaci\u00f3n y administraci\u00f3n de \u00f3rdenes de servicio.\n    <\/p>\n\n  <\/div>\n\n\n  <!-- DESTINATION -->\n  <div class=\"ss-ixtapa-app-destination\">\n\n    <span\n      class=\"ss-ixtapa-app-location-icon\"\n      aria-hidden=\"true\"\n    >\n      <svg viewBox=\"0 0 24 24\">\n        <path d=\"M12 21s6-5.1 6-11a6 6 0 1 0-12 0c0 5.9 6 11 6 11Z\"><\/path>\n        <circle cx=\"12\" cy=\"10\" r=\"2.2\"><\/circle>\n      <\/svg>\n    <\/span>\n\n    <span class=\"ss-ixtapa-app-location-copy\">\n\n      <small>\n        Destination\n      <\/small>\n\n      <strong>\n        IXTAPA\n      <\/strong>\n\n    <\/span>\n\n  <\/div>\n\n<\/section>\n\n\n<style>\n\n\/* =========================================================\n   ISOLATION\n========================================================= *\/\n\n#ss-ixtapa-app-header,\n#ss-ixtapa-app-header * {\n  box-sizing: border-box;\n}\n\n\n\/* =========================================================\n   ROOT\n========================================================= *\/\n\n#ss-ixtapa-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: 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: center;\n\n  gap: 22px;\n\n  overflow: 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 ACCENT\n========================================================= *\/\n\n#ss-ixtapa-app-header::before {\n\n  content: \"\";\n\n  position: absolute;\n\n  top: 0;\n  left: 0;\n\n  width: 100%;\n  height: 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 BUTTON\n========================================================= *\/\n\n#ss-ixtapa-app-header\n.ss-ixtapa-app-back {\n\n  min-height: 54px;\n\n  padding:\n    6px\n    10px\n    6px\n    6px;\n\n  display: flex;\n\n  align-items: center;\n\n  gap: 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: 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-ixtapa-app-header\n.ss-ixtapa-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-ixtapa-app-header\n.ss-ixtapa-app-back-icon {\n\n  width: 39px;\n  height: 39px;\n\n  flex:\n    0 0 39px;\n\n  display: flex;\n\n  align-items: center;\n\n  justify-content: 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-ixtapa-app-header\n.ss-ixtapa-app-back-icon svg {\n\n  width: 19px;\n  height: 19px;\n\n  fill: none;\n\n  stroke:\n    currentColor;\n\n  stroke-width: 2;\n\n  stroke-linecap:\n    round;\n\n  stroke-linejoin:\n    round;\n\n}\n\n\n#ss-ixtapa-app-header\n.ss-ixtapa-app-back-copy {\n\n  min-width: 0;\n\n  display: flex;\n\n  flex-direction: column;\n\n  line-height: 1.12;\n\n}\n\n\n#ss-ixtapa-app-header\n.ss-ixtapa-app-back-copy small {\n\n  margin-bottom: 3px;\n\n  color:\n    var(--ss-muted);\n\n  font-size: 8px;\n\n  font-weight: 750;\n\n  letter-spacing: .8px;\n\n  text-transform: uppercase;\n\n}\n\n\n#ss-ixtapa-app-header\n.ss-ixtapa-app-back-copy strong {\n\n  color:\n    var(--ss-navy);\n\n  font-size: 11px;\n\n  font-weight: 800;\n\n}\n\n\n\/* =========================================================\n   TITLE\n========================================================= *\/\n\n#ss-ixtapa-app-header\n.ss-ixtapa-app-title {\n\n  min-width: 0;\n\n}\n\n\n#ss-ixtapa-app-header\n.ss-ixtapa-app-eyebrow {\n\n  display: block;\n\n  margin-bottom: 4px;\n\n  color:\n    var(--ss-gold-dark);\n\n  font-size: 9px;\n\n  font-weight: 850;\n\n  letter-spacing: 1.6px;\n\n  text-transform: uppercase;\n\n}\n\n\n#ss-ixtapa-app-header h1 {\n\n  margin: 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: 1.05;\n\n  font-weight: 850;\n\n  letter-spacing: -.7px;\n\n}\n\n\n#ss-ixtapa-app-header p {\n\n  margin:\n    6px 0 0;\n\n  color:\n    var(--ss-muted);\n\n  font-size: 11px;\n\n  line-height: 1.4;\n\n}\n\n\n\/* =========================================================\n   DESTINATION\n========================================================= *\/\n\n#ss-ixtapa-app-header\n.ss-ixtapa-app-destination {\n\n  min-width: 136px;\n\n  min-height: 52px;\n\n  padding:\n    7px 10px;\n\n  display: flex;\n\n  align-items: center;\n\n  gap: 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-ixtapa-app-header\n.ss-ixtapa-app-location-icon {\n\n  width: 37px;\n  height: 37px;\n\n  flex:\n    0 0 37px;\n\n  display: flex;\n\n  align-items: center;\n\n  justify-content: 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-ixtapa-app-header\n.ss-ixtapa-app-location-icon svg {\n\n  width: 18px;\n  height: 18px;\n\n  fill: none;\n\n  stroke:\n    currentColor;\n\n  stroke-width: 1.8;\n\n  stroke-linecap:\n    round;\n\n  stroke-linejoin:\n    round;\n\n}\n\n\n#ss-ixtapa-app-header\n.ss-ixtapa-app-location-copy {\n\n  display: flex;\n\n  flex-direction: column;\n\n}\n\n\n#ss-ixtapa-app-header\n.ss-ixtapa-app-location-copy small {\n\n  margin-bottom: 2px;\n\n  color:\n    var(--ss-light);\n\n  font-size: 7px;\n\n  font-weight: 800;\n\n  letter-spacing: .7px;\n\n  text-transform: uppercase;\n\n}\n\n\n#ss-ixtapa-app-header\n.ss-ixtapa-app-location-copy strong {\n\n  color:\n    var(--ss-navy);\n\n  font-size: 11px;\n\n  font-weight: 850;\n\n}\n\n\n\/* =========================================================\n   TABLET\n========================================================= *\/\n\n@media (max-width: 900px) {\n\n  #ss-ixtapa-app-header {\n\n    grid-template-columns:\n      190px\n      minmax(0,1fr)\n      auto;\n\n    gap: 16px;\n\n  }\n\n}\n\n\n\/* =========================================================\n   MOBILE\n========================================================= *\/\n\n@media (max-width: 700px) {\n\n  #ss-ixtapa-app-header {\n\n    width:\n      calc(100% - 16px);\n\n    min-height: 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      auto;\n\n    gap: 9px;\n\n    border-radius:\n      13px;\n\n  }\n\n\n  #ss-ixtapa-app-header\n  .ss-ixtapa-app-back {\n\n    width: 40px;\n    height: 40px;\n\n    min-height: 40px;\n\n    padding: 0;\n\n    justify-content: center;\n\n    background:\n      transparent;\n\n    border: 0;\n\n  }\n\n\n  #ss-ixtapa-app-header\n  .ss-ixtapa-app-back-icon {\n\n    width: 38px;\n    height: 38px;\n\n    flex-basis: 38px;\n\n  }\n\n\n  #ss-ixtapa-app-header\n  .ss-ixtapa-app-back-copy {\n\n    display: none;\n\n  }\n\n\n  #ss-ixtapa-app-header\n  .ss-ixtapa-app-eyebrow {\n\n    margin-bottom: 2px;\n\n    font-size: 7px;\n\n  }\n\n\n  #ss-ixtapa-app-header h1 {\n\n    overflow: hidden;\n\n    font-size: 16px;\n\n    line-height: 1.1;\n\n    text-overflow: ellipsis;\n\n    white-space: nowrap;\n\n  }\n\n\n  #ss-ixtapa-app-header p {\n\n    display: none;\n\n  }\n\n\n  #ss-ixtapa-app-header\n  .ss-ixtapa-app-destination {\n\n    min-width: 0;\n\n    min-height: 38px;\n\n    padding:\n      4px\n      7px;\n\n    gap: 5px;\n\n  }\n\n\n  #ss-ixtapa-app-header\n  .ss-ixtapa-app-location-icon {\n\n    width: 29px;\n    height: 29px;\n\n    flex-basis: 29px;\n\n  }\n\n\n  #ss-ixtapa-app-header\n  .ss-ixtapa-app-location-icon svg {\n\n    width: 15px;\n    height: 15px;\n\n  }\n\n\n  #ss-ixtapa-app-header\n  .ss-ixtapa-app-location-copy small {\n\n    display: none;\n\n  }\n\n\n  #ss-ixtapa-app-header\n  .ss-ixtapa-app-location-copy strong {\n\n    font-size: 9px;\n\n  }\n\n}\n\n\n\/* =========================================================\n   REDUCED MOTION\n========================================================= *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n  #ss-ixtapa-app-header *,\n  #ss-ixtapa-app-header *::before,\n  #ss-ixtapa-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\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-de47e2a elementor-section-full_width elementor-section-stretched elementor-section-height-default elementor-section-height-default\" data-id=\"de47e2a\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\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-34f896b\" data-id=\"34f896b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\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-931d00d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"931d00d\" 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-c48ec50\" data-id=\"c48ec50\" 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-20fc341 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"20fc341\" 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     ODS IXTAPA-ZIHUATANEJO\n     OPERATIONS APP \u2014 OPTION 1\n========================================================= -->\n\n<section\n  id=\"ssos-ixtapa-app\"\n  data-view=\"register\"\n>\n\n  <!-- =====================================================\n       NAVIGATION\n  ====================================================== -->\n\n  <div class=\"ssos-ixtapa-control-bar\">\n\n\n    <div\n      class=\"ssos-ixtapa-navigation\"\n      role=\"tablist\"\n      aria-label=\"Secciones de \u00f3rdenes de servicio\"\n    >\n\n\n      <!-- REGISTER -->\n\n      <button\n        type=\"button\"\n        class=\"ssos-ixtapa-tab active\"\n        data-page=\"register\"\n        role=\"tab\"\n        aria-selected=\"true\"\n      >\n\n        <span\n          class=\"ssos-ixtapa-tab-icon\"\n          aria-hidden=\"true\"\n        >\n\n          <svg viewBox=\"0 0 24 24\">\n            <path d=\"M12 5v14\"><\/path>\n            <path d=\"M5 12h14\"><\/path>\n          <\/svg>\n\n        <\/span>\n\n\n        <span class=\"ssos-ixtapa-tab-copy\">\n\n          <strong>\n            Registrar ODS\n          <\/strong>\n\n          <small>\n            Crear orden de servicio\n          <\/small>\n\n        <\/span>\n\n      <\/button>\n\n\n\n      <!-- RECORDS -->\n\n      <button\n        type=\"button\"\n        class=\"ssos-ixtapa-tab\"\n        data-page=\"records\"\n        role=\"tab\"\n        aria-selected=\"false\"\n      >\n\n        <span\n          class=\"ssos-ixtapa-tab-icon\"\n          aria-hidden=\"true\"\n        >\n\n          <svg viewBox=\"0 0 24 24\">\n            <path d=\"M6 4h12v16H6z\"><\/path>\n            <path d=\"M9 9h6\"><\/path>\n            <path d=\"M9 13h6\"><\/path>\n            <path d=\"M9 17h4\"><\/path>\n          <\/svg>\n\n        <\/span>\n\n\n        <span class=\"ssos-ixtapa-tab-copy\">\n\n          <strong>\n            Records\n          <\/strong>\n\n          <small>\n            Consultar \u00f3rdenes\n          <\/small>\n\n        <\/span>\n\n      <\/button>\n\n\n    <\/div>\n\n\n\n    <!-- RELOAD -->\n\n    <button\n      type=\"button\"\n      class=\"ssos-ixtapa-reload\"\n      id=\"ssosIxtapaReload\"\n      aria-label=\"Recargar sistema\"\n    >\n\n      <svg\n        viewBox=\"0 0 24 24\"\n        aria-hidden=\"true\"\n      >\n\n        <path d=\"M20 11a8 8 0 1 0-2.3 5.7\"><\/path>\n        <path d=\"M20 4v7h-7\"><\/path>\n\n      <\/svg>\n\n      <span>\n        Recargar\n      <\/span>\n\n    <\/button>\n\n\n  <\/div>\n\n\n\n  <!-- =====================================================\n       IFRAME\n  ====================================================== -->\n\n  <div\n    class=\"ssos-ixtapa-frame-shell is-loading\"\n    id=\"ssosIxtapaFrameShell\"\n  >\n\n\n    <!-- LOADER -->\n\n    <div\n      class=\"ssos-ixtapa-loading\"\n      aria-live=\"polite\"\n    >\n\n      <div\n        class=\"ssos-ixtapa-spinner\"\n        aria-hidden=\"true\"\n      ><\/div>\n\n\n      <div class=\"ssos-ixtapa-loading-copy\">\n\n        <strong>\n          Cargando\n        <\/strong>\n\n        <span id=\"ssosIxtapaLoadingText\">\n          Preparando formulario...\n        <\/span>\n\n      <\/div>\n\n    <\/div>\n\n\n\n    <!-- APP SCRIPT -->\n\n    <iframe\n      id=\"ssosIxtapaIframe\"\n      class=\"ssos-ixtapa-iframe\"\n      src=\"about:blank\"\n      title=\"Sunnyside Service Orders Ixtapa-Zihuatanejo\"\n      loading=\"eager\"\n    ><\/iframe>\n\n\n  <\/div>\n\n<\/section>\n\n\n\n<style>\n\n\/* =========================================================\n   ISOLATION\n========================================================= *\/\n\n#ssos-ixtapa-app,\n#ssos-ixtapa-app * {\n  box-sizing: border-box;\n}\n\n\n\/* =========================================================\n   ROOT\n========================================================= *\/\n\n#ssos-ixtapa-app {\n\n  --ss-navy: #071d34;\n  --ss-navy-2: #0c2b49;\n\n  --ss-gold: #c39a57;\n  --ss-gold-dark: #a67b3e;\n  --ss-gold-soft: #fff8ec;\n\n  --ss-white: #ffffff;\n\n  --ss-bg: #f4f6f8;\n  --ss-soft: #f7f9fb;\n\n  --ss-text: #18212f;\n  --ss-muted: #6c7786;\n\n  --ss-border: #e0e6ec;\n  --ss-border-dark: #d6dde5;\n\n  width:\n    min(\n      calc(100% - 32px),\n      1500px\n    );\n\n  margin:\n    0 auto\n    32px;\n\n  font-family:\n    Arial,\n    Helvetica,\n    sans-serif;\n\n}\n\n\n\/* =========================================================\n   CONTROL BAR\n========================================================= *\/\n\n#ssos-ixtapa-app\n.ssos-ixtapa-control-bar {\n\n  min-height: 66px;\n\n  padding: 6px;\n\n  display: flex;\n\n  align-items: center;\n\n  justify-content: space-between;\n\n  gap: 8px;\n\n  background:\n    var(--ss-white);\n\n  border:\n    1px solid\n    var(--ss-border);\n\n  border-radius:\n    14px;\n\n  box-shadow:\n    0 6px 18px\n    rgba(7,29,52,.04);\n\n}\n\n\n\/* =========================================================\n   NAVIGATION\n========================================================= *\/\n\n#ssos-ixtapa-app\n.ssos-ixtapa-navigation {\n\n  flex: 1;\n\n  min-width: 0;\n\n  display: flex;\n\n  align-items: center;\n\n  gap: 6px;\n\n}\n\n\n\/* =========================================================\n   TABS\n========================================================= *\/\n\n#ssos-ixtapa-app\n.ssos-ixtapa-tab {\n\n  min-width: 180px;\n  min-height: 52px;\n\n  padding:\n    6px\n    13px\n    6px\n    7px;\n\n  display: flex;\n\n  align-items: center;\n\n  gap: 9px;\n\n  color:\n    var(--ss-muted);\n\n  background:\n    transparent;\n\n  border:\n    1px solid\n    transparent;\n\n  border-radius:\n    10px;\n\n  font-family:\n    inherit;\n\n  text-align:\n    left;\n\n  cursor:\n    pointer;\n\n  transition:\n    color .18s ease,\n    background .18s ease,\n    border-color .18s ease,\n    box-shadow .18s ease,\n    transform .18s ease;\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-tab:hover {\n\n  color:\n    var(--ss-navy);\n\n  background:\n    var(--ss-soft);\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-tab.active {\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-color:\n    var(--ss-navy);\n\n  box-shadow:\n    0 6px 14px\n    rgba(7,29,52,.13);\n\n}\n\n\n\/* =========================================================\n   TAB ICON\n========================================================= *\/\n\n#ssos-ixtapa-app\n.ssos-ixtapa-tab-icon {\n\n  width: 37px;\n  height: 37px;\n\n  flex:\n    0 0 37px;\n\n  display: flex;\n\n  align-items: center;\n\n  justify-content: center;\n\n  color:\n    var(--ss-navy);\n\n  background:\n    #eef3f7;\n\n  border-radius:\n    8px;\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-tab.active\n.ssos-ixtapa-tab-icon {\n\n  color:\n    #ffffff;\n\n  background:\n    rgba(255,255,255,.13);\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-tab-icon svg {\n\n  width: 17px;\n  height: 17px;\n\n  fill: none;\n\n  stroke:\n    currentColor;\n\n  stroke-width: 2;\n\n  stroke-linecap:\n    round;\n\n  stroke-linejoin:\n    round;\n\n}\n\n\n\/* =========================================================\n   TAB TEXT\n========================================================= *\/\n\n#ssos-ixtapa-app\n.ssos-ixtapa-tab-copy {\n\n  min-width: 0;\n\n  display: flex;\n\n  flex-direction: column;\n\n  gap: 2px;\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-tab-copy strong {\n\n  color:\n    inherit;\n\n  font-size: 11px;\n\n  line-height: 1.15;\n\n  font-weight: 800;\n\n  white-space:\n    nowrap;\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-tab-copy small {\n\n  color:\n    #8b96a1;\n\n  font-size: 8px;\n\n  line-height: 1.2;\n\n  white-space:\n    nowrap;\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-tab.active\n.ssos-ixtapa-tab-copy small {\n\n  color:\n    rgba(255,255,255,.68);\n\n}\n\n\n\/* =========================================================\n   RELOAD\n========================================================= *\/\n\n#ssos-ixtapa-app\n.ssos-ixtapa-reload {\n\n  min-height: 40px;\n\n  padding:\n    8px\n    11px;\n\n  flex:\n    0 0 auto;\n\n  display: inline-flex;\n\n  align-items: center;\n\n  justify-content: center;\n\n  gap: 6px;\n\n  color:\n    var(--ss-navy);\n\n  background:\n    #ffffff;\n\n  border:\n    1px solid\n    var(--ss-border-dark);\n\n  border-radius:\n    9px;\n\n  font-family:\n    inherit;\n\n  font-size: 9px;\n\n  font-weight: 750;\n\n  cursor:\n    pointer;\n\n  transition:\n    background .18s ease,\n    border-color .18s ease,\n    transform .18s ease;\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-reload:hover {\n\n  transform:\n    translateY(-1px);\n\n  background:\n    var(--ss-gold-soft);\n\n  border-color:\n    #d8bd91;\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-reload svg {\n\n  width: 15px;\n  height: 15px;\n\n  fill: none;\n\n  stroke:\n    currentColor;\n\n  stroke-width: 1.9;\n\n  stroke-linecap:\n    round;\n\n  stroke-linejoin:\n    round;\n\n}\n\n\n\/* =========================================================\n   FRAME\n========================================================= *\/\n\n#ssos-ixtapa-app\n.ssos-ixtapa-frame-shell {\n\n  position: relative;\n\n  width: 100%;\n\n  margin-top: 8px;\n\n  overflow: hidden;\n\n  background:\n    var(--ss-bg);\n\n  border:\n    1px solid\n    var(--ss-border);\n\n  border-radius:\n    15px;\n\n  box-shadow:\n    0 7px 22px\n    rgba(7,29,52,.035);\n\n}\n\n\n\/* =========================================================\n   IFRAME\n========================================================= *\/\n\n#ssos-ixtapa-app\n.ssos-ixtapa-iframe {\n\n  width: 100%;\n\n  display: block;\n\n  background:\n    var(--ss-bg);\n\n  border: 0;\n\n  transition:\n    opacity .22s ease;\n\n}\n\n\n\/* REGISTER *\/\n\n#ssos-ixtapa-app[\n  data-view=\"register\"\n]\n.ssos-ixtapa-iframe {\n\n  height:\n    1380px;\n\n}\n\n\n\/* RECORDS *\/\n\n#ssos-ixtapa-app[\n  data-view=\"records\"\n]\n.ssos-ixtapa-iframe {\n\n  height:\n    1250px;\n\n}\n\n\n\/* =========================================================\n   LOADER\n========================================================= *\/\n\n#ssos-ixtapa-app\n.ssos-ixtapa-loading {\n\n  position: absolute;\n\n  z-index: 10;\n\n  inset: 0;\n\n  min-height:\n    220px;\n\n  padding-top:\n    70px;\n\n  display: flex;\n\n  align-items:\n    flex-start;\n\n  justify-content:\n    center;\n\n  gap: 11px;\n\n  color:\n    var(--ss-text);\n\n  background:\n    rgba(244,246,248,.97);\n\n  opacity: 0;\n\n  visibility:\n    hidden;\n\n  pointer-events:\n    none;\n\n  transition:\n    opacity .2s ease,\n    visibility .2s ease;\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-frame-shell.is-loading\n.ssos-ixtapa-loading {\n\n  opacity: 1;\n\n  visibility:\n    visible;\n\n  pointer-events:\n    auto;\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-frame-shell.is-loading\n.ssos-ixtapa-iframe {\n\n  opacity:\n    .14;\n\n}\n\n\n\/* =========================================================\n   SPINNER\n========================================================= *\/\n\n#ssos-ixtapa-app\n.ssos-ixtapa-spinner {\n\n  width: 25px;\n  height: 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    ssIxtapaSpin\n    .8s linear\n    infinite;\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-loading-copy {\n\n  display: flex;\n\n  flex-direction: column;\n\n  gap: 3px;\n\n}\n\n\n#ssos-ixtapa-app\n.ssos-ixtapa-loading-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#ssos-ixtapa-app\n.ssos-ixtapa-loading-copy span {\n\n  color:\n    var(--ss-muted);\n\n  font-size:\n    9px;\n\n}\n\n\n@keyframes ssIxtapaSpin {\n\n  to {\n    transform:\n      rotate(360deg);\n  }\n\n}\n\n\n\/* =========================================================\n   TABLET\n========================================================= *\/\n\n@media (max-width: 800px) {\n\n  #ssos-ixtapa-app {\n\n    width:\n      min(\n        calc(100% - 20px),\n        1500px\n      );\n\n    margin:\n      8px auto\n      26px;\n\n  }\n\n\n  #ssos-ixtapa-app[\n    data-view=\"register\"\n  ]\n  .ssos-ixtapa-iframe {\n\n    height:\n      1580px;\n\n  }\n\n\n  #ssos-ixtapa-app[\n    data-view=\"records\"\n  ]\n  .ssos-ixtapa-iframe {\n\n    height:\n      1380px;\n\n  }\n\n}\n\n\n\/* =========================================================\n   MOBILE \/ APP\n========================================================= *\/\n\n@media (max-width: 600px) {\n\n  #ssos-ixtapa-app {\n\n    width:\n      calc(100% - 10px);\n\n    margin:\n      5px auto\n      18px;\n\n  }\n\n\n  #ssos-ixtapa-app\n  .ssos-ixtapa-control-bar {\n\n    min-height: 57px;\n\n    padding: 4px;\n\n    gap: 4px;\n\n    border-radius:\n      11px;\n\n  }\n\n\n  #ssos-ixtapa-app\n  .ssos-ixtapa-navigation {\n\n    gap: 4px;\n\n  }\n\n\n  #ssos-ixtapa-app\n  .ssos-ixtapa-tab {\n\n    flex: 1;\n\n    min-width: 0;\n\n    min-height: 47px;\n\n    padding:\n      5px\n      7px;\n\n    justify-content:\n      center;\n\n  }\n\n\n  #ssos-ixtapa-app\n  .ssos-ixtapa-tab-icon {\n\n    width: 31px;\n    height: 31px;\n\n    flex-basis:\n      31px;\n\n  }\n\n\n  #ssos-ixtapa-app\n  .ssos-ixtapa-tab-copy strong {\n\n    font-size:\n      9px;\n\n  }\n\n\n  #ssos-ixtapa-app\n  .ssos-ixtapa-tab-copy small {\n\n    display:\n      none;\n\n  }\n\n\n  #ssos-ixtapa-app\n  .ssos-ixtapa-reload {\n\n    width: 38px;\n    height: 38px;\n\n    min-height:\n      38px;\n\n    padding: 0;\n\n    flex:\n      0 0 38px;\n\n  }\n\n\n  #ssos-ixtapa-app\n  .ssos-ixtapa-reload span {\n\n    display:\n      none;\n\n  }\n\n\n  #ssos-ixtapa-app\n  .ssos-ixtapa-frame-shell {\n\n    margin-top:\n      6px;\n\n    border-radius:\n      11px;\n\n  }\n\n\n  #ssos-ixtapa-app[\n    data-view=\"register\"\n  ]\n  .ssos-ixtapa-iframe {\n\n    height:\n      1700px;\n\n  }\n\n\n  #ssos-ixtapa-app[\n    data-view=\"records\"\n  ]\n  .ssos-ixtapa-iframe {\n\n    height:\n      1480px;\n\n  }\n\n}\n\n\n\/* =========================================================\n   REDUCED MOTION\n========================================================= *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n  #ssos-ixtapa-app *,\n  #ssos-ixtapa-app *::before,\n  #ssos-ixtapa-app *::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\n<script>\n\n(function () {\n\n  \"use strict\";\n\n\n  \/* =========================================================\n     ODS IXTAPA \u2014 PROTECTED WORDPRESS \u2192 APPS SCRIPT BRIDGE\n  ========================================================= *\/\n\n  const SSOS_IXTAPA_APP_SCRIPT_URL =\n    \"https:\/\/script.google.com\/macros\/s\/AKfycbw2Grk9Sgikpzd_hu1MfxWKLYRZ76sOXv-BR1Hcfai8eqivv2gTSb8gA-fzd71eu-JuKw\/exec\";\n\n\n  const SSOS_IXTAPA_TOKEN_ENDPOINT =\n    \"\/wp-admin\/admin-ajax.php?action=ss_ods_ixt_token\";\n\n\n  let AUTH_TOKEN = \"\";\n\n  let AUTH_EXPIRES_AT = 0;\n\n  let currentPage =\n    \"register\";\n\n  let protectedLoadStarted =\n    false;\n\n\n  const shell =\n    document.getElementById(\n      \"ssos-ixtapa-app\"\n    );\n\n\n  if (!shell) {\n    return;\n  }\n\n\n  const iframe =\n    document.getElementById(\n      \"ssosIxtapaIframe\"\n    );\n\n\n  const frameShell =\n    document.getElementById(\n      \"ssosIxtapaFrameShell\"\n    );\n\n\n  const tabs =\n    shell.querySelectorAll(\n      \".ssos-ixtapa-tab\"\n    );\n\n\n  const loadingText =\n    document.getElementById(\n      \"ssosIxtapaLoadingText\"\n    );\n\n\n  const reloadButton =\n    document.getElementById(\n      \"ssosIxtapaReload\"\n    );\n\n\n  const pages = {\n\n    register: {\n\n      page:\n        \"\",\n\n      loading:\n        \"Preparando formulario...\"\n\n    },\n\n\n    records: {\n\n      page:\n        \"search\",\n\n      loading:\n        \"Cargando records...\"\n\n    }\n\n  };\n\n\n  \/* =========================================================\n     LOADING\n  ========================================================= *\/\n\n  function setLoading(\n    isLoading\n  ) {\n\n    frameShell.classList.toggle(\n      \"is-loading\",\n      isLoading\n    );\n\n  }\n\n\n  function setLoadingMessage(\n    message\n  ) {\n\n    loadingText.textContent =\n      message || \"\";\n\n  }\n\n\n  \/* =========================================================\n     TOKEN\n  ========================================================= *\/\n\n  async function requestToken(\n    forceRefresh\n  ) {\n\n    const now =\n      Math.floor(\n        Date.now() \/ 1000\n      );\n\n\n    if (\n      !forceRefresh &&\n      AUTH_TOKEN &&\n      AUTH_EXPIRES_AT &&\n      now < (AUTH_EXPIRES_AT - 60)\n    ) {\n\n      return AUTH_TOKEN;\n    }\n\n\n    const response =\n      await fetch(\n        SSOS_IXTAPA_TOKEN_ENDPOINT,\n        {\n          method:\n            \"GET\",\n\n          credentials:\n            \"same-origin\",\n\n          cache:\n            \"no-store\",\n\n          headers: {\n            \"Accept\":\n              \"application\/json\"\n          }\n        }\n      );\n\n\n    let payload = 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 inv\u00e1lida.\"\n      );\n    }\n\n\n    if (\n      !response.ok ||\n      !payload ||\n      payload.success !== true ||\n      !payload.data ||\n      !payload.data.token\n    ) {\n\n      const message =\n        payload &&\n        payload.data &&\n        payload.data.message\n          ? payload.data.message\n          : \"No se pudo obtener autorizaci\u00f3n para ODS Ixtapa.\";\n\n\n      throw new Error(\n        message\n      );\n    }\n\n\n    if (\n      payload.data.module !==\n      \"ods-ixt\"\n    ) {\n\n      throw new Error(\n        \"La autorizaci\u00f3n recibida no corresponde a ODS Ixtapa.\"\n      );\n    }\n\n\n    AUTH_TOKEN =\n      String(\n        payload.data.token\n      );\n\n\n    AUTH_EXPIRES_AT =\n      Number(\n        payload.data.expires_at || 0\n      );\n\n\n    return AUTH_TOKEN;\n  }\n\n\n  \/* =========================================================\n     BUILD PROTECTED APPS SCRIPT URL\n  ========================================================= *\/\n\n  function buildProtectedUrl(\n    pageName\n  ) {\n\n    const page =\n      pages[\n        pageName\n      ];\n\n\n    if (!page) {\n      return \"\";\n    }\n\n\n    const params =\n      new URLSearchParams();\n\n\n    if (page.page) {\n\n      params.set(\n        \"page\",\n        page.page\n      );\n    }\n\n\n    params.set(\n      \"token\",\n      AUTH_TOKEN\n    );\n\n\n    return (\n      SSOS_IXTAPA_APP_SCRIPT_URL +\n      \"?\" +\n      params.toString()\n    );\n  }\n\n\n  \/* =========================================================\n     ACTIVE TAB\n  ========================================================= *\/\n\n  function updateActiveTab(\n    pageName\n  ) {\n\n    shell.dataset.view =\n      pageName;\n\n\n    tabs.forEach(\n      function (tab) {\n\n        const active =\n          tab.dataset.page ===\n          pageName;\n\n\n        tab.classList.toggle(\n          \"active\",\n          active\n        );\n\n\n        tab.setAttribute(\n          \"aria-selected\",\n          active\n            ? \"true\"\n            : \"false\"\n        );\n\n      }\n    );\n\n  }\n\n\n  \/* =========================================================\n     LOAD PAGE\n  ========================================================= *\/\n\n  async function loadPage(\n    pageName,\n    forceTokenRefresh\n  ) {\n\n    const page =\n      pages[\n        pageName\n      ];\n\n\n    if (!page) {\n      return;\n    }\n\n\n    currentPage =\n      pageName;\n\n\n    updateActiveTab(\n      pageName\n    );\n\n\n    setLoadingMessage(\n      page.loading\n    );\n\n\n    setLoading(\n      true\n    );\n\n\n    try {\n\n      await requestToken(\n        Boolean(\n          forceTokenRefresh\n        )\n      );\n\n\n      const protectedUrl =\n        buildProtectedUrl(\n          pageName\n        );\n\n\n      if (!protectedUrl) {\n\n        throw new Error(\n          \"No se pudo construir la URL protegida.\"\n        );\n      }\n\n\n      protectedLoadStarted =\n        true;\n\n\n      iframe.src =\n        protectedUrl;\n\n    } catch (error) {\n\n      protectedLoadStarted =\n        false;\n\n\n      setLoading(\n        true\n      );\n\n\n      setLoadingMessage(\n        error &&\n        error.message\n          ? error.message\n          : \"No se pudo cargar ODS Ixtapa.\"\n      );\n\n\n      console.error(\n        \"ODS Ixtapa authorization error:\",\n        error\n      );\n    }\n\n  }\n\n\n  \/* =========================================================\n     TABS\n  ========================================================= *\/\n\n  tabs.forEach(\n    function (tab) {\n\n      tab.addEventListener(\n        \"click\",\n        function () {\n\n          loadPage(\n            tab.dataset.page,\n            false\n          );\n\n        }\n      );\n\n    }\n  );\n\n\n  \/* =========================================================\n     IFRAME LOAD\n  ========================================================= *\/\n\n  iframe.addEventListener(\n    \"load\",\n    function () {\n\n      if (!protectedLoadStarted) {\n        return;\n      }\n\n\n      window.setTimeout(\n        function () {\n\n          setLoading(\n            false\n          );\n\n        },\n        220\n      );\n\n    }\n  );\n\n\n  \/* =========================================================\n     RELOAD\n  ========================================================= *\/\n\n  reloadButton.addEventListener(\n    \"click\",\n    function () {\n\n      AUTH_TOKEN =\n        \"\";\n\n      AUTH_EXPIRES_AT =\n        0;\n\n\n      loadPage(\n        currentPage,\n        true\n      );\n\n    }\n  );\n\n\n  \/* =========================================================\n     INITIAL LOAD\n  ========================================================= *\/\n\n  loadPage(\n    \"register\",\n    false\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>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Volver a Central de Reservas Service Orders ODS Ixtapa-Zihuatanejo Generaci\u00f3n y administraci\u00f3n de \u00f3rdenes de servicio. Destination IXTAPA Registrar ODS Crear orden de servicio Records Consultar \u00f3rdenes Recargar Cargando Preparando formulario&#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-14116","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/pages\/14116","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=14116"}],"version-history":[{"count":33,"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/pages\/14116\/revisions"}],"predecessor-version":[{"id":16171,"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/pages\/14116\/revisions\/16171"}],"wp:attachment":[{"href":"https:\/\/sunnyside.com.mx\/es\/wp-json\/wp\/v2\/media?parent=14116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}