/* ========================================= */
/* CUSTOM FONTS                              */
/* ========================================= */
@font-face { font-family: 'uh_sans_regular'; font-style: normal; font-weight: normal; src: url('/static/font/ProductSans-Regular.woff') format('woff'); }
@font-face { font-family: 'uh_sans_bold'; font-style: normal; font-weight: normal; src: url('/static/font/ProductSans-Bold.woff') format('woff'); }
@font-face { font-family: 'uh_sans_black'; font-style: normal; font-weight: normal; src: url('/static/font/ProductSans-Black.woff') format('woff'); }

@font-face { font-family: 'uh_roboto_regular'; font-style: normal; font-weight: normal; src: url('/static/font/Roboto-Regular.woff') format('woff'); }
@font-face { font-family: 'uh_roboto_bold'; font-style: normal; font-weight: normal; src: url('/static/font/Roboto-Bold.woff') format('woff'); }
@font-face { font-family: 'uh_roboto_black'; font-style: normal; font-weight: normal; src: url('/static/font/Roboto-Black.woff') format('woff'); }

/* ========================================= */
/* VARIABLES                                 */
/* ========================================= */
:root
{
	--font-min: 20px;
	--brand-accent: #00ffb4; /* Neon cyan from OSINT Works logo */
	--bg-dark: #1a1a1a; 
	--border-subtle: #333333; 
	--text-light: #ffffff; 
	--color-grey-light: rgb(150, 150, 150);
	--color-grey-dark: rgb(40, 40, 40);
}

*
{
	box-sizing: border-box !important;
}

html, 
body
{
	margin: 0;
	padding: 0;
	border: 0;
	width: 100%;
	height: 100%;
	overflow-x: hidden;
	-webkit-font-smoothing: antialiased;
}
main
{
	width: 100%;
}
html
{
	font-size: clamp(13px, calc(min(100vw, 100vh)*0.04), 16px);
}

.fa-svg
{
	/* Inherit the font size of the parent element */
	height: 1em;
	width: 1em;

	/* Align the SVG horizontally and vertically within the text flow */
	vertical-align: -0.125em;

	/* Fill the SVG with the current text color */
	fill: currentColor;
}

.icon
{
	display: inline-flex;
	align-items: center;
	font-weight: inherit;
	font-size: inherit;
}
.icon-big
{
	display: inline-flex;
	align-items: center;
	margin: 10px;
	font-weight: inherit;
	font-size: 4rem;
}

/* ========================================= */
/* TYPOGRAPHY & BASE STYLES                  */
/* ========================================= */
body
{
	font-family: 'uh_sans_regular', sans-serif;
	font-weight: normal;
	font-size: max(var(--font-min), clamp(1.2rem, calc(min(100vw, 100vh)*0.1), 1.8rem));
	background-color: var(--bg-dark);
	color: var(--text-light);
}

.normal
{
	font-family: 'uh_sans_regular', sans-serif;
	font-weight: normal;
}

.light
{
	font-family: 'uh_roboto_regular', sans-serif;
	font-weight: normal;
	color: #cccccc; 
}

strong
{
	font-family: 'uh_sans_bold', sans-serif !important;
	font-weight: normal !important;
}

.font-45
{
	font-size: max(var(--font-min), 2.7rem);
	font-size: max(var(--font-min), clamp(2.1rem, calc(min(100vw, 100vh)*0.1), 2.7rem));
}
.font-36
{
	font-size: max(var(--font-min), clamp(1.6rem, calc(min(100vw, 100vh)*0.1), 2.2rem));
}
.font-30
{
	font-size: max(var(--font-min), clamp(1.2rem, calc(min(100vw, 100vh)*0.1), 1.8rem));
}

a, a:focus, a:visited
{
	color: var(--brand-accent);
}

h1, h2, h3, p
{
	margin: 0;
	padding: 0;
	font-size: inherit;
	line-height: 1.2;
}

h1, h2, h3
{
	margin: 20px 0 10px;
	font-family: 'uh_sans_black', sans-serif;
	font-weight: normal;
}

