/*!
 * Communityline Portal - education hub sign-in pages (/org/{cgc|pctaci|ebet}/login).
 * Split screen (video story panel + member sign-in) followed by the hub's story.
 * One stylesheet, three themes: .hub--cgc, .hub--pctaci, .hub--ebet.
 * View: resources/views/auth/organization-login-hub.blade.php
 */

/* ---------- Themes ---------- */
.hub--cgc {
    --hub-night: #0b1446;
    --hub-overlay: 11, 20, 70;
    --hub-deep: #16215e;
    --hub-primary: #1f4fa8;
    --hub-primary-rgb: 31, 79, 168;
    --hub-accent: #e6a82a;
    --hub-accent-rgb: 230, 168, 42;
    --hub-highlight: #f7c65a;
    --hub-badge-bg: #e6a82a;
    --hub-badge-ink: #16215e;
    --hub-on-dark: #dbe4ff;
    --hub-on-dark-soft: #b3c3ec;
    --hub-ink: #111a3f;
    --hub-muted: #56617f;
    --hub-line: #dde4f2;
    --hub-soft: #f4f7fd;
    --hub-tint: #e8effb;
    --hub-accent-soft: #fff5de;
    --hub-s1: #e6a82a; --hub-s2: #3a6fd8; --hub-s3: #ffffff; --hub-s4: #16215e;
}
.hub--pctaci {
    --hub-night: #1f080b;
    --hub-overlay: 38, 8, 12;
    --hub-deep: #9f1219;
    --hub-primary: #d61f26;
    --hub-primary-rgb: 214, 31, 38;
    --hub-accent: #ffc72c;
    --hub-accent-rgb: 255, 199, 44;
    --hub-highlight: #ffd34f;
    --hub-badge-bg: #ffc72c;
    --hub-badge-ink: #7a0d12;
    --hub-on-dark: #ffe6e2;
    --hub-on-dark-soft: #f1bdb6;
    --hub-ink: #2a0d10;
    --hub-muted: #6d5557;
    --hub-line: #f1dfdd;
    --hub-soft: #fdf6f5;
    --hub-tint: #fdeae9;
    --hub-accent-soft: #fff6da;
    --hub-s1: #e11d25; --hub-s2: #ffc72c; --hub-s3: #1d4fa0; --hub-s4: #16a34a;
}
.hub--ebet {
    --hub-night: #03122f;
    --hub-overlay: 3, 18, 52;
    --hub-deep: #002060;
    --hub-primary: #0d47b8;
    --hub-primary-rgb: 13, 71, 184;
    --hub-accent: #00b050;
    --hub-accent-rgb: 0, 176, 80;
    --hub-highlight: #ffe34d;
    --hub-badge-bg: #0a9a48;
    --hub-badge-ink: #ffffff;
    --hub-on-dark: #dbe6ff;
    --hub-on-dark-soft: #a9bce6;
    --hub-ink: #0a1b3f;
    --hub-muted: #52607c;
    --hub-line: #dbe3f0;
    --hub-soft: #f3f7fc;
    --hub-tint: #e4f6ec;
    --hub-accent-soft: #e4f6ec;
    --hub-s1: #00b050; --hub-s2: #f8f400; --hub-s3: #3f6fd8; --hub-s4: #ffffff;
}

