/*
Theme Name: Academia Espacial
Description: Serious space-agency Catalan theme for the Academy, with a playful Petits Exploradors scope.
Version: 0.11.11
Requires at least: 6.0
Text Domain: academia-espacial
*/
:root{
  color-scheme:dark;
  --night:#060e1a;--night-2:#0a1728;--night-3:#04070e;--panel:#0f2137;--panel-2:#15304b;
  --panel-dark:#0c2033;
  --line:#25425f;--line-soft:#1a3350;
  --shadow-strong:#03080fdd;--shadow-med:#03080fcc;--shadow-soft:#03080f66;
  --ice:#eaf3fb;--text:#c7d9e9;--muted:#8ba7bf;
  --gold:#d9b25c;--gold-2:#f1d68f;--red:#e5261f;--link:#8fc6ef;
  --kids-cream:#f6ecda;--kids-paper:#fff8ec;--kids-ink:#172f45;--kids-muted:#5a5347;
  --kids-coral:#ee7867;--kids-mint:#a5ddc2;--kids-sun:#ffcf70;--kids-sky:#a7dbea;
  --kids-link:#9c4522;--kids-border:#f0c489;--kids-border-open:#e8b06a;
  --kids-hero-bg:#2a2140;--kids-lead:#4a5a66;--kids-badge-bg:#ffe6d6;--kids-badge-ink:#8a3f21;
}
*{box-sizing:border-box}
html{scroll-behavior:auto}
body{
  margin:0;background-color:var(--night);color:var(--text);
  font:1.06rem/1.65 system-ui,-apple-system,'Segoe UI',sans-serif;
  -webkit-font-smoothing:antialiased;
  background-image:
    radial-gradient(1.4px 1.4px at 12% 16%,#ffffff55,transparent 60%),
    radial-gradient(1.2px 1.2px at 78% 9%,#ffffff44,transparent 60%),
    radial-gradient(1.6px 1.6px at 33% 42%,#ffffff33,transparent 60%),
    radial-gradient(1.1px 1.1px at 88% 34%,#ffffff3d,transparent 60%),
    radial-gradient(1.3px 1.3px at 58% 72%,#ffffff2e,transparent 60%),
    radial-gradient(1.1px 1.1px at 21% 88%,#ffffff30,transparent 60%),
    radial-gradient(900px 520px at 82% -10%,#17395c66,transparent 70%),
    radial-gradient(760px 460px at 4% 6%,#12304959,transparent 72%);
  background-attachment:fixed;background-repeat:no-repeat;background-size:auto,auto,auto,auto,auto,auto,auto,auto;
}
img{max-width:100%}
a{color:var(--link);text-underline-offset:.25em}
a:hover{color:var(--gold-2)}
a:focus-visible,summary:focus-visible,button:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:.35rem}
.menu-toggle:focus-visible,.academy-sound:focus-visible,.library-lb-prev:focus-visible,.library-lb-next:focus-visible,.library-lb-close:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:.35rem}
.wrap{width:min(100rem,calc(100% - 3rem));margin-inline:auto}
.skip-link{position:absolute;z-index:50;top:-10rem;left:1rem;padding:.7rem 1rem;background:var(--gold);color:var(--night)}
.skip-link:focus{top:1rem}
h1,h2,h3{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;font-weight:850;line-height:1.12;letter-spacing:-.025em;color:var(--ice);text-wrap:balance}
/* Fixed backgrounds jank on touch devices; the starfield scrolls instead. */
@media(hover:none) and (pointer:coarse){body{background-attachment:scroll}}
h1{font-size:clamp(2.2rem,5vw,4rem)}h2{font-size:clamp(1.8rem,3.4vw,3rem)}h3{font-size:clamp(1.35rem,2.2vw,2rem)}
p{margin:0 0 1rem}
.eyebrow,.route-index,.route-status{font-size:.8rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.entry-content{overflow-wrap:anywhere}#content{scroll-margin-top:1rem}
.entry-content img{max-width:100%;height:auto}.entry-content a{overflow-wrap:anywhere}.entry-content p{max-width:72ch}
.entry-content h2{font-size:clamp(1.6rem,2.6vw,2.3rem);margin-top:2rem}

/* ---------- Header ---------- */
.site-header{position:relative;z-index:30;background:linear-gradient(180deg,var(--night-2),var(--panel));border-bottom:1px solid var(--line)}
.header-inner{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:1rem;padding-block:.8rem}
.brand{display:inline-flex;align-items:center;color:var(--ice);text-decoration:none}
.brand img{width:4.2rem;height:4.2rem;object-fit:contain;filter:drop-shadow(0 0 .35rem #ffffff22);transition:filter .2s ease}
.brand:hover img,.brand:focus-visible img{filter:drop-shadow(0 0 .55rem #d9b25c88)}
.menu-toggle{display:none;align-items:center;justify-content:center;width:3.1rem;height:3.1rem;padding:0;border:1px solid var(--line);border-radius:.7rem;background:var(--panel-dark);color:var(--ice);cursor:pointer}
html.js .menu-toggle{display:inline-flex}
.menu-toggle:hover{border-color:var(--gold);color:var(--gold-2)}
.menu-bars{display:grid;gap:.3rem;width:1.5rem}
.menu-bars span{display:block;height:2px;background:currentColor;border-radius:2px;transition:transform .2s ease,opacity .2s ease}
.menu-toggle[aria-expanded="true"] .menu-bars span:nth-child(1){transform:translateY(.42rem) rotate(45deg)}
.menu-toggle[aria-expanded="true"] .menu-bars span:nth-child(2){opacity:0}
.menu-toggle[aria-expanded="true"] .menu-bars span:nth-child(3){transform:translateY(-.42rem) rotate(-45deg)}
.screen-reader-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.primary-nav{display:grid;flex-basis:100%;gap:.85rem;padding-top:.4rem}
html.js .primary-nav{position:absolute;top:calc(100% + .5rem);left:0;z-index:40;width:min(26rem,100%);display:none;padding:1.1rem;border:1px solid var(--line);border-radius:1rem;background:linear-gradient(180deg,var(--panel-dark),var(--night));box-shadow:0 1.6rem 2.6rem #03080fbb}
html.js .primary-nav.is-open{display:grid}
.menu{display:grid;gap:.25rem;list-style:none;margin:0;padding:0}
.menu-info{margin-top:.5rem;padding-top:.6rem;border-top:1px solid var(--line)}
.menu a,.menu .menu-pending{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.72rem .9rem;border-radius:.55rem;color:var(--ice);font-weight:700;font-size:.98rem;text-decoration:none}
.menu a:hover{background:var(--panel-2);color:var(--gold-2)}
.menu a[aria-current="page"]{background:var(--gold);color:var(--night)}
.menu .menu-pending{color:var(--muted);font-weight:600;cursor:default}
.menu .menu-pending em{font-style:normal;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);opacity:.85}

/* ---------- Footer ---------- */
.site-footer{background:var(--night-2);border-top:1px solid var(--line);color:var(--text);padding:2.4rem 0;margin-top:2rem}
.site-footer a{color:var(--gold-2);padding:.6rem .2rem}
.footer-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.25rem}
.footer-brand{display:flex;align-items:center;gap:.8rem;color:var(--ice);text-decoration:none;font-weight:800}
.footer-brand img{width:3rem;height:3rem;object-fit:contain}
.footer-motto{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.8rem}
main{min-height:60vh}

/* ---------- Home: hero ---------- */
.home-main{padding-bottom:clamp(2rem,5vw,4rem)}
.mission-hero{position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;min-height:clamp(30rem,74vh,46rem);text-align:center;padding:clamp(2.6rem,6vw,4.6rem) 1rem;background:var(--night)}
/* Phones: size the hero against the small viewport so the bottom of the video and its
   copy stay on screen while the browser toolbar is visible. */
@supports (min-height:1svh){.mission-hero{min-height:clamp(30rem,74svh,46rem)}}
.mission-video{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;filter:brightness(1.06) contrast(1.04) saturate(1.05)}
.mission-hero:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#060e1ab3,#060e1a33 38%,#060e1ade 100%)}
.mission-copy{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:.35rem;max-width:60rem}
.mission-copy h1,.mission-copy .mission-welcome,.mission-copy .mission-lead{text-shadow:0 2px 20px #03080fe0}
.mission-logo{width:clamp(6.5rem,16vw,10.5rem);height:auto;margin:0 auto .6rem;filter:drop-shadow(0 0 1.1rem #d9b25c33)}
.mission-welcome{display:inline-flex;align-items:center;gap:clamp(.5rem,1.6vw,.9rem);margin:.2rem 0 .5rem;font-size:clamp(.78rem,1.05vw,.92rem);font-weight:800;letter-spacing:.24em;text-transform:uppercase;color:var(--text)}
.mission-welcome:before,.mission-welcome:after{content:'';flex:0 0 auto;width:clamp(1.6rem,5vw,3.2rem);height:1px}
.mission-welcome:before{background:linear-gradient(90deg,transparent,#c7d9e98c)}
.mission-welcome:after{background:linear-gradient(270deg,transparent,#c7d9e98c)}
.mission-copy h1{max-width:20ch;margin:.15rem 0 .5rem;font-size:clamp(1.85rem,4.3vw,3.35rem);line-height:1.2;letter-spacing:.045em;text-transform:uppercase;color:var(--ice)}
.mission-lead{font-size:clamp(1.1rem,1.7vw,1.4rem);font-weight:500;color:var(--text);max-width:46ch}
/* Primary button: gold gradient pill. One spec, one place. */
.mission-jump,.route-link,.academy-notice-watch{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:3.2rem;padding:.7rem 1.5rem;border:1px solid var(--gold);border-radius:99rem;background:linear-gradient(180deg,var(--gold-2),var(--gold));color:var(--night);font-weight:850;letter-spacing:.03em;text-decoration:none;transition:filter .2s ease}
.mission-jump:hover,.route-link:hover,.academy-notice-watch:hover{filter:brightness(1.08);color:var(--night)}
.mission-jump{margin-top:.5rem}

/* ---------- Home: category patches ---------- */
.mission-routes{position:relative;padding-block:clamp(2.4rem,5vw,4rem)}
.section-heading{max-width:48rem;margin:0 auto clamp(1.6rem,3vw,2.6rem);text-align:center}
.section-heading h2{color:var(--gold)}
.section-heading h2{margin:.4rem 0}
.section-heading>p:last-child{color:var(--muted)}
.route-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}
.route-card{min-width:0;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:1rem;background:linear-gradient(180deg,var(--panel),var(--night-2));box-shadow:none;transition:border-color .25s ease,transform .25s ease}
.route-card:hover,.route-card:focus-within{border-color:var(--gold);transform:translateY(-4px)}
.route-image{position:relative;display:grid;place-items:center;padding:1.8rem 1.8rem .4rem;background:transparent}
.route-patch{display:block;width:min(70%,14rem);height:auto;object-fit:contain;filter:drop-shadow(0 1rem 1.4rem var(--shadow-med))}
.route-card-caption,.activity-card-caption{display:block;padding:.35rem 1rem;color:var(--muted);font-size:.8rem}
.route-card-body{display:flex;flex:1;flex-direction:column;align-items:center;text-align:center;padding:1.2rem 1.6rem 1.8rem}
.route-index{margin:0}
.route-card h3{margin:.45rem 0 .6rem;color:var(--ice)}
.route-card-body>p:not(.route-index):not(.route-status){color:var(--text);margin-bottom:.6rem}
.route-card .route-question{font-weight:800;color:var(--ice);margin-bottom:.3rem}
.route-card .route-answer{white-space:pre-line}
.route-link,.route-status{margin-top:auto}
.route-link{width:100%;font-size:.95rem;text-transform:uppercase}
.route-status{color:var(--muted);font-size:.85rem}
/* The homepage category card for Petits Exploradors shares the sober navy-and-gold
   treatment; only the kids patch art distinguishes it. The warm scope stays on the
   Petits Exploradors route page and Ona's activity. */

/* ---------- Home: narrative (unused by the concise homepage) ---------- */
.home-narrative{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:clamp(1.6rem,4vw,3.5rem);padding:clamp(1.6rem,4vw,3rem);margin-block:clamp(1.6rem,4vw,3rem);border:1px solid var(--line);border-radius:1.5rem;background:linear-gradient(180deg,var(--panel-2),var(--night-2))}
.home-narrative a{color:var(--gold-2)}
.home-narrative-visual{margin:0;overflow:hidden;border:1px solid var(--line);border-radius:1rem;background:var(--panel)}
.home-narrative-visual img{display:block;width:100%;height:clamp(18rem,34vw,30rem);object-fit:cover}
.home-narrative-visual figcaption{padding:.4rem 1rem;font-size:.8rem;color:var(--muted)}
.home-editorial{min-width:0;color:var(--text)}
.home-editorial:empty{display:none}
.home-editorial h2,.home-editorial h3{color:var(--ice)}

/* ---------- Route landings & catalogue ---------- */
.catalogue-main{padding:clamp(2rem,5vw,4rem) 0 5rem}
.landing-page,.activity-detail{max-width:none}
.catalogue-heading,.activity-detail-heading{padding:1rem 0 2rem;max-width:75ch}
.catalogue-heading h1,.activity-detail-heading h1{margin:.5rem 0;overflow-wrap:anywhere}
.landing-academy .catalogue-heading{border-top:4px solid var(--gold)}
.landing-workshops .catalogue-heading{border-top:4px solid var(--link)}
.landing-kids .catalogue-heading{border-top:4px solid var(--kids-coral)}
.route-cover,.activity-cover{position:relative;margin:0 0 2.5rem}
.route-cover img,.activity-cover img{display:block;width:100%;height:auto;max-height:36rem;aspect-ratio:16/9;object-fit:cover;border-radius:1rem;border:1px solid var(--line)}
.route-cover figcaption,.activity-cover figcaption{padding:.4rem 0;color:var(--muted);font-size:.85rem}
.route-cover-patch{display:grid;place-items:center;padding:2rem;border:1px solid var(--line);border-radius:1rem;background:radial-gradient(circle at 50% 40%,#17395c66,transparent 72%)}
.route-cover-patch .route-patch{width:min(20rem,60%);max-height:none;aspect-ratio:auto;object-fit:contain;border:0;filter:drop-shadow(0 1rem 1.4rem #03080faa)}
.route-cover-graphic,.route-cover-experiment,.activity-cover-graphic{height:clamp(12rem,30vw,26rem);border-radius:1rem;border:1px solid var(--line);background:radial-gradient(circle at 70% 35%,#d9b25c33 0 3%,transparent 3.5%),repeating-radial-gradient(circle at 50% 60%,transparent 0 3rem,#a7dbea26 3.05rem 3.1rem),var(--panel-dark)}
.landing-content,.activity-content{max-width:74ch;font-size:1.06rem}
.landing-page .catalogue-heading,.landing-page .landing-content{margin-inline:auto;text-align:center}
.landing-page .entry-content p{margin-inline:auto}
.catalogue-main .catalogue-heading{margin-inline:auto;text-align:center}
.doc-downloads h2,.doc-downloads .doc-downloads-intro{text-align:center}
.doc-downloads .doc-downloads-intro{margin-inline:auto;max-width:60ch}
.landing-activities{margin-top:3rem;border-top:1px solid var(--line);padding-top:2rem}
.activity-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;margin-bottom:2rem}
@media(max-width:1150px){.activity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.activity-card{min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:1rem;background:linear-gradient(180deg,var(--panel),var(--night-2));transition:border-color .25s ease}
.activity-card:hover,.activity-card:focus-within{border-color:var(--gold)}
.activity-image{display:block;overflow:hidden}
.activity-image img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
.activity-card-body{display:flex;flex-direction:column;align-items:flex-start;min-height:12rem;padding:1.4rem}
.activity-card h2,.activity-card h3{margin:.5rem 0;color:var(--ice)}
.activity-card h2 a,.activity-card h3 a{color:var(--ice);text-decoration:none}
.activity-card h2 a:hover,.activity-card h3 a:hover{color:var(--gold-2)}
.activity-action{margin-top:auto;font-weight:800;color:var(--link)}
.activity-badge{display:inline-block;padding:.28rem .8rem;border:1px solid var(--line);border-radius:99rem;background:var(--panel-dark);color:var(--gold-2);font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;text-decoration:none}
.activity-lead{font-size:clamp(1.15rem,1.8vw,1.45rem);color:var(--text)}
.centre-hero{position:relative;isolation:isolate;display:flex;align-items:flex-end;min-height:clamp(24rem,52vw,38rem);margin-bottom:3rem;background:var(--night-2);color:var(--ice);border-radius:1rem;overflow:hidden;border:1px solid var(--line)}
.centre-hero-image{position:absolute;inset:0;z-index:-2;margin:0;overflow:hidden}
.centre-hero-image img{width:100%;height:100%;max-height:none;aspect-ratio:auto;object-fit:cover;border-radius:0;border:0}
/* Middle ground: the title still sits on a solid base at the bottom, but the image
   stays visible through the upper two thirds. */
.centre-hero:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,var(--night) 0%,#060e1acc 28%,#060e1a59 62%,#060e1a1a 100%)}
.centre-hero-copy{width:100%;max-width:75ch;padding:clamp(1.25rem,4vw,3rem)}
.centre-hero-copy h1{margin:.4rem 0}
.centre-hero-copy .activity-lead{color:var(--ice)}
.centre-hero-image figcaption{position:absolute;right:1rem;top:1rem;padding:.3rem .7rem;background:var(--night);color:var(--text);border:1px solid var(--line);border-radius:.4rem}

/* ---------- Activity detail ---------- */
.activity-content details{margin:1rem 0;padding:1rem 1.25rem;border:1px solid var(--line);border-radius:.8rem;background:linear-gradient(180deg,var(--panel),var(--night-2))}
.activity-content details[open]{border-color:#376779}
.activity-content summary{cursor:pointer;min-height:2.75rem;font-size:1.1rem;font-weight:800;color:var(--ice)}
.activity-content details>:not(summary){margin-inline:.5rem}
.activity-back{display:inline-block;margin-top:3rem}
.catalogue-empty{padding:1rem 1.5rem;border-left:4px solid var(--gold);background:var(--panel);color:var(--text)}
.landing-activities .page-numbers,.navigation.pagination .page-numbers{display:inline-block;padding:.5rem .8rem;margin:.3rem;color:var(--link)}
.activity-content:has(.activity-layout-grid){max-width:none}
.activity-layout-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-block:1.25rem}
.activity-layout-card{min-width:0;padding:1rem 1.25rem;border:1px solid var(--line);border-top:4px solid var(--gold);border-radius:.8rem;background:var(--panel)}
.activity-layout-card:nth-child(2){border-top-color:var(--link)}
.activity-layout-age .activity-layout-card:nth-child(3){border-top-color:var(--kids-mint)}
.activity-layout-card>p:first-child{margin-top:0;color:var(--ice);font-weight:400}
.activity-layout-card>p:first-child strong{font-weight:800}
.activity-layout-card p{max-width:none}
.activity-layout-tail{padding:1rem 1.25rem;border-left:4px solid var(--gold);background:var(--panel-2);border-radius:.6rem}
.activity-layout-duration h2{font-size:1.2rem;margin:0 0 .75rem}
.activity-content details .activity-layout-grid,.activity-content details .activity-layout-tail{margin-inline:0}
/* Mission-briefing panel: HUD corner brackets, editorial drop cap. Purely decorative. */
.activity-presentation{position:relative;overflow:hidden;padding:1.6rem 1.7rem;border:1px solid var(--line);border-radius:.8rem;background:linear-gradient(180deg,var(--panel-2),var(--night-2));color:var(--ice)}
.activity-presentation:before,.activity-presentation:after{content:'';position:absolute;width:1.5rem;height:1.5rem;border:2px solid var(--gold);pointer-events:none}
.activity-presentation:before{top:.6rem;left:.6rem;border-right:0;border-bottom:0;border-radius:.3rem 0 0 0}
.activity-presentation:after{bottom:.6rem;right:.6rem;border-left:0;border-top:0;border-radius:0 0 .3rem 0}
.activity-presentation>p{max-width:none;font-size:1.12em;line-height:1.72}
.activity-presentation>p:first-of-type:first-letter{float:left;margin:.18rem .5rem 0 0;font-size:2.7em;line-height:.82;font-weight:850;color:var(--gold-2)}
.activity-presentation p:last-child{margin-bottom:0}
.activity-content details .activity-presentation{margin-inline:0}
.activity-presentation .activity-layout-grid{margin-block:.9rem 0}
.activity-presentation .activity-layout-card{padding:.85rem 1rem}
.activity-layout-topics{counter-reset:activity-topics}
.activity-layout-topics .activity-layout-card{border-top-color:var(--gold)}
.activity-layout-topics .activity-layout-card::before{display:block;margin-bottom:.35rem;counter-increment:activity-topics;content:"0" counter(activity-topics);color:var(--gold);font-size:.8rem;font-weight:800;letter-spacing:.14em}
.activity-layout-values .activity-layout-card{border-top-color:var(--link)}
.activity-layout-values .activity-layout-card::before{display:block;margin-bottom:.35rem;content:"✦";color:var(--gold-2);font-size:.8rem;font-weight:800;letter-spacing:.14em}
.activity-detail .activity-content>details:first-of-type{border:1px solid var(--gold);background:linear-gradient(180deg,var(--panel-2),var(--night-2))}
.activity-detail .activity-content>details:first-of-type summary{color:var(--gold-2)}

.landing-page .route-cover figcaption{padding:.5rem 1rem;background:var(--night-2);border-top:1px solid var(--line);color:var(--muted)}
.landing-activities .activity-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.landing-kids~.landing-activities .activity-grid{grid-template-columns:minmax(0,1fr);max-width:38rem}
.landing-activities .activity-card h3{font-size:clamp(1.2rem,1.7vw,1.6rem);line-height:1.2;overflow-wrap:anywhere}
.passport-feature{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:clamp(1rem,3vw,2rem);align-items:center;margin-top:2rem;padding:clamp(1rem,3vw,2rem);border:1px solid var(--gold);border-radius:1rem;background:linear-gradient(180deg,var(--kids-paper),var(--kids-badge-bg));color:var(--kids-ink)}
.ona-feature{display:block;margin-top:3rem;padding:clamp(1rem,3vw,2rem);border:1px solid var(--kids-border);border-radius:1.25rem;background:linear-gradient(180deg,var(--kids-paper),var(--kids-cream));color:var(--kids-ink)}
.ona-visual{margin:0 0 clamp(1rem,3vw,1.75rem);text-align:center}
.ona-visual img{display:block;width:100%;height:auto;max-width:56rem;margin:0 auto;border-radius:1rem}
.ona-copy{min-width:0;max-width:60ch;margin:0 auto;text-align:center}
.ona-copy .eyebrow{color:var(--kids-badge-ink)}
.ona-copy h2{font-size:clamp(1.8rem,3vw,2.6rem);margin:.4rem 0;color:var(--kids-ink)}
.ona-lead{font-weight:700;color:var(--kids-ink)}
.ona-body{color:var(--kids-muted)}
.ona-links{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem;margin-top:1.25rem}
.ona-link{display:inline-block;padding:.5rem 1.3rem;border:1px solid var(--kids-border-open);border-radius:.5rem;background:var(--kids-badge-bg);color:var(--kids-badge-ink);font-size:.9rem;font-weight:700;text-decoration:none;transition:filter .15s ease,transform .15s ease}
.ona-link:hover,.ona-link:focus-visible{filter:brightness(1.04);transform:translateY(-1px)}
.passport-visual{margin:0;min-width:0;text-align:center}
.passport-visual img{display:block;width:100%;max-height:16rem;object-fit:contain}
.passport-visual figcaption{font-size:.85rem;color:var(--kids-muted)}
.passport-copy{min-width:0}
.passport-copy h2,.passport-copy h3{font-size:clamp(1.5rem,2.6vw,2.2rem);margin:.4rem 0;color:var(--kids-ink)}
.passport-copy p{max-width:60ch}
.passport-link{display:inline-block;font-weight:800;overflow-wrap:anywhere;color:var(--kids-link)}

/* ---------- Downloadables (Acadèmia route) ---------- */
.downloads{margin-top:3rem;border-top:1px solid var(--line);padding-top:2rem}
.download-list{list-style:none;margin:0 auto;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;max-width:60rem}
.download-item{display:flex}
.download-link,.download-item-soon{display:flex;flex-direction:column;gap:.3rem;width:100%;padding:1.1rem 1.25rem;border:1px solid var(--line);border-radius:.9rem;background:linear-gradient(180deg,var(--panel),var(--night-2));text-decoration:none;color:var(--text)}
.download-link:hover,.download-link:focus-visible{border-color:var(--gold);color:var(--text)}
.download-name{font-weight:800;color:var(--ice)}
.download-meta{font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.download-action{margin-top:.4rem;font-weight:800;color:var(--gold-2)}
.download-item-soon{opacity:.72;cursor:default}
.download-item-soon .download-name{color:var(--muted)}

/* ---------- Petits Exploradors scope (warm, playful) ---------- */
.scope-kids{background-color:var(--kids-cream);color:var(--kids-ink)}
.scope-kids{background-image:radial-gradient(700px 420px at 88% 4%,#ffd9a84d,transparent 72%),radial-gradient(620px 380px at 2% 70%,#a5ddc24d,transparent 72%)}
.scope-kids h1,.scope-kids h2,.scope-kids h3{color:var(--kids-ink)}
.scope-kids main a{color:var(--kids-link)}
.scope-kids main a:hover{color:var(--kids-badge-ink)}
.scope-kids .catalogue-main{background:transparent}
.scope-kids .catalogue-heading,.scope-kids .activity-detail-heading{color:var(--kids-ink)}
.scope-kids .activity-lead{color:var(--kids-lead)}
.scope-kids .activity-card,.scope-kids .activity-content details,.scope-kids .activity-layout-card,.scope-kids .activity-layout-tail{background:var(--kids-paper);border-color:var(--kids-border);color:var(--kids-ink)}
.scope-kids .activity-card h2,.scope-kids .activity-card h3,.scope-kids .activity-card h2 a,.scope-kids .activity-card h3 a,.scope-kids .activity-content summary{color:var(--kids-ink)}
.scope-kids .activity-badge{background:var(--kids-badge-bg);border-color:var(--kids-border);color:var(--kids-badge-ink)}
.scope-kids .activity-action{color:var(--kids-link)}
.scope-kids .centre-hero{background:var(--kids-hero-bg)}
.scope-kids .centre-hero-copy h1,.scope-kids .centre-hero-copy .activity-lead{color:var(--kids-paper)}
.scope-kids .route-cover-patch{background:radial-gradient(circle at 50% 40%,#ffd9a866,transparent 72%);border-color:var(--kids-border)}
.lang-switch{display:flex;gap:.45rem;align-items:center;margin-left:auto}
.lang-item{display:inline-flex;padding:2px;border:1px solid var(--line);border-radius:4px;opacity:.72;transition:opacity .15s ease,border-color .15s ease}
.lang-item:hover,.lang-item:focus-visible{opacity:1}
.lang-item.is-active{opacity:1;border-color:var(--gold)}
.lang-flag{display:block;width:27px;height:18px;border-radius:2px}
.scope-kids .lang-item{border-color:var(--kids-border)}
/* The dark "first details" treatment outranks the kids palette, leaving dark text on a dark
   panel. Restore the paper background, its border and readable heading colours. */
.scope-kids .activity-detail .activity-content>details:first-of-type{background:var(--kids-paper);border-color:var(--kids-border)}
.scope-kids .activity-detail .activity-content>details:first-of-type summary{color:var(--kids-ink)}
.scope-kids .activity-content details[open]{border-color:var(--kids-border-open)}
/* Same clash on the card label: it inherited the light theme colour, white on cream paper. */
.scope-kids .activity-layout-card>p:first-child{color:var(--kids-ink)}
.scope-kids .activity-layout-tail{color:var(--kids-ink)}
.scope-kids .activity-layout-tail h2,.scope-kids .activity-content details summary{color:var(--kids-ink)}

/* ---------- Motion: subtle reveals only, never layout ---------- */
@media(prefers-reduced-motion:no-preference){
.motion-ready .motion-target :is(.route-image,.activity-image),.motion-ready .motion-target:is(.home-narrative-visual,.route-cover,.activity-cover:not(.centre-hero-image)),.motion-ready .motion-target.centre-hero-image img{clip-path:inset(0 0 0 0)}
.motion-ready .motion-pending:is(.route-card,.activity-card){box-shadow:0 0 0 transparent}
.motion-ready .motion-pending:is(.route-card,.activity-card) :is(.route-image,.activity-image){clip-path:inset(0 0 100% 0)}
.motion-ready .motion-pending:is(.route-card,.activity-card) :is(.route-image img,.activity-image img){transform:translateY(1rem)}
.motion-ready .motion-pending:is(.home-narrative-visual,.route-cover,.activity-cover:not(.centre-hero-image)){clip-path:inset(0 0 100% 0)}
.motion-ready .motion-target:is(.route-card,.activity-card){transition:box-shadow .7s ease,transform .25s ease}
.motion-ready .motion-target :is(.route-image,.activity-image),.motion-ready .motion-target:is(.home-narrative-visual,.route-cover,.activity-cover:not(.centre-hero-image)){transition:clip-path .8s cubic-bezier(.2,.7,.2,1)}
.motion-ready .motion-target :is(.route-image img,.activity-image img,.home-narrative-visual img,.route-cover img,.activity-cover img){transition:transform .8s cubic-bezier(.2,.7,.2,1),clip-path .8s cubic-bezier(.2,.7,.2,1)}
.motion-ready .motion-settled:is(.route-card,.activity-card){box-shadow:0 1.2rem 2.4rem var(--shadow-soft)}
}
@media(prefers-contrast:more){:root{--muted:#a9c2d6;--line:#48688a;--text:#e6eef6}.route-card,.activity-card,.activity-content details{border-color:var(--ice)}.centre-hero:before{background:linear-gradient(0deg,var(--night) 0%,var(--night) 52%,#060e1acc)}}

@media(max-width:850px){
.header-inner{justify-content:center}
.route-grid{grid-template-columns:1fr}
.route-card{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);align-items:center}
.route-image{padding:1.4rem}
.route-card-body{align-items:flex-start;text-align:left}
.home-narrative{grid-template-columns:1fr}
.home-narrative-visual img{height:auto;aspect-ratio:16/9}
.landing-activities .activity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.landing-kids~.landing-activities .activity-grid{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:600px){
.wrap{width:calc(100% - 2rem)}
.download-list{grid-template-columns:1fr}
.header-inner{gap:.7rem;padding-block:.7rem}
.brand img{width:3.4rem;height:3.4rem}
.menu-toggle{width:2.9rem;height:2.9rem}
.mission-logo{width:clamp(5.5rem,26vw,8rem)}
.mission-welcome{font-size:clamp(.68rem,2.6vw,.78rem);letter-spacing:.18em;gap:.45rem}
.mission-welcome:before,.mission-welcome:after{width:clamp(1.1rem,4vw,1.6rem)}
.mission-copy h1{font-size:clamp(1.55rem,6.6vw,2.2rem);letter-spacing:.03em}
.route-card{display:flex}
.route-image{padding:1.6rem 1.6rem .4rem}
.route-card-body{align-items:center;text-align:center}
.activity-grid,.activity-layout-grid{grid-template-columns:1fr}
.centre-hero{min-height:30rem}
.centre-hero-copy h1{font-size:clamp(1.8rem,8vw,2.8rem)}
.route-cover img{aspect-ratio:4/3}
.landing-activities .activity-grid,.landing-kids~.landing-activities .activity-grid,.passport-feature{grid-template-columns:minmax(0,1fr)}
.passport-visual img{max-height:12rem}.passport-feature{gap:.5rem}
}


/* ---------- Academy itinerary: full-screen video, content slides over it ---------- */
.scope-academy .catalogue-main{padding:0}
/* The header floats over the footage so the video really fills the viewport. */
.scope-academy .site-header{position:absolute;top:0;left:0;right:0;z-index:30;background:transparent;background-image:linear-gradient(180deg,#04070ee0 0%,#04070e66 55%,#04070e00 100%);border-bottom:0}
.scope-academy .brand img{filter:drop-shadow(0 2px 10px #04070ecc)}
.scope-academy .menu-toggle{background:#04070ea6;border-color:#ffffff2e;backdrop-filter:blur(.4rem)}

.academy-hero{position:relative;isolation:isolate;display:grid;place-items:center;height:100vh;height:100svh;overflow:hidden;background:var(--night-3);color:var(--ice)}
.academy-hero-media{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:center}
.academy-hero-shade{position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,#04070eb3 0%,#04070e40 16%,#04070e00 40%,#04070e00 82%,#04070e2e 100%)}
.academy-intro{max-width:62rem;margin-inline:auto;text-align:center;padding-bottom:clamp(1.8rem,4vw,3rem)}
.academy-intro-title{margin:.5rem 0 0;font-size:clamp(2rem,5.2vw,3.7rem)}
.academy-hero-cue{position:absolute;left:50%;bottom:clamp(3.9rem,8.6vh,4.9rem);width:1.5rem;height:1.5rem;margin-left:-.75rem;border-right:2px solid #ffffffb3;border-bottom:2px solid #ffffffb3;transform:rotate(45deg);animation:academy-cue 2.4s ease-in-out infinite}
@keyframes academy-cue{0%,100%{opacity:.35;transform:translateY(-.2rem) rotate(45deg)}50%{opacity:.9;transform:translateY(.25rem) rotate(45deg)}}
.academy-sound{position:absolute;right:clamp(.9rem,3vw,2.2rem);bottom:clamp(3.6rem,8vh,4.6rem);z-index:3;display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;padding:0;border:1px solid #ffffff3d;border-radius:50%;background:#04070ecc;color:var(--ice);font:inherit;cursor:pointer;backdrop-filter:blur(.4rem)}
.academy-sound:hover{border-color:var(--gold);color:var(--gold-2)}
.academy-sound.is-playing{border-color:var(--gold);color:var(--gold-2)}
.academy-sound-icon{font-size:1.15rem;line-height:1}

/* Framed reminder that appears on the first scroll. */
.academy-notice{position:fixed;left:50%;top:clamp(4.6rem,11vh,6.4rem);z-index:60;width:min(44rem,calc(100% - 2rem));padding:1.15rem 3.2rem 1.2rem 1.35rem;border:2px solid var(--gold);border-radius:1rem;background:linear-gradient(180deg,#0f2137f5,#08172af5);box-shadow:0 1.6rem 3rem #03080fd9;backdrop-filter:blur(.5rem);opacity:0;transform:translate(-50%,-.7rem);transition:opacity .32s ease,transform .32s ease}
.academy-notice[hidden]{display:none}
.academy-notice.is-visible{opacity:1;transform:translate(-50%,0)}
.academy-notice-kicker{margin:0;font-size:.74rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.academy-notice h2{margin:.3rem 0 .4rem;font-size:clamp(1.05rem,1.7vw,1.3rem)}
.academy-notice p{margin:0 0 .95rem;font-size:.94rem;color:var(--text);max-width:56ch}
.academy-notice-actions{display:flex;flex-wrap:wrap;gap:.6rem}
.academy-notice-watch,.academy-notice-skip{font:inherit;font-weight:800;cursor:pointer}
.academy-notice-close{position:absolute;top:.35rem;right:.45rem;width:2.2rem;height:2.2rem;padding:0;border:0;border-radius:50%;background:transparent;color:var(--muted);font-size:1.35rem;line-height:1;cursor:pointer}
.academy-notice-close:hover{color:var(--ice)}
.academy-sound.is-playing .academy-sound-icon{color:var(--gold-2)}

/* The content sheet: opaque, raised above the footage, rounded top edge. */
.academy-body{position:relative;z-index:2;border-radius:clamp(1rem,2.4vw,2rem) clamp(1rem,2.4vw,2rem) 0 0;box-shadow:0 -1.4rem 3rem var(--shadow-med);background-color:var(--night);
  background-image:
    radial-gradient(1.4px 1.4px at 12% 8%,#ffffff55,transparent 60%),
    radial-gradient(1.2px 1.2px at 78% 4%,#ffffff44,transparent 60%),
    radial-gradient(1.6px 1.6px at 33% 14%,#ffffff33,transparent 60%),
    radial-gradient(1.1px 1.1px at 88% 11%,#ffffff3d,transparent 60%),
    radial-gradient(1.3px 1.3px at 58% 19%,#ffffff2e,transparent 60%),
    radial-gradient(900px 520px at 82% -6%,#17395c66,transparent 70%),
    radial-gradient(760px 460px at 4% 6%,#12304959,transparent 72%);
  background-repeat:no-repeat}
.academy-cover-sentinel{position:absolute;top:0;left:0;width:100%;height:1px;pointer-events:none}
.academy-body>.wrap{padding-block:clamp(3.2rem,7vw,5.5rem) clamp(2.6rem,6vw,5rem)}

.academy-mission{display:grid;grid-template-columns:minmax(0,13rem) minmax(0,1fr);gap:clamp(1.5rem,4vw,3.5rem);align-items:start;padding-bottom:clamp(2.2rem,5vw,4rem)}
.academy-mission-patch img{display:block;width:100%;height:auto;filter:drop-shadow(0 1rem 1.8rem #03080faa)}
.academy-mission-copy{min-width:0}
.academy-mission-copy .entry-content{max-width:74ch}
.academy-mission-copy .entry-content>:first-child{margin-top:0}

.academy-stations{padding-block:clamp(2.2rem,5vw,4rem);border-top:1px solid var(--line)}
.station-list{list-style:none;margin:0;padding:0;display:grid;gap:clamp(1.6rem,4vw,3.2rem)}
.station{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(1.25rem,4vw,3rem);align-items:center}
.station:nth-child(even) .station-media{order:2}
.station-media{margin:0;min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:1.1rem;background:var(--panel-dark)}
.station-media img{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover}
.station-copy{min-width:0}
.station-index{margin:0;font-size:.8rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.station-copy h3{margin:.4rem 0 .15rem;font-size:clamp(1.5rem,2.5vw,2.25rem)}
.station-tag{margin:0 0 .85rem;font-weight:750;color:var(--gold-2)}
.station-text{max-width:62ch;margin-bottom:.9rem}
.station-link{font-weight:800;color:var(--link)}

.academy-documental{padding-block:clamp(2.4rem,6vw,4.5rem);border-top:1px solid var(--line)}
.documental-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(1.5rem,4vw,3rem);align-items:start}
.documental-player{min-width:0;border:1px solid var(--line);border-radius:1rem;overflow:hidden;background:var(--night-3)}
.documental-player video{display:block;width:100%;height:auto;aspect-ratio:16/9;background:var(--night-3)}
.documental-chapters{min-width:0}
.documental-chapters h3{margin:0 0 .9rem;font-size:1.1rem;letter-spacing:.04em;text-transform:uppercase;color:var(--gold)}
.documental-chapters ol{list-style:none;margin:0;padding:0;display:grid;gap:.7rem}
.documental-chapters button{display:flex;align-items:baseline;gap:.85rem;width:100%;padding:.72rem .95rem;border:1px solid var(--line);border-radius:.7rem;background:linear-gradient(180deg,var(--panel),var(--night-2));color:var(--ice);font:inherit;text-align:left;cursor:pointer}
.documental-chapters button:hover{border-color:var(--gold);color:var(--gold-2)}
.documental-chapters button.is-active{border-color:var(--gold);background:linear-gradient(180deg,var(--panel-2),var(--night-2))}
.chapter-time{font-variant-numeric:tabular-nums;font-weight:800;color:var(--gold)}
.chapter-label{font-weight:750}


/* Pin the footage so the sheet slides over it. Static layout when motion is reduced. */
@media(prefers-reduced-motion:no-preference) and (min-height:36rem){
.academy-hero{position:sticky;top:0}
}
@media(prefers-reduced-motion:reduce){
.academy-hero-cue{animation:none}
.academy-notice{transition:none}
}

@media(max-width:850px){
.academy-mission{grid-template-columns:1fr}
.academy-mission-patch{max-width:9rem}
.station{grid-template-columns:1fr;gap:1rem}
.station:nth-child(even) .station-media{order:0}
.station-media img{aspect-ratio:16/9}
.documental-grid{grid-template-columns:1fr}
}
@media(max-width:600px){
.academy-intro-title{font-size:clamp(1.8rem,7.6vw,2.6rem)}
.academy-sound{right:.8rem;bottom:3.4rem;width:2.6rem;height:2.6rem}
.academy-body{border-radius:1rem 1rem 0 0}
.academy-notice{width:calc(100% - 1.5rem);padding:1rem 2.9rem 1rem 1.1rem}
.academy-notice-actions{flex-direction:column;align-items:stretch}
.academy-notice-watch,.academy-notice-skip{width:100%}
}

/* Editable front-page brief: the page body rendered under the hero, on the section rhythm. */
.mission-brief{max-width:48rem;padding-block:clamp(2.4rem,5vw,4rem)}
.mission-brief .entry-content>:first-child{margin-top:0}
.mission-brief .entry-content>:last-child{margin-bottom:0}

/* Documentation hub: one heading accent for the index and its two circuits. */
.landing-docs .catalogue-heading{border-top:4px solid var(--gold)}
.doc-circuits{padding-block:clamp(2.4rem,5vw,4rem) clamp(1.6rem,3vw,2.4rem)}
.doc-circuits .section-heading h1{color:var(--gold);margin:.4rem 0}
.doc-circuit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}
.doc-circuit{display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);border-top:4px solid var(--gold);border-radius:1rem;background:linear-gradient(180deg,var(--panel),var(--night-2));transition:border-color .25s ease,transform .25s ease}
.doc-circuit:hover,.doc-circuit:focus-within{border-color:var(--gold);transform:translateY(-4px)}
.doc-circuit .route-card-body{align-items:flex-start;text-align:left}
@media(max-width:600px){
.doc-circuit-grid{grid-template-columns:minmax(0,1fr)}
}
@media(prefers-reduced-motion:reduce){
.doc-circuit{transition:none}
.doc-circuit:hover,.doc-circuit:focus-within{transform:none}
}

/* Documentation downloads: one row per document, each a separate PDF the centre picks. */
.doc-downloads{border-top:1px solid var(--line);padding-block:clamp(2.4rem,5vw,4rem)}
.doc-downloads h2{color:var(--gold);margin:0 0 .4rem}
.doc-downloads-intro{color:var(--muted);margin:0 0 1.2rem;max-width:60ch}
.doc-download-list{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}
.doc-download{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.85rem 1.1rem;border:1px solid var(--line);border-radius:1rem;background:linear-gradient(180deg,var(--panel),var(--night-2));transition:border-color .2s ease}
.doc-download:hover{border-color:var(--gold)}
.doc-download-name{font-weight:750;color:var(--ice);min-width:0}
.doc-download-link{font-size:.85rem;white-space:nowrap}
.doc-download-size{font-variant-numeric:tabular-nums;font-weight:700;opacity:.75}
@media(max-width:600px){
.doc-download{align-items:flex-start;flex-direction:column}
.doc-download-link{white-space:nowrap;padding:.4rem .85rem;font-size:.78rem}
.doc-circuit .route-link{white-space:nowrap;padding:.6rem 1.1rem;font-size:.92rem}
.doc-download-link{width:100%;justify-content:center}
}

/* Image library gate: request form, sent state and the verified session. */
.library-gate .section-heading{margin-bottom:clamp(1.6rem,3vw,2.4rem)}
.library-form,.library-session{max-width:34rem;margin:0 auto;padding:1.4rem 1.5rem;border:1px solid var(--line);border-top:4px solid var(--gold);background:linear-gradient(180deg,var(--panel),var(--night-2))}
.library-form label{display:block;font-weight:750;color:var(--ice);margin-bottom:.5rem}
.library-form input[type=email]{width:100%;padding:.8rem 1rem;border:1px solid var(--line);background:var(--night);color:var(--ice);font:inherit}
.library-form input[type=email]:focus{border-color:var(--gold);outline:2px solid transparent;box-shadow:0 0 0 2px #d9b25c66}
.library-form button{margin-top:.9rem;width:100%}
.library-honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.library-privacy{margin:.9rem 0 0;font-size:.85rem;color:var(--muted)}
.library-error{margin:0 auto 1rem;max-width:34rem;padding:.8rem 1rem;border:1px solid var(--red);color:var(--ice);background:#e5261f1f}
.library-badge{display:inline-block;margin:0 0 .8rem;padding:.3rem .8rem;border:1px solid var(--gold);border-radius:99rem;color:var(--gold-2);font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.library-session p{margin:0 0 .9rem}
.library-logout{display:inline-block;margin-top:.4rem;color:var(--link);font-weight:750}
.library-dev-link{margin-top:1rem;padding:.8rem 1rem;border:1px dashed var(--line);font-size:.85rem;color:var(--muted);overflow-wrap:anywhere}
.library-dev-link strong{color:var(--gold-2)}
.library-dev-warning{display:block;margin-top:.4rem;color:#f0b3ae}
.library-dev-open{margin-top:.6rem}

/* Secondary button: gold outline pill. One spec, one place; overrides the
   per-component leftovers above, so it stays after them in source order. */
.academy-notice-skip,.doc-download-link,.library-dev-open,.library-form button{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:3rem;padding:.5rem 1.1rem;border:1px solid var(--gold);border-radius:99rem;background:transparent;color:var(--gold);font:inherit;font-weight:800;text-decoration:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease}
.academy-notice-skip:hover,.doc-download-link:hover,.library-dev-open:hover,.library-form button:hover{background:var(--panel-dark);color:var(--gold-2)}
@media(max-width:600px){
.library-form,.library-session{padding:1.1rem 1rem}
}

/* Interactive gallery behind the access gate. */
.library-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;max-width:78rem;margin:0 auto 1rem;flex-wrap:wrap}
.library-count{max-width:78rem;margin:0 auto 1rem;color:var(--muted);font-size:.9rem}
.library-grid{list-style:none;margin:0 auto;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:.8rem;max-width:78rem}
.library-item{position:relative;display:block;overflow:hidden;border:1px solid var(--line);background:var(--night-2);text-decoration:none}
.library-item img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;transition:transform .3s ease,filter .2s ease}
.library-item:hover img,.library-item:focus-visible img{transform:scale(1.04);filter:brightness(1.08)}
.library-item-title{position:absolute;left:0;right:0;bottom:0;padding:.5rem .7rem;background:linear-gradient(0deg,#060e1aee,#060e1a00);color:var(--ice);font-size:.85rem;font-weight:750}
.library-lightbox{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:1rem;background:#03080fee}
.library-lightbox[hidden]{display:none}
.library-lightbox-inner{position:relative;display:flex;align-items:center;gap:.5rem;max-width:min(92vw,80rem);max-height:92vh}
.library-lightbox figure{display:flex;flex-direction:column;align-items:center;gap:.6rem;margin:0;max-height:92vh}
#library-lb-image{width:auto;height:auto;max-width:100%;max-height:82vh;object-fit:contain;border:1px solid var(--line);background:var(--night)}
#library-lb-caption{color:var(--muted);font-size:.9rem;text-align:center}
.library-lb-close,.library-lb-prev,.library-lb-next{display:grid;place-items:center;width:2.6rem;height:2.6rem;border:1px solid var(--gold);border-radius:50%;background:#060e1acc;color:var(--gold-2);font-size:1.6rem;line-height:1;cursor:pointer}
.library-lb-close{position:absolute;top:-.6rem;right:-.6rem;z-index:2;font-size:1.3rem}
.library-lb-prev:hover,.library-lb-next:hover,.library-lb-close:hover{background:var(--gold);color:var(--night)}
body.library-open{overflow:hidden}
@media(max-width:600px){
.library-grid{grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr))}
.library-lb-prev,.library-lb-next{width:2.2rem;height:2.2rem;font-size:1.3rem}
}
@media(max-width:420px){
.library-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
}
