@import '_content/Conventus.Modules.CapacityPlanning.Client/Conventus.Modules.CapacityPlanning.Client.f6wfu6zezb.bundle.scp.css';
@import '_content/Conventus.Modules.GanttPlanning.Client/Conventus.Modules.GanttPlanning.Client.qzm077i8lu.bundle.scp.css';
@import '_content/Conventus.Modules.HourManagement.Client/Conventus.Modules.HourManagement.Client.cttwki9p8j.bundle.scp.css';
@import '_content/Conventus.Modules.HourRegistrations.Client/Conventus.Modules.HourRegistrations.Client.cpx15rubzc.bundle.scp.css';
@import '_content/Conventus.Modules.Opportunities.Client/Conventus.Modules.Opportunities.Client.749j10wuu4.bundle.scp.css';
@import '_content/Conventus.Modules.ProjectPlans.Client/Conventus.Modules.ProjectPlans.Client.m8crek92il.bundle.scp.css';
@import '_content/Conventus.Modules.Timeline.Client/Conventus.Modules.Timeline.Client.skbuoyqn72.bundle.scp.css';
@import '_content/Conventus.Shared.Client/Conventus.Shared.Client.2kaioiyzbq.bundle.scp.css';

/* /Components/Common/NotFound.razor.rz.scp.css */
.not-found-container[b-2t7gaj0mc3] {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 60vh;
  text-align: center;
  user-select: none;
  gap: 0.5rem;
}

.not-found-glitch[b-2t7gaj0mc3] {
  position: relative;
  font-size: 10rem;
  font-weight: 900;
  line-height: 1;
  color: var(--dxbl-primary-bg);
  letter-spacing: 0.05em;
  animation: not-found-pulse-b-2t7gaj0mc3 3s ease-in-out infinite;
}
.not-found-glitch[b-2t7gaj0mc3]::before, .not-found-glitch[b-2t7gaj0mc3]::after {
  content: attr(data-text);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0.8;
}
.not-found-glitch[b-2t7gaj0mc3]::before {
  color: var(--dxbl-danger-bg);
  animation: not-found-glitch-left-b-2t7gaj0mc3 2.5s ease-in-out infinite;
  clip-path: inset(0 65% 0 0);
}
.not-found-glitch[b-2t7gaj0mc3]::after {
  color: var(--dxbl-info-bg);
  animation: not-found-glitch-right-b-2t7gaj0mc3 2.5s ease-in-out infinite;
  clip-path: inset(0 0 0 65%);
}

.not-found-title[b-2t7gaj0mc3] {
  font-size: 1.75rem;
  font-weight: 600;
  color: var(--dxbl-text-primary);
  margin: 0;
}

.not-found-message[b-2t7gaj0mc3] {
  font-size: 1.1rem;
  color: var(--dxbl-text-secondary);
  max-width: 400px;
  margin: 0.25rem 0 1rem;
}

@keyframes not-found-pulse-b-2t7gaj0mc3 {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.85;
  }
}
@keyframes not-found-glitch-left-b-2t7gaj0mc3 {
  0%, 100% {
    transform: translate(0);
  }
  20% {
    transform: translate(-3px, 2px);
  }
  40% {
    transform: translate(2px, -1px);
  }
  60% {
    transform: translate(-1px, 1px);
  }
  80% {
    transform: translate(1px, -2px);
  }
}
@keyframes not-found-glitch-right-b-2t7gaj0mc3 {
  0%, 100% {
    transform: translate(0);
  }
  20% {
    transform: translate(3px, -1px);
  }
  40% {
    transform: translate(-2px, 2px);
  }
  60% {
    transform: translate(1px, -1px);
  }
  80% {
    transform: translate(-1px, 2px);
  }
}
/* /Components/Layouts/AuthenticationLayout.razor.rz.scp.css */
.page[b-ymep9fqzwx] {
  overflow: hidden;
  padding: 20px;
  align-items: center;
  display: flex;
  justify-content: center;
  height: 100%;
  width: 100%;
  position: absolute;
}

.authentication-container[b-ymep9fqzwx] {
  max-width: 400px;
  width: 100%;
  margin: 0 auto;
}
.authentication-container > img[b-ymep9fqzwx] {
  width: 100%;
  margin: 0 0 20px 0;
  padding: 0 5%;
  user-select: none;
}
/* /Components/Layouts/MainLayout.razor.rz.scp.css */
.gridlayout-item[b-i74jk9lozv] {
  position: relative;
}
.gridlayout-item[b-i74jk9lozv]:before {
  content: " ";
  position: absolute;
  width: 100%;
  left: 0;
  top: 0;
  opacity: 0.4;
}

.gridlayout-content[b-i74jk9lozv] {
  overflow-y: auto;
  overflow-x: hidden;
}

/* A region that is rebuilt (see MainLayout's region keys) is a brand new element, so without this the
   old content disappears and the new content pops in - read as a white flash. Instead the region is
   faded out while its content is still on screen, and the replacement eases in from transparent, so
   both ends of the swap sit at zero opacity and the empty moment in between is never visible.
   The fade-out duration is mirrored by MainLayout._fadeOutDuration; keep the two in step. */
.layout-region[b-i74jk9lozv] {
  animation: layout-region-enter-b-i74jk9lozv 180ms ease-out;
}

.layout-region-leaving[b-i74jk9lozv] {
  opacity: 0;
  transition: opacity 120ms ease-in;
  /* The enter animation would otherwise fight the fade-out and snap the region back to full opacity. */
  animation: none;
  /* Nothing in a region on its way out should still be clickable. */
  pointer-events: none;
}

