/* main.css — Combined with responsive rules
Production-ready main stylesheet with responsive extensions
Fonts: --ff-primary: 'Eudoxus Sans', --ff-secondary: 'Work Sans', --ff-alt: 'Roboto'
Breakpoints: xs <576px, sm ≥576px, md ≥768px, lg ≥992px, xl ≥1200px
Usage: include as the single stylesheet for the site.
*/

/* -------------------------
CSS VARIABLES / THEME
------------------------- */
/* Eudoxus Sans */
@import url('../fonts/Eudoxus-Sans-font/stylesheet.css');

/* Work Sans */
@import url('https://fonts.googleapis.com/css2?family=Work+Sans:wght@300;400;500;600;700&display=swap');

/* Roboto */
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap');

:root{
/* Font stacks */
--ff-primary: "Eudoxus Sans", "Work Sans", "Roboto", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--ff-secondary: "Work Sans", "Roboto", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--ff-alt: "Roboto", "Work Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

/* Primary gradient colors */
--color-primary-1: #0f01ca;
--color-primary-2: #f549ad;
--color-primary-gradient: linear-gradient(90deg, var(--color-primary-1) 0%, var(--color-primary-2) 100%);
--color-primary: var(--color-primary-1);
--bg-primary-gradient: linear-gradient(90deg, var(--color-primary-1) 0%, var(--color-primary-2) 100%);

/* Secondary palette */
--color-secondary-1: #fffef3;
--color-secondary-2: #FF9013;
--color-secondary-3: #33BBC5;
--color-secondary-4: #614BC3;

/* Neutrals */
--color-bg: #ffffff;
--color-surface: #fff;
--color-muted: #f6f6f7;
--color-border: #e6e6ea;
--color-text: #111213;
--color-text-muted: #6b6d72;
--color-error: #d93025;
--color-success: #198754;
--color-warning: #ffb020;
--light-text-color:var(--color-surface);
--dark-text-color:var(--color-text);
--bg-white-color: #ffffff;
--bg-black-color: #000000;
--bg-dark-gray-color: #1c1d1e;

/* Interaction states */
--hover-opacity: 0.92;
--active-scale: 0.985;
--focus-ring: 3px;
--shadow-1: 0 1px 3px rgba(16,24,40,0.06);
--shadow-2: 0 6px 18px rgba(16,24,40,0.08);

/* Layout / spacing scale */
--space-xxs: 4px;
--space-xs: 8px;
--space-sm: 12px;
--space-md: 16px;
--space-lg: 24px;
--space-xl: 32px;
--space-2xl: 48px;
--space-3xl: 56px;
--space-4xl: 64px;
--space-5xl: 72px;
--space-6xl: 80px;


.h-10 { height: 2.5rem; }
.h-12 {	height: 3rem; }
.h-16 {	height: 4rem; }
.h-24 {	height: 6rem; }
.h-28 {	height: 7rem; }
.h-32 {	height: 8rem; }
.h-48 {	height: 12rem; }
.h-80 {	height: 20rem; }
.h-96 {	height: 24rem; }
.h-auto {	height: auto; }
.h-full {	height: 100%; }

.w-10 {	width: 2.5rem; }
.w-12 {	width: 3rem; }
.w-16 {	width: 4rem; }
.w-24 {	width: 6rem; }
.w-32 {	width: 8rem; }
.w-48 {	width: 12rem; }
.w-80 {	width: 20rem; }
.w-96 {	width: 24rem; }
.w-full {	width: 100%; }


.bg-\[var\(--bg-white-color\)\] {
  background-color: var(--bg-white-color);
}
.bg-\[var\(--bg-black-color\)\] {
  background-color: var(--bg-black-color);
}
.bg-\[var\(--bg-dark-gray-color\)\] {
  background-color: var(--bg-dark-gray-color);
}
.bg-\[var\(--bg-primary-gradient\)\] {
  background: var(--bg-primary-gradient);
}

.space-x-8> :not([hidden])~ :not([hidden]) {
	--tw-space-x-reverse: 0;
	margin-right: calc(2rem * var(--tw-space-x-reverse));
	margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)))
}

.space-y-3> :not([hidden])~ :not([hidden]) {
	--tw-space-y-reverse: 0;
	margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
	margin-bottom: calc(0.75rem * var(--tw-space-y-reverse))
}

.space-y-4> :not([hidden])~ :not([hidden]) {
	--tw-space-y-reverse: 0;
	margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
	margin-bottom: calc(1rem * var(--tw-space-y-reverse))
}

.space-y-6> :not([hidden])~ :not([hidden]) {
	--tw-space-y-reverse: 0;
	margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
	margin-bottom: calc(1.5rem * var(--tw-space-y-reverse))
}

.space-y-8> :not([hidden])~ :not([hidden]) {
	--tw-space-y-reverse: 0;
	margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse)));
	margin-bottom: calc(2rem * var(--tw-space-y-reverse))
}

