/* Copied verbatim from the live UK UNIVERSITIES AI UNIVERSE hub (https://hazy-wreath-hez6.here.now/, build of 28 Oct 2026) so the three section sites share its exact design. Only change: photo URL made relative to this file. Do not edit; put overrides in site.css. */
:root{--rs-bg:#000000;--rs-bg-hover:#262626;--rs-border:#d4d4d4;--accent:#0b3c42;--body-bg:#ffffff;--header-bg:#000000;--page-bg:#eef1f2;--text:#14222a;--muted:#4c5a62;--border:#c9d3d6;--box:rgba(255,255,255,0.85);--box-border:#d3dcdf;--grid:#d5dcdf;--tip:#0b1d22;--radius:16px;--shadow:0 4px 22px rgba(4,20,23,.16)}
html.dark{color-scheme:dark;--body-bg:#062a2f;--header-bg:#000000;--page-bg:#041417;--text:#e4eef0;--muted:#a6b8bd;--border:#24474d;--box:rgba(4,20,23,0.85);--box-border:rgba(127,140,145,.18);--grid:#1f3c42;--tip:#e4eef0;--shadow:0 4px 22px rgba(0,0,0,.45)}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--text);line-height:1.45;min-height:100vh;
  background:var(--body-bg)}   /* flat hub teal: no photo background */
a{color:inherit}
/* batch-1836 (Alex 27 Oct 18:36): Bodleian battlements photo right across the header, cover, NO 1s-and-0s; left text in black lozenges */
.site-header{position:relative;z-index:2;color:#fff;box-shadow:0 2px 16px rgba(0,0,0,.35);background-color:var(--header-bg);
  background-image:url("hub-header-photo-2030.webp");background-size:cover;background-position:center;background-repeat:no-repeat;min-height:0;overflow:hidden}
.site-header::before,.site-header::after{content:none;display:none;pointer-events:none}
@keyframes bitspulse{0%,100%{opacity:0}50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.site-header::before{animation:none}}
.header-inner{position:relative;z-index:1;padding:.8rem 1.5rem 1.6rem;display:flex;align-items:center;justify-content:space-between;gap:1.2rem;flex-wrap:wrap;min-height:104px}
.lozenge{display:inline-block;background:var(--header-bg);color:#fff;border-radius:999px;padding:.12em .5em;line-height:1.2}
.header-titles{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem}
.header-titles h1 .lozenge,.header-titles h1{text-decoration:none}.header-titles h1{font-size:1.6rem;font-weight:700;letter-spacing:.03em;line-height:1.15;text-decoration:none}
.header-titles p{font-size:.95rem;font-weight:500}
.header-titles p.agg-note{font-size:.8rem;font-weight:400;margin-top:-.15rem}.header-titles p.agg-note .lozenge{color:#fff;letter-spacing:.01em}
.header-right{display:flex;flex-direction:column;align-items:flex-end;gap:.45rem}
.header-credit{display:grid;grid-template-columns:auto auto;column-gap:.55rem;row-gap:.3rem;align-items:center;justify-items:end;font-size:.9rem}
.header-credit #uni-switch{grid-column:1;grid-row:1}.header-credit .credit-name{grid-column:2;grid-row:1}
.header-credit .hdr-btns{grid-column:1;grid-row:2;justify-self:center;display:flex;gap:.4rem;align-items:center}
.header-credit .theme-btn{font-size:.72rem;padding:.2em .95em;line-height:1.35}
.header-credit a.rs-jump,html.dark .header-credit a.rs-jump{display:inline-block;text-decoration:none;white-space:nowrap;background:var(--rs-bg);color:#fff;border:1px solid var(--rs-border)}.header-credit a.rs-jump:hover{text-decoration:underline;background:var(--rs-bg-hover);border-color:#fff}
.rs-jump:focus-visible,#rs-head h2:focus-visible{outline:2px solid #fff;outline-offset:2px}
.research{scroll-margin-top:12px}.header-credit .site-url{grid-column:2;grid-row:2}
.header-credit a{color:#fff;text-decoration:none;font-weight:500}.header-credit a:hover{text-decoration:underline}
.header-credit .site-url{font-size:.8rem}
/* university switch (same as on the university sites): All | each university, left of the credit, same line */
.uni-switch{display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:999px;background:var(--header-bg);border:1px solid rgba(255,255,255,.75);font-size:.68rem;font-weight:700;line-height:1}
.header-credit .uni-switch .us-opt{color:#fff;text-decoration:none;padding:.34em .85em;border-radius:999px;white-space:nowrap;letter-spacing:.02em;font-weight:700}
.header-credit .uni-switch .us-opt:hover{background:rgba(255,255,255,.16);text-decoration:none}
.header-credit .uni-switch .us-opt.on{background:#fff;color:var(--header-bg);cursor:default}
.uni-switch .us-opt:focus-visible{outline:2px solid #fff;outline-offset:2px}
html.dark .header-credit .uni-switch .us-opt.on{color:#041417}
/* v14: the 'All' button a shade greyer than the university buttons (both modes) */
.header-credit .uni-switch .us-opt.us-all{background:#3a3a3a}
.header-credit .uni-switch .us-opt.us-all:hover{background:#4a4a4a}
.header-credit .uni-switch .us-opt.us-all.on,html.dark .header-credit .uni-switch .us-opt.us-all.on{background:#d4d4d4;color:#000}
.theme-btn{background:var(--header-bg);color:#fff;border:1px solid rgba(255,255,255,.75);border-radius:999px;font:inherit;font-size:.8rem;font-weight:700;padding:.3em 1em;cursor:pointer}
/*v11*/
/* ---- v11 header grid: row 1 title | switch | by Alex Connock (bottom-aligned); row 2 subtitle | Aggregated research ... Dark/Light slider | librairie.ai;
   row 3 the aggregation line (same type as the subtitle); the two-line Gen AI note stays bottom-right ---- */
.header-inner{display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-template-rows:auto auto auto;column-gap:.6rem;row-gap:.4rem;align-items:center}
.header-inner .header-titles,.header-inner .header-right,.header-inner .header-credit{display:contents}
.header-titles h1{grid-column:1;grid-row:1;align-self:end;display:flex}
.header-titles p{grid-column:1;grid-row:2;display:flex}
.header-titles p.agg-note{grid-column:1;grid-row:3;font-size:.95rem;font-weight:500;margin-top:0}.header-titles p.agg-note .lozenge{letter-spacing:normal}
.header-credit #uni-switch{grid-column:2;grid-row:1;align-self:end;justify-self:end}
.header-credit .credit-name{grid-column:3;grid-row:1;align-self:end;justify-self:end;font-size:.9rem}
.header-credit .hdr-btns{grid-column:2;grid-row:2;justify-self:stretch;display:flex;justify-content:space-between;align-items:center;gap:.6rem}
.header-credit .site-url{grid-column:3;grid-row:2;justify-self:end;align-self:center}
.theme-switch{display:inline-flex;align-items:center;gap:5px;background:rgba(0,0,0,.62);border:0;border-radius:999px;padding:3px 8px;color:#fff;font:inherit;font-size:.8rem;line-height:1;cursor:pointer}
.theme-switch .ts-ico{opacity:.55;transition:opacity .15s}
html:not(.dark) .theme-switch .ts-ico:first-child,html.dark .theme-switch .ts-ico:last-child{opacity:1}
.theme-switch .ts-track{position:relative;display:inline-block;width:30px;height:16px;border-radius:999px;background:#000;border:1px solid var(--rs-border);box-sizing:border-box}
.theme-switch .ts-knob{position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:#fff;transition:transform .18s}
html.dark .theme-switch .ts-knob{transform:translateX(14px)}
.theme-switch:hover .ts-track{border-color:#fff}
.theme-switch:focus-visible{outline:2px solid #fff;outline-offset:3px;border-radius:999px}
@media (prefers-reduced-motion:reduce){.theme-switch .ts-knob{transition:none}}
.gen-note{position:absolute;right:1.5rem;bottom:1px;z-index:1;display:flex;flex-direction:column;align-items:flex-end;text-align:right;font-size:10px;line-height:1.2;font-weight:500;color:#fff;
  background:rgba(4,20,23,.55);border-radius:6px;padding:1px 7px;text-shadow:0 1px 2px rgba(0,0,0,.9);pointer-events:none;white-space:nowrap}
main{max-width:1380px;margin:0 auto;padding:22px 20px 10px}
.panel{background:var(--box);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--box-border)}
/* all-universities news crawler (same style as the university sites' crawler) */
.news-bar{display:flex;align-items:center;gap:10px;height:40px;margin:0 0 14px;background:#000;color:#fff;border-radius:14px;padding:0 6px 0 8px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.18)}
html.dark .news-bar{background:#000;box-shadow:inset 0 0 0 1px rgba(255,255,255,.28),0 2px 10px rgba(0,0,0,.5)}
.news-label{flex-shrink:0;background:#fff;color:#000;font-weight:800;font-size:.7rem;letter-spacing:.1em;border-radius:999px;padding:3px 10px;white-space:nowrap}
.news-viewport{flex:1;min-width:0;overflow:hidden;position:relative;mask-image:linear-gradient(90deg,transparent,#000 2%,#000 98%,transparent)}
.news-track{display:inline-flex;white-space:nowrap;animation:crawl var(--crawl-s,160s) linear infinite;will-change:transform}
.news-bar:hover .news-track,.news-bar:focus-within .news-track{animation-play-state:paused}
@keyframes crawl{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.news-track{animation-duration:0s!important}.news-viewport{overflow-x:auto}}
.news-item{font-size:.84rem;padding-right:42px;color:#fff}
.news-item .nd{color:#c9d3e0;font-weight:600;margin-right:6px}
.news-item a{color:#4fb3ff;font-weight:600;text-decoration:none}
.news-item a:hover{text-decoration:underline;color:#8fd0ff}
.news-item .ns{color:#9aa6b5;font-size:.75rem;margin-left:6px}
.utag{display:inline-block;background:var(--c);color:var(--t,#fff);border:1px solid rgba(255,255,255,.55);border-radius:999px;font-size:.64rem;font-weight:800;letter-spacing:.04em;padding:1px 7px;margin-right:6px;vertical-align:1px;white-space:nowrap}
/* upcoming events across all universities: full content width, below the tiles, above Match */
.hub-events{padding:14px 16px 10px;margin-bottom:16px}
.he-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.hub-events h2{font-size:1.02rem;font-weight:700;margin:0}
.he-sub{font-size:.78rem;color:var(--muted)}
.he-scroll{max-height:332px;overflow-y:auto;scrollbar-width:thin}
.he-list{list-style:none;margin:0;padding:0 4px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0 18px}
.he-list li{padding:8px 0;border-top:1px solid var(--box-border);font-size:.8rem;line-height:1.32;min-width:0}
.he-d{display:block;font-weight:700;font-size:.72rem;color:var(--muted);margin-bottom:2px}
.he-list a{color:var(--text);font-weight:600;text-decoration:none;overflow-wrap:anywhere}
.he-list a:hover{text-decoration:underline}
.he-v{display:block;color:var(--muted);font-size:.7rem;margin-top:2px}
.he-list .utag{font-size:.6rem;padding:0 6px;margin-right:5px}
.he-foot{margin:8px 0 0;font-size:.72rem;color:var(--muted)}
.he-foot .upd{font-weight:600}
@media (max-width:700px){.news-label{font-size:.6rem;padding:3px 7px;letter-spacing:.05em}}
/* university buttons: large, in each university's own colour, generated from universities.json */
.unis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}   /* r8 (Alex 27 Oct 07:56): four abreast, shorter */
.uni-btn{display:flex;flex-direction:column;text-decoration:none;color:#fff;background:var(--c);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);border:2px solid rgba(255,255,255,.35);transition:transform .15s,box-shadow .15s;min-height:96px}
.uni-btn:hover,.uni-btn:focus-visible{transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.32);outline:3px solid #fff;outline-offset:-3px}
.uni-btn .ban{height:40px;background-size:cover;background-position:left center;position:relative}
.uni-btn .ban::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,0) 40%,var(--c) 100%)}
.uni-btn{container-type:inline-size}.uni-btn .nm{position:absolute;left:8px;bottom:4px;z-index:1;font-size:min(1rem,12cqi);max-width:calc(100% - 16px);white-space:nowrap;font-weight:700;letter-spacing:.04em;background:var(--c);border-radius:999px;padding:.02em .4em}
.uni-btn .bd{padding:6px 10px 8px;display:flex;flex-direction:column;gap:3px;flex:1}
.uni-btn .tt{font-weight:700;font-size:.74rem;letter-spacing:.02em}
.uni-btn .ks{display:flex;flex-wrap:wrap;gap:3px}
.uni-btn .ks span{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:1px 6px;font-size:.62rem;font-weight:600}
.uni-btn .go{margin-top:auto;align-self:flex-start;background:#fff;color:var(--c);font-weight:700;border-radius:999px;padding:2px 10px;font-size:.72rem}
@media (max-width:1100px){.unis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:700px){.unis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.uni-btn.soon{background:transparent;border:2px dashed var(--border);color:var(--muted);align-items:center;justify-content:center;text-align:center;padding:20px;box-shadow:none;backdrop-filter:none}
.uni-btn.soon:hover{transform:none;box-shadow:none;outline:none}
.soon-in{background:var(--box);border-radius:12px;padding:14px 18px;font-weight:600}
/* charts: each in its own box at 85% opacity so the photo shows faintly through */
.charts{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));grid-auto-flow:row dense;gap:16px}
.chart-box{background:var(--box);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px 12px;border:1px solid var(--box-border);min-width:0}
.chart-box.wide{grid-column:span 2}.chart-box.full{grid-column:1/-1}
@media (max-width:880px){.charts{grid-template-columns:1fr}.chart-box.wide,.chart-box.full{grid-column:auto}}
.chart-box h2{font-size:.95rem;font-weight:700;letter-spacing:.02em;margin-bottom:2px}
.chart-box .sub{font-size:.76rem;color:var(--muted);margin-bottom:6px;min-height:1em}
.chart-box svg{display:block;width:100%;height:auto;overflow:visible}
.chart-box svg text{fill:var(--text);font-family:inherit}
.chart-box svg .ax{stroke:var(--grid);stroke-width:1}
.chart-box svg .val{font-weight:700;font-size:13px}
.chart-box svg .lbl{font-size:12.5px}
.chart-box svg .mut{fill:var(--muted);font-size:11px}
.chart-box svg .dlbl{font-size:12.5px;font-weight:800;paint-order:stroke;stroke:var(--page-bg,#fff);stroke-width:3px;stroke-linejoin:round}
.chart-box svg a .bar{transition:opacity .12s}.chart-box svg a:hover .bar,.chart-box svg a:focus .bar{opacity:.8}
.chart-box svg a:focus{outline:none}.chart-box svg a:focus .bar{stroke:var(--text);stroke-width:2}
.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.78rem;margin:4px 0 6px}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-1px;margin-right:5px}
.compare{margin-bottom:14px}
/* v11: AI Topics - one colour-blind-safe hue (Okabe-Ito blue), labels left, counts at the bar ends; HTML bars so labels stay readable on phones */
.topics{margin-bottom:14px;--tp-bar:#0072b2}html.dark .topics{--tp-bar:#56b4e9}
.tp-chart{display:grid;gap:4px;margin-top:6px}
.tp-row{display:grid;grid-template-columns:minmax(120px,260px) 1fr;align-items:center;gap:10px;font-size:.8rem;line-height:1.2}
.tp-l{text-align:right;color:var(--text)}
.tp-t{display:flex;align-items:center;gap:6px;min-width:0}
.tp-b{display:block;height:15px;border-radius:4px;background:var(--tp-bar);min-width:2px}
.tp-v{font-weight:700;font-size:.78rem;color:var(--text);white-space:nowrap}
.topics .caveat{margin-top:8px}
@media (max-width:700px){.tp-row{grid-template-columns:minmax(0,42%) 1fr;font-size:.74rem;gap:6px}}
.salt-note{margin:0 0 12px;padding:9px 18px;border-radius:999px;background:var(--box);border:1.5px solid var(--text);color:var(--text);font-size:.84rem;line-height:1.4;font-weight:600;text-align:center;box-shadow:var(--shadow)}
@media (max-width:700px){.salt-note{border-radius:16px;text-align:left}}
.compare h2{font-size:1.05rem}
.cmp-note{font-style:italic;font-weight:400;font-size:.82rem;color:var(--muted);margin:1px 0 2px}
.cmp-sentence{font-size:1rem;font-weight:600;margin:6px 0 8px;display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.cmp-sentence select{max-width:100%;min-width:0;text-overflow:ellipsis;font:inherit;font-weight:700;color:var(--text);background:transparent;border:1.5px solid var(--border);border-radius:999px;padding:.25em 1.8em .25em .8em;cursor:pointer;
  appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 14px) 55%,calc(100% - 9px) 55%;background-size:5px 5px;background-repeat:no-repeat}
.cmp-sentence select:focus-visible{outline:2px solid var(--text);outline-offset:2px}
html.dark .cmp-sentence select option,html.dark .cmp-sentence select optgroup{background:#041417;color:#e6eef0}
.cmp-sum{font-size:.88rem;margin-top:6px;font-weight:600}
.cmp-links{font-size:.8rem;margin-top:2px}
.cmp-links a{color:inherit;font-weight:600}
.caveat{font-size:.74rem;color:var(--muted);margin-top:6px}
#tip{position:fixed;z-index:50;pointer-events:none;background:var(--tip);color:var(--page-bg);font-size:.8rem;font-weight:600;padding:6px 10px;border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.3);max-width:280px}
html.dark #tip{color:#041417}
.notes{margin-top:18px;padding:14px 18px;font-size:.84rem}
.notes h2{font-size:.95rem;margin-bottom:6px}.notes li{margin:3px 0 3px 18px}
footer{max-width:1380px;margin:18px auto 24px;padding:0 20px}
.foot{padding:14px 18px;font-size:.84rem;display:flex;flex-direction:column;gap:10px}
.dl-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.dl-row strong{min-width:110px}
.dl-row a{background:var(--c,var(--header-bg));color:#fff;text-decoration:none;border-radius:999px;padding:3px 11px;font-size:.78rem;font-weight:600}
.credit-foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;color:var(--muted);font-size:.78rem}
.credit-foot a{color:var(--text)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.sr-wrap{position:absolute;left:0;top:0;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%)}.sr-wrap .sr{position:static}
@media (max-width:700px){.gen-note{position:relative;right:auto;bottom:auto;margin:0 1rem 2px auto;width:max-content;max-width:calc(100% - 2rem);white-space:normal}.header-right{align-items:flex-start}.header-credit{justify-items:start}.header-credit .theme-btn{justify-self:start}.header-credit .hdr-btns{flex-wrap:wrap;justify-self:start}.header-credit{grid-template-columns:minmax(0,1fr);max-width:100%}.header-credit>*{grid-column:1!important;grid-row:auto!important;justify-self:start}.header-credit .uni-switch{flex-wrap:wrap;max-width:100%;border-radius:14px}
  .header-inner{grid-template-columns:minmax(0,1fr);grid-template-rows:none;row-gap:.45rem}
  .header-inner .header-titles>*,.header-inner .header-credit>*{grid-column:1!important;grid-row:auto!important;justify-self:start!important;align-self:center!important}
  .header-credit .hdr-btns{justify-content:flex-start;gap:.9rem}}

/* two-column layout: buttons + charts on the left, the combined research column down the right */
.layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:16px;align-items:start}
.layout>.left{min-width:0}
.research{position:sticky;top:12px;max-height:calc(100vh - 24px);display:flex;flex-direction:column;background:var(--box);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--box-border);overflow:hidden}
.rs-head{display:flex;align-items:center;gap:8px;width:100%;background:var(--rs-bg);color:#fff;padding:11px 14px 10px}
html.dark .rs-head{background:var(--rs-bg);box-shadow:inset 0 -1px 0 rgba(255,255,255,.18)}
.rs-head{position:relative;cursor:pointer;transition:background .15s}.rs-head:hover,.rs-head:focus-within,html.dark .rs-head:hover,html.dark .rs-head:focus-within{background:var(--rs-bg-hover)}
a.rs-title{color:#fff;text-decoration:none;position:static}a.rs-title::after{content:"";position:absolute;inset:0;z-index:1}a.rs-title:hover h2{text-decoration:underline}a.rs-title:focus-visible{outline:none}.rs-head:has(a.rs-title:focus-visible){outline:2px solid #fff;outline-offset:-3px}
.rs-meta{position:absolute;right:14px;bottom:10px;z-index:2;display:flex;align-items:baseline;gap:6px;white-space:nowrap;font-size:.72rem;line-height:1.2}
.rs-meta .hint{margin-left:0}.rs-sep{opacity:.7}
a.rs-full{color:#fff;font-weight:700;text-decoration:underline;text-underline-offset:2px}a.rs-full:hover{text-decoration-thickness:2px}a.rs-full:focus-visible{outline:2px solid #fff;outline-offset:2px;border-radius:2px}
@media (max-width:330px){.rs-head{flex-wrap:wrap}.rs-meta{position:static;margin-left:0;flex-wrap:wrap}}
.rs-head h2{font-size:.86rem;font-weight:700;letter-spacing:.04em;line-height:1.2}
.rs-head .hint{margin-left:auto;font-size:.72rem;color:#fff;white-space:nowrap}
.rs-tools{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border)}
.rs-tools[hidden]{display:none}
.rs-chips{display:flex;flex-wrap:wrap;gap:5px}
.rs-chip{border:1px solid var(--border);background:transparent;color:var(--text);border-radius:999px;padding:2px 10px;font:inherit;font-size:.74rem;font-weight:600;cursor:pointer}
.rs-chip[aria-pressed="true"]{background:var(--c,var(--accent));border-color:var(--c,var(--accent));color:var(--t,#fff)}
html.dark .rs-chip[aria-pressed="true"]{background:var(--c,#2c7a83);border-color:#fff}
.rs-tools input{width:100%;border:1px solid var(--border);border-radius:8px;padding:5px 8px;font:inherit;font-size:.78rem;background:transparent;color:var(--text)}
.rs-list{overflow:auto;flex:1 1 auto;min-height:0;overscroll-behavior:contain}
.rs-list .paper{padding:7px 12px 8px;border-bottom:1px solid var(--border);font-size:.76rem;line-height:1.3}
.rs-list .pm{color:var(--muted);font-size:.68rem;margin-bottom:2px;display:flex;gap:6px;align-items:baseline}
.rs-list .pm b{color:var(--text);font-weight:700;white-space:nowrap}
.rs-list .pm .pv{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.rs-list a.pt{color:#0b4f8a;font-weight:650;text-decoration:none;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
html.dark .rs-list a.pt{color:#9fd3e0}
.rs-list a.pt:hover{text-decoration:underline}
.rs-list .pa{color:var(--muted);margin-top:2px;font-size:.7rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.utag{display:inline-block;background:var(--c);color:var(--t,#fff);border-radius:999px;padding:0 7px;font-size:.64rem;font-weight:700;letter-spacing:.03em;margin-right:4px;line-height:1.5}
html.dark .utag{box-shadow:0 0 0 1px rgba(255,255,255,.55)}
.rs-tags{margin-top:3px}
.rs-more{display:block;width:calc(100% - 20px);margin:6px 10px 8px;border:1px dashed var(--border);background:none;color:inherit;border-radius:8px;padding:5px;font:inherit;font-size:.74rem;font-weight:600;cursor:pointer}
.rs-empty{padding:12px;font-size:.8rem;color:var(--muted)}
.rs-note{padding:6px 12px 8px;font-size:.68rem;color:var(--muted);border-top:1px solid var(--border)}
@media (max-width:1100px){.layout{grid-template-columns:1fr}.research{position:relative;top:auto;max-height:80vh}}
/* ---- v13 header (same on the hub, /research/ and every university site): row 1 title | university switch (ONE black lozenge, two rows of up to five
   buttons, capacity 10, spans rows 1-2) | by Alex Connock; row 2 subtitle | (switch) | www.librairie.ai; row 3 aggregation line | Aggregated research + Dark/Light slider | - ---- */
.header-inner{column-gap:.9rem;row-gap:.3rem;padding:.7rem 1.5rem 1.85rem}
.header-credit #uni-switch,.rp-credit #uni-switch{grid-column:2;grid-row:1/span 2;align-self:center;justify-self:end}
.header-credit #uni-switch{align-self:end}   /* hub: two-row switch sits on the site-url line so the Aggregated/Dark row stays snug underneath */
.header-credit .credit-name,.rp-credit .credit-name{grid-column:3;grid-row:1;align-self:center;justify-self:end}
.header-credit .site-url,.rp-credit .site-url{grid-column:3;grid-row:2;align-self:center;justify-self:end}
.header-credit .hdr-btns,.rp-credit .hdr-btns{grid-column:2;grid-row:3;justify-self:stretch;display:flex;justify-content:space-between;align-items:center;gap:.6rem}
.header-titles h1{align-self:center}
.uni-switch{display:grid;grid-template-columns:repeat(var(--us-cols,7),auto);gap:2px;padding:3px;border-radius:14px;background:#000;border:1px solid rgba(255,255,255,.75);font-size:.68rem;font-weight:700;line-height:1}
.uni-switch .us-opt,.header-credit .uni-switch .us-opt,.rp-credit .uni-switch .us-opt{color:#fff;text-decoration:none;text-align:center;padding:.27em .7em;border-radius:999px;white-space:nowrap;letter-spacing:.02em;font-weight:700}
.uni-switch .us-opt:hover{background:rgba(255,255,255,.16);text-decoration:none}
.uni-switch .us-opt.on,.header-credit .uni-switch .us-opt.on,html.dark .header-credit .uni-switch .us-opt.on{background:#fff;color:#000;cursor:default}
@media (min-width:701px) and (max-width:1100px){.uni-switch .us-opt,.header-credit .uni-switch .us-opt,.rp-credit .uni-switch .us-opt{padding:.27em .45em}}
@media (max-width:700px){.header-inner{padding:.85rem 1rem .4rem}.uni-switch{font-size:10px}.uni-switch .us-opt,.header-credit .uni-switch .us-opt,.rp-credit .uni-switch .us-opt{padding:.4em .45em}}
/* round 4 (16-option switch, 8+8): the switch is ~90px wider, so between 1101px and 1500px its options are a little tighter and the two one-line header notes scale with the remaining title width (bar height unchanged) */
@media (min-width:1101px) and (max-width:1500px){.uni-switch .us-opt,.header-credit .uni-switch .us-opt,.rp-credit .uni-switch .us-opt{padding:.27em .5em}.header-titles p,.header-titles p.agg-note{font-size:min(.95rem,max(.68rem,calc((100vw - 765px) * .0285)))}}
/* Alex 26 Oct 21:59: the freeze is the header, down to and including the hallucination line; below it the whole page scrolls as one.
   The research column is part of the normal flow: not sticky, no own scroll; it runs the length of the page (the full list is on research/) */
.hub-home .site-header{position:sticky;top:0;z-index:45}   /* home page only (this CSS is shared with research/, which has its own freeze) */
.research{position:relative;top:auto;max-height:none;align-self:stretch;contain:size;scroll-margin-top:calc(var(--freeze-h,0px) + 12px)}
.rs-list{overflow:hidden;overscroll-behavior:auto}
/* UK AI publications map */
.map-wrap{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.map-wrap svg.ukmap{flex:0 1 640px;width:100%;max-width:640px;height:auto;overflow:hidden}
.ukmap .land{fill:#e6eaee;stroke:#9aa4ad;stroke-width:1}.ukmap .land.other{fill:#f3f5f7;stroke:#c3c9cf}
.dark .ukmap .land{fill:#1d3438;stroke:#5d777c}.dark .ukmap .land.other{fill:#122427;stroke:#33494d}
.ukmap circle.dot{fill-opacity:.62;stroke-width:2}.ukmap a:hover circle.dot,.ukmap a:focus circle.dot{fill-opacity:.9;stroke-width:3}
.ukmap .mlbl{font-size:17px;font-weight:700;fill:var(--text)}.ukmap .mval{font-weight:600;fill:var(--muted)}.ukmap .lead{stroke:var(--muted);stroke-width:1.2}.ukmap .lead-dot{fill:var(--text)}
.ukmap .lg circle{fill:none;stroke:var(--muted);stroke-width:1.4}.ukmap .lg text{font-size:14px;fill:var(--muted)}.ukmap .lg .lgt{font-weight:700;fill:var(--text)}
.map-side{flex:1 1 220px;min-width:0;font-size:.8rem}.map-side ol{list-style:none;margin:0 0 8px;padding:0;columns:2 150px;column-gap:16px}.map-side li{display:flex;align-items:center;gap:6px;padding:2px 0;break-inside:avoid}
.map-side .sw{flex:none;width:11px;height:11px;border-radius:50%;background:var(--c)}.map-side a{color:inherit;text-decoration:none}.map-side a:hover{text-decoration:underline}.map-side .n{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--muted)}
.map-slot{margin-top:16px}
.charts>.hub-events{grid-column:1/-1;margin:0}   /* v16: events list inside the chart grid, full width, directly above its bar chart */
@media (max-width:1100px){.research{contain:none;max-height:none}.rs-list{max-height:160vh}}
/* mobile: the switch re-flows to 5 per row (two rows do not fit a phone) */
@media (max-width:700px){.uni-switch{grid-template-columns:repeat(5,auto)}}

/* ---- v16 header (Alex 26 Oct 23:22; hub, research/, every university site and its research/): the university switch is ONE black lozenge
   in FOUR balanced rows (columns = ceil(options / 4)); the new top row sits above the previous three; its right edge stays fixed and it grows leftwards as universities are added.
   Hub home: no Aggregated research button (research/ still via the research column header). The Dark/Light slider is level with the fourth (bottom) row,
   'by Alex Connock' stays level with the same row as before (row 2); www.librairie.ai with the fourth. The four row tracks of the right-hand block
   are sized from the switch's own option height, so the centres line up exactly. ---- */
@media (min-width:701px){
  .header-inner{grid-template-rows:auto auto auto auto}
  .header-inner .header-right{display:contents}
  .header-inner .header-credit,.header-inner .rp-credit{--usf:.625rem;--ush:calc(var(--usf) * 1.45);display:grid!important;grid-column:2/span 2;grid-row:1/-1;align-self:center;justify-self:end;
    grid-template-columns:auto auto auto;grid-template-rows:calc(var(--ush) + 5px) calc(var(--ush) + 0px) calc(var(--ush) + 0px) calc(var(--ush) + 3px);column-gap:.7rem;row-gap:0;align-items:center;justify-items:end}
  .header-inner .rp-credit .credit-name,.header-inner .header-credit .credit-name{font-size:.72rem;padding:.12em .55em;line-height:1.15}
  .header-inner .rp-credit .site-url,.header-inner .header-credit .site-url{font-size:.72rem;padding:.12em .55em;line-height:1.15;transform:translateY(2px)}

  .header-inner .hdr-btns>.theme-switch{padding:2px 6px;font-size:.72rem;transform:translateY(-1px)}
  .header-inner .hdr-btns>.theme-switch .ts-track{height:12px;width:22px}
  .header-inner .hdr-btns>.theme-switch .ts-knob{width:10px;height:10px}
  .header-inner .hdr-btns>.theme-switch .ts-ico{font-size:.7rem}
  .header-inner .header-credit #uni-switch,.header-inner .rp-credit #uni-switch{grid-column:2;grid-row:1/span 4;align-self:start;justify-self:end;font-size:var(--usf);gap:2px;padding:3px;border-width:1px;
    grid-template-columns:repeat(var(--us-cols4,6),auto)}
  .header-inner #uni-switch .us-opt{padding:.18em .42em;line-height:1;letter-spacing:0}
  .header-inner .header-credit .hdr-btns,.header-inner .rp-credit .hdr-btns{display:contents}
  .header-inner .hdr-btns>a{grid-column:1;grid-row:1;justify-self:end;align-self:center;margin:0}
  .header-inner .hdr-btns>.theme-switch{grid-column:1;grid-row:4;justify-self:end;align-self:center;margin:0}
  .header-inner .header-credit .credit-name,.header-inner .rp-credit .credit-name{grid-column:3;grid-row:2;align-self:center;justify-self:end}
  .header-inner .header-credit .site-url,.header-inner .rp-credit .site-url{grid-column:3;grid-row:4;align-self:center;justify-self:end}
}
/* v16 hub left lines (Alex 26 Oct 23:22): title, then 'Aggregation tool...', 'AI Organisations, Research, News and Events...', 'Not a league table' */
@media (min-width:701px){.header-titles p.hl1{grid-row:2}.header-titles p.hl2{grid-row:3}.header-titles p.agg-note{grid-row:4}}
.header-titles p.hl1,.header-titles p.hl2,.header-titles p.agg-note{font-size:.95rem;font-weight:500;margin-top:0}
@media (min-width:701px){.header-titles p.hl1,.header-titles p.hl2,.header-titles p.agg-note{font-size:clamp(11px,calc((100vw - 790px) * .0255),.95rem)}}
@media (min-width:1240px){.header-titles p.hl1 .lozenge,.header-titles p.hl2 .lozenge,.header-titles p.agg-note .lozenge{white-space:nowrap}}   /* v16: the three lines stay on one line each down to ~1180px, then shrink/wrap gracefully */
.topsite-link{margin:0 0 10px}.topsite-btn{display:inline-flex;align-items:center;gap:10px;padding:6px 12px 6px 6px;border-radius:999px;border:1.5px solid var(--border,currentColor);background:var(--card,transparent);color:var(--text,currentColor);text-decoration:none;font-weight:700;font-size:.84rem;line-height:1;box-shadow:0 1px 0 rgba(0,0,0,.04)}.topsite-btn:hover{opacity:.92;text-decoration:none;border-color:var(--text,currentColor)}.topsite-btn .topsite-logo{display:block;height:28px;width:auto;flex:0 0 auto}.topsite-btn .topsite-label{padding-right:4px}.topsite-btn.topsite-inline{padding:2px 8px 2px 4px;font-size:.78rem;gap:6px;vertical-align:middle}.topsite-btn.topsite-inline .topsite-logo{height:22px}

/* r8 (Alex 27 Oct 07:56): each white bubble/panel a slightly different pastel; dark mode keeps subtle tint + contrast */
#topics{background:rgba(255,243,230,0.92)}
#hub-events{background:rgba(232,245,253,0.92)}
#compare{background:rgba(232,250,240,0.92)}
#chart-orgs{background:rgba(245,236,255,0.92)}
#chart-papers{background:rgba(255,240,245,0.92)}
#chart-events{background:rgba(236,248,255,0.92)}
#chart-news{background:rgba(255,248,230,0.92)}
#chart-colleges{background:rgba(236,255,246,0.92)}
#chart-months{background:rgba(255,236,240,0.92)}
#chart-map{background:rgba(236,244,255,0.92)}
.research{background:rgba(248,250,252,0.92)}
.notes,.foot{background:rgba(255,252,245,0.92)}
.salt-note{background:rgba(255,249,230,0.95)}
html.dark #topics{background:rgba(90,55,30,0.45)}
html.dark #hub-events{background:rgba(25,55,80,0.5)}
html.dark #compare{background:rgba(25,70,50,0.45)}
html.dark #chart-orgs{background:rgba(55,35,80,0.45)}
html.dark #chart-papers{background:rgba(80,30,50,0.45)}
html.dark #chart-events{background:rgba(25,55,75,0.45)}
html.dark #chart-news{background:rgba(75,60,25,0.45)}
html.dark #chart-colleges{background:rgba(25,70,55,0.45)}
html.dark #chart-months{background:rgba(80,30,45,0.45)}
html.dark #chart-map{background:rgba(25,45,75,0.45)}
html.dark .research{background:rgba(20,35,42,0.92)}
html.dark .notes,html.dark .foot{background:rgba(40,35,25,0.5)}
html.dark .salt-note{background:rgba(70,55,20,0.55)}
/* hubdesign (Alex 27 Oct 13:48): map legend single narrow column so map + legend leave room for the research column; no concentric size key */
.map-wrap{display:flex;gap:14px;align-items:flex-start;flex-wrap:nowrap}
.map-wrap svg.ukmap{flex:1 1 auto;width:auto;max-width:none;min-width:0;height:auto;overflow:hidden}
.map-side{flex:0 0 168px;width:168px;min-width:168px;max-width:168px;font-size:.78rem}
.map-side ol.map-legend-col,.map-side ol{list-style:none;margin:0 0 8px;padding:0;columns:1;column-count:1}
.map-side li{display:flex;align-items:center;gap:6px;padding:2px 0;break-inside:avoid}
.colleges-slot{margin-top:16px;margin-bottom:8px}
.colleges-slot .chart-box{margin:0}
.charts>#chart-map{grid-column:1/-1}   /* map full width of the charts grid, above events+news */

/* ---- batch-1836 (Alex 27 Oct 18:36) ---- */
/* 3) header: title level with the switch's 'All' row; one subtitle line; librairie.ai level with the St Andrews row (row 3); shorter bar */
@media (min-width:701px){
  .hub-home .header-inner{grid-template-rows:auto auto auto auto;padding:.9rem 1.5rem 2.05rem;align-items:start}
  .hub-home .header-inner .header-credit{grid-row:1/-1;align-self:start}
  .hub-home .header-titles h1{grid-row:1/span 2;align-self:start;margin-top:var(--h1-dy,-7px);white-space:nowrap;font-size:clamp(1.05rem,calc((100vw - 760px) * .05),1.6rem)}
  .hub-home .header-titles h1 .lozenge{white-space:nowrap}
  .hub-home .header-titles p.hl1{grid-row:3/span 2;align-self:start}
  .hub-home .header-inner .header-credit .site-url{grid-row:3}
}
/* 4) research column header: per-university count chips in very light orange */
.hub-home #rs-chips .rs-chip,html.dark.hub-home #rs-chips .rs-chip,html.dark .hub-home #rs-chips .rs-chip{background:#0b4f8a;border-color:#0b4f8a;color:#fff}
.hub-home #rs-chips .rs-chip:hover,html.dark .hub-home #rs-chips .rs-chip:hover{background:#093f6f}
.hub-home #rs-chips .rs-chip[aria-pressed="true"]{outline:2px solid #fff;outline-offset:-1px}
/* 6) map caveat across the full box width just under the map */
#chart-map .map-note{margin:4px 0 0;width:100%}
#chart-map{padding-bottom:10px}
/* 6) every hub box: header band (title + subtitle) in a dark version of the box's pastel, text reversed out in white */
#topics{--hd:#8a4a12}#hub-events{--hd:#1d4f7a}#compare{--hd:#1f6a45}#chart-orgs{--hd:#5a358f}#chart-papers{--hd:#8c2a54}
#chart-events{--hd:#1c5a80}#chart-news{--hd:#7a5810}#chart-months{--hd:#8a2a3f}#chart-map{--hd:#24467e}.notes{--hd:#6b5420}
.chart-box>h2,.notes>h2{background:var(--hd,#333);color:#fff;margin:-14px -16px 0;padding:9px 16px 7px;border-radius:var(--radius) var(--radius) 0 0}
.notes>h2{margin:-14px -18px 8px;padding:9px 18px 8px}
.chart-box>h2+.sub,.chart-box>h2+.cmp-note{background:var(--hd,#333);color:rgba(255,255,255,.92);margin:0 -16px 8px;padding:0 16px 8px;min-height:0}
.chart-box>h2+.sub a,.chart-box>h2+.sub b{color:#fff}
.chart-box>h2:not(:has(+ .sub)):not(:has(+ .cmp-note)){margin-bottom:8px}
.hub-events>.he-head{background:var(--hd);color:#fff;margin:-14px -16px 8px;padding:9px 16px 8px;border-radius:var(--radius) var(--radius) 0 0}
.hub-events>.he-head .he-sub{color:rgba(255,255,255,.92)}

/* ---- 20:18 tweaks: research column top light grey; disclaimer lighter/smaller; switch panel dark grey; toggle knob centred ---- */
.hub-home .rs-head,html.dark .hub-home .rs-head,.hub-home .rs-head:hover,.hub-home .rs-head:focus-within,html.dark .hub-home .rs-head:hover,html.dark .hub-home .rs-head:focus-within{background:#EEF0F3;color:#14181f;box-shadow:inset 0 -1px 0 #d5d9e0}
.hub-home .rs-head:hover,.hub-home .rs-head:focus-within,html.dark .hub-home .rs-head:hover{background:#e4e7ec}
.hub-home a.rs-title,.hub-home .rs-head h2,.hub-home .rs-head .hint,.hub-home a.rs-full{color:#14181f}
.hub-home .rs-tools,html.dark .hub-home .rs-tools{background:#EEF0F3;border-bottom-color:#d5d9e0}
.hub-home .rs-tools input{background:#fff;color:#14181f;border-color:#c9ced6}
.hub-home .rs-tools input::placeholder{color:#5a6270}
.hub-home #rs-chips .rs-chip[aria-pressed="true"]{outline:2px solid #14181f;outline-offset:1px}
.hub-home .site-header .gen-note,.hub-home .site-header .gen-note *{font-weight:400;font-size:calc(10px - 1pt)}
.hub-home .site-header #uni-switch,html.dark .hub-home .site-header #uni-switch{background:#3a3a3a}
.hub-home .site-header #uni-switch .us-opt.us-all:not(.on){background:#555}
.theme-switch .ts-knob{top:50%;margin-top:-5px}
/* 20:22: AI Topics bars mid brown = midpoint of band #8a4a12 and body #fff3e6 (#c49e7c, already brown, hue 28deg), darkened to #a78669 for >=3:1 on the body; dark mode uses the raw midpoint */
.hub-home .topics{--tp-bar:#a78669}html.dark .hub-home .topics{--tp-bar:#c49e7c}

/* hubhdr3 (Alex 27 Oct 23:31): Gen-AI note centred under the MIDDLE of the switch panel; Dark/Light slider moved to the bottom right of the bar,
   level with the middle of the two note lines and right-aligned with the ".ai" of www.librairie.ai (positions set exactly by the hdr-align script) */
.site-header>.theme-switch{position:absolute;right:1.5rem;bottom:4px;z-index:3;margin:0;transform:none;padding:2px 6px;font-size:.72rem}
.site-header>.theme-switch .ts-track{height:12px;width:22px}.site-header>.theme-switch .ts-knob{width:10px;height:10px}
.site-header>.theme-switch .ts-ico{font-size:.7rem}
@media (min-width:701px){.site-header>.gen-note{align-items:center;text-align:center}}
@media (max-width:700px){.site-header>.theme-switch{position:relative;right:auto;bottom:auto;display:flex;width:max-content;margin:4px 1rem 4px auto}}
