/* =====================================================================
   Community Management (Divi child) — ported content design layer.

   Everything the pre-Divi block theme expressed at template level is
   recreated here against Divi's classic page structure, so every existing
   page (homepage aurora hero, About + team, Gallery + lightbox, plain
   text pages) and every Alumni Management plugin shortcode renders
   polished the moment the theme switches. Layout/responsive utilities
   come from the compiled Tailwind file (enqueued before this one);
   this file holds what Tailwind can't express.
   ===================================================================== */

:root{
	--cm-bg:#FAFBFD; --cm-surface:#FFFFFF; --cm-ink:#0E1116; --cm-slate:#5B6472;
	--cm-line:#E9ECF3; --cm-blue:#2563EB; --cm-braid:#1D4ED8; --cm-sky:#3B82F6;
	--cm-green:#10B981; --cm-red:#F43F5E;
	/* CUET association palette (mirrors the Divi global colors) */
	--cuet-green:#046A38; --cuet-green-deep:#04502B; --cuet-blue:#1D4ED8;
	--cuet-gold:#F5B301; --cuet-gold-soft:#FFC845;
	--cm-radius:20px; --cm-radius-sm:12px;
	--cm-shadow-soft:0 1px 2px rgba(14,17,22,.04),0 6px 20px rgba(14,17,22,.06);
	--cm-shadow-lift:0 16px 44px rgba(37,99,235,.16),0 4px 12px rgba(14,17,22,.06);
	--cm-ease:cubic-bezier(.22,.61,.28,1);
	/* Block-editor spacing preset still referenced by a stored spacer on the
	   Gallery page — the old theme.json defined it; supplied here instead. */
	--wp--preset--spacing--50:clamp(2.5rem, 5vw, 4rem);
}

