/* Susținerile publice ale tezelor de doctorat, pe ani (frontend/partial/defense-years).
   Componentă de sine stătătoare: merge în ambele teme, de aceea are culorile ei și își resetează titlurile și listele. */

.sdy {
	--sdy-navy: #0B2547;
	--sdy-navy-2: #16345f;
	--sdy-blue: #1B4E9B;
	--sdy-light: #008CD1;
	--sdy-sky: #7cc4ec;
	--sdy-red: #A82238;
	--sdy-bg: #F3F6FA;
	--sdy-muted: #5B6472;
	--sdy-line: rgba(11, 37, 71, .10);
	--sdy-ease: cubic-bezier(.2, .7, .2, 1);
	--sdy-r: 14px;
	--sdy-c: var(--sdy-blue);
	container-type: inline-size;
	interpolate-size: allow-keywords;
	color: var(--sdy-navy);
	font-family: inherit;
	line-height: 1.5;
}
.sdy *, .sdy *::before, .sdy *::after { box-sizing: border-box; }
.sdy h1, .sdy h3, .sdy p, .sdy ol { margin: 0; padding: 0; }
.sdy ol { list-style: none; }
.sdy a { text-decoration: none; }
.sdy button { font: inherit; cursor: pointer; }
.sdy [hidden] { display: none !important; }

