.mantine-Drawer-title {
  font-weight: 600;
}

svg.shadow {
  color: #f2f2f2;
  filter: drop-shadow(0px 0px 1px black);
}

.underline-on-hover:hover {
  text-decoration: underline;
}

:root {
  --font-family: 'IBM Plex Sans';
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: var(--mantine-font-family-headings);
  font-weight: 600;
}

:root {
  background: #dbdbdb !important;
}

html,
body {
  overflow-x: clip;
}

.mantine-Text-root {
  font-size: var(--text-fz);
  word-break: break-word;
}

.mantine-Text-root,
.mantine-InputWrapper-label {
  word-break: break-word;
}

.mantine-InputBase-input {
  text-overflow: ellipsis;
}

.mantine-InputClearButton-root {
  &:hover {
    border-radius: var(--mantine-radius-xl);
    background-color: var(--mantine-color-gray-1) !important;
  }
}

.hover-title .hover-title--on,
.hover-title:hover .hover-title--off {
  display: none;
}
.hover-title:hover .hover-title--on {
  display: flex;
}

.hover-title-on {
  background-color: blue;
}

.row-marked-for-deletion {
  color: var(--mantine-color-red-7) !important;
  text-decoration: line-through !important;
}

.row-marked-for-deletion .ag-cell {
  text-decoration: line-through !important;
}

:root {
  --mantine-radius-default: 6px;
}
/* A stage route slides the white card off to the right and fades it out, revealing a dark stage on the
   shell background behind it. Leaving the stage slides the card back in. */
._host_e1ooq_3 {
  --stage-duration: 450ms;
  --stage-ease: cubic-bezier(0.32, 0.72, 0, 1);

  position: relative;
  height: 100%;
}

/* Clip only sideways, so the card can slide off without a scrollbar while the divider still spans the shell's padding */
._host_e1ooq_3[data-stage],
._host_e1ooq_3[data-transitioning] {
  overflow-x: clip;
}

._card_e1ooq_17 {
  position: relative;
  z-index: 1;
  height: 100%;
}

._stage_e1ooq_23 {
  position: absolute;
  inset: 0;
  z-index: 0;
  opacity: 0;
  pointer-events: none;
}

._stageContent_e1ooq_31 {
  height: 100%;
}

/* Full height, on the line where the card's left edge rests, in the nav's own rule colour */
._divider_e1ooq_36 {
  position: absolute;
  top: calc(var(--mantine-spacing-sm) * -1);
  bottom: calc(var(--mantine-spacing-sm) * -1);
  left: 0;
  width: 1px;
  background: var(--mantine-color-app-shell-gray-7);
}

._host_e1ooq_3[data-stage] ._card_e1ooq_17 {
  transform: translateX(calc(100% + var(--mantine-spacing-sm)));
  opacity: 0;
  pointer-events: none;
}

._host_e1ooq_3[data-stage]:not([data-transitioning]) ._card_e1ooq_17 {
  visibility: hidden;
}

._host_e1ooq_3[data-stage] ._stage_e1ooq_23 {
  opacity: 1;
  pointer-events: auto;
}

._host_e1ooq_3[data-animate] ._card_e1ooq_17 {
  transition:
    transform var(--stage-duration) var(--stage-ease),
    opacity var(--stage-duration) var(--stage-ease);
}

._host_e1ooq_3[data-animate] ._stage_e1ooq_23 {
  transition: opacity calc(var(--stage-duration) * 0.6) ease;
}

@media (prefers-reduced-motion: reduce) {
  ._host_e1ooq_3[data-stage] ._card_e1ooq_17 {
    transform: none;
  }

  ._host_e1ooq_3[data-animate] ._card_e1ooq_17 {
    transition: opacity 150ms ease;
  }
}
.full-width-label .mantine-InputWrapper-label {
  width: 100%;
}

.part-card {
  background-color: var(--mantine-color-gray-1);
}

.part-card-selectable {
  cursor: pointer;
  &:hover {
    background-color: var(--mantine-color-gray-3);
  }
}