body{background:var(--cm-bg);color:var(--cm-ink);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{letter-spacing:-.02em}

/* Sticky footer: pages with little content must not leave the credit bar
   floating mid-screen — main area grows, footer pins to the bottom. */
#page-container{display:flex;flex-direction:column;min-height:100vh}

/* Header clearance: Divi hardcodes #page-container's top padding to a fixed
   80px to clear its fixed/absolute header, but that number doesn't follow the
   header's real height (admin bar, logo size, device). header-offset.js
   measures the true header bottom and publishes it as --cm-header-offset; we
   feed it here so the first section (the Latest News ticker) is never
   overlapped. The 80px fallback = Divi's default, so nothing regresses before
   the script runs or if JS is disabled. */
#page-container{padding-top:var(--cm-header-offset,80px) !important}
#et-main-area{flex:1 0 auto;display:flex;flex-direction:column}
#main-content{flex:1 0 auto}
#main-footer{flex-shrink:0}

/* Credit bar: light gold→white gradient (Divi's bottom bar only offers a
   solid color — base color is set in Theme Options, gradient layered here). */
#footer-bottom{background:linear-gradient(96deg,#FDF8E7 0%,#FBF3DC 38%,#F7FAFF 100%)!important;border-top:1px solid #EFE9D2}
#footer-bottom .container{padding-top:14px;padding-bottom:14px}
#footer-info,#footer-info a{color:#5B6472}

/* WordPress's flow layout injects a top-margin on every sibling after the
   first; inside a Tailwind grid/flex that misaligns rows. Grids space with
   `gap`, so strip the injected margins. */
.wp-block-group.grid > *,.wp-block-group.flex > *{margin-block-start:0}

/* =====================================================================
   Divi page chrome for classic (non-builder) PAGES only.
   Single posts are rendered by the Divi Theme Builder "All Posts" template
   (Post Title / Post Content / Comments modules) — no post CSS here.
   These rules remain solely as the fallback for any future page created
   without the builder.
   ===================================================================== */
body.page:not(.et_pb_pagebuilder_layout) #main-content .container{width:100%;max-width:none;padding:0}
body.page:not(.et_pb_pagebuilder_layout) #left-area{width:100%;padding:0;float:none}
body.page:not(.et_pb_pagebuilder_layout) #sidebar{display:none}
body.page:not(.et_pb_pagebuilder_layout) #main-content .container:before{display:none}

/* Gradient title band for classic pages (builder pages carry a native
   band section; the post template carries its own native band). */
body.page:not(.et_pb_pagebuilder_layout) h1.entry-title{
	background:radial-gradient(85% 150% at 8% -15%,rgba(96,165,250,.4),transparent 55%),linear-gradient(112deg,var(--cuet-green-deep) 0%,var(--cuet-green) 26%,#1E40AF 62%,#2563EB 100%);
	border-bottom:4px solid var(--cuet-gold);
	color:#fff;text-align:center;margin:0;
	padding:64px 1.5rem 44px;
	font-size:clamp(2.1rem,5vw,3.2rem);font-weight:700;line-height:1.08;
}
/* The homepage supplies its own aurora hero — no duplicate title. */
body.home h1.entry-title{display:none}

/* Builder pages carry a native gradient title-band section instead; give it
   the same gold keyline as the classic band (homepage hero excluded). */
body.page.et_pb_pagebuilder_layout:not(.home) .et_pb_section:first-of-type{border-bottom:4px solid var(--cuet-gold)}

/* Readable centered column for bare content on plain pages; full-bleed
   groups (pattern-built sections) manage their own width. */
body.page:not(.et_pb_pagebuilder_layout):not(.home) .entry-content > :not(.wp-block-group):not(.alignfull){
	max-width:820px;margin-left:auto;margin-right:auto;padding-left:1.5rem;padding-right:1.5rem;
}
body.page:not(.et_pb_pagebuilder_layout):not(.home) .entry-content{padding:2.5rem 0 5rem}
body.home .entry-content{padding:0}

/* Content rhythm inside the Theme Builder Post Content module (posts +
   events templates) — Divi's wrapper is .et_pb_post_content, not
   .entry-content, so the block spacing above never applies there. */
.et_pb_post_content > * + *{margin-top:1.15rem}
.et_pb_post_content blockquote{margin:1.8rem auto;padding:.35rem 0 .35rem 1.25rem}
.et_pb_post_content .wp-block-columns{margin-top:1.8rem;margin-bottom:1.8rem;gap:2.25rem}
.et_pb_post_content h2{font-size:1.7rem;font-weight:700;margin-top:2.2rem}
.et_pb_post_content h3{font-size:1.3rem;font-weight:600;margin-top:1.8rem}
.entry-content > * + *{margin-top:1.15rem}
.entry-content .wp-block-group{margin-top:0}
.entry-content h2{font-size:1.7rem;font-weight:700;margin:2.2rem auto .8rem}
.entry-content h3{font-size:1.3rem;font-weight:600;margin:1.8rem auto .6rem}
.entry-content a{color:var(--cm-blue);text-decoration:none}
.entry-content p a,.entry-content ul:not(.wp-block-post-template) li a{text-decoration:underline;text-underline-offset:3px}
.entry-content img{border-radius:var(--cm-radius-sm)}

/* Plugin shortcode surfaces get more room than prose. */
.entry-content .alumni-dashboard,.entry-content .alumni-directory,
.entry-content .alumni-events-list,.entry-content .alumni-articles-list{max-width:1160px;margin-left:auto;margin-right:auto;padding-left:1.5rem;padding-right:1.5rem}
.entry-content .alumni-signup{max-width:960px;margin-left:auto;margin-right:auto}

/* =====================================================================
   Divi header: dynamic-link CTA pills (menu items carry cm-link-* /
   alumni-link-* marker classes; the plugin resolves their URLs).
   ===================================================================== */
/* The default boxed 1080px header container can't fit the 12-item menu at
   desktop widths — widen it so nothing wraps onto a second row. */
#main-header > .container{width:96%;max-width:1400px}
#top-menu > li{padding-right:13px}
#top-menu > li > a{font-size:14px;white-space:nowrap}
/* The menu must NEVER wrap to a second line. Below the breakpoint the 12-item
   menu can't fit on one row, so switch to Divi's hamburger there. Breakpoint
   lowered 1280 -> 1120: a 1920 or 1366 laptop panel at 125-150% Windows
   scaling reports ~1100-1280 CSS px, so the old 1280 cutoff wrongly gave those
   "desktop" users the mobile burger. The mid-range block below tightens the
   row just enough to still fit one line down to 1120. */
@media (max-width:1119px){
	#main-header #et-top-navigation nav#top-menu-nav{display:none!important}
	#main-header #et_mobile_nav_menu{display:block!important}
}
@media (min-width:1120px){
	#main-header #et_mobile_nav_menu{display:none!important}
	#top-menu{flex-wrap:nowrap;white-space:nowrap}
}
@media (min-width:1120px) and (max-width:1360px){
	#main-header > .container{width:98%}
	#top-menu > li{padding-right:10px}
	#top-menu > li > a{font-size:13px}
}
/* Dropdown submenus (the "Activities" grouping is the first one the classic
   menu has). Divi's stock submenu styling isn't stacking the items here — the
   li render inline-block and overflow horizontally — so define the dropdown
   explicitly: a vertical white panel that opens under its parent. */
#main-header #top-menu li ul.sub-menu{
	display:block;min-width:220px;padding:.4rem 0;
	background:#fff;border:1px solid var(--cm-line);border-radius:12px;
	box-shadow:0 14px 32px rgba(13,32,54,.14);white-space:nowrap;
}
#main-header #top-menu li ul.sub-menu li{display:block;width:100%;margin:0;padding:0}
#main-header #top-menu li ul.sub-menu li a{
	display:block;padding:.55rem 1.15rem;font-size:14px;line-height:1.3;color:var(--cm-ink);
}
#main-header #top-menu li ul.sub-menu li a:hover{background:var(--cm-bg);color:var(--cm-blue)}
/* Parent dropdown toggle keeps the site's link colour + the little caret Divi adds. */
#main-header #top-menu > li.menu-item-has-children > a{cursor:pointer}
/* Header search icon isn't part of this site's design. */
#et_top_search,#et_search_icon,.et_search_form_container{display:none!important}