@keyframes layout-region-enter-b-i74jk9lozv {
  from {
    opacity: 0;
    transform: translateY(2px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
/* Respect a reduced-motion preference: the swap still happens, just without the movement. */
@media (prefers-reduced-motion: reduce) {
  .layout-region[b-i74jk9lozv],
  .layout-region-leaving[b-i74jk9lozv] {
    animation: none;
    transition: none;
  }
}
/* Align Save/Cancel buttons to the left */
[b-i74jk9lozv] .dxbl-grid-edit-form-buttons {
  justify-content: flex-start !important;
}
/* /Components/Pages/Appointment/Overview.razor.rz.scp.css */
@charset "UTF-8";
/* ==========================================================================
   Page body spacing
   --------------------------------------------------------------------------
   Purpose:
   Adds spacing below the first row in a fluid container, typically used for
   toolbar/action rows above the scheduler or grid content.
   ========================================================================== */
.container-fluid[b-ei6y3s2p4l] {
  position: relative;
}
.container-fluid .row:first-child[b-ei6y3s2p4l] {
  padding-bottom: 0.5rem;
}

/* ==========================================================================
   Layout options toolbar
   --------------------------------------------------------------------------
   Purpose:
   Right-aligns the show/hide dropdown. It sits outside the scheduler on
   purpose - the scheduler's own toolbar disappears together with the calendar
   pane it belongs to - but it is taken out of the flow and lifted onto the
   page's tab strip, whose right-hand side is empty. In its own row it cost a
   full blank line above the scheduler.
   ========================================================================== */
.appointment-overview-toolbar[b-ei6y3s2p4l] {
  position: absolute;
  top: -2.25rem;
  right: var(--bs-gutter-x, 1.5rem);
  z-index: 1;
  display: flex;
  justify-content: flex-end;
}

/* ==========================================================================
   Splitter body height
   --------------------------------------------------------------------------
   Purpose:
   Gives the splitter (and the loading panel wrapping it) the page height it
   needs; without it the panes collapse to their content and the separators
   cannot be dragged.
   ========================================================================== */
.appointment-overview-body[b-ei6y3s2p4l] {
  height: calc(100dvh - 144px);
}

[b-ei6y3s2p4l] .appointment-overview-loading {
  height: 100%;
}

/* ==========================================================================
   Resource sidebar checkbox border reset
   --------------------------------------------------------------------------
   Purpose:
   Removes the default DevExpress checkbox border inside the resource selection
   sidebar. This keeps the resource filter checkboxes visually cleaner and
   better aligned with the custom sidebar styling. The pane's width itself comes
   from the splitter's MinSize / MaxSize, not from a rule here.
   ========================================================================== */
[b-ei6y3s2p4l] .resource-selection-sidebar {
  font-size: 15px;
  font-weight: normal;
}
[b-ei6y3s2p4l] .resource-selection-sidebar .dxbl-checkbox-check-element {
  border: none !important;
}

/* ==========================================================================
   Scheduler and TreeView height
   --------------------------------------------------------------------------
   Purpose:
   Forces the scheduler and resource TreeView containers to fill their parent
   height so the planning board layout remains stable.
   ========================================================================== */
[b-ei6y3s2p4l] .dxbl-scheduler,
[b-ei6y3s2p4l] .dxbl-treeview-items-container {
  height: 100%;
}
[b-ei6y3s2p4l] .dxbl-treeview {
  height: 100%;
}

/* ==========================================================================
   Resource tree pane scrolling
   --------------------------------------------------------------------------
   Purpose:
   Prevents the full resource pane from scrolling and confines scrolling to the
   inner tree area.
   ========================================================================== */
[b-ei6y3s2p4l] .tree-pane {
  display: flex;
  height: 100%;
  overflow: hidden;
  flex-direction: column;
}
[b-ei6y3s2p4l] .tree-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}

/* ==========================================================================
   Resource TreeView item spacing
   --------------------------------------------------------------------------
   Purpose:
   Adds vertical spacing between TreeView resource items and keeps expand/collapse
   buttons compact.
   ========================================================================== */
[b-ei6y3s2p4l] .dxbl-treeview-item-content {
  margin-top: 10px;
}
[b-ei6y3s2p4l] .dxbl-treeview-item-content > .dxbl-btn {
  padding: 5px;
}
[b-ei6y3s2p4l] .dxbl-treeview-item-container > .dxbl-treeview-item-text-container {
  padding-left: 0;
  font-weight: 600;
}

/* ==========================================================================
   Plan board grid height
   --------------------------------------------------------------------------
   Purpose:
   Limits grids inside the plan board so they do not consume too much vertical
   space.
   ========================================================================== */
[b-ei6y3s2p4l] .plan-board-container .dxbl-grid {
  max-height: 30dvh;
}

/* ==========================================================================
   Scheduler container styling
   --------------------------------------------------------------------------
   Purpose:
   Adds a subtle border, radius and shadow around the scheduler so it appears
   as a distinct planning surface.
   ========================================================================== */
[b-ei6y3s2p4l] .dxbl-scheduler {
  border: 1px solid #ddd;
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* ==========================================================================
   Scheduler appointment card styling
   --------------------------------------------------------------------------
   Purpose:
   Restores custom appointment-card styling with a white background, subtle
   border, small radius and soft shadow.
   ========================================================================== */
[b-ei6y3s2p4l] .dxbl-sc-apt-container.dxbl-sc-apt-template {
  font-size: 1.2em;
  background: #fff;
  background-color: #fff;
  background-clip: border-box;
  border: 1px solid #aeaeae;
  border: 1px solid rgba(174, 174, 174, 0.12);
  border-radius: 2px;
  box-shadow: 1px 1px 20px 0 #cbc7c7;
  box-shadow: 1px 1px 20px 0 rgba(203, 199, 199, 0.5);
}
[b-ei6y3s2p4l] .dxbl-sc-apt-container:has(> div.conv-apt-conflict) {
  background: repeating-linear-gradient(45deg, rgba(255, 0, 0, 0.2470588235) 0 5px, transparent 5px 20px);
}

/* ==========================================================================
   Flex utility
   --------------------------------------------------------------------------
   Purpose:
   Provides a small local utility class for flex layout.
   ========================================================================== */
.flex[b-ei6y3s2p4l] {
  display: flex;
}

/* ==========================================================================
   Scheduler drop target sizing
   --------------------------------------------------------------------------
   Purpose:
   Allows the scheduler area to shrink inside a flex/grid layout. Without
   min-width: 0, the scheduler keeps the full width of its resource columns and
   can push outside the viewport, causing page-level horizontal scrolling.
   ========================================================================== */
[b-ei6y3s2p4l] .scheduler-drop-target {
  min-width: 0;
  max-width: 100%;
  flex: 1 1 auto;
  overflow: hidden;
}

/* ==========================================================================
   Scheduler drag hover target
   --------------------------------------------------------------------------
   Purpose:
   Highlights the scheduler cell currently under a dragged item with an outline
   and subtle striped background.
   ========================================================================== */
[b-ei6y3s2p4l] .scheduler-drop-hover {
  outline: 2px solid var(--bs-primary);
  outline-offset: -2px;
  background-image: repeating-linear-gradient(45deg, rgba(13, 110, 253, 0.08) 0, rgba(13, 110, 253, 0.08) 6px, rgba(13, 110, 253, 0) 6px, rgba(13, 110, 253, 0) 12px);
}

/* ==========================================================================
   Scheduler drag-and-drop cursors
   --------------------------------------------------------------------------
   Purpose:
   Shows grab/grabbing cursors for external drag sources used with the
   scheduler.
   ========================================================================== */
[b-ei6y3s2p4l] #external-drag-source:active {
  cursor: grabbing;
}
[b-ei6y3s2p4l] .drag-source {
  cursor: grab !important;
}

/* ==========================================================================
   Scheduler popup header layout
   --------------------------------------------------------------------------
   Purpose:
   Lays out popup header content horizontally with truncating text, a right
   aligned loading indicator and white tool buttons.
   ========================================================================== */
.popup-header-container[b-ei6y3s2p4l] {
  display: flex;
  flex-direction: row;
  align-items: center;
  width: 100%;
}
.popup-header-container .popup-text-header[b-ei6y3s2p4l] {
  margin-right: auto;
  overflow: hidden;
  color: #212529;
  text-overflow: ellipsis;
  white-space: nowrap;
  align-content: center;
  flex-shrink: 1;
}
.popup-header-container[b-ei6y3s2p4l]  .popup-close-button {
  color: #6c757d;
  margin-left: 0.5rem;
}

/* ==========================================================================
   Scheduler appointment form footer
   --------------------------------------------------------------------------
   Purpose:
   Lays out the appointment form action buttons (Save / Close / Delete) in a
   bottom footer row, aligned with the other dialogs in the application.
   ========================================================================== */
.appointment-form-footer[b-ei6y3s2p4l] {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  padding-top: 0.75rem;
  border-top: 1px solid #dee2e6;
}
.appointment-form-footer .appointment-footer-actions-wrap[b-ei6y3s2p4l] {
  margin-left: auto;
  display: inline-flex;
}
.appointment-form-footer[b-ei6y3s2p4l]  .appointment-footer-actions {
  margin-left: auto;
}
.appointment-form-footer[b-ei6y3s2p4l]  .dxbl-loading-panel {
  display: inline-flex;
}
.appointment-form-footer[b-ei6y3s2p4l]  .dxbl-loading-panel .dxbl-loading-panel-target-content {
  display: flex;
  gap: 0.5rem;
}

/* ==========================================================================
   Scheduler form item icon alignment
   --------------------------------------------------------------------------
   Purpose:
   Repositions labels for scheduler FormLayout items that include an icon so the
   caption aligns visually with the input content.
   ========================================================================== */
[b-ei6y3s2p4l] dxbl-form-layout-item.dxbl-sc-fl-item-with-icon {
  position: relative;
}
[b-ei6y3s2p4l] dxbl-form-layout-item.dxbl-sc-fl-item-with-icon label {
  position: absolute;
  left: 25px;
}

/* ==========================================================================
   Timeline horizontal resource caption — single line
   --------------------------------------------------------------------------
   Purpose:
   Keeps horizontally-oriented resource captions on a single line so each
   resource row matches the appointment-grid row height. Long names that wrap
   to multiple lines make the resource caption column taller than the
   appointment grid, which breaks row alignment further down the timeline.
   Scoped to the timeline so other views keep their resource-header layout.
   ========================================================================== */
[b-ei6y3s2p4l] .dxbl-sc-timeline .resource-color-wrapper {
  display: flex;
  align-items: center;
  gap: 0.25rem;
  min-width: 0;
}
[b-ei6y3s2p4l] .dxbl-sc-timeline .resource-color-wrapper .resource-color {
  flex: 0 0 auto;
}
[b-ei6y3s2p4l] .dxbl-sc-timeline .resource-color-wrapper label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* /Components/Pages/Appointment/Templates/AppointmentAllDayTemplate.razor.rz.scp.css */
.dxsc-apt-content[b-chppsvto6t] {
  background: white;
  background-color: #ffffff;
  background-clip: border-box;
  border: 1px solid #aeaeae;
  border: 1px solid rgba(174, 174, 174, 0.12);
  border-radius: 2px;
  font-size: 1.2em;
  box-shadow: 1px 1px 20px 0 #cbc7c7;
  box-shadow: 1px 1px 20px 0 rgba(203, 199, 199, 0.5);
}

.dxsc-apt-status[b-chppsvto6t] {
  top: 0%;
  height: 100%;
}

.badge[b-chppsvto6t] {
  font-size: 1em;
  background: #e5e5e5;
  border-radius: 3px;
}
/* /Components/Pages/Appointment/Templates/AppointmentOneTimeTemplate.razor.rz.scp.css */
.dxsc-apt-status[b-91dkmds2m8] {
  top: 0%;
  height: 100%;
}

.dxbs-sc-apt-subject[b-91dkmds2m8] {
  font-size: 1em;
  font-weight: 500;
}

.dxbs-sc-apt-description[b-91dkmds2m8] {
  opacity: 1;
  font-size: 0.85em;
  color: #6c757d;
}

.dxbs-sc-apt-time[b-91dkmds2m8] {
  opacity: 1;
  margin-bottom: 0;
}

.dxbs-sc-apt-time > span[b-91dkmds2m8] {
  font-size: 0.85em;
  background: transparent;
  border-radius: 0;
  font-weight: 400;
  padding: 0;
}

.dxsc-content-wrapper[b-91dkmds2m8] {
  position: relative;
  padding: 2px 6px 2px 8px;
  overflow: hidden;
  line-height: 1.25;
}
.dxsc-content-wrapper .appointment-warning[b-91dkmds2m8] {
  color: red;
  position: absolute;
  top: 0;
  right: 0;
}
/* /Components/Pages/Appointment/Templates/OverviewOptions.razor.rz.scp.css */
.appointment-options-container[b-k67kd6bqrk] {
  padding-left: 30px;
  display: flex;
}

@media (max-width: 1699px) {
  .appointment-options-container[b-k67kd6bqrk] {
    display: none; /* Hide the container when width is below 1700 pixels */
  }
}
[b-k67kd6bqrk].appointment-options-workweekdays > .dxbl-checkbox,
.appointment-options-grouptype[b-k67kd6bqrk] {
  display: flex;
  align-items: center;
  justify-content: center;
  padding-right: 15px;
  margin-top: 4px;
}

.appointment-options-grouptype[b-k67kd6bqrk] {
  gap: 10px;
}
.appointment-options-grouptype[b-k67kd6bqrk] > .dxbl-text-edit {
  padding: 1.5px;
  width: 10dvw;
}
/* /Components/Pages/Appointment/Templates/PlanBoard.razor.rz.scp.css */
:root[b-nnasiq4tp9] {
  --cv-primary: #f07e26;
  --cv-primary-rgb: 240, 126, 38;
  --cv-primary-dark: #ca6510;
  --cv-secondary: #f1f1f1;
  --cv-text-primary: #000000;
  --cv-text-secondary: #7e7e7e;
  --bs-primary: var(--cv-primary);
  --bs-danger-rgb: rgb(232, 17, 35);
  --dxbl-fl-item-spacing-x: 1.25rem;
  --dxbl-fl-item-spacing-y: 0.5rem;
  --grid-out-of-stock: #ff121273;
  --grid-out-of-stock-hover: #ff1212b8;
  --cv-icon-muted: #9c9c9c;
  --cv-icon-muted-dark: #565656;
  --cv-primary-brand: #ba580d;
  --cv-icon-orange: #f47b20;
  --cv-messagebox-btn-primary: #fd7e14;
  --cv-messagebox-btn-secondary-text: #343a40;
  --cv-messagebox-btn-secondary-border: #495057;
  --cv-status-grey: #b9b9b9;
  --cv-status-success: #25b315;
  --cv-status-danger: #c92600;
  --cv-status-warning: #ffa700;
  --cv-status-info: #1560bd;
  --cv-status-dark-blue: #191970;
  --cv-status-yellow: #f6dd29;
  --cv-status-red: #e50000;
  --cv-status-dark-red: #720004;
  --cv-kpi-danger-accent: #e15759;
  --cv-kpi-positive: #28a745;
  --cv-kpi-negative: #dc3545;
  --cv-grid-row-invalid: #e93142;
  --cv-border: #d6d6d6;
  --cv-border-strong: #8f8f8f;
  --cv-border-muted: #b7b7b7;
  --cv-border-panel: #e4e6eb;
  --cv-border-section: #eceef1;
  --cv-border-faint: #f0f1f3;
  --cv-border-input: #ced4da;
  --cv-surface-muted: #eeeeee;
  --cv-surface-subtle: #f8f9fa;
  --cv-surface-icon-bg: #ececec;
  --cv-text-heading: #2f3437;
  --cv-text-dark: #333333;
  --cv-text-muted: #6c757d;
  --cv-text-subtle: #6f6f6f;
  --cv-popover-text: #303030;
  /* Conditional messages (NoticeBanner): a tinted surface with dark, readable text - the same three
     states everywhere, so a warning in a popup reads the same as a warning on a page. */
  --cv-notice-info-bg: #cff4fc;
  --cv-notice-info-border: #b6effb;
  --cv-notice-info-fg: #055160;
  --cv-notice-warning-bg: #fff3cd;
  --cv-notice-warning-border: #ffecb5;
  --cv-notice-warning-fg: #664d03;
  --cv-notice-error-bg: #f8d7da;
  --cv-notice-error-border: #f5c2c7;
  --cv-notice-error-fg: #842029;
}

/* ==========================================================================
   Plan board container
   --------------------------------------------------------------------------
   Purpose:
   Makes the plan board fill the available width and height of its parent.
   ========================================================================== */
.plan-board-container[b-nnasiq4tp9] {
  width: 100%;
  height: 100%;
}

/* ==========================================================================
   Slim TreeView styling
   --------------------------------------------------------------------------
   Purpose:
   Makes the DevExpress TreeView more compact by reducing font size, vertical
   padding and item indentation.
   ========================================================================== */
[b-nnasiq4tp9] .slim-tree {
  height: 100%;
}
[b-nnasiq4tp9] .slim-tree.dxbl-treeview {
  --dxbl-treeview-font-size: 0.8125rem;
  --dxbl-treeview-text-padding-y: 0.1rem;
  --dxbl-treeview-item-content-indent: 0.75rem;
}

/* ==========================================================================
   Details pane
   --------------------------------------------------------------------------
   Purpose:
   Adds consistent spacing around the detail content shown next to the plan
   board or selected work order.
   ========================================================================== */
.details-pane[b-nnasiq4tp9] {
  padding: 0.75rem;
}

/* ==========================================================================
   Work order header
   --------------------------------------------------------------------------
   Purpose:
   Aligns the work order number and name on one line with compact spacing.
   ========================================================================== */
.wo-header[b-nnasiq4tp9] {
  display: flex;
  gap: 0.5rem;
  align-items: baseline;
  margin-bottom: 0.5rem;
}

/* ==========================================================================
   Work order number
   --------------------------------------------------------------------------
   Purpose:
   Emphasizes the work order number in the detail header.
   ========================================================================== */
.wo-number[b-nnasiq4tp9] {
  font-weight: 600;
}

/* ==========================================================================
   Work order name
   --------------------------------------------------------------------------
   Purpose:
   Displays the work order name as secondary information next to the number.
   ========================================================================== */
.wo-name[b-nnasiq4tp9] {
  color: #666;
}

/* ==========================================================================
   Work order details grid
   --------------------------------------------------------------------------
   Purpose:
   Displays work order properties in a responsive two-column grid with compact
   row and column spacing.
   ========================================================================== */
.wo-details-grid[b-nnasiq4tp9] {
  display: grid;
  grid-template-columns: repeat(2, minmax(160px, 1fr));
  gap: 0.5rem 1rem;
}

/* ==========================================================================
   Detail label
   --------------------------------------------------------------------------
   Purpose:
   Gives labels in detail rows a medium font weight and small spacing before
   their value.
   ========================================================================== */
.label[b-nnasiq4tp9] {
  margin-right: 0.25rem;
  font-weight: 500;
}

/* ==========================================================================
   Pre-wrapped text
   --------------------------------------------------------------------------
   Purpose:
   Preserves line breaks and whitespace for multiline text fields.
   ========================================================================== */
.pre-wrap[b-nnasiq4tp9] {
  white-space: pre-wrap;
}

/* ==========================================================================
   Empty state text
   --------------------------------------------------------------------------
   Purpose:
   Shows empty-state messages in a muted color.
   ========================================================================== */
.empty-state[b-nnasiq4tp9] {
  color: #999;
}

/* ==========================================================================
   Map pane
   --------------------------------------------------------------------------
   Purpose:
   Adds spacing around the map area and lets it fill the available height.
   ========================================================================== */
.map-pane[b-nnasiq4tp9] {
  height: 100%;
  padding: 0.5rem;
}

/* ==========================================================================
   Map placeholder
   --------------------------------------------------------------------------
   Purpose:
   Creates a flexible placeholder surface for map content when a real map is
   not available or is still loading.
   ========================================================================== */
.map-placeholder[b-nnasiq4tp9] {
  display: flex;
  height: 100%;
  flex-direction: column;
  border-radius: 6px;
  overflow: hidden;
}

/* ==========================================================================
   Map title
   --------------------------------------------------------------------------
   Purpose:
   Emphasizes the map title text.
   ========================================================================== */
.map-title[b-nnasiq4tp9] {
  font-weight: 600;
}

/* ==========================================================================
   Map address
   --------------------------------------------------------------------------
   Purpose:
   Displays the map address as secondary text.
   ========================================================================== */
.map-address[b-nnasiq4tp9] {
  color: #555;
}

/* ==========================================================================
   Hidden grid detail expand button
   --------------------------------------------------------------------------
   Purpose:
   Hides the DevExpress Grid expand button for rows where the detail button
   should not be visible, while preserving layout space.
   ========================================================================== */
[b-nnasiq4tp9] .hideDetailButton .dxbl-grid-expand-button-cell .dxbl-grid-expand-button {
  visibility: hidden;
}

/* ==========================================================================
   Hidden grid header row
   --------------------------------------------------------------------------
   Purpose:
   Hides the DevExpress Grid header row while keeping the grid structure intact.
   Useful for compact inline grids where column headers are unnecessary.
   ========================================================================== */
[b-nnasiq4tp9] .dxbl-grid-header-row {
  display: block;
  height: 0;
  visibility: hidden;
}

/* ==========================================================================
   Google Maps info window header
   --------------------------------------------------------------------------
   Purpose:
   Hides the default Google Maps info window chrome/header row.
   ========================================================================== */
[b-nnasiq4tp9] .gm-style-iw-chr {
  display: none;
}

/* ==========================================================================
   Google Maps info window spacing
   --------------------------------------------------------------------------
   Purpose:
   Adds top padding to the Google Maps info window content after hiding the
   default header area.
   ========================================================================== */
[b-nnasiq4tp9] .gm-style-iw.gm-style-iw-c {
  padding-top: 12px !important;
  padding-bottom: 12px !important;
  padding-inline-end: 12px !important;
}

/* ==========================================================================
   Google Maps info window scrollbars
   --------------------------------------------------------------------------
   Purpose:
   The info window body ships with an inline "overflow: scroll", which renders
   permanently visible scrollbar arrows on Windows classic scrollbars even
   though the single-line address fits. Hide the overflow entirely.
   ========================================================================== */
[b-nnasiq4tp9] .gm-style-iw-d {
  overflow: hidden !important;
}

/* ==========================================================================
   Drag source behavior
   --------------------------------------------------------------------------
   Purpose:
   Makes scheduler/grid drag sources behave like draggable elements and prevents
   accidental text selection while dragging.
   ========================================================================== */
[b-nnasiq4tp9] .drag-source {
  user-select: none;
  -webkit-user-drag: element;
  -webkit-user-select: none;
}
/* /Components/Pages/Appointment/Templates/ResourceHeaderTemplate.razor.rz.scp.css */
.resource-color-wrapper[b-wjokn1qvsc] {
  display: block;
}

.resource-color[b-wjokn1qvsc] {
  display: inline-block;
  width: 1rem;
  height: 1rem;
  border-radius: 0.125rem;
  position: relative;
  top: 2px;
}

label[b-wjokn1qvsc] {
  display: inline-block;
}
/* /Components/Pages/Appointment/Templates/ScheduleInsightsIndicator.razor.rz.scp.css */
/* The edit form's schedule-insights callouts (the overlap and capacity warnings, then the split opt-in banner),
   stacked with a small gap. The callouts themselves are the shared NoticeBanner control, so they match the reschedule
   dialogs. The block sits at the top of the form, so the warnings are the first thing the planner sees; the bottom
   margin keeps it clear of the first field under it. */
.appointment-schedule-insights[b-7nu0wa7eok] {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
  /* The per-resource lines under a warning's status line ("Jan is al ingepland op ..."): a compact bulleted list,
     one conflict per line, so several conflicts stay scannable. */
}
.appointment-schedule-insights__lines[b-7nu0wa7eok] {
  margin: 0.25rem 0 0;
  padding-left: 1.25rem;
}
.appointment-schedule-insights__lines li + li[b-7nu0wa7eok] {
  margin-top: 0.15rem;
}

/* The appointments the split would generate, one row each, framed and worded like the reschedule dialogs' change list
   (.reschedule-dialog__row): leading calendar icon, bold title, the window in the brand accent. The container owns one
   set of column tracks (icon | title | window | hours) sized across ALL rows via subgrid, so every cell in a column
   starts at the same x and the header captions sit exactly above their cells. A long range generates many rows (a
   multi-week appointment easily 10+): the container scrolls within a cap while the sticky header and total row stay
   in view. */
.appointment-split-preview[b-7nu0wa7eok] {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) max-content max-content;
  border: 1px solid var(--cv-border-section);
  border-radius: 0.5rem;
  max-height: 18rem;
  overflow-y: auto;
  /* Column header (APPOINTMENT | DATES | HOURS), mirroring .reschedule-dialog__head so every planning table reads
     the same. Pinned to the top while the rows scroll. */
  /* Booked hours per generated appointment: informative, not the row's headline. Right-aligned so the values stack
     into a column that the total below closes, like a quotation's amount column. */
  /* The closing total row: label right next to the summed hours, both under the hours column, quotation-style.
     Pinned to the bottom while the rows scroll, so the total stays in view. */
}
.appointment-split-preview__head[b-7nu0wa7eok], .appointment-split-preview__row[b-7nu0wa7eok] {
  grid-column: 1/-1;
  display: grid;
  grid-template-columns: subgrid;
  align-items: center;
  column-gap: 0.7rem;
  padding: 0.5rem 0.75rem;
}
.appointment-split-preview__head[b-7nu0wa7eok] {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 0.45rem 0.75rem;
  background: var(--cv-surface-subtle);
  border-bottom: 1px solid var(--cv-border-section);
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--cv-text-secondary);
}
.appointment-split-preview__head-item[b-7nu0wa7eok] {
  grid-column: 1/3;
}
.appointment-split-preview__head-window[b-7nu0wa7eok] {
  grid-column: 3;
}
.appointment-split-preview__head-duration[b-7nu0wa7eok] {
  grid-column: 4;
  text-align: right;
}
.appointment-split-preview__row[b-7nu0wa7eok] {
  background: #fff;
  font-size: 0.8rem;
}
.appointment-split-preview__row + .appointment-split-preview__row[b-7nu0wa7eok] {
  border-top: 1px solid var(--cv-border-section);
}
.appointment-split-preview__icon[b-7nu0wa7eok] {
  font-size: 1.05rem;
  color: var(--cv-primary);
}
.appointment-split-preview__title[b-7nu0wa7eok] {
  font-weight: 700;
  color: var(--cv-text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.appointment-split-preview__window[b-7nu0wa7eok] {
  font-weight: 700;
  color: var(--cv-primary);
  white-space: nowrap;
}
.appointment-split-preview__duration[b-7nu0wa7eok] {
  font-size: 0.75rem;
  color: var(--cv-text-secondary);
  white-space: nowrap;
  text-align: right;
}
.appointment-split-preview__row--total[b-7nu0wa7eok] {
  position: sticky;
  bottom: 0;
  z-index: 1;
  border-top: 1px solid var(--cv-border-section);
  background: var(--cv-surface-subtle);
}
.appointment-split-preview__total-label[b-7nu0wa7eok] {
  grid-column: 1/4;
  text-align: right;
  font-weight: 700;
  color: var(--cv-text-primary);
}
.appointment-split-preview__total-value[b-7nu0wa7eok] {
  grid-column: 4;
  text-align: right;
  font-weight: 700;
  color: var(--cv-primary);
  white-space: nowrap;
}
/* /Components/Pages/Authentication/ForgotPassword.razor.rz.scp.css */
.forgot-password-input-container[b-iex6irhn1x] {
  width: 100%;
  border-radius: 20px;
  background: #f1f1f1;
  padding: 20px;
}

.forgot-password-action-container[b-iex6irhn1x] {
  padding: 5%;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.forgot-password-action-container .back-to-login[b-iex6irhn1x] {
  color: black;
  text-decoration: none;
}
/* /Components/Pages/Authentication/Login.razor.rz.scp.css */
.login-input-container[b-lmdq40nmao] {
  width: 100%;
  border-radius: 20px;
  background: #f1f1f1;
  padding: 20px;
}
.login-input-container .caps-lock-warning[b-lmdq40nmao] {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  margin-top: 0.5rem;
  font-size: 0.875rem;
  color: var(--bs-warning-text-emphasis);
}

.login-action-container[b-lmdq40nmao] {
  padding: 5%;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.login-action-container .password-reminder[b-lmdq40nmao] {
  color: black;
  text-decoration: none;
}
/* /Components/Pages/Authentication/ResetPassword.razor.rz.scp.css */
.reset-password-input-container[b-7oizmtcmyn] {
  width: 100%;
  border-radius: 20px;
  background: #f1f1f1;
  padding: 20px;
}

.reset-password-action-container[b-7oizmtcmyn] {
  padding: 5%;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
}
/* /Components/Pages/Authentication/TwoFactorLogin.razor.rz.scp.css */
.two-factor-login-input-container[b-4q9ld94jtl] {
  width: 100%;
  border-radius: 20px;
  background: #f1f1f1;
  padding: 20px;
}

.two-factor-login-action-container[b-4q9ld94jtl] {
  padding: 5%;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
}
/* /Components/Pages/BillOfMaterial/Popups/BillOfMaterialUploadPopup.razor.rz.scp.css */
#billofmaterial-file-dropzone[b-q631vmseu0] {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 80px;
  flex-direction: row;
  margin-top: 20px !important;
}
#billofmaterial-file-dropzone > *[b-q631vmseu0] {
  margin: 0 5px;
  flex: 0 1 auto;
}
#billofmaterial-file-dropzone .row[b-q631vmseu0] {
  margin: 0 30px;
}

#billofmaterial-file-select-button[b-q631vmseu0] {
  margin-left: 50px !important;
  height: 30px;
  font-size: 13px;
  line-height: 13px;
}

