/*
Theme Name: CampusSphere
Theme URI: https://campussphere.in
Author: CampusSphere Team
Description: AI-Powered School Management Software - Premium Gutenberg FSE Block Theme
Version: 1.4.2
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: campussphere
Tags: full-site-editing, block-theme, education, school, saas, enterprise
*/

/* ==========================================================================
   PART 2 — Google Fonts
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');

/* ==========================================================================
   PART 3 — Brand Tokens (CSS Custom Properties)
   ========================================================================== */

:root {
  /* --- Colors: Primary (Indigo) --- */
  --campussphere-color-primary-50:  #eef2ff;
  --campussphere-color-primary-100: #e0e7ff;
  --campussphere-color-primary-200: #c7d2fe;
  --campussphere-color-primary-300: #a5b4fc;
  --campussphere-color-primary-400: #818cf8;
  --campussphere-color-primary-500: #6366f1;
  --campussphere-color-primary-600: #4f46e5;
  --campussphere-color-primary-700: #4338ca;
  --campussphere-color-primary-800: #3730a3;
  --campussphere-color-primary-900: #312e81;
  --campussphere-color-primary-950: #1e1b4b;

  /* --- Colors: Accent (Violet) --- */
  --campussphere-color-accent-50:  #f5f3ff;
  --campussphere-color-accent-100: #ede9fe;
  --campussphere-color-accent-200: #ddd6fe;
  --campussphere-color-accent-300: #c4b5fd;
  --campussphere-color-accent-400: #a78bfa;
  --campussphere-color-accent-500: #8b5cf6;
  --campussphere-color-accent-600: #7c3aed;
  --campussphere-color-accent-700: #6d28d9;
  --campussphere-color-accent-800: #5b21b6;
  --campussphere-color-accent-900: #4c1d95;
  --campussphere-color-accent-950: #2e1065;

  /* --- Colors: Success (Emerald) --- */
  --campussphere-color-success-50:  #ecfdf5;
  --campussphere-color-success-100: #d1fae5;
  --campussphere-color-success-200: #a7f3d0;
  --campussphere-color-success-300: #6ee7b7;
  --campussphere-color-success-400: #34d399;
  --campussphere-color-success-500: #10b981;
  --campussphere-color-success-600: #059669;
  --campussphere-color-success-700: #047857;
  --campussphere-color-success-800: #065f46;
  --campussphere-color-success-900: #064e3b;

  /* --- Colors: Warning (Amber) --- */
  --campussphere-color-warning-50:  #fffbeb;
  --campussphere-color-warning-100: #fef3c7;
  --campussphere-color-warning-200: #fde68a;
  --campussphere-color-warning-300: #fcd34d;
  --campussphere-color-warning-400: #fbbf24;
  --campussphere-color-warning-500: #f59e0b;
  --campussphere-color-warning-600: #d97706;
  --campussphere-color-warning-700: #b45309;
  --campussphere-color-warning-800: #92400e;
  --campussphere-color-warning-900: #78350f;

  /* --- Colors: Danger (Red) --- */
  --campussphere-color-danger-50:  #fef2f2;
  --campussphere-color-danger-100: #fee2e2;
  --campussphere-color-danger-200: #fecaca;
  --campussphere-color-danger-300: #fca5a5;
  --campussphere-color-danger-400: #f87171;
  --campussphere-color-danger-500: #ef4444;
  --campussphere-color-danger-600: #dc2626;
  --campussphere-color-danger-700: #b91c1c;
  --campussphere-color-danger-800: #991b1b;
  --campussphere-color-danger-900: #7f1d1d;

  /* --- Colors: Neutral (Slate) --- */
  --campussphere-color-neutral-0:   #ffffff;
  --campussphere-color-neutral-50:  #f8fafc;
  --campussphere-color-neutral-100: #f1f5f9;
  --campussphere-color-neutral-200: #e2e8f0;
  --campussphere-color-neutral-300: #cbd5e1;
  --campussphere-color-neutral-400: #94a3b8;
  --campussphere-color-neutral-500: #64748b;
  --campussphere-color-neutral-600: #475569;
  --campussphere-color-neutral-700: #334155;
  --campussphere-color-neutral-800: #1e293b;
  --campussphere-color-neutral-900: #0f172a;
  --campussphere-color-neutral-950: #020617;

  /* --- Colors: Semantic Aliases --- */
  --campussphere-color-bg:           var(--campussphere-color-neutral-0);
  --campussphere-color-bg-subtle:    var(--campussphere-color-neutral-50);
  --campussphere-color-bg-muted:     var(--campussphere-color-neutral-100);
  --campussphere-color-border:       var(--campussphere-color-neutral-200);
  --campussphere-color-border-strong: var(--campussphere-color-neutral-300);
  --campussphere-color-text:         var(--campussphere-color-neutral-900);
  --campussphere-color-text-muted:   var(--campussphere-color-neutral-500);
  --campussphere-color-text-subtle:  var(--campussphere-color-neutral-400);
  --campussphere-color-text-inverse: var(--campussphere-color-neutral-0);
  --campussphere-color-heading:      var(--campussphere-color-neutral-900);
  --campussphere-color-link:         var(--campussphere-color-primary-600);
  --campussphere-color-link-hover:   var(--campussphere-color-primary-700);

  /* --- Gradients --- */
  --campussphere-gradient-primary:   linear-gradient(135deg, var(--campussphere-color-primary-600) 0%, var(--campussphere-color-accent-600) 100%);
  --campussphere-gradient-primary-soft: linear-gradient(135deg, var(--campussphere-color-primary-500) 0%, var(--campussphere-color-accent-500) 100%);
  --campussphere-gradient-hero:      linear-gradient(135deg, var(--campussphere-color-primary-950) 0%, var(--campussphere-color-accent-900) 50%, var(--campussphere-color-primary-900) 100%);
  --campussphere-gradient-surface:   linear-gradient(180deg, var(--campussphere-color-neutral-0) 0%, var(--campussphere-color-neutral-50) 100%);
  --campussphere-gradient-subtle:    linear-gradient(135deg, var(--campussphere-color-primary-50) 0%, var(--campussphere-color-accent-50) 100%);
  --campussphere-gradient-cta:       linear-gradient(135deg, var(--campussphere-color-primary-600) 0%, var(--campussphere-color-accent-700) 100%);
  --campussphere-gradient-text:      linear-gradient(135deg, var(--campussphere-color-primary-600) 0%, var(--campussphere-color-accent-500) 100%);
  --campussphere-gradient-card-hover: linear-gradient(135deg, var(--campussphere-color-primary-50) 0%, var(--campussphere-color-accent-50) 100%);

  /* --- Spacing Scale --- */
  --campussphere-space-0:   0;
  --campussphere-space-px:  1px;
  --campussphere-space-0-5: 0.125rem;   /* 2px */
  --campussphere-space-1:   0.25rem;    /* 4px */
  --campussphere-space-1-5: 0.375rem;   /* 6px */
  --campussphere-space-2:   0.5rem;     /* 8px */
  --campussphere-space-2-5: 0.625rem;   /* 10px */
  --campussphere-space-3:   0.75rem;    /* 12px */
  --campussphere-space-3-5: 0.875rem;   /* 14px */
  --campussphere-space-4:   1rem;       /* 16px */
  --campussphere-space-5:   1.25rem;    /* 20px */
  --campussphere-space-6:   1.5rem;     /* 24px */
  --campussphere-space-7:   1.75rem;    /* 28px */
  --campussphere-space-8:   2rem;       /* 32px */
  --campussphere-space-9:   2.25rem;    /* 36px */
  --campussphere-space-10:  2.5rem;     /* 40px */
  --campussphere-space-11:  2.75rem;    /* 44px */
  --campussphere-space-12:  3rem;       /* 48px */
  --campussphere-space-14:  3.5rem;     /* 56px */
  --campussphere-space-16:  4rem;       /* 64px */
  --campussphere-space-20:  5rem;       /* 80px */
  --campussphere-space-24:  6rem;       /* 96px */
  --campussphere-space-28:  7rem;       /* 112px */
  --campussphere-space-32:  8rem;       /* 128px */
  --campussphere-space-36:  9rem;       /* 144px */
  --campussphere-space-40:  10rem;      /* 160px */
  --campussphere-space-48:  12rem;      /* 192px */
  --campussphere-space-56:  14rem;      /* 224px */
  --campussphere-space-64:  16rem;      /* 256px */

  /* --- Typography: Font Families --- */
  --campussphere-font-sans:   'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --campussphere-font-mono:   ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Monaco, Consolas, 'Courier New', monospace;

  /* --- Typography: Font Sizes --- */
  --campussphere-text-xs:   0.75rem;    /* 12px */
  --campussphere-text-sm:   0.875rem;   /* 14px */
  --campussphere-text-base: 1rem;       /* 16px */
  --campussphere-text-lg:   1.125rem;   /* 18px */
  --campussphere-text-xl:   1.25rem;    /* 20px */
  --campussphere-text-2xl:  1.5rem;     /* 24px */
  --campussphere-text-3xl:  1.875rem;   /* 30px */
  --campussphere-text-4xl:  2.25rem;    /* 36px */
  --campussphere-text-5xl:  3rem;       /* 48px */
  --campussphere-text-6xl:  3.75rem;    /* 60px */
  --campussphere-text-7xl:  4.5rem;     /* 72px */
  --campussphere-text-8xl:  6rem;       /* 96px */
  --campussphere-text-9xl:  8rem;       /* 128px */

  /* --- Typography: Font Weights --- */
  --campussphere-font-normal:    400;
  --campussphere-font-medium:    500;
  --campussphere-font-semibold:  600;
  --campussphere-font-bold:      700;
  --campussphere-font-extrabold: 800;
  --campussphere-font-black:     900;

  /* --- Typography: Line Heights --- */
  --campussphere-leading-none:    1;
  --campussphere-leading-tight:   1.25;
  --campussphere-leading-snug:    1.375;
  --campussphere-leading-normal:  1.5;
  --campussphere-leading-relaxed: 1.625;
  --campussphere-leading-loose:   2;

  /* --- Typography: Letter Spacing --- */
  --campussphere-tracking-tighter: -0.05em;
  --campussphere-tracking-tight:   -0.025em;
  --campussphere-tracking-normal:  0em;
  --campussphere-tracking-wide:    0.025em;
  --campussphere-tracking-wider:   0.05em;
  --campussphere-tracking-widest:  0.1em;

  /* --- Border Radii --- */
  --campussphere-radius-none: 0;
  --campussphere-radius-sm:   4px;
  --campussphere-radius-md:   8px;
  --campussphere-radius-lg:   12px;
  --campussphere-radius-xl:   16px;
  --campussphere-radius-2xl:  24px;
  --campussphere-radius-3xl:  32px;
  --campussphere-radius-full: 9999px;

  /* --- Shadows --- */
  --campussphere-shadow-sm:  0 1px 2px 0 rgb(0 0 0 / 0.05);
  --campussphere-shadow-md:  0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --campussphere-shadow-lg:  0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --campussphere-shadow-xl:  0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  --campussphere-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
  --campussphere-shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
  --campussphere-shadow-none: none;
  --campussphere-shadow-primary-sm: 0 4px 14px 0 rgb(79 70 229 / 0.2);
  --campussphere-shadow-primary-md: 0 8px 24px 0 rgb(79 70 229 / 0.3);
  --campussphere-shadow-primary-lg: 0 16px 40px 0 rgb(79 70 229 / 0.35);

  /* --- Transitions --- */
  --campussphere-transition-fast:   150ms ease;
  --campussphere-transition-base:   200ms ease;
  --campussphere-transition-slow:   300ms ease;
  --campussphere-transition-slower: 500ms ease;
  --campussphere-transition-property-common: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter;
  --campussphere-transition-property-transform: transform;
  --campussphere-transition-property-opacity: opacity;
  --campussphere-transition-property-shadow: box-shadow;
  --campussphere-transition-property-colors: color, background-color, border-color, text-decoration-color, fill, stroke;

  /* --- Z-Index Scale --- */
  --campussphere-z-0:      0;
  --campussphere-z-10:     10;
  --campussphere-z-20:     20;
  --campussphere-z-30:     30;
  --campussphere-z-40:     40;
  --campussphere-z-50:     50;
  --campussphere-z-sticky: 100;
  --campussphere-z-banner: 200;
  --campussphere-z-modal:  300;
  --campussphere-z-toast:  400;
  --campussphere-z-top:    9999;

  /* --- Layout --- */
  --campussphere-container-sm:     640px;
  --campussphere-container-md:     768px;
  --campussphere-container-lg:     1024px;
  --campussphere-container-xl:     1280px;
  --campussphere-container-2xl:    1440px;
  --campussphere-container-narrow: 720px;
  --campussphere-container-wide:   1440px;
  --campussphere-container-padding: var(--campussphere-space-6);

  /* --- Section Spacing --- */
  --campussphere-section-padding-desktop: var(--campussphere-space-24);
  --campussphere-section-padding-tablet:  var(--campussphere-space-16);
  --campussphere-section-padding-mobile:  var(--campussphere-space-12);

  /* --- Component: Buttons --- */
  --campussphere-btn-height-sm:   2.25rem;
  --campussphere-btn-height-base: 2.75rem;
  --campussphere-btn-height-lg:   3.25rem;
  --campussphere-btn-padding-x-sm:   var(--campussphere-space-4);
  --campussphere-btn-padding-x-base: var(--campussphere-space-6);
  --campussphere-btn-padding-x-lg:   var(--campussphere-space-8);
  --campussphere-btn-font-size-sm:   var(--campussphere-text-sm);
  --campussphere-btn-font-size-base: var(--campussphere-text-sm);
  --campussphere-btn-font-size-lg:   var(--campussphere-text-base);
  --campussphere-btn-radius:         var(--campussphere-radius-lg);
  --campussphere-btn-font-weight:    var(--campussphere-font-semibold);
}