.items-start {
	align-items: flex-start
}

.items-center {
	align-items: center
}

.justify-center {
	justify-content: center
}

.justify-between {
	justify-content: space-between
}
.absolute {	position: absolute}
.relative {	position: relative}
.-bottom-6 {	bottom: -1.5rem}
.-left-6 {	left: -1.5rem}
.-right-2 {	right: -0.5rem}
.-right-6 {	right: -1.5rem}
.-top-2 {	top: -0.5rem}
.-top-6 {	top: -1.5rem}
.bottom-0 {	bottom: 0px}
.bottom-6 {	bottom: 1.5rem}
.left-0 {	left: 0px}
.left-6 {	left: 1.5rem}
.right-0 {	right: 0px}
.right-6 {	right: 1.5rem}
.top-0 {	top: 0px}
.top-32 {	top: 8rem}
.top-6 {	top: 1.5rem}
.inline-block { display: inline-block;}
/* Border radius scale */
--radius-sm: 6px;
--radius-md: 12px;
--radius-lg: 20px;

/* Typographic scale */
--fs-base: 18px;
--lh-base: 1.5;
--fw-regular: 400;
--fw-medium: 500;
--fw-semibold: 600;
--fw-bold: 700;
--fw-light: 300;

/* Animation */
--ease-short: cubic-bezier(.4,0,.2,1);
--ease-medium: cubic-bezier(.2,.8,.2,1);
--dur-fast: 150ms;
--dur-medium: 280ms;
--dur-slow: 420ms;

/* Breakpoints */
--bp-xs: 575px;
--bp-sm: 576px;
--bp-md: 768px;
--bp-lg: 992px;
--bp-xl: 1200px;
}

/* -------------------------
Global reset & box model
------------------------- */
*, *::before, *::after {box-sizing: border-box;}
html, body, #root {height: 100%;}
html {
font-size: var(--fs-base);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-text-size-adjust: 100%;
}
body {
margin: 0;
font-family: var(--ff-primary);
color: var(--color-text);
background-color: var(--color-bg);
line-height: var(--lh-base);
-webkit-font-kerning: normal;
text-rendering: optimizeLegibility;
-ms-overflow-style: scrollbar;
}

/* Default link styles */
a {
color: var(--color-primary);
text-decoration: none;
transition: opacity var(--dur-fast) var(--ease-short), transform var(--dur-fast) var(--ease-short);
}
a:hover, a:focus {opacity: var(--hover-opacity); text-decoration: none;}

/* Accessibility helpers */
.sr-only {
position: absolute !important;
width: 1px !important;
height: 1px !important;
padding: 0 !important;
margin: -1px !important;
overflow: hidden !important;
clip: rect(0,0,0,0) !important;
white-space: nowrap !important;
border: 0 !important;
}

/* -------------------------
Container & Layout
------------------------- */
.container {
width: 100%;
margin-left: auto;
margin-right: auto;
padding-left: var(--space-md);
padding-right: var(--space-md);
max-width: 100%; /* full width on smallest screens */
padding-left: clamp(12px, 4vw, var(--space-md));
padding-right: clamp(12px, 4vw, var(--space-md));
}

/* Responsive grid */
.row {
display: flex;
flex-wrap: wrap;
margin-left: calc(var(--space-sm) * -1);
margin-right: calc(var(--space-sm) * -1);
}
.col {
padding-left: var(--space-sm);
padding-right: var(--space-sm);
flex: 1 1 0%;
min-width: 0;
}
.col-auto {flex: 0 0 auto;}
.col-1 {flex: 0 0 8.3333%;}
.col-2 {flex: 0 0 16.6667%;}
.col-3 {flex: 0 0 25%;}
.col-4 {flex: 0 0 33.3333%;}
.col-6 {flex: 0 0 50%;}
.col-12 {flex: 0 0 100%;}

/* Simple CSS grid helper */
.grid {
display: grid;
gap: var(--space-lg);
grid-template-columns: repeat(12, 1fr);
}
.grid-2 {grid-template-columns: repeat(2, 1fr);}
.grid-3 {grid-template-columns: repeat(3, 1fr);}
.grid-auto {grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));}

/* Spacing utilities (small subset) */
.m-0 {margin: 0;} .mt-1 {margin-top: var(--space-xs);} .mt-2 {margin-top: var(--space-sm);}
.mb-1 {margin-bottom: var(--space-xs);} 
.mb-2 {margin-bottom: var(--space-sm);}
.mb-3 {margin-bottom: var(--space-md);}
.mb-4 {margin-bottom: var(--space-lg);}
.mb-5 {margin-bottom: var(--space-xl);}
.mb-6 {margin-bottom: var(--space-2xl);}
.mb-7 {margin-bottom: var(--space-3xl);}
.mb-8 {margin-bottom: var(--space-4xl);}
.p-1 {padding: var(--space-xs);} 
.p-2 {padding: var(--space-sm);} 
.p-3 {padding: var(--space-md);}
.pt-1 {padding-top: var(--space-xs);} 
.pb-1 {padding-bottom: var(--space-xs);}
.gap-1 {gap: var(--space-xs);} 
.gap-2 {gap: var(--space-sm);}
.gap-3 {gap: var(--space-xs);} 
.gap-4 {gap: var(--space-sm);}
.gap-5 {gap: var(--space-md);} 
.gap-6 {gap: var(--space-lg);}
.gap-7 {gap: var(--space-xl);}
.gap-8 {gap: var(--space-2xl);}
.gap-9 {gap: var(--space-3xl);}
.gap-10 {gap: var(--space-4xl);}
.gap-11 {gap: var(--space-5xl);}
.gap-12 {gap: var(--space-6xl);}



