@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Josefin+Sans:wght@400;500;600;700&display=swap');
:root {
    --blue:#1b2452;
    --navy:#1b2452;
    --gold:#b99440;
    --paper:#1b2452;
    --white:#fff;
    --line:rgba(255,255,255,.22);
    --ink:#ffffff
}
* {
    box-sizing:border-box
}
html {
    scroll-behavior:smooth
}
body {
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:'DM Sans',Arial,sans-serif
}
a {
    color:inherit;
    text-decoration:none
}
button {
    font:inherit
}
.site-header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    z-index: 9999;
    background: #fff;
    color: var(--navy);
    border-bottom: 1px solid rgba(27,36,82,.14);
    backdrop-filter: blur(12px);
}

body {
    padding-top: 92px;
}
.header-inner {
    height:92px;
    max-width:1440px;
    margin:auto;
    padding:0 42px;
    display:flex;
    align-items:center;
    gap:42px
}
.brand {
    display:flex;
    align-items:center;
    width:252px;
    flex:none
}
.brand img {
    width:100%;
    height:auto;
    display:block
}
.desktop-nav {
    display:flex;
    align-items:center;
    gap:4px;
    flex:1;
    justify-content:center
}
.nav-item {
    position:static
}
.nav-item>button {
    position: relative;
    border:0;
    background:none;
    padding:30px 16px;
    cursor:pointer;
    font-weight:600;
    color:var(--navy)
}
.nav-item>button::after {
    content:'';
    position:absolute;
    left:16px;
    right:16px;
    bottom:24px;
    height:2px;
    background:var(--navy);
    transform:scaleX(0);
    transform-origin:left;
    transition:transform .3s ease;
}
.nav-item>button:hover {
    color:var(--gold);
}
.nav-item>button:hover::after,
.nav-item:focus-within>button::after {
    transform:scaleX(1);
}
.mega {
    position:absolute;
    left:0;
    right:0;
    top:92px;
    background:var(--white);
    border-bottom:1px solid var(--line);
    display:grid;
    grid-template-columns:minmax(280px,1fr) minmax(420px,1.2fr);
    gap:60px;
    padding:46px max(42px,calc((100vw - 1356px)/2));
    box-shadow:0 20px 40px rgba(31,38,76,.08);
    opacity:0;
    visibility:hidden;
    transform:translateY(-8px);
    transition:.18s ease
}
.nav-item:hover .mega,.nav-item:focus-within .mega {
    opacity:1;
    visibility:visible;
    transform:none
}
.mega small,.footer-top small {
    letter-spacing:.12em;
    font-weight:700;
    color:var(--gold)
}
.mega h3 {
    font-family:'Josefin Sans',sans-serif;
    color:var(--navy);
    font-size:38px;
    line-height:1.03;
    margin:18px 0 0;
    letter-spacing:-.04em
}
.mega-links {
    display:grid;
    grid-template-columns:1fr 1fr;
    border-left:1px solid var(--line);
    padding-left:38px;
    gap:0 32px
}
.mega-links a {
    position: relative;
    display: block;
    font-size:18px;
    font-weight:600;
    padding:13px 0;
    border-bottom:1px solid var(--line);
    overflow: hidden;
}
.mega-links a::after {
    content:'';
    position:absolute;
    left:0;
    bottom:0;
    width:100%;
    height:2px;
    background:var(--navy);
    transform:scaleX(0);
    transform-origin:left;
    transition:transform .3s ease;
}
.mega-links a:hover {
    color:var(--gold)
}
.mega-links a:hover::after {
    transform:scaleX(1);
}
.tickets-btn {
    position: relative;
    overflow: hidden;
    z-index: 0;
    background: var(--gold);
    color: var(--navy);
    padding: 15px 22px;
    font-weight: 700;
    white-space: nowrap;
    border-radius: 10px;
    transition: color .4s ease;
}
.tickets-btn::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--navy);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .4s ease;
    z-index: -1;
}
.tickets-btn:hover {
    color: var(--white);
}
.tickets-btn:hover::before {
    transform: scaleX(1);
}
.mobile-toggle,.mobile-menu {
    display:none
}
main {
    overflow:hidden
}
.hero {
    min-height:calc(100vh - 88px);
    display:grid;
    grid-template-columns:1.15fr .85fr;
    align-items:end;
    border-bottom:1px solid var(--line)
}
.hero-copy {
    padding:80px 42px 90px;
    max-width:980px
}
.eyebrow {
    font-size:14px;
    letter-spacing:.13em;
    text-transform:uppercase;
    font-weight:700;
    color:var(--gold)
}
h1,h2,h3 {
    font-family:'Josefin Sans',sans-serif;
    color:#fff;
}
h1 {
    font-size:clamp(66px,8.5vw,142px);
    line-height:.82;
    letter-spacing:-.07em;
    margin:25px 0 34px;
    color:#fff;
    max-width:900px
}
.hero-theme {
    font-size:clamp(22px,2vw,31px);
    line-height:1.1;
    max-width:690px;
    font-weight:600
}
.hero-meta {
    display:flex;
    gap:36px;
    margin:46px 0 0;
    font-size:15px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.08em
}
.hero-actions {
    display:flex;
    gap:12px;
    margin-top:34px
}
.button {
    position: relative;
    overflow: hidden;
    z-index: 0;
    display:inline-flex;
    padding:16px 22px;
    background:var(--gold);
    color:var(--navy);
    font-weight:700;
    border:1px solid var(--gold);
    transition: color .4s ease, border-color .4s ease;
}
.button.alt {
    background:transparent;
    color:var(--white);
    border-color:var(--white)
}
.button::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--white);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .4s ease;
    z-index: -1;
}
.button:hover {
    background: transparent;
    border-color: #fff;
    color: var(--navy);
}
.button:hover::before {
    transform: scaleX(1);
}
.hero-visual {
    height:100%;
    min-height:650px;
    background:var(--blue);
    display:flex;
    align-items:flex-end;
    justify-content:flex-start;
    padding:42px;
    position:relative
}
.hero-visual:before {
    content:'';
    position:absolute;
    inset:8%;
    border:1px solid rgba(255,255,255,.4)
}
.hero-visual:after {
    content:'iCAD 2027';
    position:absolute;
    right:28px;
    top:26px;
    color:#fff;
    font-weight:700;
    letter-spacing:.08em;
    writing-mode:vertical-rl
}
.hero-quote {
    position:relative;
    z-index:1;
    color:#fff;
    max-width:500px
}
.hero-quote strong {
    display:block;
    font-family:'Josefin Sans';
    font-size:74px;
    line-height:.88;
    letter-spacing:-.06em
}
.hero-quote span {
    display:block;
    font-size:18px;
    margin-top:25px;
    max-width:360px
}
.section {
    padding:110px 42px
}
.section-inner {
    max-width:1356px;
    margin:auto
}
.intro {
    display:grid;
    grid-template-columns:.7fr 1.3fr;
    gap:80px
}
.intro h2 {
    font-size:clamp(46px,5vw,76px);
    line-height:.92;
    letter-spacing:-.06em;
    margin:0
}
.intro p {
    font-size:clamp(25px,2.3vw,37px);
    line-height:1.16;
    margin:0;
    max-width:850px
}
.section-head {
    display:flex;
    justify-content:space-between;
    align-items:end;
    margin-bottom:45px
}
.section-head h2 {
    font-size:clamp(48px,5.5vw,82px);
    line-height:.9;
    letter-spacing:-.06em;
    margin:0
}
.section-head p {
    max-width:430px;
    margin:0;
    font-size:17px;
    line-height:1.45
}
.edition {
    background:var(--navy);
    color:#fff
}
.edition-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:0
}
.edition-copy {
    padding:0 70px 0 0
}
.edition-copy h2 {
    font-size:clamp(58px,7vw,108px);
    line-height:.83;
    letter-spacing:-.07em;
    margin:0 0 30px
}
.edition-copy p {
    font-size:19px;
    line-height:1.55;
    max-width:590px;
    color:#e9e9ef
}
.edition-meta {
    display:flex;
    gap:40px;
    margin-top:40px
}
.edition-meta strong {
    display:block;
    font-size:16px
}
.edition-meta span {
    display:block;
    color:#aaaec1;
    margin-top:5px
}
.photo-grid {
    display:grid;
    grid-template-columns:1.3fr .7fr;
    grid-template-rows:270px 270px;
    gap:10px
}
.photo-placeholder {
    background:#1f264c;
    min-height:180px;
    display:flex;
    align-items:flex-end;
    padding:20px;
    position:relative;
    overflow:hidden
}
.photo-placeholder:nth-child(2) {
    background:#b99440
}
.photo-placeholder:nth-child(3) {
    background:#d8d4c5;
    color:var(--navy)
}
.photo-placeholder:nth-child(4) {
    background:#1f264c
}
.photo-placeholder:first-child {
    grid-row:span 2
}
.photo-placeholder:before {
    content:'';
    position:absolute;
    inset:16px;
    border:1px solid rgba(255,255,255,.45)
}
.photo-placeholder span {
    position:relative;
    font-size:12px;
    letter-spacing:.13em;
    font-weight:700;
    text-transform:uppercase
}
.speaker-section {
    background:var(--navy);
    color:var(--white)
}
.speaker-rail,.testimonial-rail {
    display:flex;
    gap:18px;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    padding-bottom:14px;
    scrollbar-width:thin
}
.speaker {
    scroll-snap-align:start;
    flex:0 0 245px;
    text-align:left;
    border:0;
    background:none;
    padding:0;
    cursor:pointer;
    color:var(--white)
}
.speaker-photo {
    height:320px;
    background:#deddd7;
    display:flex;
    align-items:center;
    justify-content:center;
    margin-bottom:16px;
    position:relative;
    overflow:hidden
}
.speaker-photo:before {
    content:'';
    position:absolute;
    width:130px;
    height:180px;
    background:#bbb9b0;
    border-radius:50% 50% 40% 40%;
    top:72px
}
.speaker-photo:after {
    content:'';
    position:absolute;
    bottom:0;
    width:100%;
    height:38%;
    background:#aaa89f
}
.speaker-photo span {
    position:relative;
    z-index:2;
    font-size:11px;
    letter-spacing:.1em;
    text-align:center;
    font-weight:700
}
.speaker-name {
    display:block;
    font-family:'Josefin Sans';
    font-size:21px;
    font-weight:600;
    line-height:1.05
}
.speaker-role,.speaker-org {
    display:block;
    font-size:13px;
    line-height:1.35;
    margin-top:6px;
    color:rgba(255,255,255,.78)
}
.speaker-org {
    color:var(--gold);
    font-weight:600
}
.speaker:hover .speaker-name {
    color:var(--gold)
}
.ideas {
    background:var(--navy);
    color:var(--white)
}
.idea-feature {
    display:grid;
    grid-template-columns:1.1fr .9fr;
    gap:0
}
.idea-copy {
    padding-right:70px
}
.idea-copy h2 {
    font-size:clamp(56px,7vw,108px);
    line-height:.84;
    letter-spacing:-.07em;
    margin:0 0 28px
}
.idea-copy p {
    font-size:20px;
    line-height:1.5;
    max-width:650px
}
.idea-media {
    min-height:420px;
    background:var(--navy);
    display:flex;
    align-items:center;
    justify-content:center;
    text-align:center
}
.idea-media strong {
    font-family:'Josefin Sans';
    font-size:50px;
    line-height:.9;
    max-width:430px
}
.tracks {
    background:var(--navy);
    color:var(--white)
}
.track-list {
    border-top:1px solid var(--line)
}
.track-row {
    display:grid;
    grid-template-columns:.75fr 1.25fr;
    gap:30px;
    padding:27px 0;
    border-bottom:1px solid var(--line);
    align-items:baseline
}
.track-row span {
    font-family:'Josefin Sans';
    font-size:clamp(24px,2.6vw,39px);
    letter-spacing:-.04em
}
.track-row em {
    font-style:normal;
    color:rgba(255,255,255,.78);
    font-size:17px
}
.track-row:hover span {
    color:var(--blue)
}
.testimonials {
    background:var(--navy);
    color:var(--white)
}
.testimonial {
    scroll-snap-align:start;
    flex:0 0 min(430px,78vw);
    background:#fff;
    border-top:5px solid var(--blue);
    padding:30px;
    min-height:245px;
    display:flex;
    flex-direction:column;
    justify-content:space-between
}
.testimonial p {
    font-family:'Josefin Sans';
    font-size:27px;
    line-height:1.05;
    letter-spacing:-.035em;
    margin:0
}
.testimonial div strong,.testimonial div span {
    display:block;
    font-size:13px
}
.testimonial div span {
    color:rgba(255,255,255,.62);
    margin-top:5px
}
.archive {
    background:var(--navy);
    color:#fff
}
.archive-list {
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:1px;
    background:#343650
}
.archive-item {
    background:var(--navy);
    padding:28px;
    min-height:210px;
    display:flex;
    flex-direction:column;
    justify-content:space-between
}
.archive-item .year {
    font-family:'Josefin Sans';
    font-size:56px;
    letter-spacing:-.06em
}
.archive-item p {
    margin:0;
    color:#c8cad4;
    line-height:1.4
}
.final-cta {
    padding:130px 42px;
    background:var(--blue);
    color:#fff
}
.final-cta .section-inner {
    display:flex;
    align-items:end;
    justify-content:space-between;
    gap:50px
}
.final-cta h2 {
    font-size:clamp(70px,9vw,140px);
    line-height:.8;
    letter-spacing:-.075em;
    margin:0;
    max-width:900px
}
.final-cta .button {
    background:var(--gold);
    color:var(--navy);
    border-color:var(--gold)
}
.site-footer {
    background:var(--navy);
    color:var(--white);
    border-top:1px solid var(--line)
}
.footer-top {
    max-width:1356px;
    margin:auto;
    padding:60px 42px;
    display:grid;
    grid-template-columns:1.5fr .75fr .75fr;
    gap:50px
}
.footer-top img {
    width:240px;
    display:block
}
.footer-top p {
    margin:14px 0 0;
    color:rgba(255,255,255,.72)
}
.footer-top strong {
    display:block;
    margin-top:14px;
    font-size:18px
}
.footer-bottom {
    border-top:1px solid var(--line);
    padding:18px 42px;
    display:flex;
    justify-content:space-between;
    color:rgba(255,255,255,.68);
    font-size:12px;
    max-width:none
}
.modal {
    position:fixed;
    inset:0;
    background:rgba(31,38,76,.72);
    z-index:100;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:24px;
    opacity:0;
    visibility:hidden;
    transition:.2s
}
.modal.open {
    opacity:1;
    visibility:visible
}
.modal-card {
    background:var(--paper);
    max-width:780px;
    width:100%;
    display:grid;
    grid-template-columns:260px 1fr;
    position:relative
}
.modal-photo {
    background:#d9d7ce;
    min-height:400px;
    display:flex;
    align-items:center;
    justify-content:center;
    font-weight:700;
    letter-spacing:.1em
}
.modal-content {
    padding:40px
}
.modal-content small {
    color:var(--gold);
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.1em
}
.modal-content h2 {
    font-size:45px;
    line-height:.95;
    letter-spacing:-.05em;
    margin:16px 0 10px
}
.modal-content .role {
    font-size:16px;
    font-weight:700;
    color:var(--blue)
}
.modal-content p {
    font-size:17px;
    line-height:1.5;
    color:rgba(255,255,255,.78)
}
.modal-close {
    position:absolute;
    right:16px;
    top:12px;
    border:0;
    background:none;
    font-size:30px;
    cursor:pointer;
    color:var(--navy)
}
.page-hero {
    padding:120px 42px 90px;
    background:var(--navy);
    color:#fff
}
.page-hero .section-inner {
    max-width:1356px
}
.page-hero h1 {
    color:#fff;
    max-width:1000px;
    margin:25px 0 0
}
.page-hero p {
    font-size:22px;
    max-width:700px;
    line-height:1.45
}
.content-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:70px
}
.content-block h2 {
    font-size:48px;
    letter-spacing:-.05em;
    line-height:.95
}
.content-block p,.content-block li {
    font-size:18px;
    line-height:1.6
}
.fee-table {
    width:100%;
    border-collapse:collapse;
    margin-top:30px
}
.fee-table th,.fee-table td {
    text-align:left;
    padding:18px 10px;
    border-bottom:1px solid var(--line)
}
.fee-table th {
    font-size:13px;
    text-transform:uppercase;
    letter-spacing:.08em
}
.form-placeholder {
    background:#fff;
    border:1px solid var(--line);
    padding:35px
}
.form-placeholder input,.form-placeholder select {
    display:block;
    width:100%;
    border:1px solid var(--line);
    padding:15px;
    margin:10px 0 18px;
    background:var(--paper)
}
@media(max-width:1050px) {
    .header-inner {
        padding:0 22px;
        gap:20px
    }
    .desktop-nav {
        gap:0
    }
    .nav-item>button {
        padding:30px 9px
    }
    .brand {
        width:190px
    }
    .hero {
        grid-template-columns:1fr
    }
    .hero-visual {
        min-height:430px
    }
    .intro,.edition-grid,.idea-feature,.content-grid {
        grid-template-columns:1fr
    }
    .edition-copy,.idea-copy {
        padding-right:0;
        margin-bottom:55px
    }
    .archive-list {
        grid-template-columns:1fr 1fr
    }
}
@media (max-width: 760px) {
    body {
        padding-top: 76px;
    }   
 .header-inner {
        height:76px
    }
    .brand {
        width:165px
    }
    .desktop-nav,.tickets-btn {
        display:none
    }
    .mobile-toggle {
        margin-left:auto;
        display:flex;
        width:46px;
        height:42px;
        border:1px solid rgba(27,36,82,.25);
        background:none;
        align-items:center;
        justify-content:center;
        flex-direction:column;
        gap:6px
    }
    .mobile-toggle span {
        display:block;
        width:20px;
        height:2px;
        background:var(--navy)
    }
    .mobile-menu {
        display:block;
        position:fixed;
        top:76px;
        left:0;
        right:0;
        bottom:0;
        background:var(--paper);
        z-index:45;
        transform:translateY(-110%);
        transition:.25s;
        overflow:auto
    }
    .mobile-menu.open {
        transform:none
    }
    .mobile-menu-inner {
        padding:25px
    }
    .mobile-ticket {
        display:block;
        background:var(--blue);
        color:#fff;
        text-align:center;
        padding:17px;
        font-weight:700;
        margin-bottom:12px
    }
    .mobile-menu details {
        border-bottom:1px solid var(--line)
    }
    .mobile-menu summary {
        list-style:none;
        font-family:'Josefin Sans';
        font-size:31px;
        font-weight:600;
        padding:19px 0;
        cursor:pointer
    }
    .mobile-menu summary::-webkit-details-marker {
        display:none
    }
    .mobile-menu details a {
        display:block;
        padding:11px 0 16px;
        font-weight:600;
        color:rgba(255,255,255,.82)
    }
    .section {
        padding:80px 22px
    }
    .hero-copy {
        padding:70px 22px 70px
    }
    .hero-visual {
        min-height:360px;
        padding:25px
    }
    .hero-quote strong {
        font-size:55px
    }
    .hero-meta {
        gap:15px;
        flex-wrap:wrap;
        font-size:12px
    }
    .hero-actions {
        flex-wrap:wrap
    }
    .photo-grid {
        grid-template-columns:1fr;
        grid-template-rows:220px 160px 160px 160px
    }
    .photo-placeholder:first-child {
        grid-row:auto
    }
    .track-row {
        grid-template-columns:1fr;
        gap:9px
    }
    .final-cta {
        padding:90px 22px
    }
    .final-cta .section-inner {
        display:block
    }
    .final-cta .button {
        margin-top:35px
    }
    .footer-top {
        padding:50px 22px;
        grid-template-columns:1fr
    }
    .footer-bottom {
        padding:18px 22px;
        display:grid;
        gap:8px
    }
    .modal-card {
        grid-template-columns:1fr
    }
    .modal-photo {
        min-height:190px
    }
    .modal-content {
        padding:28px
    }
    .modal-content h2 {
        font-size:37px
    }
    .page-hero {
        padding:85px 22px 65px
    }
    .page-hero h1 {
        font-size:58px
    }
    .content-grid {
        gap:40px
    }
    .archive-list {
        grid-template-columns:1fr
    }
    .speaker {
        flex-basis:220px
    }
    .speaker-photo {
        height:290px
    }
}
/* Asset-linked media: replace files in /assets without changing markup. */
.photo-placeholder {
    padding:0;
    background:var(--navy)!important;
    color:#fff;
    display:block
}
.photo-placeholder img {
    width:100%;
    height:100%;
    display:block;
    object-fit:cover
}
.photo-placeholder figcaption {
    position:absolute;
    left:20px;
    bottom:18px;
    z-index:2;
    font-size:12px;
    letter-spacing:.13em;
    font-weight:700;
    text-transform:uppercase;
    background:rgba(31,38,76,.78);
    padding:7px 9px
}
.speaker-photo img {
    width:100%;
    height:100%;
    display:block;
    object-fit:cover
}
.speaker-photo:before,.speaker-photo:after {
    display:none
}
.modal-photo {
    padding:0;
    overflow:hidden
}
.modal-photo img {
    width:100%;
    height:100%;
    min-height:400px;
    display:block;
    object-fit:cover
}
.idea-media {
    position:relative;
    overflow:hidden
}
.idea-media img {
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    object-fit:cover;
    opacity:.55
}
.idea-media strong {
    position:relative;
    z-index:1
}
.testimonial {
    position:relative
}
.testimonial-avatar {
    width:54px;
    height:54px;
    border-radius:50%;
    object-fit:cover;
    margin-bottom:22px
}
.keynote-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
    padding:8px
}
.keynote-grid figure {
    margin:0;
    position:relative;
    overflow:hidden;
    min-height:210px
}
.keynote-grid img {
    width:100%;
    height:100%;
    object-fit:cover;
    display:block
}
.keynote-grid figcaption {
    position:absolute;
    left:14px;
    bottom:14px;
    background:rgba(31,38,76,.82);
    color:#fff;
    padding:7px 9px;
    font-size:12px;
    text-transform:uppercase;
    letter-spacing:.1em;
    font-weight:700
}
.partner-assets {
    background:#fff
}
.partner-rail {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:1px;
    background:var(--line)
}
.partner-mark {
    background:var(--paper);
    min-height:190px;
    padding:20px;
    display:flex;
    flex-direction:column;
    justify-content:space-between
}
.partner-mark img {
    width:100%;
    height:110px;
    object-fit:contain;
    display:block
}
.partner-mark span {
    font-size:13px;
    font-weight:700
}
@media(max-width:760px) {
    .keynote-grid {
        grid-template-columns:1fr
    }
    .modal-photo img {
        min-height:190px
    }
    .partner-rail {
        grid-template-columns:1fr 1fr
    }
}
/* Ticketing / checkout */
.ticket-hero {
    background:var(--blue);
    color:#fff;
    padding:56px 42px 75px
}
.ticket-hero-banner {
    width:100%;
    height:230px;
    border-radius:20px;
    overflow:hidden;
    border:2px solid rgba(255, 255, 255, 1);
    margin:0 0 46px
}
.ticket-hero-banner img {
    width:100%;
    height:100%;
    object-fit:cover;
    display:block
}
.ticket-hero-grid {
    display:grid;
    grid-template-columns:1.35fr .65fr;
    gap:70px;
    align-items:end
}
.ticket-hero h1 {
    color:#fff;
    font-size:clamp(68px,8vw,132px);
    margin:24px 0 30px
}
.ticket-hero p {
    font-size:22px;
    line-height:1.35;
    max-width:760px
}
.ticket-hero .hero-meta {
    margin-top:42px
}
.ticket-hero-side {
    border-left:1px solid rgba(255,255,255,.35);
    padding-left:32px
}
.ticket-hero-side span {
    font-size:12px;
    letter-spacing:.14em;
    font-weight:700
}
.ticket-hero-side strong {
    display:block;
    font-family:'Josefin Sans';
    font-size:52px;
    line-height:.88;
    letter-spacing:-.06em;
    margin:16px 0 25px
}
.ticket-hero-side small {
    font-size:14px;
    line-height:1.5;
    display:block;
    max-width:300px;
    color:#e5e6ff
}
.ticket-section {
    background:var(--paper)
}
.ticket-grid {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:1px;
    background:var(--line);
    align-items:stretch
}
.ticket-card {
    background:#fff;
    padding:32px;
    display:flex;
    flex-direction:column;
    min-height:610px
}
.ticket-card.featured {
    background:var(--navy);
    color:#fff
}
.ticket-top {
    display:flex;
    justify-content:space-between;
    gap:15px;
    align-items:center;
    min-height:25px
}
.ticket-label,.ticket-badge {
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.1em;
    font-weight:700
}
.ticket-badge {
    color:var(--gold)
}
.ticket-card h3 {
    font-size:40px;
    line-height:.9;
    letter-spacing:-.05em;
    margin:38px 0 22px
}
.ticket-price {
    font-family:'Josefin Sans';
    font-size:54px;
    font-weight:600;
    letter-spacing:-.06em
}
.ticket-price small {
    font-family:'DM Sans';
    font-size:12px;
    letter-spacing:.1em;
    text-transform:uppercase;
    font-weight:700
}
.ticket-later {
    font-size:13px;
    color:#6c6d74;
    margin-top:5px
}
.featured .ticket-later {
    color:#c8cad4
}
.ticket-card ul {
    list-style:none;
    padding:0;
    margin:30px 0;
    flex:1;
    border-top:1px solid var(--line)
}
.featured ul {
    border-color:#353753
}
.ticket-card li {
    padding:12px 0;
    border-bottom:1px solid var(--line);
    font-size:15px;
    line-height:1.35
}
.featured li {
    border-color:#353753
}
.ticket-card .button {
    align-self:flex-start
}
.ticket-note {
    display:flex;
    justify-content:space-between;
    gap:30px;
    border-top:1px solid var(--line);
    padding:22px 0;
    font-size:14px
}
.ticket-note strong {
    color:var(--blue)
}
.included {
    background:#fff
}
.included-grid {
    display:grid;
    grid-template-columns:.7fr 1.3fr;
    gap:100px
}
.included h2 {
    font-size:clamp(55px,6vw,90px);
    line-height:.85;
    letter-spacing:-.07em;
    margin:20px 0 0
}
.included-list>div {
    border-top:1px solid var(--line);
    padding:24px 0
}
.included-list strong {
    font-family:'Josefin Sans';
    font-size:27px;
    letter-spacing:-.03em
}
.included-list p {
    font-size:17px;
    line-height:1.5;
    max-width:720px;
    margin:10px 0 0;
    color:#55565f
}
.ticket-faq {
    background:var(--paper)
}
.faq-list {
    border-top:1px solid var(--line)
}
.faq-list details {
    border-bottom:1px solid var(--line)
}
.faq-list summary {
    list-style:none;
    cursor:pointer;
    padding:24px 0;
    font-family:'Josefin Sans';
    font-size:26px;
    font-weight:600
}
.faq-list summary::-webkit-details-marker {
    display:none
}
.faq-list summary:after {
    content:'+';
    float:right;
    font-family:'DM Sans';
    font-weight:400
}
.faq-list details[open] summary:after {
    content:'−'
}
.faq-list p {
    max-width:800px;
    font-size:17px;
    line-height:1.5;
    color:#55565f;
    padding:0 45px 25px 0;
    margin:0
}
.checkout-page {
    background:var(--paper);
    min-height:calc(100vh - 88px);
    padding:70px 42px 100px
}
.checkout-grid {
    display:grid;
    grid-template-columns:1.2fr .8fr;
    gap:90px;
    align-items:start
}
.checkout-page h1 {
    font-size:clamp(60px,7vw,105px);
    margin:25px 0
}
.checkout-intro {
    font-size:19px;
    line-height:1.5;
    max-width:700px;
    color:#55565f
}
.checkout-form {
    background:#fff;
    border:1px solid var(--line);
    padding:32px;
    margin-top:40px
}
.checkout-row {
    margin-bottom:18px
}
.checkout-row.two {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:18px
}
.checkout-form label {
    font-size:12px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.07em
}
.checkout-form input,.checkout-form select {
    display:block;
    width:100%;
    margin-top:8px;
    padding:15px;
    border:1px solid var(--line);
    background:var(--paper);
    font:inherit;
    font-size:15px
}
.checkout-check {
    padding:15px 0 25px;
    font-size:13px;
    text-transform:none;
    letter-spacing:0
}
.checkout-check input {
    display:inline-block;
    width:auto;
    margin-right:7px
}
.checkout-pay {
    width:100%;
    justify-content:center;
    cursor:pointer
}
.order-summary {
    background:var(--navy);
    color:#fff;
    padding:34px;
    position:sticky;
    top:115px
}
.order-summary h2 {
    font-size:45px;
    line-height:.9;
    letter-spacing:-.05em;
    margin:22px 0 35px
}
.summary-line {
    display:flex;
    justify-content:space-between;
    border-top:1px solid #343650;
    border-bottom:1px solid #343650;
    padding:18px 0;
    font-size:16px
}
.summary-line strong {
    font-family:'Josefin Sans';
    font-size:24px
}
.summary-meta {
    font-size:14px;
    line-height:1.5;
    color:#c9cad4;
    padding:22px 0
}
.order-summary hr {
    border:0;
    border-top:1px solid #343650
}
.summary-includes {
    display:grid;
    gap:10px;
    padding:20px 0 30px;
    font-size:14px;
    color:#d8d9e0
}
.summary-includes strong {
    color:#fff
}
.text-link {
    font-weight:700;
    font-size:14px;
    color:#fff
}
.text-link:hover {
    color:#cfd1ff
}
@media(max-width:1050px) {
    .ticket-grid {
        grid-template-columns:1fr
    }
    .ticket-card {
        min-height:auto
    }
    .ticket-hero-grid,.included-grid,.checkout-grid {
        grid-template-columns:1fr
    }
    .ticket-hero-side {
        border-left:0;
        border-top:1px solid rgba(255,255,255,.35);
        padding:30px 0 0
    }
    .order-summary {
        position:static
    }
    .ticket-note {
        display:block
    }
    .ticket-note span {
        display:block;
        margin-top:8px
    }
}
@media(max-width:760px) {
    .ticket-hero {
        padding:52px 22px 55px
    }
    .ticket-hero-banner {
        height:150px;
        margin-bottom:32px
    }
    .ticket-hero h1 {
        font-size:58px
    }
    .ticket-hero p {
        font-size:18px
    }
    .ticket-section {
        padding-top:65px
    }
    .ticket-card {
        padding:25px
    }
    .ticket-card h3 {
        font-size:35px
    }
    .ticket-price {
        font-size:46px
    }
    .checkout-page {
        padding:55px 22px 80px
    }
    .checkout-page h1 {
        font-size:55px
    }
    .checkout-row.two {
        grid-template-columns:1fr
    }
    .checkout-form {
        padding:22px
    }
    .order-summary {
        padding:26px
    }
    .order-summary h2 {
        font-size:38px
    }
}
/* 2027 refinement: asset-driven archive, speaker grid and image-led page heroes */
.page-hero {
    display:grid;
    grid-template-columns:1.1fr .9fr;
    gap:0;
    align-items:stretch;
    padding:0;
    background:var(--navy);
    overflow:hidden
}
.page-hero .section-inner {
    padding:60px 42px;
    margin:0;
    max-width:none;
    display:flex;
    flex-direction:column;
    justify-content:center
}
.page-hero-media {
    min-height:430px;
    background:#e7e5dc;
    position:relative;
    overflow:hidden
}
.page-hero-media img {
    width:100%;
    height:100%;
    object-fit:cover;
    display:block
}
.page-hero-media:after {
    content:'IMAGE PLACEHOLDER';
    position:absolute;
    right:22px;
    bottom:18px;
    font-size:11px;
    letter-spacing:.14em;
    font-weight:700;
    color:var(--navy);
    background:rgba(255,255,255,.75);
    padding:7px 9px
}
.speaker-grid {
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:34px 18px
}
.speaker-grid .speaker {
    width:100%;
    flex:none
}
.speaker-grid .speaker-photo {
    height:auto;
    aspect-ratio:1/1;
    border-radius:18px;
    margin-bottom:14px
}
.speaker-grid .speaker-photo img {
    border-radius:18px
}
.speaker-grid .speaker-name {
    font-size:20px
}
.speaker-grid .speaker-role,.speaker-grid .speaker-org {
    font-size:12px
}
.speaker-note {
    margin-top:28px;
    color:#686971;
    font-size:14px;
    line-height:1.5;
    max-width:780px
}
.archive-item {
    transition:background .2s,transform .2s
}
.archive-item:hover {
    background:#1f264c;
    transform:translateY(-3px)
}
.archive-item a {
    color:inherit;
    text-decoration:none;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    height:100%
}
.archive-hero {
    background:var(--navy);
    color:#fff
}
.archive-hero .section-inner {
    padding:90px 42px
}
.archive-photo-grid {
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:12px
}
.archive-photo {
    aspect-ratio:1/1;
    overflow:hidden;
    background:#e7e5dc
}
.archive-photo img {
    width:100%;
    height:100%;
    object-fit:cover;
    display:block
}
.archive-intro {
    display:grid;
    grid-template-columns:.65fr 1.35fr;
    gap:80px
}
.archive-intro h2 {
    font-size:clamp(50px,6vw,92px);
    line-height:.86;
    letter-spacing:-.07em;
    margin:0
}
.archive-intro p {
    font-size:20px;
    line-height:1.55;
    max-width:800px
}
.archive-meta {
    display:flex;
    gap:45px;
    margin-top:30px
}
.archive-meta strong,.archive-meta span {
    display:block
}
.archive-meta span {
    color:#6a6b73;
    margin-top:4px
}
.submission-box {
    background:var(--navy);
    color:#fff;
    padding:38px;
    margin-top:55px;
    display:grid;
    grid-template-columns:1fr auto;
    gap:40px;
    align-items:center
}
.submission-box h3 {
    font-size:42px;
    line-height:.95;
    margin:0 0 12px
}
.submission-box p {
    margin:0;
    color:#d6d7df;
    max-width:700px;
    line-height:1.5
}
.submission-box .button {
    background:#fff;
    color:var(--navy);
    border-color:#fff
}
.submission-box .button:hover {
    background:var(--gold);
    color:#fff;
    border-color:var(--gold)
}
@media(max-width:1050px) {
    .page-hero {
        grid-template-columns:1fr
    }
    .page-hero-media {
        min-height:360px
    }
    .speaker-grid {
        grid-template-columns:repeat(2,1fr)
    }
    .archive-photo-grid {
        grid-template-columns:repeat(2,1fr)
    }
    .archive-intro {
        grid-template-columns:1fr;
        gap:35px
    }
    .submission-box {
        grid-template-columns:1fr
    }
}
@media(max-width:760px) {
    .page-hero .section-inner {
        padding:55px 22px
    }
    .page-hero-media {
        min-height:280px
    }
    .speaker-grid {
        grid-template-columns:1fr 1fr;
        gap:28px 12px
    }
    .speaker-grid .speaker-photo {
        border-radius:14px
    }
    .archive-photo-grid {
        grid-template-columns:1fr 1fr
    }
    .archive-hero .section-inner {
        padding:70px 22px 55px
    }
    .archive-intro {
        gap:25px
    }
    .archive-intro p {
        font-size:17px
    }
    .archive-meta {
        gap:25px;
        flex-wrap:wrap
    }
    .submission-box {
        padding:28px
    }
    .submission-box h3 {
        font-size:34px
    }
}
/* Media and layout cleanup */
.hero-video {
    padding:0;
    align-items:stretch;
    justify-content:stretch;
    min-height:650px;
    background:var(--navy)
}
.hero-video-media {
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    object-fit:cover;
    display:block
}
.hero-video:before {
    z-index:2;
    pointer-events:none
}
.hero-video:after {
    z-index:3
}
.hero-video .hero-quote {
    z-index:4;
    padding:42px
}
.page-hero-media {
    min-height:430px;
    aspect-ratio:16/9
}
.page-hero-media img {
    object-fit:cover
}
.archive-photo {
    aspect-ratio:4/3
}
.speaker-grid .speaker-photo {
    aspect-ratio:1/1;
    min-height:0
}
.photo-placeholder {
    aspect-ratio:4/3
}
.hero-theme,.page-hero p,.archive-intro p,.submission-box p,.section-head p,.speaker-note {
    overflow-wrap:break-word
}
.hero-copy h1 {
    max-width:860px
}
@media(max-width:1050px) {
    .hero {
        grid-template-columns:1fr
    }
    .hero-copy {
        padding-bottom:60px
    }
    .hero-video {
        min-height:520px
    }
    .page-hero-media {
        min-height:340px
    }
}
@media(max-width:760px) {
    .header-inner {
        height:76px;
        padding:0 22px
    }
    .brand {
        width:205px
    }
    .mega {
        top:76px
    }
    .hero {
        min-height:auto
    }
    .hero-copy {
        padding:58px 22px 52px
    }
    .hero-video {
        min-height:360px
    }
    .hero-video .hero-quote {
        padding:24px
    }
    .hero-video .hero-quote strong {
        font-size:48px
    }
    .page-hero-media {
        min-height:250px;
        aspect-ratio:16/10
    }
    .photo-placeholder {
        aspect-ratio:4/3
    }
    .archive-photo {
        aspect-ratio:4/3
    }
}
.modal-photo img {
    width:100%;
    height:100%;
    object-fit:cover;
    display:block
}
.modal-photo {
    overflow:hidden
}
.archive-item a {
    color:inherit
}
.speaker-grid .speaker {
    min-width:0
}
.speaker-grid .speaker-photo {
    background:#e7e5dc
}
.speaker-grid .speaker-photo img {
    object-fit:cover
}
.card-icon {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:44px;
    height:44px;
    border:1px solid currentColor;
    border-radius:50%;
    font-size:20px;
    line-height:1;
    margin-bottom:22px
}
.visual-card {
    padding:30px;
    border:1px solid rgba(31,38,76,.14);
    border-radius:18px;
    background:#fff;
    min-height:190px
}
.card-grid {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:18px
}
.people-grid {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:24px
}
.person-card {
    display:flex;
    align-items:center;
    gap:22px;
    padding:22px;
    border:1px solid rgba(31,38,76,.14);
    border-radius:18px
}
.person-photo {
    width:112px;
    height:112px;
    border-radius:18px;
    overflow:hidden;
    flex:0 0 auto
}
.person-photo img {
    width:100%;
    height:100%;
    object-fit:cover;
    display:block
}
@media(max-width:800px) {
    .card-grid,.people-grid {
        grid-template-columns:1fr
    }
    .person-card {
        align-items:flex-start
    }
}
/* Visual programme and publication cards */
.programme-card-grid,.keynote-card-grid,.publication-grid {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:22px
}
.programme-card {
    display:block;
    background:#fff;
    border:1px solid var(--line);
    border-radius:18px;
    overflow:hidden;
    color:inherit;
    transition:transform .22s ease,box-shadow .22s ease;
    border-radius:18px
}
.programme-card:hover {
    transform:translateY(-5px);
    box-shadow:0 18px 40px rgba(31,38,76,.10)
}
.programme-card>img,.keynote-card-grid article>img,.publication-card>img {
    width:100%;
    height:230px;
    object-fit:cover;
    display:block
}
.programme-card-body {
    padding:26px
}
.programme-card h3,.keynote-card-grid h3,.publication-card h3 {
    font-family:'Josefin Sans';
    font-size:28px;
    line-height:1.02;
    letter-spacing:-.04em;
    margin:0 0 12px
}
.programme-card p,.keynote-card-grid p,.publication-card p {
    line-height:1.5;
    margin:0;
    color:#5d5e66
}
.two-up {
    grid-template-columns:repeat(2,minmax(0,1fr))
}
.award-grid {
    grid-template-columns:repeat(4,minmax(0,1fr))
}
.ideas .section-head {
    color:#fff
}
.keynote-card-grid {
    grid-template-columns:repeat(2,minmax(0,1fr))
}
.keynote-card-grid article {
    background:#fff;
    color:var(--ink);
    border-radius:18px;
    overflow:hidden
}
.keynote-card-grid article>div {
    padding:26px
}
.publication-card {
    border:1px solid var(--line);
    border-radius:18px;
    background:#fff;
    text-align:left;
    padding:0;
    overflow:hidden;
    cursor:pointer;
    color:var(--ink);
    transition:transform .22s ease,box-shadow .22s ease
}
.publication-card:hover {
    transform:translateY(-5px);
    box-shadow:0 18px 40px rgba(31,38,76,.10)
}
.publication-card .card-icon,.publication-card h3,.publication-card p {
    margin-left:26px;
    margin-right:26px
}
.publication-card .card-icon {
    margin-top:22px
}
.publication-card h3 {
    margin-bottom:10px
}
.publication-card p {
    margin-bottom:26px
}
.contact-layout {
    display:grid;
    grid-template-columns:.9fr 1.1fr;
    gap:70px
}
.contact-details {
    margin-top:35px;
    color:#555762
}
.contact-form {
    display:grid;
    gap:18px;
    background:#fff;
    border:1px solid var(--line);
    border-radius:18px;
    padding:30px
}
.contact-form label {
    display:grid;
    gap:8px;
    font-weight:700;
    font-size:13px
}
.contact-form input,.contact-form textarea {
    width:100%;
    border:1px solid #cfcfc7;
    background:var(--paper);
    padding:14px 15px;
    font:inherit;
    resize:vertical
}
.contact-form input:focus,.contact-form textarea:focus {
    outline:2px solid rgba(31,38,76,.18);
    border-color:var(--blue)
}
.icad-loader-seen .site-loader {
    display:none !important
}