#billofmaterial-file[b-q631vmseu0] {
  display: inline-flex;
}

.col[b-q631vmseu0]  .dxbl-fl {
  margin: 20px 0 !important;
}

.row-spacer[b-q631vmseu0] {
  border-top: 1px solid #e0e0e0;
  padding-top: 5px;
}

.lines-grid[b-q631vmseu0] {
  flex: 1 1 auto;
  min-height: 0;
}
.lines-grid[b-q631vmseu0]  dxbl-grid {
  height: 100%;
  overflow: auto;
}
/* /Components/Pages/BillOfMaterial/Popups/CreateMissingPartsPopup.razor.rz.scp.css */
/* ==========================================================================
   Create missing parts popup
   --------------------------------------------------------------------------
   Purpose:
   The popup's own layout is the shared SelectionSplitLayout; what is left here
   is the lines grid taking the height the header band leaves over.
   ========================================================================== */
.col[b-dax1aj4gfn]  .dxbl-fl {
  margin: 20px 0 !important;
}

.row-spacer[b-dax1aj4gfn] {
  border-top: 1px solid #e0e0e0;
  padding-top: 5px;
}

.lines-grid[b-dax1aj4gfn] {
  flex: 1 1 auto;
  min-height: 0;
}
.lines-grid[b-dax1aj4gfn]  dxbl-grid {
  height: 100%;
  overflow: auto;
}

