/* ============================================
   BONGO v2 DESIGN SYSTEM — CONSOLIDATED CSS
   Extracted from v2 prototype HTML files.
   No external CSS dependencies.
   ============================================ */


/* ============================================
   1. RESET
   ============================================ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }


/* ============================================
   2. CSS VARIABLES
   Base: v2-inbox.html (mail UI palette)
   ============================================ */
/* ============================================
   BONGO v2 — TOKEN BLOCK (ComponentLib-backed)
   Drop-in replacement for §2 of web/static/css/bongo.css.
   Pairs with: /static/css/componentlib/colors_and_type.css
   which must be <link>ed BEFORE this file.
   ============================================ */

/* Tell ComponentLib which accent we want. Override with
   data-accent="mail" | "forest" | "cyan" | "coral" on <html>. */
html:not([data-accent]), html[data-accent="bongo"] {
  --accent:             #F59E0B;
  --accent-hover:       #D97706;
  --accent-active:      #B45309;
  --accent-subtle:      #FEF3C7;
  --accent-accessible:  #B45309;
  --focus-ring:         rgba(245,158,11,.25);
  --shadow-brand:       0 4px 14px rgba(245,158,11,.25);
}
html[data-theme="dark"][data-accent="bongo"],
html[data-theme="dark"]:not([data-accent]) {
  --accent:             #FBBF24;
  --accent-hover:       #F59E0B;
  --accent-active:      #D97706;
  --accent-subtle:      rgba(251,191,36,.18);
  --accent-accessible:  #FBBF24;
  --focus-ring:         rgba(251,191,36,.30);
  --shadow-brand:       0 4px 14px rgba(251,191,36,.25);
}

:root {
  /* ---- Brand (back-compat with existing bongo.css call-sites) ---- */
  --bongo-orange:        var(--accent);
  --bongo-orange-hover:  var(--accent-hover);
  --bongo-blue:          #517FAF;
  --bongo-blue-dark:     #3D6A9E;
  --bongo-blue-light:    #E8F0FA;
  --bongo-blue-lightest: #F0F5FB;
  --bongo-green:         var(--success);
  --bongo-red:           var(--error);
  --bongo-yellow:        #F59E0B;

  /* ---- Surfaces (map to ComponentLib ramp) ---- */
  --bg:        var(--surface-0);
  --bg-subtle: var(--surface-1);
  --bg-muted:  var(--surface-2);
  --bg-hover:  var(--surface-2);
  --bg-card:   var(--surface-1);

  /* ---- Sidebar (charcoal, product-matching) ---- */
  --sidebar-bg:       #1A1D21;
  --sidebar-hover:    rgba(255,255,255,.06);
  --sidebar-active:   rgba(255,255,255,.10);
  --sidebar-text:     rgba(255,255,255,.72);
  --sidebar-bright:   #FFFFFF;
  --sidebar-width:    220px;

  /* ---- Text ---- */
  --text:           var(--text-primary);
  --text-inverse:   #FFFFFF;

  /* ---- Borders ---- */
  --border:        var(--border-subtle);
  --border-strong: var(--border-default);

  /* ---- Shadows (componentlib already defines shadow-sm/md/lg) ---- */
  --shadow-card: var(--shadow-lg);

  /* ---- Sizing ---- */
  --topbar-h:  52px;
  --radius:    var(--radius-sm);

  /* ---- Calendar (preserved) ---- */
  --cal-blue:   #3B82F6;
  --cal-green:  #22C55E;
  --cal-indigo: #6366F1;
  --cal-orange: #F59E0B;
  --cal-red:    #EF4444;
  --cal-violet: #8B5CF6;
  --cal-yellow: #EAB308;

  /* ---- Log viewer (preserved) ---- */
  --log-bg:     #0D1117;
  --log-text:   #C9D1D9;
  --log-border: #21262D;
}

/* Dark theme — leans on ComponentLib's dark ramp but keeps the
   sidebar dedicated-charcoal so it can't invert. */
[data-theme="dark"] {
  --bongo-blue:          #7BA4CC;
  --bongo-blue-dark:     #4A6E96;
  --bongo-blue-light:    #1E3350;
  --bongo-blue-lightest: #172A45;

  --bg:        var(--surface-0);
  --bg-subtle: var(--surface-1);
  --bg-muted:  var(--surface-2);
  --bg-hover:  var(--surface-3);
  --bg-card:   var(--surface-1);

  --sidebar-bg:     #1A1D21;
  --sidebar-text:   rgba(255,255,255,.70);
  --sidebar-bright: #FFFFFF;

  --text:           var(--text-primary);

  --border:        var(--border-subtle);
  --border-strong: var(--border-default);

  --cal-blue:   #60A5FA;
  --cal-green:  #4ADE80;
  --cal-indigo: #818CF8;
  --cal-orange: #FBBF24;
  --cal-red:    #F87171;
  --cal-violet: #A78BFA;
  --cal-yellow: #FACC15;

  --log-bg:     #010409;
  --log-text:   #8B949E;
  --log-border: #161B22;
}

/* Admin layout modifier — preserved, sidebar stays slate-dark */
.admin-layout {
  --sidebar-bg:     #1E293B;
  --sidebar-hover:  rgba(255,255,255,.06);
  --sidebar-active: rgba(255,255,255,.10);
  --sidebar-text:   #94A3B8;
  --sidebar-bright: #F8FAFC;
}

/* ============================================
   3. BASE TYPOGRAPHY
   ============================================ */
html, body {
  height: 100%;
  font-family: var(--font-sans);
  font-size: 14px;
  color: var(--text);
  background: var(--bg);
  overflow: hidden;
}

a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }
input, select { font-family: inherit; font-size: 0.9rem; }


/* ============================================
   4. ACCESSIBILITY
   ============================================ */

/* Skip to content link */
.skip-link {
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
  background: var(--bongo-blue);
  color: #fff;
  padding: 8px 16px;
  border-radius: var(--radius);
  z-index: 200;
  font-weight: 600;
  font-size: 0.9rem;
  text-decoration: none;
}
.skip-link:focus {
  position: fixed;
  left: 16px;
  top: 8px;
  width: auto;
  height: auto;
  overflow: visible;
}

/* Focus indicators */
*:focus-visible {
  outline: 2px solid var(--bongo-blue);
  outline-offset: 2px;
}

/* Screen reader only */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Alpine.js cloak */
[x-cloak] { display: none !important; }

/* ============================================
   4a. Utility Classes
   ============================================ */
.u-m0 { margin: 0 !important; }
.u-mt-025 { margin-top: 0.25rem !important; }
.u-mt-05 { margin-top: 0.5rem !important; }
.u-mt-075 { margin-top: 0.75rem !important; }
.u-mt-1 { margin-top: 1rem !important; }
.u-mt-15 { margin-top: 1.5rem !important; }
.u-mt-2 { margin-top: 2rem !important; }
.u-mb-05 { margin-bottom: 0.5rem !important; }
.u-mb-1 { margin-bottom: 1rem !important; }
.u-mb-0 { margin-bottom: 0 !important; }
.u-mb-12px { margin-bottom: 12px !important; }
.u-mb-16px { margin-bottom: 16px !important; }
.u-mb-20px { margin-bottom: 20px !important; }
.u-mb-24px { margin-bottom: 24px !important; }
.u-mb-075 { margin-bottom: 0.75rem !important; }
.u-ml-05 { margin-left: 0.5rem !important; }
.u-ml-1 { margin-left: 1rem !important; }
.u-p-18 { padding: 18px !important; }
.u-p-20 { padding: 20px !important; }
.u-p-1rem { padding: 1rem !important; }
.u-p-2rem { padding: 2rem !important; }
.u-px-12 { padding-left: 12px !important; padding-right: 12px !important; }
.u-px-18 { padding-left: 18px !important; padding-right: 18px !important; }
.u-px-20 { padding-left: 20px !important; padding-right: 20px !important; }
.u-py-6 { padding-top: 6px !important; padding-bottom: 6px !important; }
.u-py-16 { padding-top: 16px !important; padding-bottom: 16px !important; }
.u-pb-2 { padding-bottom: 2px !important; }
.u-pt-14 { padding-top: 14px !important; }
.u-w-full { width: 100% !important; }
.u-width-2rem { width: 2rem !important; }
.u-width-auto { width: auto !important; }
.u-width-40px { width: 40px !important; }
.u-width-36px { width: 36px !important; }
.u-width-4rem { width: 4rem !important; }
.u-width-60px { width: 60px !important; }
.u-width-80px { width: 80px !important; }
.u-width-130px { width: 130px !important; }
.u-width-100px { width: 100px !important; }
.u-width-160px { width: 160px !important; }
.u-width-10rem { width: 10rem !important; }
.u-h-auto { height: auto !important; }
.u-hidden { display: none !important; }
.u-inline-block { display: inline-block !important; }
.u-block { display: block !important; }
.u-flex { display: flex !important; }
.u-inline-flex { display: inline-flex !important; }
.u-grid { display: grid !important; }
.u-flex-1 { flex: 1 1 0% !important; }
.u-flex-col { flex-direction: column !important; }
.u-flex-shrink-0 { flex-shrink: 0 !important; }
.u-flex-wrap { flex-wrap: wrap !important; }
.u-items-center { align-items: center !important; }
.u-items-end { align-items: flex-end !important; }
.u-items-start { align-items: flex-start !important; }
.u-justify-between { justify-content: space-between !important; }
.u-justify-center { justify-content: center !important; }
.u-gap-015 { gap: 0.15rem !important; }
.u-gap-025 { gap: 0.25rem !important; }
.u-gap-4px { gap: 4px !important; }
.u-gap-04 { gap: 0.4rem !important; }
.u-gap-05 { gap: 0.5rem !important; }
.u-gap-075 { gap: 0.75rem !important; }
.u-gap-10px { gap: 10px !important; }
.u-gap-6px { gap: 6px !important; }
.u-mr-03 { margin-right: 0.3rem !important; }
.u-text-center { text-align: center !important; }
.u-text-muted { color: var(--text-muted) !important; }
.u-text-danger { color: var(--bongo-red) !important; }
.u-text-status-red { color: var(--status-red) !important; }
.u-font-075 { font-size: 0.75rem !important; }
.u-font-078 { font-size: 0.78rem !important; }
.u-font-08 { font-size: 0.8rem !important; }
.u-font-082 { font-size: 0.82rem !important; }
.u-font-085 { font-size: 0.85rem !important; }
.u-font-088 { font-size: 0.88rem !important; }
.u-font-09 { font-size: 0.9rem !important; }
.u-font-11 { font-size: 1.1rem !important; }
.u-font-12 { font-size: 1.2rem !important; }
.u-fw-600 { font-weight: 600 !important; }
.u-text-decoration-none { text-decoration: none !important; }
.u-letter-spacing-4 { letter-spacing: 4px !important; }
.u-min-w-180 { min-width: 180px !important; }
.u-min-w-200 { min-width: 200px !important; }
.u-min-w-0 { min-width: 0 !important; }
.u-min-w-10rem { min-width: 10rem !important; }
.u-max-w-280 { max-width: 280px !important; }
.u-max-w-320 { max-width: 320px !important; }
.u-max-w-600 { max-width: 600px !important; }
.u-max-w-720 { max-width: 720px !important; }
.u-max-w-960 { max-width: 960px !important; }
.u-mx-auto { margin-left: auto !important; margin-right: auto !important; }
.u-grid-2 { grid-template-columns: 1fr 1fr !important; }
.u-cursor-pointer { cursor: pointer !important; }
.u-cursor-grab { cursor: grab !important; }
.u-white-space-nowrap { white-space: nowrap !important; }
.u-white-space-prewrap { white-space: pre-wrap !important; }
.u-font-inherit { font-family: inherit !important; }
.u-relative { position: relative !important; }
.u-bg-subtle { background: var(--bg-subtle) !important; }
.u-border-none { border: none !important; }
.u-pl-15 { padding-left: 1.5rem !important; }
.u-px-16 { padding-left: 16px !important; padding-right: 16px !important; }
.u-pt-12 { padding-top: 12px !important; }
.u-pb-8 { padding-bottom: 8px !important; }
.u-py-10 { padding-top: 10px !important; padding-bottom: 10px !important; }
.u-file-row { display: flex !important; justify-content: space-between !important; gap: 0.5rem !important; }

