/* ===== Course catalogue ===== */
.cat-hero{ background:linear-gradient(135deg,#001a3d 0%,#002047 55%,#0d3366 100%); color:#fff; padding:34px 0 30px; position:relative; overflow:hidden; }
.cat-hero::after{ content:''; position:absolute; right:-80px; top:-80px; width:340px; height:340px; border-radius:50%; background:radial-gradient(circle,rgba(227,164,30,.22),transparent 65%); }
.cat-hero .wrap{ position:relative; z-index:1; display:grid; grid-template-columns:1.1fr 1fr; gap:36px; align-items:center; max-width:1180px; }
.cat-hero .eyebrow{ color:#E3A41E; letter-spacing:.08em; font-size:.8rem; font-weight:600; }
.cat-hero h1{ color:#fff; font-size:clamp(1.7rem,3.4vw,2.5rem); margin:8px 0 10px; max-width:20ch; line-height:1.15; }
.cat-hero p{ color:#D7DEEA; max-width:48ch; line-height:1.6; font-size:.98rem; }
.cat-search{ display:flex; align-items:center; gap:10px; background:#fff; border-radius:10px; padding:6px 14px; box-shadow:0 14px 40px rgba(0,0,0,.28); color:#14396f; }
.cat-search input{ flex:1; border:none; outline:none; font-size:1rem; padding:13px 4px; background:transparent; color:#0b1d3a; min-width:0; font-family:var(--sans); }
.cat-kbd{ font-size:.78rem; border:1px solid #CBD3E0; border-radius:4px; padding:1px 7px; color:#6B7382; }
.cat-search:focus-within{ box-shadow:0 0 0 3px rgba(227,164,30,.6),0 14px 40px rgba(0,0,0,.28); }

.cat-rail-wrap{ background:#fff; border-bottom:1px solid #E6E9EE; padding:14px 0 0; }
.cat-rail{ display:flex; gap:10px; overflow-x:auto; padding:2px 2px 14px; scrollbar-width:thin; scroll-snap-type:x proximity; }
.rt{ flex:none; scroll-snap-align:start; display:flex; align-items:center; gap:10px; border:1px solid #E0E4EA; background:#fff; border-radius:10px; padding:9px 14px 9px 10px; cursor:pointer; font-family:var(--sans); color:#0b1d3a; transition:border-color .15s, box-shadow .15s, transform .15s, background .15s; }
.rt:hover{ border-color:#E3A41E; transform:translateY(-1px); box-shadow:0 6px 16px rgba(10,34,64,.08); }
.rt.active{ background:#002047; border-color:#002047; color:#fff; }
.rt-i{ width:30px; height:30px; display:flex; align-items:center; justify-content:center; flex:none; background:#F1F4F9; border-radius:8px; }
.rt.active .rt-i{ background:#fff; }
.rt-i img,.rt-i svg{ width:22px; height:22px; object-fit:contain; }
.rt-n{ font-size:.86rem; font-weight:600; white-space:nowrap; }
.rt-c{ font-size:.74rem; background:#F1F4F9; color:#14396f; border-radius:20px; padding:1px 8px; font-weight:600; }
.rt.active .rt-c{ background:#E3A41E; color:#002047; }

.cat-toolbar{ position:sticky; top:0; z-index:40; background:rgba(255,255,255,.96); backdrop-filter:blur(6px); border-bottom:1px solid #E6E9EE; }
.cat-toolbar-row{ display:flex; justify-content:space-between; align-items:center; gap:14px; padding-top:10px; padding-bottom:10px; flex-wrap:wrap; max-width:1180px; }
.ct-left,.ct-right{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.results-count{ font-weight:600; color:#0b1d3a; font-size:.92rem; min-width:96px; }
.ct-chips{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.ct-lbl{ font-size:.78rem; color:#6B7382; margin-right:2px; }
.dchip{ border:1px solid #D9DEE6; background:#fff; border-radius:20px; padding:5px 12px; font-size:.8rem; cursor:pointer; color:#2b3447; font-family:var(--sans); }
.dchip:hover{ border-color:#E3A41E; }
.dchip.active{ background:#FDF3DC; border-color:#E3A41E; color:#7a5100; font-weight:600; }
.ct-sel{ display:flex; align-items:center; gap:6px; font-size:.78rem; color:#6B7382; }
.ct-sel select{ border:1px solid #D9DEE6; border-radius:6px; padding:7px 8px; font-size:.84rem; background:#fff; color:#0b1d3a; font-family:var(--sans); }
.view-toggle{ display:flex; border:1px solid #D9DEE6; border-radius:6px; overflow:hidden; }
.view-toggle button{ border:none; background:#fff; padding:6px 9px; cursor:pointer; color:#6B7382; display:flex; }
.view-toggle button.active{ background:#002047; color:#fff; }
.ct-reset{ border:none; background:none; color:#A6741F; font-weight:600; cursor:pointer; font-size:.84rem; text-decoration:underline; }

.cat-results{ background:#F6F7FA; padding:22px 0 40px; }
.cat-results .wrap{ max-width:1180px; }
.cc-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.cc{ background:#fff; border:1px solid #E0E4EA; border-radius:12px; padding:16px 16px 14px; display:flex; flex-direction:column; gap:10px; cursor:pointer; position:relative; transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
.cc::before{ content:''; position:absolute; left:0; top:14px; bottom:14px; width:3px; border-radius:0 3px 3px 0; background:transparent; transition:background .16s; }
.cc:hover,.cc:focus-visible{ transform:translateY(-3px); box-shadow:0 16px 34px rgba(10,34,64,.13); border-color:#E3A41E; outline:none; }
.cc:hover::before,.cc:focus-visible::before{ background:#E3A41E; }
.cc-h{ display:flex; align-items:center; gap:8px; }
.cc-ico{ width:28px; height:28px; border-radius:8px; background:#F1F4F9; display:inline-flex; align-items:center; justify-content:center; flex:none; }
.cc-ico img,.cc-ico svg{ width:19px; height:19px; object-fit:contain; }
.cc-cat{ font-size:.74rem; color:#5a6478; font-weight:500; flex:1; line-height:1.25; }
.cc-badge{ font-size:.68rem; font-weight:700; letter-spacing:.03em; padding:3px 9px; border-radius:20px; text-transform:uppercase; white-space:nowrap; }
.cc-badge.fl{ background:#FDF3DC; color:#8a5a00; border:1px solid #E3A41E; }
.cc-badge.ad{ background:#E6EEFA; color:#1B4A93; }
.cc-badge.ho{ background:#EEF0F4; color:#4b5468; }
.cc h3{ font-family:var(--sans); font-size:1.08rem; font-weight:700; color:#0b1d3a; line-height:1.28; min-height:2.56em; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; margin:0; }
.cc-pts{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.cc-pts li{ display:flex; gap:8px; font-size:.84rem; color:#2b3447; line-height:1.35; }
.cc-pts .ck{ width:15px; height:15px; flex:none; margin-top:2px; color:#1F7A5C; }
.cc-fmt{ display:flex; flex-wrap:wrap; gap:6px; margin-top:2px; }
.cc-fmt span{ display:inline-flex; align-items:center; gap:4px; font-size:.74rem; background:#F1F4F9; color:#14396f; border-radius:6px; padding:3px 8px; font-weight:500; }
.cc-fmt svg{ width:12px; height:12px; }
.cc-fmt .cc-lang{ background:none; color:#6B7382; margin-left:auto; padding-right:0; }
.cc-f{ margin-top:auto; padding-top:12px; border-top:1px solid #EDF0F4; display:flex; align-items:flex-end; justify-content:space-between; gap:10px; }
.cc-price{ display:flex; flex-direction:column; line-height:1.15; }
.cc-price small{ font-size:.7rem; color:#6B7382; }
.cc-price b{ font-family:var(--sans); font-size:1.35rem; color:#0b1d3a; font-weight:700; }
.cc-go{ display:inline-flex; align-items:center; gap:6px; font-size:.84rem; font-weight:600; color:#14396f; background:#F1F4F9; border-radius:8px; padding:8px 12px; transition:background .15s,color .15s; }
.cc-go svg{ width:15px; height:15px; transition:transform .15s; }
.cc:hover .cc-go{ background:#002047; color:#fff; } .cc:hover .cc-go svg{ transform:translateX(3px); }
/* list layout */
.cc-grid.as-list{ grid-template-columns:1fr; gap:10px; }
.as-list .cc{ display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1.5fr) auto; grid-template-areas:"h pts f" "t pts f" "fmt pts f"; column-gap:22px; align-items:center; padding:14px 18px; row-gap:6px; }
.as-list .cc-h{ grid-area:h; } .as-list .cc h3{ grid-area:t; min-height:0; } .as-list .cc-pts{ grid-area:pts; } .as-list .cc-fmt{ grid-area:fmt; } .as-list .cc-f{ grid-area:f; border:none; padding:0; flex-direction:column; align-items:flex-end; margin:0; }
.empty-state{ grid-column:1/-1; background:#fff; border:1px dashed #CBD3E0; border-radius:10px; padding:34px; text-align:center; color:#2b3447; }

.cat-help{ background:#fff; padding:30px 0; border-top:1px solid #E6E9EE; }
.cat-help-row{ display:flex; justify-content:space-between; align-items:center; gap:20px; flex-wrap:wrap; max-width:1180px; }
.cat-help h2{ font-size:1.4rem; margin:0 0 4px; max-width:none; } .cat-help p{ color:#454C5C; }
.cat-help-btns{ display:flex; gap:10px; flex-wrap:wrap; }

/* ===== Quick view drawer ===== */
body.qv-open{ overflow:hidden; }
.qv-overlay{ position:fixed; inset:0; background:rgba(0,16,40,.55); z-index:200; opacity:0; transition:opacity .18s ease; display:flex; justify-content:flex-end; }
.qv-overlay[hidden]{ display:none; }
.qv-overlay.on{ opacity:1; }
.qv{ width:min(620px,100%); background:#fff; height:100%; transform:translateX(30px); transition:transform .2s ease; display:flex; flex-direction:column; box-shadow:-20px 0 50px rgba(0,0,0,.3); }
.qv-overlay.on .qv{ transform:none; }
.qv-body{ display:flex; flex-direction:column; height:100%; min-height:0; }
.qv-head{ padding:18px 24px 0; background:linear-gradient(180deg,#F6F7FA,#fff); border-bottom:1px solid #E6E9EE; }
.qv-top{ display:flex; align-items:center; gap:8px; }
.qv-code{ font-size:.76rem; font-weight:700; color:#14396f; background:#E6EEFA; border-radius:6px; padding:3px 8px; }
.qv-nav{ margin-left:auto; display:flex; gap:6px; }
.qv-nav button{ width:34px; height:34px; border-radius:8px; border:1px solid #D9DEE6; background:#fff; font-size:1.3rem; line-height:1; cursor:pointer; color:#0b1d3a; }
.qv-nav button:disabled{ opacity:.35; cursor:default; } .qv-nav button:not(:disabled):hover{ border-color:#E3A41E; }
.qv-nav .qv-x{ background:#002047; color:#fff; border-color:#002047; font-size:1.2rem; }
.qv-cat{ display:flex; align-items:center; gap:8px; margin-top:12px; font-size:.82rem; color:#5a6478; }
.qv h2{ font-family:var(--sans); font-size:1.45rem; line-height:1.25; color:#0b1d3a; margin:6px 0 12px; max-width:none; }
.qv-facts{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:12px; }
.qv-facts div{ background:#F1F4F9; border-radius:8px; padding:8px 10px; display:flex; flex-direction:column; }
.qv-facts small{ font-size:.68rem; color:#6B7382; text-transform:uppercase; letter-spacing:.05em; }
.qv-facts b{ font-size:.92rem; color:#0b1d3a; }
.qv-tabs{ display:flex; gap:4px; }
.qv-tabs button{ border:none; background:none; padding:10px 16px; font-weight:600; font-size:.9rem; color:#6B7382; cursor:pointer; border-bottom:3px solid transparent; font-family:var(--sans); }
.qv-tabs button.active{ color:#002047; border-bottom-color:#E3A41E; }
.qv-scroll{ flex:1; overflow-y:auto; padding:18px 24px 10px; min-height:0; }
.qv-sec{ margin-bottom:18px; }
.qv-sec h4{ font-family:var(--sans); font-size:.78rem; text-transform:uppercase; letter-spacing:.06em; color:#A6741F; margin:0 0 8px; }
.qv-intro{ font-size:1rem; line-height:1.6; color:#1c2539; margin:0; }
.qv-list{ margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:7px; }
.qv-list li{ position:relative; padding-left:20px; font-size:.9rem; line-height:1.45; color:#1c2539; }
.qv-list li::before{ content:''; position:absolute; left:2px; top:.5em; width:8px; height:8px; border-radius:50%; background:#E3A41E; }
.qv-two{ display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.qv-note{ font-size:.82rem; color:#5a6478; line-height:1.5; margin:8px 0 12px; }
.qv-day{ border:1px solid #E0E4EA; border-radius:8px; margin-bottom:8px; padding:0 14px; }
.qv-day summary{ cursor:pointer; padding:11px 0; font-weight:600; font-size:.9rem; color:#0b1d3a; }
.qv-day[open]{ background:#FBFCFE; } .qv-day .qv-list{ padding-bottom:12px; }
.qv-prices{ display:flex; flex-direction:column; gap:6px; }
.qv-pr{ display:flex; justify-content:space-between; align-items:center; background:#F6F7FA; border-radius:8px; padding:11px 14px; font-size:.9rem; color:#2b3447; }
.qv-pr b{ font-size:1.1rem; color:#0b1d3a; }
.qv-cta{ padding:14px 24px; border-top:1px solid #E6E9EE; display:flex; gap:10px; background:#fff; }
.qv-cta .btn{ flex:1; justify-content:center; text-align:center; }
.qv-cta .btn-brass{ background:#E3A41E; }

@media (max-width:1000px){ .cc-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); } .cat-hero .wrap{ grid-template-columns:1fr; gap:20px; } .as-list .cc{ grid-template-columns:1fr; grid-template-areas:"h" "t" "pts" "fmt" "f"; } .as-list .cc-f{ flex-direction:row; align-items:center; } }
@media (max-width:640px){
  .cc-grid{ grid-template-columns:1fr; }
  .cat-toolbar{ position:static; }
  .qv-overlay{ align-items:flex-end; } .qv{ width:100%; height:92%; border-radius:16px 16px 0 0; transform:translateY(30px); }
  .qv-two{ grid-template-columns:1fr; } .qv-head,.qv-scroll,.qv-cta{ padding-left:16px; padding-right:16px; }
  .qv-cta{ flex-direction:column; } .ct-chips{ display:none; } .rt-n{ font-size:.82rem; }
}
.cat-hero,.cat-rail-wrap,.cat-toolbar,.cat-results,.cat-help{ padding-top:0; padding-bottom:0; }
.cat-hero{ padding:26px 0 26px; } .cat-rail-wrap{ padding-top:14px; } .cat-results{ padding:20px 0 40px; } .cat-help{ padding:28px 0; }
.cat-hero h1{ max-width:24ch; } .cat-hero p{ font-size:.94rem; }
.cat-hero .wrap{ padding-top:0; padding-bottom:0; }
@media (max-width:640px){ .qv-cta{ flex-direction:row; gap:8px; padding-top:10px; padding-bottom:12px; } .qv-cta .btn{ padding:12px 8px; font-size:.84rem; } .qv-facts b{ font-size:.82rem; } }

/* ---- wider, clearly visible scrollbars ---- */
.cat-rail{ scrollbar-width:auto; scrollbar-color:#E3A41E #E6E9EE; padding-bottom:16px; }
.cat-rail::-webkit-scrollbar{ height:14px; }
.cat-rail::-webkit-scrollbar-track{ background:#E6E9EE; border-radius:8px; }
.cat-rail::-webkit-scrollbar-thumb{ background:#E3A41E; border-radius:8px; border:3px solid #E6E9EE; min-width:60px; }
.cat-rail::-webkit-scrollbar-thumb:hover{ background:#c98d12; }
.qv-scroll{ scrollbar-width:auto; scrollbar-color:#E3A41E #E6E9EE; }
.qv-scroll::-webkit-scrollbar{ width:14px; }
.qv-scroll::-webkit-scrollbar-track{ background:#EEF0F4; }
.qv-scroll::-webkit-scrollbar-thumb{ background:#E3A41E; border-radius:8px; border:3px solid #EEF0F4; min-height:60px; }
.qv-scroll::-webkit-scrollbar-thumb:hover{ background:#c98d12; }
.services-carousel{ scrollbar-width:auto; scrollbar-color:#E3A41E #E6E9EE; }
.services-carousel::-webkit-scrollbar{ height:12px; } .services-carousel::-webkit-scrollbar-track{ background:#E6E9EE; border-radius:8px; }
.services-carousel::-webkit-scrollbar-thumb{ background:#E3A41E; border-radius:8px; border:2px solid #E6E9EE; }
