/* Shared skeleton of the four project mini-sites. Every theme sets the variables below. */
body.pj{margin:0;background:var(--bg);color:var(--ink);font:400 1.0625rem/1.65 var(--f-body);overflow-x:hidden}
.pj h1,.pj h2,.pj h3{font-family:var(--f-display);margin:0;line-height:1.05;text-wrap:balance}
.pj p{margin:0}
.pj a{color:inherit}
.pj :focus-visible{outline:3px solid var(--acc);outline-offset:3px;border-radius:4px}
.pw{max-width:72rem;margin-inline:auto;padding-inline:max(16px,4vw)}
.ph{position:sticky;top:0;z-index:50;background:var(--hbg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.ph .pw{display:flex;align-items:center;gap:.4rem 1.25rem;padding-block:.6rem;flex-wrap:wrap}
.ph .back{font:500 .76rem var(--f-label);letter-spacing:.1em;text-transform:uppercase;text-decoration:none;color:var(--mut);white-space:nowrap}
.ph .back:hover{color:var(--acc)}
.pbrand{margin-right:auto;display:flex;align-items:center;gap:.6rem;text-decoration:none}
.ph nav{display:flex;gap:.1rem 1.15rem;flex-wrap:wrap}
.ph nav a{font:500 .76rem var(--f-label);letter-spacing:.1em;text-transform:uppercase;text-decoration:none;color:var(--mut);padding:.3rem 0;border-bottom:2px solid transparent}
.ph nav a:hover{color:var(--ink);border-color:var(--acc)}
.plang{display:flex;border:1px solid var(--line);border-radius:99px;overflow:hidden}
.plang a{font:500 .72rem var(--f-label);padding:.32rem .65rem;text-decoration:none;color:var(--mut)}
.plang a[aria-current="true"]{background:var(--acc);color:var(--on-acc)}
.sec{padding-block:clamp(3rem,8vw,6.5rem);position:relative}
.eyebrow{font:500 .76rem var(--f-label);letter-spacing:.2em;text-transform:uppercase;color:var(--acc);margin-bottom:.85rem}
.pj h2{font-size:clamp(2rem,5.2vw,3.4rem)}
.lead{margin-top:1rem;max-width:62ch;color:var(--mut);font-size:1.12rem}
.pj .btn{color:var(--on-acc)}.pj .btn.ghost{color:var(--ink)}
.btn{display:inline-block;font:600 .86rem var(--f-label);letter-spacing:.1em;text-transform:uppercase;text-decoration:none;padding:.9rem 1.5rem;border:2px solid var(--acc);background:var(--acc);color:var(--on-acc);cursor:pointer;transition:transform .2s,box-shadow .2s,background .2s,color .2s}
.btn:hover{transform:translateY(-2px)}
.btn.ghost{background:none;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--acc);color:var(--acc)}
.cta-row{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.75rem}
/* honest-status panel (every project uses it) */
.status3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(.8rem,2vw,1.25rem);margin-top:2rem}
.status3>div{min-width:0;border:1px solid var(--line);background:var(--card);padding:1.25rem 1.3rem}
.status3 h3{font:600 .8rem var(--f-label);letter-spacing:.16em;text-transform:uppercase;display:flex;align-items:center;gap:.55rem;margin-bottom:.8rem}
.status3 h3::before{content:"";width:.7rem;height:.7rem;border-radius:50%;background:var(--dot,var(--acc))}
.status3 .s-ok{--dot:#3ecf8e}.status3 .s-mid{--dot:#f5b441}.status3 .s-no{--dot:#8a90a6}
.status3 ul{margin:0;padding:0;list-style:none;display:grid;gap:.5rem;font-size:.95rem;color:var(--mut)}
.status3 li{padding-left:1rem;position:relative}
.status3 li::before{content:"";position:absolute;left:0;top:.7em;width:.4rem;height:2px;background:var(--mut)}
/* universe cards */
.uni{display:grid;grid-template-columns:repeat(auto-fit,minmax(14.5rem,1fr));gap:clamp(.9rem,2vw,1.4rem);margin-top:2rem}
.pcard{--c:var(--acc);display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-top:3px solid var(--c);text-decoration:none;color:var(--ink);overflow:hidden;transition:transform .3s,box-shadow .3s}
.pcard:hover,.pcard:focus-visible{transform:translateY(-4px);box-shadow:0 .9rem 2rem rgba(0,0,0,.35)}
.pcard .im{aspect-ratio:16/10;overflow:hidden;background:#000}
.pcard .im img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s}
.pcard:hover .im img{transform:scale(1.06)}
.pcard .tx{padding:1rem 1.15rem 1.3rem;display:flex;flex-direction:column;gap:.5rem;flex:1}
.pcard h3{font-size:1.25rem}
.pcard p{font-size:.9rem;color:var(--mut)}
.chip{align-self:flex-start;display:inline-flex;gap:.4rem;align-items:center;font:600 .66rem var(--f-label);letter-spacing:.1em;text-transform:uppercase;padding:.2rem .6rem;border:1px solid var(--c);color:var(--ink);border-radius:99px}.chip::before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:var(--c);flex:none}
.pcard .go{margin-top:auto;align-self:flex-start;font:700 .78rem var(--f-label);letter-spacing:.1em;text-transform:uppercase;color:var(--ink);border-bottom:2px solid var(--c);padding-bottom:.1rem}
.pf{border-top:1px solid var(--line);padding-block:2.5rem 3rem;color:var(--mut);font-size:.9rem}
.pf .pw{display:grid;gap:1rem}
.pf .row{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;align-items:center}
.pf a{text-decoration:none}.pf a:hover{color:var(--acc)}
.pf .fine{font-size:.8rem;max-width:70ch}
.to-voxcor{color:var(--ink)!important;font-weight:600}
@media (max-width:760px){.status3{grid-template-columns:1fr}.ph nav{order:5;width:100%}}

.pcard.dw .im img{object-position:50.pcard.dw .im img{object-position:50% 62%}
