/* ══════════════════════════════════════════════════════════════════
   ATLAS COCKPIT — RISKS · IDEAS · CALENDAR · SETTINGS · LOG
   ══════════════════════════════════════════════════════════════════ */

/* ───────────────────────────  RISKS  ────────────────────────────── */
function RisksView() {
  const D = window.ATLAS_DATA;
  const decided = useStore(s => s.decisions.risks);
  const open = D.risks.filter(r => !decided[r.id]);
  const resolved = D.risks.filter(r => decided[r.id]);
  const count = sev => open.filter(r => r.severity === sev).length;

  return React.createElement('div', null,
    React.createElement('div', { className: 'page-head' },
      React.createElement('h1', { className: 'page-h1' }, 'Risk'),
      React.createElement('p', { className: 'page-lead' }, 'Open exposure across the portfolio. Resolve an item to clear it — it moves to the resolved log and stays linked to its project.')),
    React.createElement('div', { className: 'heatstrip' },
      [['high', 'High severity'], ['medium', 'Medium severity'], ['low', 'Low severity']].map(([k, l]) =>
        React.createElement('div', { key: k, className: cls('heat', k) },
          React.createElement('div', { className: 'hv' }, count(k)),
          React.createElement('div', { className: 'hl' }, l)))),
    open.length === 0
      ? React.createElement(EmptyState, { icon: 'checkCircle', title: 'No open risks', children: 'Every tracked risk has a status. Nice.' })
      : React.createElement('div', { className: 'risk-grid' }, open.map(r => React.createElement(RiskCard, { key: r.id, r }))),
    resolved.length > 0 && React.createElement('div', { className: 'block' },
      React.createElement('div', { className: 'block-head' }, React.createElement('span', { className: 'block-title' }, 'Resolved'), React.createElement('span', { className: 'block-aside' }, React.createElement('span', { className: 'block-count' }, resolved.length))),
      React.createElement('div', { className: 'risk-grid' }, resolved.map(r => React.createElement('div', { key: r.id, className: 'card pad', style: { opacity: 0.7 } },
        React.createElement('div', { style: { display: 'flex', gap: 8, alignItems: 'center', marginBottom: 7 } }, React.createElement(Pill, { kind: 'live', dot: true }, decided[r.id].decision), React.createElement('button', { className: 'btn xs ghost', style: { marginLeft: 'auto' }, onClick: () => undoDecision('risks', r.id) }, 'Reopen')),
        React.createElement('div', { style: { fontWeight: 600 } }, r.title)))))
  );
}

function RiskCard({ r }) {
  const D = window.ATLAS_DATA;
  const proj = D.projects.find(p => p.id === r.project);
  return React.createElement('article', { className: cls('card', 'risk-card', 'sev-' + r.severity) },
    React.createElement('div', { style: { display: 'flex', alignItems: 'center', gap: 8 } },
      React.createElement(SevPill, { sev: r.severity }),
      proj && React.createElement('button', { className: 'pill lane', style: { cursor: 'pointer' }, onClick: () => openDrawer('project', proj.id) }, proj.name)),
    React.createElement('div', { style: { fontSize: 16, fontWeight: 640, letterSpacing: '-0.02em' } }, r.title),
    React.createElement('div', { style: { fontSize: 13, color: 'var(--ink-muted)', lineHeight: 1.55 } }, r.body),
    React.createElement('div', null,
      React.createElement(KVRow, { k: 'Impact' }, r.impact),
      React.createElement(KVRow, { k: 'Mitigation' }, r.mitigation),
      React.createElement(KVRow, { k: 'Review' }, fmtDate(r.review, { month: 'long', day: 'numeric' }))),
    React.createElement('div', { style: { display: 'flex', gap: 6, flexWrap: 'wrap', marginTop: 'auto' } },
      React.createElement(DecisionBar, { store: 'risks', id: r.id, title: r.title, compact: true, note: '' }))
  );
}

