/* Neo-Brutalist Components */

/* Demo Banner */
.demo-banner {
  background: var(--color-ink);
  color: var(--color-paper);
  padding: 0.5rem 1rem;
  font-family: var(--font-mono);
  font-size: 0.8125rem;
  border-bottom: var(--border-thick);
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.5rem;
  z-index: 990;
}
.demo-banner strong {
  background: var(--color-primary);
  color: #111;
  padding: 0.15rem 0.5rem;
  font-weight: 800;
  border-radius: var(--radius-sm);
  margin-right: 0.4rem;
}
.demo-banner .disclaimer {
  color: #DDD;
}
[data-theme="dark"] .demo-banner .disclaimer {
  color: #BBB;
}

/* Navbar */
.site-header {
  background: var(--color-paper-card);
  border-bottom: var(--border-thick);
  position: sticky;
  top: 0;
  z-index: 900;
}
.nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.75rem 0;
  gap: 1rem;
}
.brand-logo {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  font-family: var(--font-heading);
  font-size: 1.35rem;
  font-weight: 900;
  letter-spacing: -0.03em;
  color: var(--color-ink);
}
.brand-icon {
  width: 34px;
  height: 34px;
  background: var(--color-primary);
  border: var(--border-thick);
  box-shadow: var(--shadow-hard-sm);
  display: grid;
  place-items: center;
  font-weight: 900;
}
.nav-links {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  list-style: none;
}
.nav-link {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 0.9rem;
  padding: 0.35rem 0.65rem;
  position: relative;
  transition: color 0.15s ease;
  color: var(--color-ink);
}
.nav-link::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0px;
  width: 0;
  height: 4px;
  background: var(--color-primary);
  transition: width 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}
.nav-link:hover::after,
.nav-link.active::after {
  width: 100%;
}

.nav-actions {
  display: flex;
  align-items: center;
  gap: 0.65rem;
}

/* Persona Switcher Pill */
.role-switcher-box {
  display: flex;
  align-items: center;
  background: var(--color-paper);
  border: var(--border-medium);
  box-shadow: var(--shadow-hard-sm);
  padding: 0.25rem 0.5rem;
  gap: 0.4rem;
  border-radius: var(--radius-sm);
}
.role-label {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--color-muted);
}
.role-select {
  background: transparent;
  border: none;
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 0.85rem;
  color: var(--color-ink);
  cursor: pointer;
  padding: 0.15rem 0.25rem;
}
.role-select:focus {
  outline: 2px solid var(--color-primary);
}

/* Neo-Brutalist Buttons */
.btn-brut {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.65rem 1.25rem;
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 0.95rem;
  letter-spacing: -0.01em;
  color: var(--color-ink);
  background: var(--color-paper-card);
  border: var(--border-thick);
  box-shadow: var(--shadow-hard);
  border-radius: var(--radius-sm);
  cursor: pointer;
  text-decoration: none;
  position: relative;
  overflow: hidden;
  z-index: 1;
  transition: transform 0.12s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.12s cubic-bezier(0.16, 1, 0.3, 1);
  min-height: 44px;
  min-width: 44px;
  user-select: none;
}
/* Color wipe effect via ::before pseudo-element */
.btn-brut::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 0;
  height: 100%;
  background: rgba(0, 0, 0, 0.1);
  transition: width 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  z-index: -1;
}
.btn-brut:hover::before {
  width: 100%;
}
.btn-brut:hover {
  transform: translate(-3px, -3px);
  box-shadow: var(--shadow-hard-lg);
}
.btn-brut:active {
  transform: translate(2px, 2px);
  box-shadow: var(--shadow-hard-active);
}
.btn-brut:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none !important;
  box-shadow: var(--shadow-hard-sm) !important;
}

.btn-primary {
  background: var(--color-primary);
  color: #111;
}
.btn-secondary {
  background: var(--color-paper);
}
.btn-danger {
  background: var(--color-coral);
  color: #111;
}
.btn-mint {
  background: var(--color-mint);
  color: #111;
}
.btn-blue {
  background: var(--color-blue);
  color: #111;
}
.btn-sm {
  padding: 0.35rem 0.75rem;
  font-size: 0.8125rem;
  min-height: 36px;
  box-shadow: var(--shadow-hard-sm);
}
.btn-sm:hover {
  transform: translate(-2px, -2px);
  box-shadow: var(--shadow-hard);
}

