/* ===================== R² Lab — TRIAL style (Apple-like). Loaded only by trial.html ===================== */
:root{--t-ink:#1d1d1f;--t-ink2:#424245;--t-muted:#6e6e73;--t-blue:#0066cc;--t-blue-h:#0077ed;--t-bg:#fbfbfd;--t-soft:#f5f5f7;--t-card:#fff;--t-line:rgba(0,0,0,.08);
  --t-shadow:0 1px 3px rgba(0,0,0,.04),0 12px 32px rgba(0,0,0,.06);--t-shadow-h:0 4px 12px rgba(0,0,0,.06),0 24px 54px rgba(0,0,0,.10);
  --t-ease:cubic-bezier(.16,1,.3,1);--t-font:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif}
html.r2-dark{--t-ink:#f5f5f7;--t-ink2:#d2d2d7;--t-muted:#a1a1a6;--t-bg:#000;--t-soft:#101012;--t-card:#161618;--t-line:rgba(255,255,255,.1);--t-blue:#2997ff;--t-blue-h:#47a6ff;
  --t-shadow:0 1px 3px rgba(0,0,0,.5),0 12px 32px rgba(0,0,0,.5);--t-shadow-h:0 4px 12px rgba(0,0,0,.5),0 24px 54px rgba(0,0,0,.6)}
html.t-apple body{background:var(--t-bg)!important}
html.t-apple body::before,html.t-apple body::after{opacity:.35}
/* only the home view shows the new home */
html.t-apple body:not(.r2-home-view) #home-slot{display:none!important}

/* ---------- fonts: Inter (Apple-like) or the current Playfair ---------- */
html.t-inter body{font-family:var(--t-font)!important;-webkit-font-smoothing:antialiased}
html.t-inter :is(h1,h2,h3,h4):not(.poster-board *):not(.r2-rich-content *):not(.r2-note-modal-body *):not(.r2-rich-public *){font-family:var(--t-font)!important;letter-spacing:-.025em!important;font-weight:700!important}
html.t-inter :is(.r2-lc-title,.r2-og-main h3,.pub-card h3,.r2-public-note-card h3,.r2-dynamic-project h3,.r2-related-item strong){font-family:var(--t-font)!important;font-weight:600!important;letter-spacing:-.015em!important}
html.t-inter :is(button,input,select,textarea){font-family:var(--t-font)}

/* ---------- glass menu (desktop only; phones stay light) ---------- */
@media (min-width:900px) and (hover:hover){
  html.t-apple .top{background:rgba(251,251,253,.72)!important;-webkit-backdrop-filter:saturate(180%) blur(20px)!important;backdrop-filter:saturate(180%) blur(20px)!important;border-bottom:1px solid var(--t-line)!important;box-shadow:none!important}
  html.t-apple.r2-dark .top{background:rgba(22,22,24,.72)!important}
}

