/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./app/ui/dashboard/sidebar/sidebar.module.css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************/
.sidebar_container__98R6a {
  display: flex;
  flex-direction: column;
  height: 100%;
  width: 100%;
  /* Flat fill from the dedicated token — matches how .sidebarContainer
     (dashboard.module.css, one DOM level up) already paints this same
     surface. No per-theme override needed: --sidebar already resolves
     per [data-theme] in globals.css. */
  background: linear-gradient(180deg, var(--sidebar) 0%, var(--sidebarDeep, var(--sidebar)) 100%);
  color: white;
  overflow: hidden;
  transition: background-color 0.3s ease;
}

.sidebar_logoSection__MQsqZ {
  display: flex;
  align-items: center;
  padding: 14px 16px;
  gap: 10px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

.sidebar_logo__aIEyI {
  border-radius: 50%;
  object-fit: cover;
  background-color: #ffffff;
  padding: 1px;
  width: 34px;
  height: 34px;
  box-shadow: 0 0 8px rgba(255, 255, 255, 0.15);
  border: 2px solid #ffffff;
  filter: none;
}

.sidebar_logoText__pDbfC {
  font-size: 17px;
  font-weight: 700;
  color: white;
  letter-spacing: 0.5px;
  text-shadow: 0 0 4px rgba(255, 255, 255, 0.2);
}

.sidebar_userSection__VyLDA {
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
  padding: 4px 0;
}

.sidebar_user__RC2Iy {
  display: flex;
  flex-direction: column;
  margin: 10px 12px;
  padding: 10px 12px;
  border-radius: 12px;
  background-color: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.12);
  text-align: center;
}

.sidebar_userImage__Mmmhu {
  display: none;
}

.sidebar_userDetail__mlaR9 {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.sidebar_username__0gBZw {
  font-weight: 600;
  font-size: 13px;
  color: white;
  margin-bottom: 2px;
  letter-spacing: 0.3px;
}

.sidebar_userTitle__Cf6_w {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.7);
  margin-bottom: 1px;
}

.sidebar_roles__rC75b {
  margin-top: 6px;
  display: inline-block;
  align-self: center;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.02em;
  /* White pill with the rail's blue, like the active menu item: readable on
     the blue rail (the green-on-blue it replaced was not). */
  background-color: rgba(255, 255, 255, 0.94);
  color: #1663c7;
  text-shadow: none;
}