/* ───────────────────────────  IDEAS  ────────────────────────────── */
function IdeasView() {
  const D = window.ATLAS_DATA;
  const decided = useStore(s => s.decisions.ideas);
  const allIdeas = getIdeas();
  const [sort, setSort] = useState('score');
  const [compare, setCompare] = useState({});
  const [showCompare, setShowCompare] = useState(false);
  const [adding, setAdding] = useState(false);

  let open = allIdeas.filter(i => !decided[i.id]);
  if (sort === 'score') open.sort((a, b) => b.score - a.score);
  else if (sort === 'speed') open.sort((a, b) => parseInt(a.timeToRevenue) - parseInt(b.timeToRevenue));

  const groups = { accept: [], analyze: [], reject: [], trash: [] };
  allIdeas.forEach(i => { const d = decided[i.id]; if (d && groups[d.decision]) groups[d.decision].push(i); });

  const selIds = Object.keys(compare).filter(k => compare[k]);
  const toggleCompare = (id) => setCompare(c => {
    if (c[id]) { const n = { ...c }; delete n[id]; return n; }
    if (selIds.length >= 3) { toast('Compare up to 3 ideas'); return c; }
    return { ...c, [id]: true };
  });
  const nameOf = (id) => (allIdeas.find(x => x.id === id) || {}).name || '';
  const SECTIONS = [
    { key: 'accept', label: 'Accepted', tone: 'accept', note: 'Elevated toward a swing slot.' },
    { key: 'analyze', label: 'Analysis requested', tone: 'analyze', note: 'Queued for full analysis.' },
    { key: 'reject', label: 'Rejected', tone: 'reject', note: 'Passed for now.' },
    { key: 'trash', label: 'Trashed', tone: 'trash', note: 'Removed from the queue.' }
  ];

  return React.createElement('div', null,
    React.createElement('div', { className: 'page-head' },
      React.createElement('h1', { className: 'page-h1' }, 'Ideas'),
      React.createElement('p', { className: 'page-lead' }, 'The venture queue. Each candidate carries a score, a thesis, and the single next validation step. Decisions move a card into a section below — nothing is lost, and anything can be returned to the queue.')),
    React.createElement('div', { className: 'toolbar' },
      React.createElement('span', { className: 'block-count' }, open.length, ' open candidates'),
      React.createElement('div', { className: 'tb-sp' }),
      React.createElement('div', { className: 'seg' },
        React.createElement('button', { className: sort === 'score' ? 'on' : '', onClick: () => setSort('score') }, 'Score'),
        React.createElement('button', { className: sort === 'speed' ? 'on' : '', onClick: () => setSort('speed') }, 'Time to revenue')),
      React.createElement('button', { className: 'btn sm primary', onClick: () => setAdding(true) }, React.createElement(Icon, { name: 'plus', size: 14, className: 'bico' }), 'New idea')),
    adding && React.createElement(AddIdeaForm, { onClose: () => setAdding(false) }),
    open.length === 0
      ? React.createElement(EmptyState, { icon: 'ideas', title: 'Queue clear', children: 'Every candidate has a decision. Return one from a section below to revisit it.' })
      : React.createElement('div', { className: 'idea-grid' }, open.map(i => React.createElement(IdeaCard, { key: i.id, i, inCompare: !!compare[i.id], onCompare: () => toggleCompare(i.id) }))),
    SECTIONS.map(sec => groups[sec.key].length > 0 && React.createElement(DecidedSection, { key: sec.key, sec, ideas: groups[sec.key], decided })),
    selIds.length > 0 && React.createElement('div', { className: 'compare-tray' },
      React.createElement('span', { className: 'ct-label' }, selIds.length, ' to compare'),
      React.createElement('div', { className: 'ct-chips' }, selIds.map(id => React.createElement('span', { key: id, className: 'pill ghost' }, (nameOf(id) || '').split(' ').slice(0, 2).join(' ')))),
      React.createElement('button', { className: 'btn sm', onClick: () => setCompare({}) }, 'Clear'),
      React.createElement('button', { className: 'btn sm primary', disabled: selIds.length < 2, onClick: () => setShowCompare(true) }, 'Compare')),
    showCompare && React.createElement(CompareModal, { ids: selIds, onClose: () => setShowCompare(false) })
  );
}

function DecidedSection({ sec, ideas, decided }) {
  return React.createElement('div', { className: 'block' },
    React.createElement('div', { className: 'block-head' },
      React.createElement('span', { className: cls('idea-sec-dot', sec.tone) }),
      React.createElement('span', { className: 'block-title' }, sec.label),
      React.createElement('span', { className: 'block-aside' }, React.createElement('span', { className: 'block-count' }, ideas.length, ' · ', sec.note))),
    React.createElement('div', { className: 'decided-grid' },
      ideas.map(i => React.createElement(DecidedIdeaCard, { key: i.id, i, sec, ts: (decided[i.id] || {}).ts }))));
}

