/* Montserrat (OFL-1.1), self-hosted latin + latin-ext subsets. Generated by tools/make_fonts.py */
@font-face{font-family:"Montserrat";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/montserrat-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/montserrat-latin-ext-500-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/montserrat-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/montserrat-latin-ext-600-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/montserrat-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/montserrat-latin-ext-700-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:800;font-display:swap;src:url(fonts/montserrat-latin-800-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:800;font-display:swap;src:url(fonts/montserrat-latin-ext-800-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Montserrat";font-style:italic;font-weight:500;font-display:swap;src:url(fonts/montserrat-latin-500-italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Montserrat";font-style:italic;font-weight:500;font-display:swap;src:url(fonts/montserrat-latin-ext-500-italic.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Montserrat Fallback";src:local("Arial"),local("Helvetica");size-adjust:116.31%;ascent-override:83.22%;descent-override:21.58%;line-gap-override:0.00%}
:root{
  /* brand primitives */
  --plum:#3D1455; --coral:#D9603A; --amber:#E8A630; --cream:#FDE8C8; --white:#FFFFFF;
  --sunset:linear-gradient(to bottom,var(--plum),var(--coral),var(--amber));
  /* roles, light scheme */
  --bg:#FEF5E8; --surface:#FFFFFF; --ink:#3D1455; --muted:#7A5A86;
  --line:#E1D3D2; --line-strong:#7A5A86;
  --accent:#3D1455; --accent-ink:#FDE8C8;
  --link:#3D1455; --underline:#D9603A; --focus:#3D1455;
  --soft:#FDE8C8; --ph:#FDE8C8; --mat:#3D1455;
  --foot-bg:#FFFFFF;
  --shadow:0 1px 2px rgba(61,20,85,.08),0 6px 18px rgba(61,20,85,.08);
  --sans:"Montserrat","Montserrat Fallback",system-ui,sans-serif;
  --serif:var(--sans);
  --thaana:"MV Faseyha","Faruma","MV Typewriter","Noto Sans Thaana","Noto Naskh Arabic","Geeza Pro","Arial",system-ui,sans-serif;
  /* type scale */
  --t-xs:.75rem; --t-sm:.875rem; --t-base:1rem;
  --t-md:clamp(1rem,0.9511rem + 0.2174vw,1.125rem);
  --t-lg:clamp(1.125rem,1.0272rem + 0.4348vw,1.375rem);
  --t-xl:clamp(1.75rem,1.3587rem + 1.7391vw,2.75rem);
  --w-body:500; --w-ui:600; --w-head:700; --w-display:800;
  /* space scale */
  --s1:.25rem; --s2:.5rem; --s3:.75rem; --s4:1rem; --s5:1.5rem; --s6:2rem; --s7:3rem;
  --gutter:clamp(1rem,4vw,2.5rem); --wrap:1400px; --wrap-detail:1000px;
  --r-ctl:10px; --r-box:12px; --r-pill:999px;
  --horizon:12px; --tap:44px;
  --edge:max(var(--gutter),calc((100% - var(--wrap))/2 + var(--gutter)));
}
@media (prefers-color-scheme:dark){:root{
  --bg:#3D1455; --surface:#502B66; --ink:#FDE8C8; --muted:#CDB3AB;
  --line:#775478; --line-strong:#8A6983;
  --accent:#E8A630; --accent-ink:#3D1455;
  --link:#E8A630; --underline:#E8A630; --focus:#E8A630;
  --soft:#3D1455; --ph:#3D1455; --mat:#3D1455;
  --foot-bg:#3D1455;
  --shadow:0 1px 2px rgba(0,0,0,.35),0 8px 20px rgba(0,0,0,.25);
}}
*{box-sizing:border-box}
html{color-scheme:light dark}
body{margin:0;background:var(--bg);color:var(--ink);font:var(--w-body) var(--t-base)/1.6 var(--sans);-webkit-text-size-adjust:100%}
::selection{background:var(--amber);color:var(--plum)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
a{color:var(--link);text-decoration:underline;text-decoration-color:var(--underline);text-decoration-thickness:1px;text-underline-offset:.2em}
a:hover{text-decoration-thickness:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
/* header */
.top{--focus:var(--amber);display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s5);
  padding:var(--s4) var(--edge) calc(var(--s4) + var(--horizon));
  background:linear-gradient(to bottom,var(--plum) 0,var(--plum) calc(100% - var(--horizon)),var(--coral) calc(100% - var(--horizon)/2),var(--amber) 100%)}
.brand{display:block;line-height:0;text-decoration:none}
.brand img{display:block;width:300px;max-width:100%;height:auto}
/* tagline hidden at every width (Liam, 31 Oct 2026: removed from the desktop header; phone was already hidden). Kept in the markup, unchanged. */
.tag{display:none;margin:0;color:var(--cream);font-size:var(--t-sm);font-weight:var(--w-body)}
main{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter) var(--s7)}
/* controls */
.controls{position:sticky;top:0;z-index:5;background:var(--bg);padding:var(--s3) 0 var(--s4);border-bottom:1px solid var(--line);margin-bottom:var(--s5);display:grid;gap:var(--s3)}
.search input{width:100%;font:inherit;font-size:var(--t-base);min-height:var(--tap);padding:var(--s3) var(--s4);border-radius:var(--r-ctl);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);caret-color:var(--coral)}
.search input{text-overflow:ellipsis}
.search input::placeholder{color:var(--muted);opacity:1}
.search input:hover{border-color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:var(--s2);padding:var(--s2) var(--s1);margin-inline:calc(var(--s1) * -1)}
.chip{font:inherit;font-size:var(--t-sm);font-weight:var(--w-ui);padding:0 var(--s4);min-height:var(--tap);border-radius:var(--r-pill);border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}
.chip:hover{border-color:var(--ink)}
.chip[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.row2{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s5)}
.sel{display:inline-flex;align-items:center;gap:var(--s2);color:var(--muted);font-size:var(--t-sm);font-weight:var(--w-ui)}
.sel select option{font-weight:var(--w-body)}
.sel select{font:inherit;font-size:var(--t-sm);font-weight:var(--w-body);min-height:var(--tap);padding:0 var(--s3);border-radius:var(--r-ctl);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);max-width:min(60vw,26rem)}
.chk{display:inline-flex;align-items:center;gap:var(--s2);font-size:var(--t-sm);font-weight:var(--w-body);min-height:var(--tap);cursor:pointer}
.chk input{width:20px;height:20px;accent-color:var(--accent)}
.link{font:inherit;font-size:var(--t-sm);font-weight:var(--w-ui);background:none;border:0;color:var(--ink);cursor:pointer;text-decoration:underline;text-decoration-color:var(--underline);text-decoration-thickness:1px;text-underline-offset:.2em;min-height:var(--tap);padding:0 var(--s2)}
.link:hover{text-decoration-thickness:2px}
.count{margin:0 0 0 auto;color:var(--muted);font-size:var(--t-sm);font-variant-numeric:tabular-nums}
/* grid and card */
.grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:var(--s4)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-box);overflow:hidden;box-shadow:var(--shadow);height:100%}
.card:hover{border-color:var(--underline)}
.card a{display:flex;flex-direction:column;height:100%;color:inherit;text-decoration:none}
.card a:focus-visible{outline:3px solid var(--focus);outline-offset:-3px;border-radius:var(--r-box)}
.card a:hover .nm{text-decoration:underline;text-decoration-color:var(--underline);text-decoration-thickness:2px;text-underline-offset:.2em}
.card a:hover .ph img{transform:scale(1.03)}
.ph{aspect-ratio:4/3;background:var(--ph);position:relative;overflow:hidden;display:grid;place-items:center}
.ph img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s cubic-bezier(.16,1,.3,1)}
.ph.none img{display:none}
.ph .nophoto{display:none;flex-direction:column;align-items:center;gap:var(--s2);color:var(--muted);font-size:var(--t-sm);font-weight:var(--w-body);text-align:center;padding:var(--s4)}
.ph.none .nophoto{display:flex}
.ph .nophoto svg{width:56px;height:36px}
.meta{padding:var(--s3) var(--s3) var(--s4);display:grid;gap:var(--s1);align-content:start}
.nm{margin:0;font-size:var(--t-md);line-height:1.25;font-weight:var(--w-head);color:var(--ink);text-wrap:balance;overflow-wrap:anywhere}
.sci{font-style:italic;font-weight:var(--w-body);color:var(--muted);font-size:var(--t-sm);overflow-wrap:anywhere}
.dv{margin-top:var(--s2);display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s1) var(--s3)}
.th{font-family:var(--thaana);direction:rtl;unicode-bidi:isolate;font-size:1.3rem;line-height:1.5}
.lt{color:var(--muted);font-size:var(--t-sm)}
.nodv{color:var(--muted);font-size:var(--t-sm);font-style:italic}
.empty{color:var(--muted);font-size:var(--t-base);text-align:center;padding:var(--s7) 0}
/* footer */
.foot{margin:var(--s6) 0 0;padding:var(--s6) var(--edge) var(--s7);background:var(--foot-bg);color:var(--muted);font-size:var(--t-sm);border-top:1px solid var(--line)}
.foot p{margin:var(--s2) 0;max-width:68ch}
.foot-logo{display:block;margin-bottom:var(--s5)}
.foot-logo img{display:block;width:300px;max-width:100%;height:auto}
/* detail */
#detail{max-width:var(--wrap-detail);margin:0 auto;padding-top:var(--s4)}
.back{display:inline-flex;align-items:center;gap:var(--s2);min-height:var(--tap);margin:0 0 var(--s3);font-size:var(--t-sm);font-weight:var(--w-ui)}
.hero{margin:0 0 var(--s5)}
.hero .ph{aspect-ratio:3/2;border-radius:var(--r-box);border:1px solid var(--line);background:var(--mat)}
.hero .ph img{object-fit:contain;background:transparent}
.hero .ph.none .nophoto{color:var(--cream)}
.hero figcaption{font-size:var(--t-sm);color:var(--muted);margin-top:var(--s2)}
.hero .inote{display:block;margin-top:var(--s1)}
h1.title{font-size:var(--t-xl);font-weight:var(--w-display);line-height:1.15;margin:var(--s2) 0 var(--s1);letter-spacing:-.01em;text-wrap:balance;overflow-wrap:anywhere}
.sci-l{font-style:italic;font-weight:var(--w-body);font-size:var(--t-lg);color:var(--muted);margin:0}
.snote{font-size:var(--t-sm);color:var(--muted);margin:var(--s2) 0 0;max-width:70ch}
.names{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-box);overflow:hidden;margin:var(--s5) 0}
.names>div{background:var(--surface);padding:var(--s3) var(--s4)}
.names dt,.facts dt{font-size:var(--t-xs);font-weight:var(--w-ui);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.names dt{margin-bottom:var(--s1)}
.names dd{margin:0;font-size:var(--t-base);display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s1) .7rem}
.names .th{font-size:2rem}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--s4) var(--s6);margin:0 0 var(--s5)}
.facts dd{margin:var(--s1) 0 0}
.badge{display:inline-block;padding:0 var(--s3);border-radius:var(--r-pill);font-weight:var(--w-ui);font-size:var(--t-sm);background:var(--b);color:var(--bt)}
.iucn-full{display:block;margin-top:var(--s1);color:var(--muted);font-size:var(--t-sm)}
.poss{display:inline-block;margin:var(--s2) 0 0;padding:0 var(--s3);border-radius:var(--r-pill);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font-size:var(--t-sm);font-weight:var(--w-ui)}
.b-LC{--b:#2e7d4f;--bt:#fff}.b-NT{--b:#8a9a1a;--bt:#1b2000}.b-VU{--b:#e0a800;--bt:#2a2000}.b-EN{--b:#d2691e;--bt:#2a1000}.b-CR{--b:#b3261e;--bt:#fff}.b-DD{--b:#5f6d73;--bt:#fff}.b-NA{--b:#5f6d73;--bt:#fff}
@media (prefers-color-scheme:dark){.b-LC{--b:#3aa36b;--bt:#0a2014}.b-NT{--b:#a3b52a;--bt:#1b2000}.b-VU{--b:#f0bf2e}.b-EN{--b:#e8843a;--bt:#2a1000}.b-CR{--b:#e5574e;--bt:#2a0603}.b-DD{--b:#8ea0a6;--bt:#0a1a20}.b-NA{--b:#8ea0a6;--bt:#0a1a20}}
.prose{max-width:68ch}
.prose h2{font-size:var(--t-lg);font-weight:var(--w-head);line-height:1.25;margin:var(--s6) 0 var(--s2)}
.prose p{margin:var(--s1) 0}
.src{font-size:var(--t-sm);color:var(--muted);max-width:75ch;margin-top:var(--s6)}
.srcs{padding-left:1.1rem;font-size:var(--t-sm);word-break:break-word}
.srcs li{margin:var(--s1) 0}
.srcs .lt.path{color:var(--muted)}
/* list helpers, credits, families */
.skip{position:absolute;left:var(--s3);top:-3rem;z-index:10;background:var(--accent);color:var(--accent-ink);font-weight:var(--w-ui);padding:var(--s2) var(--s4);border-radius:var(--r-ctl);transition:top .15s}
.skip:focus{top:var(--s2)}
h1.title:focus{outline:none}
#app:focus{outline:none}
.more{display:flex;justify-content:center;padding:var(--s6) 0 var(--s2)}
.morebtn{font:inherit;font-size:var(--t-sm);font-weight:var(--w-ui);padding:0 var(--s5);min-height:var(--tap);border-radius:var(--r-pill);border:2px solid var(--ink);background:var(--surface);color:var(--ink);cursor:pointer;font-variant-numeric:tabular-nums}
.morebtn:hover{background:var(--accent);color:var(--accent-ink)}
.grid:empty{min-height:40vh}
.lede{max-width:68ch;color:var(--muted);font-size:var(--t-base);margin:var(--s2) 0 var(--s5)}
.path{unicode-bidi:isolate}
.credits{list-style:none;margin:0;padding:0;columns:2 22rem;column-gap:var(--s6);font-size:var(--t-sm)}
.credits li{break-inside:avoid;padding:var(--s3) 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s1)}
.credits .cn{font-size:var(--t-md);font-weight:var(--w-head);color:var(--ink);text-decoration:none}
.credits .cn:hover,.credits .cn:focus-visible{text-decoration:underline;text-decoration-color:var(--underline);text-decoration-thickness:2px}
.credits .sci{color:var(--muted);font-size:var(--t-sm)}
.credits .cc{color:var(--ink);font-size:var(--t-sm);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.credits .cc a{white-space:nowrap}
.credits .inote{color:var(--muted);font-size:var(--t-xs);overflow-wrap:anywhere}
.credits .cn,.credits .sci{overflow-wrap:anywhere}
.cred-h{font-size:var(--t-lg);font-weight:var(--w-head);margin:var(--s6) 0 var(--s2)}
.ph.ill{background:var(--white)}
.ph.ill img{object-fit:contain;padding:.45rem .6rem}
.hero .ph.ill{background:var(--white)}
.hero .ph.ill img{background:var(--white);padding:.75rem 1rem}
.card a:hover .ph.ill img{transform:scale(1.02)}
.illtag{position:absolute;left:var(--s2);bottom:var(--s2);background:var(--white);color:var(--plum);border:1px solid var(--line-strong);border-radius:var(--r-pill);padding:0 var(--s2);font-size:var(--t-xs);font-weight:var(--w-ui);letter-spacing:.02em;line-height:1.5}
@supports(scrollbar-color:auto){html{scrollbar-color:var(--line-strong) var(--bg)}}
/* sticky controls bar height (measured) + 1rem, stepped because the control row wraps: 313px at 701-850, 261px at 900-1100, 239px at 1200, 209px at 1280 */
@media (min-width:701px){html{scroll-padding-top:21rem}}
@media (min-width:880px){html{scroll-padding-top:17.5rem}}
@media (min-width:1180px){html{scroll-padding-top:16rem}}
@media (min-width:1260px){html{scroll-padding-top:14.25rem}}
@media (max-width:700px){
  .top{padding-block:var(--s4) calc(var(--s4) + var(--horizon))}
  .controls{position:static}
  .chips{flex-wrap:nowrap;overflow-x:auto}
  .chip{white-space:nowrap}
  .grid{grid-template-columns:repeat(2,1fr);gap:var(--s3)}
  .meta{padding:var(--s3) var(--s3) var(--s4)}
  .th{font-size:1.15rem}
  .count{margin-left:0;width:100%}
  .credits{columns:1}
  .more{padding-top:var(--s5)}
  .row2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2) var(--s3)}
  .sel{display:grid;gap:var(--s1)}
  .sel select{width:100%;max-width:none}
  .chk{grid-column:1}
  #ppwrap{grid-column:1/-1}
  .row2 .link{justify-self:end;grid-column:2}
  .row2 .count{grid-column:1/-1}
}
@media (min-width:701px){.top{padding-block:var(--s5) calc(var(--s5) + var(--horizon))}.meta{padding:var(--s3) var(--s4) var(--s4)}}
@media (max-width:380px){.grid{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
[hidden]{display:none!important}
