/* MDMTMR theme, based on the V3 "Editorial" design. */
:root{--bg:#f6f3ec;--card:#fff;--ink:#111;--mut:#6b6760;--line:#e3ddd0;--navbg:#111;--navink:#f6f3ec;--osbg:#111;--osfg:#fff;--nav-w:280px}
:root.dark{--bg:#121315;--card:#1c1e21;--ink:#f1efe9;--mut:#9a978f;--line:#2c2f33;--navbg:#0a0b0c;--navink:#f1efe9;--osbg:#f1efe9;--osfg:#111}
@media (prefers-color-scheme:dark){:root:not(.light){--bg:#121315;--card:#1c1e21;--ink:#f1efe9;--mut:#9a978f;--line:#2c2f33;--navbg:#0a0b0c;--navink:#f1efe9;--osbg:#f1efe9;--osfg:#111}}
:root{color-scheme:light}:root.dark{color-scheme:dark}
@media (prefers-color-scheme:dark){:root:not(.light){color-scheme:dark}}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;min-height:100vh;color:var(--ink);font:15px/1.5 "Inter",system-ui,sans-serif;display:grid;grid-template-columns:var(--nav-w) minmax(0,1fr);background:linear-gradient(to right,var(--navbg) var(--nav-w),var(--bg) var(--nav-w))}
a{color:inherit;text-decoration:none}
/* sidebar */
.nav{position:sticky;top:0;height:100vh;background:var(--navbg);color:var(--navink);padding:32px 26px;display:flex;flex-direction:column;overflow:auto}
.brand{display:block;margin:0 0 30px 2px}
.brand img{display:block;width:189px;height:auto}
.lbl{font:600 11px "Inter";letter-spacing:.14em;text-transform:uppercase;color:#8d8a83;margin:20px 0 10px}
.nav ul{list-style:none;margin:0;padding:0}
.nav li a{display:flex;align-items:center;gap:12px;padding:7px 10px;border-radius:8px;font-weight:500;white-space:nowrap;font-size:14.5px}
.nav li a:hover{background:#ffffff12}
.nav li a b{font:700 12px "JetBrains Mono";color:var(--c);width:22px}
.nav li a .ico{flex:none;width:22px;color:var(--c);justify-content:center}
.nav li a .nc{margin-left:auto;font:12px "JetBrains Mono";color:#8d8a83}
.nav li a.on{background:#ffffff14;box-shadow:inset 3px 0 0 var(--c,#f6f3ec)}
.plain li a{padding:6px 10px;color:#cfccc4;font-weight:400}
.mode{margin-top:auto;font:500 13px "Inter";background:transparent;color:var(--navink);border:1px solid #3a3a3a;border-radius:999px;padding:9px 14px;text-align:left;cursor:pointer}
main{padding:0 56px 40px;min-width:0}
/* hero */
.hero{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:64px;align-items:end;padding:56px 0 44px;border-bottom:3px solid var(--ink);margin-bottom:12px}
.kick{font:600 12px "JetBrains Mono";letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin:0 0 14px}
.kick a.kcat{display:inline-flex;align-items:center;gap:6px;color:inherit}.kick a.kcat .ico{color:var(--c);flex:none}
.kick a:hover{color:var(--ink)}
h1{font:800 104px/.92 "Bricolage Grotesque",sans-serif;letter-spacing:-.035em;margin:0}
h1 em{font-style:normal;background:linear-gradient(90deg,#ff5c39,#ffc531 50%,#2ec4a6);-webkit-background-clip:text;background-clip:text;color:transparent}
.intro{font-size:21px;line-height:1.45;margin:0 0 28px;max-width:40ch}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.filters span{font:600 12px "JetBrains Mono";text-transform:uppercase;letter-spacing:.1em;color:var(--mut);margin-right:6px}
.filters button{font:500 13px "Inter";border:1.5px solid var(--ink);background:transparent;color:var(--ink);border-radius:999px;padding:7px 15px;cursor:pointer}
.filters button.on{background:var(--ink);color:var(--bg)}
.empty{padding:40px 0;color:var(--mut)}
/* category sections + cards — packed catflow; cards fill the row height */
.catflow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:18px;align-items:stretch}
section.cat{padding:34px 0 10px;scroll-margin-top:12px;min-width:0;display:flex;flex-direction:column}
.cat.span-1{grid-column:span 1}.cat.span-2{grid-column:span 2}.cat.span-3{grid-column:span 3}.cat.span-4{grid-column:span 4}
.cat .grid{grid-template-columns:repeat(var(--n,4),minmax(0,1fr));flex:1;align-content:stretch;grid-auto-rows:1fr}
.sh{display:grid;grid-template-columns:auto minmax(min-content,1fr) auto;column-gap:14px;align-items:center;margin-bottom:18px;min-width:max-content}
.ico{color:var(--c);display:flex}.ico svg{display:block}
.sh h2{font:800 34px/1 "Bricolage Grotesque";letter-spacing:-.02em;margin:0;white-space:nowrap;min-width:min-content}.sh .cnt{color:var(--mut);white-space:nowrap;text-align:right}
.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.card{background:var(--card);border:1px solid var(--line);border-top:5px solid var(--c);border-radius:4px 4px 12px 12px;padding:18px 20px 16px;display:flex;flex-direction:column;min-height:196px;height:100%;box-sizing:border-box}
.ct{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.lt{flex:none;width:34px;height:34px;border-radius:9px;background:var(--c);color:#111;display:grid;place-items:center;font:800 17px "Bricolage Grotesque"}
.card h3{font:700 18px/1.2 "Inter Tight","Inter";margin:0}
.card h3 a:hover{text-decoration:underline;text-decoration-color:var(--c);text-underline-offset:3px}
.spdx{display:block;font:500 11.5px/1.3 "JetBrains Mono";color:var(--mut);margin-top:3px}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;align-items:center}
.tag{font:600 11.5px/1 "Inter";padding:5px 9px;border-radius:999px;white-space:nowrap}
.tag.t-os{background:var(--osbg);color:var(--osfg)}
.tag.t-sa{border:1.5px dashed currentColor;padding:3.5px 8px}
.tag.t-sh{background:color-mix(in srgb,var(--c) 22%,transparent)}
.tag.t-app{border:1.5px solid var(--line);padding:3.5px 8px}
.card p{margin:0 0 14px;color:var(--mut);font-size:14px;line-height:1.5}
.nonote{opacity:.6;font-style:italic}
.lnk{font:500 12.5px "JetBrains Mono";border-top:1px solid var(--line);padding-top:12px;display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;margin-top:auto}
.lnk a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lnk a:hover{color:var(--c);filter:brightness(.8)}
/* hostname always on its own line; level left, repo→ right on the line below */
.lnk .web{flex:1 1 100%;min-width:0;overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}
.lnk .repo{margin-left:auto;flex:none;color:var(--mut);white-space:nowrap}
.lnk .more{flex:none;color:var(--c);white-space:nowrap}
/* project + about pages */
.phead{display:grid;grid-template-columns:1fr;gap:22px;align-items:start;padding:56px 0 36px;border-bottom:3px solid var(--ink)}
.phead h1{font-size:96px;display:flex;align-items:center;gap:26px}
.phead h1 .lt{width:84px;height:84px;border-radius:20px;font-size:46px;letter-spacing:0}
.phead .intro{font:500 24px/1.42 "Inter";max-width:58ch;margin:0;color:var(--ink);padding-left:0;border-left:0}.phead.proj .intro{padding-left:20px;border-left:5px solid var(--c)}
.body-wrap{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:64px;padding-top:36px}
.prose{font-size:17px;line-height:1.65;max-width:72ch}
.prose h2{font:800 26px/1.1 "Bricolage Grotesque";letter-spacing:-.01em;margin:34px 0 10px}
.prose h2:first-child{margin-top:0}
.prose p{margin:0 0 14px}
.prose a{text-decoration:underline;text-decoration-color:var(--c,currentColor);text-underline-offset:3px;overflow-wrap:anywhere}
.prose code,.facts code{font:500 .86em "JetBrains Mono";background:color-mix(in srgb,var(--ink) 7%,transparent);padding:1px 5px;border-radius:4px}
.facts{background:var(--card);border:1px solid var(--line);border-top:5px solid var(--c);border-radius:4px 4px 12px 12px;padding:8px 24px 10px;align-self:start}
.facts dl{margin:0;display:grid;grid-template-columns:150px minmax(0,1fr)}
.facts dt,.facts dd{padding:12px 0;border-bottom:1px solid var(--line);margin:0}
.facts dt{font:600 11.5px/1.6 "JetBrains Mono";text-transform:uppercase;letter-spacing:.08em;color:var(--mut)}
.facts dd{font-size:15px;overflow-wrap:anywhere}
.facts dd a{text-decoration:underline;text-decoration-color:var(--c);text-underline-offset:3px}
.facts dl>:nth-last-child(-n+2){border-bottom:0}
.facts .tags{margin:6px 0 0}
.sources{margin:30px 0 0;padding-top:20px;border-top:1px solid var(--line)}
.sources h2{margin-top:0}
.sources ol{margin:0;padding-left:22px;font:14px/1.7 "JetBrains Mono"}
.back{display:inline-block;margin-top:30px;font:500 13px "JetBrains Mono"}
.back:hover{text-decoration:underline}
/* footer */
.foot{display:flex;justify-content:space-between;gap:30px;margin-top:44px;padding-top:16px;border-top:3px solid var(--ink);font-size:13px;color:var(--mut)}
.foot p{margin:0}.foot a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
/* smaller desktops */
@media (max-width:1700px){:root{--nav-w:264px}.nav{padding:28px 20px}main{padding:0 40px 40px}h1{font-size:84px}.phead h1{font-size:76px}.hero,.body-wrap{gap:44px}.intro{font-size:19px}.phead .intro{font-size:22px}.omk-head{gap:44px}.grid{gap:14px}.card{padding:16px 16px 14px}}
@media (max-width:1280px){.catflow{display:block}.cat .grid,.grid{grid-template-columns:repeat(3,minmax(0,1fr))}.hero,.phead,.body-wrap{grid-template-columns:1fr}}
@media (max-width:960px){body{display:block;background:var(--bg)}.nav{position:static;height:auto}.mode{margin-top:20px}.cat .grid,.grid{grid-template-columns:repeat(2,minmax(0,1fr))}main{padding:0 22px 30px}h1,.phead h1{font-size:60px}.foot{flex-direction:column}}
@media (max-width:600px){.cat .grid,.grid{grid-template-columns:minmax(0,1fr)}h1,.phead h1{font-size:46px}.facts dl{grid-template-columns:1fr}.facts dt{border-bottom:0;padding-bottom:0}}

/* mobile: compact horizontally scrolling category chips; desktop V3 unchanged */
@media (max-width: 640px) {
  .nav { padding: 16px 14px 14px; }
  .brand { margin: 0 0 14px 2px; }
  .brand img { width: 148px; }
  .nav > .lbl { margin: 0 0 8px; }
  .nav .cats + .lbl { margin-top: 16px; }
  .nav .cats {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 8px;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    margin: 0 0 14px;
    padding: 2px 0 6px;
  }
  .cats::-webkit-scrollbar { display: none; width: 0; height: 0; }
  .cats li { flex: 0 0 auto; }
  .cats li a {
    padding: 8px 12px;
    border-radius: 999px;
    border: 1px solid #3a3a3a;
    background: #ffffff0a;
    gap: 8px;
    font-size: 13px;
  }
  .cats li a b { width: auto; font-size: 11px; }
  .cats li a .ico { width: auto; }
  .cats li a .nc { margin-left: 0; }
  .cats li a.on { box-shadow: inset 0 0 0 1.5px var(--c, #f6f3ec); }
  .plain {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 2px;
    margin: 0 0 8px;
  }
  .plain li a { padding: 5px 10px; font-size: 13px; }
  .mode { margin-top: 8px; padding: 8px 12px; }
  main { padding: 0 16px 28px; }
  .hero { padding: 28px 0 28px; gap: 28px; }
  .intro { font-size: 17px; margin-bottom: 18px; }
}

/* v1.2: project icons, audience indicator, screenshots, funding, funders page */
.lt.ic{background:var(--icbg,#f1efe9);padding:5px;overflow:hidden}
.lt.ic img{display:block;width:100%;height:100%;object-fit:contain}
:root.dark .lt.ic{--icbg:#f1efe9}
.phead h1 .lt.ic{padding:12px}
.card p{font-size:14px;line-height:1.55}
.lnk .aud{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--mut);font:500 11.5px "JetBrains Mono"}
.aud-l{font:500 13px "JetBrains Mono";color:var(--mut)}
.facts .sub{font-size:12.5px;color:var(--mut);margin-top:4px;overflow-wrap:normal}
.facts .fund{margin:0;padding-left:18px}
.facts .fund li+li{margin-top:6px}
.filters+.filters{margin-top:10px}
.prose pre{background:color-mix(in srgb,var(--ink) 6%,transparent);border:1px solid var(--line);border-radius:8px;padding:12px 14px;overflow-x:auto;font:500 13.5px/1.55 "JetBrains Mono";margin:0 0 14px}
.prose pre code{background:none;padding:0;font:inherit}
.prose ol,.prose ul{padding-left:24px;margin:0 0 14px}
.prose li+li{margin-top:4px}
.shot{margin:22px 0 26px}
.shot img{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:contain;border:1px solid var(--line);border-radius:6px;background:#ece8e0}
.shot figcaption{font-size:13.5px;color:var(--mut);margin-top:8px;line-height:1.5}
.shot .cr{display:block;font:12px/1.5 "JetBrains Mono"}
.shot code,.facts dd code{font-size:.9em}
.funder{padding-bottom:26px;margin-bottom:26px;border-bottom:1px solid var(--line);scroll-margin-top:12px}
.funder h2{font-size:34px}
.funder .fmeta{font:500 13px "JetBrains Mono";color:var(--mut)}
.funder blockquote{margin:0 0 16px;padding:4px 0 4px 18px;border-left:4px solid var(--ink);font-size:19px;line-height:1.45}
.funder blockquote p{margin:0 0 6px}
.funder blockquote footer{font-size:13px;color:var(--mut)}
.funder h3{font:700 17px "Inter Tight","Inter";margin:22px 0 8px}
.fsrc{margin:14px 0 4px!important;font-size:13px;color:var(--mut)}
.flist{font:13px/1.7 "JetBrains Mono";padding-left:22px!important}
@media (max-width:640px){.lnk .aud{order:2}.lnk .repo{order:3}.lnk .more{order:4}.phead .intro{font-size:19px}.phead.proj .intro{padding-left:14px;border-left-width:4px}.phead h1 .lt{width:64px;height:64px}.phead h1{gap:16px}}
/* omakase: menu card */
.omk-head h1 .jp{font:400 .32em/1 "Inter",sans-serif;letter-spacing:.08em;color:var(--mut);vertical-align:.9em;margin-left:.2em}
.omakase{max-width:860px;margin:0 auto;padding:30px 0 10px}
.course{margin:26px 0 40px}
.course h2{font:800 44px/1 "Bricolage Grotesque";letter-spacing:-.02em;margin:0 0 16px;padding-bottom:12px;border-bottom:3px double var(--ink);display:flex;align-items:baseline;gap:16px}
.course h2 .cn{font:600 14px "JetBrains Mono";color:var(--mut);letter-spacing:.1em}
.course h2 .cl{font:500 12px "JetBrains Mono";color:var(--mut);letter-spacing:.12em;text-transform:uppercase;margin-right:-4px}
.course h2 .cl::after{content:" ·"}
.menu{list-style:none;margin:0;padding:0}
.on-row{display:grid;grid-template-columns:260px minmax(0,1fr);gap:24px;align-items:baseline;padding:14px 0;border-bottom:1px dotted var(--line)}
.on-head{display:flex;align-items:center;gap:12px;align-self:center}
.on-head .lt{width:30px;height:30px;border-radius:8px;font-size:15px;background:var(--ink);color:var(--bg)}
.on-head .lt.ic{background:#f1efe9}
.on-name{font:700 18px/1.2 "Inter Tight","Inter"}
.on-name:hover{text-decoration:underline;text-underline-offset:3px}
.on-why{margin:0;font-size:16px;line-height:1.5}
.on-note{display:block;margin-top:4px;font-size:13.5px;font-style:italic;color:var(--mut)}
@media (max-width:640px){.on-row{grid-template-columns:1fr;gap:6px}.course h2{font-size:34px}.omk-head h1 .jp{display:inline-block;white-space:nowrap}.course h2{flex-wrap:wrap;row-gap:4px}}
.omk-head{grid-template-columns:1fr;gap:18px}
.omk-head{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:64px;align-items:end;padding-bottom:40px}.omk-head .intro{font:400 21px/1.45 "Inter";max-width:60ch;padding-left:0;border-left:0;color:inherit}
.on-head .lt.ic{background:#fff;box-shadow:none}
.callout{margin:0 0 16px;padding:12px 16px;border-left:4px solid var(--c,var(--ink));background:color-mix(in srgb,var(--c,var(--ink)) 9%,transparent);border-radius:0 8px 8px 0;font-size:15.5px}
.callout p{margin:0}.callout p+p{margin-top:8px}
/* filter bar: labelled groups (License | Runs as, then For) */
.filterbar{display:flex;flex-direction:column;gap:16px}
.frow{display:flex;align-items:flex-end;gap:22px;flex-wrap:wrap}
.fgroup{display:flex;flex-direction:column;gap:8px;min-width:0}
.flabel{font:500 11px "JetBrains Mono";letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
.pills{display:flex;gap:8px}
.pills button{font:500 13px "Inter";border:1.5px solid var(--ink);background:transparent;color:var(--ink);border-radius:999px;padding:7px 15px;cursor:pointer;white-space:nowrap}
.pills button[data-sa]{border-style:dashed}
.pills button.on{background:var(--ink);color:var(--bg);border-style:solid}
.pills .dots{font-size:10px;letter-spacing:-.05em;margin-right:4px}
.fdiv{align-self:stretch;width:1px;background:var(--line)}
.freset{font:500 13px "Inter";background:none;border:0;padding:7px 4px;color:var(--mut);cursor:pointer;align-self:flex-end}
.freset:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.empty{display:flex;gap:10px;align-items:baseline}
.empty .freset{padding:0;align-self:auto;text-decoration:underline;text-underline-offset:3px}
@media (max-width:600px){
  .filterbar > .frow{display:contents}
  .filterbar{gap:14px}
  .fdiv{display:none}
  .pills{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;margin-right:-16px;padding-right:0}
  .pills::after{content:"";flex:0 0 16px}
  .fgroup{position:relative}
  .fgroup::after{content:"";position:absolute;right:-16px;bottom:0;width:40px;height:var(--ph,34px);background:linear-gradient(to right,transparent,var(--bg));pointer-events:none;opacity:0;transition:opacity .15s}
  .fgroup.more::after{opacity:1}
  .pills::-webkit-scrollbar{display:none}
  .filterbar>.frow>.freset{align-self:flex-start;padding:0}
}
.hero>*{min-width:0}
.filterbar,.fgroup{max-width:100%}
@media (max-width:1280px){.hero{grid-template-columns:minmax(0,1fr)}}

/* logo tiles: fixed tile, fixed pixel-size logo (robust in WebKit/Safari, where a percentage height
   on an <img> grid item can resolve against the SVG's intrinsic size), optional optical scale */
.lt.ic{box-sizing:border-box;padding:0;overflow:hidden;display:grid;place-items:center;line-height:0}
.lt.ic img{display:block;flex:none;box-sizing:border-box;max-width:100%;max-height:100%;object-fit:contain;transform:scale(var(--s,1));transform-origin:center}
.lt.ic-card img{width:24px;height:24px}
.lt.ic-omakase img{width:20px;height:20px}
.phead h1 .lt.ic{padding:0}
.lt.ic-dossier img{width:60px;height:60px}
@media (max-width:600px){.lt.ic-dossier img{width:40px;height:40px}}

/* v2.1: setup steps/clarity + Watch out callouts */
.setup-meta{margin:0 0 14px;font:500 13.5px "JetBrains Mono",ui-monospace,monospace;letter-spacing:.02em;color:var(--mut)}
.setup-card{margin:-4px 0 12px;font-size:12.5px}
.callout-watch{--c:#c47a12;border-left-color:#c47a12}
.callout-watch p{color:var(--ink)}

/* Omakase marker, variant B: ink frame + tab on the card's top edge */
.card.omk{position:relative;box-shadow:none;border:2px solid var(--ink);border-top:5px solid var(--c);padding:17px 19px 15px}
.grid:has(.card.omk){row-gap:32px}
.omk-badge{display:inline-flex;align-items:center;gap:6px;font:600 10px/1 "JetBrains Mono",monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--bg);background:var(--ink);border-radius:4px 4px 0 0;padding:5px 8px 4px;white-space:nowrap;text-decoration:none}
.omk-badge span{font:700 1.05em/1 "Noto Serif CJK JP",serif;letter-spacing:0;text-transform:none}
.omk-badge:hover{background:color-mix(in srgb,var(--ink) 82%,transparent)}
.card .omk-badge{position:absolute;top:-5px;right:14px;transform:translateY(-100%);margin:0}
.phead .omk-badge{margin-top:16px;font-size:11.5px;padding:6px 10px 5px;border-radius:4px}
@media (max-width:1700px){.card.omk{padding:15px 15px 13px}}


/* v2.3.13: optional Code Fireworks tile on dossier headers (variant B1) */
.phead.has-cfx{grid-template-columns:minmax(0,1fr) 270px;column-gap:44px;align-items:start}
.phead.has-cfx .intro{grid-column:1}
.cfx{grid-column:2;grid-row:1 / span 2;align-self:start;margin:0;background:#111;border-radius:18px;padding:10px 10px 12px;width:270px}
.cfx img{width:250px;height:250px;display:block;border-radius:10px;object-fit:cover;background:#111}
.cfx figcaption{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font:500 11px/1.3 "JetBrains Mono",monospace;letter-spacing:.06em;text-transform:uppercase;color:#9a978f;margin:8px 4px 0}
.cfx a{color:#f6f3ec;text-decoration:none;white-space:nowrap}
.cfx a:hover{color:var(--c,#ff5c39)}
@media (max-width:1279px){
  .phead.has-cfx{grid-template-columns:1fr;column-gap:22px}
  .phead.has-cfx .cfx{display:none}
}


/* v2.4.0: catalog search field + dossier magnifier */
/* .hside holds intro + search; filterbar sits below the hero rule. */
.hside{display:flex;flex-direction:column}
.fsearch-row{align-items:stretch;width:100%;margin:0 0 18px}
.fsearch{flex:1 1 100%;max-width:420px;width:100%}
.fsearch .flabel{display:block;margin-bottom:8px}
.fsearch input[type="search"]{
  display:block;width:100%;box-sizing:border-box;
  font:500 15px/1.3 "Inter",system-ui,sans-serif;color:var(--ink);
  background:var(--card);border:1.5px solid var(--ink);border-radius:10px;
  padding:10px 14px;outline:none;
}
.fsearch input[type="search"]::placeholder{color:var(--mut);opacity:1}
.fsearch input[type="search"]:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--ink) 18%,transparent)}
.fsearch input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.psearch{display:inline-flex;align-items:center;justify-content:center;margin-left:10px;vertical-align:middle;color:var(--ink);padding:0;line-height:0}
.psearch:hover{opacity:.72}
.psearch svg{display:block;width:14px;height:14px}
@media (max-width:1279px){
  .fsearch{max-width:none}
  .fsearch-row{margin:0 0 16px}
}

/* v2.5.0: compact homepage header. Stats removed; filter pills on one row below the hero rule. */
.hero{padding:48px 0 36px;margin-bottom:0}
.hside{justify-content:flex-end}
.hside>.intro{margin-bottom:22px}
.hside>.fsearch-row{margin:0}
.filterbar{flex-direction:row;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;padding:18px 0 4px;margin-bottom:6px}
.filterbar>.frow{display:contents}
.filterbar .pills{gap:6px}
.filterbar .pills button{padding:6px 11px;font-size:12.5px}
.filterbar .freset{flex:1 0 100%;margin-left:auto;padding:6px 0;font-size:12.5px;text-align:right;align-self:flex-end}
@media (max-width:1279px){
  .fsearch-row{margin:0 0 16px}
}

/* A10: more projects in the same category (dossier) */
.more-cat{margin:28px 0 8px;padding-top:20px;border-top:1px solid var(--line)}
.more-cat h2{font:700 18px/1.3 "Inter Tight","Inter";margin:0 0 10px}
.more-cat ul{margin:0;padding-left:18px}
.more-cat li{margin:4px 0}
.more-cat a:hover{text-decoration:underline;text-decoration-color:var(--c);text-underline-offset:3px}