[b-dax1aj4gfn] .dxbl-upload-button-panel,
[b-dax1aj4gfn] .dxbl-upload-file-btn,
[b-dax1aj4gfn] .dxbl-upload-file-view-icon-container {
  display: none !important;
}
[b-dax1aj4gfn] .dxbl-upload-file-view {
  margin-bottom: 0 !important;
}
[b-dax1aj4gfn] .dxbl-upload-full-width,
[b-dax1aj4gfn] .dxbl-upload-file-list-view {
  padding-top: 0 !important;
}
/* /Components/Pages/Configuration/Overview.razor.rz.scp.css */
.container-fluid[b-l3qvglmvrv] {
  padding-bottom: 30px !important;
}

.category-collection[b-l3qvglmvrv] {
  margin-left: 10px;
}
.category-collection:not(:first-child)[b-l3qvglmvrv] {
  margin-top: 30px;
}
.category-collection .row[b-l3qvglmvrv] {
  gap: 10px;
}

[b-l3qvglmvrv] .bi {
  font-size: 1.1em;
  margin-top: 0.1em;
}
/* /Components/Pages/Configuration/Templates/Category.razor.rz.scp.css */
.category[b-0y6bxwadbu] {
  width: 425px;
  min-height: 112px;
  background-color: #f1f1f1;
  border-radius: 20px;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 20px;
  cursor: pointer;
  transition: background-color 0.15s ease;
}
.category:hover[b-0y6bxwadbu] {
  background-color: #e1e1e1;
}
.category .category-icon[b-0y6bxwadbu] {
  background-color: #fff;
  border-radius: 50%;
  height: 40px;
  min-width: 40px;
  display: flex;
  justify-content: center;
  align-items: center;
}
.category .category-content[b-0y6bxwadbu] {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.category .category-content .category-title[b-0y6bxwadbu] {
  font-size: 17px;
  font-weight: bold;
}
.category .category-content .category-description[b-0y6bxwadbu] {
  font-size: 13px;
  color: #555;
}
/* /Components/Pages/Customer/ContactPersonOverview.razor.rz.scp.css */
.customer-contactperson-overview[b-ugbzupf91o]  .dxbl-drawer-content {
  min-height: calc(100vh - 130px);
}
/* /Components/Pages/Customer/Overview.razor.rz.scp.css */
.two-column-actions[b-90onoddkb4] {
  grid-template-columns: 1fr 1fr;
}

.customer-overview[b-90onoddkb4]  .dxbl-drawer-content {
  min-height: calc(100vh - 130px);
}
/* /Components/Pages/Dashboard/Flyouts/WidgetFormulaFlyout.razor.rz.scp.css */
.formula-container[b-vznjme14ab] {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 10px;
  background-color: #fff;
  border-radius: 8px;
  width: 300px;
}
.formula-container[b-vznjme14ab]  .title {
  font-size: 20px;
  margin-bottom: 40px;
  font-weight: 600;
  text-align: center;
}
.formula-container[b-vznjme14ab]  .title .bi {
  margin-right: 20px;
  font-weight: 600;
  font-size: 1.2em;
}
.formula-container[b-vznjme14ab]  .calculation {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.kpi-title[b-vznjme14ab] {
  display: inline-block;
}
/* /Components/Pages/Dashboard/Overview.razor.rz.scp.css */
[b-h2oxj12mpq] .dashboard-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.5rem 10px;
}

[b-h2oxj12mpq] .dashboard-toolbar-actions {
  display: flex;
  align-items: center;
}

[b-h2oxj12mpq] .dashboard-date-range {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

[b-h2oxj12mpq] .dashboard-widget-toggle {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  z-index: 1;
}

[b-h2oxj12mpq] .dashboard-widget-disabled {
  opacity: 0.4;
  pointer-events: none;
  position: relative;
}

[b-h2oxj12mpq] .dashboard-widget-disabled .dashboard-widget-toggle {
  pointer-events: all;
  opacity: 1;
}

[b-h2oxj12mpq] .dashboard-chart,
[b-h2oxj12mpq] .dashboard-card {
  position: relative;
}

[b-h2oxj12mpq] .dashboard-date-picker {
  width: 160px;
}

[b-h2oxj12mpq] .dashboard-date-separator {
  color: #6c757d;
}

[b-h2oxj12mpq] .dashboard-donuts-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  padding: 0 10px;
}

[b-h2oxj12mpq] .dashboard-cards-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.75rem;
  padding: 0 10px;
  margin-top: 1rem;
  margin-bottom: 1rem;
  align-items: start;
}

[b-h2oxj12mpq] .dashboard-chart {
  overflow: hidden;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  padding: 1rem;
}

@media (max-width: 992px) {
  [b-h2oxj12mpq] .dashboard-donuts-row {
    grid-template-columns: 1fr;
  }
  [b-h2oxj12mpq] .dashboard-cards-grid {
    grid-template-columns: 1fr;
  }
}
[b-h2oxj12mpq] .toolTipHuss {
  margin: 0.75rem;
}
[b-h2oxj12mpq] .toolTipHuss > * {
  width: 100%;
  text-align: center;
}
/* /Components/Pages/Dashboard/Widgets/OutstandingPurchaseOrderValueWidget.razor.rz.scp.css */
.purchase-order-kpi-widget[b-e6adk4anwg] {
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: 1rem;
}

.purchase-order-kpi-header[b-e6adk4anwg] {
  margin-bottom: 1rem;
}

.purchase-order-kpi-title[b-e6adk4anwg] {
  font-size: 1.1rem;
  font-weight: 600;
  margin: 0;
  color: var(--bs-body-color);
}

.purchase-order-kpi-subtitle[b-e6adk4anwg] {
  font-size: 0.8rem;
  color: var(--bs-secondary-color);
}

.purchase-order-kpi-cards[b-e6adk4anwg] {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  flex: 1;
  align-content: flex-start;
}

.purchase-order-kpi-card[b-e6adk4anwg] {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 1rem 1.25rem;
  border-left: 4px solid;
  border-radius: 0.375rem;
  background: var(--bs-tertiary-bg);
  min-width: 160px;
  flex: 1 1 160px;
  max-width: 280px;
}

.purchase-order-kpi-amount[b-e6adk4anwg] {
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--bs-body-color);
}

.purchase-order-kpi-currency[b-e6adk4anwg] {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--bs-secondary-color);
  margin-top: 0.25rem;
}

.purchase-order-kpi-empty[b-e6adk4anwg] {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1;
  color: var(--bs-secondary-color);
  font-size: 1.25rem;
}
/* /Components/Pages/Forecast/Flyouts/FormulaFlyout.razor.rz.scp.css */
[b-ij51rs0l6d] .formula-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 10px;
  background-color: #fff;
  border-radius: 8px;
}

[b-ij51rs0l6d] .title {
  font-size: 20px;
  margin-bottom: 40px;
  font-weight: 600;
  text-align: center;
}

[b-ij51rs0l6d] .title .bi {
  margin-right: 20px;
  font-weight: 600;
  font-size: 1.2em;
}

[b-ij51rs0l6d] .calculation {
  display: flex;
  flex-direction: column;
  align-items: center;
}

[b-ij51rs0l6d] .abbreviation {
  top: -10px;
  position: relative;
  color: #666;
  font-size: 0.8em;
  font-variant: all-small-caps;
}

[b-ij51rs0l6d] .row {
  display: flex;
  justify-content: space-between;
  width: 300px;
}

[b-ij51rs0l6d] .label {
  font-weight: 600;
  color: #333;
  width: 200px;
  font-size: 17px;
}

[b-ij51rs0l6d] .value {
  font-size: 20px;
  color: #333;
  text-align: right;
  width: 100px;
  white-space: nowrap;
}

[b-ij51rs0l6d] .arrow {
  font-size: 40px;
}

[b-ij51rs0l6d] .formula {
  font-family: Cambria, Cochin, Georgia, Times, Times New Roman, serif;
  font-size: 1.2rem;
  line-height: 2;
  text-align: center;
  display: inline-block;
  white-space: nowrap;
  font-style: italic;
}

[b-ij51rs0l6d] .formula-result {
  font-weight: 600;
}

[b-ij51rs0l6d] .formula-row {
  display: flex;
  justify-content: center;
  align-items: baseline;
  gap: 10px;
}

[b-ij51rs0l6d] .formula-number {
  font-weight: 600;
  font-size: 1.5em;
  color: #000;
}

[b-ij51rs0l6d] .operator {
  font-size: 1.6em;
  font-weight: 600;
  font-weight: normal;
  color: #444;
}

[b-ij51rs0l6d] .equals {
  font-size: 1.8em;
  font-weight: 600;
  margin: 0 5px;
  color: #000;
}

[b-ij51rs0l6d] .footer {
  width: 100%;
  text-align: center;
  font-size: 0.9em;
  font-style: italic;
  margin-top: 10px;
}
/* /Components/Pages/Forecast/Overview.razor.rz.scp.css */
.nested-overview-container[b-73j82hb3nj] {
  margin-top: 10px;
}

[b-73j82hb3nj] .row-different-project {
  background-color: lightgray;
  opacity: 0.5;
}
/* /Components/Pages/Forecast/Popups/CreatePurchaseOrderPopup.razor.rz.scp.css */
/* ==========================================================================
   Create purchase order from forecast popup
   --------------------------------------------------------------------------
   Purpose:
   The popup's own layout is the shared SelectionSplitLayout; what is left here
   is the lines grid taking the height the header band leaves over, and the
   shortage filter sitting on that band next to the supplier picker.
   ========================================================================== */
.lines-grid[b-t7jcesab0n] {
  flex: 1 1 auto;
  min-height: 0;
}
.lines-grid[b-t7jcesab0n]  dxbl-grid {
  height: 100%;
  overflow: auto;
}

.has-shortage-container[b-t7jcesab0n] {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  padding-bottom: 0.35rem;
}
/* /Components/Pages/Forecast/Templates/NestedLineOverview.razor.rz.scp.css */
@charset "UTF-8";
[b-nrcsgmc913] i.bi-cart-fill,
[b-nrcsgmc913] i.bi-cart-x-fill,
[b-nrcsgmc913] i.bi-exclamation-triangle-fill {
  text-align: right;
  width: 16px;
  max-width: 16px;
  display: inline-block;
  margin-right: 8px !important;
  margin: 0;
  padding: 0 !important;
  position: relative;
}
[b-nrcsgmc913] i.bi-cart-fill::before,
[b-nrcsgmc913] i.bi-cart-x-fill::before,
[b-nrcsgmc913] i.bi-exclamation-triangle-fill::before {
  font-size: 1.2em !important;
  margin: 0 !important;
}

[b-nrcsgmc913] i.bi-cart-fill {
  color: #ffa700 !important;
}

[b-nrcsgmc913] i.bi-cart-x-fill {
  color: #C92600 !important;
}

[b-nrcsgmc913] i.bi-exclamation-triangle-fill {
  top: 1px;
  color: #C92600 !important;
}

[b-nrcsgmc913] .bi-cart-x-fill {
  position: relative;
  left: -1px;
}

[b-nrcsgmc913] .grouped-grid th:first-of-type::after {
  width: 3px;
}
[b-nrcsgmc913] .grouped-grid th {
  position: relative;
  border-left: 3px solid transparent !important;
  width: 3px;
}
[b-nrcsgmc913] .grouped-grid th::after {
  content: "";
  position: absolute;
  left: -3px;
  top: 0;
  bottom: 0;
  width: 1px;
  background-color: var(--dxbl-grid-header-bg, unset);
}
[b-nrcsgmc913] .grouped-grid td {
  border-left: 3px solid transparent;
}
[b-nrcsgmc913] .grouped-grid tr.dxbl-grid-grouped-row {
  border-left: 3px solid orange !important;
}
[b-nrcsgmc913] .grouped-grid tr.dxbl-grid-grouped-row td:first-child::before {
  content: "↪ " !important;
  opacity: 1;
  float: left;
}

