/* General & Containers
--------------------------------------------------------- */
:root {
	--c-ui-border: var(--c-bg-m75);
	--a--pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
	--a--blink: blink 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
* {
	cursor: none !important;
}
body {
	font-family: 'Space Mono';
	font-size: 2.2rem;
	background: var(--c-bg);
	line-height: 1.4;
}
section {
	background: var(--c-bg);
}
@media (min-width:768px) {
	h1, .h1,
	h2, .h2,
	h3, .h3,
	h4, .h4,
	h5, .h5,
	h6, .h6,
	p {
		margin-bottom: 4rem;
	}
}
/*.grid-bg {
	background-image: 
		linear-gradient(to right, rgba(0, 0, 0, 0.05) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(0, 0, 0, 0.05) 1px, transparent 1px);
	background-size: 40px 40px;
}
.scanlines {
	background: linear-gradient(
		to bottom,
		rgba(255, 255, 255, 0) 50%,
		rgba(0, 0, 0, 0.02) 50%
	);
	background-size: 100% 4px;
	pointer-events: none;
}*/
.grid-bg {
	/* Uses the 5% alpha of the INVERTED background color. 
	   In light mode, this draws a 5% dark line. 
	   In dark mode, it draws a 5% light line. */
	background-image: 
		linear-gradient(to right, var(--c-bg-invert-a5) 1px, transparent 1px),
		linear-gradient(to bottom, var(--c-bg-invert-a5) 1px, transparent 1px);
	background-size: 40px 40px;
}

.scanlines {
	/* Transparent remains transparent, but the dark line 
	   now uses a 2% alpha of your inverted background color. */
	background: linear-gradient(
		to bottom,
		transparent 50%,
		var(--c-bg-invert-a2) 50%
	);
	background-size: 100% 4px;
	pointer-events: none;
}

/*#bg-canvas {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
opacity: 0.6;
}*/

.z-0 {
	z-index: 0;
}
.inset-0 {
	inset: 0px;
}
.pointer-events-none {
	pointer-events: none;
}
.opacity-90 {opacity: 0.9;}
.opacity-80 {opacity: 0.8;}
.opacity-70 {opacity: 0.7;}
.opacity-60 {opacity: 0.6;}
.opacity-50 {opacity: 0.5;}
.opacity-40 {opacity: 0.4;}
.opacity-30 {opacity: 0.3;}
.opacity-20 {opacity: 0.2;}
.opacity-10 {opacity: 0.1;}

/* Typo
--------------------------------------------------------- */
.h1, .h2, .h3, .h4, .h5, .h6, .elementor-widget-heading h1.elementor-heading-title, .entry-content h1, h1, .elementor-widget-heading h2.elementor-heading-title, .entry-content h2, h2, .elementor-widget-heading h3.elementor-heading-title, .entry-content h3, h3, .elementor-widget-heading h4.elementor-heading-title, .entry-content h4, h4, .elementor-widget-heading h5.elementor-heading-title, .entry-content h5, h5, .elementor-widget-heading h6.elementor-heading-title, .entry-content h6, h6 {
	font-weight: 700;
	font-family: var(--ff-headlines);
	text-transform: uppercase;
}
.h1, .elementor-widget-heading.h1 h2.elementor-heading-title, .entry-content h2.h1, h2.h1, .elementor-widget-heading.h1 h3.elementor-heading-title, .entry-content h3.h1, h3.h1, .elementor-widget-heading.h1 h4.elementor-heading-title, .entry-content h4.h1, h4.h1, .elementor-widget-heading.h1 h5.elementor-heading-title, .entry-content h5.h1, h5.h1, .elementor-widget-heading.h1 h6.elementor-heading-title, .entry-content h6.h1, h6.h1, .elementor-widget-heading.h1 h1.elementor-heading-title, .entry-content h1, h1 {
	font-size: clamp(3.4rem, 1.922rem + 3.500vw, 6.2rem);
}
.ff-code {
	font-family: 'JetBrains Mono', monospace;
}
.ff__03,
.ff__t-012 {
	font-family: 'T-012';
}
a:not(.button) {
	color: var(--c-primary);
	text-decoration: none;
}
.fs-xxs {
	font-size: var(--fs-xxs);
}

/* Header
--------------------------------------------------------- */
header#main-header {
	background: var(--c-bg);
	box-shadow: none !important;
	border-style: solid;
	border-width: 0 0 1px 0;
	border-color: var(--c-ui-border);
	padding-top: 5px !important;
	padding-bottom: 5px !important;
}
a.logo {
	color: var(--c-text);
}
.logo-text{
	font-family: T-012;
    text-transform: uppercase;
    font-size: 80px;
    line-height: 60px;
    height: 60px;
    color:var(--c-text);
}
header#main-header .flex-col {
	padding-top: 10px;
	padding-bottom: 10px;
	align-items: center;
}


