/* =========================================================================
   BMA Event Schedule 2.0
   All colours / sizes come from CSS custom properties written by the
   settings screen (see BMA_Schedule_Settings::css_variables()).
   ====================================================================== */

.bmasch,
.bmasch *,
.bmasch *::before,
.bmasch *::after { box-sizing: border-box; }

.bmasch {
	max-width: var(--bmasch-max-width, 1100px);
	margin: 0 auto 60px;
	font-family: var(--bmasch-font-body);
	color: var(--bmasch-desc-color);
	background: var(--bmasch-page-bg);
	-webkit-font-smoothing: antialiased;
}

.bmasch a { color: var(--bmasch-link-color); text-decoration: none; }
.bmasch a:hover { text-decoration: underline; }

.bmasch img { max-width: 100%; height: auto; display: block; }


/* -------------------------------------------------------------------------
   Day tabs
   ---------------------------------------------------------------------- */

.bmasch__tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 26px;
}

.bmasch--tabs-fill .bmasch__tab { flex: 1 1 220px; }

.bmasch--tabs-sticky .bmasch__tabs {
	position: sticky;
	top: 0;
	z-index: 20;
	padding: 10px 0;
	background: var(--bmasch-page-bg);
}

.bmasch__tab {
	appearance: none;
	-webkit-appearance: none;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 2px;
	margin: 0;
	border: 0;
	cursor: pointer;
	text-align: center;
	text-decoration: none;
	padding: var(--bmasch-tab-pad-y) var(--bmasch-tab-pad-x);
	border-radius: var(--bmasch-tab-radius);
	background: var(--bmasch-tab-bg);
	color: var(--bmasch-tab-color);
	font-family: var(--bmasch-font-heading);
	transition: background var(--bmasch-anim) ease, color var(--bmasch-anim) ease, transform var(--bmasch-anim) ease;
}

.bmasch__tab:hover,
.bmasch__tab:focus-visible {
	background: var(--bmasch-tab-bg-hover);
	color: var(--bmasch-tab-color-hover);
	text-decoration: none;
}

.bmasch__tab.is-active,
.bmasch__tab.is-active:hover {
	background: var(--bmasch-tab-bg-active);
	color: var(--bmasch-tab-color-active);
}

.bmasch__tab-day {
	display: block;
	font-size: var(--bmasch-tab-font-size);
	font-weight: var(--bmasch-tab-font-weight);
	letter-spacing: var(--bmasch-tab-letter-space);
	text-transform: var(--bmasch-tab-transform);
	line-height: 1.2;
}

.bmasch__tab-wd {
	display: block;
	font-family: var(--bmasch-font-body);
	font-size: .74em;
	font-weight: 400;
	letter-spacing: .2px;
	opacity: .72;
	text-transform: lowercase;
}


/* -------------------------------------------------------------------------
   Day panel + items
   ---------------------------------------------------------------------- */

.bmasch__day { display: none; }
.bmasch__day.is-active { display: block; }
.bmasch__day[hidden] { display: none; }

.bmasch__empty {
	padding: 40px 20px;
	text-align: center;
	color: var(--bmasch-desc-color);
	opacity: .7;
	border: 1px dashed var(--bmasch-item-border);
	border-radius: var(--bmasch-item-radius);
}

.bmasch__item {
	display: grid;
	grid-template-columns: var(--bmasch-aside-width) minmax(0, 1fr);
	gap: 20px;
	padding: var(--bmasch-item-pad);
	margin-bottom: var(--bmasch-gap);
	background: var(--bmasch-item-bg);
	border: 1px solid var(--bmasch-item-border);
	border-radius: var(--bmasch-item-radius);
	box-shadow: var(--bmasch-item-shadow);
}

.bmasch__item:nth-of-type(even) { background: var(--bmasch-item-bg-alt); }
.bmasch__item:last-child { margin-bottom: 0; }


/* left column ---------------------------------------------------------- */

.bmasch__aside {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 10px;
	min-width: 0;
}

