:root{--navy:#062f68;--blue:#0759b5;--blue-2:#0a73d8;--ink:#092b5c;--muted:#5b6d86;--line:#dce6f1;--pale:#edf6ff;--white:#fff;--shadow:0 14px 32px rgba(8,49,101,.08);--radius:10px;--shell:1190px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:#fff;font-family:Inter,Segoe UI,Arial,sans-serif;font-size:16px;line-height:1.5}.shell{width:min(calc(100% - 64px),var(--shell));margin-inline:auto}.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:absolute;left:16px;top:-50px;background:#fff;color:var(--navy);padding:9px 14px;z-index:20}.skip-link:focus{top:10px}.site-header{background:#fff;border-bottom:1px solid #eef3f9;position:relative;z-index:10}.header-inner{min-height:74px;display:flex;align-items:center;gap:28px}.brand{align-items:center;display:inline-flex;gap:10px;color:var(--navy);text-decoration:none;flex-shrink:0}.brand-mark{width:46px;height:37px;display:inline-flex;align-items:end;gap:3px;position:relative}.brand-mark:before{content:"";position:absolute;inset:0 4px 2px 0;border-radius:50% 50% 0 0;background:linear-gradient(90deg,#0b5eb7 0 48%,transparent 49%)}.brand-mark span{display:block;background:#0755aa;width:10px;position:relative;border-radius:1px 1px 0 0;z-index:1}.brand-mark span:nth-child(1){height:21px;margin-left:7px}.brand-mark span:nth-child(2){height:34px}.brand-mark span:nth-child(3){height:27px}.brand-copy{display:flex;flex-direction:column;line-height:1}.brand-copy strong{font-size:24px;letter-spacing:-1px}.brand-copy small{font-size:6.5px;text-transform:uppercase;letter-spacing:.25px;margin-top:4px}.main-navigation{margin-left:auto}.main-navigation ul{display:flex;gap:28px;list-style:none;margin:0;padding:0}.main-navigation a{color:var(--ink);font-size:14px;text-decoration:none;padding:27px 0 24px;display:block;border-bottom:2px solid transparent}.main-navigation a:hover,.main-navigation .active>a{color:var(--blue);border-color:var(--blue)}.nav-toggle{display:none}.button{border:0;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;font:600 14px inherit;text-decoration:none;min-height:42px;padding:10px 18px;transition:transform .2s,box-shadow .2s,background .2s}.button:hover{transform:translateY(-1px)}.button-primary{background:var(--blue);color:#fff;box-shadow:0 8px 14px rgba(8,89,181,.18)}.button-primary:hover{background:#054d9e}.button-outline{border:1px solid #bcd2eb;color:var(--blue);background:#fff}.button-light{color:var(--navy);background:#fff}.button-header{font-size:12px;min-height:39px;padding:8px 15px}.microsoft-icon{display:grid;grid-template-columns:repeat(2,8px);grid-template-rows:repeat(2,8px);gap:2px}.microsoft-icon i:nth-child(1){background:#f1511b}.microsoft-icon i:nth-child(2){background:#80cc28}.microsoft-icon i:nth-child(3){background:#00adef}.microsoft-icon i:nth-child(4){background:#fbbc09}.button-icon{font-size:21px;line-height:0}.hero{background:linear-gradient(108deg,#eff8ff 0%,#eaf5ff 63%,#d7ebfb 100%);overflow:hidden}.hero-grid{min-height:355px;display:grid;grid-template-columns:1fr 46%;align-items:center}.hero-copy{padding:36px 0 34px;position:relative;z-index:1}.eyebrow{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#4a6f9f;font-weight:700;margin:0 0 10px}.hero h1{font-size:42px;line-height:1.1;margin:0 0 5px;letter-spacing:-1.6px}.hero-subtitle{font-size:21px;font-weight:700;margin:0 0 7px}.hero-description{max-width:520px;color:#243f64;margin:0 0 16px;font-size:14px}.hero-search{background:#fff;border:1px solid #bfd0e3;border-radius:8px;display:flex;max-width:590px;overflow:hidden;box-shadow:0 4px 10px rgba(23,71,121,.07)}.hero-search input{flex:1;border:0;min-width:0;padding:13px 10px;font:14px inherit;color:var(--ink);outline:0}.search-icon{display:inline-block;width:16px;height:16px;border:2px solid var(--blue);border-radius:50%;position:relative;margin:13px 1px 13px 16px;flex-shrink:0}.search-icon:after{content:"";height:7px;width:2px;background:var(--blue);position:absolute;right:-4px;bottom:-5px;transform:rotate(-45deg)}.search-icon.small{margin:0 2px 0 0;width:13px;height:13px;border-color:#fff}.search-icon.small:after{background:#fff}.hero-search .button{border-radius:6px;margin:4px;padding:7px 27px;min-height:36px}.search-hints{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:7px 0 15px;font-size:11px;color:#526783}.search-hints button{border:1px solid #9fc5e8;border-radius:14px;background:#fff;color:var(--blue);font-size:11px;padding:3px 12px;cursor:pointer}.hero-actions{display:flex;gap:12px;flex-wrap:wrap}.hero-art{height:100%;min-height:355px;position:relative;display:flex;justify-content:center;align-items:end}.hero-art>img{width:min(100%,590px);max-height:350px;object-fit:contain;object-position:center bottom}.hero-motto{position:absolute;right:0;top:73px;display:flex;flex-direction:column;color:#33537b;font-size:13px;line-height:1.5}.hero-motto strong{font-weight:500}.hero-motto span{max-width:112px;margin-top:2px}.hero-motto i{display:block;width:23px;height:3px;background:var(--blue);margin-top:8px}.section{padding:30px 0}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:20px}.section-heading h2{font-size:23px;line-height:1.2;margin:0 0 3px;letter-spacing:-.5px}.section-heading p{margin:0;color:var(--muted);font-size:13px}.text-link{color:var(--blue);font-size:12px;font-weight:700;text-decoration:none;white-space:nowrap}.text-link span{font-size:18px;vertical-align:-1px;margin-left:4px}.areas-section{padding-bottom:15px}.area-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.area-card{min-height:74px;border:1px solid var(--line);border-radius:8px;display:flex;align-items:center;gap:12px;padding:12px 10px;color:var(--ink);text-decoration:none;font-size:12px;position:relative;background:#fff;transition:border-color .2s,box-shadow .2s}.area-card:hover{border-color:#89b8e7;box-shadow:var(--shadow)}.area-icon{width:34px;color:var(--blue);font-size:24px;line-height:1;text-align:center;flex-shrink:0;font-weight:700}.card-arrow{margin-left:auto;color:#48719d;font-size:20px}.featured-section{padding-top:22px}.book-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.book-card{border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#fff;box-shadow:0 3px 9px rgba(9,45,84,.02)}.book-cover{display:block;height:170px;padding:10px 30px 0;background:#f6f9fc;text-decoration:none}.book-cover img{width:100%;height:160px;display:block;object-fit:contain}.cover-fallback{height:160px;display:flex;align-items:center;justify-content:center;text-align:center;padding:12px;color:#fff;font-weight:800;font-size:18px;line-height:1.1;box-shadow:4px 5px 0 rgba(0,0,0,.08);background-image:linear-gradient(140deg,transparent 50%,rgba(255,255,255,.15) 50%)}.cover-blue{background-color:#0d4b96}.cover-yellow{background-color:#e9b936;color:#143862}.cover-navy{background-color:#102f64}.cover-ocean{background-color:#0a6b92}.cover-gold{background-color:#d59623}.book-card-body{padding:11px 12px 12px}.book-card h3,.mini-resource h3{font-size:12px;line-height:1.25;margin:0 0 3px}.book-card h3 a,.mini-resource h3 a{color:var(--ink);text-decoration:none}.book-card p{font-size:10px;color:var(--muted);margin:0 0 6px}.tag{display:inline-flex;background:#eef6ff;color:#2765a2;border-radius:11px;padding:3px 8px;font-size:9px;margin-bottom:10px}.book-link{height:29px;border:1px solid #b6d0e9;border-radius:5px;color:var(--blue);display:flex;align-items:center;justify-content:center;gap:5px;text-decoration:none;font-size:10px;font-weight:700}.book-link span{font-size:17px}.split-section{padding-top:5px;padding-bottom:28px}.split-grid{display:grid;grid-template-columns:1fr 1fr;gap:34px}.popular-column{border-left:1px solid var(--line);padding-left:34px}.section-heading.compact{margin-bottom:14px}.section-heading.compact h2{font-size:21px}.resource-strip{display:grid;grid-template-columns:24px 1fr 24px;align-items:center;gap:6px}.resource-track{display:flex;gap:14px;overflow:hidden;scroll-behavior:smooth}.carousel-button{border:1px solid #b7d2ed;background:#fff;color:var(--blue);border-radius:50%;height:24px;width:24px;padding:0;cursor:pointer;font-size:21px;line-height:18px}.mini-resource{min-width:100px;flex:1}.mini-cover{height:128px;display:block;background:#f0f5fa;text-decoration:none}.mini-cover img{height:100%;width:100%;object-fit:cover}.mini-cover .cover-fallback{height:100%;font-size:13px}.mini-resource h3{margin-top:8px;font-size:11px}.mini-resource time,.views{font-size:9px;color:var(--muted)}.views{display:block;margin-top:4px}.empty-state{color:var(--muted);font-size:12px;margin:18px 0}.filter-band{background:#e9f5ff;padding:27px 0}.filter-grid{display:grid;grid-template-columns:38% 1fr;gap:30px;align-items:center}.filter-intro{display:flex;gap:17px;align-items:center}.filter-symbol{font-size:58px;color:var(--blue);line-height:1}.filter-intro h2{font-size:21px;margin:0 0 4px}.filter-intro p{font-size:12px;color:var(--muted);margin:0}.filter-form{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}.filter-form label{font-size:10px;font-weight:700}.filter-form select{display:block;width:100%;margin-top:4px;border:1px solid #bdcee1;border-radius:6px;background:#fff;color:#64758b;padding:8px;font:11px inherit}.filter-form .button{font-size:11px;min-height:36px}.site-footer{color:#fff}.footer-cta{background:#034281;max-width:none;padding:24px max(32px,calc((100% - var(--shell))/2));display:flex;align-items:center;gap:22px}.footer-cta-icon{font-size:54px;line-height:1}.footer-cta h2{font-size:21px;margin:0 0 3px}.footer-cta p{font-size:12px;margin:0;opacity:.9}.footer-cta .button{margin-left:auto;min-width:225px}.footer-main{background:#072a58;padding:26px 0 10px}.footer-grid{display:grid;grid-template-columns:1.8fr 1fr .65fr;gap:50px}.brand-inverse{color:#fff}.brand-inverse .brand-mark:before,.brand-inverse .brand-mark span{background:#fff}.footer-brand>p{font-size:11px;color:#c9d8e8;margin:16px 0 0}.footer-grid h2{font-size:13px;margin:0 0 9px}.footer-links{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:5px 20px}.footer-links a{color:#d4e2f1;font-size:11px;text-decoration:none}.social-links{display:flex;gap:12px}.social-links a{border:1px solid #85a9cf;border-radius:50%;height:27px;width:27px;display:flex;align-items:center;justify-content:center;color:#fff;text-decoration:none;font-size:12px}.footer-bottom{border-top:1px solid rgba(255,255,255,.2);margin-top:22px;padding-top:10px;display:flex;justify-content:space-between;color:#bdd0e6;font-size:10px}.footer-bottom a{color:#bdd0e6;margin-left:20px;text-decoration:none}@media(max-width:1000px){.header-inner{gap:16px}.main-navigation ul{gap:15px}.button-header{font-size:0;padding:8px 11px}.button-header .microsoft-icon{margin:0}.hero h1{font-size:34px}.area-grid,.book-grid{grid-template-columns:repeat(3,1fr)}.area-card{min-height:65px}.filter-grid{grid-template-columns:1fr}.filter-form{max-width:700px}.hero-art{opacity:.8}}@media(max-width:700px){.shell{width:min(calc(100% - 36px),var(--shell))}.header-inner{min-height:64px}.brand-copy strong{font-size:20px}.brand-copy small{font-size:5.5px}.brand-mark{transform:scale(.82);transform-origin:left center;margin-right:-7px}.nav-toggle{display:flex;margin-left:auto;border:0;background:none;width:35px;height:30px;padding:5px;flex-direction:column;justify-content:space-between;cursor:pointer}.nav-toggle span:not(.sr-only){height:2px;background:var(--navy);width:25px}.main-navigation{display:none;position:absolute;left:0;right:0;top:64px;background:#fff;border-bottom:1px solid var(--line);padding:4px 18px 15px;box-shadow:var(--shadow)}.main-navigation.open{display:block}.main-navigation ul{display:block}.main-navigation a{padding:10px 0}.button-header{display:none}.hero-grid{display:block;min-height:0}.hero-copy{padding:29px 0 10px}.hero h1{font-size:32px}.hero-subtitle{font-size:18px}.hero-description{font-size:13px}.hero-art{min-height:220px;max-height:250px;margin-top:-4px}.hero-art>img{max-height:250px}.hero-motto{right:8px;top:55px;font-size:10px}.section{padding:25px 0}.section-heading{align-items:start;flex-direction:column;gap:7px}.area-grid,.book-grid{grid-template-columns:repeat(2,1fr);gap:10px}.area-card{font-size:11px;padding:9px;gap:7px}.area-icon{width:26px;font-size:19px}.book-cover{height:155px;padding:8px 18px 0}.book-cover img,.cover-fallback{height:147px}.cover-fallback{font-size:14px}.book-card-body{padding:9px}.split-grid{display:block}.popular-column{border-left:0;border-top:1px solid var(--line);padding:26px 0 0;margin-top:28px}.resource-track{overflow-x:auto}.mini-resource{min-width:105px}.filter-intro{align-items:start}.filter-symbol{font-size:43px}.filter-form{grid-template-columns:repeat(2,1fr)}.filter-form .button{grid-column:1/-1}.footer-cta{padding:23px 18px;display:grid;grid-template-columns:44px 1fr}.footer-cta-icon{font-size:38px}.footer-cta .button{grid-column:1/-1;margin:8px 0 0;width:100%}.footer-grid{display:block}.footer-grid>div+div{margin-top:24px}.footer-bottom{display:block;line-height:2}.footer-bottom span:last-child{display:block}.footer-bottom a{margin:0 14px 0 0}}

/* Codex: responsive resource/media layout for Omeka item pages. */
.site-main {
    width: min(calc(100% - 64px), var(--shell));
    margin-inline: auto;
    padding: 36px 0 64px;
}

.resource-access-prompt {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin: 0 0 28px;
    padding: 16px 20px;
    border: 1px solid #b9d7f2;
    border-left: 5px solid var(--blue);
    border-radius: 10px;
    background: var(--pale);
}

.resource-access-prompt-copy {
    display: grid;
    gap: 2px;
}

.resource-access-prompt-copy strong {
    color: var(--navy);
    font-size: 15px;
}

.resource-access-prompt-copy span {
    color: var(--muted);
    font-size: 13px;
}

.site-main h2 {
    font-size: 32px;
    line-height: 1.2;
    margin: 0 0 8px;
}

.site-main h3 {
    font-size: 16px;
    color: var(--muted);
    margin: 0 0 22px;
}

.site-main .media-embeds {
    width: 100%;
    margin: 24px 0 30px;
}

.site-main .media-render.file {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    background: #f6f9fc;
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 16px;
    overflow: hidden;
}

.site-main .media-render.file a {
    display: block;
    max-width: 100%;
    line-height: 0;
}

.site-main .media-render.file .pdf-cover-link {
    position: relative;
}

.pdf-cover-hint {
    position: absolute;
    left: 50%;
    bottom: 16px;
    transform: translateX(-50%);
    width: max-content;
    max-width: calc(100% - 24px);
    padding: 9px 14px;
    border-radius: 999px;
    background: rgba(6, 47, 104, .94);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.2;
    text-align: center;
    box-shadow: 0 6px 16px rgba(6, 47, 104, .22);
}

.pdf-reader {
    margin: 28px 0 34px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: #f6f9fc;
    overflow: hidden;
}

.pdf-reader-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 14px 18px;
    background: var(--pale);
    border-bottom: 1px solid var(--line);
}

