/* Gloo Theme - Enhanced CSS matching gloo.com design system */
:root {
  --gloo-ink: #0f172a;
  --gloo-body: #111827;
  --gloo-muted: #6b7280;
  --gloo-surface: #f8fafc;
  --gloo-border: #e5e7eb;
  --gloo-primary: #5a66ff;
  --gloo-primary-2: #b44cff;
  --gloo-focus: #19b6ff;
  --gloo-gradient: linear-gradient(135deg, var(--gloo-primary), var(--gloo-primary-2));
  --gloo-success: #16a34a;
  --gloo-info: #0ea5e9;
  --gloo-warning: #f59e0b;
  --gloo-danger: #ef4444;
  --gloo-radius: 14px;
  --gloo-radius-lg: 18px;
  --gloo-shadow-sm: 0 1px 2px rgba(2, 6, 23, .06), 0 1px 1px rgba(2, 6, 23, .04);
  --gloo-shadow: 0 8px 24px rgba(15, 23, 42, .12);
  --gloo-shadow-lg: 0 16px 48px rgba(15, 23, 42, .18);
  --gloo-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  
  --bs-body-bg: #ffffff;
  --bs-body-color: var(--gloo-body);
  --bs-border-color: var(--gloo-border);
  --bs-link-color: var(--gloo-primary);
  --bs-primary: var(--gloo-primary);
}

/* Typography & Base Styles */
body {
  font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  background: var(--bs-body-bg);
  color: var(--bs-body-color);
  font-feature-settings: "ss01" on, "liga" on;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
  font-family: 'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  color: var(--gloo-ink);
  font-weight: 800;
  letter-spacing: -.01em;
  line-height: 1.2;
  margin-bottom: 1rem;
}

h1 { font-size: clamp(2rem, 5vw, 3.5rem); }
h2 { font-size: clamp(1.75rem, 4vw, 2.75rem); }
h3 { font-size: clamp(1.5rem, 3vw, 2.25rem); }
h4 { font-size: clamp(1.25rem, 2.5vw, 1.875rem); }
h5 { font-size: clamp(1.125rem, 2vw, 1.5rem); }
h6 { font-size: clamp(1rem, 1.5vw, 1.25rem); }

.lead {
  color: var(--gloo-muted);
  font-size: 1.125rem;
  font-weight: 400;
  line-height: 1.7;
}

a {
  color: var(--bs-link-color);
  text-decoration: none;
  transition: var(--gloo-transition);
}

a:hover {
  color: color-mix(in oklab, var(--bs-link-color) 86%, black);
  text-decoration: none;
}

a:focus-visible {
  outline: 2px solid var(--gloo-focus);
  outline-offset: 2px;
  border-radius: 4px;
}

/* Navigation */
.gloo-nav {
  backdrop-filter: saturate(180%) blur(10px);
  -webkit-backdrop-filter: saturate(180%) blur(10px);
  background: rgba(255, 255, 255, 0.8) !important;
}

.navbar {
  --bs-navbar-padding-y: .75rem;
  box-shadow: var(--gloo-shadow-sm);
  transition: var(--gloo-transition);
}

.navbar .navbar-brand {
  font-weight: 900;
  letter-spacing: -.02em;
  font-size: 1.5rem;
  background: var(--gloo-gradient);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.navbar .nav-link {
  font-weight: 700;
  color: var(--gloo-ink);
  transition: var(--gloo-transition);
  position: relative;
  padding: 0.5rem 0.9rem !important;
}

.navbar .nav-link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%) scaleX(0);
  width: 80%;
  height: 2px;
  background: var(--gloo-gradient);
  transition: var(--gloo-transition);
}

.navbar .nav-link:hover {
  color: var(--gloo-primary);
}

.navbar .nav-link:hover::after {
  transform: translateX(-50%) scaleX(1);
}

.navbar-toggler {
  border: none;
  padding: 0.25rem 0.5rem;
}