#theme-toggle svg {
	width: 40px;
	height: 40px;
}


.burger {
	background: none;
	border: none;
	padding:0;
	margin:0;
	position: relative;
	display: block;
	width: 40px;
	height: 40px;
	line-height: 40px;
	margin-left: 40px;
}
.burger::before,
.burger::after {
	display: none;
}
.burger-pulse-2,
.burger-pulse-1,
.burger-center,
.burger-icon {
	position: absolute;
	right: 0;
	top:0;
	width: 40px;
	height: 40px;
}
.burger-pulse-2,
.burger-pulse-1,
.burger-center {
	width: 12px;
	height: 12px;
	left: 0;
	bottom:0;
	margin:auto;
	transform: rotate(45deg);
}
.burger-center {
	background: black;
	display: none;
}
.burger-pulse-2,
.burger-pulse-1 {
	position: absolute;
	transition: all .2s ease-out;
	mix-blend-mode: difference;
	transition: width .2s ease-out, height .2s ease-out, transform .2s ease-out, bottom .2s ease-out, top .2s ease-out, right .2s ease-out, left .2s ease-out, opacity .2s ease-out .1s, background-color .2s ease-out .1s;
	width:34px;
	height:34px;
}
.burger-pulse-1 {
	border: 1px solid white;
	transition: width .2s ease-out, height .2s ease-out, transform .2s ease-out, bottom .2s ease-out, top .2s ease-out, right .2s ease-out, left .2s ease-out, opacity .2s ease-out .1s;
}
.burger:hover .burger-pulse-1 {
	height: 50px;
	width: 50px;
	left:-8px;
	top:-8px;
	bottom:-8px;
	right:-8px;
	opacity: 0.6;
	transition: width .2s ease-out, height .2s ease-out, transform .2s ease-out, bottom .2s ease-out, top .2s ease-out, right .2s ease-out, left .2s ease-out, opacity .2s ease-out .1s, background-color .05s ease-out 0s;
}
.burger:hover .burger-pulse-2 {
	height: 10px;
	width: 10px;
	box-shadow: inset 0 0 0 1px white;
	opacity: 0.8;
}
.mobile-menu-open .burger .burger-pulse-1 {
	height: 60px;
	width: 60px;
	left:-13px;
	top:-13px;
	bottom:-13px;
	right:-13px;
	box-shadow: 0 0 60px 20px rgb(from var(--c-bg-invert) r g b / 50%);
	opacity: 0;
}
.mobile-menu-open .burger .burger-pulse-2 {
	border: 1px solid white;
	width:34px !important;
	height:34px !important;
	box-shadow: none;
	background: none;

	/*height: 50px !important;
    width: 50px !important;
	left: -8px;
	top: -8px;
	bottom: -8px;
	right: -8px;*/
}
/*.mobile-menu-open .burger:hover .burger-pulse-2 {*/
.mobile-menu-open .burger .burger-pulse-2 {
	height: 50px !important;
    width: 50px !important;
	left: -8px;
	top: -8px;
	bottom: -8px;
	right: -8px;
}

