:root {
    --ceupif-primary: #2f5fe7;
    --ceupif-primary-700: #244ac0;
    --ceupif-primary-50: #eef3ff;
    --ceupif-gold: #c9a84c;
    --ceupif-gold-100: #f6efd9;
    --ceupif-ink: #151922;
    --ceupif-text: #343b4a;
    --ceupif-muted: #6f7786;
    --ceupif-bg: #f6f7fa;
    --ceupif-surface: #ffffff;
    --ceupif-border: #e6e9ef;
    --ceupif-success: #1f8a5b;
    --ceupif-danger: #c83c4a;
    --ceupif-radius-sm: 10px;
    --ceupif-radius: 14px;
    --ceupif-radius-lg: 18px;
    --ceupif-shadow-sm: 0 1px 2px rgba(17, 24, 39, 0.04), 0 6px 20px rgba(17, 24, 39, 0.035);
    --ceupif-shadow: 0 12px 34px rgba(17, 24, 39, 0.07);
    --ceupif-content-max: 1480px;
    --ceupif-font: Inter, "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

html {
    scroll-behavior: smooth;
}

body.ceupif-campus {
    background: var(--ceupif-bg);
    color: var(--ceupif-text);
    font-family: var(--ceupif-font);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

body.ceupif-campus a {
    color: var(--ceupif-primary);
    text-underline-offset: 3px;
}

body.ceupif-campus a:hover {
    color: var(--ceupif-primary-700);
}

/* Astra shell */
.ceupif-campus .ast-primary-header-bar,
.ceupif-campus .site-header .ast-builder-grid-row-container-inner {
    background: rgba(255, 255, 255, 0.97);
}

.ceupif-campus .ast-primary-header-bar {
    border-bottom: 1px solid var(--ceupif-border);
}

.ceupif-campus .site-header {
    position: relative;
    z-index: 100;
}

.ceupif-campus .site-header .custom-logo-link img,
.ceupif-campus .site-branding img {
    max-height: 52px;
    width: auto;
    object-fit: contain;
}

.ceupif-campus .main-header-menu > .menu-item > .menu-link {
    color: var(--ceupif-ink);
    font-weight: 600;
    min-height: 70px;
}

.ceupif-campus .main-header-menu > .current-menu-item > .menu-link,
.ceupif-campus .main-header-menu > .menu-item > .menu-link:hover {
    color: var(--ceupif-primary);
}

.ceupif-campus .site-content {
    min-height: calc(100vh - 80px);
}

.ceupif-campus .ast-container,
.ceupif-campus .site-content > .ast-container {
    max-width: var(--ceupif-content-max);
}

/* Shared UI */
.ceupif-card,
.ceupif-campus .widget,
.ceupif-campus article:not(.ast-article-single) {
    background: var(--ceupif-surface);
    border: 1px solid var(--ceupif-border);
    border-radius: var(--ceupif-radius);
    box-shadow: var(--ceupif-shadow-sm);
}

.ceupif-card {
    padding: 22px;
}

.ceupif-eyebrow {
    color: var(--ceupif-gold);
    font-size: 0.76rem;
    font-weight: 800;
    letter-spacing: 0.09em;
    text-transform: uppercase;
}

.ceupif-muted {
    color: var(--ceupif-muted);
}

.ceupif-campus button,
.ceupif-campus input[type="submit"],
.ceupif-campus .button,
.ceupif-campus .ast-button,
.ceupif-campus .wp-element-button {
    border-radius: 10px;
    font-weight: 700;
}

.ceupif-campus .button,
.ceupif-campus .ast-button,
.ceupif-campus .wp-element-button,
.ceupif-campus input[type="submit"] {
    background: var(--ceupif-primary);
    border-color: var(--ceupif-primary);
    color: #fff;
}

.ceupif-campus .button:hover,
.ceupif-campus .ast-button:hover,
.ceupif-campus .wp-element-button:hover,
.ceupif-campus input[type="submit"]:hover {
    background: var(--ceupif-primary-700);
    border-color: var(--ceupif-primary-700);
    color: #fff;
}

.ceupif-campus input[type="text"],
.ceupif-campus input[type="email"],
.ceupif-campus input[type="password"],
.ceupif-campus input[type="search"],
.ceupif-campus input[type="url"],
.ceupif-campus textarea,
.ceupif-campus select {
    background: #fff;
    border: 1px solid var(--ceupif-border);
    border-radius: 10px;
    color: var(--ceupif-ink);
    min-height: 44px;
}

.ceupif-campus input:focus,
.ceupif-campus textarea:focus,
.ceupif-campus select:focus {
    border-color: var(--ceupif-primary);
    box-shadow: 0 0 0 3px rgba(47, 95, 231, 0.11);
    outline: none;
}

/* Dashboard shell helper classes for later CEUPIF Core templates. */
.ceupif-campus-shell {
    display: grid;
    gap: 22px;
    grid-template-columns: minmax(210px, 250px) minmax(0, 1fr) minmax(260px, 320px);
    margin: 26px auto 48px;
    max-width: var(--ceupif-content-max);
    padding: 0 22px;
}

.ceupif-campus-main {
    min-width: 0;
}

.ceupif-campus-sidebar,
.ceupif-campus-aside {
    min-width: 0;
}

.ceupif-campus-hero {
    align-items: center;
    background: linear-gradient(110deg, #334155 0%, #475569 52%, #1f2937 100%);
    border-radius: var(--ceupif-radius-lg);
    color: #fff;
    display: flex;
    justify-content: space-between;
    min-height: 220px;
    overflow: hidden;
    padding: 34px;
    position: relative;
}

.ceupif-campus-hero::after {
    background: radial-gradient(circle at 80% 25%, rgba(201, 168, 76, 0.28), transparent 34%);
    content: "";
    inset: 0;
    pointer-events: none;
    position: absolute;
}

.ceupif-campus-hero > * {
    position: relative;
    z-index: 1;
}

.ceupif-campus-hero h1,
.ceupif-campus-hero h2,
.ceupif-campus-hero p {
    color: #fff;
}

.ceupif-grid-2 {
    display: grid;
    gap: 18px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.ceupif-grid-3 {
    display: grid;
    gap: 18px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ceupif-section-title {
    align-items: center;
    color: var(--ceupif-ink);
    display: flex;
    font-size: 1rem;
    font-weight: 800;
    justify-content: space-between;
    margin: 0 0 16px;
}

/* Accessibility */
.ceupif-campus :focus-visible {
    outline: 3px solid rgba(47, 95, 231, 0.35);
    outline-offset: 2px;
}

@media (max-width: 1180px) {
    .ceupif-campus-shell {
        grid-template-columns: 220px minmax(0, 1fr);
    }

    .ceupif-campus-aside {
        grid-column: 1 / -1;
    }
}

@media (max-width: 820px) {
    .ceupif-campus-shell {
        display: block;
        padding: 0 16px;
    }

    .ceupif-campus-sidebar,
    .ceupif-campus-aside {
        margin-bottom: 18px;
    }

    .ceupif-grid-2,
    .ceupif-grid-3 {
        grid-template-columns: 1fr;
    }

    .ceupif-campus-hero {
        min-height: 180px;
        padding: 24px;
    }
}