.navbar-toggler:focus {
  box-shadow: 0 0 0 0.2rem rgba(90, 102, 255, 0.25);
}

/* Buttons */
.btn {
  border-radius: 999px;
  padding: .625rem 1.25rem;
  font-weight: 700;
  letter-spacing: .01em;
  transition: var(--gloo-transition);
  border: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
}

.btn:focus {
  outline: 0;
  box-shadow: 0 0 0 .2rem rgba(25, 182, 255, .35);
}

.btn-primary {
  color: #fff;
  background: var(--gloo-gradient);
  border: 0;
  position: relative;
  overflow: hidden;
}

.btn-primary::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
  transition: left 0.5s;
}

.btn-primary:hover {
  filter: brightness(1.05);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(90, 102, 255, 0.3);
}

.btn-primary:hover::before {
  left: 100%;
}

.btn-primary:active {
  filter: brightness(.97);
  transform: translateY(0);
}

.btn-outline-primary {
  color: var(--gloo-ink);
  background: transparent;
  border: 2px solid var(--gloo-border);
  transition: var(--gloo-transition);
}

.btn-outline-primary:hover {
  color: #fff;
  background: var(--gloo-gradient);
  border-color: transparent;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(90, 102, 255, 0.2);
}

.btn-lg {
  padding: .875rem 1.75rem;
  font-size: 1.125rem;
}

.btn-sm {
  padding: .5rem 1rem;
  font-size: 0.875rem;
}

/* Hero Section */
.gloo-hero {
  position: relative;
  background: 
    radial-gradient(1200px 600px at 10% -10%, rgba(90, 102, 255, .18), transparent 60%),
    radial-gradient(1000px 500px at 90% -20%, rgba(180, 76, 255, .18), transparent 60%),
    linear-gradient(180deg, #fff, #fafbff);
  border-radius: var(--gloo-radius-lg);
  box-shadow: var(--gloo-shadow);
  overflow: hidden;
}

.gloo-hero::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: 
    radial-gradient(circle at 20% 50%, rgba(90, 102, 255, 0.1), transparent 50%),
    radial-gradient(circle at 80% 50%, rgba(180, 76, 255, 0.1), transparent 50%);
  pointer-events: none;
}

/* Cards */
.card {
  border: 1px solid var(--gloo-border);
  border-radius: var(--gloo-radius);
  box-shadow: var(--gloo-shadow-sm);
  background: var(--gloo-surface);
  transition: var(--gloo-transition);
  overflow: hidden;
}

.card-header {
  background: transparent;
  border-bottom: 1px solid var(--gloo-border);
  padding: 1.25rem 1.5rem;
}

.card-body {
  padding: 1.5rem;
}

.card-title {
  font-weight: 800;
  margin-bottom: 0.75rem;
}

.card-text {
  color: var(--gloo-muted);
  line-height: 1.7;
}

.card.hover-lift {
  transition: transform .2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow .2s cubic-bezier(0.4, 0, 0.2, 1);
}

.card.hover-lift:hover {
  transform: translateY(-4px);
  box-shadow: var(--gloo-shadow);
}

/* Badges */
.badge {
  border-radius: 999px;
  padding: .5rem .75rem;
  font-weight: 700;
  font-size: 0.75rem;
  letter-spacing: 0.025em;
  text-transform: uppercase;
}

.badge.bg-primary {
  background-image: var(--gloo-gradient);
  background-color: transparent;
}

/* Forms */
.form-control, .form-select {
  border-radius: 12px;
  border: 1px solid var(--gloo-border);
  padding: .75rem 1rem;
  transition: var(--gloo-transition);
  font-size: 1rem;
}

.form-control:focus, .form-select:focus {
  border-color: transparent;
  box-shadow: 0 0 0 .2rem rgba(180, 76, 255, .25), 0 0 0 .35rem rgba(25, 182, 255, .15);
  outline: none;
}