/* ==========================================================================
   PART 4 — CSS Reset Additions
   ========================================================================== */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  tab-size: 4;
}

body {
  font-family: var(--campussphere-font-sans);
  font-size: var(--campussphere-text-base);
  line-height: var(--campussphere-leading-normal);
  color: var(--campussphere-color-text);
  background-color: var(--campussphere-color-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img,
picture,
video,
canvas,
svg {
  max-width: 100%;
  display: block;
}

input,
button,
textarea,
select {
  font: inherit;
}

p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: break-word;
}

button {
  cursor: pointer;
  border: none;
  background: none;
  padding: 0;
}

a {
  color: var(--campussphere-color-link);
  text-decoration: underline;
  text-decoration-color: transparent;
  text-underline-offset: 3px;
  transition: var(--campussphere-transition-property-colors) var(--campussphere-transition-base);
}

a:hover {
  color: var(--campussphere-color-link-hover);
  text-decoration-color: currentColor;
}

ol,
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

hr {
  border: none;
  border-top: 1px solid var(--campussphere-color-border);
  margin: 0;
}

/* ==========================================================================
   PART 5 — Global Utility Classes
   ========================================================================== */

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

.campussphere-sr-only-focusable:not(:focus):not(:focus-within) {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* Containers */
.campussphere-container {
  width: 100%;
  max-width: var(--campussphere-container-xl);
  margin-inline: auto;
  padding-inline: var(--campussphere-container-padding);
}

.campussphere-container--narrow {
  width: 100%;
  max-width: var(--campussphere-container-narrow);
  margin-inline: auto;
  padding-inline: var(--campussphere-container-padding);
}

.campussphere-container--wide {
  width: 100%;
  max-width: var(--campussphere-container-wide);
  margin-inline: auto;
  padding-inline: var(--campussphere-container-padding);
}

/* Gradient text */
.campussphere-text-gradient {
  background: var(--campussphere-gradient-text);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

/* Badge */
.campussphere-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--campussphere-space-1-5);
  padding: var(--campussphere-space-1) var(--campussphere-space-3);
  font-size: var(--campussphere-text-xs);
  font-weight: var(--campussphere-font-semibold);
  line-height: var(--campussphere-leading-none);
  letter-spacing: var(--campussphere-tracking-wide);
  text-transform: uppercase;
  border-radius: var(--campussphere-radius-full);
  white-space: nowrap;
  background-color: var(--campussphere-color-primary-100);
  color: var(--campussphere-color-primary-700);
  border: 1px solid var(--campussphere-color-primary-200);
}

.campussphere-badge--success {
  background-color: var(--campussphere-color-success-100);
  color: var(--campussphere-color-success-700);
  border-color: var(--campussphere-color-success-200);
}

.campussphere-badge--warning {
  background-color: var(--campussphere-color-warning-100);
  color: var(--campussphere-color-warning-700);
  border-color: var(--campussphere-color-warning-200);
}

.campussphere-badge--danger {
  background-color: var(--campussphere-color-danger-100);
  color: var(--campussphere-color-danger-700);
  border-color: var(--campussphere-color-danger-200);
}

.campussphere-badge--neutral {
  background-color: var(--campussphere-color-neutral-100);
  color: var(--campussphere-color-neutral-600);
  border-color: var(--campussphere-color-neutral-200);
}

/* Section */
.campussphere-section {
  padding-block: var(--campussphere-section-padding-desktop);
}

@media (max-width: 1023px) {
  .campussphere-section {
    padding-block: var(--campussphere-section-padding-tablet);
  }
}

@media (max-width: 639px) {
  .campussphere-section {
    padding-block: var(--campussphere-section-padding-mobile);
  }
}

/* --- Buttons --- */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--campussphere-space-2);
  height: var(--campussphere-btn-height-base);
  padding-inline: var(--campussphere-btn-padding-x-base);
  font-family: var(--campussphere-font-sans);
  font-size: var(--campussphere-btn-font-size-base);
  font-weight: var(--campussphere-btn-font-weight);
  line-height: 1;
  letter-spacing: var(--campussphere-tracking-normal);
  text-decoration: none;
  white-space: nowrap;
  border-radius: var(--campussphere-btn-radius);
  border: 2px solid transparent;
  cursor: pointer;
  transition: var(--campussphere-transition-property-common) var(--campussphere-transition-base);
  position: relative;
  overflow: hidden;
  user-select: none;
  vertical-align: middle;
}

