/* ==========================================================================
   Turquoise Beta Styles — V4  (drop-in replacement for DataAnalyticsCSS_V3.css)
   --------------------------------------------------------------------------
   Direction: soft & airy. White surfaces with hairline borders and gentle
   shadows on the existing light-grey canvas, more breathing room, rounded
   corners, teal as the single accent. Colors and the Proxima Nova font
   tokens from V3 are kept verbatim; new tokens are additive only.

   How this file is organised (search for the numbered headings):
     01  Fonts
     02  Design tokens (:root)
     03  Base typography & resets
     04  App shell: header, sidebar, content
     05  Header buttons, tab title, profile / table dropdowns
     06  Cards: .box, dashboardBox, collapsedBox, infoBox, details pages
     07  KPI tiles: .small-box (native valueBox) and .valueBox-custom
     08  Tabs: list-page tab strips (tab2–tab7), tabDetails, generic nav-tabs
     09  Buttons & dropdown menus
     10  Tiles, flags, badges, status, health score, progress bars
     11  DataTables
     12  Forms & inputs (select, picker, selectize, number, checkbox, date…)
     13  Modals, alerts, notifications, tooltips
     14  Images, galleries, chat, suggestions, Quill
     15  Split layout / info pane
     16  Calendars
     17  Landing / auth / QR panels, zoom, leaflet, log tables
     18  Claude help modal (kept as designed)
     19  Opinionated overrides of inline styles (each one is documented;
         delete any block you don't want)
     20  Motion & accessibility

   Rules that exist only to defeat an inline style emitted by R are marked
   with  [inline-override]  so they're easy to find and remove.
   ========================================================================== */


/* ==========================================================================
   01  Fonts (unchanged from V3)
   ========================================================================== */
@font-face{ font-family: 'proximaThin';          src: local('ProximaNova-Thin.ttf'),          url(ProximaNova-Thin.ttf)          format("truetype"); }
@font-face{ font-family: 'futurabook';           src: local('ProximaNova-Regular.ttf'),       url(ProximaNova-Regular.ttf)       format("truetype"); }
@font-face{ font-family: 'proximaBlack';         src: local('ProximaNova-Black.ttf'),         url(ProximaNova-Black.ttf)         format("truetype"); }
@font-face{ font-family: 'proximaBold';          src: local('ProximaNova-Bold.ttf'),          url(ProximaNova-Bold.ttf)          format("truetype"); }
@font-face{ font-family: 'futurabold';           src: local('ProximaNova-ExtraBold.ttf'),     url(ProximaNova-ExtraBold.ttf)     format("truetype"); }
@font-face{ font-family: 'proximaExtraBold';     src: local('ProximaNova-ExtraBold.ttf'),     url(ProximaNova-ExtraBold.ttf)     format("truetype"); }
@font-face{ font-family: 'futuraheavy';          src: local('ProximaNova-Bold.ttf'),          url(ProximaNova-Bold.ttf)          format("truetype"); }
@font-face{ font-family: 'proximaLight';         src: local('ProximaNova-Light.ttf'),         url(ProximaNova-Light.ttf)         format("truetype"); }
@font-face{ font-family: 'futuralight';          src: local('ProximaNova-Light.ttf'),         url(ProximaNova-Light.ttf)         format("truetype"); }
@font-face{ font-family: 'proximaMedium';        src: local('ProximaNova-Medium.ttf'),        url(ProximaNova-Medium.ttf)        format("truetype"); }
@font-face{ font-family: 'futuramedium';         src: local('ProximaNova-Medium.ttf'),        url(ProximaNova-Medium.ttf)        format("truetype"); }
@font-face{ font-family: 'proximaRegular';       src: local('ProximaNova-Regular.ttf'),       url(ProximaNova-Regular.ttf)       format("truetype"); }
@font-face{ font-family: 'futurademi';           src: local('ProximaNova-SemiBold.ttf'),      url(ProximaNova-SemiBold.ttf)      format("truetype"); }
@font-face{ font-family: 'proximaRegularItalic'; src: local('ProximaNova-RegularItalic.ttf'), url(ProximaNova-RegularItalic.ttf) format("truetype"); }
@font-face{ font-family: 'proximaSemiBold';      src: local('ProximaNova-SemiBold.ttf'),      url(ProximaNova-SemiBold.ttf)      format("truetype"); }
@font-face{ font-family: vc-henrietta;           src: local("VCHenrietta-RegularItalic.otf"), url(VCHenrietta-RegularItalic.otf) format("opentype"); }
@font-face{ font-family: apotek;                 src: local("apotek.ttf"),                    url(apotek.ttf)                    format("truetype"); }


/* ==========================================================================
   02  Design tokens
   All V3 tokens are present with their original values (R code references
   --color-text-muted and --color-error inline). New tokens are marked.
   ========================================================================== */
:root {
  /* --- Brand colors (V3) --- */
  --color-primary:        #26313A;
  --color-teal:           #3F8686;
  --color-teal-dark:      #256060;
  --color-purple:         #4C394F;
  --color-purple-muted:   #7061a166;
  --color-gold:           #CFAB53;
  --color-gold-dark:      #C8A31C;
  --color-dark:           black;

  /* --- Text (V3) --- */
  --color-text:           #455a64;
  --color-text-muted:     #9E9E9E;
  --color-text-grey:      rgba(255,255,255,0.15);
  --color-text-subtle:    #6C757D;
  --color-label:          #37474F;
  --color-image:          #3c4858;
  --color-text-side:      #C3B9C5;

  /* --- Surfaces & borders (V3) --- */
  --color-border:         #CFD8DC;
  --color-border-focus:   #3F8686;
  --color-border-focus-muted: #C9E8E5;
  --color-white:          #FFFFFF;
  --color-bg:             #ECF0F5;
  --color-bg-subtle:      #F5F5F5;
  --color-bg-hover:       #ECEFF1;
  --color-bg-table:       #E0E0E0;
  --color-table-highlight:#bda8c0;

  /* --- States (V3) --- */
  --color-error:          #EF5350;
  --color-error-state:    rgba(239, 83, 80, 0.18);
  --color-success:        #66BB6A;
  --color-warning:        #C8A31C;
  --color-status-bg:      #4CAF501A;

  /* --- Chat (V3) --- */
  --color-chat:           #B9EBFF;
  --color-chat-reply:     #E1F6FF;
  --color-chat-tag:       #B0E2FF;
  --color-chat-tag-bg:    #1874CD;
  --color-chat-tag-user:  #8b7500;
  --color-chat-tag-bg-user: #FFD700;

  /* --- Fonts (V3) --- */
  --font-main:     proximaLight,    "Helvetica Neue", Arial, sans-serif;
  --font-regular:  proximaRegular,  "Helvetica Neue", Arial, sans-serif;
  --font-medium:   proximaMedium,   "Helvetica Neue", Arial, sans-serif;
  --font-bold:     proximaBold,     "Helvetica Neue", Arial, sans-serif;
  --font-semiBold: proximaSemiBold, "Helvetica Neue", Arial, sans-serif;
  --font-demi:     proximaRegular,  "Helvetica Neue", Arial, sans-serif;
  --font-env:      apotek;

  /* --- Radii (V3 values kept; --radius-card is new) --- */
  --radius-sm:    4px;
  --radius-md:    6px;
  --radius-lg:    12px;
  --radius-pill:  24px;
  --radius-card:  10px;                                   /* new */
  --radius-btn:   8px;                                    /* new */

  /* --- Shadows (V3 kept; new soft tiers added) --- */
  --shadow-sm:    0 1px 3px rgba(38, 49, 58, 0.10), 0 1px 2px rgba(38, 49, 58, 0.06);
  --shadow-md:    0 2px 6px rgba(38, 49, 58, 0.10), 0 1px 3px rgba(38, 49, 58, 0.08);
  --shadow-focus: 0 0 0 3px rgba(63, 134, 134, 0.20);
  --shadow-card:  0 1px 2px rgba(38, 49, 58, 0.04), 0 2px 8px rgba(38, 49, 58, 0.05);      /* new */
  --shadow-float: 0 8px 24px rgba(38, 49, 58, 0.14), 0 2px 6px rgba(38, 49, 58, 0.08);     /* new */
  --shadow-modal: 0 20px 60px rgba(38, 49, 58, 0.22), 0 4px 12px rgba(38, 49, 58, 0.10);   /* new */

  /* --- New derived tints (all derived from the brand colors above) --- */
  --color-border-soft:    #E3E8EC;                        /* hairline card border */
  --color-divider:        #EEF1F4;                        /* table row divider */
  --color-teal-soft:      #E7F2F1;                        /* teal tint for hover / selected */
  --color-teal-softer:    #F2F8F7;
  --color-primary-soft:   #E9ECEF;
  --color-sidebar-hover:  rgba(255,255,255,0.08);
  --color-sidebar-active: rgba(255,255,255,0.14);
  --color-input-border:   #D5DDE2;
  --color-teal-selected:       #A9CFCB;   /* ~88% luminance: reads as "chosen", not "hovered" */
  --color-teal-selected-hover: #96C4BF;   /* one step darker for selected rows under the cursor */

  /* --- Type scale (new) --- */
  --text-2xs: 10px;
  --text-xs:  11px;
  --text-sm:  12px;
  --text-md:  14px;
  --text-lg:  16px;
  --text-xl:  20px;
  --text-2xl: 26px;

  --transition:       all ease-in-out 0.17s;
  --transition-fast:  all ease-out 0.12s;

  /* DataTables ≥1.13 reads these for row selection / hover shading */
  --dt-row-selected:       169, 207, 203;   /* #A9CFCB */
  --dt-row-selected-text:  38, 49, 58;
  --dt-row-selected-link:  37, 96, 96;
  --dt-row-hover:          242, 248, 247;   /* #F2F8F7, matches --color-teal-softer */
  --dt-row-stripe:         0, 0, 0;
}


/* ==========================================================================
   03  Base typography & resets
   ========================================================================== */
html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
body {
  font-family: var(--font-main);
  color: var(--color-text);
  font-size: var(--text-md);
}
body:not(.modal-open){ padding-right: 0px !important; }

h1, h2, h3, h4 { font-family: var(--font-medium); color: var(--color-primary); letter-spacing: -0.01em; }
h5 { font-family: var(--font-main); }
strong { font-family: var(--font-bold); }
a { color: var(--color-teal-dark); transition: var(--transition-fast); }
a:hover, a:focus { color: var(--color-teal); text-decoration: none; }
hr { border-top: 1px solid var(--color-border-soft); margin-top: 16px; margin-bottom: 16px; }

/* Thin, quiet scrollbars app-wide */
* { scrollbar-width: thin; scrollbar-color: #C5CDD3 transparent; }
*::-webkit-scrollbar { width: 8px; height: 8px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { background: #C5CDD3; border-radius: 8px; border: 2px solid transparent; background-clip: content-box; }
*::-webkit-scrollbar-thumb:hover { background: #AEB8C0; background-clip: content-box; }

/* Details-page label / value pairs (p.titleStyle + p.textStyle, ~1,000 uses) */
.titleStyle{
  color: var(--color-text-subtle);
  font-size: var(--text-2xs);
  font-family: var(--font-regular);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 2px;
}
.textStyle{
  color: var(--color-primary);
  font-size: var(--text-md);
  font-family: var(--font-main);
  line-height: 1.45;
  margin-bottom: 14px;
  overflow-wrap: anywhere;
}
/* .boxStyle = white panel used inside details pages (column(12, class="boxStyle")) */
.boxStyle{
  border-radius: var(--radius-card);
  border: 1px solid var(--color-border-soft);
  margin: 10px;
  background-color: var(--color-white);
  box-shadow: var(--shadow-card);
}
.tileStyle{
  color: var(--color-white);
  background: var(--color-teal);
  width: 50px;
  font-size: 70%;
  border-radius: var(--radius-sm);
  margin: 1px;
  font-family: var(--font-main);
}

/* Auth page progress bar */
.progress { border-radius: var(--radius-pill); box-shadow: none; background: var(--color-bg); height: 8px; }
.progress-bar{
  background: var(--color-primary);
  font-family: var(--font-main);
  font-weight: 600;
  color: var(--color-white);
  box-shadow: none;
}

.container-fluid{ margin: 0; padding: 0; }

/* titlePanel(" ") is used as a spacer and renders an empty <h2> */
#maincontent .box-body > h2 { margin: 0; height: 12px; }


/* ==========================================================================
   04  App shell — header, sidebar, content (AdminLTE skin-blue overrides)
   ========================================================================== */
.content-wrapper, .right-side { background-color: var(--color-bg) !important; }
.content-wrapper > .content { background-color: var(--color-bg); padding: 18px 20px 28px; }

/* Top bar */
.skin-blue .main-header .navbar,
.main-header .navbar{
  background-color: var(--color-white) !important;
  font-family: var(--font-bold);
  height: 70px;
  border-bottom: 1px solid var(--color-border-soft);
  box-shadow: 0 1px 0 rgba(38,49,58,0.02);
}
.skin-blue .main-header .navbar .sidebar-toggle{ color: var(--color-primary); height: 70px; line-height: 40px; display: none; }
.skin-blue .main-header .navbar .sidebar-toggle:hover{
  background-color: var(--color-bg-hover);
  color: var(--color-primary);
  transition: 0.3s;
}

/* Logo block */
.skin-blue .main-header .logo,
.skin-blue .main-header .logo:hover,
.main-header .logo{
  background-color: var(--color-primary) !important;
  color: var(--color-white) !important;
  font-family: var(--font-bold);
  font-weight: 500;
  letter-spacing: 0.05em;
}
.betaIcon { padding-top: 10px; }

/* Sidebar */
.main-sidebar, .left-side, .skin-blue .main-sidebar{
  background-color: var(--color-primary) !important;
  color: var(--color-border-focus-muted);
  font-family: var(--font-main);
  box-shadow: inset -1px 0 0 rgba(255,255,255,0.04);
}
.sidebar { padding-bottom: 20px; }
.sidebar hr { border-top-color: rgba(255,255,255,0.08); margin: 18px 14px; }
.sidebar-menu > li > a{
  color: rgba(255,255,255,0.86) !important;
  font-family: var(--font-regular);
  font-size: var(--text-md) !important;
  font-weight: 400;
  padding: 9px 14px !important;
  margin: 2px 10px 0 !important;
  border-radius: var(--radius-btn);
  border-left: 3px solid transparent !important;
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease !important;
}
.sidebar-menu > li > a:hover,
.sidebar-menu > li:hover > a,
.skin-blue .main-sidebar .sidebar .sidebar-menu a:hover{
  background-color: var(--color-sidebar-hover) !important;
  color: var(--color-white) !important;
  border-left-color: transparent !important;
}
.sidebar-menu > li.active > a,
.sidebar-menu > li.active > a:hover,
.skin-blue .main-sidebar .sidebar .sidebar-menu .active a,
.skin-blue .sidebar-menu > li.active > a{
  background-color: var(--color-sidebar-active) !important;
  color: var(--color-white) !important;
  font-family: var(--font-medium);
  border-left: 3px solid var(--color-teal) !important;
}
.sidebar-menu > li > a > .fa,
.sidebar-menu > li > a > i{
  color: rgba(255,255,255,0.75) !important;
  min-width: 26px;
  font-size: 15px;
  text-align: center;
}
.sidebar-menu > li.active > a > .fa,
.sidebar-menu > li.active > a > i,
.sidebar-menu > li > a:hover > i { color: var(--color-white) !important; }
.sidebar-menu > li > a > .pull-right-container { right: 14px; }
.sidebar-menu > li > a > .pull-right-container > .fa-angle-left { font-size: 13px; }

.sidebar-menu .header{
  color: var(--color-text-side) !important;
  font-family: var(--font-regular);
  font-size: var(--text-xs) !important;
  letter-spacing: 0.1em !important;
  text-transform: uppercase;
  padding: 14px 24px 4px !important;
  background-color: transparent !important;
}
.treeview-menu { background-color: rgba(0,0,0,0.12) !important; padding: 4px 0 !important; margin: 2px 10px 0; border-radius: var(--radius-btn); }
.sidebar-menu .treeview-menu > li > a{
  color: rgba(255,255,255,0.80) !important;
  font-family: var(--font-main);
  font-size: 13px !important;
  padding: 7px 5px 7px 40px !important;
  border-radius: var(--radius-md);
  margin: 0 4px;
  transition: background-color 0.2s ease !important;
}
.sidebar-menu .treeview-menu > li > a:hover,
.sidebar-menu .treeview-menu > li.active > a{
  background-color: var(--color-sidebar-hover) !important;
  color: var(--color-white) !important;
}
.sidebar-menu .treeview-menu > li > a > .fa { width: 18px; margin-right: 4px; }

.user-panel{ background-color: var(--color-primary) !important; border-bottom: 1px solid var(--color-text-grey) !important; }
.user-panel .info a, .user-panel .info p{ color: var(--color-white) !important; font-family: var(--font-main); font-size: 13px; }

/* Hidden shell elements */
#hiddenTabs{ display: none; }
#ruler{ visibility: hidden; white-space: nowrap; }

/* Wrapper must not clip the sticky info pane */
.wrapper { overflow-x: clip !important; overflow-y: visible !important; }


/* ==========================================================================
   05  Header buttons, page title, profile dropdown
   ========================================================================== */
/* Page title: an absolutely positioned <h3> rendered by server.R (its color
   is inline: navy, or red on the dev database). */
#tabHeader_Title h3{
  font-family: var(--font-medium);
  font-size: 22px;
  margin-top: 16px;
  letter-spacing: -0.01em;
  top: 10px !important;
  left: 255px !important;
}

/* Auth-page artwork as a faint overlay behind the sidebar menu */
.main-sidebar::before {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 230px;
  height: 100vh;
  inset: 0;                                  /* fill the sidebar */
  background: url("auth-back-blue.png") center top / cover no-repeat;
  opacity: 0.16;                             /* 0.08–0.20 is the useful range */
  pointer-events: none;
  z-index: 0;
  margin-top: 70px;
}
.main-sidebar > .sidebar,
.main-sidebar .user-panel {
  position: relative;
  z-index: 1;                                /* keep menu items above the image */
}

/* Round icon buttons in the top bar (class="headerButton", right: offset inline) */
.btn.headerButton, .headerButton{
  outline: none;
  background-color: transparent;
  border: 1px solid transparent;
  position: absolute;
  z-index: 10000;
  color: var(--color-primary);
  border-radius: 50%;
  top: 15px;
  height: 40px;
  width: 40px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  box-shadow: none;
  transition: var(--transition-fast);
}
.btn.headerButton:hover, .btn.headerButton:focus, .headerButton:hover, .headerButton:focus{
  background-color: var(--color-bg-hover);
  color: var(--color-primary);
  border-color: transparent;
}
.btn.headerButton:active { transform: scale(0.96); }

/* Profile (shinyWidgets dropdownButton inputId="profileDropDown") */
#profileDropDown{
  position: absolute;
  top: -75px;
  right: 15px;
  z-index: 10000;
  color: var(--color-primary);
  background: transparent;
  border: 1px solid var(--color-border-soft);
  box-shadow: none;
  width: 44px;
  height: 44px;
  font-size: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: var(--transition-fast);
}
#profileDropDown:hover, #profileDropDown:focus{ background: var(--color-bg-hover); border-color: var(--color-border); }
#dropdown-menu-profileDropDown{
  position: absolute;
  top: -10px;
  right: 15px;
  left: auto;
  z-index: 10000;
  color: var(--color-primary);
  width: 260px;
  padding: 8px 0;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-float);
  animation: fadein 0.25s;
}
.profileDropdown{
  font-family: var(--font-main);
  background-color: transparent;
  border-color: transparent;
  text-align: left;
  color: var(--color-text);
  width: 100%;
  padding-left: 20px;
  border: none !important;
}
.profileDropdown:hover { padding-left: 15px !important; }