.site-loader {
    position:fixed;
    inset:0;
    background:var(--navy);
    z-index:1000;
    display:flex;
    align-items:center;
    justify-content:center;
    transition:opacity .22s ease,visibility .22s ease
}

.site-loader.is-hidden {
    opacity:0;
    visibility:hidden;
    pointer-events:none
}

.loader-mark {
    width:120px;
    text-align:center
}

.loader-ring {
    width:96px;
    height:96px;
    margin:0 auto;
    position:relative
}

.loader-progress {
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    transform:rotate(-90deg)
}

.loader-progress-track,
.loader-progress-value {
    fill:none;
    stroke-width:1.4
}

.loader-progress-track {
    stroke:rgba(255,255,255,.16)
}

.loader-progress-value {
    stroke:var(--gold);
    stroke-linecap:round;
    transition:stroke-dashoffset .04s linear
}

.loader-mark .loader-logo {
    position:absolute;
    width:62px;
    height:62px;
    object-fit:contain;
    display:block;
    top:17px;
    left:17px;
    margin:0;
    animation:none !important;
    transform:none !important
}

.loader-percent {
    margin-top:12px;
    font:700 12px 'Josefin Sans';
    letter-spacing:.1em;
    color:#fff
}

.content-modal {
    position:fixed;
    inset:0;
    background:rgba(31,38,76,.72);
    z-index:120;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:24px;
    opacity:0;
    visibility:hidden;
    transition:.2s
}
.content-modal.open {
    opacity:1;
    visibility:visible
}
.content-modal-card {
    background:var(--paper);
    max-width:650px;
    width:100%;
    padding:45px;
    position:relative
}
.content-modal-close {
    position:absolute;
    right:15px;
    top:12px;
    border:0;
    background:none;
    font-size:34px;
    cursor:pointer
}
.content-modal-card h2 {
    font-size:48px;
    line-height:.95;
    letter-spacing:-.05em
}
.content-modal-card p {
    font-size:18px;
    line-height:1.55
}
@media(max-width:1050px) {
    .programme-card-grid {
        grid-template-columns:repeat(2,minmax(0,1fr))
    }
    .award-grid {
        grid-template-columns:repeat(2,minmax(0,1fr))
    }
    .contact-layout {
        grid-template-columns:1fr;
        gap:40px
    }
}
@media(max-width:700px) {
    .programme-card-grid,.two-up,.keynote-card-grid,.publication-grid,.award-grid {
        grid-template-columns:1fr
    }
    .programme-card>img,.keynote-card-grid article>img,.publication-card>img {
        height:210px
    }
    .contact-form {
        padding:22px
    }
    .content-modal-card {
        padding:30px
    }
    .content-modal-card h2 {
        font-size:38px
    }
}
/* Requested homepage counters */
.home-stats {
    background:var(--navy);
    color:#fff;
    border-top:1px solid rgba(255,255,255,.14);
    border-bottom:1px solid rgba(255,255,255,.14)
}
.home-stats-inner {
    display:grid;
    grid-template-columns:repeat(4,1fr);
    max-width:1600px;
    margin:0 auto;
    padding:0 42px
}
.home-stat {
    padding:34px 24px 38px;
    border-right:1px solid rgba(255,255,255,.18)
}
.home-stat:first-child {
    padding-left:0
}
.home-stat:last-child {
    border-right:0;
    padding-right:0
}
.home-stat .stat-number {
    display:block;
    font-family:'Josefin Sans';
    font-size:clamp(48px,5vw,78px);
    line-height:.9;
    letter-spacing:-.07em;
    font-weight:600;
    margin-bottom:12px
}
.home-stat span {
    display:block;
    font-size:12px;
    text-transform:uppercase;
    letter-spacing:.11em;
    font-weight:700;
    line-height:1.35;
    max-width:230px;
    color:#b99440
}
@media(max-width:1050px) {
    .home-stats-inner {
        grid-template-columns:repeat(2,1fr);
        padding:0 42px
    }
    .home-stat:nth-child(2) {
        border-right:0
    }
    .home-stat:nth-child(3),.home-stat:nth-child(4) {
        border-top:1px solid rgba(255,255,255,.18)
    }
}
@media(max-width:760px) {
    .home-stats-inner {
        grid-template-columns:1fr 1fr;
        padding:0 22px
    }
    .home-stat {
        padding:26px 16px 28px
    }
    .home-stat:first-child {
        padding-left:0
    }
    .home-stat:nth-child(2) {
        padding-right:0
    }
    .home-stat:nth-child(3) {
        padding-left:0
    }
    .home-stat:nth-child(4) {
        padding-right:0
    }
    .home-stat .stat-number {
        font-size:42px
    }
    .home-stat span {
        font-size:10px
    }
}
.speaker-section .section-inner {
    max-width:1220px;
}
@media(max-width:1050px) {
    .speaker-grid {
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:28px 14px
    }
    .speaker-grid .speaker-name {
        font-size:clamp(15px,2vw,21px)
    }
    .speaker-grid .speaker-role,.speaker-grid .speaker-org {
        font-size:12px
    }
}
@media(max-width:760px) {
    .speaker-grid {
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:24px 8px
    }
    .speaker-grid .speaker-name {
        font-size:clamp(12px,3.2vw,18px)
    }
    .speaker-grid .speaker-role,.speaker-grid .speaker-org {
        font-size:10px;
        line-height:1.3
    }
    .speaker-grid .speaker-photo {
        margin-bottom:10px
    }
}
/* Speaker detail modal: text-only, so it never shows a broken or mismatched portrait. */
.modal-card {
    grid-template-columns:1fr
}
.modal-content {
    padding:48px
}
.modal-content h2 {
    margin-top:0
}
.modal-content .org {
    font-size:16px;
    line-height:1.35;
    margin:-10px 0 18px;
    color:rgba(255,255,255,.78)
}