/* Cards */
.card-brut {
  background: var(--color-paper-card);
  border: var(--border-thick);
  box-shadow: var(--shadow-hard);
  border-radius: var(--radius-sm);
  padding: 1.5rem;
  position: relative;
  transition: transform 0.15s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.15s cubic-bezier(0.16, 1, 0.3, 1);
}
.card-interactive:hover {
  transform: translate(-4px, -4px);
  box-shadow: var(--shadow-hard-lg);
}

/* Sticker Badges */
.sticker {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.2rem 0.6rem;
  font-family: var(--font-mono);
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border: var(--border-medium);
  box-shadow: 2px 2px 0 var(--color-ink);
  border-radius: var(--radius-sm);
  background: var(--color-paper);
  color: #111;
  transform: rotate(-1deg);
  transition: transform 0.15s ease;
}
.sticker:hover {
  transform: rotate(1.5deg) scale(1.05);
}
.sticker-yellow { background: var(--color-primary); }
.sticker-mint   { background: var(--color-mint); }
.sticker-coral  { background: var(--color-coral); }
.sticker-blue   { background: var(--color-blue); }
.sticker-lilac  { background: var(--color-lilac); }

/* Overdue Pulsing Badge */
.sticker-overdue-pulse {
  background: var(--color-coral);
  color: #111;
  animation: wobblePulse 1.8s infinite;
}
@keyframes wobblePulse {
  0% { transform: rotate(-1deg) scale(1); }
  25% { transform: rotate(2deg) scale(1.06); }
  50% { transform: rotate(-2deg) scale(1.04); }
  75% { transform: rotate(1deg) scale(1.06); }
  100% { transform: rotate(-1deg) scale(1); }
}

/* Tape Edge Dividers */
.tape-divider {
  height: 24px;
  background: repeating-linear-gradient(
    -45deg,
    var(--color-primary),
    var(--color-primary) 12px,
    #111 12px,
    #111 24px
  );
  border-top: var(--border-thick);
  border-bottom: var(--border-thick);
  margin: 2.5rem 0;
}

/* Chips */
.chips-container {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 1.5rem;
}
.chip {
  padding: 0.4rem 0.9rem;
  border: var(--border-medium);
  box-shadow: 2px 2px 0 var(--color-ink);
  background: var(--color-paper-card);
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 0.85rem;
  cursor: pointer;
  border-radius: 999px;
  transition: all 0.12s ease;
  color: var(--color-ink);
}
.chip:hover {
  transform: translate(-1px, -1px);
  box-shadow: 3px 3px 0 var(--color-ink);
}
.chip.active {
  background: var(--color-primary);
  color: #111;
  border-width: 2px;
  font-weight: 800;
  transform: translate(1px, 1px);
  box-shadow: 1px 1px 0 var(--color-ink);
}

/* Inputs and Forms */
.form-group {
  margin-bottom: 1.25rem;
}
.form-label {
  display: block;
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 0.875rem;
  margin-bottom: 0.35rem;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
.input-brut, .select-brut, .textarea-brut {
  width: 100%;
  padding: 0.75rem 1rem;
  font-family: var(--font-body);
  font-size: 0.95rem;
  color: var(--color-ink);
  background: var(--color-paper-card);
  border: var(--border-thick);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-hard-sm);
  transition: outline 0.15s, box-shadow 0.15s;
}
.input-brut:focus, .select-brut:focus, .textarea-brut:focus {
  outline: 3px solid var(--color-primary);
  box-shadow: var(--shadow-hard);
}

/* Skeletons */
.skeleton-card {
  height: 380px;
  background: linear-gradient(90deg, rgba(0,0,0,0.04) 25%, rgba(0,0,0,0.08) 50%, rgba(0,0,0,0.04) 75%);
  background-size: 200% 100%;
  animation: skeletonShimmer 1.5s infinite;
  border: var(--border-thick);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-hard);
}
@keyframes skeletonShimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* Empty State Container */
.empty-state {
  text-align: center;
  padding: 3.5rem 1.5rem;
  border: var(--border-thick);
  background: var(--color-paper-card);
  box-shadow: var(--shadow-hard);
  border-radius: var(--radius-sm);
}