.btn:focus-visible {
  outline: 2px solid var(--campussphere-color-primary-600);
  outline-offset: 2px;
}

.btn:disabled,
.btn[aria-disabled="true"] {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* Primary button */
.btn--primary {
  background: var(--campussphere-gradient-primary);
  color: var(--campussphere-color-text-inverse);
  border-color: transparent;
  box-shadow: var(--campussphere-shadow-primary-sm);
}

.btn--primary:hover {
  background: var(--campussphere-gradient-primary-soft);
  box-shadow: var(--campussphere-shadow-primary-md);
  transform: translateY(-1px);
  color: var(--campussphere-color-text-inverse);
  text-decoration: none;
}

.btn--primary:active {
  transform: translateY(0);
  box-shadow: var(--campussphere-shadow-primary-sm);
}

/* Secondary button */
.btn--secondary {
  background-color: transparent;
  color: var(--campussphere-color-primary-600);
  border-color: var(--campussphere-color-primary-600);
}

.btn--secondary:hover {
  background-color: var(--campussphere-color-primary-50);
  border-color: var(--campussphere-color-primary-700);
  color: var(--campussphere-color-primary-700);
  text-decoration: none;
}

.btn--secondary:active {
  background-color: var(--campussphere-color-primary-100);
}

/* Ghost button */
.btn--ghost {
  background-color: transparent;
  color: var(--campussphere-color-primary-600);
  border-color: transparent;
}

.btn--ghost:hover {
  background-color: var(--campussphere-color-primary-50);
  color: var(--campussphere-color-primary-700);
  text-decoration: none;
}

.btn--ghost:active {
  background-color: var(--campussphere-color-primary-100);
}

/* Size variants */
.btn--lg {
  height: var(--campussphere-btn-height-lg);
  padding-inline: var(--campussphere-btn-padding-x-lg);
  font-size: var(--campussphere-btn-font-size-lg);
  border-radius: var(--campussphere-radius-xl);
}

.btn--sm {
  height: var(--campussphere-btn-height-sm);
  padding-inline: var(--campussphere-btn-padding-x-sm);
  font-size: var(--campussphere-btn-font-size-sm);
  border-radius: var(--campussphere-radius-md);
}

/* ==========================================================================
   PART 6 — WordPress Core Block Enhancements
   ========================================================================== */

/* --- wp:group --- */

.wp-block-group {
  box-sizing: border-box;
}

/* Do not force max-width:100% on constrained children — that overrides
   WordPress layout contentSize (specificity beats :where() rules). */
.wp-block-group.is-layout-flow > * {
  max-width: 100%;
  box-sizing: border-box;
}

.wp-block-group.is-layout-constrained > * {
  box-sizing: border-box;
}

.wp-block-group.has-global-padding {
  padding-inline: var(--wp--style--root--padding-left, var(--campussphere-container-padding, 1.5rem));
}

/* --- wp:columns --- */

.wp-block-columns {
  gap: var(--campussphere-space-8);
}

.wp-block-columns.is-not-stacked-on-mobile {
  flex-wrap: nowrap;
}

@media (max-width: 781px) {
  .wp-block-columns:not(.is-not-stacked-on-mobile) {
    flex-direction: column;
    gap: var(--campussphere-space-6);
  }
}

.wp-block-column {
  min-width: 0;
}

/* --- wp:image --- */

.wp-block-image {
  max-width: 100%;
}

.wp-block-image img {
  max-width: 100%;
  height: auto;
  display: block;
  border-radius: var(--campussphere-radius-lg);
}

.wp-block-image.alignfull img,
.wp-block-image.alignwide img {
  border-radius: 0;
}

.wp-block-image figcaption {
  margin-top: var(--campussphere-space-2);
  font-size: var(--campussphere-text-sm);
  color: var(--campussphere-color-text-muted);
  text-align: center;
  line-height: var(--campussphere-leading-relaxed);
}

/* --- wp:separator --- */

.wp-block-separator {
  border: none;
  border-top: 1px solid var(--campussphere-color-border);
  margin-block: var(--campussphere-space-8);
  opacity: 1;
}

.wp-block-separator.is-style-wide {
  border-top-width: 2px;
  border-color: var(--campussphere-color-primary-200);
  width: 100%;
}

/* Footer divider must span full width (core default is 100px) */
.campussphere-footer .wp-block-separator,
.campussphere-footer__divider {
  width: 100% !important;
  max-width: none !important;
}

.wp-block-separator.is-style-dots {
  border: none;
  text-align: center;
  color: var(--campussphere-color-neutral-400);
}

.wp-block-separator.is-style-dots::before {
  content: '\00b7 \00b7 \00b7';
  font-size: var(--campussphere-text-2xl);
  letter-spacing: var(--campussphere-space-4);
}

/* --- wp:quote --- */

.wp-block-quote {
  border-left: 4px solid var(--campussphere-color-primary-500);
  padding-left: var(--campussphere-space-6);
  padding-block: var(--campussphere-space-4);
  margin-inline: 0;
  background-color: var(--campussphere-color-primary-50);
  border-radius: 0 var(--campussphere-radius-lg) var(--campussphere-radius-lg) 0;
}

.wp-block-quote p {
  font-size: var(--campussphere-text-lg);
  font-style: italic;
  color: var(--campussphere-color-neutral-700);
  line-height: var(--campussphere-leading-relaxed);
  margin-bottom: var(--campussphere-space-3);
}

.wp-block-quote p:last-of-type {
  margin-bottom: 0;
}

.wp-block-quote cite,
.wp-block-quote footer {
  display: block;
  margin-top: var(--campussphere-space-3);
  font-size: var(--campussphere-text-sm);
  font-style: normal;
  font-weight: var(--campussphere-font-semibold);
  color: var(--campussphere-color-primary-700);
}

.wp-block-quote.is-large,
.wp-block-quote.is-style-large {
  border-left: none;
  border-top: 4px solid var(--campussphere-color-primary-500);
  padding: var(--campussphere-space-8);
  background: var(--campussphere-gradient-subtle);
  border-radius: var(--campussphere-radius-xl);
  text-align: center;
}

.wp-block-quote.is-large p,
.wp-block-quote.is-style-large p {
  font-size: var(--campussphere-text-2xl);
}

/* --- wp:table --- */

.wp-block-table {
  width: 100%;
  overflow-x: auto;
  display: block;
}

.wp-block-table table {
  width: 100%;
  min-width: 100%;
  border-collapse: collapse;
  font-size: var(--campussphere-text-sm);
}

.wp-block-table thead {
  background-color: var(--campussphere-color-neutral-900);
  color: var(--campussphere-color-text-inverse);
}

.wp-block-table thead th {
  padding: var(--campussphere-space-3) var(--campussphere-space-4);
  text-align: left;
  font-weight: var(--campussphere-font-semibold);
  font-size: var(--campussphere-text-xs);
  letter-spacing: var(--campussphere-tracking-wider);
  text-transform: uppercase;
  white-space: nowrap;
}

.wp-block-table tbody tr {
  border-bottom: 1px solid var(--campussphere-color-border);
  transition: background-color var(--campussphere-transition-fast);
}

.wp-block-table tbody tr:last-child {
  border-bottom: none;
}

.wp-block-table tbody tr:hover {
  background-color: var(--campussphere-color-bg-subtle);
}

.wp-block-table td {
  padding: var(--campussphere-space-3) var(--campussphere-space-4);
  color: var(--campussphere-color-neutral-700);
  line-height: var(--campussphere-leading-normal);
}

.wp-block-table.is-style-stripes tbody tr:nth-child(odd) {
  background-color: var(--campussphere-color-neutral-50);
}

.wp-block-table.is-style-stripes tbody tr:nth-child(even) {
  background-color: var(--campussphere-color-neutral-0);
}

.wp-block-table figcaption {
  font-size: var(--campussphere-text-sm);
  color: var(--campussphere-color-text-muted);
  text-align: center;
  margin-top: var(--campussphere-space-3);
}

/* --- wp:heading --- */

.wp-block-heading {
  font-family: var(--campussphere-font-sans);
  font-weight: var(--campussphere-font-bold);
  line-height: var(--campussphere-leading-tight);
  letter-spacing: var(--campussphere-tracking-tight);
  color: var(--campussphere-color-heading);
}

/* --- wp:paragraph --- */

.wp-block-post-content p,
.entry-content p {
  line-height: var(--campussphere-leading-relaxed);
  color: var(--campussphere-color-text);
}

/* --- wp:list --- */

.wp-block-list,
.wp-block-post-content ul,
.wp-block-post-content ol,
.entry-content ul,
.entry-content ol {
  padding-left: var(--campussphere-space-6);
  margin-block: var(--campussphere-space-4);
}

.wp-block-post-content ul,
.entry-content ul {
  list-style-type: disc;
}

.wp-block-post-content ol,
.entry-content ol {
  list-style-type: decimal;
}

.wp-block-post-content li,
.entry-content li {
  margin-block: var(--campussphere-space-2);
  line-height: var(--campussphere-leading-relaxed);
  color: var(--campussphere-color-text);
}

/* --- wp:code --- */

.wp-block-code {
  border-radius: var(--campussphere-radius-lg);
  border: 1px solid var(--campussphere-color-border);
  background-color: var(--campussphere-color-neutral-900);
  padding: var(--campussphere-space-5) var(--campussphere-space-6);
  overflow-x: auto;
}

.wp-block-code code {
  font-family: var(--campussphere-font-mono);
  font-size: var(--campussphere-text-sm);
  color: var(--campussphere-color-neutral-200);
  line-height: var(--campussphere-leading-relaxed);
  white-space: pre;
}

/* --- wp:preformatted --- */

.wp-block-preformatted {
  font-family: var(--campussphere-font-mono);
  font-size: var(--campussphere-text-sm);
  line-height: var(--campussphere-leading-relaxed);
  background-color: var(--campussphere-color-bg-subtle);
  border: 1px solid var(--campussphere-color-border);
  border-radius: var(--campussphere-radius-lg);
  padding: var(--campussphere-space-5) var(--campussphere-space-6);
  overflow-x: auto;
  white-space: pre-wrap;
  word-break: break-word;
}

/* --- wp:button --- */

.wp-block-button__link {
  font-family: var(--campussphere-font-sans);
  font-weight: var(--campussphere-font-semibold);
  font-size: var(--campussphere-text-sm);
  border-radius: var(--campussphere-btn-radius);
  padding: var(--campussphere-space-3) var(--campussphere-space-6);
  transition: var(--campussphere-transition-property-common) var(--campussphere-transition-base);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.wp-block-button.is-style-fill .wp-block-button__link {
  background: var(--campussphere-gradient-primary);
  color: var(--campussphere-color-text-inverse);
  box-shadow: var(--campussphere-shadow-primary-sm);
}

.wp-block-button.is-style-fill .wp-block-button__link:hover {
  transform: translateY(-1px);
  box-shadow: var(--campussphere-shadow-primary-md);
  text-decoration: none;
}

.wp-block-button.is-style-outline .wp-block-button__link {
  background-color: transparent;
  color: var(--campussphere-color-primary-600);
  border: 2px solid var(--campussphere-color-primary-600);
}

.wp-block-button.is-style-outline .wp-block-button__link:hover {
  background-color: var(--campussphere-color-primary-50);
  text-decoration: none;
}

/* --- wp:cover --- */

.wp-block-cover {
  border-radius: var(--campussphere-radius-xl);
  overflow: hidden;
}

.wp-block-cover__inner-container {
  position: relative;
  z-index: 1;
}

/* --- wp:media-text --- */

.wp-block-media-text {
  gap: var(--campussphere-space-10);
}

.wp-block-media-text .wp-block-media-text__media img {
  border-radius: var(--campussphere-radius-xl);
}

/* --- wp:pullquote --- */

.wp-block-pullquote {
  border-top: 4px solid var(--campussphere-color-primary-500);
  border-bottom: 4px solid var(--campussphere-color-primary-500);
  padding-block: var(--campussphere-space-8);
  text-align: center;
}

.wp-block-pullquote blockquote p {
  font-size: var(--campussphere-text-xl);
  font-weight: var(--campussphere-font-medium);
  font-style: italic;
  color: var(--campussphere-color-neutral-800);
  line-height: var(--campussphere-leading-relaxed);
}

.wp-block-pullquote cite {
  font-size: var(--campussphere-text-sm);
  font-style: normal;
  font-weight: var(--campussphere-font-semibold);
  color: var(--campussphere-color-primary-600);
  text-transform: uppercase;
  letter-spacing: var(--campussphere-tracking-wider);
}

/* --- wp:navigation --- */

.wp-block-navigation a {
  color: var(--campussphere-color-neutral-700);
  font-weight: var(--campussphere-font-medium);
  text-decoration: none;
  transition: color var(--campussphere-transition-base);
}

.wp-block-navigation a:hover {
  color: var(--campussphere-color-primary-600);
  text-decoration: none;
}

.wp-block-navigation-item.current-menu-item > a,
.wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content {
  color: var(--campussphere-color-primary-600);
  font-weight: var(--campussphere-font-semibold);
}

/* ==========================================================================
   PART 7 — Focus Styles (Keyboard Navigation)
   ========================================================================== */

:focus-visible {
  outline: 2px solid var(--campussphere-color-primary-600);
  outline-offset: 2px;
  border-radius: var(--campussphere-radius-sm);
}

/* Remove default focus ring for mouse users */
:focus:not(:focus-visible) {
  outline: none;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--campussphere-color-primary-600);
  outline-offset: 2px;
}

.wp-block-button__link:focus-visible {
  outline: 2px solid var(--campussphere-color-primary-600);
  outline-offset: 2px;
}

.btn:focus-visible {
  outline: 2px solid var(--campussphere-color-primary-600);
  outline-offset: 2px;
}

/* Skip to content link */
.skip-link {
  position: absolute;
  top: -100%;
  left: var(--campussphere-space-4);
  z-index: var(--campussphere-z-top);
  padding: var(--campussphere-space-3) var(--campussphere-space-6);
  background-color: var(--campussphere-color-primary-600);
  color: var(--campussphere-color-text-inverse);
  font-weight: var(--campussphere-font-semibold);
  text-decoration: none;
  border-radius: 0 0 var(--campussphere-radius-lg) var(--campussphere-radius-lg);
  transition: top var(--campussphere-transition-base);
}

.skip-link:focus {
  top: 0;
  outline: 2px solid var(--campussphere-color-primary-600);
  outline-offset: 2px;
}

/* ==========================================================================
   PART 8 — Reduced Motion
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0ms !important;
    transition-delay: 0ms !important;
    scroll-behavior: auto !important;
  }

  html {
    scroll-behavior: auto;
  }

  .btn,
  .btn--primary,
  .btn--secondary,
  .btn--ghost {
    transition: none !important;
    transform: none !important;
  }

  .btn--primary:hover,
  .wp-block-button.is-style-fill .wp-block-button__link:hover {
    transform: none !important;
  }

  a {
    transition: none !important;
  }

  .wp-block-table tbody tr {
    transition: none !important;
  }

  .wp-block-navigation a {
    transition: none !important;
  }
}

/* ==========================================================================
   PART 9 — Print Styles
   ========================================================================== */

@media print {
  /* Reset colors for print */
  *,
  *::before,
  *::after {
    background: transparent !important;
    background-image: none !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }

  body {
    font-size: 12pt;
    line-height: 1.5;
    font-family: Georgia, 'Times New Roman', serif;
    color: #000 !important;
    background: #fff !important;
  }

  /* Hide navigation */
  header,
  .wp-block-navigation,
  nav,
  .site-header,
  .header-area,
  [class*="navigation"],
  [class*="nav-"],
  .wp-block-template-part[class*="header"] {
    display: none !important;
  }

  /* Hide footer */
  footer,
  .site-footer,
  .footer-area,
  .wp-block-template-part[class*="footer"] {
    display: none !important;
  }

  /* Hide CTAs, buttons, and interactive elements */
  .btn,
  button,
  .wp-block-button,
  .wp-block-buttons,
  [class*="cta"],
  [class*="-cta"],
  [class*="hero-actions"],
  [class*="banner"],
  .cookie-banner,
  .popup,
  .modal,
  .overlay,
  .sidebar,
  [class*="sidebar"],
  [aria-label*="advertisement"],
  [class*="ad-"],
  [id*="ad-"] {
    display: none !important;
  }

  /* Ensure main content prints cleanly */
  main,
  article,
  .entry-content,
  .wp-block-post-content {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    float: none !important;
  }

  /* Headings */
  h1 {
    font-size: 24pt;
    page-break-after: avoid;
    page-break-inside: avoid;
  }

  h2 {
    font-size: 20pt;
    page-break-after: avoid;
    page-break-inside: avoid;
  }

  h3 {
    font-size: 16pt;
    page-break-after: avoid;
    page-break-inside: avoid;
  }

  h4, h5, h6 {
    font-size: 14pt;
    page-break-after: avoid;
    page-break-inside: avoid;
  }

  /* Links: show URL after link text */
  a[href]::after {
    content: ' (' attr(href) ')';
    font-size: 10pt;
    color: #555 !important;
    word-break: break-all;
  }

  a[href^="#"]::after,
  a[href^="javascript:"]::after {
    content: '';
  }

  /* Images */
  img {
    max-width: 100% !important;
    page-break-inside: avoid;
  }

  /* Tables */
  table {
    border-collapse: collapse !important;
    width: 100% !important;
  }

  table td,
  table th {
    border: 1px solid #999 !important;
    padding: 4pt 8pt !important;
    background: transparent !important;
    color: #000 !important;
  }

  table thead th {
    background: #eee !important;
    color: #000 !important;
    font-weight: bold !important;
  }

  /* Avoid breaking inside key elements */
  blockquote,
  pre,
  figure,
  ul,
  ol {
    page-break-inside: avoid;
  }

  p {
    orphans: 3;
    widows: 3;
  }

  /* Page setup */
  @page {
    margin: 2cm;
  }

  @page :first {
    margin-top: 3cm;
  }
}