/* ============================================================================
   HOMEPAGE — CONTENT SPACING, SPEAKERS, ACCOMMODATION, VENUE & REVEALS
   ============================================================================ */

.section-inner {
    width: min(100%, 1356px);
    margin: 0 auto;
}

.section-head {
    align-items: end;
    column-gap: 70px;
    row-gap: 28px;
}

.section-head > div {
    min-width: 0;
}

.section-head h2,
.intro h2,
.edition-copy h2,
.idea-copy h2,
.final-cta h2,
.current-speakers h2,
.accommodation-section h2,
.venue-section h2 {
    margin-top: 18px;
    margin-bottom: 0;
}

.section-head > p {
    margin: 0;
    max-width: 650px;
}

.content-block h2 {
    margin-top: 18px;
    margin-bottom: 24px;
}

.content-block p + p {
    margin-top: 18px;
}

.eyebrow {
    display: block;
    margin-bottom: 0;
    line-height: 1.2;
}

.hero-copy h1,
.page-hero h1 {
    margin-bottom: 0;
}

.hero-theme {
    margin-top: 24px;
    line-height: 1.45;
    max-width: 680px;
}

.hero-meta {
    margin-top: 26px;
}

.hero-actions {
    margin-top: 30px;
}

.track-row span,
.track-row em {
    min-width: 0;
    overflow-wrap: anywhere;
}

