/* QE interior adaptation: neutral dot lattice + exact portfolio fractal-noise SVG from site.css.
   Portfolio's current interior hides its legacy grid. These neutral dots are explicitly requested for QE. */
html[data-theme] body:not(.qe-home),html[data-theme] body.qe-interior-open{--dots:rgba(255,255,255,.20);--qe-grid-x:28px;--qe-grid-y:28px}
html[data-theme=light] body:not(.qe-home),html[data-theme=light] body.qe-interior-open{--dots:rgba(0,0,0,.16)}
html[data-theme] body:not(.qe-home)::before,html[data-theme] body.qe-interior-open::before{display:block;content:'';position:fixed;inset:0;pointer-events:none;background-image:radial-gradient(var(--dots) .7px,transparent .9px);background-size:28px 28px;background-position:-1px -1px}
html[data-theme]:has(body:not(.qe-home))::after,html[data-theme]:has(body.qe-interior-open)::after{display:block;opacity:.5;mix-blend-mode:screen}
html[data-theme=light]:has(body:not(.qe-home))::after,html[data-theme=light]:has(body.qe-interior-open)::after{opacity:.18;mix-blend-mode:multiply}
.desktop [data-qe-project] span{white-space:normal;max-width:150px;line-height:1.5;text-align:center}

/* V9: public project windows receive the charcoal interior field while the
   homepage retains its saved palette. Interior pages default Dark in cursor-theme.js
   and keep fully functional, separately remembered Light/Dark choices. */
html[data-theme]:has(body.qe-home.qe-interior-open){
  color-scheme:dark;
  --paper:#24272B;--ground:#24272B;--ink:#F0F0EE;
  --muted:#C2C6CB;--soft:#C2C6CB;--faint:#B1B7BF;
  --blue:#C6D7F5;--accent:#C6D7F5;--on-accent:#24272B;
  --hair:rgba(194,198,203,.30);--wash:rgba(194,198,203,.07);
  --surface:#30343A;--folder-fill:rgba(240,240,238,.14);
  --folder-hover:rgba(240,240,238,.24);--error:#F7AAB6;--red:#C6D7F5;
  background:var(--paper);
}
html[data-theme] body.qe-home.qe-interior-open{--dots:rgba(255,255,255,.20)}
html[data-theme]:has(body.qe-home.qe-interior-open)::after{opacity:.5;mix-blend-mode:screen}