.userMenu-container {
  display: flex; flex-direction: row; align-items: center; justify-content: flex-start;
  gap: 12px; padding-top: 10px;
}
.userMenu-container .profileImage {
  height: 38px; width: 38px; border-radius: 50%;
  background-position: center center; background-size: cover;
  border: 1px solid var(--color-border-soft);
  box-shadow: var(--shadow-sm);
}
.userMenu-container .name { color: var(--color-primary); font-size: var(--text-lg); font-family: var(--font-medium); line-height: 1.2; }
.userMenu-container .username { font-size: var(--text-sm); color: var(--color-text-subtle); margin-bottom: 0px; }

/* Floating help icon (helpUI_Icon(), fully inline-styled — only the hover is ours) */
#helpMessages_Icon { transition: var(--transition-fast); box-shadow: var(--shadow-md); }
#helpMessages_Icon:hover { transform: translateY(-1px); box-shadow: var(--shadow-float); }

/* Animations shared app-wide */
@keyframes fadein {
  from { opacity: 0; transform: translate3d(0,6px,0); }
  to   { opacity: 1; transform: translate3d(0,0,0); }
}
@keyframes gradient-animation {
  0%   { background-position: 0% 50%; }
  25%  { background-position: 75% 50%; }
  50%  { background-position: 100% 50%; }
  75%  { background-position: 25% 50%; }
  100% { background-position: 0% 50%; }
}


/* ==========================================================================
   06  Cards — .box (AdminLTE), dashboardBox, collapsedBox, infoBox, details
   ========================================================================== */
.box {
  background: var(--color-white);
  border: 1px solid var(--color-border-soft);
  border-top: 1px solid var(--color-border-soft);         /* AdminLTE's 3px status bar is retired */
  border-radius: var(--radius-card) !important;
  box-shadow: var(--shadow-card) !important;
  margin-bottom: 18px;
}
.box.box-solid, .box.box-primary, .box.box-default { border-top-color: var(--color-border-soft); }
.box .box-header {
  border-radius: var(--radius-card) var(--radius-card) 0 0;
  padding: 10px 15px;
  color: var(--color-primary);
}
.box .box-header .box-title {
  font-family: var(--font-medium);
  font-weight: 500;
  font-size: var(--text-lg);
  color: var(--color-primary);
  letter-spacing: -0.01em;
}
.box .box-body { padding: 12px 14px 14px; }
.box .box-header .box-tools .btn-box-tool {
  color: var(--color-text-subtle);
  border-radius: 50%;
  width: 28px; height: 28px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  transition: var(--transition-fast);
}
.box .box-header .box-tools .btn-box-tool, .btn.btn-box-tool { border-color: transparent; background: transparent; box-shadow: none; }
.box .box-header .box-tools .btn-box-tool:hover { background: var(--color-bg-hover); border-color: transparent; color: var(--color-primary); }

/* dashboardBox_UI() : .dashboardBox > .box > .box-header strong.box-title */
.dashboardBox .box { border: 1px solid var(--color-border-soft); }
.dashboardBox .box .box-header .box-title { color: var(--color-primary); font-size: var(--text-lg); }
.dashboardBox .box .box-header button { font-size: var(--text-md); font-family: var(--font-main); }
.dashboardBox .box .box-header button i {
  color: var(--color-text-subtle);
  float: right;
  padding-right: 0;
  padding-top: 0;
  font-size: 12px;
}
.dashboardBox .box .box-body { padding: 0px; margin-top: 18px; padding-bottom: 24px; }
.dashboardBox.dynamicBox .box .box-header button { display: none; }

/* collapsedBox_UI() */
.collapsedBox-custom .box { border: 1px solid var(--color-border-soft); }
.collapsedBox-custom .box-body { margin-bottom: 10px; margin-top: -10px; font-family: var(--font-main); }

/* collapsedBox_Full_UI() — header is the click target */
.collapsedBox-full { padding: 0px; }
.collapsedBox-full .box { margin-bottom: 10px; border: 1px solid var(--color-border-soft); }
.collapsedBox-full .box .box-header { cursor: pointer; padding: 14px 18px; border-radius: var(--radius-card); transition: var(--transition-fast); }
.collapsedBox-full .box .box-header:hover { background: var(--color-teal-softer); }
.collapsedBox-full .box:not(.collapsed-box) .box-header { border-radius: var(--radius-card) var(--radius-card) 0 0; border-bottom: 1px solid var(--color-divider); }
.collapsedBox-full .box .logTitle {
  padding: 18px;
  color: var(--color-primary) !important;
  font-size: var(--text-lg);
  font-family: var(--font-medium);
}
.collapsedBox-full .box .box-body { padding: 0px; margin-top: 18px; }
.collapsedBox-full .box .box-header.bold-style {
  font-family: var(--font-regular);
  font-size: var(--text-sm);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-label);
}
.collapsedBox-full .box .box-header.bold-style::after {
  content: "\f078";                                /* chevron-down */
  font-family: "Font Awesome 6 Free", "Font Awesome 5 Free", FontAwesome;
  font-weight: 900;
  float: right;
  font-size: 10px;
  color: var(--color-text-muted);
  transition: transform 0.25s ease;
}
.collapsedBox-full .box:not(.collapsed-box) .box-header.bold-style::after { transform: rotate(180deg); }

/* infoBox_UI() — note: this is the app's own .infoBox, not AdminLTE's .info-box */
.infoBox.title { padding: 5px; margin: 0px; }
.infoBox.title strong { color: var(--color-text-subtle); font-size: var(--text-xs); letter-spacing: 0.06em; text-transform: uppercase; font-family: var(--font-regular); }
.infoBox.content {
  margin-bottom: 15px;
  border-radius: var(--radius-card);
  border: 1px solid var(--color-border-soft);
  background: var(--color-white);
  min-height: 0;
  padding: 4px 10px;
}
.infoBox.content h5 { margin: 10px 4px; line-height: 1.45; }

/* ---- Details page layout (detailsPage_* helpers) ---- */
.detailsPage-full { margin-right: 0px; margin-left: 0px; }
.detailsPage-full .col-sm-12 { padding-left: 0px; padding-right: 0px; }
.detailsPage-full .detailsPage-col { padding: 10px; margin-left: 0px; }
.detailsPage-full .detailsPage-col .detailsPage-box {
  border: 1px solid var(--color-border-soft);
  margin: 10px;
  margin-left: 0px;
  background-color: var(--color-white);
  box-shadow: var(--shadow-card);
  padding: 12px;
  border-radius: var(--radius-card);
}
.detailsPage-logs .collapsedBox-full {
  border: 1px solid var(--color-border-soft);
  margin: 10px;
  margin-left: 0px;
  background-color: var(--color-white);
  box-shadow: var(--shadow-card);
  padding: 0px;
  border-radius: var(--radius-card);
  overflow: hidden;
}
.detailsPage-logs .collapsedBox-full .box { margin-bottom: 0px; border: 0; box-shadow: none !important; }
.detailsPage-logs .collapsedBox-full .box .box-body { padding: 20px; }
.detailsPage-full .detailsPage-col .detailsPage-box [class*="col-sm-"] { padding: 10px; margin-left: 0px; }

.detailsPage-full .detailsPage-mainHeader { display: flex; flex-direction: row; align-items: center; }
.detailsPage-full .detailsPage-mainHeader .detailsPage-mainImage { padding: 10px; margin-left: 0px; display: flex; align-items: center; }
.detailsPage-full .detailsPage-mainHeader .detailsPage-mainTitle { padding: 10px; margin-left: 0px; flex-grow: 1; }
.detailsPage-full .detailsPage-mainHeader .detailsPage-mainTitle .detailsPage-title {
  color: var(--color-primary) !important;
  font-size: var(--text-xl);
  font-family: var(--font-medium);
  letter-spacing: -0.01em;
}
.detailsPage-full .detailsPage-mainHeader .detailsPage-mainTitle .detailsPage-subtitle {
  margin-bottom: 5px;
  color: var(--color-text-subtle) !important;
  font-size: var(--text-md);
  font-family: var(--font-main);
}
.detailsPage-full .detailsPage-mainHeader .detailsPage-mainTitle .detailsPage-flagContainer {
  margin-bottom: 8px; margin-top: 6px;
  display: flex; justify-content: flex-start; align-items: flex-end; flex-wrap: wrap; flex-direction: row; gap: 4px;
}
.detailsPage-full .detailsPage-mainHeader .detailsPage-button,
.detailsPage-full .detailsPage-boxHeader .detailsPage-button {
  width: auto; padding: 10px; padding-left: 15px; margin-left: 0px; text-align: center;
}
.detailsPage-full .detailsPage-mainHeader .detailsPage-button a i,
.detailsPage-full .detailsPage-boxHeader .detailsPage-button a i { padding-top: 10px; }
.detailsPage-full .detailsPage-boxHeader { display: flex; flex-direction: row; align-items: center; border-bottom: 1px solid var(--color-divider); margin-bottom: 6px; }
.detailsPage-full .detailsPage-boxHeader .detailsPage-boxTitle { padding: 10px; margin-left: 0px; flex-grow: 1; }
.detailsPage-full .detailsPage-boxHeader .detailsPage-boxTitle strong {
  color: var(--color-primary) !important;
  font-size: var(--text-lg);
  font-family: var(--font-medium);
}
.infoPane .detailsPage-full .detailsPage-col { padding: 0px; }
.infoPane .detailsPage-full .detailsPage-col .detailsPage-box { margin: 0px; border-top: 3px solid var(--color-teal); }
a.infoPane-actionLink { color: var(--color-teal-dark); text-decoration: underline; text-underline-offset: 2px; }
a.infoPane-actionLink:hover { color: var(--color-teal); }
a.infoPane-actionLink:active { color: var(--color-text-muted); text-decoration: none; }

/* Hand-built tab boxes in list pages:  <div class="box" style="border-top: 0;"> */
.tabbable > .nav-tabs + .tab-content { background: transparent; }


/* ==========================================================================
   07  KPI tiles
   Two kinds exist:
     a) shinydashboard valueBox()  ->  div.small-box.bg-aqua  (CSS-controlled)
     b) valueBox_UI()  ->  div.valueBox-custom > .small-box > .inner[style=bg]
        (navy background + white text are INLINE; see section 19 for the
        attribute-targeted override that turns the default navy ones white)
   ========================================================================== */
.small-box {
  font-family: var(--font-bold);
  transition: var(--transition);
  background-color: var(--color-white) !important;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  margin-bottom: 18px;
  overflow: hidden;
}
.small-box.bg-aqua, .small-box.bg-light-blue, .small-box.bg-blue, .small-box.bg-green,
.small-box.bg-yellow, .small-box.bg-red, .small-box.bg-purple, .small-box.bg-teal, .small-box.bg-navy {
  background-color: var(--color-white) !important;
  color: var(--color-primary) !important;
}
.small-box .inner, .mainBox .inner {
  background-color: var(--color-white);
  border-radius: var(--radius-card);
  padding: 16px 18px 14px;
}
.small-box h3 {
  font-family: var(--font-medium);
  font-size: 30px;
  line-height: 1.1;
  margin: 0 0 6px;
  color: var(--color-primary);
  letter-spacing: -0.02em;
  white-space: nowrap;
}
.small-box p {
  font-family: var(--font-regular);
  font-size: var(--text-sm);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-text-subtle);
  margin: 0;
}
.small-box .icon { color: rgba(38,49,58,0.06); }
.small-box > .small-box-footer { background: var(--color-teal-softer); color: var(--color-teal-dark); }
.small-box:hover { box-shadow: var(--shadow-md); }

/* "Sub" boxes (secondary KPI rows) get a muted look instead of a grey fill */
.subBox .inner, #projectDashboard_Box1 .inner, #projectDashboard_Box2 .inner, #projectDashboard_Box3 .inner, #projectDashboard_Box4 .inner,
#outOfSpec_Box1 .inner, #outOfSpec_Box2 .inner, #outOfSpec_Box3 .inner, #retests_Box1 .inner, #retests_Box2 .inner,
#retests_Box3 .inner, #weighingDashboard_Box1 .inner, #weighingDashboard_Box2 .inner, #weighingDashboard_Box3 .inner, #weighingDashboard_Box4 .inner,
#teamDash_Controls_Box1 .inner, #teamDash_Controls_Box2 .inner, #teamDash_Controls_Box3 .inner {
  background-color: var(--color-bg-subtle);
}

/* valueBox_UI(): column wrapper, with the small-box inside */
.valueBox-custom { width: 25%; padding-left: 15px; padding-right: 15px; }
.valueBox-custom .inner { text-align: center; }
.valueBox-custom .small-box { margin-bottom: 0; height: 100%; }
.valueBox-custom .small-box .inner { padding: 14px 10px 12px; }
.valueBox-custom .small-box h3 { font-size: 28px; }

/* valueBar_UI(): a single white bar with divided values */
.valueBar-custom {
  display: flex; justify-content: space-between; width: 100%;
  padding: 16px 18px;
  border-radius: var(--radius-card);
  border: 1px solid var(--color-border-soft);
  box-shadow: var(--shadow-card);
  margin-bottom: 14px;
  background-color: var(--color-white);
}
.valueBar-custom .valueBox { display: flex; flex-direction: row; flex-grow: 1; }
.valueBar-custom .valueBox .valueLine { margin-right: 14px; width: 1px; background-color: var(--color-border-soft); }
.valueBar-custom .valueBox p { font-family: var(--font-regular); font-size: var(--text-sm); letter-spacing: 0.05em; text-transform: uppercase; color: var(--color-text-subtle); margin-bottom: 2px; }
.valueBar-custom .valueBox h3 { font-family: var(--font-medium); color: var(--color-primary); margin-top: 0px; font-size: 24px; }


/* ==========================================================================
   08  Tabs
   ========================================================================== */
/* Generic Bootstrap nav-tabs: underline style instead of boxed tabs */
.nav { font-family: var(--font-medium); color: var(--color-dark); }
.nav-tabs { border-bottom: 1px solid var(--color-border-soft); }
.nav-tabs > li { margin-bottom: -1px; }
.nav-tabs > li > a {
  color: var(--color-text-subtle);
  font-family: var(--font-regular);
  font-size: var(--text-md);
  margin-right: 0;
  padding: 13px 16px;
  border: none;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  background: transparent;
  transition: var(--transition-fast);
}
.nav-tabs > li > a:hover, .nav-tabs > li > a:focus {
  color: var(--color-primary);
  background: var(--color-teal-softer);
  border-color: transparent;
  border-bottom-color: var(--color-border-focus-muted);
}
.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
  color: var(--color-primary);
  font-family: var(--font-medium);
  background: transparent;
  border: none;
  border-bottom: 2px solid var(--color-teal);
  cursor: default;
}
.tab-content > .tab-pane { animation: fadein 0.2s ease; }