function DecidedIdeaCard({ i, sec, ts }) {
  return React.createElement('article', { className: cls('card', 'decided-card', sec.tone === 'trash' && 'trashed') },
    React.createElement('span', { className: 'decided-score' }, i.score),
    React.createElement('div', { className: 'decided-main' },
      React.createElement('div', { className: 'decided-name', style: { cursor: 'pointer' }, onClick: () => openDrawer('idea', i.id) }, i.name),
      React.createElement('div', { className: 'decided-meta' }, i.category, ts ? ' · ' + relTime(ts) : '')),
    React.createElement('button', { className: 'btn xs', title: 'Return this idea to the open queue', onClick: () => { undoDecision('ideas', i.id); toast(i.name + ' — returned to queue'); } },
      React.createElement(Icon, { name: 'undo', size: 13, className: 'bico' }), 'Return to queue'));
}

function IdeaCard({ i, inCompare, onCompare }) {
  return React.createElement('article', { className: 'card idea-card' },
    React.createElement('div', { className: 'idea-top' },
      React.createElement(ScoreRing, { score: i.score }),
      React.createElement('div', { style: { flex: 1 } },
        React.createElement('div', { className: 'idea-name', style: { cursor: 'pointer' }, onClick: () => openDrawer('idea', i.id) }, i.name),
        React.createElement('div', { className: 'idea-tags', style: { marginTop: 7 } },
          React.createElement(Pill, { kind: 'ghost' }, i.category),
          React.createElement(Conf, { level: i.confidence }))),
      React.createElement('button', { className: cls('btn', 'xs', inCompare && 'success'), onClick: onCompare, title: 'Add to compare' }, inCompare ? '✓ Compare' : 'Compare')),
    React.createElement('div', { className: 'idea-thesis' }, i.thesis),
    React.createElement(RubricStrip, { rubric: i.rubric }),
    React.createElement('div', { className: 'idea-detail' },
      React.createElement('div', null, React.createElement('span', { className: 'idea-k' }, 'Time to rev'), React.createElement('span', { className: 'idea-v' }, i.timeToRevenue)),
      React.createElement('div', null, React.createElement('span', { className: 'idea-k' }, 'Ceiling'), React.createElement('span', { className: 'idea-v' }, i.ceiling)),
      React.createElement('div', null, React.createElement('span', { className: 'idea-k' }, 'Source'), React.createElement('span', { className: 'idea-v' }, i.src))),
    React.createElement(NoteField, { store: 'ideas', id: i.id, placeholder: 'Conditions, questions, “yes if…”' }),
    React.createElement(DecisionBar, { store: 'ideas', id: i.id, title: i.name, compact: true, note: () => loadNote('ideas', i.id) })
  );
}

function CompareModal({ ids, onClose }) {
  const ideas = ids.map(id => getIdeas().find(i => i.id === id)).filter(Boolean);
  const rows = [['Score', i => i.score], ['Category', i => i.category], ['Time to revenue', i => i.timeToRevenue], ['Confidence', i => i.confidence], ['Ceiling', i => i.ceiling], ['Next validation', i => i.validation]];
  return React.createElement('div', { className: 'cmd-scrim show', onMouseDown: e => { if (e.target === e.currentTarget) onClose(); } },
    React.createElement('div', { className: 'cmd', style: { width: 'min(860px, 94vw)', padding: 0 } },
      React.createElement('div', { className: 'cmd-input-row', style: { justifyContent: 'space-between' } },
        React.createElement('span', { style: { fontWeight: 640, fontSize: 15 } }, 'Compare ideas'),
        React.createElement('button', { className: 'icon-btn', onClick: onClose }, React.createElement(Icon, { name: 'x', size: 16 }))),
      React.createElement('div', { className: 'scroll', style: { overflow: 'auto', maxHeight: '64vh' } },
        React.createElement('table', { className: 'dt', style: { fontSize: 13 } },
          React.createElement('thead', null, React.createElement('tr', null,
            React.createElement('th', null, ''),
            ideas.map(i => React.createElement('th', { key: i.id, style: { minWidth: 180 } }, i.name)))),
          React.createElement('tbody', null, rows.map(([label, fn]) => React.createElement('tr', { key: label, style: { cursor: 'default' } },
            React.createElement('td', { className: 'name', style: { color: 'var(--ink-muted)', fontWeight: 500 } }, label),
            ideas.map(i => React.createElement('td', { key: i.id, style: { verticalAlign: 'top', lineHeight: 1.5 } }, String(fn(i)))))))))));
}

