/* ==========================================================
   AFDES CIVIC ACADEMY
   Landing page + interactive module framework
========================================================== */

.academy-page,
.academy-module-page {
    --academy-navy: #0b2437;
    --academy-navy-2: #102f47;
    --academy-blue: #049bce;
    --academy-blue-soft: #e9f7fc;
    --academy-gold: #f5c451;
    --academy-ink: #122033;
    --academy-muted: #5d6b7b;
    --academy-border: #dce4eb;
    --academy-bg: #f7f9fb;
    background: var(--academy-bg);
    color: var(--academy-ink);
}

.academy-page *,
.academy-module-page * {
    box-sizing: border-box;
}

.academy-eyebrow,
.academy-module-type {
    display: inline-block;
    color: var(--academy-blue);
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .14em;
    line-height: 1.2;
    text-transform: uppercase;
}

.academy-section-heading {
    max-width: 820px;
    margin-bottom: 28px;
}

.academy-section-heading h2,
.academy-method h2,
.academy-closing h2,
.academy-module-next h2 {
    margin: 8px 0 0;
    color: var(--academy-navy);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(2rem, 4vw, 3.2rem);
    letter-spacing: -.035em;
    line-height: 1.06;
}

.academy-section-heading p {
    margin: 14px 0 0;
    color: var(--academy-muted);
    font-size: 1rem;
    line-height: 1.72;
}

/* HERO */
.academy-hero {
    position: relative;
    overflow: hidden;
    background:
        radial-gradient(circle at 87% 20%, rgba(4,155,206,.18), transparent 27%),
        linear-gradient(135deg, #ffffff 0%, #f5f9fc 55%, #edf5f9 100%);
    border-bottom: 1px solid var(--academy-border);
}

.academy-hero::after {
    content: "";
    position: absolute;
    right: -140px;
    bottom: -260px;
    width: 540px;
    height: 540px;
    border: 1px solid rgba(4,155,206,.15);
    border-radius: 50%;
    box-shadow: 0 0 0 55px rgba(4,155,206,.025), 0 0 0 110px rgba(4,155,206,.018);
    pointer-events: none;
}

.academy-hero-grid {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1.08fr) minmax(360px, .92fr);
    gap: clamp(36px, 7vw, 92px);
    align-items: center;
    min-height: 560px;
    padding-top: 64px;
    padding-bottom: 68px;
}

.academy-hero h1 {
    max-width: 830px;
    margin: 12px 0 22px;
    color: var(--academy-navy);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(3rem, 6.6vw, 6.35rem);
    letter-spacing: -.055em;
    line-height: .98;
}

.academy-hero-copy > p {
    max-width: 760px;
    margin: 0;
    color: #475569;
    font-size: clamp(1.05rem, 1.7vw, 1.24rem);
    line-height: 1.72;
}

.academy-hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 28px;
}

.academy-btn {
    display: inline-flex;
    min-height: 46px;
    align-items: center;
    justify-content: center;
    border: 1px solid transparent;
    border-radius: 10px;
    padding: 12px 18px;
    font-size: .78rem;
    font-weight: 900;
    letter-spacing: .06em;
    text-decoration: none;
    text-transform: uppercase;
    transition: transform .18s ease, background .18s ease, border-color .18s ease, color .18s ease;
}

