/* Epicriza.ro landing (address rohealth.org): the type, rules and spacing of the published analyses (/sponsori, /ministri, /snbcc),
   with the masthead turned red and its rule turned black. No webfonts, no scripts. */
:root{
  color-scheme:light dark;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --serif:Georgia,"Iowan Old Style","Palatino Linotype","Times New Roman",serif;
  --paper:#fff;
  --ink:#1f1e1d;
  --ink-2:#3b3a37;
  --muted:#5f5e5a;
  --line:#e4e2dc;
  --line-2:#8a8984;
  --hover:#f4f3ef;
  --red:#c8102e;
  --red-ink:#b00e28;
  --focus:#c8102e;
  /* masthead: white on #c8102e is 5.9:1, the pale text 5.4:1 */
  --mh-bg:#c8102e;
  --mh-fg:#fff;
  --mh-muted:#fff1f3;
  --mh-line:rgba(255,255,255,.38);
  --mh-rule:#000;
  --pad:clamp(16px,4vw,44px);
}
@media (prefers-color-scheme:dark){
  :root{
    --paper:#181716;
    --ink:#ecebe6;
    --ink-2:#d3d2ca;
    --muted:#a5a49a;
    --line:#2f2e2b;
    --line-2:#77766f;
    --hover:#24231f;
    --red:#e8384f;
    --red-ink:#ff6b78;
    --focus:#ff6b78;
  }
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* default font smoothing: on macOS "antialiased" thins light text on the red masthead */
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:1rem;line-height:1.5}
a{color:inherit}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.wrap{max-width:1440px;margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
.sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:var(--pad);top:8px;z-index:20;background:#fff;color:#000;padding:8px 12px;font-weight:600;text-decoration:none;transform:translateY(-200%)}
.skip:focus{transform:none}

/* ---------- masthead ---------- */
.mh{background:var(--mh-bg);color:var(--mh-fg);border-top:6px solid var(--mh-rule)}
.mh :focus-visible{outline-color:var(--mh-fg)}
.mh-in{padding-top:18px;padding-bottom:clamp(30px,5vw,56px);display:grid;gap:16px}
.mh-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 28px;padding-bottom:14px;border-bottom:1px solid var(--mh-line)}
/* the site's name as its title (3 Nov 2026: Epicriza.ro, no logo): the old wordmark's type, larger, in a row as tall as
   the 52 px logo it replaces; one line at every width */
.brand{display:inline-flex;align-items:center;min-height:52px;font-size:clamp(1.375rem,1.2rem + .6vw,1.625rem);font-weight:800;line-height:1.1;letter-spacing:-.02em;white-space:nowrap;color:var(--mh-fg);text-decoration:none}
.mh-main{display:grid;gap:16px;min-width:0}
/* the title runs across the whole width: one line on desktop (sized to the 1440 px column), wrapping on phones */
.mh-title{margin:clamp(10px,2.4vw,26px) 0 0;font-size:clamp(1.75rem,3vw,2.7rem);line-height:1.08;font-weight:800;letter-spacing:-.024em;max-width:none;text-wrap:balance}
.mh-dek{margin:0;max-width:68ch;color:var(--mh-muted);font-family:var(--serif);font-size:clamp(1.125rem,1.04rem + .4vw,1.3125rem);line-height:1.55;text-wrap:pretty}
.mh-dek b{color:var(--mh-fg);font-weight:600}

/* ---------- sections ---------- */
main{display:block}
.sec{padding-top:clamp(34px,5vw,56px);padding-bottom:8px}
.sec-h{display:grid;gap:8px;margin-bottom:26px;max-width:62rem}
.sec-n{margin:0;font-size:.8125rem;color:var(--muted);font-variant-numeric:tabular-nums}
.sec-h h2{margin:0;font-size:clamp(1.5rem,1.2rem + 1.2vw,2rem);line-height:1.15;font-weight:780;letter-spacing:-.018em;text-wrap:balance}
.lead{margin:0 0 6px;font-family:var(--serif);font-size:1.125rem;line-height:1.6;max-width:70ch;text-wrap:pretty}