/* Email Warning Banner Styles */
.sidebar_emailWarningBanner__FWCTt {
  margin: 8px 12px;
  padding: 0;
  background: linear-gradient(135deg, #ff6b6b 0%, #ee5a6f 100%);
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
  animation: sidebar_slideIn__oIOld 0.3s ease-out;
}

@keyframes sidebar_slideIn__oIOld {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.sidebar_warningContent__3w4af {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px;
  position: relative;
}

.sidebar_warningIcon__Al80q {
  flex-shrink: 0;
  margin-top: 2px;
  color: #ffffff;
  filter: drop-shadow(0 0 3px rgba(255, 255, 255, 0.5));
}

.sidebar_warningText__sdUKw {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.sidebar_warningTitle__rfXJS {
  font-size: 13px;
  font-weight: 700;
  color: #ffffff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}

.sidebar_warningMessage__d_u_D {
  font-size: 11px;
  line-height: 1.4;
  color: rgba(255, 255, 255, 0.95);
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}

.sidebar_dismissWarning__Obbow {
  flex-shrink: 0;
  background: none;
  border: none;
  color: #ffffff;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  transition: background-color 0.2s ease;
  margin-top: -2px;
}

.sidebar_dismissWarning__Obbow:hover {
  background-color: rgba(0, 0, 0, 0.15);
}

.sidebar_pagesHeading__qwTk8 {
  padding: 6px 12px 6px 12px;
  margin-top: 2px;
  font-size: 11px;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.7);
  letter-spacing: 1px;
}

.sidebar_list__AUZl1 {
  list-style: none;
  padding: 0;
  margin: 0;
  flex: 1;
}

/* Reduce spacing for category titles */
.sidebar_cat__7oOge {
  color: rgba(255, 255, 255, 0.55);
  font-weight: 600;
  font-size: 11px;
  margin: 12px 0 4px 0;
  padding-left: 12px;
  text-transform: uppercase;
  letter-spacing: 0.14em;
}

.sidebar_subList__8_4dh {
  list-style: none;
  padding-left: 0;
}

/* Reduce padding on menu items */
.sidebar_menuItem__Q4_Ql {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 10px;
  margin: 3px 8px;
  cursor: pointer;
  transition: background-color 0.2s ease;
  border-radius: 10px;
  color: rgba(255, 255, 255, 0.8);
}

.sidebar_menuItem__Q4_Ql:hover {
  background-color: rgba(255, 255, 255, 0.12);
}

/* Active item: the raised WHITE pill with blue text (keep — operator favourite) */
.sidebar_menuItem__Q4_Ql.sidebar_active__uzm4A,
.sidebar_menuItem__Q4_Ql.sidebar_active__uzm4A:hover {
  background-color: #ffffff;
  color: #1663c7;
  font-weight: 700;
  border-radius: 12px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.22);
}

/* Dark theme: same white-pill identity, navy text for contrast */
[data-theme="dark"] .sidebar_menuItem__Q4_Ql.sidebar_active__uzm4A,
[data-theme="dark"] .sidebar_menuItem__Q4_Ql.sidebar_active__uzm4A:hover {
  background-color: rgba(255, 255, 255, 0.95);
  color: #141832;
}

.sidebar_sidebarFooter__V1GWC {
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  padding: 8px 0;
  position: sticky;
  bottom: 0;
  /* Same token as .container so the sticky footer stays seamless with
     the rail behind it (was previously duplicating the container's
     hardcoded gradient stop-for-stop). The footer sits at the bottom of
     the rail, so it takes the gradient's END colour: a gradient of its own
     would restart inside its small box and show a seam. */
  background: var(--sidebarDeep, var(--sidebar));
  z-index: 10;
}

.sidebar_footerItem__v_Tps {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  width: 100%;
  background: none;
  border: none;
  color: rgba(255, 255, 255, 0.9);
  font-size: 13px;
  text-align: left;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

.sidebar_footerItem__v_Tps:hover {
  background-color: rgba(255, 255, 255, 0.1);
}

/* Theme toggle: full-width rounded pill */
.sidebar_themePill__YUG3U {
  width: calc(100% - 20px);
  margin: 4px 10px;
  justify-content: center;
  background-color: rgba(255, 255, 255, 0.12);
  border-radius: 999px;
  font-weight: 600;
}

.sidebar_themePill__YUG3U:hover {
  background-color: rgba(255, 255, 255, 0.2);
}

/* Sign Out: quiet text button */
.sidebar_signOutBtn__JPN2A {
  justify-content: center;
  color: rgba(255, 255, 255, 0.65);
  font-size: 12px;
}

.sidebar_signOutBtn__JPN2A:hover {
  background: none;
  color: #ffffff;
}

.sidebar_themeToggle__7d_W6 {
  background: none;
  border: none;
  color: white;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  transition: background-color 0.3s ease;
  margin-left: auto;
}

.sidebar_themeToggle__7d_W6:hover {
  background-color: rgba(255, 255, 255, 0.1);
}

.sidebar_loadingOverlay__m1jrk {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.6);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 9999;
}

.sidebar_fancySpinner__5dGXl {
  width: 60px;
  height: 60px;
  border: 6px solid rgba(255, 255, 255, 0.2);
  border-top: 6px solid #4caf50;
  border-right: 6px solid #2196f3;
  border-radius: 50%;
  animation: sidebar_spin__MIepz 1s linear infinite, sidebar_glow__MDw1f 1.5s ease-in-out infinite;
}

@keyframes sidebar_spin__MIepz {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

@keyframes sidebar_glow__MDw1f {
  0%, 100% {
    box-shadow: 0 0 8px rgba(255, 255, 255, 0.8);
  }
  50% {
    box-shadow: 0 0 16px rgba(255, 255, 255, 1);
  }
}

.sidebar_header__WPGkd {
  padding: 12px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

.sidebar_logoWrapper__q3iEz {
  display: flex;
  align-items: center;
  gap: 10px;
}

.sidebar_title__BhuIK {
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0.5px;
  text-shadow: 0 0 4px rgba(255, 255, 255, 0.2);
}

/* Two-line brand wordmark next to the logo */
.sidebar_wordmark__aALLr {
  display: flex;
  flex-direction: column;
  line-height: 1.15;
}

.sidebar_wordmarkName__FMNls {
  font-size: 16px;
  font-weight: 700;
  color: #ffffff;
  letter-spacing: 0.3px;
}

.sidebar_wordmarkSub__i0axt {
  font-size: 10px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.65);
}

.sidebar_navigation__RV3I1 {
  flex: 1;
  padding: 8px 0;
  overflow-y: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

/* Reduce spacing between menu sections */
.sidebar_navigation__RV3I1::-webkit-scrollbar {
  display: none;
}

.sidebar_navSection__NIYP_ {
  margin-bottom: 8px;
}

.sidebar_navList__dxDyN {
  list-style: none;
  padding: 0;
  margin: 0;
}

.sidebar_menuIcon__c6CHN {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
}

.sidebar_menuText__1N_dx {
  font-size: 13px;
}

.sidebar_footer__SPr_9 {
  padding: 8px 0;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  background: transparent;
}

[data-theme="dark"] .sidebar_footer__SPr_9 {
  background: transparent;
}
/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./app/ui/dashboard/navbar/navbar.module.css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************/
/* White topbar: flat surface, subtle bottom border, slim height */
.navbar_container__wgx6E {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 8px 16px;
  background-color: var(--card);
  border: none;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  margin-bottom: 14px;
  min-height: 48px;
  transition: background-color 0.3s ease;
}

/* Title Styles */
.navbar_title__fXyFf {
  color: var(--text);
  font-weight: bold;
  font-size: 18px;
  text-transform: capitalize;
}

/* Menu Styles */
.navbar_menu__I_JWq {
  display: flex;
  align-items: center;
  gap: 14px;
}

/* Search pill: magnifier + label + Ctrl K key-cap in one rounded control */
.navbar_searchPill__usyVg {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background-color: var(--bgSoft);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 5px 6px 5px 12px;
  cursor: pointer;
  color: var(--textSoft);
  font-size: 12.5px;
  font-weight: 500;
  line-height: 1;
  transition: border-color 0.2s ease, color 0.2s ease;
}

.navbar_searchPill__usyVg:hover {
  border-color: var(--textSoft);
  color: var(--text);
}

/* Small bordered key-cap inside the pill */
.navbar_keycap__jsdwj {
  display: inline-flex;
  align-items: center;
  background-color: var(--card);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 3px 7px;
  font-family: var(--font-mono), monospace;
  font-size: 10.5px;
  color: var(--textSoft);
  cursor: pointer;
  line-height: 1;
}

.navbar_keycap__jsdwj:hover {
  border-color: var(--textSoft);
  color: var(--text);
}

/* Circular documentation button */
.navbar_helpBtn___56L3 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1px solid var(--border);
  background-color: transparent;
  color: var(--textSoft);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  line-height: 1;
  transition: border-color 0.2s ease, color 0.2s ease;
}

.navbar_helpBtn___56L3:hover {
  border-color: var(--textSoft);
  color: var(--text);
}

/* User cluster (display only) */
.navbar_user__jE0K6 {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.navbar_avatar__F_Qiy {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background-color: var(--bgSoft);
  border: 1px solid var(--border);
  color: var(--text);
  font-size: 11px;
  font-weight: 700;
  flex: none;
}

.navbar_userName__RgcXC {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./app/ui/dashboard/topbar/topbar.module.css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************/
/* Top mode-tab bar: full width, sits above sidebar+content row. */
.topbar_bar__n9nio {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  height: 38px;
  padding: 0 14px;
  background: var(--bg);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
  color: var(--text);
  min-width: 0;
}

.topbar_tabs__cfpbj {
  display: flex;
  gap: 4px;
  align-items: center;
  height: 100%;
  flex-shrink: 0;       /* tabs never compress */
}

/* Drey: the bar now uses the page background (var(--bg)) in both themes,
   so tab text uses the theme's --text / --textSoft for contrast. */
.topbar_tab__tymvc {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 28px;
  padding: 0 14px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: var(--textSoft);
  font-family: inherit;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.2px;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.topbar_tab__tymvc:hover {
  color: var(--text);
  background: var(--hover);
}

.topbar_tab__tymvc.topbar_active__oQXBs {
  color: var(--text);
  background: var(--card);
  border-color: var(--border);
  box-shadow: var(--cardShadow);
}

/* Mode label degrades: ellipsis on overflow, hides entirely on narrow screens. */
.topbar_modeLabel__QY9LS {
  font-size: 11px;
  color: var(--textSoft);
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  text-align: right;
  text-shadow: none;
}

@media (max-width: 1000px) {
  .topbar_modeLabel__QY9LS { display: none; }
}
@media (max-width: 768px) {
  .topbar_bar__n9nio { padding: 0 10px; }
  .topbar_tab__tymvc { padding: 0 10px; }
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./app/ui/primitives/commandPalette.module.css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************/
/* Command palette — glassy overlay, springs in, keyboard-first. */

.commandPalette_veil__HLF_K {
  position: fixed;
  inset: 0;
  background: rgba(10, 14, 24, 0.42);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  z-index: 11000; /* above modals (10000) — the palette is the top layer */
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 14vh 20px 20px;
  animation: commandPalette_cpFade__gKswx 0.14s ease both;
}

.commandPalette_palette__sF4L6 {
  width: min(560px, 96vw);
  max-height: 62vh;
  display: flex;
  flex-direction: column;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 18px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2), 0 32px 80px -24px rgba(0, 0, 0, 0.55);
  overflow: hidden;
  animation: commandPalette_cpPop___EqZ5 0.18s cubic-bezier(0.2, 0.9, 0.3, 1.2) both;
}

@keyframes commandPalette_cpFade__gKswx { from { opacity: 0; } to { opacity: 1; } }
@keyframes commandPalette_cpPop___EqZ5 { from { opacity: 0; transform: translateY(-10px) scale(0.985); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .commandPalette_veil__HLF_K, .commandPalette_palette__sF4L6 { animation: none; }
}

.commandPalette_inputRow__H36ss {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
  color: var(--textSoft);
}

.commandPalette_input__7Akg_ {
  flex: 1;
  border: none;
  outline: none;
  background: transparent;
  color: var(--text);
  font-family: inherit;
  font-size: 15px;
  font-weight: 500;
}
.commandPalette_input__7Akg_::placeholder { color: var(--textSoft); }

.commandPalette_escHint__rbHqc {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--textSoft);
  border: 1px solid var(--border);
  border-radius: 5px;
  padding: 2px 6px;
}

.commandPalette_list__sjNED {
  overflow-y: auto;
  padding: 6px;
  flex: 1;
}

.commandPalette_section__IV7zt {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--textSoft);
  padding: 10px 12px 4px;
}

.commandPalette_item__ygA_f {
  width: 100%;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  background: transparent;
  border: none;
  border-radius: 10px;
  padding: 8px 12px;
  cursor: pointer;
  font-family: inherit;
  text-align: left;
}
.commandPalette_item__ygA_f[data-active="true"] {
  background: var(--accentColor);
}
.commandPalette_item__ygA_f[data-active="true"] .commandPalette_itemTitle__5gfNX { color: var(--onAccent, #fff); }
.commandPalette_item__ygA_f[data-active="true"] .commandPalette_itemPath__AI866 { color: var(--onAccent, #fff); opacity: 0.75; }

.commandPalette_itemTitle__5gfNX {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
}

.commandPalette_itemPath__AI866 {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 11px;
  color: var(--textSoft);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.commandPalette_noHits__i0Z_Z {
  padding: 24px 16px;
  text-align: center;
  color: var(--textSoft);
  font-size: 13px;
}

.commandPalette_footer__ZA99c {
  display: flex;
  gap: 16px;
  padding: 8px 16px;
  border-top: 1px solid var(--border);
  font-size: 10.5px;
  color: var(--textSoft);
}
.commandPalette_footer__ZA99c b {
  font-weight: 700;
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 0 4px;
  margin-right: 3px;
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./app/ui/primitives/pageTransition.module.css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************/
.pageTransition_enter__dKNzo {
  animation: pageTransition_ptEnter__RuP2P 0.28s cubic-bezier(0.22, 0.8, 0.3, 1) both;
  min-height: 100%;
}

@keyframes pageTransition_ptEnter__RuP2P {
  from { opacity: 0; transform: translateY(7px); }
  to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .pageTransition_enter__dKNzo { animation: none; }
}

/*!******************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./app/ui/primitives/toast.module.css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************/
.toast_stack__OHdWz {
  position: fixed;
  top: 16px;
  right: 16px;
  z-index: 12000; /* above palette (11000) — feedback always visible */
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: min(360px, 92vw);
  pointer-events: none;
}

.toast_toast__kX5ln {
  pointer-events: auto;
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: var(--cardShadowHover);
  padding: 10px 12px;
  font-size: 13px;
  color: var(--text);
  animation: toast_toastIn___EYFB 0.22s cubic-bezier(0.2, 0.9, 0.3, 1.15) both;
}

.toast_leaving__amlT8 { animation: toast_toastOut__RFoUg 0.18s ease both; }

@keyframes toast_toastIn___EYFB { from { opacity: 0; transform: translateX(24px) scale(0.97); } to { opacity: 1; transform: none; } }
@keyframes toast_toastOut__RFoUg { from { opacity: 1; } to { opacity: 0; transform: translateX(16px); } }
@media (prefers-reduced-motion: reduce) {
  .toast_toast__kX5ln, .toast_leaving__amlT8 { animation: none; }
}

.toast_dot__mHdb0 { width: 8px; height: 8px; border-radius: 50%; flex: none; background: var(--textSoft); }
.toast_tone_good__hCyog .toast_dot__mHdb0 { background: var(--positiveColor); }
.toast_tone_bad__YhKEh .toast_dot__mHdb0 { background: var(--negativeColor); }
.toast_tone_info__tziPa .toast_dot__mHdb0 { background: var(--accentColor); }
.toast_tone_warn__ZhlDJ .toast_dot__mHdb0 { background: #d69e2e; }

.toast_msg__Y50KU { flex: 1; line-height: 1.35; }

.toast_x__XejNc {
  background: transparent;
  border: none;
  color: var(--textSoft);
  cursor: pointer;
  font-size: 11px;
  border-radius: 5px;
  padding: 2px 5px;
}
.toast_x__XejNc:hover { background: var(--hover); color: var(--text); }

/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./app/ui/dashboard/dashboard.module.css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************/
/* Dashboard layout styles */
.dashboard_layout__tmA8d {
  display: flex;
  width: 100%;
  min-height: 100vh;
}

.dashboard_sidebarContainer__ISEk2 {
  width: 230px;
  flex-shrink: 0;
  background: linear-gradient(180deg, var(--sidebar) 0%, var(--sidebarDeep, var(--sidebar)) 100%);
  height: 100vh;
  position: sticky;
  top: 0;
  overflow-y: auto;
}

.dashboard_contentContainer__sTzkv {
  flex: 1;
  min-width: 0;   /* never wider than the window: a wide child (log lines) scrolls inside itself, not the page */
  max-width: 100%;
  display: flex;
  flex-direction: column;
  background-color: var(--bg);
  /* clip rather than hidden: still stops horizontal page overflow, but
     doesn't create a scroll container, so sticky table headers can follow
     the window scroll. hidden stays as the fallback. */
  overflow-x: hidden;
  overflow-x: clip;
}

.dashboard_pageContent__XLGzY {
  padding: 8px;
  /* The window scrolls the page (the sidebar is sticky against the
     viewport); this box never scrolled on its own, but overflow-y: auto
     still made it a scroll container that trapped sticky headers. */
  overflow-y: visible;
}

/* Dashboard content styles */
.dashboard_wrapper__BHOQf {
  display: flex;
  gap: 14px;
  margin-top: 0;
  padding: 0 14px;
  /* Full browser width (operator's call). The grids use minmax(0,1fr) and the
     tiles yield their sparkline when narrow, so stretching is safe now. */
  max-width: 100%;
}

.dashboard_main__h9_Qo {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.dashboard_side__cRt2d {
  flex: 0 0 300px;   /* fixed rail: it was being squeezed off the edge as a flex fraction */
  width: 300px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* Card row - using grid for equal spacing and width */
.dashboard_cardRow__AeYHq, .dashboard_cards__FzV77 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));   /* minmax(0,…): a wide tile can never push the row past the edge */
  gap: 12px;
}

/* Make side cards have consistent styling */
/* Neutral pass-through: the news card styles its own surface now —
   the old purple rail background/white text/centering are gone.
   Surface properties (padding/background/shadow/radius) are left off this
   rule entirely - .side > div's higher specificity (class+type) was beating
   the card's own .container class and silently zeroing its padding, which
   pushed the heading text up into the rounded corner's clip region. */
.dashboard_side__cRt2d > div {
  margin-bottom: 14px;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  text-align: left;
  color: inherit;
}

/* Squirrel Features card specifically */
.dashboard_side__cRt2d > div:nth-child(1) {
  height: auto;
  justify-content: flex-start;
  margin-bottom: 0;
}

/* Card styles */
.dashboard_card__KyCkw {
  background-color: var(--card);
  padding: 16px;
  border-radius: 16px;
  border: 1px solid var(--border);
  box-shadow: var(--cardShadow);
  display: flex;
  flex-direction: column;
  transition: background-color 0.3s ease, box-shadow 0.3s ease;
}

/* Light theme specific styling */
[data-theme="light"] .dashboard_card__KyCkw {
  box-shadow: var(--cardShadow);
}

/* Card title styles */
.dashboard_cardTitle__BMhBI {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--textSoft);
  margin-bottom: 10px;
}

/* Card value styles */
.dashboard_cardValue__gj4CO {
  font-size: 1.6rem;
  font-weight: 500;
  font-family: var(--font-mono), ui-monospace, SFMono-Regular, monospace;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
  color: var(--accentColor, #00a0e4);
  margin: 6px 0;
}

.dashboard_valueGreen__Yew1k {
  color: #4caf50;
}

.dashboard_valueBlue__Be3C0 {
  color: #2196f3;
}

.dashboard_valuePurple__GbPNr {
  color: #9c27b0;
}

/* Description styles */
.dashboard_cardDesc__nJNnR {
  font-size: 12px;
  color: var(--textSoft);
  margin-top: 6px;
}

/* Icon styles */
.dashboard_cardIcon__hM0tl {
  padding: 5px;
  border-radius: 10px;
  margin-bottom: 8px;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Section title styles */
.dashboard_sectionTitle__wqeBB {
  font-size: 18px;
  font-weight: 500;
  margin-bottom: 14px;
  color: var(--text);
}

/* Common styles for side card elements */
.dashboard_side__cRt2d h2,
.dashboard_side__cRt2d span[class*="title"],

.dashboard_side__cRt2d div[class*="title"] {
  font-size: inherit;
  font-weight: inherit;
  color: inherit;
  margin-bottom: 0;
}

.dashboard_side__cRt2d span[class*="number"],
.dashboard_side__cRt2d p[class*="number"],
.dashboard_side__cRt2d div[class*="number"],
.dashboard_side__cRt2d div[class*="value"] {
  font-size: inherit;
  color: inherit;
  font-weight: inherit;
  margin: 0;
}

.dashboard_side__cRt2d span[class*="detail"],
.dashboard_side__cRt2d p[class*="detail"],
.dashboard_side__cRt2d div[class*="detail"],
.dashboard_side__cRt2d div[class*="desc"] {
  font-size: inherit;
  color: inherit;
  opacity: 1;
  margin-bottom: 0;
}

/* Feature item styling for Squirrel Features card — inert: the card's own
   module classes govern layout now; this must not override them. */
.dashboard_side__cRt2d div[class*="feature"] {
  margin: 0;
  text-align: left;
  background-color: transparent;
}

/* Header Statistics Bar */
.dashboard_headerStats__smMIn {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-bottom: 16px;
  padding: 8px 0;
}

.dashboard_statItem__kvYUc {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 16px;
  box-shadow: var(--cardShadow);
  transition: all 0.2s ease;
}

.dashboard_statItem__kvYUc:hover {
  background: var(--card);
  box-shadow: var(--cardShadowHover);
  transform: translateY(-2px);
}

.dashboard_statIcon__F2ocY {
  font-size: 18px;
  color: var(--iconColor);
}

.dashboard_statLabel__hZr9X {
  display: block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--textSoft);
}

.dashboard_statValue__Eeuod {
  display: block;
  font-size: 16px;
  font-weight: 600;
  font-family: var(--font-mono), ui-monospace, SFMono-Regular, monospace;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
  color: var(--text);
}

/* Actions and Activity Strip */
.dashboard_actionsStrip__Dcwp6 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--border);
}

.dashboard_quickActions__h0Tq3 h3,
.dashboard_recentActivity__rt3h7 h3 {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 10px;
}

.dashboard_actionButtons__JhSaY {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.dashboard_actionBtn__bx2xa {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  background: #00a8e1;
  color: white;
  border: none;
  border-radius: 12px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  transition: all 0.2s ease;
}

.dashboard_actionBtn__bx2xa:hover {
  background: #0088b8;
  transform: translateY(-1px);
}

.dashboard_actionBtn__bx2xa svg {
  font-size: 16px;
}

.dashboard_activityList__Xlq9m {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.dashboard_activityItem__R_DW5 {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 0;
  color: var(--textSoft);
  font-size: 14px;
}

.dashboard_activityDot__l3XEL {
  width: 8px;
  height: 8px;
  background: #00a8e1;
  border-radius: 50%;
  flex-shrink: 0;
}

/* Bottom Section Styles */
.dashboard_bottomSection__iHwnv {
  margin-top:  14px;
  padding-top: 0;
  container-type: inline-size;   /* columns follow the real content width, not the screen */
}

.dashboard_summaryBar__VJHb_ {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));   /* the five bottom cards in one row */
  gap: 14px;
  align-items: stretch;
}
/* 5 across down to ~240px per card (a 1920 screen gives ~255px); then 3, 2, 1 */
@container (max-width: 1199px) { .dashboard_summaryBar__VJHb_ { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@container (max-width: 760px)  { .dashboard_summaryBar__VJHb_ { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container (max-width: 480px)  { .dashboard_summaryBar__VJHb_ { grid-template-columns: 1fr; } }

.dashboard_summaryItem__ur7o8 {
  background: var(--card);
  padding: 14px 16px;
  border-radius: 16px;
  min-height: 124px;          /* was a fixed height with overflow hidden: it clipped its own content */
  display: flex;
  flex-direction: column;
  transition: all 0.2s ease;
  border: 1px solid var(--border);
  box-shadow: var(--cardShadow);
  position: relative;
  min-width: 0;
  overflow: hidden;   /* long content wraps or clips inside the card, never outside it */
}

.dashboard_summaryItem__ur7o8:hover {
  transform: translateY(-2px);
  box-shadow: var(--cardShadowHover);
}

.dashboard_summaryLabel__9ZCgr {
  display: block;
  font-size: 13px;
  color: var(--text);
  margin-bottom: 10px;
  font-weight: 700;
  text-align: left;
}

.dashboard_chartContent___kSj_ {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
  flex: 1;
}

/* Inline status text for summary-card fetches (small indicator inside a
   fixed-height 124px card, not a full content-loading gate). */
.dashboard_loadingIndicator__zJuMJ {
  font-size: 13px;
  color: var(--textSoft);
  padding: 8px 12px;
  text-align: center;
}

.dashboard_errorMessage__kzz1_ {
  font-size: 13px;
  font-weight: 600;
  color: var(--negativeColor);
  padding: 8px 12px;
  text-align: center;
}

/* Donut Chart Styles */
.dashboard_donutChartContainer__C3HeF {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  gap: 25px;
}

.dashboard_donutChart__iwKtV {
  width: 100px;
  height: 100px;
  position: relative;
  border-radius: 50%;
  flex-shrink: 0;
}

.dashboard_donutSegment__d3oLC {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  position: relative;
}

.dashboard_donutHole__qdGJ_ {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 60%;
  height: 60%;
  background-color: var(--card);
  border-radius: 50%;
}

/* Chart Labels Styles */
.dashboard_chartLabels__qWRxe {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.dashboard_chartLabel__LlW8F {
  display: flex;
  align-items: center;
  gap: 8px;
}

.dashboard_labelColor__F8wlq {
  width: 12px;
  height: 12px;
  border-radius: 2px;
}

.dashboard_labelText__sjihb {
  font-size: 12px;
  color: var(--textSoft, #94a3b8);
  width: 70px;
}

.dashboard_labelValue__FGdQJ {
  font-size: 14px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--text, white);
}

/* Horizontal bar chart */
.dashboard_barContainer__8w7NL {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 0 5px;
}

.dashboard_barItem__9QMEk {
  width: 100%;
}

.dashboard_barLabel__k_3tO {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: var(--textSoft, #94a3b8);
  margin-bottom: 3px;
  width: 100%;
}

.dashboard_barValue__SQIAB {
  font-weight: bold;
  font-variant-numeric: tabular-nums;
  color: var(--text, white);
}

.dashboard_barTrack__7rKt6 {
  background-color: var(--hover);
  height: 6px;
  border-radius: 999px;
  width: 100%;
  overflow: hidden;
}

.dashboard_bar__5bf9j {
  height: 100%;
  border-radius: 999px;
  transition: width 0.5s ease;
}

/* System status */
.dashboard_statusContainer__SwX6X {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 100%;
}

.dashboard_statusText__5nNjR {
  font-size: 16px;
  font-weight: bold;
  color: #4ade80;
}

/* Light mode adjustments */
[data-theme="light"] .dashboard_summaryItem__ur7o8 {
  border-color: var(--border);
}

[data-theme="light"] .dashboard_donutHole__qdGJ_ {
  background-color: var(--card);
}

[data-theme="light"] .dashboard_donutData__pyQO6 {
  color: var(--text, #1e293b);
}

[data-theme="light"] .dashboard_barValue__SQIAB {
  color: var(--text, #1e293b);
}

[data-theme="light"] .dashboard_barTrack__7rKt6 {
  background-color: var(--hover);
}

[data-theme="light"] .dashboard_statusText__5nNjR {
  color: #16a34a;
}

/* Responsive adjustments */
@media (max-width: 1400px) {
  .dashboard_main__h9_Qo {
    flex: 4;
  }
  
  .dashboard_side__cRt2d {
    max-width: 290px;
  }
  
  .dashboard_headerStats__smMIn {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 1280px) {
  .dashboard_cardRow__AeYHq, .dashboard_cards__FzV77 {
    grid-template-columns: repeat(2, 1fr);
  }
  
  .dashboard_actionsStrip__Dcwp6 {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 1024px) {
  .dashboard_wrapper__BHOQf {
    flex-direction: column;
  }
  
  .dashboard_side__cRt2d {
    max-width: none;
    width: 100%;
  }
}

@media (max-width: 768px) {
  .dashboard_layout__tmA8d {
    flex-direction: column;
  }
  
  .dashboard_sidebarContainer__ISEk2 {
    width: 100%;
    height: auto;
    position: relative;
  }
  
  .dashboard_cardRow__AeYHq, .dashboard_cards__FzV77 {
    grid-template-columns: 1fr;
  }
  
  .dashboard_headerStats__smMIn {
    grid-template-columns: 1fr;
  }
  
  .dashboard_actionButtons__JhSaY {
    flex-direction: column;
  }
  
  .dashboard_actionBtn__bx2xa {
    width: 100%;
  }
  
  .dashboard_wrapper__BHOQf {
    padding: 0 10px;
  }
  
  .dashboard_summaryBar__VJHb_ {
    grid-template-columns: 1fr;
  }
  
  .dashboard_summaryItem__ur7o8 {
    height: 116px;
  }
}

/* For the Storage component and other full-width sections */
.dashboard_fullWidth__Axs_F {
  width: 100%;
}

@keyframes dashboard_pulse__nkUtv {
  0% {
    opacity: 0.6;
    transform: scale(0.95);
  }
  70% {
    opacity: 1;
    transform: scale(1.05);
  }
  100% {
    opacity: 0.6;
    transform: scale(0.95);
  }
}

/* dashboard.module.css */
.dashboard_loadingFade__xf__T {
  opacity: 0.4;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

/* ---------- hero banner ---------- */
/* Not a card: a soft blue wash with waves that spans the top of the page,
   with the first rows overlapping its foot (negative bottom margin). The
   greeting sits over it on the left, floating icon tiles on the right. */
.dashboard_hero__KjkxB {
  position: relative;
  overflow: hidden;
  z-index: 0;
  margin: -6px 0 -54px;
  padding: 26px 24px 84px;
  min-height: 160px;
  border-radius: 16px 16px 0 0;
  background: linear-gradient(180deg, #eaf3ff 0%, #f3f8ff 55%, var(--bg) 100%);
}
[data-theme="dark"] .dashboard_hero__KjkxB {
  background: linear-gradient(180deg, color-mix(in srgb, var(--accentColor) 16%, var(--bg)) 0%, var(--bg) 100%);
}
/* Everything after the banner paints above its overlapped foot */
.dashboard_main__h9_Qo > * { position: relative; }
.dashboard_heroArt__zMwRu { position: absolute; inset: 0; pointer-events: none; }
.dashboard_heroWaves__GDEGg { position: absolute; inset: 0; width: 100%; height: 100%; }
.dashboard_heroIcons__tyrbT { position: absolute; inset: 0; }
.dashboard_heroIcon__oBWYj {
  position: absolute;
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background: #ffffff;
  color: #2f80ed;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 10px 22px -10px rgba(31, 100, 216, 0.45);
}
[data-theme="dark"] .dashboard_heroIcon__oBWYj { background: var(--card); }
@media (max-width: 900px) { .dashboard_heroIcons__tyrbT { display: none; } }

/* ---------- Storage Distribution donut ---------- */
.dashboard_donutRow__D3PEz { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.dashboard_donutSvg__jN1wc { width: 136px; height: 136px; flex: none; }
.dashboard_donutBig__6tVbA { font-family: var(--font-mono), ui-monospace, monospace; font-size: 13px; font-weight: 700; fill: var(--text); }
.dashboard_donutSmall__4eodk { font-size: 7.5px; fill: var(--textSoft); }
.dashboard_donutLegend__g_Iwp { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; min-width: 0; width: 100%; }
.dashboard_donutLegend__g_Iwp li { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--text); min-width: 0; }
.dashboard_donutLegend__g_Iwp li span { flex: 1; min-width: 0; }
.dashboard_donutLegend__g_Iwp li b { white-space: nowrap; }
.dashboard_donutLegend__g_Iwp li i { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.dashboard_donutLegend__g_Iwp li b { font-family: var(--font-mono), ui-monospace, monospace; font-variant-numeric: tabular-nums; font-weight: 600; }
.dashboard_donutLegend__g_Iwp li em { font-style: normal; color: var(--textSoft); font-variant-numeric: tabular-nums; margin-left: 6px; font-weight: 400; }
.dashboard_donutNote__Rz1MA { display: block !important; font-size: 11px !important; color: var(--textSoft) !important; margin-top: 4px; padding-top: 8px; border-top: 1px solid var(--border); }

/* ---------- Storage Distribution line ---------- */
.dashboard_lineWrap__Eatej { display: flex; flex-direction: column; gap: 8px; width: 100%; min-width: 0; }
.dashboard_lineHead__fFjhB { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; font-size: 11.5px; color: var(--textSoft); }
.dashboard_lineHead__fFjhB b { font-family: var(--font-mono), ui-monospace, monospace; font-variant-numeric: tabular-nums; font-size: 14px; color: var(--text); white-space: nowrap; }
.dashboard_lineChart__N03Dc { width: 100%; min-height: 88px; display: flex; align-items: center; }
.dashboard_lineChart__N03Dc svg { width: 100%; display: block; }
.dashboard_lineEmpty__khuXS { font-size: 12px; color: var(--textSoft); }
.dashboard_lineAxis__zPYF9 { display: flex; justify-content: space-between; font-size: 10.5px; color: var(--textSoft); font-variant-numeric: tabular-nums; margin-top: -4px; }