/* Current / new speakers. */
.current-speaker-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 34px 22px;
    margin-top: 54px;
}

.current-speaker-card {
    width: 100%;
    min-width: 0;
    text-align: left;
}

.current-speaker-card .speaker-photo {
    width:300px;
    height:400px;
    aspect-ratio:auto;
    margin-bottom:16px;
    border-radius:18px;
}

.current-speaker-card .speaker-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.current-speaker-card .speaker-name,
.current-speaker-card .speaker-role,
.current-speaker-card .speaker-org {
    display: block;
    overflow-wrap: anywhere;
}

.current-speaker-card .speaker-name {
    font-size: clamp(18px, 2vw, 25px);
    line-height: 1.08;
    margin-bottom: 7px;
}

.current-speaker-card .speaker-role {
    font-size: 13px;
    line-height: 1.35;
    font-weight: 700;
    color: var(--blue);
}

.current-speaker-card .speaker-org {
    margin-top: 4px;
    font-size: 12px;
    line-height: 1.35;
    color: #5d5e66;
}

/* Past speakers — continuous horizontal movement from left to right. */
.past-speaker-rail {
    width: 100vw;
    margin-left: calc(50% - 50vw);
    overflow: hidden;
    margin-top: 54px;
}

.past-speaker-track {
    display: flex;
    width: max-content;
    animation: pastSpeakersRight 70s linear infinite;
    will-change: transform;
}

.past-speaker-group {
    display: flex;
    flex: 0 0 auto;
    gap: 22px;
    padding-right: 22px;
}

.past-speaker-group .speaker {
    flex:0 0 180px;
    width:180px;
    min-width:0;
    text-align:left;
}

.past-speaker-group .speaker-photo {
    width:180px;
    height:250px;
    aspect-ratio:auto;
    margin-bottom:14px;
    border-radius:18px;
}

.past-speaker-group .speaker-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.past-speaker-group .speaker-name,
.past-speaker-group .speaker-role,
.past-speaker-group .speaker-org {
    display: block;
    overflow-wrap: anywhere;
}

.past-speaker-group .speaker-name {
    font-size: clamp(17px, 1.7vw, 23px);
    line-height: 1.08;
    margin-bottom: 7px;
}

.past-speaker-group .speaker-role {
    font-size: 12px;
    line-height: 1.35;
    font-weight: 700;
    color: var(--blue);
}

.past-speaker-group .speaker-org {
    margin-top: 4px;
    font-size: 11px;
    line-height: 1.35;
    color: #5d5e66;
}

@keyframes pastSpeakersRight {
    from {
        transform: translateX(-50%);
    }
    to {
        transform: translateX(0);
    }
}

.past-speaker-rail:hover .past-speaker-track,
.past-speaker-rail:focus-within .past-speaker-track {
    animation-play-state: paused;
}

/* Accommodation. */
.accommodation-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 22px;
    margin-top: 54px;
}

.accommodation-card {
    min-width: 0;
    overflow: hidden;
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 18px;
    transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}

.accommodation-card:hover,
.accommodation-card:focus-within {
    transform: translateY(-6px);
    box-shadow: 0 22px 40px rgba(0,0,0,.35);
    border-color: var(--gold);
}

.accommodation-card:hover .accommodation-image img {
    transform: scale(1.06);
}

.accommodation-image {
    width: 100%;
    aspect-ratio: 1 / 1;
    overflow: hidden;
}

.accommodation-image img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    transition: transform .4s ease;
}

.accommodation-body {
    padding:22px 22px 24px;
    color:#000;
}

.accommodation-body h3 {
    margin:0;
    color:#000;
    font-family:'Josefin Sans',sans-serif;
    font-size:clamp(22px,2vw,30px);
    line-height:1.05;
    letter-spacing:-.03em;
}

.accommodation-body p {
    margin:10px 0 0;
    color:#000;
    line-height:1.45;
}

.accommodation-body span {
    display: block;
    margin-top: 10px;
    color: #000;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
}

.accommodation-book {
    display: inline-flex;
    margin-top: 18px;
    padding: 12px 24px;
    border-radius: 999px;
    background: var(--gold);
    color: var(--navy);
    border: 1px solid var(--gold);
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
}

.accommodation-book:hover,
.accommodation-book:focus-visible {
    background: var(--navy);
    color: #fff;
    border-color: var(--navy);
}

/* Same fix as the GSS Member ticket button: keep the hover slide-in layer
   navy so it doesn't paint the white layer over our navy hover state. */
.accommodation-book::before {
    background: var(--navy);
}

/* Venue — 5:4 image with centered detail card underneath. */
.venue-feature {
    max-width:540px;
    margin:54px auto 0;
}

.venue-image {
    width:540px;
    max-width:100%;
    height:320px;
    aspect-ratio:auto;
    overflow:hidden;
    border-radius:18px;
    background:#e7e5dc;
}

.venue-image img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
}

.venue-details {
    margin:24px 0 0;
    width:100%;
    padding:0;
    text-align:center;
    background:transparent;
    border:0;
    border-radius:0;
    position:relative;
    color:#fff;
}

.venue-details h3 {
    margin: 14px 0 0;
    font-family: 'Josefin Sans', sans-serif;
    font-size: clamp(30px, 4vw, 52px);
    line-height: .98;
    letter-spacing: -.04em;
}

.venue-details p {
    margin: 12px 0 0;
    font-size: 18px;
    line-height: 1.4;
}

.venue-head {
    justify-content: flex-start;
}

.venue-details span {
    display: block;
    margin-top: 12px;
    color: var(--gold);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .02em;
    line-height: 1.45;
}

/* Scroll reveal. */
.reveal {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity .65s ease, transform .65s cubic-bezier(.22, 1, .36, 1);
}

.reveal.is-visible {
    opacity: 1;
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    .reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .past-speaker-track {
        animation: none;
        transform: translateX(-50%);
    }
}

/* Submission and nomination forms. */
.submission-section,
.nomination-section {
    background:var(--navy);
    color:#fff;
}

.submission-form {
    color:var(--navy);
}

.submission-form label,
.submission-form .form-section-title,
.submission-form .form-checkbox {
    color:var(--navy);
}

.submission-form small {
    color:#555761;
}

.submission-form input::placeholder,
.submission-form textarea::placeholder {
    color:#777982;
    opacity:1;
}


.submission-intro {
    padding-left: 24px;
}

.submission-form {
    max-width: 1000px;
    margin: 54px auto 0;
    padding: 34px;
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 18px;
}

.form-section-title {
    margin: 0 0 18px;
    padding-top: 8px;
    font-family: 'Josefin Sans', sans-serif;
    font-size: 28px;
    line-height: 1;
    letter-spacing: -.03em;
}

.form-section-title:not(:first-of-type) {
    margin-top: 34px;
    border-top: 1px solid var(--line);
    padding-top: 30px;
}

.form-grid {
    display: grid;
    gap: 18px;
}

