body { line-height: var(--lh-body); word-break: keep-all; }
*, *::before, *::after { transition-property: transform, opacity !important; }
button, input, select, textarea { font: inherit; }
button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 2px solid var(--c-brand); outline-offset: 3px; }
[hidden] { display: none !important; }
.skip-link { position: fixed; top: var(--s-2); left: var(--s-2); padding: var(--s-3) var(--s-4); background: var(--c-brand); color: var(--c-brand-text); z-index: 3000; transform: translateY(-160%); }
.skip-link:focus { transform: translateY(0); }
.portal-icon { width: var(--icon-size); height: var(--icon-size); display: inline-block; vertical-align: middle; flex-shrink: 0; }
.top-utility-bar { background: var(--c-bg-section); color: var(--c-text-muted); padding: 0; border-bottom: 1px solid var(--c-line); }
.top-announcement, .top-links a { color: var(--c-text-muted); font-size: var(--fs-xs); }
.top-links a { display: inline-flex; align-items: center; min-height: var(--control-h); }
.top-links a:hover { color: var(--c-brand); }
.top-links .divider { color: var(--c-line-strong); }
.site-header { border-bottom: 1px solid var(--c-line-strong); box-shadow: none; }
.main-nav-bar { height: 88px; }
.brand-area { min-width: 0; }
.brand-logo { display: inline-flex; align-items: center; min-height: var(--control-h); padding: var(--s-2); background: var(--c-logo-surface); border-radius: var(--radius); }
.brand-logo img { height: var(--logo-h); }
.gnb-menu { gap: var(--s-5); }
.gnb-link { white-space: nowrap; font-size: var(--fs-md); }
.header-actions { gap: var(--s-2); }
.btn-theme-toggle { display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2); min-height: var(--control-h); min-width: var(--control-h); padding: 0 var(--s-3); border: 1px solid var(--c-line); border-radius: var(--radius); background: var(--c-bg); color: var(--c-brand); font-size: var(--fs-sm); cursor: pointer; white-space: nowrap; }
.btn-theme-toggle:hover, .btn-theme-toggle[aria-checked="true"] { background: var(--c-brand-soft); }
.theme-icon-dark { display: none; }
:root[data-theme="dark"] .theme-icon-light { display: none; }
:root[data-theme="dark"] .theme-icon-dark { display: inline-block; }
.btn-global-search, .btn-megamenu { display: inline-flex; justify-content: center; align-items: center; width: var(--control-h); height: var(--control-h); min-width: var(--control-h); padding: 0; background: var(--c-bg); color: var(--c-brand); border: 1px solid var(--c-line); border-radius: var(--radius); font-size: var(--fs-md); }
.header-actions .btn-classnet { display: none; }
.btn-global-search:hover, .btn-megamenu:hover { background: var(--c-brand-soft); color: var(--c-brand); }
.gnb-dropdown { box-shadow: none; border: 1px solid var(--c-line); }
.gnb-dropdown a { min-height: var(--control-h); }
.hongik-megamenu-overlay { background: var(--c-menu-overlay); background-attachment: local; color: var(--c-text); }
.hongik-megamenu-overlay > .container { background: var(--c-bg); }
.megamenu-top span { color: var(--c-brand); }
.megamenu-top img { content: url('/assets/images/logo_main.png'); background: var(--c-logo-surface); }
.megamenu-tab, .megamenu-tab:hover { color: var(--c-text-muted); }
.megamenu-tab.active { color: var(--c-brand); }
.megamenu-tab.active::after { background: var(--c-brand); }
.megamenu-close-btn, .megamenu-close-btn:hover { color: var(--c-brand); background: var(--c-brand-soft); border: 1px solid var(--c-line); }
.megamenu-links a:hover { color: var(--c-brand); transform: none; }
.visitor-card, .shortcut-box { background: var(--c-bg-section); border-radius: var(--radius); }
.visitor-card:hover, .shortcut-box:hover { background: var(--c-brand-soft); transform: none; }
.visitor-card-role, .visitor-card:hover .visitor-card-role, .shortcut-name { color: var(--c-brand); }
.footer-info-grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--s-4); }
.footer-bk21-logo { grid-column: 2; grid-row: 1 / 3; width: 210px; background: var(--c-logo-surface); padding: var(--s-2); align-self: center; }
.footer-info-grid > div { grid-column: 1; text-align: left; }
.site-footer, .footer-bottom-strip { background: var(--c-bg-section); color: var(--c-text-muted); border-top: 1px solid var(--c-line); }
.footer-bottom-strip { font-size: var(--fs-xs); }
.footer-bottom-strip a { display: inline-flex; align-items: center; min-height: var(--control-h); color: var(--c-text-muted); }
.footer-bottom-strip .container { flex-wrap: wrap; gap: var(--s-3); }
.portal-intro { padding: var(--s-6) 0 var(--s-4); }
.portal-intro.container { padding-left: var(--s-4); padding-right: var(--s-4); }
.portal-intro h1 { font-size: var(--fs-xl); color: var(--c-brand); line-height: var(--lh-tight); margin-bottom: var(--s-2); }
.portal-intro p { color: var(--c-text-muted); font-size: var(--fs-sm); }
.portal-primary { padding: var(--s-4) 0 var(--s-6); }
.portal-primary-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-5); }
.portal-secondary { padding: var(--s-6) 0; border-top: 1px solid var(--c-line); background: var(--c-bg); }
.portal-secondary-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: var(--s-6); }
.portal-secondary-side { display: flex; flex-direction: column; gap: var(--s-6); min-width: 0; }
.portal-quick h2, .section-header h2, .research-heading h2 { font-size: var(--fs-lg); color: var(--c-brand); margin: 0; }
.section-header { min-height: var(--control-h); margin-bottom: var(--s-3); align-items: center; }
.section-header a { color: var(--c-text-muted); font-size: var(--fs-sm); min-height: var(--control-h); display: inline-flex; align-items: center; }
.bulletin-list { border: 0; border-top: 2px solid var(--c-brand); border-radius: 0; background: var(--c-bg); }
.bulletin-item { display: flex; gap: var(--s-3); justify-content: space-between; align-items: center; min-height: 62px; padding: var(--s-3) 0; border-bottom: 1px solid var(--c-line); }
.bulletin-item > div { display: flex; gap: var(--s-3); align-items: baseline; min-width: 0; }
.bulletin-item > div > span { color: var(--c-text-muted); font-size: var(--fs-xs); flex-shrink: 0; }
.bulletin-item > div > span:nth-child(2) { display: none; }
.bulletin-item > div > a { font-size: var(--font-size-base); font-weight: 500; color: var(--c-text); white-space: normal; overflow: visible; line-height: var(--lh-body); }
.bulletin-item > div > a { min-height: var(--control-h); display: flex; align-items: center; }
.bulletin-item > span { color: var(--c-text-muted); font-size: var(--fs-xs); flex-shrink: 0; }
.bulletin-item a:hover { color: var(--c-brand); text-decoration: underline; }
.quick-hub-section { display: grid; grid-template-columns: 1fr; padding: 0; background: transparent; border: 0; margin-top: var(--s-3); }
.quick-hub-tile { border: 0; border-bottom: 1px solid var(--c-line); padding: var(--s-3) 0; min-height: 52px; background: transparent; color: var(--c-text); border-radius: 0; }
.quick-hub-tile:hover { background: var(--c-brand-soft); color: var(--c-brand); }
.tile-title { font-size: var(--font-size-base); font-weight: 500; display: flex; align-items: center; justify-content: space-between; }
.carousel-container { border: 1px solid var(--c-line); border-radius: var(--radius); box-shadow: none; overflow: hidden; background: var(--c-bg); }
.carousel-container { align-self: start; }
.carousel-track { display: block; height: auto; transition: none; }
.carousel-slide { display: block; height: auto; min-height: 0; padding: 0; background: var(--c-bg); }
.carousel-slide-image { width: 100%; height: 240px; object-fit: cover; }
.carousel-content { position: static; padding: var(--s-4); color: var(--c-text); background: var(--c-bg); }
.carousel-title { color: var(--c-text); font-size: var(--fs-lg); line-height: var(--lh-tight); margin: var(--s-2) 0; }
.carousel-desc { color: var(--c-text-muted); font-size: var(--fs-sm); margin: 0; }
.carousel-label { font-size: var(--fs-xs); color: var(--c-text-muted); }
.carousel-controls { display: flex; align-items: center; justify-content: flex-end; gap: var(--s-2); padding: var(--s-2) var(--s-4); border-top: 1px solid var(--c-line); }
.carousel-counter { margin-right: auto; color: var(--c-text-muted); font-size: var(--fs-sm); font-variant-numeric: tabular-nums; }
.carousel-nav-btn, .carousel-toggle { position: static; transform: none; width: var(--control-h); height: var(--control-h); padding: var(--s-2); background: var(--c-bg); color: var(--c-brand); border: 1px solid var(--c-line); border-radius: var(--radius); backdrop-filter: none; font-size: var(--fs-sm); }
.carousel-nav-btn { display: inline-flex; align-items: center; justify-content: center; }
.carousel-toggle { width: auto; }
.carousel-nav-btn:hover, .carousel-toggle:hover { background: var(--c-brand-soft); color: var(--c-brand); }
.calendar-hub-card { box-shadow: none; border: 0; border-top: 1px solid var(--c-line); border-radius: 0; height: auto; }
.portal-secondary-grid > .calendar-hub-card { grid-column: 1 / -1; }
.portal-secondary-grid > .calendar-hub-card .calendar-list { flex-direction: row; gap: var(--s-5); align-items: flex-start; }
.portal-secondary-grid > .calendar-hub-card .calendar-item { flex: 1; min-width: 0; }
.calendar-hub-card .calendar-header { background: var(--c-bg); color: var(--c-text); padding: var(--s-3) 0; }
.calendar-hub-card .calendar-header h3 { color: var(--c-brand); font-size: var(--fs-lg); }
.calendar-hub-card .calendar-header h3::before { display: none; }
.calendar-hub-card .calendar-header-link { color: var(--c-text-muted); min-height: var(--control-h); padding: var(--s-2); }
.cal-header-actions { flex-wrap: wrap; }
.cal-toggle-btn, .cal-nav-btn, .cal-month-pill { min-width: var(--control-h); min-height: var(--control-h); font-size: var(--fs-xs); }
.cal-cell { min-height: var(--control-h); font-size: var(--fs-xs); }
.calendar-list { max-height: none; overflow-y: visible; padding: 0; }
.calendar-hub-card .calendar-list .calendar-item { padding: var(--s-3) 0; }
.portal-research { border-top: 1px solid var(--c-line); padding: var(--s-6) 0; }
.research-heading { margin-bottom: var(--s-4); }
.research-heading p { font-size: var(--fs-sm); color: var(--c-text-muted); margin-top: var(--s-2); }
.research-list { border-top: 2px solid var(--c-brand); }
.research-row { display: grid; grid-template-columns: 200px minmax(0, 1fr) auto; align-items: center; gap: var(--s-4); padding: var(--s-4) 0; border-bottom: 1px solid var(--c-line); }
.research-row h3, .research-row p, .research-row a { font-size: var(--font-size-base); margin: 0; }
.research-row h3 { font-weight: 700; color: var(--c-text); }
.research-row p { color: var(--c-text-muted); }
.research-row a { color: var(--c-brand); display: inline-flex; align-items: center; gap: var(--s-2); min-height: var(--control-h); }
.badge, .tag, .badge-primary, .badge-accent, .badge-sub, .tag-primary, .tag-sub { color: var(--c-text-muted) !important; }
.badge-essential { color: var(--c-notice) !important; }
.bulletin-table { font-size: var(--font-size-base); }
.bulletin-table thead tr { background: var(--c-bg-section); color: var(--c-text); }
.bulletin-table th { border-color: var(--c-line-strong); font-size: var(--fs-sm); }
.card, .card:hover { box-shadow: none; transform: none; border-radius: var(--radius-lg); }
.pagination a, .pagination button { min-width: var(--control-h); min-height: var(--control-h); display: inline-flex; justify-content: center; align-items: center; }
.breadcrumb-area a { display: inline-flex; align-items: center; justify-content: center; min-width: var(--control-h); min-height: var(--control-h); }
.notice-label { color: var(--c-notice); }
.post-attach-box { display: none; }
.attach-item a { display: inline-flex; align-items: center; min-height: var(--control-h); }
.capstone-link-banner { width: 100%; background: var(--c-brand-soft); color: var(--c-text); border: 1px solid var(--c-line); box-shadow: none; }
.capstone-link-banner-title { color: var(--c-brand); }
.calendar-list .calendar-item:nth-child(n+4) { display: none; }
button:disabled { opacity: 0.5; cursor: not-allowed; }
@media (max-width: 1100px) {
  .main-nav-bar { height: 72px; }
  .gnb-menu { gap: var(--s-4); }
  .brand-logo img { height: 32px; }
}
@media (max-width: 1024px) {
  .gnb-menu { display: none; }
}
@media (max-width: 768px) {
  .btn-theme-toggle { width: var(--control-h); padding: 0; }
  .theme-toggle-label { display: none; }
  .top-announcement { display: none; }
  .top-links { gap: var(--s-2); flex-wrap: wrap; }
  .top-utility-bar .container { justify-content: flex-end; }
  .main-nav-bar { height: 68px; }
  .brand-logo img { height: 30px; }
  .portal-primary-grid, .portal-secondary-grid { grid-template-columns: minmax(0, 1fr); gap: var(--s-5); }
  .portal-intro { padding-top: var(--s-5); }
  .portal-intro h1 { font-size: var(--fs-xl); }
  .quick-hub-section { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 var(--s-4); }
  .bulletin-item { align-items: flex-start; }
  .bulletin-item > div > a { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .bulletin-item > div { gap: var(--s-2); }
  .bulletin-item > span { padding-top: var(--s-1); }
  .carousel-slide-image { height: 210px; }
  .portal-secondary-grid > .calendar-hub-card .calendar-list { flex-direction: column; gap: 0; }
  .portal-secondary-grid > .calendar-hub-card .calendar-item { width: 100%; }
  .research-row { grid-template-columns: minmax(0, 1fr) auto; gap: var(--s-2) var(--s-3); }
  .research-row p { grid-column: 1 / -1; grid-row: 2; }
  .research-row a { font-size: var(--fs-sm); }
  .footer-info-grid { grid-template-columns: minmax(0, 1fr); }
  .footer-bk21-logo { grid-column: 1; grid-row: auto; width: 200px; }
  .footer-bottom-strip .container { justify-content: flex-start; }
  .footer-bottom-strip .container > div { display: flex; flex-wrap: wrap; gap: 0 var(--s-3); }
  button, input, select, textarea { min-height: var(--control-h); }
  button { min-width: var(--control-h); }
  .btn, .post-util-btn, .course-card-actions a, .breadcrumb-item { min-height: var(--control-h); min-width: var(--control-h); }
  .btn, .course-card-actions a { display: inline-flex; align-items: center; }
  .board-list-table td.col-title a { min-height: var(--control-h); max-height: none; display: flex; align-items: center; }
  .post-util-btn { padding: var(--s-2); }
  input, select, textarea { font-size: var(--fs-md); }
  .lnb-nav a { min-height: var(--control-h); display: inline-flex; align-items: center; }
  .lnb-item a, .split-btn-main, .split-dropdown a, .post-attachments a { min-height: var(--control-h); display: inline-flex; align-items: center; }
  .megamenu-links { gap: var(--s-1); }
  .megamenu-links a { min-height: var(--control-h); display: flex; align-items: center; }
  .megamenu-top > div { min-width: 0; }
  .megamenu-top > div:first-child { flex: 1; }
  .megamenu-top > div:first-child span { font-size: var(--fs-sm); }
  .megamenu-top > div:last-child > a { display: none; }
  #live-news-table td:nth-child(3) a { min-height: var(--control-h); max-height: none; display: flex; align-items: center; white-space: normal; }
  .tabs-nav button, .tab-btn { min-height: var(--control-h); }
}
.course-legend-dot { display: inline-block; width: 10px; height: 10px; border-radius: var(--radius); background: var(--c-brand); margin-right: var(--s-2); }
.room-location-button { margin-top: var(--s-3); min-height: var(--control-h); }
.faculty-load-error { padding: var(--s-3); color: var(--c-notice); }
.admin-write-link { margin-bottom: var(--s-4); }
.admin-post-actions, .admin-form-actions { display: flex; flex-wrap: wrap; gap: var(--s-3); align-items: center; }
.admin-post-actions p { color: var(--c-notice); font-size: var(--fs-sm); }
.admin-form { display: grid; gap: var(--s-4); max-width: 900px; }
.admin-form label { display: grid; gap: var(--s-2); font-weight: 600; }
.admin-form input, .admin-form select, .admin-form textarea { width: 100%; min-height: var(--control-h); padding: var(--s-3); color: var(--c-text); background: var(--c-bg); border: 1px solid var(--c-line-strong); border-radius: var(--radius); font-size: var(--fs-md); }
.admin-form textarea { min-height: 320px; resize: vertical; }
.admin-section { padding: var(--s-5) 0; }
.admin-section h2 { margin-bottom: var(--s-4); font-size: var(--fs-xl); }
.admin-message { min-height: var(--control-h); color: var(--c-text); padding: var(--s-3) 0; }
.admin-message[data-state="error"] { color: var(--c-notice); }
.admin-note { color: var(--c-text-muted); font-size: var(--fs-sm); margin: var(--s-3) 0; }

.visually-hidden { position: absolute; width: var(--line-w); height: var(--line-w); padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.subpage-banner { background: var(--c-bg-section); }
.subpage-banner-title { color: var(--c-text); }
.faculty-card, .room-card, .lnb-menu-card, .admin-section, .viewport-3d-container { border-radius: var(--radius-lg); }
.portal-hero { padding: var(--s-6) 0 var(--s-5); }
.portal-hero-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--s-5); align-items: stretch; }
.portal-hero .carousel-container { display: flex; flex-direction: column; align-self: stretch; border-radius: var(--radius-lg); }
.portal-hero .carousel-track { flex: 1; }
.portal-hero .carousel-slide { height: 100%; }
.portal-hero .carousel-slide-image { height: var(--hero-image-h); }
.portal-hero .carousel-content { min-height: var(--hero-caption-min-h); }
.portal-hero .carousel-title { font-size: var(--fs-list-title); line-height: var(--lh-list); margin-top: 0; }
.portal-hero .carousel-desc { font-size: var(--fs-list-xs); line-height: var(--lh-list); }
.portal-quick { min-width: 0; display: flex; flex-direction: column; }
.portal-quick h2 { min-height: var(--control-h); font-size: var(--fs-list-title); line-height: var(--lh-tight); }
.quick-hub-section { flex: 1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 1fr)); gap: var(--line-w); margin: 0; padding: 0; background: var(--c-line); border: var(--line-w) solid var(--c-line); border-radius: var(--radius-lg); overflow: hidden; }
.quick-hub-tile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--s-4); min-width: 0; min-height: var(--control-h); padding: var(--s-4) var(--s-2); border: 0; background: var(--c-bg); color: var(--c-brand); border-radius: 0; text-align: center; }
.quick-hub-tile:hover { background: var(--c-brand-soft); color: var(--c-brand-strong); }
.quick-service-icon { width: var(--quick-icon-size); height: var(--quick-icon-size); }
.tile-title { display: block; font-size: var(--fs-list-md); line-height: var(--lh-list); font-weight: var(--fw-strong); color: var(--c-text); }
.bulletin-item > div > a { font-size: var(--fs-list-md); line-height: var(--lh-list); }
.bulletin-item > span { min-width: max-content; font-variant-numeric: tabular-nums; }
.portal-calendar { padding: var(--s-5) 0 var(--s-6); }
.portal-calendar .calendar-list { display: flex; flex-direction: row; align-items: flex-start; gap: var(--s-5); }
.portal-calendar .calendar-item { flex: 1; min-width: 0; }
@media (max-width: 768px) {
  .portal-hero { padding-top: var(--s-5); }
  .portal-hero-grid { grid-template-columns: minmax(0, 1fr); gap: var(--s-5); }
  .portal-hero .carousel-slide-image { height: var(--hero-image-h); }
  .portal-hero .carousel-content { min-height: 0; }
  .quick-hub-section { grid-template-rows: repeat(2, minmax(0, 1fr)); }
  .quick-hub-tile { padding: var(--s-5) var(--s-2); }
  .portal-calendar .calendar-list { flex-direction: column; gap: 0; }
  .portal-calendar .calendar-item { width: 100%; }
}
@media (max-width: 480px) {
  .quick-hub-section { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(3, minmax(0, 1fr)); }
  .quick-hub-tile { gap: var(--s-3); padding: var(--s-4) var(--s-2); }
}