h1
{
	margin: 2.5rem 0 1.25rem;
	font-size: max(var(--font-min), clamp(2.5rem, calc(min(100vw, 100vh)*0.1), 5rem));
}
h2
{
	margin: 1.25rem 0 0.75rem;
}
p
{
	margin: 5px 0 2px;
}

section
{
	margin-top: 100px;
	padding-left: 20px;
	padding-right: 20px;
}

ul
{
	list-style: none;
	padding-left: 0;
	margin: 0;
}
li
{
	position: relative;
}
li:before
{
	content: "•";
	position: absolute;
	left: 0;
	top: 50%;
	color: var(--brand-accent);
	transform: translateY(-50%);
}
li p
{
	display: inline-block;
	margin: 10px 0 0 !important;
	padding: 0 0 0 1.5em !important;
}

/* ========================================= */
/* CUSTOM UNDERLINES & REUSABLE COLORS       */
/* ========================================= */
.underlined-white, 
.underlined-grey, 
.underlined-color, 
.dotted
{
	position: relative !important;
	display: inline-block;
	z-index: 1;
}
.underlined-white::before, 
.underlined-grey::before, 
.underlined-color::before
{
	content: "";
	z-index: -1;
	position: absolute;
	left: min(max(10%, 5px), 15px);
	bottom: 0;
	width: calc(100% - min(max(10%, 5px), 15px)*2);
	height: 10%;
}
.dotted::before
{
	content: "..";
	z-index: -1;
	position: absolute;
	left: 4px;
	top: 0;
	transform: translate(0, 25%);
	color: var(--brand-accent);
}
.underlined-white::before { background: #fff; }
.underlined-grey::before { background: var(--color-grey-light); }
.underlined-color::before { background: var(--brand-accent); }

.text-accent { color: var(--brand-accent) !important; }
.text-muted { color: #888888 !important; }
a.text-muted:hover, a.text-muted:focus { color: var(--brand-accent) !important; }
.icon-muted { fill: #888888 !important; }


/* ========================================= */
/* NAVIGATION STYLES (Desktop & Mobile)      */
/* ========================================= */

nav, .nav {
	display: flex;
	flex-wrap: wrap; 
	align-items: center;
	justify-content: center;
	gap: 2rem;
	padding: 20px;
	width: 100%;
	height: auto;
	z-index: 100;
}

.nav {
	margin: 0 auto;
	max-width: 640px;
	font-size: 1.2rem;
	color: var(--text-light);
	background: #000000;
	border-top-left-radius: 9999px;
	border-bottom-right-radius: 4999px;
	border-top-right-radius: 4999px;
}

.hero nav {
	position: absolute;
	left: 50%;
	top: 0;
	transform: translate(-50%, 0);
}

nav a, nav a:focus, nav a:visited {
	text-decoration: none;
	color: var(--text-light);
}

.nav a, .nav a:focus, .nav a:visited,
.hero nav a, .hero nav a:focus, .hero nav a:visited {
	color: var(--text-light);
	text-decoration: none;
}

nav a.current, nav a.current:focus, nav a.current:visited,
.nav a.current, .nav a.current:focus, .nav a.current:visited {
	color: var(--brand-accent);
}

.hamburger { 
	display: none; 
	background: transparent; 
	border: none; 
	cursor: pointer; 
	padding: 5px; 
}

.hamburger svg { fill: var(--text-light); }
.hero nav .hamburger svg, .nav .hamburger svg { fill: var(--text-light); }

.nav-links { 
	display: flex; 
	flex-direction: row; 
	align-items: center; 
	gap: 2rem; 
}

/* RESTORED: Darkonium Nav Dropdown Base */
.nav-dropdown { 
	position: relative; 
	display: flex; 
	align-items: center; 
	cursor: pointer;
	height: 100%;
}

.nav-indicator {
	font-size: 0.7em;
	margin-left: 5px;
	transition: opacity 0.2s;
}

.nav-subpages {
	display: none;
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX(-50%);
	background: #000; 
	padding: 10px 0;
	border-radius: 15px;
	min-width: 220px;
	z-index: 1000;
	box-shadow: 0 4px 15px rgba(0,0,0,0.5);
}

.nav-subpages a { 
	display: block; 
	padding: 12px 20px !important; 
	white-space: nowrap; 
	color: #fff !important; 
}

.nav-subpages a.current {
	background-color: rgb(70, 70, 70);
	color: var(--brand-accent) !important;
}

/* JS Expansion state */
.nav-dropdown.expanded .nav-subpages { 
	display: flex; 
	flex-direction: column; 
}

.nav-dropdown.expanded .nav-indicator { 
	opacity: 0; 
}

/* Desktop overrides */
@media (min-width: 769px) {
	.nav-subpages a:hover {
		background-color: #1a1a1a;
		color: var(--brand-accent) !important;
	}
}


/* Hide the mobile header wrapper on desktop */
.mobile-nav-header {
	display: contents;
}
.mobile-nav-logo, .hamburger {
	display: none;
}

@media (max-width: 768px) {
	.desktop-header {
		display: none !important;
	}

	nav, .nav { 
		display: flex;
		flex-direction: column; /* Stack the header and the links */
		padding: 15px 20px; /* Uniform padding */
		background: #000000; 
		border-radius: 0;
		border-bottom-left-radius: 0;
		color: var(--text-light);
		border: none;
		border-bottom: 1px solid var(--border-subtle);
	}

	.mobile-nav-header {
		display: flex;
		width: 100%;
		justify-content: space-between; 
		align-items: center; 
	}
	
	.mobile-nav-logo {
		display: block;
		height: auto; 
		width: 80px;
		object-fit: contain;
	}

	.home-link, .hamburger { 
		display: flex; 
		align-items: center;
		justify-content: center;
		margin: 0; 
		padding: 5px;
		width: 34px;
		height: 34px;
		background: transparent;
		border: none;
		cursor: pointer;
	}
	
	.desktop-home-icon {
		display: block !important;
		width: 24px;
		height: 24px;
	}
	
	.hero nav {
		top: 0;
		width: 100%;
	}
	
	.hamburger svg {
		fill: var(--text-light);
		transition: transform 0.3s ease;
	}
	
	.hamburger.is-active svg {
		transform: rotate(90deg);
	}
	
	nav a, .nav a {
		color: var(--text-light) !important; 
	}
	
	.nav a.current {
		color: var(--brand-accent) !important;
	}	
	
	nav a.current {
		color: var(--brand-accent) !important;
	}
	
	.nav-links {
		display: none; 
		flex-direction: column;
		width: 100%;
		gap: 0; 
		padding-top: 15px; 
	}
	
	.nav-links.mobile-open { 
		display: flex; 
	}
	
	.nav-links > a,
	.dropdown-trigger {
		display: flex;
		width: 100%;
		justify-content: center;
		align-items: center;
		padding: 16px 0; 
		margin: 0;
		border-radius: 0 !important; 
	}
	
	.nav-links > a.current,
	.dropdown-trigger.current {
		background-color: #111111;
		border-radius: 0;
		width: 100%; 
		margin: 0;
	}

	/* RESTORED: Darkonium Mobile Dropdown Overrides */
	.nav-dropdown.active-section .nav-subpages {
		display: flex;
		flex-direction: column;
	}
	.nav-dropdown.active-section .nav-indicator {
		opacity: 0;
	}
	
	.nav-dropdown { 
		width: 100%; 
		flex-direction: column; 
		align-items: center; 
	}
	
	.nav-subpages {
		position: static;
		transform: none;
		width: 100%;
		background: #111111; 
		border-radius: 0; 
		box-shadow: none;
		padding: 0; 
		border-left: none; 
		margin-top: 0; 
	}

	.nav-subpages a {
		text-align: center;
		width: 100%;
		padding: 15px 0 !important;
		margin: 0;
		border-radius: 0 !important;
	}

	.nav-subpages a.current {
		background-color: rgb(70, 70, 70);
		border-radius: 0;
		width: 100%;
		margin: 0;
		font-weight: bold; 
	}
}


/* ========================================= */
/* GLOBAL SITE STYLES                        */
/* ========================================= */

footer
{
	padding: 20px;
	padding-top: 50px;
	text-align: center;
	font-size: 1.25rem;
	color: #888888; 
}

header
{
	position: relative;
	display: block;
	margin: 0 auto;
	max-width: 280px;
	height: 80px;
	background: #000000;
	border-bottom-left-radius: 50px;
	border-bottom-right-radius: 50px;
	border-top: none;
}

header img
{
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	width: 80px;
}

.home-wrapper {
	display: flex;
	flex-direction: column;
	width: 100%;
}

.hero
{
	position: relative;
	width: 100%;
	height: 100vh;
	display: block;
	margin: 0;
	padding: 0;
	background: var(--bg-dark);
}

.hero > div
{
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, calc(-50% - 40px));
	display: block;
	margin: 0;
	padding: 0;
	width: calc(min(1000px, 100% - 40px));
	text-align: center;
	color: var(--text-light);
}

.hero h1
{
	font-size: max(var(--font-min), clamp(2.5rem, calc(min(100vw, 100vh)*0.1), 5rem));
	opacity: 0;
	transform: translateY(-25px);
	animation: hero-h1-fade 0.5s ease-out forwards;
	animation-delay: 0.2s;
}

.hero p
{
	opacity: 0;
	transform: translateY(25px);
	animation: hero-p-fade 0.6s ease-out forwards;
	animation-delay: 0.8s;
}

@keyframes hero-h1-fade
{
	0% { opacity: 0; transform: translateY(-25px); }
	100% { opacity: 1; transform: translateY(0); }
}
@keyframes hero-p-fade
{
	0% { opacity: 0; transform: translateY(25px); }
	100% { opacity: 1; transform: translateY(0); }
}

.content-wrap
{
	display: block;
	max-width: 1200px;
	margin: 0 auto;
	padding: 80px 40px 40px;
	background: transparent;
	border: 1px solid var(--border-subtle);
	border-radius: 50px;
}

.badges
{
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: 20px;
}
.badges img
{
	margin: 10px 15px;
	height: clamp(45px, calc(min(100vw, 100vh)*0.1), 60px);
	filter: grayscale(100%) brightness(200%); 
	transition: filter 0.3s ease;
}
.badges img:hover 
{
	filter: none; 
}

#cookie-banner
{
	z-index: 9999;
	display: none;
	position: fixed;
	bottom: 0;
	left: 0;
	right: 0;
	background: #000000;
	color: var(--text-light);
	padding: 15px;
	text-align: center;
	opacity: 0.95;
	font-size: 1.6rem;
	border-top: 1px solid var(--border-subtle);
}
#cookie-banner button
{
	width: 140px;
	color: #000;
	background: var(--text-light);
	border: 0;
	padding: 10px 20px;
	margin: 10px;
	cursor: pointer;
	border-radius: 9999px;
	font-family: inherit;
	font-size: inherit;
	transition: background 0.3s ease;
}
#cookie-banner button:hover 
{
	background: var(--brand-accent);
}

.ux-button
{
	display: block;
	margin: 0 auto;
	width: 5rem;
	height: 5rem;
	background-color: var(--brand-accent);
	color: #000;
	border: none;
	border-radius: 50%;
	font-size: 2rem;
	cursor: pointer;
}

/* ========================================= */
/* UX BUTTON ANIMATIONS                      */
/* ========================================= */

@keyframes pulse-grow {
	0% { transform: scale(1); animation-timing-function: ease-out; }
	16.66% { transform: scale(1.15); animation-timing-function: ease-in-out; }
	66.66% { transform: scale(1); }
	100% { transform: scale(1); }
}

div[data-ux-level="0"] .ux-button {
	animation: pulse-grow 1.5s infinite; 
	transform-origin: center center; 
}

div[data-ux-level="1"] .ux-button {
	animation: none;
	transform: scale(1); 
}