.form-grid.two-columns {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.submission-form label {
    display: grid;
    gap: 8px;
    font-size: 13px;
    line-height: 1.35;
    font-weight: 700;
}

.submission-form input,
.submission-form select,
.submission-form textarea {
    width: 100%;
    min-width: 0;
    border: 1px solid #cfcfc7;
    border-radius: 0;
    background: var(--paper);
    color: var(--ink);
    padding: 14px 15px;
    font: inherit;
    line-height: 1.4;
}

.submission-form textarea {
    resize: vertical;
}

.submission-form input:focus,
.submission-form select:focus,
.submission-form textarea:focus {
    outline: 2px solid rgba(31, 38, 76, .18);
    border-color: var(--blue);
}

.submission-form input[type='file'] {
    padding: 11px;
}

.submission-form small {
    display: block;
    margin-top: 2px;
    color: #62636b;
    font-size: 12px;
    line-height: 1.45;
    font-weight: 400;
}

.form-checkbox {
    display: flex !important;
    grid-template-columns: none !important;
    grid-template-rows: none !important;
    align-items: flex-start;
    gap: 10px !important;
    margin: 28px 0;
    font-weight: 600 !important;
}

.form-checkbox input {
    width: auto;
    margin-top: 3px;
    flex: 0 0 auto;
}

.form-honeypot {
    position: absolute !important;
    left: -9999px !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
}

.submission-form > .button {
    margin-top: 4px;
}

@media (max-width: 1050px) {
    .current-speaker-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .accommodation-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .submission-intro {
        padding-left: 0;
    }
}

@media (max-width: 760px) {
    .section-head {
        row-gap: 22px;
    }

    .section-head h2,
    .intro h2,
    .edition-copy h2,
    .idea-copy h2,
    .final-cta h2,
    .current-speakers h2,
    .accommodation-section h2,
    .venue-section h2 {
        margin-top: 14px;
    }

    .current-speaker-grid {
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:22px 10px;
        margin-top:40px;
    }

    .current-speaker-card .speaker-photo {
        width:50px;
        height:80px;
        margin-bottom:10px;
    }

    .current-speaker-card .speaker-name {
        font-size:13px;
        line-height:1.08;
    }

    .past-speaker-rail {
        margin-top: 40px;
    }

    .past-speaker-group {
        gap: 12px;
        padding-right: 12px;
    }

    .past-speaker-group .speaker {
        flex-basis:50px;
        width:50px;
    }

    .past-speaker-group .speaker-photo {
        width:50px;
        height:80px;
        margin-bottom:8px;
    }

    .past-speaker-group .speaker-name {
        font-size: 16px;
    }

    .past-speaker-group .speaker-role,
    .past-speaker-group .speaker-org {
        font-size: 10px;
    }

    .accommodation-grid {
        grid-template-columns: 1fr;
        gap: 18px;
        margin-top: 40px;
    }

    .accommodation-body {
        padding: 20px;
    }

    .venue-feature {
        margin-top: 40px;
    }

    .venue-details {
        width:100%;
        padding:0;
    }

    .venue-details h3 {
        font-size: 32px;
    }

    .venue-details p {
        font-size: 16px;
    }

    .submission-form {
        margin-top: 40px;
        padding: 24px 20px;
    }

    .form-grid.two-columns {
        grid-template-columns: 1fr;
    }

    .form-section-title {
        font-size: 25px;
    }
}

/* ============================================================================
   GLOBAL iCAD COLOUR SYSTEM
   ============================================================================ */
body {
    background:var(--navy);
    color:#fff
}

.section,
.checkout-page,
.ticket-section,
.ticket-faq,
.included,
.partner-assets,
.submission-section,
.nomination-section {
    background:var(--navy);
    color:#fff
}

.section-head p,
.intro p,
.content-block p,
.archive-intro p,
.speaker-note,
.contact-details,
.checkout-intro,
.included-list p,
.faq-list p {
    color:rgba(255,255,255,.76)
}

.track-list,
.track-row,
.faq-list details,
.included-list > div {
    border-color:rgba(255,255,255,.22)
}

.track-row em {
    color:rgba(255,255,255,.76)
}

.current-speaker-card .speaker-role,
.past-speaker-group .speaker-role {
    color:#fff
}

.current-speaker-card .speaker-org,
.past-speaker-group .speaker-org {
    color:var(--gold)
}

.testimonial {
    background:var(--navy);
    border:1px solid rgba(255,255,255,.72);
    border-top:5px solid var(--gold);
    color:#fff
}

.programme-card,
.keynote-card-grid article,
.publication-card,
.visual-card,
.contact-form,
.checkout-form,
.form-placeholder {
    background:var(--navy);
    border:1px solid rgba(255,255,255,.72);
    color:#fff
}

.programme-card p,
.keynote-card-grid p,
.publication-card p {
    color:rgba(255,255,255,.76)
}

.card-icon {
    color:var(--gold)
}

input,
select,
textarea {
    color:var(--navy)
}

.site-header {
    background:#fff;
    color:var(--navy);
    border-color:rgba(27,36,82,.14)
}

.nav-item > button {
    color:var(--navy)
}

.nav-item > button:hover,
.mega-links a:hover {
    color:var(--gold)
}

.mega {
    color:var(--navy)
}

.mega h3,
.mega-links a {
    color:var(--navy)
}

.footer-top p,
.footer-bottom {
    color:rgba(255,255,255,.68)
}

.footer-bottom {
    border-color:rgba(255,255,255,.22)
}

/* ============================================================================
   FORM FIELDS & SECONDARY CARD TREATMENT
   ============================================================================ */
.submission-form input,
.submission-form select,
.submission-form textarea,
.checkout-form input,
.checkout-form select,
.contact-form input,
.contact-form textarea,
.form-placeholder input,
.form-placeholder select {
    background:#fff;
    color:var(--navy);
    border-color:rgba(255,255,255,.7)
}

.submission-form small,
.ticket-later,
.contact-details {
    color:rgba(255,255,255,.68)
}

.ticket-card {
    background:var(--navy);
    color:#fff;
    border:1px solid rgba(255,255,255,.72)
}

.ticket-card.featured {
    background:var(--gold);
    color:var(--navy)
}

.ticket-card.featured .ticket-badge,
.ticket-card.featured .ticket-later {
    color:rgba(27,36,82,.72)
}

.ticket-card ul,
.ticket-card li {
    border-color:rgba(255,255,255,.22)
}

.ticket-card.featured ul,
.ticket-card.featured li {
    border-color:rgba(27,36,82,.22)
}




/* ============================================================================
   FINAL HOMEPAGE DIMENSIONS & TYPOGRAPHY
   ============================================================================ */
h1,h2,h3 {
    color:#fff;
}

.mega h3,
.accommodation-body h3 {
    color:var(--navy);
}

.accommodation-body,
.accommodation-body p,
.accommodation-body span {
    color:#000;
}

.current-speaker-card .speaker-photo {
    width:300px;
    height:400px;
    aspect-ratio:auto;
}

.past-speaker-group .speaker {
    flex:0 0 180px;
    width:180px;
}

.past-speaker-group .speaker-photo {
    width:180px;
    height:250px;
    aspect-ratio:auto;
}

.venue-feature {
    width:100%;
    max-width:540px;
}

.venue-image {
    width:540px;
    max-width:100%;
    height:320px;
    aspect-ratio:auto;
}

.venue-details {
    width:100%;
    margin-top:24px;
    padding:0;
    background:transparent;
    border:0;
    color:#fff;
    text-align:center;
}

.venue-details h3,
.venue-details p {
    color:#fff;
}

.venue-details span {
    color: var(--gold);
}

@media (max-width:760px) {
    .current-speaker-grid {
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:22px 10px;
    }

    .current-speaker-card .speaker-photo,
    .speaker-grid .speaker-photo,
    .past-speaker-group .speaker-photo {
        width:50px;
        height:80px;
        aspect-ratio:auto;
    }

    .past-speaker-group .speaker {
        flex-basis:50px;
        width:50px;
    }

    .venue-image {
        width:100%;
        height:auto;
        aspect-ratio:540/320;
    }
}

@media (max-width:760px){.current-speaker-card .speaker-photo{width:50px;height:60px}}

/* Stripe registration checkout. */
.checkout-status {
    min-height:1.4em;
    margin:0 0 12px;
    color:rgba(255,255,255,.78);
    font-size:13px;
    line-height:1.4;
}
.checkout-pay:disabled {
    opacity:.65;
    cursor:wait;
}
.checkout-form {
    color:#fff;
}
.checkout-form label {
    color:#fff;
}


/* ============================================================================
   FINAL FORM VISIBILITY & MOBILE SPEAKER DIMENSIONS
   ============================================================================ */
.submission-section,
.nomination-section {
    background:var(--navy);
    color:#fff;
}

.submission-form {
    background:#fff;
    color:var(--navy);
}

.submission-form label,
.submission-form .form-section-title,
.submission-form .form-checkbox {
    color:var(--navy);
}

.submission-form small {
    color:#555761;
}

.submission-form input,
.submission-form select,
.submission-form textarea {
    color:var(--navy);
    background:#fff;
}

.submission-form input::placeholder,
.submission-form textarea::placeholder {
    color:#777982;
    opacity:1;
}

@media (max-width:760px) {
    .current-speaker-card .speaker-photo {
        width:50px;
        height:60px;
    }
}


/* ============================================================================
   2027 CONTENT EXPANSION — source-aligned detail blocks
   ============================================================================ */
.track-detail-grid,
.detail-grid,
.award-detail-grid {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:1px;
    background:rgba(255,255,255,.16)
}
.track-detail,
.detail-panel {
    background:var(--navy);
    padding:34px;
    color:#fff
}
.track-detail h3,
.detail-panel h3 {
    margin:0 0 12px;
    color:#fff;
    font-size:28px;
    line-height:1.05
}
.track-detail p,
.detail-panel p {
    color:rgba(255,255,255,.76);
    line-height:1.55
}
.track-detail ul,
.detail-panel ul,
.detail-panel ol {
    margin:18px 0 0;
    padding-left:20px;
    color:rgba(255,255,255,.82)
}
.track-detail li,
.detail-panel li {
    margin:7px 0;
    line-height:1.45
}
.track-detail strong,
.detail-panel strong {
    color:#fff
}
.detail-panel h4 {
    margin:26px 0 0;
    color:var(--gold);
    font-size:14px;
    text-transform:uppercase;
    letter-spacing:.12em
}
.award-detail-grid {
    grid-template-columns:repeat(2,minmax(0,1fr))
}
.award-detail-grid .award-card {
    background:var(--gold);
    color:var(--navy)
}
.award-detail-grid .award-card h3,
.award-detail-grid .award-card p,
.award-detail-grid .award-card strong {
    color:var(--navy)
}
.award-detail-grid .award-card .eyebrow {
    color:#fff
}
.award-requirements-block {
    margin-top:46px
}
.award-requirements-note {
    margin-top:22px;
    color:rgba(255,255,255,.76)
}
.nomination-contact {
    margin-top:20px;
    border:1px solid rgba(255,255,255,.18)
}
@media(max-width:760px) {
    .track-detail-grid,
    .detail-grid,
    .award-detail-grid {
        grid-template-columns:1fr
    }
    .track-detail,
    .detail-panel {
        padding:26px 22px
    }
}

/* =========================================================================
   REQUESTED FINAL TICKET + PAPER FORM FINISHES
   ========================================================================== */
.ticket-card.featured .button {
    background:#fff;
    color:var(--navy);
    border-color:#fff;
}

.ticket-card.featured .button:hover,
.ticket-card.featured .button:focus-visible {
    background:var(--navy);
    color:#fff;
    border-color:var(--navy);
}

/* The generic .button hover uses a white slide-in layer (::before) which,
   due to stacking order, paints on top of the button's own background.
   For this button we want a navy hover, not white, so the slide-in layer
   itself must be navy instead of white. */
.ticket-card.featured .button::before {
    background: var(--navy);
}

.submission-section .submission-form {
    background:var(--navy);
    color:#fff;
    border-color:rgba(255,255,255,.28);
}

.submission-section .submission-form label,
.submission-section .submission-form .form-section-title,
.submission-section .submission-form .form-checkbox {
    color:#fff;
}

.submission-section .submission-form .form-section-title:not(:first-of-type) {
    border-color:rgba(255,255,255,.22);
}

.submission-section .submission-form input,
.submission-section .submission-form select,
.submission-section .submission-form textarea {
    background:#fff;
    color:var(--navy);
    border-color:rgba(255,255,255,.45);
}

.submission-section .submission-form input::placeholder,
.submission-section .submission-form textarea::placeholder {
    color:#777982;
    opacity:1;
}

.submission-section .submission-form small {
    color:rgba(255,255,255,.72);
}

/* Sponsors & partners — compact continuous logo rail. */
.sponsors-partners-section .section-head {
    margin-bottom: 46px;
}
.sponsor-rail {
    width: 100vw;
    margin-left: calc(50% - 50vw);
    overflow: hidden;
    padding: 8px 0;
}
.sponsor-track {
    display: flex;
    width: max-content;
    animation: sponsorsLeft 32s linear infinite;
    will-change: transform;
}
.sponsor-group {
    display: flex;
    align-items: center;
    flex: 0 0 auto;
    gap: 34px;
    padding: 0 17px;
}
.sponsor-mark {
    width: 200px;
    height: 200px;
    flex: 0 0 200px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    border-radius: 10px;
    overflow: hidden;
}
.sponsor-mark img {
    width: 200px;
    height: 200px;
    object-fit: contain;
    display: block;
}
@keyframes sponsorsLeft {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}
.sponsor-rail:hover .sponsor-track,
.sponsor-rail:focus-within .sponsor-track {
    animation-play-state: paused;
}
@media (prefers-reduced-motion: reduce) {
    .sponsor-track { animation: none; }
}

/* Current partners on Partner with iCAD */
.current-partners-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 28px;
    margin-top: 46px;
}
.current-partner-card {
    background: #fff;
    color: var(--navy);
    border: 1px solid rgba(27,36,82,.12);
    border-radius: 18px;
    padding: 28px;
    min-height: 270px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.current-partner-card img {
    width: 200px;
    height: 200px;
    object-fit: contain;
    display: block;
    margin-bottom: 18px;
}
.current-partner-card h3 {
    color: var(--navy);
    margin: 0;
    font-size: 18px;
}
.partnership-form {
    margin-top: 36px;
}
.partnership-form .form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
}
.partnership-form > label {
    display: block;
    margin-top: 20px;
}
@media (max-width: 900px) {
    .current-partners-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
    .current-partners-grid { grid-template-columns: 1fr; }
    .partnership-form .form-grid { grid-template-columns: 1fr; }
    .current-partner-card img { width: 180px; height: 180px; }
}


/* FAQ accordion */
.faq-item {
    border-bottom: 1px solid rgba(255,255,255,.18);
}
.faq-item summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 22px 0;
    color: var(--ink);
    font-weight: 700;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
    content: '+';
    flex: 0 0 auto;
    font-size: 24px;
    font-weight: 400;
}
.faq-item[open] summary::after { content: '−'; }
.faq-answer {
    padding: 0 46px 24px 0;
    color: #fff;
    font-size: 17px;
    line-height: 1.7;
}

/* Previous voices grouped by edition */
.previous-voice-year { margin-top: 64px; }
.previous-voice-year:first-of-type { margin-top: 46px; }
.previous-voice-year h3 {
    color: #fff;
    font-family: 'Josefin Sans', sans-serif;
    font-size: 34px;
    line-height: 1;
    margin: 0 0 28px;
}
.previous-voice-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 22px;
}
@media (max-width: 1000px) {
    .previous-voice-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
    .previous-voice-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
    .previous-voice-grid { grid-template-columns: 1fr; }
}

/* ============================================================================
   FINAL TYPOGRAPHY SCALE — SITEWIDE
   ============================================================================ */

/* 1. Main H1 */
h1,
.hero-copy h1,
.ticket-hero h1,
.checkout-page h1 {
    font-size: 48px !important;
}

/* Sub-page hero heading — centered and enlarged */
.page-hero h1 {
    font-size: 64px !important;
line-height:1.05;
}

/* 2. Section H2 */
.section-head h2 {
    font-size: 32px !important;
}

/* 3. Large feature H2 */
.intro h2,
.edition-copy h2,
.idea-copy h2,
.final-cta h2,
.included h2,
.current-speakers h2,
.accommodation-section h2,
.venue-section h2 {
    font-size: 42px !important;
}

/* 4. Content H2 */
.content-block h2,
.archive-intro h2,
.order-summary h2,
.content-modal-card h2 {
    font-size: 36px !important;
}

/* 5. Card H3 */
.mega h3,
.accommodation-body h3,
.ticket-card h3,
.programme-card h3,
.keynote-card-grid h3,
.publication-card h3,
.submission-box h3,
.track-detail h3,
.detail-panel h3,
.award-detail-grid .award-card h3,
.current-partner-card h3,
.previous-voice-year h3 {
    font-size: 28px !important;
}

/* Homepage hero heading only */
.hero-copy h1 { font-size: 60px !important; }


/* Homepage programme dropdowns only */
/* Homepage programme dropdowns only */
.track-list .programme-dropdown {
    display:block;
    width:100%;
    color:inherit;
    text-decoration:none;
    cursor:pointer;
}
.track-list .programme-dropdown summary {
    list-style:none;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:24px;
    cursor:pointer;
    font-size:20px;
    font-weight:700;
}
.track-list .programme-dropdown summary::-webkit-details-marker {
    display:none;
}
.track-list .programme-dropdown summary .track-toggle {
    flex:0 0 auto;
    font-size:24px;
    font-weight:400;
}
.track-list .programme-dropdown[open] summary .track-toggle {
    font-size:0;
}
.track-list .programme-dropdown[open] summary .track-toggle::after {
    content:'−';
    font-size:24px;
}
.track-list .programme-dropdown em {
    display:block;
    padding:12px 48px 4px 0;
    font-size:20px;
    font-style:italic;
    line-height:1.6;
}



.motion-enabled .motion-reveal {
    opacity: 0;
    transform: translate3d(0, 42px, 0);
    filter: blur(2px);
    transition: opacity .8s cubic-bezier(.16,1,.3,1),
                transform .8s cubic-bezier(.16,1,.3,1),
                filter .8s cubic-bezier(.16,1,.3,1);
}
.motion-enabled .motion-reveal.is-visible {
    opacity: 4;
    transform: none;
    filter: none;
}
.motion-enabled .motion-scale {
    opacity: 0;
    transform: scale(.94);
    transition: opacity .9s cubic-bezier(.16,1,.3,1),
                transform 1s cubic-bezier(.16,1,.3,1);
}
.motion-enabled .motion-scale.is-visible {
    opacity: 1;
    transform: scale(1);
}
.motion-enabled .motion-stagger > * {
    opacity: 0;
    transform: translate3d(0, 34px, 0);
    filter: blur(2px);
    transition: opacity .65s cubic-bezier(.16,1,.3,1),
                transform .65s cubic-bezier(.16,1,.3,1),
                filter .65s cubic-bezier(.16,1,.3,1);
    transition-delay: calc(var(--motion-index, 0) * 85ms);
}
.motion-enabled .motion-stagger.is-visible > * {
    opacity: 1;
    transform: none;
    filter: none;
}

/* Actual hero children are animated directly. */
.motion-enabled .motion-hero-item {
    opacity: 0;
    transform: translate3d(0, 34px, 0);
    filter: blur(3px);
    transition: opacity .8s cubic-bezier(.16,1,.3,1),
                transform .8s cubic-bezier(.16,1,.3,1),
                filter .8s cubic-bezier(.16,1,.3,1);
    transition-delay: calc(var(--motion-index, 0) * 120ms + 80ms);
}
.motion-enabled .hero.motion-hero-active .motion-hero-item,
.motion-enabled .page-hero.motion-hero-active .motion-hero-item {
    opacity: 1;
    transform: none;
    filter: none;
}

@media (max-width: 760px) {
    .motion-enabled .motion-reveal { transform: translate3d(0, 26px, 0); }
    .motion-enabled .motion-stagger > * { transform: translate3d(0, 22px, 0); }
    .motion-enabled .motion-hero-item { transform: translate3d(0, 24px, 0); }
}

@media (prefers-reduced-motion: reduce) {
    .motion-enabled .motion-reveal,
    .motion-enabled .motion-scale,
    .motion-enabled .motion-stagger > *,
    .motion-enabled .motion-hero-item {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
        transition: none !important;
    }
}