.bmasch__time {
	font-family: var(--bmasch-font-heading);
	font-size: var(--bmasch-time-size);
	font-weight: var(--bmasch-time-weight);
	color: var(--bmasch-time-color);
	line-height: 1.25;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

.bmasch__cats { display: flex; flex-wrap: wrap; gap: 6px; }

.bmasch__cat {
	display: inline-block;
	padding: 4px 11px;
	border-radius: var(--bmasch-cat-radius);
	background: var(--bmasch-cat-bg);
	color: var(--bmasch-cat-color);
	font-size: var(--bmasch-cat-size);
	font-weight: 600;
	letter-spacing: .5px;
	line-height: 1.5;
	text-transform: var(--bmasch-cat-transform);
}


/* right column --------------------------------------------------------- */

.bmasch__main {
	display: flex;
	gap: 18px;
	align-items: flex-start;
	min-width: 0;
}

.bmasch__media {
	flex: 0 0 var(--bmasch-media-width);
	width: var(--bmasch-media-width);
}

.bmasch__media-img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border-radius: var(--bmasch-media-radius);
	background: var(--bmasch-item-bg-alt);
}

.bmasch__content { flex: 1 1 auto; min-width: 0; }

.bmasch__title {
	margin: 0 0 12px;
	padding: 0;
	font-family: var(--bmasch-font-heading);
	font-size: var(--bmasch-title-size);
	font-weight: var(--bmasch-title-weight);
	line-height: var(--bmasch-title-lh);
	color: var(--bmasch-title-color);
}


/* -------------------------------------------------------------------------
   Programski sklop - accordion
   ---------------------------------------------------------------------- */

.bmasch__acc {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 14px 0 4px;
}

.bmasch__acc-item {
	border: 1px solid var(--bmasch-acc-border);
	border-radius: var(--bmasch-acc-radius);
	background: var(--bmasch-acc-head-bg);
	overflow: hidden;
	transition: border-color var(--bmasch-anim) ease, box-shadow var(--bmasch-anim) ease;
}

.bmasch__acc-item.is-open { border-color: var(--bmasch-acc-icon-color); }

.bmasch__acc-head {
	appearance: none;
	-webkit-appearance: none;
	width: 100%;
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 0;
	padding: 14px 16px;
	border: 0;
	background: transparent;
	text-align: left;
	font-family: var(--bmasch-font-body);
	color: var(--bmasch-acc-head-color);
	transition: background var(--bmasch-anim) ease, color var(--bmasch-anim) ease;
}

button.bmasch__acc-head { cursor: pointer; }

button.bmasch__acc-head:hover { background: var(--bmasch-acc-head-bg-hover); }

.bmasch__acc-item.is-open > .bmasch__acc-head {
	background: var(--bmasch-acc-head-bg-active);
	color: var(--bmasch-acc-head-color-active);
}

.bmasch__acc-num {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 28px;
	height: 24px;
	margin-top: 1px;
	padding: 0 6px;
	border-radius: 7px;
	background: var(--bmasch-acc-num-bg);
	color: var(--bmasch-acc-num-color);
	font-size: 12px;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	line-height: 1;
}

.bmasch__acc-text { flex: 1 1 auto; min-width: 0; }

.bmasch__acc-meta {
	display: block;
	margin-bottom: 2px;
	font-size: var(--bmasch-acc-meta-size);
	font-weight: 500;
	letter-spacing: .2px;
	color: var(--bmasch-acc-meta-color);
}

.bmasch__acc-item.is-open .bmasch__acc-meta { color: inherit; opacity: .8; }

.bmasch__acc-title {
	display: block;
	font-size: var(--bmasch-acc-head-size);
	font-weight: var(--bmasch-acc-head-weight);
	line-height: 1.4;
	color: inherit;
}

.bmasch__acc-title strong { font-weight: inherit; }
.bmasch__acc-title p { margin: 0; }

.bmasch__acc-icon {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	margin-top: 1px;
	border-radius: 50%;
	color: var(--bmasch-acc-icon-color);
	transition: transform var(--bmasch-anim) ease, background var(--bmasch-anim) ease;
}

.bmasch__acc-item.is-open .bmasch__acc-icon { transform: rotate(180deg); }

.bmasch-chev { width: 18px; height: 18px; display: block; }

