/* Institutional access and academic working matrix. */
[hidden] { display: none !important; }
::selection { color: #fff; background: #174b87; }
:focus-visible { outline: 3px solid #3281bf; outline-offset: 3px; }
input, textarea { caret-color: #174b87; }
.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; }
body:has(.access-page) { background: #092635; }
body:has(.access-page) > .site-footer { display: none; }
.access-page { min-height: 100svh; padding: 28px clamp(24px,5vw,90px) 24px; color: #fff; display: flex; flex-direction: column; background: linear-gradient(105deg,rgba(5,27,40,.9),rgba(7,44,50,.65) 48%,rgba(9,28,59,.9)),url('media/rectoria.webp') center 56%/cover no-repeat; }
.access-header { display: flex; align-items: center; justify-content: flex-end; gap: 28px; }
.access-header > span { font-size: 13px; letter-spacing: .04em; color: #e5edf1; }
.access-content { display: grid; grid-template-columns: 1fr 440px; gap: clamp(30px,8vw,150px); align-items: center; width: min(1130px,100%); margin: auto; padding-block: 44px; }
.access-intro h1 { color: #fff; font-size: clamp(40px,4.5vw,68px); line-height: 1.12; font-weight: 600; letter-spacing: -.035em; margin: 0 0 22px; }
.access-intro h1 em { font-style: normal; color: #f4ce67; }
.access-intro > p { max-width: 34ch; color: #e1ecee; line-height: 1.7; font-size: 17px; margin-bottom: 38px; }
.access-location { color: #c6dadc; font-size: 12px; }
.access-card { position: relative; overflow: hidden; padding: 34px; background: rgba(9,29,43,.94); border-radius: 16px; box-shadow: 0 24px 70px rgba(0,12,25,.32); }
.access-brand { background: #fff; border-radius: 7px; padding: 17px 20px; margin-bottom: 27px; }
.access-brand img { width: 100%; height: auto; display: block; }
.access-card h2 { color: #fff; font-size: 23px; font-weight: 650; line-height: 1.25; margin-bottom: 9px; }
.access-card > p { color: #d0dee5; font-size: 13px; line-height: 1.6; margin-bottom: 25px; }
.access-form { display: flex; flex-direction: column; }
.access-form > label { display: block; color: #e7f0f4; font-size: 13px; font-weight: 600; margin-bottom: 8px; }
.access-form input { height: 50px; width: 100%; background: #243d4d; border: 1px solid #718b99; color: #fff; padding: 12px 14px; border-radius: 7px; outline-offset: 3px; caret-color: #f3cf6e; }
.access-form > input:not([type=hidden]) { margin-bottom: 20px; }
.access-form input:focus { border-color: #87d9df; box-shadow: 0 0 0 3px rgba(135,217,223,.15); }
.access-password { position: relative; }
.access-password input { padding-right: 52px; }
.access-password button { position: absolute; inset: 3px 3px 3px auto; width: 44px; color: #dcebf1; background: none; border: 0; border-radius: 5px; display: grid; place-items: center; }
.access-password svg { width: 23px; height: 23px; }
.access-password button:hover { background: #3a5667; }
.access-submit { min-height: 52px; width: 100%; display: flex; align-items: center; justify-content: space-between; padding: 14px 19px; margin-top: 28px; border: 0; border-radius: 7px; color: #082237; background: linear-gradient(105deg,#76d6c6,#83bcf0); font-weight: 800; font-size: 14px; box-shadow: 0 7px 18px rgba(0,13,27,.18); transition: transform .22s ease-out,box-shadow .22s ease-out,filter .22s ease-out; }
.access-submit svg { width: 23px; height: 23px; transition: transform .22s ease-out; }
.access-submit:hover { transform: translateY(-2px); box-shadow: 0 12px 24px rgba(0,13,27,.28); filter: brightness(1.08); }
.access-submit:hover svg { transform: translateX(4px); }
.access-submit:active { transform: translateY(0); }
.access-card .access-help { font-size: 12px; color: #c1d1db; margin: 20px 0 0; line-height: 1.7; }
.access-footer { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.access-partners { display: flex; gap: 26px; align-items: center; background: #fff; padding: 12px 24px; border-radius: 8px; }
.access-partners img { object-fit: contain; height: 48px; width: auto; }
.access-partners .partner-uas { height: 57px; }
.access-partners .partner-virtual { height: 40px; }
.access-footer > p { margin: 0; text-align: right; color: #d9e7ed; font-size: 12px; line-height: 1.8; }
.access-footer strong { color: #fff; font-weight: 600; }
.access-loading { position: absolute; inset: 0; background: #0d2638; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 15px; padding: 30px; text-align: center; }
.access-loading > span:last-child { color: #c7dae5; font-size: 13px; }
.eagle-loader { position: relative; display: grid; place-items: center; width: 150px; height: 150px; margin-bottom: 15px; }
.eagle-loader img { width: 76px; height: auto; animation: eagle-rise 1.8s ease-in-out infinite; }
.eagle-loader::after { content: ''; position: absolute; inset: 0; border-radius: 50%; border: 2px solid #345266; border-top-color: #efc85a; animation: eagle-orbit 1.4s linear infinite; }
@keyframes eagle-orbit { to { transform: rotate(360deg); } }
@keyframes eagle-rise { 50% { transform: translateY(-7px); } }
.matrix-workspace { --radius: 12px; width: min(1720px,calc(100% - 64px)); font-size: 14px; }
.matrix-page-heading { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 26px; }
.matrix-page-heading h1 { font-size: clamp(25px,2.6vw,36px); letter-spacing: -.03em; margin-bottom: 9px; }
.matrix-page-heading p { margin: 0; color: #56647a; max-width: 77ch; }
.matrix-page-heading > .button { flex-shrink: 0; }
.matrix-toolbar { display: flex; justify-content: space-between; align-items: end; gap: 32px; padding: 23px 26px; background: #fff; border: 1px solid #d9e1e9; border-radius: 12px; }
.matrix-program-form { flex: 1; max-width: 880px; }
.matrix-program-form > label { font-size: 12px; font-weight: 700; display: block; margin-bottom: 8px; color: #4a5a71; }
.matrix-program-form > div { display: flex; gap: 12px; }
.matrix-program-form select { min-width: 0; flex: 1; }
.matrix-workspace input,.matrix-workspace select,.matrix-workspace textarea { border: 1px solid #a7b6c7; border-radius: 6px; box-shadow: none; color: #1b304b; background: #fff; font-size: 13px; padding: 10px 12px; }
.matrix-workspace input::placeholder,.matrix-workspace textarea::placeholder { color: #657489; opacity: 1; }
.matrix-workspace input:focus,.matrix-workspace select:focus,.matrix-workspace textarea:focus { border-color: #2268a3; outline: 2px solid #b3d5ef; outline-offset: 1px; }
.matrix-workspace .button { border-radius: 7px; font-size: 13px; white-space: nowrap; min-height: 42px; }
.matrix-workspace small { font-size: 11px; color: #596a81; line-height: 1.55; }
.matrix-export { display: grid; gap: 7px; text-align: right; }
.matrix-overview { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-block: 20px; color: #55657b; font-size: 12px; }
.matrix-summary { display: flex; align-items: center; gap: 23px; flex-wrap: wrap; }
.matrix-summary > span { display: inline-flex; gap: 7px; align-items: center; }
.matrix-summary strong { color: #20334e; font-size: 15px; font-variant-numeric: tabular-nums; }
.matrix-board { background: #fff; border: 1px solid #d9e1e9; border-radius: 12px; overflow: hidden; }
.matrix-board-head { padding: 22px 24px; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.matrix-board-head h2 { font-size: 18px; margin: 0; }
.matrix-board-head p { margin: 7px 0 0; color: #5c6c81; font-size: 12px; }
.matrix-search { min-width: 250px; }
.matrix-scroll { overflow: auto; max-height: 68vh; scrollbar-color: #9baebf #edf2f6; scrollbar-width: auto; }
.matrix-table { border-collapse: separate; border-spacing: 0; width: 100%; font-size: 13px; }
.matrix-table thead th { position: sticky; top: 0; z-index: 5; background: #ecf1f6; border-bottom: 1px solid #c4d2de; text-transform: none; letter-spacing: 0; color: #30465f; font-weight: 750; font-size: 11px; padding: 14px 12px; white-space: nowrap; }
.matrix-table tbody td,.matrix-table tbody th { vertical-align: top; padding: 16px 12px; border-bottom: 1px solid #e1e8ef; border-right: 1px solid #edf1f5; background: #fff; }
.matrix-table tbody tr:nth-child(even) > * { background: #f9fbfd; }
.matrix-table .matrix-subject { position: sticky; left: 0; z-index: 3; min-width: 260px; max-width: 260px; width: 260px; box-shadow: 5px 0 10px -8px #22364b; text-align: left; }
.matrix-table thead .matrix-subject { z-index: 7; }
.matrix-subject strong { display: block; font-size: 13px; line-height: 1.5; margin: 5px 0 12px; font-weight: 750; }
.matrix-table tbody th { color: #23364b; text-transform: none; letter-spacing: 0; }
.matrix-code { color: #596a81; font-size: 11px; font-weight: 500; }
.matrix-subject a { color: #1b5e95; text-decoration: underline; text-underline-offset: 3px; font-size: 11px; font-weight: 600; }
.matrix-subject a:hover { color: #092d5e; }
.matrix-subject small { display: block; margin-top: 7px; font-weight: 400; }
.editable-matrix input,.editable-matrix select,.editable-matrix textarea { min-height: 43px; width: 200px; font-size: 12px; }
.editable-matrix textarea { resize: vertical; min-height: 78px; }
.editable-matrix .matrix-number input { width: 83px; font-variant-numeric: tabular-nums; }
.editable-matrix .matrix-semester { text-align: center; min-width: 80px; padding-top: 28px; font-variant-numeric: tabular-nums; }
.editable-matrix small { display: block; margin-top: 7px; }
.editable-matrix .matrix-traffic select { width: 144px; font-weight: 750; }
.matrix-traffic[data-color=green] select { background: #e6f3eb; color: #195434; border-color: #80b69a; }
.matrix-traffic[data-color=yellow] select { background: #fff3d1; color: #6e4b06; border-color: #d7b768; }
.matrix-traffic[data-color=red] select { background: #fce9e5; color: #922f23; border-color: #dcaaa0; }
.matrix-table .matrix-save { position: sticky; right: 0; min-width: 125px; width: 125px; z-index: 4; box-shadow: -5px 0 10px -8px #22364b; }
.matrix-table thead .matrix-save { z-index: 6; }
.matrix-save form { display: flex; flex-direction: column; gap: 9px; }
.matrix-save [data-row-status] { font-size: 11px; color: #52677b; max-width: 170px; line-height: 1.5; }
.matrix-table tr[data-dirty=true] .matrix-save { background: #fff6db; }
.matrix-table tr[data-error=true] .matrix-save { background: #fff0ed; }
.matrix-table tr[data-error=true] [data-row-status] { color: #a12c22; }
.matrix-bottom-note,.matrix-pagination { padding: 16px 24px; display: flex; justify-content: space-between; align-items: center; gap: 20px; font-size: 11px; color: #53667c; border-top: 1px solid #e1e8ef; }
.matrix-pagination > div { display: flex; gap: 10px; }
.matrix-empty { padding: 35px 24px; color: #5b6d81; margin: 0; }
.matrix-admin-filters { display: grid; grid-template-columns: 2fr 1.8fr 1fr 1.2fr auto auto; align-items: end; gap: 14px; padding: 22px; background: #fff; border: 1px solid #d9e1e9; border-radius: 12px; }
.matrix-admin-filters label { min-width: 0; font-size: 11px; gap: 8px; }
.matrix-admin-filters .text-link { padding-block: 12px; font-size: 12px; }
.matrix-readonly td { min-width: 150px; max-width: 310px; line-height: 1.6; }
.matrix-readonly .matrix-context-column { min-width: 230px; }
.matrix-readonly .matrix-color-column { min-width: 130px; }
.matrix-readonly .matrix-numeric-column { min-width: 85px; text-align: right; font-variant-numeric: tabular-nums; }
.matrix-other-reports { display: flex; gap: 28px; align-items: center; flex-wrap: wrap; padding-top: 32px; font-size: 12px; }
.matrix-other-reports h2 { font-size: 14px; margin: 0; }
.matrix-other-reports a { color: #175686; text-decoration: underline; text-underline-offset: 3px; }
.council-proposal { display: flex; gap: 32px; justify-content: space-between; align-items: center; padding: 28px; margin-bottom: 24px; border-radius: 12px; background: #e8eff6; }
.council-proposal h2 { font-size: 24px; margin-top: 14px; }
.council-proposal .unit-code { color: #174b87; background: #f7faff; }
.matrix-mobile-save { display: none; }
.council-proposal p { max-width: 75ch; color: #425a73; font-size: 13px; }
.council-proposal p:last-child { margin-bottom: 0; }
.council-proposal > div:last-child { display: grid; gap: 12px; min-width: 260px; max-width: 310px; }
.matrix-inline-link { display: block; margin-top: 12px; color: #175686; text-decoration: underline; font-size: 12px; }
.council-program-table td { vertical-align: middle; }
.council-program-table td:first-child { width: 36%; }
@media (min-width: 1700px) { .access-content { width: min(1300px,100%); grid-template-columns: 1fr 480px; } .access-card { padding: 42px; } }
@media (max-width: 1100px) { .matrix-admin-filters { grid-template-columns: 1.5fr 1.5fr 1fr; } .access-content { gap: 40px; grid-template-columns: 1fr 410px; } .access-header > span { max-width: 24ch; text-align: right; } .matrix-toolbar { gap: 20px; } }
@media (max-width: 780px) { .access-page { padding: 22px; } .access-header { justify-content: center; } .access-header > img { width: 300px; } .access-header > span { display: none; } .access-content { display: block; max-width: 440px; padding-block: 30px; } .access-intro { display: none; } .access-card { padding: 28px; } .access-footer { justify-content: center; flex-wrap: wrap; gap: 16px; } .access-footer > p { text-align: center; width: 100%; } .access-partners { gap: 24px; padding: 12px 20px; } .access-partners img { height: 40px; } .access-partners .partner-uas { height: 48px; } .matrix-workspace { width: calc(100% - 28px); padding-top: 24px; } .matrix-page-heading,.matrix-toolbar,.matrix-overview,.matrix-board-head,.council-proposal { flex-direction: column; align-items: stretch; } .matrix-page-heading > .button { align-self: start; } .matrix-program-form > div { flex-direction: column; } .matrix-export { text-align: left; } .matrix-export .button { justify-self: start; } .matrix-admin-filters { grid-template-columns: 1fr 1fr; } .matrix-summary { gap: 12px; } .matrix-table .matrix-subject { width: 190px; min-width: 190px; max-width: 190px; } .matrix-table .matrix-save { position: static; } .matrix-bottom-note { flex-direction: column; align-items: start; gap: 6px; } .matrix-scroll { max-height: 70vh; } .matrix-pagination { flex-wrap: wrap; } }
@media (max-width: 420px) { .access-page { padding: 17px; } .access-card { padding: 25px 22px; } .access-card h2 { font-size: 21px; } .access-partners { gap: 18px; } .matrix-admin-filters { grid-template-columns: 1fr; } }
@media (max-width: 780px) {
  .access-partners { gap: clamp(10px,3vw,24px); padding: 12px 16px; max-width: 100%; }
  .access-partners img { height: clamp(26px,7.5vw,40px); }
  .access-partners .partner-uas { height: clamp(34px,9.5vw,48px); }
  .access-partners .partner-virtual { height: clamp(22px,6vw,32px); }
  .editable-matrix .matrix-subject { width: 120px; min-width: 120px; max-width: 120px; padding: 12px 9px; overflow-wrap: anywhere; }
  .editable-matrix tbody td { padding: 12px 9px; }
  .editable-matrix input,.editable-matrix select,.editable-matrix textarea { width: min(146px,calc(100vw - 208px)); min-height: 44px; }
  .editable-matrix .matrix-traffic select { width: min(146px,calc(100vw - 208px)); }
  .matrix-scroll:has(.editable-matrix) { scroll-padding-left: 129px; scroll-padding-right: 12px; }
  .editable-matrix .matrix-save { display: none; }
  .matrix-mobile-save { display: grid; gap: 7px; margin-top: 15px; }
  .matrix-mobile-save .button { min-height: 44px; width: 100%; padding: 9px 5px; font-size: 11px; }
  .matrix-mobile-save [data-row-status] { color: #52677b; font-size: 11px; line-height: 1.5; font-weight: 500; }
  .matrix-table tr[data-dirty=true] .matrix-mobile-save [data-row-status] { color: #805200; }
  .matrix-table tr[data-error=true] .matrix-mobile-save [data-row-status] { color: #a12c22; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .access-submit,.access-submit svg { transition: none; } .eagle-loader img,.eagle-loader::after { animation: none; } }