/* HOMEPAGE VISUAL SECTIONS — iCAD navy / gold / white */
.home-about-visual,.home-ideas-visual,.home-programmes-visual{background:var(--navy);color:#fff;overflow:hidden}
.home-section-kicker{color:var(--gold);font-size:13px;font-weight:800;letter-spacing:.18em;margin-bottom:18px}
.home-about-heading-row h2,.home-programmes-heading h2{font-size:clamp(42px,5vw,68px);line-height:.95;letter-spacing:-.055em;margin:0 0 42px;color:#fff}
.home-about-heading-row h2 span,.home-programmes-heading h2 span,.idea-copy h2 span{color:var(--gold)}
.home-about-layout,.home-ideas-layout,.home-programmes-layout{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:start}
.home-about-copy>p,.idea-copy>p,.home-programme-feature>p{font-size:18px;line-height:1.65;color:rgba(255,255,255,.86);max-width:560px}
.home-about-pillars{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;margin-top:36px}
.home-about-pillars div{border-left:1px solid rgba(185,148,64,.6);padding-left:16px;display:flex;flex-direction:column;gap:6px}.home-about-pillars strong{color:var(--gold);font-size:14px}.home-about-pillars span{font-weight:700}
.home-about-photo-grid{display:grid;grid-template-columns:1.25fr .75fr;grid-template-rows:230px 180px;gap:18px}.home-photo-card{position:relative;overflow:hidden;border-radius:18px;background:#26305f;border:1px solid rgba(185,148,64,.55);min-height:150px}.home-photo-card img{width:100%;height:100%;object-fit:cover;display:block}.home-photo-card span{position:absolute;left:18px;bottom:16px;font-size:11px;font-weight:800;letter-spacing:.12em;color:#fff;text-shadow:0 2px 8px #000}.home-photo-large{grid-row:span 2}.home-photo-placeholder{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1b2452,#b99440);color:#fff}.home-photo-placeholder span{position:static;text-shadow:none}
.home-ideas-layout{grid-template-columns:1.05fr .95fr}.idea-copy h2{font-size:clamp(42px,5vw,68px);line-height:.95;letter-spacing:-.055em;margin:0 0 26px;color:#fff}.idea-copy .button{margin-top:18px}.idea-copy .button span{margin-left:12px}.home-ideas-notes{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin-top:58px}.home-ideas-notes strong{font-size:21px;color:#fff}.home-ideas-notes p{font-size:15px;line-height:1.55;color:rgba(255,255,255,.78)}.home-ideas-photos{display:grid;grid-template-columns:1fr .9fr;gap:20px;align-items:start}.home-ideas-photos .home-photo-card{height:250px}.home-ideas-photos .home-photo-offset{margin-top:105px;height:250px}
.home-programmes-heading{margin-bottom:36px}.home-programmes-heading h2{margin-bottom:0}
.home-programmes-banner{width:100%;height:100px;border-radius:20px;overflow:hidden;border:2px solid rgba(255, 255, 255, 1);margin:0 0 32px}
.home-programmes-banner img{width:100%;height:100%;object-fit:cover;display:block}
.home-programmes-desc{max-width:860px;color:rgba(255,255,255,.82);font-size:18px;line-height:1.6;margin:0 0 38px}
.home-theme-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.home-theme-card{background:#202b59;border:1px solid rgba(185,148,64,.65);border-radius:15px;overflow:hidden;color:#fff}.home-theme-card>img{width:100%;height:105px;object-fit:cover;display:block}.home-theme-card>div{padding:18px}.home-theme-card h3{font-size:22px!important;line-height:1.05;margin:0 0 10px;color:#fff}.home-theme-card p{font-size:14px;line-height:1.5;color:rgba(255,255,255,.8);margin:0 0 10px}.home-theme-card details{margin-top:10px}.home-theme-card summary{color:var(--gold);font-weight:800;font-size:13px;cursor:pointer}.home-theme-card details p{margin-top:12px;color:#fff}
@media(max-width:1100px){.home-theme-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.home-about-layout,.home-ideas-layout{grid-template-columns:1fr;gap:38px}.home-about-photo-grid{max-width:700px}.home-programmes-banner{height:240px}.home-theme-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.home-about-heading-row h2,.home-programmes-heading h2,.idea-copy h2{font-size:42px}.home-about-photo-grid{grid-template-columns:1fr 1fr;grid-template-rows:220px 160px}.home-photo-large{grid-row:span 2}.home-about-pillars,.home-ideas-notes{grid-template-columns:1fr}.home-ideas-photos{grid-template-columns:1fr 1fr}.home-ideas-photos .home-photo-card,.home-ideas-photos .home-photo-offset{height:190px;margin-top:0}.home-programmes-banner{height:180px}.home-theme-grid{grid-template-columns:1fr}.home-theme-card>img{height:160px}}


/* Partnership and student verification form corrections */
.partnership-form,
.student-verification-form {
    border: 1px solid rgba(255,255,255,.28);
    border-radius: 18px;
    background: var(--navy);
    color: #fff;
    padding: 34px;
}
.partnership-form label,
.student-verification-form label {
    color: #fff;
}
.partnership-form input,
.partnership-form select,
.partnership-form textarea,
.student-verification-form input,
.student-verification-form select,
.student-verification-form textarea {
    display: block;
    width: 100%;
    min-height: 52px;
    margin-top: 8px;
    padding: 14px 15px;
    border: 1px solid rgba(255,255,255,.55);
    border-radius: 8px;
    background: #fff;
    color: var(--navy);
    box-sizing: border-box;
}
.partnership-form textarea,
.student-verification-form textarea { min-height: 150px; resize: vertical; }
.partnership-form input:focus,
.partnership-form select:focus,
.partnership-form textarea:focus,
.student-verification-form input:focus,
.student-verification-form select:focus,
.student-verification-form textarea:focus {
    outline: 2px solid var(--gold);
    border-color: var(--gold);
}
.student-verification-form small { color: rgba(255,255,255,.78); display:block; margin-top:8px; }
.student-verification-form input[type="checkbox"] { width:auto; min-height:0; display:inline-block; margin-right:8px; }
.student-verification-form input[type="file"] { min-height: auto; }

/* Keep the student declaration checkbox close to its text */
.student-verification-form .student-declaration {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-top: 18px;
    line-height: 1.5;
}
.student-verification-form .student-declaration input[type="checkbox"] {
    flex: 0 0 auto;
    margin: 4px 0 0;
}
.student-verification-form .student-declaration span {
    display: block;
}

/* Homepage speaker carousel refinements */
.past-speaker-track {
    animation-duration: 20s;
}

.past-speaker-group .speaker {
    text-align: center;
}

.past-speaker-group .speaker-name {
    font-size: 15px;
    line-height: 1.2;
    text-align: center;
    max-width: 180px;
    margin: 0 auto 7px;
}

.past-speaker-group .speaker-role,
.past-speaker-group .speaker-org {
    text-align: center;
}

@media (max-width: 700px) {
    .past-speaker-group .speaker-name {
        font-size: 13px;
        line-height: 1.2;
        max-width: 150px;
    }
}


/* HERO-ONLY OVERRIDES: full-bleed photo/video, with a solid band across the middle
   carrying the title copy, and the badge / meta / buttons floating on the photo */
.hero {
    position: relative;
    min-height: calc(100vh - 88px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    background: var(--navy);
    isolation: isolate;
    padding: 0;
}
.hero-media {
    position: absolute;
    inset: 0;
    z-index: -3;
    width: 100%;
    height: 100%;
}
.hero-video-media,
.hero-media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}
.hero-overlay {
    position: absolute;
    inset: 0;
    z-index: -2;
    background: linear-gradient(180deg, rgba(10,15,42,.22) 0%, rgba(10,15,42,.1) 32%, rgba(10,15,42,.1) 68%, rgba(10,15,42,.6) 100%);
}
/* Badge: logo + year, floating directly on the photo, no card behind it */
.hero-badge {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    padding: 56px 24px 40px;
    filter: drop-shadow(0 2px 10px rgba(0,0,0,.25));
}
.hero-badge-logo {
    display: block;
    width: auto;
    height: 42px;
}
.hero-badge-year {
    font-family: 'Josefin Sans', sans-serif;
    font-weight: 700;
    font-size: clamp(34px, 4vw, 46px);
    letter-spacing: -.02em;
    color: #b99440;
}
/* Band: full-width solid navy strip carrying the title copy */
.hero-band {
    position: relative;
    z-index: 2;
    width: 100%;
    margin: 0;
    padding: 36px 24px;
    background: var(--navy);
    color: var(--white);
    text-align: center;
    border-top: 2px solid var(--gold);
    border-bottom: 6px solid var(--gold);
}
.hero-band .eyebrow {
    color: var(--white);
    text-transform: none;
    font-weight: 500;
    letter-spacing: .01em;
    font-size: 17px;
}
.hero-band h1 {
    max-width: 900px;
    margin: 18px auto 0;
    color: #b99440;
    font-size: clamp(34px, 4.6vw, 58px);
    line-height: .98;
    letter-spacing: -.03em;
}
.hero-band h1 span { display: inline; color: #b99440; }
.hero-band .hero-theme {
    max-width: 620px;
    margin: 20px auto 0;
    color: var(--white);
    font-weight: 500;
    font-size: clamp(17px, 1.6vw, 20px);
    line-height: 1.35;
}
/* Meta: dates/venue, floating on the photo below the band */
.hero-meta {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: center;
    gap: 36px;
    margin: 34px 0 0;
    font-size: 16px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .01em;
    color: var(--gold);
    text-shadow: 0 1px 8px rgba(0,0,0,.35);
}
.hero-meta span {
    display: inline-flex;
    align-items: center;
    gap: 9px;
}
.hero-meta svg { flex: 0 0 auto; color: var(--white); }
/* Buttons: centered underneath the meta, still on the photo */
.hero-actions {
    position: relative;
    z-index: 3;
    display: flex;
    justify-content: center;
    gap: 16px;
    margin: 32px 0 56px;
}
.hero-actions .button {
    border-radius: 999px;
    padding: 17px 30px;
}
@media (max-width: 1050px) {
    .hero-band { padding: 32px 32px; }
}
@media (max-width: 760px) {
    .hero { min-height: auto; }
    .hero-overlay { background: linear-gradient(180deg, rgba(10,15,42,.3) 0%, rgba(10,15,42,.14) 28%, rgba(10,15,42,.14) 68%, rgba(10,15,42,.82) 100%); }
    .hero-badge { padding: 36px 16px 28px; }
    .hero-band { padding: 28px 20px; }
    .hero-band h1 { font-size: clamp(30px, 9vw, 42px); }
    .hero-band .hero-theme { font-size: 16px; }
    .hero-meta { display: grid; gap: 10px; justify-items: center; margin-top: 26px; padding: 0 16px; }
    .hero-actions { flex-direction: column; align-items: stretch; margin: 24px 16px 48px; }
    .hero-actions .button { justify-content: center; }
}

/* Reveal-on-hover: the video plays clean by default; the badge, band copy,
   meta and buttons fade in only while the hero is hovered (or focused, for
   keyboard users). Restricted to devices with real hover/pointer support so
   touch users always see the content. */
@media (hover: hover) and (pointer: fine) {
    .hero-badge,
    .hero-band,
    .hero-meta,
    .hero-actions {
        opacity: 0;
        visibility: hidden;
        transform: translateY(10px);
        pointer-events: none;
        transition: opacity .5s ease, transform .5s ease, visibility 0s linear .5s;
    }
    .hero-overlay {
        transition: background .5s ease;
    }
    .hero:hover .hero-badge,
    .hero:hover .hero-band,
    .hero:hover .hero-meta,
    .hero:hover .hero-actions,
    .hero:focus-within .hero-badge,
    .hero:focus-within .hero-band,
    .hero:focus-within .hero-meta,
    .hero:focus-within .hero-actions {
        opacity: 1;
        visibility: visible;
        transform: translateY(0);
        pointer-events: auto;
        transition: opacity .5s ease, transform .5s ease, visibility 0s linear 0s;
    }
    .hero:hover .hero-badge,   .hero:focus-within .hero-badge   { transition-delay: 0s, 0s, 0s; }
    .hero:hover .hero-band,    .hero:focus-within .hero-band    { transition-delay: .05s, .05s, 0s; }
    .hero:hover .hero-meta,    .hero:focus-within .hero-meta    { transition-delay: .1s, .1s, 0s; }
    .hero:hover .hero-actions, .hero:focus-within .hero-actions { transition-delay: .15s, .15s, 0s; }
    .hero:hover .hero-overlay,
    .hero:focus-within .hero-overlay {
        background: linear-gradient(180deg, rgba(10,15,42,.4) 0%, rgba(10,15,42,.3) 32%, rgba(10,15,42,.3) 68%, rgba(10,15,42,.75) 100%);
    }
}

/* ==========================================================================
   iCAD 2027 — CONSOLIDATED REFINEMENTS
   Partners (carousel + grids) · speaker accordions · archive navigation ·
   nomination form · typography and responsive balance.
   This block replaces the earlier stacked patch layers.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Partner cards — one shared component for every partner surface.
   Square (1:1) logo well, name centred underneath, equal card heights.
   -------------------------------------------------------------------------- */
.partner-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    min-width: 0;
    text-align: center;
}

.partner-card-media {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    aspect-ratio: 1 / 1;
    padding: 18px;
    background: var(--white);
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 16px;
    overflow: hidden;
    transition: transform .35s ease, box-shadow .35s ease;
}

.partner-card-media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.partner-card-name {
    display: block;
    max-width: 22ch;
    margin: 0 auto;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.35;
    letter-spacing: .01em;
    color: rgba(255, 255, 255, .92);
    text-wrap: balance;
}

/* "SOAS, University of London" and other long names keep to one tidy block. */
.partner-card--long .partner-card-name {
    max-width: 24ch;
    font-size: 13px;
    letter-spacing: 0;
}

/* Reserved container for a logo that has not been supplied yet. */
.partner-card-media--placeholder {
    flex-direction: column;
    gap: 8px;
    background: linear-gradient(150deg, #fbfbfd 0%, #eef0f6 100%);
    border: 1px dashed rgba(27, 36, 82, .38);
}

.partner-placeholder-mark {
    font-family: 'Josefin Sans', sans-serif;
    font-size: clamp(20px, 2.4vw, 30px);
    font-weight: 700;
    letter-spacing: .04em;
    line-height: 1;
    color: var(--navy);
}

.partner-placeholder-note {
    font-size: 9.5px;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: rgba(27, 36, 82, .55);
}

/* --------------------------------------------------------------------------
   2. Partner grid — five per row on desktop, even spacing, no stray cards.
   -------------------------------------------------------------------------- */
.partner-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 28px 24px;
    margin-top: 46px;
    align-items: start;
}

.partner-assets .section-head {
    margin-bottom: 0;
}

.partner-assets--legacy {
    padding-top: 0;
}

@media (hover: hover) {
    .partner-card:hover .partner-card-media {
        transform: translateY(-4px);
        box-shadow: 0 16px 34px rgba(0, 0, 0, .26);
    }
}

@media (max-width: 1100px) {
    .partner-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 860px) {
    .partner-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px 20px; }
}

@media (max-width: 560px) {
    .partner-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 16px; }
    .partner-card-name { font-size: 13px; }
    .partner-card--long .partner-card-name { font-size: 12.5px; }
}

/* --------------------------------------------------------------------------
   3. Partner carousel — continuous right-to-left loop, 20s per cycle.
   The set is rendered twice and the track travels exactly -50%, so the seam
   is invisible and the motion never jumps or stalls.
   -------------------------------------------------------------------------- */
.partner-marquee {
    position: relative;
    width: 100%;
    max-width: 100%;
    margin-top: 46px;
    overflow: hidden;           /* keeps the page free of horizontal scroll */
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%);
}

.partner-marquee-track {
    display: flex;
    width: max-content;
    animation: icadPartnerMarquee var(--marquee-speed, 20s) linear infinite;
    will-change: transform;
}

.partner-marquee-group {
    display: flex;
    flex: 0 0 auto;
    gap: 28px;
    padding-right: 28px;
}

.partner-marquee .partner-card {
    flex: 0 0 168px;
    width: 168px;
}

.partner-marquee .partner-card-media {
    padding: 16px;
}

@keyframes icadPartnerMarquee {
    from { transform: translate3d(0, 0, 0); }
    to   { transform: translate3d(-50%, 0, 0); }
}

.partner-marquee:hover .partner-marquee-track,
.partner-marquee:focus-within .partner-marquee-track {
    animation-play-state: paused;
}

.partner-rail-actions {
    display: flex;
    justify-content: center;
    margin-top: 44px;
}

@media (max-width: 860px) {
    .partner-marquee .partner-card { flex-basis: 146px; width: 146px; }
    .partner-marquee-group { gap: 22px; padding-right: 22px; }
}

@media (max-width: 560px) {
    .partner-marquee .partner-card { flex-basis: 126px; width: 126px; }
    .partner-marquee-group { gap: 18px; padding-right: 18px; }
}

@media (prefers-reduced-motion: reduce) {
    .partner-marquee-track { animation: none; }
    .partner-marquee { overflow-x: auto; }
}

/* --------------------------------------------------------------------------
   4. Ghana Scholarly Society imagery.
   -------------------------------------------------------------------------- */
.gss-figure {
    margin: 22px 0 0;
}

.gss-page-image {
    display: block;
    width: 100%;
    max-width: 640px;
    aspect-ratio: 16 / 5;
    object-fit: cover;
    border-radius: 18px;
}

.gss-figure figcaption {
    max-width: 46ch;
    margin-top: 14px;
    font-size: 12.5px;
    line-height: 1.55;
    color: rgba(255, 255, 255, .62);
}

.gss-figure figcaption code {
    font-size: 11.5px;
    color: var(--gold);
    word-break: break-word;
}

.gss-inner .gss-figure {
    margin-top: 36px;
}

.gss-inner .gss-page-image {
    margin: 0 auto;
}

.gss-inner .gss-figure figcaption {
    margin-left: auto;
    margin-right: auto;
    text-align: center;
}

@media (max-width: 560px) {
    .gss-page-image { max-width: 100%; aspect-ratio: 16 / 7; }
}

/* --------------------------------------------------------------------------
   5. Previous speakers — 2025 and 2024 accordions.
   Built on <details>, so keyboard and screen-reader support come for free.
   -------------------------------------------------------------------------- */
.previous-voice-year--collapsible {
    margin-top: 34px;
}

.voice-accordion {
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 16px;
    background: rgba(255, 255, 255, .04);
    overflow: hidden;
}

.voice-accordion-summary {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 24px 26px;
    cursor: pointer;
    list-style: none;
    user-select: none;
}

.voice-accordion-summary::-webkit-details-marker { display: none; }

.voice-accordion-summary:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: -3px;
}

.voice-accordion-title {
    font-family: 'Josefin Sans', sans-serif;
    font-size: clamp(24px, 3vw, 32px);
    font-weight: 600;
    line-height: 1;
    letter-spacing: -.02em;
    color: var(--white);
}

.voice-accordion-meta {
    margin-left: auto;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .6);
}

