:root {
  --site-bg:#000000;
  --site-fg:#f5f5f5;
  --site-muted:#919195;
  --site-line:rgba(255,255,255,.14);
  --site-surface:#101011;
  --site-overlay:rgba(0,0,0,.82);
  --site-control:rgba(14,14,15,.76);
  --site-control-border:rgba(255,255,255,.2);
  --site-fg-4:rgba(245,245,245,.04);
  --site-fg-8:rgba(245,245,245,.08);
  --site-fg-9:rgba(245,245,245,.09);
  --site-fg-12:rgba(245,245,245,.12);
  --site-fg-28:rgba(245,245,245,.28);
  --site-fg-58:rgba(245,245,245,.58);
  --site-bg-94:rgba(0,0,0,.94);
  --site-bg-96:rgba(0,0,0,.96);
  --site-line-strong:rgba(245,245,245,.36);
}

html[data-theme="light"] {
  --site-bg:#ffffff;
  --site-fg:#050505;
  --site-muted:#66666b;
  --site-line:rgba(5,5,5,.16);
  --site-surface:#ffffff;
  --site-overlay:rgba(255,255,255,.88);
  --site-control:rgba(255,255,255,.86);
  --site-control-border:rgba(5,5,5,.18);
  --site-fg-4:rgba(5,5,5,.04);
  --site-fg-8:rgba(5,5,5,.08);
  --site-fg-9:rgba(5,5,5,.09);
  --site-fg-12:rgba(5,5,5,.12);
  --site-fg-28:rgba(5,5,5,.28);
  --site-fg-58:rgba(5,5,5,.58);
  --site-bg-94:rgba(255,255,255,.94);
  --site-bg-96:rgba(255,255,255,.96);
  --site-line-strong:rgba(5,5,5,.36);
  --black:#ffffff;
  --near-black:#f7f7f7;
  --white:#050505;
  --paper:#ffffff;
  --muted:#66666b;
  --line:rgba(5,5,5,.16);
  --accent:#050505;
}

html,body { background:var(--site-bg); }
body { color:var(--site-fg); transition:color .45s ease,background-color .45s ease; }

.theme-curtain {
  position:fixed;
  z-index:200;
  inset:0;
  pointer-events:none;
  -webkit-backdrop-filter:invert(1);
  backdrop-filter:invert(1);
  will-change:clip-path;
}
.theme-curtain-mask {
  position:fixed;
  width:0;
  height:0;
  overflow:hidden;
  pointer-events:none;
}
.site-preferences {
  position:fixed; z-index:110; top:max(.85rem,env(safe-area-inset-top)); right:max(.85rem,env(safe-area-inset-right));
  display:flex; align-items:center; gap:.35rem; padding:.3rem; border:1px solid var(--site-control-border);
  border-radius:999px; color:var(--site-fg); background:var(--site-control);
  box-shadow:0 .8rem 3rem rgba(0,0,0,.16),inset 0 0 0 1px var(--site-fg-4);
  contain:layout style; isolation:isolate;
  transition:color .45s,background-color .45s,border-color .45s,transform .35s cubic-bezier(.22,1,.36,1);
}
.site-preferences:hover { transform:translateY(-1px); }
.preference-button {
  position:relative; min-width:2.45rem; height:2.45rem; display:grid; place-items:center; padding:0 .65rem;
  border:0; border-radius:999px; color:inherit; background:transparent; cursor:pointer;
  font-size:.59rem; font-weight:500; letter-spacing:.13em; text-transform:uppercase;
  transition:color .25s,background-color .25s,transform .25s;
}
.preference-button:hover,.preference-button:focus-visible,.preference-button[aria-expanded="true"] {
  color:var(--site-bg); background:var(--site-fg); outline:none;
}
.preference-button:active { transform:scale(.94); }
.theme-toggle {
  min-width:5.65rem; padding:.2rem .72rem; overflow:hidden;
  border:1px solid var(--site-fg-12);
  background:var(--site-fg-4);
}
.theme-toggle:hover,.theme-toggle:focus-visible {
  color:var(--site-fg); background:var(--site-fg-9);
  border-color:var(--site-fg-28); outline:none;
}
.theme-label {
  position:relative; z-index:2; width:4.05rem; text-align:center; white-space:nowrap;
  transition:letter-spacing .4s cubic-bezier(.22,1,.36,1),opacity .3s,transform .4s cubic-bezier(.22,1,.36,1);
}
.theme-toggle:hover .theme-label,.theme-toggle:focus-visible .theme-label { letter-spacing:.2em; }
.language-menu {
  position:absolute; top:calc(100% + .55rem); right:0; min-width:8.5rem; display:grid; gap:.2rem; padding:.35rem;
  visibility:hidden; opacity:0; border:1px solid var(--site-control-border); border-radius:1rem;
  color:var(--site-fg); background:var(--site-control); box-shadow:0 1rem 3rem rgba(0,0,0,.2);
  transform:translateY(-.35rem) scale(.97);
  transform-origin:top right; transition:opacity .2s,visibility .2s,transform .3s cubic-bezier(.22,1,.36,1);
}
.language-menu.is-open { visibility:visible; opacity:1; transform:none; }
.language-option {
  display:flex; justify-content:space-between; align-items:center; gap:1rem; min-height:2.5rem; padding:0 .8rem;
  border:0; border-radius:.7rem; color:inherit; background:transparent; cursor:pointer;
  font-size:.62rem; letter-spacing:.12em; text-transform:uppercase;
}
.language-option:hover,.language-option:focus-visible,.language-option[aria-current="true"] {
  color:var(--site-bg); background:var(--site-fg); outline:none;
}
.language-option span:last-child { opacity:.55; }