.display-status[b-nrcsgmc913] {
  width: 54px;
  display: inline-block;
  padding: 0px;
  margin: 0px;
}

.display-number[b-nrcsgmc913] {
  display: inline-block;
  width: 80px;
}
/* /Components/Pages/InboundShipment/Detail.razor.rz.scp.css */
[b-bmro9ejohl] .dxbl-tag-box > .dxbl-tag:not(:first-child) {
  display: none;
}

[b-bmro9ejohl] .dxbl-grid-footer-row td {
  vertical-align: top !important;
}
[b-bmro9ejohl] .dxbl-grid-footer-row td > div {
  display: inline-table;
  white-space: pre;
}
/* /Components/Pages/Invoice/Detail.razor.rz.scp.css */
[b-p4fjvbhn0k] .dxbl-tag-box > .dxbl-tag:not(:first-child) {
  display: none;
}

[b-p4fjvbhn0k] .dxbl-grid-footer-row td {
  vertical-align: top !important;
}
[b-p4fjvbhn0k] .dxbl-grid-footer-row td > div {
  display: inline-table;
  white-space: pre;
}
/* /Components/Pages/Invoice/Popups/CreateCreditInvoicePopup.razor.rz.scp.css */
/* ==========================================================================
   Create credit invoice popup
   --------------------------------------------------------------------------
   Purpose:
   The popup's own layout is the shared SelectionSplitLayout; what is left here
   is the lines grid taking the height the header band leaves over, plus the
   row rules that keep fully credited lines out of reach.
   ========================================================================== */
.lines-grid[b-c6erceen64] {
  flex: 1 1 auto;
  min-height: 0;
}
.lines-grid[b-c6erceen64]  dxbl-grid {
  height: 100%;
  overflow: auto;
}
.lines-grid[b-c6erceen64]  dxbl-grid .dxbl-grid-empty-row {
  pointer-events: none;
  cursor: not-allowed;
}
.lines-grid[b-c6erceen64]  .non-selectable-row td {
  pointer-events: none;
  cursor: not-allowed;
}
.lines-grid[b-c6erceen64]  .dxbl-grid-selection-cell .row-checkbox {
  pointer-events: auto;
}
/* /Components/Pages/Invoice/Popups/CreatePopup.razor.rz.scp.css */
.editor-button-content[b-x3804esqaz] {
  font-size: 1.2rem;
  width: 25px;
  text-align: center;
}

.amount-layout-group[b-x3804esqaz] {
  padding-bottom: 1em !important;
}

.create-invoice-overview[b-x3804esqaz] {
  display: grid;
  width: 100%;
  grid-template-columns: 1fr auto;
}
.create-invoice-overview .left-column[b-x3804esqaz]  .amount-currency-btn.dxbl-btn.dxbl-btn-outline-secondary.dxbl-text-edit-btn {
  height: auto;
  padding-top: 0;
  padding-bottom: 0;
}
.create-invoice-overview .left-column[b-x3804esqaz]  .invoice-line-grid {
  max-height: 500px;
  height: 100%;
}
.create-invoice-overview .right-column[b-x3804esqaz] {
  width: 280px;
  margin-top: 0.5rem;
  padding-left: calc(var(--dxbl-row-item-spacing-x) * 0.5);
  padding-right: calc(var(--dxbl-row-item-spacing-x) * 0.5);
  max-height: 695px;
}
/* /Components/Pages/Invoice/Popups/PostCalculationPopup.razor.rz.scp.css */
/* ==========================================================================
   Post calculation popup
   --------------------------------------------------------------------------
   Purpose:
   The popup's own layout is the shared SelectionSplitLayout; what is left here
   is the lines grid taking the height the header band leaves over, a width for
   the grouping picker that sits on that band, and the subtotals the popup fills
   the panel's summary band with.
   ========================================================================== */
.lines-grid[b-0pqli0aq9y] {
  flex: 1 1 auto;
  min-height: 0;
}
.lines-grid[b-0pqli0aq9y]  dxbl-grid {
  height: 100%;
  overflow: auto;
}

.grouping-field[b-0pqli0aq9y] {
  flex: 0 1 20rem;
  min-width: 0;
  /* The icon is rendered by the shared Tooltip component, so it is only reachable with ::deep. */
}
.grouping-field[b-0pqli0aq9y]  .grouping-tooltip {
  margin-left: 0.25rem;
}

/* Subtotals of the current selection, in the panel's summary band: label left, value right, the
   total set apart above it. */
.selection-summary[b-0pqli0aq9y] {
  display: flex;
  justify-content: space-between;
  gap: 10px;
}
.selection-summary span:last-child[b-0pqli0aq9y] {
  font-variant-numeric: tabular-nums;
}