.form-label {
  font-weight: 600;
  color: var(--gloo-ink);
  margin-bottom: 0.5rem;
  font-size: 0.875rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.input-group-text {
  border-radius: 12px;
  background: #f3f4f6;
  border-color: var(--gloo-border);
}

.form-check-input:checked {
  background-color: var(--gloo-primary);
  border-color: var(--gloo-primary);
}

.form-check-input:focus {
  border-color: var(--gloo-focus);
  box-shadow: 0 0 0 .2rem rgba(25, 182, 255, .25);
}

/* Tables */
.table {
  --bs-table-striped-bg: #fafafa;
  --bs-table-hover-bg: #f6f7fb;
  border-radius: var(--gloo-radius);
  overflow: hidden;
}

.table thead th {
  border-bottom-width: 2px;
  color: var(--gloo-muted);
  text-transform: uppercase;
  letter-spacing: .08em;
  font-size: .8rem;
  font-weight: 700;
  padding: 1rem;
}

.table tbody td {
  padding: 1rem;
  vertical-align: middle;
}

.table tbody tr {
  transition: var(--gloo-transition);
}

.table tbody tr:hover {
  background-color: var(--bs-table-hover-bg);
}

/* Alerts */
.alert {
  border-radius: 14px;
  border: 0;
  box-shadow: var(--gloo-shadow-sm);
  padding: 1rem 1.25rem;
}

.alert-primary {
  background: linear-gradient(180deg, rgba(90, 102, 255, .1), rgba(180, 76, 255, .1));
  color: var(--gloo-ink);
}

.alert-success {
  background: linear-gradient(180deg, rgba(22, 163, 74, .1), rgba(22, 163, 74, .1));
  color: #065f46;
}

.alert-warning {
  background: linear-gradient(180deg, rgba(245, 158, 11, .1), rgba(245, 158, 11, .1));
  color: #7c2d12;
}

.alert-danger {
  background: linear-gradient(180deg, rgba(239, 68, 68, .1), rgba(239, 68, 68, .1));
  color: #7f1d1d;
}

/* Drupal Regions */
.region-primary-menu .navbar {
  border-radius: var(--gloo-radius);
}

.region-primary-menu .navbar-nav .nav-link {
  padding: .5rem .9rem;
}

.views-exposed-form .form-item {
  display: inline-flex;
  gap: .5rem;
  align-items: center;
  margin: .3rem .5rem .3rem 0;
  padding: .35rem .5rem;
  background: #f8fafc;
  border: 1px solid var(--gloo-border);
  border-radius: 999px;
  transition: var(--gloo-transition);
}

.views-exposed-form .form-item:hover {
  border-color: var(--gloo-primary);
  background: #fff;
}

/* Messages */
.messages {
  border-radius: 14px;
  box-shadow: var(--gloo-shadow-sm);
  padding: 1rem 1.25rem;
}

.messages--status {
  background: linear-gradient(0deg, rgba(16, 185, 129, .1), rgba(16, 185, 129, .1));
  color: #065f46;
  border-left: 4px solid var(--gloo-success);
}

.messages--warning {
  background: linear-gradient(0deg, rgba(245, 158, 11, .1), rgba(245, 158, 11, .1));
  color: #7c2d12;
  border-left: 4px solid var(--gloo-warning);
}

.messages--error {
  background: linear-gradient(0deg, rgba(239, 68, 68, .1), rgba(239, 68, 68, .1));
  color: #7f1d1d;
  border-left: 4px solid var(--gloo-danger);
}

/* Utility Classes */
.text-gradient {
  background: var(--gloo-gradient);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  display: inline-block;
}

.bg-gradient-gloo {
  background: var(--gloo-gradient);
}

.shadow-gloo {
  box-shadow: var(--gloo-shadow);
}

.shadow-gloo-lg {
  box-shadow: var(--gloo-shadow-lg);
}

.rounded-gloo {
  border-radius: var(--gloo-radius);
}

.rounded-gloo-lg {
  border-radius: var(--gloo-radius-lg);
}

/* Dark Section */
.section-dark {
  background: #0b1020;
  color: #e5e7eb;
  position: relative;
}

.section-dark::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: 
    radial-gradient(circle at 20% 30%, rgba(90, 102, 255, 0.1), transparent 50%),
    radial-gradient(circle at 80% 70%, rgba(180, 76, 255, 0.1), transparent 50%);
  pointer-events: none;
}