/* ---------- the analyses ---------- */
.an-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,30rem),1fr));gap:12px 36px}
.an{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 18px;align-content:start;border-top:2px solid var(--ink);padding:16px 12px 26px 0}
.an:hover{border-top-color:var(--red)}
/* line icons on a 24 grid, ink with one red accent */
.an-ic{grid-row:span 4;display:block;width:46px;height:46px;margin-top:2px;color:var(--ink)}
.an-ic svg{display:block;width:100%;height:100%}
.an-ic .acc{stroke:var(--red)}
.an-no{margin-right:8px;color:var(--red-ink);font-weight:700;font-variant-numeric:tabular-nums}
.an-tag{margin:0;font-size:.875rem;color:var(--muted)}
.an h3{margin:0;font-size:clamp(1.125rem,1.05rem + .35vw,1.3125rem);line-height:1.25;font-weight:720;letter-spacing:-.01em;text-wrap:balance}
.an h3 a{text-decoration:none}
/* the whole card follows the title link */
.an h3 a::after{content:"";position:absolute;inset:0}
.an h3 a:focus-visible{outline:none}
.an:has(h3 a:focus-visible){outline:2px solid var(--focus);outline-offset:4px}
.an-desc{margin:4px 0 0;font-family:var(--serif);font-size:1.0625rem;line-height:1.55;color:var(--ink-2);max-width:64ch;text-wrap:pretty}
.an-go{margin:10px 0 0;font-size:1rem;font-weight:650;color:var(--ink)}
.an-go-t{text-decoration:underline;text-decoration-color:var(--red);text-decoration-thickness:2px;text-underline-offset:4px}
.an:hover .an-go{color:var(--red-ink)}
.an-url{margin-left:8px;font-weight:450;font-size:.875rem;color:var(--muted)}

/* ---------- labelled rows (same grammar as the analyses' footer) ---------- */
.rows{margin:18px 0 0;max-width:76rem}
.rows>div{display:grid;grid-template-columns:11rem minmax(0,1fr);gap:4px 20px;padding:12px 0;border-top:1px solid var(--line)}
.rows>div:last-child{border-bottom:1px solid var(--line)}
.rows dt{font-weight:650;color:var(--ink)}
.rows dd{margin:0;max-width:96ch;color:var(--ink-2);text-wrap:pretty}
@media (max-width:640.98px){.rows>div{grid-template-columns:minmax(0,1fr)}}

/* ---------- links under a contributor (e-mail, profiles) ---------- */
.author-links{margin:14px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px 22px;font-size:.9375rem}
.author-links a{font-weight:600;text-decoration:underline;text-decoration-color:var(--red);text-decoration-thickness:2px;text-underline-offset:4px}
.author-links a:hover{color:var(--red-ink)}

/* ---------- footer (as in the analyses) ---------- */
.site-foot{margin-top:clamp(44px,6vw,72px);padding-top:20px;padding-bottom:36px;border-top:1px solid var(--line);font-size:.875rem;line-height:1.55;color:var(--muted)}
.site-foot p{margin:0 0 10px;color:var(--ink)}
.site-foot b{font-weight:600}
.site-foot .rows{margin:0}
.site-foot .rows>div{grid-template-columns:10.5rem minmax(0,1fr);padding:9px 0}
.site-foot .rows>div:last-child{border-bottom:0}
.site-foot .rows dt{font-weight:600}
.site-foot .rows dd{color:var(--muted)}
.foot-list{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:2px 18px}
@media (max-width:640.98px){.site-foot .rows>div{grid-template-columns:minmax(0,1fr)}}

/* ---------- 404 ---------- */
.nf{padding-top:clamp(34px,5vw,56px)}
.nf p{margin:0 0 12px;max-width:70ch}

/* ---------- privacy page ---------- */
.rows code{font-size:.875em}
.consent-reset{appearance:none;margin-top:10px;font:inherit;font-weight:650;min-height:40px;padding:8px 16px;border:1px solid var(--ink);border-radius:2px;background:transparent;color:var(--ink);cursor:pointer}
.consent-reset:hover{border-color:var(--red)}