/* ---------- home ---------- */
.t-home{color:var(--t-ink)}
.t-wrap{max-width:1080px;margin:0 auto;padding:0 22px}
.t-center{text-align:center}
.t-home section{position:relative}
.t-eyebrow{margin:0 0 14px;font-size:13px;font-weight:600;letter-spacing:.01em;color:var(--t-blue)}
.t-home h1{margin:0;font-size:clamp(40px,6.6vw,78px)!important;line-height:1.04!important;letter-spacing:-.035em!important;color:var(--t-ink)}
.t-home h2{margin:0;font-size:clamp(32px,4.8vw,54px)!important;line-height:1.08!important;letter-spacing:-.03em!important;color:var(--t-ink)}
html.t-serif .t-home :is(h1,h2){font-family:'Playfair Display',Georgia,serif!important;font-weight:500!important;letter-spacing:-.015em!important}
.t-lead{margin:22px auto 0;max-width:680px;font-size:clamp(17px,2vw,22px);line-height:1.5;font-weight:500;letter-spacing:-.01em;color:var(--t-muted)}
.t-sub{margin:14px auto 0;max-width:620px;font-size:17px;line-height:1.5;color:var(--t-muted)}
.t-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:32px}
.t-btn{display:inline-flex;align-items:center;gap:6px;padding:12px 22px;border:0;border-radius:999px;font:inherit;font-size:16px;font-weight:500;cursor:pointer;transition:transform .2s var(--t-ease),background .2s,color .2s}
.t-btn:active{transform:scale(.97)}
.t-btn.primary{background:var(--t-blue);color:#fff}
.t-btn.primary:hover{background:var(--t-blue-h)}
.t-btn.link{background:transparent;color:var(--t-blue);padding:12px 6px}
.t-btn.link::after{content:"›";font-size:20px;line-height:1}
.t-btn.link:hover span,.t-btn.link:hover{text-decoration:underline}
/* hero */
.t-hero{padding:130px 0 90px;overflow:hidden}
.t-hero-bg{position:absolute;left:-5%;right:-5%;top:-10%;height:120%;color:var(--t-blue);pointer-events:none;will-change:transform}
.t-hero-bg svg{width:100%;height:100%}
.t-hero .t-wrap{position:relative;z-index:1}
html body .t-home .r2-hero-topics.t-chips{display:flex!important;flex-wrap:wrap;justify-content:center;gap:8px!important;max-width:760px;margin:40px auto 0!important;padding:0!important;background:none!important;border:0!important}
html body .t-home .r2-hero-topics.t-chips span{padding:7px 14px!important;border:0!important;border-radius:999px!important;background:var(--t-soft)!important;color:var(--t-ink2)!important;font-size:13.5px!important;font-weight:500!important;box-shadow:none!important;transition:transform .25s var(--t-ease),background .2s}
html body .t-home .r2-hero-topics.t-chips span::before{display:none!important}
html body .t-home .r2-hero-topics.t-chips span:hover{transform:translateY(-2px);background:color-mix(in srgb,var(--t-blue) 12%,var(--t-soft))!important}
/* big numbers */
.t-stats-sec{padding:30px 0 110px}
.t-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;max-width:860px}
.t-stat{display:flex;flex-direction:column;align-items:center;text-decoration:none;color:inherit}
.t-stat strong{display:block;font-family:var(--t-font);font-size:clamp(52px,8.5vw,104px);font-weight:700;line-height:1;letter-spacing:-.045em;background:linear-gradient(180deg,var(--t-ink),color-mix(in srgb,var(--t-ink) 50%,transparent));-webkit-background-clip:text;background-clip:text;color:transparent}
html.t-serif .t-stat strong{font-family:'Playfair Display',Georgia,serif;font-weight:500}
.t-stat span{margin-top:10px;font-size:15px;font-weight:500;color:var(--t-muted)}
/* dark highlight */
.t-dark{padding:110px 0 120px;background:#000;color:#f5f5f7}
html.r2-dark .t-dark{background:#0d0d0f;border-top:1px solid #1d1d20;border-bottom:1px solid #1d1d20}
.t-dark h2{color:#f5f5f7!important}
.t-dark .t-eyebrow{color:#2997ff}
.t-dark .t-lead{color:#a1a1a6}
.t-dark .t-btn.link{color:#2997ff}
.t-showcase{max-width:900px;margin:56px auto 0;border-radius:28px;overflow:hidden;background:#fff;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.t-showcase img{display:block;width:100%;aspect-ratio:16/9;object-fit:contain;padding:26px;background:#fff}
/* latest as clean cards */
.t-sec{padding:110px 0}
.t-soft{background:var(--t-soft)}
html body .t-home #r2LatestGrid.t-latest{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:54px}
html body .t-home .t-latest .r2-lc-row{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:0!important;margin:0!important;padding:0!important;border:0!important;border-radius:24px!important;background:var(--t-card)!important;box-shadow:var(--t-shadow)!important;overflow:hidden!important;transition:transform .5s var(--t-ease),box-shadow .5s var(--t-ease)!important}
html body .t-home .t-latest .r2-lc-row .r2-latest-media{width:100%!important;height:auto!important;aspect-ratio:4/3!important;border:0!important;border-radius:0!important;background:#f5f5f7!important}
html body .t-home .t-latest .r2-lc-row .r2-latest-media img{padding:18px!important;transition:transform .8s var(--t-ease)!important}
html body .t-home .t-latest .r2-lc-row .r2-lc-body{padding:18px 22px 24px!important;gap:8px!important}
html body .t-home .t-latest .r2-lc-title{font-size:19px!important;line-height:1.3!important;color:var(--t-ink)!important}
html body .t-home .t-latest .r2-lc-arrow{display:none}
html body .t-home .t-latest .r2-lc-type,html body .t-home .t-latest .r2-lc-new{background:transparent!important;padding:0!important;letter-spacing:.02em!important;text-transform:none!important;font-size:12.5px!important;font-weight:600!important}
html body .t-home .t-latest .r2-lc-type{color:var(--t-blue)!important}
html body .t-home .t-latest .r2-lc-new{color:#1d8a4e!important}
@media (hover:hover){ html body .t-home .t-latest .r2-lc-row:hover{transform:translateY(-6px) scale(1.01)!important;box-shadow:var(--t-shadow-h)!important;background:var(--t-card)!important} html body .t-home .t-latest .r2-lc-row:hover .r2-latest-media img{transform:scale(1.04)!important} }
.t-more{display:flex;justify-content:center;flex-wrap:wrap;gap:6px 26px;margin-top:40px}
.t-more a{color:var(--t-blue);font-size:15px;font-weight:500;text-decoration:none}
.t-more a:hover{text-decoration:underline}
/* in progress */
html body .t-home .t-og{max-width:860px;margin:54px auto 0;background:var(--t-card);border-radius:24px;box-shadow:var(--t-shadow);overflow:hidden}
html body .t-home .t-og .r2-og-row{display:grid!important;grid-template-columns:130px 1fr auto!important;gap:18px!important;padding:24px 28px!important;border-top:1px solid var(--t-line)!important;background:transparent!important}
html body .t-home .t-og .r2-og-row:first-child{border-top:0!important}
html body .t-home .t-og .r2-og-main h3{font-size:19px!important;color:var(--t-ink)!important}
html body .t-home .t-og .r2-og-main p{font-size:14.5px!important;color:var(--t-muted)!important}
html body .t-home .t-og .r2-og-year{background:transparent!important;padding:0!important;color:var(--t-muted)!important}

/* ---------- other pages: same calm cards and big titles ---------- */
html.t-apple :is(.pub-head h2,.notes-head h2,.projects-head h2){font-size:clamp(36px,5vw,58px)!important;line-height:1.05!important;letter-spacing:-.035em!important}
html.t-serif :is(.pub-head h2,.notes-head h2,.projects-head h2){letter-spacing:-.015em!important;font-weight:500!important}
html.t-apple .projects-section{background:transparent!important;border-top:0!important}
html.t-apple :is(.pub-card,.r2-public-note-card,.r2-dynamic-project,.r2-about-box,.r2-info-card,.r2-about-contact,.r2-ongoing-list){border-color:transparent!important;border-radius:22px!important;box-shadow:var(--t-shadow)!important;background:var(--t-card)!important}
html.t-apple :is(.pub-card,.r2-public-note-card,.r2-dynamic-project){transition:transform .5s var(--t-ease),box-shadow .5s var(--t-ease)!important}
@media (hover:hover){ html.t-apple :is(.pub-card,.r2-public-note-card,.r2-dynamic-project):hover{transform:translateY(-6px)!important;box-shadow:var(--t-shadow-h)!important} }
html.t-apple :is(.r2-publication-dialog,.r2-note-modal-dialog,.r2-project-dialog){border-radius:28px!important}

/* ---------- layered reveal ---------- */
html.t-apple [data-rv]{opacity:0;transform:translateY(32px);transition:opacity 1s var(--t-ease),transform 1s var(--t-ease);transition-delay:calc(var(--i,0) * 90ms)}
html.t-apple [data-rv][data-zoom]{transform:translateY(22px) scale(.96)}
html.t-apple [data-rv].t-in{opacity:1;transform:none}

/* ---------- trial bar ---------- */
.t-bar{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:5000;display:flex;align-items:center;gap:4px;padding:5px;border-radius:999px;background:rgba(29,29,31,.88);color:#fff;font:600 12px/1 'Inter',system-ui,sans-serif;box-shadow:0 10px 30px rgba(0,0,0,.25);white-space:nowrap}
.t-bar b{padding:0 10px;color:#ffd479;letter-spacing:.08em}
.t-bar button,.t-bar a{border:0;border-radius:999px;padding:9px 12px;background:transparent;color:#d2d2d7;font:inherit;cursor:pointer;text-decoration:none}
.t-bar button.on{background:#fff;color:#1d1d1f}
.t-bar a{color:#2997ff}

@media (max-width:820px){
  .t-hero{padding:96px 0 70px} .t-sec,.t-dark{padding:80px 0} .t-stats-sec{padding:10px 0 80px}
  html body .t-home #r2LatestGrid.t-latest{grid-template-columns:1fr;gap:18px}
  html body .t-home .t-og .r2-og-row{grid-template-columns:1fr auto!important;padding:20px!important}
  html body .t-home .t-og .r2-og-row .r2-ongoing-status{grid-column:1;grid-row:1} html body .t-home .t-og .r2-og-year{grid-column:2;grid-row:1} html body .t-home .t-og .r2-og-main{grid-column:1/-1}
  .t-stats{gap:6px} .t-bar b{display:none}
}
@media (prefers-reduced-motion: reduce){ html.t-apple [data-rv]{opacity:1;transform:none;transition:none} .t-hero-bg{transform:none!important} }
.t-dark h2{font-size:clamp(28px,3.6vw,46px)!important;max-width:920px;margin-left:auto!important;margin-right:auto!important}

/* ---- round 2 (owner feedback) ---- */
.t-home h1.t-h1-calm{max-width:820px;margin:0 auto!important;font-size:clamp(26px,3.3vw,40px)!important;line-height:1.25!important;letter-spacing:-.02em!important;font-weight:600!important}
html.t-serif .t-home h1.t-h1-calm{font-weight:500!important;line-height:1.3!important}
.t-hero{padding:120px 0 80px}
/* colourful but calm numbers */
.t-stat strong{-webkit-text-fill-color:transparent}
.t-g1 strong{background-image:linear-gradient(135deg,#2f7df6 0%,#7a5cff 55%,#c05cf2 100%)!important}
.t-g2 strong{background-image:linear-gradient(135deg,#ff8a3d 0%,#ff5f8f 60%,#e84fd1 100%)!important}
.t-g3 strong{background-image:linear-gradient(135deg,#10b981 0%,#14b8c7 55%,#3b82f6 100%)!important}
html.r2-dark .t-g1 strong{background-image:linear-gradient(135deg,#6aa8ff,#a58bff 55%,#e08cff)!important}
html.r2-dark .t-g2 strong{background-image:linear-gradient(135deg,#ffab70,#ff86ab 60%,#f07ee0)!important}
html.r2-dark .t-g3 strong{background-image:linear-gradient(135deg,#4fe0ad,#4ad6e3 55%,#7fb0ff)!important}
.t-stat span{position:relative;padding-top:12px}
.t-stat span::before{content:"";position:absolute;left:50%;top:0;width:28px;height:3px;border-radius:3px;transform:translateX(-50%);opacity:.7}
.t-g1 span::before{background:linear-gradient(90deg,#2f7df6,#c05cf2)}
.t-g2 span::before{background:linear-gradient(90deg,#ff8a3d,#e84fd1)}
.t-g3 span::before{background:linear-gradient(90deg,#10b981,#3b82f6)}
.t-home h1.t-h1-calm{font-size:clamp(22px,2.5vw,32px)!important;line-height:1.35!important;max-width:760px}

/* hero line: light, calm, key words in soft colour */
.t-home h1.t-h1-calm{max-width:720px!important;font-size:clamp(21px,2.3vw,30px)!important;line-height:1.45!important;font-weight:500!important;letter-spacing:-.018em!important;color:var(--t-muted)!important;text-wrap:balance}
.t-home h1.t-h1-calm em{font-style:normal;font-weight:600;color:var(--t-ink);background:linear-gradient(120deg,#2f7df6 0%,#7a5cff 50%,#e0569b 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
html.r2-dark .t-home h1.t-h1-calm em{background-image:linear-gradient(120deg,#6aa8ff,#a58bff 50%,#ff86ab)}
html.t-serif .t-home h1.t-h1-calm{font-weight:400!important;letter-spacing:-.005em!important}
html.t-serif .t-home h1.t-h1-calm em{font-style:italic;font-weight:500}
html body .t-home h1.t-h1-calm#tHeroLine{font-weight:400!important;letter-spacing:-.02em!important}html body .t-home h1.t-h1-calm#tHeroLine em{font-weight:600}html.t-serif body .t-home h1.t-h1-calm#tHeroLine{font-weight:400!important}

/* ---- round 4: white / white / black rhythm ---- */
.t-hero,.t-stats-sec,#r2Ongoing.t-sec{background:#fff}
html.r2-dark .t-hero,html.r2-dark .t-stats-sec,html.r2-dark #r2Ongoing.t-sec{background:#000}
.t-hero{padding-top:110px}
/* Recently added on black */
.t-night{background:#000!important;color:#f5f5f7}
html.r2-dark .t-night{background:#0d0d0f!important;border-top:1px solid #1d1d20;border-bottom:1px solid #1d1d20}
.t-night h2{color:#f5f5f7!important}
.t-night .t-sub{color:#a1a1a6}
.t-night .t-more a{color:#2997ff}
html body .t-home .t-night .t-latest .r2-lc-row{background:#1c1c1e!important;box-shadow:0 1px 2px rgba(0,0,0,.4),0 18px 44px rgba(0,0,0,.55)!important}
html body .t-home .t-night .t-latest .r2-lc-row .r2-latest-media{background:#f5f5f7!important}
html body .t-home .t-night .t-latest .r2-lc-title{color:#f5f5f7!important}
html body .t-home .t-night .t-latest .r2-lc-meta,html body .t-home .t-night .t-latest .r2-lc-date{color:#a1a1a6!important}
html body .t-home .t-night .t-latest .r2-lc-type{color:#2997ff!important}
html body .t-home .t-night .t-latest .r2-lc-new{color:#30d158!important}
@media (hover:hover){ html body .t-home .t-night .t-latest .r2-lc-row:hover{background:#232326!important;box-shadow:0 4px 12px rgba(0,0,0,.5),0 26px 60px rgba(0,0,0,.65)!important} }
/* numbers keep shimmering (only while they are on screen) */
.t-stat strong{background-size:220% 100%!important;animation:tShine 5.5s ease-in-out infinite;animation-play-state:paused}
.t-stat:nth-child(2) strong{animation-delay:-1.8s}
.t-stat:nth-child(3) strong{animation-delay:-3.6s}
#tStats.t-live .t-stat strong{animation-play-state:running}
@keyframes tShine{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
.t-g1 strong{background-image:linear-gradient(110deg,#2f7df6 0%,#7a5cff 30%,#c05cf2 50%,#7a5cff 70%,#2f7df6 100%)!important}
.t-g2 strong{background-image:linear-gradient(110deg,#ff8a3d 0%,#ff5f8f 30%,#e84fd1 50%,#ff5f8f 70%,#ff8a3d 100%)!important}
.t-g3 strong{background-image:linear-gradient(110deg,#10b981 0%,#14b8c7 30%,#3b82f6 50%,#14b8c7 70%,#10b981 100%)!important}
html.r2-dark .t-g1 strong{background-image:linear-gradient(110deg,#6aa8ff,#a58bff 30%,#e08cff 50%,#a58bff 70%,#6aa8ff)!important}
html.r2-dark .t-g2 strong{background-image:linear-gradient(110deg,#ffab70,#ff86ab 30%,#f07ee0 50%,#ff86ab 70%,#ffab70)!important}
html.r2-dark .t-g3 strong{background-image:linear-gradient(110deg,#4fe0ad,#4ad6e3 30%,#7fb0ff 50%,#4ad6e3 70%,#4fe0ad)!important}
@media (prefers-reduced-motion: reduce){ .t-stat strong{animation:none!important} }

/* ---- round 5: Research in progress on black, Recently added on white ---- */
#r2Ongoing.t-sec.t-night{background:#000!important}
html.r2-dark #r2Ongoing.t-sec.t-night{background:#0d0d0f!important;border-top:1px solid #1d1d20;border-bottom:1px solid #1d1d20}
#latest.t-day{background:#fff!important}
html.r2-dark #latest.t-day{background:#000!important}
html body .t-home .t-night .t-og{background:#1c1c1e!important;box-shadow:0 1px 2px rgba(0,0,0,.4),0 18px 44px rgba(0,0,0,.55)!important}
html body .t-home .t-night .t-og .r2-og-row{border-top-color:rgba(255,255,255,.08)!important}
html body .t-home .t-night .t-og .r2-og-main h3{color:#f5f5f7!important}
html body .t-home .t-night .t-og .r2-og-main p{color:#a1a1a6!important}
html body .t-home .t-night .t-og .r2-og-year{color:#a1a1a6!important}
html body .t-home .t-night .t-og .r2-ongoing-status{color:#ffb566!important}
html body .t-home .t-night .t-og .r2-ongoing-status::before{box-shadow:0 0 0 4px rgba(255,181,102,.18)!important}

/* ---- round 6: clearly sparkling numbers ---- */
/* layer 1: a white light that sweeps across; layer 2: the colour gradient */
.t-stat strong{position:relative;background-repeat:no-repeat!important;background-size:260% 100%,220% 100%!important;animation:tSweep 3.2s cubic-bezier(.4,0,.2,1) infinite,tShine 6s ease-in-out infinite!important;animation-play-state:paused!important}
#tStats.t-live .t-stat strong{animation-play-state:running!important}
.t-stat:nth-child(2) strong{animation-delay:-1.1s,-2s!important}
.t-stat:nth-child(3) strong{animation-delay:-2.2s,-4s!important}
.t-g1 strong{background-image:linear-gradient(105deg,transparent 42%,rgba(255,255,255,.95) 50%,transparent 58%),linear-gradient(110deg,#2f7df6 0%,#7a5cff 30%,#c05cf2 50%,#7a5cff 70%,#2f7df6 100%)!important}
.t-g2 strong{background-image:linear-gradient(105deg,transparent 42%,rgba(255,255,255,.95) 50%,transparent 58%),linear-gradient(110deg,#ff8a3d 0%,#ff5f8f 30%,#e84fd1 50%,#ff5f8f 70%,#ff8a3d 100%)!important}
.t-g3 strong{background-image:linear-gradient(105deg,transparent 42%,rgba(255,255,255,.95) 50%,transparent 58%),linear-gradient(110deg,#10b981 0%,#14b8c7 30%,#3b82f6 50%,#14b8c7 70%,#10b981 100%)!important}
html.r2-dark .t-g1 strong{background-image:linear-gradient(105deg,transparent 42%,rgba(255,255,255,.9) 50%,transparent 58%),linear-gradient(110deg,#6aa8ff,#a58bff 30%,#e08cff 50%,#a58bff 70%,#6aa8ff)!important}
html.r2-dark .t-g2 strong{background-image:linear-gradient(105deg,transparent 42%,rgba(255,255,255,.9) 50%,transparent 58%),linear-gradient(110deg,#ffab70,#ff86ab 30%,#f07ee0 50%,#ff86ab 70%,#ffab70)!important}
html.r2-dark .t-g3 strong{background-image:linear-gradient(105deg,transparent 42%,rgba(255,255,255,.9) 50%,transparent 58%),linear-gradient(110deg,#4fe0ad,#4ad6e3 30%,#7fb0ff 50%,#4ad6e3 70%,#4fe0ad)!important}
@keyframes tSweep{0%{background-position:130% 0,0% 50%}55%,100%{background-position:-30% 0,100% 50%}}
@keyframes tShine{0%{background-position:130% 0,0% 50%}50%{background-position:130% 0,100% 50%}100%{background-position:130% 0,0% 50%}}
/* little twinkling stars around each number (transform + opacity only) */
.t-stat{position:relative}
.t-stat::before,.t-stat::after{content:"";position:absolute;width:14px;height:14px;pointer-events:none;opacity:0;
  background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0c.8 6.5 5.5 11.2 12 12-6.5.8-11.2 5.5-12 12-.8-6.5-5.5-11.2-12-12C6.5 11.2 11.2 6.5 12 0z'/%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 24 24'%3E%3Cpath d='M12 0c.8 6.5 5.5 11.2 12 12-6.5.8-11.2 5.5-12 12-.8-6.5-5.5-11.2-12-12C6.5 11.2 11.2 6.5 12 0z'/%3E%3C/svg%3E") center/contain no-repeat;
  animation:tTwinkle 2.6s ease-in-out infinite;animation-play-state:paused}
.t-stat::before{top:2px;left:calc(50% + 34%);}
.t-stat::after{top:48%;left:calc(50% - 44%);width:10px;height:10px;animation-delay:-1.3s}
#tStats.t-live .t-stat::before,#tStats.t-live .t-stat::after{animation-play-state:running}
.t-g1{color:#7a5cff}.t-g2{color:#ff5f8f}.t-g3{color:#14b8c7}
.t-g2::before{animation-delay:-.8s}.t-g2::after{animation-delay:-2.1s}
.t-g3::before{animation-delay:-1.6s}.t-g3::after{animation-delay:-.4s}
@keyframes tTwinkle{0%,100%{opacity:0;transform:scale(.3) rotate(0deg)}45%{opacity:1;transform:scale(1) rotate(45deg)}60%{opacity:.85;transform:scale(.9) rotate(60deg)}}
.t-stat span{color:var(--t-muted)!important}
/* even with "reduce motion" on the device, keep a gentle sparkle on the numbers (owner's request) */
html.r2-reduce #tStats .t-stat strong{animation-duration:4.5s,8s!important;animation-iteration-count:infinite!important}
html.r2-reduce #tStats .t-stat::before,html.r2-reduce #tStats .t-stat::after{animation-duration:3.5s!important;animation-iteration-count:infinite!important}
@media (prefers-reduced-motion: reduce){ #tStats .t-stat strong{animation:tSweep 4.5s cubic-bezier(.4,0,.2,1) infinite,tShine 8s ease-in-out infinite!important} }
/* one animation drives both layers: the light sweeps across while the colours drift */
@keyframes tSparkle{0%{background-position:130% 0,0% 50%}50%{background-position:-30% 0,55% 50%}100%{background-position:-30% 0,0% 50%}}
html body #tStats .t-stat strong{animation:tSparkle 3.4s cubic-bezier(.45,0,.25,1) infinite!important;animation-play-state:paused!important}
html body #tStats.t-live .t-stat strong{animation-play-state:running!important}
html body #tStats .t-stat:nth-child(2) strong{animation-delay:-1.1s!important}
html body #tStats .t-stat:nth-child(3) strong{animation-delay:-2.2s!important}
html.r2-reduce body #tStats .t-stat strong{animation-duration:5s!important;animation-iteration-count:infinite!important}
@media (prefers-reduced-motion: reduce){ html body #tStats .t-stat strong{animation:tSparkle 5s cubic-bezier(.45,0,.25,1) infinite!important} }
.t-stat::before{left:calc(50% + clamp(30px,4.6vw,60px))!important;top:0!important}.t-stat::after{left:calc(50% - clamp(44px,6vw,78px))!important;top:42%!important}

/* ---- round 7 ---- */
/* 1. hero sentence justified (left & right edges straight), last line centred */
html body .t-home h1.t-h1-calm#tHeroLine{text-align:justify!important;text-align-last:center;text-wrap:wrap!important;hyphens:none;word-spacing:.02em;max-width:700px!important}
@media(max-width:640px){ html body .t-home h1.t-h1-calm#tHeroLine{max-width:100%!important} }
/* 3. Research in progress: black in light mode, WHITE in dark mode */
html.r2-dark #r2Ongoing.t-sec.t-night{background:#fff!important;border:0!important}
html.r2-dark #r2Ongoing.t-night h2{color:#1d1d1f!important}
html.r2-dark #r2Ongoing.t-night .t-sub{color:#6e6e73!important}
html.r2-dark body .t-home #r2Ongoing.t-night .t-og{background:#f5f5f7!important;box-shadow:0 1px 3px rgba(0,0,0,.05),0 12px 32px rgba(0,0,0,.08)!important}
html.r2-dark body .t-home #r2Ongoing.t-night .t-og .r2-og-row{border-top-color:rgba(0,0,0,.08)!important}
html.r2-dark body .t-home #r2Ongoing.t-night .t-og .r2-og-main h3{color:#1d1d1f!important}
html.r2-dark body .t-home #r2Ongoing.t-night .t-og .r2-og-main p,html.r2-dark body .t-home #r2Ongoing.t-night .t-og .r2-og-year{color:#6e6e73!important}
html.r2-dark body .t-home #r2Ongoing.t-night .t-og .r2-ongoing-status{color:#b5652f!important}
html.r2-dark body .t-home #r2Ongoing.t-night .t-og .r2-ongoing-status::before{box-shadow:0 0 0 4px rgba(181,101,47,.15)!important}

/* ===================== Admin — Apple-like: calm, clean, soft ===================== */
html.t-apple #r2cms .r2cms-panel{background:#f5f5f7!important}
html.t-apple.r2-dark #r2cms .r2cms-panel{background:#000!important}
html.t-inter #r2cms,html.t-inter #r2cms :is(h1,h2,h3,h4,p,label,button,input,select,textarea,a){font-family:var(--t-font)}
/* top bar: white glass with a hairline */
html.t-apple #r2cms .r2cms-top{background:rgba(255,255,255,.8)!important;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid rgba(0,0,0,.08)!important;box-shadow:none!important}
html.t-apple.r2-dark #r2cms .r2cms-top{background:rgba(22,22,24,.82)!important;border-color:rgba(255,255,255,.08)!important}
@media (max-width:899px){html.t-apple #r2cms .r2cms-top{-webkit-backdrop-filter:none;backdrop-filter:none;background:#fff!important}html.t-apple.r2-dark #r2cms .r2cms-top{background:#161618!important}}
html.t-inter #r2cms .r2cms-brand{font-family:var(--t-font)!important;font-weight:700!important;letter-spacing:-.02em}
/* headings */
html.t-apple #r2cms .r2cms-kicker{color:var(--t-blue)!important;letter-spacing:.06em!important;font-weight:600!important}
html.t-apple #r2cms .r2cms-head h1{font-size:clamp(30px,3.6vw,44px)!important;letter-spacing:-.03em!important;font-weight:700!important}
html.t-apple #r2cms .r2cms-muted{color:var(--t-muted)!important}
/* buttons */
html.t-apple #r2cms .r2cms-btn{border-radius:999px!important;font-weight:500!important;box-shadow:none!important;transition:background .2s,transform .15s!important}
html.t-apple #r2cms .r2cms-btn:active{transform:scale(.97)}
html.t-apple #r2cms .r2cms-btn:not(.alt):not(.danger),html.t-apple #r2cms .r2-menu-add>summary{background:var(--t-blue)!important;border-color:var(--t-blue)!important;color:#fff!important}
html.t-apple #r2cms .r2cms-btn:not(.alt):not(.danger):hover,html.t-apple #r2cms .r2-menu-add>summary:hover{background:var(--t-blue-h)!important}
html.t-apple #r2cms .r2cms-btn.alt{background:#fff!important;border:1px solid rgba(0,0,0,.1)!important;color:var(--t-ink)!important}
html.t-apple #r2cms .r2cms-btn.alt:hover{background:#f0f0f3!important}
html.t-apple #r2cms .r2cms-btn.danger{background:#fff!important;border:1px solid rgba(215,0,21,.25)!important;color:#d70015!important}
html.t-apple.r2-dark #r2cms .r2cms-btn.alt{background:#1c1c1e!important;border-color:rgba(255,255,255,.12)!important;color:#f5f5f7!important}
html.t-apple.r2-dark #r2cms .r2cms-btn.alt:hover{background:#2c2c2e!important}
html.t-apple.r2-dark #r2cms .r2cms-btn.danger{background:#1c1c1e!important;color:#ff6961!important;border-color:rgba(255,105,97,.3)!important}
/* stat cards: white, no side stripes, colourful numbers */
html.t-apple #r2cms .r2cms-stat{border:0!important;border-radius:20px!important;background:#fff!important;box-shadow:0 1px 3px rgba(0,0,0,.04),0 10px 28px rgba(0,0,0,.05)!important;padding:18px 20px!important}
html.t-apple #r2cms .r2cms-stat::before,html.t-apple #r2cms .r2cms-stat::after{display:none!important}
html.t-apple #r2cms .r2cms-stat strong{font-family:var(--t-font)!important;font-weight:700!important;letter-spacing:-.03em!important;font-size:34px!important;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent!important}
html.t-apple #r2cms .r2cms-stat:nth-child(1) strong{background-image:linear-gradient(120deg,#2f7df6,#7a5cff 60%,#c05cf2)}
html.t-apple #r2cms .r2cms-stat:nth-child(2) strong{background-image:linear-gradient(120deg,#10b981,#14b8c7 55%,#3b82f6)}
html.t-apple #r2cms .r2cms-stat:nth-child(3) strong{background-image:linear-gradient(120deg,#ff8a3d,#ff5f8f 60%,#e84fd1)}
html.t-apple #r2cms .r2cms-stat:nth-child(4) strong{background-image:linear-gradient(120deg,#1d1d1f,#6e6e73)}
html.t-apple.r2-dark #r2cms .r2cms-stat:nth-child(4) strong{background-image:linear-gradient(120deg,#f5f5f7,#a1a1a6)}
html.t-apple #r2cms .r2cms-stat span{font-size:11px!important;letter-spacing:.06em!important;color:var(--t-muted)!important;font-weight:600!important}
html.t-apple.r2-dark #r2cms .r2cms-stat{background:#1c1c1e!important;box-shadow:none!important}
/* tabs: Apple segmented control */
html.t-apple #r2cms .r2cms-tabs{background:#e8e8ed!important;border:0!important;border-radius:14px!important;padding:3px!important;box-shadow:none!important;gap:2px!important}
html.t-apple #r2cms .r2cms-tab{border:0!important;border-radius:11px!important;background:transparent!important;color:var(--t-ink2)!important;font-weight:500!important;padding:8px 14px!important;box-shadow:none!important}
html.t-apple #r2cms .r2cms-tab.active{background:#fff!important;color:var(--t-ink)!important;font-weight:600!important;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px rgba(0,0,0,.04)!important}
html.t-apple.r2-dark #r2cms .r2cms-tabs{background:#1c1c1e!important}
html.t-apple.r2-dark #r2cms .r2cms-tab.active{background:#3a3a3c!important;color:#f5f5f7!important}
/* list items */
html.t-apple #r2cms .r2cms-item{border:0!important;border-radius:18px!important;background:#fff!important;box-shadow:0 1px 2px rgba(0,0,0,.04),0 6px 18px rgba(0,0,0,.04)!important;transition:box-shadow .25s}
@media (hover:hover){html.t-apple #r2cms .r2cms-item:hover{box-shadow:0 2px 6px rgba(0,0,0,.05),0 14px 34px rgba(0,0,0,.08)!important}}
html.t-apple #r2cms .r2cms-item h3{font-family:var(--t-font)!important;font-weight:600!important;letter-spacing:-.015em!important}
html.t-apple #r2cms .r2cms-badge{background:#f0f0f5!important;color:var(--t-blue)!important;border:0!important;font-weight:600!important;letter-spacing:.03em!important}
html.t-apple.r2-dark #r2cms .r2cms-item{background:#1c1c1e!important;box-shadow:none!important}
html.t-apple.r2-dark #r2cms .r2cms-badge{background:#2c2c2e!important;color:#6cb4ff!important}
/* editor: one white sheet with soft fields */
html.t-apple #r2cms .r2cms-editor{background:#fff!important;border:0!important;border-radius:26px!important;box-shadow:0 1px 3px rgba(0,0,0,.04),0 16px 40px rgba(0,0,0,.06)!important}
html.t-apple.r2-dark #r2cms .r2cms-editor{background:#1c1c1e!important;box-shadow:none!important}
html.t-apple #r2cms .r2cms-field>label{color:var(--t-muted)!important;font-weight:600!important;letter-spacing:.05em!important}
html.t-apple #r2cms .r2cms-field :is(input:not([type=file]):not([type=checkbox]):not([type=color]):not([type=range]),textarea,select),html.t-apple #r2cms .r2-rich-content{background:#f5f5f7!important;border:1px solid transparent!important;border-radius:12px!important;box-shadow:none!important;transition:border-color .2s,box-shadow .2s,background .2s}
html.t-apple #r2cms .r2cms-field :is(input,textarea,select):focus,html.t-apple #r2cms .r2-rich-content:focus{background:#fff!important;border-color:var(--t-blue)!important;box-shadow:0 0 0 4px rgba(0,102,204,.14)!important}
html.t-apple.r2-dark #r2cms .r2cms-field :is(input:not([type=file]):not([type=checkbox]):not([type=color]):not([type=range]),textarea,select),html.t-apple.r2-dark #r2cms .r2-rich-content{background:#2c2c2e!important;color:#f5f5f7!important}
html.t-apple.r2-dark #r2cms .r2cms-field :is(input,textarea,select):focus,html.t-apple.r2-dark #r2cms .r2-rich-content:focus{background:#1c1c1e!important}
/* menus, idea cards, translate bar, login */
html.t-apple #r2cms .r2-menu-list{border:0!important;border-radius:16px!important;box-shadow:0 10px 40px rgba(0,0,0,.14),0 0 0 1px rgba(0,0,0,.05)!important}
html.t-apple #r2cms .r2-ideas-card,html.t-apple #r2cms .r2-ideas-col{border:0!important;border-radius:20px!important;box-shadow:0 1px 2px rgba(0,0,0,.04),0 8px 24px rgba(0,0,0,.05)!important}
html.t-apple.r2-dark #r2cms .r2-ideas-card,html.t-apple.r2-dark #r2cms .r2-ideas-col{background:#1c1c1e!important;box-shadow:none!important}
html.t-apple #r2cms .r2-topic-btn{border-color:transparent!important;background:#f0f0f5!important;color:var(--t-ink)!important}
html.t-apple #r2cms :is(.r2-ideas-tabs button.is-on,.r2-topic-chips button.is-on,.r2-fav-list button.is-on){background:var(--t-blue)!important;border-color:var(--t-blue)!important;color:#fff!important}
html.t-apple #r2cms .r2-tr-all{border:0!important;background:#f0f5fb!important;border-radius:16px!important}
html.t-apple.r2-dark #r2cms .r2-tr-all{background:#1a2230!important}
html.t-apple #r2cms .r2-tr-all .r2-tr-btn{background:var(--t-blue)!important;border-color:var(--t-blue)!important;color:#fff!important}
html.t-apple #r2cms .r2-login-card{border:0!important;border-radius:28px!important;box-shadow:0 2px 8px rgba(0,0,0,.05),0 30px 80px rgba(0,0,0,.12)!important}
html.t-apple #r2cms .r2-login-form .r2cms-btn,html.t-apple #r2cms .r2-login-form button[type=submit]{background:var(--t-blue)!important;border-color:var(--t-blue)!important;color:#fff!important}
.t-hero-bg{left:0!important;right:0!important}

html body .t-home h1.t-h1-calm#tHeroLine{max-width:620px!important}
@media(max-width:640px){html body .t-home h1.t-h1-calm#tHeroLine{font-size:18px!important;line-height:1.55!important}}

/* ===================== round 8: sparkle ===================== */
/* hero buttons */
html body .t-btns{gap:14px;align-items:center}
html body .t-btn{position:relative;font-weight:600;letter-spacing:-.01em;gap:9px}
html body .t-btn svg{width:18px;height:18px;flex:0 0 auto;transition:transform .35s var(--t-ease)}
html body .t-btn.primary.t-glow{padding:14px 26px 14px 28px;color:#fff;background:linear-gradient(120deg,#0071e3 0%,#3a5cf5 55%,#7a5cff 100%);background-size:160% 100%;background-position:0% 50%;
  box-shadow:0 10px 26px -8px rgba(0,102,204,.6),inset 0 1px 0 rgba(255,255,255,.28);transition:transform .35s var(--t-ease),box-shadow .35s var(--t-ease),background-position .6s var(--t-ease)}
html body .t-btn.ghost{padding:13px 22px;color:var(--t-blue);background:rgba(0,102,204,.07);box-shadow:inset 0 0 0 1px rgba(0,102,204,.18);transition:transform .35s var(--t-ease),background .3s,box-shadow .3s}
html.r2-dark body .t-btn.primary.t-glow{background-image:linear-gradient(120deg,#0a84ff 0%,#4f6bff 55%,#9a7bff 100%);box-shadow:0 10px 30px -8px rgba(10,132,255,.65),inset 0 1px 0 rgba(255,255,255,.22)}
html.r2-dark body .t-btn.ghost{color:#4da3ff;background:rgba(41,151,255,.12);box-shadow:inset 0 0 0 1px rgba(41,151,255,.3)}
@media (hover:hover){
  html body .t-btn.primary.t-glow:hover{transform:translateY(-2px);background-position:100% 50%;box-shadow:0 16px 36px -10px rgba(58,92,245,.7),inset 0 1px 0 rgba(255,255,255,.3)}
  html body .t-btn.ghost:hover{transform:translateY(-2px);background:rgba(0,102,204,.12)}
  html.r2-dark body .t-btn.ghost:hover{background:rgba(41,151,255,.2)}
  html body .t-btn:hover .t-btn-ic{transform:translateX(4px)}
  html body .t-btn.ghost:hover span{text-decoration:none}
}
html body .t-btn:active{transform:scale(.97)!important}

/* moving light (clip box + band): used on hero button and header items */
.t-shine-host{position:relative}
.t-sheen{position:absolute;inset:0;border-radius:inherit;overflow:hidden;pointer-events:none;z-index:2}
.t-sheen::before{content:"";position:absolute;top:-20%;bottom:-20%;left:0;width:60%;transform:translateX(-170%) skewX(-18deg);
  background:linear-gradient(90deg,transparent 0%,rgba(120,150,255,.22) 30%,rgba(255,255,255,.95) 50%,rgba(255,130,210,.22) 70%,transparent 100%);
  animation:tSheen 7s cubic-bezier(.45,0,.25,1) infinite;will-change:transform}
.t-btn .t-sheen::before{background:linear-gradient(90deg,transparent,rgba(255,255,255,.55) 50%,transparent);animation-duration:4.5s}
.t-sheen.t-d2::before{animation-delay:1.2s}.t-sheen.t-d3::before{animation-delay:2.1s}.t-sheen.t-d4::before{animation-delay:3s}
@keyframes tSheen{0%{transform:translateX(-170%) skewX(-18deg)}22%,100%{transform:translateX(270%) skewX(-18deg)}}
/* logo: the light only touches the logo drawing itself */
.top .brand>.t-sheen-logo{border-radius:0;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}
.top .brand>.t-sheen-logo::before{width:45%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2) 30%,#fff 50%,rgba(255,255,255,.2) 70%,transparent)}
html.r2-dark .top .brand>.t-sheen-logo::before{background:linear-gradient(90deg,transparent,rgba(255,214,120,.35) 30%,#fff3c4 50%,rgba(120,190,255,.35) 70%,transparent)}
html:not(.r2-dark) .top .brand>.t-sheen-logo{mix-blend-mode:normal}
/* light-mode header buttons are white, so give the band a touch of colour there */
html:not(.r2-dark) :is(#r2SearchBtn,.r2-lang-switch,#r2ThemeToggle)>.t-sheen::before{background:linear-gradient(90deg,transparent 0%,rgba(90,120,255,.28) 30%,rgba(255,255,255,.9) 50%,rgba(255,110,190,.28) 70%,transparent 100%)}

/* tap: small star burst + a soft glow on the text (colour stays the same) */
.t-burst{position:absolute;width:0;height:0;pointer-events:none;z-index:5}
.t-burst b{position:absolute;left:-6px;top:-6px;width:12px;height:12px;color:#ffc53d;opacity:0;transform:rotate(var(--a)) translateY(0) scale(.2);animation:tBurst .75s cubic-bezier(.2,.8,.3,1) forwards}
.t-burst b:nth-child(2n){color:#7a5cff;width:9px;height:9px}
.t-burst b:nth-child(3n){color:#ff5f8f}
.t-burst svg,.t-stars svg{display:block;width:100%;height:100%;fill:currentColor}
@keyframes tBurst{0%{opacity:0;transform:rotate(var(--a)) translateY(0) scale(.2)}25%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateY(-26px) scale(1) rotate(90deg)}}
#r2-main-nav a.t-glint{animation:tGlowTxt .9s ease-out}
@keyframes tGlowTxt{0%{text-shadow:none}30%{text-shadow:0 0 10px rgba(0,113,227,.55),0 0 22px rgba(122,92,255,.35)}100%{text-shadow:none}}
html.r2-dark #r2-main-nav a.t-glint{animation-name:tGlowTxtD}
@keyframes tGlowTxtD{0%{text-shadow:none}30%{text-shadow:0 0 10px rgba(255,255,255,.75),0 0 24px rgba(120,170,255,.55)}100%{text-shadow:none}}
:is(#r2SearchBtn,#r2ThemeToggle,.top .r2-lang-switch).t-glint{animation:tPop .45s var(--t-ease)}
@keyframes tPop{0%{transform:scale(1)}40%{transform:scale(1.08)}100%{transform:scale(1)}}
:is(#r2SearchBtn,#r2ThemeToggle,.top .r2-lang-switch).t-glint{box-shadow:0 0 0 4px rgba(122,92,255,.14),0 6px 22px rgba(0,113,227,.25)!important}

/* numbers: extra stars and a breathing glow behind each */
.t-stars{position:absolute;inset:0;pointer-events:none;z-index:0}
.t-stat strong{z-index:1}
.t-halo{position:absolute;left:50%;top:40%;width:190px;height:150px;margin:-75px 0 0 -95px;border-radius:50%;background:radial-gradient(closest-side,currentColor,transparent);opacity:0;transform:scale(.8);animation:tHalo 3.4s ease-in-out infinite;animation-play-state:paused}
@keyframes tHalo{0%,100%{opacity:.06;transform:scale(.8)}50%{opacity:.2;transform:scale(1.08)}}
html.r2-dark .t-halo{animation-name:tHaloD}
@keyframes tHaloD{0%,100%{opacity:.1;transform:scale(.8)}50%{opacity:.3;transform:scale(1.08)}}
.t-st{position:absolute;width:12px;height:12px;opacity:0;animation:tTwinkle 2.4s ease-in-out infinite;animation-play-state:paused}
.t-st0{left:calc(50% + clamp(42px,5.5vw,74px));top:52%;width:9px;height:9px}
.t-st1{left:calc(50% - clamp(30px,4vw,54px));top:-2%;width:16px;height:16px;color:#ffc53d}
.t-st2{left:calc(50% + clamp(12px,2vw,28px));top:66%;width:8px;height:8px;color:#fff}
html:not(.r2-dark) .t-st2{color:#ffc53d}
.t-st3{left:calc(50% - clamp(62px,7vw,92px));top:12%;width:10px;height:10px}
#tStats.t-live :is(.t-halo,.t-st){animation-play-state:running}
html body #tStats .t-stat strong{animation-duration:2.8s!important}

/* reduce-motion devices: keep it, just slower (owner's request) */
html.r2-reduce body .t-sheen::before{animation-duration:9s!important;animation-iteration-count:infinite!important}
html.r2-reduce body :is(.t-halo,.t-st){animation-duration:4s!important;animation-iteration-count:infinite!important}
html.r2-reduce body .t-burst b{animation-duration:.75s!important}
html.r2-reduce body #tStats .t-stat strong{animation-duration:4.5s!important}

/* ===================== dark mode: page titles always readable ===================== */
html.r2-dark :is(.pub-head h2,.notes-head h2,.projects-head h2,#about h2){color:#f5f5f7!important;-webkit-text-fill-color:#f5f5f7!important;opacity:1!important;background:none!important}
html.r2-dark :is(.pub-head,.notes-head,.projects-head) .r2-page-sub{color:#c7c7cc!important;-webkit-text-fill-color:#c7c7cc!important}
html.r2-dark :is(.pub-card h3,.r2-public-note-card h3,.r2-dynamic-project h3){color:#f5f5f7!important;-webkit-text-fill-color:#f5f5f7!important}
html.r2-dark :is(#publications,#research-notes,#projects) :is(.pub-year,.r2-year-head,.r2-note-group-title,.r2-note-cat-title){color:#f5f5f7!important}
#tStats{overflow-x:clip}
.t-halo{width:min(190px,100%);margin-left:max(-95px,-50%)}

/* ===================== dark mode: detail windows (publication / note / project) ===================== */
html.r2-dark :is(.r2-publication-dialog,.r2-note-modal-dialog,.r2-project-dialog) :is(h1,h2,h3,h4):not([style*="color"]):not(.poster-board *){color:#f5f5f7!important;-webkit-text-fill-color:#f5f5f7!important}
html.r2-dark :is(.r2-publication-dialog,.r2-note-modal-dialog,.r2-project-dialog) :is(h1,h2):not([style*="color"]):not(.poster-board *){opacity:1!important;background:none!important}
html.r2-dark .r2-cite-tabs button{color:#c7c7cc!important}
html.r2-dark .r2-cite-tabs button.active{background:#f5f5f7!important;color:#1d1d1f!important;-webkit-text-fill-color:#1d1d1f!important}

/* ===================== ID / EN: a single pill slides to the chosen language ===================== */
.top .r2-lang-switch{position:relative}
.top .r2-lang-switch.t-slide::before{content:"";position:absolute;left:0;top:var(--ly,4px);width:var(--lw,44px);height:var(--lh,34px);transform:translateX(var(--lx,4px));border-radius:999px;
  background:#1b1c20;box-shadow:0 3px 9px rgba(29,30,34,.28);transition:transform .42s var(--t-ease),width .42s var(--t-ease);z-index:0;will-change:transform}
html.r2-dark .top .r2-lang-switch.t-slide::before{background:#538ac6;box-shadow:0 3px 10px rgba(83,138,198,.28)}
.top .r2-lang-switch.t-slide button{position:relative;z-index:1;background:transparent!important;box-shadow:none!important;transition:color .3s ease!important}

/* ===================== Admin: calm, smooth motion (transform + opacity only) ===================== */
@keyframes r2cmsIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes r2cmsSheet{from{opacity:0;transform:translateY(22px) scale(.985)}to{opacity:1;transform:none}}
@keyframes r2cmsPop{from{opacity:0;transform:translateY(-6px) scale(.96)}to{opacity:1;transform:none}}
@keyframes r2cmsPanel{from{opacity:0;transform:scale(.99)}to{opacity:1;transform:none}}
/* opening the admin, switching tabs, opening the editor, the + / tools menus */
html.t-apple #r2cms .r2cms-panel{animation:r2cmsPanel .35s var(--t-ease) backwards}
html.t-apple #r2cms :is(#r2cms-pubs-view,#r2cms-notes-view,#r2cms-projects-view,#r2cms-experience-view,#r2cms-aboutme-view,#r2cms-about-view,#r2cms-messages-view,#r2cms-ideas-view){animation:r2cmsIn .38s var(--t-ease) backwards}
html.t-apple #r2cms #r2cms-editor{animation:r2cmsSheet .45s var(--t-ease) backwards}
html.t-apple #r2cms .r2-menu[open]>.r2-menu-list{transform-origin:top right;animation:r2cmsPop .22s var(--t-ease) backwards}
html.t-apple #r2cms .r2-login-card{animation:r2cmsSheet .5s var(--t-ease) backwards}
/* soft feedback on the controls */
html.t-apple #r2cms .r2cms-tab{transition:background-color .25s ease,color .25s ease,box-shadow .25s ease!important}
html.t-apple #r2cms .r2cms-item{transition:transform .35s var(--t-ease),box-shadow .35s var(--t-ease)!important}
@media (hover:hover){ html.t-apple #r2cms .r2cms-item:hover{transform:translateY(-2px)} }
html.t-apple #r2cms :is(.r2cms-btn,.r2-menu>summary,.r2-rich-btn,.r2-topic-btn,.r2-ideas-tabs button){transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,transform .18s var(--t-ease)!important}
html.t-apple #r2cms :is(.r2cms-btn,.r2-menu>summary,.r2-rich-btn,.r2-topic-btn,.r2-ideas-tabs button):active{transform:scale(.96)!important}
html.t-apple #r2cms .r2cms-field :is(input,textarea,select),html.t-apple #r2cms .r2-rich-content{transition:background-color .2s ease,border-color .2s ease,box-shadow .25s ease!important}
html.t-apple #r2cms .r2cms-stat{transition:transform .35s var(--t-ease),box-shadow .35s var(--t-ease)!important}
@media (hover:hover){ html.t-apple #r2cms .r2cms-stat:hover{transform:translateY(-3px)} }
html.r2-dark .r2-publication-dialog .r2-publication-authors{color:#b8b8bf!important}
html.r2-dark .r2-publication-dialog strong:not([style*="color"]){color:#d8d8dd!important}

/* ===================== Admin round 2: readable in light AND dark, calmer layout ===================== */
/* light / dark switch in the admin top bar */
#r2cms .r2cms-theme{display:inline-grid;place-items:center;width:40px;height:40px;padding:0;border-radius:50%;border:1px solid rgba(0,0,0,.1);background:#fff;color:#1d1d1f;cursor:pointer;transition:background-color .2s,transform .18s var(--t-ease)}
#r2cms .r2cms-theme:active{transform:scale(.92)}
#r2cms .r2cms-theme svg{width:18px;height:18px}
#r2cms .r2cms-theme .t-moon{display:none}
html.r2-dark #r2cms .r2cms-theme{background:#1c1c1e;border-color:rgba(255,255,255,.14);color:#ffd479}
html.r2-dark #r2cms .r2cms-theme .t-sun{display:none}
html.r2-dark #r2cms .r2cms-theme .t-moon{display:block}
html.t-apple #r2cms .r2cms-actions{display:flex;align-items:center;gap:10px}

/* light mode: small grey help text a bit darker */
html.t-apple:not(.r2-dark) #r2cms :is(.r2-upload-help,.r2-key-note,.r2cms-topic-heading span,.r2cms-muted,.r2cms-item p,.r2cms-field small){color:#5f6368!important}

/* ---------- dark mode: every text readable ---------- */
html.t-apple.r2-dark #r2cms{--a-ink:#f5f5f7;--a-ink2:#d1d1d6;--a-muted:#a1a1a6;--a-card:#1c1c1e;--a-card2:#2c2c2e;--a-line:rgba(255,255,255,.12);--a-blue:#0a84ff}
html.t-apple.r2-dark #r2cms :is(h1,h2,h3,h4,strong,b,label,legend,summary):not(.poster-board *):not([style*="color"]){color:var(--a-ink)!important}
html.t-apple.r2-dark #r2cms :is(p,li,span,small,td,th,dd,dt):not(.poster-board *):not([style*="color"]):not(.r2cms-badge):not(.r2cms-btn *):not(.r2-tr-btn *){color:var(--a-ink2)}
html.t-apple.r2-dark #r2cms :is(.r2cms-muted,.r2-upload-help,.r2-key-note,.r2cms-topic-heading span,.r2-ideas-last,.r2cms-field small,.r2cms-stat span){color:var(--a-muted)!important}
html.t-apple.r2-dark #r2cms a:not(.r2cms-btn):not(.poster-board *){color:#6cb4ff!important}
/* blue buttons: a deeper blue so the white text is easy to read */
html.t-apple.r2-dark #r2cms :is(.r2cms-btn:not(.alt):not(.danger),.r2-menu-add>summary,.r2-login-form button[type=submit],.r2-ideas-tabs button.is-on,.r2-topic-chips button.is-on,.r2-fav-list button.is-on){background:#0071e3!important;border-color:#0071e3!important;color:#fff!important}
html.t-apple.r2-dark #r2cms :is(.r2cms-btn:not(.alt):not(.danger),.r2-menu-add>summary) *{color:#fff!important}
html.t-apple.r2-dark #r2cms :is(.r2cms-btn:not(.alt):not(.danger),.r2-menu-add>summary):hover{background:#0077ed!important}
/* cards, lists, menus */
html.t-apple.r2-dark #r2cms :is(.r2cms-item,.r2cms-stat,.r2-ideas-card,.r2-ideas-col,.r2cms-topic-group,.r2-idea-item,.r2-menu-list,.r2cms-editor){background:var(--a-card)!important;border-color:var(--a-line)!important}
html.t-apple.r2-dark #r2cms .r2-menu-list :is(button,a){color:var(--a-ink)!important;background:transparent!important}
html.t-apple.r2-dark #r2cms .r2-menu-list :is(button,a):hover{background:var(--a-card2)!important}
html.t-apple.r2-dark #r2cms .r2-topic-btn{background:var(--a-card2)!important;color:var(--a-ink)!important}
html.t-apple.r2-dark #r2cms .r2-topic-btn *{color:inherit!important}
html.t-apple.r2-dark #r2cms :is(.r2-ideas-tabs button,.r2-topic-chips button,.r2-fav-list button,.r2-ideas-range button):not(.is-on){background:var(--a-card2)!important;border-color:var(--a-line)!important;color:var(--a-ink2)!important}
/* form fields */
html.t-apple.r2-dark #r2cms :is(input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=range]):not([type=file]),select,textarea),html.t-apple.r2-dark #r2cms .r2-rich-content{background:var(--a-card2)!important;color:var(--a-ink)!important;border:1px solid var(--a-line)!important}
html.t-apple.r2-dark #r2cms :is(input,textarea)::placeholder{color:#8e8e93!important;opacity:1}
html.t-apple.r2-dark #r2cms .r2-rich-toolbar{background:#232325!important;border-color:var(--a-line)!important}
html.t-apple.r2-dark #r2cms :is(.r2-rich-toolbar button,.r2-rich-btn,.r2-rich-select){background:var(--a-card2)!important;color:var(--a-ink)!important;border-color:var(--a-line)!important}
/* login card */
html.t-apple.r2-dark #r2cms .r2-login-card{background:#1c1c1e!important}
html.t-apple.r2-dark #r2cms .r2-login-card>*:last-child,html.t-apple.r2-dark #r2cms .r2-login-form{background:#1c1c1e!important}
html.t-apple.r2-dark #r2cms .r2-login-kicker{color:#6cb4ff!important}

/* ---------- translate bar: one clear card, two direction buttons ---------- */
#r2cms .r2-tr-all{display:flex!important;align-items:center;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;padding:14px 18px!important;margin:0 0 20px!important;border:0!important;border-radius:16px!important;background:#eef4fb!important}
#r2cms .r2-tr-all-text{flex:1 1 260px;min-width:0;display:grid;gap:3px}
#r2cms .r2-tr-all-text strong{font-size:14px;color:#1d1d1f}
#r2cms .r2-tr-all-text small{font-size:12.5px;line-height:1.45;color:#5f6368!important}
#r2cms .r2-tr-all-btns,#r2cms .r2-tr-pair{display:inline-flex;gap:6px;flex:0 0 auto}
#r2cms .r2-tr-pair{margin-left:8px;vertical-align:middle}
#r2cms .r2-tr-btn{margin:0!important;display:inline-flex;align-items:center;gap:6px;border-radius:999px!important;font-weight:600!important;letter-spacing:0!important;text-transform:none!important;cursor:pointer}
#r2cms .r2-tr-all .r2-tr-btn{padding:9px 16px!important;font-size:13.5px!important;background:#0071e3!important;border:1px solid #0071e3!important;color:#fff!important}
html.t-apple #r2cms .r2-tr-all .r2-tr-btn[data-dir="id2en"]{background:#fff!important;color:#0059b3!important;border-color:rgba(0,113,227,.35)!important}
#r2cms .r2-tr-all .r2-tr-btn:hover{filter:brightness(1.06)}
#r2cms .r2-tr-pair .r2-tr-btn{padding:3px 9px!important;font-size:11px!important;background:#fff!important;border:1px solid rgba(0,113,227,.3)!important;color:#0059b3!important}
#r2cms .r2-tr-pair .r2-tr-btn:hover{background:#eef4fb!important}
#r2cms .r2-tr-btn .r2-ico{width:14px;height:14px}
#r2cms .r2-tr-pair .r2-tr-btn .r2-ico{display:none}
#r2cms .r2-tr-btn span{color:inherit!important}
html.r2-dark #r2cms .r2-tr-all{background:#16202d!important}
html.r2-dark #r2cms .r2-tr-all-text strong{color:#f5f5f7!important}
html.r2-dark #r2cms .r2-tr-all-text small{color:#b8c2cf!important}
html.t-apple.r2-dark #r2cms .r2-tr-all .r2-tr-btn[data-dir="id2en"],html.r2-dark #r2cms .r2-tr-pair .r2-tr-btn{background:#1c1c1e!important;color:#8cc4ff!important;border-color:rgba(108,180,255,.4)!important}
html.r2-dark #r2cms .r2-tr-all .r2-tr-btn[data-dir="en2id"]{background:#0071e3!important;border-color:#0071e3!important;color:#fff!important}
@media (max-width:640px){ #r2cms .r2-tr-all-btns{width:100%} #r2cms .r2-tr-all .r2-tr-btn{flex:1;justify-content:center} }

/* ---------- calmer spacing ---------- */
html.t-apple #r2cms .r2cms-item{padding:18px 22px!important;margin-bottom:12px!important}
html.t-apple #r2cms .r2cms-field{margin-bottom:18px!important}
html.t-apple #r2cms .r2cms-field>label{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:8px!important}
/* dark admin: boxes that were still white */
html.t-apple.r2-dark #r2cms :is(.r2cms-note,.r2-bi-block,.r2-rich-editor,.r2-ref-manager,.r2-rich-editor-id){background:var(--a-card)!important;border-color:var(--a-line)!important}
html.t-apple.r2-dark #r2cms input[type=file]{background:var(--a-card2)!important;color:var(--a-ink2)!important;border-color:var(--a-line)!important}
html.t-apple.r2-dark #r2cms input[type=file]::file-selector-button{background:#3a3a3c;color:#f5f5f7;border:0;border-radius:999px;padding:6px 12px;margin-right:10px}
html.t-apple.r2-dark #r2cms :is(.r2-bi-block,.r2-rich-editor) b:not([style*="color"]){color:var(--a-ink)!important}
html.t-apple.r2-dark #r2cms .r2-bi-block>*:first-child b{background:#3a3a3c!important}
html.t-apple.r2-dark #r2cms .r2cms-note{color:var(--a-ink2)!important}
html.t-apple.r2-dark #r2cms :is(button,summary).is-on *,html.t-apple.r2-dark #r2cms .r2-ideas-tabs button.is-on span{color:#fff!important}
html.t-apple:not(.r2-dark) #r2cms .r2-ideas-outlets{color:#5f6368!important}
html.r2-dark #r2cms :is(.r2-ideas-skel,.r2-skel),html.r2-dark #r2cms .r2-ideas-skel *{background:#2c2c2e!important;border-color:transparent!important}

/* ===================== Collaborate form: fields always clearly visible ===================== */
html.t-apple .r2-collab-form :is(input:not(.r2-hp),select,textarea){background:#f5f5f7!important;border:1px solid rgba(0,0,0,.12)!important;border-radius:12px!important;color:#1d1d1f!important;transition:border-color .2s,box-shadow .25s,background-color .2s}
html.t-apple .r2-collab-form :is(input,textarea)::placeholder{color:#86868b!important;opacity:1}
html.t-apple .r2-collab-form :is(input,select,textarea):focus{background:#fff!important;border-color:#0071e3!important;box-shadow:0 0 0 4px rgba(0,113,227,.15)!important;outline:0}
html.t-apple.r2-dark .r2-collab-form :is(input:not(.r2-hp),select,textarea){background:#2c2c2e!important;border-color:rgba(255,255,255,.18)!important;color:#f5f5f7!important}
html.t-apple.r2-dark .r2-collab-form :is(input,textarea)::placeholder{color:#98989d!important}
html.t-apple.r2-dark .r2-collab-form :is(input,select,textarea):focus{background:#3a3a3c!important;border-color:#0a84ff!important;box-shadow:0 0 0 4px rgba(10,132,255,.25)!important}
html.t-apple.r2-dark .r2-collab-form select option{background:#2c2c2e;color:#f5f5f7}
html.t-apple.r2-dark .r2-collab-form label>span{color:#c7c7cc!important}
/* phone: compact number cards so the lists are reached sooner */
@media (max-width:640px){
  html.t-apple #r2cms .r2cms-stats{gap:10px!important}
  html.t-apple #r2cms .r2cms-stat{padding:12px 14px!important;min-height:0!important;height:auto!important}
  html.t-apple #r2cms .r2cms-stat strong{font-size:26px!important;line-height:1.1!important}
  html.t-apple #r2cms .r2cms-stat span{font-size:10px!important;letter-spacing:.05em!important}
  html.t-apple #r2cms .r2cms-stat small,html.t-apple #r2cms .r2cms-stat p{font-size:11px!important;margin-top:2px!important}
}

/* ===================== Menu bar: little giraffe + twinkling stars ===================== */
header.top{position:relative}
.t-giraffe{position:absolute;z-index:3;height:var(--gj,48px);width:calc(var(--gj,48px) * .667);cursor:pointer;-webkit-tap-highlight-color:transparent;transform-origin:50% 100%}
.t-giraffe svg{display:block;width:100%;height:100%;overflow:visible}
.t-giraffe .gj-all{transform-box:fill-box;transform-origin:50% 100%;animation:gjSway 3.6s ease-in-out infinite}
.t-giraffe .gj-head{transform-box:fill-box;transform-origin:45% 100%;animation:gjNod 5.2s ease-in-out infinite}
.t-giraffe .gj-eyes{transform-box:fill-box;transform-origin:50% 50%;animation:gjBlink 4.6s infinite}
.t-giraffe .gj-tail{transform-box:fill-box;transform-origin:0 0;animation:gjTail 1.8s ease-in-out infinite}
@keyframes gjSway{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
@keyframes gjNod{0%,70%,100%{transform:rotate(0)}78%{transform:rotate(-7deg)}86%{transform:rotate(4deg)}}
@keyframes gjBlink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
@keyframes gjTail{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(14deg)}}
.t-giraffe.is-hop{animation:gjHop .7s cubic-bezier(.3,1.6,.5,1)}
@keyframes gjHop{0%,100%{transform:translateY(0)}35%{transform:translateY(-10px) scale(1.05)}}
@media (hover:hover){ .t-giraffe:hover .gj-head{animation-duration:1.6s} }
/* "Hai!" bubble */
.t-giraffe-hi{position:absolute;bottom:calc(100% - 6px);left:50%;transform:translate(-20%,6px) scale(.6);opacity:0;pointer-events:none;white-space:nowrap;padding:4px 10px;border-radius:999px;background:#1d1d1f;color:#fff;font:600 12px/1.3 var(--t-font);box-shadow:0 6px 16px rgba(0,0,0,.18);transition:opacity .25s,transform .35s var(--t-ease)}
.t-giraffe.is-hop .t-giraffe-hi{opacity:1;transform:translate(-20%,0) scale(1)}
html.r2-dark .t-giraffe-hi{background:#f5f5f7;color:#1d1d1f}
/* phones: leave room at the end of the menu row for the giraffe */
header.top.t-gj-endrow #r2-main-nav{padding-right:34px!important}
/* twinkling stars around the menu (opacity + transform only) */
.t-nav-stars{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.t-ns{position:absolute;width:10px;height:10px;opacity:0;animation:tTwinkle 3.2s ease-in-out infinite}
.t-ns svg{display:block;width:100%;height:100%;fill:currentColor}
.t-ns0{left:27%;top:9%;color:#ffc53d;animation-delay:-.4s}
.t-ns1{left:44%;top:86%;color:#7a5cff;width:7px;height:7px;animation-delay:-1.5s}
.t-ns2{left:58%;top:8%;color:#ff5f8f;width:6px;height:6px;animation-delay:-2.3s}
.t-ns3{left:69%;top:84%;color:#14b8c7;animation-delay:-.9s}
.t-ns4{left:36%;top:88%;color:#7a5cff;width:6px;height:6px;animation-delay:-2.8s}
.t-ns5{left:83%;top:10%;color:#ffc53d;width:7px;height:7px;animation-delay:-1.9s}
html.r2-dark .t-ns{filter:brightness(1.25)}
.topin,#r2-main-nav{position:relative;z-index:1}
/* active menu item: a colourful line that shimmers (the text colour stays the same) */
@media (min-width:900px){
  #r2-main-nav a.active{border-bottom-color:transparent!important;position:relative}
  #r2-main-nav a.active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;border-radius:3px;background:linear-gradient(90deg,#0071e3,#7a5cff,#ff5f8f,#ffc53d,#0071e3);background-size:300% 100%;animation:tNavLine 4s linear infinite}
}
@media (max-width:899px){
  #r2-main-nav a.active{position:relative}
  #r2-main-nav a.active::after{content:"";position:absolute;left:14px;right:14px;bottom:6px;height:2px;border-radius:2px;background:linear-gradient(90deg,#0071e3,#7a5cff,#ff5f8f,#ffc53d,#0071e3);background-size:300% 100%;animation:tNavLine 4s linear infinite}
}
@keyframes tNavLine{to{background-position:300% 0}}
/* reduce-motion devices: keep it gentle (the site forces very short animations there) */
html.r2-reduce body :is(.t-giraffe .gj-all,.t-giraffe .gj-head,.t-giraffe .gj-eyes,.t-giraffe .gj-tail,.t-ns,#r2-main-nav a.active::after){animation-duration:6s!important;animation-iteration-count:infinite!important}
@media print{ .t-giraffe,.t-nav-stars{display:none!important} }

/* ===================== Tables (editor + everywhere they are shown) ===================== */
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) table{width:100%;border-collapse:separate;border-spacing:0;margin:14px 0;border:1px solid #d9d9de;border-radius:12px;overflow:hidden;font-size:.95em;line-height:1.5}
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) :is(th,td){padding:9px 12px;border-right:1px solid #e5e5ea;border-bottom:1px solid #e5e5ea;text-align:left;vertical-align:top;word-break:break-word}
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) :is(th,td):last-child{border-right:0}
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) tr:last-child>:is(td,th){border-bottom:0}
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) th{background:#f2f5fa;font-weight:700;color:#1d1d1f}
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) tbody tr:nth-child(even) td{background:#fafafc}
html.r2-dark :is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) table{border-color:#3a3a3c}
html.r2-dark :is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) :is(th,td){border-color:#3a3a3c;color:#e5e5ea}
html.r2-dark :is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) th{background:#2c2c2e;color:#f5f5f7}
html.r2-dark :is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) tbody tr:nth-child(even) td{background:#232325}
/* phones: a wide table scrolls sideways instead of squeezing the page */
@media (max-width:640px){ :is(.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public) table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch} }
/* diagrams shown on the site */
:is(.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-rich-content) img[data-diagram]{display:block;margin:14px auto;height:auto;border-radius:14px;box-shadow:0 1px 3px rgba(0,0,0,.06),0 8px 24px rgba(0,0,0,.06)}
.r2-rich-content img[data-diagram]{cursor:pointer}
/* column-resize cursor */
body.r2-colresize #r2cms :is(td,th),body.r2-colresizing,body.r2-colresizing *{cursor:col-resize!important}
body.r2-colresizing{user-select:none}

/* toolbar buttons */
#r2cms .r2-et-btn{display:inline-flex!important;align-items:center;gap:6px}
#r2cms .r2-et-btn svg{width:16px;height:16px;flex:0 0 auto}

/* rows × columns picker */
.r2-tp{position:fixed;z-index:100001;padding:12px;border-radius:16px;background:#fff;box-shadow:0 12px 40px rgba(0,0,0,.18),0 0 0 1px rgba(0,0,0,.06);font:500 13px/1.3 var(--t-font,system-ui);color:#1d1d1f;animation:r2cmsPop .2s var(--t-ease,ease) backwards}
.r2-tp-grid{display:grid;grid-template-columns:repeat(8,20px);gap:4px}
.r2-tp-grid i{width:20px;height:20px;border-radius:5px;background:#f2f2f5;border:1px solid #e5e5ea;cursor:pointer}
.r2-tp-grid i.on{background:#cfe3ff;border-color:#0071e3}
.r2-tp-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}
.r2-tp-foot label{display:flex;align-items:center;gap:6px;font-size:12px;color:#424245;cursor:pointer}
html.r2-dark .r2-tp{background:#1c1c1e;color:#f5f5f7;box-shadow:0 12px 40px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.1)}
html.r2-dark .r2-tp-grid i{background:#2c2c2e;border-color:#3a3a3c}
html.r2-dark .r2-tp-grid i.on{background:#0a3d7a;border-color:#0a84ff}
html.r2-dark .r2-tp-foot label{color:#d1d1d6}
/* floating table toolbar */
.r2-tt{position:fixed;z-index:100000;display:flex;flex-wrap:wrap;align-items:center;gap:4px;max-width:calc(100vw - 16px);padding:6px;border-radius:14px;background:rgba(29,29,31,.94);box-shadow:0 10px 30px rgba(0,0,0,.25);font:600 12px/1 var(--t-font,system-ui)}
.r2-tt[hidden]{display:none}
.r2-tt button{border:0;border-radius:9px;padding:8px 10px;background:transparent;color:#f5f5f7;font:inherit;cursor:pointer;white-space:nowrap}
.r2-tt button:hover{background:rgba(255,255,255,.12)}
.r2-tt button.danger{color:#ff6961}
.r2-tt i{width:1px;height:18px;background:rgba(255,255,255,.18);margin:0 2px}
.r2-dg-edit{border:0;border-radius:9px;padding:8px 10px;background:#0071e3!important;color:#fff!important;font:600 12px/1 var(--t-font,system-ui);cursor:pointer;margin-right:4px}
.r2-dg-edit[hidden]{display:none}

/* ===================== Flowchart editor ===================== */
html.r2dg-open,html.r2dg-open body{overflow:hidden}
.r2dg{position:fixed;inset:0;z-index:100002;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(0,0,0,.45);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;transition:opacity .25s ease;font:500 14px/1.4 var(--t-font,system-ui);color:#1d1d1f}
.r2dg[hidden]{display:none}
.r2dg.in{opacity:1}
.r2dg-panel{display:flex;flex-direction:column;width:min(1280px,100%);height:min(820px,100%);border-radius:22px;background:#fff;box-shadow:0 30px 90px rgba(0,0,0,.35);overflow:hidden;transform:translateY(14px) scale(.985);transition:transform .35s var(--t-ease,ease)}
.r2dg.in .r2dg-panel{transform:none}
.r2dg-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid #e5e5ea}
.r2dg-head strong{font-size:17px;letter-spacing:-.01em}
.r2dg-head-btns{display:flex;gap:6px;flex-wrap:wrap}
.r2dg button{font:inherit;cursor:pointer}
.r2dg-head-btns button,.r2dg-row>button{border:1px solid #d9d9de;border-radius:999px;padding:8px 14px;background:#fff;color:#1d1d1f;font-weight:600;font-size:13px}
.r2dg-head-btns button:hover,.r2dg-row>button:hover{background:#f2f2f5}
.r2dg-head-btns .primary{background:#0071e3;border-color:#0071e3;color:#fff}
.r2dg-head-btns .primary:hover{background:#0077ed}
.r2dg .danger{color:#d70015!important;border-color:rgba(215,0,21,.3)!important}
.r2dg-body{flex:1;display:grid;grid-template-columns:270px 1fr;min-height:0}
.r2dg-side{overflow:auto;padding:14px 14px 20px;border-right:1px solid #e5e5ea;background:#fafafc}
.r2dg-lbl{margin:6px 2px 8px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#6e6e73}
.r2dg-shapes{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:12px}
.r2dg-shapes button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border:1px solid #e5e5ea;border-radius:12px;background:#fff;color:#1d1d1f;font-size:11px;line-height:1.2;text-align:center;transition:border-color .15s,transform .15s}
.r2dg-shapes button:hover{border-color:#0071e3;color:#0071e3}
.r2dg-shapes button:active{transform:scale(.95)}
.r2dg-shapes svg{width:36px;height:30px}
.r2dg-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:8px 0}
.r2dg-row[hidden]{display:none}
.r2dg-connect{width:100%}
.r2dg-connect.on{background:#0071e3!important;border-color:#0071e3!important;color:#fff!important}
.r2dg-hint{margin:4px 2px 12px;font-size:12px;color:#6e6e73;min-height:2.8em}
.r2dg-props{border-top:1px solid #e5e5ea;padding-top:8px}
.r2dg-props[hidden]{display:none}
.r2dg-props textarea{width:100%;box-sizing:border-box;border:1px solid #d9d9de;border-radius:12px;padding:9px 11px;font:inherit;resize:vertical;background:#fff;color:#1d1d1f}
.r2dg-props textarea:focus{outline:0;border-color:#0071e3;box-shadow:0 0 0 4px rgba(0,113,227,.15)}
.r2dg-mini{font-size:12px;color:#6e6e73;min-width:70px}
.r2dg-swatches{display:flex;gap:5px;flex-wrap:wrap}
.r2dg-swatches button{width:24px;height:24px;border-radius:50%;border:2px solid;padding:0}
.r2dg-swatches button.on{box-shadow:0 0 0 2px #fff,0 0 0 4px #0071e3}
.r2dg-seg{display:inline-flex;padding:2px;border-radius:10px;background:#ececf1}
.r2dg-seg button{border:0;border-radius:8px;padding:6px 10px;background:transparent;color:#424245;font-size:12px;font-weight:600}
.r2dg-seg button.on{background:#fff;color:#1d1d1f;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.r2dg-b{border:1px solid #d9d9de;border-radius:8px;padding:5px 10px;background:#fff;font-weight:800}
.r2dg-b.on{background:#1d1d1f;color:#fff;border-color:#1d1d1f}
.r2dg-stage{position:relative;overflow:auto;background:#fff;touch-action:none}
.r2dg-svg{display:block;width:100%;min-width:640px;height:auto;touch-action:none;user-select:none}
/* dark */
html.r2-dark .r2dg{color:#f5f5f7}
html.r2-dark .r2dg-panel{background:#1c1c1e}
html.r2-dark .r2dg-head,html.r2-dark .r2dg-side,html.r2-dark .r2dg-props{border-color:#3a3a3c}
html.r2-dark .r2dg-side{background:#161618}
html.r2-dark .r2dg-head-btns button:not(.primary),html.r2-dark .r2dg-row>button:not(.r2dg-connect.on),html.r2-dark .r2dg-shapes button,html.r2-dark .r2dg-b:not(.on){background:#2c2c2e;border-color:#3a3a3c;color:#f5f5f7}
html.r2-dark .r2dg-lbl,html.r2-dark .r2dg-hint,html.r2-dark .r2dg-mini{color:#a1a1a6}
html.r2-dark .r2dg-props textarea{background:#2c2c2e;border-color:#3a3a3c;color:#f5f5f7}
html.r2-dark .r2dg-seg{background:#2c2c2e}
html.r2-dark .r2dg-seg button{color:#d1d1d6}
html.r2-dark .r2dg-seg button.on{background:#48484a;color:#fff}
html.r2-dark .r2dg-stage{background:#f5f5f7} /* the drawing itself stays light, like the finished picture */
/* phones / small tablets: tools on top, drawing below */
@media (max-width:760px){
  .r2dg{padding:0}
  .r2dg-panel{height:100%;border-radius:0}
  .r2dg-body{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .r2dg-side{border-right:0;border-bottom:1px solid #e5e5ea;max-height:44vh;padding:10px 12px}
  .r2dg-shapes{grid-template-columns:repeat(9,74px);overflow-x:auto;padding-bottom:4px}
  .r2dg-head{padding:10px 12px}
  .r2dg-head-btns button{padding:7px 11px}
}
@media (max-width:760px){ .r2dg-svg{min-width:0} }

/* ===================== Giraffe round 2: pink ribbon, speech bubbles, collaborate giraffe ===================== */
.t-giraffe .gj-bow{transform-box:fill-box;transform-origin:50% 60%;animation:gjBow 2.4s ease-in-out infinite}
@keyframes gjBow{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(6deg) scale(1.05)}}
/* bubble: wraps nicely, never leaves the screen (JS nudges it with --bx) */
.t-giraffe-hi{white-space:normal!important;width:max-content;max-width:min(240px,calc(100vw - 24px));text-align:center;line-height:1.35!important;padding:6px 12px!important;border-radius:14px!important}
.t-giraffe.is-hop .t-giraffe-hi{opacity:0;transform:translate(calc(-50% + var(--bx,0px)),6px) scale(.6)}
.t-giraffe-hi{left:50%!important;transform:translate(calc(-50% + var(--bx,0px)),6px) scale(.6)!important;transform-origin:50% 100%}
.t-giraffe.is-talk .t-giraffe-hi{opacity:1!important;transform:translate(calc(-50% + var(--bx,0px)),0) scale(1)!important}
/* in the menu bar the bubble opens BELOW the giraffe, so it is never cut off at the top of the screen */
header.top .t-giraffe .t-giraffe-hi{bottom:auto!important;top:calc(100% + 10px);transform-origin:50% 0}
header.top .t-giraffe .t-giraffe-hi::before{content:"";position:absolute;left:calc(50% - var(--bx,0px));top:-5px;width:10px;height:10px;margin-left:-5px;background:inherit;transform:rotate(45deg);border-radius:2px}
/* collaborate box: a giraffe peeking over the top edge */
#r2Collab{position:relative;overflow:visible!important}
.t-giraffe.t-gj-collab{--gj:54px;left:auto!important;right:34px;top:-50px;bottom:auto!important}
.t-gj-collab .t-giraffe-hi{bottom:calc(100% + 4px)!important}
.t-gj-collab .t-giraffe-hi::after{content:"";position:absolute;left:calc(50% - var(--bx,0px));bottom:-5px;width:10px;height:10px;margin-left:-5px;background:inherit;transform:rotate(45deg);border-radius:2px}
@media (max-width:640px){ .t-giraffe.t-gj-collab{--gj:44px;right:18px;top:-41px} }
/* collaborate: the giraffe team stands on the top edge of the box */
.t-gj-team{position:absolute;right:30px;bottom:calc(100% - 3px);display:flex;align-items:flex-end;gap:0;cursor:pointer;z-index:3;-webkit-tap-highlight-color:transparent}
.t-gj-team .t-giraffe{position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important}
.t-gj-m0{--gj:60px}.t-gj-m1{--gj:52px;margin-left:-4px}.t-gj-m2{--gj:40px;margin-left:-2px}
.t-gj-m1 .gj-all{animation-delay:-1.2s!important}.t-gj-m2 .gj-all{animation-delay:-2.3s!important;animation-duration:2.8s!important}
.t-gj-m1 .gj-head{animation-delay:-2s!important}.t-gj-m2 .gj-head{animation-delay:-3.4s!important}
.t-gj-m1 .gj-eyes{animation-delay:-1.7s!important}.t-gj-m2 .gj-eyes{animation-delay:-3s!important}
.t-gj-team .t-giraffe-hi{bottom:calc(100% + 4px)!important}
.t-gj-team .t-giraffe-hi::after{content:"";position:absolute;left:calc(50% - var(--bx,0px));bottom:-5px;width:10px;height:10px;margin-left:-5px;background:inherit;transform:rotate(45deg);border-radius:2px}
@media (max-width:640px){ .t-gj-team{right:16px} .t-gj-m0{--gj:48px}.t-gj-m1{--gj:42px}.t-gj-m2{--gj:32px} }
/* the team lives in the empty space under the intro text (laptop) / next to the send button (phone) */
#r2Collab .t-gj-team{position:relative;right:auto;bottom:auto;grid-column:1;align-self:end;justify-self:start;margin:26px 0 0;padding-top:34px}
#r2Collab .t-gj-m0{--gj:96px}#r2Collab .t-gj-m1{--gj:84px;margin-left:-6px}#r2Collab .t-gj-m2{--gj:66px;margin-left:-4px}
#r2Collab .t-gj-team .t-giraffe-hi{bottom:calc(100% + 2px)!important}
@media (max-width:760px){
  #r2Collab .t-gj-team{position:absolute;right:18px;bottom:18px;margin:0;padding:0}
  #r2Collab .t-gj-m0{--gj:66px}#r2Collab .t-gj-m1{--gj:58px}#r2Collab .t-gj-m2{--gj:46px}
}
@media (max-width:760px){
  #r2Collab .t-gj-team{bottom:14px}
  #r2Collab .t-gj-m0{--gj:54px}#r2Collab .t-gj-m1{--gj:48px}#r2Collab .t-gj-m2{--gj:38px}
  #r2Collab .r2-collab-submit{padding-right:128px;min-height:56px}
}
/* collaborate giraffes: small, in the two bottom corners of the box (not part of the layout, so the text stays in place) */
#r2Collab .t-gj-team{position:absolute!important;grid-column:auto;margin:0!important;padding:0!important;bottom:10px!important;top:auto!important;align-self:auto;justify-self:auto;gap:0}
#r2Collab .t-gj-team.t-gj-l{left:18px!important;right:auto!important}
#r2Collab .t-gj-team.t-gj-r{right:18px!important;left:auto!important}
#r2Collab .t-gj-team .t-gj-m0{--gj:48px}#r2Collab .t-gj-team .t-gj-m1{--gj:36px;margin-left:-2px}#r2Collab .t-gj-team .t-gj-m2{--gj:44px}
#r2Collab .t-gj-team .t-gj-m2 .gj-all{animation-delay:-1.2s!important}
/* phones: the send button is on the left, so the second group moves to the top-right corner next to the title */
@media (max-width:760px){
  #r2Collab .t-gj-team.t-gj-l{left:auto!important;right:16px!important;bottom:12px!important}
  #r2Collab .t-gj-team.t-gj-r{right:16px!important;top:14px!important;bottom:auto!important}
  #r2Collab .t-gj-team .t-gj-m0{--gj:44px}#r2Collab .t-gj-team .t-gj-m1{--gj:34px}#r2Collab .t-gj-team .t-gj-m2{--gj:40px}
  #r2Collab .r2-collab-submit{padding-right:96px}
}
/* bubble of the corner giraffes opens inward, over the box */
#r2Collab .t-gj-l .t-giraffe-hi{left:-4px!important;transform:translate(var(--bx,0px),6px) scale(.6)!important;transform-origin:10% 100%}
#r2Collab .t-gj-l .is-talk .t-giraffe-hi{transform:translate(var(--bx,0px),0) scale(1)!important}
#r2Collab .t-gj-l .t-giraffe-hi::after{left:22px!important}
@media (max-width:760px){
  #r2Collab .t-gj-l .t-giraffe-hi{left:auto!important;right:-40px;transform-origin:90% 100%}
  #r2Collab .t-gj-l .t-giraffe-hi::after{left:auto!important;right:52px}
}

/* ===================== Giraffe round 3: smaller, one giraffe by the send button, SVG icons ===================== */
.t-giraffe-hi{display:inline-flex!important;align-items:center;gap:6px}
.t-hi-ic{width:16px;height:16px;flex:0 0 auto}
.t-hi-wave{color:#ffc53d;transform-origin:70% 80%;animation:tWave 1s ease-in-out 2}
@keyframes tWave{0%,100%{transform:rotate(0)}25%{transform:rotate(18deg)}75%{transform:rotate(-12deg)}}
.t-hi-heart{animation:tBeat 1s ease-in-out 2}
@keyframes tBeat{0%,100%{transform:scale(1)}40%{transform:scale(1.25)}}
/* collaborate: one small giraffe next to "Send message" */
#r2Collab .r2-collab-submit{display:flex!important;align-items:flex-end;flex-wrap:wrap;gap:10px 12px;padding-right:0!important;min-height:0!important}
.t-giraffe.t-gj-send{--gj:40px;position:relative!important;left:auto!important;top:auto!important;bottom:auto!important;right:auto!important;display:inline-block;flex:0 0 auto;margin-bottom:2px}
.t-gj-send .t-giraffe-hi{left:-2px!important;bottom:calc(100% + 6px)!important;transform:translate(var(--bx,0px),6px) scale(.6)!important;transform-origin:10% 100%}
.t-gj-send.is-talk .t-giraffe-hi{transform:translate(var(--bx,0px),0) scale(1)!important}
.t-gj-send .t-giraffe-hi::after{content:"";position:absolute;left:14px;bottom:-5px;width:10px;height:10px;background:inherit;transform:rotate(45deg);border-radius:2px}
.t-giraffe .t-giraffe-hi svg.t-hi-ic{width:16px!important;height:16px!important;overflow:visible}

/* ===================== "Send message": hide-and-jump giraffe ===================== */
.t-gj-spot{position:relative;display:inline-block;width:34px;height:46px;flex:0 0 auto;align-self:flex-end;margin-bottom:2px}
/* the "ground": anything below the bottom edge is hidden */
.t-gj-hole{position:absolute;left:-12px;right:-12px;bottom:0;height:120px;overflow:hidden;pointer-events:none}
.t-gj-spot .t-giraffe.t-gj-send{--gj:44px;position:absolute!important;left:12px!important;bottom:0!important;top:auto!important;right:auto!important;margin:0;transform:translateY(110%);transition:transform .55s cubic-bezier(.5,0,.75,0);pointer-events:auto}
.t-gj-spot.is-out .t-giraffe.t-gj-send{transform:none;animation:gjPop .9s cubic-bezier(.2,.9,.3,1)}
@keyframes gjPop{0%{transform:translateY(110%)}45%{transform:translateY(-16px)}62%{transform:translateY(0)}78%{transform:translateY(-6px)}100%{transform:translateY(0)}}
.t-gj-spot.is-out{cursor:pointer}
/* speech bubble (opens to the right, above the giraffe) */
.t-gj-say{position:absolute;left:-4px;bottom:calc(100% + 18px);display:inline-flex;align-items:center;gap:6px;width:max-content;max-width:min(240px,calc(100vw - 24px));padding:7px 12px;border-radius:14px;background:#1d1d1f;color:#fff;font:600 12.5px/1.35 var(--t-font);box-shadow:0 6px 16px rgba(0,0,0,.18);opacity:0;transform:translate(var(--bx,0px),8px) scale(.6);transform-origin:12px 100%;transition:opacity .25s,transform .35s var(--t-ease);pointer-events:none;white-space:normal}
.t-gj-say::after{content:"";position:absolute;left:14px;bottom:-5px;width:10px;height:10px;background:inherit;transform:rotate(45deg);border-radius:2px}
.t-gj-spot.is-out .t-gj-say{opacity:1;transform:translate(var(--bx,0px),0) scale(1);transition-delay:.35s}
.t-gj-say .t-hi-ic{width:16px;height:16px}
html.r2-dark .t-gj-say{background:#f5f5f7;color:#1d1d1f}
html.r2-reduce body .t-gj-spot.is-out .t-giraffe.t-gj-send{animation-duration:.9s!important;animation-iteration-count:1!important}
/* hero sentence: a little smaller */
html body .t-home h1.t-h1-calm#tHeroLine{font-size:clamp(19px,2vw,26px)!important;line-height:1.5!important}
@media(max-width:640px){ html body .t-home h1.t-h1-calm#tHeroLine{font-size:17px!important;line-height:1.55!important} }
.t-hi-book{color:#7cc0ff}
html.r2-dark .t-hi-book{color:#0071e3}
/* collaborate form: fields that still need attention */
html.t-apple .r2-collab-form :is(input,textarea).is-invalid{border-color:#e5484d!important;box-shadow:0 0 0 4px rgba(229,72,77,.14)!important;animation:r2Shake .35s ease}
@keyframes r2Shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
html.t-apple .r2-form-msg.is-error{color:#d70015!important;font-weight:600}
html.t-apple.r2-dark .r2-form-msg.is-error{color:#ff6961!important}
/* header giraffe: a small one-line bubble ABOVE its head */
header.top .t-giraffe .t-giraffe-hi{top:auto!important;bottom:calc(100% + 5px)!important;white-space:nowrap!important;max-width:none!important;padding:3px 9px!important;border-radius:10px!important;font-size:11.5px!important;gap:4px!important;transform-origin:50% 100%!important;box-shadow:0 3px 10px rgba(0,0,0,.16)!important}
header.top .t-giraffe .t-giraffe-hi::before{top:auto!important;bottom:-4px!important;width:8px!important;height:8px!important;margin-left:-4px!important}
header.top .t-giraffe .t-giraffe-hi svg.t-hi-ic{width:13px!important;height:13px!important}

/* ===================== Poster: Word-like ribbon in every section ===================== */
.r2-pw{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:4px 0 10px;padding:6px 8px;border-radius:12px;background:#f5f5f7;border:1px solid rgba(0,0,0,.06)}
.r2-pw-grp{display:inline-flex;align-items:center;gap:2px;padding-right:10px;border-right:1px solid rgba(0,0,0,.1)}
.r2-pw-grp:last-child{border-right:0;padding-right:0}
.r2-pw-btn{display:inline-grid;place-items:center;min-width:30px;height:30px;padding:0 6px;border:0;border-radius:8px;background:transparent;color:#1d1d1f;font:600 14px/1 var(--t-font,system-ui);cursor:pointer;transition:background-color .15s}
.r2-pw-btn:hover{background:#e8e8ed}
.r2-pw-btn.is-on{background:#dbe8fb;color:#0059b3}
.r2-pw-btn svg{width:17px;height:17px}
.r2-pw-btn sup,.r2-pw-btn sub{font-size:9px}
.r2-pw-color{position:relative;display:inline-grid;place-items:center;width:34px;height:30px;border-radius:8px;cursor:pointer}
.r2-pw-color:hover{background:#e8e8ed}
.r2-pw-color .r2-pw-a{font:700 15px/1 var(--t-font,system-ui);margin-top:-4px}
.r2-pw-color svg{width:16px;height:16px;margin-top:-4px}
.r2-pw-color i{position:absolute;left:7px;right:7px;bottom:4px;height:4px;border-radius:2px}
.r2-pw-color input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;border:0;padding:0}
.r2-pw-lh{height:30px;border-radius:8px;border:1px solid rgba(0,0,0,.12);background:#fff;font:500 12px var(--t-font,system-ui);padding:0 6px;margin-left:4px}
.r2-pw-hint{display:block;margin:-4px 0 8px;font-size:12px;color:#b25e00;font-weight:600}
html.r2-dark .r2-pw{background:#232325;border-color:rgba(255,255,255,.1)}
html.r2-dark .r2-pw-grp{border-color:rgba(255,255,255,.12)}
html.r2-dark .r2-pw-btn{color:#f5f5f7}
html.r2-dark .r2-pw-btn:hover,html.r2-dark .r2-pw-color:hover{background:#3a3a3c}
html.r2-dark .r2-pw-btn.is-on{background:#0a3d7a;color:#9ccbff}
html.r2-dark .r2-pw-color{color:#f5f5f7}
html.r2-dark .r2-pw-lh{background:#2c2c2e;color:#f5f5f7;border-color:rgba(255,255,255,.14)}
html.r2-dark .r2-pw-hint{color:#ffb35c}
/* marks inside posters */
.poster-board mark{padding:0 2px;border-radius:3px;color:inherit}
.poster-board sup,.poster-board sub{font-size:.72em}
.r2-note-modal-dialog.is-poster .poster-board .poster-cell h2.t-al-center{justify-content:center}
.r2-note-modal-dialog.is-poster .poster-board .poster-cell h2.t-al-right{justify-content:flex-end}
.r2-note-modal-dialog.is-poster .poster-board .poster-cell h2.t-al-justify{justify-content:space-between}

/* ===================== Poster styles (skins on the Denim layout) ===================== */
.poster-skin-emerald{--pk-bg:#eaf6f0;--pk-line:#bfe3cf;--pk-h1:#1f7a55;--pk-h2:#135a3e;--pk-h3:#0a3325;--pk-acc:#7fe0b3;--pk-lead:#d5f0e2;--pk-card:#fff;--pk-card-line:#a9d9bf;--pk-ha:#13573d;--pk-hb:#1f8a5d;--pk-text:#1f3a2e;--pk-strong:#0f5132;--pk-mark:#1f8a5d;--pk-icon:#e0f3e9}
.poster-skin-ocean{--pk-bg:#e7f6f7;--pk-line:#b8e1e4;--pk-h1:#0e7c86;--pk-h2:#0a5961;--pk-h3:#053a40;--pk-acc:#7fe3ea;--pk-lead:#d3f1f3;--pk-card:#fff;--pk-card-line:#a3d8dc;--pk-ha:#0a5961;--pk-hb:#0e8a95;--pk-text:#16393c;--pk-strong:#07484e;--pk-mark:#0e8a95;--pk-icon:#dcf2f4}
.poster-skin-sunset{--pk-bg:#fdf1e8;--pk-line:#f3cfb4;--pk-h1:#d9622b;--pk-h2:#a8421c;--pk-h3:#6b2610;--pk-acc:#ffc79a;--pk-lead:#fde3d0;--pk-card:#fff;--pk-card-line:#f0c0a0;--pk-ha:#a8421c;--pk-hb:#e0733a;--pk-text:#4a2a1c;--pk-strong:#8a3412;--pk-mark:#d9622b;--pk-icon:#fde6d6}
.poster-skin-lavender{--pk-bg:#f3effb;--pk-line:#d9cdf2;--pk-h1:#6d4fb3;--pk-h2:#4f3589;--pk-h3:#2f1f57;--pk-acc:#cdb8ff;--pk-lead:#e7defc;--pk-card:#fff;--pk-card-line:#cfc0ee;--pk-ha:#4f3589;--pk-hb:#7a5cc7;--pk-text:#33284d;--pk-strong:#4f3589;--pk-mark:#7a5cc7;--pk-icon:#ece5fb}
.poster-skin-rose{--pk-bg:#fdf0f4;--pk-line:#f5cad8;--pk-h1:#c2477a;--pk-h2:#96305b;--pk-h3:#5e1a38;--pk-acc:#ffb8d2;--pk-lead:#fbdde8;--pk-card:#fff;--pk-card-line:#f0bcd0;--pk-ha:#96305b;--pk-hb:#d4588c;--pk-text:#4a2433;--pk-strong:#96305b;--pk-mark:#d4588c;--pk-icon:#fce4ec}
.poster-skin-mono{--pk-bg:#f6f6f6;--pk-line:#dcdcdc;--pk-h1:#2b2b2b;--pk-h2:#1a1a1a;--pk-h3:#0d0d0d;--pk-acc:#e0e0e0;--pk-lead:#d9d9d9;--pk-card:#fff;--pk-card-line:#cfcfcf;--pk-ha:#1a1a1a;--pk-hb:#3a3a3a;--pk-text:#2a2a2a;--pk-strong:#000;--pk-mark:#3a3a3a;--pk-icon:#eeeeee}
.poster-skin-midnight{--pk-bg:#0f1420;--pk-line:#26324a;--pk-h1:#1c2a4a;--pk-h2:#121c33;--pk-h3:#070b16;--pk-acc:#8fb2ff;--pk-lead:#c8d4f0;--pk-card:#161f33;--pk-card-line:#2a3a5c;--pk-ha:#243a6b;--pk-hb:#3b5bab;--pk-text:#cfd9ee;--pk-strong:#fff;--pk-mark:#8fb2ff;--pk-icon:#1f2c49}
.poster-skin-sand{--pk-bg:#f7f1e6;--pk-line:#e4d5bb;--pk-h1:#8a6a43;--pk-h2:#6b5031;--pk-h3:#43321e;--pk-acc:#f3d9ae;--pk-lead:#efe2cc;--pk-card:#fff;--pk-card-line:#dfcba8;--pk-ha:#6b5031;--pk-hb:#9b7a4f;--pk-text:#3d3222;--pk-strong:#6b5031;--pk-mark:#9b7a4f;--pk-icon:#f1e7d6}
.poster-board.poster-theme-denim[class*="poster-skin-"]{background:var(--pk-bg);border-color:var(--pk-line)}
.poster-board[class*="poster-skin-"] .poster-hero{background:radial-gradient(120% 140% at 0% 0%,var(--pk-h1) 0%,var(--pk-h2) 45%,var(--pk-h3) 100%)}
.poster-board[class*="poster-skin-"] :is(.poster-title-accent,.poster-eyebrow){color:var(--pk-acc)}
.poster-board[class*="poster-skin-"] .poster-lead{color:var(--pk-lead)}
.poster-board[class*="poster-skin-"] .poster-meta-box{border-color:color-mix(in srgb,var(--pk-acc) 40%,transparent)}
.r2-note-modal-dialog.is-poster .poster-board[class*="poster-skin-"] .poster-meta-box h2{background:var(--pk-acc);color:var(--pk-h3)}
.poster-board.poster-theme-denim[class*="poster-skin-"] .poster-sections .poster-cell:not(.has-tone),.poster-board[class*="poster-skin-"] .poster-gallery figure{background:var(--pk-card);border-color:var(--pk-card-line)}
.r2-note-modal-dialog.is-poster .poster-board.poster-theme-denim[class*="poster-skin-"] .poster-sections .poster-cell:not(.has-tone) h2{background:linear-gradient(90deg,var(--pk-ha),var(--pk-hb))}
.poster-board[class*="poster-skin-"] .poster-cell:not(.has-tone) .poster-num{color:var(--pk-ha)}
.poster-board[class*="poster-skin-"] .poster-cell:not(.has-tone) .poster-text{color:var(--pk-text)}
.poster-board[class*="poster-skin-"] .poster-cell:not(.has-tone) .poster-text strong{color:var(--pk-strong)}
.poster-board[class*="poster-skin-"] .poster-text li::marker{color:var(--pk-mark)}
.poster-board[class*="poster-skin-"] .poster-icon-box{background:var(--pk-icon);color:var(--pk-ha);border-color:var(--pk-card-line)}
.poster-board[class*="poster-skin-"] .poster-gallery figcaption{color:var(--pk-text)}
/* dark site: every light skin gets dark cards in the same colour family */
html.r2-dark .poster-board.poster-theme-denim[class*="poster-skin-"]:not(.poster-skin-midnight){background:color-mix(in srgb,var(--pk-h3) 55%,#0b0c0f);border-color:color-mix(in srgb,var(--pk-h1) 40%,#222)}
html.r2-dark .poster-board.poster-theme-denim[class*="poster-skin-"]:not(.poster-skin-midnight) .poster-sections .poster-cell:not(.has-tone),html.r2-dark .poster-board[class*="poster-skin-"]:not(.poster-skin-midnight) .poster-gallery figure{background:color-mix(in srgb,var(--pk-h3) 35%,#15171b);border-color:color-mix(in srgb,var(--pk-h1) 45%,#2a2a2a)}
html.r2-dark .poster-board[class*="poster-skin-"]:not(.poster-skin-midnight) .poster-cell:not(.has-tone) .poster-text{color:#dde3ea}
html.r2-dark .poster-board[class*="poster-skin-"]:not(.poster-skin-midnight) .poster-cell:not(.has-tone) .poster-text strong{color:#fff}
html.r2-dark .poster-board[class*="poster-skin-"]:not(.poster-skin-midnight) .poster-icon-box{background:color-mix(in srgb,var(--pk-h1) 30%,#1a1a1a);color:var(--pk-acc)}
.r2-pw-btn{display:inline-flex!important;align-items:center;justify-content:center;gap:0}
.r2-pw-btn sup{align-self:flex-start;margin-top:5px}.r2-pw-btn sub{align-self:flex-end;margin-bottom:5px}
.r2-pw-lh{min-width:78px}

/* ===================== Rich editors: Word-like second toolbar row ===================== */
#r2cms .r2-rich-toolbar{flex-wrap:wrap}
#r2cms .r2-et-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;width:100%;flex-basis:100%;margin-top:6px;padding-top:8px;border-top:1px solid rgba(0,0,0,.07)}
#r2cms .r2-et-grp{display:inline-flex;align-items:center;flex-wrap:wrap;gap:3px;padding-right:10px;border-right:1px solid rgba(0,0,0,.1)}
#r2cms .r2-et-grp:last-child{border-right:0}
#r2cms .r2-et-btn{display:inline-flex!important;align-items:center;justify-content:center;gap:5px;min-width:34px}
#r2cms .r2-et-btn svg{width:16px;height:16px;flex:0 0 auto}
#r2cms .r2-et-btn sup{font-size:9px;align-self:flex-start}
#r2cms .r2-et-btn sub{font-size:9px;align-self:flex-end}
#r2cms .r2-et-color{position:relative;display:inline-grid!important;place-items:center;cursor:pointer;min-width:34px}
#r2cms .r2-et-color svg{width:16px;height:16px;margin-top:-4px}
#r2cms .r2-et-color i{position:absolute;left:8px;right:8px;bottom:5px;height:4px;border-radius:2px}
#r2cms .r2-et-color input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;border:0;padding:0}
#r2cms .r2-et-lh{height:34px;border-radius:10px;padding:0 8px;min-width:84px}
html.r2-dark #r2cms .r2-et-row{border-color:rgba(255,255,255,.1)}
html.r2-dark #r2cms .r2-et-grp{border-color:rgba(255,255,255,.12)}
/* code blocks: editor + everywhere they are shown */
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) pre{margin:14px 0;padding:14px 16px;border-radius:12px;background:#0f172a;color:#e2e8f0;font:13.5px/1.6 'JetBrains Mono',Consolas,'Courier New',monospace;white-space:pre;overflow-x:auto;tab-size:4;-webkit-overflow-scrolling:touch}
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) pre code{font:inherit;background:none;color:inherit;padding:0}
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) pre strong{color:#7cc0ff;font-weight:700}
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) :is(sub,sup){font-size:.72em}
:is(.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-rich-content,.r2-preview-content) img[data-chart]{display:block;margin:14px auto;height:auto;border-radius:14px;box-shadow:0 1px 3px rgba(0,0,0,.06),0 8px 24px rgba(0,0,0,.06)}
.r2-rich-content img[data-chart]{cursor:pointer}

/* ===================== Dialogs: code block + chart ===================== */
.r2x{position:fixed;inset:0;z-index:100002;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(0,0,0,.45);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;transition:opacity .25s;font:500 14px/1.4 var(--t-font,system-ui);color:#1d1d1f}
.r2x.in{opacity:1}
.r2x-panel{display:flex;flex-direction:column;width:min(760px,100%);max-height:100%;border-radius:22px;background:#fff;box-shadow:0 30px 90px rgba(0,0,0,.35);overflow:hidden;transform:translateY(12px) scale(.985);transition:transform .35s var(--t-ease,ease)}
.r2x-chart .r2x-panel{width:min(1180px,100%)}
.r2x.in .r2x-panel{transform:none}
.r2x-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid #e5e5ea}
.r2x-head strong{font-size:17px}
.r2x-btns{display:flex;gap:6px}
.r2x button{font:inherit;cursor:pointer}
.r2x-btns button,.r2x-row>button{border:1px solid #d9d9de;border-radius:999px;padding:8px 14px;background:#fff;color:#1d1d1f;font-weight:600;font-size:13px}
.r2x-btns .primary{background:#0071e3;border-color:#0071e3;color:#fff}
.r2x-body{overflow:auto;padding:16px;display:grid;gap:12px}
.r2x label{display:grid;gap:5px;font-size:12px;font-weight:700;letter-spacing:.03em;color:#6e6e73}
.r2x :is(input,select,textarea){font:500 14px/1.4 var(--t-font,system-ui);color:#1d1d1f;background:#f5f5f7;border:1px solid transparent;border-radius:10px;padding:9px 11px;width:100%;box-sizing:border-box}
.r2x :is(input,select,textarea):focus{outline:0;background:#fff;border-color:#0071e3;box-shadow:0 0 0 4px rgba(0,113,227,.14)}
.r2x textarea[data-c="code"]{font:13.5px/1.55 Consolas,'Courier New',monospace;background:#0f172a;color:#e2e8f0;min-height:220px;resize:vertical}
.r2x-row{display:flex;flex-wrap:wrap;gap:10px}
.r2x-row>label{flex:1 1 200px}
.r2x-hint{margin:0;font-size:12px;color:#6e6e73}
.r2x-chart-grid{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:16px;align-items:start}
.r2x-form{display:grid;gap:12px}
.r2x-seg{display:inline-flex;padding:3px;border-radius:12px;background:#ececf1;gap:2px;width:max-content;max-width:100%;flex-wrap:wrap}
.r2x-seg button{border:0;border-radius:9px;padding:7px 12px;background:transparent;color:#424245;font-weight:600;font-size:13px}
.r2x-seg button.on{background:#fff;color:#1d1d1f;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.r2x-table-wrap{overflow-x:auto}
.r2x-table{border-collapse:collapse;width:100%}
.r2x-table th,.r2x-table td{padding:3px;text-align:left}
.r2x-table th{font-size:11px;color:#6e6e73}
.r2x-table th .r2x-sw{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:middle}
.r2x-table th input{display:inline-block;width:calc(100% - 16px);padding:6px 8px;font-size:12px}
.r2x-table td input{padding:7px 9px;font-size:13px;min-width:70px}
.r2x-table td button{border:0;background:transparent;color:#d70015;font-size:18px;padding:0 6px}
.r2x-preview{border-radius:14px;background:#fcfcfb;border:1px solid #e5e5ea;overflow:hidden}
.r2x-preview svg{display:block;width:100%;height:auto}
html.r2-dark .r2x{color:#f5f5f7}
html.r2-dark .r2x-panel{background:#1c1c1e}
html.r2-dark .r2x-head{border-color:#3a3a3c}
html.r2-dark .r2x-btns button:not(.primary),html.r2-dark .r2x-row>button{background:#2c2c2e;border-color:#3a3a3c;color:#f5f5f7}
html.r2-dark .r2x :is(input,select):not([data-c="code"]){background:#2c2c2e;color:#f5f5f7}
html.r2-dark .r2x label,html.r2-dark .r2x-hint,html.r2-dark .r2x-table th{color:#a1a1a6}
html.r2-dark .r2x-seg{background:#2c2c2e}
html.r2-dark .r2x-seg button{color:#d1d1d6}
html.r2-dark .r2x-seg button.on{background:#48484a;color:#fff}
@media (max-width:760px){ .r2x{padding:0} .r2x-panel{height:100%;border-radius:0} .r2x-chart-grid{grid-template-columns:1fr} .r2x-preview{order:-1} }

/* ===================== Live previews (notes in article mode + projects) ===================== */
.r2-preview-refresh{border:1px solid rgba(0,0,0,.12);border-radius:999px;padding:6px 12px;background:#fff;color:#1d1d1f;font:600 12.5px var(--t-font,system-ui);cursor:pointer}
.r2-preview-refresh.is-spin{animation:r2Spin .6s var(--t-ease,ease)}
@keyframes r2Spin{from{transform:rotate(-12deg) scale(.94)}to{transform:none}}
html.r2-dark .r2-preview-refresh{background:#2c2c2e;color:#f5f5f7;border-color:rgba(255,255,255,.14)}
.r2-poster-preview.is-article .r2-preview-viewport{height:auto!important;max-height:78vh;overflow:auto;border-radius:16px}
.r2-poster-preview.is-article .r2-preview-scale{transform:none!important}
.r2-poster-preview.is-article .r2-preview-dialog{position:static!important;transform:none!important;max-height:none!important;width:auto!important;margin:0!important;padding:22px 24px 28px!important;border-radius:16px;background:#fff;box-shadow:none;overflow:visible}
.r2-poster-preview.is-article .r2-preview-content h2{margin:6px 0 6px;font-size:26px;line-height:1.2;color:#1d1d1f}
.r2-poster-preview.is-article .r2-note-modal-meta,.r2-pv-meta{font-size:11px;font-weight:700;letter-spacing:.12em;color:#0071e3;margin:0}
.r2-poster-preview.is-article .r2-note-modal-date{font-size:12px;color:#6e6e73;margin:0 0 12px}
.r2-poster-preview.is-article .r2-note-modal-summary,.r2-pv-summary{font-size:15px;color:#424245;margin:0 0 14px}
.r2-poster-preview.is-article .r2-note-modal-image img,.r2-pv-cover img{display:block;width:100%;max-height:260px;object-fit:contain;border-radius:12px;background:#f5f5f7;margin-bottom:12px}
.r2-pv-cover{margin:0}
.r2-poster-preview.is-article .r2-rich-public{font-size:15px;line-height:1.7;color:#1d1d1f}
.r2-poster-preview.is-article .r2-rich-public img{max-width:100%;height:auto}
.r2-preview-empty{color:#8e8e93;font-style:italic}
.r2-pv-link{display:inline-block;margin-top:8px;padding:8px 16px;border-radius:999px;background:#0071e3;color:#fff!important;font-weight:600;text-decoration:none}
html.r2-dark .r2-poster-preview.is-article .r2-preview-dialog{background:#1c1c1e}
html.r2-dark .r2-poster-preview.is-article .r2-preview-content h2,html.r2-dark .r2-poster-preview.is-article .r2-rich-public{color:#f5f5f7}
html.r2-dark .r2-poster-preview.is-article :is(.r2-note-modal-summary,.r2-pv-summary){color:#d1d1d6}
html.r2-dark .r2-poster-preview.is-article .r2-note-modal-date{color:#a1a1a6}
.r2-poster-preview.is-article .r2-preview-scale{width:auto!important;min-width:0!important}
.r2-poster-preview.is-article .r2-preview-dialog,.r2-poster-preview.is-article .r2-preview-content{max-width:100%!important;min-width:0!important;box-sizing:border-box}
.r2-poster-preview.is-article .r2-preview-content :is(img,table,pre){max-width:100%}
/* dark mode: highlighted words keep dark ink on the light marker; code keywords keep their blue */
html.r2-dark :is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content) [style*="background-color"],html.r2-dark .poster-board mark{color:#1d1d1f!important;-webkit-text-fill-color:#1d1d1f!important}
html.t-apple.r2-dark #r2cms :is(.r2-rich-content,.r2-preview-content) pre strong,html.r2-dark :is(.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public) pre strong{color:#7cc0ff!important;-webkit-text-fill-color:#7cc0ff!important}
html.t-apple.r2-dark #r2cms :is(.r2-rich-content,.r2-preview-content) pre,html.t-apple.r2-dark #r2cms :is(.r2-rich-content,.r2-preview-content) pre code{color:#e2e8f0!important}

/* ===================== New mascot: giraffe + little dinosaur ===================== */
.ms-svg{display:block;width:100%;height:100%;overflow:visible}
.ms-g,.ms-d,.ms-g-head,.ms-eyes{transform-box:fill-box}
.ms-g-head{transform-origin:50% 100%;animation:msSway 4.2s ease-in-out infinite}
.ms-d{transform-origin:50% 100%;animation:msBob 3.2s ease-in-out infinite}
.ms-eyes{transform-origin:50% 50%;animation:gjBlink 4.8s infinite}
.ms-d .ms-eyes{animation-delay:-1.6s}
@keyframes msSway{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
@keyframes msBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
/* header: the pair peeks over the bottom line of the menu bar */
header.top .t-giraffe.t-mascot-mini{width:calc(var(--gj,36px) * 1.774)!important}
header.top .t-mascot-mini .gj-all,header.top .t-mascot-mini .gj-head{animation:none}
/* home: small, calm, above the hero sentence */
.t-mascot{position:relative;width:min(230px,70vw);margin:-40px auto 26px;text-align:center}
.t-mascot .ms-svg{width:78%;height:auto;margin:0 auto -9px;position:relative;z-index:1}
.t-mascot-bar{position:relative;display:flex;align-items:center;justify-content:center;height:40px;border-radius:14px;background:rgba(255,255,255,.9);border:1.5px solid #d9dde3;box-shadow:0 6px 18px rgba(0,0,0,.06)}
.t-mascot-bar span{font:600 15px/1 var(--t-font);letter-spacing:.01em;color:#1d1d1f}
html.r2-dark .t-mascot-bar{background:rgba(28,28,30,.92);border-color:#3a3a3c}
html.r2-dark .t-mascot-bar span{color:#f5f5f7}
@media (max-width:640px){ .t-mascot{width:190px;margin:-56px auto 20px} .t-mascot-bar{height:36px} .t-mascot-bar span{font-size:14px} }
html.r2-reduce body :is(.ms-g-head,.ms-d,.ms-eyes){animation-duration:6s!important;animation-iteration-count:infinite!important}
.t-mascot-bar{height:46px;padding-top:9px;box-sizing:border-box}
@media (max-width:640px){ .t-mascot-bar{height:42px;padding-top:8px} }
#r2cms .r2-pw-lh,#r2cms .r2-et-lh{padding:0 6px!important;height:32px!important;min-height:0!important;font-size:12.5px!important;line-height:30px!important}
/* full-body mascot in the menu bar */
header.top .t-giraffe.t-mascot-mini{width:calc(var(--gj,44px) * 1.2424)!important}
.ms-tail{transform-box:fill-box;transform-origin:0 0;animation:gjTail 1.9s ease-in-out infinite}
.ms-dtail{transform-origin:0 50%;animation-duration:2.4s}
.ms-full .ms-g-head{transform-origin:50% 100%}
.t-mascot{display:none!important}
html.r2-reduce body .ms-tail{animation-duration:6s!important;animation-iteration-count:infinite!important}
header.top.t-gj-endrow #r2-main-nav{padding-right:52px!important}

/* ===================== Poster: icon beside the heading, adjustable size & colour ===================== */
.poster-board .poster-cell h2.has-ic,.r2-note-modal-dialog.is-poster .poster-board .poster-cell h2.has-ic{display:flex!important;align-items:center;gap:10px}
.r2-note-modal-dialog.is-poster .poster-board .poster-cell h2:is(.t-al-center,.t-al-right,.t-al-justify):not(.has-ic){display:block}
.r2-note-modal-dialog.is-poster .poster-board .poster-cell h2.has-ic.t-al-center{justify-content:center}
.r2-note-modal-dialog.is-poster .poster-board .poster-cell h2.has-ic.t-al-right{justify-content:flex-end}
.poster-board .poster-cell h2 .poster-icon-box{flex:0 0 auto;width:var(--ic,32px);height:var(--ic,32px);border-radius:calc(var(--ic,32px) * .3);display:inline-grid;place-items:center;background:rgba(255,255,255,.92);color:#1d4b85;border:0;margin:0}
.poster-board .poster-icon-box{width:var(--ic,46px);height:var(--ic,46px)}
.poster-board .poster-icon-box :is(svg,img){width:62%!important;height:62%!important}
.poster-board .poster-icon-box.has-icc{color:var(--icc)!important;background:color-mix(in srgb,var(--icc) 14%,#fff)!important}
.poster-board.poster-theme-classic .poster-cell h2 .poster-icon-box{background:#f1f3f6;color:#202328}
html.r2-dark .poster-board.poster-theme-classic .poster-cell h2 .poster-icon-box{background:#23272e;color:#e6e9ee}
.r2-icon-adjust{display:inline-flex;align-items:center;gap:6px}
.r2-icon-adjust select{height:34px;border-radius:10px;font-size:12.5px;padding:0 8px}
.r2-sec-reset{border:0;background:transparent;cursor:pointer;font-size:15px;padding:0 4px;color:inherit}
.r2-preview-refresh.is-done{background:#e7f8ee!important;border-color:#1f9d55!important;color:#137a3f!important}
html.r2-dark .r2-preview-refresh.is-done{background:#123524!important;color:#6fe3a1!important}
.r2-pv-flash{animation:r2PvFlash .7s ease}
@keyframes r2PvFlash{0%{box-shadow:0 0 0 0 rgba(0,113,227,.0)}30%{box-shadow:0 0 0 4px rgba(0,113,227,.35)}100%{box-shadow:0 0 0 0 rgba(0,113,227,0)}}
/* mascot at the laptop (menu bar) */
header.top .t-giraffe.t-mascot-mini{width:calc(var(--gj,44px) * 1.515)!important}
.ms-lap .ms-glow{animation:msGlow 3.6s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 50%}
@keyframes msGlow{0%,100%{opacity:.75;transform:scale(.96)}50%{opacity:1;transform:scale(1.04)}}
.ms-lap .ms-spark path{transform-box:fill-box;transform-origin:50% 50%;animation:tTwinkle 2.6s ease-in-out infinite}
.ms-lap .ms-spark path:nth-child(2){animation-delay:-.9s}.ms-lap .ms-spark path:nth-child(3){animation-delay:-1.7s}
.ms-lap .ms-d{animation-duration:2.6s}
html.r2-dark .ms-lap .ms-glow{opacity:.9}
header.top.t-gj-endrow #r2-main-nav{padding-right:64px!important}
.ms-lap .ms-glow{animation:none!important}
#r2cms .r2-et-tab{min-width:92px}

/* ===================== Denim poster: real denim colours + a light twill weave ===================== */
.poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info){--dn-black:#1b1c1f;--dn-light:#8fb3dc;--dn-medium:#3e6fae;--dn-navy:#1f3f7a;--dn-bb:#172238;
  --twill:repeating-linear-gradient(135deg,rgba(255,255,255,.045) 0 1.5px,transparent 1.5px 4px),repeating-linear-gradient(45deg,rgba(0,0,0,.05) 0 1px,transparent 1px 5px);
  background:linear-gradient(#e6eef8,#dde8f5);border-color:#b5cae4}
.poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-hero{background:var(--twill),radial-gradient(120% 140% at 0% 0%,var(--dn-medium) 0%,var(--dn-navy) 48%,var(--dn-bb) 100%)}
.poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) :is(.poster-title-accent,.poster-eyebrow){color:var(--dn-light)}
.r2-note-modal-dialog.is-poster .poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-meta-box h2{background:var(--dn-light);color:var(--dn-bb)}
.poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-meta-box{border-color:rgba(143,179,220,.4);background:rgba(23,34,56,.45)}
.r2-note-modal-dialog.is-poster .poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-sections .poster-cell:not(.has-tone) h2{background:var(--twill),linear-gradient(90deg,var(--dn-navy),var(--dn-medium))}
.poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-sections .poster-cell:not(.has-tone),.poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-gallery figure{border-color:#a9c1de}
.poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-cell:not(.has-tone) .poster-num{color:var(--dn-navy)}
.poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-cell:not(.has-tone) .poster-text{color:#1f2f4a}
.poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-text strong{color:var(--dn-navy)}
.poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-text li::marker{color:var(--dn-medium)}
.poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-icon-box:not(.has-icc){background:#e4edf8;color:var(--dn-navy)}
html.r2-dark .poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info){background:linear-gradient(#111a2b,#0d1524);border-color:#26395c}
html.r2-dark .poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-sections .poster-cell:not(.has-tone),html.r2-dark .poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-gallery figure{background:#15213a;border-color:#2c4570}
html.r2-dark .poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-cell:not(.has-tone) .poster-text{color:#d2deee}
html.r2-dark .poster-board.poster-theme-denim:not([class*="poster-skin-"]):not(.poster-info) .poster-text strong{color:#fff}

/* ===================== Infographic posters (light / dark header) ===================== */
.poster-tagline{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:.02em;color:#1f3f7a}
.poster-tagline i{font-style:normal;color:#9fb1c9}
html.r2-dark .poster-tagline{color:#9cc0e6}
.poster-board.poster-info{background:#f5f7fb;border-color:#d5deea}
.poster-board.poster-info .poster-sections{grid-template-columns:repeat(6,minmax(0,1fr))}
.poster-board.poster-info .poster-sections .poster-cell{grid-column:span 3}
.poster-board.poster-info .poster-sections .poster-cell.is-full{grid-column:1/-1}
.poster-board.poster-info .poster-sections .poster-cell.is-third{grid-column:span 2}
@media (max-width:680px){ .poster-board.poster-info .poster-sections{grid-template-columns:1fr} .poster-board.poster-info .poster-sections .poster-cell,.poster-board.poster-info .poster-sections .poster-cell.is-third{grid-column:1/-1} }
.poster-board.poster-info .poster-sections .poster-cell:not(.has-tone){background:#fff;border:1.5px solid #1f3f7a;border-radius:10px;box-shadow:0 4px 14px rgba(19,41,75,.07)}
.poster-board.poster-info .poster-cell:not(.has-tone) .poster-text{color:#1f2937}
.poster-board.poster-info .poster-text strong{color:#13294b}
.poster-board.poster-info .poster-text li::marker{color:#2f6db5}
/* light header (navy title, "Main topics" + "By" boxes) */
.poster-board.poster-infolight .poster-hero{background:#fff;background-image:linear-gradient(rgba(31,63,122,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(31,63,122,.04) 1px,transparent 1px);background-size:22px 22px;border-bottom:1.5px solid #d5deea}
.r2-note-modal-dialog.is-poster .poster-board.poster-infolight .poster-hero h1{color:#13294b!important;-webkit-text-fill-color:#13294b!important;font-family:var(--t-font,'Inter',sans-serif)!important;font-weight:800;letter-spacing:-.025em}
.poster-board.poster-infolight .poster-title-accent{color:#2f6db5!important;-webkit-text-fill-color:#2f6db5!important}
.poster-board.poster-infolight .poster-eyebrow{color:#2f6db5}
.poster-board.poster-infolight .poster-lead,.poster-board.poster-infolight .poster-lead p{color:#364152;font-style:normal}
.poster-board.poster-infolight .poster-lead strong{color:#13294b}
.poster-board.poster-infolight .poster-affiliation{color:#5b6b82}
.poster-board.poster-infolight .poster-meta-box{background:#fff;border:1.5px solid #1f3f7a;border-radius:8px}
.r2-note-modal-dialog.is-poster .poster-board.poster-infolight .poster-meta-box h2{background:#1f3f7a;color:#fff}
.poster-board.poster-infolight .poster-meta-box :is(ul,p){color:#1f2937}
.poster-board.poster-infolight .poster-meta-box li::before{content:"";display:inline-block;width:7px;height:7px;border-radius:2px;background:#2f6db5;margin-right:8px;vertical-align:1px}
.poster-board.poster-infolight .poster-meta-box strong{color:#13294b}
.r2-note-modal-dialog.is-poster .poster-board.poster-infolight .poster-sections .poster-cell:not(.has-tone) h2{background:linear-gradient(90deg,#13294b,#1f3f7a);color:#fff;position:relative;padding-right:40px}
.r2-note-modal-dialog.is-poster .poster-board.poster-infolight .poster-sections .poster-cell h2::after{content:"";position:absolute;right:12px;top:50%;width:16px;height:16px;margin-top:-8px;opacity:.85;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4Z'/%3E%3C/svg%3E") center/contain no-repeat}
.poster-board.poster-infolight .poster-cell:not(.has-tone) .poster-num{background:#fff;color:#13294b}
/* dark header with a picture on the right */
.poster-board.poster-infodark .poster-hero{background:radial-gradient(120% 140% at 0% 0%,#1f3f7a 0%,#13294b 50%,#0b1628 100%)}
.poster-board.poster-infodark .poster-title-accent{color:#6fb3ff}
.poster-board.poster-infodark .poster-eyebrow{color:#9cc0e6}
.poster-hero-pic{display:grid;gap:10px;align-content:center}
.poster-hero-pic figure{margin:0;border-radius:14px;overflow:hidden;background:rgba(255,255,255,.06)}
.poster-hero-pic img{display:block;width:100%;max-height:300px;object-fit:contain}
.poster-hero-pic figcaption{padding:6px 10px;font-size:11px;color:#c9d6ea}
.r2-note-modal-dialog.is-poster .poster-board.poster-infodark .poster-sections .poster-cell:not(.has-tone){border-color:#cfd9e6}
.r2-note-modal-dialog.is-poster .poster-board.poster-infodark .poster-sections .poster-cell:not(.has-tone) h2{background:transparent;color:#13294b;border-bottom:1px solid #e3e8ef}
.poster-board.poster-infodark .poster-cell:not(.has-tone) .poster-num{background:#1f3f7a;color:#fff}
/* site in dark mode */
html.r2-dark .poster-board.poster-info{background:#0e1626;border-color:#26395c}
html.r2-dark .poster-board.poster-info .poster-sections .poster-cell:not(.has-tone){background:#15213a;border-color:#2f4f86}
html.r2-dark .poster-board.poster-info .poster-cell:not(.has-tone) .poster-text{color:#d2deee}
html.r2-dark .poster-board.poster-info .poster-text strong{color:#fff}
html.r2-dark .poster-board.poster-infolight .poster-hero{background-color:#111c31;border-color:#26395c}
html.r2-dark .r2-note-modal-dialog.is-poster .poster-board.poster-infolight .poster-hero h1,html.r2-dark .r2-note-modal-dialog .poster-board.poster-infolight .poster-hero h1{color:#f5f7fb!important;-webkit-text-fill-color:#f5f7fb!important}
html.r2-dark .poster-board.poster-infolight .poster-title-accent{color:#8fc2ff!important;-webkit-text-fill-color:#8fc2ff!important}
html.r2-dark .poster-board.poster-infolight :is(.poster-lead,.poster-lead p,.poster-meta-box ul,.poster-meta-box p){color:#d2deee}
html.r2-dark .poster-board.poster-infolight .poster-meta-box{background:#15213a;border-color:#2f4f86}
html.r2-dark .poster-board.poster-infolight .poster-meta-box strong{color:#fff}
html.r2-dark .r2-note-modal-dialog.is-poster .poster-board.poster-infodark .poster-sections .poster-cell:not(.has-tone) h2{color:#e6eefa;border-color:#2f4f86}
/* dragging pictures in the admin preview */
.r2-poster-preview [data-pimg],.r2-poster-preview [data-psec-img]{cursor:grab;touch-action:none}
.r2-drag-ghost{position:fixed;z-index:100010;pointer-events:none;width:120px;border-radius:10px;box-shadow:0 12px 30px rgba(0,0,0,.3);opacity:.9;transform:translate(-50%,-50%) rotate(-3deg)}
.r2-drop-on{outline:3px dashed #0071e3!important;outline-offset:3px}
.r2-drag-src{opacity:.35}
.r2-preview-drag-hint{display:block;font-size:11.5px;color:#0059b3;margin-top:2px}
html.r2-dark .r2-preview-drag-hint{color:#8cc4ff}
.r2-poster-preview.is-article .r2-preview-drag-hint{display:none}

.ms-paused .ms-live,.ms-paused .ms-live *{animation-play-state:paused!important}

/* ===================== Denim colour template for notes, ideas and projects ===================== */
.r2-tpl-denim{--dn-light:#8fb3dc;--dn-medium:#3e6fae;--dn-navy:#1f3f7a;--dn-bb:#172238;border-top:0!important;position:relative}
.r2-tpl-denim::before{content:"";display:block;height:8px;margin:-1px -1px 18px;border-radius:inherit;border-bottom-left-radius:0;border-bottom-right-radius:0;
  background:repeating-linear-gradient(135deg,rgba(255,255,255,.08) 0 1.5px,transparent 1.5px 4px),linear-gradient(90deg,var(--dn-bb),var(--dn-navy) 40%,var(--dn-medium) 80%,var(--dn-light))}
.r2-tpl-denim :is(h1,h2,h3):not(.poster-board *){color:var(--dn-navy)!important;-webkit-text-fill-color:var(--dn-navy)!important}
.r2-tpl-denim :is(.r2-note-modal-meta,.r2-pv-meta,.r2-note-type){color:var(--dn-medium)!important}
.r2-tpl-denim a:not(.r2-pv-link):not([class*="btn"]){color:var(--dn-medium)!important}
.r2-tpl-denim blockquote{border-left:4px solid var(--dn-medium)!important;background:#eef3fa!important;border-radius:0 10px 10px 0;padding:10px 14px!important;color:#1f2f4a!important}
.r2-tpl-denim table{border-color:#b5cae4!important}
.r2-tpl-denim th{background:var(--dn-navy)!important;color:#fff!important}
.r2-tpl-denim :is(th,td){border-color:#cfdcec!important}
.r2-tpl-denim tbody tr:nth-child(even) td{background:#f3f7fc!important}
.r2-tpl-denim pre{background:var(--dn-bb)!important;box-shadow:inset 0 0 0 1px #2c4570}
.r2-tpl-denim pre strong{color:var(--dn-light)!important;-webkit-text-fill-color:var(--dn-light)!important}
.r2-tpl-denim :is(.r2-note-modal-summary,.r2-pv-summary){background:#eef3fa;border-radius:12px;padding:12px 14px;color:#1f2f4a!important}
.r2-tpl-denim .r2-pv-link{background:var(--dn-navy)!important}
html.r2-dark .r2-tpl-denim :is(h1,h2,h3):not(.poster-board *){color:#b9d0ec!important;-webkit-text-fill-color:#b9d0ec!important}
html.r2-dark .r2-tpl-denim :is(.r2-note-modal-meta,.r2-pv-meta,.r2-note-type){color:var(--dn-light)!important}
html.r2-dark .r2-tpl-denim a:not(.r2-pv-link):not([class*="btn"]){color:var(--dn-light)!important}
html.r2-dark .r2-tpl-denim blockquote,html.r2-dark .r2-tpl-denim :is(.r2-note-modal-summary,.r2-pv-summary){background:#15213a!important;color:#d2deee!important}
html.r2-dark .r2-tpl-denim tbody tr:nth-child(even) td{background:#162238!important}
html.r2-dark .r2-tpl-denim :is(th,td){border-color:#2c4570!important}
/* poster: code blocks, diagram/chart buttons, indent menu */
.poster-board pre.poster-code{margin:8px 0;padding:10px 12px;border-radius:8px;background:#172238;color:#e2e8f0;font:12px/1.55 Consolas,'Courier New',monospace;white-space:pre;overflow-x:auto;text-indent:0}
.r2-sec-make{display:inline-flex;gap:6px;margin-left:6px}
.r2-sec-make .r2cms-btn{display:inline-flex;align-items:center;gap:5px}
#r2cms .r2-pw-ind{min-width:150px}

/* ===================== Living mascot: 5 poses on one calm 12-second loop ===================== */
header.top .t-giraffe.t-mascot-mini{width:calc(var(--gj,50px) * 1.6)!important}
.ms-live .mp{opacity:0;animation:12s ease-in-out infinite}
.ms-live .mp-chars,.ms-live .mp-front{animation:mpRise 12s cubic-bezier(.25,.8,.3,1) infinite}
@keyframes mpRise{0%{transform:translateY(34px)}7%{transform:translateY(0)}95%{transform:translateY(0)}100%{transform:translateY(34px)}}
.ms-live .ms-g-head{animation:msSway 6s ease-in-out infinite}
.ms-live .ms-d-head{transform-box:fill-box;transform-origin:50% 100%;animation:msBob 3s ease-in-out infinite}
.ms-live .ms-tail{animation-duration:3.2s}
@keyframes mpW1{0%{opacity:1}10.0%{opacity:1}15.0%{opacity:0}100%{opacity:0}}
.ms-live .mp.mp1:not(.mp2):not(.mp3):not(.mp4):not(.mp5){animation-name:mpW1}
@keyframes mpW2{0%{opacity:0}10.0%{opacity:0}15.0%{opacity:1}22.5%{opacity:1}27.5%{opacity:0}100%{opacity:0}}
.ms-live .mp.mp2:not(.mp1):not(.mp3):not(.mp4):not(.mp5){animation-name:mpW2}
@keyframes mpW3{0%{opacity:0}22.5%{opacity:0}27.5%{opacity:1}47.5%{opacity:1}52.5%{opacity:0}100%{opacity:0}}
.ms-live .mp.mp3:not(.mp1):not(.mp2):not(.mp4):not(.mp5){animation-name:mpW3}
@keyframes mpW4{0%{opacity:0}47.5%{opacity:0}52.5%{opacity:1}72.5%{opacity:1}77.5%{opacity:0}100%{opacity:0}}
.ms-live .mp.mp4:not(.mp1):not(.mp2):not(.mp3):not(.mp5){animation-name:mpW4}
@keyframes mpW5{0%{opacity:0}72.5%{opacity:0}77.5%{opacity:1}100%{opacity:1}}
.ms-live .mp.mp5:not(.mp1):not(.mp2):not(.mp3):not(.mp4){animation-name:mpW5}
@keyframes mpW145{0%{opacity:1}10.0%{opacity:1}15.0%{opacity:0}47.5%{opacity:0}52.5%{opacity:1}100%{opacity:1}}
.ms-live .mp.mp1.mp4.mp5:not(.mp2):not(.mp3){animation-name:mpW145}
@keyframes mpW23{0%{opacity:0}10.0%{opacity:0}15.0%{opacity:1}47.5%{opacity:1}52.5%{opacity:0}100%{opacity:0}}
.ms-live .mp.mp2.mp3:not(.mp1):not(.mp4):not(.mp5){animation-name:mpW23}
@keyframes mpW134{0%{opacity:1}10.0%{opacity:1}15.0%{opacity:0}22.5%{opacity:0}27.5%{opacity:1}72.5%{opacity:1}77.5%{opacity:0}100%{opacity:0}}
.ms-live .mp.mp1.mp3.mp4:not(.mp2):not(.mp5){animation-name:mpW134}
@keyframes mpW25{0%{opacity:0}10.0%{opacity:0}15.0%{opacity:1}22.5%{opacity:1}27.5%{opacity:0}72.5%{opacity:0}77.5%{opacity:1}100%{opacity:1}}
.ms-live .mp.mp2.mp5:not(.mp1):not(.mp3):not(.mp4){animation-name:mpW25}
@keyframes mpW24{0%{opacity:0}10.0%{opacity:0}15.0%{opacity:1}22.5%{opacity:1}27.5%{opacity:0}47.5%{opacity:0}52.5%{opacity:1}72.5%{opacity:1}77.5%{opacity:0}100%{opacity:0}}
.ms-live .mp.mp2.mp4:not(.mp1):not(.mp3):not(.mp5){animation-name:mpW24}
@keyframes mpW34{0%{opacity:0}22.5%{opacity:0}27.5%{opacity:1}72.5%{opacity:1}77.5%{opacity:0}100%{opacity:0}}
.ms-live .mp.mp3.mp4:not(.mp1):not(.mp2):not(.mp5){animation-name:mpW34}
@keyframes mpBar2{0%{opacity:1}10%{opacity:1}15%{opacity:0}93%{opacity:0}97%{opacity:1}100%{opacity:1}}
.ms-live .mp.mp-bar{animation-name:mpBar2!important}
.ms-live .mg-wave>*{transform-box:view-box;transform-origin:86px 98px;animation:mpWave2 12s ease-in-out infinite}
@keyframes mpWave2{0%,13.333%{transform:rotate(0)}16.25%{transform:rotate(-12deg)}19.167%{transform:rotate(10deg)}22.083%{transform:rotate(-12deg)}25.0%,100%{transform:rotate(0)}}
.ms-live .mp-lens>*{transform-box:view-box;transform-origin:86px 100px;animation:mpLens 12s ease-in-out infinite}
@keyframes mpLens{0%,50.0%{transform:rotate(0)}60.0%{transform:rotate(-5deg)}70.0%{transform:rotate(4deg)}75.0%,100%{transform:rotate(0)}}
html.r2-reduce body .ms-live :is(.mp,.mp-chars,.mp-front,.mg-wave>*,.mp-lens>*){animation-duration:12s!important;animation-iteration-count:infinite!important}
html.r2-reduce body .ms-live :is(.ms-g-head,.ms-d-head,.ms-tail){animation-duration:6s!important;animation-iteration-count:infinite!important}

/* ===================== Writing assistant ===================== */
#r2cms .r2-assist-bar{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;margin:0 0 18px;padding:12px 16px;border-radius:16px;background:linear-gradient(120deg,#f3efff,#eef6ff)}
#r2cms .r2-assist-bar small{font-size:12.5px;color:#5f6368}
#r2cms .r2-assist-btn{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;padding:9px 16px;background:linear-gradient(120deg,#6d4fd8,#2f6fd0);color:#fff;font:600 13.5px var(--t-font,system-ui);cursor:pointer;box-shadow:0 6px 16px -6px rgba(90,70,200,.6)}
#r2cms .r2-assist-btn svg{width:17px;height:17px}
#r2cms .r2-assist-count{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#fff;color:#4b3aa7;font-size:11.5px;display:inline-grid;place-items:center}
html.r2-dark #r2cms .r2-assist-bar{background:linear-gradient(120deg,#1e1a33,#14203a)}
html.r2-dark #r2cms .r2-assist-bar small{color:#b8c2cf!important}
.r2x-assist .r2x-panel{width:min(820px,100%)}
.r2as-intro{font-size:14px;color:#424245}
.r2as-sec{border:1px solid #e5e5ea;border-radius:14px;padding:12px 14px}
.r2as-sec h4{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:14.5px;color:#1d1d1f}
.r2as-sec h4 svg{width:18px;height:18px;color:#6d4fd8}
.r2as-sec h4 em{font-style:normal;margin-left:auto;min-width:22px;height:22px;border-radius:999px;background:#f0edff;color:#4b3aa7;font-size:12px;display:grid;place-items:center}
.r2as-sec ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.r2as-sec li button{display:block;width:100%;text-align:left;border:0;border-radius:10px;padding:8px 10px 8px 26px;background:#f7f7fa;color:#1d1d1f;font:500 13px/1.45 var(--t-font,system-ui);cursor:pointer;position:relative}
.r2as-sec li button::before{content:"";position:absolute;left:10px;top:14px;width:8px;height:8px;border-radius:50%;background:#2f6fd0}
.r2as-sec li.lv-warn button::before{background:#e08a2e}
.r2as-sec li button:hover{background:#eef2fb}
.r2as-ok{margin:0;font-size:13px;color:#6e6e73}
.r2as-act{border:1px solid #d9d9de;border-radius:999px;padding:6px 12px;background:#fff;color:#1d1d1f;font:600 12.5px var(--t-font,system-ui);cursor:pointer;margin:2px 6px 2px 0}
.r2as-reflist,.r2as-lt-list{list-style:none;margin:0 0 6px;padding:0;display:grid;gap:8px}
.r2as-reflist li,.r2as-lt-list li{display:grid;gap:3px;padding:9px 11px;border-radius:10px;background:#f7f7fa;font-size:13px}
.r2as-reflist li span,.r2as-lt-list li span{color:#6e6e73;font-size:12px}
.r2as-reflist a{font-weight:600;font-size:12.5px;margin-right:8px;color:#0059b3}
.r2as-flash{outline:3px solid #6d4fd8!important;outline-offset:3px;transition:outline-color .6s}
html.r2-dark .r2as-intro,html.r2-dark .r2as-sec h4{color:#f5f5f7}
html.r2-dark .r2as-sec{border-color:#3a3a3c}
html.r2-dark .r2as-sec li button,html.r2-dark .r2as-reflist li,html.r2-dark .r2as-lt-list li{background:#2c2c2e;color:#f5f5f7}
html.r2-dark .r2as-sec h4 em{background:#2d2a45;color:#c9bfff}
html.r2-dark .r2as-act{background:#2c2c2e;color:#f5f5f7;border-color:#3a3a3c}
html.r2-dark .r2as-reflist a{color:#8cc4ff}

/* ===================== Editor ribbon: Text | Paragraph | Insert ===================== */
#r2cms .r2-rich-toolbar.r2-ribbon{display:block!important;padding:8px 10px!important}
#r2cms .r2-rib-tabs{display:flex;gap:2px;padding:2px;margin:0 0 8px;border-radius:10px;background:#ececf1;width:max-content;max-width:100%}
#r2cms .r2-rib-tabs button{border:0;border-radius:8px;padding:5px 12px;background:transparent;color:#424245;font:600 12.5px var(--t-font,system-ui);cursor:pointer}
#r2cms .r2-rib-tabs button.on{background:#fff;color:#1d1d1f;box-shadow:0 1px 3px rgba(0,0,0,.12)}
#r2cms .r2-rib-panel{display:flex;flex-wrap:nowrap;align-items:center;gap:4px;overflow-x:auto;scrollbar-width:thin;padding-bottom:2px;-webkit-overflow-scrolling:touch}
#r2cms .r2-rib-panel[hidden]{display:none}
#r2cms .r2-rib-panel>*{flex:0 0 auto;margin:0!important}
#r2cms .r2-rib-panel :is(button,.r2-et-color){display:inline-flex!important;align-items:center;justify-content:center;gap:5px;min-width:32px;height:32px!important;padding:0 8px!important;border-radius:8px!important;font-size:13px!important;line-height:1!important}
#r2cms .r2-rib-panel button svg{width:16px;height:16px;flex:0 0 auto}
#r2cms .r2-rib-panel select{height:32px!important;min-height:0!important;padding:0 8px!important;border-radius:8px!important;font-size:12.5px!important;line-height:30px!important;max-width:150px}
#r2cms .r2-rib-panel input[type=color]{width:34px!important;height:32px!important;padding:3px!important;border-radius:8px!important}
#r2cms .r2-rib-panel sup,#r2cms .r2-rib-panel sub{font-size:9px}
html.r2-dark #r2cms .r2-rib-tabs{background:#2c2c2e}
html.r2-dark #r2cms .r2-rib-tabs button{color:#d1d1d6}
html.r2-dark #r2cms .r2-rib-tabs button.on{background:#48484a;color:#fff}
/* the small "Rich text editor" note next to each label only added noise */
#r2cms .r2-rich-label>span{display:none}
.r2as-links{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:2px}
.r2as-links a{font-weight:600;font-size:12.5px;color:#0059b3}
.r2as-links a.r2as-jlink{padding:4px 10px;border-radius:999px;background:#0071e3;color:#fff!important}
html.r2-dark .r2as-links a{color:#8cc4ff}
#r2cms .r2-rib-panel{flex-wrap:wrap;overflow:visible;row-gap:5px}
#r2cms .r2-rib-panel select[data-rich-font],#r2cms .r2-rib-panel #r2n-font,#r2cms .r2-rib-panel #r2n-id-font{max-width:130px}
#r2cms .r2-rib-panel select[data-rich-size],#r2cms .r2-rib-panel #r2n-size,#r2cms .r2-rib-panel #r2n-id-size{max-width:92px}
html.t-apple #r2cms .r2-rich-toolbar .r2-rib-tabs button{background:transparent!important;border:0!important;box-shadow:none!important}
html.t-apple #r2cms .r2-rich-toolbar .r2-rib-tabs button.on{background:#fff!important;color:#1d1d1f!important;box-shadow:0 1px 3px rgba(0,0,0,.12)!important}
html.t-apple.r2-dark #r2cms .r2-rich-toolbar .r2-rib-tabs button{color:#c7c7cc!important}
html.t-apple.r2-dark #r2cms .r2-rich-toolbar .r2-rib-tabs button.on{background:#636366!important;color:#fff!important}
.r2as-sec .r2as-reflist li button{display:inline-flex;width:auto;align-items:center;padding:4px 11px;margin:0;border:1px solid #d9d9de;border-radius:999px;background:#fff;color:#1d1d1f;font:600 12px var(--t-font,system-ui)}
.r2as-sec .r2as-reflist li button::before{display:none}
.r2as-sec .r2as-reflist li button:disabled{color:#1f9d55;border-color:#1f9d55}
html.r2-dark .r2as-sec .r2as-reflist li button{background:#3a3a3c;color:#f5f5f7;border-color:#48484a}

/* ===== Admin · Writing Ideas: tool row, source report, related papers ===== */
.r2-ideas-refresh{flex-direction:column;align-items:flex-end;gap:8px}
.r2-ideas-tools{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.r2-ideas-tools .r2cms-btn{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.r2-ideas-tools .r2cms-btn .r2-ico{width:16px;height:16px}
.r2-ideas-tools .r2cms-btn.alt.is-on{background:#e6eef9;border-color:#2f63b5;color:#1d4b85}
.r2-ideas-panel{margin:0 0 16px;padding:18px 20px;border:1px solid #d9e2ee;border-radius:16px;background:#fff;box-shadow:0 6px 24px rgba(20,40,80,.06);animation:r2PanelIn .22s ease both}
@keyframes r2PanelIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.r2-panel-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:12px}
.r2-panel-head h3{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:17px;color:#1d3f66}
.r2-panel-head h3 .r2-ico{width:18px;height:18px}
.r2-panel-head p{margin:0;font-size:13px;line-height:1.55;color:#5d6673;max-width:680px}
.r2-panel-btns{display:flex;gap:6px;flex:0 0 auto}
.r2-panel-btns .r2cms-btn{display:inline-flex;align-items:center;gap:6px}
.r2-panel-btns .r2-ico{width:15px;height:15px}
.r2-report-wait{font-size:13px;color:#5d6673}
.r2-report-sum{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0 12px}
.r2-report-big{display:flex;align-items:baseline;gap:6px;margin-right:8px}
.r2-report-big strong{font-size:24px;color:#1d3f66}
.r2-report-big span{font-size:13px;color:#5d6673}
.r2-report-sum small{margin-left:auto;color:#7a8391;font-size:12px}
.r2-rv{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.r2-rv.is-fresh{background:#e3f5ec;color:#11683f}
.r2-rv.is-mid{background:#fff3d6;color:#7a5200}
.r2-rv.is-old{background:#eef0f3;color:#4c5461}
.r2-rv.is-fail{background:#fde7e7;color:#a12626}
.r2-report-tips{list-style:none;margin:0 0 12px;padding:10px 12px;border-radius:12px;background:#f6f9fd;border:1px solid #e1e9f4}
.r2-report-tips li{display:flex;gap:8px;font-size:13px;line-height:1.5;color:#34404f;padding:3px 0}
.r2-report-tips .r2-ico{flex:0 0 16px;width:16px;height:16px;color:#c07a00;margin-top:2px}
.r2-report-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid #e3e8ef;border-radius:12px}
.r2-report-table{width:100%;border-collapse:collapse;font-size:13px;min-width:620px}
.r2-report-table th{text-align:left;padding:9px 12px;background:#f4f7fb;color:#4c5a6d;font-size:12px;font-weight:700;border-bottom:1px solid #e3e8ef}
.r2-report-table td{padding:9px 12px;border-bottom:1px solid #eef1f5;vertical-align:top;color:#2a323d}
.r2-report-table tr:last-child td{border-bottom:0}
.r2-report-table td small{display:block;margin-top:3px;color:#7a8391;font-size:11.5px;line-height:1.4}
.r2-rv-unit{display:none}
.r2-report-note{margin:10px 0 0;font-size:12px;color:#7a8391}
.r2-papers-form{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.r2-papers-form input{flex:1 1 260px;min-width:0;padding:9px 14px;border:1px solid #cfd9e6;border-radius:999px;font:inherit;font-size:14px;background:#fff;color:#1f2733}
.r2-papers-form select{padding:9px 12px;border:1px solid #cfd9e6;border-radius:999px;font:inherit;font-size:13px;background:#fff;color:#1f2733}
.r2-papers-form .r2cms-btn{display:inline-flex;align-items:center;gap:6px}
.r2-papers-form .r2-ico{width:15px;height:15px}
.r2-papers-list{margin:0;padding-left:22px;display:grid;gap:12px}
.r2-papers-list li{padding-left:4px}
.r2-papers-title{font-weight:700;color:#1d3f66;text-decoration:none;line-height:1.45}
.r2-papers-title:hover{text-decoration:underline}
.r2-papers-venue{font-style:italic}
.r2-papers-links{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:6px;font-size:12.5px}
.r2-papers-links a{color:#2f63b5;font-weight:600;text-decoration:none}
.r2-papers-links a:hover{text-decoration:underline}
.r2-papers-links .r2-ideas-actions{margin-left:auto}
html.r2-dark .r2-ideas-panel{background:#16191e;border-color:#2a2f37;box-shadow:none}
html.r2-dark .r2-panel-head h3,html.r2-dark .r2-report-big strong,html.r2-dark .r2-papers-title{color:#dbe7f6}
html.r2-dark .r2-panel-head p,html.r2-dark .r2-report-big span,html.r2-dark .r2-report-wait{color:#a8b0bb}
html.r2-dark .r2-report-tips{background:#1b2029;border-color:#2c3440}
html.r2-dark .r2-report-tips li{color:#d5dbe3}
html.r2-dark .r2-report-scroll{border-color:#2a2f37}
html.r2-dark .r2-report-table th{background:#1c2129;color:#b9c3cf;border-color:#2a2f37}
html.r2-dark .r2-report-table td{color:#e3e7ec;border-color:#23282f}
html.r2-dark .r2-rv.is-fresh{background:#123a28;color:#8fe0b8}
html.r2-dark .r2-rv.is-mid{background:#3a2e10;color:#f2cf7a}
html.r2-dark .r2-rv.is-old{background:#262b33;color:#c3cad4}
html.r2-dark .r2-rv.is-fail{background:#3d1a1a;color:#f3a3a3}
html.r2-dark .r2-papers-form input,html.r2-dark .r2-papers-form select{background:#1b1e24;border-color:#343a44;color:#eef0f3}
html.r2-dark .r2-papers-links a{color:#9cc3ea}
html.r2-dark .r2-ideas-tools .r2cms-btn.alt.is-on{background:#1d2c42;border-color:#9cc3ea;color:#dbe7f6}
@media (max-width:760px){
  .r2-ideas-head{flex-direction:column}
  .r2-ideas-refresh{align-items:stretch;width:100%}
  .r2-ideas-tools{justify-content:stretch}
  .r2-ideas-tools .r2cms-btn{flex:1 1 auto;justify-content:center}
  .r2-ideas-panel{padding:14px}
  .r2-panel-head{flex-direction:column-reverse}
  .r2-panel-btns{align-self:flex-end}
  .r2-papers-links .r2-ideas-actions{margin-left:0}
}

/* ===== Admin editors: Save / Cancel always in reach at the bottom while writing (admin only) ===== */
#r2cms .r2cms-actions:has(> [onclick*="R2CMS.save"]),#r2cms .r2cms-actions:has(> #r2-save-about){
  position:sticky;bottom:0;z-index:30;margin-top:18px;padding:12px 14px;border-radius:14px 14px 0 0;
  background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:1px solid #dde4ee;border-bottom:0;box-shadow:0 -8px 22px rgba(20,40,80,.08)}
html.r2-dark #r2cms .r2cms-actions:has(> [onclick*="R2CMS.save"]),html.r2-dark #r2cms .r2cms-actions:has(> #r2-save-about){background:rgba(22,25,30,.94);border-color:#2a2f37;box-shadow:0 -8px 22px rgba(0,0,0,.35)}
@media (min-width:761px){.r2-ideas-tools{flex-wrap:nowrap}}
#r2cms .r2cms-actions:has(> [onclick*="R2CMS.save"]),#r2cms .r2cms-actions:has(> #r2-save-about){display:flex!important;flex-wrap:nowrap!important;align-items:center;gap:10px}
@media (max-width:760px){
  #r2cms .r2cms-actions:has(> [onclick*="R2CMS.save"]) > .r2cms-btn,#r2cms .r2cms-actions:has(> #r2-save-about) > .r2cms-btn{flex:1 1 auto;justify-content:center;text-align:center;min-width:0;padding-left:12px;padding-right:12px}
  #r2cms .r2cms-actions:has(> [onclick*="R2CMS.save"]) > .r2cms-btn.alt{flex:0 0 auto}
  /* report: one small card per source instead of a wide table */
  .r2-report-scroll{border:0;overflow:visible}
  .r2-report-table{min-width:0}
  .r2-report-table thead{display:none}
  .r2-report-table tr{display:grid;grid-template-columns:1fr auto;grid-template-areas:"name status" "tab count" "date date";gap:3px 10px;padding:10px 12px;border:1px solid #e3e8ef;border-radius:12px;margin-bottom:8px}
  .r2-report-table td{display:block;padding:0;border:0!important}
  .r2-report-table td:nth-child(1){grid-area:name}
  .r2-report-table td:nth-child(2){grid-area:tab}
  .r2-report-table td:nth-child(3){grid-area:status;text-align:right}
  .r2-report-table td:nth-child(4){grid-area:count;text-align:right}
  .r2-report-table td:nth-child(5){grid-area:date}
  .r2-report-table td:nth-child(2),.r2-report-table td:nth-child(4),.r2-report-table td:nth-child(5){font-size:12px;color:#6a7380}
  .r2-rv-unit{display:inline}
  html.r2-dark .r2-report-table tr{border-color:#2a2f37}
  html.r2-dark .r2-report-table td:nth-child(n+2):not(:nth-child(3)){color:#a8b0bb}
}
@media (max-width:760px){#r2cms .r2cms-actions:has(> [onclick*="R2CMS.save"]) > .r2cms-btn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}

/* ===== Editors: "Find related papers" button + its search window ===== */
#r2cms .r2-papers-btn{display:inline-flex;align-items:center;gap:8px;border:1px solid #2f63b5;border-radius:999px;padding:8px 15px;background:#fff;color:#1d4b85;font:600 13.5px var(--t-font,system-ui);cursor:pointer}
#r2cms .r2-papers-btn svg{width:17px;height:17px}
#r2cms .r2-papers-btn:hover{background:#eef4fc}
html.r2-dark #r2cms .r2-papers-btn{background:#16202e;border-color:#9cc3ea;color:#dbe7f6}
.r2pp-form{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}
.r2pp-form .r2pp-q{flex:1 1 260px;min-width:0;padding:9px 14px;border:1px solid #cfd9e6;border-radius:999px;font:inherit;font-size:14px;background:#fff;color:#1f2733}
.r2pp-form select{padding:9px 12px;border:1px solid #cfd9e6;border-radius:999px;font:inherit;font-size:13px;background:#fff;color:#1f2733}
html.r2-dark .r2pp-form .r2pp-q,html.r2-dark .r2pp-form select{background:#1b1e24;border-color:#343a44;color:#eef0f3}
@media (max-width:600px){#r2cms .r2-assist-bar > button{flex:1 1 auto;justify-content:center}.r2pp-form select{flex:1 1 40%}}

/* ===== Writing Ideas: "is it really up to date?" bar + a freshness chip on every column ===== */
.r2-health{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;margin:0 0 14px;padding:12px 16px;border-radius:14px;border:1px solid #d9e2ee;background:#fff}
.r2-health:empty{display:none}
.r2-health.is-ok{border-color:#bfe5d1;background:#f2fbf6}
.r2-health.is-mid{border-color:#f1dca6;background:#fffaf0}
.r2-health.is-fail{border-color:#f3c4c4;background:#fff5f5}
.r2-health-row{display:flex;gap:10px;align-items:flex-start;flex:1 1 280px;min-width:0}
.r2-health-row strong{display:block;font-size:14px;color:#1f2733}
.r2-health-row span{display:block;font-size:12.5px;line-height:1.5;color:#5d6673}
.r2-health-dot{flex:0 0 12px;width:12px;height:12px;border-radius:50%;margin-top:4px;background:#9aa4b2}
.r2-health-dot.is-ok{background:#1a9c5b;box-shadow:0 0 0 4px rgba(26,156,91,.15)}
.r2-health-dot.is-mid{background:#d99a00;box-shadow:0 0 0 4px rgba(217,154,0,.15)}
.r2-health-dot.is-fail{background:#d33b3b;box-shadow:0 0 0 4px rgba(211,59,59,.15)}
.r2-health-dot.is-run{background:#2f63b5;animation:r2HealthPulse 1.2s ease-in-out infinite}
@keyframes r2HealthPulse{50%{opacity:.35}}
.r2-health > .r2cms-btn{display:inline-flex;align-items:center;gap:6px;margin-left:auto}
.r2-health > .r2cms-btn .r2-ico{width:15px;height:15px}
.r2-ideas-col h3{flex-wrap:wrap}
.r2-col-fresh{margin-left:auto;font-size:11px!important;padding:2px 8px!important;font-weight:700}
html.r2-dark .r2-health{background:#16191e;border-color:#2a2f37}
html.r2-dark .r2-health.is-ok{background:#11241b;border-color:#1f4a35}
html.r2-dark .r2-health.is-mid{background:#261f0e;border-color:#4d3d12}
html.r2-dark .r2-health.is-fail{background:#2a1515;border-color:#5a2626}
html.r2-dark .r2-health-row strong{color:#eef0f3}
html.r2-dark .r2-health-row span{color:#a8b0bb}
@media (max-width:760px){.r2-health > .r2cms-btn{width:100%;justify-content:center;margin-left:0}}
.r2pp-form select,.r2x .r2pp-form select{width:auto!important;flex:0 0 auto}
.r2pp-form .r2pp-go{flex:0 0 auto}
.r2pp-form .r2pp-q{width:auto!important}
@media (max-width:600px){.r2pp-form select,.r2x .r2pp-form select{flex:1 1 40%}.r2pp-form .r2pp-go{flex:1 1 100%}}

/* ===== Admin: Highlights ("Sorotan") — what you missed while away ===== */
#r2cms .r2-dg-btn{position:relative;display:inline-flex;align-items:center;gap:7px}
#r2cms .r2-dg-btn .r2-ico{width:17px;height:17px}
#r2cms .r2-dg-btn.has-new .r2-ico{color:#c2410c;animation:r2Bell 2.4s ease-in-out 1s 2}
@keyframes r2Bell{0%,100%{transform:rotate(0)}10%{transform:rotate(14deg)}20%{transform:rotate(-12deg)}30%{transform:rotate(8deg)}40%{transform:rotate(0)}}
#r2cms .r2-dg-badge{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#d9480f;color:#fff;font-size:11.5px;font-weight:700;display:inline-grid;place-items:center}
#r2cms .r2-dg-badge[hidden]{display:none}
.r2-dg{margin:0 0 22px;padding:18px 20px;border-radius:18px;border:1px solid #f0d9c4;background:linear-gradient(135deg,#fff8f1,#f3f7ff);box-shadow:0 10px 30px -18px rgba(120,70,20,.35);animation:r2PanelIn .25s ease both}
.r2-dg[hidden]{display:none}
.r2-dg-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:12px}
.r2-dg-head h3{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:18px;color:#7a2e0b}
.r2-dg-head h3 .r2-ico{width:20px;height:20px;color:#d9480f}
.r2-dg-head p{margin:0;font-size:13px;line-height:1.55;color:#5d6673;max-width:720px}
.r2-dg-btns{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.r2-dg-btns .r2cms-btn{display:inline-flex;align-items:center;gap:6px}
.r2-dg-btns .r2-ico{width:15px;height:15px}
.r2-dg-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.r2-dg-list>li{display:flex;gap:12px;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.85);border:1px solid #e7e2da}
.r2-dg-list>li.is-new{border-color:#f2b48a;background:#fff}
.r2-dg-rank{flex:0 0 30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#1d4b85;color:#fff;font-weight:800;font-size:14px}
.r2-dg-list>li:first-child .r2-dg-rank{background:#d9480f}
.r2-dg-body{min-width:0;flex:1}
.r2-dg-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:4px}
.r2-dg-theme{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;background:#fde6d7;color:#8a3510;font-size:12px;font-weight:700}
.r2-dg-theme .r2-ico{width:13px;height:13px}
.r2-dg-topic{font-size:12px;color:#6a7380;font-weight:600}
.r2-dg-title{display:block;font-weight:700;font-size:15px;line-height:1.45;color:#1d3f66;text-decoration:none}
.r2-dg-title:hover{text-decoration:underline}
.r2-dg-why{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:4px;font-size:12.5px;color:#5d6673}
.r2-dg-why span+span::before{content:"·";margin-right:12px;color:#b0b7c1}
.r2-dg-angle{display:flex;gap:6px;align-items:flex-start;margin:8px 0 0;padding:8px 10px;border-radius:10px;background:#f1f6fd;color:#284869;font-size:13px;line-height:1.5}
.r2-dg-angle .r2-ico{flex:0 0 15px;width:15px;height:15px;margin-top:2px}
.r2-dg-more{margin-top:6px;font-size:12.5px;color:#6a7380}
.r2-dg-more a{color:#2f63b5;text-decoration:none}
.r2-dg-more a:hover{text-decoration:underline}
.r2-dg-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.r2-dg-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;font-size:12px;color:#7a8391}
.r2-dg-foot .r2cms-btn{display:inline-flex;align-items:center;gap:6px}
.r2-dg-foot .r2-ico{width:15px;height:15px}
html.r2-dark .r2-dg{background:linear-gradient(135deg,#221710,#121a28);border-color:#4a3322;box-shadow:none}
html.r2-dark .r2-dg-head h3{color:#ffc9a3}
html.r2-dark .r2-dg-head p,html.r2-dark .r2-dg-why,html.r2-dark .r2-dg-more,html.r2-dark .r2-dg-topic,html.r2-dark .r2-dg-foot{color:#aab3be}
html.r2-dark .r2-dg-list>li{background:rgba(22,25,30,.85);border-color:#2f343c}
html.r2-dark .r2-dg-list>li.is-new{border-color:#8a4a22;background:#1a1d23}
html.r2-dark .r2-dg-title{color:#dbe7f6}
html.r2-dark .r2-dg-theme{background:#4a2610;color:#ffcfae}
html.r2-dark .r2-dg-angle{background:#16233a;color:#c9dcf3}
html.r2-dark .r2-dg-more a{color:#9cc3ea}
html.r2-dark #r2cms .r2-dg-btn.has-new .r2-ico{color:#ffb07a}
@media (max-width:760px){
  .r2-dg{padding:14px}
  .r2-dg-head{flex-direction:column}
  .r2-dg-btns{justify-content:flex-start}
  .r2-dg-list>li{padding:10px}
  .r2-dg-rank{flex-basis:26px;height:26px;font-size:13px}
}

/* ===== Publications: copy BibTeX · Share straight to apps ===== */
.r2-cite-bib-copy{appearance:none;border:1px solid var(--r2-line,#e7e3da);background:#fff;color:var(--r2-ink,#1b1c20);border-radius:999px;padding:9px 16px;font:600 13px/1 'DM Sans',Arial,sans-serif;cursor:pointer}
.r2-cite-bib-copy:hover{border-color:var(--r2-denim,#2f5d8c);color:var(--r2-denim,#2f5d8c)}
.r2-cite-bib-copy.is-done{background:var(--r2-denim,#2f5d8c);border-color:var(--r2-denim,#2f5d8c);color:#fff}
html.r2-dark .r2-cite-bib-copy{background:transparent;color:#e3e2de;border-color:#3a3c40}
.r2-share-row{align-items:center;gap:8px;flex-wrap:wrap}
.r2-share-lbl{font-size:12px;font-weight:700;letter-spacing:.06em;color:var(--r2-muted,#6e7076);margin-right:2px}
.r2-share-to{width:38px;height:38px;display:inline-grid;place-items:center;border-radius:50%;border:1px solid var(--r2-line,#e7e3da);background:#fff;color:var(--r2-ink,#1b1c20);transition:transform .15s ease,border-color .15s ease,color .15s ease}
.r2-share-to svg{width:18px;height:18px}
.r2-share-to:hover{transform:translateY(-2px);border-color:var(--r2-denim,#2f5d8c);color:var(--r2-denim,#2f5d8c)}
.r2-share-to:focus-visible{outline:2px solid var(--r2-denim,#2f5d8c);outline-offset:2px}
html.r2-dark .r2-share-to{background:transparent;border-color:#3a3c40;color:#e3e2de}
html.r2-dark .r2-share-to:hover{border-color:#9cc3ea;color:#9cc3ea}
@media (max-width:560px){.r2-share-row{justify-content:flex-start}}

/* ===== Home: research topic map ===== */
.r2-tmap-sec{padding-top:28px!important}
.r2-tmap{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px 18px;max-width:900px;margin:26px auto 0}
.r2-bubble{--s:120px;width:max(96px,calc(var(--s) * var(--k,1)));height:max(96px,calc(var(--s) * var(--k,1)));flex:0 0 auto;border-radius:50%;border:0;padding:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;color:#fff;text-align:center;
  font:inherit;box-shadow:0 14px 30px -14px rgba(20,40,90,.45),inset 0 -8px 18px rgba(0,0,0,.12),inset 0 8px 16px rgba(255,255,255,.22);transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s ease;animation:r2Float 7s ease-in-out var(--d) infinite}
.r2-bubble strong{font-size:clamp(11.5px,calc(var(--s) * var(--k,1) / 10),15px);line-height:1.2;font-weight:700;overflow-wrap:normal;word-break:normal;hyphens:manual}
.r2-bubble span{font-size:11.5px;opacity:.9;font-weight:600}
.r2-bubble:hover{transform:translateY(-4px) scale(1.05)}
.r2-bubble:focus-visible{outline:3px solid #2f63b5;outline-offset:4px}
.r2-bubble.is-on{transform:scale(1.08);box-shadow:0 0 0 4px #fff,0 0 0 7px currentColor,0 18px 34px -12px rgba(20,40,90,.5)}
.r2-bubble-0{background:radial-gradient(circle at 30% 25%,#6aa8ff,#2f63b5 70%);color:#fff}
.r2-bubble-1{background:radial-gradient(circle at 30% 25%,#ffb38a,#e8622e 70%)}
.r2-bubble-2{background:radial-gradient(circle at 30% 25%,#6fe0b8,#119b6c 70%)}
.r2-bubble-3{background:radial-gradient(circle at 30% 25%,#c9a6ff,#6b46d6 70%)}
.r2-bubble-4{background:radial-gradient(circle at 30% 25%,#ff9fc4,#d9437f 70%)}
.r2-bubble-5{background:radial-gradient(circle at 30% 25%,#7fdbe8,#1590a8 70%)}
.r2-bubble.is-on{color:#1d4b85}
.r2-bubble.is-on strong,.r2-bubble.is-on span{color:#fff}
@keyframes r2Float{0%,100%{translate:0 0}50%{translate:0 -6px}}
@media (prefers-reduced-motion:reduce){.r2-bubble{animation:none}}
.r2-tmap{max-width:calc(var(--per,4) * 172px)}
.r2-bubble.is-on{transform:scale(1.04)}
.r2-tmap-out{--tone:#2f63b5;--tone-soft:#eaf1fb;max-width:1000px;margin:30px auto 0;padding:22px;border-radius:22px;background:#fff;border:1px solid var(--r2-line,#e7e3da);box-shadow:0 18px 40px -26px rgba(20,40,80,.35);animation:r2PanelIn .25s ease both}
.r2-tmap-out[data-tone="1"]{--tone:#e8622e;--tone-soft:#fdeee6}.r2-tmap-out[data-tone="2"]{--tone:#119b6c;--tone-soft:#e3f6ee}
.r2-tmap-out[data-tone="3"]{--tone:#6b46d6;--tone-soft:#efeafd}.r2-tmap-out[data-tone="4"]{--tone:#d9437f;--tone-soft:#fce8f0}.r2-tmap-out[data-tone="5"]{--tone:#1590a8;--tone-soft:#e3f4f7}
.r2-tmap-out[hidden]{display:none}
.r2-tmap-head{display:flex;align-items:center;gap:12px;margin:0 0 18px;padding:0 0 16px;border-bottom:1px solid var(--r2-line,#e7e3da)}
.r2-tmap-dot{flex:0 0 14px;width:14px;height:14px;border-radius:50%;background:var(--tone);box-shadow:0 0 0 5px var(--tone-soft)}
.r2-tmap-head>div{flex:1;min-width:0}
.r2-tmap-head h3{margin:0;font-size:20px;line-height:1.25;color:var(--r2-ink,#1b1c20)}
.r2-tmap-head p{margin:3px 0 0;font-size:13px;color:var(--r2-muted,#6e7076)}
.r2-tmap-close{flex:0 0 auto;appearance:none;width:36px;height:36px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--r2-line,#e7e3da);background:#fff;cursor:pointer;color:var(--r2-ink,#1b1c20);transition:background .15s ease}
.r2-tmap-close svg{width:16px;height:16px}
.r2-tmap-close:hover{background:var(--tone-soft)}
.r2-tmap-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.r2-tmap-card{display:flex;flex-direction:column;padding:14px;border-radius:16px;background:var(--r2-paper,#fbfaf6);border:1px solid var(--r2-line,#ece8df)}
.r2-tmap-card h4{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:13px;font-weight:700;letter-spacing:.02em;text-transform:none;color:var(--r2-ink,#1b1c20)}
.r2-tmap-ic{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:var(--tone-soft);color:var(--tone)}
.r2-tmap-ic svg{width:16px;height:16px}
.r2-tmap-card h4 em{margin-left:auto;font-style:normal;min-width:24px;padding:2px 8px;border-radius:999px;background:#fff;border:1px solid var(--r2-line,#e7e3da);color:var(--r2-ink,#1b1c20);font-size:12px;text-align:center}
.r2-tmap-card ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.r2-tmap-card li a{display:flex;align-items:flex-start;gap:10px;padding:8px 8px;margin:0 -8px;border-radius:10px;text-decoration:none;color:var(--r2-ink,#1b1c20);transition:background .15s ease}
.r2-tmap-card li a:hover{background:#fff;box-shadow:0 1px 0 var(--r2-line,#e7e3da)}
.r2-tmap-card li a:focus-visible{outline:2px solid var(--tone);outline-offset:1px}
.r2-tmap-t{flex:1;min-width:0;font-size:14px;font-weight:600;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.r2-tmap-card li a:hover .r2-tmap-t{color:var(--tone)}
.r2-tmap-y{flex:0 0 auto;margin-top:1px;padding:2px 8px;border-radius:999px;background:var(--tone-soft);color:var(--tone);font-size:11.5px;font-weight:700}
.r2-tmap-all{appearance:none;align-self:flex-start;margin-top:auto;padding:10px 0 0;border:0;background:none;color:var(--tone);font:700 13px/1.3 inherit;cursor:pointer}
.r2-tmap-all:hover{text-decoration:underline}
.r2-tmap-empty{margin:4px 0 0;font-size:13px;color:var(--r2-muted,#6e7076)}
html.r2-dark .r2-tmap-out{background:#14171c;border-color:#2a2f37;box-shadow:none;--tone-soft:rgba(111,160,230,.16)}
html.r2-dark .r2-tmap-out[data-tone="0"]{--tone:#8fb8f0}html.r2-dark .r2-tmap-out[data-tone="1"]{--tone:#ffa779;--tone-soft:rgba(255,167,121,.15)}html.r2-dark .r2-tmap-out[data-tone="2"]{--tone:#5fd3a6;--tone-soft:rgba(95,211,166,.14)}
html.r2-dark .r2-tmap-out[data-tone="3"]{--tone:#b69bff;--tone-soft:rgba(182,155,255,.15)}html.r2-dark .r2-tmap-out[data-tone="4"]{--tone:#ff8fb8;--tone-soft:rgba(255,143,184,.15)}html.r2-dark .r2-tmap-out[data-tone="5"]{--tone:#6fd6e6;--tone-soft:rgba(111,214,230,.14)}
html.r2-dark .r2-tmap-head{border-color:#2a2f37}
html.r2-dark .r2-tmap-head h3,html.r2-dark .r2-tmap-card h4,html.r2-dark .r2-tmap-card li a{color:#eef0f3}
html.r2-dark .r2-tmap-head p,html.r2-dark .r2-tmap-empty{color:#a8b0bb}
html.r2-dark .r2-tmap-close{background:#1b1e24;border-color:#343a44;color:#eef0f3}
html.r2-dark .r2-tmap-card{background:#1a1d23;border-color:#2a2f37}
html.r2-dark .r2-tmap-card h4 em{background:#14171c;border-color:#343a44;color:#eef0f3}
html.r2-dark .r2-tmap-card li a:hover{background:#22262d;box-shadow:none}
@media (max-width:860px){.r2-tmap-cols{grid-template-columns:1fr}.r2-tmap-out{padding:16px}.r2-tmap-card li a{padding:9px 8px}}
html.r2-dark .r2-bubble.is-on{box-shadow:0 0 0 4px #0f1115,0 0 0 7px #9cc3ea}
@media (max-width:600px){.r2-tmap{gap:10px}.r2-bubble{--k:.7}.r2-tmap-out{padding:14px}.r2-tl-yr-more{margin-left:26px}}
/* ===== About: research timeline ===== */
.r2-tl{position:relative;margin-top:6px}
.r2-tl-year{position:relative;display:grid;grid-template-columns:120px 1fr;gap:16px;padding:0 0 18px}
.r2-tl-year::before{content:"";position:absolute;left:7px;top:22px;bottom:0;width:2px;background:linear-gradient(var(--r2-denim,#2f5d8c),rgba(47,93,140,.12))}
.r2-tl-year:last-child::before{display:none}
.r2-tl-mark{position:relative;padding-left:26px}
.r2-tl-mark::before{content:"";position:absolute;left:0;top:5px;width:16px;height:16px;border-radius:50%;background:#fff;border:4px solid var(--r2-denim,#2f5d8c);box-sizing:border-box}
.r2-tl-y{display:block;font-size:20px;font-weight:800;color:var(--r2-ink,#1b1c20);line-height:1.2}
.r2-tl-mark small{display:block;margin-top:2px;font-size:11.5px;color:var(--r2-muted,#6e7076);line-height:1.4}
.r2-tl ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.r2-tl li{padding:10px 12px;border-radius:12px;background:var(--r2-paper,#fbfaf6);border:1px solid var(--r2-line,#e7e3da);border-left:4px solid var(--tl,#2f5d8c)}
.r2-tl li.r2-tl-pub{--tl:#2f63b5}.r2-tl li.r2-tl-project{--tl:#119b6c}.r2-tl li.r2-tl-note{--tl:#e8622e}
.r2-tl-kind{display:block;font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--tl)}
.r2-tl li a{display:block;margin-top:2px;font-weight:600;font-size:14.5px;line-height:1.45;color:var(--r2-ink,#1b1c20);text-decoration:none}
.r2-tl li a:hover{color:var(--r2-denim,#2f5d8c);text-decoration:underline}
.r2-tl li small{display:block;margin-top:2px;font-size:12.5px;color:var(--r2-muted,#6e7076)}
.r2-tl-more{appearance:none;margin-top:4px;border:1px solid var(--r2-line,#e7e3da);background:#fff;border-radius:999px;padding:9px 16px;font:600 13px/1 'DM Sans',Arial,sans-serif;cursor:pointer;color:var(--r2-ink,#1b1c20)}
.r2-tl-more[hidden]{display:none}
html.r2-dark .r2-tl li{background:#16191e;border-color:#2a2f37}
html.r2-dark .r2-tl li.r2-tl-pub{--tl:#8fb8f0}html.r2-dark .r2-tl li.r2-tl-project{--tl:#5fd3a6}html.r2-dark .r2-tl li.r2-tl-note{--tl:#ffa779}
html.r2-dark .r2-tl-y,html.r2-dark .r2-tl li a{color:#eef0f3}
html.r2-dark .r2-tl-mark::before{background:#0f1115;border-color:#9cc3ea}
html.r2-dark .r2-tl-year::before{background:linear-gradient(#9cc3ea,rgba(156,195,234,.1))}
html.r2-dark .r2-tl-more{background:transparent;color:#e3e2de;border-color:#3a3c40}
@media (max-width:640px){.r2-tl-year{grid-template-columns:1fr;gap:8px}.r2-tl-year::before{top:22px}.r2-tl ul{padding-left:26px}}
.r2-tl li{padding:8px 12px}
.r2-tl li a{font-size:14px}
.r2-tl-yr-more{appearance:none;justify-self:start;margin-top:6px;border:0;background:none;padding:2px 0;color:var(--r2-denim,#2f5d8c);font:600 13px/1.3 'DM Sans',Arial,sans-serif;cursor:pointer}
.r2-tl-yr-more:hover{text-decoration:underline}
html.r2-dark .r2-tl-yr-more{color:#9cc3ea}

/* ===== Calmer Home: no duplicate topic chips, the topic map sits under the numbers, less empty space ===== */
.t-home .r2-hero-topics{display:none!important}
.t-hero{padding-bottom:56px!important}
.t-stats-sec{padding-bottom:18px!important}
.r2-tmap-sec{padding:6px 0 76px!important;background:#fff}
html.r2-dark .r2-tmap-sec{background:#000}
.r2-tmap-kicker{display:flex;flex-direction:column;align-items:center;gap:2px;margin:0 auto 4px;text-align:center}
.r2-tmap-kicker span{font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--r2-denim,#2f5d8c)}
.r2-tmap-kicker small{font-size:13px;color:var(--r2-muted,#6e7076)}
html.r2-dark .r2-tmap-kicker span{color:#9cc3ea}
html.r2-dark .r2-tmap-kicker small{color:#a8b0bb}
.r2-tmap{--k:.7;margin-top:16px;gap:10px 14px;max-width:calc(var(--per,4) * 128px)}
.r2-bubble{width:max(80px,calc(var(--s) * var(--k,1)))!important;height:max(80px,calc(var(--s) * var(--k,1)))!important;padding:8px}
.r2-bubble strong{font-size:clamp(11px,calc(var(--s) * var(--k,1) / 9.5),13.5px)}
.r2-bubble span{font-size:10.5px}
.t-sec{padding:84px 0}
@media (max-width:600px){.r2-tmap{--k:.62}.t-sec{padding:64px 0}.r2-tmap-sec{padding-bottom:56px!important}}
/* ===== About: compact research timeline ===== */
.r2-tl-years{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px 2px 4px;margin:4px 0 10px}
.r2-tl-years::-webkit-scrollbar{display:none}
.r2-tl-years button{flex:0 0 auto;appearance:none;display:flex;align-items:baseline;gap:6px;padding:8px 14px;border-radius:999px;border:1px solid var(--r2-line,#e7e3da);background:#fff;cursor:pointer;color:var(--r2-ink,#1b1c20);font:inherit;transition:background .15s ease,border-color .15s ease}
.r2-tl-years button strong{font-size:15px;font-weight:800}
.r2-tl-years button span{font-size:11.5px;font-weight:700;color:var(--r2-muted,#6e7076)}
.r2-tl-years button:hover{border-color:var(--r2-denim,#2f5d8c)}
.r2-tl-years button.is-on{background:var(--r2-denim,#2f5d8c);border-color:var(--r2-denim,#2f5d8c);color:#fff}
.r2-tl-years button.is-on span{color:rgba(255,255,255,.8)}
.r2-tl-years button:focus-visible{outline:2px solid var(--r2-denim,#2f5d8c);outline-offset:2px}
.r2-tl-sum{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px;font-size:12.5px;color:var(--r2-muted,#6e7076)}
.r2-tl-sum i{width:1px;height:12px;background:var(--r2-line,#e7e3da);margin:0 6px}
.r2-tl-dot{display:inline-block;flex:0 0 8px;width:8px;height:8px;border-radius:50%;background:var(--tl,#2f63b5)}
.r2-tl-pub{--tl:#2f63b5}.r2-tl-project{--tl:#119b6c}.r2-tl-note{--tl:#e8622e}
.r2-tl-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--r2-line,#ece8df)}
.r2-tl-list li{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px solid var(--r2-line,#ece8df);background:none!important;border-left:0!important;border-radius:0!important}
.r2-tl-list li a{flex:1;min-width:0;margin:0!important;font-size:14px!important;font-weight:600;color:var(--r2-ink,#1b1c20);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.r2-tl-list li a:hover{color:var(--r2-denim,#2f5d8c);text-decoration:underline}
.r2-tl-list li small{flex:0 0 auto;margin:0!important;font-size:11px!important;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tl)!important}
html.r2-dark .r2-tl-years button{background:transparent;border-color:#3a3c40;color:#eef0f3}
html.r2-dark .r2-tl-years button.is-on{background:#9cc3ea;border-color:#9cc3ea;color:#0a1c36}
html.r2-dark .r2-tl-years button.is-on span{color:#0a1c36}
html.r2-dark .r2-tl-list,html.r2-dark .r2-tl-list li{border-color:#2a2f37}
html.r2-dark .r2-tl-list li a{color:#eef0f3}
html.r2-dark .r2-tl-pub{--tl:#8fb8f0}html.r2-dark .r2-tl-project{--tl:#5fd3a6}html.r2-dark .r2-tl-note{--tl:#ffa779}
@media (max-width:600px){.r2-tl-list li small{display:none}.r2-tl-yr-more{margin-left:0!important}}
html body #home .t-hero .r2-hero-topics,html body #home .r2-hero-topics.t-chips{display:none!important}
.r2-tl .r2-tl-list li{border:0!important;border-bottom:1px solid var(--r2-line,#ece8df)!important;box-shadow:none!important;padding:9px 2px!important}
html.r2-dark .r2-tl .r2-tl-list li{border-bottom-color:#2a2f37!important}
#r2Timeline,#r2Timeline .r2-tl,#r2Timeline .r2-tl-list,#r2Timeline .r2-tl-list li{min-width:0;max-width:100%}
#r2Timeline{overflow:hidden}
#r2Timeline .r2-tl-list{padding-left:0!important}
@media (max-width:600px){#r2Timeline .r2-tl-list li{align-items:flex-start}#r2Timeline .r2-tl-list li .r2-tl-dot{margin-top:7px}#r2Timeline .r2-tl-list li a{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4}}

/* ===== About: research timeline is the third tab of the Experience card ===== */
.r2-career.has-tabs[data-tab="work"] #r2Timeline,.r2-career.has-tabs[data-tab="training"] #r2Timeline,.r2-career.has-tabs[data-tab="timeline"] #r2ExperienceBox,.r2-career.has-tabs[data-tab="timeline"] #r2TrainingBox{display:none!important}
.r2-career-tabs button[hidden]{display:none!important}
.r2-career #r2Timeline{margin-top:0}
@media (max-width:600px){.r2-career.has-tabs .r2-career-tabs{grid-template-columns:repeat(3,1fr)!important}.r2-career-tabs button{font-size:11.5px!important;letter-spacing:.04em!important}}
/* ===== Home: calmer topic bubbles — soft tint, coloured text, no heavy shadow or floating ===== */
.r2-bubble{animation:none!important;box-shadow:none!important;background:var(--bt-soft)!important;color:var(--bt)!important;border:1.5px solid color-mix(in srgb,var(--bt) 28%,transparent)!important}
.r2-bubble strong,.r2-bubble span{color:inherit!important}
.r2-bubble span{opacity:.75}
.r2-bubble:hover{transform:translateY(-2px)!important;border-color:var(--bt)!important}
.r2-bubble.is-on{background:var(--bt)!important;color:#fff!important;border-color:var(--bt)!important;transform:none!important;box-shadow:0 8px 22px -10px var(--bt)!important}
.r2-bubble-0{--bt:#2f63b5;--bt-soft:#eaf1fb}.r2-bubble-1{--bt:#d4541f;--bt-soft:#fdeee6}.r2-bubble-2{--bt:#0f8a60;--bt-soft:#e3f6ee}
.r2-bubble-3{--bt:#5b3cc4;--bt-soft:#efeafd}.r2-bubble-4{--bt:#c2376f;--bt-soft:#fce8f0}.r2-bubble-5{--bt:#12788d;--bt-soft:#e3f4f7}
html.r2-dark .r2-bubble-0{--bt:#8fb8f0;--bt-soft:rgba(143,184,240,.1)}html.r2-dark .r2-bubble-1{--bt:#ffa779;--bt-soft:rgba(255,167,121,.1)}html.r2-dark .r2-bubble-2{--bt:#5fd3a6;--bt-soft:rgba(95,211,166,.1)}
html.r2-dark .r2-bubble-3{--bt:#b69bff;--bt-soft:rgba(182,155,255,.1)}html.r2-dark .r2-bubble-4{--bt:#ff8fb8;--bt-soft:rgba(255,143,184,.1)}html.r2-dark .r2-bubble-5{--bt:#6fd6e6;--bt-soft:rgba(111,214,230,.1)}
html.r2-dark .r2-bubble.is-on{color:#0b0d10!important}

/* ===== Home hero: no buttons, a smaller calm opening line ===== */
html body .t-home h1.t-h1-calm#tHeroLine{font-size:clamp(17px,1.65vw,22px)!important;line-height:1.6!important;letter-spacing:-.01em!important}
.t-hero{padding-top:96px!important;padding-bottom:40px!important}
@media (max-width:640px){html body .t-home h1.t-h1-calm#tHeroLine{font-size:16.5px!important}.t-hero{padding-top:78px!important;padding-bottom:28px!important}}
/* ===== Topic bubbles: gentle shine + twinkling stars (still calm) ===== */
.r2-tmap{position:relative}
.r2-bubble{position:relative;overflow:hidden;isolation:isolate}
.r2-bubble>strong,.r2-bubble>span{position:relative;z-index:1}
.r2-bub-sheen{position:absolute;inset:-30%;z-index:0;pointer-events:none;background:linear-gradient(115deg,transparent 38%,rgba(255,255,255,.75) 50%,transparent 62%);transform:translateX(-130%);animation:r2BubSheen 9s ease-in-out infinite;animation-delay:var(--d2,0s)}
html.r2-dark .r2-bub-sheen{background:linear-gradient(115deg,transparent 38%,rgba(255,255,255,.22) 50%,transparent 62%)}
.r2-bubble:hover .r2-bub-sheen{animation-duration:1.1s;animation-delay:0s;animation-iteration-count:1}
@keyframes r2BubSheen{0%,78%{transform:translateX(-130%)}94%,100%{transform:translateX(130%)}}
.r2-bubble{box-shadow:0 0 0 0 transparent,0 10px 26px -18px var(--bt)!important}
.r2-bubble:hover{box-shadow:0 0 22px -4px color-mix(in srgb,var(--bt) 45%,transparent)!important}
.r2-tmap-stars{position:absolute;inset:0;pointer-events:none}
.r2-tst{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;opacity:0;animation:tTwinkle 4.2s ease-in-out infinite}
.r2-tst svg{display:block;width:100%;height:100%;fill:currentColor}
.r2-tst-a{color:#f5b93b}.r2-tst-b{color:#8f7cff}.r2-tst-c{color:#ff8ab4}
.r2-tst:nth-child(2n){width:8px;height:8px;margin:-4px 0 0 -4px}
html.r2-dark .r2-tst-a{color:#ffd27a}html.r2-dark .r2-tst-b{color:#b3a6ff}html.r2-dark .r2-tst-c{color:#ffa6c9}
@media (prefers-reduced-motion:reduce){.r2-bub-sheen,.r2-tst{animation:none!important;opacity:0}}
/* the numbers are the way into each page now: a small arrow appears on hover */
#tStats .t-stat{cursor:pointer}
#tStats .t-stat>span::after{content:" ›";display:inline-block;margin-left:2px;opacity:0;transform:translateX(-4px);transition:opacity .2s ease,transform .2s ease}
#tStats .t-stat:hover>span::after,#tStats .t-stat:focus-visible>span::after{opacity:1;transform:none}
/* smaller, calmer numbers */
html body #tStats .t-stat strong{font-size:clamp(38px,4.6vw,64px)!important;letter-spacing:-.04em!important}
html body #tStats .t-stat>span{font-size:14px!important;margin-top:8px!important;padding-top:10px!important}
html body #tStats .t-stats{max-width:720px!important}
@media (max-width:640px){html body #tStats .t-stat strong{font-size:38px!important}html body #tStats .t-stat>span{font-size:12.5px!important}}
html body #tStats .t-halo{width:120px!important;height:96px!important;margin:-48px 0 0 -60px!important;top:36%!important}
@media (max-width:640px){html body #tStats .t-halo{width:90px!important;height:72px!important;margin:-36px 0 0 -45px!important}}

/* ===== Polish: calmer headings, lighter "in progress" block, even cards, one-row filters ===== */
/* 1. section titles in the same calm scale as the opening line */
html body .t-home h2{font-size:clamp(26px,2.9vw,36px)!important;letter-spacing:-.025em!important}
html body .t-home .t-sub{font-size:15px!important}
/* 2. research in progress: a rounded dark card instead of a full-width black band */
html body .t-home #r2Ongoing.t-night{background:transparent!important;color:inherit;border:0!important;padding:28px 0 36px!important}
html body .t-home #r2Ongoing>.t-wrap{max-width:980px;margin:0 auto;padding:44px 40px 40px;border-radius:28px;background:#0e0f12;color:#f5f5f7;box-shadow:0 30px 60px -40px rgba(10,20,40,.55)}
html body .t-home #r2Ongoing>.t-wrap h2{color:#fff!important}
html body .t-home #r2Ongoing>.t-wrap .t-sub{color:#a9adb5!important}
html body .t-home #r2Ongoing .t-og{margin-top:28px!important;background:#18191d!important}
html.r2-dark body .t-home #r2Ongoing>.t-wrap{background:#131418;border:1px solid #23252b;box-shadow:none}
@media (max-width:640px){html body .t-home #r2Ongoing>.t-wrap{margin:0 12px;padding:30px 16px 18px;border-radius:22px}}
/* 5. card pictures: same height, clean white, whole picture visible */
html body .r2-latest-media{aspect-ratio:16/10!important;background:#fff!important;border:0!important;border-bottom:1px solid var(--line,#eceae6)!important;display:flex;align-items:center;justify-content:center}
html body .r2-latest-media img{object-fit:contain!important;padding:12px;background:#fff}
html body .r2-note-cover{aspect-ratio:16/9!important;background:#fff!important;display:flex;align-items:center;justify-content:center}
html body .r2-note-cover img{object-fit:contain!important;padding:10px;background:#fff}
html.r2-dark body .r2-latest-media,html.r2-dark body .r2-note-cover{background:#fff!important;border-color:#1d1e21!important}
/* 3. research notes: in "All", one even 3-column grid; shorter cards */
html body .r2-note-type-section.is-all{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:stretch}
html body .r2-note-type-section.is-all>*:not(.r2-public-topic-group){grid-column:1/-1}
html body .r2-note-type-section.is-all>.r2-public-topic-group{display:contents!important}
html body .r2-note-type-section.is-all .r2-public-topic-heading{display:none!important}
html body .r2-note-type-section.is-all .r2-public-note-card{position:relative;margin:0!important;width:auto!important}
html body .r2-note-type-section.is-all .r2-public-note-card::before{content:attr(data-topic-label);position:absolute;top:12px;left:12px;z-index:2;padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.92);color:#1d4b85;font:700 11px/1.2 'DM Sans',Arial,sans-serif;box-shadow:0 2px 8px rgba(0,0,0,.08);pointer-events:none}
html.r2-dark body .r2-note-type-section.is-all .r2-public-note-card::before{background:rgba(20,22,26,.9);color:#9cc3ea}
html body .r2-public-note-card .note-card-inner>p{display:-webkit-box!important;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
html body .r2-public-note-card .r2-note-tags span:nth-child(n+4){display:none}
html body .r2-public-note-card{display:flex;flex-direction:column}
html body .r2-public-note-card .note-card-inner{flex:1;display:flex;flex-direction:column}
html body .r2-public-note-card .r2-note-read{margin-top:auto}
@media (max-width:980px){html body .r2-note-type-section.is-all{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){html body .r2-note-type-section.is-all{grid-template-columns:1fr}}
/* 4. publications: year + type in one tidy row */
.publication-filter{display:flex!important;flex-wrap:wrap;align-items:center;gap:10px 14px}
.publication-filter .r2-pub-cats{margin:0!important;display:flex;flex-wrap:wrap;gap:6px}
#applyPublicationFilter,#applyProjectFilter{display:none!important}
/* 6. project label: one line */
.r2-dynamic-project .project-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html body #r2LatestGrid .r2-latest-card .r2-latest-media{aspect-ratio:16/10!important;background:#fff!important;border:0!important;border-bottom:1px solid #eeece8!important}
html body #r2LatestGrid .r2-latest-card .r2-latest-media img{object-fit:contain!important;padding:14px!important;background:#fff!important}
html.r2-dark body #r2LatestGrid .r2-latest-card .r2-latest-media{border-bottom-color:#1d1e21!important}
html body .t-home #r2Ongoing.t-night{background:#fff!important}
html.r2-dark body .t-home #r2Ongoing.t-night{background:#000!important}
html body .t-home #r2Ongoing .t-og,html body .t-home #r2Ongoing .t-og .r2-og-row{background:#18191d!important;box-shadow:none!important}
html body .t-home #r2Ongoing .t-og .r2-og-row{border-top-color:rgba(255,255,255,.08)!important}
html body .t-home #r2Ongoing .t-og .r2-og-main h3{color:#fff!important}
html body .t-home #r2Ongoing .t-og .r2-og-main p,html body .t-home #r2Ongoing .t-og .r2-og-year{color:#a9adb5!important}
html.r2-dark body .t-home #r2Ongoing .t-og .r2-og-row .r2-og-main h3,html:not(.r2-dark) body .t-home #r2Ongoing .t-og .r2-og-row .r2-og-main h3{color:#fff!important;-webkit-text-fill-color:#fff!important}
html.r2-dark body .t-home #r2Ongoing .t-og .r2-og-row .r2-og-main p,html:not(.r2-dark) body .t-home #r2Ongoing .t-og .r2-og-row .r2-og-main p{color:#a9adb5!important}

/* ===== Publications filter chips (now inside the year bar): readable in both themes ===== */
html body .publication-filter .r2-pub-cats button{appearance:none!important;background:transparent!important;border:1px solid #e4e2dd!important;color:#5d6068!important;border-radius:999px!important;padding:9px 16px!important;font:600 13px/1 'DM Sans',Arial,sans-serif!important;box-shadow:none!important;min-height:0!important;height:auto!important}
html body .publication-filter .r2-pub-cats button:hover{border-color:#2f5d8c!important;color:#2f5d8c!important}
html body .publication-filter .r2-pub-cats button.active{background:#2f5d8c!important;border-color:#2f5d8c!important;color:#fff!important}
html.r2-dark body .publication-filter .r2-pub-cats button{border-color:#34373d!important;color:#d5d7db!important;background:transparent!important}
html.r2-dark body .publication-filter .r2-pub-cats button:hover{border-color:#9cc3ea!important;color:#9cc3ea!important}
html.r2-dark body .publication-filter .r2-pub-cats button.active{background:#9cc3ea!important;border-color:#9cc3ea!important;color:#0b1a2e!important}

/* ===== Research in progress: black card in light mode, white card in dark mode ===== */
html.r2-dark body .t-home #r2Ongoing>.t-wrap{background:#f4f4f6!important;border:0!important;box-shadow:0 30px 60px -40px rgba(0,0,0,.8)!important}
html.r2-dark body .t-home #r2Ongoing>.t-wrap h2{color:#111214!important}
html.r2-dark body .t-home #r2Ongoing>.t-wrap .t-sub{color:#5d6068!important}
html.r2-dark body .t-home #r2Ongoing .t-og,html.r2-dark body .t-home #r2Ongoing .t-og .r2-og-row{background:#fff!important}
html.r2-dark body .t-home #r2Ongoing .t-og{box-shadow:0 1px 2px rgba(0,0,0,.06),0 10px 30px -18px rgba(0,0,0,.3)!important}
html.r2-dark body .t-home #r2Ongoing .t-og .r2-og-row{border-top-color:#ecebe8!important}
html.r2-dark body .t-home #r2Ongoing .t-og .r2-og-row .r2-og-main h3{color:#1d1d1f!important;-webkit-text-fill-color:#1d1d1f!important}
html.r2-dark body .t-home #r2Ongoing .t-og .r2-og-row .r2-og-main p,html.r2-dark body .t-home #r2Ongoing .t-og .r2-og-year{color:#5d6068!important}
html body .t-home #r2Ongoing .r2-og-main h3{opacity:1!important;filter:none!important}

/* ===== Calmer top of Home ===== */
html body .t-hero-bg{opacity:.45}
html.r2-dark body .t-hero-bg{opacity:.55}
html body #tStats .t-st2,html body #tStats .t-st3{display:none!important}
html body #tStats .t-halo{opacity:.55!important}
html body .r2-tmap-stars{display:none!important}
html body .r2-bub-sheen{animation-duration:12s!important}

/* ===== Final touches ===== */
/* phones: menu row leaves room for the mascot, which sits on a soft fade of the header colour */
@media (max-width:900px){
  header.top.t-gj-endrow #r2-main-nav{padding-right:var(--gjw,64px)!important;scroll-padding-right:var(--gjw,64px)}
  header.top.t-gj-endrow .t-giraffe{z-index:3}
  header.top.t-gj-endrow .t-giraffe::before{content:"";position:absolute;right:-8px;top:-6px;bottom:-4px;left:-22px;z-index:-1;pointer-events:none;background:linear-gradient(90deg,rgba(251,250,246,0),#fbfaf6 42%)}
  html.r2-dark header.top.t-gj-endrow .t-giraffe::before{background:linear-gradient(90deg,rgba(21,22,24,0),#151618 42%)}
}
/* page titles in the same calm scale as Home */
html body #publications .pub-head h2,html body #research-notes .notes-head h2,html body #projects .projects-head h2{font-size:clamp(30px,3.6vw,46px)!important;line-height:1.1!important;letter-spacing:-.03em!important}
/* note cards: the info line stays on one line */
html body .r2-public-note-card .note-meta{flex-wrap:wrap;row-gap:6px}
html body .r2-public-note-card .r2-note-readtime{white-space:nowrap}
/* older iPhones (Safari < 16.2) without color-mix(): simple borders and glow instead */
@supports not (color: color-mix(in srgb, red 50%, blue)){
  html body .r2-bubble{border:1.5px solid rgba(47,99,181,.25)!important}
  html body .r2-bubble:hover{box-shadow:0 0 18px -6px rgba(47,99,181,.45)!important}
}
/* shared link to one item: the page waits (hidden) until the item has opened */
html.r2-dl-wait :is(#home-slot,#publications-slot,#research-notes-slot,#projects-slot,#about-slot){visibility:hidden}
html.r2-dl-wait body::after{content:"";position:fixed;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:2.5px solid rgba(47,99,181,.2);border-top-color:#2f63b5;animation:r2Spin .8s linear infinite;z-index:5}
@keyframes r2Spin{to{transform:rotate(360deg)}}

/* =====================================================================
   HOME v2 — personal research lab: calm, left-aligned, charcoal (dark) / soft white (light),
   blue–cyan accents, few tiny stars, thin orbit lines, no glow, no moving decorations
   ===================================================================== */
:root{--h2-bg:#fbfbfd;--h2-card:#ffffff;--h2-line:#e6e8ee;--h2-line2:#cfd6e2;--h2-ink:#101318;--h2-muted:#5b6472;--h2-acc:#0e7490;--h2-acc2:#2563eb;--h2-soft:rgba(14,116,144,.08);--h2-star:#7fb4d9}
html.r2-dark{--h2-bg:#0b0c0f;--h2-card:#121419;--h2-line:rgba(255,255,255,.08);--h2-line2:rgba(255,255,255,.18);--h2-ink:#eef1f5;--h2-muted:#9aa3b1;--h2-acc:#5ad1e6;--h2-acc2:#7cb3ff;--h2-soft:rgba(90,209,230,.08);--h2-star:#cfe6ff}
/* one quiet background for Home */
html body #home .t-hero,html body #home #tStats,html body #home #r2TopicMap{background:var(--h2-bg)!important}
html.r2-dark body #home #latest,html.r2-dark body #home #r2Ongoing.t-night{background:var(--h2-bg)!important}
html body #home .t-hero-bg{color:var(--h2-acc2);opacity:.5}
html.r2-dark body #home .t-hero-bg{opacity:.4}
/* shared container: everything starts on the same left line */
html body #home .r2-hero-wrap,html body #home #tStats>.t-wrap,html body #home #r2TopicMap>.t-wrap{max-width:1040px!important;margin:0 auto!important;padding-left:28px!important;padding-right:28px!important;text-align:left!important}
/* hero: left, plain (no justify), not too wide */
html body #home .t-hero{position:relative;padding:92px 0 36px!important;text-align:left}
html body #home.t-home h1#tHeroLine.t-h1-calm{max-width:34ch!important;margin:0!important;text-align:left!important;text-align-last:auto!important;font-size:clamp(19px,2.1vw,27px)!important;line-height:1.55!important;letter-spacing:-.012em!important;font-weight:400!important;color:var(--h2-muted)!important;word-spacing:normal!important}
html body #home.t-home h1#tHeroLine.t-h1-calm em{font-style:normal!important;font-weight:600!important;background:linear-gradient(90deg,var(--h2-acc2),var(--h2-acc))!important;-webkit-background-clip:text!important;background-clip:text!important;-webkit-text-fill-color:transparent!important;color:var(--h2-acc2)!important}
/* numbers: colourful digits (kept), nothing around them, thin dividers, whole block clickable */
html body #home #tStats{padding:18px 0 26px!important}
html body #home #tStats .t-stats{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:0!important;margin:0 auto!important;border-top:1px solid var(--h2-line);border-bottom:1px solid var(--h2-line)}
html body #home #tStats .t-stat{padding:22px 10px 20px!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;transform-origin:center;-webkit-tap-highlight-color:transparent;transition:background .2s ease}
html body #home #tStats .t-stat+.t-stat{border-left:1px solid var(--h2-line)}
html body #home #tStats .t-stat:hover{background:var(--h2-soft)!important}
html body #home #tStats .t-stat:focus-visible{outline:2px solid var(--h2-acc);outline-offset:-2px}







html body #home #tStats .t-stat>span{font-size:13.5px!important;color:var(--h2-muted)!important;padding-top:6px!important;margin-top:4px!important}
html body #home #tStats .t-stat>span::before{display:none!important}

/* topics: heading + cards (2 columns, 1 on small screens) */
html body #home #r2TopicMap{padding:34px 0 64px!important;position:relative}
html body #home #r2TopicMap>.t-wrap{position:relative}
.r2-tmap-head2{margin:0 0 16px}
html body #home .r2-tmap-head2 h2{margin:0!important;font-size:12px!important;font-weight:800!important;letter-spacing:.18em!important;text-transform:uppercase;color:var(--h2-acc)!important;line-height:1.4!important}
.r2-tmap-head2 p{margin:4px 0 0;font-size:14px;color:var(--h2-muted)}
.r2-tcards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.r2-tcard{position:relative;overflow:hidden;display:flex;align-items:center;gap:14px;width:100%;min-height:68px;padding:14px 16px;border-radius:14px;border:1px solid var(--h2-line);background:var(--h2-card);color:var(--h2-ink);font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .2s ease,background .2s ease}
.r2-tcard::before{content:"";position:absolute;right:-38px;bottom:-54px;width:130px;height:130px;border-radius:50%;border:1px solid var(--h2-line);pointer-events:none}
.r2-tcard-ic{flex:0 0 36px;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--h2-soft);color:var(--h2-acc)}
.r2-tcard-ic svg{width:19px;height:19px}
.r2-tcard-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.r2-tcard-txt strong{font-size:15px;font-weight:650;line-height:1.3;color:var(--h2-ink);overflow-wrap:anywhere}
.r2-tcard-txt small{font-size:12.5px;color:var(--h2-muted)}
.r2-tcard-chev{flex:0 0 18px;width:18px;height:18px;color:var(--h2-muted);transition:transform .2s ease,color .2s ease}
@media (hover:hover){.r2-tcard:hover{border-color:var(--h2-line2)}.r2-tcard:hover .r2-tcard-chev{transform:translateX(2px);color:var(--h2-acc)}}
.r2-tcard:active{border-color:var(--h2-acc)}
.r2-tcard:focus-visible{outline:2px solid var(--h2-acc);outline-offset:2px}
.r2-tcard.is-on{border-color:var(--h2-acc);background:linear-gradient(0deg,var(--h2-soft),var(--h2-soft)),var(--h2-card)}
.r2-tcard.is-on .r2-tcard-chev{transform:rotate(90deg);color:var(--h2-acc)}
@media (max-width:620px){.r2-tcards{grid-template-columns:1fr;gap:10px}}
/* the list that opens under the cards: same calm palette */
html body #home .r2-tmap-out{max-width:none!important;margin-top:16px!important;background:var(--h2-card)!important;border:1px solid var(--h2-line)!important;box-shadow:none!important}
.r2-tmap-out[data-tone="c"]{--tone:#0e7490;--tone-soft:rgba(14,116,144,.08)}
html.r2-dark .r2-tmap-out[data-tone="c"]{--tone:#5ad1e6;--tone-soft:rgba(90,209,230,.1)}
html.r2-dark body #home .r2-tmap-card{background:#171a20!important;border-color:rgba(255,255,255,.06)!important}
/* stars: few, tiny, slow */
.r2-sky{position:absolute;inset:0;pointer-events:none;z-index:0}
.r2-sky b{position:absolute;width:var(--sz,6px);height:var(--sz,6px);color:var(--h2-star);opacity:.25;animation:r2Twinkle 4.2s ease-in-out infinite;animation-delay:var(--dl,0s)}
.r2-sky b svg{display:block;width:100%;height:100%;fill:currentColor}
@keyframes r2Twinkle{0%,100%{opacity:.2;transform:scale(.8)}50%{opacity:.85;transform:scale(1)}}
html body #home .r2-hero-wrap{position:relative;z-index:1}
/* no leftovers from the bubble version */
html body #home .r2-bubble,html body #home .r2-tmap-stars,html body #home .r2-bub-sheen{display:none!important}
/* ---------- navbar: clean, cyan underline, gentle hover ---------- */
html body #r2-main-nav a{position:relative;background:transparent!important;box-shadow:none!important;border-color:transparent!important;opacity:.78;transition:opacity .2s ease,color .2s ease}
html body #r2-main-nav a:hover,html body #r2-main-nav a.active{opacity:1}
html body #r2-main-nav a::after{content:""!important;position:absolute!important;left:12px!important;right:12px!important;bottom:4px!important;height:2px!important;border-radius:2px!important;background:linear-gradient(90deg,var(--h2-acc2),var(--h2-acc))!important;animation:none!important;transform:scaleX(0);transform-origin:left;transition:transform .28s ease!important;opacity:1!important}
html body #r2-main-nav a:hover::after,html body #r2-main-nav a.active::after{transform:scaleX(1)}
/* the old moving sheens over the logo and buttons are off; the logo gets two tiny twinkles */
html body .t-sheen{display:none!important}
.top .brand{position:relative}
.t-logo-stars{position:absolute;right:-10px;top:-2px;width:18px;height:22px;pointer-events:none}
.t-logo-stars b{position:absolute;display:block;color:var(--h2-star);opacity:.3;animation:r2Twinkle 2.8s ease-in-out infinite}
.t-logo-stars b svg{display:block;width:100%;height:100%;fill:currentColor}
.t-logo-stars b:first-child{right:0;top:0;width:7px;height:7px}
.t-logo-stars b:last-child{right:8px;top:13px;width:4px;height:4px;animation-delay:1.4s;animation-duration:3.3s}
html:not(.r2-dark) .t-logo-stars b{color:#5aa0d6}
/* only three tiny stars in the menu bar, slow */


/* ---------- phones ---------- */
@media (max-width:640px){
  html body #home .r2-hero-wrap,html body #home #tStats>.t-wrap,html body #home #r2TopicMap>.t-wrap{padding-left:18px!important;padding-right:18px!important}
  html body #home .t-hero{padding:70px 0 24px!important}
  html body #home.t-home h1#tHeroLine.t-h1-calm{font-size:17.5px!important;line-height:1.6!important;max-width:none!important}
  html body #home #tStats .t-stat{padding:16px 4px 14px!important}
  html body #home #tStats .t-stat>span{font-size:12px!important}
  html body #home #r2TopicMap{padding:24px 0 44px!important}
  .r2-tcard{min-height:60px;padding:12px 14px}
}
@media (prefers-reduced-motion:reduce){.r2-sky b,.t-logo-stars b{animation:none!important;opacity:.4}}

/* ===== code blocks keep their own colours: changing a paragraph/section colour never recolours code ===== */
.poster-board pre.poster-code,.poster-board pre.poster-code *{color:#e2e8f0!important;-webkit-text-fill-color:#e2e8f0!important}
.poster-board pre.poster-code{background:#172238!important}
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content,[contenteditable="true"]) pre,
:is(.r2-rich-content,.r2-note-modal-body,.r2-publication-dialog,.r2-project-dialog,.r2-rich-public,.r2-preview-content,[contenteditable="true"]) pre *{color:#e2e8f0!important;-webkit-text-fill-color:#e2e8f0!important}
:is(.r2-rich-content,.r2-note-modal-body,.r2-rich-public,.r2-preview-content,[contenteditable="true"]) pre :is(font,span){background:transparent!important}

/* numbers: no pseudo-element sparkles around them */

/* the stats line up with the text above (padding is inside the lines) */
html body #home #tStats>.t-wrap.t-stats{max-width:984px!important;padding-left:0!important;padding-right:0!important}
@media (max-width:1030px){html body #home #tStats>.t-wrap.t-stats{margin:0 28px!important}}
@media (max-width:640px){html body #home #tStats>.t-wrap.t-stats{margin:0 18px!important}}
/* phone menu: no boxed pill, just the cyan underline */
@media (max-width:900px){html body #r2-main-nav a.active,html.r2-dark body #r2-main-nav a.active{background:transparent!important;border:1px solid transparent!important;box-shadow:none!important}}


/* =====================================================================
   HOME v3 — exactly like the reference picture: deep navy night, planet + orbit top right,
   white/blue sparkles, glowing card icons; colourful twinkling numbers, navbar and logo
   ===================================================================== */
html.r2-dark{--h2-bg:#070c14;--h2-card:rgba(16,26,43,.78);--h2-line:rgba(120,160,220,.16);--h2-line2:rgba(140,180,240,.34);--h2-ink:#f1f5fb;--h2-muted:#a3b0c2;--h2-acc:#5ad1e6;--h2-acc2:#4aa3ff;--h2-star:#e3efff}
:root{--h2-bg:#f5f8fc;--h2-card:#ffffff;--h2-line:#dde5f0;--h2-line2:#b9c9df;--h2-acc2:#1d6fe0;--h2-acc:#0e8fb0;--h2-star:#6fa8e0}
/* one continuous night sky behind hero + numbers + topics */
html body #home{position:relative}
html.r2-dark body #home{background:radial-gradient(900px 520px at 88% -8%,rgba(46,98,178,.30),transparent 62%),radial-gradient(760px 460px at -12% 38%,rgba(28,58,118,.20),transparent 62%),linear-gradient(180deg,#0b1424 0%,#08101c 48%,#070c14 100%)!important}
html:not(.r2-dark) body #home{background:radial-gradient(900px 520px at 88% -8%,rgba(96,150,230,.16),transparent 62%),radial-gradient(760px 460px at -12% 38%,rgba(120,170,240,.10),transparent 62%),linear-gradient(180deg,#f3f7fd 0%,#f7f9fc 55%,#fbfcfe 100%)!important}
html body #home .t-hero,html body #home #tStats,html body #home #r2TopicMap{background:transparent!important}
html body #home .t-hero-bg svg>g{display:none}            /* no network lines: only the thin orbits */
html body #home .t-hero-bg{opacity:.55!important;color:#5c95e6}
html body #home .t-hero{overflow:hidden}
/* the planet with its orbit ring and a small bright moon */
.r2-planet{position:absolute;right:-110px;top:-70px;width:330px;height:330px;border-radius:50%;pointer-events:none;z-index:0;
  background:radial-gradient(circle at 32% 30%,rgba(110,165,255,.20),rgba(20,40,80,0) 58%),radial-gradient(circle at 68% 72%,rgba(10,20,40,.9),rgba(14,28,52,.55));
  border:1px solid rgba(120,170,255,.28);box-shadow:inset -26px -34px 70px rgba(0,0,0,.45),0 0 70px rgba(60,120,220,.14)}
.r2-planet-ring{position:absolute;left:-46%;top:44%;width:190%;height:38%;border-radius:50%;border:1px solid rgba(130,180,255,.30);transform:rotate(-20deg)}
.r2-planet-dot{position:absolute;left:4%;top:74%;width:9px;height:9px;border-radius:50%;background:#7cc8ff;box-shadow:0 0 10px 3px rgba(124,200,255,.55);animation:r2Twinkle 3.6s ease-in-out infinite}
html:not(.r2-dark) .r2-planet{background:radial-gradient(circle at 32% 30%,rgba(255,255,255,.9),rgba(220,233,250,.5) 60%);border-color:rgba(90,140,210,.28);box-shadow:inset -20px -26px 60px rgba(120,150,200,.18)}
html:not(.r2-dark) .r2-planet-ring{border-color:rgba(90,140,210,.3)}
/* sparkles: white/blue, a soft glow, slow twinkle */
.r2-sky b{color:var(--h2-star)!important;filter:drop-shadow(0 0 4px rgba(140,190,255,.7))}
.r2-sky b:nth-child(1){--sz:12px!important}.r2-sky b:nth-child(3){--sz:10px!important}
/* hero text: left, blue bold emphasis */
html body #home.t-home h1#tHeroLine.t-h1-calm{color:#c7d0dd!important;font-size:clamp(20px,2.3vw,30px)!important;line-height:1.5!important;max-width:30ch!important}
html:not(.r2-dark) body #home.t-home h1#tHeroLine.t-h1-calm{color:#3f4a5a!important}
html body #home.t-home h1#tHeroLine.t-h1-calm em{background:none!important;-webkit-text-fill-color:currentColor!important;color:var(--h2-acc2)!important;font-weight:700!important}
/* numbers: big, colourful, glowing, twinkling (like before); thin vertical dividers only */
html body #home #tStats .t-stats{border:0!important}
html body #home #tStats .t-stat+.t-stat{border-left:1px solid var(--h2-line)!important}
html body #home #tStats .t-stat{overflow:visible!important}
html body #home #tStats .t-stat:hover{background:transparent!important}
html body #home #tStats .t-stat strong{font-size:clamp(46px,5.6vw,74px)!important}
html body #home #tStats .t-halo{width:150px!important;height:120px!important;margin:-60px 0 0 -75px!important;opacity:1!important}
@media (max-width:640px){html body #home #tStats .t-stat strong{font-size:42px!important}html body #home #tStats .t-halo{width:96px!important;height:80px!important;margin:-40px 0 0 -48px!important}}
/* topics: big white title, cards like the picture */
html body #home .r2-tmap-head2 h2{font-size:clamp(24px,2.6vw,30px)!important;letter-spacing:-.01em!important;text-transform:none!important;font-weight:750!important;color:var(--h2-ink)!important}
.r2-tmap-head2 p{font-size:14.5px}
.r2-tcards{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px!important}
.r2-tcard{min-height:84px;padding:16px 14px 16px 16px;border-color:var(--h2-line)!important;background:var(--h2-card)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
html.r2-dark .r2-tcard{background:linear-gradient(160deg,rgba(22,34,56,.82),rgba(11,19,33,.82))!important;backdrop-filter:blur(2px)}
.r2-tcard::before{right:auto!important;left:-70px!important;bottom:-92px!important;width:150px!important;height:150px!important;border-color:rgba(110,160,235,.28)!important}
.r2-tcard-ic{flex:0 0 34px!important;width:34px!important;height:34px!important;background:none!important;display:grid;place-items:center;position:relative;z-index:1}
.r2-tcard-ic svg{width:22px!important;height:22px!important;fill:currentColor;stroke:none}
.r2-tcard-ic i{display:block;border-radius:50%;background:currentColor;width:9px;height:9px;box-shadow:0 0 10px 3px color-mix(in srgb,currentColor 55%,transparent)}
.r2-glyph-sb{color:#5aa8ff}.r2-glyph-sg,.r2-glyph-dy{color:#f6c667}.r2-glyph-sc{color:#5ad1e6}.r2-glyph-db{color:#4f9cff}.r2-glyph-dc{color:#5ad1e6}.r2-glyph-dg{color:#8a97a8}
.r2-glyph-dc i{width:6px;height:6px}.r2-glyph-dg i{width:7px;height:7px}
.r2-tcard-ic svg{filter:drop-shadow(0 0 5px currentColor)}
html:not(.r2-dark) .r2-tcard-ic svg{filter:drop-shadow(0 0 3px rgba(0,0,0,.08))}
.r2-tcard-txt strong{font-size:15.5px;position:relative;z-index:1}
.r2-tcard-txt small{font-size:13px;margin-top:4px}
.r2-tcard-chev{position:relative;z-index:1}
@media (max-width:640px){.r2-tcards{gap:10px!important}.r2-tcard{min-height:78px;padding:14px 10px 14px 12px;gap:10px}.r2-tcard-txt strong{font-size:14px}.r2-tcard-ic{flex-basis:26px!important;width:26px!important}}
@media (max-width:340px){.r2-tcards{grid-template-columns:1fr!important}}
/* sections below keep the same night colour in dark mode */
html.r2-dark body #home #latest,html.r2-dark body #home #r2Ongoing.t-night{background:#070c14!important}
/* navbar: colourful twinkling stars (all six), a bit brighter */
html body .t-nav-stars .t-ns{filter:drop-shadow(0 0 3px currentColor)}
/* logo: three colourful twinkles */
.t-logo-stars{right:-14px!important;top:-4px!important;width:24px!important;height:30px!important}
.t-logo-stars b{opacity:.2;animation:r2Twinkle 2.4s ease-in-out infinite!important;filter:drop-shadow(0 0 3px currentColor)}
.t-logo-stars b:nth-child(1){color:#ffc53d!important;right:0;top:0;width:9px!important;height:9px!important}
.t-logo-stars b:nth-child(2){color:#ff6fa5!important;right:11px;top:17px;width:6px!important;height:6px!important;animation-delay:.8s!important}
.t-logo-stars b:nth-child(3){color:#4fd1e8!important;right:-2px;top:22px;width:7px;height:7px;animation-delay:1.6s!important}
@keyframes r2Twinkle{0%,100%{opacity:.15;transform:scale(.7)}50%{opacity:1;transform:scale(1.05)}}
.r2-tcard::before{left:-92px!important;bottom:-104px!important;width:150px!important;height:150px!important}
/* smaller opening line */
html body #home.t-home h1#tHeroLine.t-h1-calm{font-size:clamp(17px,1.75vw,23px)!important;max-width:38ch!important;line-height:1.6!important}
@media (max-width:640px){html body #home.t-home h1#tHeroLine.t-h1-calm{font-size:16px!important;max-width:none!important}}
/* numbers: still colourful, a little less bright */
html body #home #tStats .t-halo{opacity:.42!important}
html body #home #tStats .t-stat strong{filter:saturate(.85) brightness(.9)!important}
html body #home #tStats .t-st{opacity:.7}
/* topic card icons twinkle softly, one after another */
.r2-tcard-ic>svg,.r2-tcard-ic>i{animation:r2IcoTw 3.2s ease-in-out infinite}
.r2-tcard:nth-child(2) .r2-tcard-ic>*{animation-delay:.5s}.r2-tcard:nth-child(3) .r2-tcard-ic>*{animation-delay:1s}.r2-tcard:nth-child(4) .r2-tcard-ic>*{animation-delay:1.5s}
.r2-tcard:nth-child(5) .r2-tcard-ic>*{animation-delay:2s}.r2-tcard:nth-child(6) .r2-tcard-ic>*{animation-delay:2.5s}.r2-tcard:nth-child(7) .r2-tcard-ic>*{animation-delay:.25s}.r2-tcard:nth-child(8) .r2-tcard-ic>*{animation-delay:1.25s}
@keyframes r2IcoTw{0%,100%{opacity:.55;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}
@media (prefers-reduced-motion:reduce){.r2-tcard-ic>svg,.r2-tcard-ic>i{animation:none}}

/* =====================================================================
   Home: "Research in progress" + "Recently added" side by side.
   Both boxes: white in dark mode, black in light mode.
   ===================================================================== */
html body #home .r2-duo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;max-width:1040px;margin:0 auto;padding:0 28px 72px;align-items:stretch}
html body #home .r2-duo:has(#r2Ongoing[hidden]){grid-template-columns:1fr}
html body #home .r2-duo>section{padding:0!important;margin:0!important;background:transparent!important;border:0!important;min-width:0}
html body #home .r2-duo>section>.t-wrap{height:100%;max-width:none!important;margin:0!important;padding:26px 24px 22px!important;border-radius:24px;display:flex;flex-direction:column;box-sizing:border-box}
/* light mode: black boxes */
html:not(.r2-dark) body #home .r2-duo>section>.t-wrap{background:#0e0f12!important;color:#f5f5f7;box-shadow:0 24px 50px -34px rgba(10,20,40,.6)!important;border:0!important}
/* dark mode: white boxes */
html.r2-dark body #home .r2-duo>section>.t-wrap{background:#f4f5f8!important;color:#15171b;box-shadow:0 24px 50px -34px rgba(0,0,0,.8)!important;border:0!important}
/* headings: left, medium size */
html body #home .r2-duo .t-center{text-align:left!important;margin:0 0 16px!important}
html body #home .r2-duo h2{font-size:clamp(20px,2vw,24px)!important;line-height:1.25!important;margin:0!important;letter-spacing:-.015em!important}
html body #home .r2-duo .t-sub{font-size:13.5px!important;margin:4px 0 0!important}
html:not(.r2-dark) body #home .r2-duo h2{color:#fff!important}
html:not(.r2-dark) body #home .r2-duo .t-sub{color:#a9adb5!important}
html.r2-dark body #home .r2-duo h2{color:#111214!important}
html.r2-dark body #home .r2-duo .t-sub{color:#5d6068!important}
/* in progress list inside its box */
html body #home .r2-duo #r2Ongoing .t-og{margin:0!important;max-width:none!important;border-radius:16px!important}
html body #home .r2-duo #r2Ongoing .t-og .r2-og-row{grid-template-columns:1fr auto!important;gap:4px 12px!important;padding:16px 18px!important}
html body #home .r2-duo #r2Ongoing .t-og .r2-ongoing-status{grid-column:1;grid-row:1}
html body #home .r2-duo #r2Ongoing .t-og .r2-og-year{grid-column:2;grid-row:1}
html body #home .r2-duo #r2Ongoing .t-og .r2-og-main{grid-column:1/-1}
html body #home .r2-duo #r2Ongoing .t-og .r2-og-main h3{font-size:16px!important;line-height:1.35!important}
html body #home .r2-duo #r2Ongoing .t-og .r2-og-main p{font-size:13.5px!important;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
/* recently added: compact rows (small picture left, text right) */
html body #home .r2-duo #latest .t-latest{display:grid!important;grid-template-columns:1fr!important;gap:10px!important;margin:0!important;max-width:none!important}
html body #home .r2-duo #latest .t-latest .r2-lc-row{display:grid!important;grid-template-columns:92px minmax(0,1fr) 16px!important;align-items:center!important;gap:14px!important;padding:10px 14px 10px 10px!important;border-radius:16px!important;transform:none!important;min-height:0!important;height:auto!important}
html body #home .r2-duo #latest .t-latest .r2-lc-row .r2-latest-media{width:92px!important;height:68px!important;aspect-ratio:auto!important;border-radius:10px!important;overflow:hidden;border:0!important;background:#fff!important}
html body #home .r2-duo #latest .t-latest .r2-lc-row .r2-latest-media img{padding:4px!important;object-fit:contain!important}
html body #home .r2-duo #latest .t-latest .r2-lc-body{padding:0!important;min-width:0}
html body #home .r2-duo #latest .t-latest .r2-lc-title{font-size:15px!important;line-height:1.35!important;margin:4px 0 0!important;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
html body #home .r2-duo #latest .t-latest .r2-lc-meta{font-size:11.5px!important;gap:6px!important;flex-wrap:wrap}
html body #home .r2-duo #latest .t-latest .r2-lc-arrow{display:block!important;width:16px;height:16px;opacity:.6}
html:not(.r2-dark) body #home .r2-duo #latest .t-latest .r2-lc-row{background:#18191d!important;box-shadow:none!important;border:1px solid rgba(255,255,255,.06)!important}
html:not(.r2-dark) body #home .r2-duo #latest .r2-lc-title{color:#fff!important}
html:not(.r2-dark) body #home .r2-duo #latest .r2-lc-date{color:#a9adb5!important}
html:not(.r2-dark) body #home .r2-duo #latest .r2-lc-type{color:#8fc1ff!important}
html:not(.r2-dark) body #home .r2-duo #latest .r2-lc-arrow{color:#fff}
html.r2-dark body #home .r2-duo #latest .t-latest .r2-lc-row{background:#fff!important;box-shadow:0 1px 2px rgba(0,0,0,.05)!important;border:1px solid #e8e9ed!important}
html.r2-dark body #home .r2-duo #latest .r2-lc-title{color:#15171b!important}
html.r2-dark body #home .r2-duo #latest .r2-lc-date{color:#6b7078!important}
html.r2-dark body #home .r2-duo #latest .r2-lc-type{color:#1d4b85!important}
html.r2-dark body #home .r2-duo #latest .r2-lc-arrow{color:#15171b}
@media (hover:hover){html body #home .r2-duo #latest .t-latest .r2-lc-row:hover{transform:translateY(-2px)!important}}
/* "all publications / notes / projects" links at the bottom of the box */
html body #home .r2-duo #latest .t-more{margin:auto 0 0!important;padding-top:16px!important;justify-content:flex-start!important;gap:6px 16px!important;flex-wrap:wrap}
html body #home .r2-duo #latest .t-more a{font-size:13px!important}
html:not(.r2-dark) body #home .r2-duo #latest .t-more a{color:#8fc1ff!important}
html.r2-dark body #home .r2-duo #latest .t-more a{color:#1d4b85!important}
/* phones: one under the other */
@media (max-width:820px){html body #home .r2-duo{grid-template-columns:1fr;gap:16px;padding:0 18px 56px}}
@media (max-width:420px){html body #home .r2-duo>section>.t-wrap{padding:20px 16px 18px!important;border-radius:20px}html body #home .r2-duo #latest .t-latest .r2-lc-row{grid-template-columns:76px minmax(0,1fr) 14px!important;gap:12px!important}html body #home .r2-duo #latest .t-latest .r2-lc-row .r2-latest-media{width:76px!important;height:58px!important}}

/* ===== Numbers: own colours per theme, easy on the eyes in both ===== */
html:not(.r2-dark) body #home #tStats .t-stat.t-g1 strong{background-image:linear-gradient(135deg,#4338ca 0%,#2563eb 100%)!important}
html:not(.r2-dark) body #home #tStats .t-stat.t-g2 strong{background-image:linear-gradient(135deg,#db2777 0%,#ea580c 100%)!important}
html:not(.r2-dark) body #home #tStats .t-stat.t-g3 strong{background-image:linear-gradient(135deg,#0f766e 0%,#0284c7 100%)!important}
html:not(.r2-dark) body #home #tStats .t-stat strong{filter:none!important}
html:not(.r2-dark) body #home #tStats .t-halo{opacity:.3!important}
html.r2-dark body #home #tStats .t-stat.t-g1 strong{background-image:linear-gradient(135deg,#a5b4fc 0%,#c4b5fd 55%,#f0abfc 100%)!important}
html.r2-dark body #home #tStats .t-stat.t-g2 strong{background-image:linear-gradient(135deg,#fda4af 0%,#f9a8d4 55%,#fdba74 100%)!important}
html.r2-dark body #home #tStats .t-stat.t-g3 strong{background-image:linear-gradient(135deg,#5eead4 0%,#67e8f9 55%,#93c5fd 100%)!important}
html.r2-dark body #home #tStats .t-stat strong{filter:saturate(.9) brightness(.92)!important}
html:not(.r2-dark) body #home #tStats .t-stat>span{color:#4b5563!important}
html.r2-dark body #home #tStats .t-stat>span{color:#b7c0cd!important}
html body #home .r2-duo #r2Ongoing.t-night,html.r2-dark body #home .r2-duo #r2Ongoing.t-night,html body #home .r2-duo #latest.t-day,html.r2-dark body #home .r2-duo #latest{padding:0!important;background:transparent!important;border:0!important}
/* numbers: the colour fills the whole digit in both themes */
html body #home #tStats .t-stat strong{background-size:100% 100%!important;background-repeat:no-repeat!important;background-position:0 0!important}
html body #home .r2-duo #latest .t-more{display:flex!important;flex-direction:row!important}
html body #home .r2-duo #latest .t-more a{padding:0!important;margin:0!important;min-height:0!important;height:auto!important;display:inline-flex!important;width:auto!important;border:0!important;background:none!important}

/* ===== "All publications / notes / projects": twinkling bubbles under both boxes ===== */
html body #home .r2-duo{padding-bottom:26px!important}
html body #home>.r2-more-bubbles{display:flex!important;flex-wrap:wrap!important;justify-content:center!important;align-items:center!important;gap:12px!important;max-width:1040px;margin:0 auto!important;padding:4px 18px 72px!important;border:0!important;background:none!important}
html body #home>.r2-more-bubbles .r2-mb{--c1:#2563eb;--c2:#06b6d4;position:relative;overflow:hidden;display:inline-flex!important;align-items:center;gap:8px;padding:11px 18px 11px 14px!important;border-radius:999px!important;font:600 14px/1.2 inherit!important;text-decoration:none!important;white-space:nowrap;
  border:1px solid color-mix(in srgb,var(--c1) 45%,transparent)!important;background:color-mix(in srgb,var(--c1) 10%,transparent)!important;color:var(--c1)!important;
  box-shadow:0 0 0 0 transparent;animation:r2MbGlow 3.6s ease-in-out infinite;transition:transform .2s ease,background .2s ease}
html body #home>.r2-more-bubbles .r2-mb-research-notes{--c1:#db2777;--c2:#f97316;animation-delay:1.2s}
html body #home>.r2-more-bubbles .r2-mb-projects{--c1:#0f766e;--c2:#0284c7;animation-delay:2.4s}
html.r2-dark body #home>.r2-more-bubbles .r2-mb{--c1:#8fb8ff;--c2:#67e8f9}
html.r2-dark body #home>.r2-more-bubbles .r2-mb-research-notes{--c1:#f9a8d4;--c2:#fdba74}
html.r2-dark body #home>.r2-more-bubbles .r2-mb-projects{--c1:#5eead4;--c2:#93c5fd}
/* a soft light passes over the bubble now and then */
html body #home>.r2-more-bubbles .r2-mb::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.45) 50%,transparent 65%);transform:translateX(-120%);animation:r2MbSheen 5.4s ease-in-out infinite;animation-delay:inherit;pointer-events:none}
html.r2-dark body #home>.r2-more-bubbles .r2-mb::after{background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.18) 50%,transparent 65%)}
/* the little star inside twinkles */
html body #home>.r2-more-bubbles .r2-mb-star{flex:0 0 13px;width:13px;height:13px;fill:var(--c2);filter:drop-shadow(0 0 3px var(--c2));animation:r2Twinkle 2.6s ease-in-out infinite;animation-delay:inherit}
html body #home>.r2-more-bubbles .r2-mb b{font-weight:700;transition:transform .2s ease}
@media (hover:hover){html body #home>.r2-more-bubbles .r2-mb:hover{transform:translateY(-2px);background:color-mix(in srgb,var(--c1) 18%,transparent)!important}html body #home>.r2-more-bubbles .r2-mb:hover b{transform:translateX(3px)}}
html body #home>.r2-more-bubbles .r2-mb:focus-visible{outline:2px solid var(--c1);outline-offset:3px}
@keyframes r2MbGlow{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 16px -2px color-mix(in srgb,var(--c1) 45%,transparent)}}
@keyframes r2MbSheen{0%,70%{transform:translateX(-120%)}90%,100%{transform:translateX(120%)}}
@media (max-width:420px){html body #home>.r2-more-bubbles{gap:8px!important;padding-bottom:56px!important}html body #home>.r2-more-bubbles .r2-mb{padding:9px 14px 9px 11px!important;font-size:13px!important}}
@media (prefers-reduced-motion:reduce){html body #home>.r2-more-bubbles .r2-mb,html body #home>.r2-more-bubbles .r2-mb::after,html body #home>.r2-more-bubbles .r2-mb-star{animation:none!important}}
/* older iPhones without color-mix(): simple outline */
@supports not (color: color-mix(in srgb, red 50%, blue)){html body #home>.r2-more-bubbles .r2-mb{border:1px solid currentColor!important;background:transparent!important}}
/* ===== Search window in dark mode: topic chips, Esc and hints readable ===== */
html.r2-dark body .r2-search-topics button{background:transparent!important;border-color:#3a3d44!important;color:#e3e6ea!important}
html.r2-dark body .r2-search-topics button:hover,html.r2-dark body .r2-search-topics button:focus-visible{border-color:#7cb3ff!important;color:#9cc3ea!important;background:rgba(124,179,255,.08)!important}
html.r2-dark body .r2-search-close{background:transparent!important;border-color:#3a3d44!important;color:#c9ccd2!important}
html.r2-dark body .r2-search-hint,html.r2-dark body .r2-search-hint kbd{color:#b7bcc4!important}
html.r2-dark body .r2-search-hint kbd{border-color:#4a4e56!important;background:#1b1d22!important}
html.r2-dark body .r2-search-topics{color:#9aa0a8}
/* ===== Home background: soft colour gradient (night blue → violet → teal in dark, sky → lavender → mint in light) ===== */
html.r2-dark body #home{background:
  radial-gradient(820px 520px at 90% -6%,rgba(56,120,220,.34),transparent 62%),
  radial-gradient(700px 520px at -8% 34%,rgba(124,58,237,.22),transparent 64%),
  radial-gradient(640px 460px at 72% 52%,rgba(219,39,119,.10),transparent 66%),
  radial-gradient(900px 560px at 18% 96%,rgba(13,148,136,.20),transparent 64%),
  linear-gradient(180deg,#0b1426 0%,#0c1030 38%,#0a0f22 70%,#071018 100%)!important}
html:not(.r2-dark) body #home{background:
  radial-gradient(820px 520px at 90% -6%,rgba(96,165,250,.26),transparent 62%),
  radial-gradient(700px 520px at -8% 34%,rgba(167,139,250,.20),transparent 64%),
  radial-gradient(640px 460px at 72% 52%,rgba(244,114,182,.10),transparent 66%),
  radial-gradient(900px 560px at 18% 96%,rgba(45,212,191,.16),transparent 64%),
  linear-gradient(180deg,#f2f7ff 0%,#f5f2ff 40%,#f7f8fd 70%,#f0fbf8 100%)!important}
/* the boxes below sit on the same gradient */
html body #home .r2-duo,html body #home>.r2-more-bubbles{background:transparent!important}
/* the planet fades out softly instead of being cut by the edge of the top section */
html body #home .r2-planet{-webkit-mask-image:linear-gradient(180deg,#000 45%,transparent 88%);mask-image:linear-gradient(180deg,#000 45%,transparent 88%)}
html body #home .t-hero-bg{-webkit-mask-image:linear-gradient(180deg,#000 60%,transparent 100%);mask-image:linear-gradient(180deg,#000 60%,transparent 100%)}
/* topic names never break in the middle of a word */
.r2-tcard-txt strong{overflow-wrap:normal!important;word-break:normal!important;hyphens:manual}
@media (max-width:640px){.r2-tcard-txt strong{font-size:13.5px!important}.r2-tcard-chev{flex-basis:14px!important;width:14px!important}}
@media (max-width:370px){.r2-tcard-txt strong{font-size:12.5px!important}}
@media (max-width:420px){.r2-tcard{padding:12px 8px 12px 10px!important;gap:8px!important}.r2-tcard-ic{flex-basis:22px!important;width:22px!important}.r2-tcard-ic svg{width:18px!important;height:18px!important}.r2-tcard-txt strong{font-size:13px!important}}
@media (max-width:370px){.r2-tcard-txt strong{font-size:12.5px!important}}
/* ===== Page end: back to Home / back to top (only on the menu pages, not on Home) ===== */
.r2-page-end{display:none;justify-content:center;flex-wrap:wrap;gap:10px;max-width:1040px;margin:0 auto;padding:30px 18px 56px}
body.r2-publications-view .r2-page-end,body.r2-notes-view .r2-page-end,body.r2-projects-view .r2-page-end,body.r2-about-view .r2-page-end{display:flex}
.r2-pe-btn{appearance:none;display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border-radius:999px;border:1px solid #d9dee6;background:#fff;color:#1d4b85;font:600 14px/1.2 inherit;text-decoration:none;cursor:pointer;transition:transform .2s ease,border-color .2s ease,background .2s ease;-webkit-tap-highlight-color:transparent}
.r2-pe-btn svg{width:16px;height:16px}
.r2-pe-btn:hover{border-color:#2f63b5;transform:translateY(-2px)}
.r2-pe-btn:focus-visible{outline:2px solid #2f63b5;outline-offset:3px}
.r2-pe-top{color:#0e7490}
html.r2-dark .r2-pe-btn{background:rgba(255,255,255,.04);border-color:#34373d;color:#9cc3ea}
html.r2-dark .r2-pe-top{color:#5ad1e6}
html.r2-dark .r2-pe-btn:hover{border-color:#7cb3ff;background:rgba(124,179,255,.08)}
/* ===== Dark Home: much less purple (easier on the eyes) ===== */
html.r2-dark body #home{background:
  radial-gradient(820px 520px at 90% -6%,rgba(56,120,220,.28),transparent 62%),
  radial-gradient(700px 520px at -8% 34%,rgba(99,102,241,.08),transparent 64%),
  radial-gradient(900px 560px at 18% 96%,rgba(13,148,136,.16),transparent 64%),
  linear-gradient(180deg,#0b1426 0%,#0a1224 40%,#09111e 70%,#071018 100%)!important}

/* ===== Flying envelope → "Send a message" (stays in the top area of each page, never follows the screen) ===== */
.r2-env{position:absolute;z-index:3;width:58px;height:44px;padding:0;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent;animation:r2EnvFly 6s ease-in-out infinite}
.r2-env svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 6px 10px rgba(20,40,90,.22))}
.r2-env-body{fill:#fff;stroke:#2f63b5;stroke-width:2}
.r2-env-flap{fill:none;stroke:#2f63b5;stroke-width:2;stroke-linejoin:round}
.r2-env-heart{fill:#ff5c9f}
.r2-env-wing path{fill:#dbeafe;stroke:#2f63b5;stroke-width:1.6;stroke-linejoin:round}
.r2-env-wl{transform-origin:14px 22px;animation:r2EnvWingL .5s ease-in-out infinite alternate}
.r2-env-wr{transform-origin:50px 22px;animation:r2EnvWingR .5s ease-in-out infinite alternate}
html.r2-dark .r2-env-body{fill:#f4f7ff;stroke:#7cb3ff}
html.r2-dark .r2-env-flap{stroke:#7cb3ff}
html.r2-dark .r2-env-wing path{fill:#1e3a64;stroke:#7cb3ff}
html.r2-dark .r2-env svg{filter:drop-shadow(0 6px 12px rgba(0,0,0,.5))}
/* tiny label on hover / focus */
.r2-env-tip{position:absolute;left:50%;top:100%;margin-top:4px;transform:translateX(-50%) translateY(-4px);white-space:nowrap;padding:4px 9px;border-radius:999px;background:#1d4b85;color:#fff;font:600 11.5px/1.2 inherit;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}
html.r2-dark .r2-env-tip{background:#9cc3ea;color:#0b1a2e}
.r2-env:hover .r2-env-tip,.r2-env:focus-visible .r2-env-tip{opacity:1;transform:translateX(-50%) translateY(0)}
.r2-env:focus-visible{outline:2px solid #2f63b5;outline-offset:4px;border-radius:12px}
/* a small hop when tapped, then off to the message form */
.r2-env.is-go{animation:r2EnvGo .42s ease-in forwards}
@keyframes r2EnvFly{0%,100%{transform:translate(0,0) rotate(-4deg)}25%{transform:translate(6px,-8px) rotate(3deg)}50%{transform:translate(0,-3px) rotate(-2deg)}75%{transform:translate(-6px,-9px) rotate(4deg)}}
@keyframes r2EnvWingL{from{transform:rotate(8deg)}to{transform:rotate(-18deg)}}
@keyframes r2EnvWingR{from{transform:rotate(-8deg)}to{transform:rotate(18deg)}}
@keyframes r2EnvGo{0%{transform:scale(1)}40%{transform:scale(1.15) translateY(-6px)}100%{transform:scale(.7) translate(40px,-40px);opacity:0}}
/* where it flies on each page */
.r2-env-home{right:24%;top:30px}
@media (max-width:640px){.r2-env{width:44px;height:34px}.r2-env-home{right:14px;top:14px}.r2-env-tip{display:none}}
@media (prefers-reduced-motion:reduce){.r2-env,.r2-env-wl,.r2-env-wr{animation:none}}
/* ===== Dark mode numbers: less shine ===== */
html.r2-dark body #home #tStats .t-stat strong{filter:saturate(.8) brightness(.8)!important}
html.r2-dark body #home #tStats .t-halo{opacity:.2!important}
html.r2-dark body #home #tStats .t-st,html.r2-dark body #home #tStats .t-stat::before,html.r2-dark body #home #tStats .t-stat::after{opacity:.45!important}
/* envelope next to the page title (position set by the script) */
.r2-env-pubs,.r2-env-notes,.r2-env-projects{right:auto!important}
@media (max-width:640px){.r2-env-pubs,.r2-env-notes,.r2-env-projects{width:40px!important;height:30px!important}}
/* smooth trip to the message form: envelope flies away, page fades, form fades in with a soft glow */
.r2-env.is-go{animation:r2EnvAway .55s cubic-bezier(.5,0,.75,0) forwards!important}
@keyframes r2EnvAway{0%{transform:translate(0,0) rotate(0) scale(1);opacity:1}30%{transform:translate(-4px,4px) rotate(-6deg) scale(1.08);opacity:1}100%{transform:translate(70px,-60px) rotate(18deg) scale(.6);opacity:0}}
main{transition:opacity .32s ease}
html.r2-env-fade main{opacity:0}
html:not(.r2-env-fade) main{transition:opacity .45s ease}
#r2Collab.r2-collab-hello{animation:r2Hello 2s ease-out}
@keyframes r2Hello{0%{box-shadow:0 0 0 0 rgba(47,99,181,0)}25%{box-shadow:0 0 0 6px rgba(47,99,181,.22)}100%{box-shadow:0 0 0 14px rgba(47,99,181,0)}}
html.r2-dark #r2Collab.r2-collab-hello{animation-name:r2HelloD}
@keyframes r2HelloD{0%{box-shadow:0 0 0 0 rgba(124,179,255,0)}25%{box-shadow:0 0 0 6px rgba(124,179,255,.25)}100%{box-shadow:0 0 0 14px rgba(124,179,255,0)}}
@media (prefers-reduced-motion:reduce){main,html.r2-env-fade main{transition:none;opacity:1}.r2-env.is-go{animation:none!important}}
.r2-env-pubs,.r2-env-notes,.r2-env-projects{left:0;top:0}
.pub-head>div,.notes-head>div,.projects-head>div{position:relative}