.academy-btn:hover { transform: translateY(-2px); }
.academy-btn-primary { background: var(--academy-navy); color: #fff; }
.academy-btn-primary:hover { background: var(--academy-blue); color: #fff; }
.academy-btn-secondary { background: #fff; border-color: var(--academy-border); color: var(--academy-navy); }
.academy-btn-secondary:hover { border-color: var(--academy-blue); color: var(--academy-blue); }
.academy-btn-light { background: #fff; color: var(--academy-navy); }
.academy-btn-light:hover { background: var(--academy-gold); color: var(--academy-navy); }
.academy-btn:disabled { cursor: default; opacity: .45; transform: none; }

.academy-hero-visual {
    min-width: 0;
}

.academy-constitutional-visual {
    position: relative;
    width: 100%;
    min-height: 410px;
}

.academy-constitutional-lines {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
}

.academy-constitutional-lines path {
    fill: none;
    vector-effect: non-scaling-stroke;
}

.academy-constitution-spoke {
    stroke: rgba(4,155,206,.26);
    stroke-width: 1.5;
    stroke-dasharray: 5 7;
}

.academy-check-arc {
    stroke: rgba(11,36,55,.16);
    stroke-width: 1.35;
}

.academy-system-center,
.academy-system-branch {
    position: absolute;
    z-index: 2;
    display: grid;
    justify-items: center;
    text-align: center;
}

.academy-system-center {
    left: 50%;
    top: 45%;
    transform: translate(-50%,-50%);
    width: 150px;
}

.academy-system-center-icon {
    display: grid;
    width: 92px;
    height: 92px;
    place-items: center;
    border: 1px solid rgba(184,134,11,.26);
    border-radius: 50%;
    background: rgba(255,255,255,.9);
    color: #b8860b;
    box-shadow: 0 18px 48px rgba(15,23,42,.07);
}

.academy-system-center-icon .academy-system-svg {
    width: 46px;
    height: 46px;
}

.academy-system-center strong {
    margin-top: 10px;
    color: var(--academy-navy);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 1.05rem;
}

.academy-system-center small,
.academy-system-branch small {
    margin-top: 3px;
    color: #738395;
    font-size: .66rem;
    font-weight: 800;
    letter-spacing: .07em;
    text-transform: uppercase;
}

.academy-system-branch {
    width: 126px;
    color: var(--academy-blue);
}

.academy-system-branch > span {
    display: grid;
    width: 78px;
    height: 78px;
    place-items: center;
    border: 1px solid rgba(4,155,206,.16);
    border-radius: 50%;
    background: rgba(255,255,255,.84);
    box-shadow: 0 14px 36px rgba(15,23,42,.055);
    transition: transform .25s ease, color .25s ease, border-color .25s ease;
}

.academy-system-branch > span .academy-system-svg {
    width: 44px;
    height: 44px;
}

.academy-system-branch b {
    margin-top: 8px;
    color: var(--academy-navy);
    font-family: Georgia, "Times New Roman", serif;
    font-size: .92rem;
}

.academy-system-branch--legislative { left: 24.2%; top: 24.4%; transform: translate(-50%,-50%); }
.academy-system-branch--executive { left: 75.8%; top: 24.4%; transform: translate(-50%,-50%); color: #315a85; }
.academy-system-branch--judicial { left: 50%; top: 82.6%; transform: translate(-50%,-50%); color: #74889b; }

.academy-constitutional-visual:hover .academy-system-branch > span {
    transform: translateY(-3px);
    border-color: rgba(4,155,206,.34);
}

.academy-system-caption {
    position: absolute;
    left: 50%;
    bottom: 0;
    transform: translate(-50%, 30px);
    width: 100%;
    color: #708092;
    font-size: .76rem;
    line-height: 1.5;
    text-align: center;
}

/* FEATURED */
.academy-featured { padding-top: 72px; padding-bottom: 74px; }

.academy-feature-card {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(360px, .95fr);
    min-height: 320px;
    overflow: hidden;
    border: 1px solid var(--academy-border);
    background: #fff;
    color: inherit;
    text-decoration: none;
    box-shadow: 0 16px 48px rgba(15,23,42,.055);
    transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}

.academy-feature-card:hover {
    border-color: rgba(4,155,206,.42);
    box-shadow: 0 22px 58px rgba(15,23,42,.085);
    transform: translateY(-3px);
}

.academy-feature-copy {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: clamp(32px, 4.5vw, 54px);
}

.academy-feature-copy h3 {
    max-width: 560px;
    margin: 12px 0 16px;
    color: var(--academy-navy);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(2rem, 3.6vw, 3.25rem);
    letter-spacing: -.04em;
    line-height: 1.02;
}

.academy-feature-copy p {
    max-width: 650px;
    margin: 0;
    color: var(--academy-muted);
    line-height: 1.68;
}

.academy-module-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 20px; }
.academy-module-meta span { border: 1px solid var(--academy-border); background: #f8fafc; padding: 6px 9px; color: #64748b; font-size: .7rem; font-weight: 800; }
.academy-card-link { display: inline-flex; align-items: center; gap: 8px; margin-top: 24px; color: var(--academy-blue); font-size: .82rem; font-weight: 900; letter-spacing: .035em; text-transform: uppercase; }
.academy-feature-card:hover .academy-card-link { gap: 12px; }

.academy-bill-preview {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-width: 0;
    padding: 38px 40px;
    border-left: 1px solid #dce8ee;
    background:
        radial-gradient(circle at 82% 18%, rgba(4,155,206,.12), transparent 34%),
        linear-gradient(145deg, #fbfdfe 0%, #eef8fc 100%);
}

.academy-bill-preview::after {
    content: "";
    position: absolute;
    right: -120px;
    bottom: -170px;
    width: 340px;
    height: 340px;
    border: 1px solid rgba(4,155,206,.10);
    border-radius: 50%;
}

.academy-preview-flow {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: auto 1fr auto 1fr auto 1fr auto;
    align-items: center;
    gap: 12px;
}

.academy-preview-node {
    display: grid;
    justify-items: center;
    gap: 12px;
    min-width: 72px;
    color: var(--academy-navy);
    text-align: center;
}

.academy-preview-node span {
    display: grid;
    width: 58px;
    height: 58px;
    place-items: center;
    color: #24485e;
}

.academy-preview-node--bill span { color: var(--academy-blue); }
.academy-preview-node--law span { color: #2f8b63; }
.academy-feature-svg { width: 48px; height: 48px; }
.academy-preview-node b { font-family: Georgia, "Times New Roman", serif; font-size: .94rem; line-height: 1.15; }

.academy-preview-flow > i {
    height: 1px;
    min-width: 22px;
    background: linear-gradient(90deg, rgba(4,155,206,.22), rgba(4,155,206,.72));
    position: relative;
}

.academy-preview-flow > i::after {
    content: "";
    position: absolute;
    top: 50%;
    right: -1px;
    width: 6px;
    height: 6px;
    border-top: 1px solid var(--academy-blue);
    border-right: 1px solid var(--academy-blue);
    transform: translateY(-50%) rotate(45deg);
}

.academy-preview-caption {
    position: relative;
    z-index: 1;
    margin: 28px 0 0;
    padding-top: 18px;
    border-top: 1px solid #dbe7ed;
    color: #68798a;
    font-size: .76rem;
    font-weight: 700;
    letter-spacing: .015em;
    text-align: center;
}

/* SUBJECTS */
.academy-subjects { padding: 72px 0 78px; background: #fff; border-top: 1px solid var(--academy-border); border-bottom: 1px solid var(--academy-border); }
.academy-subject-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.academy-subject-card { position: relative; display: flex; min-height: 285px; flex-direction: column; border: 1px solid var(--academy-border); background: #fbfcfd; padding: 28px; color: inherit; text-decoration: none; transition: background .2s ease, transform .2s ease, border-color .2s ease, box-shadow .2s ease; }
.academy-subject-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--academy-blue); transform: scaleY(0); transform-origin: bottom; transition: transform .2s ease; }
.academy-subject-card:hover { background: #fff; border-color: rgba(4,155,206,.34); box-shadow: 0 14px 36px rgba(15,23,42,.06); transform: translateY(-3px); }
.academy-subject-card:hover::before { transform: scaleY(1); }
.academy-subject-number { color: #8aa0b5; font-size: .7rem; font-weight: 900; letter-spacing: .1em; }
.academy-subject-card h3 { margin: 20px 0 10px; color: var(--academy-navy); font-family: Georgia, "Times New Roman", serif; font-size: 1.45rem; line-height: 1.15; }
.academy-subject-card p { margin: 0; color: var(--academy-muted); font-size: .92rem; line-height: 1.64; }
.academy-subject-link { display: inline-flex; align-items: center; gap: 6px; margin-top: auto; padding-top: 20px; color: var(--academy-blue); font-size: .76rem; font-weight: 900; letter-spacing: .02em; text-transform: uppercase; }

/* LIBRARY */
.academy-library { padding-top: 76px; padding-bottom: 80px; }
.academy-library-heading { display: block; max-width: none; }
.academy-filters { display: flex; width: 100%; max-width: none; flex-wrap: nowrap; gap: 8px; justify-content: flex-start; margin-top: 22px; overflow-x: auto; padding-bottom: 3px; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.academy-filters button { flex: 0 0 auto; border: 1px solid var(--academy-border); border-radius: 999px; background: #fff; padding: 8px 11px; color: #5f7183; cursor: pointer; font: inherit; font-size: .72rem; font-weight: 850; white-space: nowrap; transition: .18s ease; }
.academy-filters button:hover, .academy-filters button.is-active { border-color: var(--academy-navy); background: var(--academy-navy); color: #fff; }

.academy-module-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.academy-module-card { display: flex; min-width: 0; min-height: 390px; flex-direction: column; overflow: hidden; border: 1px solid var(--academy-border); background: #fff; color: inherit; text-decoration: none; transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.academy-module-card[hidden] { display: none; }

.academy-pagination {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 22px;
    margin-top: 34px;
    padding-top: 22px;
    border-top: 1px solid var(--academy-border);
}

.academy-pagination[hidden] { display: none; }
.academy-pagination-status { color: #728192; font-size: .78rem; font-weight: 750; }
.academy-pagination-controls { display: flex; align-items: center; gap: 8px; }
.academy-pagination-pages { display: flex; align-items: center; gap: 6px; }

.academy-pagination button {
    min-height: 40px;
    border: 1px solid var(--academy-border);
    border-radius: 10px;
    background: #fff;
    padding: 8px 12px;
    color: var(--academy-navy);
    cursor: pointer;
    font: inherit;
    font-size: .72rem;
    font-weight: 850;
    transition: border-color .18s ease, background .18s ease, color .18s ease;
}

.academy-pagination button:hover:not(:disabled) {
    border-color: var(--academy-blue);
    color: var(--academy-blue);
}

.academy-pagination button:focus-visible {
    outline: 3px solid rgba(4,155,206,.2);
    outline-offset: 2px;
}

.academy-pagination button:disabled { cursor: default; opacity: .38; }
.academy-pagination-page { min-width: 40px; padding-left: 10px !important; padding-right: 10px !important; }
.academy-pagination-page.is-active { border-color: var(--academy-navy); background: var(--academy-navy); color: #fff; }
.academy-module-live:hover { border-color: rgba(4,155,206,.45); box-shadow: 0 18px 45px rgba(15,23,42,.08); transform: translateY(-4px); }
.academy-module-art { display: flex; min-height: 152px; align-items: center; justify-content: center; gap: 10px; border-bottom: 1px solid var(--academy-border); background: linear-gradient(150deg, #f8fbfd, #eef4f8); padding: 22px; color: var(--academy-navy); }
.academy-module-body { display: flex; flex: 1; flex-direction: column; padding: 24px; }
.academy-module-body h3 { margin: 9px 0 10px; color: var(--academy-navy); font-family: Georgia, "Times New Roman", serif; font-size: 1.42rem; line-height: 1.15; }
.academy-module-body p { flex: 1; margin: 0; color: var(--academy-muted); font-size: .91rem; line-height: 1.63; }

.academy-art-bill span { display: grid; min-width: 64px; min-height: 60px; place-items: center; border: 1px solid #bfcbd5; background: #fff; font-size: .66rem; font-weight: 900; letter-spacing: .06em; }
.academy-art-bill i { width: 32px; height: 1px; background: var(--academy-blue); }
.academy-art-bill .mini-law { border-color: rgba(4,155,206,.45); background: var(--academy-blue-soft); }
.academy-art-branches { position: relative; justify-content: space-between; }
.academy-art-branches span { display: grid; width: 30%; min-height: 58px; place-items: center; border: 1px solid #cbd6df; background: #fff; font-family: Georgia, "Times New Roman", serif; font-size: .8rem; font-weight: 700; text-align: center; }
.academy-art-electoral { flex-direction: column; }
.academy-art-electoral > span { color: var(--academy-navy); font-family: Georgia, "Times New Roman", serif; font-size: 2.6rem; font-weight: 900; }
.academy-art-electoral > div { display: flex; gap: 5px; }
.academy-art-electoral i { width: 34px; height: 18px; background: #d5e3ed; }
.academy-art-electoral i:nth-child(2), .academy-art-electoral i:nth-child(4) { background: #73bdd7; }
.academy-art-opinion { flex-wrap: wrap; }
.academy-population-dots { width: 76px; height: 62px; background-image: radial-gradient(circle, #52738c 2.2px, transparent 2.5px); background-size: 11px 11px; }
.academy-art-opinion strong, .academy-art-opinion b { font-size: .74rem; }
.academy-art-districts { display: grid; grid-template-columns: repeat(3, 48px); grid-template-rows: repeat(2, 46px); gap: 3px; }
.academy-art-districts span { border: 1px solid rgba(11,36,55,.18); background: #dbe8ef; }
.academy-art-districts span:nth-child(2), .academy-art-districts span:nth-child(5) { background: #a9d6e5; }
.academy-art-districts span:nth-child(3) { border-radius: 20px 0 0 0; background: #c6d7e2; }
.academy-art-compare { gap: 14px; }
.academy-art-compare > div { display: flex; flex-direction: column; gap: 7px; width: 38%; align-items: center; }
.academy-art-compare span, .academy-art-compare b { width: 100%; border: 1px solid #cbd6df; background: #fff; padding: 9px 6px; font-size: .68rem; text-align: center; }
.academy-art-compare i { width: 1px; height: 13px; background: var(--academy-blue); }
.academy-art-compare em { color: #8090a0; font-size: .68rem; font-style: normal; font-weight: 900; }

/* PATHS */
.academy-paths { padding: 78px 0; background: var(--academy-navy); color: #fff; }
.academy-paths .academy-eyebrow { color: #7dd3fc; }
.academy-paths .academy-section-heading h2 { color: #fff; }
.academy-path-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 18px; }
.academy-path-card { border: 1px solid rgba(255,255,255,.13); background: rgba(255,255,255,.045); padding: 28px; }
.academy-path-card > span { color: #7dd3fc; font-size: .7rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.academy-path-card h3 { min-height: 58px; margin: 14px 0 20px; color: #fff; font-family: Georgia, "Times New Roman", serif; font-size: 1.5rem; line-height: 1.15; }
.academy-path-card ol { margin: 0; padding: 0; list-style: none; counter-reset: pathstep; }
.academy-path-card li { counter-increment: pathstep; display: flex; gap: 10px; border-top: 1px solid rgba(255,255,255,.09); padding: 10px 0; color: #d7e2ea; font-size: .86rem; }
.academy-path-card li::before { content: counter(pathstep, decimal-leading-zero); color: #6fcbe9; font-size: .68rem; font-weight: 900; }

/* METHOD */
.academy-method { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(360px,.85fr); gap: clamp(34px, 7vw, 90px); align-items: center; padding-top: 80px; padding-bottom: 82px; }
.academy-method-copy p { margin: 18px 0 0; color: var(--academy-muted); line-height: 1.75; }
.academy-method-principles { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--academy-border); border-left: 1px solid var(--academy-border); }
.academy-method-principles div { min-height: 116px; border-right: 1px solid var(--academy-border); border-bottom: 1px solid var(--academy-border); background: #fff; padding: 20px; }
.academy-method-principles strong { display: block; color: var(--academy-blue); font-size: .7rem; letter-spacing: .1em; }
.academy-method-principles span { display: block; margin-top: 18px; color: var(--academy-navy); font-family: Georgia, "Times New Roman", serif; font-weight: 700; line-height: 1.25; }

.academy-closing { background: linear-gradient(135deg, #0b2437, #123a57); color: #fff; }
.academy-closing-inner { display: flex; align-items: center; justify-content: space-between; gap: 34px; padding-top: 54px; padding-bottom: 58px; }
.academy-closing .academy-eyebrow { color: #7dd3fc; }
.academy-closing h2 { color: #fff; font-size: clamp(1.9rem,3vw,2.7rem); }
.academy-closing p { max-width: 760px; margin: 10px 0 0; color: #d8e5ed; line-height: 1.65; }

/* ==========================================================
   MODULE PAGE
========================================================== */
.academy-module-hero { background: linear-gradient(180deg,#fff,#f4f8fb); border-bottom: 1px solid var(--academy-border); padding: 50px 0 58px; }
.academy-back-link { display: inline-block; margin-bottom: 28px; color: #657688; font-size: .78rem; font-weight: 800; text-decoration: none; }
.academy-back-link:hover { color: var(--academy-blue); }
.academy-module-hero h1 { max-width: 1000px; margin: 10px 0 18px; color: var(--academy-navy); font-family: Georgia,"Times New Roman",serif; font-size: clamp(3rem, 7vw, 6rem); letter-spacing: -.05em; line-height: .98; }
.academy-module-hero p { max-width: 900px; margin: 0; color: #526274; font-size: 1.12rem; line-height: 1.72; }
.academy-module-hero-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
.academy-module-hero-meta span { border: 1px solid var(--academy-border); background: #fff; padding: 7px 10px; color: #66788a; font-size: .7rem; font-weight: 850; }

.bill-learning-shell { padding-top: 48px; padding-bottom: 74px; }
.bill-progress-topline { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 12px; }
.bill-progress-topline > div:first-child { display: flex; align-items: baseline; gap: 12px; }
.bill-progress-label { color: var(--academy-blue); font-size: .7rem; font-weight: 900; letter-spacing: .11em; text-transform: uppercase; }
.bill-progress-topline strong { color: var(--academy-navy); font-family: Georgia,"Times New Roman",serif; font-size: 1.2rem; }
.bill-mode-note { color: #708092; font-size: .78rem; }
.bill-progress-bar { height: 3px; overflow: hidden; background: #dce6ed; }
.bill-progress-bar span { display: block; width: 12.5%; height: 100%; background: var(--academy-blue); transition: width .35s ease; }

.bill-stage-nav { display: grid; grid-template-columns: repeat(8, minmax(0,1fr)); border-left: 1px solid var(--academy-border); margin-top: 20px; }
.bill-stage-tab { min-width: 0; min-height: 84px; border: 0; border-top: 1px solid var(--academy-border); border-right: 1px solid var(--academy-border); border-bottom: 1px solid var(--academy-border); background: #fff; padding: 12px 8px; color: #6a7a89; cursor: pointer; font: inherit; text-align: left; transition: .18s ease; }
.bill-stage-tab span { display: block; margin-bottom: 9px; color: #94a3b8; font-size: .64rem; font-weight: 900; }
.bill-stage-tab b { display: block; overflow: hidden; font-size: .7rem; line-height: 1.2; text-overflow: ellipsis; }
.bill-stage-tab:hover { background: #f7fbfd; color: var(--academy-navy); }
.bill-stage-tab.is-active { background: var(--academy-navy); color: #fff; }
.bill-stage-tab.is-active span { color: #77d2ef; }
.bill-stage-tab:focus-visible { position: relative; z-index: 3; outline: 3px solid rgba(4,155,206,.25); outline-offset: -3px; }

.bill-experience-grid { display: grid; grid-template-columns: minmax(0,1.18fr) minmax(350px,.82fr); gap: 28px; margin-top: 28px; }
.bill-process-visual { min-width: 0; border: 1px solid var(--academy-border); background: #fff; padding: 30px; }
.bill-process-track { display: flex; min-height: 150px; align-items: center; justify-content: space-between; }
.bill-process-node { position: relative; z-index: 2; display: flex; width: 70px; min-width: 70px; min-height: 74px; flex-direction: column; align-items: center; justify-content: center; border: 1px solid #cad6df; background: #fff; color: #788898; text-align: center; transition: .25s ease; }
.bill-process-node span { color: #93a3b3; font-size: .62rem; font-weight: 900; }
.bill-process-node b { margin-top: 5px; font-size: .64rem; line-height: 1.15; }
.bill-process-node.is-complete { border-color: #84cbe1; background: #f0fbfe; color: var(--academy-navy); }
.bill-process-node.is-complete::after { content: "✓"; position: absolute; top: -8px; right: -8px; display: grid; width: 20px; height: 20px; place-items: center; border-radius: 50%; background: var(--academy-blue); color: #fff; font-size: .62rem; font-weight: 900; }
.bill-process-node.is-active { border-color: var(--academy-blue); background: var(--academy-navy); color: #fff; box-shadow: 0 10px 24px rgba(11,36,55,.16); transform: translateY(-5px); }
.bill-process-node.is-active span { color: #70d2ef; }
.bill-process-connector { flex: 1; min-width: 8px; height: 2px; background: #d7e1e8; transition: .25s ease; }
.bill-process-connector.is-complete { background: var(--academy-blue); }

.bill-presidential-branch { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; margin-top: 18px; opacity: .35; transform: translateY(8px); transition: .3s ease; }
.bill-presidential-branch.is-visible { opacity: 1; transform: none; }
.bill-presidential-branch > div { min-height: 112px; border: 1px solid var(--academy-border); background: #f8fafc; padding: 16px; }
.bill-presidential-branch span { color: var(--academy-blue); font-size: .64rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.bill-presidential-branch b { display: block; margin-top: 8px; color: var(--academy-navy); font-family: Georgia,"Times New Roman",serif; font-size: .95rem; line-height: 1.2; }
.bill-presidential-branch small { display: block; margin-top: 7px; color: #6d7d8d; font-size: .7rem; line-height: 1.35; }

.bill-stage-content { display: flex; min-width: 0; flex-direction: column; border: 1px solid var(--academy-border); background: #fff; }
.bill-stage-panel { flex: 1; padding: clamp(28px,4vw,42px); }
.bill-stage-panel[hidden] { display: none; }
.bill-stage-panel h2 { margin: 9px 0 14px; color: var(--academy-navy); font-family: Georgia,"Times New Roman",serif; font-size: clamp(2rem,3.8vw,3rem); letter-spacing: -.035em; line-height: 1.03; }
.bill-stage-panel > p { margin: 0 0 16px; color: #5a6b7c; line-height: 1.72; }
.bill-stage-summary { color: #263c4d !important; font-size: 1.05rem; font-weight: 650; }
.bill-key-point { margin-top: 24px; border-left: 3px solid var(--academy-blue); background: #f3f9fc; padding: 16px 18px; }
.bill-key-point strong { color: var(--academy-blue); font-size: .67rem; letter-spacing: .09em; text-transform: uppercase; }
.bill-key-point p { margin: 6px 0 0; color: #41586a; font-size: .86rem; line-height: 1.55; }
.bill-controls { display: flex; justify-content: space-between; gap: 10px; border-top: 1px solid var(--academy-border); padding: 16px; }
.bill-controls button { cursor: pointer; font-family: inherit; }
.bill-controls button:disabled { cursor: default; }

.bill-concepts { border-top: 1px solid var(--academy-border); border-bottom: 1px solid var(--academy-border); background: #fff; padding: 64px 0; }
.bill-concepts .academy-section-heading { margin-bottom: 0; max-width: 930px; }

.academy-sources { padding-top: 68px; padding-bottom: 72px; }
.academy-source-list { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.academy-source-list a { display: flex; min-height: 120px; flex-direction: column; justify-content: space-between; border: 1px solid var(--academy-border); background: #fff; padding: 20px; color: inherit; text-decoration: none; transition: .18s ease; }
.academy-source-list a:hover { border-color: var(--academy-blue); transform: translateY(-2px); }
.academy-source-list strong { color: var(--academy-navy); font-family: Georgia,"Times New Roman",serif; font-size: 1.05rem; }
.academy-source-list span { color: var(--academy-blue); font-size: .74rem; font-weight: 900; }
.academy-source-note { max-width: 880px; margin: 18px 0 0; color: #728192; font-size: .78rem; line-height: 1.6; }

.academy-module-next { background: var(--academy-navy); color: #fff; }
.academy-module-next-inner { display: flex; align-items: center; justify-content: space-between; gap: 34px; padding-top: 48px; padding-bottom: 52px; }
.academy-module-next .academy-eyebrow { color: #78d2ef; }
.academy-module-next h2 { color: #fff; font-size: clamp(1.7rem,3vw,2.5rem); }
.academy-module-next p { max-width: 850px; margin: 10px 0 0; color: #d5e1e9; line-height: 1.62; }
.academy-coming-badge { flex: 0 0 auto; border: 1px solid rgba(255,255,255,.22); padding: 9px 12px; color: #cde9f3; font-size: .68rem; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }

/* RESPONSIVE */
@media (max-width: 1080px) {
    .academy-hero-grid { grid-template-columns: 1fr; min-height: 0; }
    .academy-hero-visual { max-width: 720px; width: 100%; }
    .academy-feature-card { grid-template-columns: 1fr; }
    .academy-bill-preview { min-height: 220px; border-left: 0; border-top: 1px solid #dce8ee; }
    .academy-subject-grid, .academy-module-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .academy-path-grid { grid-template-columns: 1fr; }
    .academy-path-card h3 { min-height: 0; }
    .academy-method { grid-template-columns: 1fr; }
    .bill-experience-grid { grid-template-columns: 1fr; }
    .bill-process-track { overflow-x: auto; justify-content: flex-start; padding-bottom: 8px; }
    .bill-process-connector { flex: 0 0 28px; }
}

@media (max-width: 760px) {
    .academy-hero-grid { padding-top: 48px; padding-bottom: 52px; }
    .academy-hero h1 { font-size: clamp(2.65rem, 15vw, 4.5rem); }
    .academy-hero-actions, .bill-controls { align-items: stretch; flex-direction: column; }
    .academy-btn { width: 100%; }
    .academy-institution-map { min-height: 360px; }
    .academy-node-legislative, .academy-node-executive, .academy-node-judicial { left: 12%; right: auto; width: 76%; min-height: 56px; }
    .academy-node-legislative { bottom: 158px; }
    .academy-node-executive { bottom: 92px; }
    .academy-node-judicial { bottom: 26px; }
    .academy-line { display: none; }
    .academy-node-constitution { top: 24px; }
    .academy-featured, .academy-library, .academy-method { padding-top: 54px; padding-bottom: 56px; }
    .academy-filters {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
        margin-top: 18px;
        overflow: visible;
        padding-bottom: 0;
    }
    .academy-filters button {
        width: 100%;
        min-height: 40px;
        padding: 8px 10px;
        white-space: normal;
        text-align: center;
        line-height: 1.2;
    }
    .academy-feature-copy { padding: 28px 24px; }
    .academy-bill-preview { min-height: 0; padding: 30px 22px; }
    .academy-preview-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 18px; }
    .academy-preview-flow > i { display: none; }
    .academy-preview-node { min-width: 0; }
    .academy-subjects, .academy-paths { padding-top: 56px; padding-bottom: 58px; }
    .academy-subject-grid, .academy-module-grid, .academy-source-list { grid-template-columns: 1fr; }
    .academy-pagination { align-items: flex-start; flex-direction: column; gap: 14px; margin-top: 28px; }
    .academy-pagination-controls { width: 100%; justify-content: space-between; gap: 6px; }
    .academy-pagination-pages { gap: 5px; }
    .academy-pagination button { min-height: 38px; padding: 7px 9px; }
    .academy-subject-card { min-height: 225px; }
    .academy-method-principles { grid-template-columns: 1fr; }
    .academy-closing-inner, .academy-module-next-inner { align-items: flex-start; flex-direction: column; }
    .academy-module-hero { padding: 38px 0 44px; }
    .academy-module-hero h1 { font-size: clamp(2.7rem, 14vw, 4.4rem); }
    .bill-learning-shell { padding-top: 34px; padding-bottom: 52px; }
    .bill-progress-topline { align-items: flex-start; flex-direction: column; gap: 7px; }
    .bill-stage-nav { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; border-left: 0; padding-bottom: 5px; }
    .bill-stage-tab { flex: 0 0 118px; scroll-snap-align: start; border-left: 1px solid var(--academy-border); }
    .bill-process-visual { padding: 22px 18px; }
    .bill-process-track { display: grid; overflow: visible; grid-template-columns: 54px 1fr; gap: 0 12px; align-items: stretch; }
    .bill-process-node { width: auto; min-width: 0; min-height: 58px; grid-column: 2; align-items: flex-start; padding: 10px 12px; text-align: left; }
    .bill-process-node span { position: absolute; left: -55px; top: 50%; width: 36px; transform: translateY(-50%); text-align: center; }
    .bill-process-node b { margin-top: 0; font-size: .72rem; }
    .bill-process-node.is-active { transform: none; }
    .bill-process-connector { grid-column: 2; width: 2px; min-width: 2px; height: 18px; margin-left: 16px; }
    .bill-presidential-branch { grid-template-columns: 1fr; }
    .bill-stage-panel { padding: 28px 22px; }
    .academy-sources { padding-top: 52px; padding-bottom: 56px; }
}


@media (max-width: 380px) {
    .academy-filters { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
    .academy-page *, .academy-module-page * { scroll-behavior: auto !important; transition-duration: .001ms !important; animation-duration: .001ms !important; animation-iteration-count: 1 !important; }
}

/* ==========================================================
   ACA VISUAL SYSTEM UPGRADE — CONTINUOUS LANDING EXPERIENCE
========================================================== */
.academy-page {
    background: #fff;
}

.academy-subjects,
.academy-paths,
.academy-closing {
    background: transparent;
    color: inherit;
    border: 0;
}

.academy-subjects {
    padding-top: 66px;
    padding-bottom: 68px;
}

.academy-subjects .container,
.academy-paths .container,
.academy-closing .container {
    border-top: 1px solid var(--academy-border);
    padding-top: 64px;
}

.academy-subject-card {
    min-height: 300px;
    background: transparent;
}

.academy-subject-icon {
    display: grid;
    width: 56px;
    height: 56px;
    place-items: center;
    margin-bottom: 15px;
    color: var(--academy-blue);
    transition: transform .22s ease, color .22s ease;
}

.academy-subject-svg,
.academy-module-preview-svg {
    display: block;
    width: 100%;
    height: 100%;
    fill: currentColor;
    stroke: currentColor;
}

.academy-subject-card:hover .academy-subject-icon {
    color: var(--academy-navy);
    transform: translateY(-3px) scale(1.04);
}

.academy-subject-card h3 {
    margin-top: 9px;
}

.academy-paths {
    padding: 0 0 72px;
}

.academy-paths .academy-eyebrow,
.academy-path-card > span {
    color: var(--academy-blue);
}

.academy-paths .academy-section-heading h2,
.academy-path-card h3 {
    color: var(--academy-navy);
}

.academy-path-card {
    border: 0;
    border-top: 2px solid var(--academy-border);
    background: transparent;
    padding: 24px 4px 0;
}

.academy-path-card li {
    border-top-color: var(--academy-border);
    color: #607283;
}

.academy-path-card li::before {
    color: var(--academy-blue);
}

.academy-closing {
    padding-bottom: 58px;
}

.academy-closing-inner {
    padding-top: 0;
    padding-bottom: 0;
}

.academy-closing .academy-eyebrow {
    color: var(--academy-blue);
}

.academy-closing h2 {
    color: var(--academy-navy);
}

.academy-closing p {
    color: #607283;
}

/* Module card preview SVGs */
.academy-art-iconflow > span {
    display: grid;
    width: 62px;
    height: 62px;
    place-items: center;
    border: 0;
    background: transparent;
    color: var(--academy-blue);
}

.academy-art-iconflow > span:nth-of-type(2) { color: var(--academy-navy); }
.academy-art-iconflow > span:nth-of-type(3) { color: #2f8b63; }
.academy-art-iconflow > i { width: 34px; height: 1px; background: #a9bbc8; }

.academy-art-branches-svg span {
    display: grid;
    width: 66px;
    min-height: 66px;
    height: 66px;
    place-items: center;
    border: 0;
    background: transparent;
    color: var(--academy-blue);
}
.academy-art-branches-svg span:nth-child(2) { color: #a44a5a; }
.academy-art-branches-svg span:nth-child(3) { color: #9b792d; }

.academy-art-electoral-svg {
    position: relative;
    flex-direction: row;
    gap: 24px;
}
.academy-electoral-preview-map { width: 138px; height: 92px; color: rgba(13,111,159,.55); }
.academy-art-electoral-svg > strong { display: grid; width: 72px; height: 72px; place-items: center; border: 1px solid rgba(13,111,159,.28); border-radius: 50%; background: #fff; color: var(--academy-navy); font-family: Georgia,"Times New Roman",serif; font-size: 1.7rem; }

.academy-art-opinion-svg { flex-wrap: nowrap; }
.academy-art-opinion-svg > span { width: 58px; height: 58px; color: var(--academy-blue); }
.academy-art-opinion-svg > span:last-child { color: #2f8b63; }
.academy-art-opinion-svg > i { width: auto; height: auto; background: transparent; color: #98a9b6; font-style: normal; }

.academy-art-districts-svg {
    display: flex;
    grid-template-columns: none;
    grid-template-rows: none;
    gap: 24px;
}
.academy-district-preview-map { width: 120px; height: 80px; color: rgba(13,120,159,.48); }
.academy-art-districts-svg > div { display: grid; grid-template-columns: repeat(4,19px); gap: 3px; }
.academy-art-districts-svg > div i { width: 19px; height: 19px; border: 1px solid rgba(11,36,55,.12); background: #dbe8ef; }
.academy-art-districts-svg > div i:nth-child(4n+2) { background: #bfd9e3; }
.academy-art-districts-svg > div i:nth-child(4n+3) { background: #e2cf9f; }
.academy-art-districts-svg > div i:nth-child(4n+4) { background: #bfd5c8; }

.academy-art-compare-svg > div {
    width: 39%;
}
.academy-art-compare-svg > div span {
    display: grid;
    width: 58px;
    height: 58px;
    place-items: center;
    border: 0;
    background: transparent;
    padding: 0;
    color: var(--academy-blue);
}
.academy-art-compare-svg > div:last-child span { color: #9a7630; }
.academy-art-compare-svg > div b { width: auto; border: 0; background: transparent; color: var(--academy-navy); padding: 0; font-family: Georgia,"Times New Roman",serif; }

.academy-module-card--checks .academy-module-art {
    background: linear-gradient(150deg, rgba(8,122,165,.045), rgba(164,74,90,.035), rgba(155,121,45,.035));
}
.academy-module-card--electoral .academy-module-art {
    background: linear-gradient(150deg, rgba(13,111,159,.045), rgba(181,138,46,.035));
}
.academy-module-card--opinion .academy-module-art {
    background-image: linear-gradient(rgba(8,122,165,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(8,122,165,.035) 1px, transparent 1px);
    background-size: 22px 22px;
}
.academy-module-card--districts .academy-module-art {
    background-image: linear-gradient(rgba(13,120,159,.028) 1px, transparent 1px), linear-gradient(90deg, rgba(13,120,159,.028) 1px, transparent 1px);
    background-size: 25px 25px;
}
.academy-module-card--systems .academy-module-art {
    background: linear-gradient(90deg, rgba(15,111,154,.05), rgba(154,118,48,.05));
}

@media (max-width: 780px) {
    .academy-subjects .container,
    .academy-paths .container,
    .academy-closing .container {
        padding-top: 48px;
    }

    .academy-closing-inner {
        align-items: flex-start;
    }
}

/* Specificity resets for SVG-based module previews */
.academy-art-electoral-svg .academy-electoral-preview-map { width: 138px; height: 92px; color: rgba(13,111,159,.55); font-size: inherit; font-weight: inherit; }
.academy-art-districts-svg .academy-district-preview-map { width: 120px; height: 80px; border: 0; background: transparent; color: rgba(13,120,159,.48); }

/* Civic Academy module preview — Supreme Court appointments */
.academy-module-card--scotus .academy-module-art {
    background: radial-gradient(circle at 50% 50%, rgba(13,120,159,.07), transparent 42%), linear-gradient(150deg,#fbfcfd,#f1f5f7);
}
.academy-art-scotus {
    display: flex;
    gap: 12px;
}
.academy-art-scotus > i {
    color: #9aabb7;
    font-size: 1.15rem;
    font-style: normal;
}
.academy-scotus-preview-node {
    display: grid;
    width: 58px;
    height: 58px;
    place-items: center;
    color: var(--academy-blue);
}
.academy-scotus-preview-senate { color: var(--academy-navy); }
.academy-scotus-preview-court { color: #9a7d42; }

/* ACA module preview — institutional systems expansion */
.academy-art-admin,
.academy-art-triad,
.academy-art-amendment,
.academy-art-federalism {
    display: grid;
    align-items: center;
    justify-items: center;
    gap: 14px;
}
.academy-art-admin { grid-template-columns: repeat(3, minmax(0,1fr)); }
.academy-art-admin > span,
.academy-art-triad > span,
.academy-art-amendment > span,
.academy-art-federalism > span {
    display: grid;
    width: 58px;
    height: 58px;
    place-items: center;
    color: var(--academy-blue);
}
.academy-art-admin > span:nth-child(2) { color: #53798f; }
.academy-art-admin > span:nth-child(3) { color: #168c88; }
.academy-art-triad { grid-template-columns: repeat(3, minmax(0,1fr)); }
.academy-art-triad > span:nth-child(1) { color: #8a6b2f; }
.academy-art-triad > span:nth-child(2) { color: #436f5b; }
.academy-art-triad > span:nth-child(3) { color: #75637e; }
.academy-art-amendment { grid-template-columns: 1fr auto 1fr; }
.academy-art-amendment > strong {
    display: grid;
    width: 66px;
    height: 66px;
    place-items: center;
    border: 1px solid rgba(116,92,142,.22);
    border-radius: 50%;
    color: #745c8e;
    font-family: Georgia,"Times New Roman",serif;
    font-size: 1.6rem;
}
.academy-art-amendment > span { color: var(--academy-navy); }
.academy-art-federalism { grid-template-columns: 1fr auto 1fr; }
.academy-art-federalism > b {
    display: grid;
    min-width: 74px;
    min-height: 46px;
    place-items: center;
    border-radius: 999px;
    background: rgba(39,124,146,.08);
    color: #277c92;
    font-family: Georgia,"Times New Roman",serif;
    font-size: .78rem;
}
.academy-art-federalism > span:last-child { color: #277c92; }
.academy-module-card--executive .academy-module-art { background: linear-gradient(150deg, rgba(55,111,145,.05), rgba(255,255,255,.8)); }
.academy-module-card--admin .academy-module-art { background: linear-gradient(150deg, rgba(22,140,136,.045), rgba(13,120,159,.03)); }
.academy-module-card--fiscal .academy-module-art { background: linear-gradient(150deg, rgba(138,107,47,.045), rgba(117,99,126,.03)); }
.academy-module-card--budget .academy-module-art { background: linear-gradient(150deg, rgba(67,111,91,.05), rgba(255,255,255,.82)); }
.academy-module-card--amendment .academy-module-art { background: linear-gradient(150deg, rgba(116,92,142,.05), rgba(255,255,255,.82)); }
.academy-module-card--federalism .academy-module-art { background: linear-gradient(150deg, rgba(39,124,146,.05), rgba(255,255,255,.82)); }
.academy-module-card--rights .academy-module-art { background: linear-gradient(150deg, rgba(122,79,176,.055), rgba(255,255,255,.82)); }
.academy-art-rights { gap: 12px; }
.academy-art-rights > span { display: grid; width: 28%; min-height: 60px; place-items: center; border: 1px solid #cfcfdf; background: #fff; color: #5a4886; }
.academy-art-rights > i { width: 24px; height: 1px; background: #8c77bf; }

@media (max-width: 420px) {
    .academy-art-admin > span,
    .academy-art-triad > span,
    .academy-art-amendment > span,
    .academy-art-federalism > span { width: 50px; height: 50px; }
    .academy-art-amendment > strong { width: 58px; height: 58px; font-size: 1.4rem; }
}

/* Civic Academy participation module accents */
.academy-art-foia{background:linear-gradient(145deg,rgba(34,122,105,.08),rgba(255,255,255,.92))}
.academy-art-comment{background:linear-gradient(145deg,rgba(138,99,54,.08),rgba(255,255,255,.92))}