/* List-page tab strips (li.tab2 … li.tab7 share the width evenly) */
.nav-tabs > li.tab2 { text-align: center; width: 50%; }
.nav-tabs > li.tab3 { text-align: center; width: 33.33%; }
.nav-tabs > li.tab4 { text-align: center; width: 25%; }
.nav-tabs > li.tab5 { text-align: center; width: 20%; }
.nav-tabs > li.tab6 { text-align: center; width: 16.6666%; }
.nav-tabs > li.tab7 { text-align: center; width: 14.2857%; }

/*.nav-tabs > li.tab2.active > a, .nav-tabs > li.tab3.active > a, .nav-tabs > li.tab4.active > a, .nav-tabs > li.tab5.active > a,
.nav-tabs > li.tab6.active > a, .nav-tabs > li.tab7.active > a {
  background-color: transparent !important;
  color: var(--color-primary) !important;
  box-shadow: none;
}*/

/* Selected tab is a solid navy block (as in V3), with rounded top corners and a soft lift */
.nav-tabs > li.tab2.active > a, .nav-tabs > li.tab3.active > a, .nav-tabs > li.tab4.active > a, .nav-tabs > li.tab5.active > a,
.nav-tabs > li.tab6.active > a, .nav-tabs > li.tab7.active > a,
.nav-tabs > li.tab2.active > a:hover, .nav-tabs > li.tab3.active > a:hover, .nav-tabs > li.tab4.active > a:hover, .nav-tabs > li.tab5.active > a:hover,
.nav-tabs > li.tab6.active > a:hover, .nav-tabs > li.tab7.active > a:hover,
.nav-tabs > li.tab2.active > a:focus, .nav-tabs > li.tab3.active > a:focus, .nav-tabs > li.tab4.active > a:focus, .nav-tabs > li.tab5.active > a:focus,
.nav-tabs > li.tab6.active > a:focus, .nav-tabs > li.tab7.active > a:focus {
  background-color: var(--color-primary) !important;
  color: var(--color-white) !important;
  border-bottom: 2px solid var(--color-primary);
  border-radius: var(--radius-btn) var(--radius-btn) 0 0;
  box-shadow: 0 4px 14px rgba(38, 49, 58, 0.18);
  transition: 0.35s cubic-bezier(0.29, 1.42, 0.79, 1);
}

/* the strips sit inside a box with border-top:0 — round the top corners of the strip itself */
/*.box .tabbable > .nav-tabs { padding: 4px 8px 0; }*/

/* tabDetails_UI(): equal-width tabs inside a details card (li.tabOption.tabDetails) */
.tabDetails { padding-left: 0px; padding-right: 0px; }
.tabDetails .box { border-top: 1px solid var(--color-border-soft); }
.tabDetails .box .box-body { padding: 0px; }
.tabDetails .box .box-body ul.nav li.tabOption { text-align: center; }
.tabDetails .box .box-body .tab-content .tab-pane { padding: 12px; }
.nav-tabs > li.tabDetails { text-align: center; }
.nav-tabs > li.tabDetails.active > a { text-align: center; background-color: transparent; color: var(--color-primary); }
.nav-tabs > li.tabDetails > a.minimal {
  color: var(--color-text-subtle) !important;
  background-color: transparent !important;
  border-radius: 0px !important;
  margin-right: 0px !important;
}
.nav-tabs > li.tabDetails.active > a.minimal {
  color: var(--color-primary) !important;
  border: none !important;
  border-bottom: 2px solid var(--color-teal) !important;
}
.tabDetails .nav-tabs > li.active > a { transition: var(--transition-fast); }

/* AdminLTE tabBox (not currently used, kept harmless) */
.nav-tabs-custom .nav-tabs li.active:hover a, .nav-tabs-custom .nav-tabs li.active a { background-color: transparent; border-color: transparent; }
.nav-tabs-custom .nav-tabs li.active { border-top-color: var(--color-teal); }


/* ==========================================================================
   09  Buttons & dropdown menus
   ========================================================================== */
.btn {
  font-family: var(--font-regular);
  font-size: var(--text-md);
  background: var(--color-white);
  color: var(--color-primary);
  border: 1px solid var(--color-input-border);
  border-radius: var(--radius-btn);
  padding: 7px 14px;
  line-height: 1.45;
  white-space: normal;
  box-shadow: none;
  transition: var(--transition);
}
.btn:hover, .btn:focus { color: var(--color-primary); background: var(--color-teal-softer); border-color: var(--color-teal); outline: none; }
.btn:active, .btn.active { box-shadow: inset 0 1px 2px rgba(38,49,58,0.08); transform: translateY(0.5px); }
.btn:focus-visible { box-shadow: var(--shadow-focus); }
.btn.disabled, .btn[disabled], .btn.shiny-input-disabled { opacity: 0.55; cursor: not-allowed; }
.btn-default { background: var(--color-white); color: var(--color-text-subtle); border-color: var(--color-input-border); }
.btn-default:hover, .btn-default:focus, .btn-default.focus, .btn-default:active { background: var(--color-teal-softer); color: var(--color-primary); border-color: var(--color-teal); }
.btn-primary, .btn-primary:focus { background: var(--color-teal); border-color: var(--color-teal); color: var(--color-white); }
.btn-primary:hover, .btn-primary:active, .btn-primary.active { background: var(--color-teal-dark); border-color: var(--color-teal-dark); color: var(--color-white); }
.btn-success { background: var(--color-success); border-color: var(--color-success); color: var(--color-white); }
.btn-danger  { background: var(--color-error);   border-color: var(--color-error);   color: var(--color-white); }
.btn-warning { background: var(--color-gold);    border-color: var(--color-gold);    color: var(--color-white); }
.btn-info    { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-white); }
.btn-success:hover, .btn-danger:hover, .btn-warning:hover, .btn-info:hover { filter: brightness(0.94); color: var(--color-white); }
.btn-sm, .btn-group-sm > .btn { padding: 4px 10px; font-size: var(--text-sm); border-radius: var(--radius-md); }
.btn-xs, .btn-group-xs > .btn { padding: 2px 8px; font-size: var(--text-xs); border-radius: var(--radius-sm); }
.btn-lg { padding: 10px 18px; font-size: var(--text-lg); border-radius: var(--radius-card); }
.btn .fa, .btn .fas, .btn .far { line-height: inherit; }

.minButton {
  background-color: var(--color-white);
  border-radius: var(--radius-md);
  display: inline-block;
  text-align: center;
  line-height: 15px;
  font-size: var(--text-sm);
  position: relative;
}
/* class="defaultButton" (260 uses): the plain white toolbar button */
.defaultButton {
  background: var(--color-white);
  border: 1px solid var(--color-input-border);
  box-shadow: var(--shadow-sm);
  filter: none;
}
.defaultButton:hover { box-shadow: var(--shadow-md); }
.customButton i { margin-right: 6px; }
.borderlessButton { background: none; border: 1px solid transparent; box-shadow: none; }
.borderlessButton:hover { border: 1px solid var(--color-border-soft); background: var(--color-bg-hover); }

/* Bulk-action menu items: active = navy pill, inactive = muted */
.inactiveButton{
  font-family: var(--font-regular);
  background-color: transparent !important;
  border-color: transparent;
  box-shadow: none;
  text-align: left;
  color: var(--color-text-muted) !important;
  width: 100%;
  cursor: not-allowed;
}
.activeButton{
  font-family: var(--font-regular);
  background-color: var(--color-primary) !important;
  border-color: transparent;
  text-align: left;
  color: var(--color-white) !important;
  width: 100%;
}
.activeButton:hover { background-color: var(--color-teal-dark) !important; }
a#downloadCOAQR > i { margin-right: 12px; }

/* Icon-only buttons inside tables */
.actionButton-table {
  background: var(--color-teal);
  border-color: var(--color-teal);
  color: var(--color-white);
  width: 40px; height: 40px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
}
.actionButton-table:hover { background: var(--color-teal-dark); border-color: var(--color-teal-dark); color: var(--color-white); }
.actionButton-dropdown {
  width: 36px; height: 36px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--color-white);
  border: 1px solid var(--color-input-border);
  box-shadow: var(--shadow-sm);
  filter: none;
  color: var(--color-text-subtle);
}
.actionButton-dropdown:hover { color: var(--color-primary); }
.actionButton-dropdown-table button { width: 36px; height: 36px; background: var(--color-white); }

/* ---- Dropdown menus (Bootstrap + shinyWidgets) ---- */
.dropdown-menu {
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-float);
  padding: 6px;
  font-family: var(--font-regular);
  font-size: var(--text-md);
  animation: fadein 0.18s ease;
}
.dropdown-menu > li > a {
  color: var(--color-text);
  padding: 8px 12px;
  border-radius: var(--radius-md);
  transition: var(--transition-fast);
}
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { background-color: var(--color-teal-softer); color: var(--color-primary); }
.dropdown-menu > .active > a, .dropdown-menu > .active > a:focus, .dropdown-menu > .active > a:hover,
.selectize-dropdown .selected { background-color: var(--color-teal) !important; color: var(--color-white) !important; }
.dropdown-menu .divider { background-color: var(--color-divider); margin: 6px 0; }
.dropdown-shinyWidgets { padding: 6px; }
.sw-dropdown-content { z-index: 200; }

/* Menu rows built from buttons (actionButton_DropdownList etc.) */
.actionButton-dropdown .dropdown-menu {
  position: relative;
  top: -10px; right: 15px; left: auto;
  z-index: 10000;
  color: var(--color-primary);
  width: 160px;
}
.actionButton-dropdown .dropdown-menu li { margin-left: 0; margin-right: 0; }
.actionButton-dropdown-list { margin: 0 0 2px; }
.actionButton-dropdown-list:empty, .dropdown-menu > li:empty { display: none; }
.actionButton-dropdown-list i { margin-left: -2px; margin-right: 10px; width: 18px; text-align: center; color: var(--color-text-subtle); }
.actionButton-dropdown-list .btn { box-shadow: none; }
.actionLink-dropdown-list { margin: 0 0 2px; }
.actionLink-dropdown-list button { padding: 7px 12px; }
.actionLink-dropdown-list span { margin-right: 30px; }
.actionLink-dropdown-list i { width: 20px; position: absolute; right: 10px; padding-top: 3px; color: var(--color-text-subtle); }
.actionButton-dropdown-table ul {
  position: absolute; top: -10px; right: 15px; left: auto;
  z-index: 10000; color: var(--color-primary); width: 160px;
}
.actionButton-dropdown-table li { margin-left: 0; margin-right: 0; }
.actionButton-dropdown-table li button.tableDropdown { margin-left: -8px; margin-right: 8px; width: 20px; }

/* class="tableDropdown" — the menu-row button itself */
.tableDropdown{
  font-family: var(--font-regular);
  background-color: transparent;
  border-color: transparent;
  box-shadow: none;
  text-align: left;
  color: var(--color-text-subtle);
  width: 100%;
  border-radius: var(--radius-md);
}
.tableDropdown:hover, .tableDropdown:focus { background: var(--color-teal-softer); border-color: transparent; color: var(--color-primary); }
.tableDropdown .actionButton-dropdown-list button { padding-left: 12px; }
.tableDropdown .actionButton-dropdown-list button:hover { padding-left: 12px !important; }
.dropdownButton-custom .dropdown-menu .actionButton-dropdown-list button { padding-left: 12px; }
.dropdownButton-custom .dropdown-menu .actionButton-dropdown-list button:hover { padding-left: 12px; background: var(--color-teal-softer); }
.dropdownButton-custom .dropdown-menu .actionButton-dropdown-list a { padding: 7px 12px; border-radius: var(--radius-md); }
.dropdownButton-custom .dropdown-menu .actionButton-dropdown-list a:hover { padding-left: 12px; background: var(--color-teal-softer); }
.dropdownButton-custom .dropdown-menu .actionButton-dropdown-list a i { margin-left: 2px; margin-right: 8px; }

/* dropdownButton_UI() / dropdownList_UI() wrappers */
.dropdownButton-custom { display: inline-block; }
.dropdownButton-custom button.dropdown-toggle { background: var(--color-white); }
.dropdownButton-custom button.dropdown-toggle .caret { margin-left: 6px; opacity: 0.6; }
.dropdownButton-custom ul { min-width: 220px; }
.dropdownButton-custom li { margin-left: 0; margin-right: 0; }
.dropdownList-custom { display: inline-block; float: right; }
.dropdownList-custom button { background: none; border: none; }
.dropdownList-custom ul { width: max-content; }
.dropdownList-custom li { margin-left: 0; margin-right: 0; }

/* Shiny download links behave like buttons */
a.shiny-download-link.btn { text-decoration: none; }

/* ---- Toggles & sliders ---- */
.bootstrap-switch { border-color: var(--color-input-border); border-radius: var(--radius-pill); box-shadow: none; }
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary{
  background: var(--color-teal); color: var(--color-white);
}
.bootstrap-switch .bootstrap-switch-label { background: var(--color-white); }
.bootstrap-switch.bootstrap-switch-focused{ border-color: var(--color-teal); box-shadow: var(--shadow-focus); -webkit-box-shadow: var(--shadow-focus); }
.irs--shiny .irs-bar{ background: var(--color-teal); border-bottom: 1px solid var(--color-teal); border-top: 1px solid var(--color-teal); }
.irs--shiny .irs-from, .irs--shiny .irs-to, .irs--shiny .irs-single{ background-color: var(--color-primary); border-radius: var(--radius-sm); font-family: var(--font-regular); }
.irs--shiny .irs-handle { border-color: var(--color-teal); box-shadow: var(--shadow-sm); }
.irs--shiny .irs-line { background: var(--color-bg-hover); border-color: var(--color-border-soft); }
.irs--shiny .irs-min, .irs--shiny .irs-max { background: var(--color-bg-subtle); border-radius: var(--radius-sm); font-family: var(--font-regular); }

/* ---- Icon links (actionLink with icon class) ---- */
.editPencil, .backArrow, .downloadIcon, .addPlus, .deleteTrash, .refreshIcon, .shareIcon, .defaultIcon { color: var(--color-text-subtle); transition: var(--transition-fast); }
.editPencil:hover, .backArrow:hover, .downloadIcon:hover, .addPlus:hover, .refreshIcon:hover, .shareIcon:hover, .defaultIcon:hover { color: var(--color-teal-dark); }
.deleteTrash:hover { color: var(--color-error); }
.coaIcon_TestCode{
  display: flex; min-width: 50px;
  background: var(--color-purple); color: var(--color-white);
  border-radius: var(--radius-sm);
  font-family: var(--font-regular); font-size: var(--text-sm);
  align-items: center; justify-content: center;
  margin-right: 5px; margin-top: 5px; margin-bottom: 10px;
}

/* Hover tooltips on buttons */
.btn .tooltiptext {
  visibility: hidden;
  background-color: var(--color-primary);
  color: var(--color-white);
  text-align: center;
  border-radius: var(--radius-md);
  padding: 6px 10px;
  font-size: var(--text-sm);
  position: absolute;
  z-index: 1;
  opacity: 0;
  display: block;
  transition: opacity 0.2s;
}
.btn .tooltiptext::after {
  content: ""; position: absolute; top: 100%; left: 50%; margin-left: -5px;
  border-width: 5px; border-style: solid;
  border-color: var(--color-primary) transparent transparent transparent;
}
.btn:hover .tooltiptext { visibility: visible; opacity: 1; }

/* Generic clickable div affordance */
.clickableDiv { cursor: pointer; transition: var(--transition-fast); }
.clickableDiv:hover { filter: brightness(97%); }
.clickableDiv:active { transform: translateY(1px); filter: brightness(92%); }


/* ==========================================================================
   10  Tiles, flags, badges, status, health score, progress
   ========================================================================== */
/* Test-code tiles (testTiles*, grey by design — color is a V3 constant) */
.testTile { position: relative; display: inline-block; }
.testTile button {
  color: var(--color-white);
  background: rgb(144,164,174);
  border: 1px solid transparent;
  min-width: 50px; width: auto;
  height: 30px;
  width: 50px;
  padding: 0 8px;
  font-size: 10px;
  letter-spacing: 0.04em;
  border-radius: var(--radius-sm);
  margin: 1px;
  font-family: var(--font-regular);
  display: flex; justify-content: center; align-items: center;
  box-shadow: none;
  transition: var(--transition-fast);
}
.testTile button:hover, .testTile button:focus { background: rgb(144,164,174); border-color: transparent; color: var(--color-white); filter: brightness(0.92); }
.notificationCard.testTile { text-align: left; padding: 10px; margin-bottom: 0px; }
.notificationCard.testTile .notificationTitle { color: var(--color-purple); font-weight: 600; padding-bottom: 0px; }
.notificationCard.testTile .notificationTitle .notificationText { margin-top: 5px; margin-bottom: 0px; border-top: 1px solid var(--color-divider); padding-top: 10px; }

