cloudflare
tcp/443 tcp/80 tcp/8443
Open service 2606:4700:3036::ac43:b957:8443 · hatrueept.info
2026-01-26 13:27
HTTP/1.1 522 <none> Date: Mon, 26 Jan 2026 13:27:21 GMT Content-Type: text/plain; charset=UTF-8 Content-Length: 15 Connection: close Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 01 Jan 1970 00:00:01 GMT Referrer-Policy: same-origin Server-Timing: cfEdge;dur=19449,cfOrigin;dur=0 X-Frame-Options: SAMEORIGIN Server: cloudflare CF-RAY: 9c40586e3a940dfd-SJC alt-svc: h3=":8443"; ma=86400 error code: 522
Open service 2606:4700:3037::6815:5c1b:8443 · hatrueept.info
2026-01-26 13:27
HTTP/1.1 522 <none> Date: Mon, 26 Jan 2026 13:27:21 GMT Content-Type: text/plain; charset=UTF-8 Content-Length: 15 Connection: close Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 01 Jan 1970 00:00:01 GMT Referrer-Policy: same-origin Server-Timing: cfEdge;dur=19564,cfOrigin;dur=0 X-Frame-Options: SAMEORIGIN Server: cloudflare CF-RAY: 9c40586ecb13978e-SIN alt-svc: h3=":8443"; ma=86400 error code: 522
Open service 2606:4700:3037::6815:5c1b:443 · hatrueept.info
2026-01-26 13:27
HTTP/1.1 200 OK
Date: Mon, 26 Jan 2026 13:27:02 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Server: cloudflare
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Vary: Accept-Encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=RYPDBk8XzWD8zPVMEbMj83ylg9ojLqHZbLFldrsg9h7FanWgioBgvJW1gFktKQOKQENVFedRTAdmmAx%2BvJVwOxo7Xo0lOfIUzLvEU9locEKXXzMqfcMCUfrK"}]}
cf-cache-status: DYNAMIC
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=6,cfOrigin;dur=449
CF-RAY: 9c40586afcdf405d-SJC
alt-svc: h3=":443"; ma=86400
Page title: Application placeholder
<!DOCTYPE html>
<html lang="en" data-theme="light">
<head>
<meta charset="UTF-8" />
<title>Application placeholder</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="noindex,nofollow">
<style>
:root {
--bg1: #f9fafb;
--bg2: #fefce8;
--bg3: #e0f2fe;
--accent-green: #22c55e;
--accent-yellow: #eab308;
--accent-orange: #f97316;
--card-bg: rgba(255, 255, 255, 0.9);
--card-border: rgba(15, 23, 42, 0.06);
--card-shadow: 0 18px 45px rgba(15, 23, 42, 0.12);
--text-main: #0f172a;
--text-muted: #6b7280;
--chip-bg: rgba(255, 255, 255, 0.9);
--chip-border: rgba(15, 23, 42, 0.08);
--footer-chip-bg: rgba(255, 255, 255, 0.8);
}
:root[data-theme="dark"] {
--bg1: #020617;
--bg2: #020617;
--bg3: #020617;
--card-bg: rgba(15, 23, 42, 0.96);
--card-border: rgba(148, 163, 184, 0.28);
--card-shadow: 0 26px 70px rgba(0, 0, 0, 0.9);
--text-main: #f9fafb;
--text-muted: #9ca3af;
--chip-bg: rgba(15, 23, 42, 0.96);
--chip-border: rgba(148, 163, 184, 0.5);
--footer-chip-bg: rgba(15, 23, 42, 0.96);
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
color: var(--text-main);
overflow: hidden;
position: relative;
background: linear-gradient(180deg, var(--bg1) 0%, var(--bg2) 45%, var(--bg3) 100%);
}
.spot {
position: absolute;
border-radius: 50%;
filter: blur(120px);
opacity: 0.35;
animation: float 18s ease-in-out infinite alternate;
pointer-events: none;
}
.spot.green {
width: 420px; height: 420px;
background: var(--accent-green);
top: 5%; left: 10%;
animation-delay: 0s;
}
.spot.yellow {
width: 380px; height: 380px;
background: var(--accent-yellow);
bottom: 10%; right: 10%;
animation-delay: 2s;
}
.spot.orange {
width: 320px; height: 320px;
background: var(--accent-orange);
top: 60%; left: 50%;
animation-delay: 4s;
}
@keyframes float {
0% { transform: translateY(0) scale(1); }
50% { transform: translateY(-30px) scale(1.03); opacity: 0.45; }
100% { transform: translateY(20px) scale(1.08); opacity: 0.3; }
}
.theme-toggle {
position: fixed;
top: 20px;
right: 24px;
z-index: 10;
display: inline-flex;
align-items: center;
gap: 8px;
padding: 6px 8px;
border-radius: 999px;
border: 1px solid rgba(148, 163, 184, 0.4);
background: rgba(255, 255, 255, 0.8);
cursor: pointer;
user-select: none;
transition: background 0.3s ease, border-color 0.3s ease;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}
:root[data-theme="dark"] .theme-toggle {
background: rgba(15, 23, 42, 0.9);
border-color: rgba(148, 163, 184, 0.4);
box-shadow: 0 0 18px rgba(255, 255, 255, 0.04);
}
.theme-icon {
width: 18px;
height: 18px;
display: inline-flex;
align-items: center;
justify-content: center;
color: var(--text-main);
opacity: 0.5;
transition: opacity 0.2s ease;
}
:root[data-theme="light"] .theme-icon.sun,
:root[data-theme="dark"] .theme-icon.moon {
opacity: 1;
}
.theme-icon svg {
width: 100%;
height: 100%;
stroke: currentColor;
fill: none;
stroke-width: 1.6;
}
.card {
position: relative;
z-index: 1;
backdrop-filter: blur(18px);
-webkit-backdrop-filter: blur(18px);
background: var(--card-bg);
border-radius: 16px;
box-shadow: var(--card-shadow);
padding: 48px 38px 36px;
max-width: 480px;
width: 100%;
Open service 172.67.185.87:80 · hatrueept.info
2026-01-26 13:27
HTTP/1.1 301 Moved Permanently
Date: Mon, 26 Jan 2026 13:27:01 GMT
Content-Length: 0
Connection: close
Location: https://hatrueept.info/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=gFX0bA3xImQNGvDB5Dw0Uxb63NhbGvYUOLW3dQxyDuIDbtwsdj3H4RpWuVyV6%2B5dymWydDZQ0QMOXWaRFWXCLSiWZijkm5PbmD0h1lag"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfEdge;dur=10,cfOrigin;dur=0
Server: cloudflare
CF-RAY: 9c405867dbb62a90-SIN
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3037::6815:5c1b:80 · hatrueept.info
2026-01-26 13:27
HTTP/1.1 301 Moved Permanently
Date: Mon, 26 Jan 2026 13:27:01 GMT
Content-Length: 0
Connection: close
Location: https://hatrueept.info/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=nL4pJLiOleEup8%2Fo4fqy0vBouDs%2Fh95ziClebVCNLX4t%2F%2FpTNYgYfcN1zh0DPvWBL6RtFBE3R8EYJkGj8Qxrk%2F833woPzkzpp7SHWXiV8jPsZjb8LlezjQ5V"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfEdge;dur=14,cfOrigin;dur=0
Server: cloudflare
CF-RAY: 9c405867db6b0a9d-SIN
alt-svc: h3=":443"; ma=86400
Open service 172.67.185.87:443 · hatrueept.info
2026-01-26 13:27
HTTP/1.1 200 OK
Date: Mon, 26 Jan 2026 13:27:01 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Server: cloudflare
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Vary: Accept-Encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=dXQH5iQ2pCy%2BaYSopX%2BOALXwUledUwv5MtQMx%2FlXeU%2FRqLBTAmEJQvWnWTzaIpM4L34sZHgl8wGnQ9F4L3P9nJ9CiFauhP9GA7cLonqD"}]}
cf-cache-status: DYNAMIC
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=6,cfOrigin;dur=328
CF-RAY: 9c405869ce35e080-YYZ
alt-svc: h3=":443"; ma=86400
Page title: Application placeholder
<!DOCTYPE html>
<html lang="en" data-theme="light">
<head>
<meta charset="UTF-8" />
<title>Application placeholder</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="noindex,nofollow">
<style>
:root {
--bg1: #f9fafb;
--bg2: #fefce8;
--bg3: #e0f2fe;
--accent-green: #22c55e;
--accent-yellow: #eab308;
--accent-orange: #f97316;
--card-bg: rgba(255, 255, 255, 0.9);
--card-border: rgba(15, 23, 42, 0.06);
--card-shadow: 0 18px 45px rgba(15, 23, 42, 0.12);
--text-main: #0f172a;
--text-muted: #6b7280;
--chip-bg: rgba(255, 255, 255, 0.9);
--chip-border: rgba(15, 23, 42, 0.08);
--footer-chip-bg: rgba(255, 255, 255, 0.8);
}
:root[data-theme="dark"] {
--bg1: #020617;
--bg2: #020617;
--bg3: #020617;
--card-bg: rgba(15, 23, 42, 0.96);
--card-border: rgba(148, 163, 184, 0.28);
--card-shadow: 0 26px 70px rgba(0, 0, 0, 0.9);
--text-main: #f9fafb;
--text-muted: #9ca3af;
--chip-bg: rgba(15, 23, 42, 0.96);
--chip-border: rgba(148, 163, 184, 0.5);
--footer-chip-bg: rgba(15, 23, 42, 0.96);
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
color: var(--text-main);
overflow: hidden;
position: relative;
background: linear-gradient(180deg, var(--bg1) 0%, var(--bg2) 45%, var(--bg3) 100%);
}
.spot {
position: absolute;
border-radius: 50%;
filter: blur(120px);
opacity: 0.35;
animation: float 18s ease-in-out infinite alternate;
pointer-events: none;
}
.spot.green {
width: 420px; height: 420px;
background: var(--accent-green);
top: 5%; left: 10%;
animation-delay: 0s;
}
.spot.yellow {
width: 380px; height: 380px;
background: var(--accent-yellow);
bottom: 10%; right: 10%;
animation-delay: 2s;
}
.spot.orange {
width: 320px; height: 320px;
background: var(--accent-orange);
top: 60%; left: 50%;
animation-delay: 4s;
}
@keyframes float {
0% { transform: translateY(0) scale(1); }
50% { transform: translateY(-30px) scale(1.03); opacity: 0.45; }
100% { transform: translateY(20px) scale(1.08); opacity: 0.3; }
}
.theme-toggle {
position: fixed;
top: 20px;
right: 24px;
z-index: 10;
display: inline-flex;
align-items: center;
gap: 8px;
padding: 6px 8px;
border-radius: 999px;
border: 1px solid rgba(148, 163, 184, 0.4);
background: rgba(255, 255, 255, 0.8);
cursor: pointer;
user-select: none;
transition: background 0.3s ease, border-color 0.3s ease;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}
:root[data-theme="dark"] .theme-toggle {
background: rgba(15, 23, 42, 0.9);
border-color: rgba(148, 163, 184, 0.4);
box-shadow: 0 0 18px rgba(255, 255, 255, 0.04);
}
.theme-icon {
width: 18px;
height: 18px;
display: inline-flex;
align-items: center;
justify-content: center;
color: var(--text-main);
opacity: 0.5;
transition: opacity 0.2s ease;
}
:root[data-theme="light"] .theme-icon.sun,
:root[data-theme="dark"] .theme-icon.moon {
opacity: 1;
}
.theme-icon svg {
width: 100%;
height: 100%;
stroke: currentColor;
fill: none;
stroke-width: 1.6;
}
.card {
position: relative;
z-index: 1;
backdrop-filter: blur(18px);
-webkit-backdrop-filter: blur(18px);
background: var(--card-bg);
border-radius: 16px;
box-shadow: var(--card-shadow);
padding: 48px 38px 36px;
max-width: 480px;
width: 100%;
Open service 104.21.92.27:8443 · hatrueept.info
2026-01-26 13:27
HTTP/1.1 522 <none> Date: Mon, 26 Jan 2026 13:27:21 GMT Content-Type: text/plain; charset=UTF-8 Content-Length: 15 Connection: close Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 01 Jan 1970 00:00:01 GMT Referrer-Policy: same-origin Server-Timing: cfEdge;dur=19326,cfOrigin;dur=0 X-Frame-Options: SAMEORIGIN Server: cloudflare CF-RAY: 9c40586ddf0978ed-EWR alt-svc: h3=":8443"; ma=86400 error code: 522
Open service 172.67.185.87:8443 · hatrueept.info
2026-01-26 13:27
HTTP/1.1 522 <none> Date: Mon, 26 Jan 2026 13:27:21 GMT Content-Type: text/plain; charset=UTF-8 Content-Length: 15 Connection: close Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 01 Jan 1970 00:00:01 GMT Referrer-Policy: same-origin Server-Timing: cfEdge;dur=19619,cfOrigin;dur=0 X-Frame-Options: SAMEORIGIN Server: cloudflare CF-RAY: 9c40586dde2c2560-EWR alt-svc: h3=":8443"; ma=86400 error code: 522
Open service 2606:4700:3036::ac43:b957:80 · hatrueept.info
2026-01-26 13:26
HTTP/1.1 301 Moved Permanently
Date: Mon, 26 Jan 2026 13:27:01 GMT
Content-Length: 0
Connection: close
Location: https://hatrueept.info/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=RPhLMR1g4ts7g5SURWkRpZm81ryUA5KT%2BSnRHi7B8y4zt943%2BUbrvbJ5%2FI7XpvSYk2hcf77iz3GNh6K3BES8hlQuq7nAtQjjwEdhLlT%2FDtFanY017T7L40Kv"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c4058675dffd386-FRA
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3036::ac43:b957:443 · hatrueept.info
2026-01-26 13:26
HTTP/1.1 200 OK
Date: Mon, 26 Jan 2026 13:27:01 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Server: cloudflare
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Vary: Accept-Encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=mKmhGmjO6cZrTS%2B6D2dhUzkDBbg1ofEaQHDxw7KHXzYyW0H8Q41GI29Ryo2MnmuKNWLmNnyOpc38J%2F3m8Z9Yrzip8K9SoSLHEvc40NCaGLpt3xHP%2FkmELGeQ"}]}
cf-cache-status: DYNAMIC
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=5,cfOrigin;dur=272
CF-RAY: 9c405868de3ada8d-EWR
alt-svc: h3=":443"; ma=86400
Page title: Application placeholder
<!DOCTYPE html>
<html lang="en" data-theme="light">
<head>
<meta charset="UTF-8" />
<title>Application placeholder</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="noindex,nofollow">
<style>
:root {
--bg1: #f9fafb;
--bg2: #fefce8;
--bg3: #e0f2fe;
--accent-green: #22c55e;
--accent-yellow: #eab308;
--accent-orange: #f97316;
--card-bg: rgba(255, 255, 255, 0.9);
--card-border: rgba(15, 23, 42, 0.06);
--card-shadow: 0 18px 45px rgba(15, 23, 42, 0.12);
--text-main: #0f172a;
--text-muted: #6b7280;
--chip-bg: rgba(255, 255, 255, 0.9);
--chip-border: rgba(15, 23, 42, 0.08);
--footer-chip-bg: rgba(255, 255, 255, 0.8);
}
:root[data-theme="dark"] {
--bg1: #020617;
--bg2: #020617;
--bg3: #020617;
--card-bg: rgba(15, 23, 42, 0.96);
--card-border: rgba(148, 163, 184, 0.28);
--card-shadow: 0 26px 70px rgba(0, 0, 0, 0.9);
--text-main: #f9fafb;
--text-muted: #9ca3af;
--chip-bg: rgba(15, 23, 42, 0.96);
--chip-border: rgba(148, 163, 184, 0.5);
--footer-chip-bg: rgba(15, 23, 42, 0.96);
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
color: var(--text-main);
overflow: hidden;
position: relative;
background: linear-gradient(180deg, var(--bg1) 0%, var(--bg2) 45%, var(--bg3) 100%);
}
.spot {
position: absolute;
border-radius: 50%;
filter: blur(120px);
opacity: 0.35;
animation: float 18s ease-in-out infinite alternate;
pointer-events: none;
}
.spot.green {
width: 420px; height: 420px;
background: var(--accent-green);
top: 5%; left: 10%;
animation-delay: 0s;
}
.spot.yellow {
width: 380px; height: 380px;
background: var(--accent-yellow);
bottom: 10%; right: 10%;
animation-delay: 2s;
}
.spot.orange {
width: 320px; height: 320px;
background: var(--accent-orange);
top: 60%; left: 50%;
animation-delay: 4s;
}
@keyframes float {
0% { transform: translateY(0) scale(1); }
50% { transform: translateY(-30px) scale(1.03); opacity: 0.45; }
100% { transform: translateY(20px) scale(1.08); opacity: 0.3; }
}
.theme-toggle {
position: fixed;
top: 20px;
right: 24px;
z-index: 10;
display: inline-flex;
align-items: center;
gap: 8px;
padding: 6px 8px;
border-radius: 999px;
border: 1px solid rgba(148, 163, 184, 0.4);
background: rgba(255, 255, 255, 0.8);
cursor: pointer;
user-select: none;
transition: background 0.3s ease, border-color 0.3s ease;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}
:root[data-theme="dark"] .theme-toggle {
background: rgba(15, 23, 42, 0.9);
border-color: rgba(148, 163, 184, 0.4);
box-shadow: 0 0 18px rgba(255, 255, 255, 0.04);
}
.theme-icon {
width: 18px;
height: 18px;
display: inline-flex;
align-items: center;
justify-content: center;
color: var(--text-main);
opacity: 0.5;
transition: opacity 0.2s ease;
}
:root[data-theme="light"] .theme-icon.sun,
:root[data-theme="dark"] .theme-icon.moon {
opacity: 1;
}
.theme-icon svg {
width: 100%;
height: 100%;
stroke: currentColor;
fill: none;
stroke-width: 1.6;
}
.card {
position: relative;
z-index: 1;
backdrop-filter: blur(18px);
-webkit-backdrop-filter: blur(18px);
background: var(--card-bg);
border-radius: 16px;
box-shadow: var(--card-shadow);
padding: 48px 38px 36px;
max-width: 480px;
width: 100%;
Open service 104.21.92.27:80 · hatrueept.info
2026-01-26 13:26
HTTP/1.1 301 Moved Permanently
Date: Mon, 26 Jan 2026 13:27:01 GMT
Content-Length: 0
Connection: close
Location: https://hatrueept.info/
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=qkfKV%2F6O3U4BqvyeNzzuxFcRN%2Bf1%2Bw%2FJciPYUuLAgArD2qI4hnlRlzAk%2Fj7Spv%2B4Fy%2B37e%2BENd1jrwrtvOaR1pV3v9Y%2FYRmiXg3CsQ%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c405867eb5af5d9-AMS
alt-svc: h3=":443"; ma=86400
Open service 104.21.92.27:443 · hatrueept.info
2026-01-26 13:26
HTTP/1.1 200 OK
Date: Mon, 26 Jan 2026 13:27:01 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Server: cloudflare
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Vary: Accept-Encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=F1mjEfEmehk8oHsJGjnUDODC%2Fcs0vhmN10ArmXX9vo4ZrQOTq0IgAGAEAMkLZmCaPBeyi4Z0iBSDRRYBVHeEZuQO1NyjdzR2FU1bzCi9"}]}
cf-cache-status: DYNAMIC
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=7,cfOrigin;dur=263
CF-RAY: 9c405868ba64862e-EWR
alt-svc: h3=":443"; ma=86400
Page title: Application placeholder
<!DOCTYPE html>
<html lang="en" data-theme="light">
<head>
<meta charset="UTF-8" />
<title>Application placeholder</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="noindex,nofollow">
<style>
:root {
--bg1: #f9fafb;
--bg2: #fefce8;
--bg3: #e0f2fe;
--accent-green: #22c55e;
--accent-yellow: #eab308;
--accent-orange: #f97316;
--card-bg: rgba(255, 255, 255, 0.9);
--card-border: rgba(15, 23, 42, 0.06);
--card-shadow: 0 18px 45px rgba(15, 23, 42, 0.12);
--text-main: #0f172a;
--text-muted: #6b7280;
--chip-bg: rgba(255, 255, 255, 0.9);
--chip-border: rgba(15, 23, 42, 0.08);
--footer-chip-bg: rgba(255, 255, 255, 0.8);
}
:root[data-theme="dark"] {
--bg1: #020617;
--bg2: #020617;
--bg3: #020617;
--card-bg: rgba(15, 23, 42, 0.96);
--card-border: rgba(148, 163, 184, 0.28);
--card-shadow: 0 26px 70px rgba(0, 0, 0, 0.9);
--text-main: #f9fafb;
--text-muted: #9ca3af;
--chip-bg: rgba(15, 23, 42, 0.96);
--chip-border: rgba(148, 163, 184, 0.5);
--footer-chip-bg: rgba(15, 23, 42, 0.96);
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
color: var(--text-main);
overflow: hidden;
position: relative;
background: linear-gradient(180deg, var(--bg1) 0%, var(--bg2) 45%, var(--bg3) 100%);
}
.spot {
position: absolute;
border-radius: 50%;
filter: blur(120px);
opacity: 0.35;
animation: float 18s ease-in-out infinite alternate;
pointer-events: none;
}
.spot.green {
width: 420px; height: 420px;
background: var(--accent-green);
top: 5%; left: 10%;
animation-delay: 0s;
}
.spot.yellow {
width: 380px; height: 380px;
background: var(--accent-yellow);
bottom: 10%; right: 10%;
animation-delay: 2s;
}
.spot.orange {
width: 320px; height: 320px;
background: var(--accent-orange);
top: 60%; left: 50%;
animation-delay: 4s;
}
@keyframes float {
0% { transform: translateY(0) scale(1); }
50% { transform: translateY(-30px) scale(1.03); opacity: 0.45; }
100% { transform: translateY(20px) scale(1.08); opacity: 0.3; }
}
.theme-toggle {
position: fixed;
top: 20px;
right: 24px;
z-index: 10;
display: inline-flex;
align-items: center;
gap: 8px;
padding: 6px 8px;
border-radius: 999px;
border: 1px solid rgba(148, 163, 184, 0.4);
background: rgba(255, 255, 255, 0.8);
cursor: pointer;
user-select: none;
transition: background 0.3s ease, border-color 0.3s ease;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}
:root[data-theme="dark"] .theme-toggle {
background: rgba(15, 23, 42, 0.9);
border-color: rgba(148, 163, 184, 0.4);
box-shadow: 0 0 18px rgba(255, 255, 255, 0.04);
}
.theme-icon {
width: 18px;
height: 18px;
display: inline-flex;
align-items: center;
justify-content: center;
color: var(--text-main);
opacity: 0.5;
transition: opacity 0.2s ease;
}
:root[data-theme="light"] .theme-icon.sun,
:root[data-theme="dark"] .theme-icon.moon {
opacity: 1;
}
.theme-icon svg {
width: 100%;
height: 100%;
stroke: currentColor;
fill: none;
stroke-width: 1.6;
}
.card {
position: relative;
z-index: 1;
backdrop-filter: blur(18px);
-webkit-backdrop-filter: blur(18px);
background: var(--card-bg);
border-radius: 16px;
box-shadow: var(--card-shadow);
padding: 48px 38px 36px;
max-width: 480px;
width: 100%;