/* Toasts */
.toast-container {
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  z-index: 9999;
  pointer-events: none;
}
.toast {
  pointer-events: auto;
  background: var(--color-paper-card);
  border: var(--border-thick);
  box-shadow: var(--shadow-hard-lg);
  padding: 0.85rem 1.15rem;
  font-weight: 700;
  font-size: 0.9rem;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  max-width: 380px;
  border-radius: var(--radius-sm);
  animation: toastSlideIn 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.toast-success { border-left: 10px solid var(--color-mint); }
.toast-warning { border-left: 10px solid var(--color-primary); }
.toast-danger  { border-left: 10px solid var(--color-coral); }
.toast-info    { border-left: 10px solid var(--color-blue); }

@keyframes toastSlideIn {
  from {
    transform: translateX(120%);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

/* Stepper */
.stepper-container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
  margin: 1.5rem 0;
  gap: 0.5rem;
}
.step-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  position: relative;
  z-index: 2;
  flex: 1;
}
.step-badge {
  width: 36px;
  height: 36px;
  border: var(--border-thick);
  border-radius: 50%;
  background: var(--color-paper-card);
  display: grid;
  place-items: center;
  font-family: var(--font-mono);
  font-weight: 800;
  font-size: 0.85rem;
  box-shadow: var(--shadow-hard-sm);
  margin-bottom: 0.4rem;
  transition: all 0.2s ease;
}
.step-item.completed .step-badge {
  background: var(--color-mint);
  color: #111;
}
.step-item.active .step-badge {
  background: var(--color-primary);
  color: #111;
  transform: scale(1.15);
  box-shadow: var(--shadow-hard);
}
.step-title {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
}

/* Footer */
.site-footer {
  margin-top: auto;
  border-top: var(--border-thick);
  background: var(--color-paper-card);
  padding: 2.5rem 0 2rem;
}
.footer-inner {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 2rem;
}
.footer-info {
  max-width: 450px;
}
.footer-actions {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.75rem;
}

.role-choice {
  transition: all 0.15s ease;
}
.role-choice.active {
  border-color: var(--color-ink) !important;
  background: var(--color-paper) !important;
  box-shadow: var(--shadow-hard-sm) !important;
}

@media (max-width: 768px) {
  .nav-inner {
    flex-wrap: wrap;
  }
  .nav-links {
    order: 3;
    width: 100%;
    overflow-x: auto;
    padding-bottom: 0.35rem;
  }
  .footer-inner {
    flex-direction: column;
  }
  .footer-actions {
    align-items: flex-start;
  }
}

/* =========================================
   DARK MODE ENHANCED GREYISH THEME & CONTRAST
   ========================================= */
[data-theme="dark"] {
  color-scheme: dark;
}

[data-theme="dark"] body {
  background-color: var(--color-paper);
  color: var(--color-ink);
}

[data-theme="dark"] .site-header {
  background: var(--color-paper-card);
  border-bottom: 2px solid var(--color-border);
}

[data-theme="dark"] .card-brut,
[data-theme="dark"] .hero-section,
[data-theme="dark"] .persona-card,
[data-theme="dark"] .metric-card {
  background: var(--color-paper-card);
  border-color: var(--color-border);
  color: var(--color-ink);
  box-shadow: var(--shadow-hard);
}

[data-theme="dark"] .card-interactive:hover,
[data-theme="dark"] .persona-card:hover {
  box-shadow: var(--shadow-hard-lg);
  border-color: #768390;
}

/* Inset panels and cards inside cards that used --color-paper */
[data-theme="dark"] [style*="background: var(--color-paper)"],
[data-theme="dark"] [style*="background:var(--color-paper)"] {
  background: #1C2128 !important;
  border-color: var(--color-border) !important;
  color: #F0F6FC !important;
}

/* Inset panels with hardcoded #fff */
[data-theme="dark"] [style*="background: #fff"],
[data-theme="dark"] [style*="background: #ffffff"],
[data-theme="dark"] [style*="background:#fff"],
[data-theme="dark"] [style*="background:#ffffff"] {
  background: #1C2128 !important;
  border-color: var(--color-border) !important;
  color: #F0F6FC !important;
}

/* Fix dark hardcoded text in dark mode */
[data-theme="dark"] [style*="color: #666"],
[data-theme="dark"] [style*="color: #555"],
[data-theme="dark"] [style*="color: #333"],
[data-theme="dark"] [style*="color:#666"],
[data-theme="dark"] [style*="color:#555"],
[data-theme="dark"] [style*="color:#333"] {
  color: #ADBAC7 !important;
}

[data-theme="dark"] [style*="color: #111"],
[data-theme="dark"] [style*="color:#111"] {
  color: #F0F6FC !important;
}

/* Allow buttons, stickers, and marquees to keep dark text on bright badges */
[data-theme="dark"] .btn-primary,
[data-theme="dark"] .btn-mint,
[data-theme="dark"] .btn-danger,
[data-theme="dark"] .sticker,
[data-theme="dark"] .marquee-bar,
[data-theme="dark"] .chip.active,
[data-theme="dark"] .sticky-note,
[data-theme="dark"] .sticky-note * {
  color: #111111 !important;
}

/* Secondary Button in Dark Mode */
[data-theme="dark"] .btn-secondary {
  background: #373E47;
  color: #F0F6FC;
  border-color: var(--color-border);
}
[data-theme="dark"] .btn-secondary:hover {
  background: #444C56;
  color: #FFFFFF;
}

/* Primary Button in Dark Mode */
[data-theme="dark"] .btn-primary {
  background: var(--color-primary);
  color: #111111;
  border-color: #111111;
}

[data-theme="dark"] .btn-mint {
  background: var(--color-mint);
  color: #111111;
  border-color: #111111;
}

[data-theme="dark"] .btn-danger {
  background: var(--color-coral);
  color: #111111;
  border-color: #111111;
}

/* Inputs, Selects, Textareas */
[data-theme="dark"] .input-brut,
[data-theme="dark"] .select-brut,
[data-theme="dark"] .textarea-brut {
  background: #1C2128;
  color: #F0F6FC;
  border-color: var(--color-border);
  box-shadow: var(--shadow-hard-sm);
}

[data-theme="dark"] .input-brut::placeholder,
[data-theme="dark"] .textarea-brut::placeholder {
  color: #768390;
}

[data-theme="dark"] .input-brut:focus,
[data-theme="dark"] .select-brut:focus,
[data-theme="dark"] .textarea-brut:focus {
  outline: 3px solid var(--color-primary);
  border-color: var(--color-primary);
}

/* Chips / Filters */
[data-theme="dark"] .chip {
  background: #1C2128;
  color: #F0F6FC;
  border-color: var(--color-border);
  box-shadow: 2px 2px 0 #111418;
}

[data-theme="dark"] .chip.active {
  background: var(--color-primary);
  color: #111111;
  border-color: #111111;
}

/* Navigation Links */
[data-theme="dark"] .nav-link {
  color: #F0F6FC;
}

[data-theme="dark"] .nav-link:hover,
[data-theme="dark"] .nav-link.active {
  color: var(--color-primary);
}

/* Product Media & Image Containers */
[data-theme="dark"] .resource-card .resource-art {
  background: #1C2128 !important;
  border-bottom: 2px solid var(--color-border);
}

[data-theme="dark"] .resource-card .resource-art img {
  background: transparent !important;
}

[data-theme="dark"] #media-photo-view {
  background: #1C2128 !important;
  border-bottom: 2px solid var(--color-border);
}

