Apache 2.4.25
tcp/443 tcp/80
Open service 2a01:5b40:0:4700::1:80 · www.catoair.no
2026-01-26 11:50
HTTP/1.1 302 Found Date: Mon, 26 Jan 2026 11:50:23 GMT Server: Apache/2.4.25 (Debian) Location: https://www.catoair.no/ Content-Length: 287 Connection: close Content-Type: text/html; charset=iso-8859-1 Page title: 302 Found <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> </head><body> <h1>Found</h1> <p>The document has moved <a href="https://www.catoair.no/">here</a>.</p> <hr> <address>Apache/2.4.25 (Debian) Server at www.catoair.no Port 80</address> </body></html>
Open service 2a01:5b40:0:4700::1:80 · catoair.no
2026-01-26 11:50
HTTP/1.1 302 Found Date: Mon, 26 Jan 2026 11:50:23 GMT Server: Apache/2.4.25 (Debian) Location: https://catoair.no/ Content-Length: 279 Connection: close Content-Type: text/html; charset=iso-8859-1 Page title: 302 Found <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> </head><body> <h1>Found</h1> <p>The document has moved <a href="https://catoair.no/">here</a>.</p> <hr> <address>Apache/2.4.25 (Debian) Server at catoair.no Port 80</address> </body></html>
Open service 2a01:5b40:0:4700::1:443 · catoair.no
2026-01-26 11:50
HTTP/1.1 200 OK
Date: Mon, 26 Jan 2026 11:50:03 GMT
Server: Apache/2.4.25 (Debian)
Last-Modified: Tue, 11 Nov 2025 21:29:26 GMT
ETag: "45666-64358579a53b6"
Accept-Ranges: bytes
Content-Length: 284262
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
Page title: Catoair – Din drøm. Vår destinasjon.
<!doctype html>
<html lang="no">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Catoair – Din drøm. Vår destinasjon.</title>
<meta name="description" content="Catoair – Din drøm. Vår destinasjon. Bakketjenester, Operations Control og tekniske leveranser." />
<link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'><rect rx='14' width='64' height='64' fill='%230B3B8C'/><path d='M12 36c18-2 25-9 37-24c-4 16-8 26-12 32c-4 7-11 11-20 12c8-6 14-11 18-18c-8 3-15 4-23-2z' fill='white'/></svg>">
<script src="https://unpkg.com/react@18/umd/react.production.min.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js" crossorigin></script>
<script src="https://unpkg.com/@babel/standalone@7/babel.min.js"></script>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@keyframes cloud-drift { 0% { transform: translateX(0); } 100% { transform: translateX(-200%); } }
.cloud-layer { animation: cloud-drift linear infinite; will-change: transform; }
/* Cursor graphics (jumbojet + GH truck) */
:root {
--cursor-plane: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='66' height='66' viewBox='0 0 66 66'> <g fill='none' stroke='%230B3B8C' stroke-width='1.7' stroke-linejoin='round'> <ellipse cx='30' cy='44' rx='18' ry='6' fill='rgba(0,0,0,0.12)' stroke='none'/> <path fill='%23ffffff' d='M6 28 L38 28 C46 28 54 31 58 35 L60 37 L60 39 L58 41 C54 45 46 48 38 48 L6 48 Z'/> <path fill='%23ffffff' d='M6 28 L3 31 L3 45 L6 48 Z'/> <path d='M28 24 L10 16 L10 21 L24 29' fill='%23ffffff'/> <path d='M28 52 L10 58 L10 53 L24 47' fill='%23ffffff'/> <g fill='%230B3B8C' stroke='none'> <rect x='30' y='31' width='2.4' height='2.4' rx='0.6'/> <rect x='34' y='31' width='2.4' height='2.4' rx='0.6'/> <rect x='38' y='31' width='2.4' height='2.4' rx='0.6'/> <rect x='42' y='31' width='2.4' height='2.4' rx='0.6'/> <rect x='46' y='31' width='2.4' height='2.4' rx='0.6'/> </g> </g></svg>") 6 33, auto;
--cursor-plane-link: var(--cursor-plane);
--cursor-gh: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='66' height='66' viewBox='0 0 66 66'> <g fill='none' stroke='none'> <ellipse cx='28' cy='44' rx='18' ry='6' fill='rgba(37,92,199,0.2)'/> <rect x='8' y='28' width='20' height='10' rx='2' fill='%23ffffff'/> <rect x='6' y='26' width='8' height='14' rx='2' fill='%23ffffff'/> <rect x='28' y='26' width='14' height='12' rx='2' fill='%23ffffff'/> <rect x='42' y='28' width='8' height='2' fill='%23ffffff'/> <rect x='50' y='24' width='12' height='10' rx='2' fill='%23ffffff'/> </g></svg>") 10 33, auto;
--cursor-gh-link: var(--cursor-gh);
}
body, * { cursor: var(--cursor-plane); }
a, button, [role="button"], .clickable { cursor: var(--cursor-plane-link); }
.gh-cursor * { cursor: var(--cursor-gh); }
.gh-cursor a, .gh-cursor button, .gh-cursor [role="button"], .gh-cursor .clickable { cursor: var(--cursor-gh-link); }
</style>
</head>
<body class="bg-[#0B3B8C]">
<div id="root"></div>
<script type="text/babel">
const { useState, useEffect } = React;
function CatoairLogo() {
return <div className="font-semibold tracking-widest">CATOAIR</div>;
}
function AirplaneWindowFrame() {
return (
<div className="relative w-[min(90vw,680px)] h-[min(70vh,520px)]">
<div className="absolute inset-0 rounded-[40px] md:rounded-[54px] border-2 border-white/40 shadow-[0_0_0_6px_rgba(255,255,255,0.12)_inset] bg-white/5" />
<div className="absolute inset-3 rounded-[36px] md:rounded-[50px] bg-gradient-to-b from-white/10 to-white/0" />
<div className="absolute left-6 top-6 w-24 h-24 rounded-full bg-white/15 blur-2xl" />
</div>
);
}
function CloudBand({ speedSeconds = 60
Open service 2a01:5b40:0:4700::1:443 · www.catoair.no
2026-01-26 11:50
HTTP/1.1 200 OK
Date: Mon, 26 Jan 2026 11:50:03 GMT
Server: Apache/2.4.25 (Debian)
Last-Modified: Tue, 11 Nov 2025 21:29:26 GMT
ETag: "45666-64358579a53b6"
Accept-Ranges: bytes
Content-Length: 284262
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
Page title: Catoair – Din drøm. Vår destinasjon.
<!doctype html>
<html lang="no">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Catoair – Din drøm. Vår destinasjon.</title>
<meta name="description" content="Catoair – Din drøm. Vår destinasjon. Bakketjenester, Operations Control og tekniske leveranser." />
<link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'><rect rx='14' width='64' height='64' fill='%230B3B8C'/><path d='M12 36c18-2 25-9 37-24c-4 16-8 26-12 32c-4 7-11 11-20 12c8-6 14-11 18-18c-8 3-15 4-23-2z' fill='white'/></svg>">
<script src="https://unpkg.com/react@18/umd/react.production.min.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js" crossorigin></script>
<script src="https://unpkg.com/@babel/standalone@7/babel.min.js"></script>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@keyframes cloud-drift { 0% { transform: translateX(0); } 100% { transform: translateX(-200%); } }
.cloud-layer { animation: cloud-drift linear infinite; will-change: transform; }
/* Cursor graphics (jumbojet + GH truck) */
:root {
--cursor-plane: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='66' height='66' viewBox='0 0 66 66'> <g fill='none' stroke='%230B3B8C' stroke-width='1.7' stroke-linejoin='round'> <ellipse cx='30' cy='44' rx='18' ry='6' fill='rgba(0,0,0,0.12)' stroke='none'/> <path fill='%23ffffff' d='M6 28 L38 28 C46 28 54 31 58 35 L60 37 L60 39 L58 41 C54 45 46 48 38 48 L6 48 Z'/> <path fill='%23ffffff' d='M6 28 L3 31 L3 45 L6 48 Z'/> <path d='M28 24 L10 16 L10 21 L24 29' fill='%23ffffff'/> <path d='M28 52 L10 58 L10 53 L24 47' fill='%23ffffff'/> <g fill='%230B3B8C' stroke='none'> <rect x='30' y='31' width='2.4' height='2.4' rx='0.6'/> <rect x='34' y='31' width='2.4' height='2.4' rx='0.6'/> <rect x='38' y='31' width='2.4' height='2.4' rx='0.6'/> <rect x='42' y='31' width='2.4' height='2.4' rx='0.6'/> <rect x='46' y='31' width='2.4' height='2.4' rx='0.6'/> </g> </g></svg>") 6 33, auto;
--cursor-plane-link: var(--cursor-plane);
--cursor-gh: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='66' height='66' viewBox='0 0 66 66'> <g fill='none' stroke='none'> <ellipse cx='28' cy='44' rx='18' ry='6' fill='rgba(37,92,199,0.2)'/> <rect x='8' y='28' width='20' height='10' rx='2' fill='%23ffffff'/> <rect x='6' y='26' width='8' height='14' rx='2' fill='%23ffffff'/> <rect x='28' y='26' width='14' height='12' rx='2' fill='%23ffffff'/> <rect x='42' y='28' width='8' height='2' fill='%23ffffff'/> <rect x='50' y='24' width='12' height='10' rx='2' fill='%23ffffff'/> </g></svg>") 10 33, auto;
--cursor-gh-link: var(--cursor-gh);
}
body, * { cursor: var(--cursor-plane); }
a, button, [role="button"], .clickable { cursor: var(--cursor-plane-link); }
.gh-cursor * { cursor: var(--cursor-gh); }
.gh-cursor a, .gh-cursor button, .gh-cursor [role="button"], .gh-cursor .clickable { cursor: var(--cursor-gh-link); }
</style>
</head>
<body class="bg-[#0B3B8C]">
<div id="root"></div>
<script type="text/babel">
const { useState, useEffect } = React;
function CatoairLogo() {
return <div className="font-semibold tracking-widest">CATOAIR</div>;
}
function AirplaneWindowFrame() {
return (
<div className="relative w-[min(90vw,680px)] h-[min(70vh,520px)]">
<div className="absolute inset-0 rounded-[40px] md:rounded-[54px] border-2 border-white/40 shadow-[0_0_0_6px_rgba(255,255,255,0.12)_inset] bg-white/5" />
<div className="absolute inset-3 rounded-[36px] md:rounded-[50px] bg-gradient-to-b from-white/10 to-white/0" />
<div className="absolute left-6 top-6 w-24 h-24 rounded-full bg-white/15 blur-2xl" />
</div>
);
}
function CloudBand({ speedSeconds = 60