.section-dark .btn-primary {
  background: linear-gradient(135deg, #7c83ff, #d08aff);
}

.section-dark .card {
  background: rgba(255, 255, 255, .04);
  border-color: rgba(255, 255, 255, .08);
  color: #e5e7eb;
}

.section-dark .form-control {
  background: rgba(255, 255, 255, .06);
  color: #f8fafc;
  border-color: rgba(255, 255, 255, .12);
}

.section-dark .form-control:focus {
  background: rgba(255, 255, 255, .08);
  border-color: rgba(90, 102, 255, 0.5);
}

.section-dark h1, .section-dark h2, .section-dark h3, 
.section-dark h4, .section-dark h5, .section-dark h6 {
  color: #f8fafc;
}

.section-dark a {
  color: #7c83ff;
}

.section-dark a:hover {
  color: #d08aff;
}

/* Responsive Typography */
@media (max-width: 768px) {
  .gloo-hero {
    padding: 2rem !important;
  }
  
  .card-body {
    padding: 1.25rem;
  }
  
  .btn {
    width: 100%;
    justify-content: center;
  }
  
  .btn-lg {
    padding: 1rem 1.5rem;
  }
}

/* Smooth Scrolling */
html {
  scroll-behavior: smooth;
}

/* Selection */
::selection {
  background: rgba(90, 102, 255, 0.2);
  color: var(--gloo-ink);
}

::-moz-selection {
  background: rgba(90, 102, 255, 0.2);
  color: var(--gloo-ink);
}

/* 1) Drupal messages: stick to the very top, above content */
.messages,
[role="contentinfo"] .messages,
.region-content .messages {
  position: sticky; /* stays at top as you scroll */
  top: calc(var(--drupal-displace-offset-top, 0px) + 0.5rem);
  z-index: 1070; /* above navbar/toolbars/backdrops */
  margin-top: 0 !important;
}

/* If you prefer hard pinning instead of sticky, use fixed: */
/*
.messages,
[role="contentinfo"] .messages,
.region-content .messages {
  position: fixed;
  left: 0;
  right: 0;
  top: calc(var(--drupal-displace-offset-top, 0px));
  z-index: 1070;
  margin: 0 !important;
}
*/

/* 2) Bootstrap modal: ensure it anchors near the top (not centered) */
.modal {
  align-items: flex-start !important; /* BS5 uses flex; this puts it at top */
  z-index: 1065; /* above backdrop (1050) and most UI */
}
.modal.show .modal-dialog {
  margin-top: calc(var(--drupal-displace-offset-top, 0px) + 1rem) !important;
}

/* 3) jQuery UI dialogs (Drupal off-canvas/announce) — anchor at top too */
.ui-dialog {
  top: calc(var(--drupal-displace-offset-top, 0px) + 1rem) !important;
  z-index: 1075 !important;
}

/* Gloo-style eyebrow text (small uppercase label) */
.gloo-eyebrow {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--gloo-muted);
}

/* Hero stats row under the buttons */
.hero-stats .h4 {
  font-weight: 800;
}

.hero-stats .text-muted {
  font-size: 0.8rem;
}

/* Ensure the hero on large screens feels roomy */
@media (min-width: 992px) {
  .gloo-hero {
    padding-top: 3.5rem !important;
    padding-bottom: 3.5rem !important;
  }
}