/* Flex helpers */
.flex {display:flex;} .inline-flex {display:inline-flex;}
.items-center {align-items:center;} .justify-between {justify-content:space-between;}
.column {flex-direction: column;} .row-center {justify-content:center;}
.border-top {border-top: 1px solid #2e2e2e !important;} 
/* -------------------------
Fluid typography helper variable
------------------------- */
:root { --scale-rhythms: 1.35; }

/* -------------------------
Typography
------------------------- */
h1, h2, h3, h4, h5, h6 { margin: 0 0 var(--space-sm) 0; font-family: var(--ff-primary); color: var(--color-text); line-height: 1.15; }
h1 {font-size: 4.25rem; font-weight: var(--fw-light);}
h2 {font-size: 1.75rem; font-weight: var(--fw-light);}
h3 {font-size: 1.375rem; font-weight: var(--fw-light);}
h4 {font-size: 1.125rem; font-weight: var(--fw-light);}
h5 {font-size: 1rem; font-weight: var(--fw-light);}
h6 {font-size: 0.875rem; font-weight: var(--fw-light); color: var(--color-text-muted);}

p { margin: 0 0 var(--space-md) 0; font-size: 1rem; color: var(--color-text); font-weight: var(--fw-light); line-height: 1.6; }
.lead {font-size: 1.125rem; color: var(--color-text-muted);}

/* Lists */
ul, ol { margin: 0 0 var(--space-md) 1.25rem; padding: 0; list-style: none; font-weight: var(--fw-light); line-height: 1.6; }

/* Small text */
.small {font-size: 0.875rem; color: var(--color-text-muted);}

/* Quick text color utilities */
.text-\[var\(--color-surface\)\] {
	color: var(--color-surface)
}
.text-\[var\(--light-text-color\)\] {
  color: var(--light-text-color)
}

.text-\[var\(--color-text-muted\)\] {
  color: var(--color-text-muted)
}

.text-\[var\(--dark-text-color\)\] {
	color: var(--dark-text-color)
}
.text-\[var\(--accent1-color\)\] {
	background-color: var(--color-secondary-1)
}
.text-bg-\[var\(--accent2-color\)\] {
	background-color: var(--color-secondary-2)
}

.text-2xl {
	font-size: 1.5rem;
	line-height: 2rem
}

.text-3xl {
	font-size: 1.875rem;
	line-height: 2.25rem
}

.text-4xl {
	font-size: 2.25rem;
	line-height: 2.5rem
}

.text-5xl {
	font-size: 2.875rem;
	line-height: 2.5rem
}

.text-lg {
	font-size: 1.125rem;
	line-height: 1.75rem
}

.text-sm {
	font-size: 0.875rem;
	line-height: 1.25rem
}

.text-xl {
	font-size: 1.25rem;
	line-height: 1.75rem
}

.text-xs {
	font-size: 0.75rem;
	line-height: 1rem;
}
.text-gradient{background: -webkit-linear-gradient(315deg, #1e30f3 0%, #e21e80 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }
/* -------------------------
Buttons
------------------------- */
.btn {
display: inline-flex;
align-items: center;
gap: 0.5ch;
padding: calc(var(--space-xs) + 2px) var(--space-md);
border-radius: var(--radius-md);
border: 1px solid transparent;
font-weight: var(--fw-medium);
cursor: pointer;
transition: transform var(--dur-fast) var(--ease-short), opacity var(--dur-fast) var(--ease-short), box-shadow var(--dur-fast) var(--ease-short);
user-select: none;
-webkit-tap-highlight-color: transparent;
}

/* Primary button: gradient background with subtle shadow */
.btn--primary {
background-image: var(--color-primary-gradient);
color: #fff;
box-shadow: var(--shadow-1);
border: none;
padding: 0 var(--space-lg);
}
.btn--primary:hover { opacity: var(--hover-opacity); transform: translateY(-1px); color: var(--color-muted);}
.btn--primary:active { transform: scale(var(--active-scale)); }

.btn--secondary {
background: var(--color-secondary-1);
color: var(--color-text);
border: 1px solid var(--color-border);
padding: 0 var(--space-lg);
}
.btn--outline {
background: transparent;
color: var(--color-primary-1);
border: 1px solid rgba(15,1,202,0.12);
}
.btn--ghost {
background: transparent;
color: var(--color-text);
border: none;
}
.btn[disabled],
.btn--disabled {opacity: 0.6; cursor: not-allowed; pointer-events: none; transform: none;}

/* Icon button */
.btn--icon {
padding: var(--space-xs);
border-radius: 50%;
min-width: 40px;
min-height: 40px;
}

/* -------------------------
Navbar / Header
------------------------- */
.header {
width: 100%;
background: linear-gradient(180deg, rgba(255,255,255,0.6), rgba(255,255,255,0.98));
position: sticky;
top: 0;
z-index: 60;
border-bottom: 1px solid var(--color-border);
backdrop-filter: saturate(140%) blur(6px);
}
.header__inner {
display:flex;
align-items:center;
justify-content:space-between;
gap: var(--space-md);
padding: calc(var(--space-sm)) var(--space-md);
}
.header__brand { display:flex; align-items:center; gap: 12px; }
.header__nav { display:flex; gap: var(--space-md); align-items:center; }
.header__cta { margin-left: auto; }
/* Wrap your logo image */
.logo-img {
  display: inline-flex;
  align-items: center;
  cursor: pointer;
}

.logo-img img {
  height: clamp(28px, 4vw, 56px); /* responsive scaling */
  width: auto;
  display: block;
  object-fit: contain;
  user-select: none;
}

/* Optional hover */
.logo-img:hover img {
  opacity: 0.9;
  transform: translateY(-1px);
  transition: 180ms ease;
}

/* Mobile menu */
.header__toggle { display: none; background: none; border: none; cursor: pointer; }

/* -------------------------
Cards
------------------------- */
.card {
background: var(--color-surface);
border-radius: var(--radius-md);
border: 1px solid var(--color-border);
box-shadow: var(--shadow-1);
padding: var(--space-md);
transition: box-shadow var(--dur-medium) var(--ease-medium), transform var(--dur-fast) var(--ease-short);
}
.card:hover { box-shadow: var(--shadow-2); transform: translateY(-4px); }
.card--flat { box-shadow: none; border: none; }

/* Card header/footer */
.card__header { display:flex; align-items:center; justify-content:space-between; gap: var(--space-sm); margin-bottom: var(--space-sm); }
.card__footer { border-top: 1px dashed var(--color-border); padding-top: var(--space-sm); margin-top: var(--space-sm); }

/* -------------------------
Forms
------------------------- */
.form-control { display:flex; flex-direction:column; gap: 8px; width: 100%; }
label { font-size: 0.9rem; font-weight: var(--fw-medium); color: var(--color-text); }
input[type="text"], input[type="email"], input[type="password"], textarea, select {
font-family: var(--ff-secondary);
font-size: 1rem;
padding: 10px 12px;
border-radius: var(--radius-sm);
border: 1px solid var(--color-border);
background: #fff;
transition: box-shadow var(--dur-fast) var(--ease-short), border-color var(--dur-fast) var(--ease-short);
outline: none;
color: var(--color-text);
}
textarea { min-height: 120px; resize: vertical; }
input::placeholder, textarea::placeholder { color: #b9bac0; }

/* Focus / accessibility */
input:focus, textarea:focus, select:focus {
box-shadow: 0 0 0 var(--focus-ring) rgba(15,1,202,0.12);
border-color: var(--color-primary-1);
}

/* Validation states */
.input--error { border-color: var(--color-error); }
.input--success { border-color: var(--color-success); }

/* Form helper text */
.form-hint { font-size: 0.875rem; color: var(--color-text-muted); }

/* -------------------------
Modal
------------------------- */
.modal {
position: fixed;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
z-index: 80;
pointer-events: none;
}
.modal__backdrop {
position: absolute;
inset: 0;
background: rgba(2,6,23,0.45);
backdrop-filter: blur(3px);
opacity: 0;
transition: opacity var(--dur-medium) var(--ease-medium);
pointer-events: auto;
}
.modal__dialog {
width: min(720px, calc(100% - var(--space-lg)));
background: var(--color-surface);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-2);
padding: var(--space-lg);
transform: translateY(8px) scale(0.995);
opacity: 0;
transition: transform var(--dur-medium) var(--ease-medium), opacity var(--dur-medium) var(--ease-medium);
pointer-events: auto;
}
.modal.is-open { pointer-events: auto; }
.modal.is-open .modal__backdrop { opacity: 1; }
.modal.is-open .modal__dialog { opacity: 1; transform: translateY(0) scale(1); }

/* -------------------------
Alerts / badges
------------------------- */
.alert {
display:flex;
gap: 12px;
align-items:flex-start;
padding: 12px 16px;
border-radius: var(--radius-sm);
border: 1px solid rgba(16,24,40,0.04);
background: var(--color-secondary-1);
color: var(--color-text);
}
.alert--info { border-left: 4px solid var(--color-secondary-3); }
.alert--success { border-left: 4px solid var(--color-success); }
.alert--warning { border-left: 4px solid var(--color-warning); }
.alert--danger { border-left: 4px solid var(--color-error); }

.badge {
display:inline-flex;
align-items:center;
justify-content:center;
padding: 4px 8px;
border-radius: 999px;
font-size: 0.75rem;
font-weight: var(--fw-medium);
background: var(--color-muted);
}

/* -------------------------
Tables
------------------------- */
.table {
width: 100%;
border-collapse: collapse;
font-family: var(--ff-secondary);
font-size: 0.95rem;
}
.table th, .table td {
padding: 12px 16px;
border-bottom: 1px solid var(--color-border);
text-align: left;
}
.table thead th { font-weight: var(--fw-semibold); background: transparent; color: var(--color-text); }

/* Table responsive wrapper helper */
.table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* -------------------------
Utility classes
------------------------- */
.text-center { text-align: center; }
.text-muted { color: var(--color-text-muted); }
.text-primary { color: var(--color-primary-1); }
.rounded { border-radius: var(--radius-md); }
.shadow-sm { box-shadow: var(--shadow-1); }
.shadow { box-shadow: var(--shadow-2); }
.divider { height: 1px; background: var(--color-border); margin: var(--space-md) 0; }

/* -------------------------
Images & media
------------------------- */
.img-responsive { max-width: 100%; height: auto; display: block; border-radius: var(--radius-sm); }
.media { display:flex; gap: var(--space-sm); align-items:center; }

/* -------------------------
Forms: file / chips / tags
------------------------- */
.file {
display:inline-flex; align-items:center; gap:8px; padding:8px 10px; border-radius: var(--radius-sm); border:1px dashed var(--color-border);
}

/* -------------------------
Animations
------------------------- */
.fade-in { animation: fadeIn var(--dur-medium) var(--ease-medium) both; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity:1; transform:none; } }

/* -------------------------
Cards / hero with primary gradient
------------------------- */
.hero {
padding: var(--space-2xl) 0;
background: radial-gradient(600px 300px at 10% 10%, rgba(15,1,202,0.08), transparent 10%),
radial-gradient(500px 300px at 90% 90%, rgba(245,73,173,0.06), transparent 12%);
color: #fff;
}
.hero__inner { display:flex; align-items:center; gap: var(--space-lg); padding: var(--space-lg); }
.hero--primary {
background-image: var(--color-primary-gradient);
color: #fff;
border-radius: var(--radius-lg);
box-shadow: var(--shadow-2);
}

/* -------------------------
Small components: tags, pills, tooltips
------------------------- */
.pill {
display:inline-flex; align-items:center; gap:8px; padding:6px 10px; border-radius:999px; font-size:0.875rem;
background: linear-gradient(90deg, rgba(15,1,202,0.06), rgba(245,73,173,0.03));
border: 1px solid rgba(15,1,202,0.06);
}

/* Tooltip (CSS-only) */
.tooltip {
position: relative; display: inline-block;
}
.tooltip[data-tooltip]:hover::after {
content: attr(data-tooltip);
position: absolute;
left: 50%;
transform: translateX(-50%) translateY(-6px);
bottom: 100%;
white-space: nowrap;
padding: 6px 10px;
border-radius: 6px;
font-size: 0.875rem;
background: rgba(0,0,0,0.8);
color: #fff;
z-index: 999;
opacity: 1;
pointer-events: none;
}

/* -------------------------
Forms: checkbox / radio styles
------------------------- */
.checkbox, .radio {
display:inline-flex; align-items:center; gap:8px; cursor:pointer; user-select:none;
}
.checkbox input, .radio input { appearance: none; width: 18px; height: 18px; border-radius: 4px; border: 1px solid var(--color-border); display:inline-block; position:relative; }
.checkbox input:checked { background: var(--color-primary-1); border-color: var(--color-primary-1); }
.radio input { border-radius: 50%; }
.radio input:checked { background: var(--color-primary-1); border-color: var(--color-primary-1); }

/* -------------------------
Print styles (minimal)
------------------------- */
@media print {
body { background: #fff; color: #000; }
.header, .footer, .btn, .no-print { display: none !important; }
.container { max-width: 100% !important; padding: 0 !important; }
}

/* -------------------------
Performance & best-practice utilities
------------------------- */
/* Preference aware reduced-motion */
@media (prefers-reduced-motion: reduce) {

* { transition-duration: 0ms !important; animation-duration: 0ms !important; animation-iteration-count: 1 !important; }
  }

/* -------------------------
Component examples (documented classes you can reuse)
------------------------- */
/* Page footer */
.footer {
background: var(--color-secondary-1);
border-top: 1px solid var(--color-border);
padding: var(--space-lg) var(--space-md);
color: var(--color-text-muted);
}

/* Simple hero usage

   <section class="hero hero--primary">
     <div class="container hero__inner">
       <div>content</div>
       <div>cta</div>
     </div>
   </section>
*/

/* -------------------------
Theme helpers: quick color utility classes
------------------------- */
.bg-primary { background: var(--color-primary-1) !important; color: #fff !important; }
.bg-primary-gradient { background-image: var(--color-primary-gradient) !important; color: #fff !important; }
.bg-secondary-1 { background: var(--color-secondary-1) !important; }
.bg-secondary-2 { background: var(--color-secondary-2) !important; color: #fff !important; }
.text-secondary-3 { color: var(--color-secondary-3) !important; }
.text-secondary-4 { color: var(--color-secondary-4) !important; }

/* -------------------------
Responsive extensions and utilities (merged)
Focused on layout shifts, nav collapse, typography scale, and touch-friendly controls.
------------------------- */

/* Fluid typography (clamp-based for headings) */
h1 { font-size: clamp(1.6rem, 1.4rem + 2.8vw, 3.5rem); }
h2 { font-size: clamp(1.4rem, 1.15rem + 2vw, 2.75rem); }
h3 { font-size: clamp(1.2rem, 1rem + 1.2vw, 1.75rem); }

/* Small screens: stack columns, increase touch targets */
@media (max-width: 575px) {
.row { margin-left: 0; margin-right: 0; }
.col { padding-left: 8px; padding-right: 8px; }

/* Make inputs and buttons full width on very small screens */
.form-control input, .form-control textarea, .form-control select, .btn { width: 100%; box-sizing: border-box; }
.btn--icon { min-width: 44px; min-height: 44px; }

/* Navbar: make nav a vertical sliding panel */
.header__nav { display: none; position: fixed; top: 0; right: 0; bottom: 0; width: min(92%, 320px); background: var(--color-surface); box-shadow: 0 12px 40px rgba(2,6,23,0.18); transform: translateX(105%); transition: transform var(--dur-medium) var(--ease-medium); padding: var(--space-lg); overflow-y: auto; }
.header__nav.is-open { transform: translateX(0); }
.header__toggle { display:inline-flex; }
.header__brand { z-index: 70; }

/* Simplified grid */
.grid { grid-template-columns: 1fr; gap: var(--space-md); }
.grid-2, .grid-3 { grid-template-columns: 1fr; }

/* Hero adjustments */
.hero__inner { flex-direction: column; text-align: center; gap: var(--space-md); padding-left: var(--space-md); padding-right: var(--space-md); }
.hero { padding: var(--space-xl) 0; }

/* Card full width */
.card { padding: var(--space-md); }

/* Touch-friendly list items */
.nav-link, .header__nav a { display: block; padding: 12px 8px; border-radius: var(--radius-sm); }

/* Tables: horizontally scrollable */
.table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* Ensure large CTA/primary elements keep a minimum tap target on small screens */
.btn--primary, .btn--secondary { padding-top: 12px; padding-bottom: 12px; font-size: 1rem; }
}




.homeGenVisionAI.card{
  background: linear-gradient(45deg, rgba(0, 0, 0, 0.8) 0%, rgba(53, 12, 119, 0.7) 100%), url(../images/GenVisionAI.png);background-position: center;
  background-repeat: no-repeat;
  background-attachment: scroll;
  background-size: cover;
  border: 1px solid rgba(39, 39, 39, 0.7)
}
.homeModelForge.card{
  background: linear-gradient(45deg, rgba(0, 0, 0, 0.8) 0%, rgba(53, 12, 119, 0.7) 100%), url(../images/predictive-analystics-01.png);
  background-repeat: no-repeat;
  background-attachment: scroll;
  background-size: cover;
  border: 1px solid rgba(39, 39, 39, 0.7)
}
.homeFortiXGuard.card{
  background: linear-gradient(45deg, rgba(0, 0, 0, 0.8) 0%, rgba(53, 12, 119, 0.7) 100%), url(../images/enterprise-grade-data-protection.png);background-position: center;
  background-repeat: no-repeat;
  background-attachment: scroll;
  background-size: cover;
  border: 1px solid rgba(39, 39, 39, 0.7);
}
.homeGenVisionAI.card:hover, .homeModelForge.card:hover, .homeFortiXGuard.card:hover{
  background: rgb(64,10,111);
  background: -moz-linear-gradient(0deg, rgba(64,10,111,1) 0%, rgba(64,10,111,1) 100%);
  background: -webkit-linear-gradient(0deg, rgba(64,10,111,1) 0%, rgba(64,10,111,1) 100%);
  background: linear-gradient(0deg, rgba(64,10,111,1) 0%, rgba(64,10,111,1) 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#400a6f",endColorstr="#593b74",GradientType=1);
  transition: rgba(64,10,111,1) all 0.3s ease-in-out;
}



@keyframes slideInLeft {
  from {
    transform: translateX(50px); /* Starts off-screen to the left */
    opacity: 0;
  }
  to {
    transform: translateX(0); /* Ends at its original position */
    opacity: 1;
  }
}

.homeGenVisionAI:hover .slide-element, .homeModelForge:hover .slide-element, .homeFortiXGuard:hover .slide-element {
  /* Apply the animation properties */
  animation-name: slideInLeft;
  animation-duration: 1.5s; /* How long the animation takes */
  animation-timing-function: ease-out; /* The speed curve of the animation */
  animation-fill-mode: forwards; /* Stays at the final state after animation ends */
  /* Initially position the element off-screen for the effect */
  transform: translateX(-100%); 
  opacity: 0;
}

/* Small -> Medium screens */
@media (min-width: 576px) and (max-width: 767px) {
.container { max-width: 540px; }
.grid { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(2, 1fr); }

.header__nav { display: flex; position: static; transform: none; flex-direction: row; gap: var(--space-sm); }
.header__toggle { display: none; }
}

/* Medium -> Large: tablets and small laptops */
@media (min-width: 768px) and (max-width: 991px) {
.container { max-width: 720px; }
.grid { grid-template-columns: repeat(3, 1fr); gap: var(--space-lg); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }

/* Navbar: show inline with condensed spacing */
.header__nav { display:flex; gap: var(--space-md); align-items:center; }
}

/* Large screens */
@media (min-width: 992px) and (max-width: 1199px) {
.container { max-width: 960px; }
.grid { grid-template-columns: repeat(4, 1fr); }
}

/* Extra large */
@media (min-width: 1200px) {
.container { max-width: 1200px; }
.grid { grid-template-columns: repeat(12, 1fr); }
}

@media (min-width: 1400px) {
  .container { max-width: 1360px; }  
  .grid { grid-template-columns: repeat(12, 1fr); }
}
@media (min-width: 1920px) {
  .container { max-width: 85%; }  

  .grid { grid-template-columns: repeat(12, 1fr); }
}

/* -------------------------
Responsive utilities
------------------------- */
/* Show/hide helpers */
.d-none { display: none !important; }
.d-block { display: block !important; }
.d-inline { display: inline !important; }

@media (max-width: 575px) { .d-sm-none { display: none !important; } .d-sm-block { display: block !important; } }

@media (min-width: 576px) and (max-width: 767px) { .d-md-none { display: none !important; } }
@media (min-width: 768px) { .d-lg-none { display: none !important; } }

/* Responsive spacing helpers */
@media (max-width: 575px) { .px-mobile { padding-left: var(--space-sm); padding-right: var(--space-sm); } }

/* Responsive images */
.responsive-img { width: 100%; height: auto; display: block; }

/* Form layout: stack labels + controls on small screens, row on larger */
.form-row { display: flex; gap: var(--space-sm); }
@media (max-width: 767px) { .form-row { flex-direction: column; } }
@media (min-width: 768px) { .form-row .form-control { flex: 1; } }

/* Navbar utilities: a simple JS-free collapse pattern using checkbox hack (optional) */
.nav-collapse-toggle { display: none; }
.nav-collapse-toggle + .header__nav { transition: max-height 320ms var(--ease-medium), opacity 240ms var(--ease-short); max-height: 0; overflow: hidden; opacity: 0; }
.nav-collapse-toggle:checked + .header__nav { max-height: 100vh; opacity: 1; }

/* Footer responsive columns */
.footer-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-lg); }
@media (max-width: 767px) { .footer-grid { grid-template-columns: 1fr; } }

/* Reduce hero illustration size progressively */
.hero__visual { max-width: 520px; width: 100%; }
@media (max-width: 991px) { .hero__visual { max-width: 420px; } }
@media (max-width: 575px) { .hero__visual { max-width: 320px; margin: 0 auto; } }

/* Accessibility: ensure focus outline remains visible on keyboard navigation across breakpoints */
:focus { outline: none; outline-offset: 0px;}


@media (max-width: 1023px){
  #mainNav {
    padding-top: 1rem;
    padding-bottom: 1rem;
    background-color: rgba(0, 0, 0, 0.9);
  }
  #mainNav .navbar-brand {
    font-family: var(--ff-primary);
  }
  #mainNav .navbar-brand:hover, #mainNav .navbar-brand:active {
    color: #2937f0;
  }
  #mainNav .navbar-toggler {
    font-size: 0.5rem;
    padding: 0.75rem 1rem;
    color: #f8f8f8;
    z-index: 99;  }
  #mainNav .navbar-nav .nav-item .nav-link {
    color: #fff;
  }
  #mainNav .navbar-nav .nav-item .nav-link:hover {
    color: #6c757d;
  }
  #mainNav .navbar-nav .nav-item .nav-link.active {
    color: #2937f0;
  }
  .logo-img img {
    height: clamp(48px, 4vw, 56px); /* responsive scaling */
  }
  .masthead{
    padding: 8rem 0;;
  }
  .px-5{
    padding-left: 1rem !important;
    padding-right: 1rem !important;
  }
}
@media (min-width: 640px) {
	.sm\:grid-cols-2 {
		grid-template-columns: repeat(2, minmax(0, 1fr))
	}

	.sm\:flex-row {
		flex-direction: row
	}

	.sm\:text-4xl {
		font-size: 2.25rem;
		line-height: 2.5rem
	}

	.sm\:text-5xl {
		font-size: 3rem;
		line-height: 1
	}

	.sm\:text-xl {
		font-size: 1.25rem;
		line-height: 1.75rem
	}
}