/* Flag pills (flagTiles_UI: .flagTiles > .stacked-col-title[style=background]) */
.flagTiles { position: relative; display: inline-block; width: max-content; font-size: var(--text-xs);}
.flagTiles .stacked-col-title {
  text-align: center;
  font-size: var(--text-xs) !important;
  line-height: 1;
  padding: 4px 8px;
  display: inline-block;
  margin-right: 2px;
  border-radius: var(--radius-sm);
  font-family: var(--font-regular);
  letter-spacing: 0.02em;
  color: var(--color-white);
}
.flagTiles .stacked-col-title i { margin-right: 4px; }
.flagContainer { display: flex; justify-content: flex-start; align-items: flex-end; flex-wrap: wrap; flex-direction: row; margin-bottom: 5px; gap: 3px; }

.flagButtons { position: relative; display: inline-block; width: max-content; }
.flagButtons button {
  text-align: center; font-size: var(--text-xs); line-height: 1;
  padding: 4px 8px; display: inline; margin-right: 2px;
  border-radius: var(--radius-sm); font-family: var(--font-regular);
  color: var(--color-white); filter: none; border: none; box-shadow: none;
}

/* Info pills (infoTiles_UI) */
.infoTiles { position: relative; display: inline-block; width: max-content; }
.infoTiles .stacked-col-title {
  text-align: center; font-size: var(--text-xs); line-height: 1;
  padding: 4px 9px; display: inline-block; margin-right: 2px;
  border-radius: var(--radius-pill); font-family: var(--font-regular); color: var(--color-white);
}
.infoContainer { display: flex; justify-content: flex-start; align-items: flex-end; flex-wrap: wrap; flex-direction: row; margin-bottom: 5px; gap: 3px; }

/* Order status circles */
.statusCircle{ width: 50px; height: 50px; border-radius: 50%; margin-bottom: 10px; display: flex; justify-content: center; align-items: center; }
.completeCircle { border: 1px solid var(--color-success); background-color: var(--color-status-bg); }
.openCircle { border: 1px dashed var(--color-border); }

/* Progress bar used in tables */
.progressBar-table .mainBox { color: var(--color-white); background-color: var(--color-bg-hover); border-radius: var(--radius-pill); border: none; overflow: hidden; }
.progressBar-table .mainBox .mainBar {
  font-family: var(--font-bold); color: var(--color-white);
  background-color: var(--color-teal);
  border-radius: var(--radius-pill);
  text-align: center; white-space: nowrap;
  line-height: 10px; height: 10px;
  transition: width 0.4s ease;
}
.progressBar-table .textBox { padding-top: 3px; }
.progressBar-table .textBox .displayText { color: var(--color-text-subtle); text-align: right; font-size: var(--text-sm); white-space: nowrap; line-height: 12px; height: 12px; }

/* Pass / Fail tile (colors are inline) */
.statusTile {
  padding: 4px 6px;
  border-radius: var(--radius-pill);
  width: 56px;
  text-align: center;
  font-family: var(--font-regular);
  font-size: var(--text-sm);
  background-color: var(--color-white);
  color: var(--color-dark);
  border: 1px solid var(--color-border);
}

/* Health score dial */
.healthScore-container {
  border-radius: 50%; height: 50px; width: 50px;
  display: flex; align-items: center; justify-content: center;
  background-color: var(--color-white);
  box-shadow: var(--shadow-md);
  border: 2px solid var(--color-white);
}
.healthScore-container .healthScore { font-family: var(--font-medium); font-size: 17px; font-weight: 700; color: var(--color-text-muted); }

/* Review-row highlight */
.highlightRow { background: var(--color-table-highlight); }

/* Invalid picker options */
.invalidOption_Picker{ color: var(--color-error); }


/* ==========================================================================
   11  DataTables  (DT with the plain "display" stylesheet, scrollX=TRUE,
       filter="top" — so header + filter row live in .dataTables_scrollHead)
   ========================================================================== */
.datatables { font-family: var(--font-main); font-weight: 600; }
.table { font-family: var(--font-main); }

/* Sorting glyphs stay hidden (as in V3); the sorted column header is tinted instead */
th.sorting_asc::after, th.sorting_asc::before, th.sorting_desc::after, th.sorting_desc::before,
th.sorting::before, th.sorting::after { content: "" !important; display: none !important; }
table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
table.dataTable thead > tr > td.sorting_asc, table.dataTable thead > tr > td.sorting_desc, table.dataTable thead > tr > td.sorting { padding-right: 12px; }
table.dataTable thead > tr > th.sorting_asc .stacked-col-title,
table.dataTable thead > tr > th.sorting_desc .stacked-col-title { color: var(--color-teal-dark); }

/* Outer frame */
.dataTables_wrapper { font-family: var(--font-regular); color: var(--color-text); }
.dataTables_scroll { border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); background: var(--color-white); }
.dataTables_scrollHead {
  border: none !important;
  border-radius: var(--radius-card) var(--radius-card) 0 0;
  background: var(--color-bg-subtle);
}
.dataTables_scrollBody {
  border: none !important;
  border-top: 1px solid var(--color-border-soft) !important;
  border-radius: 0 0 var(--radius-card) var(--radius-card);
  margin-bottom: 5px;
  overflow: visible !important;                     /* lets row dropdown menus escape the scroll box */
}
.dataTables_wrapper.no-footer .dataTables_scrollBody { border-bottom: none !important; }
table.dataTable { border-collapse: separate; border-spacing: 0; margin: 0 !important; }

/* Header cells */
table.dataTable > thead { background-color: var(--color-bg-subtle) !important; }
table.dataTable > thead > tr > th, table.dataTable > thead > tr > td {
  border-bottom: none;
  padding: 14px 12px 6px;
  font-family: var(--font-regular);
  font-weight: normal;
  color: var(--color-label);
  vertical-align: bottom;
}
table.dataTable > thead > tr > th:first-child { border-top-left-radius: var(--radius-card); }
table.dataTable > thead > tr > th:last-child  { border-top-right-radius: var(--radius-card); }
.stacked-col-title { font-size: var(--text-md); line-height: 17px; margin-bottom: 2px; font-family: var(--font-regular); font-weight: 500; color: var(--color-primary); }
.stacked-col-subtitle { font-size: var(--text-sm); line-height: 16px; letter-spacing: -0.01em; margin-bottom: 0px; color: var(--color-text-subtle); font-style: italic; font-family: var(--font-main); }
table.dataTable tbody .stacked-col-title { font-size: var(--text-md); }
table.dataTable tbody .stacked-col-subtitle { font-size: var(--text-sm); }

/* Column filter row (DT filter="top") */
table.dataTable thead tr:last-child td { padding: 4px 8px 10px; }
/* The sizing clone of <thead> that DataTables puts inside the scroll body must stay 0px high */
div.dataTables_scrollBody > table > thead > tr > th,
div.dataTables_scrollBody > table > thead > tr > td {
  padding-top: 0 !important; padding-bottom: 0 !important;
  border-top: 0 !important; border-bottom: 0 !important; height: 0 !important;
}
table.dataTable.no-footer { border-bottom: none; }
table.dataTable thead input.form-control, table.dataTable thead .form-control {
  height: 34px;
  padding: 5px 10px;
  font-size: 13px;
  border: 1px solid var(--color-input-border);
  border-radius: var(--radius-md);
  box-shadow: none;
  background: var(--color-white);
  font-family: var(--font-regular);
  font-weight: normal;
}
table.dataTable thead .form-control:focus { border-color: var(--color-teal); box-shadow: var(--shadow-focus); }
table.dataTable thead .form-control::placeholder { color: var(--color-text-muted); font-style: normal; }
table.dataTable thead .form-group.has-feedback { margin-bottom: 0; }
table.dataTable thead .form-control-feedback { height: 34px; line-height: 34px; color: var(--color-text-muted); width: 28px; }
input[type='search']:disabled{ visibility: hidden; }
/* numeric-range filter popups */
.dataTables_wrapper .noUi-target { border-color: var(--color-border-soft); box-shadow: none; }
.dataTables_wrapper .noUi-connect { background: var(--color-teal); }

/* Body cells */
table.dataTable > tbody > tr > td {
  padding: 12px 12px;
  vertical-align: middle;
  font-family: var(--font-main);
  font-weight: normal;
  color: var(--color-primary);
  border-top: 1px solid var(--color-divider);
}
table.dataTable.row-border > tbody > tr > *, table.dataTable.display > tbody > tr > * { border-top: 1px solid var(--color-divider); }
table.dataTable > tbody > tr:first-child > td { border-top: none; }
table.dataTable > tbody > tr > td a { color: var(--color-primary); font-family: var(--font-regular); }
table.dataTable > tbody > tr > td a:hover { color: var(--color-teal-dark); }
table.dataTable tbody td.dataTables_empty { padding: 36px 12px; color: var(--color-text-muted); text-align: center; font-style: italic; }

/* Kill the default stripe / sort-column shading; keep a light hover */
table.dataTable.display > tbody > tr.odd > *, table.dataTable.stripe > tbody > tr.odd > *,
table.dataTable.display > tbody > tr > .sorting_1, table.dataTable.order-column > tbody > tr > .sorting_1,
table.dataTable.display > tbody > tr.odd > .sorting_1, table.dataTable.display > tbody > tr.even > .sorting_1 {
  box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0);
}

table.dataTable > tbody > tr.selected > *,
table.dataTable > tbody > tr.odd.selected > *,
table.dataTable > tbody > tr.even.selected > *,
table.dataTable.display > tbody > tr.selected > *,
table.dataTable.display > tbody > tr.odd.selected > *,
table.dataTable.display > tbody > tr.even.selected > *,
table.dataTable.stripe  > tbody > tr.odd.selected > *,
table.dataTable.display > tbody > tr.selected > .sorting_1,
table.dataTable.display > tbody > tr.odd.selected > .sorting_1,
table.dataTable.display > tbody > tr.even.selected > .sorting_1,
table.dataTable.order-column > tbody > tr.selected > .sorting_1 {
  background-color: var(--color-teal-selected) !important;
  box-shadow: inset 0 0 0 9999px var(--color-teal-selected) !important;
  color: var(--color-teal-dark);
}

table.dataTable.display > tbody > tr.selected:hover > *,
table.dataTable.display > tbody > tr.odd.selected:hover > *,
table.dataTable.display > tbody > tr.even.selected:hover > *,
table.dataTable.hover   > tbody > tr.selected:hover > *,
table.dataTable.display > tbody > tr.selected:hover > .sorting_1,
table.dataTable.display > tbody > tr.odd.selected:hover > .sorting_1,
table.dataTable.display > tbody > tr.even.selected:hover > .sorting_1 {
  box-shadow: inset 0 0 0 9999px var(--color-teal-selected-hover) !important;
}

/* accent bar must come after the rules above so its box-shadow wins */
table.dataTable > tbody > tr.selected > td:first-child,
table.dataTable > tbody > tr.odd.selected > td:first-child,
table.dataTable > tbody > tr.even.selected > td:first-child {
  box-shadow: inset 4px 0 0 var(--color-teal), inset 0 0 0 9999px var(--color-teal-selected) !important;
}
table.dataTable > tbody > tr.selected:hover > td:first-child {
  box-shadow: inset 4px 0 0 var(--color-teal-dark), inset 0 0 0 9999px var(--color-teal-selected-hover) !important;
}

/* Hover: lightest step */
table.dataTable.display > tbody > tr:hover > *,
table.dataTable.hover   > tbody > tr:hover > *,
table.dataTable.display > tbody > tr:hover > .sorting_1,
table.dataTable.hover   > tbody > tr:hover > .sorting_1 {
  box-shadow: inset 0 0 0 9999px var(--color-teal-softer);
}

/* Selected: clearly darker tint, stronger accent bar, text shifts to teal-dark */
table.dataTable tbody tr.selected,
table.dataTable tbody tr.selected > td,
table.dataTable.display > tbody > tr.selected > *,
table.dataTable.display > tbody > tr.selected > .sorting_1 {
  background-color: var(--color-teal-selected) !important;
  box-shadow: inset 0 0 0 9999px var(--color-teal-selected);
  color: var(--color-teal-dark);
}
table.dataTable tbody tr.selected > td:first-child {
  box-shadow: inset 4px 0 0 var(--color-teal), inset 0 0 0 9999px var(--color-teal-selected);
}

/* Selected + hover: one more step so the row still responds to the mouse */
table.dataTable.display > tbody > tr.selected:hover > *,
table.dataTable.hover   > tbody > tr.selected:hover > * {
  box-shadow: inset 0 0 0 9999px var(--color-teal-selected-hover);
}
table.dataTable tbody tr.selected:hover > td:first-child {
  box-shadow: inset 4px 0 0 var(--color-teal-dark), inset 0 0 0 9999px var(--color-teal-selected-hover);
}

/* Adjacent selected rows: keep a visible divider */
table.dataTable.row-border > tbody > tr.selected + tr.selected > td,
table.dataTable.display    > tbody > tr.selected + tr.selected > td { border-top-color: rgba(63,134,134,0.30); }

/* Top controls: "Show N entries" + Search */
.dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter { padding: 4px 0 10px; font-family: var(--font-regular); color: var(--color-text-subtle); font-size: 13px; }
table.dataTable .dataTables_filter, table.dataTable .dataTables_length { line-height: 1; margin-bottom: 5px; }
.dataTables_wrapper .dataTables_length select {
  height: 34px;
  padding: 4px 28px 4px 10px;
  margin: 0 4px;
  border: 1px solid var(--color-input-border);
  border-radius: var(--radius-md);
  background: var(--color-white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%233F8686' stroke-width='1.8' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
  appearance: none; -webkit-appearance: none;
  font-family: var(--font-regular);
  color: var(--color-text);
}
.dataTables_wrapper .dataTables_filter input {
  height: 36px;
  width: 220px;
  margin-left: 8px;
  padding: 6px 12px;
  border: 1px solid var(--color-input-border);
  border-radius: var(--radius-btn);
  background: var(--color-white);
  box-shadow: none;
  font-family: var(--font-regular);
  color: var(--color-text);
  transition: var(--transition);
}
.dataTables_wrapper .dataTables_filter input:focus { border-color: var(--color-teal); box-shadow: var(--shadow-focus); outline: none; }

/* Bottom controls: info + pagination */
.dataTables_wrapper .dataTables_info { padding-top: 14px; color: var(--color-text-subtle); font-size: 13px; font-family: var(--font-regular); }
.dataTables_wrapper .dataTables_paginate { padding-top: 10px; }
.dataTables_wrapper .dataTables_paginate .paginate_button {
  min-width: 32px; height: 32px;
  padding: 0 8px;
  margin-left: 4px;
  line-height: 30px;
  border: 1px solid transparent;
  border-radius: var(--radius-btn);
  background: transparent;
  color: var(--color-text) !important;
  font-family: var(--font-regular);
  font-size: 13px;
  transition: var(--transition-fast);
}
.dataTables_wrapper .dataTables_paginate .paginate_button:hover,
.dataTables_wrapper .dataTables_paginate .paginate_button:focus {
  background: var(--color-teal-softer);
  border-color: var(--color-border-soft);
  color: var(--color-primary) !important;
  box-shadow: none;
}
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-white) !important;
}
.dataTables_wrapper .dataTables_paginate .paginate_button:active { background: var(--color-teal-softer); box-shadow: none; color: var(--color-primary) !important; }
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover { opacity: 0.4; background: transparent; border-color: transparent; cursor: default; }
.dataTables_wrapper .dataTables_paginate .ellipsis { padding: 0 6px; color: var(--color-text-muted); }

/* "Processing…" overlay */
.dataTables_wrapper .dataTables_processing {
  background: var(--color-white);
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-btn);
  box-shadow: var(--shadow-float);
  color: var(--color-text-subtle);
  font-family: var(--font-regular);
  font-size: 13px;
  padding: 10px 16px;
  width: auto; margin-left: 0; left: 50%; transform: translateX(-50%);
}

/* Thumbnail / avatar cells */
.tableImage{
  border-radius: 50%;
  height: 50px; width: 50px;
  border: 1px solid var(--color-white);
  box-shadow: var(--shadow-md);
  object-fit: cover;
  background: var(--color-white);
}
.tableImage.taken{ border: 2px solid var(--color-success); }
button.tableImage { padding: 0; overflow: hidden; }
button.tableImage:hover { box-shadow: var(--shadow-float); border-color: var(--color-white); }
button.tableImage img.tableImage { box-shadow: none; }

/* Generic Bootstrap tables used outside DT */
.table > thead > tr > th { border-bottom: 1px solid var(--color-border-soft); font-family: var(--font-regular); color: var(--color-label); }
.table > tbody > tr > td { border-top: 1px solid var(--color-divider); }