/* ---------- Base ---------- */
:root { color-scheme: light; }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body.hub { margin: 0; font-family: Inter, system-ui, -apple-system, "Segoe UI", sans-serif; color: var(--hub-ink); background: #fff; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
/* Zero-specificity base rules, so every component class below wins over them. */
:where(.hub) :where(button, input) { font: inherit; }
:where(.hub) a { color: var(--hub-deep); text-underline-offset: 4px; }
:where(.hub) :where(button, a, input) { touch-action: manipulation; }
:where(.hub) :focus-visible { outline: 3px solid var(--hub-primary); outline-offset: 3px; }
.hub [hidden] { display: none !important; }
:where(.hub) :where(img, video) { display: block; max-width: 100%; }
:where(.hub) :where(h1, h2, h3) { text-wrap: balance; }
:where(.hub) svg { flex: none; }
.hub-skip { position: fixed; top: 12px; left: 12px; z-index: 20; padding: 12px 14px; border-radius: 8px; background: #fff; color: var(--hub-deep); font-weight: 600; transform: translateY(-160%); transition: transform .15s; }
.hub-skip:focus { transform: none; }

/* ---------- Entry: story panel + sign-in ---------- */
.hub-entry { display: grid; grid-template-columns: minmax(0, 1.12fr) minmax(420px, 1fr); min-height: 100dvh; padding: 16px; gap: 16px; }

.hub-story { position: relative; display: flex; flex-direction: column; gap: 30px; min-height: calc(100dvh - 32px); overflow: hidden; padding: clamp(28px, 4vw, 56px); border-radius: 26px; color: #fff; background: var(--hub-night); isolation: isolate; }
.hub-story__media { position: absolute; inset: 0; z-index: -2; background: var(--hub-night); }
.hub-story__media img, .hub-story__media video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hub-story::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
    background:
        linear-gradient(180deg, rgba(var(--hub-overlay), .80) 0%, rgba(var(--hub-overlay), .28) 32%, rgba(var(--hub-overlay), .46) 56%, rgba(var(--hub-overlay), .96) 100%),
        linear-gradient(90deg, rgba(var(--hub-overlay), .62), rgba(var(--hub-overlay), 0) 72%); }
.hub-stripe { position: absolute; inset: 0 0 auto; z-index: 1; display: flex; height: 5px; }
.hub-stripe i { flex: 1; }
.hub-stripe i:nth-child(1) { flex: 2.2; background: var(--hub-s1); }
.hub-stripe i:nth-child(2) { background: var(--hub-s2); }
.hub-stripe i:nth-child(3) { background: var(--hub-s3); }
.hub-stripe i:nth-child(4) { background: var(--hub-s4); }

.hub-brand { display: flex; align-items: center; gap: 16px; }
.hub-brand__badge { display: grid; place-items: center; flex: none; min-width: 72px; height: 72px; padding: 8px 12px; border-radius: 18px; background: #fff; box-shadow: 0 10px 30px rgba(0, 0, 0, .28), inset 0 0 0 1px rgba(255, 255, 255, .6); }
.hub-brand__badge img { width: auto; height: 56px; max-width: 110px; object-fit: contain; }
.hub-brand__kicker { display: block; font-size: 12px; font-weight: 750; letter-spacing: .22em; text-transform: uppercase; color: var(--hub-on-dark-soft); }
.hub-brand h1 { margin: 3px 0 0; font-size: clamp(21px, 1.9vw, 27px); font-weight: 720; line-height: 1.15; letter-spacing: -.02em; color: #fff; }
.hub-brand p { margin: 4px 0 0; font-size: 12.5px; line-height: 1.4; color: var(--hub-on-dark-soft); }

.hub-story__copy { margin-top: auto; max-width: 600px; }
.hub-eyebrow { margin: 0 0 16px; font-size: 11.5px; font-weight: 750; letter-spacing: .18em; text-transform: uppercase; }
.hub-story .hub-eyebrow { display: inline-flex; align-items: center; gap: 10px; color: var(--hub-highlight); }
.hub-story .hub-eyebrow::before { content: ""; width: 26px; height: 3px; border-radius: 3px; background: var(--hub-accent); }
.hub-story h2 { margin: 0; font-size: clamp(36px, 4vw, 62px); font-weight: 720; line-height: 1.04; letter-spacing: -.045em; text-shadow: 0 2px 24px rgba(0, 0, 0, .18); }
.hub-story h2 em { font-style: normal; font-weight: 640; color: var(--hub-highlight); }
.hub-story__copy > p:last-child { max-width: 450px; margin: 20px 0 0; font-size: 15.5px; line-height: 1.75; color: var(--hub-on-dark); }

.hub-tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 0; padding: 0; list-style: none; }
.hub-tiles li { position: relative; overflow: hidden; aspect-ratio: 4 / 3.3; border: 1px solid rgba(255, 255, 255, .22); border-radius: 14px; background: rgba(255, 255, 255, .08); }
.hub-tiles img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s cubic-bezier(.2, .7, .2, 1); }
.hub-tiles li::after { content: ""; position: absolute; inset: 38% 0 0; background: linear-gradient(180deg, transparent, rgba(var(--hub-overlay), .92)); }
.hub-tiles li:hover img { transform: scale(1.07); }
.hub-tiles span { position: absolute; left: 9px; right: 9px; bottom: 9px; z-index: 1; display: flex; align-items: center; gap: 7px; color: #fff; font-size: 12px; font-weight: 650; line-height: 1.25; }
.hub-tiles i { display: grid; place-items: center; flex: none; width: 24px; height: 24px; border-radius: 7px; background: var(--hub-badge-bg); color: var(--hub-badge-ink); }
.hub-tiles svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

.hub-story__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-top: -12px; }
.hub-place { display: flex; align-items: center; gap: 7px; margin: 0; color: var(--hub-on-dark-soft); font-size: 12.5px; }
.hub-place svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.hub-motion { display: inline-flex; align-items: center; gap: 8px; min-height: 36px; padding: 0 14px; border: 1px solid rgba(255, 255, 255, .28); border-radius: 999px; background: rgba(255, 255, 255, .1); color: #fff; font-size: 12px; font-weight: 600; cursor: pointer; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); transition: background .15s; }
.hub-motion:hover { background: rgba(255, 255, 255, .2); }
.hub-motion svg { width: 12px; height: 12px; fill: currentColor; }
.hub-motion .i-play, .hub-motion[aria-pressed="true"] .i-pause { display: none; }
.hub-motion[aria-pressed="true"] .i-play { display: block; }

/* Access panel */
.hub-access { display: flex; flex-direction: column; padding: 18px clamp(24px, 4vw, 64px) 14px; }
.hub-platform { align-self: flex-end; display: flex; align-items: center; gap: 8px; min-height: 44px; color: var(--hub-muted); font-size: 13px; font-weight: 600; text-decoration: none; }
.hub-platform:hover { color: var(--hub-deep); }
.hub-form-wrap { width: 100%; max-width: 420px; margin: auto; padding: 24px 0; }
.hub-form-wrap:focus { outline: none; }
.hub-form-mark { width: auto; height: 64px; max-width: 150px; margin-bottom: 22px; object-fit: contain; }
.hub-form-wrap > .hub-eyebrow { display: inline-flex; align-items: center; gap: 8px; margin-bottom: 10px; color: var(--hub-deep); }
.hub-form-wrap > .hub-eyebrow::before { content: ""; width: 18px; height: 3px; border-radius: 3px; background: var(--hub-accent); }
.hub-form-wrap h2 { margin: 0 0 8px; font-size: 38px; font-weight: 720; line-height: 1.1; letter-spacing: -.035em; }
.hub-intro { margin: 0 0 28px; color: var(--hub-muted); font-size: 15px; }
.hub-field { margin-bottom: 18px; }
.hub-field label { display: block; margin-bottom: 8px; font-size: 13px; font-weight: 650; }
.hub-field input { width: 100%; height: 52px; padding: 0 16px; border: 1px solid color-mix(in srgb, var(--hub-line) 70%, var(--hub-muted)); border-radius: 12px; background: var(--hub-soft); color: var(--hub-ink); font-size: 16px; transition: border-color .15s, box-shadow .15s, background .15s; }
.hub-field input::placeholder { color: #7d8698; font-size: 14.5px; }
.hub-field input:focus { border-color: var(--hub-primary); background: #fff; box-shadow: 0 0 0 4px rgba(var(--hub-primary-rgb), .14); outline: none; }
.hub-field input[aria-invalid] { border-color: #bd3434; }
.hub-password { position: relative; }
.hub-password input { padding-right: 76px; }
.hub-password button { position: absolute; right: 6px; top: 6px; height: 40px; padding: 0 14px; border: 0; border-radius: 9px; background: transparent; color: var(--hub-deep); font-size: 13px; font-weight: 650; cursor: pointer; }
.hub-password button:hover { background: var(--hub-tint); }
.hub-options { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin: 4px 0 24px; font-size: 13.5px; }
.hub-options label { display: inline-flex; align-items: center; gap: 8px; color: var(--hub-muted); }
.hub-options input { width: 17px; height: 17px; accent-color: var(--hub-primary); }
.hub-options a { font-weight: 600; text-decoration: none; }
.hub-submit { display: flex; align-items: center; justify-content: space-between; width: 100%; height: 54px; padding: 0 20px; border: 0; border-radius: 14px; background: linear-gradient(135deg, var(--hub-primary), var(--hub-deep)); color: #fff; font-size: 15.5px; font-weight: 650; cursor: pointer; box-shadow: 0 12px 28px rgba(var(--hub-primary-rgb), .28); transition: transform .15s, box-shadow .15s; }
.hub-submit:hover { transform: translateY(-1px); box-shadow: 0 16px 34px rgba(var(--hub-primary-rgb), .34); }
.hub-notice { margin-bottom: 18px; padding: 12px 14px; border-radius: 12px; background: #e9f7ef; color: #1e6b3c; font-size: 14px; }
.hub-error { margin-bottom: 18px; padding: 12px 14px; border: 1px solid #f1c7c7; border-radius: 12px; background: #fdf2f2; color: #8f2424; font-size: 14px; }
.hub-error p { margin: 4px 0 0; }
.hub-help { margin-top: 26px; padding: 16px 18px; border-left: 3px solid var(--hub-accent); border-radius: 14px; background: var(--hub-accent-soft); font-size: 13.5px; }
.hub-help strong { display: block; font-size: 14px; }
.hub-help p { margin: 4px 0 8px; color: var(--hub-muted); line-height: 1.6; }
.hub-help a { font-weight: 600; text-decoration: none; }
.hub-other { margin: 20px 0 0; color: var(--hub-muted); font-size: 13.5px; line-height: 1.7; }
.hub-other a { font-weight: 600; }
/* Sign-up form (/org/{slug}/register) */
.hub-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 14px; }
.hub-optional { color: var(--hub-muted); font-weight: 500; }
.hub-hint { margin: 7px 0 0; color: var(--hub-muted); font-size: 12.5px; line-height: 1.5; }
.hub-consent { display: grid; gap: 12px; margin: 6px 0 24px; font-size: 13.5px; line-height: 1.55; color: var(--hub-muted); }
.hub-consent label { display: flex; align-items: flex-start; gap: 10px; }
.hub-consent input { flex: none; width: 17px; height: 17px; margin-top: 2px; accent-color: var(--hub-primary); }
.hub-consent a { font-weight: 600; }
.hub-trap { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
@media (max-width: 420px) { .hub-row { grid-template-columns: minmax(0, 1fr); } }
.hub-scroll { align-self: center; display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px; border: 1px solid var(--hub-line); border-radius: 999px; color: var(--hub-deep); font-size: 13px; font-weight: 650; text-decoration: none; transition: border-color .15s, background .15s; }
.hub-scroll:hover { border-color: var(--hub-primary); background: var(--hub-soft); }
.hub-scroll span { display: inline-block; animation: hub-nudge 2.4s ease-in-out infinite; }

/* ---------- Sections ---------- */
.hub-wrap { width: 100%; max-width: 1200px; margin: 0 auto; padding-inline: clamp(20px, 5vw, 40px); }
.hub-kicker { display: inline-flex; align-items: center; gap: 10px; margin: 0 0 14px; font-size: 12px; font-weight: 750; letter-spacing: .18em; text-transform: uppercase; color: var(--hub-primary); }
.hub-kicker::before { content: ""; width: 22px; height: 3px; border-radius: 3px; background: var(--hub-accent); }
.hub-head { max-width: 720px; margin-bottom: clamp(28px, 4vw, 44px); }
.hub-head h2, .hub-about h2, .hub-cta h2 { margin: 0; font-size: clamp(30px, 3.6vw, 48px); font-weight: 720; line-height: 1.08; letter-spacing: -.04em; }
.hub-offers, .hub-programs, .hub-steps { padding-block: clamp(64px, 9vw, 112px); }

.hub-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 52px; padding: 0 22px; border: 1px solid transparent; border-radius: 14px; background: linear-gradient(135deg, var(--hub-primary), var(--hub-deep)); color: #fff; font-size: 15px; font-weight: 650; text-decoration: none; box-shadow: 0 12px 26px rgba(var(--hub-primary-rgb), .22); transition: transform .15s, box-shadow .15s, background .15s; }
.hub-btn:hover { transform: translateY(-1px); box-shadow: 0 16px 32px rgba(var(--hub-primary-rgb), .3); }
.hub-btn--ghost { background: #fff; border-color: var(--hub-line); color: var(--hub-deep); box-shadow: none; }
.hub-btn--ghost:hover { border-color: var(--hub-primary); box-shadow: none; }
.hub-btn--light { background: #fff; color: var(--hub-deep); box-shadow: 0 12px 26px rgba(0, 0, 0, .2); }
.hub-btn--outline { background: transparent; border-color: rgba(255, 255, 255, .45); color: #fff; box-shadow: none; }
.hub-btn--outline:hover { background: rgba(255, 255, 255, .1); box-shadow: none; }
.hub-actions { display: flex; flex-wrap: wrap; gap: 12px; }

/* About */
.hub-about { position: relative; padding-block: clamp(72px, 10vw, 128px); overflow: hidden; background:
    radial-gradient(900px 480px at 0% 0%, rgba(var(--hub-primary-rgb), .07), transparent 70%),
    radial-gradient(700px 420px at 100% 100%, rgba(var(--hub-accent-rgb), .10), transparent 70%); }
.hub-about__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); align-items: center; gap: clamp(40px, 7vw, 96px); }
.hub-about h2 { max-width: 18ch; }
.hub-lead { margin: 18px 0 0; font-size: clamp(18px, 1.6vw, 21px); font-weight: 620; line-height: 1.45; color: var(--hub-deep); }
.hub-summary { max-width: 58ch; margin: 14px 0 0; font-size: 16.5px; line-height: 1.8; color: var(--hub-muted); }
.hub-highlights { display: flex; flex-wrap: wrap; gap: 10px; margin: 26px 0 0; padding: 0; list-style: none; }
.hub-highlights li { display: inline-flex; align-items: center; gap: 8px; padding: 9px 14px 9px 10px; border-radius: 999px; background: var(--hub-tint); color: var(--hub-deep); font-size: 14px; font-weight: 620; }
.hub-highlights svg { width: 18px; height: 18px; fill: none; stroke: var(--hub-primary); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.hub-contact { display: grid; gap: 8px; margin: 22px 0 0; padding: 0; list-style: none; font-size: 15px; color: var(--hub-muted); }
.hub-contact li { display: flex; align-items: center; gap: 10px; }
.hub-contact svg { width: 18px; height: 18px; fill: none; stroke: var(--hub-primary); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.hub-about .hub-actions { margin-top: 30px; }
.hub-about__media { position: relative; justify-self: center; width: min(100%, 440px); aspect-ratio: 4 / 5; margin: 0; }
.hub-about__frame { position: absolute; inset: 0; z-index: 1; overflow: hidden; border-radius: 30px; background: var(--hub-night); box-shadow: 0 40px 80px -30px rgba(var(--hub-overlay), .55), 0 0 0 1px rgba(var(--hub-overlay), .06); }
.hub-about__frame img, .hub-about__frame video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hub-about__frame::after { content: ""; position: absolute; inset: 55% 0 0; background: linear-gradient(180deg, transparent, rgba(var(--hub-overlay), .5)); }
.hub-about__badge { position: absolute; left: -24px; bottom: 30px; z-index: 2; display: grid; place-items: center; min-width: 84px; height: 84px; padding: 12px 16px; border-radius: 22px; background: #fff; box-shadow: 0 18px 40px -12px rgba(var(--hub-overlay), .45); }
.hub-about__badge img { width: auto; height: 56px; max-width: 120px; object-fit: contain; }

/* What the hub offers */
.hub-offers { position: relative; background: var(--hub-soft); border-block: 1px solid var(--hub-line); }
.hub-offer-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 0; padding: 0; list-style: none; }
.hub-offer-grid li { display: flex; align-items: center; gap: 16px; min-height: 92px; padding: 20px 22px; border: 1px solid var(--hub-line); border-radius: 20px; background: #fff; font-size: 16px; font-weight: 650; line-height: 1.35; transition: transform .2s, box-shadow .2s, border-color .2s; }
.hub-offer-grid li:hover { transform: translateY(-3px); border-color: rgba(var(--hub-primary-rgb), .35); box-shadow: 0 18px 36px -18px rgba(var(--hub-primary-rgb), .35); }
.hub-offer-icon { display: grid; place-items: center; flex: none; width: 50px; height: 50px; border-radius: 15px; background: var(--hub-tint); color: var(--hub-primary); }
.hub-offer-icon svg, .hub-program-icon svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* Programs: photo cards (PCTACI) */
.hub-program-cards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; margin: 0; padding: 0; list-style: none; }
.hub-program-cards li { position: relative; overflow: hidden; aspect-ratio: 3 / 4; border-radius: 24px; background: var(--hub-night); isolation: isolate; box-shadow: 0 30px 60px -34px rgba(var(--hub-overlay), .7); }
.hub-program-cards img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.hub-program-cards li::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(var(--hub-overlay), .05) 30%, rgba(var(--hub-overlay), .92) 100%); }
.hub-program-cards li:hover img { transform: scale(1.06); }
.hub-program-cards li > div { position: absolute; inset: auto 0 0; padding: 22px; color: #fff; }
.hub-program-cards h3 { margin: 12px 0 0; font-size: 21px; font-weight: 700; line-height: 1.2; letter-spacing: -.02em; }
.hub-program-icon { display: inline-grid; place-items: center; width: 42px; height: 42px; border-radius: 13px; background: var(--hub-badge-bg); color: var(--hub-badge-ink); vertical-align: middle; }
.hub-program-cards .hub-program-icon svg { width: 22px; height: 22px; stroke-width: 2; }
.hub-badge { display: inline-flex; align-items: center; height: 26px; margin-left: 8px; padding: 0 10px; border-radius: 999px; background: rgba(255, 255, 255, .16); border: 1px solid rgba(255, 255, 255, .35); font-size: 11.5px; font-weight: 750; letter-spacing: .08em; vertical-align: middle; backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }

/* Programs: dark list (EBET) */
.hub-programs--dark { position: relative; overflow: hidden; color: #fff; background: radial-gradient(900px 500px at 100% 0%, rgba(var(--hub-accent-rgb), .16), transparent 65%), linear-gradient(160deg, var(--hub-night), var(--hub-deep)); isolation: isolate; }
.hub-programs--dark .hub-kicker { color: var(--hub-highlight); }
.hub-programs--dark h2 { color: #fff; }
.hub-program-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.hub-program-list li { display: flex; align-items: center; gap: 14px; min-height: 76px; padding: 14px 18px; border: 1px solid rgba(255, 255, 255, .12); border-radius: 18px; background: rgba(255, 255, 255, .05); font-size: 15.5px; font-weight: 600; line-height: 1.4; transition: background .2s, border-color .2s, transform .2s; }
.hub-program-list li:hover { transform: translateY(-2px); background: rgba(255, 255, 255, .09); border-color: rgba(var(--hub-accent-rgb), .55); }
.hub-program-list .hub-program-icon { background: rgba(var(--hub-accent-rgb), .16); color: #6be3a0; }
.hub--cgc .hub-program-list .hub-program-icon, .hub--pctaci .hub-program-list .hub-program-icon { color: var(--hub-highlight); }

/* Programs: pathway (CGC) */
.hub-pathway { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; margin: 0; padding: 0; list-style: none; counter-reset: step; }
.hub-pathway li { overflow: hidden; border: 1px solid var(--hub-line); border-radius: 26px; background: #fff; transition: transform .2s, box-shadow .2s; }
.hub-pathway li:hover { transform: translateY(-4px); box-shadow: 0 26px 50px -30px rgba(var(--hub-overlay), .5); }
.hub-pathway img { width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; }
.hub-pathway li > div { position: relative; padding: 26px 24px 28px; }
.hub-pathway .hub-step-no { position: absolute; top: -26px; right: 22px; display: grid; place-items: center; width: 52px; height: 52px; border-radius: 16px; background: var(--hub-accent); color: var(--hub-deep); font-size: 16px; font-weight: 800; box-shadow: 0 12px 24px -10px rgba(var(--hub-accent-rgb), .9); }
.hub-pathway h3 { display: flex; align-items: center; gap: 12px; margin: 0; font-size: 22px; font-weight: 720; letter-spacing: -.02em; }
.hub-pathway h3 .hub-program-icon { background: var(--hub-tint); color: var(--hub-primary); }
.hub-pathway p { margin: 12px 0 0; font-size: 15.5px; line-height: 1.7; color: var(--hub-muted); }

/* Getting started */
.hub-steps { background: #fff; }
.hub-step-list { position: relative; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; margin: 0; padding: 0; list-style: none; }
.hub-step-list::before { content: ""; position: absolute; top: 27px; left: 10%; right: 10%; height: 2px; background: repeating-linear-gradient(90deg, var(--hub-line) 0 8px, transparent 8px 14px); }
.hub-step-list li { position: relative; padding: 0 8px; }
.hub-step-list .hub-step-no { position: relative; display: grid; place-items: center; width: 56px; height: 56px; border-radius: 18px; background: linear-gradient(135deg, var(--hub-primary), var(--hub-deep)); color: #fff; font-size: 16px; font-weight: 800; box-shadow: 0 14px 28px -12px rgba(var(--hub-primary-rgb), .8); }
.hub-step-list h3 { margin: 20px 0 0; font-size: 20px; font-weight: 700; letter-spacing: -.02em; }
.hub-step-list p { margin: 8px 0 0; max-width: 34ch; font-size: 15.5px; line-height: 1.7; color: var(--hub-muted); }

/* Call to action */
.hub-cta { padding: 0 0 clamp(56px, 8vw, 96px); }
.hub-cta__inner { position: relative; overflow: hidden; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 28px; padding: clamp(32px, 5vw, 60px); border-radius: 30px; color: #fff; background: radial-gradient(700px 360px at 100% 0%, rgba(var(--hub-accent-rgb), .22), transparent 70%), linear-gradient(135deg, var(--hub-night), var(--hub-deep)); isolation: isolate; }
.hub-cta__inner .hub-kicker { color: var(--hub-highlight); }
.hub-cta h2 { color: #fff; max-width: 16ch; }

/* Footer */
.hub-footer { border-top: 1px solid var(--hub-line); background: var(--hub-soft); }
.hub-footer__inner { display: grid; grid-template-columns: minmax(0, 1.2fr) auto; gap: 18px 32px; align-items: center; padding-block: 32px; }
.hub-footer__brand { display: flex; align-items: center; gap: 14px; }
.hub-footer__brand img { width: auto; height: 44px; max-width: 90px; object-fit: contain; }
.hub-footer__brand strong { display: block; font-size: 15px; }
.hub-footer__brand span { display: block; margin-top: 2px; color: var(--hub-muted); font-size: 13px; }
.hub-footer__hubs { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; font-size: 13.5px; }
.hub-footer__hubs span { color: var(--hub-muted); }
.hub-footer__hubs a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px; border: 1px solid var(--hub-line); border-radius: 999px; background: #fff; font-weight: 650; text-decoration: none; }
.hub-footer__hubs a:hover { border-color: var(--hub-primary); }
.hub-footer__meta { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px 20px; padding-top: 18px; border-top: 1px solid var(--hub-line); color: var(--hub-muted); font-size: 12.5px; }
.hub-footer__meta a { color: var(--hub-muted); }

/* ---------- Motifs (see partials/hub-motif) ---------- */
.hub-motif { position: absolute; pointer-events: none; overflow: visible; }
.hub-motif * { fill: none; vector-effect: non-scaling-stroke; }
.hub-motif .m-dot { fill: var(--hub-accent); }
.hub-motif .m-grid circle { fill: currentColor; }
.hub-motif .m-accent { stroke: var(--hub-accent); stroke-width: 3; stroke-linecap: round; }
.hub-motif .m-yellow { stroke: var(--hub-highlight); stroke-width: 3; }
.hub-motif .m-dots { stroke-width: 2.5; stroke-dasharray: 1 11; stroke-linecap: round; }
.hub-motif .m-spin, .hub-motif .m-spin-rev { transform-box: fill-box; transform-origin: center; animation: hub-spin 80s linear infinite; }
.hub-motif .m-spin-rev { animation-duration: 36s; animation-direction: reverse; }
.hub-motif .m-float { transform-box: fill-box; transform-origin: center; animation: hub-float 9s ease-in-out infinite alternate; }

.hub-motif--story { z-index: -1; top: -80px; right: -120px; width: min(470px, 70%); color: #fff; opacity: .6; }
.hub-motif--story .m-globe *, .hub-motif--story .m-line, .hub-motif--story .m-dots { stroke: rgba(255, 255, 255, .42); }
.hub-motif--story .m-globe * { stroke: rgba(255, 255, 255, .2); stroke-width: 1.5; }
.hub-motif--story .m-line { stroke-width: 2; }
.hub-motif--story .m-grid { color: rgba(255, 255, 255, .4); }
.hub--pctaci .hub-motif--story { right: -150px; }
.hub--ebet .hub-motif--story { top: 150px; right: -48px; width: min(300px, 42%); opacity: .5; }

.hub-motif--frame { z-index: 0; top: -14%; left: -24%; width: 148%; color: var(--hub-primary); opacity: .9; }
.hub-motif--frame .m-globe *, .hub-motif--frame .m-line, .hub-motif--frame .m-dots { stroke: rgba(var(--hub-primary-rgb), .32); }
.hub-motif--frame .m-globe * { stroke: rgba(var(--hub-primary-rgb), .12); stroke-width: 1.5; }
.hub-motif--frame .m-line { stroke-width: 2; }
.hub-motif--frame .m-grid { color: rgba(var(--hub-primary-rgb), .35); }
.hub--pctaci .hub-motif--frame { top: -18%; left: -30%; width: 160%; }
.hub--ebet .hub-motif--frame { top: -26%; left: -30%; width: 160%; }
.hub--ebet .hub-motif--frame .m-yellow { stroke: #e0c400; }

.hub-motif--band { z-index: -1; top: -40%; right: -8%; width: min(560px, 70%); color: #fff; opacity: .28; }
.hub-motif--band .m-globe *, .hub-motif--band .m-line, .hub-motif--band .m-dots { stroke: rgba(255, 255, 255, .6); }
.hub-motif--band .m-grid { color: rgba(255, 255, 255, .6); }
.hub-cta .hub-motif--band { top: -60%; right: -6%; width: min(460px, 60%); opacity: .35; }

/* "Pause motion" (clp-hub-portal.js) freezes the line graphics too. */
.hub-still .hub-motif .m-spin, .hub-still .hub-motif .m-spin-rev, .hub-still .hub-motif .m-float, .hub-still .hub-scroll span { animation-play-state: paused; }

/* ---------- Reveal on scroll (only once JS is running) ---------- */
.hub-js [data-reveal] { opacity: 0; transform: translateY(22px); transition: opacity .8s cubic-bezier(.2, .7, .2, 1), transform .8s cubic-bezier(.2, .7, .2, 1); transition-delay: calc(var(--i, 0) * 70ms); }
.hub-js [data-reveal].is-visible { opacity: 1; transform: none; }

@keyframes hub-spin { to { transform: rotate(360deg); } }
@keyframes hub-float { from { transform: translateY(-8px); } to { transform: translateY(10px); } }
@keyframes hub-nudge { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(3px); } }

/* ---------- Responsive ---------- */
@media (max-width: 1280px) and (min-width: 961px) {
    .hub-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .hub-tiles li { aspect-ratio: 16 / 9; }
    .hub-story { gap: 24px; }
    .hub-program-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .hub-program-cards li { aspect-ratio: 4 / 3; }
}
@media (max-width: 960px) {
    .hub-entry { grid-template-columns: minmax(0, 1fr); padding: 10px; gap: 10px; }
    .hub-access { order: -1; padding-inline: clamp(18px, 5vw, 40px); }
    .hub-platform { align-self: flex-start; }
    .hub-form-wrap { padding-top: 8px; }
    .hub-story { min-height: 0; border-radius: 22px; }
    .hub-story__copy { margin-top: 24px; }
    .hub-about__grid { grid-template-columns: minmax(0, 1fr); }
    .hub-about__media { width: min(100%, 400px); margin-top: 12px; }
    .hub-about__badge { left: -10px; }
    .hub-offer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .hub-program-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .hub-program-cards li { aspect-ratio: 4 / 3.4; }
    .hub-pathway { grid-template-columns: minmax(0, 1fr); max-width: 560px; }
    .hub-step-list { grid-template-columns: minmax(0, 1fr); gap: 28px; }
    .hub-step-list::before { top: 10px; bottom: 10px; left: 27px; right: auto; width: 2px; height: auto; background: repeating-linear-gradient(180deg, var(--hub-line) 0 8px, transparent 8px 14px); }
    .hub-step-list li { display: grid; grid-template-columns: 56px minmax(0, 1fr); grid-template-rows: auto 1fr; column-gap: 18px; padding: 0; }
    .hub-step-list .hub-step-no { grid-row: span 2; }
    .hub-step-list h3 { margin-top: 4px; }
    .hub-step-list p { grid-column: 2; margin-top: 6px; }
    .hub-footer__inner { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 560px) {
    .hub-story { gap: 22px; padding: 22px; }
    .hub-brand__badge { min-width: 60px; height: 60px; padding: 6px 10px; border-radius: 15px; }
    .hub-brand__badge img { height: 46px; }
    .hub-story h2 { font-size: 34px; }
    .hub-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .hub-tiles li { aspect-ratio: 16 / 10; }
    .hub-form-wrap h2 { font-size: 31px; }
    .hub-offer-grid { grid-template-columns: minmax(0, 1fr); }
    .hub-offer-grid li { min-height: 76px; padding: 16px 18px; }
    .hub-program-cards { grid-template-columns: minmax(0, 1fr); }
    .hub-program-cards li { aspect-ratio: 16 / 11; }
    .hub-cta__inner { border-radius: 24px; }
    .hub-actions .hub-btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .hub-story__media video, .hub-about__frame video { display: none; }
    .hub-motif .m-spin, .hub-motif .m-spin-rev, .hub-motif .m-float, .hub-scroll span { animation: none; }
    .hub-tiles img, .hub-program-cards img, .hub-submit, .hub-btn, .hub-offer-grid li, .hub-pathway li, .hub-program-list li { transition: none; }
    .hub-js [data-reveal] { opacity: 1; transform: none; transition: none; }
}