.selection-summary-total[b-0pqli0aq9y] {
  margin-top: 4px;
  padding-top: 4px;
  font-weight: 600;
  border-top: 1px solid var(--cv-border-section, #eceef1);
}
/* /Components/Pages/LogViewer/Overview.razor.rz.scp.css */
:root[b-8iho1r3bh7] {
  --cv-primary: #f07e26;
  --cv-primary-rgb: 240, 126, 38;
  --cv-primary-dark: #ca6510;
  --cv-secondary: #f1f1f1;
  --cv-text-primary: #000000;
  --cv-text-secondary: #7e7e7e;
  --bs-primary: var(--cv-primary);
  --bs-danger-rgb: rgb(232, 17, 35);
  --dxbl-fl-item-spacing-x: 1.25rem;
  --dxbl-fl-item-spacing-y: 0.5rem;
  --grid-out-of-stock: #ff121273;
  --grid-out-of-stock-hover: #ff1212b8;
  --cv-icon-muted: #9c9c9c;
  --cv-icon-muted-dark: #565656;
  --cv-primary-brand: #ba580d;
  --cv-icon-orange: #f47b20;
  --cv-messagebox-btn-primary: #fd7e14;
  --cv-messagebox-btn-secondary-text: #343a40;
  --cv-messagebox-btn-secondary-border: #495057;
  --cv-status-grey: #b9b9b9;
  --cv-status-success: #25b315;
  --cv-status-danger: #c92600;
  --cv-status-warning: #ffa700;
  --cv-status-info: #1560bd;
  --cv-status-dark-blue: #191970;
  --cv-status-yellow: #f6dd29;
  --cv-status-red: #e50000;
  --cv-status-dark-red: #720004;
  --cv-kpi-danger-accent: #e15759;
  --cv-kpi-positive: #28a745;
  --cv-kpi-negative: #dc3545;
  --cv-grid-row-invalid: #e93142;
  --cv-border: #d6d6d6;
  --cv-border-strong: #8f8f8f;
  --cv-border-muted: #b7b7b7;
  --cv-border-panel: #e4e6eb;
  --cv-border-section: #eceef1;
  --cv-border-faint: #f0f1f3;
  --cv-border-input: #ced4da;
  --cv-surface-muted: #eeeeee;
  --cv-surface-subtle: #f8f9fa;
  --cv-surface-icon-bg: #ececec;
  --cv-text-heading: #2f3437;
  --cv-text-dark: #333333;
  --cv-text-muted: #6c757d;
  --cv-text-subtle: #6f6f6f;
  --cv-popover-text: #303030;
  /* Conditional messages (NoticeBanner): a tinted surface with dark, readable text - the same three
     states everywhere, so a warning in a popup reads the same as a warning on a page. */
  --cv-notice-info-bg: #cff4fc;
  --cv-notice-info-border: #b6effb;
  --cv-notice-info-fg: #055160;
  --cv-notice-warning-bg: #fff3cd;
  --cv-notice-warning-border: #ffecb5;
  --cv-notice-warning-fg: #664d03;
  --cv-notice-error-bg: #f8d7da;
  --cv-notice-error-border: #f5c2c7;
  --cv-notice-error-fg: #842029;
}

[b-8iho1r3bh7] .lv-level-filter {
  flex: 0 0 auto !important;
  min-width: 140px;
  max-width: 180px;
}

[b-8iho1r3bh7] .lv-date-range {
  flex: 0 1 auto !important;
  min-width: 200px;
  max-width: 280px;
}

[b-8iho1r3bh7] .lv-badge {
  display: inline-block;
  padding: 0.15rem 0.5rem;
  border-radius: 0.25rem;
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  line-height: 1.4;
}

[b-8iho1r3bh7] .lv-badge-error {
  background-color: rgba(232, 17, 35, 0.12);
  color: #c41222;
}

[b-8iho1r3bh7] .lv-badge-warning {
  background-color: rgba(255, 185, 0, 0.15);
  color: #8a6500;
}

[b-8iho1r3bh7] .lv-badge-info {
  background-color: rgba(0, 120, 212, 0.1);
  color: #0063b1;
}

[b-8iho1r3bh7] .lv-badge-debug {
  background-color: rgba(0, 0, 0, 0.06);
  color: var(--cv-text-secondary);
}

[b-8iho1r3bh7] .lv-timestamp {
  font-family: monospace;
  font-size: 0.8rem;
}

[b-8iho1r3bh7] .lv-detail {
  padding: 1rem 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

[b-8iho1r3bh7] .lv-detail-section {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

[b-8iho1r3bh7] .lv-detail-label {
  font-weight: 600;
  font-size: 0.8rem;
  color: var(--cv-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

[b-8iho1r3bh7] .lv-detail-pre {
  margin: 0;
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 0.85rem;
  background-color: var(--cv-secondary);
  padding: 0.75rem;
  border-radius: 0.25rem;
  border: 1px solid #e0e0e0;
  max-height: 300px;
  overflow-y: auto;
}

[b-8iho1r3bh7] .lv-detail-exception {
  color: #c41222;
  background-color: rgba(232, 17, 35, 0.04);
  border-color: rgba(232, 17, 35, 0.15);
}
/* /Components/Pages/OutboundShipment/Detail.razor.rz.scp.css */
[b-l48m3tukyh] .dxbl-tag-box > .dxbl-tag:not(:first-child) {
  display: none;
}

[b-l48m3tukyh] .dxbl-grid-footer-row td {
  vertical-align: top !important;
}
[b-l48m3tukyh] .dxbl-grid-footer-row td > div {
  display: inline-table;
  white-space: pre;
}
/* /Components/Pages/OutboxMessage/Templates/NestedEventOverview.razor.rz.scp.css */
.row[b-dkf0z2885c] {
  margin-top: 20px;
}

.wrap-text[b-dkf0z2885c] {
  text-wrap: auto;
}
/* /Components/Pages/PartGroup/Overview.razor.rz.scp.css */
[b-7a392o0prk] form {
  display: flex;
  flex-direction: column;
}
/* /Components/Pages/Part/Detail.razor.rz.scp.css */
.retrieve-price-container[b-l6ae5m12cw] {
  display: flex;
  gap: 10px;
}
.retrieve-price-container .retrieve-price-button-container[b-l6ae5m12cw] {
  display: flex;
  flex-direction: column;
}
.retrieve-price-container .retrieve-price-button-container i[b-l6ae5m12cw] {
  display: block !important;
}
/* /Components/Pages/Part/SpecificationDetail.razor.rz.scp.css */
[b-knu88svzdg] .dxbl-fl .dxbl-fl-item > .dxbl-fl-ctrl:not(img) {
  display: inline-flex;
}

[b-knu88svzdg] .all-unit-selector-group {
  margin-top: 2em !important;
  margin-right: 0 !important;
}

[b-knu88svzdg] .all-unit-selector {
  width: calc(100% + var(--dxbl-row-item-spacing-x) / 2) !important;
  margin-right: 0 !important;
}

[b-knu88svzdg] .dxbl-text-edit:first-child {
  margin-right: var(--dxbl-row-item-spacing-x);
}

[b-knu88svzdg] .mr-0 {
  margin-right: 0 !important;
}
/* /Components/Pages/Part/Templates/WorkPlanOverview.razor.rz.scp.css */
.sub-assembly-overview[b-jonkhti5lk]  dxbl-grid {
  max-height: 400px;
}
/* /Components/Pages/Planning/Overview.razor.rz.scp.css */
/* /Components/Pages/ProductionOrder/Detail.razor.rz.scp.css */
[b-0u5j5rapvo] .dxbl-tag-box > .dxbl-tag:not(:first-child) {
  display: none;
}

[b-0u5j5rapvo] .dxbl-grid-footer-row td {
  vertical-align: top !important;
}
[b-0u5j5rapvo] .dxbl-grid-footer-row td > div {
  display: inline-table;
  white-space: pre;
}
/* /Components/Pages/ProductionOrder/Overview.razor.rz.scp.css */
.conv.conv-icon-warning[b-7wg2u06fou]::before {
  margin-left: 0.5rem;
}
/* /Components/Pages/ProductionOrder/Popups/CreateWorkOrdersPopup.razor.rz.scp.css */
.button-container[b-tik9lognk4] {
  margin-top: 0.5rem;
}
/* /Components/Pages/ProductionPlan/Detail.razor.rz.scp.css */
[b-ldouhktxnz] .dxbl-tag-box > .dxbl-tag:not(:first-child) {
  display: none;
}

[b-ldouhktxnz] .dxbl-grid-footer-row td {
  vertical-align: top !important;
}
[b-ldouhktxnz] .dxbl-grid-footer-row td > div {
  display: inline-table;
  white-space: pre;
}
/* /Components/Pages/Project/Detail.razor.rz.scp.css */
.tabs-container[b-f16xmujrfx] {
  padding-bottom: 20px;
}

.costs-overview-container[b-f16xmujrfx] {
  margin-top: 10px;
}
/* /Components/Pages/Project/Flyouts/CreateInvoiceFlyout.razor.rz.scp.css */
.content-container[b-k1skralp08] {
  width: 360px;
  min-height: 150px;
}

.add-mode-options[b-k1skralp08] {
  display: flex;
  gap: 2rem;
  align-items: center;
  margin-bottom: 0.75rem;
}

.add-mode-options[b-k1skralp08]  .dxbl-checkbox-radio {
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
}

.add-mode-options[b-k1skralp08]  .dxbl-checkbox.dxbl-checkbox-radio label.dxbl-text {
  min-width: 0;
}

.radio-label[b-k1skralp08] {
  margin-left: 0.375rem;
}
/* /Components/Pages/Project/Flyouts/CreateProductionOrderFlyout.razor.rz.scp.css */
.content-container[b-re646kqxyr] {
  width: 360px;
  min-height: 150px;
}

.add-mode-options[b-re646kqxyr] {
  display: flex;
  gap: 2rem;
  align-items: center;
  margin-bottom: 0.75rem;
}

.add-mode-options[b-re646kqxyr]  .dxbl-checkbox-radio {
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
}

.add-mode-options[b-re646kqxyr]  .dxbl-checkbox.dxbl-checkbox-radio label.dxbl-text {
  min-width: 0;
}

.radio-label[b-re646kqxyr] {
  margin-left: 0.375rem;
}
/* /Components/Pages/Project/Flyouts/CreatePurchaseOrderFlyout.razor.rz.scp.css */
.content-container[b-q30ujgqxjj] {
  width: 360px;
  min-height: 150px;
}

.add-mode-options[b-q30ujgqxjj] {
  display: flex;
  gap: 2rem;
  align-items: center;
  margin-bottom: 0.75rem;
}

.add-mode-options[b-q30ujgqxjj]  .dxbl-checkbox-radio {
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
}

.add-mode-options[b-q30ujgqxjj]  .dxbl-checkbox.dxbl-checkbox-radio label.dxbl-text {
  min-width: 0;
}

.radio-label[b-q30ujgqxjj] {
  margin-left: 0.375rem;
}
/* /Components/Pages/Project/Flyouts/CreateQuotationFlyout.razor.rz.scp.css */
.content-container[b-nm3dkz63l6] {
  width: 360px;
  min-height: 150px;
}

.add-mode-options[b-nm3dkz63l6] {
  display: flex;
  gap: 2rem;
  align-items: center;
  margin-bottom: 0.75rem;
}

.add-mode-options[b-nm3dkz63l6]  .dxbl-checkbox-radio {
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
}

.add-mode-options[b-nm3dkz63l6]  .dxbl-checkbox.dxbl-checkbox-radio label.dxbl-text {
  min-width: 0;
}

.radio-label[b-nm3dkz63l6] {
  margin-left: 0.375rem;
}
/* /Components/Pages/Project/Flyouts/CreateSalesOrderFlyout.razor.rz.scp.css */
.content-container[b-lj9kxb7ef9] {
  width: 360px;
  min-height: 200px;
}

.add-mode-options[b-lj9kxb7ef9] {
  display: flex;
  gap: 2rem;
  align-items: center;
  margin-bottom: 0.75rem;
}

.add-mode-options[b-lj9kxb7ef9]  .dxbl-checkbox-radio {
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
}

.add-mode-options[b-lj9kxb7ef9]  .dxbl-checkbox.dxbl-checkbox-radio label.dxbl-text {
  min-width: 0;
}

.radio-label[b-lj9kxb7ef9] {
  margin-left: 0.375rem;
}
/* /Components/Pages/Project/Flyouts/CreateWorkOrderFlyout.razor.rz.scp.css */
.content-container[b-c7igicz261] {
  width: 360px;
  min-height: 340px;
}

.add-mode-options[b-c7igicz261] {
  display: flex;
  gap: 2rem;
  align-items: center;
  margin-bottom: 0.75rem;
}

.add-mode-options[b-c7igicz261]  .dxbl-checkbox-radio {
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
}

.add-mode-options[b-c7igicz261]  .dxbl-checkbox.dxbl-checkbox-radio label.dxbl-text {
  min-width: 0;
}

.radio-label[b-c7igicz261] {
  margin-left: 0.375rem;
}
/* /Components/Pages/Project/Templates/BudgetTab.razor.rz.scp.css */
.budget-tab-container[b-6uec1c214e] {
  height: 100%;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.budget-tab-container .group-header[b-6uec1c214e] {
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: 8px;
}
.budget-tab-container .group-header .budget-overrun-icon[b-6uec1c214e] {
  font-size: 1rem;
}
.budget-tab-container .budget-content[b-6uec1c214e] {
  display: flex;
  gap: 30px;
  flex-wrap: wrap;
}
.budget-tab-container .budget-chart-section[b-6uec1c214e] {
  flex: 1;
  min-width: 280px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.budget-tab-container .budget-chart-section .chart-tooltip-container[b-6uec1c214e] {
  margin: 0.75rem;
}
.budget-tab-container .budget-details-section[b-6uec1c214e] {
  flex: 1;
  min-width: 280px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 12px;
}
.budget-tab-container .budget-summary-row[b-6uec1c214e] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 0;
  border-bottom: 1px solid #e0e0e0;
}
.budget-tab-container .budget-summary-row:last-child[b-6uec1c214e] {
  border-bottom: none;
}
.budget-tab-container .budget-summary-row .budget-label[b-6uec1c214e] {
  color: #555;
  font-size: 0.9rem;
}
.budget-tab-container .budget-summary-row .budget-value[b-6uec1c214e] {
  font-weight: 600;
  font-size: 0.95rem;
}
.budget-tab-container .budget-total-row[b-6uec1c214e] {
  padding-top: 8px;
  margin-top: 4px;
  border-top: 2px solid #ccc;
  border-bottom: none !important;
}
.budget-tab-container .budget-total-row .budget-label[b-6uec1c214e] {
  font-weight: 600;
  color: #333;
}
.budget-tab-container .budget-progress-container[b-6uec1c214e] {
  margin-top: 8px;
}
.budget-tab-container .budget-progress-container .budget-progress-header[b-6uec1c214e] {
  display: flex;
  justify-content: space-between;
  margin-bottom: 4px;
  font-size: 0.85rem;
  color: #555;
}
.budget-tab-container .budget-progress-container .budget-progress-bar[b-6uec1c214e] {
  height: 8px;
  border-radius: 4px;
  background-color: #e0e0e0;
  overflow: hidden;
}
.budget-tab-container .budget-progress-container .budget-progress-bar .budget-progress-fill[b-6uec1c214e] {
  height: 100%;
  border-radius: 4px;
  transition: width 0.3s ease;
}
.budget-tab-container .budget-progress-container .budget-progress-bar .budget-progress-fill.success[b-6uec1c214e] {
  background-color: rgb(16, 132, 60);
}
.budget-tab-container .budget-progress-container .budget-progress-bar .budget-progress-fill.warning[b-6uec1c214e] {
  background-color: rgb(246, 221, 41);
}
.budget-tab-container .budget-progress-container .budget-progress-bar .budget-progress-fill.danger[b-6uec1c214e] {
  background-color: rgb(229, 0, 0);
}
.budget-tab-container .budget-empty-state[b-6uec1c214e] {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 20px;
  color: #888;
  font-style: italic;
}
/* /Components/Pages/Project/Templates/ChartCountPerStatus.razor.rz.scp.css */
.chart-count-status-container[b-q4n3xmo0kq] {
  margin-top: 15px;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 1rem;
}
.chart-count-status-container .chart-legend-container[b-q4n3xmo0kq] {
  flex: 0 1 300px;
  min-width: 0;
}
.chart-count-status-container .chart-legend-container .chart-legend-items-container[b-q4n3xmo0kq] {
  margin-top: 10px;
}
.chart-count-status-container .chart-container[b-q4n3xmo0kq] {
  flex: 1 1 320px;
  min-width: 0;
  max-width: 400px;
  margin-left: auto;
}
.chart-count-status-container .chart-container .chart-tooltip-container[b-q4n3xmo0kq] {
  margin: 0.75rem;
}
.chart-count-status-container .chart-container .chart-tooltip-container .chart-tooltip-text[b-q4n3xmo0kq] {
  font-weight: 600;
}
/* /Components/Pages/Project/Templates/ContactOverview.razor.rz.scp.css */
.grid-contacts-container[b-e6zkoatmoj] {
  padding: 15px;
  border-radius: 20px;
  height: 100%;
}
/* /Components/Pages/Project/Templates/Information.razor.rz.scp.css */
.information-container[b-g58ivdicb9] {
  padding-top: 20px;
  height: 100%;
  display: flex;
  flex-direction: column;
  gap: 15px;
  width: 99%;
  margin: auto;
}
.information-container .group-header[b-g58ivdicb9] {
  font-weight: 600;
}
.information-container .content[b-g58ivdicb9] {
  background-color: #f1f1f1;
  border-radius: 20px;
  flex-grow: 1;
}
/* /Components/Pages/Project/Templates/LegendItem.razor.rz.scp.css */
.chart-legend-item[b-kmpx6ly1s5] {
  display: flex;
  padding-bottom: 5px;
  padding-top: 5px;
  gap: 10px;
}
.chart-legend-item .color-box[b-kmpx6ly1s5] {
  height: 30px;
  width: 30px;
  border-radius: 10px;
  color: #fff;
  display: flex;
  justify-content: center;
  align-items: center;
}
/* /Components/Pages/Project/Templates/LinkedEntitiesOverview.razor.rz.scp.css */
/* Styles moved to Styles/_devexpress.scss because dropdown popups render outside component scope */
/* /Components/Pages/Project/Templates/NavigationBlock.razor.rz.scp.css */
.navigation-block[b-t6bb049v2x] {
  border: 2px solid #f1f1f1;
  border-radius: 20px;
  width: 23%;
  height: 56px;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 5px;
  cursor: pointer;
}
.navigation-block .count-container[b-t6bb049v2x] {
  flex-basis: 10%;
  display: flex;
  justify-content: center;
  align-items: center;
}
.navigation-block .count-container .count[b-t6bb049v2x] {
  text-align: center;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #f1f1f1;
  height: 36px;
  width: 36px;
  line-height: 36px;
  border-radius: 50%;
  font-weight: 600;
}
.navigation-block .label-container[b-t6bb049v2x] {
  flex-basis: 60%;
  font-weight: 600;
  margin-left: 15px;
}
.navigation-block .label-container .navigation-type[b-t6bb049v2x] {
  color: var(--bs-primary);
}
.navigation-block .actions-container[b-t6bb049v2x] {
  flex-basis: 20%;
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  color: var(--bs-primary);
  font-size: 1rem;
  height: 100%;
  align-items: center;
}
.navigation-block .actions-container.border-left[b-t6bb049v2x] {
  border-left: 1px solid #d0cdcd;
}
.navigation-block .actions-container .action[b-t6bb049v2x] {
  cursor: pointer;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}
/* /Components/Pages/Project/Templates/NavigationOverview.razor.rz.scp.css */
.navigation-container[b-xauwpw18ll] {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin: auto;
}
/* /Components/Pages/Project/Templates/Statistics.razor.rz.scp.css */
.statistics-container[b-meqnp5ux9g] {
  height: stretch;
  display: flex;
  flex-direction: column;
  width: 99%;
  /* Gap of 109px since this block is missing the sub tabs */
  margin: 109px auto auto;
}
.statistics-container .group-header[b-meqnp5ux9g] {
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.5rem;
}
.statistics-container .content[b-meqnp5ux9g] {
  background-color: #f1f1f1;
  border-radius: 20px;
  flex-grow: 1;
  padding: 1rem;
}
/* /Components/Pages/PurchaseOrder/Detail.razor.rz.scp.css */
[b-5cewg2nbdz] .dxbl-tag-box > .dxbl-tag:not(:first-child) {
  display: none;
}

[b-5cewg2nbdz] .dxbl-grid-footer-row td {
  vertical-align: top !important;
}
[b-5cewg2nbdz] .dxbl-grid-footer-row td > div {
  display: inline-table;
  white-space: pre;
}
/* /Components/Pages/PurchaseOrder/Popups/CreateSalesOrderPopup.razor.rz.scp.css */
/* ==========================================================================
   Create sales order from purchase order popup
   --------------------------------------------------------------------------
   Purpose:
   The popup's own layout is the shared SelectionSplitLayout; all that is left
   here is letting the lines grid take the height the header band leaves over.
   ========================================================================== */
.lines-grid[b-6tytgx7i2x] {
  flex: 1 1 auto;
  min-height: 0;
}
.lines-grid[b-6tytgx7i2x]  dxbl-grid {
  height: 100%;
  overflow: auto;
}
/* /Components/Pages/PurchaseOrder/Popups/LineSelectionPopup.razor.rz.scp.css */
/* ==========================================================================
   Purchase order line selection popup
   --------------------------------------------------------------------------
   Purpose:
   The popup's own layout is the shared SelectionSplitLayout; what is left here
   is the lines grid taking the height the header band leaves over, plus the
   row rules that keep lines without a shippable quantity out of reach.
   ========================================================================== */
.lines-grid[b-t2tkizq5wo] {
  flex: 1 1 auto;
  min-height: 0;
}
.lines-grid[b-t2tkizq5wo]  dxbl-grid {
  height: 100%;
  overflow: auto;
}
.lines-grid[b-t2tkizq5wo]  dxbl-grid .dxbl-grid-empty-row {
  pointer-events: none;
  cursor: not-allowed;
}
.lines-grid[b-t2tkizq5wo]  .non-selectable-row td {
  pointer-events: none;
  cursor: not-allowed;
}
.lines-grid[b-t2tkizq5wo]  .dxbl-grid-selection-cell .row-checkbox {
  pointer-events: auto;
}

[b-t2tkizq5wo] .delivery-location-dropdown {
  min-width: 250px;
}
/* /Components/Pages/QueueMonitor/Overview.razor.rz.scp.css */
.qm-summary-card[b-t2erz1gm8d] {
  background: var(--bs-body-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: 0.5rem;
  padding: 1.25rem;
  text-align: center;
}

.qm-summary-value[b-t2erz1gm8d] {
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1.2;
}

.qm-summary-label[b-t2erz1gm8d] {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--bs-secondary-color);
  margin-top: 0.25rem;
}

.qm-queue-card[b-t2erz1gm8d] {
  background: var(--bs-body-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: 0.5rem;
  padding: 1rem;
  height: 100%;
  transition: border-color 0.2s;
}

.qm-queue-card-active[b-t2erz1gm8d] {
  border-color: var(--bs-success);
}

.qm-queue-description[b-t2erz1gm8d] {
  font-size: 0.75rem;
  line-height: 1.4;
}

.qm-queue-stats[b-t2erz1gm8d] {
  display: flex;
  gap: 1.5rem;
  margin-top: 0.5rem;
}

.qm-queue-stat[b-t2erz1gm8d] {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.125rem;
}
.qm-queue-stat > span[b-t2erz1gm8d] {
  font-size: 0.9375rem;
  font-weight: 600;
}
.qm-queue-stat > small[b-t2erz1gm8d] {
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.qm-queue-meta[b-t2erz1gm8d] {
  display: flex;
  gap: 1rem;
  border-top: 1px solid var(--bs-border-color);
  padding-top: 0.5rem;
}
.qm-queue-meta > small[b-t2erz1gm8d] {
  display: flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.75rem;
}

.qm-type-badge[b-t2erz1gm8d] {
  font-size: 0.625rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.125rem 0.375rem;
  border-radius: 0.25rem;
  background-color: var(--bs-tertiary-bg);
  color: var(--bs-secondary-color);
  font-weight: 600;
  line-height: 1;
}

.qm-relation-pill[b-t2erz1gm8d] {
  display: inline-flex;
  align-items: center;
  font-size: 0.5625rem;
  font-weight: 600;
  padding: 0.0625rem 0.375rem;
  border-radius: 1rem;
  line-height: 1.4;
  white-space: nowrap;
}

.qm-relation-feeds[b-t2erz1gm8d] {
  background-color: var(--bs-info-bg-subtle);
  color: var(--bs-info-text-emphasis);
  border: 1px solid var(--bs-info-border-subtle);
}

.qm-relation-consumes[b-t2erz1gm8d] {
  background-color: var(--bs-warning-bg-subtle);
  color: var(--bs-warning-text-emphasis);
  border: 1px solid var(--bs-warning-border-subtle);
}

.qm-trigger-dropdown[b-t2erz1gm8d] {
  min-width: 12rem;
}

.qm-spin[b-t2erz1gm8d] {
  animation: qm-spin-b-t2erz1gm8d 1s linear infinite;
}

@keyframes qm-spin-b-t2erz1gm8d {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.qm-indicator[b-t2erz1gm8d] {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: var(--bs-secondary);
  flex-shrink: 0;
}

.qm-indicator-active[b-t2erz1gm8d] {
  background-color: var(--bs-success);
  box-shadow: 0 0 6px var(--bs-success);
  animation: qm-pulse-b-t2erz1gm8d 1.5s ease-in-out infinite;
}

.qm-event-grid[b-t2erz1gm8d] {
  max-height: 400px;
  overflow-y: auto;
}

.qm-detail-body[b-t2erz1gm8d] {
  padding: 0.5rem 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}

.qm-detail-row[b-t2erz1gm8d] {
  display: flex;
  gap: 0.5rem;
  align-items: baseline;
  font-size: 0.75rem;
  line-height: 1.4;
}

.qm-detail-key[b-t2erz1gm8d] {
  font-weight: 600;
  color: var(--bs-secondary-color);
  white-space: nowrap;
  min-width: 5.5rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  font-size: 0.625rem;
}
.qm-detail-key[b-t2erz1gm8d]::after {
  content: ":";
}

.qm-detail-value[b-t2erz1gm8d] {
  color: var(--bs-body-color);
  word-break: break-word;
}

@keyframes qm-pulse-b-t2erz1gm8d {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.4;
  }
}
.qm-connecting[b-t2erz1gm8d] {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 50vh;
  gap: 1.25rem;
}

.qm-heartbeat-icon[b-t2erz1gm8d] {
  width: 200px;
  height: 36px;
}

.qm-heartbeat-line[b-t2erz1gm8d] {
  stroke-dasharray: 600;
  stroke-dashoffset: 600;
  animation: qm-heartbeat-draw-b-t2erz1gm8d 3s ease-in-out infinite;
}

.qm-heartbeat-scanline[b-t2erz1gm8d] {
  animation: qm-scanline-b-t2erz1gm8d 2.4s linear infinite;
}

.qm-connecting-text[b-t2erz1gm8d] {
  font-size: 0.8125rem;
  letter-spacing: 0.03em;
}

@keyframes qm-heartbeat-draw-b-t2erz1gm8d {
  0% {
    stroke-dashoffset: 600;
    opacity: 0.1;
  }
  40% {
    opacity: 0.35;
  }
  50% {
    stroke-dashoffset: 0;
    opacity: 0.5;
  }
  60% {
    opacity: 0.35;
  }
  100% {
    stroke-dashoffset: -600;
    opacity: 0.1;
  }
}
@keyframes qm-scanline-b-t2erz1gm8d {
  0% {
    transform: translateX(0);
    opacity: 0;
  }
  5% {
    opacity: 0.5;
  }
  50% {
    opacity: 0.5;
  }
  95% {
    opacity: 0;
  }
  100% {
    transform: translateX(320px);
    opacity: 0;
  }
}
/* /Components/Pages/Quotation/Detail.razor.rz.scp.css */
[b-slq55pacad] .dxbl-tag-box > .dxbl-tag:not(:first-child) {
  display: none;
}

[b-slq55pacad] .dxbl-grid-footer-row td {
  vertical-align: top !important;
}
[b-slq55pacad] .dxbl-grid-footer-row td > div {
  display: inline-table;
  white-space: pre;
}
/* /Components/Pages/Resource/Templates/ResourceColorTemplate.razor.rz.scp.css */
.resource-color-wrapper[b-7e9yv2hr14] {
  display: block;
}

.resource-color[b-7e9yv2hr14] {
  display: inline-block;
  width: 1rem;
  height: 1rem;
  border-radius: 0.125rem;
  margin-right: 5px;
  position: relative;
  top: 2px;
}
/* /Components/Pages/Role/Flyouts/BulkUpdateFlyout.razor.rz.scp.css */
.content-container[b-z7nf3kl5th] {
  width: 400px;
  height: 300px;
}
/* /Components/Pages/SalesOrder/Detail.razor.rz.scp.css */
[b-q6g9xvhb47] .dxbl-tag-box > .dxbl-tag:not(:first-child) {
  display: none;
}

[b-q6g9xvhb47] .dxbl-grid-footer-row td {
  vertical-align: top !important;
}
[b-q6g9xvhb47] .dxbl-grid-footer-row td > div {
  display: inline-table;
  white-space: pre;
}
/* /Components/Pages/SalesOrder/Popups/LineSelectionPopup.razor.rz.scp.css */
/* ==========================================================================
   Sales order line selection popup
   --------------------------------------------------------------------------
   Purpose:
   The popup's own layout is the shared SelectionSplitLayout; what is left here
   is the lines grid taking the height the header band leaves over, plus the
   row rules that keep lines without a shippable quantity out of reach.
   ========================================================================== */
.lines-grid[b-sj8ig84edp] {
  flex: 1 1 auto;
  min-height: 0;
}
.lines-grid[b-sj8ig84edp]  dxbl-grid {
  height: 100%;
  overflow: auto;
}
.lines-grid[b-sj8ig84edp]  dxbl-grid .dxbl-grid-empty-row {
  pointer-events: none;
  cursor: not-allowed;
}
.lines-grid[b-sj8ig84edp]  dxbl-grid .display-status {
  margin: auto 4px auto 0;
}
.lines-grid[b-sj8ig84edp]  .non-selectable-row td {
  pointer-events: none;
  cursor: not-allowed;
}
.lines-grid[b-sj8ig84edp]  .dxbl-grid-selection-cell .row-checkbox {
  pointer-events: auto;
}
/* /Components/Pages/Stock/Popups/StockMutationLogPopup.razor.rz.scp.css */
[b-zv7rucku51] .dxbl-grid {
  padding-bottom: 3rem;
}
[b-zv7rucku51] .dxbl-grid .dxbl-grid-table .dxbl-grid-selected-row:not(.dxbl-grid-focused-row):not(.dxbl-grid-touch-selection):not(.dxbl-grid-touch-selection-edge) > td:not(.dxbl-grid-empty-cell):not(.dxbl-grid-indent-cell)::before {
  background-color: transparent !important;
}

[b-zv7rucku51] .empty-data-area {
  text-align: center;
}

[b-zv7rucku51] .non-selectable-row td {
  pointer-events: none;
  cursor: not-allowed;
}
[b-zv7rucku51] .non-selectable-row .dxbl-checkbox-check-element {
  display: none;
}
/* /Components/Pages/Stock/Popups/SubLocationOverviewPopup.razor.rz.scp.css */
[b-i3tdy49jow] .dxbl-grid {
  padding-bottom: 3rem;
}
[b-i3tdy49jow] .dxbl-grid .dxbl-grid-table .dxbl-grid-selected-row:not(.dxbl-grid-focused-row):not(.dxbl-grid-touch-selection):not(.dxbl-grid-touch-selection-edge) > td:not(.dxbl-grid-empty-cell):not(.dxbl-grid-indent-cell)::before {
  background-color: transparent !important;
}

[b-i3tdy49jow] .empty-data-area {
  text-align: center;
}

[b-i3tdy49jow] .non-selectable-row td {
  pointer-events: none;
  cursor: not-allowed;
}
[b-i3tdy49jow] .non-selectable-row .dxbl-checkbox-check-element {
  display: none;
}
/* /Components/Pages/Supplier/ContactPersonOverview.razor.rz.scp.css */
.supplier-contactperson-overview[b-pya6ejc8vc]  .dxbl-drawer-content {
  min-height: calc(100vh - 130px);
}
/* /Components/Pages/Supplier/Overview.razor.rz.scp.css */
.supplier-overview[b-rwcm10y18t]  .dxbl-drawer-content {
  min-height: calc(100vh - 130px);
}
/* /Components/Pages/Tag/Overview.razor.rz.scp.css */
.color-input input[b-cqlzc2aste] {
  width: 0px;
  height: 0px;
  padding: 0;
  margin: 0;
  border: none;
}

.color-input span[b-cqlzc2aste] {
  height: 33px;
  width: 33px;
  display: inline-block;
  border-radius: 10rem;
  margin-left: -4px;
}
/* /Components/Pages/Test/Overview.razor.rz.scp.css */
.test-section[b-y3ov09akn3] {
  background: var(--dxbl-surface-color, #fff);
  border: 1px solid var(--dxbl-border-color, #dee2e6);
  border-radius: 0.5rem;
  padding: 1.25rem 1.5rem;
  margin-bottom: 1.25rem;
}
.test-section .test-section-title[b-y3ov09akn3] {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.25rem;
  font-weight: 600;
}
.test-section .test-section-description[b-y3ov09akn3] {
  color: var(--dxbl-secondary-text-color, #6c757d);
  font-size: 0.875rem;
  margin-bottom: 1rem;
}

.test-subsection[b-y3ov09akn3] {
  background: var(--dxbl-surface-alt-color, #f8f9fa);
  border: 1px solid var(--dxbl-border-color, #dee2e6);
  border-radius: 0.375rem;
  padding: 1rem;
  margin-bottom: 0.75rem;
}
.test-subsection h6[b-y3ov09akn3] {
  font-weight: 600;
  margin-bottom: 0.5rem;
}
/* /Components/Pages/User/ContractHoursDetail.razor.rz.scp.css */
[b-ofualmetie] .contract-hours-week-group > .dxbl-group > .dxbl-group-header {
  display: block !important;
}
/* /Components/Pages/WorkOrder/ActivityOverview.razor.rz.scp.css */
.duration-wrapper[b-eb2jbhp0pn] {
  display: flex;
  align-items: center;
  justify-content: right;
}
.duration-wrapper .wait-indicator-wrapper[b-eb2jbhp0pn] {
  margin-right: 5px;
  height: 18px;
}
.duration-wrapper[b-eb2jbhp0pn]  .dxbl-wait-indicator.conventus-wait-indicator {
  fill: var(--bs-orange) !important;
  margin-top: -10px;
  display: inline-block;
}

.start-stop-toolbar[b-eb2jbhp0pn] {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.start-stop-buttons[b-eb2jbhp0pn] {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.5rem;
}

.start-stop-warning-container[b-eb2jbhp0pn] {
  width: 0;
  min-width: 100%;
  padding-top: 5px;
}
/* /Components/Pages/WorkOrder/Detail.razor.rz.scp.css */
[b-0j7tq023is] .dxbl-tag-box > .dxbl-tag:not(:first-child) {
  display: none;
}

[b-0j7tq023is] .dxbl-grid-footer-row td {
  vertical-align: top !important;
}
[b-0j7tq023is] .dxbl-grid-footer-row td > div {
  display: inline-table;
  white-space: pre;
}
/* /Components/Pages/WorkOrder/Overview.razor.rz.scp.css */
.conv.conv-icon-warning[b-hro62td5mc]::before {
  margin-left: 0.5rem;
}
/* /Components/Pages/WorkOrder/Templates/DetailDisplay.razor.rz.scp.css */
/* Read-only work-order summary shown beside the appointment edit form and on the plan board. Styled in the same
   visual language as the reschedule review popups: an icon + title head, a framed list of hairline-divided
   label/value rows, and quiet text blocks for description / note, so every planning surface reads as one family. */
.workorder-display[b-8mlq1a5r98] {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  padding: 0 0.75rem 0.75rem;
}

.workorder-display__head[b-8mlq1a5r98] {
  display: flex;
  align-items: center;
  gap: 0.6rem;
}

.workorder-display__icon[b-8mlq1a5r98] {
  font-size: 1.15rem;
  color: var(--cv-primary);
}

.workorder-display__heading[b-8mlq1a5r98] {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.workorder-display__number[b-8mlq1a5r98] {
  font-weight: 700;
  color: var(--cv-text-primary);
}

.workorder-display__name[b-8mlq1a5r98] {
  font-size: 0.8rem;
  color: var(--cv-text-secondary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.workorder-display__list[b-8mlq1a5r98] {
  border: 1px solid var(--cv-border-section);
  border-radius: 0.5rem;
  overflow: hidden;
  background: #fff;
}

.workorder-display__row[b-8mlq1a5r98] {
  display: flex;
  align-items: baseline;
  gap: 0.7rem;
  padding: 0.4rem 0.75rem;
}
.workorder-display__row + .workorder-display__row[b-8mlq1a5r98] {
  border-top: 1px solid var(--cv-border-section);
}

.workorder-display__label[b-8mlq1a5r98] {
  flex: 0 0 44%;
  font-size: 0.78rem;
  color: var(--cv-text-secondary);
}

.workorder-display__value[b-8mlq1a5r98] {
  flex: 1 1 auto;
  min-width: 0;
  font-size: 0.85rem;
  color: var(--cv-text-primary);
  overflow-wrap: anywhere;
}
.workorder-display__value--urgent[b-8mlq1a5r98] {
  font-weight: 700;
  color: var(--cv-danger, #dc3545);
}

.workorder-display__text[b-8mlq1a5r98] {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.workorder-display__text-label[b-8mlq1a5r98] {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--cv-text-secondary);
}

.workorder-display__text-body[b-8mlq1a5r98] {
  margin: 0;
  font-size: 0.85rem;
  color: var(--cv-text-primary);
  white-space: pre-line;
  overflow-wrap: anywhere;
}
/* /Components/Pages/WorkOrder/Templates/LocationDetailDisplay.razor.rz.scp.css */
.workorder-location-display-container[b-t1zi6tc9m4] {
  padding: 0 0.75rem;
  margin-bottom: 0.5rem;
}
.workorder-location-display-container i[b-t1zi6tc9m4] {
  display: inline-block;
  margin-right: 0.25rem;
  color: #f07e26;
}
.workorder-location-display-container a[b-t1zi6tc9m4] {
  text-decoration: none;
}
/* /Components/Shared/Stock/OrderStockIndicator.razor.rz.scp.css */
[b-s033wm5f4r] .forecast-card {
  min-width: 180px;
  max-width: 230px;
  padding: 10px 11px 9px;
  color: var(--cv-text-primary);
}

[b-s033wm5f4r] .forecast-card__header {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-bottom: 8px;
  margin-bottom: 9px;
  border-bottom: 1px solid var(--cv-border-section);
}

[b-s033wm5f4r] .forecast-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  border-radius: 7px;
  background: rgba(240, 126, 38, 0.12);
  color: var(--cv-primary);
  font-size: 0.85rem;
}

[b-s033wm5f4r] .forecast-card__titles {
  display: flex;
  flex-direction: column;
  min-width: 0;
  line-height: 1.15;
}

[b-s033wm5f4r] .forecast-card__eyebrow {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--cv-text-secondary);
}

[b-s033wm5f4r] .forecast-card__metrics {
  display: grid;
  grid-template-columns: 1fr;
  gap: 5px;
}

[b-s033wm5f4r] .metric {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}

[b-s033wm5f4r] .metric__label {
  font-size: 0.72rem;
  color: var(--cv-text-secondary);
  white-space: nowrap;
}

[b-s033wm5f4r] .metric__value {
  font-size: 0.82rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

[b-s033wm5f4r] .metric__value.is-negative {
  color: var(--cv-status-red);
}

[b-s033wm5f4r] .forecast-card__footer {
  margin-top: 9px;
  padding-top: 8px;
  border-top: 1px solid var(--cv-border-section);
}

[b-s033wm5f4r] .forecast-card__note {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  font-size: 0.68rem;
  line-height: 1.3;
  color: var(--cv-text-secondary);
}

[b-s033wm5f4r] .forecast-card__note .bi {
  font-size: 0.76rem;
  margin-top: 1px;
  color: var(--cv-text-secondary);
}

.stock-forecast-anchor[b-s033wm5f4r] {
  display: inline-flex;
  align-items: center;
  cursor: pointer;
  white-space: nowrap;
}
/* /Components/Shared/Stock/StockForecastFlyout.razor.rz.scp.css */
[b-9l40j74slb] .forecast-card {
  min-width: 220px;
  max-width: 260px;
  padding: 10px 11px 9px;
  color: var(--cv-text-primary);
}

[b-9l40j74slb] .forecast-card__header {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-bottom: 8px;
  margin-bottom: 9px;
  border-bottom: 1px solid var(--cv-border-section);
}

[b-9l40j74slb] .forecast-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  border-radius: 7px;
  background: rgba(240, 126, 38, 0.12);
  color: var(--cv-primary);
  font-size: 0.85rem;
}

[b-9l40j74slb] .forecast-card__titles {
  display: flex;
  flex-direction: column;
  min-width: 0;
  line-height: 1.15;
}

[b-9l40j74slb] .forecast-card__eyebrow {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--cv-text-secondary);
}

[b-9l40j74slb] .forecast-card__title {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--cv-text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

[b-9l40j74slb] .forecast-card__state {
  padding: 8px 0 2px;
  text-align: center;
  font-style: italic;
  color: var(--cv-text-secondary);
}

[b-9l40j74slb] .forecast-card__metrics {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5px 14px;
}

[b-9l40j74slb] .metric {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}

[b-9l40j74slb] .metric__label {
  font-size: 0.72rem;
  color: var(--cv-text-secondary);
  white-space: nowrap;
}

[b-9l40j74slb] .metric__value {
  font-size: 0.82rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

[b-9l40j74slb] .metric__value.is-negative {
  color: var(--cv-status-red);
}

[b-9l40j74slb] .forecast-card__footer {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 9px;
  padding-top: 8px;
  border-top: 1px solid var(--cv-border-section);
}

[b-9l40j74slb] .forecast-card__note {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.7rem;
  color: var(--cv-text-secondary);
}

[b-9l40j74slb] .forecast-card__note .bi {
  font-size: 0.78rem;
  color: var(--cv-text-secondary);
}

[b-9l40j74slb] .forecast-card__note-value {
  margin-left: auto;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--cv-text-primary);
}

[b-9l40j74slb] .forecast-card__note.is-urgent,
[b-9l40j74slb] .forecast-card__note.is-urgent .bi,
[b-9l40j74slb] .forecast-card__note.is-urgent .forecast-card__note-value {
  color: var(--cv-status-red);
  font-weight: 600;
}

.stock-forecast-anchor[b-9l40j74slb] {
  display: inline-flex;
  align-items: center;
  cursor: pointer;
  white-space: nowrap;
}