/* dataDisplay_Table(): card-per-row read-only tables */
.dataDisplay-table.top .header { padding: 6px 10px; margin: 0px; }
.dataDisplay-table.top .header strong { color: var(--color-text-subtle); font-size: var(--text-xs); letter-spacing: 0.06em; text-transform: uppercase; font-family: var(--font-regular); }
.dataDisplay-table.item {
  margin-bottom: 6px;
  border-radius: var(--radius-btn);
  border: 1px solid var(--color-border-soft);
  background: var(--color-white);
  transition: var(--transition-fast);
}
.dataDisplay-table.item:hover { border-color: var(--color-border); box-shadow: var(--shadow-sm); }
.dataDisplay-table.item .itemFlex { justify-content: center; display: flex; flex-direction: row; flex-wrap: wrap; width: 100%; align-items: center; }
.dataDisplay-table.item .itemFlex .itemCol { text-align: left; padding: 10px; }
.dataDisplay-table.item .itemFlex .itemCol p { font-size: var(--text-xs); letter-spacing: 0.05em; text-transform: uppercase; color: var(--color-text-subtle); margin-bottom: -8px; font-family: var(--font-regular); }
.dataDisplay-table.item .itemFlex .itemCol h5 { font-size: var(--text-md); color: var(--color-primary); }
.dataDisplay-table.item.v2 { margin-bottom: 0; border-radius: 0; border-left: none; border-right: none; border-top: none; }
.dataDisplay-table.item.v2:hover { box-shadow: none; }

/* compressedTable_UI() */
.compressedTable { padding: 10px; }
.compressedTable .head { margin-bottom: 3px; }
.compressedTable .head .headFlex { justify-content: center; display: flex; flex-direction: row; flex-wrap: wrap; width: 100%; align-items: center; }
.compressedTable .head .headFlex .headCol { text-align: left; padding: 0px; }
.compressedTable .head .headFlex .headCol h5 { font-size: var(--text-xs); letter-spacing: 0.05em; text-transform: uppercase; color: var(--color-text-subtle); margin-bottom: 4px; font-family: var(--font-regular); }
.compressedTable .item { margin-bottom: 2px; border-radius: var(--radius-sm); background-color: transparent; border-left: 2px solid transparent; }
.compressedTable .item.oddRow { background-color: var(--color-bg-subtle); }
.compressedTable .item:hover { border-left-color: var(--color-teal); }
.compressedTable .item .itemFlex { justify-content: center; display: flex; flex-direction: row; flex-wrap: wrap; width: 100%; align-items: center; }
.compressedTable .item .itemFlex .itemCol { text-align: left; padding: 0px 4px; }
.compressedTable .item .itemFlex .itemCol h5 { font-size: var(--text-md); color: var(--color-text); margin: 6px 0; }


/* ==========================================================================
   12  Forms & inputs
   ========================================================================== */
.form-group, .shiny-input-container { margin-bottom: 18px; }
.textInput-custom, .selectInput-custom, .pickerInput-custom { width: 90%; }

/* Labels */
.shiny-input-container label { color: var(--color-label); letter-spacing: 0.025em; margin-bottom: 4px; }
.control-label, .shiny-input-container > label, .form-group > label {
  font-family: var(--font-regular);
  font-size: var(--text-xs);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-label);
  margin-bottom: 6px;
  display: block;
}

/* Base text / number / select / textarea */
.shiny-input-container select { transition: border-color ease-in-out 0.17s, box-shadow ease-in-out 0.17s; }
.shiny-input-text, .shiny-input-number, .form-control { border-radius: var(--radius-md); }
.shiny-input-container input[type="text"],
.shiny-input-container input[type="number"],
.shiny-input-container input[type="password"],
.shiny-input-container select,
.shiny-input-container textarea,
.form-control {
  font-family: var(--font-regular);
  font-size: var(--text-md);
  color: var(--color-text);
  background-color: var(--color-white);
  border: 1px solid var(--color-input-border);
  border-radius: var(--radius-md);
  padding: 8px 12px;
  width: 100%;
  box-shadow: none;
  transition: var(--transition);
  outline: none;
  appearance: none;
  -webkit-appearance: none;
}
.form-control::placeholder { color: var(--color-text-muted); }
.shiny-input-container input[type="text"]:hover,
.shiny-input-container input[type="number"]:hover,
.shiny-input-container input[type="password"]:hover,
.shiny-input-container select:hover,
.shiny-input-container textarea:hover,
.form-control:hover { border-color: var(--color-teal); }
.shiny-input-container input[type="text"]:focus,
.shiny-input-container input[type="number"]:focus,
.shiny-input-container input[type="password"]:focus,
.shiny-input-container select:focus,
.shiny-input-container textarea:focus,
.form-control:focus { border-color: var(--color-teal); box-shadow: var(--shadow-focus); }
.shiny-input-container input:disabled,
.shiny-input-container select:disabled,
.shiny-input-container textarea:disabled,
.form-control:disabled, .form-control[readonly] {
  background-color: var(--color-bg-subtle);
  border-color: var(--color-border-soft);
  color: var(--color-text-muted);
  cursor: not-allowed;
  box-shadow: none;
}
.shiny-input-container input[type="text"].shiny-input-text,
.shiny-input-container .shiny-input-password { height: 40px; font-weight: 400; }
textarea.form-control, .shiny-input-textarea { min-height: 80px; line-height: 1.5; resize: vertical; }

/* ---- Native <select> (non-selectize) ---- */
.shiny-input-container.selectInput select,
div[id$="Input"] select,
.form-group select.form-control {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%233F8686' stroke-width='1.8' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 36px;
  cursor: pointer;
}
.shiny-input-container.selectInput select:focus,
div[id$="Input"] select:focus { border-color: var(--color-teal); box-shadow: var(--shadow-focus); }

/* ---- pickerInput (bootstrap-select) ---- */
.bootstrap-select .btn.dropdown-toggle {
  font-family: var(--font-regular);
  font-size: var(--text-md) !important;
  color: var(--color-text) !important;
  background-color: var(--color-white) !important;
  border: 1px solid var(--color-input-border) !important;
  border-radius: var(--radius-md) !important;
  height: 40px;
  padding: 8px 36px 8px 12px;
  box-shadow: none !important;
  transition: var(--transition);
  text-align: left;
}
.bootstrap-select .btn.dropdown-toggle .caret, .selectize-input:after { display: none; }
.bootstrap-select .btn.dropdown-toggle:hover { border-color: var(--color-teal) !important; }
.bootstrap-select.open .btn.dropdown-toggle, .bootstrap-select .btn.dropdown-toggle:focus {
  border-color: var(--color-teal) !important;
  box-shadow: var(--shadow-focus) !important;
  outline: none !important;
}
.bootstrap-select .btn.dropdown-toggle::after,
.selectize-control.single .selectize-input:not(.no-arrow):after,
.selectize-control.single .selectize-input:not(.no-arrow).dropdown-active:after {
  border: none !important;
  content: '';
  display: inline-block;
  width: 12px; height: 8px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%233F8686' stroke-width='1.8' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center;
  position: absolute; right: 12px; top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
  margin-top: 0px;
}
.bootstrap-select .dropdown-menu {
  font-family: var(--font-regular);
  font-size: var(--text-md);
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-float);
  padding: 6px;
  background-color: var(--color-white);
  margin-top: 4px;
}
.bootstrap-select .dropdown-menu li a { color: var(--color-text); padding: 8px 12px; border-radius: var(--radius-md); transition: var(--transition-fast); }
.bootstrap-select .dropdown-menu li a:hover, .bootstrap-select .dropdown-menu li a:focus { background-color: var(--color-teal-softer); color: var(--color-primary); }
.bootstrap-select .dropdown-menu li.selected a { background-color: var(--color-teal) !important; color: var(--color-white) !important; }
.bootstrap-select .dropdown-menu li.disabled a { color: var(--color-text-muted); }
.bootstrap-select .bs-actionsbox { padding: 4px 6px 8px; }
.bootstrap-select .bs-actionsbox .btn-group .btn { font-size: var(--text-sm); padding: 4px 8px; }
.bootstrap-select .bs-searchbox { padding: 4px 6px 8px; }
.bootstrap-select .bs-searchbox input {
  font-family: var(--font-regular);
  font-size: 13px;
  border: 1px solid var(--color-input-border);
  border-radius: var(--radius-md);
  padding: 6px 10px;
  color: var(--color-text);
  transition: var(--transition);
}
.bootstrap-select .bs-searchbox input:focus { border-color: var(--color-teal); box-shadow: var(--shadow-focus); outline: none; }
.bootstrap-select .filter-option-inner-inner .badge {
  background-color: var(--color-teal); color: var(--color-white);
  border-radius: var(--radius-pill); font-size: var(--text-xs); padding: 2px 8px; font-family: var(--font-demi);
}
.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark { top: 10px !important; }
.bootstrap-select .dropdown-menu li.dropdown-header { font-family: var(--font-regular); font-size: var(--text-xs); letter-spacing: 0.06em; text-transform: uppercase; color: var(--color-text-subtle); }

/* ---- selectize (selectInput) ---- */
.selectize-input {
  font-family: var(--font-regular) !important;
  font-weight: 400;
  min-height: 40px !important;
  height: 100% !important;
  padding: 8px 36px 8px 12px !important;
  border: 1px solid var(--color-input-border) !important;
  border-radius: var(--radius-md) !important;
  box-shadow: none !important;
  transition: var(--transition);
}
.selectize-input:hover { border-color: var(--color-teal) !important; }
.selectize-input.focus, .selectize-input.dropdown-active { border-color: var(--color-teal) !important; box-shadow: var(--shadow-focus) !important; }
.selectize-input.dropdown-active { border-radius: var(--radius-md) !important; }
.selectize-dropdown, .selectize-input, .selectize-input input { font-family: var(--font-regular) !important; color: var(--color-text); font-weight: 400; }
.shiny-input-select.selectize-control, .shiny-input-select.selectize-control .selectize-input { box-shadow: none !important; }
.selectize-dropdown {
  border: 1px solid var(--color-border-soft) !important;
  border-radius: var(--radius-card) !important;
  box-shadow: var(--shadow-float) !important;
  margin-top: 4px;
  padding: 4px;
  z-index: 10002;
}
.selectize-dropdown .option { padding: 8px 10px; border-radius: var(--radius-md); }
.selectize-dropdown .active { background-color: var(--color-teal-softer); color: var(--color-primary); }
.selectize-dropdown .optgroup-header { font-family: var(--font-regular); font-size: var(--text-xs); letter-spacing: 0.06em; text-transform: uppercase; color: var(--color-text-subtle); }
.selectize-control.multi .selectize-input > div {
  background: var(--color-teal-soft); color: var(--color-teal-dark);
  border: none; border-radius: var(--radius-sm); padding: 2px 8px; font-family: var(--font-regular);
}
.selectize-control.multi .selectize-input > div.active { background: var(--color-teal); color: var(--color-white); }
.selectize-control.plugin-remove_button [data-value] .remove { border-left-color: rgba(0,0,0,0.08); }

/* ---- Numeric ---- */
.shiny-input-container input[type="number"].shiny-input-number { height: 40px; }
.shiny-input-container.numericInput, div.form-group.shiny-input-container:has(input[type="number"]) { position: relative; }
.shiny-input-container input[type="number"] { padding-right: 36px; }
.shiny-input-container input[type="number"]::-webkit-inner-spin-button,
.shiny-input-container input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; }
.input-group-btn .btn, .input-group > .btn {
  background-color: var(--color-bg-subtle);
  border: 1px solid var(--color-input-border);
  color: var(--color-teal);
  font-size: var(--text-lg);
  line-height: 1;
  height: 40px; width: 36px;
  transition: var(--transition);
  cursor: pointer;
}
.input-group-btn .btn:hover, .input-group > .btn:hover { background-color: var(--color-teal); border-color: var(--color-teal); color: var(--color-white); }
.input-group-btn:first-child .btn { border-radius: var(--radius-md) 0 0 var(--radius-md); border-right: none; }
.input-group-btn:last-child .btn { border-radius: 0 var(--radius-md) var(--radius-md) 0; border-left: none; }
.input-group .form-control { border-radius: 0; border-left: none; border-right: none; }
.input-group .form-control:first-child { border-left: 1px solid var(--color-input-border); border-radius: var(--radius-md) 0 0 var(--radius-md); }
.input-group .form-control:focus { z-index: 1; }
.input-group-addon { background: var(--color-bg-subtle); border-color: var(--color-input-border); color: var(--color-text-subtle); font-family: var(--font-regular); border-radius: var(--radius-md); }

/* ---- Checkbox ---- */
.shiny-input-container.checkboxInput .checkbox, .shiny-input-container .checkbox { margin: 4px 0; }
.checkbox-inline + .checkbox-inline, .radio-inline + .radio-inline { margin-left: 5px !important; }
.shiny-input-container .checkbox label, .shiny-input-container.checkboxInput label {
  display: flex; align-items: center; gap: 10px;
  font-family: var(--font-regular); font-size: var(--text-md); color: var(--color-text);
  cursor: pointer; user-select: none; text-transform: none; letter-spacing: normal;
}
.shiny-input-container .checkbox label input[type="checkbox"],
.shiny-input-container.checkboxInput input[type="checkbox"] {
  position: absolute;
  display: inline-flex; flex-shrink: 0;
  width: 18px; height: 18px;
  border: 1px solid var(--color-input-border);
  border-radius: var(--radius-sm);
  background-color: var(--color-white);
  box-shadow: none;
  transition: var(--transition);
  appearance: none; -webkit-appearance: none;
  margin: 1px 0 0 -22px;                            /* Bootstrap offsets the box into the label's padding */
  cursor: pointer;
}
.shiny-input-container .checkbox label:hover input[type="checkbox"] { border-color: var(--color-teal); }
.shiny-input-container .checkbox label span { margin-left: 5px; margin-top: 4px; }
.shiny-input-container .checkbox label input[type="checkbox"]:checked,
.shiny-input-container .checkbox input[type="checkbox"]:checked,
.shiny-input-container.checkboxInput input[type="checkbox"]:checked {
  background-color: var(--color-teal);
  border-color: var(--color-teal);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='9' viewBox='0 0 11 9'%3E%3Cpath d='M1 4l3.5 3.5L10 1' stroke='%23ffffff' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
}
.shiny-input-container .checkbox label input[type="checkbox"]:focus-visible,
.shiny-input-container.checkboxInput input[type="checkbox"]:focus-visible { box-shadow: var(--shadow-focus); }
.shiny-input-container .checkbox label input[type="checkbox"]:disabled,
.shiny-input-container.checkboxInput input[type="checkbox"]:disabled {
  color: var(--color-text-muted); cursor: not-allowed;
  background-color: var(--color-bg-subtle); border-color: var(--color-border-soft);
}
.shiny-input-container.checkboxGroupInput .checkbox-group-options .checkbox { margin-bottom: 6px; }
.shiny-input-checkboxgroup .checkbox-inline, .shiny-input-checkboxgroup .checkbox { font-family: var(--font-regular); text-transform: none; letter-spacing: normal; font-size: var(--text-md); }

/* ---- Radio ---- */
.shiny-input-radiogroup .radio label, .shiny-input-radiogroup .radio-inline {
  font-family: var(--font-regular); font-size: var(--text-md); color: var(--color-text);
  text-transform: none; letter-spacing: normal; cursor: pointer;
}
.shiny-input-radiogroup input[type="radio"], input[type="radio"] { accent-color: var(--color-teal); width: 15px; height: 15px; margin-top: 2px; }

/* ---- Date ---- */
.shiny-input-container.shiny-date-range-input .input-daterange input.form-control,
.shiny-input-container.shiny-date-input input.form-control,
.shiny-date-input.shiny-input-container input[type="text"] { height: 40px !important; }
.shiny-input-container.dateInput input[type="text"].form-control,
.shiny-date-input input.form-control,
.input-daterange input.form-control,
div[id$="date"] input.form-control {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none'%3E%3Crect x='3' y='4' width='18' height='17' rx='2' stroke='%233F8686' stroke-width='1.8'/%3E%3Cpath d='M16 2v4M8 2v4M3 9h18' stroke='%233F8686' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 40px;
  cursor: pointer;
  text-align: left;
}
.datepicker { z-index: 100000 !important; }
.datepicker {
  font-family: var(--font-regular) !important;
  font-size: 13px !important;
  border: 1px solid var(--color-border-soft) !important;
  border-radius: var(--radius-card) !important;
  box-shadow: var(--shadow-float) !important;
  padding: 10px !important;
  background-color: var(--color-white) !important;
  color: var(--color-text) !important;
}
.datepicker table tr td, .datepicker table tr th { border-radius: var(--radius-md) !important; transition: var(--transition); }
.datepicker table tr td:hover, .datepicker table tr th:hover { background-color: var(--color-teal-softer) !important; }
.datepicker table tr td.active, .datepicker table tr td.active:hover, .datepicker table tr td span.active {
  background-color: var(--color-teal) !important; background-image: none !important;
  color: var(--color-white) !important; border-color: transparent !important; text-shadow: none !important;
}
.datepicker table tr td.today { background-color: var(--color-primary) !important; background-image: none !important; color: var(--color-white) !important; font-family: var(--font-regular) !important; }
.datepicker table tr td.day.disabled { color: var(--color-text-muted) !important; }
.datepicker .datepicker-switch, .datepicker .prev, .datepicker .next { color: var(--color-primary) !important; font-family: var(--font-medium) !important; }
.datepicker .prev:hover, .datepicker .next:hover, .datepicker .datepicker-switch:hover { background-color: var(--color-teal-softer) !important; border-radius: var(--radius-md) !important; }
.datepicker table tr th.dow { color: var(--color-text-subtle); font-size: var(--text-xs); text-transform: uppercase; letter-spacing: 0.05em; }
.datepicker table tr td.range, .datepicker table tr td.range:hover { background-color: var(--color-teal-soft) !important; background-image: none !important; border-radius: 0 !important; color: var(--color-teal-dark) !important; }
.datepicker table tr td.range-start { border-radius: var(--radius-md) 0 0 var(--radius-md) !important; background-color: var(--color-teal) !important; color: var(--color-white) !important; }
.datepicker table tr td.range-end   { border-radius: 0 var(--radius-md) var(--radius-md) 0 !important; background-color: var(--color-teal) !important; color: var(--color-white) !important; }

