/* Catálogo integrado de Laboratorios y Unidades Experimentales. */
.page-laboratorios .portal-main { background: #f3f7f5; }
.page-laboratorios .lab-integrated-hero { min-height: 430px; }
.page-laboratorios .lab-integrated-hero .institutional-hero__content { padding: 54px 0 76px !important; }
.page-laboratorios .lab-integrated-hero h1 { max-width: 820px !important; font-size: clamp(3rem, 3.8vw, 4.2rem) !important; line-height: .96 !important; }
.page-laboratorios .lab-integrated-hero h1 strong { white-space: nowrap; }
.page-laboratorios .lab-integrated-hero p { max-width: 610px !important; line-height: 1.65 !important; }
.page-laboratorios .lab-integrated-hero .institutional-hero__overlay { background: linear-gradient(90deg,rgba(3,28,24,.98) 0%,rgba(5,48,40,.88) 43%,rgba(5,37,33,.22) 78%,rgba(3,24,22,.4)),linear-gradient(0deg,rgba(3,29,24,.58),transparent 58%); }
.page-laboratorios .lab-integrated-hero .institutional-hero__actions a { display: inline-flex; align-items: center; gap: 10px; }

.laboratory-catalog { position: relative; z-index: 5; padding: 0 0 76px; background: radial-gradient(circle at 91% 8%,rgba(222,174,48,.1),transparent 23%),#f3f7f5; }
.lab-catalog-tabs.institutional-local-nav { position: relative; top: auto; z-index: 7; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 0; width: calc(100% - clamp(44px,8vw,152px)) !important; max-width: 1780px !important; margin: 0 auto -46px; padding: 0; overflow: visible; border: 1px solid #dce7e3; border-radius: 14px; background: #fff; box-shadow: 0 18px 45px rgba(10,53,42,.14); transform: translateY(-46px); }
.lab-catalog-tabs.institutional-local-nav a { min-width: 0; min-height: 116px; padding: 16px 28px; border: 0; border-right: 1px solid #e3ebe8; border-radius: 0; background: transparent; color: #18382f; box-shadow: none; }
.lab-catalog-tabs.institutional-local-nav a:first-child { border-radius: 13px 0 0 13px; }
.lab-catalog-tabs.institutional-local-nav a:last-child { border-right: 0; border-radius: 0 13px 13px 0; }
.lab-catalog-tabs.institutional-local-nav a:hover { transform: none; color: #0a725c; background: #f2faf7; }
.lab-catalog-tabs.institutional-local-nav a.active { color: #18382f; background: #fff8e7; box-shadow: inset 0 -3px #e9b432; }
.lab-catalog-tabs > a > i { display: grid; flex: 0 0 58px; place-items: center; width: 58px; height: 58px; border-radius: 16px; color: #14775f; background: #eaf5f1; font-size: 1.55rem; }
.lab-catalog-tabs a.active > i { color: #9a6b05; background: #fff0c9; }
.lab-catalog-tabs span,.lab-catalog-tabs b,.lab-catalog-tabs strong,.lab-catalog-tabs small { display: block; min-width: 0; }
.lab-catalog-tab__copy { flex: 1; }
.lab-catalog-tabs b { color: inherit; font-family: var(--upec-font-family-heading); font-size: clamp(1rem,1.08vw,1.18rem); font-weight: 850; letter-spacing: -.025em; line-height: 1.08; white-space: normal; }
.lab-catalog-tabs strong { margin-top: 5px; color: #143b31; font-family: var(--upec-font-family-heading); font-size: 1.82rem; font-weight: 850; letter-spacing: -.045em; line-height: .92; }
.lab-catalog-tabs small { margin-top: 4px; color: #75857f; font-size: .64rem; font-weight: 650; line-height: 1; text-transform: none; }

.lab-catalog-shell { width: calc(100% - clamp(44px,8vw,152px)) !important; max-width: 1780px !important; margin: 34px auto 0; }
.lab-catalog-heading { display: grid; grid-template-columns: minmax(0,1fr) minmax(340px,.7fr); align-items: end; gap: 50px; margin-bottom: 24px; }
.lab-catalog-heading span { color: #a57817; font-size: .68rem; font-weight: 850; letter-spacing: .16em; text-transform: uppercase; }
.lab-catalog-heading h2 { margin: 7px 0 0; color: #143b31; font-family: var(--upec-font-family-heading); font-size: clamp(2rem,3vw,3.4rem); font-weight: 800; letter-spacing: -.045em; line-height: 1; }
.lab-catalog-heading p { margin: 0; padding-left: 24px; border-left: 3px solid #e5b237; color: #667a73; font-size: .82rem; line-height: 1.65; }

.lab-catalog-filters { display: grid; grid-template-columns: 1fr 1fr 1fr 1.2fr auto; gap: 12px; align-items: end; padding: 17px; border: 1px solid #dbe6e2; border-radius: 15px; background: #fff; box-shadow: 0 10px 28px rgba(18,66,53,.07); }
.lab-catalog-filters label { position: relative; min-width: 0; margin: 0; }
.lab-catalog-filters label > span { display: block; margin: 0 0 6px 2px; color: #63756f; font-size: .62rem; font-weight: 750; }
.lab-catalog-filters select,.lab-catalog-filters input,.lab-sort-form select,.lab-page-size-form select { width: 100%; height: 42px; padding: 0 36px 0 13px; border: 1px solid #ccd9d4; border-radius: 8px; outline: 0; color: #29473e; background: #fbfdfc; font-family: inherit; font-size: .72rem; }
.lab-catalog-filters select:focus,.lab-catalog-filters input:focus,.lab-sort-form select:focus,.lab-page-size-form select:focus { border-color: #16856b; box-shadow: 0 0 0 3px rgba(22,133,107,.1); }
.lab-search > i { position: absolute; z-index: 2; left: 13px; bottom: 14px; color: #79918a; }
.lab-catalog-filters .lab-search input { padding-left: 37px; }
.lab-search .btn-clear-search { position: absolute; right: 9px; bottom: 7px; display: none; width: 28px; height: 28px; padding: 0; border: 0; color: #5f746d; background: transparent; font-size: 1.2rem; cursor: pointer; }
.lab-filter-submit { height: 42px; padding: 0 18px; border: 0; border-radius: 8px; color: #fff; background: #0d725b; font-size: .7rem; font-weight: 800; cursor: pointer; }
.lab-filter-reset { grid-column: 1/-1; justify-self: end; color: #60766f; font-size: .65rem; font-weight: 750; text-decoration: none; }

.lab-catalog-toolbar { display: flex; align-items: center; gap: 15px; min-height: 60px; padding: 0 4px; }
.lab-catalog-toolbar p { flex: 1; margin: 0; color: #657871; font-size: .69rem; }
.lab-view-switch { display: flex; align-items: center; gap: 5px; }
.lab-view-switch span { margin-right: 5px; color: #71827d; font-size: .65rem; }
.lab-view-switch button { display: grid; place-items: center; width: 34px; height: 34px; padding: 0; border: 1px solid #d5e0dc; border-radius: 7px; color: #60756e; background: #fff; cursor: pointer; }
.lab-view-switch button.active { border-color: #13785f; color: #fff; background: #13785f; }
.lab-sort-form select { width: 155px; height: 36px; background-color: #fff; }
.lab-page-size-form label { display: flex; align-items: center; gap: 7px; margin: 0; color: #71827d; font-size: .62rem; }
.lab-page-size-form select { width: 72px; height: 36px; padding-right: 26px; background-color: #fff; }
.lab-catalog-alert { margin: 0 0 18px; padding: 13px 16px; border-left: 3px solid #dba82f; color: #685725; background: #fff8e5; font-size: .75rem; }

.lab-catalog-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 18px; }
.lab-unit-card { --unit-accent:#18836a; --unit-accent-dark:#0c5947; --unit-soft:#e9f5f1; position: relative; display: flex; min-width: 0; min-height: 475px; flex-direction: column; overflow: hidden; border: 1px solid #d9e5e1; border-top: 4px solid var(--unit-accent); border-radius: 12px; color: #173c32; background: #fff; box-shadow: 0 12px 28px rgba(14,60,48,.09); transition: transform .25s ease,box-shadow .25s ease,border-color .25s ease; }
.lab-unit-card--observatorios { --unit-accent:#2766a8; --unit-accent-dark:#163f73; --unit-soft:#eaf1fb; }
.lab-unit-card--centro_experimental { --unit-accent:#7251a4; --unit-accent-dark:#4a3375; --unit-soft:#f1ecf9; }
.lab-unit-card--plantas_piloto { --unit-accent:#b47b13; --unit-accent-dark:#785007; --unit-soft:#fbf2df; }
.lab-unit-card:hover { transform: translateY(-6px); border-color: color-mix(in srgb,var(--unit-accent) 55%,#d9e5e1); box-shadow: 0 23px 48px rgba(14,60,48,.16); }
.lab-unit-card__visual { position: relative; height: 170px; flex: 0 0 170px; background: #102f29; }
.lab-unit-card__media { position: relative; display: block; width: 100%; height: 100%; overflow: hidden; clip-path: polygon(0 0,calc(100% - 22px) 0,100% 22px,100% 100%,0 100%); }
.lab-unit-card__media::after { content:""; position: absolute; inset: 0; background: linear-gradient(0deg,rgba(6,31,27,.48),transparent 55%); }
.lab-unit-card__media img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .65s ease,filter .3s ease; }
.lab-unit-card:hover .lab-unit-card__media img { transform: scale(1.045); filter: saturate(1.06); }
.lab-unit-card__type { position: absolute; z-index: 3; top: 0; left: 0; display: inline-flex; align-items: center; gap: 7px; max-width: calc(100% - 65px); min-height: 32px; padding: 0 20px 0 14px; clip-path: polygon(0 0,calc(100% - 12px) 0,100% 50%,calc(100% - 12px) 100%,0 100%); color: #fff; background: var(--unit-accent-dark); font-size: .61rem; font-weight: 850; letter-spacing: .04em; text-transform: uppercase; }
.lab-unit-card__type i { font-size: .78rem; }
.lab-unit-card__favorite { position: absolute; z-index: 4; top: 12px; right: 12px; display: grid; width: 35px; height: 35px; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.75); border-radius: 50%; color: #fff; background: rgba(4,29,24,.68); cursor: pointer; backdrop-filter: blur(7px); }
.lab-unit-card__favorite:hover { transform: scale(1.06); background: var(--unit-accent-dark); }
.lab-unit-card__favorite[aria-pressed="true"] { border-color: #f4c447; color: #f4c447; background: rgba(52,40,7,.82); }
.lab-unit-card__emblem { position: absolute; z-index: 5; bottom: -24px; left: 15px; display: grid; width: 54px; height: 54px; place-items: center; clip-path: polygon(25% 4%,75% 4%,100% 50%,75% 96%,25% 96%,0 50%); color: #fff; background: var(--unit-accent-dark); box-shadow: inset 0 0 0 4px color-mix(in srgb,var(--unit-accent) 55%,transparent); font-size: 1.3rem; }
.lab-unit-card__emblem::after { content:""; position:absolute; inset:7px; clip-path:inherit; border:1px solid color-mix(in srgb,var(--unit-accent) 70%,#fff); }
.lab-unit-card__body { position: relative; display: flex; flex: 1; flex-direction: column; padding: 34px 16px 14px; background: linear-gradient(135deg,transparent 76%,var(--unit-soft)); }
.lab-unit-card__body::before { content:""; position:absolute; top:13px; right:18px; width:80px; height:24px; opacity:.28; background: linear-gradient(90deg,transparent 0 14%,var(--unit-accent) 14% 16%,transparent 16% 40%,var(--unit-accent) 40% 42%,transparent 42% 70%,var(--unit-accent) 70% 72%,transparent 72%),linear-gradient(var(--unit-accent),var(--unit-accent)) right 6px top 11px/64px 1px no-repeat; }
.lab-unit-card h3 { min-height: 40px; margin: 0 0 7px; font-size: 1.05rem; font-weight: 850; letter-spacing: -.025em; line-height: 1.14; }
.lab-unit-card h3 a { color: #17382f; text-decoration: none; }
.lab-unit-card h3 a:hover { color: var(--unit-accent-dark); }
.lab-unit-card__description { display: -webkit-box; min-height: 42px; margin: 0 0 9px; overflow: hidden; color: #5f716b; font-size: .65rem; line-height: 1.48; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.lab-unit-card__facts { display: grid; gap: 6px; margin: 0 0 10px; }
.lab-unit-card__facts > div { display: grid; grid-template-columns: 96px minmax(0,1fr); gap: 7px; align-items: baseline; min-width: 0; }
.lab-unit-card__facts dt { display: flex; align-items: center; gap: 5px; margin: 0; color: var(--unit-accent-dark); font-size: .55rem; font-weight: 800; }
.lab-unit-card__facts dd { margin: 0; overflow: hidden; color: #677873; font-size: .57rem; line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; }
.lab-unit-card__tags { display: flex; gap: 5px; flex-wrap: wrap; min-height: 23px; margin: 0 0 9px; overflow: hidden; }
.lab-unit-card__tags span { padding: 5px 9px; border: 1px solid color-mix(in srgb,var(--unit-accent) 25%,#dfe8e5); border-radius: 99px; color: var(--unit-accent-dark); background: var(--unit-soft); font-size: .56rem; font-weight: 750; }
.lab-unit-card__mode { min-height: 29px; margin: 0 0 9px; color: #61736d; font-size: .59rem; line-height: 1.4; }
.lab-unit-card__mode i,.lab-unit-card__mode b { color: var(--unit-accent-dark); }
.lab-unit-card footer { display: flex; align-items: center; gap: 10px; margin-top: auto; padding-top: 10px; border-top: 1px solid #e4ebe8; }
.lab-unit-card__views { flex: 0 0 auto; color: #7b8c86; font-size: .55rem; font-weight: 700; }
.lab-unit-card__views i { color: var(--unit-accent); }
.lab-unit-card__cta { display: flex; min-height: 36px; flex: 1; align-items: center; justify-content: center; gap: 9px; border-radius: 7px; color: #fff; background: linear-gradient(100deg,var(--unit-accent-dark),var(--unit-accent)); font-size: .62rem; font-weight: 850; text-decoration: none; transition: filter .2s ease; }
.lab-unit-card__cta:hover { color:#fff; filter:brightness(1.1); }
.lab-catalog-grid.is-list { grid-template-columns: 1fr; }
.lab-catalog-grid.is-list .lab-unit-card { display: grid; grid-template-columns: 340px 1fr; min-height: 300px; }
.lab-catalog-grid.is-list .lab-unit-card__visual { width: 100%; height: 100%; min-height: 300px; }
.lab-catalog-grid.is-list .lab-unit-card__body { min-height: 300px; }
.lab-catalog-grid.is-list .lab-unit-card h3,.lab-catalog-grid.is-list .lab-unit-card__description { min-height: 0; }
.lab-catalog-empty { grid-column: 1/-1; padding: 65px 24px; border: 1px dashed #bfd2cb; border-radius: 16px; color: #697c75; background: #fff; text-align: center; }
.lab-catalog-empty i { color: #19836a; font-size: 2.5rem; }.lab-catalog-empty h3 { margin: 15px 0 8px; color: #173d33; }.lab-catalog-empty p { margin: 0; }
.lab-pagination { display: flex; flex-direction: column; align-items: center; gap: 10px; margin-top: 32px; }
.lab-pagination > p { margin: 0; color: #73837e; font-size: .62rem; }
.lab-pagination > div,.lab-pagination__numbers { display: flex; align-items: center; justify-content: center; gap: 7px; }
.lab-pagination a,.lab-pagination .is-current,.lab-pagination .is-disabled { display: grid; place-items: center; min-width: 36px; height: 36px; padding: 0 9px; border: 1px solid #d4e0dc; border-radius: 50%; color: #34594f; background: #fff; box-shadow: 0 5px 14px rgba(18,64,52,.07); font-size: .68rem; font-weight: 800; text-decoration: none; transition: transform .2s ease,border-color .2s ease,background .2s ease; }
.lab-pagination a:hover { transform: translateY(-2px); border-color: #158168; color: #126c57; background: #eef8f4; }
.lab-pagination .is-current { border-color: #11775f; color: #fff; background: linear-gradient(145deg,#0c5b49,#16876c); box-shadow: 0 7px 17px rgba(16,112,89,.22); }
.lab-pagination .is-disabled { color: #b9c4c0; background: #f7f9f8; box-shadow: none; cursor: not-allowed; }
.lab-pagination .is-ellipsis { display: grid; min-width: 25px; height: 36px; place-items: center; color: #75857f; font-weight: 800; }
.lab-pagination__mobile-count { display: none; }
.page-laboratorios .portal-footer { width: 100%; max-width: none; margin: 0; border-radius: 0; }

@media (max-width: 1279px) {
  .lab-catalog-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
}
@media (max-width: 1100px) {
  .lab-catalog-tabs.institutional-local-nav { grid-template-columns: repeat(2,1fr); margin-bottom: -34px; transform: translateY(-34px); }
  .lab-catalog-tabs.institutional-local-nav a:nth-child(2) { border-right: 0; }
  .lab-catalog-tabs.institutional-local-nav a:nth-child(-n+2) { border-bottom: 1px solid #e3ebe8; }
  .lab-catalog-heading { grid-template-columns: 1fr; gap: 16px; }
  .lab-catalog-heading p { max-width: 720px; }
  .lab-catalog-filters { grid-template-columns: 1fr 1fr; }
  .lab-filter-submit { width: max-content; }
  .lab-filter-reset { grid-column: auto; align-self: center; }
  .lab-catalog-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 767.98px) {
  .page-laboratorios .lab-integrated-hero { min-height: 590px; }
  .page-laboratorios .lab-integrated-hero .institutional-hero__content { padding: 80px 0 92px !important; }
  .page-laboratorios .lab-integrated-hero h1 { font-size: clamp(2.6rem,12vw,3.5rem) !important; }
  .page-laboratorios .lab-integrated-hero h1 strong { white-space: normal; }
  .lab-catalog-tabs.institutional-local-nav,.lab-catalog-shell { width: calc(100% - 28px) !important; }
  .lab-catalog-tabs.institutional-local-nav { grid-template-columns: 1fr; margin-bottom: -26px; transform: translateY(-26px); }
  .lab-catalog-tabs.institutional-local-nav a { min-height: 84px; padding: 11px 15px; border-right: 0; border-bottom: 1px solid #e3ebe8; border-radius: 0 !important; }
  .lab-catalog-tabs.institutional-local-nav a:first-child { border-radius: 13px 13px 0 0 !important; }
  .lab-catalog-tabs.institutional-local-nav a:last-child { border-bottom: 0; border-radius: 0 0 13px 13px !important; }
  .lab-catalog-tabs > a > i { flex-basis: 46px; width: 46px; height: 46px; border-radius: 13px; font-size: 1.25rem; }
  .lab-catalog-tabs b { font-size: 1rem; }
  .lab-catalog-tabs strong { font-size: 1.45rem; }
  .lab-catalog-shell { margin-top: 30px; }
  .lab-catalog-filters,.lab-catalog-grid { grid-template-columns: 1fr; }
  .lab-filter-submit { width: 100%; }
  .lab-filter-reset { justify-self: start; }
  .lab-catalog-toolbar { flex-wrap: wrap; padding: 14px 2px; }
  .lab-catalog-toolbar p { flex-basis: 100%; }
  .lab-sort-form { margin-left: auto; }
  .lab-page-size-form { order: 4; }
  .lab-catalog-grid.is-list .lab-unit-card { display: block; }
  .lab-unit-card { min-height: 0; }
  .lab-unit-card__visual { height: 195px; flex-basis: 195px; }
  .lab-catalog-grid.is-list .lab-unit-card__visual { height: 195px; min-height: 0; }
  .lab-catalog-grid.is-list .lab-unit-card__body { min-height: 0; }
  .lab-pagination__numbers,.lab-pagination__edge { display: none !important; }
  .lab-pagination__mobile-count { display: grid; min-width: 64px; height: 36px; place-items: center; color: #214a3f; font-size: .68rem; font-weight: 800; }
}
@media (prefers-reduced-motion: reduce) { .lab-unit-card,.lab-unit-card__media img { transition: none; } }
