import { readFileSync } from 'node:fs';

const read = (path) => readFileSync(new URL(`../${path}`, import.meta.url), 'utf8');
const pages = [
  'index.html',
  'full-guide/index.html',
  'summary/index.html',
  'models/index.html',
  'agents/index.html',
  'skills/index.html',
  'rules/index.html',
  'skills-review/index.html',
  'hands-on/starter/index.html',
  'hands-on/rules/index.html',
];
for (const page of pages) {
  const html = read(page);
  if (!html.includes('name="viewport"')) throw new Error(`${page} lacks a viewport declaration`);
  if (html.match(/<(script|link)[^>]+(src|href)="https?:[^\"]+"/i))
    throw new Error(`${page} has an external runtime dependency`);
}
const shared = read('chapters.css');
const skills = read('skills/styles.css');
const guide = read('full-guide/index.html');
const guideAudit = read('full-guide/audit.css');
for (const token of ['@media(max-width:800px)', '@media(max-width:520px)'])
  if (!shared.includes(token)) throw new Error(`shared chapter CSS lacks ${token}`);
for (const token of [
  'minmax(0,1.3fr)',
  'overflow-wrap:anywhere',
  '@media(max-width:800px)',
  'prefers-reduced-motion',
])
  if (!skills.includes(token)) throw new Error(`skills package CSS lacks ${token}`);
if (!guide.includes('href="audit.css"'))
  throw new Error('full guide does not load its responsive audit overrides');
for (const token of ['.handoff table', '.route-table button', 'overflow-wrap:anywhere'])
  if (!guideAudit.includes(token)) throw new Error(`full guide audit CSS lacks ${token}`);
console.log('responsive UI audit passed');