.burger-text-opened,
.burger-text-closed {
	/*position: absolute;
	left:-100px;
	top:0;
	pointer-events: none;
	height: 40px;
	line-height: 40px;
	text-transform: uppercase;
	font-size: 1.4rem;
    letter-spacing: 0.4rem;
    font-weight: var(--fw-900);
    font-family: 'Orbitron';
	transition: all .2s ease-out;*/

	position: absolute;
    left: -20px;
    /* right: 0; */
    /* margin: auto; */
    width: 80px;
    text-align: center;
    top: 0;
    pointer-events: none;
    height: 40px;
    line-height: 40px;
    text-transform: uppercase;
    font-size: 0.9rem;
    letter-spacing: 0.4rem;
    font-weight: var(--fw-900);
    font-family: 'Orbitron';
    transition: all .2s ease-out;
}
.burger-text-closed,
.burger-text-opened {
	opacity: 0;
}
.burger:hover .burger-text-closed,
/*.burger:hover .burger-text-opened {*/
.burger .burger-text-opened {
	opacity: 1;
}
.burger-text-opened {
/*	color: var(--c-bg);*/
}
/* .burger-text-opened::before,
.burger-text-opened::after {
	content:"";
	position: absolute;
	top:0;
	left:0;
	right:0;
	bottom:0;
	margin:auto;
	height: 14px;
	width: 1px;
	background: var(--c-primary);
	transform: rotate(45deg);
}
.burger-text-opened::after {
	transform: rotate(-45deg);
} */
.mobile-menu-open .burger-text-closed,
.burger-text-opened {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}
.mobile-menu-open .burger-text-opened {
	opacity: 1;
	visibility: visible;
}
.language-switcher-container a {
	color: var(--c-text);
	font-size: 1.4rem;
    letter-spacing: 0.4rem;
    font-weight: var(--fw-900);
    font-family: 'Orbitron';
    text-transform: uppercase;
}
.menu-main-menu-container {
	display: flex;
}
#main-menu {
	align-items: center;
	justify-content: center;
}
#main-menu li a {
	font-family: 'Orbitron';
	font-weight: 600;
	text-transform: uppercase;
	font-size: 1.4rem;
	letter-spacing: 0.4rem;
	color: var(--c-text);
	text-decoration: none;
	padding: .8rem 1.2rem;
	color: var(--c-text);
	font-family: 'Space Mono', monospace;
	line-height: 1;
	opacity: 0.8;
	font-weight: 700;
}
#main-menu li a:hover {
	opacity: 1;
}
.mm-item-wrap {
	height: 100%;
	align-items: center;
	display: flex;
	padding-bottom: 8rem;
}
#mobile-main-menu li button, #mobile-main-menu li a {
	font-size: 8rem;
	line-height: 1 !important;
	padding: 0;
	margin: 10px 0;
	line-height: var(--lh-m);
	font-family: 'nebularegular';
}
#theme-toggle {
	padding: 0.4rem 2rem !important;
	height: auto;
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--c-bg-invert-m25);
	grid-gap: 0 !important;
}
.mode--selection {
	flex-direction: column;
}
.mode--title {
	font-size: 1rem;
}
.mode--name-solar {
	position: absolute;
	right: 0;
}
.mode--name-obsidian,
html[data-color-theme="dark"] .mode--name-solar {
	opacity: 0;
}
html[data-color-theme="dark"] .mode--name-obsidian {
	opacity: 1;
}
html[data-color-theme="dark"] .mode--obsidian,
html[data-color-theme="light"] .mode--solar {
	color:var(--c-primary);
}

@media (min-width:1081px) {
	.burger {
		display: inline-block;
	}
}


/* Big Headline Letter Animation
--------------------------------------------------------- */
.cryp {
	display: inline-block;
	min-height: 75px;
	display: flex !important;
	flex-wrap: wrap;
}
.cryp span {
	transition: opacity 0.2s;
	display: inline-block;
	height: 75px;
	line-height: 75px;
	&.ff__t-012 {
		font-size: 71px;
		opacity: 0;
		text-transform: uppercase;
	}
}