.tag-input-wrapper {
  border: 1px solid var(--form-element-border-color, #ccc);
  border-radius: 4px;
  padding: 0.35rem 0.5rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
  background: var(--form-element-background-color, #fff);
  min-height: 2.5rem;
}

.tag-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  background: var(--primary, #1095c1);
  color: #fff;
  border-radius: 3px;
  padding: 0.15rem 0.4rem;
  font-size: 0.85rem;
}

.tag-pill-remove {
  background: none;
  border: none;
  color: inherit;
  cursor: pointer;
  padding: 0;
  font-size: 0.9rem;
  line-height: 1;
}

.tag-input-field {
  border: none;
  outline: none;
  flex: 1;
  min-width: 10rem;
  background: transparent;
  font-size: inherit;
  padding: 0.1rem 0;
}

.tag-input-help {
  font-size: 0.8rem;
  color: var(--muted-color, #888);
  margin-top: 0.25rem;
}

.sidebar-group-calendar-tools {
  padding: 4px 12px;
}

.calendar-sidebar-btn {
  width: 100%;
  text-align: center;
  justify-content: center;
}

.calendar-sidebar-form {
  margin-top: 0.5rem;
}

.calendar-sidebar-file {
  font-size: 0.75rem;
  padding: 0.2rem;
  margin-bottom: 0.25rem;
  color: var(--sidebar-text);
}

.calendar-sidebar-search {
  font-size: 0.85rem;
  padding: 0.3rem 0.5rem;
  width: 100%;
  border-radius: var(--radius);
  border: 1px solid rgba(255, 255, 255, 0.15);
  background: rgba(255, 255, 255, 0.05);
  color: var(--sidebar-text);
}

.event-form {
  max-width: 600px;
}

.calendar-inline-label {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  cursor: pointer;
}

.event-meta {
  margin-bottom: 1rem;
  font-size: 0.8rem;
}

.calendar-list-label {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  cursor: pointer;
  font-size: 0.85rem;
}

.admin-inline-form {
  display: flex;
  gap: 0.75rem;
  align-items: flex-end;
}

.admin-inline-label {
  font-size: 0.82rem;
  color: var(--text-secondary);
}

.admin-btn-42 {
  height: 42px;
}

.admin-scroll-wide {
  max-width: none;
}

.admin-log-label {
  color: #8a94a8;
  font-size: 0.78rem;
  margin: 0;
}

.admin-log-label-spaced {
  margin-left: 0.5rem;
}

.admin-log-btn {
  border-color: #3e4358;
  color: #8a94a8;
  background: #252a3a;
}

.admin-log-btn-auto {
  margin-left: auto;
}

.avatar-colour-0 { background: #517faf; }
.avatar-colour-1 { background: #5aad4a; }
.avatar-colour-2 { background: #ee8d03; }
.avatar-colour-3 { background: #8a6fb8; }
.avatar-colour-4 { background: #e15e50; }
.avatar-colour-5 { background: #d4a60a; }
.avatar-colour-6 { background: #729fcf; }

.page-header-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1rem;
}

.form-inline-actions {
  display: flex;
  gap: 0.5rem;
  margin-top: 0.75rem;
}

.form-grid-two {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}

.settings-card-pad {
  padding: 20px;
}

.detail-placeholder-center {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  color: var(--text-muted);
  font-size: 0.9rem;
}

.manual-code-input {
  font-size: 18px;
  letter-spacing: 4px;
  text-align: center;
  font-weight: 600;
}


/* ============================================
   5. TOPBAR
   ============================================ */
.topbar {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: var(--topbar-h);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 16px;
  background: var(--bg);
  border-bottom: 1px solid var(--border);
  z-index: 100;
}

.topbar-left { display: flex; align-items: center; gap: 12px; }

.hamburger {
  display: none;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border: none;
  background: transparent;
  color: var(--text-secondary);
  font-size: 1.3rem;
  cursor: pointer;
  border-radius: var(--radius);
  transition: background 0.12s;
}
.hamburger:hover { background: var(--bg-muted); }

.brand {
  font-weight: 700;
  font-size: 1.15rem;
  color: var(--bongo-blue-dark);
  letter-spacing: -0.5px;
}
.brand span { color: var(--bongo-orange); }

.topbar-center {
  flex: 1;
  display: flex;
  justify-content: center;
  padding: 0 20px;
}

.search-box {
  display: flex;
  align-items: center;
  background: var(--bg-muted);
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 6px 14px;
  width: 100%;
  max-width: 480px;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.search-box:focus-within {
  border-color: var(--bongo-blue);
  box-shadow: 0 0 0 3px rgba(81,127,175,0.12);
}
.search-box input {
  border: none;
  background: none;
  outline: none;
  font-size: 0.9rem;
  color: var(--text);
  width: 100%;
  margin-left: 6px;
}
.search-box input::placeholder { color: var(--text-muted); }
.search-box input:focus-visible { outline: none; }
.search-icon { color: var(--text-muted); font-size: 0.9rem; flex-shrink: 0; }

.topbar-right { display: flex; align-items: center; gap: 4px; }

.topbar-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px; height: 34px;
  border-radius: 50%;
  border: none;
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
  font-size: 1.05rem;
  transition: background 0.12s;
}
.topbar-btn:hover { background: var(--bg-muted); }
.topbar-btn:focus-visible { outline: 2px solid var(--bongo-blue); outline-offset: 2px; }
.topbar-btn:focus:not(:focus-visible) { outline: none; }

.user-email { font-size: 0.82rem; color: var(--text-muted); padding: 0 8px; }

.topbar-link {
  font-size: 0.85rem;
  color: var(--text-secondary);
  padding: 6px 10px;
  border-radius: var(--radius);
  transition: background 0.12s, color 0.12s;
}
.topbar-link:hover {
  background: var(--bg-muted);
  color: var(--bongo-blue-dark);
}

/* Dark topbar modifier (search page, admin pages) */
.topbar-dark .topbar {
  background: var(--sidebar-bg);
  border-bottom: 1px solid rgba(255,255,255,0.1);
}
.topbar-dark .hamburger { color: var(--sidebar-text); }
.topbar-dark .hamburger:hover { background: var(--sidebar-hover); }
.topbar-dark .brand { color: #fff; }
.topbar-dark .topbar-btn { color: var(--sidebar-text); }
.topbar-dark .topbar-btn:hover { background: var(--sidebar-hover); }

/* Admin topbar: always dark slate */
.admin-layout .topbar {
  background: #1e293b;
  border-bottom: 1px solid #334155;
}
.admin-layout .hamburger { color: #94a3b8; }
.admin-layout .hamburger:hover { background: rgba(255,255,255,0.06); }
.admin-layout .brand { color: #e2e8f0; }
.admin-layout .topbar-btn { color: #94a3b8; }
.admin-layout .topbar-btn:hover { background: rgba(255,255,255,0.06); }
.admin-layout .topbar-link { font-size: 0.82rem; color: #64748b; }
.admin-layout .topbar-link:hover { background: rgba(255,255,255,0.06); color: #cbd5e1; }

/* Admin-specific topbar elements */
.admin-user { font-size: 0.82rem; color: #94a3b8; }
.back-to-mail { font-size: 0.82rem; color: var(--bongo-blue); padding: 6px 10px; border-radius: var(--radius); }
.back-to-mail:hover { background: rgba(81,127,175,0.1); }

/* Search page topbar input (transparent variant) */
.topbar-dark .search-input {
  background: rgba(255,255,255,0.1);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 20px;
  padding: 6px 16px;
  font-size: 0.85rem;
  color: #fff;
  width: 300px;
}
.topbar-dark .search-input::placeholder { color: rgba(255,255,255,0.5); }
.topbar-dark .search-input:focus { background: rgba(255,255,255,0.15); border-color: rgba(255,255,255,0.3); outline: none; }

/* Search page user link */
.user-link { font-size: 0.82rem; color: var(--sidebar-text); padding: 6px 10px; border-radius: var(--radius); }
.user-link:hover { background: var(--sidebar-hover); color: #fff; }


/* ============================================
   6. LAYOUT
   ============================================ */
.layout {
  display: flex;
  position: fixed;
  top: var(--topbar-h);
  left: 0; right: 0; bottom: 0;
}


/* ============================================
   7. SIDEBAR (Mail)
   ============================================ */
.sidebar {
  width: var(--sidebar-width);
  background: var(--sidebar-bg);
  color: var(--sidebar-text);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  overflow-y: auto;
  overflow-x: hidden;
  transition: transform 0.25s ease;
}

.sidebar-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.4);
  z-index: 149;
}

/* Compose button */
.compose-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin: 12px 10px 6px;
  padding: 8px 0;
  background: var(--bongo-orange);
  color: #1a1a2e;
  border: none;
  border-radius: var(--radius-lg);
  font-weight: 700;
  font-size: 0.92rem;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(255,172,53,0.3);
  transition: all 0.15s;
}
.compose-btn:hover {
  background: var(--bongo-orange-hover);
  color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(255,172,53,0.4);
}

/* Compose button variant used when on compose page */
.sidebar-compose-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin: 14px 12px 6px;
  padding: 10px 0;
  background: var(--bongo-orange);
  color: #1a1a2e;
  border: none;
  border-radius: var(--radius-lg);
  font-weight: 700;
  font-size: 0.92rem;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(255,172,53,0.3);
  transition: all 0.15s;
  opacity: 0.6;
}
.sidebar-compose-btn.current {
  opacity: 1;
  background: var(--bongo-orange-hover);
  color: #fff;
  cursor: default;
}

/* Sidebar navigation groups */
.sidebar-group { padding: 4px 8px; }
.sidebar-group + .sidebar-group {
  border-top: 1px solid rgba(255,255,255,0.08);
  margin-top: 4px;
  padding-top: 8px;
}

.sidebar-label {
  font-size: 0.62rem;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: rgba(255,255,255,0.35);
  padding: 8px 10px 4px;
  font-weight: 600;
}
.sidebar-label-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  user-select: none;
}
.sidebar-label-toggle:hover { color: rgba(255,255,255,0.55); }
.sidebar-chevron {
  font-size: 0.5rem;
  transition: transform 0.15s;
}
.sidebar-chevron.collapsed { transform: rotate(-90deg); }

/* Search page sidebar section variant */
.sidebar-section { padding: 0 8px; }
.sidebar-section h4 {
  font-size: 0.62rem;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: rgba(255,255,255,0.25);
  padding: 14px 8px 6px;
  font-weight: 600;
}

.nav-list { list-style: none; }

.nav-item a {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 10px;
  border-radius: var(--radius);
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--sidebar-text);
  transition: background 0.12s, color 0.12s;
  border-left: 3px solid transparent;
  margin: 1px 0;
}
.nav-item a:hover {
  background: var(--sidebar-hover);
  color: var(--sidebar-bright);
}
.nav-item a.active {
  background: var(--sidebar-active);
  color: var(--sidebar-bright);
  border-left-color: var(--bongo-orange);
  font-weight: 600;
}

/* Search page uses nav-list li a directly */
.nav-list li a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border-radius: var(--radius);
  font-size: 0.88rem;
  font-weight: 500;
  color: var(--sidebar-text);
  margin: 1px 0;
}
.nav-list li a:hover {
  background: var(--sidebar-hover);
  color: var(--sidebar-bright);
}
.nav-list li a.active {
  background: var(--sidebar-active);
  color: var(--sidebar-bright);
  font-weight: 600;
}

.nav-icon { width: 18px; text-align: center; font-size: 0.95rem; flex-shrink: 0; }
.nav-tag-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; margin-right: 2px; }

.nav-badge {
  margin-left: auto;
  font-size: 0.68rem;
  font-weight: 700;
  background: var(--bongo-orange);
  color: #1a1a2e;
  border-radius: 10px;
  padding: 1px 7px;
  min-width: 20px;
  text-align: center;
}

/* Search page unread badge variant */
.unread-badge {
  background: var(--bongo-orange);
  color: #1a1a2e;
  font-size: 0.68rem;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 8px;
  margin-left: auto;
}

/* Folder tree hierarchy */
.nav-folder-row {
  display: flex;
  align-items: center;
}
.nav-folder-row > a {
  flex: 1;
  min-width: 0;
}
.folder-toggle {
  background: none;
  border: none;
  color: rgba(255,255,255,0.4);
  cursor: pointer;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 0.55rem;
  padding: 0;
  margin-left: 4px;
  border-radius: var(--radius);
  transition: color 0.12s;
}
.folder-toggle:hover {
  color: rgba(255,255,255,0.7);
}
.toggle-icon {
  display: inline-block;
  transition: transform 0.15s ease;
}
.toggle-icon.expanded {
  transform: rotate(90deg);
}
.nav-has-children.collapsed > .nav-children {
  display: none;
}
.nav-has-children.collapsed .toggle-icon {
  transform: rotate(0deg);
}
.nav-children {
  padding-left: 16px;
  transition: opacity 0.15s ease;
}

/* Admin sidebar */
.admin-layout .sidebar {
  border-right: 1px solid #334155;
}

.admin-nav { list-style: none; padding: 12px 8px; }
/* admin-nav-item is applied directly on the <a> tag in admin.templ */
a.admin-nav-item, .admin-nav-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border-radius: var(--radius);
  font-size: 0.88rem;
  font-weight: 500;
  color: var(--sidebar-text);
  text-decoration: none;
  transition: background 0.12s, color 0.12s;
  margin: 1px 0;
}
a.admin-nav-item:hover, .admin-nav-item:hover {
  background: var(--sidebar-hover);
  color: var(--sidebar-bright);
}
a.admin-nav-item.active, .admin-nav-item.active {
  background: var(--sidebar-active);
  color: var(--sidebar-bright);
  font-weight: 600;
}
.admin-nav-icon { width: 18px; text-align: center; font-size: 0.95rem; flex-shrink: 0; }
.admin-nav-section {
  font-size: 0.62rem;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: rgba(255,255,255,0.25);
  padding: 16px 12px 6px;
  font-weight: 600;
}


/* ============================================
   8. MINI CALENDAR (Sidebar)
   ============================================ */
.mini-cal {
  margin: 8px 12px 16px;
  padding: 10px;
  background: rgba(255,255,255,0.05);
  border-radius: var(--radius-lg);
}
.mini-cal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}
.mini-cal-title { font-size: 0.78rem; font-weight: 600; color: var(--sidebar-bright); }
.mini-cal-nav {
  background: none; border: none; color: var(--sidebar-text);
  cursor: pointer; padding: 2px 6px; border-radius: 4px; font-size: 0.8rem;
}
.mini-cal-nav:hover { background: rgba(255,255,255,0.1); }
.mini-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 1px;
  text-align: center;
}
.mini-cal-dow { font-size: 0.6rem; color: rgba(255,255,255,0.3); padding: 2px 0; font-weight: 600; }
.mini-cal-day { font-size: 0.72rem; padding: 3px 0; border-radius: 4px; color: var(--sidebar-text); cursor: pointer; }
.mini-cal-day:hover { background: rgba(255,255,255,0.1); }
.mini-cal-day.other { color: rgba(255,255,255,0.2); }
.mini-cal-day.today { background: var(--bongo-orange); color: #1a1a2e; font-weight: 700; }


/* ============================================
   9. MAIN CONTENT
   ============================================ */
.content {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
  background: var(--bg);
  overflow-y: auto;
}


/* ============================================
   10. TOOLBAR
   ============================================ */
.toolbar {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--bg-subtle);
  min-height: 44px;
  flex-shrink: 0;
}

.tool-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--text-secondary);
  font-size: 0.82rem;
  cursor: pointer;
  transition: all 0.12s;
  white-space: nowrap;
}
.tool-btn:hover {
  background: var(--bongo-blue-light);
  border-color: var(--bongo-blue);
  color: var(--bongo-blue-dark);
}
.tool-btn.primary { background: var(--bongo-blue); color: #fff; border-color: var(--bongo-blue); }
.tool-btn.primary:hover { background: var(--bongo-blue-dark); }
.tool-btn.danger:hover { background: #fdf2f2; border-color: #e74c3c; color: #e74c3c; }
[data-theme="dark"] .tool-btn.danger:hover { background: #3a1a1a; }

.tool-check {
  appearance: none;
  -webkit-appearance: none;
  width: 16px; height: 16px;
  border: 2px solid var(--border-strong);
  border-radius: 3px;
  cursor: pointer;
  transition: all 0.12s;
  flex-shrink: 0;
}
.tool-check:checked { background: var(--bongo-blue); border-color: var(--bongo-blue); }

.tool-separator { width: 1px; height: 24px; background: var(--border); margin: 0 4px; }
.tool-spacer { flex: 1; }

/* Layout toggles */
.layout-toggle {
  display: flex;
  background: var(--bg-muted);
  border-radius: var(--radius);
  padding: 2px;
  gap: 2px;
}
.layout-opt {
  padding: 4px 10px; border: none; background: transparent;
  color: var(--text-muted); font-size: 0.85rem; cursor: pointer;
  border-radius: 4px; transition: all 0.12s;
}
.layout-opt.active { background: var(--bg); color: var(--bongo-blue); box-shadow: var(--shadow-sm); }

.page-info { font-size: 0.78rem; color: var(--text-muted); padding: 0 8px; white-space: nowrap; }

.move-select {
  padding: 5px 8px; border: 1px solid var(--border);
  border-radius: var(--radius); background: var(--bg);
  color: var(--text-secondary); font-size: 0.82rem;
  cursor: pointer;
}


/* ============================================
   11. MESSAGE LIST
   ============================================ */
.msg-list { flex: 1; overflow-y: auto; }

.msg-row {
  display: flex;
  align-items: center;
  padding: 0 16px;
  height: 44px;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  transition: background 0.1s;
}
.msg-row:hover { background: var(--bg-hover); }

.msg-row.unread { background: var(--bg-subtle); }
.msg-row.unread .msg-from,
.msg-row.unread .msg-subject { color: var(--text); font-weight: 600; }
.msg-row.unread .msg-date { font-weight: 600; color: var(--bongo-blue-dark); }
.msg-row-swipe-animating { transition: transform 200ms ease; }
.msg-row-swipe-dismiss-left { transform: translateX(-100%); }
.msg-row-swipe-dismiss-right { transform: translateX(100%); }

.msg-check {
  appearance: none; -webkit-appearance: none;
  width: 15px; height: 15px;
  border: 2px solid var(--border-strong);
  border-radius: 3px; cursor: pointer;
  flex-shrink: 0; margin-right: 10px;
  transition: all 0.12s;
}
.msg-check:checked { background: var(--bongo-blue); border-color: var(--bongo-blue); }

.msg-star {
  width: 28px; text-align: center; cursor: pointer;
  font-size: 1rem; color: var(--text-muted);
  flex-shrink: 0; transition: color 0.12s; user-select: none;
  background: none; border: none; padding: 0;
  font-family: inherit; line-height: 1;
}
.msg-star:hover { color: #f0ad4e; }
.msg-star.flagged { color: #f0ad4e; }

.msg-from {
  width: 180px; flex-shrink: 0;
  font-size: 0.88rem; color: var(--text-secondary);
  overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; padding-right: 12px;
}

.msg-subject {
  flex: 1; font-size: 0.88rem; color: var(--text);
  overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; min-width: 0;
}

.msg-snippet { color: var(--text-muted); font-weight: 400; }

.msg-thread-count {
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--bg-muted); color: var(--text-secondary);
  font-size: 0.7rem; font-weight: 600;
  border-radius: 10px; padding: 1px 6px;
  margin-left: 6px; flex-shrink: 0;
}

.msg-attach { color: var(--text-muted); font-size: 0.85rem; margin-left: 6px; flex-shrink: 0; }

.msg-date {
  width: 80px; text-align: right;
  font-size: 0.78rem; color: var(--text-muted);
  flex-shrink: 0; padding-left: 12px;
}

/* Mobile message layout elements -- hidden on desktop */
.msg-mobile-row2 { display: none; }


/* ============================================
   12. PAGINATION
   ============================================ */
.pagination {
  display: flex; align-items: center; justify-content: center;
  flex-wrap: wrap;
  gap: 4px; padding: 12px 16px;
  border-top: 1px solid var(--border);
  background: var(--bg-subtle);
}
.page-btn {
  display: flex; align-items: center; justify-content: center;
  min-width: 34px; height: 34px;
  padding: 0 8px; border: 1px solid var(--border);
  border-radius: var(--radius); background: var(--bg);
  color: var(--text-secondary); font-size: 0.85rem;
  cursor: pointer; transition: all 0.12s;
}
.page-btn:hover { background: var(--bongo-blue-light); border-color: var(--bongo-blue); color: var(--bongo-blue-dark); }
.page-btn.active { background: var(--bongo-blue); border-color: var(--bongo-blue); color: white; }
.page-btn:disabled { opacity: 0.4; cursor: default; }
.page-ellipsis { display: flex; align-items: center; padding: 0 4px; color: var(--text-muted); font-size: 0.85rem; }


/* ============================================
   13. THREAD / MESSAGE VIEW
   ============================================ */

/* Thread header (subject) */
.thread-header {
  padding: 16px 24px 12px;
  border-bottom: 1px solid var(--border);
}
.thread-subject {
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--text);
  line-height: 1.3;
}
.thread-labels { display: flex; gap: 6px; margin-top: 6px; }
.thread-label {
  display: inline-flex; align-items: center;
  font-size: 0.72rem; font-weight: 600;
  padding: 2px 8px; border-radius: 10px;
  background: var(--bg-muted); color: var(--text-secondary);
}
.thread-label.inbox { background: var(--bongo-blue-light); color: var(--bongo-blue-dark); }

/* Message list (scrollable) */
.thread-messages {
  flex: 1; overflow-y: auto;
  padding: 16px 24px 24px;
}

/* Individual message bubble */
.message {
  position: relative; display: flex;
  gap: 12px; margin-bottom: 16px;
}

/* Avatar */
.msg-avatar {
  width: 40px; height: 40px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.78rem; font-weight: 700; color: #fff;
  flex-shrink: 0; margin-top: 4px;
}

/* Message card */
.msg-card {
  flex: 1; min-width: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden; transition: box-shadow 0.15s;
}
.msg-card:hover { box-shadow: var(--shadow-sm); }

.loaded-remote-image { max-width: 100%; }

.message.unread .msg-card {
  border-color: var(--bongo-blue);
  box-shadow: 0 0 0 1px var(--bongo-blue);
}
.message.sent .msg-card { background: var(--bg-subtle); }

/* Message header row */
.msg-head {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 14px;
  background: var(--bg-subtle);
  border-bottom: 1px solid var(--border);
  cursor: pointer;
}

.msg-sender { font-weight: 600; font-size: 0.88rem; color: var(--text); }
.msg-recipients { font-size: 0.78rem; color: var(--text-muted); }
.msg-head-spacer { flex: 1; }

.msg-head-actions { display: flex; gap: 2px; }
.msg-action-btn {
  padding: 3px 8px; border: none; background: transparent;
  color: var(--text-muted); font-size: 0.78rem;
  cursor: pointer; border-radius: var(--radius);
  transition: background 0.12s, color 0.12s;
}
.msg-action-btn:hover { background: var(--bg-muted); color: var(--bongo-blue-dark); }

/* Collapse indicator */
.msg-collapse-icon {
  font-size: 0.7rem; color: var(--text-muted);
  transition: transform 0.2s; flex-shrink: 0;
}
.message.collapsed .msg-collapse-icon { transform: rotate(-90deg); }

/* Message body */
.msg-body {
  padding: 14px; font-size: 0.9rem;
  line-height: 1.65; color: var(--text);
}
.msg-body p { margin-bottom: 0.8em; }
.msg-body p:last-child { margin-bottom: 0; }
.msg-body ul, .msg-body ol { margin: 0.5em 0 0.8em 1.5em; }
.msg-body li { margin-bottom: 0.3em; }
.msg-body blockquote {
  margin: 0.5em 0; padding: 8px 14px;
  border-left: 3px solid var(--border-strong);
  background: var(--bg-subtle); color: var(--text-secondary);
  font-size: 0.88rem; border-radius: 0 var(--radius) var(--radius) 0;
}

/* Collapsed state */
.message.collapsed .msg-body { display: none; }
.message.collapsed .msg-attachments { display: none; }

/* Snippet shown when collapsed (in thread view) */
.message .msg-snippet {
  display: none;
  font-size: 0.82rem; color: var(--text-muted);
  padding: 0; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap;
  max-width: 500px;
}
.message.collapsed .msg-snippet { display: block; }
.message.collapsed .msg-head { border-bottom: none; }

/* Attachments */
.msg-attachments {
  padding: 10px 14px;
  background: var(--bg-subtle);
  border-top: 1px solid var(--border);
  display: flex; flex-wrap: wrap; gap: 8px;
}

.attachment-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px;
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius); font-size: 0.82rem;
  color: var(--text); text-decoration: none;
  transition: background 0.12s, border-color 0.12s;
}
.attachment-chip:hover {
  background: var(--bongo-blue-light);
  border-color: var(--bongo-blue);
  color: var(--bongo-blue-dark);
}
.attachment-icon { font-size: 1rem; }
.attachment-size { color: var(--text-muted); font-size: 0.75rem; }

/* Blocked images banner */
.blocked-banner {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 14px;
  background: #fef3cd; color: #856404;
  font-size: 0.82rem; border-bottom: 1px solid #ffc107;
}
[data-theme="dark"] .blocked-banner {
  background: #3a3520; color: #ffc107; border-color: #665d1e;
}
.blocked-banner button {
  padding: 3px 10px; border: 1px solid currentColor;
  background: transparent; color: inherit;
  border-radius: var(--radius); cursor: pointer; font-size: 0.78rem;
}

/* Quick reply area */
.quick-reply {
  margin: 0 0 24px 52px;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
}
.quick-reply-textarea {
  width: 100%; min-height: 100px;
  border: none; padding: 12px 14px;
  font-family: inherit; font-size: 0.9rem;
  line-height: 1.5; resize: vertical;
  background: var(--bg); color: var(--text); outline: none;
}
.quick-reply-textarea::placeholder { color: var(--text-muted); }
.quick-reply-textarea:focus-visible { outline: none; }
.quick-reply-footer {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 14px;
  background: var(--bg-subtle);
  border-top: 1px solid var(--border);
}
.reply-spacer { flex: 1; }
.reply-attach-btn {
  border: none; background: transparent; color: var(--text-muted);
  font-size: 1.1rem; cursor: pointer; padding: 4px;
  border-radius: var(--radius); transition: color 0.12s;
}
.reply-attach-btn:hover { color: var(--bongo-blue); }

/* Thread utility classes (from existing bongo.css) */
.thread-badge {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 700;
  background: var(--bg-muted);
  color: var(--text-secondary);
  border-radius: 10px;
  padding: 1px 6px;
  margin-left: 4px;
}
.thread-children { background: var(--bg-subtle); }
.thread-child td.from-col { padding-left: 24px; }

/* ============================================
   TAG CHIPS (message detail view)
   ============================================ */
.msg-tags-row {
  display: flex; align-items: center; flex-wrap: wrap; gap: 6px;
  padding: 6px 16px 4px;
}

.msg-tags-chips {
  display: flex; align-items: center; flex-wrap: wrap; gap: 5px;
}

/* Individual tag chip */
.tag-chip {
  display: inline-flex; align-items: center; gap: 3px;
  background: color-mix(in srgb, var(--tag-colour, #517faf) 15%, transparent);
  color: var(--tag-colour, #517faf);
  border: 1px solid color-mix(in srgb, var(--tag-colour, #517faf) 35%, transparent);
  padding: 2px 6px 2px 9px; border-radius: 12px;
  font-size: 0.78rem; font-weight: 500; line-height: 1.4;
  white-space: nowrap;
}

.tag-chip-name {
  color: inherit; text-decoration: none;
}
.tag-chip-name:hover { text-decoration: underline; }

.tag-chip-remove {
  display: inline-flex; align-items: center; justify-content: center;
  width: 15px; height: 15px; border: none; background: transparent;
  color: inherit; opacity: 0.65; cursor: pointer; border-radius: 50%;
  font-size: 0.9rem; line-height: 1; transition: opacity 0.12s, background 0.12s;
  padding: 0;
}
.tag-chip-remove:hover { opacity: 1; background: color-mix(in srgb, var(--tag-colour, #517faf) 20%, transparent); }

/* Add-tag button */
.tag-add-wrapper { position: relative; }

.tag-add-btn {
  display: inline-flex; align-items: center;
  padding: 2px 9px; border-radius: 12px;
  border: 1px dashed var(--border-strong);
  background: transparent; color: var(--text-muted);
  font-size: 0.78rem; cursor: pointer;
  transition: color 0.12s, border-color 0.12s, background 0.12s;
}
.tag-add-btn:hover { color: var(--bongo-blue); border-color: var(--bongo-blue); background: var(--bongo-blue-lightest); }

/* Dropdown panel */
.tag-dropdown {
  position: absolute; left: 0; top: calc(100% + 4px); z-index: 200;
  background: var(--bg); border: 1px solid var(--border-strong);
  border-radius: var(--radius); box-shadow: var(--shadow-md);
  min-width: 200px; max-width: 280px;
  display: flex; flex-direction: column;
}

.tag-search-input {
  width: 100%; box-sizing: border-box;
  padding: 7px 10px; border: none; border-bottom: 1px solid var(--border);
  background: transparent; color: var(--text); font-size: 0.85rem;
  outline: none; border-radius: var(--radius) var(--radius) 0 0;
}
.tag-search-input::placeholder { color: var(--text-muted); }

.tag-dropdown-list {
  list-style: none; margin: 0; padding: 4px 0;
  max-height: 220px; overflow-y: auto;
}

.tag-dropdown-item {
  display: flex; align-items: center; gap: 7px;
  width: 100%; padding: 6px 10px;
  border: none; background: transparent;
  color: var(--text); font-size: 0.85rem;
  cursor: pointer; text-align: left;
  transition: background 0.1s;
}
.tag-dropdown-item:hover { background: var(--bg-subtle); }
.tag-dropdown-item--active { font-weight: 600; }

.tag-swatch {
  display: inline-block; width: 10px; height: 10px;
  border-radius: 50%; flex-shrink: 0;
}

.tag-check { margin-left: auto; color: var(--bongo-green); font-size: 0.85rem; }

.tag-dropdown-create {
  border-top: 1px solid var(--border); padding: 4px 0;
}
.tag-dropdown-item--create { color: var(--bongo-blue); font-style: italic; }

/* Tag settings page */
.tag-settings-row { flex-wrap: wrap; gap: 8px; }
.tag-settings-swatch { border-radius: 50%; border: 1px solid rgba(0,0,0,0.12); }
.tag-swatch-md { width: 14px; height: 14px; flex-shrink: 0; }

.tag-colour-picker {
  display: flex; flex-wrap: wrap; gap: 5px;
  max-width: 200px;
}
.tag-colour-swatch-btn {
  width: 20px; height: 20px; border-radius: 50%;
  border: 2px solid transparent; cursor: pointer;
  padding: 0; transition: transform 0.1s, outline 0.1s;
}
.tag-colour-swatch-btn:hover { transform: scale(1.2); }
.tag-colour-swatch-btn--selected { outline: 2px solid var(--text); outline-offset: 2px; }

.tag-palette-bg-0 { background: #517faf; }
.tag-palette-bg-1 { background: #5aad4a; }
.tag-palette-bg-2 { background: #ee8d03; }
.tag-palette-bg-3 { background: #8a6fb8; }
.tag-palette-bg-4 { background: #e15e50; }
.tag-palette-bg-5 { background: #d4a60a; }
.tag-palette-bg-6 { background: #729fcf; }
.tag-palette-bg-7 { background: #3bada8; }
.tag-palette-bg-8 { background: #e06c9f; }
.tag-palette-bg-9 { background: #70b8a8; }
.tag-palette-bg-10 { background: #c07d40; }
.tag-palette-bg-11 { background: #8c9e6b; }
.tag-palette-bg-12 { background: #a07ab8; }
.tag-palette-bg-13 { background: #4e9a8f; }
.tag-palette-bg-14 { background: #c96464; }
.tag-palette-bg-15 { background: #7a8fa8; }

.message-tag-colour-0 { --tag-colour: #3b82f6; }
.message-tag-colour-1 { --tag-colour: #22c55e; }
.message-tag-colour-2 { --tag-colour: #ef4444; }
.message-tag-colour-3 { --tag-colour: #f59e0b; }
.message-tag-colour-4 { --tag-colour: #8b5cf6; }
.message-tag-colour-5 { --tag-colour: #06b6d4; }
.message-tag-colour-6 { --tag-colour: #f97316; }
.message-tag-colour-7 { --tag-colour: #ec4899; }
.message-tag-colour-8 { --tag-colour: #14b8a6; }
.message-tag-colour-9 { --tag-colour: #6366f1; }
.message-tag-colour-10 { --tag-colour: #84cc16; }
.message-tag-colour-11 { --tag-colour: #eab308; }
.message-tag-colour-12 { --tag-colour: #64748b; }
.message-tag-colour-13 { --tag-colour: #a855f7; }
.message-tag-colour-14 { --tag-colour: #10b981; }
.message-tag-colour-15 { --tag-colour: #f43f5e; }

.message-tag-bg-0 { background: #3b82f6; }
.message-tag-bg-1 { background: #22c55e; }
.message-tag-bg-2 { background: #ef4444; }
.message-tag-bg-3 { background: #f59e0b; }
.message-tag-bg-4 { background: #8b5cf6; }
.message-tag-bg-5 { background: #06b6d4; }
.message-tag-bg-6 { background: #f97316; }
.message-tag-bg-7 { background: #ec4899; }
.message-tag-bg-8 { background: #14b8a6; }
.message-tag-bg-9 { background: #6366f1; }
.message-tag-bg-10 { background: #84cc16; }
.message-tag-bg-11 { background: #eab308; }
.message-tag-bg-12 { background: #64748b; }
.message-tag-bg-13 { background: #a855f7; }
.message-tag-bg-14 { background: #10b981; }
.message-tag-bg-15 { background: #f43f5e; }

.thread-depth-0 { padding-left: 0rem; }
.thread-depth-1 { padding-left: 2rem; }
.thread-depth-2 { padding-left: 4rem; }
.thread-depth-3 { padding-left: 6rem; }
.thread-depth-4 { padding-left: 8rem; }
.thread-depth-5 { padding-left: 10rem; }
.thread-depth-6 { padding-left: 12rem; }
.thread-depth-7 { padding-left: 14rem; }
.thread-depth-8 { padding-left: 16rem; }
.thread-depth-9 { padding-left: 18rem; }
.thread-depth-10 { padding-left: 20rem; }
.thread-depth-11 { padding-left: 22rem; }
.thread-depth-12 { padding-left: 24rem; }

/* Small icon button (edit/delete inline) */
.btn-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border-radius: var(--radius);
  border: 1px solid var(--border); background: transparent;
  color: var(--text-secondary); font-size: 0.85rem; cursor: pointer;
  padding: 0; transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.btn-icon:hover { background: var(--bg-muted); color: var(--text); border-color: var(--border-strong); }
.btn-icon--danger:hover { background: #fdf2f2; color: #c0392b; border-color: #f1aeb5; }
[data-theme="dark"] .btn-icon--danger:hover { background: #3a1a1a; color: #e74c3c; border-color: #5a2020; }

/* Ghost button (secondary action, no background) */
.btn-ghost {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 5px 12px; border-radius: var(--radius);
  border: 1px solid var(--border); background: transparent;
  color: var(--text-secondary); font-size: 0.82rem; cursor: pointer;
  transition: background 0.12s, color 0.12s;
}
.btn-ghost:hover { background: var(--bg-muted); color: var(--text); }

/* ============================================
   14. COMPOSE
   ============================================ */
.compose-area { flex: 1; padding: 20px; overflow-y: auto; }

.compose-card {
  max-width: 820px; margin: 0 auto;
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-md);
  overflow: hidden;
}

.compose-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 20px;
  background: var(--bg-subtle);
  border-bottom: 1px solid var(--border);
}
.compose-header-title { font-weight: 600; font-size: 0.95rem; color: var(--text); }
.compose-close {
  display: flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border: none; background: transparent;
  color: var(--text-muted); font-size: 1.3rem; cursor: pointer;
  border-radius: var(--radius); transition: background 0.12s, color 0.12s;
}
.compose-close:hover { background: var(--bg-muted); color: var(--text); }

/* Address and subject fields */
.compose-body { padding: 0 20px; }

.field-row {
  display: flex; align-items: flex-start; gap: 0; padding: 0;
  border-bottom: 1px solid var(--border);
}
.field-label {
  width: 56px; text-align: right;
  font-size: 0.82rem; font-weight: 500;
  color: var(--text-muted);
  padding: 10px 12px 10px 0; flex-shrink: 0;
}
.field-content { flex: 1; min-width: 0; }
.field-content input[type="text"],
.field-content input[type="email"] {
  width: 100%; border: none; padding: 9px 0;
  font-size: 0.92rem; background: transparent;
  color: var(--text); outline: none;
}
.field-content input::placeholder { color: var(--text-muted); }
.field-content input:focus-visible { outline: none; }

.field-actions {
  display: flex; align-items: center; gap: 2px;
  padding: 4px 0; flex-shrink: 0;
}

.cc-toggle {
  font-size: 0.8rem; color: var(--text-muted);
  cursor: pointer; padding: 5px 8px; border: none;
  background: transparent; border-radius: var(--radius);
  transition: background 0.12s, color 0.12s;
}
.cc-toggle:hover { background: var(--bg-muted); color: var(--bongo-blue); }
.cc-toggle.active { color: var(--bongo-blue); font-weight: 600; }

/* Recipient chips */
.chip-area {
  display: flex; flex-wrap: wrap; gap: 4px;
  align-items: center; min-height: 38px; padding: 4px 0;
}
.chip-area input[type="text"] { flex: 1; min-width: 120px; padding: 5px 0; }

.recipient-chip {
  display: inline-flex; align-items: center; gap: 4px;
  background: var(--bongo-blue-light); color: var(--bongo-blue-dark);
  padding: 3px 8px 3px 10px; border-radius: 14px;
  font-size: 0.82rem; font-weight: 500;
}
.chip-remove {
  display: inline-flex; align-items: center; justify-content: center;
  width: 16px; height: 16px; border: none; background: transparent;
  color: var(--bongo-blue); cursor: pointer; border-radius: 50%;
  font-size: 0.85rem; line-height: 1; transition: background 0.12s;
}
.chip-remove:hover { background: rgba(81,127,175,0.2); }

/* Format toolbar */
.format-toolbar {
  display: flex; align-items: center; gap: 2px;
  padding: 6px 20px;
  border-bottom: 1px solid var(--border);
  background: var(--bg-subtle);
}
.format-btn {
  padding: 4px 10px; border: none; background: transparent;
  border-radius: var(--radius); cursor: pointer;
  color: var(--text-secondary); font-size: 0.85rem;
  transition: background 0.12s, color 0.12s;
}
.format-btn:hover { background: var(--bg-muted); color: var(--text); }
.format-btn.active { background: var(--bongo-blue-light); color: var(--bongo-blue-dark); }

.format-sep { width: 1px; height: 18px; background: var(--border); margin: 0 4px; }

/* Compose textarea */
.compose-textarea {
  width: 100%; min-height: 320px; border: none;
  padding: 16px 20px;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  font-size: 0.92rem; line-height: 1.65;
  resize: vertical; background: transparent;
  color: var(--text); outline: none;
}
.compose-textarea::placeholder { color: var(--text-muted); }
.compose-textarea:focus-visible { outline: none; }

/* Attachment area */
.attachment-area { padding: 0 20px 12px; }

.drop-zone {
  border: 2px dashed var(--border-strong);
  border-radius: var(--radius-lg); padding: 16px;
  text-align: center; color: var(--text-muted);
  font-size: 0.85rem; transition: border-color 0.15s, background 0.15s;
  cursor: pointer;
}
.drop-zone:hover,
.drop-zone.drag-over {
  border-color: var(--bongo-blue);
  background: var(--bongo-blue-light);
  color: var(--bongo-blue-dark);
}
.drop-zone-icon { font-size: 1.4rem; margin-bottom: 4px; }
.drop-zone-link { color: var(--bongo-blue); font-weight: 500; cursor: pointer; }

.attached-files { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }

.attached-file {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 10px;
  background: var(--bg-subtle); border: 1px solid var(--border);
  border-radius: var(--radius); font-size: 0.82rem;
}
.attached-file-icon { font-size: 1rem; flex-shrink: 0; }
.attached-file-name {
  flex: 1; min-width: 0; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap;
  color: var(--text); font-weight: 500;
}
.attached-file-size { color: var(--text-muted); flex-shrink: 0; }
.attached-file-remove {
  border: none; background: transparent; color: var(--text-muted);
  cursor: pointer; padding: 2px 4px; border-radius: var(--radius);
  font-size: 0.9rem; transition: color 0.12s;
}
.attached-file-remove:hover { color: #e74c3c; }

/* Compose footer */
.compose-footer {
  display: flex; align-items: center; gap: 8px;
  padding: 12px 20px;
  background: var(--bg-subtle);
  border-top: 1px solid var(--border);
}
.compose-spacer { flex: 1; }

/* Shared buttons (used in compose, thread, contacts) */
.btn-send {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 24px;
  background: var(--bongo-blue); color: #fff; border: none;
  border-radius: var(--radius); font-weight: 600; font-size: 0.9rem;
  cursor: pointer; transition: background 0.12s, transform 0.1s;
}
.btn-send:hover { background: var(--bongo-blue-dark); transform: translateY(-1px); }

.btn-secondary {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 8px 16px;
  background: transparent; border: 1px solid var(--border);
  border-radius: var(--radius); color: var(--text-secondary);
  font-size: 0.85rem; cursor: pointer; transition: all 0.12s;
}
.btn-secondary:hover { background: var(--bg-muted); border-color: var(--border-strong); color: var(--text); }

.btn-discard {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 8px 16px;
  background: transparent; border: 1px solid var(--border);
  border-radius: var(--radius); color: var(--text-muted);
  font-size: 0.85rem; cursor: pointer; transition: all 0.12s;
}
.btn-discard:hover { background: #fdf2f2; border-color: #e74c3c; color: #e74c3c; }
[data-theme="dark"] .btn-discard:hover { background: #3a1a1a; }


/* ============================================
   15. CONTACTS
   ============================================ */

/* Two-pane layout */
.contacts-panes { flex: 1; display: flex; overflow: hidden; }

/* Left pane: contact list */
.contact-list-pane {
  width: 360px; flex-shrink: 0;
  border-right: 1px solid var(--border);
  display: flex; flex-direction: column; overflow: hidden;
}

.contact-search {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 14px; border-bottom: 1px solid var(--border);
  background: var(--bg-subtle);
}
.contact-search input {
  flex: 1; border: 1px solid var(--border);
  border-radius: 16px; padding: 6px 12px;
  font-size: 0.85rem; background: var(--bg);
  color: var(--text); outline: none;
}
.contact-search input:focus { border-color: var(--bongo-blue); }
.contact-search input:focus-visible { outline: none; }
.contact-count { font-size: 0.75rem; color: var(--text-muted); white-space: nowrap; }

.contact-scroll { flex: 1; overflow-y: auto; }

.letter-divider {
  padding: 4px 14px;
  font-size: 0.68rem; font-weight: 700;
  color: var(--text-muted); background: var(--bg-muted);
  text-transform: uppercase; letter-spacing: 1.5px;
  position: sticky; top: 0; z-index: 4;
  border-bottom: 1px solid var(--border);
}

.contact-card {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 14px; border-bottom: 1px solid var(--border);
  cursor: pointer; transition: background 0.1s;
}
.contact-card:hover { background: var(--bg-hover); }
.contact-card.selected {
  background: var(--bongo-blue-light);
  border-left: 3px solid var(--bongo-blue);
  padding-left: 11px;
}

.contact-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.72rem; font-weight: 700; color: #fff; flex-shrink: 0;
}
.contact-info { flex: 1; min-width: 0; }
.contact-name { font-size: 0.88rem; font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.contact-email { font-size: 0.78rem; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Right pane: contact detail */
.contact-detail-pane {
  flex: 1; overflow-y: auto; padding: 24px;
  background: var(--bg-subtle);
}

.detail-card {
  max-width: 600px; margin: 0 auto;
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-md);
  overflow: hidden;
}

.detail-header {
  padding: 28px 24px 20px; text-align: center;
  background: linear-gradient(135deg, var(--bongo-blue-light), var(--bg-subtle));
  border-bottom: 1px solid var(--border);
}
.detail-avatar {
  width: 72px; height: 72px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 1.6rem; color: #fff;
  margin: 0 auto 12px; box-shadow: var(--shadow-md);
}
.detail-name { font-size: 1.25rem; font-weight: 700; color: var(--text); }
.detail-title { font-size: 0.88rem; color: var(--text-secondary); margin-top: 4px; }

.detail-fields { padding: 20px 24px; }
.detail-field { display: flex; padding: 10px 0; border-bottom: 1px solid var(--border); }
.detail-field:last-child { border-bottom: none; }
.detail-field-label {
  width: 80px; flex-shrink: 0;
  font-size: 0.75rem; font-weight: 600; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: 0.5px; padding-top: 2px;
}
.detail-field-value { flex: 1; color: var(--text); font-size: 0.9rem; }
.detail-field-value a { color: var(--bongo-blue); text-decoration: none; }
.detail-field-value a:hover { text-decoration: underline; }

.detail-actions {
  display: flex; align-items: center; gap: 8px;
  padding: 14px 24px;
  border-top: 1px solid var(--border);
  background: var(--bg-subtle);
}
.detail-spacer { flex: 1; }

.btn-edit {
  padding: 7px 20px; background: var(--bongo-blue); color: #fff;
  border: none; border-radius: var(--radius); font-weight: 600;
  font-size: 0.85rem; cursor: pointer; transition: background 0.12s;
}
.btn-edit:hover { background: var(--bongo-blue-dark); }

.btn-action {
  padding: 7px 14px; background: transparent; border: 1px solid var(--border);
  border-radius: var(--radius); color: var(--text-secondary); font-size: 0.82rem;
  cursor: pointer; transition: all 0.12s;
}
.btn-action:hover { background: var(--bg-muted); }

.btn-danger {
  padding: 7px 14px; background: transparent;
  border: 1px solid #f1aeb5; border-radius: var(--radius);
  color: #e15e50; font-size: 0.82rem; cursor: pointer;
  transition: all 0.12s;
}
.btn-danger:hover { background: #fdf2f2; border-color: #e74c3c; }
[data-theme="dark"] .btn-danger { border-color: #5a2020; }
[data-theme="dark"] .btn-danger:hover { background: #3a1a1a; border-color: #e74c3c; }

/* Recent emails section */
.detail-section-title {
  font-size: 0.75rem; font-weight: 600; text-transform: uppercase;
  letter-spacing: 1px; color: var(--text-muted);
  padding: 14px 24px 6px; border-top: 1px solid var(--border);
}
.recent-emails { padding: 0 24px 14px; }
.recent-email {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 0; border-bottom: 1px solid var(--border);
  font-size: 0.82rem;
}
.recent-email:last-child { border-bottom: none; }
.recent-email-subject { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
.recent-email-date { color: var(--text-muted); white-space: nowrap; font-size: 0.75rem; }
.recent-email-icon { color: var(--text-muted); flex-shrink: 0; }

/* Empty detail state */
.detail-empty {
  display: flex; flex-direction: column; align-items: center;
  justify-content: center; height: 100%;
  color: var(--text-muted); text-align: center;
}
.detail-empty-icon { font-size: 3rem; margin-bottom: 12px; opacity: 0.4; }
.detail-empty-text { font-size: 0.9rem; }


/* ============================================
   16. CALENDAR
   ============================================ */

/* New event button in sidebar */
.new-event-btn {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  margin: 14px 12px 6px; padding: 10px 0;
  background: var(--bongo-blue); color: #fff; border: none;
  border-radius: var(--radius-lg); font-weight: 700; font-size: 0.92rem;
  cursor: pointer; box-shadow: 0 2px 8px rgba(81,127,175,0.3); transition: all 0.15s;
}
.new-event-btn:hover { background: var(--bongo-blue-dark); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(81,127,175,0.4); }

/* Calendar checkbox list in sidebar */
.cal-list { padding: 4px 12px; }
.cal-list-item {
  display: flex; align-items: center; gap: 8px;
  padding: 5px 0; cursor: pointer;
}
.cal-list-item input[type="checkbox"] { width: auto; margin: 0; accent-color: var(--bongo-blue); }
.cal-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.cal-list-label { font-size: 0.85rem; color: var(--sidebar-text); }

/* Calendar toolbar */
.cal-toolbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 16px; border-bottom: 1px solid var(--border);
  background: var(--bg-subtle); min-height: 44px; flex-shrink: 0;
}
.cal-toolbar-left { display: flex; align-items: center; gap: 8px; }
.cal-toolbar-right { display: flex; align-items: center; gap: 4px; }

.cal-nav-btn {
  padding: 5px 10px; border: 1px solid var(--border);
  border-radius: var(--radius); background: var(--bg);
  color: var(--text-secondary); font-size: 0.82rem;
  cursor: pointer; transition: all 0.12s;
}
.cal-nav-btn:hover { background: var(--bongo-blue-light); border-color: var(--bongo-blue); color: var(--bongo-blue-dark); }

.cal-month-title {
  font-size: 1.15rem; font-weight: 700; color: var(--text);
  padding: 0 4px; white-space: nowrap;
}

.view-btn {
  padding: 5px 12px; border: 1px solid var(--border);
  background: var(--bg); color: var(--text-secondary);
  font-size: 0.82rem; cursor: pointer; transition: all 0.12s;
}
.view-btn:first-child { border-radius: var(--radius) 0 0 var(--radius); }
.view-btn:last-child { border-radius: 0 var(--radius) var(--radius) 0; }
.view-btn + .view-btn { border-left: none; }
.view-btn.active { background: var(--bongo-blue); color: #fff; border-color: var(--bongo-blue); }
.view-btn:hover:not(.active) { background: var(--bongo-blue-light); }

/* Month grid */
.cal-grid-wrapper { flex: 1; overflow-y: auto; padding: 0; }

.cal-grid, .calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  height: 100%; min-height: 600px;
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
}

.cal-header, .calendar-header {
  padding: 6px 8px; font-size: 0.72rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: 1px;
  color: var(--text-muted); text-align: center;
  background: var(--bg-subtle);
  border-bottom: 1px solid var(--border);
  border-right: 1px solid var(--border);
}

.day-cell {
  border-right: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  padding: 4px; min-height: 90px; overflow: hidden;
  transition: background 0.1s;
}
.day-cell:hover { background: var(--bg-hover); }
.day-cell:nth-child(7n) { border-right: none; }
.day-cell.other-month { background: var(--bg-muted); opacity: 0.5; }
.day-cell.today { background: var(--bongo-blue-light); }

.day-number {
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px;
  font-size: 0.82rem; font-weight: 500; color: var(--text-secondary);
  border-radius: 50%; margin-bottom: 2px;
}
.day-cell.today .day-number { background: var(--bongo-blue); color: #fff; font-weight: 700; }

/* Event chips */
.event-chip {
  display: block; padding: 2px 6px; border-radius: 4px;
  font-size: 0.72rem; font-weight: 500; margin-bottom: 2px;
  cursor: pointer; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; transition: opacity 0.12s; text-decoration: none;
}
.event-chip:hover { opacity: 0.85; }
.event-time { font-weight: 600; margin-right: 2px; }

.event-chip.cal-colour-blue { background: rgba(59,130,246,0.15); color: var(--cal-blue); border-left: 3px solid var(--cal-blue); }
.event-chip.cal-colour-green { background: rgba(34,197,94,0.15); color: var(--cal-green); border-left: 3px solid var(--cal-green); }
.event-chip.cal-colour-indigo { background: rgba(99,102,241,0.15); color: var(--cal-indigo); border-left: 3px solid var(--cal-indigo); }
.event-chip.cal-colour-orange { background: rgba(245,158,11,0.15); color: var(--cal-orange); border-left: 3px solid var(--cal-orange); }
.event-chip.cal-colour-red { background: rgba(239,68,68,0.15); color: var(--cal-red); border-left: 3px solid var(--cal-red); }
.event-chip.cal-colour-violet { background: rgba(139,92,246,0.15); color: var(--cal-violet); border-left: 3px solid var(--cal-violet); }
.event-chip.cal-colour-yellow { background: rgba(234,179,8,0.15); color: var(--cal-yellow); border-left: 3px solid var(--cal-yellow); }

.more-events { font-size: 0.68rem; color: var(--text-muted); padding: 1px 6px; cursor: pointer; }
.more-events:hover { color: var(--bongo-blue); }

/* Calendar toolbar (shared between month/week/day views) */
.calendar-toolbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 16px; border-bottom: 1px solid var(--border);
}
.calendar-month-title {
  font-size: 1.15rem; font-weight: 700; color: var(--text); margin: 0;
}

/* View switcher (month/week/day toggle) */
.view-switcher {
  display: flex; gap: 2px; padding: 8px 16px;
  background: var(--bg-subtle); border-bottom: 1px solid var(--border);
}
.view-switcher a[role="button"] {
  font-size: 0.8rem; padding: 5px 12px;
  border: none; background: transparent;
  color: var(--text-muted); text-decoration: none;
  border-radius: 6px; cursor: pointer;
  transition: all 0.15s;
}
.view-switcher a[role="button"]:hover { color: var(--text); }
.view-switcher a[aria-current="page"] {
  background: var(--bg); color: var(--bongo-blue);
  box-shadow: 0 1px 3px rgba(0,0,0,0.1);
  font-weight: 600;
}

/* Week & Day view: all-day header strip */
.all-day-header {
  display: flex; border-bottom: 1px solid var(--border);
  min-height: 28px; background: var(--bg-subtle);
}
.time-gutter-header { width: 56px; flex-shrink: 0; }
.all-day-cell {
  flex: 1; padding: 3px 4px; border-left: 1px solid var(--border);
  display: flex; flex-wrap: wrap; gap: 2px; overflow: hidden;
}
.all-day-cell.today { background: var(--bongo-blue-light); }

/* Week & Day view: time grid */
.week-grid {
  display: flex; flex: 1; overflow-y: auto;
  border: 1px solid var(--border); border-radius: 8px; overflow: hidden;
}
.day-grid {
  display: flex; flex: 1; overflow-y: auto;
  border: 1px solid var(--border); border-radius: 8px; overflow: hidden;
}
.time-gutter {
  width: 56px; flex-shrink: 0; border-right: 1px solid var(--border);
}
.hour-label {
  height: 48px; display: flex; align-items: flex-start; justify-content: flex-end;
  padding: 2px 8px 0 0; font-size: 0.68rem; color: var(--text-muted);
  border-bottom: 1px solid var(--border-light, var(--border));
  box-sizing: border-box;
}
.day-column {
  flex: 1; position: relative; border-left: 1px solid var(--border);
  min-width: 0;
}
.day-column.today { background: rgba(81,127,175,0.04); }
.hour-row {
  height: 48px; border-bottom: 1px solid var(--border-light, rgba(0,0,0,0.05));
  position: relative;
}
.hour-row-link {
  position: absolute; inset: 0; cursor: pointer;
}
.hour-row-link:hover { background: var(--bongo-blue-light); opacity: 0.3; }

/* Positioned event blocks within day columns */
.event-block {
  position: absolute; left: 2px; right: 2px; z-index: 2;
  border-radius: 4px; padding: 3px 6px;
  color: #fff; font-size: 0.72rem; cursor: pointer;
  overflow: hidden; text-decoration: none;
  box-shadow: 0 1px 3px rgba(0,0,0,0.15);
  transition: opacity 0.12s;
}
.event-block:hover { opacity: 0.9; }
.event-block-time { font-weight: 600; display: block; font-size: 0.68rem; }
.event-block-title { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.event-block.dragging { opacity: 0.5; cursor: grabbing; }
.event-block.cal-colour-blue, .cal-color-dot.cal-colour-blue { background-color: var(--cal-blue); }
.event-block.cal-colour-green, .cal-color-dot.cal-colour-green { background-color: var(--cal-green); }
.event-block.cal-colour-indigo, .cal-color-dot.cal-colour-indigo { background-color: var(--cal-indigo); }
.event-block.cal-colour-orange, .cal-color-dot.cal-colour-orange { background-color: var(--cal-orange); }
.event-block.cal-colour-red, .cal-color-dot.cal-colour-red { background-color: var(--cal-red); }
.event-block.cal-colour-violet, .cal-color-dot.cal-colour-violet { background-color: var(--cal-violet); }
.event-block.cal-colour-yellow, .cal-color-dot.cal-colour-yellow { background-color: var(--cal-yellow); }
.event-ghost {
  position: absolute; left: 2px; right: 2px;
  background: var(--bongo-blue-light); border: 2px dashed var(--bongo-blue);
  border-radius: 4px; z-index: 1; pointer-events: none;
}


/* ============================================
   17. SETTINGS
   ============================================ */
.settings-scroll { flex: 1; overflow-y: auto; padding: 24px; }
.settings-container { max-width: 720px; margin: 0 auto; }

.settings-tabs {
  display: flex; gap: 2px; margin-bottom: 24px;
  background: var(--bg-muted); border-radius: var(--radius-lg); padding: 3px; width: fit-content;
}
.settings-tab {
  padding: 8px 18px; border: none; background: transparent;
  border-radius: var(--radius); font-size: 0.85rem; font-weight: 500;
  color: var(--text-muted); cursor: pointer; transition: all 0.15s;
}
.settings-tab.active { background: var(--bg); color: var(--bongo-blue); box-shadow: var(--shadow-sm); font-weight: 600; }
.settings-tab:hover:not(.active) { color: var(--text-secondary); }

.settings-section { margin-bottom: 28px; }
.settings-section-title { font-size: 1rem; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.settings-section-desc { font-size: 0.82rem; color: var(--text-muted); margin-bottom: 16px; }

.settings-card {
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-lg); overflow: hidden;
}

.settings-row {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 18px; border-bottom: 1px solid var(--border);
}
.settings-row:last-child { border-bottom: none; }
.settings-row-label { flex: 1; min-width: 0; }
.settings-row-title { font-size: 0.9rem; font-weight: 500; color: var(--text); }
.settings-row-desc { font-size: 0.78rem; color: var(--text-muted); margin-top: 2px; }

.settings-input {
  padding: 7px 12px; border: 1px solid var(--border);
  border-radius: var(--radius); background: var(--bg);
  color: var(--text); font-size: 0.88rem; width: 240px;
  outline: none; transition: border-color 0.15s;
}
.settings-input:focus { border-color: var(--bongo-blue); }

.settings-select {
  padding: 7px 12px; border: 1px solid var(--border);
  border-radius: var(--radius); background: var(--bg);
  color: var(--text); font-size: 0.88rem; cursor: pointer;
}

/* Toggle switch */
.toggle { position: relative; width: 44px; height: 24px; flex-shrink: 0; }
.toggle input { opacity: 0; width: 0; height: 0; }
.toggle-slider {
  position: absolute; inset: 0;
  background: var(--border-strong); border-radius: 12px;
  cursor: pointer; transition: background 0.2s;
}
.toggle-slider::before {
  content: ''; position: absolute;
  width: 18px; height: 18px; left: 3px; bottom: 3px;
  background: #fff; border-radius: 50%;
  transition: transform 0.2s;
}
.toggle input:checked + .toggle-slider { background: var(--bongo-blue); }
.toggle input:checked + .toggle-slider::before { transform: translateX(20px); }
.toggle input:focus-visible + .toggle-slider { outline: 2px solid var(--bongo-blue); outline-offset: 2px; }

.settings-save { display: flex; gap: 8px; margin-top: 20px; }
.btn-save {
  padding: 8px 24px; background: var(--bongo-blue); color: #fff;
  border: none; border-radius: var(--radius); font-weight: 600;
  font-size: 0.88rem; cursor: pointer; transition: background 0.12s;
}
.btn-save:hover { background: var(--bongo-blue-dark); }
.btn-cancel {
  padding: 8px 16px; background: transparent; border: 1px solid var(--border);
  border-radius: var(--radius); color: var(--text-secondary); font-size: 0.85rem;
  cursor: pointer;
}
.btn-cancel:hover { background: var(--bg-muted); }


/* ============================================
   18. SEARCH RESULTS
   ============================================ */
.results-header { padding: 16px 24px; border-bottom: 1px solid var(--border); background: var(--bg-subtle); }
.results-title { font-size: 1rem; font-weight: 700; color: var(--text); }
.results-count { font-size: 0.85rem; color: var(--text-muted); margin-top: 2px; }
.results-query { color: var(--bongo-blue); font-weight: 600; }

.results-list { flex: 1; overflow-y: auto; }

.search-result {
  display: block; padding: 14px 24px;
  border-bottom: 1px solid var(--border);
  cursor: pointer; transition: background 0.1s;
}
.search-result:hover { background: var(--bg-hover); }
.search-result:focus-visible { outline-offset: -2px; }

.result-subject { font-weight: 600; color: var(--text); font-size: 0.92rem; margin-bottom: 3px; }
.result-meta { display: flex; align-items: center; gap: 8px; font-size: 0.82rem; color: var(--text-muted); margin-bottom: 4px; }
.result-from { color: var(--text-secondary); font-weight: 500; }
.result-mailbox {
  display: inline-flex; padding: 1px 6px;
  background: var(--bg-muted); border-radius: 4px;
  font-size: 0.72rem; font-weight: 600; color: var(--text-muted);
  text-transform: uppercase;
}
.result-snippet { font-size: 0.85rem; color: var(--text-muted); line-height: 1.4; }
.result-snippet mark { background: rgba(255,172,53,0.25); color: var(--text); border-radius: 2px; padding: 0 2px; }

/* Empty state */
.empty-state {
  display: flex; flex-direction: column; align-items: center;
  justify-content: center; padding: 60px 24px; text-align: center;
}
.empty-icon { font-size: 3rem; margin-bottom: 16px; opacity: 0.3; }
.empty-title { font-size: 1.1rem; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.empty-text { font-size: 0.88rem; color: var(--text-muted); }


/* ============================================
   19. ADMIN LAYOUT (shared)
   ============================================ */
.admin-scroll { flex: 1; overflow-y: auto; padding: 24px; }
.admin-title { font-size: 1.3rem; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.admin-subtitle { font-size: 0.88rem; color: var(--text-muted); margin-bottom: 20px; }
.section-title { font-size: 1.05rem; font-weight: 700; color: var(--text); margin: 24px 0 12px; }

/* Admin toolbar */
.admin-toolbar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; margin-bottom: 20px; flex-wrap: wrap;
}

/* Admin search input */
.admin-layout .search-input {
  border: 1px solid var(--border-strong);
  border-radius: var(--radius); padding: 8px 14px;
  font-size: 0.88rem; background: var(--bg);
  color: var(--text); width: 280px;
}
.admin-layout .search-input:focus {
  border-color: var(--bongo-blue); outline: none;
  box-shadow: 0 0 0 3px rgba(81,127,175,0.15);
}

/* Admin buttons */
.btn-primary {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--bongo-blue); color: #fff; border: none;
  padding: 8px 18px; border-radius: var(--radius);
  font-size: 0.88rem; font-weight: 600; cursor: pointer; white-space: nowrap;
}
.btn-primary:hover { background: var(--bongo-blue-dark); }

.btn-outline {
  display: inline-flex; align-items: center; gap: 6px;
  background: transparent; color: var(--text-secondary);
  border: 1px solid var(--border-strong);
  padding: 7px 14px; border-radius: var(--radius);
  font-size: 0.85rem; cursor: pointer; white-space: nowrap;
}
.btn-outline:hover { background: var(--bg-hover); color: var(--text); }

.btn-sm { padding: 6px 12px; font-size: 13px; }
.btn-flush {
  background: var(--bongo-red); color: #fff; border: none;
  padding: 6px 14px; border-radius: var(--radius);
  font-size: 0.82rem; font-weight: 600; cursor: pointer;
}
.btn-flush:hover { background: #dc2626; }


/* ============================================
   20. ADMIN DASHBOARD
   ============================================ */

/* Stat cards */
.stat-grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 16px; margin-bottom: 24px;
}
.stat-card {
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: 18px;
}
.stat-label {
  font-size: 0.75rem; font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.5px; color: var(--text-muted); margin-bottom: 6px;
}
.stat-value { font-size: 1.8rem; font-weight: 700; color: var(--text); line-height: 1; }
.stat-change { font-size: 0.75rem; margin-top: 4px; }
.stat-change.up { color: var(--bongo-green); }
.stat-change.down { color: var(--bongo-red); }

/* Stat number variant (queue page) */
.stat-number { font-size: 2.2rem; font-weight: 700; line-height: 1; margin-bottom: 4px; }
.stat-number.blue { color: var(--bongo-blue); }
.stat-number.red { color: var(--bongo-red); }
.stat-number.orange { color: var(--bongo-orange); }

/* Data table */
.admin-table-card {
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-lg); overflow: hidden; margin-bottom: 24px;
}
.admin-table-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px; border-bottom: 1px solid var(--border);
}
.admin-table-title { font-size: 0.95rem; font-weight: 600; color: var(--text); }

.admin-table { width: 100%; border-collapse: collapse; }
.admin-table th {
  text-align: left; padding: 10px 18px; font-size: 0.72rem;
  font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px;
  color: var(--text-muted); background: var(--bg-subtle);
  border-bottom: 1px solid var(--border);
}
.admin-table td {
  padding: 12px 18px; font-size: 0.88rem; color: var(--text);
  border-bottom: 1px solid var(--border); vertical-align: middle;
}
.admin-table tr:last-child td { border-bottom: none; }
.admin-table tr:hover td { background: var(--bg-hover); }

.table-card {
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-lg); overflow: hidden;
}

.status-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; }
.status-dot.online, .status-dot.green { background: var(--bongo-green); }
.status-dot.warning { background: var(--bongo-orange); }
.status-dot.error, .status-dot.red { background: var(--bongo-red); }
.status-dot.yellow { background: var(--bongo-yellow); }

.badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: 10px;
  font-size: 0.72rem; font-weight: 600;
}
.badge.green { background: rgba(34,197,94,0.12); color: var(--bongo-green); }
.badge.orange { background: rgba(245,158,11,0.12); color: var(--bongo-orange); }
.badge.red { background: rgba(239,68,68,0.12); color: var(--bongo-red); }

.row-actions { display: flex; gap: 4px; }


/* ============================================
   21. ADMIN USERS
   ============================================ */
.user-avatar {
  width: 34px; height: 34px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 0.72rem; color: #fff; flex-shrink: 0;
}
.user-info { display: flex; align-items: center; gap: 10px; }
.admin-layout .user-email { font-weight: 600; color: var(--bongo-blue); padding: 0; }
.admin-layout .user-email:hover { text-decoration: underline; }
.user-name { font-size: 0.82rem; color: var(--text-muted); }

.badge-admin { background: rgba(139,92,246,0.12); color: #8b5cf6; }
.badge-user { background: rgba(81,127,175,0.12); color: var(--bongo-blue); }
.badge-active { background: rgba(34,197,94,0.12); color: var(--bongo-green); }
.badge-disabled { background: rgba(239,68,68,0.12); color: var(--bongo-red); }

/* Quota bar */
.quota-bar { display: flex; align-items: center; gap: 8px; }
.quota-track { width: 60px; height: 5px; border-radius: 3px; background: var(--bg-muted); overflow: hidden; }
.quota-fill { height: 100%; border-radius: 3px; }
.quota-fill.low { background: var(--bongo-green); }
.quota-fill.med { background: var(--bongo-orange); }
.quota-fill.high { background: var(--bongo-red); }
.quota-text { font-size: 0.78rem; color: var(--text-muted); }

/* Create/edit user form */
.form-card {
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: 24px; max-width: 640px;
  margin-bottom: 24px;
}
.form-card h3 { font-size: 1rem; font-weight: 700; margin-bottom: 16px; color: var(--text); }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.form-group { display: flex; flex-direction: column; gap: 4px; }
.form-group.full { grid-column: 1 / -1; }
.form-label {
  font-size: 0.78rem; font-weight: 600; color: var(--text-secondary);
  text-transform: uppercase; letter-spacing: 0.3px;
}
.form-input {
  border: 1px solid var(--border-strong); border-radius: var(--radius);
  padding: 8px 12px; font-size: 0.9rem; background: var(--bg); color: var(--text);
}
.form-input:focus {
  border-color: var(--bongo-blue); outline: none;
  box-shadow: 0 0 0 3px rgba(81,127,175,0.15);
}
.form-check {
  display: flex; align-items: center; gap: 8px;
  font-size: 0.88rem; color: var(--text); cursor: pointer;
}
.form-check input[type="checkbox"] { width: auto; accent-color: var(--bongo-blue); }
.form-actions { display: flex; gap: 8px; margin-top: 16px; }


/* ============================================
   22. ADMIN DOMAINS
   ============================================ */
.add-form-card {
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: 20px;
  margin-bottom: 24px; max-width: 640px;
}
.add-form-card h3 { font-size: 0.95rem; font-weight: 700; margin-bottom: 12px; color: var(--text); }
.add-form-row { display: flex; align-items: end; gap: 12px; }
.add-form-field { flex: 1; display: flex; flex-direction: column; gap: 4px; }

.dns-check { color: var(--bongo-green); font-weight: 600; font-size: 0.85rem; }
.dns-fail { color: var(--bongo-red); font-weight: 600; font-size: 0.85rem; }
.dns-hint {
  background: var(--bongo-blue-light); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 12px 16px;
  margin-top: 20px; font-size: 0.85rem; color: var(--text-secondary); max-width: 640px;
}
.dns-hint code {
  background: var(--bg-muted); padding: 2px 6px; border-radius: 3px; font-size: 0.82rem;
}


/* ============================================
   23. ADMIN ALIASES
   ============================================ */
.form-select {
  border: 1px solid var(--border-strong); border-radius: var(--radius);
  padding: 8px 12px; font-size: 0.9rem; background: var(--bg); color: var(--text);
}
.form-select:focus {
  border-color: var(--bongo-blue); outline: none;
  box-shadow: 0 0 0 3px rgba(81,127,175,0.15);
}
.form-arrow { font-size: 1.2rem; color: var(--text-muted); padding-bottom: 8px; }
.alias-code {
  font-family: 'SF Mono', 'Fira Code', monospace; font-size: 0.86rem;
  background: var(--bg-muted); padding: 2px 8px; border-radius: 4px;
}


/* ============================================
   24. ADMIN QUEUE
   ============================================ */
.bulk-bar {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 16px; padding: 10px 16px;
  background: var(--bg-subtle); border: 1px solid var(--border);
  border-radius: var(--radius);
}
.bulk-label { font-size: 0.82rem; font-weight: 600; color: var(--text-secondary); }
.error-reason { color: var(--bongo-red); font-size: 0.78rem; max-width: 300px; }


/* ============================================
   25. ADMIN CLUSTER
   ============================================ */
.raft-card {
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-lg); overflow: hidden;
  margin-bottom: 24px; max-width: 500px;
}
.raft-card-header {
  padding: 12px 18px; background: var(--bg-subtle);
  border-bottom: 1px solid var(--border);
  font-size: 0.88rem; font-weight: 700; color: var(--text);
}
.raft-table { width: 100%; border-collapse: collapse; }
.raft-table th {
  text-align: left; padding: 8px 18px; font-size: 0.82rem;
  font-weight: 600; color: var(--text-secondary); width: 120px;
  border-bottom: 1px solid var(--border);
}
.raft-table td {
  padding: 8px 18px; font-size: 0.88rem; color: var(--text);
  border-bottom: 1px solid var(--border);
}
.raft-table tr:last-child th, .raft-table tr:last-child td { border-bottom: none; }

.badge-leader { background: rgba(81,127,175,0.15); color: var(--bongo-blue); }
.badge-follower { background: rgba(148,163,184,0.15); color: var(--text-muted); }

.node-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.node-card {
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius-lg); overflow: hidden;
  transition: box-shadow 0.15s;
}
.node-card:hover { box-shadow: var(--shadow-md); }
.node-card.leader { border-left: 3px solid var(--bongo-blue); }
.node-card-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px; border-bottom: 1px solid var(--border);
}
.node-name {
  display: flex; align-items: center; gap: 6px;
  font-weight: 700; font-size: 0.92rem; color: var(--text);
}
.node-details { padding: 12px 18px; }
.node-detail {
  display: flex; justify-content: space-between; padding: 6px 0;
  font-size: 0.85rem; border-bottom: 1px solid var(--border);
}
.node-detail:last-child { border-bottom: none; }
.node-detail-label { color: var(--text-muted); }
.node-detail-value {
  color: var(--text); font-weight: 500;
  font-family: 'SF Mono', 'Fira Code', monospace; font-size: 0.82rem;
}


/* ============================================
   26. ADMIN LOGS
   ============================================ */
.log-viewer {
  flex: 1; display: flex; flex-direction: column;
  background: var(--log-bg); border: 1px solid var(--log-border);
  border-radius: var(--radius-lg); overflow: hidden; min-height: 0;
}

.log-toolbar {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 16px; background: #161b22;
  border-bottom: 1px solid var(--log-border); flex-wrap: wrap;
}
.log-toolbar label { color: #8a94a8; font-size: 0.78rem; font-weight: 600; white-space: nowrap; }
.log-toolbar select {
  background: #0d1117; color: #c9d1d9; border: 1px solid #30363d;
  border-radius: 4px; padding: 4px 8px; font-size: 0.82rem;
}
.log-toolbar select:focus { border-color: var(--bongo-blue); outline: none; }
.log-toolbar-spacer { flex: 1; }
.log-btn {
  background: #21262d; color: #8a94a8; border: 1px solid #30363d;
  border-radius: 4px; padding: 5px 12px; font-size: 0.78rem; cursor: pointer;
}
.log-btn:hover { background: #30363d; color: #c9d1d9; }
.log-btn.connected { border-color: var(--bongo-green); color: var(--bongo-green); }

.log-output {
  flex: 1; overflow-y: auto; padding: 12px 16px;
  font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
  font-size: 0.78rem; line-height: 1.6; color: var(--log-text);
}

.log-line { white-space: pre-wrap; word-break: break-all; padding: 1px 0; }
.log-line:hover { background: rgba(255,255,255,0.03); }
.log-line-error { color: var(--status-red); }
.log-ts { color: #484f58; }
.log-level-debug { color: #8b949e; }
.log-level-info { color: #58a6ff; }
.log-level-warn { color: #d29922; }
.log-level-error { color: #f85149; }
.log-component { color: #7ee787; }
.log-msg { color: #c9d1d9; }

/* Status indicator */
.status-indicator { display: inline-flex; align-items: center; gap: 5px; font-size: 0.75rem; color: #8a94a8; }
.status-indicator .pulse {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--bongo-green);
  animation: pulse-glow 2s ease-in-out infinite;
}
@keyframes pulse-glow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(34,197,94,0.4); }
  50% { box-shadow: 0 0 0 4px rgba(34,197,94,0); }
}


/* ============================================
   27. LOGIN PAGE
   ============================================ */
.login-wrapper {
  display: flex; flex-direction: column; align-items: center;
  justify-content: center; min-height: 100vh; padding: 24px;
}

.login-brand { text-align: center; margin-bottom: 32px; }
.login-brand h1 { font-size: 2rem; font-weight: 700; color: var(--text); letter-spacing: -1px; }
.login-brand h1 span { color: var(--bongo-orange); }
.login-brand p { font-size: 0.92rem; color: var(--text-muted); margin-top: 4px; }

.login-card {
  width: 100%; max-width: 400px;
  background: var(--bg-card); border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: 0 4px 24px rgba(0,0,0,0.08), 0 1px 4px rgba(0,0,0,0.04);
  padding: 36px;
}

/* Login form inputs — larger, more visible */
.login-card .form-group { margin-bottom: 16px; }
.login-card .form-label { font-size: 0.82rem; margin-bottom: 6px; }
.login-card .form-input {
  padding: 12px 14px;
  font-size: 0.95rem;
  border: 1.5px solid var(--border-strong);
  border-radius: 8px;
  width: 100%;
  box-sizing: border-box;
}
.login-card .form-input:focus {
  border-color: var(--bongo-blue);
  box-shadow: 0 0 0 3px rgba(81,127,175,0.18);
}
.login-card .form-check { margin: 16px 0 20px; }

.btn-login {
  width: 100%; background: var(--bongo-blue); color: #fff;
  border: none; padding: 14px; border-radius: 8px;
  font-size: 1rem; font-weight: 600; cursor: pointer;
  transition: background 0.15s, box-shadow 0.15s;
  box-shadow: 0 2px 8px rgba(81,127,175,0.25);
}
.btn-login:hover { background: var(--bongo-blue-dark); box-shadow: 0 4px 12px rgba(81,127,175,0.35); }

/* 2FA section */
.twofa-header { text-align: center; margin-bottom: 20px; }
.twofa-header h2 { font-size: 1.1rem; font-weight: 700; color: var(--text); }
.twofa-header p { font-size: 0.85rem; color: var(--text-muted); margin-top: 4px; }

.code-input {
  text-align: center; font-size: 1.8rem; letter-spacing: 8px;
  font-weight: 700; padding: 12px;
}
.code-hint { font-size: 0.82rem; color: var(--text-muted); margin-bottom: 18px; }
.back-link { display: block; text-align: center; margin-top: 16px; font-size: 0.88rem; color: var(--bongo-blue); }

/* Login view toggle (prototype only) */
.view-toggle { display: flex; gap: 8px; margin-bottom: 24px; }
.view-toggle button {
  flex: 1; padding: 8px; border: 1px solid var(--border);
  border-radius: var(--radius); background: var(--bg-card);
  color: var(--text-muted); font-size: 0.82rem; font-weight: 600; cursor: pointer;
}
.view-toggle button.active { background: var(--bongo-blue); color: #fff; border-color: var(--bongo-blue); }

/* Floating theme toggle (login page) */
.theme-float {
  position: fixed; bottom: 20px; right: 20px;
  width: 40px; height: 40px; border-radius: 50%;
  border: 1px solid var(--border); background: var(--bg-card);
  color: var(--text-muted); font-size: 1.1rem; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  box-shadow: var(--shadow-card);
}
.theme-float:hover { color: var(--text); }

/* Login page body override: re-enable scrolling + subtle background */
.login-page {
  overflow: auto;
  background: linear-gradient(135deg, #f0f4f8 0%, #e8edf2 50%, #f5f7fa 100%);
}
[data-theme="dark"] .login-page {
  background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #0f172a 100%);
}


/* ============================================
   28. SHARED COMPONENTS (utilities from existing CSS)
   ============================================ */

/* Flash messages */
.flash {
  padding: 10px 14px;
  border-radius: var(--radius);
  margin-bottom: 18px;
  font-size: 0.88rem;
  transition: opacity 0.3s;
}
.flash-dismissing { opacity: 0; }
.flash-success {
  background: #e8f7e6;
  color: #2a5e25;
  border: 1px solid #7acb74;
}
.flash-error {
  background: rgba(239,68,68,0.1);
  border: 1px solid rgba(239,68,68,0.2);
  color: var(--bongo-red);
}
.flash-warning {
  background: rgba(245,158,11,0.1);
  border: 1px solid rgba(245,158,11,0.2);
  color: #b45309;
}
[data-theme="dark"] .flash-success { background: #1a3a1a; color: #7acb74; border-color: #3a5e3a; }
[data-theme="dark"] .flash-warning { background: #3a3420; color: #d4b340; border-color: #665d1e; }

/* Spam badge */
.spam-badge {
  display: inline-block;
  font-size: 0.65rem;
  font-weight: 700;
  background: rgba(239,68,68,0.12);
  color: var(--bongo-red);
  border-radius: 10px;
  padding: 1px 6px;
  margin-left: 4px;
}

/* Tag dots — small coloured circles shown next to message subject */
.tag-dots {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  margin-left: 6px;
  flex-shrink: 0;
  vertical-align: middle;
}
.tag-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  cursor: default;
}
.tag-dot-overflow {
  font-size: 0.62rem;
  font-weight: 700;
  color: var(--text-muted);
  cursor: default;
  line-height: 1;
  margin-left: 1px;
}

/* Context menu — hidden by default, shown by Alpine x-show */
.context-menu {
  display: none;
  position: fixed;
  z-index: 200;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
  min-width: 180px;
  padding: 4px 0;
}
.context-menu a {
  display: block;
  padding: 8px 16px;
  color: var(--text);
  font-size: 0.85rem;
  cursor: pointer;
  transition: background 0.12s;
}
.context-menu a:hover { background: var(--bg-subtle); }
.context-menu a.danger { color: #e15e50; }
.context-menu hr {
  margin: 4px 0;
  border: none;
  border-top: 1px solid var(--border);
}

.shortcut-modal-overlay[hidden] { display: none !important; }

/* Notification prompt */
.notification-prompt {
  position: fixed;
  bottom: 24px;
  right: 24px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  padding: 16px;
  z-index: 200;
  max-width: 320px;
}

/* Density modifiers */
.density-compact .msg-row { height: 36px; }
.density-comfortable .msg-row { height: 44px; }
.density-spacious .msg-row { height: 52px; }

/* Load more spinner */
.load-more-spinner {
  text-align: center;
  padding: 24px;
}

/* HTMX indicator */
.htmx-indicator { opacity: 0; transition: opacity 0.2s ease-in; }
.htmx-request .htmx-indicator, .htmx-request.htmx-indicator { opacity: 1; }


/* ============================================
   29. RESPONSIVE BREAKPOINTS
   ============================================ */

/* Large desktop (1440px) */
@media (min-width: 1440px) {
  :root { --sidebar-width: 240px; }
  .content { max-width: 1200px; }
  .compose-card { max-width: 900px; }
  .stat-grid { grid-template-columns: repeat(4, 1fr); }
  .admin-scroll { max-width: 1100px; }
}

/* Tablet (1024px) */
@media (max-width: 1024px) {
  :root { --sidebar-width: 180px; }
  .msg-from { width: 140px; }
  .user-email { display: none; }
  .mini-cal { display: none; }
  .contact-list-pane { width: 300px; }
  .stat-grid { grid-template-columns: repeat(2, 1fr); }
  .form-grid { grid-template-columns: 1fr; }
}

/* Mobile (768px) */
@media (max-width: 768px) {
  .hamburger { display: flex; }

  /* Sidebar becomes overlay */
  .sidebar {
    position: fixed;
    top: 0; left: 0; bottom: 0;
    width: 280px;
    max-width: 85vw;
    z-index: 150;
    transform: translateX(-100%);
  }
  .sidebar.open { transform: translateX(0); }
  .sidebar-overlay.open { display: block; z-index: 149; }

  /* Topbar simplify */
  .topbar-center { padding: 0 8px; }
  .search-box { padding: 5px 10px; }
  .user-email { display: none; }
  .topbar-link.hide-mobile { display: none; }
  .hide-mobile { display: none !important; }

  /* Toolbar simplify */
  .layout-toggle { display: none; }
  .page-info { display: none; }
  .tool-btn.hide-mobile { display: none; }

  /* Message list: two-line mobile layout */
  .msg-row {
    flex-wrap: wrap; height: auto;
    padding: 10px 12px; gap: 0; align-items: flex-start;
  }
  .msg-check { margin-right: 8px; margin-top: 3px; }
  .msg-star { width: 24px; margin-top: 1px; }
  .msg-from { flex: 1; width: auto; font-size: 0.9rem; font-weight: 600; padding-right: 0; }
  .msg-date { width: auto; padding-left: 8px; font-size: 0.75rem; }
  .msg-subject { display: none; }
  .msg-attach { display: none; }
  .msg-mobile-row2 {
    display: block; width: 100%; padding-left: 47px;
    margin-top: 2px; font-size: 0.85rem; color: var(--text-secondary);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  .msg-row.unread .msg-mobile-row2 { color: var(--text); font-weight: 500; }
  .msg-mobile-snippet { color: var(--text-muted); font-weight: 400; }

  /* Thread view */
  .thread-header { padding: 12px; }
  .thread-subject { font-size: 1.1rem; }
  .thread-messages { padding: 10px 12px 20px; }
  .msg-avatar { width: 32px; height: 32px; font-size: 0.68rem; }
  .msg-head { flex-wrap: wrap; padding: 8px 10px; }
  .msg-head-actions { width: 100%; margin-top: 4px; }
  .message .msg-snippet { max-width: 250px; }
  .msg-body { padding: 10px; }
  .msg-attachments { padding: 8px 10px; }
  .quick-reply { margin-left: 0; }
  .toolbar { overflow-x: auto; -webkit-overflow-scrolling: touch; }

  /* Compose */
  .topbar-center { display: none; }
  .compose-area { padding: 12px; }
  .compose-card { border-radius: var(--radius); }
  .compose-header { padding: 10px 14px; }
  .compose-body { padding: 0 14px; }
  .format-toolbar { padding: 6px 14px; }
  .compose-textarea { padding: 12px 14px; min-height: 200px; }
  .attachment-area { padding: 0 14px 10px; }
  .compose-footer { padding: 10px 14px; }
  .field-label { width: 42px; font-size: 0.78rem; padding: 10px 8px 10px 0; }

  /* Contacts */
  .contact-list-pane { width: 100%; border-right: none; }
  .contact-detail-pane { display: none; }
  .contacts-panes.showing-detail .contact-list-pane { display: none; }
  .contacts-panes.showing-detail .contact-detail-pane { display: block; }
  .detail-back-btn { display: inline-flex !important; }
  .import-form { display: none; }

  /* Calendar */
  .cal-month-title { font-size: 1rem; }
  .day-cell { min-height: 60px; }
  .event-chip { font-size: 0.65rem; padding: 1px 4px; }
  .day-number { width: 20px; height: 20px; font-size: 0.75rem; }

  /* Settings */
  .settings-scroll { padding: 16px; }
  .settings-tabs { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .settings-row { flex-wrap: wrap; }
  .settings-input { width: 100%; }

  /* Search */
  .topbar-dark .search-input { width: 180px; }
  .search-result { padding: 12px 16px; }

  /* Admin */
  .admin-scroll { padding: 16px; }
  .stat-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .admin-table { font-size: 0.82rem; }
  .admin-table th, .admin-table td { padding: 8px 12px; }
  .admin-layout .search-input { width: 100%; }
  .admin-toolbar { flex-direction: column; align-items: stretch; }
  .add-form-row { flex-direction: column; align-items: stretch; }
  .form-arrow { display: none; }
  .node-grid { grid-template-columns: 1fr; }
}

/* Small phone (480px) */
@media (max-width: 480px) {
  .topbar { padding: 0 8px; }
  .brand { font-size: 1rem; }
  .search-box { max-width: 180px; }
  .toolbar { padding: 4px 8px; gap: 4px; }
  .tool-btn { padding: 4px 8px; font-size: 0.78rem; }
  .msg-row { padding: 8px 8px; }
  .msg-mobile-row2 { padding-left: 40px; }

  /* Thread view */
  .message { gap: 8px; }
  .msg-avatar { width: 28px; height: 28px; font-size: 0.6rem; }
  .msg-head { padding: 6px 8px; }
  .msg-body { padding: 8px; font-size: 0.85rem; }

  /* Compose */
  .compose-area { padding: 8px; }
  .compose-card { box-shadow: none; border: none; }
  .field-row { flex-wrap: wrap; }
  .field-label { width: 100%; text-align: left; padding: 8px 0 0 0; }
  .field-content { width: 100%; }
  .field-actions { width: 100%; padding: 0 0 4px 0; }
  .format-toolbar { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .compose-footer { flex-wrap: wrap; gap: 6px; }
  .btn-send { flex: 1; justify-content: center; }
  .btn-secondary { flex: 1; justify-content: center; }
  .compose-spacer { display: none; }
  .btn-discard { width: 100%; justify-content: center; }

  /* Contacts */
  .contact-detail-pane { padding: 12px; }
  .detail-header { padding: 20px 16px 14px; }
  .detail-fields { padding: 14px 16px; }
  .detail-actions { padding: 10px 16px; flex-wrap: wrap; }
  .detail-actions .btn-edit,
  .detail-actions .btn-action { flex: 1; text-align: center; }
  .detail-spacer { display: none; }
  .detail-actions .btn-danger { width: 100%; text-align: center; }

  /* Calendar */
  .cal-header { font-size: 0.6rem; padding: 4px 2px; }
  .day-cell { min-height: 44px; padding: 2px; }
  .day-number { width: 18px; height: 18px; font-size: 0.7rem; }
  .event-chip { font-size: 0.6rem; }
  .event-time { display: none; }
  .cal-toolbar { flex-wrap: wrap; gap: 6px; }

  /* Search */
  .topbar-dark .search-input { width: 140px; }
  .result-meta { flex-wrap: wrap; }

  /* Admin */
  .stat-grid { grid-template-columns: 1fr; }
  .login-card { padding: 24px 20px; }
  .login-brand h1 { font-size: 1.6rem; }
}

/* Very small phone (375px) */
@media (max-width: 375px) {
  .topbar { padding: 0 4px; }
  .brand { font-size: 0.9rem; }
  .toolbar { padding: 2px 4px; }
  .tool-btn { padding: 3px 6px; font-size: 0.75rem; }
  .msg-row { padding: 6px 6px; }
  .compose-area { padding: 4px; }
  .field-label { font-size: 0.72rem; }
  .compose-footer { gap: 4px; }
  .day-cell { min-height: 36px; }
  .day-number { width: 16px; height: 16px; font-size: 0.65rem; }
  .stat-grid { gap: 6px; }
  .stat-card { padding: 10px; }
}


/* ============================================
   30. SECURITY PAGE
   ============================================ */
.tfa-status { display: flex; gap: 12px; align-items: center; margin-bottom: 16px; }
.tfa-status-text { flex: 1; }
.tfa-status-text p { margin: 0; font-size: 14px; color: var(--text-secondary); line-height: 1.5; }
.manual-key {
  position: relative; background-color: var(--bg-muted); padding: 16px 40px 16px 12px;
  border-radius: var(--radius); margin: 16px auto; font-family: 'Monaco', 'Menlo', monospace;
  font-size: 14px; text-align: center; color: var(--text); word-break: break-all;
  user-select: all; cursor: text; max-width: 400px; letter-spacing: 2px;
}
.btn-copy {
  position: absolute; top: 50%; right: 8px; transform: translateY(-50%);
  background: transparent; border: 1px solid var(--border); border-radius: var(--radius);
  padding: 4px 6px; cursor: pointer; color: var(--text-secondary);
  display: flex; align-items: center; justify-content: center; opacity: 0.5; transition: opacity 0.15s;
}
.btn-copy:hover { opacity: 1; }
.recovery-codes { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin: 24px 0; }
.recovery-code {
  background-color: var(--bg-muted); padding: 12px; border-radius: var(--radius);
  font-family: 'Monaco', 'Menlo', monospace; font-size: 13px;
  text-align: center; color: var(--text); user-select: all; cursor: text;
}
.description { font-size: 14px; color: var(--text-secondary); margin-bottom: 16px; line-height: 1.5; }
.button-group { display: flex; gap: 12px; margin-top: 20px; }
.section-separator { border: none; border-top: 2px solid var(--border); margin: 48px 0; }

/* ============================================
   31. RULES PAGE
   ============================================ */
.rule-move-btn {
  background: none; border: none; color: var(--text-muted); cursor: pointer;
  padding: 4px; display: inline-flex; align-items: center; justify-content: center;
  transition: color 0.2s; font-size: 12px;
}
.rule-move-btn:hover { color: var(--text); }
.rule-name { font-weight: 600; color: var(--bongo-blue); text-decoration: none; cursor: pointer; transition: color 0.2s; }
.rule-name:hover { color: var(--bongo-blue-dark); text-decoration: underline; }
.rule-summary { font-size: 12px; color: var(--text-muted); line-height: 1.4; max-width: 300px; }
.rule-status { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border-radius: var(--radius); font-size: 13px; font-weight: 500; }
.rule-status.active { color: var(--bongo-green); }
.rule-status.inactive { color: var(--text-muted); }
.rule-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.condition-row {
  display: grid; grid-template-columns: 150px 150px 1fr 40px; gap: 12px;
  align-items: end; margin-bottom: 12px; padding: 12px;
  background-color: var(--bg); border-radius: var(--radius); border: 1px solid var(--border);
}
.condition-row-remove {
  background: none; border: none; color: var(--status-red, #d32f2f); cursor: pointer;
  font-size: 16px; padding: 4px; display: flex; align-items: center; justify-content: center;
}
.condition-row-remove:hover { color: #b71c1c; }
.form-section {
  margin-bottom: 32px; padding: 24px; background-color: var(--bg-subtle);
  border-radius: var(--radius-lg); border: 1px solid var(--border);
}
.form-section-title { font-size: 16px; font-weight: 600; color: var(--text); margin-bottom: 16px; }
.form-row { display: grid; grid-template-columns: 1fr; gap: 16px; margin-bottom: 16px; }
.form-row.two-col { grid-template-columns: 1fr 1fr; }
.form-row:last-child { margin-bottom: 0; }
.checkbox-wrapper { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.checkbox-wrapper label { margin-bottom: 0; cursor: pointer; font-weight: 400; }
.form-link { color: var(--bongo-blue); text-decoration: none; transition: color 0.2s; cursor: pointer; padding: 10px 16px; }
.form-link:hover { color: var(--bongo-blue-dark); text-decoration: underline; }
.test-results {
  display: none; margin-top: 16px; padding: 16px;
  background-color: var(--bongo-blue-light, #e8f0fa); border-radius: var(--radius);
  border-left: 4px solid var(--bongo-blue); color: var(--text);
}
.test-results.visible { display: block; }

/* ============================================
   32. IMPORT PAGE
   ============================================ */
.file-upload-zone {
  border: 2px dashed var(--border-strong); border-radius: var(--radius-lg);
  padding: 48px 24px; text-align: center; cursor: pointer;
  transition: all 0.2s ease; background-color: var(--bg-subtle);
}
.file-upload-zone:hover { border-color: var(--bongo-blue); background-color: var(--bongo-blue-light, #e8f0fa); }
.file-upload-zone.dragover { border-color: var(--bongo-blue); background-color: var(--bongo-blue-light, #e8f0fa); box-shadow: var(--shadow-md); }
.file-upload-zone input { display: none; }
.file-upload-icon { font-size: 48px; margin-bottom: 16px; display: block; }
.file-upload-text { font-size: 16px; font-weight: 500; color: var(--text); margin-bottom: 8px; }
.file-upload-hint { font-size: 14px; color: var(--text-secondary); }
.import-form-section { margin-bottom: 48px; padding-bottom: 32px; border-bottom: 1px solid var(--border); }
.import-form-section:last-child { border-bottom: none; }
.result-card {
  background-color: var(--bg-subtle); border-radius: var(--radius-lg);
  padding: 40px 32px; text-align: center;
}
.result-icon { font-size: 64px; margin-bottom: 24px; display: block; }
.result-title { font-size: 28px; font-weight: 700; color: var(--text); margin-bottom: 16px; }
.result-message { font-size: 16px; color: var(--text-secondary); margin-bottom: 12px; line-height: 1.6; }
.result-status {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  padding: 12px 16px; background-color: var(--bg); border-radius: var(--radius);
  margin-bottom: 24px; font-size: 15px; color: var(--text);
}
.result-status-success { color: var(--bongo-green); }
.result-status-error { color: #e74c3c; }
.progress-bar { width: 100%; height: 6px; background-color: var(--border); border-radius: 3px; overflow: hidden; margin-bottom: 16px; }
.progress-bar-fill { height: 100%; background: linear-gradient(90deg, var(--bongo-orange), var(--bongo-blue)); width: 100%; border-radius: 3px; transition: width 0.3s ease; }
.progress-label { font-size: 12px; color: var(--text-muted); margin-top: 8px; }
.toggle-section { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--border); }
.toggle-input ~ .toggle-content { display: none; }
.toggle-input:checked ~ .toggle-content { display: block; }

@media (max-width: 1024px) {
  .condition-row { grid-template-columns: 1fr; }
  .form-row.two-col { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
  .recovery-codes { grid-template-columns: 1fr; }
  .button-group { flex-direction: column; }
  .file-upload-zone { padding: 32px 16px; }
  .result-card { padding: 32px 20px; }
  .result-icon { font-size: 56px; }
  .result-title { font-size: 24px; }
}
@media (max-width: 480px) {
  .file-upload-zone { padding: 28px 12px; }
  .file-upload-icon { font-size: 36px; margin-bottom: 12px; }
  .condition-row { grid-template-columns: 1fr 30px; }
  .result-card { padding: 24px 16px; }
  .result-icon { font-size: 48px; margin-bottom: 16px; }
  .result-title { font-size: 20px; margin-bottom: 12px; }
  .section-separator { margin: 32px 0; }
}

/* ============================================
   33. PRINT STYLES
   ============================================ */
@media print {
  nav, .sidebar, .toolbar, .topbar, .hamburger,
  .layout-toggle, .notification-prompt, .pagination,
  .compose-footer, .quick-reply-footer, .flash,
  .sidebar-overlay, .skip-link, .cal-toolbar,
  .admin-nav, .back-to-mail, .topbar-btn { display: none !important; }
  .layout { display: block !important; position: static !important; }
  .content { overflow: visible !important; }
  .msg-body { width: 100% !important; max-width: none !important; }
  .msg-body a[href]::after { content: " (" attr(href) ")"; font-size: 0.8em; color: #666; }
  body { overflow: auto !important; }
}