@media (min-width: 768px) {
	.md\:grid-cols-3 {
		grid-template-columns: repeat(3, minmax(0, 1fr))
	}

	.md\:flex-row {
		flex-direction: row
	}

	.md\:text-left {
		text-align: left
	}
}

@media (min-width: 1024px) {
	.lg\:order-1 {
		order: 1
	}

	.lg\:order-2 {
		order: 2
	}

	.lg\:order-last {
		order: 9999
	}

	.lg\:block {
		display: block
	}

	.lg\:flex {
		display: flex
	}

	.lg\:hidden {
		display: none
	}

	.lg\:grid-cols-2 {
		grid-template-columns: repeat(2, minmax(0, 1fr))
	}

	.lg\:grid-cols-3 {
		grid-template-columns: repeat(3, minmax(0, 1fr))
	}

	.lg\:grid-cols-4 {
		grid-template-columns: repeat(4, minmax(0, 1fr))
	}

	.lg\:gap-12 {
		gap: 3rem
	}

	.lg\:gap-16 {
		gap: 4rem
	}

	.lg\:p-12 {
		padding: 3rem
	}

	.lg\:py-24 {
		padding-top: 6rem;
		padding-bottom: 6rem
	}

	.lg\:py-32 {
		padding-top: 8rem;
		padding-bottom: 8rem
	}

	.lg\:text-3xl {
		font-size: 1.875rem;
		line-height: 2.25rem
	}

	.lg\:text-5xl {
		font-size: 3rem;
		line-height: 1
	}

	.lg\:text-6xl {
		font-size: 3.75rem;
		line-height: 1
	}
}
/* -------------------------
Example responsive component tweaks
------------------------- */
/* Split layout: two columns become stacked on mobile */
.split { display: grid; grid-template-columns: 1fr 420px; gap: var(--space-lg); }
@media (max-width: 991px) { .split { grid-template-columns: 1fr; } }