.input-daterange .input-group-addon,
.shiny-input-container.dateRangeInput .input-daterange .input-group-addon {
  display: table-cell; vertical-align: middle; padding: 0 10px;
  font-family: var(--font-regular); font-size: var(--text-sm); color: var(--color-text-muted);
  background-color: var(--color-bg-subtle);
  border: 1px solid var(--color-input-border); border-left: none; border-right: none;
  height: 40px; border-radius: 0;
}
.input-daterange input:first-child { border-radius: var(--radius-md) 0 0 var(--radius-md); border-right: none; }
.input-daterange input:last-child  { border-radius: 0 var(--radius-md) var(--radius-md) 0; border-left: none; }
#air-datepicker-global-container{ z-index: 20001; }

/* ---- File input ---- */
.shiny-input-container .btn.btn-file { width: 100%; height: 40px; border-radius: var(--radius-md) 0 0 var(--radius-md); }
.shiny-input-container .input-group .btn-file + .form-control,
.shiny-input-container .input-group .form-control[readonly] { border-radius: 0 var(--radius-md) var(--radius-md) 0; border-right: 1px solid var(--color-input-border); height: 40px; }
.shiny-file-input-progress { margin-top: 4px; height: 6px; border-radius: var(--radius-pill); }
.shiny-file-input-progress .progress-bar { background: var(--color-teal); border-radius: var(--radius-pill); }

/* ---- Validation ---- */
.has-error .form-control, .shiny-input-container.has-error input, .shiny-input-container.has-error select {
  border-color: var(--color-error) !important; box-shadow: 0 0 0 3px var(--color-error-state) !important;
}
.has-error .control-label, .has-error .help-block { color: var(--color-error) !important; }
.help-block { font-family: var(--font-regular); font-size: var(--text-sm); color: var(--color-text-muted); margin-top: 4px; }

/* Optional card-style form panel */
.shiny-form-panel {
  background-color: var(--color-white);
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-card);
  padding: 24px 28px;
  box-shadow: var(--shadow-card);
}
.well { background: var(--color-bg-subtle); border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); box-shadow: none; }


/* ==========================================================================
   13  Modals, alerts, notifications, tooltips
   ========================================================================== */
#shiny-modal{ z-index: 99998; }
.modal-backdrop.in { opacity: 0.45; background: var(--color-primary); }
.modal.fade .modal-dialog { transform: translate(0, 12px) scale(0.98); transition: transform 0.2s ease-out, opacity 0.2s; }
.modal.in .modal-dialog { transform: translate(0, 0) scale(1); }
.modal-dialog{ font-family: var(--font-main); }
.modal-content{
  border-radius: var(--radius-lg);
  border: 1px solid var(--color-border-soft);
  box-shadow: var(--shadow-modal);
  background: var(--color-white);
}
.modal-header{
  border-bottom: 1px solid var(--color-divider);
  color: var(--color-primary);
  font-family: var(--font-medium) !important;
  font-size: var(--text-xl);
  padding: 18px 24px 14px;
}
.modal-header .modal-title { font-family: var(--font-medium); font-size: var(--text-xl); color: var(--color-primary); line-height: 1.3; }
.modal-header .close { font-size: 24px; color: var(--color-text-muted); opacity: 1; text-shadow: none; margin-top: -2px; transition: var(--transition-fast); }
.modal-header .close:hover { color: var(--color-primary); }
.modal-body{ font-family: var(--font-main); padding: 20px 24px; }
.modal-footer{
  border-top: 1px solid var(--color-divider);
  font-family: var(--font-medium);
  padding: 14px 24px;
  background: var(--color-bg-subtle);
  border-radius: 0 0 var(--radius-lg) var(--radius-lg);
}
.modal-footer .btn + .btn { margin-left: 8px; }
/* Confirm — the app convention is tagList(actionButton("…Confirm"), modalButton("Cancel")),
   so the first action/download button in a footer reads as the primary action */
.modal-footer > .btn.action-button:first-child:not(.defaultButton),
.modal-footer > .shiny-download-link.btn:first-child { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-white); }
.modal-footer > .btn.action-button:first-child:not(.defaultButton):hover,
.modal-footer > .shiny-download-link.btn:first-child:hover { background: var(--color-teal-dark); border-color: var(--color-teal-dark); color: var(--color-white); }
/* Tabs inside modals */
.modal-body .nav-tabs > li > a { padding: 10px 14px; }
/* Grey modal backgrounds injected by 6 detail modals (.modal-content{background:#eee}) — soften panels inside them */
.modal-content .boxStyle, .modal-content .box { box-shadow: var(--shadow-card) !important; }

/* shinyalert / sweetalert */
.sweet-alert{
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-lg) !important;
  box-shadow: var(--shadow-modal);
  font-family: var(--font-main);
}
.sweet-alert h2 { font-family: var(--font-medium); color: var(--color-primary); font-size: 22px; }
.sweet-alert p { color: var(--color-text); font-size: var(--text-md); }
.sweet-alert button, .sweet-alert .confirm {
  border-radius: var(--radius-btn) !important;
  font-family: var(--font-regular) !important;
  box-shadow: none !important;
  background-color: var(--color-primary) !important;
  padding: 8px 22px !important;
}
.sweet-alert button.cancel { background-color: var(--color-white) !important; color: var(--color-primary) !important; border: 1px solid var(--color-input-border) !important; }
.sweet-alert .sa-icon.sa-success .sa-placeholder { border-color: var(--color-success); }
.sweet-alert .sa-icon.sa-success .sa-line { background-color: var(--color-success); }
.sweet-alert .sa-icon.sa-error { border-color: var(--color-error); }
.sweet-alert .sa-icon.sa-error .sa-line { background-color: var(--color-error); }
.sweet-alert .sa-icon.sa-warning { border-color: var(--color-gold); }
.sweet-alert .sa-icon.sa-warning .sa-body, .sweet-alert .sa-icon.sa-warning .sa-dot { background-color: var(--color-gold); }

/* Shiny showNotification */
.shiny-notification {
  border-radius: var(--radius-card);
  border: 1px solid var(--color-border-soft);
  box-shadow: var(--shadow-float);
  background: var(--color-white);
  color: var(--color-text);
  font-family: var(--font-regular);
  opacity: 1;
  padding: 12px 36px 12px 16px;
}
.shiny-notification-message { border-left: 3px solid var(--color-teal); }
.shiny-notification-warning { border-left: 3px solid var(--color-gold); }
.shiny-notification-error   { border-left: 3px solid var(--color-error); }
.shiny-notification-close { color: var(--color-text-muted); }

/* Notification cards (bell menu) */
.notificationCard {
  margin-bottom: 8px;
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  border: 1px solid var(--color-border-soft);
  background: var(--color-white);
  transition: var(--transition-fast);
}
.notificationCard:hover { box-shadow: var(--shadow-md); }
.notificationCard .notificationTitle { font-size: var(--text-md); font-family: var(--font-medium); color: var(--color-primary); padding-right: 50px; }
.notificationCard .notificationInfo { margin-bottom: 16px; border-bottom: 1px solid var(--color-divider); padding-bottom: 10px; }
.notificationCard .notificationText { margin-bottom: 0px; font-size: 13px; color: var(--color-text); line-height: 1.5; }
.notificationCount { text-align: center; font-size: var(--text-sm); font-family: var(--font-medium); margin-top: 10px; color: var(--color-text-subtle); }
.notificationDisclaimer { text-align: center; font-size: var(--text-md); font-family: var(--font-medium); padding: 20px; padding-top: 0px; color: var(--color-text-subtle); }

/* Hover tooltips (.tooltip-container + span.tooltiptext) */
.tooltip-container .tooltiptext {
  visibility: hidden;
  background-color: var(--color-white);
  color: var(--color-text);
  border: 1px solid var(--color-border-soft);
  box-shadow: var(--shadow-float);
  text-align: center;
  border-radius: var(--radius-btn);
  padding: 8px 12px;
  position: absolute;
  z-index: 9999;
  overflow: visible !important;
  overflow-wrap: break-word;
  opacity: 0;
  left: 50%;
  bottom: 120%;
  transform: translateX(-50%);
  white-space: normal !important;
  max-width: 400px;
  width: max-content;
  font-size: 13px;
  line-height: 1.45;
  font-family: var(--font-regular);
  display: block;
  transition: opacity 0.2s;
  text-transform: none;
  letter-spacing: normal;
}
.tooltip-container.addToolTip { position: relative; display: inline-block; }
.tooltip-container .tooltiptext.left { transform: translateX(-95%) !important; }
.daily-schedule-container .tooltip-container .tooltiptext { white-space: normal !important; }
.tooltip-container .tooltiptext::after {
  content: ""; position: absolute; top: 100%; left: 50%; margin-left: -6px;
  border-width: 6px; border-style: solid;
  border-color: var(--color-white) transparent transparent transparent;
  filter: drop-shadow(0 1px 0 var(--color-border-soft));
}
.tooltip-container .tooltiptext.left::after { left: 95% !important; }
.tooltip-container:hover .tooltiptext { visibility: visible; opacity: 1; }
.tooltip-container.toolTipIcon { position: relative; display: inline-block; }
.tooltip-container.toolTipIcon i { color: var(--color-teal); background-color: transparent; font-size: 11px; padding: 5px; }
.tooltip-container.toolTipIcon span { white-space: normal !important; font-size: var(--text-md); width: 400px; text-align: left; }

/* Bootstrap tooltips / popovers (spsComps etc.) */
.tooltip-inner { background: var(--color-primary); border-radius: var(--radius-md); font-family: var(--font-regular); padding: 6px 10px; }
.tooltip.top .tooltip-arrow { border-top-color: var(--color-primary); }
.popover { border: 1px solid var(--color-border-soft); border-radius: var(--radius-card); box-shadow: var(--shadow-float); font-family: var(--font-regular); }
.popover-title { background: var(--color-bg-subtle); border-bottom: 1px solid var(--color-divider); font-family: var(--font-medium); border-radius: var(--radius-card) var(--radius-card) 0 0; }


/* ==========================================================================
   14  Images, galleries, chat, suggestions, Quill
   ========================================================================== */
.image-placeholder {
  background-color: var(--color-white);
  background-image: linear-gradient(90deg, var(--color-white) 0px, var(--color-bg-subtle) 40px, var(--color-white) 80px);
  background-size: 200% 100%;
  animation: shine-loading 1.5s infinite linear;
  display: inline-block;
  border-radius: var(--radius-sm);
}
@keyframes shine-loading { 0% { background-position: -100% 0; } 100% { background-position: 100% 0; } }
.mainImage{ border-radius: 50%; height: 200px; width: 200px; border: 1px solid var(--color-white); box-shadow: var(--shadow-md); object-fit: cover; }
.mainImage.box{ border-radius: var(--radius-card); height: 200px; width: 200px; border: 1px solid var(--color-white); box-shadow: var(--shadow-md); }
.coaImage{ border-radius: 50%; height: 250px; width: 250px; border: 1px solid var(--color-white); box-shadow: var(--shadow-md); object-fit: cover; }

/* Image gallery */
.image-gallery-container { display: flex; width: 100%; max-width: 100%; flex-direction: row; flex-wrap: wrap; }
.image-gallery-container .image-thumbnail {
  width: 50%; max-width: 80px; height: 80px;
  border-radius: var(--radius-btn);
  margin-right: 8px; margin-bottom: 8px;
  overflow: hidden;
  background-position: center center; background-size: cover;
  position: relative;
  box-shadow: var(--shadow-sm);
}
.image-gallery-container .image-thumbnail img { object-fit: cover; width: 100%; height: 80px; position: absolute; z-index: 1; }
.image-gallery-container .image-thumbnail.small { height: 50px !important; max-width: 50px !important; }
.image-gallery-container .image-thumbnail.small img { height: 50px !important; }
.image-gallery-container button.img-upload-btn.small { height: 50px !important; max-width: 50px !important; }
.image-gallery-container .image-thumbnail button.img-zoom-btn {
  background-color: transparent; text-align: center; width: 100%; height: 100%; border: none;
  transition: var(--transition); color: var(--color-white); position: absolute; z-index: 10;
}
.image-gallery-container button.img-upload-btn {
  background-color: transparent;
  border-radius: var(--radius-btn);
  width: 25%; max-width: 80px; height: 80px;
  border: 2px dashed var(--color-border);
  color: var(--color-text-muted);
  transition: var(--transition-fast);
}
.image-gallery-container button.img-upload-btn:hover { border-color: var(--color-teal); color: var(--color-teal); background: var(--color-teal-softer); }
.image-gallery-container .image-thumbnail:hover button.img-zoom-btn { color: var(--color-white); background-color: rgba(60,72,88,0.75); }

/* Image gallery modal */
.gallery-active-img {
  width: 100%; height: 500px;
  border-radius: var(--radius-card);
  background-color: var(--color-image);
  box-shadow: var(--shadow-float);
  position: relative; display: flex; justify-content: center;
  overflow: hidden;
}
.gallery-active-img img { object-fit: contain; width: auto; max-width: 500px; height: 100%; position: relative; transition: var(--transition); overflow: hidden; border-radius: var(--radius-card); }
.gallery-active-img .gallery-arrow-button {
  position: absolute; top: 0; bottom: 0;
  background-color: transparent; color: var(--color-white); border: none; width: 15%;
  transition: var(--transition); display: flex; justify-content: center; align-items: center;
  font-size: 22px; opacity: 0.7;
}
.gallery-active-img .gallery-arrow-button:hover { opacity: 1; background: linear-gradient(90deg, rgba(0,0,0,0.25), transparent); }
.gallery-active-img .gallery-arrow-button.before { left: 0; }
.gallery-active-img .gallery-arrow-button.next { right: 0; background: linear-gradient(270deg, rgba(0,0,0,0.25), transparent); }

/* File gallery */
.file-gallery-container { display: flex; width: 100%; max-width: 100%; flex-direction: row; flex-wrap: wrap; }
.file-gallery-container .file-thumbnail {
  background-color: var(--color-bg-subtle);
  color: var(--color-primary);
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-btn);
  width: 100%; height: 42px;
  margin-bottom: 8px; margin-right: 0px;
  overflow: hidden;
  display: flex; flex-direction: row; align-items: center; justify-content: space-between;
  padding: 0 14px;
  transition: var(--transition-fast);
}
.file-gallery-container .file-thumbnail:hover { border-color: var(--color-teal); background: var(--color-teal-softer); }
.file-gallery-container .file-thumbnail .file-name { font-style: normal; font-weight: 400; font-size: var(--text-md); line-height: 18px; letter-spacing: -0.01em; color: var(--color-primary); font-family: var(--font-regular); width: 85%; }
.file-gallery-container .file-thumbnail i, .file-gallery-container .file-thumbnail .btn { color: var(--color-text-subtle); }
.file-gallery-container button.file-upload-btn {
  background-color: transparent; text-align: center;
  border-radius: var(--radius-btn);
  width: 100%; height: 42px; font-size: var(--text-md);
  border: 2px dashed var(--color-border); color: var(--color-text-muted);
  padding: 6px 0px; display: flex; justify-content: center; flex-direction: row; align-items: center; gap: 6px;
  margin-right: 0px;
  transition: var(--transition-fast);
}
.file-gallery-container button.file-upload-btn:hover { border-color: var(--color-teal); color: var(--color-teal); background: var(--color-teal-softer); }

/* Typing indicator (shared) */
.typing-dots span { display: inline-block; width: 6px; height: 6px; margin: 0 2px; background: currentColor; border-radius: 50%; opacity: 0.3; animation: typing 1.2s infinite; }
.typing-dots span:nth-child(2){ animation-delay: 0.2s; }
.typing-dots span:nth-child(3){ animation-delay: 0.4s; }
@keyframes typing { 0%,60%,100%{opacity:0.3;} 30%{opacity:1;} }