/* ───────────────────────────  CALENDAR  ─────────────────────────── */
function CalendarView() {
  const D = window.ATLAS_DATA;
  const week = useStore(s => s.week);
  const [ym, setYm] = useState({ y: 2026, m: 4 }); // May 2026 (0-indexed)
  const todayISO = new Date().toISOString().slice(0, 10);

  const events = {};
  const push = (date, label, kind, done) => { (events[date] = events[date] || []).push({ label, kind, done }); };
  D.thisWeek.forEach(d => push(d.date, d.text.length > 40 ? d.text.slice(0, 38) + '…' : d.text, '', week[d.date]));
  push(D.startDate, 'ATLAS go-live', 'beta');
  push(D.kenBeta, 'Ken beta launch', 'beta');
  getActions().forEach(a => { if (a.due) push(a.due, '⚑ ' + (a.title.length > 32 ? a.title.slice(0, 30) + '…' : a.title), ''); });

  const first = new Date(ym.y, ym.m, 1);
  const startDow = first.getDay();
  const daysIn = new Date(ym.y, ym.m + 1, 0).getDate();
  const cells = [];
  for (let i = 0; i < startDow; i++) cells.push(null);
  for (let d = 1; d <= daysIn; d++) cells.push(d);
  while (cells.length % 7) cells.push(null);
  const monthName = first.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });
  const iso = d => `${ym.y}-${String(ym.m + 1).padStart(2, '0')}-${String(d).padStart(2, '0')}`;

  return React.createElement('div', null,
    React.createElement('div', { className: 'page-head' },
      React.createElement('h1', { className: 'page-h1' }, 'Calendar'),
      React.createElement('p', { className: 'page-lead' }, 'This week’s plan, action due dates, and the two dates that matter most — go-live and the Ken beta.')),
    React.createElement('div', { className: 'toolbar' },
      React.createElement('button', { className: 'icon-btn', onClick: () => setYm(s => ({ y: s.m === 0 ? s.y - 1 : s.y, m: s.m === 0 ? 11 : s.m - 1 })) }, React.createElement(Icon, { name: 'chevronL', size: 16 })),
      React.createElement('span', { style: { fontWeight: 640, fontSize: 15, minWidth: 150, textAlign: 'center' } }, monthName),
      React.createElement('button', { className: 'icon-btn', onClick: () => setYm(s => ({ y: s.m === 11 ? s.y + 1 : s.y, m: s.m === 11 ? 0 : s.m + 1 })) }, React.createElement(Icon, { name: 'chevronR', size: 16 }))),
    React.createElement('div', { className: 'cal' },
      React.createElement('div', { className: 'cal-grid' },
        ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'].map(d => React.createElement('div', { key: d, className: 'cal-dow' }, d)),
        cells.map((d, i) => {
          if (d == null) return React.createElement('div', { key: i, className: 'cal-cell out' });
          const date = iso(d);
          return React.createElement('div', { key: i, className: cls('cal-cell', date === todayISO && 'today') },
            React.createElement('div', { className: 'cal-date' }, d),
            (events[date] || []).map((e, j) => React.createElement('div', { key: j, className: cls('cal-ev', e.kind, e.done && 'done') }, e.label)));
        }))),
    React.createElement('div', { className: 'block' },
      React.createElement('div', { className: 'block-head' }, React.createElement('span', { className: 'block-title' }, 'This week')),
      React.createElement('div', { className: 'card', style: { overflow: 'hidden' } },
        D.thisWeek.map(d => React.createElement('div', { key: d.date, className: cls('week-row', d.date === todayISO && 'today') },
          React.createElement('span', { className: 'week-day' }, d.day),
          React.createElement('span', { className: cls('week-text', week[d.date] && 'done') }, d.text),
          React.createElement('span', { className: cls('tick', week[d.date] && 'on'), onClick: () => Store.set(s => ({ ...s, week: { ...s.week, [d.date]: !s.week[d.date] } })) })))))
  );
}

