/**********
SITEWIDE STYLES
**********/

:root {
    --primary-text: #3f3f3f;
    --white: #fff;

    --primary: #1365ED;
    --primary-alt: #1054c7;

    --secondary: #d7f282;
    --secondary-alt: #c2e060;

    --accent: #bd4b27;

    --bgblockone: #dbe7ff;
    --bgblocktwo: #fff;

    --transparent: rgba(0,0,0,0);

    /* Backgrounds */
    --bg-light: #f2f2f2;

    /* Typography */
    --heading-font: 'Special Gothic Expanded One', sans-serif;
    --body-font: 'Epilogue', sans-serif;

    /* Spacing scale (rhythm system) */
    --space-xs: 1rem;
    --space-sm: 2rem;
    --space-md: 3rem;
    --space-lg: 5rem;
    --space-xl: 8rem;
    --space-2xl: 10rem;

    /* Section vertical padding */
    --section-pad: 8rem;
    --section-pad-sm: 5rem;
}

body {
    color: #3f3f3f;
    line-height: 1.6;
    font-size: 1.5rem;
    font-weight: 400;
    font-family: 'Epilogue', sans-serif;
    letter-spacing: 0.2px;
    overflow-x: hidden;
}

h1, h2, h3, h4, h5, h6 {
    font-family: 'Special Gothic Expanded One', sans-serif;
    font-weight: 400;
    margin-bottom: 2rem;
    line-height: 1.4;
}

.footer h3 {
    text-transform: uppercase;
}

h1 {
    font-size: 4.2rem;
}
h2 {
    font-size: 3.6rem;
}
h3 {
    font-size: 2.6rem;
}
h4 {
    font-size: 2.1rem;
}
h5 {
    font-size: 1.8rem;
}
h6 {
    font-size: 1.6rem;
}

.txt-primary {
    color: var(--primary);
}

::-moz-selection {
    background: var(--primary);
    color: var(--white);
}

::selection {
    background: var(--primary);
    color: var(--white);
}

.text-white {
    color: #fff;
}

* {
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased; 
    -moz-osx-font-smoothing: grayscale;
}

img {
    max-width: 100%;
    height: auto;
}

a {
    text-decoration: none;
}

/**********
HEADER
**********/

.header {
    padding: 2.2rem 0;
    background-color: #fff;
    position: sticky;
    top: 0;
    z-index: 100;
    transition: padding 0.28s ease, box-shadow 0.28s ease;
}

.header.is-stuck {
    padding: 1.35rem 0;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
}

.logo-img {
    max-height: 65px;
    width: auto;
    transition: max-height 0.28s ease;
}

.header.is-stuck .logo-img {
    max-height: 40px;
}

/* Shrink nav text when the header is condensed (768px and up) */
@media (min-width: 768px) {
    .header.is-stuck .main-navigation .main-nav-list li a {
        font-size: 1.4rem;
    }
}

.main-navigation .main-nav-list {
    list-style: none;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 7rem;
    margin-bottom: 0;
    padding-left: 0;
}

.main-navigation .main-nav-list li a {
    font-family: 'Special Gothic Expanded One', sans-serif;
    font-weight: 400;
    font-size: 1.6rem;
    color: var(--primary-text);
    text-transform: uppercase;
    padding: 0.5rem 0;
    position: relative;
    transition: color 0.2s ease, font-size 0.28s ease;
}

.main-navigation .main-nav-list li a:hover,
.main-navigation .main-nav-list li.current-menu-item a {
    color: var(--primary);
}

.main-navigation .main-nav-list li a:after {
    content: '';
    position: absolute;
    left: 0;
    bottom: -5px;
    width: 100%;
    height: 4px;
    background-color: var(--primary);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.3s ease;
}

.main-navigation .main-nav-list li a:hover:after,
.main-navigation .main-nav-list li.current-menu-item a:after {
    transform: scaleX(1);
}

#burgerNav {
    position: relative;
    width: 30px;
    height: 16px;
    cursor: pointer;
    z-index: 110;
    margin-right: 10px;
}

#burgerNav .innerBurger {
    position: relative;
    height: 100%;
}

#burgerNav .innerBurger span {
    width: 100%;
    height: 3px;
    border-radius: 2px;
    background-color: var(--primary-text);
    position: absolute;
    transition: all 300ms;
}

#burgerNav .innerBurger span:nth-child(1) { top: 0; }
#burgerNav .innerBurger span:nth-child(2) { top: 50%; }
#burgerNav .innerBurger span:nth-child(3) { top: 100%; }

#burgerNav.change .innerBurger span:nth-child(1) {
    top: 50%;
    transform: rotate(-45deg);
}
#burgerNav.change .innerBurger span:nth-child(2) { opacity: 0; }
#burgerNav.change .innerBurger span:nth-child(3) {
    top: 50%;
    transform: rotate(45deg);
}

.mobile-nav {
    position: fixed;
    left: -100%;
    top: 0;
    width: 360px;
    max-width: 90%;
    height: 100vh;
    background-color: #fff;
    z-index: 105;
    transition: left 300ms ease;
    box-shadow: none;
    padding: 30px 20px 30px;
    display: flex;
    flex-direction: column;
}

.mobile-nav__logo {
    display: block;
    margin-bottom: 10px;
}

.mobile-nav__logo img {
    max-height: 46px;
    width: auto;
}

.mobile-nav.navActive {
    left: 0;
    box-shadow: 50px 0 100px rgba(0, 0, 0, 0.15);
}

.mobile-nav .main-nav-list {
    list-style: none;
    padding-left: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0;
}

.mobile-nav .main-nav-list li a {
    font-family: 'Epilogue', sans-serif;
    font-weight: 600;
    font-size: 1.6rem;
    color: var(--primary-text);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    display: block;
    padding: 8px 0;
}

.mobile-nav .main-nav-list li.current-menu-item a {
    color: var(--primary);
    position: relative;
    display: inline-block;
}

.mobile-nav .main-nav-list li.current-menu-item a:after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 2px;
    width: 100%;
    height: 4px;
    background-color: var(--primary);
}

/**********
FOOTER
**********/

.footer {
    background-color: var(--primary);
    color: #fff;
    padding: 6rem 0 3rem;
}

.footer p {
    color: #fff;
    font-size: 1.5rem;
    line-height: 1.8;
    font-weight: 500;
}

.footer-heading {
    color: #fff;
    font-size: 2.4rem;
    margin-bottom: 2rem;
}

.footer-socials {
    display: flex;
    gap: 1.2rem;
    margin-top: 1.5rem;
}

.footer-social {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border: 2px solid #fff;
    border-radius: 50%;
    color: #fff;
    font-size: 2.1rem;
    transition: opacity 0.2s ease;
}

.footer-social:hover {
    background-color: #fff;
    color: #1365ED;
}

/* Anti-harvest email: click-to-reveal. The "· show" cue hints the masked
   address is clickable; JS removes it once the real address is revealed. */
.js-mail__reveal {
    font-size: 0.75em;
    font-weight: 600;
    opacity: 0.7;
    white-space: nowrap;
    cursor: pointer;
    text-decoration: underline;
}
.js-mail:hover .js-mail__reveal {
    opacity: 1;
}

.footer-divider {
    border-color: #ffffff;
    margin: 4rem 0 2rem;
    opacity: 1;
}

.footer-logos {
    display: flex;
    align-items: center;
    gap: 1.6rem;
    margin-bottom: 4rem;
}

.footer-bars-logo {
    height: 60px;
    width: auto;
    display: block;
}

.footer-tu-logo {
    height: 60px;
    width: auto;
    display: block;
}

.footer p.footer-subtitle {
    line-height: 1.3;
    color: #d7f282;
    font-weight: 300;
    letter-spacing: 1px;
    font-size: 13px;
    margin: 0;
}

.footer p.footer-subtitle strong {
    color: #d7f282;
    font-weight: 700;
    font-size: 1.5rem;
    letter-spacing: 0.2px;
}

.footer-find-us {
    color: #fff;
    font-family: var(--heading-font);
    font-size: 2.4rem;
    font-weight: 800;
    text-decoration: underline;
    text-transform: uppercase;
    transition: all 0.3s ease;
    cursor: pointer;
}

/* Map lightbox */
.map-modal { position: fixed; inset: 0; z-index: 9999; opacity: 0; visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease; }
.map-modal.is-open { opacity: 1; visibility: visible; }
.map-modal__overlay { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.map-modal__dialog { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0.96);
    width: min(900px, 92vw); background: #fff; border-radius: 8px; overflow: hidden;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); transition: transform 0.3s ease; }
.map-modal.is-open .map-modal__dialog { transform: translate(-50%, -50%) scale(1); }
.map-modal__body { position: relative; width: 100%; height: min(700px, 85vh); }
.map-modal__body iframe { position: absolute; inset: 0; width: 100% !important; height: 100% !important; border: 0; }
.map-modal__close { position: absolute; top: 8px; right: 8px; z-index: 2; width: 36px; height: 36px;
    border: 0; border-radius: 50%; background: #fff; color: #000; font-size: 24px; line-height: 1;
    cursor: pointer; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); }