/* Chat messages */
.chat-container { display: flex; flex-flow: column nowrap; height: 600px; overflow-y: auto; padding: 4px 6px; }
.chat-container .chat-message-left, .chat-container .chat-message-right {
  position: relative; display: block;
  max-width: 75%;
  word-wrap: break-word;
  color: var(--color-primary);
  border-radius: 14px;
  padding: 8px 12px;
  margin-bottom: 1.3vh;
  line-height: 1.45;
}
.chat-container .chat-message-left { background: var(--color-chat-reply); border-bottom-left-radius: 4px; }
.chat-container .chat-message-right { width: 75%; background: var(--color-chat); margin-left: auto; margin-right: 0; border-bottom-right-radius: 4px; }
.chat-container .chat-message-left .username { font-family: var(--font-medium); font-weight: normal; }
.chat-container .datetime { font-weight: lighter; font-size: 11px; text-align: right; color: var(--color-text-subtle); }
.chat-container .chat-date-header { position: relative; margin: 20px; display: flex; justify-content: center; align-items: center; }
.chat-container .chat-date {
  border: 1px solid var(--color-border-soft); width: max-content; white-space: nowrap;
  padding: 4px 12px; border-radius: 50px; min-width: 70px; z-index: 1; text-align: center;
  background-color: var(--color-white); font-size: var(--text-sm); color: var(--color-text-subtle); font-family: var(--font-regular);
}
.chat-container .chat-line { flex-grow: 1; border-bottom: 1px solid var(--color-divider); }
.taggedUser { background-color: var(--color-chat-tag-bg); color: var(--color-chat-tag); border-radius: 3px; padding: 0 3px; }
.taggedUser.currentUser { background-color: var(--color-chat-tag-bg-user); color: var(--color-chat-tag-user); }
.hidden { display: none; }

/* @-mention / suggestion lists */
.chatContainer .suggestion-list, .suggestionContainer .suggestion-list { position: absolute; width: 300px; }
.chatContainer .suggestion-list .options, .suggestionContainer .suggestion-list .options {
  position: absolute; left: 0; list-style: none; margin: 0; padding: 4px;
  bottom: 100%; width: 400px; max-height: 400px; overflow-y: auto;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-float);
  background: var(--color-white);
  z-index: 100;
}
.chatContainer .suggestion-list .options button, .suggestionContainer .suggestion-list .options button {
  width: 100%; background: var(--color-white); border: 1px solid transparent;
  border-radius: var(--radius-md); text-align: left; padding: 7px 10px; font-family: var(--font-regular);
}
.chatContainer .suggestion-list .options button:hover, .suggestionContainer .suggestion-list .options button:hover { background: var(--color-teal-softer); }

/* Quill rich text */
body .ql-toolbar.ql-snow .ql-formats { margin-right: 0px !important; }
body .ql-toolbar.ql-snow { border: 1px solid var(--color-input-border); border-bottom: 1px solid var(--color-divider); border-top-left-radius: var(--radius-md); border-top-right-radius: var(--radius-md); background: var(--color-bg-subtle); }
body .ql-container.ql-snow { border: 1px solid var(--color-input-border); border-top: none; border-bottom-left-radius: var(--radius-md); border-bottom-right-radius: var(--radius-md); font-family: var(--font-regular); }
body .ql-snow .ql-stroke { stroke: var(--color-text-subtle); }
body .ql-snow .ql-fill { fill: var(--color-text-subtle); }
body .ql-snow.ql-toolbar button:hover .ql-stroke, body .ql-snow.ql-toolbar button.ql-active .ql-stroke { stroke: var(--color-teal); }
body .ql-snow.ql-toolbar button:hover .ql-fill, body .ql-snow.ql-toolbar button.ql-active .ql-fill { fill: var(--color-teal); }


/* ==========================================================================
   15  Split layout / info pane
   ========================================================================== */
.splitLayout { display: flex; align-items: stretch; width: 100%; }
.splitLayout_Main {
  flex: 0 0 100%; max-width: 100%; min-width: 0;        /* lets DT's scrollX shrink instead of overflowing */
  transition: flex-basis 0.4s ease, max-width 0.4s ease, padding-right 0.4s ease;
}
.splitLayout_Pane {
  flex: 0 0 0%; max-width: 0; min-width: 0; overflow: hidden; opacity: 0;
  transition: flex-basis 0.4s ease, max-width 0.4s ease, opacity 0.25s ease;
}
.splitLayout_Pane > .shiny-html-output { height: 100%; }
.shiny-html-output:has(> .dropdownButton-custom) {
  display: flow-root;
}
.splitLayout.paneOpen .splitLayout_Main { flex-basis: 70%; max-width: 70%; padding-right: 15px; }
.splitLayout.paneOpen .splitLayout_Pane {
  flex-basis: 30%; max-width: 30%; opacity: 1; overflow: visible;
  transition: flex-basis 0.4s ease, max-width 0.4s ease, opacity 0.25s ease 0.15s, overflow 0s linear 0.4s;
}
.infoPane {
  position: sticky; top: 20px;
  padding-bottom: 20px;
  max-height: calc(100vh - 90px);
  overflow-y: auto;
}
.infoPane .tooltip-container .tooltiptext {
  position: fixed;
  top: auto; bottom: auto; left: auto; right: auto;
  transform: none;
  max-width: min(400px, 28vw);
}
.infoPane .tooltip-container .tooltiptext::after { left: var(--arrow-x, 50%); }
.infoPane .tooltip-container .tooltiptext.below::after {
  top: auto; bottom: 100%;
  border-color: transparent transparent var(--color-white) transparent;
}


/* ==========================================================================
   16  Calendars
   ========================================================================== */
/* Weekly */
.calendar-container-weekly { height: auto; min-height: 600px; width: 100%; position: relative; }
.calendar-container-weekly.short { min-height: 300px !important; }
.calendar-container-weekly .inner-scroll-container { height: 100%; width: 100%; }
.calendar-container-weekly .inner-scroll-container .calendar-weekly-day-nav {
  display: flex; justify-content: space-between; align-items: flex-start;
  width: 100%; height: 100%; padding: 10px; position: relative; gap: 6px;
}
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block { display: flex; align-items: center; min-width: 70px; height: 100%; flex-direction: column; justify-content: flex-start; }
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block.weekend { width: 50%; }
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block.weekday { width: 100%; }
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block .day-top-group-container { display: flex; width: 100%; justify-content: center; align-items: center; }
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block .day-top-group-container .day-info-container {
  display: flex; justify-content: center; align-items: center;
  width: 100%; height: 100px; max-width: 80px; padding: 10px;
  flex-direction: column;
  border-radius: var(--radius-card);
  margin-bottom: 14px;
  color: var(--color-text-subtle);
  transition: var(--transition-fast);
}
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block .day-top-group-container .day-info-container.currentDay {
  background-color: var(--color-primary); color: var(--color-white); box-shadow: var(--shadow-md);
}
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block .day-top-group-container .day-info-container .month-label { font-family: var(--font-main) !important; font-size: var(--text-md); letter-spacing: -0.01em; }
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block .day-top-group-container .day-info-container .day-numeric-label { font-family: var(--font-medium) !important; font-size: 30px; letter-spacing: -0.03em; padding: 0px; line-height: 1.1; }
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block .day-top-group-container .day-info-container .day-name-label { font-family: var(--font-regular) !important; font-size: var(--text-sm); letter-spacing: 0.06em; text-transform: uppercase; }
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block .daily-schedule-container {
  height: 100%; width: 100%; display: flex; flex-direction: column;
  padding-top: 8px; min-height: 600px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-card);
  background: var(--color-white);
  padding-left: 8px; padding-right: 8px;
}
.calendar-container-weekly.short .calendar-weekly-day-nav .weekly-day-nav-block .daily-schedule-container { min-height: 300px !important; }
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block .daily-schedule-container .tooltip-container { position: relative; display: inline-block; }
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block .daily-schedule-container .tooltip-container button {
  height: 34px; width: 100%; border-radius: var(--radius-md); text-align: left;
  display: flex; flex-direction: column; align-items: flex-start; margin-bottom: 6px; overflow: hidden;
  font-size: var(--text-sm); padding: 4px 8px;
}
.calendar-container-weekly .calendar-weekly-day-nav .weekly-day-nav-block .daily-schedule-container .tooltip-container .tooltiptext {
  text-align: left; padding: 10px; background-color: var(--color-white); width: 200px; border: 1px solid var(--color-border-soft);
}

/* Monthly */
.calendar-container-monthly { height: auto; min-height: 200px; width: 100%; position: relative; }
.calendar-container-monthly .inner-scroll-container { height: 100%; width: 100%; }
.calendar-container-monthly .inner-scroll-container .calendar-monthly-nav {
  display: flex; justify-content: space-between; align-items: flex-start; flex-direction: column;
  width: 100%; height: 100%; padding: 10px; position: relative; gap: 6px;
}
.calendar-container-monthly .calendar-monthly-nav .calendar-monthly-week-nav { display: flex; flex-direction: row; justify-content: space-between; width: 100%; gap: 6px; }
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block { display: flex; align-items: center; min-width: 70px; flex-direction: column; justify-content: flex-start; }
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block.weekend { width: 50%; }
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block.diffMonth { opacity: 0.35; }
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block.weekday { width: 100%; }
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block .day-top-group-container { display: flex; width: 100%; justify-content: center; align-items: center; }
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block .day-top-group-container .day-info-container {
  display: flex; justify-content: center; align-items: center;
  width: 100%; height: 30px; max-width: 30px; padding: 10px; flex-direction: column;
  border-radius: 50%; margin-bottom: 10px; color: var(--color-text-subtle);
}
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block .day-top-group-container .day-info-container.currentDay { background-color: var(--color-primary); color: var(--color-white); }
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block .day-top-group-container .day-info-container .day-numeric-label { font-family: var(--font-medium) !important; font-size: var(--text-md); letter-spacing: -0.03em; padding: 0px; }
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block .day-top-group-container .day-info-container .day-name-label { font-family: var(--font-medium) !important; font-size: var(--text-md); letter-spacing: -0.03em; text-transform: uppercase; }
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block .daily-schedule-container {
  height: 100%; min-height: 200px !important; width: 100%; display: flex; flex-direction: column;
  padding-top: 8px;
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-btn);
  background: var(--color-white);
  padding-left: 8px; padding-right: 8px;
}
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block .daily-schedule-container .tooltip-container { position: relative; display: inline-block; }
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block .daily-schedule-container .tooltip-container button {
  height: 34px; width: 100%; border-radius: var(--radius-md); text-align: left;
  display: flex; flex-direction: column; align-items: flex-start; margin-bottom: 6px; overflow: hidden;
  font-size: var(--text-sm); padding: 4px 8px;
}
.calendar-container-monthly .calendar-monthly-nav .monthly-day-nav-block .daily-schedule-container .tooltip-container .tooltiptext {
  text-align: left; padding: 10px; background-color: var(--color-white); width: 200px; border: 1px solid var(--color-border-soft);
}

/* Calendar header */
.calendar-header { padding-left: 0px; padding-right: 0px; }
.calendar-header .calendar-container { padding: 10px; }
.calendar-header .calendarButton-create { float: left; margin-top: 3px; margin-left: 0px; height: 40px; }
.calendar-header .calendarButton-view { float: right; margin-top: 3px; margin-left: 15px; }
.calendar-header .calendarButton-today { float: right; margin-top: 3px; margin-left: 15px; height: 40px; }
.calendar-header .calendarButton-next { float: right; margin-top: 15px; margin-left: 15px; }
.calendar-header .calendar-header-label {
  color: var(--color-primary); font-family: var(--font-medium) !important;
  font-size: 22px; line-height: 28px; letter-spacing: -0.02em; float: right;
}
.calendar-header .calendarButton-back { float: right; margin-top: 15px; margin-right: 15px; }
.calendar-main-container { padding-left: 0px; padding-right: 0px; }


/* ==========================================================================
   17  Landing / auth / QR panels, zoom lens, leaflet, log tables
   ========================================================================== */
.panel-auth, .panel-auth0 { background-image: url("auth-back-blue.png"); background-size: 100%; }
.panel-auth0 .panel.panel-primary {
  border: 1px solid var(--color-border-soft) !important;
  box-shadow: var(--shadow-modal);
  overflow: hidden;
}
.panel-auth0 .panel-body { padding: 20px 24px 36px; }
.panel-auth0 #auth0-go_auth.btn { border-radius: var(--radius-btn); padding: 9px 28px; border-color: transparent; color: var(--color-white); font-family: var(--font-medium); letter-spacing: 0.02em; }
.panel-auth0 #auth0-go_auth.btn:hover { filter: brightness(1.15); }
.panel-auth0 h3 { font-family: var(--font-medium); }
.panel-auth0 h4 { color: var(--color-text-subtle); font-family: var(--font-main); font-size: var(--text-md); }

.panel-landing {
  position: fixed; top: 0; bottom: 0; left: 0; right: 0;
  background-color: var(--color-white); opacity: 1; z-index: 100000;
  overflow-x: hidden; overflow-y: scroll;
  background-image: url("auth-back-blue.png"); background-size: 100%;
}

.createSampleQR-panel {
  position: fixed; top: 0; bottom: 0; left: 0; right: 0;
  background-color: var(--color-white); opacity: 1; z-index: 99997;
  overflow-x: hidden; overflow-y: scroll;
  background-image: url("auth-back-purple.png"); background-size: 100%;
}
.createSampleQR-panel .panel-body { background-color: var(--color-white); padding-bottom: 100px; }
.createSampleQR-panel .panel-primary { border-color: var(--color-white); }
.createSampleQR-panel .form-group { font-family: var(--font-main); font-weight: 600; }
.createSampleQR-panel .container-fluid { background-color: var(--color-text-grey); }
.createSampleQR-panel .row { height: 100%; }
.createSampleQR-panel .createSampleQR-col { margin-left: 0; height: 100%; }
.createSampleQR-panel .panel { height: 100%; border-radius: 0; }
.createSampleQR-panel .createSampleQR-col .panel-logo { text-align: center; margin-bottom: 20px; margin-top: 20px; }
.createSampleQR-panel .createSampleQR-col .panel-header { text-align: center; }
.createSampleQR-panel .createSampleQR-col .panel-text { text-align: center; }
.createSampleQR-panel .createSampleQR-col .panel-spacer hr { width: 75%; }
.createSampleQR-panel .createSampleQR-col .panel-header h5 { font-weight: 600; font-size: var(--text-lg); font-family: var(--font-medium); color: var(--color-purple); }
.createSampleQR-panel .success-text { text-align: center; }
.createSampleQR-panel .error-text { text-align: center; color: var(--color-error); }
.createSampleQR-panel .success-link { text-align: center; }

/* Magnifying glass */
#imgZoomContainer:hover #img-zoom-view, #imgZoomContainer:active #img-zoom-view{ opacity: 1 !important; }
#imgZoomContainer { position: relative; }
#imgZoomContainer:hover, #imgZoomContainer:active { cursor: zoom-in; }
.zoom-lens-container {
  width: 300px; height: 300px;
  box-shadow: 0 5px 10px -2px rgba(0,0,0,0.3);
  pointer-events: none; position: absolute; opacity: 0;
  border: 4px solid whitesmoke; z-index: 99; border-radius: 100%; display: block;
  transition: opacity .2s;
}