#top-menu li.cm-link-signup > a,#top-menu li.alumni-link-signup > a{
	background:linear-gradient(120deg,var(--cuet-gold),var(--cuet-gold-soft));
	color:var(--cm-ink)!important;border-radius:10px;font-weight:700;
	padding:.55rem 1.1rem!important;box-shadow:0 8px 20px -8px rgba(245,179,1,.65);
	transition:filter .2s var(--cm-ease),transform .2s var(--cm-ease);
}
#top-menu li.cm-link-signup > a:hover,#top-menu li.alumni-link-signup > a:hover{filter:brightness(1.05);transform:translateY(-1px);opacity:1}
#top-menu li.cm-link-account > a,#top-menu li.alumni-link-account > a{
	border:1.5px solid #D9DCE6;border-radius:10px;padding:.5rem 1.05rem!important;
}
#top-menu li.cm-link-account > a:hover,#top-menu li.alumni-link-account > a:hover{background:#F4F6FD;border-color:var(--cm-blue);opacity:1}

/* ---- gradient text (About-page hybrid sections still use it) ---- */
.cm-grad{background:linear-gradient(100deg,#2563EB,#3B82F6 60%,#0EA5E9);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}

/* ---- scroll reveal ---- */
.cm-reveal{opacity:0;transform:translateY(24px);transition:opacity .7s var(--cm-ease),transform .7s var(--cm-ease)}
.cm-reveal.in{opacity:1;transform:none}
.cm-d1{transition-delay:.08s}.cm-d2{transition-delay:.16s}
@media(prefers-reduced-motion:reduce){.cm-reveal{opacity:1;transform:none;transition:none}}

/* ---- avatar cluster ---- */
.cm-av{width:30px;height:30px;border-radius:50%;border:2px solid #fff;margin-left:-8px;display:inline-grid;place-items:center;font-size:.7rem;font-weight:600}

/* =====================================================================
   Divi-native homepage components. Page 6 is real Divi sections/rows/
   columns; the pieces below style the content INSIDE its modules:
   anchor buttons emitted by [alumni_page_link], the card component, and
   equal-height columns.
   ===================================================================== */
.cm-btn-row{display:flex;gap:.9rem;justify-content:center;flex-wrap:wrap}
a.cm-btn{display:inline-block;background:var(--cm-blue);color:#fff!important;border-radius:12px;padding:.9rem 1.8rem;font-weight:600;font-size:.95rem;text-decoration:none!important;transition:transform .18s var(--cm-ease),box-shadow .25s var(--cm-ease),background .2s}
a.cm-btn:hover{background:#1D4ED8;transform:translateY(-2px);box-shadow:var(--cm-shadow-lift)}
a.cm-btn--outline{background:transparent;color:var(--cm-braid)!important;border:1.5px solid #C7D2FE}
a.cm-btn--outline:hover{background:#EEF2FF;box-shadow:none}
a.cm-btn--invert{background:#fff;color:var(--cm-braid)!important}
a.cm-btn--invert:hover{background:#fff}
a.cm-btn--ghost{background:transparent;border:1px solid rgba(255,255,255,.45);color:#fff!important}
a.cm-btn--ghost:hover{background:rgba(255,255,255,.12);box-shadow:none}
a.cm-textlink-a{display:inline-block;color:var(--cm-blue)!important;font-size:.85rem;font-weight:600;text-decoration:none!important}
a.cm-textlink-a:hover{text-decoration:underline!important;text-underline-offset:3px}

.cm-divi-card{background:var(--cm-surface);border:1px solid var(--cm-line);border-radius:20px;padding:2rem;box-shadow:var(--cm-shadow-soft);height:100%;display:flex;flex-direction:column;align-items:flex-start;text-align:left;transition:transform .3s var(--cm-ease),box-shadow .3s var(--cm-ease),border-color .3s}
.cm-divi-card:hover{transform:translateY(-6px);box-shadow:var(--cm-shadow-lift);border-color:#DCDEEA}
.cm-divi-card h3{margin:0 0 .5rem}
.cm-divi-card h3 a{color:var(--cm-ink);text-decoration:none}
.cm-divi-card h3 a:hover{color:var(--cm-blue)}
.cm-divi-card > p{margin:0 0 1rem}

/* Divi columns stretch so every card in a row is the same height. */
body.home .et_pb_row{display:flex;flex-wrap:wrap;align-items:stretch}
body.home .et_pb_column{display:flex;flex-direction:column;justify-content:flex-start}
body.home .et_pb_column .et_pb_module:has(.cm-divi-card){flex:1;display:flex;flex-direction:column}
body.home .et_pb_module:has(.cm-divi-card) .et_pb_text_inner{height:100%;display:flex;flex-direction:column}
body.home .et_pb_text_inner > .cm-divi-card{flex:1}

/* Compact landing page (client 2026-08-31): the page carried a lot of empty
   vertical space. The hero forced a ~911px min-height around ~450px of content
   (~460px of dead air), and every content section had 44px top+bottom padding.
   Trim both to a tighter rhythm without crowding the content. */
body.home .et_pb_section_1{min-height:auto!important;padding-top:30px!important;padding-bottom:30px!important}
body.home .et_pb_section_1 > .et_pb_row{margin-top:0!important;margin-bottom:0!important}
body.home .et_pb_section_2,
body.home .et_pb_section_3,
body.home .et_pb_section_4,
body.home .et_pb_section_5{padding-top:24px!important;padding-bottom:24px!important}

/* ---- "Get to know us" 3D gradient icon badges ---- */
.cm-cardicon{width:60px;height:60px;border-radius:17px;display:grid;place-items:center;font-size:1.75rem;line-height:1;margin:0 0 1.1rem;position:relative;overflow:hidden;background:linear-gradient(145deg,var(--ic-a),var(--ic-b));box-shadow:0 12px 22px -8px var(--ic-sh),inset 0 1px 0 rgba(255,255,255,.45);transition:transform .4s var(--cm-ease)}
.cm-cardicon::before{content:"";position:absolute;left:0;right:0;top:0;height:52%;background:linear-gradient(180deg,rgba(255,255,255,.4),rgba(255,255,255,0));pointer-events:none}
.cm-reveal:hover .cm-cardicon{transform:translateY(-4px) rotate(-5deg) scale(1.06)}
.cm-icon-about{--ic-a:#3B82F6;--ic-b:#2563EB;--ic-sh:rgba(37,99,235,.5)}
.cm-icon-events{--ic-a:#FB7185;--ic-b:#F43F5E;--ic-sh:rgba(244,63,94,.45)}
.cm-icon-publications{--ic-a:#34D399;--ic-b:#059669;--ic-sh:rgba(16,185,129,.45)}
.cm-icon-scholarship{--ic-a:#38BDF8;--ic-b:#2563EB;--ic-sh:rgba(14,165,233,.45)}
.cm-icon-gallery{--ic-a:#A78BFA;--ic-b:#6366F1;--ic-sh:rgba(139,92,246,.45)}
.cm-icon-contact{--ic-a:#FBBF24;--ic-b:#F97316;--ic-sh:rgba(245,158,11,.45)}

/* ---- generic cards (homepage / news grids) ---- */
.cm-card{background:var(--cm-surface);border:1px solid var(--cm-line);border-radius:var(--cm-radius);box-shadow:var(--cm-shadow-soft);transition:transform .3s var(--cm-ease),box-shadow .3s var(--cm-ease),border-color .3s;height:100%}
.cm-card:hover{transform:translateY(-6px);box-shadow:var(--cm-shadow-lift);border-color:#DCDEEA}

/* ---- Meet the Team cards ---- */
.cm-team-card{display:flex;flex-direction:column;align-items:center;text-align:center;height:100%;background:var(--cm-surface);border:1px solid var(--cm-line);border-radius:18px;padding:1.1rem;box-shadow:var(--cm-shadow-soft);transition:transform .35s var(--cm-ease),box-shadow .35s var(--cm-ease)}
.cm-team-card:hover{transform:translateY(-5px);box-shadow:var(--cm-shadow-lift)}
.cm-team-photo{width:auto;margin:.3rem auto 1rem}
.cm-team-photo img{width:132px;height:132px;object-fit:cover;border-radius:50%;display:block;box-shadow:0 6px 18px -6px rgba(14,17,22,.25)}
.cm-avatar{width:132px;height:132px;border-radius:50%;margin:.3rem auto 1rem;display:grid;place-items:center;background:linear-gradient(135deg,#2563EB,#0EA5E9);color:#fff;font-weight:700;font-size:2.2rem;box-shadow:0 6px 18px -6px rgba(37,99,235,.4)}
.cm-team-name{font-size:1.02rem;font-weight:700;margin:0 0 .2rem;line-height:1.25}
.cm-team-role{color:var(--cm-blue);font-weight:600;font-size:.85rem;margin:0 0 .4rem}
.cm-team-org{color:var(--cm-slate);font-size:.76rem;line-height:1.4;margin:0 0 .6rem;flex:1}
.cm-team-li{margin:auto 0 0}
.cm-team-li a{display:inline-flex;align-items:center;gap:.25rem;color:var(--cm-blue);font-size:.8rem;font-weight:600;text-decoration:none}
.cm-team-li a:hover{text-decoration:underline}

/* =====================================================================
   Alumni Management plugin surfaces — light, on-brand card treatment.
   ===================================================================== */
.alumni-signup,.alumni-dashboard,.alumni-directory,.alumni-events-list,.alumni-articles-list{--wp--preset--color--accent-1:#2563EB;--wp--preset--color--accent-2:#10B981}

/* Signup tier cards: equal height in the row, action pinned to the bottom. */
.alumni-signup__tiers{align-items:stretch}
.alumni-signup__tier{display:flex;flex-direction:column;height:100%}
.alumni-signup__tier .alumni-signup__join-btn{margin-top:auto}

/* Membership signup form: light card skin, visible inputs, clear focus. */
.alumni-signup--cta{background:var(--cm-surface)!important;color:var(--cm-ink)!important;border:1px solid var(--cm-line);box-shadow:0 12px 44px -14px rgba(14,17,22,.14)!important;border-radius:20px;padding:clamp(1.75rem,4vw,2.75rem)!important}
.alumni-signup--cta :where(p,span,small,legend){color:var(--cm-slate)}
.alumni-signup--cta :where(h1,h2,h3,h4){color:var(--cm-ink)!important;-webkit-text-fill-color:var(--cm-ink)!important;background:none!important}
.alumni-signup--cta label{color:var(--cm-ink)!important;font-weight:500;font-size:.9rem}
.alumni-signup--cta input,.alumni-signup--cta select,.alumni-signup--cta textarea{background:#fff!important;color:var(--cm-ink)!important;border:1.5px solid #D5DAE5!important;border-radius:10px!important;padding:.72rem .9rem!important;font-size:.95rem!important;transition:border-color .18s var(--cm-ease),box-shadow .18s var(--cm-ease)}
.alumni-signup--cta input:focus,.alumni-signup--cta select:focus,.alumni-signup--cta textarea:focus{border-color:var(--cm-blue)!important;box-shadow:0 0 0 3px rgba(37,99,235,.14)!important;outline:none!important}
.alumni-signup--cta input::placeholder{color:#9AA3B2}
.alumni-signup--cta .alumni-signup__join-btn{background:linear-gradient(120deg,#2563EB 0%,#3B82F6 55%,#0EA5E9 100%)!important;color:#fff!important;width:100%;margin-top:1.5rem;padding:.85rem 1.5rem!important;border-radius:10px!important;font-size:1rem!important;font-weight:600!important;box-shadow:0 10px 24px -8px rgba(37,99,235,.5)}

/* in-site login form (wp_login_form rendered inside the account card) */
.alumni-login{max-width:460px}
.alumni-login .login-username,.alumni-login .login-password{display:flex;flex-direction:column}
.alumni-login .login-username label,.alumni-login .login-password label{font-weight:500;font-size:.9rem;margin-bottom:.35rem}
.alumni-login input[type=text],.alumni-login input[type=password]{width:100%}
.alumni-login .login-remember{display:flex;align-items:center;gap:.45rem;font-size:.88rem;color:var(--cm-slate)}
.alumni-login input[type=checkbox]{width:auto!important;padding:0!important;border-width:1.5px!important;border-radius:4px!important;margin:0}
.alumni-login #wp-submit{width:100%;margin-top:.4rem;border:0!important;cursor:pointer;background:linear-gradient(120deg,#2563EB 0%,#3B82F6 55%,#0EA5E9 100%)!important;color:#fff!important;padding:.85rem 1.5rem!important;border-radius:10px!important;font-size:1rem!important;font-weight:600!important;box-shadow:0 10px 24px -8px rgba(37,99,235,.5)}
.alumni-login__alt{font-size:.85rem;margin-top:.6rem;color:var(--cm-slate)}

a:focus-visible,button:focus-visible,.wp-block-button__link:focus-visible{outline:2px solid var(--cm-blue);outline-offset:3px;border-radius:4px}

/* DIVI 5 BETA BUG SHIM (remove when fixed upstream): the Team Member module
   marks its image wrapper `.et-waypoint` (opacity:0, revealed by Divi's
   animation script) even with animation OFF — but the 5.0 beta never
   enqueues that script, so the photo stays invisible forever. Static reveal,
   exactly what animation:off means. */
.et_pb_team_member_image.et-waypoint.et_pb_animation_off{opacity:1}

/* DIVI 5 BETA BUG SHIM #2 (remove when fixed upstream): responsive
   flex-column attrs emit breakpoint classes (et_flex_column_12_24_tablet,
   et_flex_column_24_24_phone) but the beta ships NO CSS for them, so
   multi-column flex rows never stack on smaller screens. Width formulas
   mirror Divi's own desktop rules. */
@media (max-width:980px){
	.et_pb_row:has(> .et_flex_column_12_24_tablet){flex-wrap:wrap}
	.et_flex_column_12_24_tablet{width:calc(50% - var(--horizontal-gap-parent,5.5%)*1/2)!important}
}
@media (max-width:767px){
	.et_flex_column_24_24_phone{width:100%!important}
}

/* =====================================================================
   Client request 2026-08-31: remove the animated homepage background.
   The FX code module injects a fixed particle-network canvas
   (#cmx-canvas-fix) and floating gradient orbs (.cmx-orb); hide both so
   the landing page is static. (For a permanent, zero-JS removal, delete
   the FX Code module in the Divi builder — this rule only hides it.)
   ===================================================================== */
#cmx-canvas-fix,
.cmx-orb {
	display: none !important;
}