.diagram-fill-c-bg { fill: var(--c-bg); }
.diagram-fill-c-bg-section { fill: var(--c-bg-section); }
.diagram-fill-c-brand { fill: var(--c-brand); }
.diagram-fill-c-brand-strong { fill: var(--c-brand-strong); }
.diagram-fill-c-text { fill: var(--c-text); }
.diagram-fill-c-text-muted { fill: var(--c-text-muted); }
.diagram-stop-color-c-brand { stop-color: var(--c-brand); }
.diagram-stop-color-c-text { stop-color: var(--c-text); }
.diagram-stroke-c-line { stroke: var(--c-line); }
.diagram-stroke-c-line-strong { stroke: var(--c-line-strong); }

.container { padding-inline: var(--s-5); }
.portal-hero { padding: var(--s-7) 0 0; }
.portal-primary, .portal-calendar, .portal-research { margin-top: var(--s-4); padding: var(--s-6) 0 0; border-top: var(--line-w) solid var(--c-line); }
.portal-research { padding-bottom: var(--s-7); }
.portal-primary .section-header, .research-heading { margin-bottom: var(--s-4); }
.portal-primary .bulletin-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--s-4); align-items: center; height: calc(var(--fs-list-md) * var(--lh-list) + var(--s-3) * 2 + var(--line-w)); min-height: 0; padding: var(--s-3) var(--s-4); }
.portal-primary .bulletin-item:last-child { border-bottom: var(--line-w) solid var(--c-line); }
.portal-primary .bulletin-item > div { display: grid; grid-template-columns: 3em minmax(0, 1fr); gap: var(--s-3); align-items: center; font-size: var(--fs-list-md); }
.portal-primary .bulletin-item > div > span { font-size: var(--fs-list-xs); line-height: var(--lh-list); }
.portal-primary .bulletin-item > div > span:nth-child(2) { display: none; }
.portal-primary .bulletin-item > div > a { display: block; min-height: 0; padding: 0; font-size: var(--fs-list-md); line-height: var(--lh-list); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.portal-primary .bulletin-item > span { padding: 0; font-size: var(--fs-list-xs); line-height: var(--lh-list); text-align: right; }
.portal-calendar .calendar-hub-card { border: 0; background: transparent; overflow: visible; }
.portal-calendar .calendar-section { background: transparent; }
.portal-calendar .calendar-header { padding: 0; margin-bottom: var(--s-4); border-bottom: 0; background: transparent; }
.portal-calendar .calendar-list { padding: 0; justify-content: flex-start; }
.portal-calendar .calendar-item { padding-inline: 0; }
.subpage-content .section-header:has(.search-bar) { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s-4); }
.subpage-content .search-bar { display: flex; flex-wrap: wrap; justify-content: flex-start; align-items: center; gap: var(--s-2); width: 100%; min-width: 0; max-width: 100%; }
.subpage-content .search-bar .search-input { flex: 1 1 15em; width: auto; min-width: 0; max-width: 100%; }
.subpage-content .search-bar .btn { flex: 0 0 auto; min-height: var(--control-h); white-space: nowrap; }
@media (max-width: 768px) {
  .container { padding-inline: var(--s-4); }
  .portal-hero { padding-top: var(--s-6); }
  .top-links { gap: var(--s-1); }
  .portal-primary, .portal-calendar, .portal-research { margin-top: 0; padding-top: var(--s-6); }
  .portal-research { padding-bottom: var(--s-6); }
  .portal-primary .bulletin-item { align-items: start; height: calc(var(--fs-list-md) * var(--lh-list) * 2 + var(--s-3) * 2 + var(--line-w)); }
  .portal-primary .bulletin-item > div { align-items: start; }
  .portal-primary .bulletin-item > div > a { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; min-height: calc(var(--fs-list-md) * var(--lh-list) * 2); white-space: normal; }
}