/* ───────────────────────────  DECISION LOG  ─────────────────────── */
const LOG_LINK = { actions: 'actions', ideas: 'ideas', risks: 'risks' };
const KIND_LABEL = { action_added: 'ADDED', idea_added: 'ADDED', eod_shipped: 'SHIPPED', eod_stalled: 'STALLED', eod_tomorrow: 'TOMORROW' };
function logDateLabel(iso) {
  const d = new Date(iso); const today = startOfToday();
  const diff = Math.round((today - new Date(d.getFullYear(), d.getMonth(), d.getDate())) / 86400000);
  const abs = d.toLocaleDateString('en-US', { weekday: 'long', month: 'short', day: 'numeric' });
  if (diff === 0) return 'Today · ' + abs;
  if (diff === 1) return 'Yesterday · ' + abs;
  return abs;
}
function exportLog() {
  const log = Store.get().log || [];
  if (!log.length) { toast('Log is empty'); return; }
  let md = '# ATLAS decision log\n\n_Exported ' + new Date().toLocaleString('en-US') + ' · newest first_\n';
  let curDay = null;
  log.forEach(e => {
    const day = String(e.ts).slice(0, 10);
    if (day !== curDay) { curDay = day; md += '\n## ' + day + '\n\n'; }
    const verb = (KIND_LABEL[e.kind] || String(e.decision || '').toUpperCase());
    md += `- **${verb}** — ${e.title}` + (e.note ? ` _(${e.note})_` : '') + ` · ${e.store}\n`;
  });
  downloadFile('atlas-decision-log-' + isoDay() + '.md', md, 'text/markdown');
  toast('Log exported');
}

function LogView() {
  const log = useStore(s => s.log);
  // group by calendar day, preserving newest-first order
  const groups = [];
  log.forEach(e => {
    const day = String(e.ts).slice(0, 10);
    let g = groups.find(x => x.day === day);
    if (!g) { g = { day, items: [] }; groups.push(g); }
    g.items.push(e);
  });
  return React.createElement('div', null,
    React.createElement('div', { className: 'page-head' },
      React.createElement('h1', { className: 'page-h1' }, 'Decision log'),
      React.createElement('p', { className: 'page-lead' }, 'Every approval, deferral, pass, capture, and end-of-day note — grouped by day, newest first. Reopen anything to send it back to its queue.')),
    log.length === 0
      ? React.createElement(EmptyState, { icon: 'doc', title: 'No decisions yet', children: 'Approve, defer, or pass on items in the queues and they\u2019ll be recorded here.' })
      : React.createElement('div', null,
          React.createElement('div', { className: 'toolbar' },
            React.createElement('span', { className: 'block-count' }, log.length, ' entries'),
            React.createElement('div', { className: 'tb-sp' }),
            React.createElement('button', { className: 'btn sm ghost', onClick: exportLog }, React.createElement(Icon, { name: 'download', size: 13, className: 'bico' }), 'Export log'),
            React.createElement('button', { className: 'btn sm ghost', onClick: () => { if (confirm('Clear the decision log? This does not reopen items.')) setKV({ log: [] }); } }, 'Clear log')),
          groups.map(g => React.createElement('div', { key: g.day, className: 'log-group' },
            React.createElement('div', { className: 'log-day' }, logDateLabel(g.items[0].ts)),
            React.createElement('div', { className: 'card pad' },
              g.items.map(e => React.createElement('div', { key: e.uid, 'data-log-id': e.uid, className: 'log-row' },
                React.createElement('div', { className: cls('log-icon', e.decision) }, React.createElement(Icon, { name: logIcon(e.decision), size: 15 })),
                React.createElement('div', { className: 'log-main' },
                  React.createElement('div', { className: 'log-title' }, e.title),
                  e.note && React.createElement('div', { className: 'log-note' }, '\u201c', e.note, '\u201d'),
                  React.createElement('div', { className: 'log-meta' }, (KIND_LABEL[e.kind] || e.decision.toUpperCase()), ' \u00b7 ', e.store)),
                React.createElement('div', { className: 'log-side' },
                  React.createElement('span', { className: 'log-time' }, relTime(e.ts)),
                  React.createElement('div', { className: 'log-actions' },
                    LOG_LINK[e.store] && e.id && React.createElement('button', { className: 'btn xs ghost', title: 'Copy link', onClick: () => copyEntityLink(LOG_LINK[e.store], e.id) }, React.createElement(Icon, { name: 'link', size: 12, className: 'bico' }), 'Copy link'),
                    LOG_LINK[e.store] && e.id && React.createElement('button', { className: 'btn xs ghost', onClick: () => { undoDecision(e.store, e.id); toast(e.title + ' \u2014 reopened'); } }, 'Reopen'))))))))
        )
  );
}
function logIcon(d) {
  return ({ approve: 'checkCircle', complete: 'checkCircle', research: 'search', promote: 'zap', analyze: 'search', accept: 'checkCircle', mitigated: 'checkCircle', resolved: 'check', watching: 'focus', accepted: 'flag', defer: 'defer', decline: 'xCircle', reject: 'xCircle', pass: 'xCircle', dismiss: 'trash', trash: 'trash', action_added: 'plus', idea_added: 'sparkle', eod_shipped: 'checkCircle', eod_stalled: 'alert', eod_tomorrow: 'arrowR' })[d] || 'doc';
}

