/*
 * WorkLinkX Responsive v2 for FormTools 3.1.1 / Deep Blue
 * Responsive override loaded after the original theme stylesheet.
 * Core FormTools PHP files are untouched.
 */

html, body {
  width: 100%;
  min-width: 0 !important;
  max-width: 100%;
}

body {
  overflow-x: hidden;
}

/* ---------------- Desktop shell ---------------- */
#container {
  width: min(97vw, 1900px) !important;
  max-width: 1900px !important;
  min-width: 0 !important;
  margin: 0 auto !important;
  background-repeat: repeat-y;
  background-size: 100% auto;
}

#header {
  width: 100% !important;
  max-width: none !important;
}

/* V4 desktop shell: use the actual table columns instead of the old
   negative-margin layout. This prevents the left menu from overlapping
   or clipping the main content on wide screens. */
.outer {
  padding-left: 0 !important;
  text-align: right;
}

.inner,
.float-wrap,
.content_wrap {
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  box-sizing: border-box;
}

.float-wrap {
  margin-left: 0 !important;
}

.wlx-layout-table {
  width: 100% !important;
  table-layout: auto !important;
}

.wlx-sidebar-cell {
  width: 220px !important;
  min-width: 220px !important;
  max-width: 220px !important;
  vertical-align: top !important;
}

.wlx-main-cell {
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  overflow: hidden;
}

#left {
  width: 220px !important;
  min-width: 220px !important;
  max-width: 220px !important;
  box-sizing: border-box !important;
}

#left_nav_top {
  width: 220px !important;
  min-width: 220px !important;
  box-sizing: border-box !important;
}

/* Make the legacy DeepBlue menu fill the new sidebar width. */
#left .menu_items,
#left .menu_items > div,
#left .nav_link,
#left .nav_link_submenu,
#left .nav_link_selected {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

#left .nav_link a,
#left .nav_link_submenu a,
#left .nav_link_selected a {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  padding-left: 20px !important;
  padding-right: 8px !important;
  white-space: normal !important;
  overflow-wrap: anywhere;
}

#left .nav_heading {
  width: 100% !important;
  box-sizing: border-box !important;
  padding-left: 12px !important;
  padding-right: 8px !important;
}

#page_content,
.module_pages #page_content {
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  box-sizing: border-box;
  padding: 14px 18px !important;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

#footer {
  width: min(97vw, 1900px) !important;
  max-width: 1900px !important;
}

/* Inputs should not force the viewport wider. */
#page_content input[type="text"],
#page_content input[type="password"],
#page_content textarea,
#page_content select {
  max-width: 100%;
  box-sizing: border-box;
}

#page_content img {
  max-width: 100%;
  height: auto;
}

/* Submission grids are data tables: on smaller windows preserve columns and
   scroll the GRID instead of squeezing the entire application. */
#page_content .submissions_table {
  width: max-content !important;
  min-width: 100% !important;
  table-layout: auto !important;
}

#page_content .submissions_table th,
#page_content .submissions_table td {
  white-space: nowrap;
}

/* Keep long text cells from creating absurdly wide columns. */
#page_content .submissions_table td .truncate,
#page_content .submissions_table td .truncate_no_fixed_width {
  max-width: 220px;
}

/* Regular list tables can still use the full content width. */
#page_content .list_table {
  width: 100% !important;
  max-width: 100%;
}

/* The theme uses a number of old hard-coded widths. Constrain their outer
   containers rather than shrinking their content into unreadable columns. */
.scroll-pane,
.sortable,
.tab_content,
.inner_tab_content {
  max-width: 100%;
  box-sizing: border-box;
}

/* Mobile / compact menu button (hidden on wide screens). */
#wlx-nav-toggle {
  display: none;
  position: absolute;
  right: 12px;
  top: 18px;
  z-index: 50;
  min-height: 34px;
  padding: 5px 12px;
  border: 1px solid rgba(255,255,255,.65);
  border-radius: 4px;
  background: rgba(0,0,0,.28);
  color: #fff;
  cursor: pointer;
  font: 12px/20px Tahoma,Verdana,Arial,sans-serif;
}

#wlx-nav-toggle:hover,
#wlx-nav-toggle:focus {
  background: rgba(0,0,0,.42);
}


