/* Zoom-adaptive global styles
   Adjusts readability and contours based on browser zoom factor.
   JS sets --zoom on :root. We derive inverse multipliers to strengthen borders, shadows, etc. when zoomed out. */
:root {
  --zoom: 1;                     /* provided by JS; fallback 1 */
  --zoom-inverse: calc(1 / var(--zoom));
  --border-multiplier: clamp(0.85, var(--zoom-inverse), 1.5);
  --shadow-multiplier: clamp(0.8, var(--zoom-inverse), 1.4);
  --blur-multiplier: clamp(0.85, var(--zoom-inverse), 1.2);
  --radius-multiplier: clamp(0.9, var(--zoom-inverse), 1.1);
  --focus-outline-width: calc(3px * var(--border-multiplier));
}

/* Scale the base font-size slightly to compensate for extreme zoom levels */
html { font-size: clamp(15px, calc(16px * var(--zoom-inverse)), 18px); }

/* Make focus rings consistent across zoom levels */
:where(a, button, input, textarea, select):focus-visible {
  outline: var(--focus-outline-width) solid hsl(var(--primary, 220 90% 56%));
  outline-offset: 3px;
  border-radius: calc(0.5rem * var(--radius-multiplier));
}

/* Strengthen thin borders and dividers */
.hr, hr, .divide-y > :not([hidden]) ~ :not([hidden]) { 
  border-top-width: calc(1px * var(--border-multiplier)) !important; 
}
.border, .border-b, .border-t, .border-l, .border-r { 
  border-width: calc(1px * var(--border-multiplier)) !important; 
}
[class*="border-2"] { border-width: calc(2px * var(--border-multiplier)) !important; }
[class*="border-\[3px\]"] { border-width: calc(3px * var(--border-multiplier)) !important; }

/* Shadows and blurs scale so cards keep their visual depth */
[class*="shadow"], .backdrop-blur, [class*="backdrop-blur"] {
  filter: saturate(1) drop-shadow(0 0 calc(18px * var(--shadow-multiplier)) rgba(0,0,0,0.12));
}

/* SVG strokes remain readable */
svg path { vector-effect: non-scaling-stroke; }

/* Utility: classes for threshold-based tweaks (added by JS) */
html.zoom-80 .container { max-width: min(100%, 72rem); }
html.zoom-125 body { letter-spacing: 0.005em; }
html.zoom-150 body { letter-spacing: 0.01em; }