/* ---------- "in testing" corner ribbon (masthead only, scrolls away with it) ---------- */
/* the masthead no longer clips its content (the menu lists hang below it); the ribbon has its own clip box */
.mh{position:relative}
.mh-clip{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.beta{position:absolute;z-index:2;top:24px;right:-54px;width:200px;margin:0;transform:rotate(45deg);
  background:#000;color:#fff;text-align:center;font:700 .6875rem/26px var(--sans);letter-spacing:.12em;text-transform:uppercase;
  box-shadow:0 2px 6px rgba(0,0,0,.25);pointer-events:none}
/* keep the menu clear of the ribbon while it shares the top row */
@media (min-width:720px){.mh-top{padding-right:64px}}
/* every max-width rule ends at N.98 px, so a zoomed width between two whole pixels (719.09 px is a 791 px
   window at 110%) is in exactly one rule of each pair and lays out as the whole pixel below; here, the small ribbon */
@media (max-width:719.98px){.beta{top:16px;right:-52px;width:170px;font-size:.625rem;line-height:22px;letter-spacing:.1em}}
.lead a{text-decoration-color:var(--red);text-decoration-thickness:2px;text-underline-offset:3px}

/* "Despre inițiativă" across the whole width: the two paragraphs side by side on wide screens, rows full width */
.lead-cols{display:grid;grid-template-columns:minmax(0,1fr);gap:8px 40px}
@media (min-width:900px){.lead-cols{grid-template-columns:repeat(2,minmax(0,1fr))}}
.lead-cols .lead{max-width:none;margin:0}
#despre .rows,#despre .rows dd{max-width:none}

/* ---------- compact bar (landing): slides in after the red masthead scrolls away (assets/nav.js) ---------- */
html{scroll-padding-top:64px}
.sbar{position:fixed;z-index:60;top:0;left:0;right:0;background:var(--mh-bg);color:var(--mh-fg);
  box-shadow:0 2px 10px rgba(0,0,0,.2);transform:translateY(-110%);transition:transform .2s ease}
.sbar.is-on{transform:none}
@media (prefers-reduced-motion:reduce){.sbar{transition:none}}
.sbar :focus-visible{outline-color:var(--mh-fg)}
.sbar-in{display:flex;align-items:center;gap:8px 16px;min-height:52px}
.sbar-brand{flex:none;color:var(--mh-fg);text-decoration:none;font-size:1.25rem;font-weight:800;line-height:1.1;letter-spacing:-.02em;white-space:nowrap}
.sbar .menu{margin:0 -10px 0 auto;flex-wrap:nowrap}
.sbar .dd-list{top:calc(100% + 6px)}
@media (max-width:719.98px){.sbar .dd{position:static}.sbar .dd-list,.sbar .dd-r .dd-list{left:0;right:0;top:100%;min-width:0}}
/* the bar is fixed, so scrolling the page never brings up what hangs below the screen: its lists start under its
   52 px row, end 12 px above the bottom and scroll by themselves on short screens (a phone held sideways), the
   page behind them staying put; a scrolling list clips what lies outside it, so their links draw the focus ring
   inside */
.sbar .dd-list{max-height:calc(100vh - 64px);max-height:calc(100dvh - 64px);overflow-y:auto;overscroll-behavior:contain}
.sbar .dd-list a:focus-visible{outline-offset:-2px}
/* below 520 px the menu alone (the name has no room beside it), and from 400 px down tighter entries, so the menu
   stays on one 52 px row */
@media (max-width:519.98px){.sbar-brand{display:none}}

/* ---------- citations on the landing cards (assets/cite.js) ---------- */
.rh-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.an-cite{grid-column:2;position:relative;z-index:1;margin:10px 0 0}
.an-copy{appearance:none;margin:0;font:inherit;font-size:.875rem;font-weight:600;min-height:36px;padding:5px 14px;
  border:1px solid var(--line-2);border-radius:2px;background:var(--paper);color:var(--ink-2);cursor:pointer}
.an-copy:hover,.an-copy[data-done]{border-color:var(--red);color:var(--red-ink)}


/* ---------- main menu: Analize ▾ · HospiStat 3.0 · Despre ▾ (masthead, compact bar, 404 and privacy pages) ----------
   Both dropdowns are <details>: they open and close without JavaScript and from the keyboard (Enter or Space on the
   summary); assets/nav.js adds Escape, outside click and one-open-at-a-time. */
.menu{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;margin:0 -10px}
.menu>a,.dd>summary{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:6px 10px;font-size:.9375rem;font-weight:600;
  white-space:nowrap;color:var(--mh-fg);text-decoration:none;border-bottom:2px solid transparent;cursor:pointer}
.menu>a:hover,.dd>summary:hover,.dd[open]>summary{border-bottom-color:var(--mh-fg)}
.dd{position:relative}
.dd>summary{list-style:none;-webkit-user-select:none;user-select:none}
.dd>summary::-webkit-details-marker{display:none}
.dd-car{display:block;width:12px;height:12px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s ease}
.dd[open]>summary .dd-car{transform:rotate(180deg)}
.dd-list{position:absolute;z-index:50;top:calc(100% + 6px);left:0;min-width:17.5rem;padding:4px 0;
  background:var(--mh-bg);color:var(--mh-fg);border-top:3px solid var(--mh-rule);box-shadow:0 10px 24px rgba(0,0,0,.3)}
.dd-r .dd-list{left:auto;right:0;min-width:13rem}
.dd-list ul{margin:0;padding:0;list-style:none}
.dd-list a{display:flex;align-items:center;gap:12px;min-height:44px;padding:8px 18px;color:var(--mh-fg);text-decoration:none;font-size:.9375rem;
  font-weight:600;border-top:1px solid var(--mh-line)}
.dd-list li:first-child a{border-top:0}
.dd-list a:hover{background:#000}
/* the analyses are numbered like the cards (01, 02, ...); counters follow the list, so web/order_analyses.py needs no change */
.dd-an{counter-reset:an}
.dd-an li{counter-increment:an}
.dd-an a::before,.dd-more a::before{content:counter(an,decimal-leading-zero);content:counter(an,decimal-leading-zero) / "";min-width:1.4em;
  color:var(--mh-muted);font-weight:500;font-variant-numeric:tabular-nums}
/* "Analize în lucru" under the analyses, after the dashed rule of the in-progress cards; its text lines up with the names */
.dd-more{margin:4px 0 0;border-top:2px dashed rgba(255,255,255,.72)}
.dd-more a{border-top:0}
.dd-more a::before{content:"";content:"" / ""}
.menu .menu-hs{margin:0 4px;padding:6px 14px;background:#fff;color:#000;border-bottom:0;border-radius:2px;font-weight:700}
.menu .menu-hs:hover{background:#000;color:#fff}
/* the HospiStat 3.0 logo in the box (compact lockup, light, 20 px; inlined from ~/claude/hospistat/web/brand). On hover
   the box turns black and the logo takes the dark colours. The name stays in the link as text, visually hidden next to
   the logo and shown in its place where the row has no room for it: the compact bar below 560 px (from 520 px it also
   shows „Epicriza.ro”), the masthead menu below 360 px. */
.menu-hs .hs-logo{display:block;flex:none}
.menu-hs .hs-txt{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.menu .menu-hs:hover .hs-logo [fill="#201f1d"]{fill:#e9e8e3}
.menu .menu-hs:hover .hs-logo [fill="#c8102e"]{fill:#e8384f}
.menu .menu-hs:hover .hs-logo [fill="#5f5e5a"]{fill:#a5a49a}
/* forced colours (Windows contrast themes) repaint the box and the panel but keep the drawn fills: there the logos take
   their link's colour, the theme's link colour, at rest, on hover and on focus */
@media (forced-colors:active){.hs-logo [fill]{fill:currentColor!important}}
@media (max-width:559.98px){.sbar .menu-hs .hs-logo{display:none}.sbar .menu-hs .hs-txt{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}}
@media (max-width:359.98px){.mh .menu-hs .hs-logo{display:none}.mh .menu-hs .hs-txt{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}}
@media (prefers-reduced-motion:reduce){.dd-car{transition:none}}
/* phones: a list opens as a full-width sheet under the menu row */
@media (max-width:719.98px){.mh-top{position:relative}.mh .dd{position:static}.mh .dd-list,.mh .dd-r .dd-list{left:0;right:0;top:100%;min-width:0}}
/* the menu keeps clear of the „În testare” ribbon (smaller below 720 px) wherever it may share the top row with the
   brand, as the 64 px right padding of .mh-top does from 720 px */
@media (min-width:520px) and (max-width:719.98px){.mh-top{padding-right:48px}}
/* narrow phones: tighter entries, so the three fit on one row next to the logo (bar) or under it (masthead) */
@media (max-width:399.98px){.menu{gap:2px}.menu>a,.dd>summary{padding:6px 7px;font-size:.875rem;gap:4px}
  .menu .menu-hs{margin:0 2px;padding:6px 9px}.sbar-in{gap:8px 10px}}
@media (max-width:359.98px){.sbar .menu>a,.sbar .dd>summary{padding:6px 5px;font-size:.8125rem;gap:3px}.sbar .menu .menu-hs{margin:0 1px;padding:6px 7px}}

/* ---------- HospiStat 3.0: a black panel with a red rule (the analyses' masthead grammar), above the cards ---------- */
.hs-box{display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"text" "kpi" "act";gap:22px 56px;
  padding:clamp(20px,3vw,36px) clamp(18px,3vw,40px) clamp(22px,3vw,32px);background:#111;color:#fff;border-top:6px solid #c8102e}
.hs-text{grid-area:text}
.hs-kpi{grid-area:kpi}
.hs-act{grid-area:act}
/* wide screens: text and buttons on the left, the numbers on the right */
@media (min-width:960px){.hs-box{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);grid-template-areas:"text kpi" "act kpi";grid-template-rows:auto 1fr;align-items:start}}
.hs :focus-visible{outline-color:#fff}
.hs-tag{margin:0;font-size:.875rem;color:#cfcec8}
/* the title is the logo (compact lockup, dark, 40 px, narrower on the smallest phones); a red rule under it on hover */
.hs-title{margin:8px 0 0;line-height:0}
.hs-title a{display:inline-block;max-width:100%;padding-bottom:7px;border-bottom:3px solid transparent}
.hs-title a:hover{border-bottom-color:#c8102e}
.hs-title .hs-logo{display:block;max-width:100%;height:auto}
.hs-dek{margin:12px 0 0;max-width:64ch;font-family:var(--serif);font-size:clamp(1.0625rem,1rem + .3vw,1.25rem);line-height:1.55;color:#e9e8e2;text-wrap:pretty}
.hs-by{margin:12px 0 0;font-size:.9375rem;color:#cfcec8}
.hs-by a{color:#fff;font-weight:600;text-decoration-color:#c8102e;text-decoration-thickness:2px;text-underline-offset:3px}
.hs-kpi{margin:0;display:grid;grid-template-columns:minmax(0,1fr);gap:18px 24px;align-items:start}
@media (min-width:520px){.hs-kpi{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:720px){.hs-kpi.k3{grid-template-columns:repeat(3,minmax(0,1fr))}}
.hs-kpi>div{display:flex;flex-direction:column;gap:4px;min-width:0;border-top:1px solid #44433f;padding-top:10px}
.hs-kpi dt{font-size:.875rem;line-height:1.35;color:#e9e8e2}
.hs-kpi dd{order:-1;margin:0;font-size:clamp(1.5rem,1.3rem + .9vw,2rem);line-height:1.1;font-weight:780;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}
.hs-kpi .hs-kn{order:0;margin-top:1px;font-size:.75rem;line-height:1.45;font-weight:400;letter-spacing:0;color:#a9a8a1;white-space:normal}
.hs-kpi .u{font-size:.55em;font-weight:650;letter-spacing:0;color:#cfcec8}
.hs-act{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.hs-go{display:inline-flex;align-items:center;min-height:44px;padding:8px 18px;background:#fff;color:#000;font-weight:700;text-decoration:none;border-radius:2px}
.hs-go:hover{background:#c8102e;color:#fff}
.hs-copy{appearance:none;margin:0;min-height:44px;padding:8px 16px;font:inherit;font-size:.875rem;font-weight:650;color:#fff;background:transparent;
  border:1px solid #8a8984;border-radius:2px;cursor:pointer}
.hs-copy:hover,.hs-copy[data-done]{border-color:#fff}
@media (prefers-color-scheme:dark){.hs-box{background:#0c0c0b;box-shadow:inset 0 0 0 1px #3b3a37}}

/* ---------- authors line on the analysis cards ---------- */
.an-go{grid-column:2}
.an-by{grid-column:2;margin:8px 0 0;font-size:.875rem;color:var(--muted)}

/* ---------- analyses in progress: the card grammar with a dashed rule and no link ---------- */
/* auto-fill keeps the columns of the cards above even for one card, which stays as wide as an analysis card and its
   text fills it (alone in an auto-fit row a card spans the row, its text, capped at 64ch, filling half of it) */
.wip-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,30rem),1fr));gap:12px 36px}
.wip{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 18px;align-content:start;border-top:2px dashed var(--line-2);padding:16px 12px 26px 0}
.wip .an-ic{color:var(--muted)}
.wip h3{margin:0;font-size:clamp(1.125rem,1.05rem + .35vw,1.3125rem);line-height:1.25;font-weight:720;letter-spacing:-.01em;text-wrap:balance}
.wip-st{margin-right:8px;color:var(--red-ink);font-weight:700}
.wip .an-desc a,.wip-by a{text-decoration-color:var(--red);text-decoration-thickness:2px;text-underline-offset:3px}
.wip-by{grid-column:2;margin:12px 0 0;display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:.9375rem;color:var(--ink-2)}
.wip-by a{font-weight:600}
.av{display:block;width:32px;height:32px;flex:none;border-radius:50%;object-fit:cover;background:var(--line)}
.av+.av{margin-left:-14px;box-shadow:0 0 0 2px var(--paper)}
.wip-by .av:last-of-type{margin-right:4px}

/* ---------- contributors: photo, name and affiliation, description, analyses, links ---------- */
.people{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,24rem),1fr));gap:30px 36px}
.person{display:grid;grid-template-columns:88px minmax(0,1fr);grid-template-rows:auto auto 1fr;column-gap:18px;align-content:start;
  border-top:2px solid var(--ink);padding-top:18px}
.person-photo{grid-row:1/3;margin:0;width:88px;height:88px}
.person-photo img{display:block;width:100%;height:100%;object-fit:cover;background:var(--line)}
.person-name{grid-column:2;align-self:end;margin:0;font-size:1.1875rem;line-height:1.25;font-weight:750;letter-spacing:-.01em}
.person-name.solo{grid-row:1/3;align-self:center}
.person-aff{grid-column:2;align-self:start;margin:4px 0 0;font-size:.875rem;line-height:1.45;color:var(--muted)}
.person-text{grid-column:1/-1;margin-top:14px}
.person-bio{margin:0;font-family:var(--serif);font-size:1.0625rem;line-height:1.6;max-width:70ch;text-wrap:pretty}
.person-rows{margin:14px 0 0}
.person-rows>div{padding:10px 0;border-top:1px solid var(--line)}
.person-rows dt{font-weight:650;color:var(--ink)}
.person-rows dd{margin:2px 0 0;color:var(--ink-2);text-wrap:pretty}
.person-an{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:2px 16px}
.person-an a{text-decoration-color:var(--red);text-decoration-thickness:2px;text-underline-offset:3px}

/* ---------- contributor links and pages (3 Nov 2026: web/edit_contributors.py; pages: web/contributor_pages.py) ----------
   Every credited name links to the contributor's page: the card headings, the HospiStat 3.0 block, the authors lines of
   the analyses (above the card's own link, which covers the whole card) and of the in-progress cards. */
.person-name a{text-decoration:none}
.person-name a:hover{text-decoration:underline;text-decoration-color:var(--red);text-decoration-thickness:2px;text-underline-offset:4px}
.person-bio+.person-bio{margin-top:.75em}
.an-by a{position:relative;z-index:1;font-weight:600;text-decoration-color:var(--red);text-decoration-thickness:2px;text-underline-offset:3px}
.an-by a:hover,.wip-by a:hover,.person-an a:hover{color:var(--red-ink)}
/* a contributor's page: the privacy page's masthead with a „Contributori” link above the name, then the photo beside the
   description from 720 px (above it on narrower screens), the analyses and the links of the card */
.mh-kick{margin:clamp(10px,2.4vw,26px) 0 0;font-size:.8125rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.mh-kick a{color:var(--mh-fg);text-decoration-thickness:1px;text-underline-offset:4px}
.mh-kick a:hover{text-decoration-thickness:2px}
.mh-kick+.mh-title{margin-top:-6px}
.profile{display:grid;grid-template-columns:minmax(0,1fr);gap:22px 40px;align-items:start}
@media (min-width:720px){.profile{grid-template-columns:168px minmax(0,1fr)}}
.profile-photo{margin:0;width:128px;height:128px}
@media (min-width:720px){.profile-photo{width:168px;height:168px}}
.profile-photo img{display:block;width:100%;height:100%;object-fit:cover;background:var(--line)}
.profile-text{min-width:0}
.profile .person-rows{margin-top:20px}
