> ## Documentation Index
> Fetch the complete documentation index at: https://docs.canadava.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ASOPs

> Explore vACA Airline Standard Operating Procedures covering safety, checklists, SOPs, and flight operations for virtual pilots

export const Airports = ({airports = [], title = "Canadian Airport Briefings", labels = {}}) => {
  const DEFAULT_LABELS = {
    hub: "Hub",
    regional: "Regional",
    liveLabel: "VATSIM",
    liveTitle: "VATSIM ATIS broadcasting now"
  };
  const mergedLabels = {
    ...DEFAULT_LABELS,
    ...labels
  };
  const [liveIcaos, setLiveIcaos] = useState(() => new Set());
  useEffect(() => {
    let cancelled = false;
    const fetchAtisFeed = async () => {
      try {
        const res = await fetch("https://data.vatsim.net/v3/vatsim-data.json", {
          cache: "no-store"
        });
        if (!res.ok) return;
        const json = await res.json();
        const all = Array.isArray(json.atis) ? json.atis : [];
        const live = new Set();
        for (const a of all) {
          const cs = (a.callsign || "").toUpperCase();
          const m = cs.match(/^([A-Z]{4})(?:_[AD])?_ATIS$/);
          if (m) live.add(m[1]);
        }
        if (!cancelled) setLiveIcaos(live);
      } catch (_) {}
    };
    fetchAtisFeed();
    const interval = setInterval(fetchAtisFeed, 60 * 1000);
    return () => {
      cancelled = true;
      clearInterval(interval);
    };
  }, []);
  const typeKey = type => {
    const t = (type || "").toLowerCase();
    if (t.includes("hub") || t.includes("plaque") || t.includes("focus")) return "hub";
    if (t.includes("regional") || t.includes("régional") || t.includes("capital")) return "regional";
    return "default";
  };
  const typeLabel = k => {
    if (k === "hub") return mergedLabels.hub;
    if (k === "regional") return mergedLabels.regional;
    return "";
  };
  const TypeIcon = ({k}) => {
    const svgProps = {
      width: 14,
      height: 14,
      viewBox: "0 0 24 24",
      fill: "none",
      stroke: "currentColor",
      strokeWidth: 2,
      strokeLinecap: "round",
      strokeLinejoin: "round",
      "aria-hidden": true
    };
    switch (k) {
      case "hub":
        return <svg {...svgProps}>
            <path d="M16 10h4a2 2 0 0 1 0 4h-4l-4 7h-3l2-7H6l-2 2H1l2-4-2-4h3l2 2h5l-2-7h3z" />
          </svg>;
      case "regional":
        return <svg {...svgProps}>
            <path d="M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z" />
          </svg>;
      default:
        return <svg {...svgProps}>
            <rect x="3" y="3" width="18" height="18" rx="2" />
          </svg>;
    }
  };
  const ChevronIcon = () => <svg width={16} height={16} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth={2} strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
      <polyline points="9 18 15 12 9 6" />
    </svg>;
  return <div className="kb-airports">
      <div className="kb-airports-header">
        <span className="kb-airports-eyebrow">{title}</span>
      </div>
      <div className="kb-airports-list">
        {airports.map((airport, i) => {
    const k = typeKey(airport.type);
    const sublabel = typeLabel(k);
    const isLive = airport.icao && liveIcaos.has(airport.icao.toUpperCase());
    return <a key={`a-${i}`} href={airport.href} className="kb-airports-row" data-type={k}>
              <span className="kb-airports-icon" aria-hidden="true">
                <TypeIcon k={k} />
              </span>
              <div className="kb-airports-text">
                <div className="kb-airports-name">
                  <span className="kb-airports-name-label">{airport.name}</span>
                  {airport.icao && <span className="kb-airports-icao">{airport.icao}</span>}
                  {isLive && <span className="kb-airports-live" title={mergedLabels.liveTitle}>
                      <span className="kb-airports-live-dot" aria-hidden="true" />
                      <span className="kb-airports-live-label">
                        {mergedLabels.liveLabel}
                      </span>
                    </span>}
                </div>
                {airport.description && <div className="kb-airports-description">
                    {airport.description}
                  </div>}
              </div>
              <div className="kb-airports-type-col">
                {sublabel && <span className="kb-airports-sublabel">{sublabel}</span>}
              </div>
              <span className="kb-airports-chevron" aria-hidden="true">
                <ChevronIcon />
              </span>
            </a>;
  })}
      </div>
    </div>;
};

<img className="block dark:hidden" src="https://mintcdn.com/virtualaircanada/XW0ND9ztGm1uFOMi/images/placeholder-light.png?fit=max&auto=format&n=XW0ND9ztGm1uFOMi&q=85&s=ee08ba24e58beaf1e5047269c5797847" alt="vACA ASOPs Light" width="2064" height="1104" data-path="images/placeholder-light.png" />