.category-nav {
  overflow: hidden;
  &:hover {
    overflow: visible;
    z-index: 20;
  }
}
.upload-overlay {
  opacity: 0;
  &:hover {
    opacity: 0.5;
  }
}
.attachment-link {
  user-select: initial;
  color: black;
  cursor: pointer;

  &:hover {
    color: var(--mantine-primary-color);
  }
}
.file-upload-box {
  border: 1px dashed var(--mantine-color-gray-4);
  border-radius: 10px;
  overflow: hidden;
  cursor: pointer;

  &:hover {
    background-color: var(--mantine-color-gray-0);
  }
}
._root_1lb7o_1 {
  cursor: pointer;
  user-select: none;

  &:hover {
    background-color: var(--mantine-color-gray-0);
  }
}

._iconOnly_1lb7o_10 {
  margin-inline-end: 0;
}
.hover-node .hover-node--on,
.hover-node:hover .hover-node--off {
  opacity: 0;
}
.hover-node:hover .hover-node--on {
  opacity: 1;
}

.hover-node {
  border-width: 2px;
  border-style: dashed;
  border-color: rgba(0, 0, 0, 0);
  border-radius: 10px;
}
.selected .hover-node {
  border-color: var(--mantine-primary-color-8);
}

.connectingfrom {
  visibility: visible !important;
}
.analytics-card {
  opacity: 0;
}
.analytics-card:hover {
  opacity: 0.3;
  background-color: var(--mantine-primary-color-1);
}
.activity-feed .mantine-Timeline-item {
  margin-top: var(--mantine-spacing-lg);
}
.activity-feed .mantine-Timeline-item:first-of-type {
  margin-top: 0;
}
@media print {
  /* Remove app content and modal siblings from layout to prevent blank pages.
       display: none is needed so they take up no page space; visibility: hidden alone still occupies layout. */
  body:has(._printContent_1ebcg_4) > *:not(:has(._printContent_1ebcg_4)),
    
    *[data-portal]:has(._printContent_1ebcg_4) > *:not(:has(._printContent_1ebcg_4)),
    
    .mantine-Modal-header,
    
    ._printableModal_1ebcg_10 > *:not(._printContent_1ebcg_4) {
    display: none !important;
    visibility: hidden;
  }

  /* Hide every element that doesn't contain .printContent. */
  body:has(._printContent_1ebcg_4) *:not(:has(._printContent_1ebcg_4)) {
    visibility: hidden;
  }

  /* Ensure the .printContent is visible */
  ._printContent_1ebcg_4,
  ._printContent_1ebcg_4 * {
    visibility: visible !important;
  }

  /* Modal.Inner is position: fixed by default, which causes it to repeat on every
       printed page. Reset it to static so print layout uses normal document flow. */
  .mantine-Modal-inner:has(._printContent_1ebcg_4) {
    position: static !important;
  }

  /* Ensure that all other modal containers have `block` display to
       let the browser's table paging algorithm work correctly. */
  .mantine-Modal-content:has(._printContent_1ebcg_4),
  .mantine-Modal-body:has(._printContent_1ebcg_4),
  .mantine-ScrollArea-root:has(._printContent_1ebcg_4),
  .mantine-ScrollArea-viewport:has(._printContent_1ebcg_4),
  ._printableModal_1ebcg_10 {
    display: block !important;
  }

  /* Remove overflow/height/spacing constraints so the table renders fully across pages. */
  .mantine-Modal-content:has(._printContent_1ebcg_4),
  .mantine-Modal-inner:has(._printContent_1ebcg_4),
  .mantine-Modal-body:has(._printContent_1ebcg_4),
  .mantine-ScrollArea-root:has(._printContent_1ebcg_4),
  .mantine-ScrollArea-viewport:has(._printContent_1ebcg_4),
  ._printContent_1ebcg_4,
  ._tableContainer_1ebcg_49,
  ._tableScroll_1ebcg_50,
  ._printableModal_1ebcg_10 {
    overflow: visible !important;
    height: auto !important;
    max-height: none !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    transform: none !important;
  }

  /* Prevent data rows from being split across page boundaries. */
  ._printContent_1ebcg_4 tr {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  ._printContent_1ebcg_4 th {
    background: transparent !important;
  }

  ._printableBlock_1ebcg_71 {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* Dissolved so the table, not this div, is the box that fragments across pages.
     `!important` is required: this @media block precedes the base rules, which would win. */
  ._tableContainer_1ebcg_49,
  ._tableScroll_1ebcg_50 {
    display: contents !important;
  }

  @page {
    /* Get rid of the browser default headers. */
    @top-left {
      content: '';
    }
    @top-center {
      content: '';
    }
    @top-right {
      content: '';
    }
    margin-bottom: 1.5cm; /* creates physical space for the margin box */
    /* Relative so Vite resolves and bundles the asset. A root-absolute path resolves against
           container/public/, which holds only favicon.ico and robots.txt. */
    @bottom-left {
      content: url("data:image/svg+xml,%3csvg%20width='79'%20height='14'%20viewBox='0%200%2079%2014'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_3731_47766)'%3e%3cpath%20d='M0%200.251221H10.4061V2.866H2.88078V5.16166L8.16426%205.17644V7.70861H2.88078V10.7547H10.4236V13.3756H0V0.251221Z'%20fill='currentColor'/%3e%3cpath%20d='M26.3262%206.80522C26.3262%202.97739%2029.3992%200%2033.4075%200C37.4158%200%2040.4915%202.97739%2040.4915%206.80522C40.4915%2010.633%2037.4184%2013.6313%2033.4075%2013.6313C29.3966%2013.6313%2026.327%2010.633%2026.327%206.80522H26.3262ZM37.5985%206.81131C37.5985%204.39739%2035.7176%202.68522%2033.4014%202.68522C31.0852%202.68522%2029.2043%204.39652%2029.2043%206.81131C29.2043%209.22609%2031.0817%2010.94%2033.4014%2010.94C35.7211%2010.94%2037.5985%209.2287%2037.5985%206.81131V6.81131Z'%20fill='currentColor'/%3e%3cpath%20d='M43.3124%200.251221H46.2072L46.1923%2010.7521H52.8664V13.3695H43.3115V0.251221H43.3124Z'%20fill='currentColor'/%3e%3cpath%20d='M51.6416%200.251221H54.8659L58.9799%208.40513L63.1245%200.251221H66.2894L59.0157%2013.9364L51.6416%200.251221Z'%20fill='currentColor'/%3e%3cpath%20d='M67.8887%200.251221H78.2948V2.866H70.7695V5.16166L76.0529%205.17644V7.70861H70.7695V10.7547H78.3132V13.3756H67.8895V0.251221H67.8887Z'%20fill='currentColor'/%3e%3cpath%20d='M26.3268%200.251221L26.214%200.462525L25.9344%200.988612H25.9335L19.0357%2013.9356L11.6816%200.251221H12.4927L19.0357%2012.4964L25.1372%200.988612H24.3401L19.0357%2011.0573L13.6954%200.988612L13.3038%200.251221H15.7371L16.1121%200.988612L19.0357%206.74079L22.3316%200.251221H23.1314L19.0357%208.17992L15.308%200.988612H14.5021L19.0357%209.61905L23.5448%200.988612L23.9302%200.251221H26.3268Z'%20fill='currentColor'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_3731_47766'%3e%3crect%20width='78.4'%20height='14'%20fill='currentColor'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");
      color: black;
    }
    /* Add our page counter */
    @bottom-right {
      content: counter(page) ' of ' counter(pages);
      font-family:
        IBM Plex Sans,
        sans-serif;
      color: var(--mantine-color-gray-4);
    }
  }
}

/* printContent fills remaining space in the Stack (after ModalButtons).
   Scrolls on screen so a document taller than the modal stays reachable; the print
   block above drops the constraint so every page still renders. */
._printContent_1ebcg_4 {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow-y: auto;
}

/* The border lives on the table (`withTableBorder`) so it survives print. clip, not hidden,
   avoids becoming a scroll container so the sticky thead keeps working. */
._tableContainer_1ebcg_49 {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  border-radius: var(--mantine-radius-sm);
  overflow: clip;
}

/* Inner scroll container — the sticky thead anchors to this element. */
._tableScroll_1ebcg_50 {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
}
._selectableCard_s95yx_1 {
  cursor: pointer;
  background-color: var(--mantine-color-gray-1);
}

._selectableCard_s95yx_1:hover {
  background-color: var(--mantine-color-gray-4);
}
.active-table {
  --ag-header-background-color: var(--mantine-color-gray-3);
}
.draft-table {
  --ag-header-background-color: var(--mantine-primary-color-1);
}

.work-cell-setup .ag-row-selected {
  box-shadow: inset 0 1px 0 #444;
  --ag-selected-row-background-color: initial;
}

.dragged-to-end .ag-row-last {
  box-shadow: inset 0 -1px 0 #444;
}
.selectable-spool .visibility-toggle {
  opacity: 0;
}
.selectable-spool .visibility-toggle.inactive {
  opacity: 0.4;
}
.selectable-spool:hover .visibility-toggle {
  opacity: 1;
}
._colorBox_a6hur_1 {
  min-height: 100%;
  cursor: pointer;
  transition: all 0.2s ease-in-out;

  &:hover,
  &._active_a6hur_7 {
    width: 1.1em;
    box-shadow:
      0 0 0 2px #fff,
      0 0 0 4px #000;
    z-index: var(--mantine-z-index-popover);
  }
}
.time-tracking-member {
  user-select: none;
  cursor: pointer;

  &:hover {
    background-color: var(--mantine-color-gray-1);
  }

  &.selected {
    background-color: var(--mantine-primary-color-0);
    cursor: unset;
  }
}
.detail-page-item-thin {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

.detail-page-right-align {
  flex-direction: row-reverse;
}

.edit-description-button {
  transition: all 0.2s ease;
}

.editable-work-order-item {
  cursor: pointer;
  background-color: var(--mantine-color-gray-0) !important;

  &:hover {
    background-color: var(--mantine-color-gray-2) !important;
  }
}

.transparent-editable-cell {
  background-color: transparent !important;
}
.big-calendar div[data-month-level='true'],
.big-calendar div[data-year-level='true'],
.big-calendar div[data-decade-level='true'] {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
}

.big-calendar .mantine-Calendar-pickerControl,
.big-calendar .mantine-PickerControl-pickerControl {
  font-size: 16;
  font-weight: 500;
}
.kanban-work-order-link {
  color: var(--mantine-color-gray-7);
  text-decoration: none;
  &:hover {
    color: var(--mantine-color-gray-9);
    text-decoration: underline;
  }
}

.kanban-work-order-small-link {
  color: var(--mantine-color-gray-6);
}
.nav-link-icon-collapsed {
  color: var(--mantine-color-app-shell-gray-5);
  transition: color 0.2s ease-in;
}

.nav-container-thumb {
  opacity: 0;
  transition: opacity 0.2s;
  &.visible {
    opacity: 0.5;
  }
  &:hover {
    opacity: 0.9;
  }

  &:active {
    opacity: 0.7;
  }
}

.nav-bar-collapsed .nav-container-thumb {
  &.visible {
    opacity: 0.2;
  }
  &:hover {
    opacity: 0.7;
  }
  &:active {
    opacity: 0.5;
  }
}

.ad-spot {
  cursor: pointer;
  background-color: #0f1013;
  color: var(--mantine-primary-color-5);

  &:hover {
    background-color: #2a292c;
    color: var(--mantine-primary-color-4);
  }
}
._navDropdown_16oh5_1 {
  border-radius: var(--mantine-radius-lg);
  border-color: var(--mantine-color-app-shell-gray-8);
  border-width: 0.5px;
}

._navDropdown_16oh5_1[data-position='right'],
._navDropdown_16oh5_1[data-position='right-start'],
._navDropdown_16oh5_1[data-position='right-end'] {
  margin-left: 9px;
}
._text_b6uuu_1 {
  color: var(--mantine-color-app-shell-gray-5);
  text-wrap: nowrap;
  text-transform: uppercase;
  font-weight: 700;
  font-size: 12px;
}

._section_b6uuu_9[data-position='left'] {
  margin-inline-end: 5px;
}

._section_b6uuu_9[data-position='right'] {
  margin-inline-start: 5px;
}

._collapseCaret_b6uuu_17 {
  opacity: 0;
  transition: opacity 0.2s ease-in;
}

button:hover ._collapseCaret_b6uuu_17 {
  opacity: 1;
}
._navLink_q5vqb_1 {
  color: var(--mantine-color-app-shell-gray-3);
  &:hover * {
    color: var(--mantine-color-app-shell-gray-0);
    transition: color 0.2s ease-in;
  }
}

._navStackItem_q5vqb_9 {
  transition: border-left-color 300ms ease-in;
  border-left: 1px solid;
  border-left-color: var(--mantine-color-dark-6);
  padding-left: 8px;
  &._activeItem_q5vqb_14 {
    border-left-color: var(--mantine-color-dark-2);
  }
}

._newMarker_q5vqb_19 {
  color: var(--mantine-primary-color-4);
}

._root_q5vqb_23 {
  border-radius: 6px;
}

._body_q5vqb_27 {
  text-overflow: clip;
}

._label_q5vqb_31 {
  text-wrap: nowrap;
  text-overflow: clip;
  white-space: nowrap;
}
._viewport_1vrke_1,
._brand_1vrke_2 {
  --sub-nav-duration: 350ms;
  --sub-nav-ease: cubic-bezier(0.32, 0.72, 0, 1);
}

._viewport_1vrke_1 {
  position: relative;
  overflow: hidden;
}

._pane_1vrke_12 {
  position: absolute;
  inset: 0;
  transition:
    transform var(--sub-nav-duration) var(--sub-nav-ease),
    opacity var(--sub-nav-duration) var(--sub-nav-ease);
}

._mainPane_1vrke_20 {
  transform: translateX(0);
  opacity: 1;
}

._subPane_1vrke_25 {
  transform: translateX(100%);
}

._viewport_1vrke_1[data-pushed] ._mainPane_1vrke_20 {
  transform: translateX(-33%);
  opacity: 0;
}

._viewport_1vrke_1[data-pushed] ._subPane_1vrke_25 {
  transform: translateX(0);
}

._brand_1vrke_2 {
  position: relative;
  display: flex;
  align-items: center;
  min-height: var(--button-height-xs);
}

._logo_1vrke_45,
._back_1vrke_46 {
  transition:
    transform var(--sub-nav-duration) var(--sub-nav-ease),
    opacity var(--sub-nav-duration) var(--sub-nav-ease);
}

._logo_1vrke_45 {
  display: flex;
}

._back_1vrke_46 {
  position: absolute;
  left: 0;
  top: 50%;
  translate: 0 -50%;
  opacity: 0;
  transform: translateX(24px);
}

._brand_1vrke_2[data-pushed] ._logo_1vrke_45 {
  opacity: 0;
  transform: translateX(-12px);
}

._brand_1vrke_2[data-pushed] ._back_1vrke_46 {
  opacity: 1;
  transform: translateX(0);
}

@media (prefers-reduced-motion: reduce) {
  ._logo_1vrke_45,
  ._back_1vrke_46,
  ._brand_1vrke_2[data-pushed] ._logo_1vrke_45,
  ._brand_1vrke_2[data-pushed] ._back_1vrke_46,
  ._subPane_1vrke_25,
  ._viewport_1vrke_1[data-pushed] ._mainPane_1vrke_20 {
    transform: none;
  }

  ._subPane_1vrke_25 {
    opacity: 0;
  }

  ._viewport_1vrke_1[data-pushed] ._subPane_1vrke_25 {
    opacity: 1;
  }

  ._pane_1vrke_12,
  ._logo_1vrke_45,
  ._back_1vrke_46 {
    transition: opacity 150ms ease;
  }
}
