:root {
  --ink: #17251f;
  --ink-2: #35453d;
  --muted: #6f7c75;
  --paper: #f5f3ed;
  --surface: #fffef9;
  --surface-2: #ebe8df;
  --line: #d9d7ce;
  --green: #164e3a;
  --green-2: #237757;
  --lime: #dfff4f;
  --amber: #f3b839;
  --orange: #e56f48;
  --blue: #4a82bc;
  --red: #b6473f;
  --purple: #7965a8;
  --sidebar: 252px;
  --mono: "DM Mono", monospace;
  --sans: "Manrope", sans-serif;
  --serif: "Newsreader", serif;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); -webkit-font-smoothing: antialiased; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid #2b76ca; outline-offset: 2px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; z-index: 200; left: 1rem; top: 1rem; padding: .75rem 1rem; color: white; background: var(--ink); transform: translateY(-180%); }
.skip-link:focus { transform: none; }

.auth-required .sidebar,
.auth-required .app-shell { filter: blur(2px); pointer-events: none; user-select: none; }
.auth-gate { position: fixed; z-index: 180; inset: 0; display: grid; place-items: center; padding: 24px; background: rgba(10,25,18,.72); backdrop-filter: blur(6px); }
.auth-card { width: min(520px, 100%); padding: clamp(28px, 5vw, 48px); background: var(--surface); border: 1px solid var(--line); box-shadow: 0 28px 90px rgba(0,0,0,.28); }
.auth-card h1 { margin: 10px 0 14px; font: 400 clamp(34px, 5vw, 52px)/.95 var(--serif); letter-spacing: -.04em; }
.auth-card p:not(.eyebrow) { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.65; }
.auth-form { margin-top: 24px; display: grid; gap: 13px; }
.compact-auth-form { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line); }
.auth-actions { margin-top: 14px; display: grid; gap: 10px; }
.auth-form label { display: grid; gap: 6px; color: var(--ink-2); font-size: 12px; font-weight: 700; }
.auth-form label span { color: var(--muted); font-weight: 500; }
.auth-form input, .auth-form select { min-height: 44px; padding: 10px 12px; border: 1px solid var(--line); background: var(--paper); }
.auth-cooldown { margin-top: 12px !important; padding: 12px 14px; color: var(--muted); background: var(--paper); border: 1px solid var(--line); font-size: 11px !important; line-height: 1.5 !important; }
.auth-cooldown.is-waiting { color: #72570e; background: #faefce; border-color: #e4cb83; }
.access-issue-panel { margin-top: 18px; padding: 16px 18px; color: #72570e; background: #faefce; border: 1px solid #e4cb83; font-size: 12px; line-height: 1.55; }
.access-issue-panel strong { display: block; margin-bottom: 5px; color: #72570e; font-size: 13px; }
.access-issue-panel b { color: var(--ink); }
.access-issue-panel ol { margin: 10px 0 14px; padding-left: 20px; display: grid; gap: 4px; }
.access-issue-panel code { padding: 1px 4px; background: rgba(255,255,255,.65); font: 11px var(--mono); }
.auth-help { margin-top: 14px !important; font-size: 11px !important; }
.auth-help.is-error { color: var(--red) !important; }
.auth-help.is-success { color: var(--green-2) !important; }

.sidebar { position: fixed; z-index: 50; inset: 0 auto 0 0; width: var(--sidebar); display: flex; flex-direction: column; color: #eff4f0; background: var(--green); }
.brand { min-height: 138px; padding: 24px 22px; display: flex; align-items: center; gap: 17px; border-bottom: 1px solid rgba(255,255,255,.14); }
.brand > span:last-child { display: flex; flex-direction: column; }
.brand strong { font-size: 26px; line-height: .98; letter-spacing: -.025em; }
.brand small { margin-top: 6px; color: #abc3b7; font: 10px/1.35 var(--mono); text-transform: uppercase; letter-spacing: .1em; }
.brand-institute { color: #d8e3dc !important; font: 600 11px/1.35 var(--sans) !important; letter-spacing: .01em !important; text-transform: none !important; }
.brand-mark { position: relative; width: 58px; height: 58px; flex: 0 0 auto; }
.brand-mark i { position: absolute; inset: 10px; border: 1.5px solid var(--lime); border-radius: 50%; }
.brand-mark i:nth-child(2) { transform: rotate(60deg) scaleX(1.65); }
.brand-mark i:nth-child(3) { transform: rotate(-60deg) scaleX(1.65); }
.side-nav { padding: 28px 13px; display: grid; gap: 4px; }
.nav-item { width: 100%; min-height: 45px; padding: 0 12px; display: flex; align-items: center; gap: 12px; border: 0; border-radius: 4px; color: #c5d5cc; background: transparent; cursor: pointer; text-align: left; font-size: 12px; font-weight: 600; }
.nav-item:hover { color: white; background: rgba(255,255,255,.07); }.nav-item.is-active { color: var(--ink); background: var(--lime); }
.nav-item svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.6; }.nav-item:first-child svg { fill: currentColor; stroke: none; }
.nav-count { min-width: 22px; margin-left: auto; padding: 2px 5px; border-radius: 99px; color: #c5d5cc; background: rgba(255,255,255,.1); text-align: center; font: 8px var(--mono); }.nav-item.is-active .nav-count { color: white; background: var(--green); }.nav-count.is-alert:not(:empty) { color: var(--ink); background: var(--amber); }
.sidebar-foot { margin-top: auto; padding: 18px 25px 25px; border-top: 1px solid rgba(255,255,255,.14); }
.storage-state { display: flex; align-items: center; gap: 9px; }.storage-state > span { width: 7px; height: 7px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 0 4px rgba(223,255,79,.1); }.storage-state div { display: flex; flex-direction: column; }.storage-state strong { font-size: 9px; }.storage-state small { margin-top: 2px; color: #9eb7aa; font: 7px var(--mono); }
.sidebar-foot > a { display: flex; justify-content: space-between; margin-top: 20px; color: #c5d5cc; font-size: 9px; text-underline-offset: 4px; }

.app-shell { min-height: 100vh; padding-left: var(--sidebar); }
.topbar { position: sticky; z-index: 40; top: 0; height: 76px; padding: 0 clamp(22px, 3.4vw, 52px); display: flex; align-items: center; gap: 20px; background: rgba(245,243,237,.94); border-bottom: 1px solid var(--line); backdrop-filter: blur(12px); }
.context { display: flex; flex-direction: column; margin-right: auto; }.context-kicker { color: var(--muted); font: 7px var(--mono); text-transform: uppercase; letter-spacing: .06em; }.context strong { margin-top: 3px; font-size: 12px; }
.topbar-actions { display: flex; align-items: center; gap: 12px; }.global-search { width: min(22vw, 270px); height: 38px; padding: 0 10px; display: flex; align-items: center; gap: 8px; border: 1px solid var(--line); background: var(--surface); }.global-search svg, .table-search svg { width: 15px; fill: none; stroke: var(--muted); stroke-width: 1.7; }.global-search input, .table-search input { width: 100%; border: 0; outline: 0; background: transparent; font-size: 10px; }.global-search kbd { padding: 2px 5px; color: var(--muted); border: 1px solid var(--line); border-radius: 3px; font: 7px var(--mono); }
.user-chip { display: flex; align-items: center; gap: 8px; }.user-chip > span { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; color: var(--paper); background: var(--green-2); font: 9px var(--mono); }.user-chip div { display: flex; flex-direction: column; }.user-chip strong { font-size: 9px; }.user-chip small { color: var(--muted); font: 7px var(--mono); }
.mobile-menu { display: none; }

.button { min-height: 38px; padding: 0 15px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 1px solid transparent; border-radius: 2px; cursor: pointer; font-size: 10px; font-weight: 700; text-decoration: none; white-space: nowrap; }
.button-primary { color: white; background: var(--green); }.button-primary:hover { background: #236148; }.button-accent { color: var(--ink); background: var(--lime); }.button-accent:hover { background: #d2f03e; }.button-secondary { color: var(--ink); background: var(--surface); border-color: var(--line); }.button-secondary:hover { background: var(--surface-2); }.button-quiet { color: var(--ink); background: transparent; }.button-danger { color: white; background: var(--red); }.button-danger:hover { background: #993a34; }

.workspace { padding: 55px clamp(22px, 3.4vw, 52px) 80px; }
.view { display: none; max-width: 1450px; margin: 0 auto; }.view.is-visible { display: block; animation: enter .28s ease; }
.view-heading { display: flex; justify-content: space-between; align-items: end; gap: 60px; margin-bottom: 45px; }.view-heading h1 { margin: 8px 0 0; font: 400 clamp(48px, 5vw, 76px)/.9 var(--serif); letter-spacing: -.045em; }.view-heading h1 em { color: #6c7972; font-weight: 400; }.eyebrow, .panel-kicker { margin: 0; color: var(--green-2); font: 8px var(--mono); text-transform: uppercase; letter-spacing: .1em; }.heading-note { max-width: 300px; padding: 16px 18px; display: flex; align-items: start; gap: 10px; border: 1px solid var(--line); background: rgba(255,255,255,.38); }.heading-note p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.6; }.heading-note strong { color: var(--ink); }.live-dot { width: 7px; height: 7px; margin-top: 3px; flex: 0 0 auto; border-radius: 50%; background: var(--amber); box-shadow: 0 0 0 4px rgba(243,184,57,.13); }
.compact-heading { align-items: center; }.compact-heading h1 { font-size: clamp(46px, 4vw, 64px); }.heading-description { max-width: 650px; margin: 13px 0 0; color: var(--muted); font-size: 11px; line-height: 1.6; }

.metric-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 13px; margin-bottom: 13px; }
.metric-card { position: relative; min-height: 150px; padding: 21px; color: var(--ink); background: var(--surface); border: 1px solid var(--line); overflow: hidden; }.metric-card::after { content: ""; position: absolute; right: -30px; bottom: -40px; width: 120px; height: 120px; border: 1px solid var(--line); border-radius: 50%; box-shadow: 0 0 0 22px rgba(22,78,58,.025); }.metric-card:nth-child(2)::after { border-radius: 0; transform: rotate(25deg); }.metric-card:nth-child(3)::after { border-style: dashed; }.metric-card:nth-child(4)::after { background: rgba(223,255,79,.35); }
.metric-label { display: flex; justify-content: space-between; color: var(--muted); font: 8px var(--mono); text-transform: uppercase; letter-spacing: .06em; }.metric-label span:last-child { color: var(--green-2); }.metric-value { position: relative; z-index: 2; margin-top: 24px; display: flex; align-items: baseline; gap: 10px; }.metric-value strong { font: 400 48px/1 var(--serif); }.metric-value small { color: var(--muted); font: 8px var(--mono); }
.overview-grid { display: grid; grid-template-columns: 1.25fr .75fr; gap: 13px; margin-bottom: 13px; }
.panel { background: var(--surface); border: 1px solid var(--line); }.attention-panel, .coverage-panel, .recent-panel { padding: 24px; }.panel-heading { display: flex; justify-content: space-between; align-items: start; gap: 20px; }.panel-heading h2 { margin: 4px 0 0; font: 400 27px var(--serif); }.text-button { padding: 6px 0; border: 0; border-bottom: 1px solid var(--line); color: var(--ink); background: transparent; cursor: pointer; font-size: 9px; font-weight: 700; }.text-button span { margin-left: 12px; }.data-date { color: var(--muted); font: 8px var(--mono); }
.attention-list { margin-top: 20px; }.attention-row { display: grid; grid-template-columns: 40px 1fr auto; gap: 12px; align-items: center; padding: 14px 0; border-top: 1px solid var(--line); }.attention-symbol { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; color: var(--red); background: #f7e7e1; font: 500 12px var(--mono); }.attention-symbol.warning { color: #87610c; background: #faefce; }.attention-symbol.info { color: var(--blue); background: #e4edf8; }.attention-row strong { display: block; font-size: 10px; }.attention-row p { margin: 3px 0 0; color: var(--muted); font-size: 8px; }.attention-row button { border: 0; background: transparent; cursor: pointer; color: var(--ink); font-size: 17px; }
.coverage-chart { margin-top: 23px; display: grid; gap: 16px; }.coverage-row { display: grid; grid-template-columns: 108px 1fr 32px; gap: 10px; align-items: center; }.coverage-row > span:first-child { font-size: 9px; }.coverage-row > span:last-child { text-align: right; font: 8px var(--mono); }.coverage-track { height: 7px; background: var(--surface-2); overflow: hidden; }.coverage-fill { height: 100%; background: var(--green-2); }.coverage-row:nth-child(2) .coverage-fill { background: var(--blue); }.coverage-row:nth-child(3) .coverage-fill { background: var(--orange); }.coverage-row:nth-child(4) .coverage-fill { background: var(--purple); }
.visitor-panel { margin-bottom: 13px; padding: 24px; }
.visitor-summary-grid { margin-top: 20px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.visitor-stat { min-height: 92px; padding: 16px; border: 1px solid var(--line); background: var(--paper); }
.visitor-stat span { display: block; color: var(--muted); font: 10px/1.45 var(--mono); text-transform: uppercase; }
.visitor-stat strong { display: block; margin-top: 10px; font: 400 34px/1 var(--serif); }
.visitor-breakdown-grid { margin-top: 18px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 13px; }
.visitor-breakdown-grid > div { min-width: 0; padding: 15px; border: 1px solid var(--line); background: var(--surface); }
.visitor-list { margin-top: 12px; display: grid; gap: 8px; }
.visitor-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; padding-top: 8px; border-top: 1px solid var(--line); }
.visitor-row:first-child { padding-top: 0; border-top: 0; }
.visitor-row span { min-width: 0; overflow-wrap: anywhere; color: var(--ink); font-size: 12px; line-height: 1.45; }
.visitor-row strong { font: 500 12px var(--mono); }
.visitor-empty { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.55; }
.recent-panel { padding-bottom: 10px; }.table-wrap { width: 100%; overflow-x: auto; }.recent-panel table { margin-top: 15px; }
table { width: 100%; border-collapse: collapse; }th { padding: 12px 10px; color: var(--muted); border-bottom: 1px solid var(--line); text-align: left; font: 7px var(--mono); text-transform: uppercase; letter-spacing: .06em; }td { padding: 14px 10px; border-bottom: 1px solid #e7e4dc; font-size: 9px; }tbody tr:last-child td { border-bottom: 0; }.equipment-name-cell { display: flex; align-items: center; gap: 10px; }.record-icon { width: 34px; height: 34px; display: grid; flex: 0 0 auto; place-items: center; color: var(--green); background: #e1ece6; overflow: hidden; }.record-icon svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.5; }.record-icon img { width: 100%; height: 100%; object-fit: cover; }.equipment-name-cell strong { display: block; font-size: 9px; }.equipment-name-cell small { color: var(--muted); font: 7px var(--mono); }.status-pill, .review-pill { display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px; border-radius: 99px; font: 7px var(--mono); white-space: nowrap; }.status-pill::before, .legend-dot { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }.status-operational { color: #176244; background: #e0efe6; }.status-limited-access { color: #80600d; background: #f8efd2; }.status-maintenance { color: #a14830; background: #f7e4dd; }.status-inactive { color: #666; background: #eae9e4; }.review-pill.verified { color: #176244; background: #e0efe6; }.review-pill.submitted { color: #8a6110; background: #fbefd1; }.review-pill.draft { color: #647179; background: #e7ecef; }
.student-record-icon { color: var(--ink); background: #dfeae4; border: 1px solid var(--line); font: 600 10px var(--mono); }

.registry-tools { padding: 13px; display: flex; align-items: end; gap: 9px; border: 1px solid var(--line); background: var(--surface); }.registry-tools > label { display: flex; min-width: 150px; flex-direction: column; gap: 5px; color: var(--muted); font: 7px var(--mono); text-transform: uppercase; }.registry-tools select { min-height: 36px; padding: 0 28px 0 10px; color: var(--ink); border: 1px solid var(--line); background: var(--paper); font-size: 9px; }.table-search { min-width: min(31vw, 400px) !important; height: 36px; padding: 0 11px; flex-direction: row !important; align-items: center; border: 1px solid var(--line); background: var(--paper); }.icon-button { width: 36px; height: 36px; border: 1px solid var(--line); color: var(--ink); background: var(--paper); cursor: pointer; }.registry-summary { min-height: 55px; display: flex; align-items: center; justify-content: space-between; color: var(--muted); }.registry-summary p { margin: 0; font: 8px var(--mono); }.registry-summary strong { color: var(--ink); }.registry-summary .legend-dot { display: inline-block; margin: 0 4px 0 13px; }.legend-dot.verified { color: var(--green-2); }.legend-dot.submitted { color: var(--amber); }.legend-dot.draft { color: #829097; }
.table-panel { min-height: 320px; }.registry-table th, .registry-table td { padding: 15px 16px; }.registry-table tbody tr { cursor: pointer; }.registry-table tbody tr:hover { background: #f6f5ef; }.registry-table td:first-child { min-width: 250px; }.cell-stack { display: flex; flex-direction: column; gap: 2px; }.cell-stack small { color: var(--muted); font: 7px var(--mono); }.row-actions { display: flex; gap: 4px; }.row-actions button { width: 30px; height: 30px; border: 0; color: var(--muted); background: transparent; cursor: pointer; }.row-actions button:hover { color: var(--ink); background: var(--surface-2); }.empty-state { padding: 65px 20px; text-align: center; }.empty-state > span { font: 400 40px var(--serif); }.empty-state h2 { margin: 12px 0 5px; font: 400 23px var(--serif); }.empty-state p { margin: 0; color: var(--muted); font-size: 10px; }

.submission-layout { display: grid; grid-template-columns: 250px 1fr; gap: 14px; align-items: start; }.queue-summary { position: sticky; top: 100px; padding: 22px; }.queue-stat { padding: 18px 0; display: flex; justify-content: space-between; align-items: baseline; border-bottom: 1px solid var(--line); }.queue-stat strong { font: 400 32px var(--serif); }.queue-stat span { max-width: 90px; text-align: right; color: var(--muted); font: 7px/1.4 var(--mono); text-transform: uppercase; }.queue-help { margin: 22px -22px -22px; padding: 22px; background: var(--green); color: white; }.queue-help strong { font-size: 10px; }.queue-help p { margin: 8px 0 0; color: #bbd0c5; font-size: 8px; line-height: 1.65; }.submission-list { display: grid; gap: 10px; }.submission-card { padding: 21px; background: var(--surface); border: 1px solid var(--line); }.submission-card-head { display: flex; justify-content: space-between; align-items: start; gap: 16px; }.submission-card-head h2 { margin: 5px 0 0; font: 400 25px var(--serif); }.submission-card-head p { margin: 5px 0 0; color: var(--muted); font-size: 8px; }.submission-label { color: var(--green-2); font: 7px var(--mono); text-transform: uppercase; }.submission-details { margin-top: 18px; padding: 13px 0; display: grid; grid-template-columns: repeat(4,1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }.submission-details div { padding: 0 14px; border-right: 1px solid var(--line); }.submission-details div:first-child { padding-left: 0; }.submission-details div:last-child { border: 0; }.submission-details span { display: block; color: var(--muted); font: 7px var(--mono); text-transform: uppercase; }.submission-details strong { display: block; margin-top: 5px; font-size: 9px; }.submission-card-foot { padding-top: 16px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }.submission-card-foot p { margin: 0; max-width: 60%; color: var(--muted); font-size: 8px; }.submission-actions { display: flex; gap: 7px; }

.facility-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 13px; }.facility-card { min-height: 320px; padding: 23px; display: flex; flex-direction: column; background: var(--surface); border: 1px solid var(--line); }.facility-visual { position: relative; height: 110px; margin: -23px -23px 22px; background: var(--facility-color, #d8e7df); overflow: hidden; }.facility-visual::before, .facility-visual::after { content: ""; position: absolute; border: 1px solid var(--ink); }.facility-visual::before { width: 120px; height: 120px; right: 16%; top: -45%; border-radius: 50%; box-shadow: 0 0 0 20px rgba(255,255,255,.15); }.facility-visual::after { left: 12%; right: 12%; bottom: 20px; height: 34px; transform: skewX(-25deg); background: rgba(255,255,255,.4); }.facility-card-meta { display: flex; justify-content: space-between; color: var(--muted); font: 7px var(--mono); text-transform: uppercase; }.facility-card h2 { margin: 19px 0 8px; font: 400 27px/1.05 var(--serif); }.facility-card p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.6; }.facility-card-foot { margin-top: auto; padding-top: 18px; display: flex; justify-content: space-between; border-top: 1px solid var(--line); font: 8px var(--mono); }.facility-card-foot strong { font-size: 18px; font-family: var(--serif); font-weight: 400; }
.facility-card { cursor: pointer; transition: border-color .2s ease, transform .2s ease; }
.facility-card:hover { border-color: var(--green-2); transform: translateY(-2px); }
.facility-card .text-button { margin-left: 8px; align-self: end; }

.faculty-admin-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 13px; }
.faculty-admin-card {
  min-height: 330px; padding: 23px; display: flex; flex-direction: column;
  background: color-mix(in srgb, var(--faculty-color) 14%, var(--surface));
  border: 1px solid var(--line); cursor: pointer; transition: border-color .2s ease, transform .2s ease;
}
.faculty-admin-card:hover { border-color: var(--green-2); transform: translateY(-2px); }
.faculty-admin-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.faculty-admin-head > span {
  width: 58px; height: 58px; display: grid; place-items: center; border: 1px solid var(--ink);
  border-radius: 50%; background: var(--faculty-color); font: 500 15px var(--mono); overflow: hidden;
}
.faculty-admin-head > span img { width: 100%; height: 100%; object-fit: cover; }
.faculty-admin-head small {
  padding: 5px 8px; border: 1px solid var(--line); background: rgba(255,255,255,.45);
  font: 9px var(--mono); text-transform: uppercase;
}
.faculty-admin-card h2 { margin: 25px 0 7px; font: 400 30px/1.02 var(--serif); letter-spacing: -.02em; }
.faculty-admin-card p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.55; }
.faculty-admin-tags { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 22px; }
.faculty-admin-tags span {
  padding: 6px 8px; border: 1px solid var(--line); background: rgba(255,255,255,.42);
  font: 9px/1.35 var(--mono); text-transform: uppercase;
}
.faculty-admin-foot {
  margin-top: auto; padding-top: 18px; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 14px;
  border-top: 1px solid var(--line); font: 9px/1.45 var(--mono);
}
.faculty-admin-foot strong { display: block; font: 400 24px/1 var(--serif); }
.faculty-admin-foot .text-button { align-self: end; }

.service-admin-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 13px; }
.service-admin-card {
  min-height: 320px; padding: 23px; display: flex; flex-direction: column;
  background: var(--surface); border: 1px solid var(--line); cursor: pointer;
  transition: border-color .2s ease, transform .2s ease;
}
.service-admin-card:hover { border-color: var(--green-2); transform: translateY(-2px); }
.service-admin-meta { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.service-admin-meta > span {
  padding: 6px 9px; color: var(--green); border: 1px solid var(--line);
  background: #e7f1eb; font: 10px var(--mono); text-transform: uppercase;
}
.service-admin-card h2 { margin: 30px 0 10px; font: 400 30px/1.03 var(--serif); letter-spacing: -.02em; }
.service-admin-card p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.6; }
.service-admin-foot {
  margin-top: auto; padding-top: 18px; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 14px;
  border-top: 1px solid var(--line); font: 9px/1.45 var(--mono);
}
.service-admin-foot strong {
  display: block; max-width: 160px; overflow-wrap: anywhere;
  font: 600 12px/1.25 var(--sans);
}
.service-admin-foot .text-button { align-self: end; }

.data-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 13px; }.data-card { min-height: 280px; padding: 25px; display: flex; align-items: flex-start; flex-direction: column; }.data-icon { width: 52px; height: 52px; display: grid; place-items: center; color: var(--green); background: #dfeae4; font: 500 11px var(--mono); }.data-card:nth-child(2) .data-icon { color: #805d0d; background: #f6eac6; }.data-card:nth-child(3) .data-icon { color: #614d8a; background: #e7e1f0; font-size: 22px; }.data-card:nth-child(4) .data-icon { color: var(--green); background: var(--lime); }.data-card h2 { margin: 25px 0 9px; font: 400 25px var(--serif); }.data-card p { margin: 0 0 25px; color: var(--muted); font-size: 9px; line-height: 1.65; }.data-card .button { margin-top: auto; }.file-button input { position: absolute; width: 1px; height: 1px; opacity: 0; }.production-note { min-height: 430px; margin-top: 13px; display: grid; grid-template-columns: .75fr 1.25fr; color: white; background: var(--green); overflow: hidden; }.production-note > div:last-child { padding: 55px 6vw 45px 30px; }.production-note .panel-kicker { color: var(--lime); }.production-note h2 { max-width: 650px; margin: 12px 0 20px; font: 400 40px/1.05 var(--serif); }.production-note p:not(.panel-kicker) { max-width: 620px; color: #bbd0c5; font-size: 10px; line-height: 1.8; }.production-note ul { margin: 22px 0 0; padding: 0; display: grid; grid-template-columns: repeat(2,1fr); gap: 12px 25px; list-style: none; }.production-note li { padding-top: 10px; border-top: 1px solid rgba(255,255,255,.18); font-size: 9px; }.production-visual { position: relative; min-height: 380px; background: var(--lime); }.production-visual::before, .production-visual::after, .production-visual i { content: ""; position: absolute; border: 1px solid var(--ink); border-radius: 50%; }.production-visual::before { inset: 10%; }.production-visual::after { inset: 28%; background: var(--green); }.production-visual i:nth-child(1) { width: 18px; height: 18px; left: 15%; top: 21%; background: var(--orange); }.production-visual i:nth-child(2) { width: 11px; height: 11px; right: 12%; top: 53%; background: var(--blue); }.production-visual i:nth-child(3) { width: 8px; height: 8px; left: 31%; bottom: 10%; background: var(--paper); }.danger-zone { margin-top: 13px; padding: 22px 25px; display: flex; align-items: center; justify-content: space-between; }.danger-zone h2 { margin: 4px 0 4px; font: 400 22px var(--serif); }.danger-zone p:not(.panel-kicker) { margin: 0; color: var(--muted); font-size: 8px; }

.modal { width: min(920px, calc(100vw - 30px)); max-height: 92vh; padding: 0; border: 0; color: var(--ink); background: var(--surface); box-shadow: 0 30px 100px rgba(0,0,0,.27); }.modal::backdrop, .confirm-dialog::backdrop { background: rgba(11,25,19,.64); backdrop-filter: blur(3px); }.modal form { display: flex; max-height: 92vh; flex-direction: column; }.modal-head { flex: 0 0 auto; padding: 25px 28px; display: flex; align-items: start; justify-content: space-between; border-bottom: 1px solid var(--line); }.modal-head h2 { margin: 6px 0 0; font: 400 34px var(--serif); }.close-button { width: 35px; height: 35px; border: 1px solid var(--line); color: var(--ink); background: transparent; cursor: pointer; font-size: 20px; }.modal-body { overflow-y: auto; }.form-section { padding: 30px 28px; display: grid; grid-template-columns: 160px 1fr; gap: 28px; border-bottom: 1px solid var(--line); }.form-section-title { display: flex; gap: 12px; }.form-section-title > span { width: 25px; height: 25px; display: grid; flex: 0 0 auto; place-items: center; border-radius: 50%; color: white; background: var(--green); font: 7px var(--mono); }.form-section-title h3 { margin: 3px 0 5px; font: 400 19px var(--serif); }.form-section-title p { margin: 0; color: var(--muted); font-size: 8px; line-height: 1.5; }.form-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 16px 13px; }.form-grid label { display: flex; flex-direction: column; gap: 6px; color: var(--ink-2); font-size: 8px; font-weight: 700; }.form-grid input, .form-grid select, .form-grid textarea { width: 100%; padding: 10px 11px; color: var(--ink); border: 1px solid var(--line); border-radius: 0; background: var(--paper); font-size: 9px; resize: vertical; }.form-grid input, .form-grid select { min-height: 39px; }.form-grid input:focus, .form-grid select:focus, .form-grid textarea:focus { border-color: var(--green-2); background: white; }.span-2 { grid-column: 1 / -1; }.checkbox-label { flex-direction: row !important; align-items: center; padding: 13px; border: 1px solid var(--line); background: var(--paper); }.checkbox-label input { width: 17px; min-height: auto; height: 17px; flex: 0 0 auto; }.checkbox-label span { display: flex; flex-direction: column; gap: 3px; }.checkbox-label small { color: var(--muted); font-size: 7px; font-weight: 400; }.submitter-section { background: #f1f4e4; }.modal-foot { flex: 0 0 auto; min-height: 72px; padding: 14px 28px; display: flex; align-items: center; justify-content: space-between; border-top: 1px solid var(--line); background: var(--surface); }.modal-foot > p { color: var(--muted); font: 7px var(--mono); }.modal-foot > div { display: flex; gap: 7px; }.modal-small { width: min(650px, calc(100vw - 30px)); }.modal-small .modal-body { padding: 28px; }.modal-small .form-grid { max-width: 100%; }
.form-grid input[type="color"] { min-height: 39px; padding: 4px; cursor: pointer; }
.faculty-facility-picker { margin: 0; padding: 15px; border: 1px solid var(--line); background: var(--paper); }
.faculty-facility-picker legend { padding: 0 6px; color: var(--ink-2); font-size: 8px; font-weight: 700; }
.faculty-facility-picker > p { margin: 0 0 12px; color: var(--muted); font-size: 8px; line-height: 1.5; }
.faculty-facility-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.faculty-facility-options label { display: grid; grid-template-columns: 17px 1fr; gap: 9px; align-items: start; padding: 10px; border: 1px solid var(--line); background: white; color: var(--ink); cursor: pointer; }
.faculty-facility-options input { width: 17px; min-height: auto; height: 17px; margin-top: 1px; }
.faculty-facility-options span { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.faculty-facility-options strong { font-size: 9px; line-height: 1.35; overflow-wrap: anywhere; }
.faculty-facility-options small { color: var(--muted); font-size: 7px; line-height: 1.35; font-weight: 400; }
.faculty-facility-options p { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: 8px; line-height: 1.5; }
@media (max-width: 540px) { .faculty-facility-options { grid-template-columns: 1fr; } }
.media-fields { min-width: 0; display: grid; gap: 18px; }.media-field { padding: 16px; border: 1px solid var(--line); background: var(--paper); }.media-field-head { margin-bottom: 13px; display: flex; align-items: center; justify-content: space-between; gap: 18px; }.media-field-head > div { display: flex; flex-direction: column; gap: 3px; }.media-field-head strong { font-size: 9px; }.media-field-head small { color: var(--muted); font-size: 7px; }.media-upload { position: relative; min-height: 34px; padding: 0 12px; display: inline-flex; align-items: center; color: white; background: var(--green); cursor: pointer; font-size: 8px; font-weight: 700; white-space: nowrap; }.media-upload input { position: absolute; width: 1px; height: 1px; opacity: 0; }.feature-photo-preview { position: relative; min-height: 185px; display: grid; place-items: center; color: var(--muted); border: 1px dashed #b9b9b0; background: #e7e5de; overflow: hidden; font: 8px var(--mono); }.feature-photo-preview img { width: 100%; height: 260px; padding: 8px; object-fit: contain; }.media-remove { position: absolute; z-index: 2; right: 8px; top: 8px; width: 30px; height: 30px; border: 0; border-radius: 50%; color: white; background: rgba(23,37,31,.85); cursor: pointer; }.media-alt { margin-top: 10px; display: flex; flex-direction: column; gap: 5px; color: var(--ink-2); font-size: 8px; font-weight: 700; }.media-alt input, .gallery-item input { min-height: 36px; padding: 8px 10px; border: 1px solid var(--line); background: var(--surface); font-size: 8px; }.gallery-photo-preview { display: grid; grid-template-columns: repeat(3,1fr); gap: 9px; }.gallery-photo-preview > p { grid-column: 1 / -1; margin: 20px 0; color: var(--muted); text-align: center; font: 8px var(--mono); }.gallery-item { position: relative; min-width: 0; padding: 6px; display: flex; flex-direction: column; gap: 6px; border: 1px solid var(--line); background: var(--surface); }.gallery-item img { width: 100%; aspect-ratio: 4/3; object-fit: cover; }.gallery-item .media-remove { width: 25px; height: 25px; right: 9px; top: 9px; }.gallery-item input { width: 100%; }.storage-warning { margin: 0; padding: 11px 13px; color: #72570e; background: #faefce; font-size: 8px; line-height: 1.55; }
.faculty-photo-field { min-width: 0; }
.faculty-photo-preview { min-height: 245px; }
.faculty-photo-preview img { height: 245px; padding: 0; object-fit: cover; }
.password-note { margin: 18px 0 0; color: var(--muted); font-size: 12px; line-height: 1.6; }
#password-message { max-width: 320px; color: var(--muted); font-size: 11px; line-height: 1.45; }
#password-message.is-error { color: var(--red); }
#password-message.is-success { color: var(--green-2); }
#facility-message { max-width: 360px; color: var(--muted); font-size: 11px; line-height: 1.45; }
#facility-message.is-error { color: var(--red); }
#facility-message.is-success { color: var(--green-2); }
#faculty-message { max-width: 360px; color: var(--muted); font-size: 11px; line-height: 1.45; }
#faculty-message.is-error { color: var(--red); }
#faculty-message.is-success { color: var(--green-2); }
#service-message { max-width: 360px; color: var(--muted); font-size: 11px; line-height: 1.45; }
#service-message.is-error { color: var(--red); }
#service-message.is-success { color: var(--green-2); }
#student-message { max-width: 360px; color: var(--muted); font-size: 11px; line-height: 1.45; }
#student-message.is-error { color: var(--red); }
#student-message.is-success { color: var(--green-2); }
#student-record-message { max-width: 420px; color: var(--muted); font-size: 11px; line-height: 1.45; }
#student-record-message.is-error { color: var(--red); }
#student-record-message.is-success { color: var(--green-2); }
.student-portal .auth-gate {
  place-items: start center;
  overflow-y: auto;
  padding-block: max(24px, env(safe-area-inset-top)) max(32px, env(safe-area-inset-bottom));
}
.student-portal .auth-card { align-self: start; }
.student-portal #student-signup-form {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.student-portal #student-signup-form .button { grid-column: 1 / -1; }
.student-register .auth-card { width: min(720px, 100%); }
.student-portal .workspace { max-width: 1120px; margin: 0 auto; padding-left: clamp(22px, 3.4vw, 52px); }
.student-portal #student-record-form { overflow: hidden; }
.description-label { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
#description-counter { color: var(--muted); font: 500 11px var(--mono); }
#description-counter.is-near-limit { color: #8b5e08; }
#description-counter.is-at-limit { color: var(--red); }
.confirm-dialog { width: min(390px, calc(100vw - 30px)); padding: 0; border: 0; text-align: center; background: var(--surface); }.confirm-dialog form { padding: 30px; }.confirm-icon { width: 46px; height: 46px; margin: 0 auto; display: grid; place-items: center; border-radius: 50%; color: var(--red); background: #f8e7e2; font: 500 18px var(--mono); }.confirm-dialog h2 { margin: 18px 0 8px; font: 400 27px var(--serif); }.confirm-dialog p { margin: 0 auto 25px; max-width: 300px; color: var(--muted); font-size: 9px; line-height: 1.6; }.confirm-dialog form > div { display: flex; justify-content: center; gap: 7px; }
.toast { position: fixed; z-index: 100; right: 25px; bottom: 25px; min-width: 270px; padding: 14px 17px; display: flex; align-items: center; gap: 11px; color: white; background: var(--green); box-shadow: 0 10px 35px rgba(0,0,0,.2); transform: translateY(150%); opacity: 0; transition: .25s ease; }.toast.is-visible { transform: none; opacity: 1; }.toast > span { width: 23px; height: 23px; display: grid; place-items: center; border-radius: 50%; color: var(--ink); background: var(--lime); font-size: 10px; }.toast p { margin: 0; font-size: 9px; }

@keyframes enter { from { opacity: 0; transform: translateY(6px); } }

@media (max-width: 1120px) {
  :root { --sidebar: 210px; }.global-search { display: none; }.user-chip div { display: none; }.metric-grid { grid-template-columns: repeat(2,1fr); }.overview-grid { grid-template-columns: 1fr; }.visitor-summary-grid { grid-template-columns: repeat(2, 1fr); }.visitor-breakdown-grid { grid-template-columns: 1fr; }.facility-grid, .faculty-admin-grid, .service-admin-grid { grid-template-columns: repeat(2,1fr); }.registry-tools { flex-wrap: wrap; }.table-search { min-width: 100% !important; }.registry-tools > label { flex: 1; }.data-grid { grid-template-columns: 1fr; }.data-card { min-height: 220px; }.production-note { grid-template-columns: .6fr 1.4fr; }
}

@media (max-width: 760px) {
  :root { --sidebar: 260px; }.sidebar { transform: translateX(-100%); transition: transform .25s ease; box-shadow: 15px 0 45px rgba(0,0,0,.2); }.sidebar.is-open { transform: none; }.app-shell { padding-left: 0; }.topbar { height: 68px; padding-inline: 18px; }.mobile-menu { width: 35px; height: 35px; padding: 8px; display: flex; justify-content: center; flex-direction: column; gap: 5px; border: 1px solid var(--line); background: var(--surface); }.mobile-menu i { height: 1px; background: var(--ink); }.context-kicker { display: none; }.topbar-actions .button { width: 38px; padding: 0; font-size: 0; }.topbar-actions .button span { font-size: 18px; }.user-chip { display: none; }.workspace { padding: 38px 17px 60px; }.view-heading { align-items: flex-start; flex-direction: column; gap: 25px; margin-bottom: 32px; }.view-heading h1 { font-size: 48px; }.heading-note { max-width: 100%; }.compact-heading .button { width: 100%; }.metric-grid { grid-template-columns: 1fr 1fr; }.metric-card { min-height: 135px; }.overview-grid { display: block; }.coverage-panel { margin-top: 13px; }.attention-panel, .coverage-panel, .recent-panel, .visitor-panel { padding: 18px; }.recent-panel { display: none; }.submission-layout { grid-template-columns: 1fr; }.queue-summary { position: static; }.submission-details { grid-template-columns: 1fr 1fr; gap: 14px 0; }.submission-card-foot { align-items: stretch; flex-direction: column; }.submission-card-foot p { max-width: 100%; }.submission-actions { display: grid; grid-template-columns: 1fr 1fr; }.facility-grid, .faculty-admin-grid, .service-admin-grid { grid-template-columns: 1fr; }.registry-summary p:last-child { display: none; }.registry-tools > label { min-width: calc(50% - 6px); }.registry-table th:nth-child(3), .registry-table td:nth-child(3), .registry-table th:nth-child(4), .registry-table td:nth-child(4) { display: none; }.production-note { grid-template-columns: 1fr; }.production-visual { min-height: 240px; }.production-note > div:last-child { padding: 35px 25px; }.danger-zone { align-items: flex-start; flex-direction: column; gap: 20px; }.form-section { grid-template-columns: 1fr; }.form-section-title p { max-width: 300px; }.gallery-photo-preview { grid-template-columns: repeat(2,1fr); }.modal-foot { align-items: stretch; flex-direction: column; }.modal-foot > p { display: none; }.modal-foot > div { display: grid; grid-template-columns: repeat(3,1fr); }
}

@media (max-width: 460px) {
  .metric-grid, .visitor-summary-grid { grid-template-columns: 1fr; }.metric-card { min-height: 125px; }.registry-tools > label { min-width: 100%; }.registry-table th:nth-child(2), .registry-table td:nth-child(2) { display: none; }.facility-grid { display: block; }.facility-card { margin-bottom: 12px; }.submission-details { grid-template-columns: 1fr; }.submission-details div { padding: 6px 0; border: 0; }.form-grid { grid-template-columns: 1fr; }.span-2 { grid-column: auto; }.modal-head, .form-section { padding-left: 20px; padding-right: 20px; }.modal-foot { padding-inline: 20px; }.modal-foot > div { grid-template-columns: 1fr; }.production-note ul { grid-template-columns: 1fr; }
  .student-portal #student-signup-form { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; } html { scroll-behavior: auto; } }

/* Readability scale: keep operational text comfortably legible. */
.brand strong { font-size: 26px; }
.brand small,
.storage-state small,
.context-kicker,
.panel-kicker,
.eyebrow,
.data-date,
.metric-label,
.nav-count,
.global-search kbd,
.facility-card-meta,
.submission-label,
.submission-details span,
.registry-tools > label,
th { font-size: 10px; line-height: 1.45; }

.nav-item,
.context strong,
.button,
.global-search input,
.table-search input,
.registry-tools select,
.user-chip strong,
.heading-description,
.heading-note p,
.metric-value small,
.attention-row p,
.coverage-row > span,
.equipment-name-cell strong,
.cell-stack strong,
.status-pill,
.review-pill,
td,
.facility-card p,
.submission-card-head p,
.submission-details strong,
.submission-card-foot p,
.queue-help p,
.data-card p,
.danger-zone p:not(.panel-kicker),
.production-note p:not(.panel-kicker),
.production-note li,
.toast p { font-size: 12px; line-height: 1.55; }

.equipment-name-cell small,
.cell-stack small,
.registry-summary p,
.sidebar-foot > a,
.storage-state strong,
.user-chip small,
.modal-foot > p { font-size: 10px; line-height: 1.45; }

.form-grid label,
.media-field-head strong,
.media-alt,
.checkbox-label small,
.form-section-title p,
.media-field-head small,
.storage-warning { font-size: 11px; line-height: 1.5; }

.form-grid input,
.form-grid select,
.form-grid textarea,
.media-alt input,
.gallery-item input { font-size: 13px; line-height: 1.45; }

.media-upload,
.text-button { font-size: 11px; }

.queue-help strong,
.facility-card-foot,
.sidebar-foot > a { font-size: 11px; }

@media (max-width: 760px) {
  .nav-item { font-size: 14px; }
  .context strong { font-size: 13px; }
  .button { font-size: 12px; }
}