/* Pricing cards: row -> carousel-like single column on mobile */
.pricing { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-md); }
@media (max-width: 991px) { .pricing { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575px) { .pricing { grid-template-columns: 1fr; } }

/* Hero headline line-break control for mobile */
.hero__headline { white-space: normal; word-break: keep-all; }
@media (min-width: 992px) { 
  .hero__headline { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } 
  #mainNav {
    padding-top: 0;
    padding-bottom: 0;
    border-bottom: none;
    background-color: transparent;
    transition: background-color 0.3s ease-in-out;
  }
  #mainNav .navbar-brand {
    padding: 0.5rem 0;
    color: rgba(255, 255, 255, 0.5);
  }
  #mainNav .nav-link {
    transition: none;
    padding: 2rem 1.5rem;
    color: var(--color-bg);
  }
  #mainNav .nav-link:hover {
    color: #f42fa9;
  }
  #mainNav .nav-link:active {
    color: #fff;
  }
  #mainNav.navbar-shrink {
    background-color: rgba(12, 12, 12, 0.9);
  }
  #mainNav.navbar-shrink .navbar-brand {
    color: #fff;
  }
  #mainNav.navbar-shrink .nav-link {
    color: #fff;
    padding: 1.5rem 1.5rem 1.25rem;
    border-bottom: 0.25rem solid transparent;
  }
  #mainNav.navbar-shrink .nav-link:hover {
    color: #fffef3;
  }
  #mainNav.navbar-shrink .nav-link:active {
    color: #33BBC5;
  }
  #mainNav.navbar-shrink .nav-link.active, #mainNav .nav-link.active {
    color: #f42fa9;
    outline: none;
    border-bottom: 0.25rem solid #f42fa9;
  }


}

.scroll-to-top {
    position: fixed;
    right: 15px;
    bottom: 15px;
    display: none;
    width: 50px;
    height: 50px;
    text-align: center;
    color: #fff;
    background: rgba(244, 47, 169, 0.9);
    line-height: 50px;
}
#btn-back-to-top {
  /* Hidden by default */
  display: none; 
  /* Fixed/sticky position */
  position: fixed; 
  /* Place the button at the bottom and right of the page */
  bottom: 20px; 
  right: 20px;
  /* Ensure it is above other content */
  z-index: 99; 
}

/* -------------------------
How to use
------------------------- */
/* 1) Use this single file for your site. If you need per-component splitting later, extract sections into component files.
2) For interactive nav open/close behavior, toggle .header__nav.is-open via JS, or use the optional checkbox technique (.nav-collapse-toggle).
3) Override :root variables to create theme variations or a dark mode.
*/