.footer-find-us:hover {
    color: #fff;
    letter-spacing: 4px;
    opacity: 0.9;
}

.footer-copyright {
    font-size: 1.3rem;
    color: #fff;
    opacity: 1;
}

.footer-legal {
    font-size: 1.3rem;
    color: #fff;
    opacity: 0.8;
    margin-top: 0.6rem;
}

.footer-copyright a {
    color: #fff;
    text-decoration: none;
}

.footer-copyright a:hover {
    text-decoration: underline;
}

.footer-legal__sep {
    margin: 0 0.6rem;
}

@media (max-width: 991px) {
    .footer .row:first-of-type {
        flex-direction: column-reverse;
    }
    .footer-logos {
        margin-top: 4rem;
    }
    .footer-copyright {
        font-size: 1.3rem;
    }
}

p:last-of-type {
    margin-bottom: 0;
}

/* BLOG */
.featured-image img {
    object-fit: cover;
    transform: scale(1);
    transition: -webkit-transform 300ms ease;
    transition: transform 300ms ease;
    transition: transform 300ms ease;
    -webkit-transform: 300ms ease;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    position: absolute;
}

.featured-image img:hover {
    -webkit-transform: scale(1.1);
    transform: scale(1.1);
}

.featured-image {
    overflow: hidden;
    padding-top: 60%;
    margin-bottom: 0.625rem;
    position: relative;
}

.placeholder-image i {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 2.5rem;
    color: var(--dark);
}

.featured-image .placeholder-image {
    position: absolute;
    width: 100%;
    background-color: #e1e1e1;
    height: 100%;
    text-align: center;
}

.breadcrumbs i {
    font-size: 0.6875rem;
    position: relative;
    top: -0.06875rem;
}

/**********
BUTTON    
**********/
.btn {
    background-color: transparent;
    box-shadow: none !important;
    padding: 1.3rem 3rem;
    transition: all .15s ease-in-out;
    border-radius: 0.25rem;
    text-transform: uppercase;
    border-width: 0;
    font-size: 1.6rem;
    font-weight: 600;
    border-style: solid;
}

.btn-small {
    font-size: 0.9rem;
    padding: 0.4375rem 1.25rem;
}

.btn.btn-primary {
    font-weight: bold;
    background-color: var(--primary);
    color: var(--white);
    position: relative;
    border-width: 0;
    border-style: solid;
}

.btn.btn-primary:hover,
.btn.btn-primary:focus,
.btn.btn-primary:active {
    background-color: var(--primary-alt);
    color: var(--white);
}

.form-container .frm_form_fields .frm_fields_container .frm_submit .frm_button_submit {
    font-weight: bold;
    background-color: var(--accent);
    color: #fff;
    position: relative;
    border-width: 0;
    border-style: solid;
}

.form-container .frm_form_fields .frm_fields_container .frm_submit .frm_button_submit:hover,
.form-container .frm_form_fields .frm_fields_container .frm_submit .frm_button_submit:focus,
.frm_button_submit:active {
    background-color: var(--secondary-alt);
    color: #fff;
}

.btn.btn-secondary {
    background-color: var(--secondary);
    color: #fff;
}

.btn.btn-secondary:hover,
.btn.btn-secondary:focus,
.btn.btn-secondary:active {
    background-color: var(--secondary-alt);
    border: 0 solid var(--transparent);
    color: var(--white);
}

.btn.btn-white {
    color: var(--primary);
    background-color: var(--white);
    opacity: 1;
}

.btn.btn-white:hover,
.btn.btn-white:focus,
.btn.btn-white:active {
    opacity: .6;
}

.btn.btn-outline-white {
    border: 1px solid #fff;
    color: #fff;
}

.btn.btn-outline-white:hover {
    border: 1px solid var(--primary);
    background-color: var(--primary);
    color: #fff;
}

/* DEFAULTS */
.object-fit-cover {
    object-position: center;
}

.list-style-none {
    list-style-type: none;
}

.nav ul {
    padding-left: 0;
    margin-bottom: 0;
    list-style: none;
}

.nav ul li {
    display: inline-block;
}

.transition {
    transition: all 0.3s ease;
}

.bgcover {
    background-size: cover;
    background-position: center;
}

section.block {
    padding: 8rem 0;
}

.box-overlay:after {
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}

.aspect-ratio-1 {
    aspect-ratio: 1;
}

.bradius {
    border-radius: 0.1875rem;
}

blockquote {
    padding: 0.8125rem 1.875rem 0.8125rem 1.875rem;
    border-left: 3px solid var(--primary);
    margin: 0.9375rem 0;
    font-style: italic;
    font-weight: 500;
}

/* DEFAULT GRAVITY FORMS */
.gform_wrapper.gravity-theme .gform_validation_errors {
    padding: 1.25rem 1.25rem 0.625rem;
    text-align: center;
    margin-bottom: 1.25rem;
}

.gform_wrapper.gravity-theme .gform_validation_errors>h2 {
    font-size: 1.6rem;
    font-weight: 700;
}

.gform_wrapper.gravity-theme .gfield_validation_message,
.gform_wrapper.gravity-theme .validation_message {
    border-radius: 0.625rem;
    font-weight: bold;
    margin-top: 0.75rem;
}

.gform_wrapper .gform_footer input.gform_button {
    border: 2px solid var(--primary) !important;
    padding: 1rem 3.75rem !important;
    text-transform: uppercase;
    color: var(--primary);
    font-weight: 700;
    background-color: transparent;
    margin: 0 auto;
    transition: 0.3s all ease;
}

.gform_wrapper .gform_footer input.gform_button:hover {
    background-color: var(--primary);
    color: #fff;
}

.gform_wrapper textarea {
    height: 7.5rem;
    margin-top: 0.3125rem;
    border: 1px solid #e1e1e1;
}

.gform_wrapper.gravity-theme .gfield textarea:focus {
    outline: 0;
    border-color: var(--primary) !important;
}

.gform_wrapper select {
    border-color: #e1e1e1;
    padding: 1.125rem 0.9375rem;
    outline: 0 !important;
}

.gform_wrapper input {
    border: 1px solid #e1e1e1;
    line-height: 1;
}

.gform_wrapper.gravity-theme input[type=color],
.gform_wrapper.gravity-theme input[type=date],
.gform_wrapper.gravity-theme input[type=datetime-local],
.gform_wrapper.gravity-theme input[type=datetime],
.gform_wrapper.gravity-theme input[type=email],
.gform_wrapper.gravity-theme input[type=month],
.gform_wrapper.gravity-theme input[type=number],
.gform_wrapper.gravity-theme input[type=password],
.gform_wrapper.gravity-theme input[type=search],
.gform_wrapper.gravity-theme input[type=tel],
.gform_wrapper.gravity-theme input[type=text],
.gform_wrapper.gravity-theme input[type=time],
.gform_wrapper.gravity-theme input[type=url],
.gform_wrapper.gravity-theme input[type=week],
.gform_wrapper.gravity-theme select,
.gform_wrapper.gravity-theme textarea {
    padding: 0.9375rem 0.9375rem !important;
    background-color: transparent;
    border: 0;
    border-bottom: 1px solid #D3DEE2;
    transition: all 0.3s ease;
}

.gform_wrapper.gravity-theme input:focus {
    border-color: var(--primary);
}

.gform_validation_error.gform_wrapper.gravity-theme .gform_validation_errors {
    padding: 1rem;
    border-radius: 0;
}

.gform_validation_error.gform_wrapper.gravity-theme .gfield_validation_message,
.gform_wrapper.gravity-theme .validation_message {
    border-radius: 0;
    font-size: 0.8125rem;
    background-color: transparent;
    border: revert-layer;
    padding: 0;
}

.gform_wrapper.gravity-theme form .gform_footer,
.gform_wrapper.gravity-theme form .gform_page_footer {
    padding-bottom: 0;
}

/* MOBILE NAV */
.navbar-toggler[aria-expanded="false"] .navbar-toggler-icon {
    background: url(./images/icons/nav-closed.svg);
    background-position: center center;
    background-repeat: no-repeat;
}

.navbar-toggler .navbar-toggler-icon {
    width: 1.875rem;
    height: 1.875rem;
}

.navbar-toggler-icon {
    display: inline-block;
    width: 1.5em;
    height: 1.5em;
    vertical-align: middle;
    background-image: var(--bs-navbar-toggler-icon-bg);
    background-repeat: no-repeat;
    background-position: center;
    background-size: 100%;
}

/* -------------------------
NEW STYLES HERE
------------------------- */

/* Home Hero */
#homehero {
	height: calc(100vh - var(--header-height, 172px));
	position: relative;
	overflow: hidden;
}

.homehero-bg {
	position: absolute;
	inset: 0;
	background: linear-gradient(rgba(0, 0, 0, 0.35), rgba(0, 0, 0, 0.35)), var(--hero-bg, url('/wp-content/uploads/2026/07/vienna-transport-tram.jpg')) center/cover no-repeat;
	opacity: 0;
	animation: heroBgReveal 2.3s ease forwards .65s;
}