/* Mouse Cursor
--------------------------------------------------------- */
#follower {
	width: 50px;
	height: 50px;
	position: fixed;
	pointer-events: none;
	top: 0;
	left: 0;
	z-index: 2000;
	mix-blend-mode: difference;
	transition: transform 0.05s linear;
}
.corner {
	width: 12px;
	height: 12px;
	border-style: solid;
	border-color: #fff;
	position: absolute;
	border-width: 1px;
}
.corner.ctl { top: 0; left:0; border-right-width: 0; border-bottom-width: 0; }
.corner.ctr { top: 0; right:0; border-bottom-width: 0; border-left-width: 0; }
.corner.cbr { right:0; bottom:0; border-top-width: 0; border-left-width: 0; }
.corner.cbl { bottom:0; left:0; border-top-width: 0; border-right-width: 0; }
#cursor-cross {
	position: fixed;
	pointer-events: none;
	z-index: 2000;
}
.cross-line {
	position: absolute;
	background-color: var(--c-primary);
}
.cross-line.vertical {
	width: 2px;
	height: 15px;
	transform: translate(-50%, -50%);
}
.cross-line.horizontal {
	width: 15px;
	height: 2px;
	transform: translate(-50%, -50%);
}
@keyframes spin {
	0% {
		transform: rotate(0deg) scale(1);
	}
	20% {
		transform: rotate(-20deg) scale(1);
	}
	50% {
		transform: rotate(360deg) scale(1.2);
	}
	80% {
		transform: rotate(740deg) scale(1);
	}
	100% {
		transform: rotate(720deg) scale(1);
	}
}
#follower-inner {
	position: relative;
	width: 100%;
	height: 100%;
	display: inline-block;
	transition: all .2s ease;
}
#follower-inner.spinning:not(.spinning-suppressed) {
	animation-timing-function: ease-out;
	animation-name: spin;
	animation-duration: 2s;
	animation-iteration-count: 1;
	animation-fill-mode: forwards;
	animation-delay: 20s;
}
#follower.burger_hovered #follower-inner {
	transform:rotate(45deg);
	/*animation-name: rotateOnce;
	animation-duration: 1s;
	animation-iteration-count: 1;
	animation-fill-mode: forwards;*/
}
/*@keyframes rotateOnce {
	0% {
		transform: rotate(0deg);
	}
	100% {
		transform: rotate(45deg);
	}
}*/


/* Buttons
--------------------------------------------------------- */
.wp-block-button__link, .elementor-button, .elementor-widget-button .elementor-button, input#submit, input[type="button"], input[type="submit"], input[type="reset"], .button, button {
	position: relative;
	text-transform: uppercase;
	font-size: 1.4rem;
	letter-spacing: 0.4rem;
	font-weight: 900;
	font-family: 'Orbitron';
/*	padding: 2.4rem 4rem;*/
	border-radius: var(--border-radius-default);
}
/* @keyframes button_pulse {
	0% {
		background-color: rgba(236, 33, 39, .2);
	}
	50% {
		background-color: rgba(236, 33, 39, .4);
	}
	100% {
		background-color: rgba(236, 33, 39, .2);
	}
} */

input#submit.size-large, input[type="button"].size-large, input[type="submit"].size-large, input[type="reset"].size-large, .button.size-large, button.size-large {
	padding: 2.4rem 4rem;
}

button.input_expected .button-text::after, .button.input_expected .button-text::after {
	content:"";
	width: 1rem;
	height: 1.6rem;
	background: var(--c-primary);
	animation: var(--a--blink);
	display: inline-block;
	vertical-align: bottom;
    margin-left: 0.8rem;
}



/* WHAT IS THIS?
--------------------------------------------------------- */
.counter {
	font-size: 60px;
	color: rgba(255,255,255,1);
	mix-blend-mode: difference;
	line-height: 1;
}
.cline {
	width: 12px;
	display: inline-block;
	height: 29px;
	margin-right: 6px;
	transform: skew(-30deg);
	background-color: rgba(255,255,255,1);
	mix-blend-mode: difference;
}


/* Footer
--------------------------------------------------------- */
footer#main-footer {
	background-color: var(--c-bg);
	border-top: 1px solid var(--c-ui-border);
	position:relative;
}
.footer-middle {
	background-color: var(--c-bg);
	color: var(--c-text);
	border-bottom: none !important;
}
#footer-menu {
	text-align:center;
}
#footer-menu li {
	width:auto;
	margin: .6rem;
	display: inline-block;
}
#footer-menu li a {
	font-size:1.2rem;
	color: var(--c-text);
	text-transform: uppercase;
    letter-spacing: 0.4rem;
    font-weight: var(--fw-400);
    font-family: 'Orbitron';
}


/* Section Counter UI Element
--------------------------------------------------------- */
.section--counter {
	font-family: var(--ff-code);
	font-size: var(--fs-s);
	letter-spacing: var(--ls-s);
	font-weight: 700;
	display: flex;
	opacity: 0.8;
	align-items: center;
	margin-bottom: var(--gap-default);

	animation: var(--a--pulse);
	color: var(--c-primary);
}
.section--counter::after {
	content:"";
	margin-left: var(--gap-default);
	flex-grow: 1;
	height: 1px;
	background-color: currentColor;
	opacity: 0.2;
}
.hud--data-s,
.si--right {
	font-size: var(--fs-xxs);
    font-family: var(--ff-code);
    letter-spacing: var(--ls-s);
}


