/* Portable university portal. Shared shortcode/block/widget styles.
   Deliberately scoped to plugin content: no theme header/footer resets,
   viewport breakouts, remote fonts, or JavaScript dependencies. */
.unip {
  --unip-text: #20303a;
  --unip-heading-font: inherit;
  --unip-muted: #53616a;
  --unip-paper: #f5f7f8;
  --unip-line: #c9ced0;
  --unip-card: #fff;
  --unip-detail: var(--unip-accent);
  --unip-accent: #176b59;
  --unip-link: #176b59;
  --unip-ink: #fff;
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  min-width: 0;
  margin: 0;
  padding: clamp(24px, 4vw, 64px);
  border: 0;
  border-radius: 0;
  background: var(--unip-paper);
  color: var(--unip-text);
  font: 400 1rem/1.65 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  overflow-wrap: anywhere;
}
.unip *, .unip *::before, .unip *::after { box-sizing: border-box; }
.unip > header {
  position: relative;
  margin-block-end: 32px;
  padding-block-end: 24px;
  border-block-end: 1px solid var(--unip-line);
}
.unip > header::after {
  content: "";
  position: absolute;
  inset-block-end: -1px;
  inset-inline-start: 0;
  width: 72px;
  height: 3px;
  background: var(--unip-detail);
}
.unip .unip-logo { display: block; max-width: min(200px, 100%); max-height: 72px; object-fit: contain; margin-block-end: 20px; }
.unip .unip-brand { display: block; color: var(--unip-text); font-size: .75em; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.unip h2, .unip h3, .unip h4, .unip h5 { color: var(--unip-text); font-family: var(--unip-heading-font); font-weight: 400; line-height: 1.2; }
.unip h2 { margin: 12px 0 0; font-size: clamp(2rem, 3.8vw, 3.5rem); letter-spacing: -.025em; }
.unip h3 { margin: 28px 0 12px; font-size: 1.65em; }
.unip h4 { margin: 20px 0 10px; font-size: 1.25em; }
.unip p { margin-block: 0 20px; }
.unip a { color: var(--unip-link, #176b59); text-decoration: underline; text-underline-offset: .2em; text-decoration-thickness: 1px; }
.unip a:hover { text-decoration-thickness: 2px; }
.unip nav[aria-label="Portal navigation"] { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; margin-block-end: 28px; padding: 12px 0; border-block-end: 1px solid var(--unip-line); }
.unip nav[aria-label="Portal navigation"] a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; }
.unip .unip-welcome { margin-block-end: 28px; }
.unip .unip-welcome h3 { margin-block-start: 0; }
.unip .unip-welcome p { color: var(--unip-muted); max-width: 65ch; }
.unip .unip-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); gap: 20px; margin-block: 24px 32px; }
.unip .unip-grid > a {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-height: 154px;
  margin: 0;
  padding: 24px;
  border: 1px solid var(--unip-line);
  border-radius: 4px;
  background: var(--unip-card, #fff);
  color: var(--unip-text);
  text-decoration: none;
  box-shadow: 0 2px 4px rgb(16 44 59 / 3%);
  transition: border-color .16s ease, box-shadow .16s ease;
}
.unip .unip-grid > a:hover { border-color: var(--unip-text); box-shadow: 0 6px 18px rgb(16 44 59 / 8%); }
.unip .unip-service-title { font-size: 1.1em; line-height: 1.4; font-weight: 650; }
.unip .unip-service-description { display: block; margin-block: 8px 16px; color: var(--unip-muted); font-size: .9em; font-weight: 400; }
.unip .unip-service-arrow { margin-block-start: auto; color: var(--unip-text); font-size: 1.3em; }
.unip .unip-grid > a:hover .unip-service-title { text-decoration: underline; text-underline-offset: .2em; }
.unip .unip-card { min-width: 0; margin-block: 20px; padding: clamp(20px, 2.5vw, 32px); background: var(--unip-card, #fff); border: 1px solid var(--unip-line); border-radius: 4px; }
.unip .unip-card > h3:first-child { margin-block-start: 0; }
.unip form { width: 100%; max-width: 760px; margin-block: 24px; padding: clamp(18px, 2.5vw, 32px); background: #fff; border: 1px solid var(--unip-line); border-radius: 4px; }
.unip .unip-card form { padding: 20px 0 0; border: 0; border-block-start: 1px solid var(--unip-line); border-radius: 0; }
.unip form + form { margin-block-start: 28px; }
.unip form > h3:first-child { margin-block-start: 0; }
.unip label { display: block; margin-block: 16px; font-weight: 600; }
.unip input, .unip select, .unip textarea { min-width: 0; max-width: 100%; font: inherit; color: var(--unip-text); }
.unip input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), .unip select, .unip textarea { display: block; width: 100%; min-height: 48px; margin-block-start: 7px; padding: 11px 13px; border: 1px solid #7c8990; border-radius: 4px; background: #fff; }
.unip input[type="hidden"] { display: none; }
.unip input[type="checkbox"], .unip input[type="radio"] { display: inline-block; width: 22px; height: 22px; margin-inline-end: 8px; vertical-align: middle; accent-color: var(--unip-accent); }
.unip textarea { min-height: 128px; resize: vertical; }
.unip fieldset { min-width: 0; margin-block: 20px; padding: 20px; border: 1px solid var(--unip-line); }
.unip legend { padding-inline: 8px; font-weight: 700; }
.unip button, .unip .unip-button { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; max-width: 100%; padding: 12px 22px; border: 1px solid transparent; border-radius: 4px; background: var(--unip-accent); color: var(--unip-ink, #fff) !important; font: inherit; font-weight: 650; line-height: 1.4; text-decoration: none; text-align: center; white-space: normal; cursor: pointer; }
.unip button:hover, .unip .unip-button:hover { box-shadow: inset 0 0 0 2px currentColor; }
.unip button:disabled { cursor: not-allowed; opacity: .65; }
.unip :focus-visible { outline: 3px solid #102c3b; outline-offset: 3px; box-shadow: 0 0 0 6px #fff; }
.unip [aria-invalid="true"] { border-color: #a2222a !important; }
.unip .unip-message, .unip [role="status"], .unip [role="alert"] { margin-block: 20px; padding: 16px 20px; border: 1px solid var(--unip-line); border-inline-start: 4px solid var(--unip-muted); border-radius: 4px; background: var(--unip-paper); color: var(--unip-text); }
.unip [role="status"]:empty { display: none; }
.unip [role="alert"] { border-color: #dfb8bb; border-inline-start-color: #a2222a; background: #fff2f3; color: #7b1920; }
.unip details { margin-block: 20px; padding: 16px 20px; border: 1px solid var(--unip-line); background: #fff; border-radius: 4px; }
.unip summary { min-height: 44px; padding-block: 8px; font-weight: 650; cursor: pointer; }
.unip details[open] > summary { margin-block-end: 20px; border-block-end: 1px solid var(--unip-line); }
.unip table { display: block; width: 100%; max-width: 100%; margin-block: 24px; overflow-x: auto; border-collapse: collapse; background: #fff; font-size: .9375em; }
.unip caption { padding: 12px; text-align: start; color: var(--unip-text); font-weight: 700; }
.unip th, .unip td { padding: 14px 18px; border-block-end: 1px solid var(--unip-line); text-align: start; vertical-align: top; }
.unip thead th { background: #edf0ef; color: var(--unip-text); font-weight: 700; }
.unip tbody tr:nth-child(even) { background: #fafbf9; }
.unip dd { margin-inline-start: 0; margin-block-end: 16px; }
.unip dt { font-weight: 700; }
.unip pre { max-width: 100%; white-space: pre-wrap; }
.unip img, .unip video, .unip svg { max-width: 100%; }
.unip .unip-footer-actions { margin-block-start: 32px; padding-block-start: 20px; border-block-start: 1px solid var(--unip-line); }
.unip.unip-reading-large { font-size: 20px; line-height: 1.8; }
.unip.unip-reading-large h2 { font-size: clamp(2.5rem, 4vw, 4rem); }
body.unip-standalone { margin: 0; background: #f5f7f8; }
.unip-skip { position: absolute; left: -10000px; }
.unip-skip:focus { left: 16px; top: 10px; padding: 12px; background: #fff; color: #102c3b; z-index: 9999; }
@media (max-width: 600px) {
  .unip { padding: 24px 16px; }
  .unip > header { margin-block-end: 24px; }
  .unip .unip-grid { gap: 12px; }
  .unip .unip-grid > a { min-height: 138px; padding: 20px; }
  .unip th, .unip td { padding: 12px; }
  .unip button, .unip .unip-button { width: 100%; }
}
@media (prefers-reduced-motion: reduce) { .unip .unip-grid > a { transition: none; } }
@media (forced-colors: active) {
  .unip .unip-grid > a, .unip .unip-card, .unip button, .unip .unip-button { border-color: ButtonText; }
  .unip :focus-visible { outline: 3px solid Highlight; }
}
@media print {
  .unip { padding: 0; background: #fff; }
  .unip .unip-card { box-shadow: none; break-inside: avoid; }
  .unip table { display: table; overflow: visible; font-size: 10pt; }
  .unip nav[aria-label="Portal navigation"], .unip .unip-footer-actions { display: none; }
}

/* Compact academic categories are navigation, not descriptive service cards. */
.unip .unip-grid.unip-grid-compact { grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr)); gap: 12px; }
.unip .unip-grid.unip-grid-compact > a { min-height: 48px; justify-content: center; padding: 12px 16px; }
.unip .unip-grid.unip-grid-compact > a[aria-current="page"] { border-color: var(--unip-text); font-weight: 700; text-decoration: underline; text-underline-offset: .2em; }
.unip .unip-pagination { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; margin-block: 24px; }
.unip .unip-pagination > a { display: inline-flex; align-items: center; min-height: 44px; padding: 8px 4px; }
.unip .unip-page-position { color: var(--unip-muted); }

/* Bounded staff queues, shared by shortcode, block and optional Elementor. */
.unip .unip-ops-overview { border: 1px solid var(--unip-border, var(--unip-line, #c9ced0)); border-radius: 16px; padding: clamp(16px, 3vw, 28px); background: var(--unip-surface, var(--unip-card, #fff)); margin-block: 24px 32px; }
.unip .unip-ops-heading { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.unip .unip-ops-heading h3 { margin-block: 0 8px; }
.unip .unip-ops-eyebrow { font-size: .85em; font-weight: 700; margin: 0 0 4px; }
.unip .unip-ops-queues { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); gap: 12px; margin-block: 20px; }
.unip .unip-ops-queue { display: flex; flex-direction: column; gap: 8px; padding: 18px; border: 1px solid var(--unip-border, var(--unip-line, #c9ced0)); border-radius: 10px; color: var(--unip-link); text-decoration: none; overflow-wrap: anywhere; }
.unip .unip-ops-queue strong { font-size: 2rem; line-height: 1.2; }
.unip .unip-ops-caption { font-size: .85em; }
.unip .unip-ops-queue:hover, .unip .unip-ops-queue[aria-current="page"] { border-color: currentColor; text-decoration: underline; text-underline-offset: .2em; }
.unip .unip-ops-detail { border-block-start: 1px solid var(--unip-border, var(--unip-line, #c9ced0)); padding-block-start: 12px; }
.unip .unip-ops-records { list-style: none; padding: 0; margin-block: 16px; }
.unip .unip-ops-records li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; padding-block: 12px; border-block-end: 1px solid var(--unip-border, var(--unip-line, #c9ced0)); }
.unip .unip-ops-state { font-size: .9em; }
.unip .unip-ops-pagination { display: flex; flex-wrap: wrap; gap: 16px; margin-block: 16px; }
.unip .unip-ops-overview a:focus-visible { outline: 3px solid currentColor; outline-offset: 4px; }
@media (forced-colors: active) { .unip .unip-ops-overview, .unip .unip-ops-queue { border-color: ButtonText; } }

/* Student home: read-only previews, using the same renderer in every integration. */
.unip .unip-student-overview { margin-bottom: 2.5rem; }
.unip .unip-student-intro { padding: clamp(20px, 3vw, 36px); background: var(--unip-paper); border-inline-start: 4px solid var(--unip-accent); border-radius: 12px; }
.unip .unip-student-eyebrow { font-size: .8em; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.unip .unip-student-identity { display: flex; flex-wrap: wrap; gap: 1.5rem 3rem; margin: 1.5rem 0; }
.unip .unip-student-identity dt { color: var(--unip-muted); font-size: .9em; }
.unip .unip-student-identity dd { margin: .25rem 0 0; font-weight: 700; overflow-wrap: anywhere; }
.unip .unip-student-note { color: var(--unip-muted); font-size: .9em; }
.unip .unip-student-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.unip .unip-student-card { min-width: 0; display: flex; flex-direction: column; padding: clamp(18px, 2.5vw, 28px); border: 1px solid var(--unip-line); border-radius: 12px; background: var(--unip-card, #fff); overflow-wrap: anywhere; }
.unip .unip-student-card h4 { margin: 0 0 1rem; font-size: 1.2em; }
.unip .unip-student-card ul { padding-inline-start: 1.25rem; margin: 0 0 1.25rem; }
.unip .unip-student-card li { margin-bottom: .65rem; }
.unip .unip-student-empty { color: var(--unip-muted); }
.unip a.unip-student-action { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; margin-top: auto; font-weight: 700; text-decoration: underline; }
.unip .unip-student-action:focus-visible { outline: 3px solid currentColor; outline-offset: 4px; }
@media (max-width: 680px) { .unip .unip-student-grid { grid-template-columns: minmax(0, 1fr); } }

/* Shared admissions workspace: shortcode, block and optional Elementor. */
.unip .unip-admissions-workspace{margin-block:1.5rem}
.unip .unip-admissions-filters{display:flex;flex-wrap:wrap;gap:1rem;align-items:end}
.unip .unip-admissions-filters label{flex:1 1 14rem;min-width:0}
.unip .unip-admissions-filters select{width:100%}
.unip .unip-admissions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:1rem}
.unip .unip-admissions-grid .unip-card{overflow-wrap:anywhere;margin:0}
.unip .unip-admissions-pages{display:flex;flex-wrap:wrap;gap:1rem;margin-block:1rem}
.unip .unip-admissions-empty{padding:1rem;border:1px solid currentColor;border-radius:.5rem}
.unip .unip-admissions-workspace a:focus-visible,.unip .unip-admissions-workspace select:focus-visible,.unip .unip-admissions-workspace button:focus-visible{outline:3px solid currentColor;outline-offset:3px}

/* Shared grouped shell: native details works with keyboard and without scripts. */
.unip nav.unip-navigation[aria-label="Portal navigation"] { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14em), 1fr)); align-items: start; gap: 8px; margin-block-end: 24px; padding: 0 0 16px; }
.unip .unip-navigation-home { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px 24px; }
.unip .unip-navigation-group { min-width: 0; border: 1px solid var(--unip-line); border-radius: 8px; margin: 0; padding: 0; background: #fff; }
.unip .unip-navigation-group[open] { grid-column: 1 / -1; }
.unip .unip-navigation-group[open] > summary { margin: 0 12px 8px; padding-inline: 0; border-block-end: 1px solid var(--unip-line); }
/* Size tracks with the text, not fixed pixels. Break words only as an emergency
   fallback when the entire embedded portal is narrower than a single label. */
.unip .unip-navigation-group summary { overflow-wrap: break-word; word-break: normal; hyphens: manual; cursor: pointer; min-height: 44px; padding: 10px 12px; font-weight: 600; }
.unip .unip-navigation-group ul { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,220px),1fr)); list-style: none; gap: 4px 16px; margin: 0; padding: 0 8px 12px; }
.unip .unip-navigation-group li { margin: 0; min-width: 0; }
.unip .unip-navigation a[aria-current="page"] { font-weight: 700; text-decoration-thickness: 3px; }
.unip .unip-shell-skip { display: inline-block; margin-block-end: 12px; padding: 8px; }
.unip .unip-navigation summary:focus-visible, .unip .unip-navigation a:focus-visible, .unip .unip-shell-skip:focus-visible { outline: 3px solid var(--unip-text); outline-offset: 3px; }
.unip .unip-content { min-width: 0; }
@media print { .unip nav.unip-navigation[aria-label="Portal navigation"], .unip .unip-shell-skip { display: none; } }

/* Staff review workspace: readable next steps and keyboard-visible state filters. */
.unip .unip-ops-next { flex-basis: 100%; margin: 0; overflow-wrap: anywhere; }
.unip .unip-ops-filters { display: flex; flex-wrap: wrap; gap: 12px; margin-block: 16px; }
.unip .unip-ops-filters a { padding: 10px 14px; border: 1px solid currentColor; border-radius: 6px; }
.unip .unip-ops-filters [aria-current="page"] { font-weight: 700; text-decoration: underline; text-underline-offset: .2em; }
.unip .unip-ops-records .unip-button { max-width: 100%; overflow-wrap: anywhere; }

/* Personal study planner: all content reflows without a horizontal table. */
.unip .unip-student-planner { margin: 1.25rem 0; padding: clamp(18px, 2.5vw, 28px); border: 1px solid var(--unip-line); border-radius: 12px; background: var(--unip-card, #fff); overflow-wrap: anywhere; }
.unip .unip-student-planner h4 { margin: 0 0 .75rem; font-size: 1.25em; }
.unip .unip-student-plan-list { list-style: none; padding: 0; margin: 1rem 0; }
.unip .unip-student-plan-list > li { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1rem; padding: 1rem 0; border-top: 1px solid var(--unip-line); }
.unip .unip-student-plan-list h5 { margin: .35rem 0; font-size: 1.1em; }
.unip .unip-student-plan-list p { margin: .35rem 0; }
.unip .unip-student-plan-kind { font-weight: 600; }
@media (max-width: 680px) { .unip .unip-student-plan-list > li { grid-template-columns: minmax(0, 1fr); gap: .35rem; } }