.homehero-overlay {
	position: absolute;
	inset: 0;
	background-color: #1464ed;
	animation: heroOverlayFade 2s ease forwards 0s;
}

#homehero .homehero-logo {
	width: 300px;
	height: auto;
	z-index: 3;
}

.homehero-bar {
	position: absolute;
	height: 74px;
	background-color: #fff;
	z-index: 2;
}

.homehero-bar--top {
	top: calc(50% - 136px);
	left: calc(50% + 145px);
	right: 0;
	animation: heroBarTopShrink 5.9s ease forwards;
}

.homehero-bar--bottom {
	top: calc(50% + 61px);
	left: 0;
	right: calc(50% + 142px);
	animation: heroBarBottomShrink 5.9s ease forwards;
}

@keyframes heroBarTopShrink {
	0% {
		left: calc(50% + 145px);
		right: 0;
	}
	100% {
		left: calc(50% + 145px);
		right: 100%;
	}
}

@keyframes heroBarBottomShrink {
	0% {
		left: 0;
		right: calc(50% + 142px);
	}
	100% {
		left: 100%;
		right: calc(50% + 142px);
	}
}

@keyframes heroBarShrink {
	0% {
		left: 0;
		width: 100%;
	}
	100% {
		left: 50%;
		width: 0;
		opacity: 0;
	}
}

@keyframes heroOverlayFade {
	0% {
		background-color: #1464ed;
		opacity: 1;
	}
	43% {
		background-color: #1464ed;
		opacity: 1;
	}
	71% {
		background-color: #fff;
		opacity: 1;
	}
	100% {
		background-color: #fff;
		opacity: 0;
	}
}

@keyframes heroBgReveal {
	0% {
		opacity: 0;
	}
	100% {
		opacity: 1;
	}
}

/* Home Hero — temporary static image, animation disabled (see commented-out markup in template-home.php) */
.homehero-static-bg {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
	background-attachment: fixed;
}

@media (max-width: 991px) {
	.homehero-static-bg {
		background-attachment: scroll;
	}
}

.homehero-static-overlay {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.35);
}

.g-4, .gx-4 { --bs-gutter-x: 2.3rem; }
.g-4, .gy-4 { --bs-gutter-y: 2.3rem; }

.container,
.container-lg {
	width: 96%;
}

/* Wider container from lg up, except in the header */
@media (min-width: 992px) {
	.container:not(.header-container) {
		max-width: 900px;
	}
}

@media (min-width: 1200px) {
	.container:not(.header-container) {
		max-width: 1140px;
	}
}

/* Safe side gutters on mobile */
@media (max-width: 767px) {
	.container,
	.container-lg {
		padding-left: 20px;
		padding-right: 20px;
	}
}

/* What We Do */
.whatwedo {
	position: relative;
	padding: 10rem 0 12rem;
	background-color: #f2f2f2;
	overflow: hidden;
}

.whatwedo .container {
	position: relative;
	z-index: 5;
}

.whatwedo-title {
	margin-bottom: 2rem;
}

.whatwedo-intro {
	display: grid;
	grid-template-columns: 1fr;
	gap: 20px;
	align-items: center;
}
@media (min-width: 992px) {
	.whatwedo-intro { grid-template-columns: 1fr 1fr; }
}

.whatwedo-intro p {
	margin-bottom: 1rem;
}

.whatwedo-focus-wrap {
	display: flex;
	align-items: flex-start;
	height: 100%;
	justify-content: flex-end;
}

.whatwedo-focus {
	list-style: none;
	padding: 0;
	margin: 0;
	width: 90%;
}

.whatwedo-focus__item {
	display: block;
	font-family: 'Special Gothic Expanded One', sans-serif;
	text-transform: uppercase;
	font-size: 1.4rem;
	letter-spacing: 0.05em;
	padding: 2rem 1.6rem;
	margin-bottom: 2.6rem;
	text-align: center;
}

.whatwedo-focus__item:last-child {
	margin-bottom: 0;
}

@media (max-width: 991px) {
	.whatwedo-focus { width: 100%; }
	.whatwedo-focus__item {
		font-size: 1.3rem;
		padding: 1.4rem 1rem;
		margin-bottom: 1.4rem;
	}
}

.whatwedo-focus__item--primary {
	background-color: var(--primary);
	color: var(--white);
}

.whatwedo-focus__item--secondary {
	background-color: var(--secondary);
	color: var(--primary-text);
}

.whatwedo-focus__item--white {
	background-color: var(--white);
	color: var(--primary-text);
}

.whatwedo-cards {
	margin-top: 4rem;
	position: relative;
	z-index: 2;
}

.whatwedo-cards .row {
	--bs-gutter-x: 4rem;
	--bs-gutter-y: 4rem;
}

.wwd-card {
	background-color: var(--white);
	border-radius: 5px;
	box-shadow: 0 6px 20px rgba(0,0,0,.06);
	padding: 3.5rem 2.5rem;
	text-align: center;
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
}

.wwd-card__icon {
	width: 64px;
	height: 64px;
	color: var(--primary);
	margin-bottom: 2rem;
}

.wwd-card__icon svg,
.wwd-card__icon img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
}

.wwd-card__title {
	font-size: 2rem;
	margin-bottom: 0.9rem;
	font-family: 'Special Gothic Expanded One', sans-serif;
	text-transform: uppercase;
	letter-spacing: 0.2px;
}

.wwd-card__text {
	font-size: 1.4rem;
	color: var(--primary-text);
	margin-bottom: 2.5rem;
	flex-grow: 1;
}

.wwd-card__btn {
	font-family: 'Montserrat', sans-serif;
	font-size: 1.4rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 1.3rem 1.6rem 1rem;
	border-radius: 4px;
	margin-top: 20px;
	font-weight: 700;
	width: 170px;
}

.btn.btn-outline {
	background-color: transparent;
	border: 1px solid var(--primary-text);
	color: var(--primary-text);
}

.btn.btn-outline:hover,
.btn.btn-outline:focus {
	background-color: var(--primary);
	border-color: var(--primary);
	color: var(--white);
}

.whatwedo-deco {
	position: absolute;
	left: 0;
	top: 59%;
	transform: translateY(-50%);
	width: 230px;
	height: auto;
	object-fit: cover;
	z-index: 1;
	pointer-events: none;
}

.whatwedo-deco__img {
	display: block;
	width: 100%;
	height: auto;
}

@media (max-width: 767px) {
	.whatwedo { padding: 6rem 0 8rem; }
	.whatwedo-cards { margin-top: 4rem; }
	.wwd-card { margin-bottom: 1.5rem; }
	.wwd-card__text br { display: none; }
	.whatwedo-deco { display: none; }
	.footer-copyright { font-size: 1.1rem; }
}


/**********
FOLLOW US — LinkedIn feed (SociableKit)
**********/

.followus {
	padding: 8rem 0 9rem;
	background-color: var(--white);
	overflow: hidden;
}

.followus-title {
	text-align: center;
	text-transform: uppercase;
	margin-bottom: 4rem;
}

/**********
HERO INNER
**********/

.hero-inner {
	background-color: var(--primary);
	color: var(--white);
	padding: 6rem 0 6rem;
}

.hero-inner__title {
	font-size: 5rem;
	color: var(--white);
	margin: 0;
	text-transform: uppercase;
	line-height: 1;
}

.hero-inner__text {
	font-size: 1.5rem;
	line-height: 1.6;
	margin: 1rem 0 0;
	padding: 0;
	width: 800px;
	max-width: 100%;
}

.hero-inner__text a {
	color: var(--white);
	font-weight: 700;
	text-decoration: underline;
	transition: opacity 0.2s ease;
}

.hero-inner__text a:hover {
	opacity: 0.75;
}

@media (max-width: 767px) {
	.hero-inner { padding: 4rem 0 3.5rem; }
	.hero-inner__title { font-size: 3.4rem; }
	.hero-inner__text br { display: none; }
}

@media (max-width: 574px) {
	.hero-inner__title { font-size: 4rem; }
	.hero-inner__text { font-size: 1.5rem; }
}

/**********
TEAM
**********/

.team-section {
	background-color: #fff;
}

.team-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 4rem;
	align-items: start;
}

.team-card {
	margin: 0;
}

.team-card__trigger {
	display: block;
	width: 100%;
	padding: 0;
	border: 0;
	background: none;
	text-align: center;
	cursor: pointer;
	font-family: inherit;
}

.team-card__trigger[disabled] {
	cursor: default;
}

.team-card__photo {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 5;
	background-color: #d9d9d9;
	overflow: hidden;
	border-radius: 4px;
	margin: 0 auto 1.2rem;
	transition: box-shadow .2s ease, transform .2s ease;
}

.team-card__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: top;
	display: block;
	transition: opacity .2s ease;
}

.team-card__trigger:not([disabled]):hover .team-card__photo {
	transform: translateY(-3px);
}

.team-card__trigger:not([disabled]):hover .team-card__photo img {
	opacity: 0.8;
}

.team-card.is-active .team-card__photo img {
	opacity: 0.8;
}

.team-card__name {
	display: block;
	font-weight: 700;
	font-size: 1.5rem;
	color: var(--primary-text);
}

