/* ============================================================
   THEME — bespokelamp.art
   Canonical design tokens for all EDITORIAL pages
   (landing, portfolio, blog, flow).
   Loaded AFTER each page's inline <style> so it wins the cascade
   and keeps palettes from drifting apart again.
   NOT linked in configurator.html / brief.html — those keep the
   blueprint palette (#00e5ff cyan + #feb700 amber) on purpose.
   ============================================================ */

:root {
  --bg:        #0f0d0a;
  --bg-2:      #1e1a14;
  --bg-3:      #2a2318;
  --ivory:     #ede8dc;
  --ivory-dim: #b8b09e;
  --brass:     #b07d30;
  --brass-hi:  #d4963c;
  --brass-dim: #7a5520;
  --white:     #f5f0e8;
  --serif:     'Newsreader', Georgia, serif;
  --sans:      'Inter', system-ui, sans-serif;
}

/* ── Grain — takes dark backgrounds out of flat digital black ── */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  opacity: 0.5;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0.70 0 0 0 0 0.55 0 0 0 0 0.30 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ── Portfolio: interim „aprins" glow on hover, until lit/unlit
      photo pairs are shot ── */
.lamp-card { position: relative; }
.lamp-card img {
  transition: filter 0.6s ease, transform 0.6s ease;
}
.lamp-card:hover img {
  filter: brightness(1.22) saturate(1.12);
}
.lamp-card::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.6s ease;
  background: radial-gradient(ellipse 70% 55% at 50% 38%,
    rgba(255,184,77,0.28) 0%,
    rgba(201,145,58,0.10) 45%,
    rgba(201,145,58,0) 75%);
}
.lamp-card:hover::before { opacity: 1; }
