/* Shared styles for SherlockEdu inner pages (courses, gallery, journal, legal).
   Same tokens, type scale and components as the homepage. */
:root{
  --hero-base:#04070f; --accent-blue:#2e9bff; --accent:#eef3ff; --accent-rgb:238,243,255; --accent-lime:var(--accent); --muted:#9aa1ad;
  --card-blue:#2f7cf6; --card-gray:#ededf0; --card-dark:#0a0c12; --plum:#241c3a; --lilac:#d7d1f2;
  --footer:#0a1533; --footer-fg:#f2f4f1; --footer-muted:#aeb9d8; --brand:#1c3ee6;
  --ease-out:cubic-bezier(.22,1,.36,1);
}
*{margin:0;box-sizing:border-box}
html{font-size:16px;scroll-behavior:smooth}
@media (min-width:1600px){html{font-size:clamp(16px,1vw,19px)}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
body{background:#fff;color:#000;font-family:"Mulish",ui-sans-serif,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
ul,ol{list-style:none;padding:0}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:pointer}
img{display:block;max-width:100%}
address{font-style:normal}
:focus-visible{outline:2px solid var(--accent-blue);outline-offset:3px}
.mark{display:block;flex:none}
.wide{padding-inline:1.5rem}
@media (min-width:768px){.wide{padding-inline:3rem}}
@media (min-width:1024px){.wide{padding-inline:120px}}
.display{font-weight:300;line-height:.95;letter-spacing:-.02em}
.h1{font-size:2.5rem}
@media (min-width:640px){.h1{font-size:3.75rem}}
@media (min-width:1024px){.h1{font-size:5rem}}
.h2{font-size:2rem}
@media (min-width:1024px){.h2{font-size:3rem}}
.eyebrow{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.3em;color:var(--muted)}
.pill-white,.pill-black,.pill-line{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;padding:12px 24px;font-size:.875rem;font-weight:500;transition:transform .3s var(--ease-out),background .25s,color .25s}
.pill-white{background:#fff;color:#000}.pill-black{background:#000;color:#fff}
.pill-line{border:1px solid currentColor}
.pill-white:hover,.pill-black:hover{transform:translateY(-2px)}
.pill-line:hover{background:#000;color:#fff;border-color:#000}
.on-dark .pill-line:hover{background:#fff;color:#000;border-color:#fff}

/* Nav */
.nav{position:fixed;left:16px;right:16px;top:16px;z-index:50;display:flex;justify-content:space-between;color:#fff}
@media (min-width:768px){.nav{left:24px;right:24px;top:24px}}
.nav-group{display:flex;gap:8px}
.nav-shell{display:flex;height:44px;align-items:center;border-radius:9999px;border:1px solid rgba(255,255,255,.12);background:rgba(4,7,15,.78);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);box-shadow:0 8px 24px -12px rgba(0,0,0,.45)}
.nav-brand{gap:8px;padding-inline:18px;font-weight:500}
.nav-brand .logo{display:block;width:104px;height:17px;transform:translateY(-2.5px)}
.foot-logo{color:var(--footer-fg);margin-right:auto}.foot-logo .logo{display:block;width:154px;height:25px}
.footer-legal{align-items:center}
.nav-links{padding-inline:8px;display:none}
@media (min-width:768px){.nav-links{display:flex}}
.nav-links a{border-radius:9999px;padding:8px 16px;font-size:.875rem;color:rgba(255,255,255,.8);transition:color .2s}
.nav-links a:hover,.nav-links a[aria-current]{color:#fff}
.nav-cta{display:flex;align-items:center;height:44px;padding-inline:24px;background:var(--brand);color:#fff;font-size:.9rem;font-weight:600;border-radius:9999px;box-shadow:0 8px 24px -12px rgba(0,0,0,.45);transition:transform .3s var(--ease-out)}
.nav-cta:hover{transform:translateY(-2px)}

/* Page hero: CSS approximation of the homepage mesh gradient */
.ph{position:relative;overflow:hidden;color:#fff;padding-top:9rem;padding-bottom:4.5rem;
  background:
    radial-gradient(45% 60% at 6% 108%,rgba(238,243,255,.95) 0%,rgba(238,243,255,0) 62%),
    radial-gradient(40% 50% at 100% -6%,rgba(107,153,255,.55) 0%,transparent 70%),
    radial-gradient(70% 70% at 55% 42%,#04070f 0%,rgba(4,7,15,.85) 35%,rgba(4,7,15,0) 75%),
    linear-gradient(180deg,#1a3ad6,#1c3ee6)}
.ph-inner{position:relative;display:grid;gap:2.5rem;align-items:end}
.ph-inner>*{min-width:0}
@media (min-width:1024px){.ph-inner.split{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}}
.crumbs{display:flex;flex-wrap:wrap;gap:.5rem;font-size:.88rem;color:rgba(255,255,255,.7);margin-bottom:2rem}
.crumbs a:hover{color:#fff}
.crumbs span[aria-hidden]{opacity:.5}
.ph .lead{margin-top:1.5rem;max-width:36rem;font-size:1.125rem;line-height:1.6;color:rgba(255,255,255,.75)}
.ph .tag{display:inline-block;margin-bottom:1.25rem;border-radius:9999px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2);padding:6px 13px;font-size:.85rem}
.facts{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:2rem}
.facts span{border-radius:9999px;background:rgba(0,0,0,.28);padding:8px 15px;font-size:.9rem}
.facts b{font-weight:600;color:var(--accent-lime)}
.ph-ctas{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-top:2rem}
.ph-photo{position:relative;border-radius:1.5rem;overflow:hidden;aspect-ratio:4/3;box-shadow:0 30px 60px -20px rgba(0,0,0,.6)}
.ph-photo img{width:100%;height:100%;object-fit:cover}
.ph-photo figcaption{position:absolute;left:0;right:0;bottom:0;padding:2.5rem 1.25rem 1rem;font-size:.85rem;color:rgba(255,255,255,.8);background:linear-gradient(to top,rgba(4,7,15,.8),transparent)}

/* Sections */
.sec{padding-block:5rem}
.sec-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem 2rem;margin-bottom:2.5rem}
.sec-head p{max-width:28rem;line-height:1.6;color:rgba(0,0,0,.55)}
.grid2{display:grid;gap:3rem}
@media (min-width:1024px){.grid2{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:5rem}}
.panel{border-radius:1.5rem;background:#ededf0;padding:2rem}
.panel h3{font-size:1.25rem;font-weight:500;margin-bottom:1rem}
.panel li{padding:.5rem 0;border-top:1px solid rgba(0,0,0,.08);line-height:1.5}
.panel li:first-child{border-top:0}
.panel + .panel{margin-top:1.25rem}
.panel.dark{background:var(--card-dark);color:#fff}
.panel.dark li{border-color:rgba(255,255,255,.1);color:rgba(255,255,255,.8)}
.days li{display:grid;grid-template-columns:4.5rem 1fr;gap:1rem;padding:1.25rem 0;border-top:1px solid rgba(0,0,0,.1);font-size:1.25rem;line-height:1.35;letter-spacing:-.01em}
.days li:last-child{border-bottom:1px solid rgba(0,0,0,.1)}
.days li span{font-size:.9rem;color:rgba(0,0,0,.45);padding-top:.35rem;font-variant-numeric:tabular-nums}
.city-row{display:grid;gap:.75rem;padding:1.25rem 0;border-top:1px solid rgba(0,0,0,.1)}
@media (min-width:768px){.city-row{grid-template-columns:10rem 1fr}}
.city-row b{font-weight:500;font-size:1.25rem}
.city-row small{display:block;color:rgba(0,0,0,.55);font-size:.85rem;margin-top:.25rem}
.dates{display:flex;flex-wrap:wrap;gap:.5rem}
.dates a{border:1px solid rgba(0,0,0,.15);border-radius:9999px;padding:8px 14px;font-size:.875rem;transition:background .2s,color .2s,border-color .2s}
.dates a:hover{background:#000;color:#fff;border-color:#000}
.note{font-size:.9rem;line-height:1.55;color:rgba(0,0,0,.58)}

/* Cards */
.cards{display:grid;gap:1.25rem}
@media (min-width:640px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1024px){.cards{grid-template-columns:repeat(3,minmax(0,1fr))}}
.card{position:relative;display:flex;flex-direction:column;overflow:hidden;border-radius:1.5rem;background:#ededf0;transition:transform .5s var(--ease-out)}
.card:hover{transform:translateY(-4px)}
.card .ph-img{position:relative;aspect-ratio:16/10;overflow:hidden}
.card .ph-img img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease-out)}
.card:hover .ph-img img{transform:scale(1.05)}
.card .badge{position:absolute;left:1rem;top:1rem;border-radius:9999px;background:#fff;padding:5px 11px;font-size:.78rem;font-weight:600}
.card .bd{display:flex;flex-direction:column;gap:.6rem;padding:1.5rem;flex:1}
.card .kick{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.15em;color:rgba(0,0,0,.45)}
.card h3{font-size:1.35rem;font-weight:400;line-height:1.25;letter-spacing:-.015em}
.card p{line-height:1.5;color:rgba(0,0,0,.6)}
.card .meta{margin-top:auto;padding-top:.5rem;font-size:.88rem;color:rgba(0,0,0,.58)}
.chips{display:flex;flex-wrap:wrap;gap:.375rem}
.chips span{border-radius:9999px;background:#fff;padding:5px 11px;font-size:.85rem}
.chips b{font-weight:600}
.filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2rem}
.filters button{border:1px solid rgba(0,0,0,.15);border-radius:9999px;padding:8px 16px;font-size:.875rem;transition:background .25s,color .25s,border-color .25s}
.filters button:hover{border-color:#000}
.filters button[aria-pressed="true"]{background:#000;color:#fff;border-color:#000}
.filters button span{margin-left:.375rem;opacity:.5}
.empty{padding:3rem 0;color:rgba(0,0,0,.5)}

/* Gallery */
.masonry{columns:2;column-gap:.75rem}
@media (min-width:768px){.masonry{columns:3;column-gap:1rem}}
@media (min-width:1280px){.masonry{columns:4}}
.masonry button{position:relative;display:block;width:100%;margin-bottom:.75rem;break-inside:avoid;border-radius:1rem;overflow:hidden;cursor:zoom-in;text-align:left;color:#fff;background:#ededf0}
@media (min-width:768px){.masonry button{margin-bottom:1rem}}
.masonry img{width:100%;height:auto;transition:transform .9s var(--ease-out)}
.masonry button::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(4,7,15,.75),transparent 50%);opacity:.9}
.masonry button:hover img{transform:scale(1.05)}
.masonry .cap{position:absolute;left:.9rem;right:.9rem;bottom:.8rem;z-index:1}
.masonry .cap b{display:block;font-weight:500;line-height:1.25}
.masonry .cap span{font-size:.82rem;color:rgba(255,255,255,.82)}
.lightbox{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;padding:4.5rem 1rem 6rem;background:rgba(4,7,15,.92);opacity:0;pointer-events:none;transition:opacity .35s}
.lightbox.open{opacity:1;pointer-events:auto}
.lightbox img{max-width:min(100%,72rem);max-height:100%;border-radius:1rem;object-fit:contain}
.lb-cap{position:absolute;left:0;right:0;bottom:1.75rem;text-align:center;color:#fff;padding-inline:5rem}
.lb-cap b{display:block;font-weight:400;font-size:1.25rem}
.lb-cap span{font-size:.8rem;color:rgba(255,255,255,.6)}
.lb-btn{position:absolute;width:48px;height:48px;border-radius:9999px;background:rgba(255,255,255,.12);color:#fff;display:flex;align-items:center;justify-content:center}
.lb-btn:hover{background:rgba(255,255,255,.25)}
.lb-close{top:1rem;right:1rem}.lb-prev{left:1rem;bottom:1.25rem}.lb-next{right:1rem;bottom:1.25rem}
@media (min-width:768px){.lb-prev,.lb-next{top:50%;bottom:auto;transform:translateY(-50%)}}

/* Article */
.article-cover{margin-top:-2.5rem;position:relative;z-index:2;border-radius:1.5rem;overflow:hidden;aspect-ratio:21/9;box-shadow:0 30px 60px -30px rgba(0,0,0,.45)}
.article-cover img{width:100%;height:100%;object-fit:cover}
.article-wrap{display:grid;gap:3rem;padding-block:4rem 5rem}
@media (min-width:1024px){.article-wrap{grid-template-columns:minmax(0,1fr) 20rem;gap:5rem}}
.prose{max-width:44rem;font-size:1.125rem;line-height:1.75;color:rgba(0,0,0,.78)}
.prose .lead{font-size:1.4rem;line-height:1.5;color:#000;letter-spacing:-.01em}
.prose h2{margin:3rem 0 1rem;font-size:1.9rem;font-weight:300;line-height:1.15;letter-spacing:-.02em;color:#000}
.prose p{margin-top:1.1rem}
.prose ul,.prose ol{margin-top:1rem;display:grid;gap:.6rem}
.prose ul li{position:relative;padding-left:1.4rem}
.prose ul li::before{content:"";position:absolute;left:0;top:.72em;width:7px;height:7px;border-radius:9999px;background:var(--brand)}
.prose ol{counter-reset:n}
.prose ol li{position:relative;padding-left:2.4rem;counter-increment:n}
.prose ol li::before{content:counter(n);position:absolute;left:0;top:.15em;width:1.7rem;height:1.7rem;border-radius:9999px;background:#ededf0;font-size:.8rem;font-weight:600;display:flex;align-items:center;justify-content:center;color:#000}
.prose strong{color:#000;font-weight:600}
.prose table{width:100%;margin-top:1.5rem;border-collapse:collapse;font-size:1rem}
.prose th,.prose td{text-align:left;padding:.8rem 1rem;border-bottom:1px solid rgba(0,0,0,.1)}
.prose th{font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:rgba(0,0,0,.5)}
.prose .note{margin-top:2.5rem;padding:1.25rem 1.5rem;border-radius:1rem;background:#ededf0;font-size:.9rem}
.aside{display:flex;flex-direction:column;gap:1.25rem}
@media (min-width:1024px){.aside{position:sticky;top:6rem;align-self:start}}
.cta-box{border-radius:1.5rem;padding:2rem;color:#fff;background:radial-gradient(90% 80% at 0% 100%,rgba(238,243,255,.5),transparent 60%),radial-gradient(80% 70% at 100% 0%,#2e9bff,transparent 60%),#1c3ee6}
.cta-box h3{font-size:1.5rem;font-weight:300;line-height:1.15;letter-spacing:-.02em}
.cta-box p{margin-top:.75rem;color:rgba(255,255,255,.8);line-height:1.5}
.cta-box .pill-white{margin-top:1.5rem}
.mini{display:grid;grid-template-columns:5rem 1fr;gap:1rem;align-items:center;padding:.75rem;border-radius:1rem;background:#ededf0;transition:background .2s}
.mini:hover{background:#e2e2e8}
.mini img{width:5rem;height:4rem;border-radius:.75rem;object-fit:cover}
.mini b{display:block;font-weight:500;line-height:1.25}
.mini span{font-size:.85rem;color:rgba(0,0,0,.58)}
.lang-switch{display:inline-flex;margin-top:1.5rem;border-radius:9999px;background:rgba(255,255,255,.16);padding:7px 15px;font-size:.88rem}
.lang-switch:hover{background:rgba(255,255,255,.25)}

/* Legal */
.draft{display:flex;gap:.75rem;align-items:flex-start;border-radius:1rem;background:#fff3c4;padding:1rem 1.25rem;font-size:.9rem;line-height:1.5;margin-bottom:2.5rem}
.legal{max-width:46rem;font-size:1rem;line-height:1.7;color:rgba(0,0,0,.78)}
.legal h2{margin:2.25rem 0 .75rem;font-size:1.35rem;font-weight:500;color:#000}
.legal p+p{margin-top:.75rem}
.legal ul{margin-top:.5rem;display:grid;gap:.3rem;padding-left:1.1rem;list-style:disc}
.legal .todo{background:#fff6c7;padding:0 .3em;border-radius:.25em}

/* Footer */
.footer{position:relative;overflow:hidden;color:var(--footer-fg);padding:5rem 1.5rem 1.5rem;
  background:radial-gradient(40% 60% at 4% 105%,rgba(238,243,255,.7),transparent 65%),radial-gradient(50% 60% at 100% 0%,rgba(46,155,255,.35),transparent 70%),radial-gradient(80% 70% at 50% 45%,#04070f,rgba(4,7,15,.4) 60%,transparent 90%),var(--brand)}
@media (min-width:768px){.footer{padding:5rem 2.5rem 2.5rem}}
@media (min-width:1024px){.footer{padding:5rem 3rem 3rem}}
.footer-top{display:flex;flex-direction:column;align-items:center;text-align:center}
.footer-h{font-size:2rem;font-weight:300;line-height:1.05;letter-spacing:-.02em}
@media (min-width:1024px){.footer-h{font-size:3.5rem}}
.foot-ctas{margin-top:2rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem}
.btn-foot{display:inline-flex;border:1px solid rgba(242,244,241,.4);border-radius:9999px;padding:12px 24px;font-size:.875rem;font-weight:500;transition:background .25s,color .25s}
.btn-foot:hover,.btn-foot.solid{background:var(--footer-fg);color:var(--footer)}
.btn-foot.solid:hover{background:transparent;color:var(--footer-fg)}
.footer-nav{margin-top:5rem;border-top:1px solid rgba(242,244,241,.15);padding-top:3rem;display:grid;gap:2.5rem;grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:1024px){.footer-nav{grid-template-columns:1fr 2.4fr 1.2fr 1fr}}
.fn-col h4{margin-bottom:1rem;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--footer-muted)}
.fn-col ul{display:flex;flex-direction:column;gap:.5rem}
.fn-col a,.fn-col li{font-size:.95rem;color:rgba(242,244,241,.8);line-height:1.6}
.fn-col a:hover{color:var(--footer-fg)}
.offices{display:grid;gap:1.25rem;grid-template-columns:repeat(2,minmax(0,1fr));font-size:.95rem;color:rgba(242,244,241,.8);line-height:1.6}
.offices b{display:block;font-weight:500;color:var(--footer-fg)}
.offices small{display:block;font-size:.82rem;color:var(--footer-muted)}
@media (max-width:1023px){.fn-offices{grid-column:1/-1}}
.footer-legal{margin-top:3rem;display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem 2rem;font-size:.85rem;color:var(--footer-muted)}
.footer-legal nav{display:flex;gap:1.5rem}
.footer-legal a:hover{color:var(--footer-fg)}

/* Reveal on scroll (progressive: content is visible without JS) */
.js [data-rise]{opacity:0;transform:translateY(24px);filter:blur(10px);transition:opacity 1s var(--ease-out),transform 1s var(--ease-out),filter 1s var(--ease-out)}
.js [data-rise].in{opacity:1;transform:none;filter:none}

/* ---------- In-page pre-registration dock ---------- */
.qr{--qr-e:cubic-bezier(.16,1,.3,1);color:#000}
.qr-pill{position:fixed;z-index:60;right:24px;bottom:24px;display:flex;align-items:center;gap:12px;max-width:min(380px,calc(100vw - 24px));padding:8px 10px 8px 8px;border-radius:9999px;background:rgba(4,7,15,.86);color:#fff;border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);box-shadow:0 20px 50px -20px rgba(4,7,15,.7);text-align:left;opacity:0;transform:translateY(24px);pointer-events:none;transition:opacity .5s var(--qr-e),transform .6s var(--qr-e),background .25s}
.qr.qr-show .qr-pill{opacity:1;transform:none;pointer-events:auto}
.qr-pill:hover{background:rgba(4,7,15,.95)}
.qr[data-state="open"] .qr-pill,.qr[data-state="sent"] .qr-pill:not([aria-expanded="false"]){opacity:0;pointer-events:none;transform:translateY(12px)}
.qr-pill-mark{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:9999px;background:var(--brand,#1c3ee6)}
.qr-pill-mark svg{width:22px;height:22px;color:#fff}
.qr-pill-t{display:flex;flex-direction:column;min-width:0}
.qr-pill-t b{font-size:.95rem;font-weight:600}
.qr-pill-t small{font-size:.8rem;color:rgba(255,255,255,.65);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qr-pill-go,.qr-pill-n{display:grid;place-items:center;flex:none;width:34px;height:34px;border-radius:9999px;background:#fff;color:#04070f;margin-left:auto;font-weight:600;font-size:.9rem}
.qr-pill-go svg{width:15px;height:15px}
.qr-scrim{position:fixed;inset:0;z-index:61;background:rgba(4,7,15,.45)}
.qr-panel{position:fixed;z-index:62;right:24px;bottom:24px;width:min(430px,calc(100vw - 48px));max-height:calc(100vh - 48px);display:flex;flex-direction:column;border-radius:28px;background:#fff;box-shadow:0 40px 90px -30px rgba(4,7,15,.55),0 0 0 1px rgba(4,7,15,.06);overflow:hidden}
.qr-panel[hidden]{display:none}
.qr-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:20px 22px 14px;border-bottom:1px solid rgba(0,0,0,.06)}
.qr-head p{font-size:.72rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--brand,#1c3ee6)}
.qr-head h3{margin-top:.2rem;font-size:1.2rem;font-weight:500;line-height:1.2;letter-spacing:-.01em}
.qr-x{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:9999px;background:#f1f2f5}
.qr-x:hover{background:#e6e8ee}.qr-x svg{width:14px;height:14px}
.qr-body{flex:1;overflow:auto;overscroll-behavior:contain;padding:6px 22px 18px}
.qr-b{margin-top:16px}
.qr-b h4{margin-bottom:8px;font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:rgba(0,0,0,.5)}
.qr-chips{display:flex;flex-wrap:wrap;gap:6px}
.qr-chip{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:.45rem .9rem;border-radius:9999px;background:#f1f2f5;font-size:.9rem;transition:background .2s,color .2s}
.qr-chip:hover{background:#e6e8ee}
.qr-chip[aria-pressed="true"]{background:#04070f;color:#fff}
.qr-chip small{opacity:.55;font-size:.75rem}
.qr-chip img{width:18px;height:18px;border-radius:9999px;object-fit:cover}
.qr-seg{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:9999px;background:#f1f2f5}
.qr-seg .qr-chip{justify-content:center;background:transparent}
.qr-seg .qr-chip[aria-pressed="true"]{background:#fff;color:#000;box-shadow:0 2px 8px -2px rgba(4,7,15,.2)}
.qr-dates{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:6px}
.qr-date{min-height:44px;padding:.5rem .6rem;border-radius:14px;background:#f1f2f5;font-size:.9rem;font-weight:600;transition:background .2s,color .2s,transform .2s}
.qr-date:hover{background:#e6e8ee}
.qr-date[aria-pressed="true"]{background:var(--brand,#1c3ee6);color:#fff}
.qr-date.ghost{font-weight:400}
.qr-count{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:10px}
.qr-count>span{font-size:.92rem}
.qr-step{display:inline-flex;align-items:center;border-radius:9999px;background:#f1f2f5;padding:3px}
.qr-step button{display:grid;place-items:center;width:36px;height:36px;border-radius:9999px;font-size:1.2rem}
.qr-step button:hover{background:#fff}
.qr-step input{width:3rem;text-align:center;background:none;font-size:1.05rem;font-weight:600;outline:none;-moz-appearance:textfield}
.qr-step input::-webkit-inner-spin-button{-webkit-appearance:none}
.qr-note{margin-top:8px;font-size:.8rem;line-height:1.45;color:rgba(0,0,0,.5)}
.qr-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.qr-row select,.qr-f input,.qr-f select{min-height:46px;padding:.6rem .9rem;border-radius:12px;background:#f1f2f5;border:1.5px solid transparent;font-size:.95rem;outline:none;-webkit-appearance:none;appearance:none;color:#000}
.qr-row select{flex:1;min-width:10rem}
.qr-row select:focus,.qr-f input:focus,.qr-f select:focus{border-color:#000;background:#fff}
.qr-tick{display:flex;align-items:flex-start;gap:8px;font-size:.88rem;line-height:1.4;cursor:pointer}
.qr-tick input{flex:none;width:18px;height:18px;margin-top:1px;accent-color:var(--brand,#1c3ee6)}
.qr-tick a{text-decoration:underline}
.qr-consent{margin-top:12px;color:rgba(0,0,0,.65)}
.qr-consent.bad{color:#b3261e}
.qr-fields{display:grid;gap:10px}
@media (min-width:480px){.qr-fields{grid-template-columns:1fr 1fr}.qr-fields .qr-f:nth-child(1),.qr-fields .qr-f:nth-child(2){grid-column:span 1}}
.qr-f{display:flex;flex-direction:column;gap:4px;min-width:0}
.qr-f>span{font-size:.78rem;font-weight:600;color:rgba(0,0,0,.6)}
.qr-f.bad input{border-color:#c0392f;background:#fff6f5}
.qr-err{margin-top:4px;font-size:.8rem;color:#b3261e}
.qr-me{display:flex;align-items:center;gap:12px;padding:12px;border-radius:16px;background:#f5f7ff}
.qr-av{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:9999px;background:var(--brand,#1c3ee6);color:#fff;font-weight:600}
.qr-me>div:not(.qr-me-a){min-width:0;flex:1}
.qr-me b{display:block;font-weight:600}
.qr-me small{display:block;font-size:.8rem;color:rgba(0,0,0,.55);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qr-me-a{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.qr-me-a button{font-size:.78rem;color:var(--brand,#1c3ee6)}
.qr-basket{margin-top:14px;padding:12px 14px;border-radius:16px;background:#f5f7ff}
.qr-basket h4{font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--brand,#1c3ee6);margin-bottom:6px}
.qr-basket li{display:flex;justify-content:space-between;gap:10px;padding:6px 0;font-size:.85rem;line-height:1.4;border-top:1px solid rgba(28,62,230,.1)}
.qr-basket li:first-child{border-top:0}
.qr-basket li button{flex:none;width:24px;height:24px;border-radius:9999px;color:rgba(0,0,0,.45)}
.qr-basket li button:hover{background:#fff;color:#b3261e}
.qr-foot{padding:14px 22px 18px;border-top:1px solid rgba(0,0,0,.06);background:#fff}
.qr-sum{display:flex;flex-direction:column;gap:2px;margin-bottom:12px;font-size:.85rem;line-height:1.4}
.qr-sum b{font-weight:600}
.qr-sum span{color:rgba(0,0,0,.55)}
.qr-acts{display:flex;flex-wrap:wrap;gap:8px}
.qr-primary{flex:1 1 auto;display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border-radius:9999px;background:var(--brand,#1c3ee6);color:#fff;font-size:.95rem;font-weight:600;box-shadow:0 12px 26px -12px rgba(28,62,230,.8);transition:transform .3s var(--qr-e)}
.qr-primary:hover{transform:translateY(-1px)}
.qr-ghost{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 16px;border-radius:9999px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.18);font-size:.9rem;font-weight:500}
.qr-ghost:hover{background:#f1f2f5}
.qr-fine{margin-top:10px;font-size:.75rem;line-height:1.45;color:rgba(0,0,0,.45)}
.qr-fine.on{color:var(--brand,#1c3ee6);font-weight:600}
.qr-sent{text-align:center;padding:26px 24px 22px}
.qr-sent h3{margin-top:14px;font-size:1.25rem;font-weight:500;line-height:1.25}
.qr-sent p{margin-top:6px;color:rgba(0,0,0,.6)}
.qr-sent .qr-acts{margin-top:18px;flex-direction:column}
.qr-seal{display:inline-grid;place-items:center;width:64px;height:64px;border-radius:9999px;background:radial-gradient(circle at 30% 25%,#4d74ff,#1c3ee6 60%,#1531b8);box-shadow:0 0 0 4px #fff,0 0 0 5px rgba(28,62,230,.25)}
.qr-seal svg{width:30px;height:30px;color:#fff}
@media (max-width:767px){
  .qr-pill{left:12px;right:12px;bottom:12px;max-width:none}
  .qr-panel{left:0;right:0;bottom:0;width:auto;max-height:90vh;max-height:90dvh;border-radius:24px 24px 0 0}
  .qr-head::before{content:"";position:absolute;left:50%;top:8px;width:40px;height:4px;margin-left:-20px;border-radius:9999px;background:rgba(0,0,0,.15)}
  .qr-head{position:relative;padding-top:24px}
  .qr-foot{padding-bottom:calc(18px + env(safe-area-inset-bottom))}
}
html.qr-lock,html.qr-lock body{overflow:hidden}
@media (prefers-reduced-motion:reduce){.qr-pill{transition:none}}

/* Destination photography attribution. */
.photo-credit{padding:1.25rem;background:#eef2fa;border-radius:1.5rem;scroll-margin-top:8rem;min-width:0}
.photo-credit img{width:100%;height:15rem;object-fit:cover;border-radius:.8rem}
.photo-credit h2{font-size:1.5rem;margin-top:1rem}
.photo-credit p{margin-top:.75rem;line-height:1.5;overflow-wrap:anywhere}
.photo-credit a{text-decoration:underline;text-underline-offset:3px}
.ph-photo figcaption a{text-decoration:underline;text-underline-offset:3px}

/* ================= 2027 course catalogue (/courses/) ================= */
:where(.cx,.cxh,.tray) button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
:root{--c-berlin:#4d6bff;--c-vienna:#14b8a6;--c-helsinki:#a78bfa;--c-budapest:#ff8a3d}
/* header: copy + year wall */
.cxh{padding-top:8rem;padding-bottom:3rem}
.cxh-in{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:2.5rem}
.cxh-in>*{min-width:0}
.cxh-t{font-size:2.9rem;letter-spacing:-.035em}
.cxh-t span{background:linear-gradient(100deg,#fff 10%,#a9bbff 60%,#6f8cff);-webkit-background-clip:text;background-clip:text;color:transparent}
@media (min-width:640px){.cxh-t{font-size:4.4rem}}
@media (min-width:1024px){.cxh-t{font-size:clamp(4.6rem,6vw,6.2rem)}}
@media (min-width:1100px){.cxh-t{font-size:clamp(3.8rem,4.7vw,5.8rem)}}
.cxh .lead{max-width:34rem}
.cxh-meta{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.75rem;margin-top:1.75rem}
.cxh-steps{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;font-size:.85rem;color:rgba(255,255,255,.75)}
.cxh-steps li{display:flex;align-items:center;gap:.45rem}
.cxh-steps b{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1px solid rgba(255,255,255,.35);font-size:.72rem;font-weight:600}
.cxh-wall{border-radius:1.6rem;padding:1.1rem 1.1rem .7rem;background:linear-gradient(135deg,rgba(255,255,255,.12),rgba(255,255,255,.04));border:1px solid rgba(255,255,255,.16);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 30px 60px -30px rgba(2,6,40,.6);-webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%)}
.wl-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.6rem 1.5rem;margin-bottom:1rem}
.wl-head p{display:flex;flex-direction:column;gap:.15rem}
.wl-head b{font-size:1.25rem;font-weight:400;letter-spacing:-.01em}
.wl-head p span{font-size:.8rem;color:rgba(255,255,255,.6)}
.wl-key{display:flex;flex-wrap:wrap;gap:.35rem .9rem;font-size:.78rem;color:rgba(255,255,255,.8)}
.wl-key span{display:inline-flex;align-items:center;gap:.4rem}
.wl-key i{width:8px;height:8px;border-radius:50%}
.wl-scroll{overflow-x:auto;scrollbar-width:none;margin-inline:-.25rem;padding:0 .25rem}
.wl-scroll::-webkit-scrollbar{display:none}
@media (min-width:760px){.wl-scroll{overflow:visible}.wl,.wl-months{min-width:0}}
@media (hover:none){.wk .tip{display:none}}
.wl{position:relative;display:grid;grid-template-columns:repeat(53,minmax(9px,1fr));gap:3px;align-items:end;height:8.5rem;min-width:40rem}
.wk{position:relative;display:flex;align-items:flex-end;height:100%;padding:0;border-radius:4px}
.wk::before{content:"";position:absolute;inset:0;border-radius:4px;background:rgba(255,255,255,.04);transition:background .2s}
.wk:hover::before,.wk:focus-visible::before{background:rgba(255,255,255,.1)}
.wk .bar{position:relative;display:flex;flex-direction:column-reverse;width:100%;height:var(--h,4%);border-radius:3px;overflow:hidden;transition:height .55s cubic-bezier(.22,1,.36,1)}
.wl:not(.ready) .wk .bar{transition:none}
.wk .bar i{display:block;flex:0 1 0;min-height:0}
.wk.empty .bar{background:rgba(255,255,255,.14)}
.wk.dim{opacity:.32}
.wk.sel::before{background:rgba(255,255,255,.18);box-shadow:inset 0 0 0 1.5px #fff}
.wk .tip{position:absolute;left:50%;bottom:calc(100% + 10px);z-index:5;display:flex;flex-direction:column;gap:.15rem;min-width:9.5rem;transform:translate(-50%,4px);border-radius:.7rem;background:#0a1533;color:#fff;padding:.55rem .7rem;font-size:.75rem;line-height:1.3;text-align:left;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s;box-shadow:0 12px 30px -10px rgba(0,0,0,.6)}
.wk .tip b{font-weight:600;font-size:.78rem}
.wk .tip em{display:flex;align-items:center;gap:.35rem;font-style:normal;color:rgba(255,255,255,.75)}
.wk .tip em i{display:block;width:6px;height:6px;border-radius:50%;max-height:none}
.wk:hover .tip,.wk:focus-visible .tip{opacity:1;transform:translate(-50%,0)}
.wk:nth-child(-n+5) .tip{left:0;transform:translate(0,4px)}
.wk:nth-child(-n+5):hover .tip{transform:none}
.wk:nth-last-child(-n+5) .tip{left:auto;right:0;transform:translate(0,4px)}
.wk:nth-last-child(-n+5):hover .tip{transform:none}
.wl-months{position:relative;height:2rem;min-width:40rem;margin-top:.35rem}
.wl-months button{position:absolute;top:.2rem;border-radius:9999px;padding:4px 9px;font-size:.74rem;color:rgba(255,255,255,.62);transform:translateX(-4px);transition:background .2s,color .2s}
.wl-months button:hover{color:#fff;background:rgba(255,255,255,.1)}
.wl-months button[aria-pressed="true"]{background:#fff;color:#0a1533;font-weight:600}
@media (min-width:1100px){.cxh-in{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:end;gap:3rem}.cxh-wall{margin-bottom:.4rem}}
/* sticky filter bar */
.cx{padding-block:2rem 6rem}
.cx-bar{position:sticky;top:72px;z-index:20;display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-inline:-.75rem;padding:.75rem;border-radius:1.25rem;background:#fff;transition:box-shadow .3s}
.cx-bar.stuck{box-shadow:0 10px 30px -12px rgba(10,21,51,.25),0 0 0 1px rgba(10,21,51,.06)}
.cx-search{display:flex;align-items:center;gap:.6rem;flex:1 1 15rem;min-width:0;height:46px;border-radius:9999px;background:#f2f3f7;padding-inline:1rem;transition:box-shadow .2s}
.cx-search:focus-within{box-shadow:0 0 0 2px var(--brand)}
.cx-search svg{width:18px;height:18px;flex:none;color:rgba(0,0,0,.45)}
.cx-search input{flex:1;min-width:0;height:100%;outline:0;font-size:.95rem}
.cx-search input::placeholder{color:rgba(0,0,0,.42)}
.cx-seg{display:flex;gap:2px;max-width:100%;overflow-x:auto;scrollbar-width:none;border-radius:9999px;background:#f2f3f7;padding:3px}
.cx-seg::-webkit-scrollbar,.cx-tags::-webkit-scrollbar{display:none}
.cx-seg button{display:inline-flex;align-items:center;gap:.4rem;flex:none;height:40px;border-radius:9999px;padding-inline:14px;font-size:.875rem;color:rgba(0,0,0,.7);transition:background .2s,color .2s}
.cx-seg button:hover{color:#000}
.cx-seg button[aria-pressed="true"]{background:#0a1533;color:#fff}
.cx-seg button span{font-size:.75rem;opacity:.55;font-variant-numeric:tabular-nums}
.cx-seg i,.cx-city i,.pl-legend i,.ag-d i,.tray-list li>i{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none}
.cx-view{margin-left:auto}
.cx-tags{display:flex;gap:.35rem;flex:1 1 100%;overflow-x:auto;scrollbar-width:none}
.cx-tags button{flex:none;border:1px solid rgba(0,0,0,.12);border-radius:9999px;padding:6px 13px;font-size:.82rem;transition:background .2s,color .2s,border-color .2s}
.cx-tags button:hover{border-color:#000}
.cx-tags button[aria-pressed="true"]{background:var(--brand);border-color:var(--brand);color:#fff}
.cx-status{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:2.75rem;margin:1rem 0 .9rem;font-size:.95rem;color:rgba(0,0,0,.65)}
.cx-status b{color:#000;font-weight:600}
#cxReset{border-radius:9999px;padding:8px 14px;font-size:.85rem;text-decoration:underline;text-underline-offset:3px}
/* course cards */
.cx-cards{display:grid;gap:1.25rem}
@media (min-width:760px){.cx-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1200px){.cx-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}
.cx-card{display:flex;flex-direction:column;min-width:0;overflow:hidden;border-radius:1.5rem;background:#f4f5f8;content-visibility:auto;contain-intrinsic-size:auto 36rem;transition:box-shadow .3s}
.cx-card.has-sel{box-shadow:0 0 0 2px var(--brand)}
.cx-ph{position:relative;display:block;aspect-ratio:16/8;overflow:hidden}
.cx-ph img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease-out)}
.cx-card:hover .cx-ph img{transform:scale(1.04)}
.cx-ph .badge{position:absolute;left:1rem;top:1rem;border-radius:9999px;background:#fff;padding:5px 11px;font-size:.78rem;font-weight:600}
.cx-first{position:absolute;right:1rem;top:1rem;border-radius:9999px;background:rgba(10,21,51,.78);color:#fff;padding:5px 11px;font-size:.78rem;font-weight:600}
.cx-bd{display:flex;flex-direction:column;gap:.55rem;flex:1;padding:1.3rem 1.3rem 1.2rem}
.cx-bd h3{font-size:1.4rem;font-weight:400;line-height:1.2;letter-spacing:-.015em}
.cx-bd h3 a:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.cx-bd>p{line-height:1.5;color:rgba(0,0,0,.6)}
.cx-yl{position:relative;display:grid;grid-template-columns:1fr 1fr 1fr;margin-top:.3rem;font-size:.66rem;color:rgba(0,0,0,.4)}
.cx-yl div{position:relative;grid-column:1/-1;height:12px;margin-bottom:.2rem;background:linear-gradient(rgba(0,0,0,.08),rgba(0,0,0,.08)) center/100% 1px no-repeat}
.cx-yl i{position:absolute;top:2px;width:8px;height:8px;margin-left:-4px;border-radius:50%;transition:opacity .3s,transform .3s}
.cx-yl i.off{opacity:.18;transform:scale(.7)}
.cx-yl span:nth-of-type(2){text-align:center}.cx-yl span:nth-of-type(3){text-align:right}
.cx-sum{font-size:.85rem!important;color:rgba(0,0,0,.55)!important}
.cx-sum b{color:#000;font-weight:600}
.cx-hint{color:var(--brand)}
.cx-dates{display:flex;flex-direction:column;gap:.55rem;margin-top:.2rem;padding-top:.8rem;border-top:1px solid rgba(0,0,0,.08)}
.cx-city{display:grid;grid-template-columns:5.6rem 1fr;gap:.5rem;align-items:start}
.cx-city b{display:flex;align-items:center;gap:.45rem;padding-top:.45rem;font-size:.82rem;font-weight:600}
.cx-ds{display:flex;flex-wrap:wrap;gap:.3rem}
.cx-d{position:relative;display:inline-flex;align-items:center;gap:.3rem;border-radius:9999px;background:#fff!important;border:1px solid rgba(0,0,0,.1)!important;padding:6px 11px!important;font-size:.8rem;white-space:nowrap;transition:background .2s,color .2s,border-color .2s,padding .2s}
.cx-d:hover{border-color:#0a1533!important}
.cx-d[aria-pressed="true"]{background:var(--brand)!important;border-color:var(--brand)!important;color:#fff;padding-left:8px!important}
.cx-d[aria-pressed="true"]::before{content:"";width:12px;height:12px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.3 5 8.6l4.5-5' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.3 5 8.6l4.5-5' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.cx-foot{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:auto;padding-top:.9rem;font-size:.875rem}
.cx-foot a{text-decoration:underline;text-underline-offset:3px;color:rgba(0,0,0,.7)}
/* calendar view */
.cx-plan{border-radius:1.5rem;background:#f4f5f8;padding:1.25rem}
.pl-legend{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.1rem;margin-bottom:1rem;font-size:.85rem}
.pl-legend span{display:inline-flex;align-items:center;gap:.4rem}
.pl-legend em{margin-left:auto;font-style:normal;color:rgba(0,0,0,.5)}
.pl-axis,.pl-row{display:grid;grid-template-columns:14rem 1fr;gap:1rem;align-items:center}
.pl-axis>div{display:grid;grid-template-columns:repeat(12,1fr);font-size:.72rem;color:rgba(0,0,0,.5)}
.pl-axis>div span{padding-left:.3rem;border-left:1px solid rgba(0,0,0,.12)}
.pl-row{padding-block:.3rem;border-top:1px solid rgba(0,0,0,.06)}
.pl-name{font-size:.88rem;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-name:hover{text-decoration:underline;text-underline-offset:3px}
.pl-track{position:relative;height:28px;background:repeating-linear-gradient(90deg,rgba(0,0,0,.07) 0 1px,transparent 1px calc(100%/12))}
.pl-s{position:absolute;top:5px;height:18px;min-width:12px;border-radius:6px;background:var(--c)!important;transition:transform .2s var(--ease-out),box-shadow .2s}
.pl-s[aria-pressed="true"]{box-shadow:0 0 0 2px #fff,0 0 0 4px #0a1533;z-index:3}
.pl-s span{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%,4px);white-space:nowrap;border-radius:.5rem;background:#0a1533;color:#fff;padding:5px 9px;font-size:.75rem;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s;z-index:5}
.pl-s:hover,.pl-s:focus-visible{transform:scaleY(1.25);z-index:4}
.pl-s:hover span,.pl-s:focus-visible span{opacity:1;transform:translate(-50%,0)}
.pl-agenda{display:none}
.ag-m{margin-top:1.25rem}
.ag-m:first-child{margin-top:0}
.ag-m h3{font-size:1.05rem;font-weight:600;margin-bottom:.5rem}
.ag-m li{display:grid;grid-template-columns:7.5rem 1fr auto;gap:.75rem;align-items:center;padding:.65rem 0;border-top:1px solid rgba(0,0,0,.07);font-size:.875rem}
.ag-d{display:flex;align-items:center;gap:.45rem;font-weight:600;font-variant-numeric:tabular-nums}
.ag-t{color:rgba(0,0,0,.55);font-size:.8rem}
.ag-t b{display:block;font-weight:500;line-height:1.25;color:#000}
.ag-add{border-radius:9999px!important;border:1px solid rgba(0,0,0,.15)!important;padding:8px 14px!important;font-size:.8rem;font-weight:600}
.ag-add .r,.ag-add[aria-pressed="true"] .a{display:none}
.ag-add[aria-pressed="true"] .r{display:inline}
.ag-add[aria-pressed="true"]{background:var(--brand)!important;border-color:var(--brand)!important;color:#fff}
@media (max-width:899px){.pl-time{display:none}.pl-agenda{display:block}.pl-legend em{display:none}}
.cx-note{display:grid;gap:1.25rem;align-items:center;margin-top:3rem;border-radius:1.5rem;background:#0a1533;color:#fff;padding:2rem}
@media (min-width:900px){.cx-note{grid-template-columns:1fr auto;padding:2.5rem}}
.cx-note h2{font-size:1.75rem;font-weight:300;letter-spacing:-.02em;line-height:1.1}
.cx-note p{margin-top:.6rem;max-width:40rem;color:rgba(255,255,255,.7);line-height:1.55}
.cx-note .pill-black{background:#fff;color:#0a1533}
.cx-fine{margin-top:1.25rem;font-size:.82rem;color:rgba(0,0,0,.5);max-width:48rem;line-height:1.5}
.cx-card[hidden],.pl-row[hidden],.pl-s[hidden],.cx-d[hidden],.cx-city[hidden],.ag-m[hidden],.ag-m li[hidden],.tray[hidden],.tray-list[hidden]{display:none}
/* tray: the visitor's plan */
.tray{position:fixed;left:50%;bottom:16px;z-index:60;width:min(calc(100% - 24px),60rem);transform:translateX(-50%);color:#fff;animation:tray-in .5s cubic-bezier(.22,1,.36,1)}
@keyframes tray-in{from{opacity:0;transform:translate(-50%,24px)}}
.tray-bar{display:flex;align-items:center;gap:.75rem 1.25rem;border-radius:1.4rem;padding:.6rem .6rem .6rem .7rem;background:rgba(10,21,51,.9);border:1px solid rgba(255,255,255,.14);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 24px 60px -20px rgba(2,6,40,.7);-webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%)}
.tray-sum{display:flex;align-items:center;gap:.75rem;min-width:0;flex:1;text-align:left;padding:.2rem;border-radius:1rem}
.tray-sum svg{width:16px;height:16px;flex:none;opacity:.6;transition:transform .3s}
.tray-sum[aria-expanded="true"] svg{transform:rotate(180deg)}
.tray-n{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;background:var(--brand);font-weight:700;font-variant-numeric:tabular-nums}
.tray-n.bump{animation:tray-bump .45s cubic-bezier(.22,1,.36,1)}
@keyframes tray-bump{40%{transform:scale(1.25)}}
.tray-t{display:flex;flex-direction:column;min-width:0;line-height:1.25}
.tray-t b{font-weight:600}
.tray-t small{font-size:.78rem;color:rgba(255,255,255,.65);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tray-people{display:flex;align-items:center;gap:.35rem;font-size:.78rem;color:rgba(255,255,255,.65)}
.tray-people span{margin-right:.25rem}
.tray-people button{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.1)!important;font-size:1rem;line-height:1}
.tray-people button:hover{background:rgba(255,255,255,.2)!important}
.tray-people output{min-width:1.6rem;text-align:center;font-size:1rem;font-weight:600;color:#fff;font-variant-numeric:tabular-nums}
.tray-fee{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}
.tray-fee small{font-size:.7rem;color:rgba(255,255,255,.55)}
.tray-fee b{font-size:1.1rem;font-weight:600;font-variant-numeric:tabular-nums}
.tray-go{display:inline-flex;align-items:center;gap:.4rem;flex:none;border-radius:1rem;background:#fff;color:#0a1533;padding:13px 18px;font-weight:700;font-size:.9rem;transition:transform .3s var(--ease-out)}
.tray-go:hover{transform:translateY(-2px)}
.tray-list{margin-bottom:.5rem;max-height:min(55vh,26rem);overflow:auto;border-radius:1.4rem;padding:1rem 1.1rem;background:rgba(10,21,51,.94);border:1px solid rgba(255,255,255,.14);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);animation:tray-in .35s cubic-bezier(.22,1,.36,1)}
.tl-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.4rem}
.tl-head button{font-size:.8rem;color:rgba(255,255,255,.65);text-decoration:underline;text-underline-offset:3px}
.tray-list ul{display:grid}
.tray-list li{display:grid;grid-template-columns:auto 1fr auto auto;gap:.75rem;align-items:center;padding:.6rem 0;border-top:1px solid rgba(255,255,255,.08);font-size:.85rem}
.tray-list li span{display:flex;flex-direction:column;color:rgba(255,255,255,.65);font-size:.78rem}
.tray-list li b{color:#fff;font-weight:500;font-size:.88rem}
.tray-list li em{font-style:normal;font-variant-numeric:tabular-nums}
.tray-list li button{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.08)!important;font-size:1rem}
.tray-list p{margin-top:.6rem;font-size:.74rem;line-height:1.5;color:rgba(255,255,255,.55)}
body.has-tray .cx{padding-bottom:9rem}
body.has-tray .footer{padding-bottom:7rem}
.fly{position:fixed;z-index:70;width:12px;height:12px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 3px rgba(77,107,255,.3);pointer-events:none}
@media (max-width:899px){.tray-people span,.tray-fee small{display:none}}
@media (max-width:639px){.cx-view{margin-left:0}.cx-city{grid-template-columns:1fr}.cx-city b{padding-top:0}.ag-m li{grid-template-columns:1fr auto}.ag-d{grid-column:1/-1}
  .tray{bottom:10px}.tray-bar{flex-wrap:wrap;gap:.6rem}.tray-sum{flex:1 1 100%}.tray-fee{order:3;margin-left:auto}.tray-people{order:2}.tray-go{order:4;flex:1 1 100%;justify-content:center}
  .cxh-t{font-size:2.6rem}.wl{height:7rem}}
@media (prefers-reduced-motion:reduce){.tray,.tray-list{animation:none}.wk .bar{transition:none}}
.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}
.cx-search input{border:0;background:none;font:inherit;color:inherit;padding:0;-webkit-appearance:none;appearance:none}
/* ---------- /courses/ hero: 3D course ring + Erasmus+ seal ---------- */
.cxr{position:relative;display:flex;flex-direction:column;min-height:max(40rem,100svh);overflow:hidden;color:#fff;isolation:isolate;
  background:radial-gradient(60% 55% at 50% 52%,#1b3be0 0%,rgba(27,59,224,.35) 45%,transparent 75%),radial-gradient(45% 60% at 0% 100%,rgba(140,170,255,.5),transparent 70%),radial-gradient(40% 50% at 100% 0%,rgba(90,130,255,.45),transparent 70%),#050a1f}
.cxr::after{content:"";position:absolute;inset:auto 0 0;height:45%;z-index:1;background:linear-gradient(to top,rgba(5,10,31,.92),rgba(5,10,31,.4) 55%,transparent);pointer-events:none}
.cxr-stage{position:absolute;inset:0;z-index:0;perspective:1500px;perspective-origin:50% 48%;cursor:grab;touch-action:pan-y}
.cxr-stage.grab{cursor:grabbing}
.cxr-ring{position:absolute;left:50%;top:var(--ry,54%);width:0;height:0;transform-style:preserve-3d;will-change:transform}
.rc{position:absolute;left:0;top:0;width:var(--cw,236px);aspect-ratio:3/2;padding:0;border-radius:1.1rem;overflow:hidden;background:#0d1a55;box-shadow:0 30px 60px -25px rgba(0,0,0,.7);backface-visibility:hidden;text-align:left;color:#fff;cursor:pointer}
.rc img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.rc::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,10,31,0) 35%,rgba(5,10,31,.88));pointer-events:none}
.rc-t{position:absolute;left:.75rem;right:.75rem;bottom:.65rem;z-index:1;font-size:calc(var(--cw) * .068);line-height:1.15;font-weight:500;pointer-events:none}
.rc-t small{display:block;margin-bottom:.3rem;font-size:.68em;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#a9bbff}
.rc-d{position:absolute;right:.6rem;top:.6rem;z-index:1;border-radius:9999px;background:rgba(255,255,255,.92);color:#0a1533;padding:3px 9px;font-size:calc(var(--cw) * .05);font-weight:700;pointer-events:none}
.cxr-top{position:relative;z-index:2;padding-top:7.5rem;text-align:center;pointer-events:none}
.cxr-top .crumbs{justify-content:center;margin-bottom:1.25rem;pointer-events:auto}
.cxr-t{font-size:2.8rem;line-height:.95;letter-spacing:-.04em;text-shadow:0 10px 50px rgba(5,10,31,.65)}
.cxr-t span{background:linear-gradient(100deg,#fff 15%,#a9bbff 60%,#6f8cff);-webkit-background-clip:text;background-clip:text;color:transparent}
@media (min-width:640px){.cxr-t{font-size:4.6rem}}
@media (min-width:1024px){.cxr-t{font-size:clamp(4.8rem,6.6vw,7rem)}}
.cxr-bottom{position:relative;z-index:2;display:grid;gap:1.75rem;align-items:end;margin-top:auto;padding-bottom:2.5rem;pointer-events:none}
.cxr-bottom>*{pointer-events:auto}
@media (min-width:1024px){.cxr-bottom{grid-template-columns:minmax(0,1fr) auto}}
.cxr-copy p{max-width:30rem;font-size:1rem;line-height:1.55;color:rgba(255,255,255,.78)}
.cxr-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.9rem 1.1rem;margin-top:1.1rem}
.cxr-actions .pill-white{padding:14px 24px;font-weight:600}
/* Erasmus+ credential: hairline, no box; the official logo sits on a white plaque only when supplied */
.ecred{display:flex;align-items:center;gap:1.1rem;max-width:27rem;padding-left:1.1rem;border-left:1px solid rgba(255,255,255,.28)}
.ecred.has-logo{padding-left:0;border-left:0}
.ec-logo{position:relative;display:grid;place-items:center;flex:none;height:64px;padding:0 16px;border-radius:14px;background:#fff;box-shadow:0 18px 40px -18px rgba(0,0,0,.6);overflow:hidden}
.ec-logo img{display:block;height:40px;width:auto}
.ec-logo::after{content:"";position:absolute;inset:-30% auto -30% 0;width:40%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.85),transparent);transform:translateX(-160%) skewX(-18deg);animation:ec-sweep 1.6s cubic-bezier(.45,0,.2,1) 1s both}
@keyframes ec-sweep{to{transform:translateX(380%) skewX(-18deg)}}
.ecred p{display:flex;flex-direction:column;gap:.2rem;line-height:1.3}
.ec-k{font-size:.68rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:#ffd23d}
.ecred b{font-size:1.08rem;font-weight:500;letter-spacing:-.01em}
.ec-s{font-size:.8rem;color:rgba(255,255,255,.62)}
@media (prefers-reduced-motion:reduce){.ec-logo::after{animation:none;display:none}}
/* year calendar inside the catalogue section */
.cx-year{margin-top:1rem;margin-bottom:1.5rem;border-radius:1.6rem;padding:1.2rem 1.2rem .6rem;color:#fff;background:radial-gradient(60% 120% at 100% 0%,rgba(77,107,255,.35),transparent 60%),#0a1533}
.cx-card.flash{animation:cx-flash 1.6s ease-out}
@keyframes cx-flash{0%,30%{box-shadow:0 0 0 3px var(--brand),0 20px 50px -20px rgba(28,62,230,.6)}100%{box-shadow:0 0 0 0 rgba(28,62,230,0)}}
@media (max-width:639px){.cxr{min-height:0}.cxr-ring{--ry:330px}.cxr-bottom{margin-top:15rem}.cxr::after{height:62%}}
.ph-tagrow{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1.25rem}
.ph-tagrow .tag{margin-bottom:0}
.ph-rate{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}
.cx-bd>.vbadge{align-self:flex-start;margin-bottom:.1rem}
/* course page hero */
.ph-rate{margin-top:1.75rem}
.ph .h1.course-t{font-size:2.5rem;line-height:1}
@media (min-width:640px){.ph .h1.course-t{font-size:3.4rem}}
@media (min-width:1024px){.ph .h1.course-t{font-size:clamp(3.4rem,4.4vw,4.6rem)}}
.ph-course .ph-eu{right:max(-2rem,-2vw);top:5rem;width:min(38rem,46vw);height:min(38rem,46vw);opacity:.95;z-index:0}
.ph-course .ph-inner{z-index:1}
.ph-course .ph-photo{z-index:1}
@media (max-width:1023px){.ph-course .ph-eu{right:-10rem;top:3rem;width:26rem;height:26rem;opacity:.3}}
/* /courses/ hero credential with the seal */
.ecred.has-seal{padding-left:0;border-left:0}
.vbi.lg{display:grid;place-items:center;flex:none;width:68px;height:68px;border-radius:50%;background:linear-gradient(135deg,rgba(255,255,255,.18),rgba(255,255,255,.05));border:1px solid rgba(255,255,255,.24);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 0 40px rgba(77,107,255,.35);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.vbi.lg svg{width:40px;height:40px;overflow:visible}
.vbi.lg .vb-seal{fill:#fff}.vbi.lg .vb-tick{stroke:#1c3ee6;stroke-width:2.6}