/* A single palette drives every screen. The logo geometry and its timings stay untouched. */
.hero,.photos,.posts,.works,.cv-callout,.site-footer {
  color:var(--site-fg); background-color:var(--site-bg);
  transition:color .45s ease,background-color .45s ease,border-color .45s ease;
}
.posts .kicker,.posts .section-head > p,.post-meta,.post-copy p,
.cv-copy .kicker,.cv-summary,.cv-detail-label,.cv-inline-details article > p:last-child,
.site-footer > p,.footer-sections,figcaption,.work-info p { color:var(--site-muted); }
.posts .kicker > span,.cv-copy .kicker span { background:var(--site-fg); }
.post-list,.post-row,.cv-inline-details article,.site-footer,figcaption,.work-info { border-color:var(--site-line); }
.round-link { color:var(--site-fg); border-color:var(--site-line); }
.round-link:hover { color:var(--site-bg); background:var(--site-fg); }
.pill-dark { color:var(--site-bg); background:var(--site-fg); }
.pill-dark:hover { color:var(--site-bg); background:var(--site-fg); border-color:transparent; transform:none; }
.pill-dark:active { transform:scale(1.04); }
.section-view-open.section-light .site-header {
  color:var(--site-fg); border-color:var(--site-line); background:var(--site-bg-94);
}
.section-light .brand-logo .mini-logo :is(.logo-flow,.logo-point) use { stroke:var(--site-fg); }
.section-light .brand-logo .mini-logo .logo-flow use { filter:none; }
.section-light .brand-logo .mini-logo .logo-point use {
  filter:drop-shadow(0 0 2px var(--site-fg-58));
}
.site-header.is-scrolled { color:var(--site-fg); border-color:var(--site-line); background:var(--site-bg-96); }
.post-modal,.detail-modal { background:var(--site-overlay); }
.post-modal-card,.detail-modal-card { color:var(--site-fg); background:var(--site-surface); border-color:var(--site-line); }
.post-modal-card [data-modal-body],.detail-lead,.detail-body { color:var(--site-muted); }
.detail-visual { border-color:var(--site-line); }
.modal-close,.detail-facts,.detail-facts div { border-color:var(--site-line); }