/* Visible expand / collapse indicator. */
.voice-accordion-icon {
    position: relative;
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    border: 1px solid rgba(255, 255, 255, .32);
    border-radius: 50%;
}

.voice-accordion-icon::before,
.voice-accordion-icon::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 13px;
    height: 2px;
    background: var(--gold);
    transform: translate(-50%, -50%);
    transition: transform .3s ease, opacity .3s ease;
}

.voice-accordion-icon::after {
    transform: translate(-50%, -50%) rotate(90deg);
}

.voice-accordion[open] .voice-accordion-icon::after {
    transform: translate(-50%, -50%) rotate(0deg);
    opacity: 0;
}

.voice-accordion[open] .voice-accordion-summary {
    border-bottom: 1px solid rgba(255, 255, 255, .16);
}

.voice-accordion-body {
    padding: 28px 26px 30px;
}

.voice-accordion-body .previous-voice-grid {
    margin: 0;
}

@media (max-width: 560px) {
    .voice-accordion-summary { padding: 18px 18px; gap: 12px; }
    .voice-accordion-meta { display: none; }
    .voice-accordion-body { padding: 20px 16px 24px; }
}

@media (prefers-reduced-motion: reduce) {
    .voice-accordion-icon::before,
    .voice-accordion-icon::after { transition: none; }
}

/* --------------------------------------------------------------------------
   6. Archive — centred year navigation, balanced archive list.
   -------------------------------------------------------------------------- */
.archive-year-nav-section {
    padding-top: 54px;
    padding-bottom: 0;
}

.archive-year-nav {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    text-align: center;
}

.archive-year-nav-label {
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--gold);
}

.archive-year-nav-links {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 12px;
}

.archive-year-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 108px;
    padding: 13px 26px;
    border: 1px solid rgba(255, 255, 255, .26);
    border-radius: 999px;
    font-family: 'Josefin Sans', sans-serif;
    font-size: 19px;
    font-weight: 600;
    letter-spacing: .02em;
    color: var(--white);
    transition: background .25s ease, color .25s ease, border-color .25s ease;
}

.archive-year-link:hover,
.archive-year-link:focus-visible {
    background: rgba(255, 255, 255, .1);
    border-color: var(--gold);
}

.archive-year-link.is-current {
    background: var(--gold);
    border-color: var(--gold);
    color: var(--navy);
}

.archive-list--centered {
    grid-template-columns: repeat(3, 1fr);
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
    justify-content: center;
}

.archive-list--centered .archive-item {
    text-align: center;
    align-items: center;
}

.archive-list--centered .archive-item .year {
    display: block;
    width: 100%;
    text-align: center;
}

.archive-list--centered .archive-item p {
    margin-left: auto;
    margin-right: auto;
    max-width: 34ch;
}

@media (max-width: 720px) {
    .archive-list--centered {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 560px) {
    .archive-year-link { min-width: 92px; padding: 11px 20px; font-size: 17px; }
}

/* --------------------------------------------------------------------------
   7. Nomination form — thin navy border on every field, clear states.
   -------------------------------------------------------------------------- */
.nomination-form-fields input,
.nomination-form-fields select,
.nomination-form-fields textarea {
    background: var(--white);
    color: var(--navy);
    border: 1px solid var(--navy);
    border-radius: 8px;
    padding: 13px 14px;
}

.nomination-form-fields select {
    appearance: none;
    background-image: linear-gradient(45deg, transparent 50%, var(--navy) 50%),
                      linear-gradient(135deg, var(--navy) 50%, transparent 50%);
    background-position: calc(100% - 20px) calc(50% + 2px), calc(100% - 14px) calc(50% + 2px);
    background-size: 6px 6px, 6px 6px;
    background-repeat: no-repeat;
    padding-right: 40px;
}

.nomination-form-fields input::placeholder,
.nomination-form-fields textarea::placeholder {
    color: rgba(27, 36, 82, .5);
}

.nomination-form-fields input:hover,
.nomination-form-fields select:hover,
.nomination-form-fields textarea:hover {
    border-color: rgba(27, 36, 82, .75);
}

.nomination-form-fields input:focus,
.nomination-form-fields select:focus,
.nomination-form-fields textarea:focus {
    outline: none;
    border-color: var(--navy);
    box-shadow: 0 0 0 3px rgba(27, 36, 82, .16);
}

.nomination-form-fields input[type='file'] {
    padding: 11px 12px;
    font-size: 13px;
}

.nomination-form-fields input:user-invalid,
.nomination-form-fields select:user-invalid,
.nomination-form-fields textarea:user-invalid {
    border-color: #a5352f;
    box-shadow: 0 0 0 3px rgba(165, 53, 47, .14);
}

.nomination-form-fields label {
    gap: 9px;
}

.form-actions {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
    margin-top: 30px;
    padding-top: 26px;
    border-top: 1px solid rgba(27, 36, 82, .16);
}

.form-note {
    margin: 0;
    max-width: 62ch;
    font-size: 12.5px;
    line-height: 1.6;
    font-weight: 400;
    color: #5b5d68;
}

.form-error {
    margin: 18px 0 0;
    padding: 14px 16px;
    border: 1px solid #a5352f;
    border-radius: 8px;
    background: rgba(165, 53, 47, .07);
    color: #8d2c27;
    font-size: 13.5px;
    line-height: 1.55;
}

.form-error a { text-decoration: underline; }

.form-error[hidden],
.form-success[hidden] { display: none; }

.form-success {
    max-width: 1000px;
    margin: 54px auto 0;
    padding: 44px 38px;
    background: var(--white);
    border: 1px solid var(--gold);
    border-radius: 18px;
    color: var(--navy);
    text-align: center;
}

.form-success:focus { outline: none; }

.form-success-mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 58px;
    height: 58px;
    margin-bottom: 20px;
    border-radius: 50%;
    background: var(--gold);
    color: var(--white);
    font-size: 27px;
    line-height: 1;
}

.form-success h3 {
    margin: 0 0 14px;
    font-family: 'Josefin Sans', sans-serif;
    font-size: clamp(26px, 3.4vw, 34px);
    line-height: 1.05;
    letter-spacing: -.02em;
    color: var(--navy);
}

.form-success p {
    max-width: 58ch;
    margin: 0 auto;
    font-size: 15.5px;
    line-height: 1.65;
    color: #45475a;
}

.form-success-meta {
    margin-top: 16px !important;
    font-size: 13px !important;
    color: #6a6c78 !important;
}

.is-submitting {
    opacity: .6;
    pointer-events: none;
}

@media (max-width: 560px) {
    .form-actions { align-items: stretch; }
    .form-actions .button { width: 100%; justify-content: center; }
    .form-success { padding: 34px 22px; }
}

/* --------------------------------------------------------------------------
   8. Typography and layout balance.
   Comfortable measure, consistent rhythm, no clipped or overflowing text.
   -------------------------------------------------------------------------- */
h1, h2, h3, h4 {
    text-wrap: balance;
    overflow-wrap: break-word;
}

p, li {
    overflow-wrap: break-word;
}

.section-head p,
.content-block p,
.archive-intro p {
    max-width: 62ch;
}

.section-head > p {
    line-height: 1.65;
}

.home-section-heading,
.home-programmes-heading p {
    max-width: 66ch;
}

/* Hero hierarchy: eyebrow, headline, theme line, meta, buttons. */
.hero-band .eyebrow {
    display: block;
    margin: 0 auto;
    max-width: 52ch;
    font-size: clamp(13px, 1.45vw, 16px);
    line-height: 1.4;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--white);
    font-weight: 700;
}

.hero-band h1 {
    margin-top: 16px;
    max-width: 100%;
    white-space: nowrap;
    font-size: clamp(14px, 4.2vw, 58px);
    font-weight: 700;
    -webkit-text-stroke: 0.4px currentColor;
}

/* Buttons stay centred and evenly sized wherever they appear. */
.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    min-height: 50px;
}

/* Nothing should be able to push the page sideways. */
html, body {
    max-width: 100%;
    overflow-x: hidden;
}

@media (max-width: 760px) {
    .hero-band .eyebrow {
        font-size: 12px;
        letter-spacing: .08em;
        max-width: 26ch;
    }
    .section-head p,
    .content-block p { max-width: none; }
}

/* --------------------------------------------------------------------------
   9. Hero visibility.
   The hero copy was previously hidden on desktop until the section was
   hovered, which left the eyebrow, headline and CTAs invisible on load.
   The copy now sits visible in a balanced hierarchy; hovering still deepens
   the overlay and lifts the copy slightly.
   To restore the original hover-reveal behaviour, delete this block.
   -------------------------------------------------------------------------- */
@media (hover: hover) and (pointer: fine) {
    .hero-badge,
    .hero-band,
    .hero-meta,
    .hero-actions {
        opacity: 1;
        visibility: visible;
        transform: translateY(0);
        pointer-events: auto;
        transition: opacity .45s ease, transform .45s ease;
    }
}

/* Hero meta stays legible where it sits over the brighter part of the photo. */
.hero-meta {
    text-shadow: 0 1px 3px rgba(10, 15, 42, .85), 0 2px 14px rgba(10, 15, 42, .6);
}
.hero-meta svg { filter: drop-shadow(0 1px 3px rgba(10, 15, 42, .8)); }

/* "SOAS, University of London" stays on a single line in the desktop grids
   (slightly smaller type), and wraps naturally on narrow screens. */
@media (min-width: 861px) {
    .partner-grid .partner-card--long .partner-card-name {
        max-width: 100%;
        font-size: 12.5px;
        letter-spacing: 0;
        white-space: nowrap;
    }
}

/* --------------------------------------------------------------------------
   10. Responsive typography.
   Section heads previously stayed side-by-side at every width, which squeezed
   headings into a narrow column and broke words mid-way on phones. They now
   stack, and the fixed heading sizes scale down instead of being clipped.
   -------------------------------------------------------------------------- */
@media (max-width: 900px) {
    .section-head {
        flex-direction: column;
        align-items: flex-start;
        gap: 18px;
    }
    .section-head > div { width: 100%; }
    .section-head p { max-width: none; }
    .section-head h2 { margin-top: 0; }
}

@media (max-width: 760px) {
    .page-hero h1 {
        font-size: clamp(32px, 8.6vw, 52px) !important;
        line-height: 1.02;
        letter-spacing: -.02em;
    }
    .section-head h2 {
        font-size: clamp(25px, 7.2vw, 32px) !important;
        line-height: 1.04;
        letter-spacing: -.02em;
    }
    .intro h2,
    .edition-copy h2,
    .idea-copy h2,
    .final-cta h2,
    .included h2,
    .current-speakers h2,
    .accommodation-section h2,
    .venue-section h2,
    .content-block h2 {
        font-size: clamp(27px, 7.8vw, 42px) !important;
        line-height: 1.04;
        letter-spacing: -.02em;
    }
    .form-section-title { font-size: 23px; }
}

/* Headings never break mid-word, at any width. */
h1, h2, h3, h4,
.section-head h2,
.page-hero h1 {
    word-break: normal;
    overflow-wrap: normal;
    hyphens: none;
}

/* ==========================================================================
   11. African symbol background overlays.
   Original line-art tiles inspired by traditional Akan Adinkra motifs and
   Ewe geometric weave patterns, redrawn as simple single-colour vector art.
   Applied at very low opacity (5%) in gold, behind the content of every
   section, on every page. Adjacent sections use different symbols.
   To remove entirely: delete this block and the "symbol-overlay" rules
   below it that assign --sym on main/section elements.
   ========================================================================== */