.team-card__position {
	display: block;
	font-size: 1.3rem;
	color: #6b6b6b;
	font-weight: 500;
}

/* detail panel row */
.team-detail-row {
	grid-column: 1 / -1;
	max-height: 0;
	opacity: 0;
	transition: max-height .35s ease, opacity .3s ease, margin .35s ease;
}

.team-detail-row.is-open {
	max-height: 1200px;
	opacity: 1;
	margin: 1rem 0 2rem;
}

.team-detail {
	position: relative;
	background-color: var(--white);
	padding: 4rem 0;
	width: 100vw;
	left: 50%;
	transform: translateX(-50%);
}

.team-detail__inner {
	max-width: 1000px;
	margin: 0 auto;
	padding: 0 1.5rem;
	position: relative;
}

.team-detail__close {
	position: absolute;
	top: 0;
	right: 1.5rem;
	border: 0;
	background: none;
	font-size: 3.9rem;
	line-height: 1;
	color: #9a9a9a;
	cursor: pointer;
}

.team-detail__close:hover { color: var(--primary-text); }

.team-detail__top {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 4rem;
	align-items: center;
}

.team-detail__photo {
	background-color: #d9d9d9;
	overflow: hidden;
	border-radius: 4px;
	min-height: 180px;
}

.team-detail__photo--empty {
	aspect-ratio: 1;
}

.team-detail__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: top;
	display: block;
}

.team-detail__publications {
	display: flex;
	flex-direction: column;
	gap: .4rem;
	margin-top: .4rem;
}

.team-detail__publications--cols {
	display: grid;
	grid-template-columns: 1fr 1fr;
	column-gap: 1.6rem;
}

.team-detail__pubs-row a {
	color: var(--primary);
	text-decoration: underline;
}
.team-detail__pubs-row a:hover { text-decoration: none; }

@media (max-width: 575px) {
	.team-detail__publications--cols {
		grid-template-columns: 1fr;
	}
}

.team-detail__prefix {
	font-size: 1.3rem;
	color: #8a8a8a;
	margin: 0;
	line-height: 1.5;
}

.team-detail__name {
	font-size: 2.6rem;
	margin: 0.4rem 0;
	text-transform: uppercase;
	line-height: 1.1;
}

.team-detail__position {
	font-size: 1.3rem;
	color: #8a8a8a;
	margin: 0 0 1.8rem;
}

.team-detail__bio {
	font-size: 1.5rem;
	line-height: 1.6;
	margin: 2rem 0 2rem;
}

.team-detail__bio p:last-child {
	margin-bottom: 0;
}

.team-detail__links {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
	margin-top: 0.6rem;
}

.team-detail__link {
	font-size: 1.4rem;
	color: var(--primary);
	text-decoration: none;
}

.team-detail__link:hover { text-decoration: none; }

.team-detail__link i {
	margin-right: .6rem;
}

.team-detail__icon {
	vertical-align: middle;
	margin-right: .4rem;
	flex-shrink: 0;
	width: 20px;
}

img.team-detail__icon {
	position: relative;
	top: -3px;
}

.team-detail__icon--linkedin {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	color: var(--primary);
	font-size: 15px;
	position: relative;
	top: -2px;
}

/* past members */
.team-past {
	margin-top: 6rem;
}

.team-past__title {
	font-size: 2rem;
	margin-bottom: 1.5rem;
}

.team-past__list {
	list-style: none;
	padding: 0;
	margin: 0;
}

.team-past__list li {
	font-size: 1.6rem;
	padding: .3rem 0;
}

@media (min-width: 767px) and (max-width: 991px) {
	.main-navigation .main-nav-list { gap: 3rem; }
	.main-navigation .main-nav-list li a { font-size: 1.5rem; }
}

@media (max-width: 991px) {
	.header { padding: 1.5rem 0; }
	.team-grid { grid-template-columns: repeat(3, 1fr); gap: 2.5rem 3rem; }
	.team-card__name { font-size: 1.4rem; }
	.team-card__position { font-size: 1.2rem; }
	.team-detail__top { gap: 2rem; }
	.team-detail__bio { margin: 1.5rem 0 1.8rem; font-size: 1.4rem; }
}

@media (max-width: 767px) {
	.hero-inner__text { font-size: 1.5rem; line-height: 1.6; margin: 1rem 0 0; padding: 0; }
	.team-section { padding: 4rem 0 5rem; }
	.team-grid { grid-template-columns: repeat(2, 1fr); gap: 2.5rem 1.5rem; }

	.team-detail-row {
		position: fixed;
		inset: 0;
		z-index: 9999;
		max-height: none;
		opacity: 0;
		margin: 0;
		background: rgba(0,0,0,.5);
		display: flex;
		align-items: center;
		justify-content: center;
		transition: opacity .3s ease;
	}
	.team-detail-row.is-open {
		opacity: 1;
		max-height: none;
		margin: 0;
	}
	.team-detail {
		position: relative;
		width: 92vw;
		max-height: 90vh;
		overflow-y: auto;
		left: auto;
		transform: none;
		border-radius: 4px;
		padding: 2rem;
		scrollbar-width: thin;
		scrollbar-color: var(--primary) transparent;
	}
	.team-detail::-webkit-scrollbar { width: 6px; }
	.team-detail::-webkit-scrollbar-track { background: transparent; }
	.team-detail::-webkit-scrollbar-thumb { background: var(--primary); border-radius: 3px; }
	.team-detail__inner { padding: 0; }
	.team-detail__top { grid-template-columns: 140px 1fr; gap: 1.5rem; align-items: start; }
	.team-detail__photo {
		order: -1;
		aspect-ratio: 4 / 5;
		overflow: hidden;
		border-radius: 4px;
	}
	.team-detail__photo img {
		width: 100%;
		height: 100%;
		object-fit: cover;
	}
	.team-detail__name { margin: 0.1rem 0; font-size: 2.2rem; }
	.team-detail__bio { line-height: 1.6; margin: 0.8rem 0 1.3rem; font-size: 1.3rem; }
	.team-detail__close {
		position: fixed;
		top: -6px;
		right: 0;
		z-index: 10000;
		font-size: 4.8rem;
		color: #fff;
		background: none;
		border: 0;
		float: none;
	}
}

@media (min-width: 600px) and (max-width: 767px) {
	.team-detail__top { grid-template-columns: 160px 1fr; }
}

@media (max-width: 479px) {
	.team-detail__top { grid-template-columns: 1fr; }
	.team-detail__photo { max-width: 160px; }
}

@media (max-width: 767px) {
	.team-detail-row {
		-webkit-backdrop-filter: blur(6px);
		backdrop-filter: blur(6px);
	}
	.team-detail__close {
		opacity: 0.7;
		transition: opacity 0.2s ease;
	}
	.team-detail__close:hover {
		color: #fff;
		opacity: 1;
	}
}

/**********
RESEARCH
**********/

.research-section {
	background-color: var(--bg-light);
	padding: var(--section-pad) 0;
}

.research-area {
	margin-bottom: 10rem;
}

.research-area:last-child {
	margin-bottom: 0;
}

/* Header bar */
.research-area__header {
	padding: 1.5rem 1.6rem;
	margin-bottom: 4rem;
}

.research-area__title {
	margin: 0;
	font-size: 2.8rem;
	line-height: 1.1;
}

.research-area__subhead {
	margin: 0.4rem 0 0;
	font-size: 1.5rem;
	font-weight: 400;
}

.research-area--blue .research-area__header {
	background-color: var(--primary);
}
.research-area--blue .research-area__title,
.research-area--blue .research-area__subhead {
	color: var(--white);
}

.research-area--green .research-area__header {
	background-color: var(--secondary);
}
.research-area--green .research-area__title,
.research-area--green .research-area__subhead {
	color: var(--primary-text);
}

.research-area--white .research-area__header {
	background-color: var(--white);
}
.research-area--white .research-area__title,
.research-area--white .research-area__subhead {
	color: var(--primary-text);
}

/* Body: text + media */
.research-area__body,
.research-area__actions {
	padding: 0;
}

.research-area__body {
	display: flex;
	gap: 5rem;
	align-items: stretch;
}

.research-area.is-reverse .research-area__body {
	flex-direction: row-reverse;
}

.research-area__text {
	flex: 1 1 50%;
	min-width: 0;
	padding: 1rem 0;
}

.research-area__text p {
	margin-bottom: 2rem;
	line-height: 1.62;
}

.research-area__text p:last-child {
	margin-bottom: 0;
}

.research-area__media {
	flex: 1 1 50%;
	min-width: 0;
	position: relative;
	aspect-ratio: 1;
}