/* collapsible body: 0fr -> 1fr keeps the transition smooth without JS math */
.bmasch__acc-body {
	display: grid;
	grid-template-rows: 0fr;
	background: var(--bmasch-acc-body-bg);
	transition: grid-template-rows var(--bmasch-anim) ease;
}

.bmasch__acc-item.is-open .bmasch__acc-body { grid-template-rows: 1fr; }

.bmasch__acc-body-inner {
	overflow: hidden;
	min-height: 0;
	font-size: var(--bmasch-acc-body-size);
	color: var(--bmasch-acc-body-color);
	line-height: var(--bmasch-desc-lh);
}

.bmasch__acc-item.is-open .bmasch__acc-body-inner {
	padding: 14px 16px 16px;
	border-top: 1px solid var(--bmasch-acc-border);
}

.bmasch__acc-body-inner > *:first-child { margin-top: 0; }
.bmasch__acc-body-inner > *:last-child  { margin-bottom: 0; }
.bmasch__acc-body-inner p { margin: 0 0 .8em; }
.bmasch__acc-body-inner ul { margin: 0 0 .8em 1.2em; padding: 0; list-style: disc; }

/* static rows (no description to expand) */
.bmasch__acc-item.is-static { background: transparent; }

/* "cards" mode - nothing collapses */
.bmasch--acc-cards .bmasch__acc-body { grid-template-rows: 1fr; }
.bmasch--acc-cards .bmasch__acc-body-inner { padding: 14px 16px 16px; border-top: 1px solid var(--bmasch-acc-border); }

/* plain list mode */
.bmasch__sklop-list {
	margin: 12px 0 4px 1.15em;
	padding: 0;
	list-style: square;
	font-size: var(--bmasch-desc-size);
	line-height: var(--bmasch-desc-lh);
	color: var(--bmasch-desc-color);
}
.bmasch__sklop-list li { margin-bottom: .5em; }
.bmasch__sklop-list p { margin: 0; }


/* -------------------------------------------------------------------------
   Toggle buttons + collapsible panels
   ---------------------------------------------------------------------- */

.bmasch__toggles {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 16px 0 0;
}

.bmasch__btn {
	appearance: none;
	-webkit-appearance: none;
	display: inline-flex;
	align-items: center;
	gap: 7px;
	margin: 0;
	cursor: pointer;
	padding: var(--bmasch-btn-pad-y) var(--bmasch-btn-pad-x);
	border-radius: var(--bmasch-btn-radius);
	border: 1px solid var(--bmasch-btn-border);
	background: var(--bmasch-btn-bg);
	color: var(--bmasch-btn-color);
	font-family: var(--bmasch-font-body);
	font-size: var(--bmasch-btn-size);
	font-weight: var(--bmasch-btn-weight);
	line-height: 1.2;
	text-transform: var(--bmasch-btn-transform);
	letter-spacing: .2px;
	transition: background var(--bmasch-anim) ease, color var(--bmasch-anim) ease, border-color var(--bmasch-anim) ease;
}

.bmasch__btn:hover,
.bmasch__btn:focus-visible {
	background: var(--bmasch-btn-bg-hover);
	color: var(--bmasch-btn-color-hover);
	border-color: var(--bmasch-btn-bg-hover);
}

.bmasch__btn .bmasch-chev { transition: transform var(--bmasch-anim) ease; }
.bmasch__btn[aria-expanded="true"] .bmasch-chev { transform: rotate(180deg); }

.bmasch--btn-solid .bmasch__btn {
	background: var(--bmasch-accent);
	border-color: var(--bmasch-accent);
	color: #fff;
}
.bmasch--btn-solid .bmasch__btn:hover { opacity: .88; }

.bmasch--btn-ghost .bmasch__btn {
	background: transparent;
	border-color: transparent;
	padding-left: 0;
	padding-right: 0;
	margin-right: 8px;
}
.bmasch--btn-ghost .bmasch__btn:hover {
	background: transparent;
	color: var(--bmasch-accent);
	text-decoration: underline;
}