html[data-theme="light"] .main-logo .logo-base use { stroke:rgba(5,5,5,.94); }
html[data-theme="light"] .mini-logo .logo-base use { stroke:#050505; }
html[data-theme="light"] :is(.main-logo,.mini-logo) :is(.logo-flow,.logo-point) use { stroke:#050505; }
html[data-theme="light"] :is(.main-logo,.mini-logo) .logo-flow use { filter:none; }
html[data-theme="light"] :is(.main-logo,.mini-logo) .logo-point use {
  filter:drop-shadow(0 0 3px rgba(5,5,5,.7));
}
html[data-theme="light"] .logo-stage::before {
  background:radial-gradient(circle,rgba(5,5,5,.06),transparent 69%);
}
html[data-theme="dark"] .hero { background:#000000; }
html[data-theme="light"] .hero { background:#ffffff; }
html[data-theme="light"] .n-menu-flow text { fill:#050505; stroke:#ffffff; }
html[data-theme="light"] .radial-backdrop { background:rgba(255,255,255,.96); }
html[data-theme="light"] .flow-transition { background:#ffffff; }
html[data-theme="light"] .section-light .brand-logo .mini-logo :is(.logo-flow,.logo-point) use { stroke:#050505; }
html[data-theme="light"] .section-light .brand-logo .mini-logo .logo-flow use { filter:none; }
html[data-theme="light"] .section-light .brand-logo .mini-logo .logo-point use {
  filter:drop-shadow(0 0 2px rgba(5,5,5,.58));
}

/* Standalone CV follows the same preference. */
html[data-page="cv"][data-theme="dark"] {
  --ink:#f4f4f4;
  --paper:#050505;
  --muted:#97979c;
  --accent:#f4f4f4;
  --line:rgba(255,255,255,.18);
}
html[data-page="cv"] .cv-header,
html[data-page="cv"] .cv-intro,
html[data-page="cv"] .cv-section,
html[data-page="cv"] .cv-draft-note { transition:color .45s,background-color .45s,border-color .45s; }
html[data-page="cv"] .cv-header { padding-right:calc(var(--pad) + 9.75rem); }
html[data-page="cv"][data-theme="dark"] .back-link img { filter:invert(1); }

html.is-theme-pixel-switching :is(a,button):not([data-theme-toggle]) { pointer-events:none !important; }
html.is-theme-committing *,
html.is-theme-committing *::before,
html.is-theme-committing *::after {
  transition:none !important;
}

@media (max-width:720px) {
  .site-preferences { top:max(.55rem,env(safe-area-inset-top)); right:max(.55rem,env(safe-area-inset-right)); }
  .preference-button { min-width:2.35rem; height:2.35rem; }
  .theme-toggle { min-width:5.65rem; padding:.16rem .62rem; }
  .section-view-open .site-header { padding-right:7.5rem; }
  html[data-page="cv"] .cv-header { padding-right:10rem; }
  html[data-page="cv"] .site-preferences { position:absolute; }
}
@media (max-width:430px) {
  .theme-toggle { min-width:5.2rem; padding:.16rem .45rem; }
  .theme-label { width:3.8rem; }
}
@media (prefers-reduced-motion:reduce) {
  .site-preferences,.language-menu,.theme-label { transition-duration:.001ms !important; animation-duration:.001ms !important; }
  .theme-curtain,.theme-curtain-mask { display:none !important; }
}
@media print {
  .site-preferences { display:none !important; }
  html[data-page="cv"][data-theme] {
    --site-bg:#ffffff;
    --site-fg:#090909;
    --site-muted:#55555a;
    --ink:#090909;
    --paper:#ffffff;
    --muted:#55555a;
    --accent:#090909;
    --line:rgba(9,9,9,.2);
    color-scheme:light;
    background:#ffffff !important;
  }
  html[data-page="cv"] body {
    color:#090909 !important;
    background:#ffffff !important;
  }
}