.research-area__media img {
	display: block;
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Actions: arrow + buttons */
.research-area__actions {
	display: flex;
	align-items: center;
	gap: 2rem;
	margin-top: 5rem;
}

.research-area.is-reverse .research-area__actions {
	flex-direction: row-reverse;
}

.research-area__arrow {
	flex: 1 1 auto;
	position: relative;
	height: 1px;
	background-color: #aaa;
	min-width: 60px;
	margin-right: 1rem;
	top: 1px;
}

.research-area.is-reverse .research-area__arrow {
	margin-right: 0;
	margin-left: 1rem;
}

/* arrowhead — right by default */
.research-area__arrow::after {
	content: '';
	position: absolute;
	right: 0px;
	top: calc(50% - 0px);
	width: 10px;
	height: 10px;
	border-top: 1px solid #888;
	border-right: 1px solid #888;
	transform: translateY(-50%) rotate(45deg);
}

/* arrowhead — left on reversed rows */
.research-area.is-reverse .research-area__arrow::after {
	right: auto;
	left: -1px;
	transform: translateY(-50%) rotate(-135deg);
}

.research-area__links {
	display: flex;
	gap: 1.2rem;
	flex-shrink: 0;
}

.research-area__btn {
	font-family: var(--heading-font);
	text-transform: uppercase;
	font-size: 1.25rem;
	letter-spacing: 0.02em;
	line-height: 1;
	padding: 0.65rem 2.6rem 0.55rem;
	white-space: nowrap;
	transition: opacity 0.2s ease;
}

.research-area__btn:hover {
	opacity: 0.82;
}

.research-area--blue .research-area__btn {
	background-color: var(--primary);
	color: var(--white);
}
.research-area--green .research-area__btn {
	background-color: var(--secondary);
	color: var(--primary-text);
}
.research-area--white .research-area__btn {
	background-color: var(--white);
	color: var(--primary-text);
	border: 0;
}

/* Tighter gap on mid-size desktops */
@media (min-width: 992px) and (max-width: 1199px) {
	.research-area__body {
		gap: 3rem;
	}
}

/* Stack from 991px down — image on top, landscape */
@media (max-width: 991px) {
	.research-area__body,
	.research-area.is-reverse .research-area__body {
		flex-direction: column-reverse;
		gap: 2.5rem;
	}
	.research-area__text { padding: 0; }
	.research-area__media { position: static; }
	.research-area__media img { position: static; inset: auto; height: 320px; }
	.research-area__actions,
	.research-area.is-reverse .research-area__actions {
		flex-direction: column-reverse;
		align-items: stretch;
		gap: 1.5rem;
		margin-top: 3rem;
	}
	.research-area__links { justify-content: stretch; }
	.research-area__btn { flex: 1; text-align: center; }
	.research-area__arrow { display: none; }
}

@media (max-width: 767px) {
	.research-section { padding: var(--section-pad-sm) 0; }
	.research-area { margin-bottom: 6rem; }
	.research-area__header { padding: 1.3rem 1.6rem; margin-bottom: 2.5rem; }
	.research-area__body,
	.research-area__actions { padding: 0 1.6rem; }
	.research-area__title { font-size: 2.2rem; }
	.research-area__media img { height: 260px; }
}

/**********
FOLLOW US
**********/

.followus .container {
	max-width: 1200px;
}

.followus-embed {
	max-width: 1200px;
	margin: 0 auto;
}

/* Hide SociableKit free-tier "powered by" branding */
.followus-embed a[href*="sociablekit.com"],
.followus-embed a[href*="sociablekit"] {
	display: none !important;
}
body .sk-ww-linkedin-page-post {
	border: 0 !important;
}

@media (max-width: 767px) {
	.followus { padding: 5rem 0 6rem; }
	.followus-title { margin-bottom: 3rem; }
}

/**********
ACCESSIBILITY TOOLBAR — move toggle to bottom-right
**********/

#pojo-a11y-toolbar.pojo-a11y-toolbar-left {
	left: auto !important;
	right: -180px !important;
	top: auto !important;
	bottom: 20px !important;
	transition: right 750ms cubic-bezier(.23, 1, .32, 1) !important;
}

#pojo-a11y-toolbar.pojo-a11y-toolbar-left.pojo-a11y-toolbar-open {
	left: auto !important;
	right: 0 !important;
}

#pojo-a11y-toolbar.pojo-a11y-toolbar-left .pojo-a11y-toolbar-toggle {
	left: auto !important;
	right: 180px !important;
	top: auto !important;
	bottom: 0 !important;
}

#pojo-a11y-toolbar .pojo-a11y-toolbar-toggle a {
	background-color: var(--primary) !important;
	border-radius: 4px 0 0 4px;
	box-shadow: 0 0 10px 0 rgb(0 0 0 / 41%) !important;
	transition: all 0.3s ease;
}

#pojo-a11y-toolbar .pojo-a11y-toolbar-toggle a:hover,
#pojo-a11y-toolbar .pojo-a11y-toolbar-toggle a:focus {
	padding-right: 20px;
	background-color: #1458cc !important;
}

#pojo-a11y-toolbar .pojo-a11y-toolbar-toggle svg {
	width: 26px;
}

/* ---------------------------------------------------------------------------
   Legal pages (Data Policy / Imprint) — long-form prose
--------------------------------------------------------------------------- */
.legal {
	padding: var(--section-pad-sm) 0 var(--section-pad);
}
.legal__body {
	max-width: 820px;
	color: var(--primary-text);
	font-weight: 500;
	line-height: 1.7;
}
.legal__body h2 {
	margin: 2.5rem 0 1rem;
	font-size: 1.5rem;
	line-height: 1.3;
}
.legal__body h2:first-child { margin-top: 0; }
.legal__body p { margin: 0 0 1.25rem; }
.legal__body ul {
	margin: 0 0 1.25rem;
	padding-left: 1.5rem;
	list-style: disc;
}
.legal__body li { margin: 0.25rem 0; }
.legal__body a {
	color: var(--primary);
	text-decoration: underline;
}