.portal-calendar .calendar-header { margin-bottom: var(--s-6); gap: var(--s-4); flex-wrap: wrap; }
.cal-month-nav-strip { gap: var(--s-4); padding: var(--s-3) 0 var(--s-4); flex-wrap: wrap; }
.cal-weekday-grid { padding: var(--s-3) 0; line-height: var(--lh-list); }
.cal-matrix-grid { padding: var(--s-3) 0 var(--s-4); gap: var(--s-2); flex: none; }
.cal-day-cell { height: calc(var(--control-h) + var(--s-1)); min-width: 0; }
button.cal-day-cell { font: inherit; font-size: var(--fs-xs); font-weight: 600; border: 0; padding: var(--s-1); }
button.cal-day-cell:not(.selected):not(:hover) { background: transparent; }
.cal-selected-brief { margin-top: var(--s-2); margin-bottom: var(--s-3); padding: var(--s-4); gap: var(--s-3); min-height: calc(var(--control-h) + var(--s-4)); }
.cal-brief-badge { color: var(--c-text); background: var(--c-bg-section); border: var(--line-w) solid var(--c-line); }
.cal-brief-title, .cal-brief-sub { white-space: normal; overflow-wrap: anywhere; line-height: var(--lh-list); }
.room-grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 17.5rem), 1fr)); }
.room-card, .viewport-3d-card, .viewport-3d-toolbar { min-width: 0; max-width: 100%; }
.viewport-3d-title, .room-card-head { flex-wrap: wrap; }
.viewport-3d-legend { pointer-events: auto; max-width: calc(100% - var(--s-8)); max-height: calc(100% - var(--s-8)); overflow: auto; }
.viewport-3d-legend summary { min-height: var(--control-h); cursor: pointer; align-content: center; color: var(--c-text); font-weight: 700; }
.viewport-legend-items { display: grid; gap: var(--s-2); padding-block: var(--s-2); }
.viewport-3d-hud { max-width: calc(100% - var(--s-8)); overflow-wrap: anywhere; }
.viewport-3d-toolbar .facility-div-202 { min-width: 0; }
.viewport-3d-toolbar .viewport-cam-btn { white-space: normal; max-width: 100%; }
.subpage-banner > .container { position: relative; z-index: 1; }
.breadcrumb-nav .breadcrumb-item { display: inline-flex; align-items: center; flex-shrink: 0; min-width: 0; min-height: var(--control-h); white-space: nowrap; }
.breadcrumb-nav a.breadcrumb-item { min-width: 0; }
.breadcrumb-nav a.breadcrumb-item:first-child { padding-inline: var(--s-4); margin-inline: calc(-1 * var(--s-4)); }
.breadcrumb-sep { flex-shrink: 0; }
.contact-map { display: block; width: 100%; max-width: 100%; height: clamp(280px, 55vw, 450px); border: 0; }
.contact-map-actions { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--s-3); margin-top: var(--s-3); }
.contact-map-actions .btn { white-space: normal; }
.megamenu-panel, .megamenu-shortcut-grid, .shortcut-box, .shortcut-box > div { min-width: 0; max-width: 100%; }
.megamenu-shortcut-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.shortcut-box { gap: var(--s-3); }
.shortcut-arrow { flex-shrink: 0; }
@media (max-width: 1024px) {
  .megamenu-shortcut-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .megamenu-shortcut-grid { grid-template-columns: minmax(0, 1fr); gap: var(--s-3); }
  .shortcut-box { padding: var(--s-4); }
}
@media (max-width: 768px) {
  .subpage-banner::after { display: none; }
  .subpage-banner-desc { overflow-wrap: anywhere; }
  .breadcrumb-area { padding-block: var(--s-2); }
  .breadcrumb-nav { flex-wrap: wrap; column-gap: var(--s-2); row-gap: 0; }
  .breadcrumb-area a { justify-content: flex-start; }
  .breadcrumb-item.current { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
  .abeek-sim-card { padding: var(--s-4); }
  .sim-retake-strip-left { flex: none; min-width: 0; }
  .sim-preset-btn-group { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sim-action-group > .btn { max-width: 100%; white-space: normal; }
  .sim-prog-meta { flex-wrap: wrap; gap: var(--s-1); }
  .capstone-grid { grid-template-columns: minmax(0, 1fr); }
  .tab-nav { gap: var(--s-2); }
  .tab-btn { flex: 0 0 auto; white-space: nowrap; }
  .post-attach-box { flex-direction: column; align-items: stretch; padding: var(--s-3); gap: var(--s-2); }
  .attach-list, .attach-item, .attach-item a { min-width: 0; max-width: 100%; }
  .attach-item a { white-space: normal; overflow-wrap: anywhere; }
  .attach-item a svg { flex-shrink: 0; }
  .contact-h4-88 { flex-wrap: wrap; }
  .contact-location-table { display: block; min-width: 0 !important; }
  .contact-location-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .contact-location-table tbody { display: block; }
  .contact-location-table tbody tr { display: grid; grid-template-columns: minmax(0, 1fr); padding: var(--s-3); border-bottom: 1px solid var(--c-line); }
  .contact-location-table tbody tr:last-child { border-bottom: 0; }
  .contact-location-table tbody th, .contact-location-table tbody td { display: block; width: auto; min-width: 0; padding: var(--s-1) 0; border: 0; text-align: left; overflow-wrap: anywhere; }
  .content-header > div { min-width: 0; max-width: 100%; }
  .split-dropdown { max-width: 100%; }
  .split-dropdown .split-btn-main { min-width: 0; white-space: normal; }
  .split-dropdown .split-btn-main svg { flex-shrink: 0; }
  .split-dropdown .split-btn-toggle { flex-shrink: 0; }
  .viewport-3d-toolbar .facility-div-202 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
  .viewport-3d-toolbar .viewport-cam-btn { min-height: var(--control-h); }
  .cal-month-nav-strip { flex-direction: column; align-items: stretch; gap: var(--s-3); }
  .cal-month-pills { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .cal-day-cell { height: var(--control-h); }
  .cal-matrix-grid { gap: var(--s-1); }
  .cal-selected-brief { align-items: flex-start; padding: var(--s-3); }
  .viewport-3d-header, .viewport-3d-toolbar { padding: var(--s-4); }
  .viewport-3d-title { align-items: flex-start; gap: var(--s-2); }
  .viewport-3d-status-badge { white-space: normal; }
  .viewport-3d-canvas-wrap { height: 480px; }
  .viewport-3d-legend { top: var(--s-2); right: var(--s-2); padding: 0 var(--s-3); }
}
