import { FONT_MONO } from '../../styles/fonts';

// ── 모델 순서/색상/설명 ──
export const MODEL_ORDER = ['identity', 'default', 'aggressive', 'conservative', 'proximity-heavy', 'visit-pattern'] as const;

export const MODEL_COLORS: Record<string, string> = {
  'identity': '#f97316',
  'default': '#3b82f6',
  'aggressive': '#22c55e',
  'conservative': '#a855f7',
  'proximity-heavy': '#06b6d4',
  'visit-pattern': '#f43f5e',
};

export const MODEL_DESC: Record<string, { summary: string; details: string[] }> = {
  'identity': {
    summary: '이름 패턴매칭 — 동일 모선명 기반 어구 그룹',
    details: [
      '패턴: NAME_인덱스 (_ 필수, 공백만은 선박)',
      '거리제한: ~10NM 이내 연결 클러스터링',
      '모선연결: 어구와 ~20NM 이내 시 포함',
    ],
  },
  'default': {
    summary: '기본 모델 — 균형 가중치',
    details: [
      '어구-선박: 근접도 45% · 방문 35% · 활동동기화 20%',
      '선박-선박: DTW 30% · SOG 20% · COG 25% · 근접비 25%',
      'EMA: α 0.30→0.08 · 추적시작 50% · 폴리곤 70%',
      '감쇠: 정상 0.015/5분 · 장기(6h+) 0.08/5분',
      '근접판정: 5NM · 후보반경: 그룹×3배',
    ],
  },
  'aggressive': {
    summary: '공격적 추적 — 빠른 상승, 약한 감쇠',
    details: [
      '어구-선박: 근접도 55% · 방문 25% · 활동동기화 20%',
      'EMA: α 0.40→0.10 · 추적시작 40% · 폴리곤 60%',
      '감쇠: 정상 0.010/5분 · 장기(8h+) 0.06/5분',
      '근접판정: 7NM · 후보반경: 그룹×4배',
      '야간보너스: ×1.5 · shadow: 체류+0.15 복귀+0.20',
    ],
  },
  'conservative': {
    summary: '보수적 추적 — 높은 임계값, 강한 감쇠',
    details: [
      '어구-선박: 근접도 40% · 방문 40% · 활동동기화 20%',
      'EMA: α 0.20→0.05 · 추적시작 60% · 폴리곤 80%',
      '감쇠: 정상 0.020/5분 · 장기(4h+) 0.10/5분',
      '근접판정: 4NM · 후보반경: 그룹×2.5배',
      '야간보너스: ×1.2 · shadow: 체류+0.08 복귀+0.12',
    ],
  },
  'proximity-heavy': {
    summary: '근접 중심 — 거리 기반 판단 우선',
    details: [
      '어구-선박: 근접도 70% · 방문 20% · 활동동기화 10%',
      '선박-선박: 근접비 50% · DTW 20% · SOG 15% · COG 15%',
      'EMA: α 0.30→0.08 · 추적시작 50% · 폴리곤 70%',
      '근접판정: 5NM · 후보반경: 그룹×3배',
      'shadow: 체류+0.12 복귀+0.18',
    ],
  },
  'visit-pattern': {
    summary: '방문 패턴 — 반복 접근 추적',
    details: [
      '어구-선박: 근접도 25% · 방문 55% · 활동동기화 20%',
      'EMA: α 0.30→0.08 · 추적시작 50% · 폴리곤 70%',
      '근접판정: 6NM · 후보반경: 그룹×3.5배',
      '야간보너스: ×1.4',
    ],
  },
};

// ── 패널 스타일 상수 ──
export const panelStyle: React.CSSProperties = {
  position: 'absolute',
  bottom: 60,
  left: 10,
  zIndex: 10,
  minWidth: 220,
  maxWidth: 300,
  backgroundColor: 'rgba(12, 24, 37, 0.92)',
  border: '1px solid rgba(99, 179, 237, 0.25)',
  borderRadius: 8,
  color: '#e2e8f0',
  fontFamily: FONT_MONO,
  fontSize: 11,
  boxShadow: '0 4px 16px rgba(0, 0, 0, 0.5)',
  overflow: 'hidden',
  display: 'flex',
  flexDirection: 'column',
  pointerEvents: 'auto',
  maxHeight: 'min(45vh, 400px)',
};

export const headerStyle: React.CSSProperties = {
  display: 'flex',
  alignItems: 'center',
  justifyContent: 'space-between',
  padding: '6px 10px',
  borderBottom: 'none',
  cursor: 'default',
  userSelect: 'none',
  flexShrink: 0,
};

export const toggleButtonStyle: React.CSSProperties = {
  background: 'none',
  border: 'none',
  color: '#94a3b8',
  cursor: 'pointer',
  fontSize: 10,
  padding: '0 2px',
  lineHeight: 1,
};
