:root { --navy:#102348; --blue:#1f57c8; --pale:#f3f6fb; --line:#dce4ef; --ink:#162039; --muted:#68748a; --green:#15815e; }
* { box-sizing:border-box; }
[hidden] { display:none !important; }
body { margin:0; background:var(--pale); color:var(--ink); font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; }
.public-header { color:#fff; background:linear-gradient(120deg,#0e2042,#173c7a); box-shadow:0 4px 18px rgba(12,29,60,.2); }
.header-inner { width:min(1180px,92vw); min-height:96px; margin:auto; display:flex; align-items:center; justify-content:space-between; gap:24px; }
.university-brand { display:flex; align-items:center; gap:15px; }
.university-brand img,.logo-fallback { width:58px; height:58px; object-fit:contain; border-radius:50%; background:#fff; }
.logo-fallback { display:grid; place-items:center; color:var(--blue); font-weight:900; }
.university-brand p { margin:0 0 2px; color:#bdcce4; font-size:12px; text-transform:uppercase; letter-spacing:1.2px; font-weight:700; }
.university-brand h1 { margin:0; font-size:clamp(20px,3vw,28px); letter-spacing:-.4px; }
.session-chip { padding:10px 14px; border:1px solid rgba(255,255,255,.18); border-radius:999px; background:rgba(255,255,255,.09); color:#dce6f7; font-size:12px; font-weight:700; white-space:nowrap; }
.session-chip span { display:inline-block; width:7px; height:7px; margin-right:7px; border-radius:50%; background:#6ee0ae; box-shadow:0 0 0 4px rgba(110,224,174,.12); }
.public-container { width:min(1180px,92vw); margin:auto; padding:48px 0 64px; }
.hero { margin-bottom:24px; }
.public-eyebrow,.box-heading span { color:var(--blue); font-size:11px; font-weight:850; text-transform:uppercase; letter-spacing:1.25px; }
.hero h2 { margin:7px 0 8px; font-size:clamp(29px,5vw,44px); letter-spacing:-1.1px; }
.hero > p { max-width:690px; margin:0; color:var(--muted); line-height:1.65; }
.notice { margin-top:20px; padding:12px 15px; border-left:4px solid #e4a629; border-radius:0 9px 9px 0; background:#fff8e8; color:#6b5423; font-size:12px; }
.search-panel { margin:0 0 22px; padding:16px; border:1px solid var(--line); border-radius:14px; background:#fff; box-shadow:0 6px 20px rgba(23,42,75,.045); }
.search-label { display:block; margin-bottom:7px; color:#4e5d74; font-size:11px; font-weight:850; text-transform:uppercase; letter-spacing:.7px; }
.search-control { position:relative; display:flex; align-items:center; }
.search-icon { position:absolute; left:13px; top:50%; transform:translateY(-52%); color:#738199; font-size:22px; pointer-events:none; }
.search-control input { width:100%; min-height:46px; padding:10px 72px 10px 43px; border:1px solid #cad5e4; border-radius:10px; outline:none; color:var(--ink); background:#fbfcff; font:inherit; font-size:13px; transition:border-color .16s,box-shadow .16s,background .16s; }
.search-control input::placeholder { color:#929db0; }
.search-control input:focus { border-color:#6086df; background:#fff; box-shadow:0 0 0 3px rgba(31,87,200,.12); }
.search-control button { position:absolute; right:7px; min-height:32px; padding:6px 10px; border:0; border-radius:7px; color:#31528f; background:#e9f0ff; font-size:11px; font-weight:800; cursor:pointer; }
.search-control button:hover { background:#dce8ff; }
.search-status { margin:8px 2px 0; color:var(--muted); font-size:11px; }
.framework-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:stretch; gap:22px; }
.framework-grid[data-visible-sections="1"] { grid-template-columns:minmax(0,1fr); }
.framework-grid[data-visible-sections="3"] .datesheet-box:first-child { grid-row:1 / span 2; }
.datesheet-box { min-width:0; overflow:hidden; border:1px solid var(--line); border-radius:16px; background:#fff; box-shadow:0 9px 30px rgba(23,42,75,.06); }
.box-heading { padding:20px 22px; display:flex; align-items:center; justify-content:space-between; gap:20px; border-bottom:1px solid var(--line); }
.box-heading h2 { margin:4px 0 0; font-size:21px; }
.box-heading .course-count { padding:6px 10px; border-radius:999px; background:#eef3fb; color:#59677c; font-size:10px; letter-spacing:0; }
.table-wrap { overflow-x:auto; }
table { width:100%; border-collapse:collapse; }
th { padding:12px 18px; text-align:left; background:#f8fafd; border-bottom:1px solid var(--line); color:#68758a; font-size:10px; letter-spacing:.65px; text-transform:uppercase; white-space:nowrap; }
td { padding:16px 18px; border-bottom:1px solid #e8edf4; font-size:13px; vertical-align:middle; }
tbody tr:last-child td { border-bottom:0; }
tbody tr:hover { background:#fbfcff; }
.mode-badge { display:inline-block; padding:6px 9px; border-radius:999px; background:#edf3ff; color:#2755aa; font-size:10px; font-weight:800; }
.available,.pending { display:inline-flex; align-items:center; gap:7px; color:var(--green); font-size:11px; font-weight:750; white-space:nowrap; }
.pending { color:#8b6a28; }
.available i,.pending i { width:7px; height:7px; border-radius:50%; background:#25a97c; }
.pending i { background:#dba73d; }
.view-link { display:inline-flex; align-items:center; gap:7px; padding:8px 11px; border-radius:8px; color:#fff; background:var(--blue); font-size:11px; font-weight:800; text-decoration:none; white-space:nowrap; }
.view-link:hover { background:#1745a3; }
.view-link span { font-size:14px; }
.public-message { padding:42px 25px; border:1px solid var(--line); border-radius:15px; background:#fff; text-align:center; }
.public-message h3 { margin:0 0 6px; }.public-message p { margin:0; color:var(--muted); }
.public-message.error { border-color:#efc0c6; background:#fff5f6; }
.search-empty { margin-top:22px; }
code { padding:2px 5px; background:#edf1f6; border-radius:5px; }
.public-footer { min-height:80px; padding:20px 4vw; display:flex; align-items:center; justify-content:center; gap:10px 28px; flex-wrap:wrap; color:#8490a3; background:#fff; border-top:1px solid var(--line); font-size:11px; }
.public-footer p { margin:0; }.public-footer span { color:#33445f; font-weight:800; }
@media (max-width:980px) {
  .framework-grid,
  .framework-grid[data-visible-sections="1"] { grid-template-columns:minmax(0,1fr); }
  .framework-grid[data-visible-sections="3"] .datesheet-box:first-child { grid-row:auto; }
}
@media (max-width:760px) {
  .header-inner { min-height:0; padding:18px 0; align-items:flex-start; flex-direction:column; }
  .session-chip { white-space:normal; }
  .public-container { padding-top:30px; }
  .box-heading { align-items:flex-start; }
  table,thead,tbody,tr,th,td { display:block; }
  thead { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }
  tr { padding:15px 16px; border-bottom:1px solid var(--line); }
  tbody tr:last-child { border-bottom:0; }
  td { display:grid; grid-template-columns:105px 1fr; gap:10px; padding:6px 0; border:0; }
  td::before { content:attr(data-label); color:#7a8699; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.5px; }
  .view-link { justify-self:start; }
}