/* ───────────────────────────  SETTINGS  ─────────────────────────── */
function snapshotNow() {
  downloadFile('atlas-snapshot-' + isoDay() + '.json', JSON.stringify(Store.get(), null, 2), 'application/json');
  toast('Snapshot downloaded');
}
function SettingsView() {
  const D = window.ATLAS_DATA;
  const s = useStore();
  const Toggle = ({ on, onClick }) => React.createElement('button', { className: cls('switch', on && 'on'), onClick, role: 'switch', 'aria-checked': on });
  return React.createElement('div', null,
    React.createElement('div', { className: 'page-head' },
      React.createElement('h1', { className: 'page-h1' }, 'Settings'),
      React.createElement('p', { className: 'page-lead' }, 'Appearance, workspace behavior, and data connections.')),
    React.createElement('div', { className: 'block' },
      React.createElement('div', { className: 'block-head' }, React.createElement('span', { className: 'block-title' }, 'Appearance')),
      React.createElement('div', { className: 'card pad' },
        React.createElement('div', { className: 'set-row' },
          React.createElement('div', { className: 'sr-main' }, React.createElement('div', { className: 'sr-title' }, 'Theme'), React.createElement('div', { className: 'sr-sub' }, 'System follows your device. Light is calmer for long sessions; dark for low light.')),
          React.createElement('div', { className: 'seg' },
            React.createElement('button', { className: s.theme === 'system' ? 'on' : '', onClick: () => setKV({ theme: 'system' }) }, React.createElement(Icon, { name: 'monitor', size: 14 }), 'System'),
            React.createElement('button', { className: s.theme === 'light' ? 'on' : '', onClick: () => setKV({ theme: 'light' }) }, React.createElement(Icon, { name: 'sun', size: 14 }), 'Light'),
            React.createElement('button', { className: s.theme === 'dark' ? 'on' : '', onClick: () => setKV({ theme: 'dark' }) }, React.createElement(Icon, { name: 'moon', size: 14 }), 'Dark'))),
        React.createElement('div', { className: 'set-row' },
          React.createElement('div', { className: 'sr-main' }, React.createElement('div', { className: 'sr-title' }, 'Collapse sidebar'), React.createElement('div', { className: 'sr-sub' }, 'Show icons only to reclaim width.')),
          React.createElement(Toggle, { on: s.sidebarCollapsed, onClick: () => setKV({ sidebarCollapsed: !s.sidebarCollapsed }) })),
        React.createElement('div', { className: 'set-row' },
          React.createElement('div', { className: 'sr-main' }, React.createElement('div', { className: 'sr-title' }, 'Focus mode'), React.createElement('div', { className: 'sr-sub' }, 'Hide the sidebar and secondary rails — just the work in front of you.')),
          React.createElement(Toggle, { on: s.focusMode, onClick: () => setKV({ focusMode: !s.focusMode }) })))),
    React.createElement('div', { className: 'block' },
      React.createElement('div', { className: 'block-head' }, React.createElement('span', { className: 'block-title' }, 'Interface'), React.createElement('span', { className: 'block-aside' }, React.createElement('span', { className: 'est-tag' }, 'Saved on this device'))),
      React.createElement('div', { className: 'card pad' },
        React.createElement('div', { className: 'set-row' },
          React.createElement('div', { className: 'sr-main' }, React.createElement('div', { className: 'sr-title' }, 'Accent color'), React.createElement('div', { className: 'sr-sub' }, 'Used across pills, buttons, links, and focus rings.')),
          React.createElement('div', { style: { display: 'flex', gap: 12 } },
            ['#016AFF', '#3B5BDB', '#1F8A5B', '#7A5AE0'].map(c => React.createElement('button', { key: c, title: c, 'aria-label': 'Accent ' + c, onClick: () => setKV({ accent: c }), style: { width: 26, height: 26, borderRadius: 8, background: c, border: 'none', cursor: 'pointer', boxShadow: s.accent === c ? '0 0 0 2px var(--bg-elevated), 0 0 0 4px ' + c : '0 0 0 1px var(--rule)' } })))),
        React.createElement('div', { className: 'set-row' },
          React.createElement('div', { className: 'sr-main' }, React.createElement('div', { className: 'sr-title' }, 'Corner radius'), React.createElement('div', { className: 'sr-sub' }, 'Overall roundness of cards and controls.')),
          React.createElement('div', { className: 'seg' },
            [['sharp', 'Sharp'], ['default', 'Default'], ['rounded', 'Round']].map(([v, l]) => React.createElement('button', { key: v, className: s.radius === v ? 'on' : '', onClick: () => setKV({ radius: v }) }, l)))),
        React.createElement('div', { className: 'set-row' },
          React.createElement('div', { className: 'sr-main' }, React.createElement('div', { className: 'sr-title' }, 'Density'), React.createElement('div', { className: 'sr-sub' }, 'Spacing rhythm across the app.')),
          React.createElement('div', { className: 'seg' },
            [['comfortable', 'Comfortable'], ['compact', 'Compact']].map(([v, l]) => React.createElement('button', { key: v, className: s.density === v ? 'on' : '', onClick: () => setKV({ density: v }) }, l)))),
        React.createElement('div', { className: 'set-row' },
          React.createElement('div', { className: 'sr-main' }, React.createElement('div', { className: 'sr-title' }, 'Landing view'), React.createElement('div', { className: 'sr-sub' }, 'Which view ATLAS opens to.')),
          React.createElement('select', { className: 'field', style: { width: 'auto' }, value: s.landingView, onChange: e => setKV({ landingView: e.target.value, view: e.target.value }) },
            [['today', 'Today'], ['projects', 'Projects'], ['finance', 'Finance'], ['risks', 'Risks'], ['ideas', 'Ideas'], ['calendar', 'Calendar']].map(([v, l]) => React.createElement('option', { key: v, value: v }, l)))))),
    React.createElement(ConnectionsSection),
    React.createElement('div', { className: 'block' },
      React.createElement('div', { className: 'block-head' }, React.createElement('span', { className: 'block-title' }, 'Workspace')),
      React.createElement('div', { className: 'card pad' },
        React.createElement('div', { className: 'set-row' },
          React.createElement('div', { className: 'sr-main' }, React.createElement('div', { className: 'sr-title' }, 'Snapshot & reset'), React.createElement('div', { className: 'sr-sub' }, 'Snapshot downloads the full local state as JSON. Reset clears all decisions, notes, edits, and checkmarks on this device.')),
          React.createElement('div', { style: { display: 'flex', gap: 8 } },
            React.createElement('button', { className: 'btn', onClick: snapshotNow }, React.createElement(Icon, { name: 'download', size: 14, className: 'bico' }), 'Snapshot now'),
            React.createElement('button', { className: 'btn danger', onClick: () => { if (confirm('Reset all local state?')) Store.reset(); } }, 'Reset'))),
        React.createElement('div', { className: 'set-row' },
          React.createElement('div', { className: 'sr-main' }, React.createElement('div', { className: 'sr-title' }, 'API token'), React.createElement('div', { className: 'sr-sub' }, 'Bearer token used to call the orchestrator. Clear if the cockpit rejects it — next save re-prompts.')),
          React.createElement('div', { style: { display: 'flex', gap: 8 } },
            React.createElement('button', { className: 'btn', onClick: () => { if (confirm('Clear cached API token? Next save will re-prompt.')) clearApiToken(); } }, React.createElement(Icon, { name: 'refresh', size: 14, className: 'bico' }), 'Clear API token'))),
        React.createElement('div', { className: 'set-row' },
          React.createElement('div', { className: 'sr-main' }, React.createElement('div', { className: 'sr-title' }, 'Build'), React.createElement('div', { className: 'sr-sub' }, 'ATLAS operations console')),
          React.createElement('span', { className: 'mono', style: { fontSize: 12, color: 'var(--ink-faint)' } }, D.build))))
  );
}

Object.assign(window, { RisksView, IdeasView, CalendarView, LogView, SettingsView });