<img className="hidden dark:block" src="https://mintcdn.com/virtualaircanada/XW0ND9ztGm1uFOMi/images/placeholder-dark.png?fit=max&auto=format&n=XW0ND9ztGm1uFOMi&q=85&s=d1f4fccf56486c4188b97a9d609f23d4" alt="vACA ASOPs Dark" width="2064" height="1104" data-path="images/placeholder-dark.png" />

## Virtual Air Canada Airline

Standard Operating Procedures (ASOPs)

<Info>For flight‑simulation use only – Do **NOT** use for real‑world flight</Info>

## Quick Links

<CardGroup cols={2}>
  <Card title="Get Started Guide" icon="flag-checkered" href="/get-started">
    Essential information for new pilots
  </Card>

  <Card title="Pilot Essentials" icon="book-atlas" href="/essentials">
    Core knowledge for all vACA pilots
  </Card>
</CardGroup>

## Table of Contents

<CardGroup cols={2}>
  <Card title="Executive Overview" icon="book-open" href="/aops/overview/executive-overview">
    Key objectives and introduction to Virtual Air Canada Airline ASOPs
  </Card>

  <Card title="Governance & Responsibility" icon="scale-balanced" href="/aops/overview/governance">
    Regulatory basis, operational control, and manual hierarchy
  </Card>

  <Card title="Safety Culture & CRM" icon="shield" href="/aops/overview/safety-culture">
    Crew Resource Management and Threat & Error Management model
  </Card>

  <Card title="Flight‑Deck SOPs" icon="gauge-high" href="/aops/standard-procedures/flight-deck-sops">
    Standard operating procedures for normal flight operations
  </Card>

  <Card title="Abnormal & Emergency Procedures" icon="triangle-exclamation" href="/aops/standard-procedures/emergency-procedures">
    Procedures for handling abnormal situations and emergencies
  </Card>

  <Card title="Cabin Operations" icon="person-seat" href="/aops/standard-procedures/cabin-operations">
    Cabin-related procedures and safety protocols
  </Card>

  <Card title="Ground Handling & Ramp Safety" icon="plane-arrival" href="/aops/standard-procedures/ground-handling">
    Procedures for safe ground operations
  </Card>

  <Card title="Performance & Weight/Balance" icon="weight-scale" href="/aops/standard-procedures/performance">
    Aircraft performance calculations and weight & balance
  </Card>

  <Card title="Winter & Adverse Weather" icon="snowflake" href="/aops/standard-procedures/winter-operations">
    Operations in winter conditions and adverse weather
  </Card>

  <Card title="Security & Dangerous Goods" icon="lock" href="/aops/additional-resources/security">
    Security protocols and dangerous goods handling
  </Card>
</CardGroup>

## Canadian Airport Briefings

<Airports
  title="Canadian Airport Briefings"
  airports={[
{ type: "hub", icao: "CYYZ", name: "Toronto Pearson", href: "/aops/airports/toronto-pearson", description: "Canada's busiest field, parallel ops on five runways" },
{ type: "hub", icao: "CYUL", name: "Montréal-Trudeau", href: "/aops/airports/montreal-trudeau", description: "Bilingual ATC, twin parallel runways" },
{ type: "hub", icao: "CYVR", name: "Vancouver", href: "/aops/airports/vancouver-international", description: "Sea Island location, terrain and coastal fog" },
{ type: "hub", icao: "CYYC", name: "Calgary", href: "/aops/airports/calgary-international", description: "Hot-and-high prairie, chinook crosswinds" },
{ type: "regional", icao: "CYOW", name: "Ottawa", href: "/aops/airports/ottawa", description: "National capital, bilingual ATC" },
{ type: "regional", icao: "CYEG", name: "Edmonton", href: "/aops/airports/edmonton", description: "Cold-weather ops, intersecting runways" },
{ type: "regional", icao: "CYHZ", name: "Halifax", href: "/aops/airports/halifax", description: "Transatlantic widebody gateway, coastal fog" }
]}
/>

## Additional Resources

<CardGroup cols={2}>
  <Card title="Fatigue Management" icon="bed" href="/aops/additional-resources/fatigue-management">
    Crew duty limitations and fatigue risk management
  </Card>

  <Card title="Training & Currency" icon="graduation-cap" href="/aops/additional-resources/training">
    Training requirements and currency standards
  </Card>

  <Card title="Data Monitoring & Reports" icon="chart-line" href="/aops/additional-resources/data-monitoring">
    Flight data monitoring and reporting procedures
  </Card>

  <Card title="Environmental Policy" icon="leaf" href="/aops/additional-resources/environmental-policy">
    Noise abatement and environmental considerations
  </Card>

  <Card title="Glossary & Acronyms" icon="book" href="/aops/additional-resources/glossary">
    Complete list of aviation terms and acronyms
  </Card>

  <Card title="Revision History" icon="clock-rotate-left" href="/aops/additional-resources/revision-history">
    Document version history and changes
  </Card>
