/* 모든 테마 공통 최소 스타일(동작에 필요한 부분만). 테마 CSS가 덮어쓴다. */
.yt-facade { position: relative; aspect-ratio: 16 / 9; background: #000; overflow: hidden; border-radius: inherit; }
.yt-facade iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.yt-play { all: unset; cursor: pointer; position: absolute; inset: 0; display: block; }
.yt-play img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s ease, filter .3s ease; }
.yt-play:hover img, .yt-play:focus-visible img { transform: scale(1.03); filter: brightness(.85); }
.yt-play:focus-visible { outline: 3px solid #fff; outline-offset: -6px; }
.yt-icon { position: absolute; left: 50%; top: 50%; width: 68px; height: 48px; transform: translate(-50%, -50%);
  background: rgba(20, 20, 20, .8); border-radius: 14px; transition: background .2s; }
.yt-icon::after { content: ""; position: absolute; left: 27px; top: 14px; border-style: solid;
  border-width: 10px 0 10px 18px; border-color: transparent transparent transparent #fff; }
.yt-play:hover .yt-icon { background: #e62117; }

.au { white-space: nowrap; }
.au-corr { font-weight: 700; margin-left: .05em; }
.pub-ol, .pub-ul, .pres-ul, .alumni-ul { list-style: none; padding: 0; margin: 0; }
.sample-badge { display: inline-block; font-size: .68em; font-weight: 700; letter-spacing: .06em; padding: .1em .45em;
  border-radius: 3px; background: #f5c542; color: #3a2a00; vertical-align: middle; text-transform: uppercase; }
.pub-badge { display: inline-block; font-size: .72em; font-weight: 600; padding: .05em .45em; border-radius: 3px;
  border: 1px solid currentColor; margin-left: .35em; opacity: .8; vertical-align: middle; }
.pub-link { margin-left: .5em; font-size: .85em; }
[hidden] { display: none !important; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.prose img, .news-gallery img { max-width: 100%; height: auto; }
.prose { overflow-wrap: anywhere; }          /* 원본 공지의 긴 URL이 휴대폰 폭에서 넘치지 않게 */
.prose pre, .prose table { display: block; max-width: 100%; overflow-x: auto; }
.news-gallery { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); }
.news-gallery figure { margin: 0; min-width: 0; }
/* Phase 3 공통 도우미의 최소 스타일(테마 CSS가 덮어쓴다) */
.alumni-ul--photos li { display: flex; align-items: center; gap: 10px; }
.alumni-photo { width: 40px; height: 40px; flex: none; border-radius: 50%; overflow: hidden; display: grid; place-items: center; background: #8894a8; }
.alumni-photo img { width: 100%; height: 100%; object-fit: cover; }
.alumni-photo .member-initials { font-size: .8rem; color: #fff; }
.news-filter { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0; }
.news-filter button { font: inherit; min-height: 44px; padding: 6px 14px; border-radius: 999px; border: 1px solid currentColor; background: transparent; color: inherit; cursor: pointer; opacity: .75; }
.news-filter button[aria-pressed="true"] { opacity: 1; font-weight: 700; }
.news-filter button span { opacity: .7; font-weight: 400; }
.news-rows { list-style: none; padding: 0; margin: 0; }
.news-row { display: grid; grid-template-columns: 136px minmax(0, 1fr); gap: 16px; padding: 14px 0; }
.news-row--text { grid-template-columns: minmax(0, 1fr); }
.news-row-img img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; display: block; border-radius: 6px; }
@media (max-width: 600px) { .news-row { grid-template-columns: 88px minmax(0, 1fr); gap: 12px; } .news-row--text { grid-template-columns: minmax(0, 1fr); } }
.year-links { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0; }
.topic-figs { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); align-items: start; }
.topic-fig { margin: 0; } .topic-fig img { width: 100%; display: block; background: #fff; }
.lang-note { font-size: .85em; opacity: .7; }