/* Plugin: Real Cookie Banner
--------------------------------------------------------- */
/* fixed white bg */
.rcb-content {
	background-color: #fff;
}



.interface-node {
	position: relative;
	transition: var(--transition);
	border: 1px solid var(--c-bg-invert-a25);
/*	background-color:var(--c-bg-invert-a2);*/
	background-color:var(--c-bg);
	transition: var(--transition);
}
.surgical-bracket-inner {
	position: absolute;
	pointer-events: none;
	top:0;
	right:0;
	bottom:0;
	left:0;
	width: 100%;
	height: 100%;
}
.surgical-bracket-inner::before,
.surgical-bracket-inner::after,
.interface-node::before,
.interface-node::after {
	content:"";
	position: absolute;
	pointer-events: none;
	top:0;
	left:0;
	width: 12px;
	height: 12px;
	border-width: 1px 0 0 1px;
	border-color: var(--c-bg-invert-a50);
	border-style:solid;
}
.interface-node::after {
	left:auto;
	right:0;
	border-width: 1px 1px 0 0;
}
.surgical-bracket-inner::before {
	top:auto;
	bottom:0;
	border-width: 0 0 1px 1px;
}
.surgical-bracket-inner::after {
	top:auto;
	bottom:0;
	left:auto;
	right:0;
	border-width: 0 1px 1px 0;
}
.function--icon {
	width: 5rem;
	height: 5rem;
	border: 1px solid rgba(213, 35, 35, 0.2);
/*	background-color: rgba(213, 35, 35, 0.05);*/
	color: var(--c-primary);
	transition: var(--transition);
}
.function--icon svg {
	width: 2.8rem;
	height: 2.8rem;
	display: inline-block;
	vertical-align: baseline;
}
.interface-node:hover .function--icon {
	border: 1px solid rgba(213, 35, 35, 1);
}
.interface-node:hover {
	background-color:color-mix(in srgb, var(--c-bg) 96%, var(--c-bg-invert));
}



/* Animations
--------------------------------------------------------- */

.animate-pulse {
	animation: var(--a--pulse);
}
@keyframes pulse {
	50% {opacity:0.5;}
}
@keyframes blink {
	50% {opacity:0;}
}


.data-scan-hover {
	position: absolute;
	pointer-events: none;
	z-index: 0;
	top: 0;
	left:0;
	width: 100%;
	height: 100%;
	opacity: 0.5;
}
.data-scan-hover::after {
	content: "";
	position: absolute;
	top: -100%;
	left: 0;
	width: 100%;
	height: 2px;
	background: rgba(255, 59, 48, 0.4);
	box-shadow: 0 0 15px rgba(255, 59, 48, 0.8);
	z-index: 10;
	transition: none;
}
*:has(> .data-scan-hover) {
	position: relative;
	overflow: hidden;
}
*:has(> .data-scan-hover):hover .data-scan-hover::after {
/*.data-scan-hover:hover::after {*/
	animation: scan 1.5s linear infinite;
}

@keyframes scan {
	0% {
	    top: -5%;
	}
	100% {
	    top: 105%;
	}
}


/* default */
.elementor-widget-heading, .elementor-widget-text-editor, .animate {
	opacity: 0;
	transform: translateY(40px);
	transition: all var(--a-timing-default) var(--a-easing-default);
}
.elementor-widget-button .elementor-button, .button {
	opacity: 0;
	transform: translateY(40px);
}
/* only fade */
.fadeIn {
	opacity: 0;
	transition: all var(--a-timing-default) var(--a-easing-default);
}
/* animation complete */
.elementor-editor-active .elementor-widget-heading,
.elementor-editor-active .elementor-widget-text-editor,
.elementor-editor-active .elementor-widget-button .elementor-button,
.elementor-editor-active .button,
.elementor-editor-active .animate,
.elementor-widget-heading.inView,
.elementor-widget-text-editor.inView,
.elementor-widget-button .elementor-button.inView,
.button.inView,
.animate.inView {
	opacity: 1;
	transform: translateY(0px);
}
.elementor-editor-active .fadeIn,
.fadeIn.inView {
	opacity: 1;
}

@keyframes ErrorShake {
	0%, 100% { transform: translate(0, 0); }
	20% { transform: translate(-2px, 1px); }
	40% { transform: translate(2px, -1px); }
	60% { transform: translate(-2px, 0); }
	80% { transform: translate(2px, 1px); }
}