/* culoarea domeniului */
.sdy-d--ingineria-mediului { --sdy-c: #0E7A5C; --sdy-c-soft: #e2f3ec; }
.sdy-d--inginerie-industriala { --sdy-c: #B4532A; --sdy-c-soft: #fbece4; }
.sdy-d--filologie { --sdy-c: #7A2E8E; --sdy-c-soft: #f3e8f7; }
.sdy-d--none { --sdy-c: #1B4E9B; --sdy-c-soft: #e6eef8; }

/* ---------- capul: cifre mari și șina anilor ---------- */

.sdy-hero {
	position: relative;
	overflow: hidden;
	padding: clamp(22px, 4cqi, 40px) clamp(20px, 4cqi, 44px) 0;
	border-radius: var(--sdy-r);
	color: #fff;
	background:
		radial-gradient(120% 90% at 100% 0%, rgba(0, 140, 209, .38), transparent 55%),
		radial-gradient(70% 80% at 0% 100%, rgba(168, 34, 56, .22), transparent 60%),
		linear-gradient(135deg, var(--sdy-navy) 0%, var(--sdy-navy-2) 60%, var(--sdy-blue) 140%);
	isolation: isolate;
}
/* liniile fine, ca pe o copertă de teză */
.sdy-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: repeating-linear-gradient(-55deg, rgba(255, 255, 255, .045) 0 1px, transparent 1px 14px);
	mask-image: linear-gradient(to left, #000, transparent 75%);
}
/* sigla razelor UBc, ca filigran */
.sdy-hero::after {
	content: "";
	position: absolute;
	right: -40px;
	bottom: -70px;
	z-index: -1;
	width: 300px;
	height: 300px;
	border-radius: 50%;
	background: repeating-conic-gradient(from -90deg at 50% 100%, rgba(255, 255, 255, .07) 0 3deg, transparent 3deg 9deg);
	mask-image: radial-gradient(circle at 50% 100%, #000 30%, transparent 70%);
}
.sdy-h1 {
	margin-bottom: 6px !important;
	color: #fff;
	font-size: clamp(1.6rem, 4cqi, 2.4rem);
	font-weight: 800;
	line-height: 1.1;
}
.sdy .sdy-kicker {
	color: var(--sdy-sky);
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
}
.sdy-stats {
	display: flex;
	flex-wrap: wrap;
	gap: 14px clamp(24px, 6cqi, 64px);
	margin-top: 14px;
}
.sdy-stat b {
	display: block;
	font-size: clamp(2.2rem, 7cqi, 3.6rem);
	font-weight: 800;
	line-height: 1;
	letter-spacing: -.03em;
	font-variant-numeric: tabular-nums;
	background: linear-gradient(180deg, #fff 30%, #bfe3f7);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.sdy-stat b i { font-style: normal; font-weight: 300; opacity: .6; }
.sdy-stat span { display: block; margin-top: 6px; color: rgba(255, 255, 255, .72); font-size: .9rem; }

.sdy .sdy-next {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin-top: 18px;
	padding: 8px 14px;
	border: 1px solid rgba(255, 255, 255, .22);
	border-radius: 999px;
	background: rgba(255, 255, 255, .08);
	color: #fff !important;
	font-size: .9rem;
	backdrop-filter: blur(4px);
	transition: background .2s;
}
.sdy .sdy-next:hover { background: rgba(255, 255, 255, .16); }

.sdy-pulse {
	position: relative;
	flex: none;
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: #ff5470;
}
.sdy-pulse::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 50%;
	background: inherit;
	animation: sdy-pulse 1.8s ease-out infinite;
}
@keyframes sdy-pulse { to { transform: scale(3.2); opacity: 0; } }

/* șina anilor: o linie de timp cu câte un punct pe an */
.sdy-rail {
	position: relative;
	display: flex;
	gap: 4px;
	margin: clamp(22px, 4cqi, 34px) calc(-1 * clamp(20px, 4cqi, 44px)) 0;
	padding: 0 clamp(20px, 4cqi, 44px) 16px;
	overflow-x: auto;
	scrollbar-width: none;
}
.sdy-rail::-webkit-scrollbar { display: none; }
.sdy-rail::before {
	content: "";
	position: absolute;
	left: clamp(20px, 4cqi, 44px);
	right: clamp(20px, 4cqi, 44px);
	top: 6px;
	height: 2px;
	background: linear-gradient(90deg, rgba(255, 255, 255, .35), rgba(255, 255, 255, .08));
}
.sdy-rail a {
	position: relative;
	flex: 1 0 auto;
	min-width: 58px;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	padding: 0 4px 2px;
	color: rgba(255, 255, 255, .78) !important;
	transition: color .2s, transform .25s var(--sdy-ease);
}
.sdy-rail-dot {
	width: 14px;
	height: 14px;
	margin-bottom: 6px;
	border: 2px solid rgba(255, 255, 255, .7);
	border-radius: 50%;
	background: var(--sdy-navy);
	transition: background .2s, box-shadow .2s, border-color .2s;
}
.sdy-rail b { font-size: .95rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.sdy-rail small { font-size: .72rem; opacity: .7; }
.sdy-rail a:hover { color: #fff !important; transform: translateY(-2px); }
.sdy-rail a:hover .sdy-rail-dot { border-color: #fff; }
.sdy-rail a.is-open { color: #fff !important; }
.sdy-rail a.is-open .sdy-rail-dot { border-color: #fff; background: var(--sdy-light); box-shadow: 0 0 0 5px rgba(0, 140, 209, .25); }

/* ---------- filtrul pe domeniu și butoanele ---------- */

.sdy-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin: 22px 0 16px;
}
.sdy-filter, .sdy-tools { display: flex; flex-wrap: wrap; gap: 8px; }
.sdy-filter button {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 6px 14px;
	border: 1px solid var(--sdy-line);
	border-radius: 999px;
	background: #fff;
	color: var(--sdy-navy);
	font-size: .88rem;
	font-weight: 600;
	transition: background .2s, color .2s, border-color .2s, box-shadow .2s;
}
.sdy-filter button small { color: var(--sdy-muted); font-weight: 600; }
.sdy-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--sdy-c); }
.sdy-filter button:hover { border-color: var(--sdy-c); box-shadow: 0 2px 10px rgba(11, 37, 71, .08); }
.sdy-filter button.is-on { border-color: var(--sdy-c); background: var(--sdy-c); color: #fff; }
.sdy-filter button.is-on small { color: rgba(255, 255, 255, .8); }
.sdy-filter button.is-on .sdy-dot { background: #fff; }
.sdy-filter button:first-child.is-on { border-color: var(--sdy-navy); background: var(--sdy-navy); }
.sdy-tools button {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 10px;
	border: 0;
	background: none;
	color: var(--sdy-blue);
	font-size: .85rem;
	font-weight: 600;
}
.sdy-tools button:hover { text-decoration: underline; }

/* ---------- cardul unui an ---------- */

.sdy-years { display: grid; gap: 14px; }
.sdy-year {
	border: 1px solid var(--sdy-line);
	border-radius: var(--sdy-r);
	background: #fff;
	box-shadow: 0 1px 2px rgba(11, 37, 71, .05), 0 4px 14px rgba(11, 37, 71, .05);
	overflow: hidden;
	scroll-margin-top: 110px;
	transition: box-shadow .3s var(--sdy-ease), border-color .3s;
}
.sdy-year:hover { box-shadow: 0 2px 4px rgba(11, 37, 71, .08), 0 14px 34px rgba(11, 37, 71, .12); }
.sdy-year::details-content {
	block-size: 0;
	overflow: clip;
	transition: block-size .5s var(--sdy-ease), content-visibility .5s allow-discrete;
}
.sdy-year[open]::details-content { block-size: auto; }

.sdy-year > summary {
	position: relative;
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto auto;
	align-items: center;
	gap: clamp(14px, 3cqi, 30px);
	padding: clamp(14px, 2.4cqi, 22px) clamp(16px, 3cqi, 28px);
	list-style: none;
	cursor: pointer;
	user-select: none;
	transition: background .35s var(--sdy-ease), color .35s;
}
.sdy-year > summary::-webkit-details-marker { display: none; }
.sdy-year > summary:focus-visible { outline: 3px solid var(--sdy-light); outline-offset: -3px; border-radius: var(--sdy-r); }

/* anul: conturat cât e închis, plin cât e deschis */
.sdy-y {
	font-size: clamp(2.4rem, 7.5cqi, 3.9rem);
	font-weight: 800;
	line-height: .9;
	letter-spacing: -.04em;
	font-variant-numeric: tabular-nums;
	/* conturul sub umplere: fontul variabil are contururi suprapuse, care altfel s-ar vedea în cifre */
	color: #fff;
	-webkit-text-stroke: 3px var(--sdy-navy);
	paint-order: stroke fill;
	transition: color .35s, -webkit-text-stroke-color .35s, text-shadow .35s;
}
.sdy-year > summary:hover .sdy-y { color: var(--sdy-bg); -webkit-text-stroke-color: var(--sdy-blue); }

.sdy-info { display: grid; gap: 8px; min-width: 0; }
.sdy-count { font-size: 1rem; color: var(--sdy-muted); }
.sdy-count b { color: var(--sdy-navy); font-size: 1.15rem; transition: color .35s; }
.sdy-faces { display: flex; padding-left: 8px; }
.sdy-faces i {
	display: grid;
	place-items: center;
	width: 32px;
	height: 32px;
	margin-left: -8px;
	border: 2px solid #fff;
	border-radius: 50%;
	background: var(--sdy-c);
	color: #fff;
	font-size: .7rem;
	font-style: normal;
	font-weight: 700;
	letter-spacing: .02em;
	transition: transform .25s var(--sdy-ease), opacity .25s, border-color .35s;
}
.sdy-faces i.sdy-more { background: var(--sdy-bg); color: var(--sdy-navy); }
.sdy-faces i.is-dim { opacity: .25; }
.sdy-year > summary:hover .sdy-faces i { transform: translateY(-2px); }
.sdy-year > summary:hover .sdy-faces i:nth-child(2n) { transform: translateY(-4px); }

/* cele 12 luni (Ian … Dec); lunile cu susțineri sunt aprinse */
.sdy-months { display: grid; grid-template-columns: repeat(12, 31px); gap: 3px; }
.sdy-months i {
	display: grid;
	place-items: center;
	height: 26px;
	border-radius: 5px;
	background: var(--sdy-bg);
	color: #a8b1bf;
	font-size: .7rem;
	font-style: normal;
	font-weight: 700;
	white-space: nowrap;
	transition: background .35s, color .35s;
}
.sdy-months i.is-on { background: var(--sdy-blue); color: #fff; }

.sdy-chev {
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border: 1px solid var(--sdy-line);
	border-radius: 50%;
	color: var(--sdy-blue);
	transition: transform .45s var(--sdy-ease), background .35s, border-color .35s, color .35s;
}
.sdy-year > summary:hover .sdy-chev { border-color: var(--sdy-blue); }

/* deschis: capul cardului devine bleumarin */
.sdy-year[open] { border-color: transparent; box-shadow: 0 2px 4px rgba(11, 37, 71, .08), 0 18px 44px rgba(11, 37, 71, .14); }
.sdy-year[open] > summary {
	color: #fff;
	background:
		radial-gradient(90% 140% at 100% 0%, rgba(0, 140, 209, .35), transparent 60%),
		linear-gradient(120deg, var(--sdy-navy), var(--sdy-navy-2));
}
.sdy-year[open] .sdy-y { color: #fff; -webkit-text-stroke-color: transparent; text-shadow: 0 0 28px rgba(0, 140, 209, .55); }
.sdy-year[open] .sdy-count { color: rgba(255, 255, 255, .7); }
.sdy-year[open] .sdy-count b { color: #fff; }
.sdy-year[open] .sdy-faces i { border-color: var(--sdy-navy); }
.sdy-year[open] .sdy-months i { background: rgba(255, 255, 255, .08); color: rgba(255, 255, 255, .35); }
.sdy-year[open] .sdy-months i.is-on { background: var(--sdy-light); color: #fff; box-shadow: 0 0 12px rgba(0, 140, 209, .6); }
.sdy-year[open] .sdy-chev { transform: rotate(180deg); border-color: rgba(255, 255, 255, .3); background: rgba(255, 255, 255, .08); color: #fff; }

/* ---------- susținerile din an: o cronologie ---------- */

.sdy-list {
	position: relative;
	padding: 10px clamp(10px, 2cqi, 18px) 14px !important;
}
.sdy-list::before {
	content: "";
	position: absolute;
	top: 22px;
	bottom: 30px;
	left: calc(clamp(10px, 2cqi, 18px) + 36px);
	width: 2px;
	background: linear-gradient(var(--sdy-line), var(--sdy-line)) center / 2px 100% no-repeat;
}
.sdy-item {
	position: relative;
	display: grid;
	grid-template-columns: 72px minmax(0, 1fr) 36px;
	align-items: start;
	gap: clamp(12px, 2.4cqi, 22px);
	padding: 14px 10px 14px 0;
	border-radius: 10px;
	transition: background .25s;
}
.sdy-item + .sdy-item { border-top: 1px dashed var(--sdy-line); }
.sdy-item:hover { background: var(--sdy-bg); }
.sdy-year[open] .sdy-item { animation: sdy-in .55s var(--sdy-ease) both; animation-delay: calc(var(--i, 0) * 55ms + 80ms); }
@keyframes sdy-in { from { opacity: 0; transform: translateY(10px); } }

.sdy-date {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	padding: 7px 0 8px;
	border: 1px solid var(--sdy-line);
	border-top: 4px solid var(--sdy-c);
	border-radius: 10px;
	background: #fff;
	box-shadow: 0 2px 8px rgba(11, 37, 71, .06);
	line-height: 1;
	transition: transform .3s var(--sdy-ease), box-shadow .3s;
}
.sdy-date b { font-size: 1.75rem; font-weight: 800; letter-spacing: -.03em; color: var(--sdy-navy); }
.sdy-date span { margin-top: 3px; font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--sdy-c); }
.sdy-date small { margin-top: 6px; padding: 2px 6px; border-radius: 999px; background: var(--sdy-bg); font-size: .68rem; font-weight: 600; color: var(--sdy-muted); }
.sdy-item:hover .sdy-date { transform: rotate(-3deg) scale(1.04); box-shadow: 0 6px 18px rgba(11, 37, 71, .12); }

.sdy-name { font-size: 1.12rem !important; font-weight: 700 !important; line-height: 1.3 !important; }
.sdy-name a { color: var(--sdy-navy) !important; background: linear-gradient(var(--sdy-c), var(--sdy-c)) 0 100% / 0 2px no-repeat; transition: background-size .35s var(--sdy-ease); }
/* tot rândul e link */
.sdy-name a::after { content: ""; position: absolute; inset: 0; border-radius: 10px; }
.sdy-item:hover .sdy-name a { background-size: 100% 2px; }
.sdy-name a:focus-visible { outline: none; }
.sdy-name a:focus-visible::after { outline: 3px solid var(--sdy-light); outline-offset: 2px; }

.sdy .sdy-title {
	margin-top: 4px !important;
	color: var(--sdy-muted);
	font-size: .97rem;
	font-style: italic;
	line-height: 1.45;
	text-wrap: pretty;
}
/* titlurile scrise numai cu majuscule: mai mici și aerisite, să nu strige */
.sdy .sdy-title.is-caps { font-size: .84rem; font-style: normal; letter-spacing: .03em; }

.sdy-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-top: 10px; }
.sdy-chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 2px 10px;
	border-radius: 999px;
	background: var(--sdy-bg);
	color: var(--sdy-navy);
	font-size: .78rem;
	font-weight: 600;
}
.sdy-chip i { color: var(--sdy-blue); font-size: .75rem; }
.sdy-chip--domain { background: var(--sdy-c-soft, var(--sdy-bg)); color: var(--sdy-c); }
.sdy-chip--soon { background: #fde8eb; color: var(--sdy-red); }
.sdy-sup { display: inline-flex; align-items: center; gap: 6px; color: var(--sdy-muted); font-size: .82rem; }
.sdy-sup i { color: var(--sdy-c); }

.sdy-go {
	display: grid;
	place-items: center;
	width: 36px;
	height: 36px;
	margin-top: 4px;
	border-radius: 50%;
	color: var(--sdy-c);
	opacity: 0;
	transform: translateX(-8px);
	transition: opacity .25s, transform .35s var(--sdy-ease), background .25s;
}
.sdy-item:hover .sdy-go { opacity: 1; transform: none; background: #fff; box-shadow: 0 2px 8px rgba(11, 37, 71, .1); }

.sdy .sdy-empty { padding: 28px; border: 1px dashed var(--sdy-line); border-radius: var(--sdy-r); color: var(--sdy-muted); text-align: center; }

.sdy .visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; white-space: nowrap !important; }

/* ---------- containere înguste ---------- */

@container (max-width: 820px) {
	.sdy-year > summary { grid-template-columns: auto minmax(0, 1fr) auto; }
	.sdy-months { grid-column: 1 / -1; grid-row: 2; grid-template-columns: repeat(12, minmax(0, 1fr)); }
}
@container (max-width: 520px) {
	.sdy-item { grid-template-columns: 58px minmax(0, 1fr); padding-right: 6px; }
	.sdy-list::before { left: calc(clamp(10px, 2cqi, 18px) + 29px); }
	.sdy-date b { font-size: 1.4rem; }
	.sdy-go { display: none; }
	.sdy-faces { display: none; }
	.sdy-bar { flex-direction: column; align-items: stretch; }
}

@media (prefers-reduced-motion: reduce) {
	.sdy *, .sdy *::before, .sdy *::after, .sdy-year::details-content { animation: none !important; transition: none !important; }
}
@media print {
	.sdy-hero, .sdy-bar { display: none; }
	.sdy-year::details-content { block-size: auto !important; content-visibility: visible !important; }
}
