/* Shared PH-R theme tokens; future pages can use these without a page-specific skin. */
:root{color-scheme:light;--paper:#f5f5f2;--surface:#fff;--soft:#ecefea;--ink:#222a24;--muted:#637067;--line:#d8dfd7;--accent:#2854ce;--blue:var(--accent);--accent-hover:#2045ac;--accent-wash:#e9efff;--recommended:#f8faff;--visual:#edf1eb;--figure-fill:#f8faf5;--card:#fafaf7;--featured:#e9edf9;--featured-hover:#e3e9fc;--featured-line:#d4dcf2;--featured-ink:#264abf;--featured-muted:#4e5872}
:root[data-theme="dark"]{color-scheme:dark;--paper:#111512;--surface:#1b211c;--soft:#202821;--ink:#edf2e9;--muted:#a7b3a8;--line:#354036;--accent:#adc1ff;--blue:var(--accent);--accent-hover:#c3d0ff;--accent-wash:#25324e;--recommended:#1a2433;--visual:#1c251e;--figure-fill:#26332a;--card:#1b211c;--featured:#1b263a;--featured-hover:#23314b;--featured-line:#384967;--featured-ink:#adc1ff;--featured-muted:#bdc8df}
@media(prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--paper:#111512;--surface:#1b211c;--soft:#202821;--ink:#edf2e9;--muted:#a7b3a8;--line:#354036;--accent:#adc1ff;--blue:var(--accent);--accent-hover:#c3d0ff;--accent-wash:#25324e;--recommended:#1a2433;--visual:#1c251e;--figure-fill:#26332a;--card:#1b211c;--featured:#1b263a;--featured-hover:#23314b;--featured-line:#384967;--featured-ink:#adc1ff;--featured-muted:#bdc8df}}
[hidden]{display:none!important}
body{background:var(--paper);color:var(--ink);isolation:isolate}
body>:where(main,section,footer,.wrap){position:relative;z-index:1}
body>header{z-index:50}
.project-card{background:var(--card);border-color:var(--line)}
.project-card.featured{background:var(--featured);border-color:var(--featured-line)}
.project-card.featured:hover{background:var(--featured-hover);border-color:var(--accent)}
.featured h2,.featured .eyebrow,.featured .feature-link{color:var(--featured-ink)}
.featured .feature-description{color:var(--featured-muted)}
.active-status{border-color:var(--featured-line);color:var(--featured-ink)}
.project-icon,.detail-heading>.project-icon,.description-grid article>p:last-child{color:var(--muted)}
.github-link{background:var(--accent-wash);border-color:var(--featured-line);color:var(--accent)}
.github-link>span:first-child{color:var(--muted)}
.github-link:hover{background:var(--featured-hover)}
:root[data-theme="dark"] img[src*="ph-r-light.svg"],:root[data-theme="dark"] .site-brand img,:root[data-theme="dark"] .site-footer img,:root[data-theme="dark"] img.vua-logo{filter:invert(1) grayscale(1)}
.theme-toggle{display:inline-grid;grid-template-columns:15px auto;align-items:center;gap:8px;color:var(--ink);border:1px solid var(--line);background:transparent;border-radius:99px;min-height:36px;padding:7px 12px;font:11px/1 var(--sans,system-ui);cursor:pointer;margin-left:8px;flex-shrink:0;white-space:nowrap}
.theme-toggle:hover{background:var(--soft)}
.theme-toggle:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
.theme-toggle .theme-icon{grid-column:1;grid-row:1;display:block;width:15px;height:15px;transition:opacity 760ms ease-in-out}
.theme-toggle .sun{opacity:0}.theme-toggle .moon{opacity:1}
[data-theme="dark"] .theme-toggle .sun{opacity:1}[data-theme="dark"] .theme-toggle .moon{opacity:0}
.theme-toggle>span{grid-column:2;grid-row:1}
.theme-toggle--floating{position:fixed;right:20px;top:20px;z-index:60;background:var(--paper);box-shadow:0 3px 16px #0002}
.theme-transition{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.theme-transition[data-source="light"]{background:#f5f5f2}.theme-transition[data-source="dark"]{background:#111512}
.theme-ray-track{position:absolute;width:0;height:0;transform:rotate(120deg)}
.theme-ray{position:absolute;left:0;background:#111512;transform-origin:0 50%;transform:scaleX(0);will-change:transform}
.theme-transition[data-target="light"] .theme-ray{background:#f5f5f2}
html[data-theme-changing] body,html[data-theme-changing] body :not(.theme-transition):not(.theme-ray-track):not(.theme-ray){transition-property:color,background-color,border-color,fill,stroke,filter,box-shadow,opacity;transition-duration:760ms;transition-timing-function:ease-in-out}
@media(max-width:1050px){.header .brand-caption{display:none}}
@media(max-width:640px){.header,.site-header{flex-wrap:wrap;height:auto;min-height:76px;row-gap:12px;column-gap:10px;padding-top:12px;padding-bottom:12px}.header>nav,.site-header>nav{margin-left:auto;gap:12px!important}.header .language-menu,.site-header .language-menu{margin-left:0!important}.header .theme-toggle,.site-header .theme-toggle{margin-left:0;min-height:33px;padding:6px 8px;gap:5px;font-size:10px}.theme-toggle--floating{top:12px;right:12px}}
@media(max-width:640px){.header,.site-header{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;row-gap:8px}.header>.brand,.site-header>.site-brand{grid-column:1;grid-row:1}.header>.theme-toggle,.site-header>.theme-toggle{grid-column:3;grid-row:1}.header>.language-menu,.site-header>.language-menu{grid-column:4;grid-row:1}.header>nav,.site-header>nav{grid-column:1/-1;grid-row:2;justify-content:flex-end;margin:0}.header>nav>a,.site-header>nav>a{padding-block:3px}.featured .feature-description{max-width:calc(100% - 105px)}}
@media(prefers-reduced-motion:reduce){.theme-transition{display:none!important}html[data-theme-changing] body,html[data-theme-changing] body *, .theme-toggle .theme-icon{transition:none!important}}