.bmasch__collapse {
	display: grid;
	grid-template-rows: 0fr;
	transition: grid-template-rows var(--bmasch-anim) ease;
}
.bmasch__collapse.is-open { grid-template-rows: 1fr; }
.bmasch__collapse-inner { overflow: hidden; min-height: 0; }
.bmasch__collapse.is-open > .bmasch__collapse-inner { padding-top: 14px; }

.bmasch__desc {
	font-size: var(--bmasch-desc-size);
	line-height: var(--bmasch-desc-lh);
	color: var(--bmasch-desc-color);
}
.bmasch__desc > *:first-child { margin-top: 0; }
.bmasch__desc > *:last-child  { margin-bottom: 0; }
.bmasch__desc p { margin: 0 0 .9em; }


/* -------------------------------------------------------------------------
   Speakers
   ---------------------------------------------------------------------- */

.bmasch__speakers {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 10px;
}

.bmasch--sp-list .bmasch__speakers   { grid-template-columns: 1fr; }
.bmasch--sp-inline .bmasch__speakers { display: flex; flex-wrap: wrap; gap: 8px; }

.bmasch__speaker {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 10px 14px 10px 10px;
	background: var(--bmasch-sp-card-bg);
	border: 1px solid var(--bmasch-sp-card-border);
	border-radius: var(--bmasch-sp-card-radius);
	transition: border-color var(--bmasch-anim) ease, box-shadow var(--bmasch-anim) ease;
}

.bmasch__speaker:hover {
	border-color: var(--bmasch-sp-photo-border);
	box-shadow: 0 4px 16px rgba(20, 20, 30, .06);
}

.bmasch--sp-nophoto .bmasch__speaker { padding-left: 14px; }

.bmasch--sp-inline .bmasch__speaker {
	padding: 6px 14px 6px 6px;
	border-radius: 999px;
}
.bmasch--sp-inline.bmasch--sp-nophoto .bmasch__speaker { padding: 6px 14px; }

.bmasch__speaker-photo {
	flex: 0 0 auto;
	display: block;
	width: var(--bmasch-sp-photo-size);
	height: var(--bmasch-sp-photo-size);
	border-radius: var(--bmasch-sp-photo-radius);
	overflow: hidden;
	background: var(--bmasch-accent-soft);
	box-shadow: 0 0 0 2px var(--bmasch-sp-photo-border);
}

.bmasch__speaker-photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center top;
}

.bmasch__speaker-photo--empty {
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--bmasch-accent);
	font-family: var(--bmasch-font-heading);
	font-size: calc(var(--bmasch-sp-photo-size) * .34);
	font-weight: 700;
	letter-spacing: .5px;
}

.bmasch__speaker-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }

.bmasch__speaker-name {
	font-size: var(--bmasch-sp-name-size);
	font-weight: var(--bmasch-sp-name-weight);
	color: var(--bmasch-sp-name-color);
	line-height: 1.3;
}
.bmasch__speaker-name a { color: inherit; }
.bmasch__speaker-name a:hover { color: var(--bmasch-accent); text-decoration: none; }

.bmasch__speaker-job {
	font-size: var(--bmasch-sp-job-size);
	font-style: var(--bmasch-sp-job-style);
	color: var(--bmasch-sp-job-color);
	line-height: 1.4;
}


/* -------------------------------------------------------------------------
   Location + sponsors
   ---------------------------------------------------------------------- */

.bmasch__location {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-top: 14px;
	font-size: var(--bmasch-desc-size);
	color: var(--bmasch-desc-color);
}
.bmasch-pin { width: 17px; height: 17px; flex: 0 0 auto; color: var(--bmasch-accent); }

.bmasch__sponsors {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 16px;
	margin-top: 20px;
	padding-top: 16px;
	border-top: 1px solid var(--bmasch-item-border);
}

.bmasch__sponsors-label {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .6px;
	text-transform: uppercase;
	color: var(--bmasch-sp-job-color);
}

