:root{
  color-scheme: light;
  --bg:#f6f4ef; --surface:#fff; --ink:#1d2433; --ink2:#4a5468; --muted:#7a8397; --line:#e4e0d6; --hair:#ece9e0;
  --brand:#2a4a7f; --brand-ink:#fff; --accent:#2a78d6;
  --c1:#2a78d6; --c2:#eb6834; --c3:#6b7a99; --c4:#b8860b;
  --green:#0e8a6e; --tan:#d4a03c; --blue2:#2a5db0; --violet:#7a4fb5; --sky:#6cb4e8;
  --t1:#2a78d6; --t2:#0e8a6e; --t3:#d4a03c; --t4:#7a4fb5; --t5:#c0504d;
  --ok:#2e7d4f; --warn:#b26a00; --bad:#b3261e;
  --r:12px; --shadow:0 1px 2px rgba(29,36,51,.06),0 4px 14px rgba(29,36,51,.05);
  --font:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --serif:"Fraunces",Georgia,"Times New Roman",serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--font)}
h1,h2,h3{font-family:var(--serif);font-weight:600;margin:0;line-height:1.2}
h1{font-size:1.7rem} h2{font-size:1.15rem} h3{font-size:1rem}
a{color:var(--brand)}
button,select,input,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}
.skip{position:absolute;left:-999px;top:8px;background:var(--brand);color:#fff;padding:8px 12px;border-radius:8px;z-index:20}
.skip:focus{left:8px}
.shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}
.side{background:var(--brand);color:#fff;padding:20px 14px;display:flex;flex-direction:column;gap:20px;position:sticky;top:0;height:100vh}
.brand{display:flex;flex-direction:column;gap:8px;align-items:center;text-align:center}
.brand-logo{width:150px;height:auto;flex:none;filter:drop-shadow(0 1px 3px rgba(0,0,0,.35))}
.brand-mark{width:38px;height:38px;border-radius:10px;background:#fff;color:var(--brand);display:grid;place-items:center;font:600 1.3rem var(--serif)}
.brand-name{font:600 .95rem/1.2 var(--serif)}
.nav{display:flex;flex-direction:column;gap:4px}
.nav a{color:#dbe5f7;text-decoration:none;padding:10px 12px;border-radius:10px;display:flex;gap:10px;align-items:center;min-height:44px}
.nav a:hover{background:rgba(255,255,255,.12)}
.nav a[aria-current=page]{background:#fff;color:var(--brand);font-weight:600}
.nav svg{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.side-foot{margin-top:auto;font-size:.85rem}
.lang{display:flex;flex-direction:column;gap:4px;color:#dbe5f7}
.lang select{background:#fff;color:var(--ink);border:0;border-radius:8px;padding:8px;min-height:40px}
.content{padding:24px clamp(16px,3vw,40px) 60px;max-width:1200px;width:100%}
main:focus{outline:none}
.topbar{border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:20px}
.app-title{margin:0;font:600 clamp(1.25rem,2.4vw,1.6rem)/1.2 var(--serif);color:var(--brand);text-wrap:balance}
.app-title-other{margin:2px 0 0;color:var(--muted);font-size:.92rem;font-style:italic}
.banner{padding:10px 14px;border-radius:10px;margin-bottom:14px;font-size:.9rem;border:1px solid}
.banner.demo{background:#fff6e0;border-color:#f0d58a;color:#6a4a00}
.banner.warn{background:#fdecea;border-color:#f3b8b3;color:#7a1710}
.head{display:flex;flex-wrap:wrap;gap:10px 20px;align-items:baseline;justify-content:space-between;margin-bottom:18px}
.sub{color:var(--muted);font-size:.88rem}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--surface);border-radius:var(--r);padding:14px 16px;box-shadow:var(--shadow);border:1px solid var(--hair)}
.kpi .n{font:600 2rem/1.1 var(--serif);color:var(--brand)}
.kpi .l{color:var(--ink2);font-size:.85rem}
.kpi .s{color:var(--muted);font-size:.78rem;margin-top:2px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:14px}
.card{background:var(--surface);border-radius:var(--r);padding:16px;box-shadow:var(--shadow);border:1px solid var(--hair);min-width:0}
.card-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:10px}
.card-head .sub{margin-top:2px}
.btn{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:8px 14px;cursor:pointer;min-height:40px;display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:var(--ink)}
.btn:hover{background:#f1efe8}
.btn.primary{background:var(--brand);color:#fff;border-color:var(--brand)}
.btn.primary:hover{background:#223d6a}
.btn.danger{color:var(--bad);border-color:#e5b5b1}
.btn.small{min-height:32px;padding:4px 10px;font-size:.85rem}
.btn.link{border:0;background:none;color:var(--brand);padding:4px 6px;min-height:32px;text-decoration:underline}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.field{display:flex;flex-direction:column;gap:4px;min-width:150px}
.field label,.field .lab{font-size:.8rem;color:var(--ink2);font-weight:500}
.field input,.field select,.field textarea{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 10px;min-height:40px}
.field textarea{min-height:90px;resize:vertical}
.seg-ctl{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg-ctl button{border:0;background:#fff;padding:8px 12px;cursor:pointer;min-height:40px}
.seg-ctl button[aria-pressed=true]{background:var(--brand);color:#fff}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;cursor:pointer;font-size:.88rem;min-height:36px}
.chip:hover{background:#eef3fb;border-color:#bcd0ee}
.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.78rem;font-weight:500}
.pill.active{background:#e3f2e9;color:var(--ok)} .pill.deceased{background:#efe6fa;color:var(--violet)} .pill.left{background:#e3edfb;color:var(--blue2)}
table.data{width:100%;border-collapse:collapse;font-size:.9rem}
table.data th,table.data td{padding:8px 10px;border-bottom:1px solid var(--hair);text-align:left}
table.data th{font-weight:600;color:var(--ink2);font-size:.8rem;background:#faf9f5;position:sticky;top:0}
table.data .num{text-align:right;font-variant-numeric:tabular-nums}
table.data tbody tr:hover{background:#f6f9fe}
table.data a{text-decoration:none;font-weight:500}
.scroll{overflow-x:auto;max-height:70vh}
th button{all:unset;cursor:pointer}
th button:focus-visible{outline:3px solid var(--accent)}
.empty{background:var(--surface);border:1px dashed var(--line);border-radius:var(--r);padding:36px 20px;text-align:center;max-width:560px;margin:40px auto}
.empty .row{justify-content:center;margin-top:14px}
/* gráficos */
.chart{width:100%;min-height:120px}
.chart svg{display:block;max-width:100%}
.chart .grid line,.grid-line{stroke:var(--hair);stroke-width:1}
.chart .axis{stroke:var(--line)}
.chart text{font:11px var(--font);fill:var(--muted)}
.chart .lbl{fill:var(--ink2);font-size:12px}
.chart .val{fill:var(--ink);font-size:11px;font-weight:600}
.chart .bar:hover rect,.chart .col:hover rect,.chart .seg:hover{opacity:.82}
.chart .is-selected rect{stroke:var(--ink);stroke-width:1.5}
.chart g[tabindex]{cursor:default;outline:none}
.chart g[role=button]{cursor:pointer}
.chart g[tabindex]:focus-visible rect,.chart g[tabindex]:focus-visible path{stroke:var(--ink);stroke-width:2}
.chart-tip{position:fixed;z-index:50;background:#1d2433;color:#fff;padding:7px 10px;border-radius:8px;font-size:.82rem;pointer-events:none;box-shadow:var(--shadow)}
.tip-row{display:flex;gap:6px;align-items:center}
.tip-key{width:10px;height:10px;border-radius:3px;display:inline-block}
.donut-wrap{display:flex;flex-wrap:wrap;gap:16px;align-items:center;position:relative}
.donut-total{font:600 1.6rem var(--serif);fill:var(--ink)}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.84rem;color:var(--ink2);list-style:none;padding:0;margin:8px 0 0}
.legend li{display:flex;gap:6px;align-items:center}.legend .sw{width:10px;height:10px;border-radius:3px;display:inline-block;flex:none}.legend-v{font-weight:600;color:var(--ink)}.donut-wrap .legend{flex-direction:column;flex-wrap:nowrap;gap:6px}
.legend .sw,.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
/* ficha */
.person-top{display:grid;grid-template-columns:200px 1fr;gap:20px}
.photo{width:200px;aspect-ratio:1;border-radius:var(--r);background:#e9eef7;display:grid;place-items:center;overflow:hidden;color:var(--muted);text-align:center;font-size:.85rem}
.photo img{width:100%;height:100%;object-fit:cover}
dl.facts{display:grid;grid-template-columns:max-content 1fr;gap:6px 18px;margin:0}
dl.facts dt{color:var(--muted);font-size:.85rem} dl.facts dd{margin:0}
.timeline{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--line)}
.timeline li{position:relative;padding:0 0 14px 16px}
.timeline li::before{content:"";position:absolute;left:-23px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid #fff}
.timeline li.k-death::before{background:var(--violet)} .timeline li.k-exit::before,.timeline li.k-absence::before{background:var(--blue2)} .timeline li.k-dispensation::before{background:var(--green)}
.timeline time{font-weight:600;font-size:.88rem}
.summary-box{background:#eef3fb;border-left:4px solid var(--accent);padding:10px 14px;border-radius:8px;margin:12px 0}
.note{color:var(--ink2);font-size:.85rem;background:#faf9f5;border:1px solid var(--hair);padding:8px 12px;border-radius:8px}
#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;background:#1d2433;color:#fff;padding:10px 16px;border-radius:10px;transition:.25s;z-index:60;pointer-events:none}
#toast.show{opacity:1;transform:translate(-50%,0)}
#toast[data-kind=err]{background:var(--bad)}
.stack{display:flex;flex-direction:column;gap:14px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
@media (max-width:820px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;bottom:0;left:0;right:0;top:auto;height:auto;flex-direction:row;padding:6px;z-index:30;gap:0;box-shadow:0 -2px 12px rgba(0,0,0,.2)}
  .brand-name,.side-foot{display:none}.brand{flex-direction:row}.brand-logo{width:0;height:0}.brand{display:none}
  .nav{flex-direction:row;width:100%;justify-content:space-around}
  .nav a{flex-direction:column;gap:2px;font-size:.7rem;padding:6px 4px;min-height:52px;flex:1;text-align:center}
  .content{padding-bottom:96px}
  .mlang{display:block}
  .person-top{grid-template-columns:1fr} .photo{width:140px}
}
.mlang{display:none;position:absolute;right:12px;top:10px}
@media print{.topbar,.side,.btn,.banner,#banners,.mlang{display:none!important}.shell{display:block}body{background:#fff}.card{box-shadow:none}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* tarjetas de indicadores: cambian de color al tocarlas */
button.kpi{font:inherit;text-align:left;cursor:pointer;color:var(--ink);transition:background .25s,transform .2s,box-shadow .25s,color .25s;border-top:4px solid var(--tone)}
button.kpi .n,button.kpi .l,button.kpi .s{transition:color .25s}
.tone-1{--tone:var(--t1)}.tone-2{--tone:var(--t2)}.tone-3{--tone:var(--t3)}.tone-4{--tone:var(--t4)}.tone-5{--tone:var(--t5)}
button.kpi:hover,button.kpi:focus-visible,button.kpi[aria-pressed=true]{background:var(--tone);transform:translateY(-3px);box-shadow:0 8px 20px rgba(29,36,51,.18)}
button.kpi:hover .n,button.kpi:hover .l,button.kpi:hover .s,button.kpi:focus-visible .n,button.kpi:focus-visible .l,button.kpi:focus-visible .s,button.kpi[aria-pressed=true] .n,button.kpi[aria-pressed=true] .l,button.kpi[aria-pressed=true] .s{color:#fff}
.chart .lbl-big{font-size:15px;font-weight:500;fill:var(--ink)}
.chart .flag{filter:drop-shadow(0 0 1px rgba(0,0,0,.45))}
.tree{position:absolute;right:18px;top:-6px;width:72px;height:90px;overflow:visible}
.tree .trunk{stroke:#7a5a3a;stroke-width:5;stroke-linecap:round;fill:none}
.tree .leaf{animation:sway 3.2s ease-in-out infinite alternate;opacity:.95}
@keyframes sway{from{transform:rotate(-9deg) scale(.96)}to{transform:rotate(9deg) scale(1.06)}}
@media (prefers-reduced-motion:reduce){.tree .leaf{animation:none}button.kpi{transition:none}}

.portrait{margin:0;width:190px;max-width:100%}
.portrait img{width:100%;height:auto;display:block}
.age-side{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}
.age-side .legend{align-self:flex-start;margin-top:4px}

.donut-wrap{flex-wrap:nowrap;align-items:flex-start}
.donut-wrap>svg{flex:0 1 250px;width:250px;max-width:55%;height:auto}
@media (max-width:560px){.donut-wrap{flex-wrap:wrap}.donut-wrap>svg{max-width:100%}}

/* pantalla de bienvenida */
#splash{position:fixed;inset:0;z-index:100;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px;text-align:center;cursor:pointer;opacity:1;transition:opacity .8s ease}
#splash.out{opacity:0;pointer-events:none}
#splash img{width:min(420px,78vw);height:auto;animation:splashIn 1.1s ease both}
#splash h1{font-size:clamp(1.2rem,3.4vw,1.7rem);color:var(--brand);animation:splashIn 1.1s .5s ease both}
#splash p{margin:0;color:var(--muted);font-size:.85rem;animation:splashIn 1s 1.2s ease both}
@keyframes splashIn{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){#splash img,#splash h1,#splash p{animation:none}#splash{transition:none}}
.save-row{border-top:1px solid var(--hair);padding-top:12px}
.field .sub{font-size:.76rem}
#q-question{min-width:min(100%,420px)}
.first-time{border-top:1px solid var(--hair);padding-top:12px}
.first-time summary{cursor:pointer;font-weight:600;color:var(--brand);min-height:40px;display:flex;align-items:center}
.first-time form{margin-top:8px}
.confirm-wrap{display:inline-flex;flex-wrap:wrap;gap:8px;align-items:center}
.confirm-q{font-weight:500;color:var(--ink)}
.expired{color:var(--bad);font-weight:600}
.profile-text p{margin:0 0 8px;line-height:1.6;max-width:72ch}
.profile textarea{min-height:120px}
/* Santa Sede */
.vatican{border:2px solid #c9a227;background:linear-gradient(180deg,#fffaf0 0,var(--surface) 140px)}
.vat-head{display:flex;gap:14px;align-items:center}
.vat-head h2{color:#7a5c00}
.vat-emblem{flex:none}
.vat-table td,.vat-table th{vertical-align:middle}
.vat-num{width:5.5em;border:1px solid var(--line);border-radius:6px;padding:4px 6px;min-height:34px;text-align:right;background:#fff}
.vat-txt{width:12em;border:1px solid var(--line);border-radius:6px;padding:4px 6px;min-height:34px;background:#fff}
.vat-inst{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:10px;margin-top:10px}
.vatican .banner details{margin-top:6px}
/* Archivio: uscita azul, dispensa verde, decesso morado */
.pill.ev-exit{background:#e3edfb;color:var(--blue2)}
.pill.ev-dispensation{background:#dff3ec;color:var(--green)}
.pill.ev-death{background:#efe6fa;color:var(--violet)}
.archive-left{border-top:4px solid var(--blue2)}
.archive-dead{border-top:4px solid var(--violet)}
.archive-left h2{color:var(--blue2)} .archive-dead h2{color:var(--violet)}
.gone-fields:empty{display:none}
.gone-fields{background:#f6f2fb;border-radius:10px;padding:10px}
/* Formazione */
.pill.st-aspirant{background:#fdf3d8;color:#8a6200}
.pill.st-postulant{background:#e3edfb;color:var(--blue2)}
.pill.st-novice1{background:#efe6fa;color:var(--violet)}
.pill.st-novice2{background:#e6dcf7;color:#5b3592}
.pill.st-unknown{background:#fdecea;color:var(--bad)}
td.actions{white-space:nowrap}
td.actions .btn{margin-right:4px}
.form-panel{border:2px solid var(--accent)}
ul.plain{list-style:none;margin:0;padding:0}
ul.plain li{margin:0 0 2px}
.expiring{color:var(--warn);font-weight:600}
.alerts{border-left:5px solid var(--warn);background:#fff8ec}
.alerts h2{color:#8a4b00}
.alerts li{padding:3px 0}
.alerts li.expired a,.alerts li.expired{color:var(--bad)}
.alerts.renew{border-left-color:var(--violet);background:#f7f2fd}
.alerts.renew h2{color:var(--violet)}
label.check{display:flex;gap:6px;align-items:center;font-size:.85rem;min-height:40px}
/* Calendario: un color por tipo de fecha */
.ev-c-birthday{--c:#c0504d} .ev-c-renewal{--c:var(--violet)} .ev-c-jubilee{--c:#b8860b} .ev-c-service{--c:var(--blue2)} .ev-c-permit{--c:var(--warn)} .ev-c-nameday{--c:var(--green)} .ev-c-congregation{--c:#8a1c2b}
.pill[class*="ev-c-"]{background:color-mix(in srgb,var(--c) 14%,#fff);color:var(--c)}
.cal-chip[aria-pressed=true]{background:var(--c);border-color:var(--c);color:#fff}
.cal-chip[aria-pressed=false]{color:var(--c);border-color:color-mix(in srgb,var(--c) 40%,#fff)}
.cal-month{text-transform:capitalize;margin-bottom:8px}
.cal-list{list-style:none;margin:0;padding:0}
.cal-list li{display:grid;grid-template-columns:10.5em 15em 1fr;gap:4px 12px;align-items:baseline;padding:7px 0;border-bottom:1px solid var(--hair)}
.cal-list li .sub{grid-column:3}
.cal-list li.today{background:#fff8ec}
@media (max-width:700px){.cal-list li{grid-template-columns:1fr}.cal-list li .sub{grid-column:1}}
/* Movimiento del Quadro generale */
:root{--ease-out:cubic-bezier(0.23,1,0.32,1)}
.topbar.intro .app-title{animation:titleIn 1500ms var(--ease-out) both;transform-origin:left center}
.topbar.intro .app-title-other{animation:fadeUp 1200ms 650ms var(--ease-out) both}
@keyframes titleIn{from{opacity:0;transform:scale(.92) translateY(6px);letter-spacing:.06em}to{opacity:1;transform:none;letter-spacing:normal}}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.chart .bar{animation:fadeUp 800ms var(--ease-out) both;animation-delay:calc(var(--i,0) * 85ms)}
.chart .bar .mark{transform-box:fill-box;transform-origin:left center;animation:barGrow 1200ms var(--ease-out) both;animation-delay:calc(var(--i,0) * 85ms + 200ms)}
@keyframes barGrow{from{transform:scaleX(.02)}to{transform:none}}
@media (prefers-reduced-motion:reduce){.topbar.intro .app-title,.topbar.intro .app-title-other{animation:none}.chart .bar,.chart .bar .mark{animation:fadeOnly 200ms ease both}}
@keyframes fadeOnly{from{opacity:0}to{opacity:1}}
/* Calendario como agenda: letra grande, un mes por vez */
.agenda{font-size:1.05rem}
.agenda-nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px;background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:14px;box-shadow:var(--shadow)}
.agenda-month{font-size:clamp(1.5rem,3.4vw,2.1rem);text-transform:capitalize;min-width:9em;text-align:center;color:var(--brand)}
.btn.big{min-height:48px;padding:10px 18px;font-size:1rem;font-weight:600}
.agenda-block{border-top:5px solid var(--c)}
.agenda-block h2{display:flex;align-items:center;gap:8px;color:var(--c);margin-bottom:10px;font-size:1.3rem}
.agenda-count{margin-left:auto;background:var(--c);color:#fff;border-radius:999px;padding:2px 12px;font:600 .95rem var(--font)}
.agenda-table{font-size:1.02rem}
.agenda-table td,.agenda-table th{padding:10px 12px}
.agenda-day{white-space:nowrap;width:9em}
.agenda-day strong{font:600 1.5rem var(--serif);color:var(--c);margin-right:8px;vertical-align:middle}
.agenda-day span{color:var(--muted);text-transform:capitalize}
.agenda-table tr.today{background:#fff4d6}
@media print{.agenda-nav .btn,.agenda-actions,.note{display:none!important}.agenda-block{break-inside:avoid}}
/* Formazione: país arriba, 4 columnas por etapa */
.fm-top{align-items:end}
.fm-search{flex:1;min-width:min(100%,260px)}
.fm-search input{font-size:1.05rem;min-height:46px}
.fm-tabs{display:flex;flex-wrap:wrap;gap:8px}
.fm-tab{gap:10px}
.fm-tab[aria-pressed=true]{background:var(--brand);color:#fff;border-color:var(--brand)}
.fm-tab-n{background:color-mix(in srgb,currentColor 15%,transparent);border-radius:999px;padding:0 9px;font-weight:600}
.fm-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
@media (max-width:900px){.fm-board{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.fm-board{grid-template-columns:1fr}}
.fm-col{--c:#8a6200;background:#faf9f5;border:1px solid var(--hair);border-top:5px solid var(--c);border-radius:var(--r);padding:10px;min-width:0}
.fm-col.st-postulant{--c:var(--blue2)} .fm-col.st-novice1{--c:var(--violet)} .fm-col.st-novice2{--c:#5b3592}
.fm-col h3{display:flex;align-items:center;gap:8px;color:var(--c);font-size:1.1rem;margin:2px 2px 10px}
.fm-col-n{margin-left:auto;background:var(--c);color:#fff;border-radius:999px;padding:1px 10px;font:600 .9rem var(--font)}
.fm-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.fm-card{background:var(--surface);border:1px solid var(--hair);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:2px;box-shadow:var(--shadow)}
.fm-name{all:unset;cursor:pointer;font-weight:600;color:var(--ink);font-size:1rem}
.fm-name:hover{color:var(--brand);text-decoration:underline}
.fm-name:focus-visible{outline:3px solid var(--accent);border-radius:4px}
.fm-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.fm-empty{text-align:center;padding:12px 0}