[data-theme="dark"] #media-svg-view {
  background: #22272E !important;
  border-bottom: 2px solid var(--color-border);
}

[data-theme="dark"] .resource-card h3 a {
  color: #FFFFFF;
}

[data-theme="dark"] .resource-card h3 a:hover {
  color: var(--color-primary);
}

[data-theme="dark"] .resource-desc {
  color: #ADBAC7;
}

/* Tab Navigation */
[data-theme="dark"] .tab-nav {
  border-bottom-color: var(--color-border);
}

[data-theme="dark"] .tab-btn {
  background: #1C2128;
  border-color: var(--color-border);
  color: #F0F6FC;
}

[data-theme="dark"] .tab-btn.active {
  background: var(--color-primary);
  color: #111111;
  border-color: #111111;
}

/* Tables */
[data-theme="dark"] table th {
  color: #FFFFFF;
  background: #1C2128;
  border-color: var(--color-border);
}

[data-theme="dark"] table td {
  border-color: #373E47;
  color: #F0F6FC;
}

/* Calendar Grid */
[data-theme="dark"] .cal-slot-free {
  background: rgba(63, 185, 80, 0.2) !important;
}

[data-theme="dark"] .cal-slot-free span {
  color: #3FB950 !important;
  font-weight: 800;
}

[data-theme="dark"] td[style*="background: #FFD93D"],
[data-theme="dark"] td[style*="background:#FFD93D"] {
  background: #B45309 !important;
  color: #FFFFFF !important;
}

[data-theme="dark"] td[style*="repeating-linear-gradient"] {
  background: repeating-linear-gradient(45deg, #1C2128, #1C2128 6px, #2D333B 6px, #2D333B 12px) !important;
  color: #ADBAC7 !important;
}

/* Notification Popover */
[data-theme="dark"] #notif-popover {
  background: #2D333B;
  border-color: var(--color-border);
  box-shadow: 0 10px 30px rgba(0,0,0,0.65);
}

/* Footer */
[data-theme="dark"] .site-footer {
  background: #1C2128;
  border-top: 2px solid var(--color-border);
}