.bmasch__sponsors-logos { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.bmasch__sponsors-logos img { max-height: 56px; max-width: 170px; width: auto; }


/* -------------------------------------------------------------------------
   Focus + reduced motion
   ---------------------------------------------------------------------- */

.bmasch :focus-visible {
	outline: 2px solid var(--bmasch-accent);
	outline-offset: 2px;
}

.bmasch--noanim *,
.bmasch--noanim *::before,
.bmasch--noanim *::after { transition: none !important; }

@media (prefers-reduced-motion: reduce) {
	.bmasch *,
	.bmasch *::before,
	.bmasch *::after { transition-duration: .01ms !important; }
}


/* -------------------------------------------------------------------------
   Responsive
   ---------------------------------------------------------------------- */

@media (max-width: 900px) {
	.bmasch__item { grid-template-columns: 140px minmax(0, 1fr); gap: 16px; }
}

@media (max-width: 720px) {
	.bmasch__tabs { gap: 8px; }
	.bmasch--tabs-fill .bmasch__tab { flex: 1 1 140px; }
	.bmasch__tab { padding: 12px 14px; }
	.bmasch__tab-day { font-size: var(--bmasch-tab-font-size-mob); }

	.bmasch__item {
		grid-template-columns: minmax(0, 1fr);
		gap: 14px;
		padding: 18px 16px;
	}

	.bmasch__aside {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		gap: 8px 10px;
	}

	.bmasch__main { flex-direction: column; gap: 14px; }

	.bmasch__media { flex: 0 0 auto; width: min(100%, 160px); }

	.bmasch__title { font-size: var(--bmasch-title-size-mob); }

	.bmasch__speakers { grid-template-columns: 1fr; }

	.bmasch__toggles { gap: 8px; }
	.bmasch__btn { flex: 1 1 auto; justify-content: center; }
	.bmasch--btn-ghost .bmasch__btn { flex: 0 0 auto; justify-content: flex-start; }

	.bmasch__acc-head { padding: 12px 13px; gap: 10px; }
	.bmasch__acc-item.is-open .bmasch__acc-body-inner { padding: 12px 13px 14px; }
	.bmasch__sponsors-logos img { max-height: 40px; max-width: 110px; }
}

@media (max-width: 420px) {
	.bmasch__acc-num { display: none; }
}


/* -------------------------------------------------------------------------
   Additional links
   ---------------------------------------------------------------------- */

.bmasch__links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
}

/* standalone rows (under the title / at the bottom) need their own spacing;
   inside .bmasch__toggles the row already provides it */
.bmasch__content > .bmasch__links { margin: 12px 0 0; }
.bmasch__toggles .bmasch__links { gap: 8px; }

.bmasch a.bmasch__link {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: var(--bmasch-links-pad-y) var(--bmasch-links-pad-x);
	border: 1px solid var(--bmasch-links-border);
	border-radius: var(--bmasch-links-radius);
	background: var(--bmasch-links-bg);
	color: var(--bmasch-links-color);
	font-size: var(--bmasch-links-size);
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: .2px;
	text-decoration: none;
	transition: background var(--bmasch-anim) ease, color var(--bmasch-anim) ease, border-color var(--bmasch-anim) ease;
}

.bmasch a.bmasch__link:hover,
.bmasch a.bmasch__link:focus-visible {
	background: var(--bmasch-links-bg-hover);
	border-color: var(--bmasch-links-bg-hover);
	color: var(--bmasch-links-color-hover);
	text-decoration: none;
}

.bmasch-lico {
	flex: 0 0 auto;
	width: var(--bmasch-links-icon-size);
	height: var(--bmasch-links-icon-size);
	display: block;
}

.bmasch-lico--img { object-fit: contain; border-radius: 3px; }

.bmasch__link-label { white-space: nowrap; }

/* icon-only: square chips */
.bmasch .bmasch__links--icon a.bmasch__link {
	padding: var(--bmasch-links-pad-y);
	width: calc(var(--bmasch-links-icon-size) + var(--bmasch-links-pad-y) * 2 + 2px);
	height: calc(var(--bmasch-links-icon-size) + var(--bmasch-links-pad-y) * 2 + 2px);
	justify-content: center;
}

/* text-only: no icon reserved */
.bmasch .bmasch__links--text a.bmasch__link { gap: 0; }

@media (max-width: 720px) {
	.bmasch__toggles .bmasch__links { width: 100%; }
	.bmasch .bmasch__links--pill a.bmasch__link { flex: 0 1 auto; }
}