.pdf-reader-heading strong {
    color: var(--navy);
    font-size: 16px;
}

.pdf-reader-heading span {
    color: var(--muted);
    font-size: 12px;
}

.pdf-reader iframe {
    display: block;
    width: 100%;
    height: min(78vh, 900px);
    min-height: 620px;
    border: 0;
    background: #fff;
}

.site-main .media-render.file img {
    display: block;
    width: auto;
    max-width: 100%;
    height: auto;
    object-fit: contain;
}

.site-main dl {
    display: grid;
    grid-template-columns: minmax(120px, 180px) 1fr;
    gap: 0;
    border-top: 1px solid var(--line);
    margin: 0;
}

.site-main .property {
    display: contents;
}

.site-main dt,
.site-main dd {
    padding: 12px 0;
    border-bottom: 1px solid var(--line);
    margin: 0;
}

.site-main dt {
    font-weight: 700;
    color: var(--muted);
}

.site-main dd {
    color: var(--ink);
}

@media (max-width: 700px) {
    .site-main {
        width: min(calc(100% - 36px), var(--shell));
        padding: 26px 0 44px;
    }

    .resource-access-prompt {
        align-items: stretch;
        flex-direction: column;
        gap: 12px;
        padding: 15px;
    }

    .resource-access-prompt .button {
        width: 100%;
    }

    .site-main h2 {
        font-size: 25px;
    }

    .site-main .media-render.file {
        padding: 8px;
    }

    .pdf-cover-hint {
        bottom: 10px;
        font-size: 11px;
        padding: 8px 11px;
    }

    .pdf-reader {
        margin-top: 22px;
    }

    .pdf-reader-heading {
        align-items: flex-start;
        flex-direction: column;
        gap: 2px;
        padding: 12px 14px;
    }

    .pdf-reader iframe {
        height: 75vh;
        min-height: 500px;
    }

    .site-main dl {
        display: block;
    }

    .site-main dt {
        padding-bottom: 3px;
        border-bottom: 0;
    }

    .site-main dd {
        padding-top: 0;
        margin-bottom: 8px;
    }
}

