// Loop — theme tokens. Editorial-warm light + cinematic dark.
// Exports tokens via window.LoopTheme(t) → resolved palette object.

const ACCENTS = {
  blue:    { hex: '#3F6EE0', soft: '#E8EEFB', name: 'Calm Blue' },
  emerald: { hex: '#3E8E6F', soft: '#E4EFE9', name: 'Muted Emerald' },
  silver:  { hex: '#6B7280', soft: '#ECEDEE', name: 'Warm Silver' },
  amber:   { hex: '#C58A3D', soft: '#F4ECDE', name: 'Soft Amber' },
};

function LoopTheme(t) {
  const dark = !!t.dark;
  const accent = ACCENTS[t.accent] || ACCENTS.blue;
  const density = t.density || 'comfortable';
  const pad = density === 'cozy' ? 14 : density === 'spacious' ? 22 : 18;
  const rowGap = density === 'cozy' ? 10 : density === 'spacious' ? 18 : 14;

  return {
    dark,
    accent: accent.hex,
    accentSoft: accent.soft,
    accentName: accent.name,
    // surfaces
    bg:        dark ? '#0B0C0F' : '#F6F4EF',
    bgElev:    dark ? '#15171C' : '#FFFFFF',
    card:      dark ? '#181B21' : '#FFFFFF',
    cardEdge:  dark ? 'rgba(255,255,255,0.06)' : 'rgba(20,20,20,0.05)',
    cardShadow: dark
      ? '0 1px 0 rgba(255,255,255,0.03), 0 12px 28px rgba(0,0,0,0.45)'
      : '0 1px 0 rgba(255,255,255,0.6), 0 8px 22px rgba(20,20,20,0.05)',
    // text
    text:      dark ? '#F2F2F4' : '#1B1B1F',
    textSub:   dark ? 'rgba(242,242,244,0.62)' : 'rgba(27,27,31,0.58)',
    textMuted: dark ? 'rgba(242,242,244,0.42)' : 'rgba(27,27,31,0.38)',
    hairline:  dark ? 'rgba(255,255,255,0.08)' : 'rgba(20,20,20,0.08)',
    // semantic
    cleared:   '#3E8E6F',
    pending:   '#C58A3D',
    danger:    '#C75353',
    // type
    fontSans:  '-apple-system, "SF Pro Text", "SF Pro Display", system-ui, sans-serif',
    fontSerif: '"New York", "Iowan Old Style", "Charter", Georgia, serif',
    // density
    pad, rowGap,
    radius: 22,
    radiusSm: 14,
  };
}

window.LoopTheme = LoopTheme;
window.LOOP_ACCENTS = ACCENTS;