</CardGroup>

## Aircraft Checklists

<Columns cols={2}>
  <Tile href="/aops/checklists/a320" title="Airbus A320 Series" description="A320-family comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/a-320.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=8bae4d49a1cdeb32bc82a38e4f309381" alt="Airbus A320" width="800" height="460" data-path="images/aops/fleet/a-320.png" />
  </Tile>

  <Tile href="/aops/checklists/a220" title="Airbus A220-300" description="A220-300 comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/a-220.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=316c488d388d247c6306eb57e8ba6a97" alt="Airbus A220-300" width="800" height="460" data-path="images/aops/fleet/a-220.png" />
  </Tile>

  <Tile href="/aops/checklists/a330" title="Airbus A330-300" description="A330-300 comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/A333.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=79c2655e1070f94b0b256b59106e6d17" alt="Airbus A330-300" width="800" height="460" data-path="images/aops/fleet/A333.png" />
  </Tile>

  <Tile href="/aops/checklists/a340" title="Airbus A340-300" description="A340-300 comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/a340.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=174f368e7cf21946c02d601dd08555ae" alt="Airbus A340-300" width="800" height="460" data-path="images/aops/fleet/a340.png" />
  </Tile>

  <Tile href="/aops/checklists/a350" title="Airbus A350-900" description="A350-900 comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/a350.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=3306f91427bd7111ec88a0de5d29d9f3" alt="Airbus A350-900" width="800" height="460" data-path="images/aops/fleet/a350.png" />
  </Tile>

  <Tile href="/aops/checklists/b737max" title="Boeing 737 MAX 8" description="737 MAX 8 comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/b-737.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=2af54bb9917536c5a2309c382549115e" alt="Boeing 737 MAX 8" width="800" height="460" data-path="images/aops/fleet/b-737.png" />
  </Tile>

  <Tile href="/aops/checklists/q400" title="De Havilland Dash 8-400" description="Dash 8-400 (Q400) comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/dh4.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=a7e34a8fab9e8a4c1ab5b27d246b0042" alt="De Havilland Dash 8-400" width="800" height="460" data-path="images/aops/fleet/dh4.png" />
  </Tile>

  <Tile href="/aops/checklists/b777-200lr" title="Boeing 777-200LR" description="777-200LR comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/b-777-200.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=877f9a0847df09850509767f7903eeec" alt="Boeing 777-200LR" width="800" height="460" data-path="images/aops/fleet/b-777-200.png" />
  </Tile>

  <Tile href="/aops/checklists/b777-300er" title="Boeing 777-300ER" description="777-300ER comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/b-777-er.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=e80c92565960eedddf162bcb130397b3" alt="Boeing 777-300ER" width="800" height="460" data-path="images/aops/fleet/b-777-er.png" />
  </Tile>

  <Tile href="/aops/checklists/crj900" title="Bombardier CRJ-900" description="CRJ-900 comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/crj900.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=88c4f5e70034299c55fbeb7aae882d41" alt="Bombardier CRJ-900" width="800" height="460" data-path="images/aops/fleet/crj900.png" />
  </Tile>

  <Tile href="/aops/checklists/e175" title="Embraer E175" description="E175 comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/e75.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=0f3865a47da063265c812fbf33a6e870" alt="Embraer E175" width="800" height="460" data-path="images/aops/fleet/e75.png" />
  </Tile>

  <Tile href="/aops/checklists/b787-9" title="Boeing 787-9 Dreamliner" description="787-9 Dreamliner comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/b-787-9.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=ccf6bda6f2128a493a32bb07699ac26a" alt="Boeing 787-9 Dreamliner" width="800" height="460" data-path="images/aops/fleet/b-787-9.png" />
  </Tile>

  <Tile href="/aops/checklists/b787-8" title="Boeing 787-8 Dreamliner" description="787-8 Dreamliner comprehensive normal & abnormal checklist">
    <img src="https://mintcdn.com/virtualaircanada/iQJB1gDJzxYoDw5J/images/aops/fleet/b-787.png?fit=max&auto=format&n=iQJB1gDJzxYoDw5J&q=85&s=808d06050baa5b34e558e60d513dac13" alt="Boeing 787-8 Dreamliner" width="800" height="460" data-path="images/aops/fleet/b-787.png" />
  </Tile>
</Columns>