.session-indicator {
    display: grid;
    gap: 2px;
    min-width: 190px;
    padding: 9px 12px;
    border: 1px solid rgba(255,255,255,.25);
    border-radius: 12px;
    color: #fff;
    font-size: 12px;
}

.session-indicator-label {
    color: #b7e4d2;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.session-indicator small { color: rgba(255,255,255,.75); overflow-wrap: anywhere; }
.session-indicator a { color: #fff; font-size: 11px; text-decoration: underline; }

/* Codex: the authenticated session is displayed on the light site header. */
.site-header .session-indicator {
    min-width: 210px;
    padding: 8px 12px;
    border: 1px solid #c8d9ec;
    border-radius: 10px;
    background: #f7fbff;
    color: var(--ink);
}
.site-header .session-indicator-label { color: #16806c; }
.site-header .session-indicator strong { color: var(--ink); font-size: 12px; }
.site-header .session-indicator small { color: var(--muted); }
.site-header .session-indicator a { color: var(--blue); }

.pdf-viewer-launch,
.view-only-reader {
    margin: 24px auto;
    max-width: 980px;
    border: 1px solid #d9e4e1;
    border-radius: 18px;
    background: #f7fbfa;
    box-shadow: 0 12px 32px rgba(16, 70, 62, .08);
}

.pdf-viewer-launch {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 22px;
}

.pdf-viewer-launch strong { display: block; color: #173e38; overflow-wrap: anywhere; }
.pdf-viewer-launch p { margin: 7px 0 0; color: #55716c; }
.eyebrow { color: #16806c; font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }

.view-only-reader { padding: 24px; }
.view-only-reader-header,
.view-only-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.view-only-reader-header { border-bottom: 1px solid #d9e4e1; padding-bottom: 18px; }
.view-only-reader h1 { margin: 4px 0; color: #173e38; }
.view-only-reader-header p { margin: 0; color: #55716c; }
.view-only-status { color: #16806c; font-size: 12px; font-weight: 700; }
.view-only-toolbar { justify-content: center; padding: 16px 0; }
.view-only-toolbar button { border: 1px solid #a9c7c0; border-radius: 8px; background: #fff; color: #173e38; cursor: pointer; padding: 8px 13px; }
.view-only-toolbar button:disabled { cursor: not-allowed; opacity: .45; }
.view-only-stage { display: flex; justify-content: center; overflow: auto; min-height: 420px; padding: 18px; background: #dfe9e6; border-radius: 12px; }
.view-only-stage img { display: block; max-width: 100%; height: auto; user-select: none; }
.view-only-notice { margin: 14px 0 0; color: #55716c; font-size: 12px; text-align: center; }

@media (max-width: 700px) {
    .session-indicator { min-width: 0; max-width: 100%; }
    .pdf-viewer-launch,
    .view-only-reader-header { align-items: stretch; flex-direction: column; }
    .view-only-reader { padding: 14px; }
    .view-only-toolbar { flex-wrap: wrap; }
}

/* Codex: Spanish search results presentation. */
body.index.search .site-main h1 {
    font-size: 32px;
    line-height: 1.2;
    margin: 0 0 26px;
}

.search-empty {
    color: var(--muted);
    border: 1px solid var(--line);
    border-radius: 10px;
    background: #f6f9fc;
    padding: 20px 24px;
    margin-bottom: 36px;
}

.search-empty p {
    margin: 0;
}

.search-empty p + p {
    margin-top: 6px;
    font-size: 14px;
}

.search-results {
    margin: 0 0 30px;
}

.search-results h2 {
    font-size: 22px;
    margin-bottom: 12px;
}

.search-results ul {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 12px;
    list-style: none;
    margin: 0 0 12px;
    padding: 0;
}

.search-results li {
    min-height: 52px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    padding: 12px;
}

.search-results li a {
    color: var(--blue);
    font-weight: 700;
    text-decoration: none;
}

.search-results li img {
    display: block;
    width: 70px;
    height: 70px;
    object-fit: cover;
    margin-bottom: 8px;
}

.search-results > a {
    color: var(--blue);
    font-size: 13px;
    font-weight: 700;
}

@media (max-width: 700px) {
    body.index.search .site-main h1 {
        font-size: 25px;
    }

    .search-results ul {
        grid-template-columns: 1fr;
    }
}

/* Codex: visual resource browser for the Biblioteca ITSLA theme. */
body.item.resource.browse .site-main {
    padding-top: 34px;
}

body.item.resource.browse .site-main > h2 {
    font-size: 32px;
    line-height: 1.2;
    margin: 0 0 5px;
}

.browse-kicker {
    color: var(--muted);
    margin: 0 0 22px;
}

body.item.resource.browse .search-filters {
    margin: 0 0 18px;
}

body.item.resource.browse .browse-controls {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px 18px;
    padding: 14px 16px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: #f6f9fc;
    margin-bottom: 24px;
}

body.item.resource.browse .browse-count {
    margin-right: auto;
}

body.item.resource.browse .browse-controls .pagination,
body.item.resource.browse .browse-controls form,
body.item.resource.browse .browse-controls select,
body.item.resource.browse .browse-controls button {
    font: inherit;
}

body.item.resource.browse .browse-controls select,
body.item.resource.browse .browse-controls input {
    min-height: 36px;
    border: 1px solid #bdcee1;
    border-radius: 6px;
    background: #fff;
    color: var(--ink);
    padding: 7px 9px;
}

body.item.resource.browse .browse-controls button {
    min-height: 36px;
    border: 0;
    border-radius: 6px;
    background: var(--blue);
    color: #fff;
    padding: 7px 13px;
    cursor: pointer;
}

/* Codex: clear previous/next controls for student resource browsing. */
body.item.resource.browse .browse-controls .pagination-buttons {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

body.item.resource.browse .browse-controls .pagination-buttons .button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-width: 42px;
    min-height: 36px;
    padding: 7px 11px;
    border: 1px solid #b9cde3;
    border-radius: 7px;
    background: #fff;
    color: var(--blue);
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
}

body.item.resource.browse .browse-controls .pagination-buttons .button::before {
    font-size: 18px;
    font-weight: 400;
    line-height: .7;
}

body.item.resource.browse .browse-controls .pagination-buttons .previous::before { content: "←"; }
body.item.resource.browse .browse-controls .pagination-buttons .next::before { content: "→"; }
body.item.resource.browse .browse-controls .pagination-buttons .previous::after { content: "Anterior"; }
body.item.resource.browse .browse-controls .pagination-buttons .next::after { content: "Siguiente"; }
body.item.resource.browse .browse-controls .pagination-buttons .button a { color: inherit; text-decoration: none; }
body.item.resource.browse .browse-controls .pagination-buttons .button:not(.inactive):hover {
    border-color: var(--blue);
    background: #f3f8ff;
}
body.item.resource.browse .browse-controls .pagination-buttons .button.inactive {
    cursor: not-allowed;
    opacity: .42;
}

body.item.resource.browse .advanced-search {
    color: var(--blue);
    font-weight: 700;
    text-decoration: none;
}

.resource-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
    list-style: none;
    margin: 0;
    padding: 0;
}

.resource-card {
    display: flex;
    min-width: 0;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 3px 10px rgba(9, 45, 84, .05);
}

.resource-card-cover {
    display: flex;
    height: 245px;
    align-items: center;
    justify-content: center;
    padding: 14px;
    background: #f6f9fc;
}

.resource-card-image {
    display: block;
    width: 100%;
    height: 100%;
    line-height: 0;
    text-align: center;
}

.resource-card-image img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.resource-card-placeholder {
    display: flex;
    width: 125px;
    height: 175px;
    align-items: center;
    justify-content: center;
    padding: 14px;
    color: #fff;
    background: linear-gradient(145deg, #0b5eb7, #062f68);
    box-shadow: 7px 8px 0 rgba(6, 47, 104, .12);
    font-weight: 800;
    letter-spacing: .08em;
}

.resource-card-body {
    display: flex;
    flex: 1;
    flex-direction: column;
    padding: 14px;
}

.resource-card h3 {
    font-size: 15px;
    line-height: 1.3;
    margin: 0 0 7px;
}

.resource-card h3 a {
    color: var(--ink);
    text-decoration: none;
}

.resource-card h3 a:hover {
    color: var(--blue);
}

.resource-card-author,
.resource-card-description {
    display: -webkit-box;
    overflow: hidden;
    color: var(--muted);
    font-size: 12px;
    line-height: 1.45;
    margin: 0 0 8px;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
}

.resource-card-author {
    -webkit-line-clamp: 2;
}

.resource-card-tag {
    align-self: flex-start;
    margin-bottom: 10px;
    border-radius: 12px;
    background: #eef6ff;
    color: #2765a2;
    font-size: 10px;
    padding: 3px 8px;
}

.resource-card-action {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-top: auto;
    padding-top: 12px;
    border-top: 1px solid var(--line);
}

.resource-card-action a {
    color: var(--blue);
    font-size: 12px;
    font-weight: 700;
    text-decoration: none;
}

.resource-card-action span {
    color: var(--blue);
    font-size: 18px;
}

.browse-pagination-bottom {
    margin-top: 26px;
}

@media (max-width: 1000px) {
    .resource-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 700px) {
    body.item.resource.browse .site-main > h2 {
        font-size: 26px;
    }

    body.item.resource.browse .browse-controls {
        align-items: stretch;
        flex-direction: column;
    }

    body.item.resource.browse .browse-count {
        margin-right: 0;
    }

    .resource-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
    }

    .resource-card-cover {
        height: 175px;
        padding: 9px;
    }

    .resource-card-body {
        padding: 10px;
    }

    .resource-card h3 {
        font-size: 12px;
    }

    .resource-card-author,
    .resource-card-description {
        font-size: 10px;
    }
}

/* Codex: professional responsive protected reader. */
.view-only-reader {
    --reader-navy: #092b5c;
    --reader-blue: #0759b5;
    --reader-ink: #183b68;
    --reader-muted: #6c7f96;
    --reader-line: #dbe5f0;
    --reader-surface: #f4f7fb;
    width: 100%;
    max-width: 1180px;
    margin: 0 auto;
    overflow: hidden;
    border: 1px solid #d8e3ef;
    border-radius: 22px;
    background: #fff;
    box-shadow: 0 20px 60px rgba(9, 43, 92, .12);
}

.view-only-reader-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    min-height: 42px;
    padding: 0 22px;
    border-bottom: 1px solid rgba(255, 255, 255, .14);
    background: var(--reader-navy);
}

.view-only-back,
.view-only-brand {
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    text-decoration: none;
}

.view-only-back {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    opacity: .9;
}

.view-only-back:hover { opacity: 1; text-decoration: underline; }
.view-only-back span:first-child { font-size: 18px; line-height: 1; }
.view-only-brand { letter-spacing: .04em; opacity: .72; }

.view-only-reader-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 17px 26px 15px;
    border-bottom: 1px solid var(--reader-line);
    background: linear-gradient(135deg, #fff 0%, #f8fbff 100%);
}

.view-only-reader-heading { min-width: 0; }
.view-only-reader .eyebrow { color: var(--reader-blue); }
.view-only-reader h1 {
    margin: 3px 0 2px;
    color: var(--reader-navy);
    font-size: clamp(24px, 2.5vw, 32px);
    letter-spacing: -.8px;
    line-height: 1.08;
}
.view-only-reader-header p {
    max-width: 720px;
    margin: 0;
    overflow-wrap: anywhere;
    color: var(--reader-muted);
    font-size: 14px;
}

.view-only-status {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    gap: 8px;
    padding: 8px 12px;
    border: 1px solid #bce4d2;
    border-radius: 999px;
    background: #effbf5;
    color: #14744a;
    font-size: 11px;
    font-weight: 800;
    white-space: nowrap;
}
.view-only-status-dot { width: 7px; height: 7px; border-radius: 50%; background: #22a866; box-shadow: 0 0 0 4px rgba(34, 168, 102, .13); }

.view-only-toolbar {
    position: sticky;
    top: 0;
    z-index: 4;
    display: grid;
    grid-template-columns: auto minmax(145px, auto) minmax(150px, 1fr) auto auto;
    align-items: center;
    gap: 16px;
    padding: 18px 32px 12px;
    border-bottom: 1px solid var(--reader-line);
    background: #fff;
    box-shadow: 0 5px 14px rgba(9, 43, 92, .06);
}

.view-only-control {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    min-height: 44px;
    padding: 8px 14px;
    border: 1px solid #b9cde3;
    border-radius: 10px;
    background: #fff;
    color: var(--reader-ink);
    cursor: pointer;
    font-family: inherit;
    font-size: 13px;
    font-weight: 700;
    transition: background .18s, border-color .18s, box-shadow .18s, transform .18s;
}
.view-only-control:hover:not(:disabled) { border-color: var(--reader-blue); background: #f3f8ff; box-shadow: 0 6px 16px rgba(7, 89, 181, .12); transform: translateY(-1px); }
.view-only-control:focus-visible,
.view-only-page-input-wrap input:focus-visible,
.view-only-back:focus-visible { outline: 3px solid rgba(7, 89, 181, .28); outline-offset: 2px; }
.view-only-control:disabled { cursor: not-allowed; opacity: .4; }
.view-only-nav-icon { color: var(--reader-blue); font-size: 22px; font-weight: 400; line-height: .7; }
.view-only-nav-label { display: grid; gap: 1px; text-align: left; }
.view-only-nav-label span { color: var(--reader-muted); font-size: 9px; font-weight: 600; line-height: 1.1; }
.view-only-page-control label { display: inline-flex; align-items: center; gap: 5px; }
.view-only-page-control label span { color: var(--reader-blue); font-size: 15px; line-height: 1; }

.view-only-page-control { display: grid; gap: 4px; color: var(--reader-muted); font-size: 11px; font-weight: 800; }
.view-only-page-input-wrap { display: flex; align-items: center; gap: 8px; color: var(--reader-ink); font-size: 13px; font-weight: 700; }
.view-only-page-input-wrap input {
    width: 58px;
    height: 38px;
    padding: 5px 7px;
    border: 1px solid #b9cde3;
    border-radius: 8px;
    color: var(--reader-navy);
    font-family: inherit;
    font-size: 15px;
    font-weight: 700;
    text-align: center;
}
.view-only-page-input-wrap input::-webkit-inner-spin-button,
.view-only-page-input-wrap input::-webkit-outer-spin-button { opacity: 1; }

.view-only-progress { display: flex; align-items: center; gap: 10px; min-width: 0; }
.view-only-progress-track { height: 7px; flex: 1; overflow: hidden; border-radius: 999px; background: #e6edf5; }
.view-only-progress-track span { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #0b68c9, #46b4e8); transition: width .22s ease; }
.view-only-progress > span { min-width: 35px; color: var(--reader-muted); font-size: 11px; font-weight: 800; text-align: right; }
.view-only-zoom { display: inline-flex; align-items: center; gap: 7px; color: var(--reader-muted); font-size: 10px; font-weight: 800; white-space: nowrap; }
.view-only-zoom-label { margin-right: 1px; }
.view-only-zoom button { width: 28px; height: 28px; padding: 0; border: 1px solid #b9cde3; border-radius: 7px; background: #fff; color: var(--reader-blue); cursor: pointer; font-size: 18px; line-height: 1; }
.view-only-zoom button:hover:not(:disabled) { background: #f3f8ff; border-color: var(--reader-blue); }
.view-only-zoom button:disabled { cursor: not-allowed; opacity: .4; }
.view-only-zoom strong { min-width: 34px; color: var(--reader-ink); text-align: center; }
.view-only-keyboard-hint { margin: 0; padding: 0 32px 16px; color: var(--reader-muted); font-size: 11px; text-align: center; }
.view-only-keyboard-hint span { margin-right: 4px; color: var(--reader-blue); }

.view-only-stage {
    display: flex;
    justify-content: center;
    min-height: 520px;
    padding: 28px;
    overflow: auto;
    background: #e9eff6;
    overscroll-behavior: contain;
    touch-action: pan-y;
}
.view-only-page-frame {
    position: relative;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    width: min(100%, 680px);
    min-height: 460px;
    border-radius: 4px;
    background: #fff;
    box-shadow: 0 8px 26px rgba(9, 43, 92, .16), 0 1px 2px rgba(9, 43, 92, .12);
}
.view-only-stage img {
    position: relative;
    z-index: 1;
    display: block;
    width: 100%;
    max-width: 100%;
    height: auto;
    user-select: none;
    -webkit-user-drag: none;
}
.view-only-page-loading {
    position: absolute;
    top: 18px;
    left: 50%;
    z-index: 2;
    padding: 7px 11px;
    transform: translateX(-50%);
    border-radius: 999px;
    background: rgba(9, 43, 92, .86);
    color: #fff;
    font-size: 11px;
    opacity: 0;
    pointer-events: none;
    transition: opacity .18s;
}
.view-only-page-loading.is-visible { opacity: 1; }
.view-only-reader-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 13px 32px 16px;
    background: #fff;
    color: var(--reader-muted);
    font-size: 11px;
    font-weight: 700;
}
.view-only-readonly { color: #14744a; }

@media (max-width: 760px) {
    .view-only-reader { border-radius: 15px; }
    .view-only-reader-topbar { min-height: 42px; padding: 0 16px; }
    .view-only-brand { display: none; }
    .view-only-reader-header { align-items: stretch; flex-direction: column; gap: 10px; padding: 16px 18px 14px; }
    .view-only-reader-header p { font-size: 14px; }
    .view-only-status { align-self: flex-start; }
    .view-only-toolbar { grid-template-columns: 1fr 1fr; gap: 12px 10px; padding: 15px 16px 10px; }
    .view-only-control { min-height: 46px; }
    .view-only-nav { width: 100%; }
    #view-only-prev { grid-column: 1; grid-row: 1; }
    #view-only-next { grid-column: 2; grid-row: 1; }
    .view-only-page-control { grid-column: 1; grid-row: 2; justify-self: start; }
    .view-only-zoom { grid-column: 2; grid-row: 2; justify-self: end; }
    .view-only-progress { grid-column: 1 / -1; grid-row: 3; width: 100%; }
    .view-only-keyboard-hint { padding: 0 16px 13px; font-size: 10px; }
    .view-only-stage { min-height: 0; padding: 12px 9px 16px; }
    .view-only-page-frame { width: 100% !important; min-height: 0; }
    .view-only-reader-footer { padding: 11px 16px 14px; }
}

@media (max-width: 380px) {
    .view-only-control { padding-inline: 9px; font-size: 12px; }
    .view-only-nav-icon { font-size: 21px; }
    .view-only-reader h1 { font-size: 25px; }
}

/* Official ITSLA logo */
.brand-logo {
    display: block;
    height: 50px;
    width: auto;
    max-width: 210px;
    object-fit: contain;
    object-position: left center;
}
.footer-brand .brand-logo { height: 56px; max-width: 230px; }
.brand-logo-inverse { filter: brightness(0) invert(1); opacity: .95; }
@media (max-width: 700px) {
    .brand-logo { height: 42px; max-width: 165px; }
    .footer-brand .brand-logo { height: 48px; max-width: 195px; }
}
/* Codex: institutional hero image override. */
.hero-art > img {
    width: 100%;
    height: 350px;
    max-height: 350px;
    object-fit: cover;
    object-position: 70% center;
    border-radius: 8px;
}

@media (max-width: 700px) {
    .hero-art > img {
        height: 250px;
        max-height: 250px;
    }
}

/* Codex: institutional hero composition. */
.hero-institutional {
    background-image:
        linear-gradient(90deg,
            rgba(247, 251, 255, .97) 0%,
            rgba(247, 251, 255, .92) 34%,
            rgba(247, 251, 255, .42) 54%,
            rgba(247, 251, 255, 0) 70%),
        var(--hero-image);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    border-radius: 0;
}

.hero-institutional .hero-grid {
    min-height: 380px;
    grid-template-columns: 53% 47%;
}

.hero-institutional .hero-copy {
    max-width: 680px;
    padding: 48px 0 44px;
}

.hero-institutional .hero-art {
    min-height: 380px;
    pointer-events: none;
}

.hero-institutional .hero-art > img {
    display: none;
}

.hero-institutional .hero-motto {
    top: 42px;
    right: -4px;
    color: #f4f9ff;
    text-shadow: 0 1px 3px rgba(0, 27, 69, .45);
}

.hero-institutional .hero-motto i {
    background: #f4f9ff;
}

@media (max-width: 700px) {
    .hero-institutional {
        background-image:
            linear-gradient(180deg,
                rgba(247, 251, 255, .98) 0%,
                rgba(247, 251, 255, .96) 56%,
                rgba(247, 251, 255, .16) 75%,
                rgba(247, 251, 255, 0) 100%),
            var(--hero-image);
        background-size: 100% 100%, auto 285px;
        background-position: 0 0, 72% bottom;
        background-repeat: no-repeat;
    }

    .hero-institutional .hero-grid {
        min-height: 570px;
        display: block;
    }

    .hero-institutional .hero-copy {
        max-width: none;
        padding: 34px 0 28px;
    }

    .hero-institutional .hero-art {
        display: none;
    }
}