/* ---------------- Compact browser / tablet / phone ----------------
   Below 1100px the legacy table layout is converted to blocks.
   The menu becomes a real off-canvas drawer instead of a hidden table cell.
*/
@media screen and (max-width: 1100px) {
  html,
  body {
    min-width: 0 !important;
    width: 100% !important;
    overflow-x: hidden !important;
  }

  body {
    background-image: none !important;
  }

  #container,
  #footer {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    margin: 0 !important;
  }

  #header {
    position: relative;
    width: 100% !important;
    overflow: visible !important;
    z-index: 1200;
  }

  #wlx-nav-toggle {
    display: block !important;
  }

  .outer,
  .inner,
  .float-wrap,
  .content_wrap {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding-left: 0 !important;
    box-sizing: border-box !important;
  }

  .wlx-layout-table,
  .wlx-layout-table > tbody,
  .wlx-layout-table > tbody > tr {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
  }

  /* Main content is always full-width. */
  .wlx-main-cell {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    overflow: visible !important;
  }

  /* Real off-canvas navigation drawer. */
  .wlx-sidebar-cell {
    display: block !important;
    position: fixed !important;
    left: 0 !important;
    top: 71px !important;
    bottom: 0 !important;
    z-index: 1100 !important;

    width: 286px !important;
    min-width: 286px !important;
    max-width: 286px !important;

    margin: 0 !important;
    padding: 0 !important;

    background: #e8f4fd !important;
    border-right: 1px solid #aebfcb;
    box-shadow: 5px 0 18px rgba(0,0,0,.22);

    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch;

    transform: translate3d(-105%, 0, 0);
    transition: transform .22s ease;
    visibility: hidden;
    pointer-events: none;
  }

  body.wlx-menu-open .wlx-sidebar-cell {
    transform: translate3d(0, 0, 0);
    visibility: visible;
    pointer-events: auto;
  }

  #left,
  #left_nav_top {
    display: block !important;
    position: static !important;
    float: none !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    box-sizing: border-box !important;
  }

  #left {
    padding-bottom: 18px !important;
  }

  #left .menu_items,
  #left .menu_items > div,
  #left .nav_link,
  #left .nav_link_submenu,
  #left .nav_link_selected,
  #left .nav_heading {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  #left .nav_link a,
  #left .nav_link_submenu a,
  #left .nav_link_selected a {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    padding-right: 12px !important;
    white-space: normal !important;
    overflow-wrap: anywhere;
  }

  /* Dim content when drawer is open. */
  body.wlx-menu-open::after {
    content: "";
    position: fixed;
    left: 0;
    right: 0;
    top: 71px;
    bottom: 0;
    z-index: 1050;
    background: rgba(0,0,0,.20);
  }

  #page_content,
  .module_pages #page_content {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    padding: 10px 12px !important;
    box-sizing: border-box !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  #main_top {
    width: 100% !important;
    max-width: 100% !important;
  }

  /* Search/filter bars: wrap cleanly instead of overflowing. */
  #page_content form,
  #page_content .search,
  #page_content .search_row,
  #page_content .search_form {
    max-width: 100% !important;
  }

  #page_content input[type="text"],
  #page_content input[type="password"],
  #page_content textarea,
  #page_content select,
  #page_content input[type="submit"],
  #page_content input[type="button"],
  #page_content button {
    box-sizing: border-box !important;
  }

  /* Data tables stay readable: horizontal scroll is local to content. */
  #page_content .submissions_table {
    width: max-content !important;
    min-width: 100% !important;
    table-layout: auto !important;
    font-size: 11px !important;
  }

  #page_content .submissions_table th,
  #page_content .submissions_table td {
    white-space: nowrap !important;
  }

  /* Edit Submission / settings tables: use the viewport width. */
  #edit_submission_form,
  #edit_submission_form .tab_content,
  #page_content .tab_content {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  #edit_submission_form table {
    width: 100% !important;
    max-width: 100% !important;
  }

  /* Tabs remain usable on compact widths. */
  .main_tabset,
  .tabset {
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    white-space: nowrap !important;
    -webkit-overflow-scrolling: touch;
  }

  .main_tabset li,
  .tabset li {
    float: none !important;
    display: inline-block !important;
  }
}

/* ---------------- Phone / narrow tablet ---------------- */
@media screen and (max-width: 700px) {
  #header {
    height: 58px !important;
    min-height: 58px !important;
  }

  #header > span[style*="float:right"] {
    display: none !important;
  }

  #header > a > img,
  #header > img {
    width: auto !important;
    max-width: 170px !important;
    height: 58px !important;
    object-fit: cover;
    object-position: left center;
  }

  #wlx-nav-toggle {
    top: 11px !important;
    right: 8px !important;
    min-height: 36px !important;
    padding: 6px 10px !important;
  }

  .wlx-sidebar-cell {
    top: 58px !important;
    width: min(86vw, 290px) !important;
    min-width: min(86vw, 290px) !important;
    max-width: min(86vw, 290px) !important;
  }

  body.wlx-menu-open::after {
    top: 58px;
  }

  #page_content,
  .module_pages #page_content {
    padding: 7px !important;
  }

  /* Form controls become touch-friendly, without forcing grid controls wide. */
  #page_content input[type="text"],
  #page_content input[type="password"],
  #page_content textarea,
  #page_content input[type="submit"],
  #page_content input[type="button"],
  #page_content button {
    min-height: 34px;
    font-size: 13px !important;
  }

  #page_content textarea {
    max-width: 100% !important;
  }

  /* Better compact search row. */
  #page_content input[type="text"] {
    max-width: 240px;
  }

  #footer {
    position: static !important;
    width: 100% !important;
    margin-top: 8px !important;
    min-height: 37px;
  }
}

@media screen and (max-width: 480px) {
  #page_content {
    padding: 5px !important;
  }

  td, th, p, input, textarea, select, option, optgroup, ul, li, div, span {
    font-size: 9pt;
    line-height: 1.32;
  }

  /* Edit forms: prevent labels/values from disappearing off screen. */
  #edit_submission_form textarea,
  #edit_submission_form input[type="text"],
  #edit_submission_form select {
    max-width: 100% !important;
  }

  .wlx-sidebar-cell {
    width: 88vw !important;
    min-width: 88vw !important;
    max-width: 88vw !important;
  }
}

/* Respect users who prefer reduced motion. */
@media (prefers-reduced-motion: reduce) {
  .wlx-sidebar-cell {
    transition: none !important;
  }
}


/* V4 menu/content breathing room */
@media screen and (min-width: 1101px) {
  .wlx-main-cell {
    padding-left: 10px !important;
  }

  #page_content,
  .module_pages #page_content {
    padding-left: 18px !important;
  }
}