/* ---------------------------------------------------------------------------
   Imprint — definition-list content (hero stays above)
--------------------------------------------------------------------------- */
.legal .imprint__intro { font-weight: 600; line-height: 1.5; color: var(--primary-text); margin: 0 0 3.5rem; }
.imprint__list { display: grid; grid-template-columns: 180px 1fr; gap: 3.2rem 1rem; margin: 0; }
.imprint__row { display: contents; }
.imprint__label { font-size: 1.5rem; font-weight: 600; color: var(--primary-text); padding-top: 0.2rem; text-transform: uppercase; letter-spacing: 0.04em; }
.imprint__body { line-height: 1.7; color: var(--primary-text); margin: 0; }
.imprint__body p { margin: 0 0 1rem; }
.imprint__body p:last-child { margin-bottom: 0; }
.imprint__body a { color: var(--primary); text-decoration: underline; }
.imprint__row + .imprint__row { border-top: 1px solid #e5e5e5; padding-top: 3.2rem; grid-column: 1 / -1; display: grid; grid-template-columns: 180px 1fr; gap: 3.2rem 1rem; }

@media (max-width: 767px) {
	.imprint__list, .imprint__row + .imprint__row { grid-template-columns: 1fr; gap: 0.8rem; }
	.imprint__row + .imprint__row { padding-top: 2.4rem; }
}

/*------------------------------------*\
	Teaching
\*------------------------------------*/
.teaching__grid{display:grid;grid-template-columns:1fr 1fr;gap:40px 30px;align-items:start}
.teaching__section{min-width:0}
.teaching__term{font-family:'Epilogue';font-weight:600;font-size:13px;line-height:1.3;letter-spacing:1px;
  color:var(--primary-text);text-align:center;padding-top:var(--space-md);border-top:1px solid #e0e0e0;margin:0}
.teaching__title{font-family:var(--heading-font);font-weight:400;font-size:15px;line-height:1.3;color:var(--primary-text);text-transform:uppercase;
  text-align:center;padding-top:var(--space-md);border-top:1px solid #e0e0e0;margin-bottom:16px}
.teaching__section:has(.teaching__term) .teaching__title{padding-top:0;border-top:none}
.teaching__table{width:100%;border-collapse:collapse;font-family:'Epilogue';font-size:15px}
.teaching__table th{text-align:left;font-weight:600;background:#eef3ff;padding:8px 12px;color:var(--primary-text)}
.teaching__table td{padding:8px 12px;color:var(--primary-text)}
.teaching__table tbody tr:nth-child(even){background:#eef3ff}
.teaching__table th:nth-child(3),.teaching__table td:nth-child(3),
.teaching__table th:nth-child(4),.teaching__table td:nth-child(4){white-space:nowrap;width:1%}
.teaching__table a{color:var(--primary);text-decoration:underline}
.teaching__table a:hover{text-decoration:none}
@media(max-width:991px){.teaching__grid{grid-template-columns:1fr;gap:var(--space-xl)}}

/* =========================================================================
   PROJECTS
   ========================================================================= */
.projects-section {
	padding: 8rem 0;
	background: var(--bg-light);
}

.projects-group + .projects-group {
	margin-top: 120px;
}

.projects-group__heading {
	font-family: var(--heading-font);
	text-transform: uppercase;
	color: var(--primary-text);
	font-size: 3rem;
	margin: 0 0 12px;
}

.projects-group--finalized h2.projects-group__heading {
	margin: 0 0 80px 0;
	display: block;
}

/* --- Filter pills --- */
.pf-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 1.5rem;
	margin-bottom: 80px;
}

.pf-pill {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.7rem;
	flex: 1 1 0;
	min-width: 200px;
	padding: 1rem 1.4rem 0.8rem;
	border: 1px solid transparent;
	font-family: var(--body-font);
	font-size: 1.4rem;
	font-weight: 500;
	color: var(--primary-text);
	cursor: pointer;
	transition: filter 0.2s ease, box-shadow 0.2s ease, transform 0.05s ease;
}
.pf-pill__icon {
	flex-shrink: 0;
	position: relative;
	top: -1px;
	width: 16px;
	height: 16px;
}
.pf-pill--blue  { background: var(--primary);   color: var(--white); }
.pf-pill--green { background: var(--secondary); color: var(--primary-text); }
.pf-pill--white { background: var(--white); color: var(--primary-text); }

.pf-pill:hover { filter: brightness(0.96); }

.pf-pill__label {
	display: block;
	line-height: 1;
}

/* --- Mobile category dropdown (mirrors .pf-filters) --- */
.pf-select { display: none; } /* desktop: pills are used instead */

.pf-swatch {
	flex-shrink: 0;
	width: 12px; height: 12px;
	border-radius: 50%;
	border: 1px solid transparent;
}
.pf-swatch--blue  { background: var(--primary); }
.pf-swatch--green { background: var(--secondary); }
.pf-swatch--white { background: var(--white); border-color: #d5d5d5; }
.pf-swatch--all {
	background: conic-gradient(var(--primary) 0 33.34%, var(--secondary) 0 66.67%, var(--white) 0 100%);
	border-color: #d5d5d5;
}

/* --- Bars --- */
.projects-bars {
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
}

.project-bar {
	position: relative;
}

.project-bar__head {
	position: relative;
	scroll-margin-top: 88px; /* clear the sticky header when scrolled into view */
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 2rem;
	width: 100%;
	padding: 1.5rem 1.7rem;
	border: 0;
	text-align: left;
	cursor: pointer;
	overflow: hidden;
	font-family: inherit;
	transition: filter 0.2s ease;
}

.project-bar--blue  .project-bar__head { background: var(--primary); }
.project-bar--green .project-bar__head { background: var(--secondary); }
.project-bar--white .project-bar__head { background: var(--white); border: 0; }

/* Text colours per bar colour */
.project-bar--blue  .project-bar__title,
.project-bar--blue  .project-bar__funding,
.project-bar--blue  .project-bar__years { color: var(--white); }
.project-bar--green .project-bar__title,
.project-bar--green .project-bar__funding,
.project-bar--green .project-bar__years,
.project-bar--white .project-bar__title,
.project-bar--white .project-bar__funding,
.project-bar--white .project-bar__years { color: var(--primary-text); }

/* Dark angled wedge: slides in from the right on hover, stays while open */
.project-bar__wedge {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	width: 28%;
	background: #2c2c2c;
	clip-path: polygon(0 0, 100% 0, 100% 100%, 22% 100%);
	transform: translateX(102%);
	transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
	pointer-events: none;
	z-index: 0;
}
.project-bar__head:hover .project-bar__wedge,
.project-bar.is-open .project-bar__wedge { transform: translateX(0); }
/* Just collapsed while the cursor is still over the bar — hide the wedge
   despite :hover, until the pointer actually leaves. */
.project-bar.is-collapsing .project-bar__wedge { transform: translateX(102%); }

/* Year + arrow re-colour once the dark wedge is behind them */
.project-bar:not(.is-collapsing) .project-bar__head:hover .project-bar__years,
.project-bar:not(.is-collapsing) .project-bar__head:hover .project-bar__arrow,
.project-bar.is-open .project-bar__years,
.project-bar.is-open .project-bar__arrow { color: var(--white); }

.project-bar__main,
.project-bar__meta { position: relative; z-index: 1; }

.project-bar__main {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	min-width: 0;
}
.project-bar__title {
	font-family: var(--heading-font);
	font-size: 2.8rem;
	line-height: 1.1;
}
.project-bar__funding {
	font-family: var(--body-font);
	font-size: 1.3rem;
	font-weight: 500;
	opacity: 0.9;
}

.project-bar__meta {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 1rem;
	flex-shrink: 0;
}
.project-bar__years {
	font-family: var(--body-font);
	font-size: 1.4rem;
	letter-spacing: 0.02em;
	position: relative;
	top: -10px;
	transition: color 0.4s ease;
}

/* Arrow — points left (per design); rotates down when open */
.project-bar__arrow {
	position: relative;
	width: 22px;
	right: 2px;
	top: -5px;
	height: 2px;
	background: currentColor;
	color: inherit;
	transition: transform 0.3s ease, color 0.4s ease;
}
.project-bar--blue .project-bar__arrow { color: var(--white); }
.project-bar--green .project-bar__arrow,
.project-bar--white .project-bar__arrow { color: var(--primary-text); }
.project-bar__arrow::after {
	content: '';
	position: absolute;
	left: -1px;
	top: 50%;
	width: 9px;
	height: 9px;
	border-left: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: translateY(-50%) rotate(45deg);
}
.project-bar.is-open .project-bar__arrow { transform: rotate(-90deg); }

/* --- Expandable panel: full-bleed white band (like team-detail) --- */
.project-panel {
	position: relative;
	left: 50%;
	width: 100vw;
	transform: translateX(-50%);
	background: var(--white);
	border: 0;
	margin-top: 30px;
	margin-bottom: 15px;
}

.project-panel__inner {
	display: flex;
	flex-wrap: wrap;
	gap: 2rem 5rem;
	align-items: flex-start;
	padding: 5rem 1.7rem;
	max-width: 100%;
	margin: 0 auto;
}
.project-panel__text { flex: 1 1 50%; min-width: 0; }
.project-panel__media { flex: 1 1 42%; min-width: 0; }

.project-panel__subtitle {
	font-size: 1.3rem;
	font-weight: 400;
	color: #6b6b6b;
	margin: 0;
}
.project-panel__title {
	font-family: var(--heading-font);
	font-size: 2.2rem;
	margin: 0;
	color: var(--primary-text);
}
.project-panel__place {
	font-size: 1.3rem;
	color: #6b6b6b;
	margin: 6px 0 1.6rem;
}
.project-panel__body { margin-bottom: 2rem; margin-top: 16px; }
.project-panel__body p { margin-bottom: 1.4rem; font-size: 15px; }

.project-panel__facts {
	margin: 0;
	font-size: 1.4rem;
	line-height: 1.5;
}
.project-panel__facts p { margin: 0 0 0.4rem; color: var(--primary-text); }
.project-panel__facts p:last-of-type { margin-bottom: 0; }
.project-panel__facts strong { font-weight: 700; }

.project-panel__pubs { margin-bottom: 1.6rem; font-size: 1.3rem; margin-top: 15px; }
.project-panel__pubs h4 {
	font-family: var(--heading-font);
	font-size: 1.5rem;
	margin: 0 0 1rem;
}
.project-panel__pubs ul { list-style: none; margin: 0; padding: 0; }
.project-panel__pubs li { margin-bottom: 0.8rem; line-height: 1.4; }
.project-panel__pubs a { color: var(--primary); text-decoration: underline; word-break: break-word; }
.project-panel__pubs a:hover { text-decoration: none; }

.project-panel__link {
	flex: 0 0 100%;
	width: 100%;
	display: flex;
	align-items: center;
	gap: 1.6rem;
	margin-top: 0;
}
.project-panel__link a {
	font-family: var(--body-font);
	font-size: 1.5rem;
	font-weight: 700;
	color: var(--primary-text);
	text-decoration: none;
	white-space: nowrap;
}
.project-panel__link a:hover { color: var(--primary); }
.project-panel__rule {
	display: none;
}

/* --- Carousel --- */
/* Frame carries the soft offset shadow behind the image (top-left) */
.project-carousel__frame { position: relative; }
.project-carousel {
	position: relative;
	z-index: 1;
	border: 1px solid #f1f1f1;
}
.project-carousel__slide { position: relative; }
.project-carousel__slide a { display: block; }
.project-carousel__slide img {
	display: block;
	width: 100%;
	height: 500px;
	object-fit: cover;
}
.project-carousel__nav {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem;
	margin-top: 1.8rem;
}
/* Thin line-arrows, ← bottom-left / → bottom-right */
.project-carousel__nav button {
	position: relative;
	width: 74px;
	height: 12px;
	background: none;
	border: 0;
	padding: 0;
	cursor: pointer;
}
.project-carousel__nav button::before {
	content: '';
	position: absolute;
	top: 50%;
	left: 0;
	right: 0;
	height: 1px;
	background: var(--primary-text);
	transition: background 0.2s ease;
}
.project-carousel__nav button::after {
	content: '';
	position: absolute;
	top: 50%;
	width: 9px;
	height: 9px;
	transform: translateY(-50%) rotate(45deg);
	transition: border-color 0.2s ease;
}
.project-carousel__prev::after {
	left: 0px;
	border-left: 1px solid var(--primary-text);
	border-bottom: 1px solid var(--primary-text);
}
.project-carousel__next::after {
	right: 0;
	border-top: 1px solid var(--primary-text);
	border-right: 1px solid var(--primary-text);
}
.project-carousel__nav button:hover::before { background: var(--primary); }
.project-carousel__nav button:hover::after { border-color: var(--primary); }

.project-carousel--empty {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 1 / 1;
	border: 1px dashed #cfcfcf;
}
.project-carousel__placeholder { width: 40%; height: auto; object-fit: contain; }

/* --- Responsive --- */
@media (max-width: 991px) {
	.pf-filters { display: none; }                 /* hide the button stack on mobile */
	.pf-select  { display: block; position: relative; margin-bottom: var(--space-md); }

	.pf-select__trigger {
		display: flex; align-items: center; gap: 1rem;
		width: 100%; min-height: 48px; padding: 0 1.4rem;
		background: var(--white); border: 1px solid #d5d5d5;
		font-family: var(--body-font); font-size: 1.5rem; font-weight: 500;
		color: var(--primary-text); cursor: pointer;
	}
	.pf-select__label { flex: 1 1 auto; text-align: left; }
	.pf-select__chev  { flex-shrink: 0; transition: transform 0.2s ease; }
	.pf-select__trigger[aria-expanded="true"] .pf-select__chev { transform: rotate(180deg); }

	.pf-select__menu {
		position: absolute; z-index: 20; top: calc(100% + 4px); left: 0; right: 0;
		background: var(--white); border: 1px solid #d5d5d5;
		padding: 0.4rem; box-shadow: 0 8px 24px rgba(0,0,0,0.12);
	}
	.pf-select__menu[hidden] { display: none; }

	.pf-select__option {
		display: flex; align-items: center; gap: 1rem;
		width: 100%; padding: 1rem 1.2rem;
		background: transparent; border: 0;
		font-family: var(--body-font); font-size: 1.5rem; font-weight: 500;
		color: var(--primary-text); text-align: left; cursor: pointer;
	}
	.pf-select__option:hover,
	.pf-select__option:focus-visible { background: #f1f1f1; outline: none; }
	.pf-select__option.is-selected { font-weight: 700; }
	.project-panel { margin-top: 20px; }
	.project-panel__inner { flex-direction: column; gap: 1rem; padding: 4rem 2rem; }
	.project-panel__media { width: 100%; }
	.project-bar__title { font-size: 2.2rem; }
	.project-bar__wedge { display: none; }
	.projects-bars { gap: 1.2rem; }

	/* No dark wedge on mobile, so keep the year/arrow at their resting colour
	   on hover/open instead of the white/secondary wedge treatment. */
	.project-bar:not(.is-collapsing) .project-bar__head:hover .project-bar__years,
	.project-bar:not(.is-collapsing) .project-bar__head:hover .project-bar__arrow,
	.project-bar.is-open .project-bar__years,
	.project-bar.is-open .project-bar__arrow { color: var(--primary-text); }
	.project-bar--blue:not(.is-collapsing) .project-bar__head:hover .project-bar__years,
	.project-bar--blue:not(.is-collapsing) .project-bar__head:hover .project-bar__arrow,
	.project-bar--blue.project-bar.is-open .project-bar__years,
	.project-bar--blue.project-bar.is-open .project-bar__arrow { color: var(--white); }
}

@media (max-width: 575px) {
	/* Shorter carousel on phones — 500px is too tall / over-crops here */
	.project-carousel__slide img { height: 320px; }
}


/* =========================================================================
   PUBLICATIONS — same design as Projects, unique classes (publication-* / pubf-*)
   ========================================================================= */
.publications-section {
	padding: 8rem 0;
	background: var(--bg-light);
}

.publications-group + .publications-group {
	margin-top: var(--space-xl);
}

.publications-group__heading {
	font-family: var(--heading-font);
	text-transform: uppercase;
	color: var(--primary-text);
	font-size: 3rem;
	margin: 0 0 12px;
}

/* --- Filter pills --- */
.pubf-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 1.5rem;
	margin-bottom: 80px;
}

.pubf-pill {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.7rem;
	flex: 1 1 0;
	min-width: 200px;
	padding: 1rem 1.4rem 0.8rem;
	border: 1px solid transparent;
	font-family: var(--body-font);
	font-size: 1.4rem;
	font-weight: 500;
	color: var(--primary-text);
	cursor: pointer;
	transition: filter 0.2s ease, box-shadow 0.2s ease, transform 0.05s ease;
}
.pubf-pill__icon {
	flex-shrink: 0;
	position: relative;
	top: -1px;
	width: 16px;
	height: 16px;
}
.pubf-pill--blue  { background: var(--primary);   color: var(--white); }
.pubf-pill--green { background: var(--secondary); color: var(--primary-text); }
.pubf-pill--white { background: var(--white); color: var(--primary-text); }

.pubf-pill:hover { filter: brightness(0.96); }

.pubf-pill__label {
	display: block;
	line-height: 1;
}

/* --- Mobile category dropdown (mirrors .pubf-filters) --- */
.pubf-select { display: none; } /* desktop: pills are used instead */

.pubf-swatch {
	flex-shrink: 0;
	width: 12px; height: 12px;
	border-radius: 50%;
	border: 1px solid transparent;
}
.pubf-swatch--blue  { background: var(--primary); }
.pubf-swatch--green { background: var(--secondary); }
.pubf-swatch--white { background: var(--white); border-color: #d5d5d5; }
.pubf-swatch--all {
	background: conic-gradient(var(--primary) 0 33.34%, var(--secondary) 0 66.67%, var(--white) 0 100%);
	border-color: #d5d5d5;
}

/* --- Bars --- */
.publications-bars {
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
}

.publication-bar {
	position: relative;
}

.publication-bar__head {
	position: relative;
	scroll-margin-top: 88px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 2rem;
	width: 100%;
	padding: 1.7rem 1.7rem;
	border: 0;
	text-align: left;
	cursor: pointer;
	overflow: hidden;
	font-family: inherit;
	transition: filter 0.2s ease;
}

.publication-bar--blue  .publication-bar__head { background: var(--primary); }
.publication-bar--green .publication-bar__head { background: var(--secondary); }
.publication-bar--white .publication-bar__head { background: var(--white); border: 0; }

/* Text colours per bar colour */
.publication-bar--blue  .publication-bar__title,
.publication-bar--blue  .publication-bar__funding,
.publication-bar--blue  .publication-bar__type-author,
.publication-bar--blue  .publication-bar__years { color: var(--white); }
.publication-bar--green .publication-bar__title,
.publication-bar--green .publication-bar__funding,
.publication-bar--green .publication-bar__type-author,
.publication-bar--green .publication-bar__years,
.publication-bar--white .publication-bar__title,
.publication-bar--white .publication-bar__funding,
.publication-bar--white .publication-bar__type-author,
.publication-bar--white .publication-bar__years { color: var(--primary-text); }

/* Dark angled wedge: slides in from the right on hover, stays while open */
.publication-bar__wedge {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	width: 22%;
	background: #2c2c2c;
	clip-path: polygon(0 0, 100% 0, 100% 100%, 44% 100%);
	transform: translateX(102%);
	transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
	pointer-events: none;
	z-index: 0;
}
.publication-bar__head:hover .publication-bar__wedge,
.publication-bar.is-open .publication-bar__wedge { transform: translateX(0); }
/* Just collapsed while the cursor is still over the bar — hide the wedge
   despite :hover, until the pointer actually leaves. */
.publication-bar.is-collapsing .publication-bar__wedge { transform: translateX(102%); }

/* Year + arrow re-colour once the dark wedge is behind them */
.publication-bar:not(.is-collapsing) .publication-bar__head:hover .publication-bar__years,
.publication-bar:not(.is-collapsing) .publication-bar__head:hover .publication-bar__arrow,
.publication-bar.is-open .publication-bar__years,
.publication-bar.is-open .publication-bar__arrow { color: var(--white); }

.publication-bar__main,
.publication-bar__meta { position: relative; z-index: 1; }

.publication-bar__main {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	min-width: 0;
	width: 80%;
}
.publication-bar__title {
	font-family: var(--heading-font);
	font-size: 2.2rem;
	line-height: 1.1;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.publication-bar__funding {
	font-family: var(--body-font);
	font-size: 1.3rem;
	font-weight: 500;
	opacity: 0.9;
	margin-top: 4px;
}
.publication-bar__type-author {
	font-family: var(--body-font);
	font-size: 1.3rem;
	font-weight: 500;
	opacity: 0.75;
	margin-top: 0.3rem;
}

.publication-bar__meta {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 1rem;
	flex-shrink: 0;
}
.publication-bar__years {
	font-family: var(--body-font);
	font-size: 1.4rem;
	letter-spacing: 0.02em;
	position: relative;
	top: -10px;
	transition: color 0.4s ease;
}

/* Arrow — points left (per design); rotates down when open */
.publication-bar__arrow {
	position: relative;
	width: 22px;
	right: 2px;
	top: -5px;
	height: 2px;
	background: currentColor;
	color: inherit;
	transition: transform 0.3s ease, color 0.4s ease;
}
.publication-bar--blue .publication-bar__arrow { color: var(--white); }
.publication-bar--green .publication-bar__arrow,
.publication-bar--white .publication-bar__arrow { color: var(--primary-text); }
.publication-bar__arrow::after {
	content: '';
	position: absolute;
	left: -1px;
	top: 50%;
	width: 9px;
	height: 9px;
	border-left: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: translateY(-50%) rotate(45deg);
}
.publication-bar.is-open .publication-bar__arrow { transform: rotate(-90deg); }

/* --- Expandable panel: full-bleed white band (like team-detail) --- */
.publication-panel {
	position: relative;
	left: 50%;
	width: 100vw;
	transform: translateX(-50%);
	background: var(--white);
	border: 0;
	margin-top: 30px;
	margin-bottom: 15px;
}

.publication-panel__inner {
	display: flex;
	flex-wrap: wrap;
	gap: 2rem 5rem;
	align-items: flex-start;
	padding: 4rem 1.7rem;
	margin: 0 auto;
}
.publication-panel__text { flex: 1 1 50%; min-width: 0; }
.publication-panel__media { flex: 1 1 42%; min-width: 0; }

.publication-panel__subtitle {
	font-size: 1.3rem;
	font-weight: 500;
	color: #6b6b6b;
	margin: 0;
}
.publication-panel__title {
	font-family: var(--heading-font);
	font-size: 2.2rem;
	margin: 0;
	line-height: 1.2;
	color: var(--primary-text);
}
.publication-panel__place {
	font-size: 1.3rem;
	color: #6b6b6b;
	margin: 8px 0 1.6rem;
}
.publication-panel__body { margin-bottom: 2rem; margin-top: 16px; }
.publication-panel__body p { margin-bottom: -14px !important; font-size: 15px; display: block; }

.publication-panel__facts {
	margin: 0;
	font-size: 1.4rem;
	line-height: 1.5;
}
.publication-panel__view {
	display: inline-block;
	margin-top: 0;
	font-size: 1.4rem;
	color: var(--primary);
	text-decoration: underline;
	margin-bottom: 20px;
}
.publication-panel__view:hover { text-decoration: none; }
.publication-panel__view i {
	font-size: 1.2rem;
	position: relative;
	top: -1px;
}

.publication-panel__facts p { margin: 0 0 0.4rem; color: var(--primary-text); }
.publication-panel__facts p:last-of-type { margin-bottom: 0; }
.publication-panel__facts strong { font-weight: 700; }

.publication-panel__pubs { margin-bottom: 1.6rem; font-size: 1.3rem; margin-top: 15px; }
.publication-panel__pubs h4 {
	font-family: var(--heading-font);
	font-size: 1.5rem;
	margin: 0 0 0.4rem;
}
.publication-panel__pubs ul { list-style: none; margin: 0; padding: 0; }
.publication-panel__pubs li { margin-bottom: 0.8rem; line-height: 1.4; }
.publication-panel__pubs a { color: var(--primary); text-decoration: underline; word-break: break-word; }
.publication-panel__pubs a:hover { text-decoration: none; }

.publication-panel__link {
	flex: 0 0 100%;
	width: 100%;
	display: flex;
	align-items: center;
	gap: 1.6rem;
	margin-top: 0;
}
.publication-panel__link a {
	font-family: var(--body-font);
	font-size: 1.5rem;
	font-weight: 700;
	color: var(--primary-text);
	text-decoration: none;
	white-space: nowrap;
}
.publication-panel__link a:hover { color: var(--primary); }
.publication-panel__rule {
	display: none;
}

/* --- Carousel --- */
/* Frame carries the soft offset shadow behind the image (top-left) */
.publication-carousel__frame { position: relative; }
.publication-carousel {
	position: relative;
	z-index: 1;
	border: 1px solid #f1f1f1;
}
.publication-carousel__slide { position: relative; }
.publication-carousel__slide a { display: block; }
.publication-carousel__slide img {
	display: block;
	width: 100%;
	height: 500px;
	object-fit: cover;
}
.publication-carousel__nav {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem;
	margin-top: 1.8rem;
}
/* Thin line-arrows, ← bottom-left / → bottom-right */
.publication-carousel__nav button {
	position: relative;
	width: 74px;
	height: 12px;
	background: none;
	border: 0;
	padding: 0;
	cursor: pointer;
}
.publication-carousel__nav button::before {
	content: '';
	position: absolute;
	top: 50%;
	left: 0;
	right: 0;
	height: 1px;
	background: var(--primary-text);
	transition: background 0.2s ease;
}
.publication-carousel__nav button::after {
	content: '';
	position: absolute;
	top: 50%;
	width: 9px;
	height: 9px;
	transform: translateY(-50%) rotate(45deg);
	transition: border-color 0.2s ease;
}
.publication-carousel__prev::after {
	left: 0px;
	border-left: 1px solid var(--primary-text);
	border-bottom: 1px solid var(--primary-text);
}
.publication-carousel__next::after {
	right: 0;
	border-top: 1px solid var(--primary-text);
	border-right: 1px solid var(--primary-text);
}
.publication-carousel__nav button:hover::before { background: var(--primary); }
.publication-carousel__nav button:hover::after { border-color: var(--primary); }

.publication-carousel--empty {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 1 / 1;
	border: 1px dashed #cfcfcf;
}
.publication-carousel__placeholder { width: 40%; height: auto; object-fit: contain; }

/* --- Responsive --- */
@media (max-width: 991px) {
	.pubf-filters { display: none; }                 /* hide the button stack on mobile */
	.pubf-select  { display: block; position: relative; margin-bottom: var(--space-md); }

	.pubf-select__trigger {
		display: flex; align-items: center; gap: 1rem;
		width: 100%; min-height: 48px; padding: 0 1.4rem;
		background: var(--white); border: 1px solid #d5d5d5;
		font-family: var(--body-font); font-size: 1.5rem; font-weight: 500;
		color: var(--primary-text); cursor: pointer;
	}
	.pubf-select__label { flex: 1 1 auto; text-align: left; }
	.pubf-select__chev  { flex-shrink: 0; transition: transform 0.2s ease; }
	.pubf-select__trigger[aria-expanded="true"] .pubf-select__chev { transform: rotate(180deg); }

	.pubf-select__menu {
		position: absolute; z-index: 20; top: calc(100% + 4px); left: 0; right: 0;
		background: var(--white); border: 1px solid #d5d5d5;
		padding: 0.4rem; box-shadow: 0 8px 24px rgba(0,0,0,0.12);
	}
	.pubf-select__menu[hidden] { display: none; }

	.pubf-select__option {
		display: flex; align-items: center; gap: 1rem;
		width: 100%; padding: 1rem 1.2rem;
		background: transparent; border: 0;
		font-family: var(--body-font); font-size: 1.5rem; font-weight: 500;
		color: var(--primary-text); text-align: left; cursor: pointer;
	}
	.pubf-select__option:hover,
	.pubf-select__option:focus-visible { background: #f1f1f1; outline: none; }
	.pubf-select__option.is-selected { font-weight: 700; }
	.publication-panel { margin-top: 20px; }
	.publication-panel__inner { flex-direction: column; gap: 2.5rem; padding: 4rem 2rem; }
	.publication-panel__media { width: 100%; }
	.publication-bar__title { font-size: 2rem; -webkit-line-clamp: 2; }
	.publication-bar__main { width: 90%; }
	.publication-bar__wedge { display: none; }
	.publications-bars { gap: 1.2rem; }

	/* No dark wedge on mobile, so keep the year/arrow at their resting colour
	   on hover/open instead of the white/secondary wedge treatment. */
	.publication-bar:not(.is-collapsing) .publication-bar__head:hover .publication-bar__years,
	.publication-bar:not(.is-collapsing) .publication-bar__head:hover .publication-bar__arrow,
	.publication-bar.is-open .publication-bar__years,
	.publication-bar.is-open .publication-bar__arrow { color: var(--primary-text); }
	.publication-bar--blue:not(.is-collapsing) .publication-bar__head:hover .publication-bar__years,
	.publication-bar--blue:not(.is-collapsing) .publication-bar__head:hover .publication-bar__arrow,
	.publication-bar--blue.publication-bar.is-open .publication-bar__years,
	.publication-bar--blue.publication-bar.is-open .publication-bar__arrow { color: var(--white); }
}

@media (max-width: 767px) {
	/* Tablet keeps the title at 2 lines (see the 991px block); phones get
	   the extra breathing room of a 3rd line. */
	.publication-bar__title { -webkit-line-clamp: 3; }
}

@media (max-width: 575px) {
	/* Shorter carousel on phones — 500px is too tall / over-crops here */
	.publication-carousel__slide img { height: 320px; }
}

/* --- Publications-only extras --- */
.publications-intro {
	max-width: 100%;
	margin-bottom: var(--space-md);
}
.publications-intro__text {
	font-size: 1.6rem;
	line-height: 1.5;
	color: var(--primary-text);
	margin: 0 0 0.6rem;
}
.publications-intro__link a {
	font-family: var(--body-font);
	font-size: 1.4rem;
	font-weight: 700;
	color: var(--primary);
	text-decoration: underline;
	word-break: break-word;
}
.publications-intro__link a:hover { text-decoration: none; }

.publication-carousel__credit {
	display: none;
}