/* Leaflet */
.env-pt-label { color: #fff; font-size: var(--text-sm); font-weight: bold; }
.env-cluster { background: transparent; border: none; }
.leaflet-container { border-radius: var(--radius-card); font-family: var(--font-regular); }
.leaflet-popup-content-wrapper { border-radius: var(--radius-card); box-shadow: var(--shadow-float); }

/* Plot containers */
.plotly, .js-plotly-plot, .shiny-plot-output { border-radius: var(--radius-card); }

/* Log tables in details pages */
.detailsPage-logs .logBody table.dataTable { table-layout: fixed; width: 100% !important; }
.detailsPage-logs .logBody table.dataTable td.description { overflow: hidden; vertical-align: top; }
.detailsPage-logs .logBody .description p { white-space: normal; overflow-wrap: anywhere; margin: 0 0 6px 0; }
.detailsPage-logs .logBody .description .log-scroll { width: 100%; max-height: 300px; overflow: auto; -webkit-overflow-scrolling: touch; }
.detailsPage-logs .logBody .description table { width: 100%; border-collapse: collapse; table-layout: auto; font-size: 0.92em; background: var(--color-white); }
.detailsPage-logs .logBody .description table th,
.detailsPage-logs .logBody .description table td { padding: 5px 8px; border: 1px solid var(--color-divider); text-align: left; vertical-align: middle; white-space: nowrap; }
.detailsPage-logs .logBody .description table th {
  background: var(--color-bg-subtle); font-family: var(--font-regular); font-weight: normal;
  font-size: 0.85em; text-transform: uppercase; letter-spacing: 0.04em; color: var(--color-label);
}
.detailsPage-logs .logBody .description table tr:nth-child(even) td { background: #fafbfc; }
.detailsPage-logs .logBody .description table td:first-child { white-space: normal; min-width: 8em; }
.detailsPage-logs .logBody .description table td:empty::before { content: "—"; color: var(--color-text-muted); }

/* shinycssloaders spinner sits on the canvas, not on white */
.shiny-spinner-output-container .load-container { background: transparent; }



/* ==========================================================================
   18  Claude help modal — kept exactly as designed in V3 (self-contained
       tokens under .claude-help); only the shared .typing-dots moved to §14
   ========================================================================== */
/* ---------- Tokens ---------- */
.claude-help {
  --ch-bg:           #FAF9F5;   /* page */
  --ch-surface:      #FFFFFF;   /* composer */
  --ch-user:         #F0EEE6;   /* user message */
  --ch-text:         #141413;
  --ch-muted:        #73726C;
  --ch-border:       #E8E6DC;
  --ch-border-strong:#D9D6CA;
  --ch-accent:       #D97757;
  --ch-accent-hover: #C6613F;
  --ch-code:         #F3F1EA;
 
  --ch-serif: "Source Serif 4", "Iowan Old Style", Charter, Georgia, "Times New Roman", serif;
  --ch-sans:  system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --ch-mono:  ui-monospace, "SF Mono", "Cascadia Mono", Consolas, "Liberation Mono", monospace;
 
  color: var(--ch-text);
  font-family: var(--ch-sans);
}
 
/* ---------- Modal shell ---------- */
.modal-content:has(.claude-help) {
  background: var(--ch-bg, #FAF9F5);
  border: 1px solid #E8E6DC;
  border-radius: 16px;
  box-shadow: 0 12px 40px rgba(20, 20, 19, 0.12);
  overflow: hidden;
}
.modal-content:has(.claude-help) .modal-header {
  border-bottom: none;
  padding: 18px 24px 4px;
  color: #141413;
  font-family: "Source Serif 4", "Iowan Old Style", Charter, Georgia, serif !important;
  font-size: 20px;
  font-weight: 500;
}
.modal-content:has(.claude-help) .modal-body { padding: 0 24px 20px; }
.modal-content:has(.claude-help) .modal-footer { display: none; }
 
/* ---------- Conversation ---------- */
.claude-help .chat-container.help-container {
  height: min(60vh, 600px);
  overflow-y: auto;
  padding: 8px 4px 16px;
  gap: 4px;
  scrollbar-width: thin;
  scrollbar-color: var(--ch-border-strong) transparent;
}
.claude-help .chat-container.help-container::-webkit-scrollbar { width: 8px; }
.claude-help .chat-container.help-container::-webkit-scrollbar-thumb {
  background: var(--ch-border-strong); border-radius: 8px;
}
 
/* Date divider: quiet, centered */
.claude-help .chat-date-header {
  margin: 12px 0 8px;
  color: var(--ch-muted);
  font-size: 12px;
}
.claude-help .chat-date-header .chat-line { border-color: var(--ch-border); background: var(--ch-border); }
 
/* Names aren't shown; who's speaking is clear from the layout */
.claude-help .helpMessage .username { display: none; }
 
/* User message: soft bubble on the right */
.claude-help .help-container .chat-message-right {
  width: auto;
  max-width: 80%;
  margin: 8px 0 8px auto;
  padding: 10px 16px;
  background: var(--ch-user);
  color: var(--ch-text);
  border-radius: 16px;
  font-family: var(--ch-sans);
  font-size: 15px;
  line-height: 1.5;
}
.claude-help .help-container .chat-message-right p:last-child { margin-bottom: 0; }
 
/* Claude message: no bubble, full width, serif reading text */
.claude-help .help-container .chat-message-left {
  max-width: 100%;
  width: 100%;
  margin: 8px 0 12px;
  padding: 0 2px;
  background: transparent;
  border-radius: 0;
  color: var(--ch-text);
  font-family: var(--ch-serif);
  font-size: 16px;
  line-height: 1.65;
}
 
/* Timestamps appear only on hover */
.claude-help .help-container .datetime {
  font-family: var(--ch-sans);
  font-size: 11px;
  color: var(--ch-muted);
  margin-top: 4px;
}
.claude-help .help-container .chat-message-left .datetime { text-align: left; }
.claude-help .help-container .helpMessage:hover .datetime { opacity: 1; }
 
/* ---------- Answer formatting (Markdown) ---------- */
.claude-help .chat-message-left .message > :first-child,
.claude-help .chat-message-left .ai-stream > :first-child { margin-top: 0; }
.claude-help .chat-message-left p { margin: 0 0 0.85em; }
.claude-help .chat-message-left h1,
.claude-help .chat-message-left h2,
.claude-help .chat-message-left h3,
.claude-help .chat-message-left h4 {
  font-family: var(--ch-serif);
  font-weight: 600;
  color: var(--ch-text);
  line-height: 1.3;
  margin: 1.2em 0 0.5em;
}
.claude-help .chat-message-left h1 { font-size: 1.35em; }
.claude-help .chat-message-left h2 { font-size: 1.2em; }
.claude-help .chat-message-left h3 { font-size: 1.08em; }
.claude-help .chat-message-left h4 { font-size: 1em; }
.claude-help .chat-message-left ul,
.claude-help .chat-message-left ol { margin: 0 0 0.85em; padding-left: 1.4em; }
.claude-help .chat-message-left li { margin: 0.25em 0; }
.claude-help .chat-message-left li::marker { color: var(--ch-muted); }
.claude-help .chat-message-left strong { font-weight: 600; }
.claude-help .chat-message-left a { color: var(--ch-accent-hover); text-decoration: underline; text-underline-offset: 2px; }
.claude-help .chat-message-left blockquote {
  margin: 0 0 0.85em;
  padding: 0 0 0 14px;
  border-left: 3px solid var(--ch-border-strong);
  color: var(--ch-muted);
  font-size: inherit;
}
.claude-help .chat-message-left hr { border: 0; border-top: 1px solid var(--ch-border); margin: 1.2em 0; }
 
/* Inline code and code blocks */
.claude-help .chat-message-left code {
  font-family: var(--ch-mono);
  font-size: 0.86em;
  background: var(--ch-code);
  color: var(--ch-text);
  border: 1px solid var(--ch-border);
  border-radius: 5px;
  padding: 1px 5px;
}
.claude-help .chat-message-left pre {
  font-family: var(--ch-mono);
  font-size: 13px;
  line-height: 1.55;
  background: var(--ch-code);
  color: var(--ch-text);
  border: 1px solid var(--ch-border);
  border-radius: 10px;
  padding: 12px 14px;
  margin: 0 0 0.85em;
  overflow-x: auto;
  white-space: pre;
}
.claude-help .chat-message-left pre code { background: none; border: 0; padding: 0; font-size: inherit; }
 
/* Tables: scroll sideways inside the message, not the whole chat */
.claude-help .chat-message-left table {
  display: block;
  max-width: 100%;
  overflow-x: auto;
  border-collapse: collapse;
  margin: 0 0 1em;
  font-family: var(--ch-sans);
  font-size: 14px;
  line-height: 1.45;
}
.claude-help .chat-message-left th,
.claude-help .chat-message-left td {
  padding: 7px 12px;
  border-bottom: 1px solid var(--ch-border);
  text-align: left;
  vertical-align: top;
  white-space: nowrap;
}
.claude-help .chat-message-left th { font-weight: 600; border-bottom-color: var(--ch-border-strong); }
.claude-help .chat-message-left tr:last-child td { border-bottom: 0; }
 
/* ---------- Steps while Claude works ---------- */
.claude-help .ai-steps {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 2px 0 10px;
  font-family: var(--ch-sans);
}
.claude-help .ai-steps:empty { display: none; }
.claude-help .ai-step {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 13.5px;
  line-height: 1.45;
  color: var(--ch-muted);
}
.claude-help .ai-step i {
  width: 14px;
  margin-top: 3px;
  font-size: 11px;
  text-align: center;
  flex-shrink: 0;
}
.claude-help .ai-step-done i { color: var(--ch-muted); }
.claude-help .ai-step-error i { color: var(--ch-accent); }
.claude-help .ai-step-note {
  padding-left: 24px;
  font-family: var(--ch-serif);
  font-size: 14.5px;
  font-style: normal;
  color: var(--ch-muted);
}
 
/* The step in progress shimmers, like Claude's "working" text */
.claude-help .ai-step-running { color: var(--ch-text); }
.claude-help .ai-step-running i { color: var(--ch-accent); }
.claude-help .ai-step-running span {
  background: linear-gradient(90deg, var(--ch-text) 0%, var(--ch-text) 40%, #B5B3AA 50%, var(--ch-text) 60%, var(--ch-text) 100%);
  background-size: 250% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: ch-shimmer 2.2s linear infinite;
}
@keyframes ch-shimmer { from { background-position: 100% 0; } to { background-position: -150% 0; } }
 
/* Answer as it streams in */
.claude-help .ai-stream { margin-top: 2px; }
 
/* Waiting indicator: accent dots, no bubble */
.claude-help .thinking-indicator .typing-dots { color: var(--ch-accent); }
.claude-help .thinking-indicator .typing-dots span { width: 7px; height: 7px; }
 
/* Collapsed steps and SQL under a finished answer */
.claude-help .ai-details {
  margin: 0 0 10px;
  font-family: var(--ch-sans);
  font-size: 13px;
}
.claude-help .ai-details summary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  color: var(--ch-muted);
  list-style: none;
  padding: 3px 8px 3px 6px;
  border-radius: 6px;
}
.claude-help .ai-details summary::-webkit-details-marker { display: none; }
.claude-help .ai-details summary::before {
  content: "";
  width: 6px; height: 6px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  transition: transform 0.15s ease;
}
.claude-help .ai-details[open] summary::before { transform: rotate(45deg); }
.claude-help .ai-details summary:hover { background: var(--ch-user); color: var(--ch-text); }
.claude-help .ai-details[open] > .ai-steps { margin: 8px 0 4px 6px; padding-left: 12px; border-left: 1px solid var(--ch-border); }
.claude-help .ai-details pre { margin-top: 8px; white-space: pre-wrap; }
 
/* Empty state */
.claude-help .help-empty {
  height: min(60vh, 600px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 6px;
  text-align: center;
  color: var(--ch-muted);
  font-size: 14px;
}
.claude-help .help-empty strong {
  font-family: var(--ch-serif);
  font-size: 22px;
  font-weight: 500;
  color: var(--ch-text);
}
 
/* ---------- Composer ---------- */
.claude-help .claude-composer {
  position: relative;
  background: var(--ch-surface);
  border: 1px solid var(--ch-border-strong);
  border-radius: 18px;
  box-shadow: 0 2px 8px rgba(20, 20, 19, 0.05);
  padding: 10px 56px 10px 14px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.claude-help .claude-composer:focus-within {
  border-color: #BFBBAE;
  box-shadow: 0 2px 12px rgba(20, 20, 19, 0.08);
}
 
/* Quill editor inside the composer: no toolbar or borders, grows with the text */
.claude-help .claude-composer .ql-toolbar { display: none; }
.claude-help .claude-composer .ql-container.ql-snow { border: 0; font-family: var(--ch-sans); font-size: 15px; }
.claude-help .claude-composer .ql-editor {
  min-height: 24px;
  max-height: 200px;
  overflow-y: auto;
  padding: 4px 0;
  line-height: 1.5;
  color: var(--ch-text);
}
.claude-help .claude-composer .ql-editor.ql-blank::before {
  left: 0;
  font-style: normal;
  color: var(--ch-muted);
}
.btn:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible,
textarea:focus-visible, .selectize-input.focus, .bootstrap-select .btn:focus-visible {
  outline: none; box-shadow: var(--shadow-focus);
}
.ql-editor:focus,
.claude-help .claude-composer .ql-editor:focus,
.claude-help .claude-composer .ql-editor:focus-visible { outline: none; box-shadow: none; }
 
/* Send button: accent square with an up arrow, bottom-right */
.claude-help .claude-send.btn {
  position: absolute;
  right: 10px;
  bottom: 10px;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 0;
  border-radius: 10px;
  background: var(--ch-accent);
  color: #FFFFFF;
  font-size: 14px;
  line-height: 34px;
  transition: background 0.15s ease;
}
.claude-help .claude-send.btn:hover,
.claude-help .claude-send.btn:focus { background: var(--ch-accent-hover); color: #FFFFFF; outline: none; }
.claude-help .claude-send.btn:focus-visible { box-shadow: 0 0 0 3px rgba(217, 119, 87, 0.35); }
 
.claude-help .claude-disclaimer {
  margin-top: 8px;
  text-align: center;
  font-size: 11.5px;
  color: var(--ch-muted);
}
 
/* ---------- Accessibility ---------- */
@media (prefers-reduced-motion: reduce) {
  .claude-help .ai-step-running span { animation: none; color: var(--ch-text); background: none; }
  .claude-help .typing-dots span { animation: none; opacity: 0.6; }
}


/* ==========================================================================
   19  Opinionated overrides of INLINE styles emitted by R
   --------------------------------------------------------------------------
   The R code is untouched, so a handful of inline styles would otherwise
   fight the new look. Each block below targets ONLY the exact inline value
   the builders emit (attribute selectors), so hand-picked colors elsewhere
   are left alone. Delete any block you don't want — nothing else depends
   on them.
   ========================================================================== */

/* [inline-override] 19.1  valueBox_UI() KPI tiles.
   The builder writes  background-color: #26313A  on .inner and  color: white
   on the number/label. Only tiles using that default navy become white cards
   with navy numbers; tiles given any other color keep it. */
.valueBox-custom .small-box .inner[style*="#26313A" i] {
  background-color: var(--color-white) !important;
}
.valueBox-custom .small-box .inner[style*="#26313A" i] > h3[style*="white" i] { color: var(--color-primary) !important; }
.valueBox-custom .small-box .inner[style*="#26313A" i] > p[style*="white" i]  { color: var(--color-text-subtle) !important; }
/* Tiles built with paddingLeft/Right = 1px sit flush; give them the same gap as the grid */
.valueBox-custom[style*="padding-right: 1px"] { padding-right: 6px !important; }
.valueBox-custom[style*="padding-left: 1px"]  { padding-left: 6px !important; }
.valueBox-custom {
  padding-bottom: 20px !important;
}

/* [inline-override] 19.2  dropdownButton_UI() toggles and other buttons that
   carry  filter: drop-shadow(1px 1px 1px grey)  inline — the drop-shadow is
   replaced by the flat border + soft shadow every other button uses. */
.btn[style*="drop-shadow"], .dropdownButton-custom button.dropdown-toggle[style*="drop-shadow"] {
  filter: none !important;
  border: 1px solid var(--color-input-border);
  box-shadow: var(--shadow-sm);
}
.btn { position: relative; }
.btn > div[style*="border-radius: 50%"] {
  top: -7px !important;
  left: auto !important;
  right: -7px !important;
  width: 18px; height: 18px;
  display: flex; align-items: center; justify-content: center;
  line-height: 1;
  font-size: 11px;
  font-family: var(--font-medium);
  border: 2px solid var(--color-white);
  box-shadow: var(--shadow-sm);
  pointer-events: none;
}

/* Flag-count pill inside button labels (Review button) */
.btn .btn-flagCount {
  display: inline-flex; align-items: center; gap: 3px;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: var(--radius-pill);
  font-size: 11px; line-height: 14px;
  font-family: var(--font-medium);
  background: rgba(207, 171, 83, 0.20);     /* --color-gold tint */
  color: #8A6D1F;
  vertical-align: 1px;
  white-space: nowrap;
}
.btn .btn-flagCount i { font-size: 9px; }
.btn .btn-flagCount.many { background: var(--color-error-state); color: #C62828; }

/* [inline-override] 19.3  Section headings written as
   strong(style="color: grey; font-size: 18px;") / "color: #59507F; font-size: 18px;"
   Colors are kept; the weight drops from Bold to Medium for a cleaner title. */
strong[style*="font-size: 18px"] { font-family: var(--font-medium) !important; letter-spacing: -0.01em; }

/* [inline-override] 19.4  Hand-drawn panels with  border: 1px solid lightgrey
   (the "padding: 20px; … border-radius: 8px; border: 1px solid lightgrey" and
   the 24%-wide tile family). The border is softened and they get the card
   shadow so they match .boxStyle / .box. */
div[style*="border: 1px solid lightgrey"] {
  border-color: var(--color-border-soft) !important;
  background-color: var(--color-white);
  box-shadow: var(--shadow-card);
}

/* [inline-override] 19.5  dataDisplay_Table_V2() zebra rows (#E6E6E6 inline) */
.dataDisplay-table.item.v2[style*="#E6E6E6" i] { background: var(--color-bg-subtle) !important; }

/* [inline-override] 19.6  valueBar_UI() divider lines (lightgrey inline) */
.valueBar-custom .valueBox .valueLine[style*="lightgrey"] { background-color: var(--color-border-soft) !important; }

/* [inline-override] 19.7  Toolbar actionButtons that pull themselves up with
   margin-bottom: -10px  (list pages: button row above the table). The
   negative margin is kept; this only adds breathing room below the row. */
.box-body > .shiny-html-output > .btn[style*="margin-bottom: -10px"] { margin-bottom: 0 !important; margin-top: 2px; }


/* ==========================================================================
   20  Motion & accessibility
   ========================================================================== */
:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, a:focus { outline: none; }
::selection      { background: var(--color-primary); color: var(--color-white); }
::-moz-selection { background: var(--color-primary); color: var(--color-white); }

@media (prefers-reduced-motion: reduce) {
  .tab-content > .tab-pane, .dropdown-menu, #dropdown-menu-profileDropDown, .modal.fade .modal-dialog { animation: none !important; transition: none !important; }
  .btn, .box, .sidebar-menu a, .dataTables_wrapper .paginate_button, .form-control { transition: none !important; }
}

/* Narrow screens: keep the header tools from overlapping the title */
@media (max-width: 1100px) {
  #tabHeader_Title h3 { font-size: 18px; }
}

@media print {
  .main-sidebar, .main-header, .headerButton, #profileDropDown, #helpMessages_Icon { display: none !important; }
  .content-wrapper { margin-left: 0 !important; background: #fff !important; }
  .box, .small-box, .boxStyle { box-shadow: none !important; }
}