:root {
    --sym-gye-nyame: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsODApIj4KPHBhdGggZD0iTS0zOCwtNiBDLTM4LC0zMCAtMTIsLTMwIC04LC0xNCBDLTQsMiAtMjIsMTAgLTMwLC0yIiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTM4LC02IEMzOCwtMzAgMTIsLTMwIDgsLTE0IEM0LDIgMjIsMTAgMzAsLTIiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNLTMwLC0yIEMtMjQsMTAgLTEwLDE2IDAsMTAiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMzAsLTIgQzI0LDEwIDEwLDE2IDAsMTAiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIwIiBjeT0iMjYiIHI9IjQuNSIgZmlsbD0iI2I5OTQ0MCIvPgo8L2c+PC9zdmc+");
    --sym-sankofa: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzgsODYpIj4KPHBhdGggZD0iTS0yNiwyMCBDLTI2LC0yIC0xMCwtMTggMTQsLTE4IiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTE0LC0xOCBDMjQsLTE4IDMwLC0xMCAyNiwtMiBDMjIsNiAxMCw0IDEwLC02IiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwLC02IEM2LC0xNCAtNiwtMTQgLTgsLTQiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTMsLTI0IEwyMCwtMTggTDEzLC0xMyBaIiBmaWxsPSIjYjk5NDQwIi8+CjxlbGxpcHNlIGN4PSItMiIgY3k9IjIwIiByeD0iMjYiIHJ5PSI1IiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPjwvc3ZnPg==");
    --sym-dwennimmen: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsODApIj4KPHBhdGggZD0iTS0yOCwyMCBDLTQwLDQgLTM0LC0xNiAtMTQsLTE4IEMtMiwtMTkgNCwtMTAgLTIsLTQgQy04LDIgLTE4LC0yIC0xNiwtMTAiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMjgsMjAgQzQwLDQgMzQsLTE2IDE0LC0xOCBDMiwtMTkgLTQsLTEwIDIsLTQgQzgsMiAxOCwtMiAxNiwtMTAiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8bGluZSB4MT0iLTE0IiB5MT0iMjIiIHgyPSIxNCIgeTI9IjIyIiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPjwvc3ZnPg==");
    --sym-akoma: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsODQpIj4KPHBhdGggZD0iTTAsMjIgQy0yNiwyIC0yNiwtMjQgLTYsLTI0IEMwLC0yNCAwLC0xNiAwLC0xNiBDMCwtMTYgMCwtMjQgNiwtMjQgQzI2LC0yNCAyNiwyIDAsMjIgWiIgc3Ryb2tlPSIjYjk5NDQwIiBzdHJva2Utd2lkdGg9IjMuNCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjwvZz48L3N2Zz4=");
    --sym-nyansapo: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsODApIj4KPHBhdGggZD0iTS0yNCwtMjQgQzQsLTI0IC0yNCw0IDQsNCBDMzIsNCA0LDMyIC0yNCwzMiIgc3Ryb2tlPSIjYjk5NDQwIiBzdHJva2Utd2lkdGg9IjMuNCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yNCwtMjQgQy00LC0yNCAyNCw0IC00LDQgQy0zMiw0IC00LDMyIDI0LDMyIiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPjwvc3ZnPg==");
    --sym-adinkrahene: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsODApIj4KPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjMwIiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjE4IiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjUiIGZpbGw9IiNiOTk0NDAiLz4KPC9nPjwvc3ZnPg==");
    --sym-nsoromma: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsODApIj4KPHBhdGggZD0iTTAsLTMwIEw4LC04IEwzMCwwIEw4LDggTDAsMzAgTC04LDggTC0zMCwwIEwtOCwtOCBaIiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjQiIGZpbGw9IiNiOTk0NDAiLz4KPC9nPjwvc3ZnPg==");
    --sym-duafe: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsNzgpIj4KPHBhdGggZD0iTS0xOCwtMTAgQy0xOCwxMCAxOCwxMCAxOCwtMTAiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8bGluZSB4MT0iLTE4IiB5MT0iLTEwIiB4Mj0iLTE4IiB5Mj0iLTMwIiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9Ii05IiB5MT0iLTEwIiB4Mj0iLTkiIHkyPSItMzQiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8bGluZSB4MT0iMCIgeTE9Ii0xMCIgeDI9IjAiIHkyPSItMzYiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8bGluZSB4MT0iOSIgeTE9Ii0xMCIgeDI9IjkiIHkyPSItMzQiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8bGluZSB4MT0iMTgiIHkxPSItMTAiIHgyPSIxOCIgeTI9Ii0zMCIgc3Ryb2tlPSIjYjk5NDQwIiBzdHJva2Utd2lkdGg9IjMuNCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0tMTIsMTIgQy0xMiwyNiAxMiwyNiAxMiwxMiIgc3Ryb2tlPSIjYjk5NDQwIiBzdHJva2Utd2lkdGg9IjMuNCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjwvZz48L3N2Zz4=");
    --sym-fawohodie: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsODApIj4KPHBhdGggZD0iTS0yMiwtMjAgTDIyLC0yMCBMMTQsLTQgTC0xNCwtNCBaIiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9IjAiIHkxPSItNCIgeDI9IjAiIHkyPSIxNCIgc3Ryb2tlPSIjYjk5NDQwIiBzdHJva2Utd2lkdGg9IjMuNCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0tMjAsMTQgTDIwLDE0IEwyMCwyNiBMLTIwLDI2IFoiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSItMzAiIGN5PSItMjQiIHI9IjMuNCIgc3Ryb2tlPSIjYjk5NDQwIiBzdHJva2Utd2lkdGg9IjMuNCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxjaXJjbGUgY3g9IjMwIiBjeT0iLTI0IiByPSIzLjQiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNLTI3LC0yNCBMLTIyLC0yMCBNMjcsLTI0IEwyMiwtMjAiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L2c+PC9zdmc+");
    --sym-bi-nka-bi: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsODApIj4KPHBhdGggZD0iTS0yNiwwIEMtMjYsLTE2IC0xMCwtMTYgLTYsLTQgTC0yLDEwIiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTI2LDAgQzI2LC0xNiAxMCwtMTYgNiwtNCBMMiwxMCIgc3Ryb2tlPSIjYjk5NDQwIiBzdHJva2Utd2lkdGg9IjMuNCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0tMzIsMiBMLTI2LDAgTC0zMCwtNiIgc3Ryb2tlPSIjYjk5NDQwIiBzdHJva2Utd2lkdGg9IjMuNCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0zMiwyIEwyNiwwIEwzMCwtNiIgc3Ryb2tlPSIjYjk5NDQwIiBzdHJva2Utd2lkdGg9IjMuNCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxjaXJjbGUgY3g9IjAiIGN5PSIxOCIgcj0iNCIgZmlsbD0iI2I5OTQ0MCIvPgo8L2c+PC9zdmc+");
    --sym-ewe-lattice: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsODApIj4KPHBhdGggZD0iTTAsLTM0IEwzNCwwIEwwLDM0IEwtMzQsMCBaIiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTAsLTE4IEwxOCwwIEwwLDE4IEwtMTgsMCBaIiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPjwvc3ZnPg==");
    --sym-ewe-triangles: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNjAgMTYwIj4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODAsODApIj4KPHBhdGggZD0iTS0zMCwxOCBMMCwtMjIgTDMwLDE4IFoiIHN0cm9rZT0iI2I5OTQ0MCIgc3Ryb2tlLXdpZHRoPSIzLjQiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNLTE4LDIyIEwwLC00IEwxOCwyMiBaIiBzdHJva2U9IiNiOTk0NDAiIHN0cm9rZS13aWR0aD0iMy40IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9Ii0zMCIgeTE9IjE4IiB4Mj0iMzAiIHkyPSIxOCIgc3Ryb2tlPSIjYjk5NDQwIiBzdHJva2Utd2lkdGg9IjMuNCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjwvZz48L3N2Zz4=");
}

/* Overlay mechanism: a ::before layer sized to its host, painted behind all
   in-flow content (z-index:-1 inside an isolated stacking context), so it
   never touches text, buttons or images and never affects layout. */
main,
main section {
    position: relative;
}
main {
    isolation: isolate;
}
main section {
    isolation: isolate;
}
main::before,
main section::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    opacity: .05;
    background-repeat: repeat;
    background-position: center;
    background-size: var(--sym-size, 150px) var(--sym-size, 150px);
    background-image: var(--sym, var(--sym-adinkrahene));
}

/* Base fallback for the outermost content wrapper on every page. */
main { --sym: var(--sym-adinkrahene); --sym-size: 190px; }

/* Bare, unnamed sections: cycle through six symbols by position so that
   sections next to each other on the same page never repeat. Named
   sections below override this with a symbol chosen for that section. */
main section.section:nth-of-type(6n+1) { --sym: var(--sym-nyansapo);     --sym-size: 150px; }
main section.section:nth-of-type(6n+2) { --sym: var(--sym-nsoromma);     --sym-size: 130px; }
main section.section:nth-of-type(6n+3) { --sym: var(--sym-duafe);       --sym-size: 170px; }
main section.section:nth-of-type(6n+4) { --sym: var(--sym-bi-nka-bi);   --sym-size: 150px; }
main section.section:nth-of-type(6n+5) { --sym: var(--sym-ewe-lattice); --sym-size: 140px; }
main section.section:nth-of-type(6n+0) { --sym: var(--sym-dwennimmen);  --sym-size: 170px; }

/* Signature sections — a symbol chosen to suit what the section is about.
   These come after the cycling rule above and win any tie on specificity. */
.hero                              { --sym: var(--sym-gye-nyame);   --sym-size: 260px; }
.hero-band                         { position: relative; isolation: isolate; --sym: var(--sym-gye-nyame); --sym-size: 190px; }
.hero-band::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    opacity: .05;
    background-repeat: repeat;
    background-position: center;
    background-size: var(--sym-size) var(--sym-size);
    background-image: var(--sym);
}
.page-hero                         { --sym: var(--sym-adinkrahene); --sym-size: 220px; }
.page-hero.archive-hero            { --sym: var(--sym-sankofa);     --sym-size: 220px; }
.ticket-hero                       { --sym: var(--sym-adinkrahene); --sym-size: 220px; }
main.page-hero                     { --sym: var(--sym-adinkrahene); --sym-size: 220px; }
main.checkout-page                 { --sym: var(--sym-adinkrahene); --sym-size: 220px; }
.final-cta                         { --sym: var(--sym-nsoromma);    --sym-size: 160px; }
.section.testimonials              { --sym: var(--sym-akoma);       --sym-size: 150px; }
.section.nomination-section        { --sym: var(--sym-dwennimmen); --sym-size: 170px; }
.section.sponsors-partners-section { --sym: var(--sym-ewe-triangles); --sym-size: 150px; }
.section.partner-assets            { --sym: var(--sym-ewe-lattice); --sym-size: 140px; }
.section.partner-assets--legacy    { --sym: var(--sym-duafe);       --sym-size: 170px; }
.section.gss-section               { --sym: var(--sym-sankofa);     --sym-size: 190px; }
.section.current-speakers          { --sym: var(--sym-nyansapo);    --sym-size: 150px; }
.section.speaker-section           { --sym: var(--sym-nyansapo);    --sym-size: 150px; }
.section.accommodation-section     { --sym: var(--sym-duafe);       --sym-size: 170px; }
.section.venue-section             { --sym: var(--sym-fawohodie);   --sym-size: 170px; }
.section.ticket-section            { --sym: var(--sym-bi-nka-bi);   --sym-size: 150px; }
.section.included                  { --sym: var(--sym-akoma);       --sym-size: 150px; }
.section.ticket-faq                { --sym: var(--sym-adinkrahene); --sym-size: 150px; }
.section.submission-section        { --sym: var(--sym-fawohodie);   --sym-size: 170px; }
.section.home-about-visual         { --sym: var(--sym-duafe);       --sym-size: 170px; }
.section.home-ideas-visual         { --sym: var(--sym-nyansapo);    --sym-size: 150px; }
.section.home-programmes-visual    { --sym: var(--sym-ewe-lattice); --sym-size: 140px; }
.section.archive-year-nav-section  { --sym: var(--sym-ewe-lattice); --sym-size: 130px; }
.section.archive                   { --sym: var(--sym-fawohodie);   --sym-size: 170px; }
.previous-voice-year               { --sym: var(--sym-bi-nka-bi);   --sym-size: 150px; }
.previous-voice-year--collapsible  { --sym: var(--sym-akoma);       --sym-size: 150px; }

/* The nomination form panel and success card sit on a white background —
   drop to an even lighter touch there so the pattern stays a whisper, not
   a texture, against white. */
.form-success { position: relative; isolation: isolate; }
.form-success::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    opacity: .04;
    border-radius: inherit;
    background-repeat: repeat;
    background-position: center;
    background-size: 130px 130px;
    background-image: var(--sym-nsoromma);
}

@media (max-width: 760px) {
    main section::before, main::before {
        background-size: 110px 110px;
    }
}

@media print {
    main::before, main section::before, .form-success::before {
        display: none;
    }
}

/* =========================================================================
   SITEWIDE TYE COLOUR RULE (requested):
   - All H1 headings -> gold (h2/h3 keep their own component colours below)
   - All paragraph copy -> white
   Exceptions: a handful of white/light-background CARD components (not full
   page sections) where body copy sits on a white or gold card rather than
   the site's navy page background. Those keep dark text so they stay
   legible. This list is the true, rendered background of each component —
   verified against the live page, not assumed from the component name.
   ========================================================================== */
h1 {
    color: var(--gold) !important;
}

p {
    color: var(--white) !important;
}

/* Legibility exceptions: white- or gold-background card components whose
   paragraph text must stay dark. Everything else sits on the navy page
   background and correctly inherits white from the rule above. */
.accommodation-body p,
.form-success p,
.form-note,
.award-detail-grid .award-card p,
.oxford-abstracts-note {
    color: var(--navy) !important;
}

/* Venue heading ("SOAS, University of London") on one line, matching the
   requested reference layout, with natural wrapping kept for narrow screens. */
.venue-details h3 {
    white-space: nowrap;
    font-size: clamp(22px, 3.6vw, 48px);
}
@media (max-width: 640px) {
    .venue-details h3 {
        white-space: normal;
    }
}

/* Ticket card headings: gold + uppercase on the two navy cards ("STUDENT",
   "NON-MEMBERS"); navy on the gold "GSS MEMBER" card so it stays legible. */
.ticket-card h3 {
    color: var(--gold);
    text-transform: uppercase;
}
.ticket-card.featured h3 {
    color: var(--navy);
}

/* GSS Member ticket button: hover goes navy with white text. */
.ticket-card.featured .button:hover,
.ticket-card.featured .button:focus-visible {
    background: var(--navy);
    color: #fff;
    border-color: var(--navy);
}
.ticket-card.featured .button::before {
    background: var(--navy);
}

/* Pill-shaped buttons everywhere, matching the hero/accommodation/archive-nav
   buttons that already used this radius — a sitewide consistency fix. */
.button {
    border-radius: 999px;
}

/* "Early-bird pricing ends…" was rendering navy-on-navy (--blue equals
   --navy in this palette). Gold keeps it legible and reads as emphasis. */
.ticket-note strong {
    color: var(--gold);
}

/* Ticket hero date/venue line: sentence case and a larger size, to match
   the requested reference layout, scoped to the tickets page only. */
.ticket-hero .hero-meta {
    text-transform: none;
    font-size: 20px;
    letter-spacing: 0;
}
.ticket-hero .hero-meta svg {
    width: 22px;
    height: 22px;
}

/* Archive: centre the conference-dates / host-venue meta under each year's
   heading, and tighten the oversized gap before the photo gallery. */
.archive-meta {
    justify-content: center;
    text-align: center;
}
.archive-meta span {
    color: rgba(255, 255, 255, .6);
}
.section.archive {
    padding-top: 60px;
}

/* Homepage hero headline: bolder still, per request. */
.hero-band h1 {
    font-weight: 800;
    -webkit-text-stroke: 0.6px currentColor;
}

/* Oxford Abstracts submission CTA (replaces the previous in-house form). */
.oxford-abstracts-cta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 40px;
    max-width: 760px;
    margin: 46px auto 0;
    padding: 48px 44px;
    background: #fff;
    border-radius: 20px;
    text-align: center;
}
.oxford-abstracts-primary {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    flex: 1 1 auto;
}
.oxford-abstracts-cta .button {
    min-width: 260px;
}
.oxford-abstracts-note {
    max-width: 34ch;
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--navy);
}
.oxford-abstracts-divider {
    align-self: stretch;
    width: 1px;
    background: rgba(27, 36, 82, .15);
    flex: 0 0 auto;
}
.oxford-abstracts-qr {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    flex: 0 0 auto;
}
.oxford-abstracts-qr img {
    display: block;
    width: 132px;
    height: 132px;
    border: 1px solid rgba(27, 36, 82, .15);
    border-radius: 10px;
}
.oxford-abstracts-qr .oxford-abstracts-note {
    max-width: 20ch;
    font-size: 12.5px;
}

@media (max-width: 700px) {
    .oxford-abstracts-cta {
        flex-direction: column;
        padding: 40px 24px;
    }
    .oxford-abstracts-divider {
        width: 100%;
        height: 1px;
    }
    .oxford-abstracts-cta .button {
        width: 100%;
        min-width: 0;
    }
}