/* =========================================================
   NOVORAA.CSS
   Main stylesheet for Novoraa landing + contact pages.
   Notes:
   - Dark theme is the default token set.
   - Light theme overrides live under :root[data-theme="light"].
   - Keep component comments in place; this file is intentionally sectioned.
   ========================================================= */

/* =========================================================
   01. Theme tokens — dark/default
   Global color, glass, border and shadow variables.
   ========================================================= */

:root{
  color-scheme:dark;
  --accent:#FF7A1A;
  --accent-deep:#F05A00;
  --logo-dot:#FF7A1A;
  --navy:#0B0E10;
  --navy-2:#131719;
  --panel:#171C1F;
  --white:#F5F9FC;
  --muted:#A7B4BD;
  --line:rgba(241,245,248,.14);
  --glass:rgba(255,255,255,.045);
  --glass-strong:rgba(255,255,255,.075);
  --shadow:0 28px 90px rgba(0,0,0,.35);
}

/* =========================================================
   02. Theme tokens — light mode
   Overrides only the variables needed for the light theme.
   ========================================================= */

:root[data-theme="light"]{
  color-scheme:light;
  --navy:#F5F8FB;
  --navy-2:#EAF0F5;
  --panel:#ffffff;
  --white:#0B141A;
  --muted:#53616B;
  --line:rgba(11,20,26,.18);
  --glass:rgba(255,255,255,.72);
  --glass-strong:rgba(255,255,255,.9);
  --shadow:0 28px 90px rgba(16,35,50,.15);
}

/* =========================================================
   03. Base reset + document setup
   Basic box model, page sizing, typography and backgrounds.
   ========================================================= */

*{
  box-sizing:border-box;
}

html{
  scroll-behavior:smooth;
}

html,
body{
  margin:0;
  min-height:100%;
}

body{
  font-family:"Fustat", sans-serif;
  color:var(--white);
  overflow-x:hidden;
  background:linear-gradient(180deg,#090A0B 0%, #101112 48%, #0B0C0D 100%);
}

:root[data-theme="light"] body{
  background:
    radial-gradient(circle at 74% 8%, rgba(255,122,26,.12), transparent 32%),
    radial-gradient(circle at 12% 30%, rgba(255,122,26,.06), transparent 27%),
    linear-gradient(180deg,#F8FBFE 0%,#EEF3F7 55%,#E6EDF3 100%);
}

a{
  color:inherit;
  text-decoration:none;
}

button{
  font:inherit;
}

.site{
  position:relative;
  z-index:1;
}

.wrap{
  width:min(1180px, calc(100% - 40px));
  margin:0 auto;
}

/* =========================================================
   04. Header / navigation
   Sticky rounded glass navigation bar, logo, links and layout.
   ========================================================= */

.header{
  position:sticky;
  top:0;
  z-index:30;
  padding:20px 0;
  overflow:visible;
}

.nav{
  position:relative; /* Required for mobile dropdown */
  min-height:84px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:22px;
  padding:0 22px;
  border-radius:30px;
  background:rgba(15,16,17,.72);
  border:1px solid rgba(255,255,255,.075);
  backdrop-filter:blur(22px);
  box-shadow:
    0 18px 55px rgba(0,0,0,.26),
    0 0 0 1px rgba(255,255,255,.025) inset;
}

:root[data-theme="light"] .nav{
  background:rgba(255,255,255,.9);
  border:1px solid rgba(11,20,26,.04);
  box-shadow:
    0 18px 55px rgba(16,35,50,.07),
    inset 0 1px 0 rgba(255,255,255,.75);
}

.logo{
  display:flex;
  align-items:center;
}

.logo img{
  width:200px;
  display:block;
  filter:drop-shadow(0 0 10px rgba(255,122,26,.18));
}

.nav-right{
  display:flex;
  align-items:center;
  gap:16px;
}

.nav-links{
  display:flex;
  align-items:center;
  gap:24px;
  color:var(--muted);
  font-weight:600;
  font-size:14px;
}

.nav-links a{
  transition:.2s ease;
}

.nav-links a:hover{
  color:var(--white);
}

/* =========================================================
   05. Button system
   Shared button treatment used by hero CTAs, nav CTA and form submit.
   Keep .button and .nav-cta visually aligned.
   ========================================================= */

.button,
.nav-cta{
  appearance:none;
  border:0;
  outline:none;
  min-height:54px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0 23px;
  border-radius:999px;
  font-size:14px;
  font-weight:800;
  letter-spacing:.035em;
  line-height:1;
  cursor:pointer;
  color:#EAF2F8;
  background:linear-gradient(135deg,var(--accent),var(--accent-deep));
  box-shadow:
    0 4px 10px rgba(0,0,0,.20),
    inset 0 1px 0 rgba(255,255,255,.18);
  transition:
    transform .24s ease,
    box-shadow .24s ease,
    color .2s ease;
}

.button:hover,
.nav-cta:hover{
  color:#ffffff;
  transform:translateY(-2px);
  box-shadow:
    0 7px 16px rgba(0,0,0,.24),
    inset 0 1px 0 rgba(255,255,255,.22);
}

.button:focus-visible{

  box-shadow:

    0 0 0 3px rgba(255,122,26,.20),

    0 4px 10px rgba(0,0,0,.20),

    inset 0 1px 0 rgba(255,255,255,.18);

}

.button:active,
.nav-cta:active{
  transform:translateY(0);
}

.button:focus{
  outline:none;
}

.button.primary{
  color:#EAF2F8;
  background:linear-gradient(135deg,var(--accent),var(--accent-deep));
}

.button.primary:hover{
  color:#ffffff;
}

.button.secondary{
  color:rgba(255,255,255,.92);
  background:rgba(255,255,255,.12);
  font-weight:700;
  letter-spacing:.025em;
  box-shadow:
    0 6px 18px rgba(0,0,0,.12),
    inset 0 1px 0 rgba(255,255,255,.18);
}

.button.secondary:hover{
  color:#ffffff;
  background:rgba(255,255,255,.18);
  box-shadow:
    0 12px 28px rgba(0,0,0,.18),
    inset 0 1px 0 rgba(255,255,255,.22);
}

:root[data-theme="light"] .button.secondary{
  color:#0B141A;
  background:rgba(255,255,255,.28);
  box-shadow:
    0 8px 22px rgba(16,35,50,.08),
    inset 0 1px 0 rgba(255,255,255,.95);
}

:root[data-theme="light"] .button.secondary:hover{
  color:#0B141A;
  background:rgba(255,255,255,.55);
  box-shadow:
    0 12px 28px rgba(16,35,50,.12),
    inset 0 1px 0 rgba(255,255,255,.98);
}

.nav .button,
.nav .nav-cta{
  min-height:44px;
  padding:0 18px;
  font-size:13px;
  letter-spacing:.025em;
  box-shadow:
    0 4px 10px rgba(0,0,0,.18),
    inset 0 1px 0 rgba(255,255,255,.18);
}

.nav .button:hover,
.nav .nav-cta:hover{
  color:#ffffff;
  box-shadow:
    0 6px 14px rgba(0,0,0,.22),
    inset 0 1px 0 rgba(255,255,255,.22);
}

.button[disabled],
.contact-form button[disabled]{
  opacity:.68;
  cursor:not-allowed;
  transform:none;
  box-shadow:
    0 10px 28px rgba(255,122,26,.20),
    0 4px 12px rgba(0,0,0,.12),
    inset 0 1px 0 rgba(255,255,255,.12);
}

/* =========================================================
   06. Theme toggle
   Circular light/dark mode control in the nav.
   ========================================================= */

.theme-toggle{
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  border:1px solid var(--line);
  border-radius:999px;
  padding:0;
  background:var(--glass);
  color:var(--white);
  font-size:19px;
  line-height:1;
  cursor:pointer;
  transition:.24s ease;
}

.theme-toggle:hover{
  transform:translateY(-2px);
  border-color:rgba(255,122,26,.42);
}

/* =========================================================
   07. Hero section
   Main headline, supporting copy, CTA row and entrance animation setup.
   ========================================================= */

.hero{
  position:relative;
  min-height:calc(100vh - 124px);
  display:grid;
  place-items:center;
  padding:42px 0 82px;
}

.hero-inner{
  text-align:center;
  max-width:1040px;
  margin:0 auto;
}

.hero-title{
  margin:0 auto;
  max-width:980px;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:10px;
}

.hero-title .line{
  display:block;
  letter-spacing:-.035em;
  opacity:0;
  transform:translateY(18px);
  animation:heroLineReveal .75s cubic-bezier(.2,.8,.2,1) forwards;
}

.line-1,
.line-2{
  font-size:clamp(52px,8vw,122px);
  font-weight:500;
  line-height:1.05;
}

.line-1{
  animation-delay:.12s;
}

.line-2{
  animation-delay:.22s;
}

.line-3{
  font-size:clamp(56px,8.6vw,132px);
  font-weight:650;
  line-height:1.03;
  letter-spacing:-.04em;
  color:var(--accent);
  text-shadow:0 0 24px rgba(255,122,26,.18);
  animation-delay:.34s;
}

@keyframes heroLineReveal{
  to{
    opacity:1;
    transform:translateY(0);
  }
}

@keyframes softReveal{
  to{
    opacity:1;
    transform:translateY(0);
  }
}

@keyframes mockupDrift{
  0%,100%{
    transform:translate3d(0,0,0);
  }
  50%{
    transform:translate3d(0,-8px,0);
  }
}

@keyframes floatDriftOne{
  0%,100%{
    transform:translate3d(0,0,0);
  }
  50%{
    transform:translate3d(-4px,-7px,0);
  }
}

@keyframes floatDriftTwo{
  0%,100%{
    transform:translate3d(0,0,0);
  }
  50%{
    transform:translate3d(5px,-6px,0);
  }
}

@keyframes floatDriftThree{
  0%,100%{
    transform:translate3d(0,0,0);
  }
  50%{
    transform:translate3d(4px,6px,0);
  }
}

.hero-copy{
  max-width:780px;
  margin:30px auto 0;
  color:var(--muted);
  font-size:clamp(16px,2vw,21px);
  line-height:1.72;
  font-weight:300;
  opacity:0;
  transform:translateY(14px);
  animation:softReveal .7s ease .52s forwards;
}

.hero-actions{
  display:flex;
  justify-content:center;
  flex-wrap:wrap;
  gap:18px;
  margin-top:34px;
  opacity:0;
  transform:translateY(14px);
  animation:softReveal .7s ease .62s forwards;
}

.hero-stage{
  position:relative;
  max-width:1080px;
  margin:40px auto 0;
  min-height:390px;
  opacity:0;
  transform:translateY(18px);
  animation:softReveal .85s ease .76s forwards;
}

.hero-stage.motion-ready .main-product{
  animation:mockupDrift 10s ease-in-out infinite;
}

.hero-stage.motion-ready .float-card.one{
  animation:floatDriftOne 11s ease-in-out infinite;
}

.hero-stage.motion-ready .float-card.two{
  animation:floatDriftTwo 12s ease-in-out infinite;
}

.hero-stage.motion-ready .float-card.three{
  animation:floatDriftThree 13s ease-in-out infinite;
}

/* =========================================================
   08. Hero product mockup
   Decorative delivery-map interface shown below the hero CTAs.
   ========================================================= */

.main-product{
  position:relative;
  width:min(760px, 88vw);
  margin:0 auto;
  border-radius:34px;
  border:1px solid rgba(255,255,255,.11);
  background:
    radial-gradient(circle at 70% 10%, rgba(255,122,26,.10), transparent 40%),
    linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.025));
  box-shadow:
    0 40px 120px rgba(0,0,0,.55),
    0 0 0 1px rgba(255,255,255,.04) inset;
  overflow:hidden;
  backdrop-filter:blur(20px);
  will-change:transform;
}

:root[data-theme="light"] .main-product,
:root[data-theme="light"] .feature-card,
:root[data-theme="light"] .work-card,
:root[data-theme="light"] .quote-panel{
  background:
    radial-gradient(circle at 86% 10%, rgba(255,122,26,.10), transparent 32%),
    linear-gradient(180deg, rgba(255,255,255,.90), rgba(255,255,255,.62));
}

:root[data-theme="light"] .cta-panel{
  background:
    radial-gradient(circle at 50% 20%, rgba(255,122,26,.10), transparent 42%),
    linear-gradient(180deg, rgba(255,255,255,.96), rgba(255,255,255,.78));
}

:root[data-theme="light"] .feature-card,
:root[data-theme="light"] .work-card{
  border:1px solid rgba(11,20,26,.08);
  box-shadow:0 18px 50px rgba(16,35,50,.08);
}

.product-top{
  height:62px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 22px;
  border-bottom:1px solid var(--line);
}

.product-status{
  color:var(--muted);
  font-size:12px;
  font-weight:700;
  letter-spacing:.12em;
}

.product-status-brand{
  display:flex;
  align-items:center;
  gap:8px;
}

.product-status-brand img{
  width:132px;
  height:auto;
  display:block;
  filter:drop-shadow(0 0 10px rgba(255,122,26,.14));
}

.product-status-brand span{
  color:var(--muted);
  font-size:12px;
  font-weight:800;
  letter-spacing:.12em;
}

.dots{
  display:flex;
  gap:8px;
}

.dots i{
  width:10px;
  height:10px;
  border-radius:999px;
  background:rgba(241,245,248,.28);
}

:root[data-theme="light"] .dots i{
  background:rgba(11,20,26,.22);
}

.product-body{
  padding:24px;
}

.pipeline{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:12px;
}

.pipe-step{
  min-height:150px;
  padding:18px;
  border-radius:22px;
  background:rgba(15,16,17,.68);
  border:1px solid rgba(255,255,255,.10);
}

:root[data-theme="light"] .pipe-step{
  background:rgba(255,255,255,.70);
}

.pipe-step small{
  display:block;
  color:var(--accent);
  font-size:11px;
  font-weight:800;
  letter-spacing:.14em;
  margin-bottom:16px;
}

.pipe-step strong{
  display:block;
  margin-bottom:12px;
  font-size:18px;
  line-height:1.15;
  letter-spacing:-.04em;
}

.pipe-step p{
  margin:0;
  color:var(--muted);
  font-size:12px;
  line-height:1.55;
}

.signal-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
  margin-top:12px;
}

.signal{
  min-height:86px;
  padding:16px;
  border:1px solid var(--line);
  border-radius:20px;
  background:rgba(15,16,17,.48);
}

:root[data-theme="light"] .signal{
  background:rgba(255,255,255,.70);
}

.signal small{
  display:block;
  margin-bottom:8px;
  color:var(--muted);
  font-size:12px;
}

.signal strong{
  font-size:28px;
  letter-spacing:-.05em;
}

.signal strong span{
  color:var(--accent);
}

/* =========================================================
   09. Floating hero cards
   Overlay cards around the mockup. Dark mode uses stronger opacity for readability.
   ========================================================= */

.float-card{
  position:absolute;
  z-index:3;
  padding:18px;
  border-radius:24px;
  background:rgba(15,16,17,.82);
  border:1px solid rgba(255,255,255,.14);
  box-shadow:
    0 30px 80px rgba(0,0,0,.65),
    0 0 0 1px rgba(255,255,255,.04) inset;
  backdrop-filter:blur(12px);
  will-change:transform;
}

:root[data-theme="light"] .float-card{
  background:rgba(255,255,255,.92);
  border:1px solid rgba(11,20,26,.08);
  box-shadow:
    0 24px 70px rgba(16,35,50,.16),
    0 0 0 1px rgba(255,255,255,.85) inset;
  backdrop-filter:blur(10px);
}

.float-card.one{
  left:0;
  top:76px;
  width:250px;
}

.float-card.two{
  right:0;
  top:38px;
  width:235px;
}

.float-card.three{
  right:64px;
  bottom:10px;
  width:270px;
}

.float-label{
  margin-bottom:12px;
  color:var(--accent);
  font-size:11px;
  font-weight:800;
  letter-spacing:.16em;
  text-transform:uppercase;
}

.float-card strong{
  display:block;
  color:#F5F9FC;
  font-size:18px;
  letter-spacing:-.035em;
  line-height:1.15;
}

.float-card p{
  margin:10px 0 0;
  color:rgba(255,255,255,.78);
  font-size:13px;
  line-height:1.55;
}

:root[data-theme="light"] .float-card strong{
  color:#0B141A;
}

:root[data-theme="light"] .float-card p{
  color:rgba(11,20,26,.64);
}

/* =========================================================
   10. Shared sections + service/work content
   Section headers, cards, marquee band, work grid, quote panel and CTA panel.
   ========================================================= */

.section{
  padding:96px 0;
}

.section-head{
  max-width:850px;
  margin:0 auto 42px;
  text-align:center;
}

.section-label{
  margin-bottom:14px;
  color:var(--accent);
  font-size:13px;
  font-weight:800;
  letter-spacing:.18em;
  text-transform:uppercase;
}

#work{
  padding-top:10px;
}

h2{
  margin:0;
  font-size:clamp(36px,5.3vw,68px);
  line-height:1.08;
  letter-spacing:-.065em;
  font-weight:650;
}

.section-note{
  max-width:680px;
  margin:22px auto 0;
  color:var(--muted);
  font-size:16px;
  line-height:1.75;
  font-weight:300;
}

/* Service cards */

.feature-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:18px;
}

.feature-card{
  position:relative;
  min-height:335px;
  padding:28px;
  border-radius:30px;
  border:1px solid rgba(255,255,255,.105);
  background:
    radial-gradient(circle at 80% 10%, rgba(255,122,26,.075), transparent 32%),
    linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.032));
  box-shadow:
    0 24px 70px rgba(0,0,0,.22),
    inset 0 1px 0 rgba(255,255,255,.04);
  overflow:hidden;
  transition:.24s ease;
}

.feature-card:hover{
  transform:translateY(-5px);
  border-color:rgba(255,122,26,.44);
}

.feature-icon{
  width:50px;
  height:50px;
  display:grid;
  place-items:center;
  margin-bottom:30px;
  border-radius:17px;
  background:rgba(255,122,26,.13);
  color:var(--accent);
}

.feature-icon svg{
  width:27px;
  height:27px;
  stroke:currentColor;
  stroke-width:1.7;
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
}

.feature-card h3{
  margin:0 0 16px;
  font-size:clamp(23px,2.4vw,31px);
  line-height:1.08;
  letter-spacing:-.05em;
  font-weight:650;
}

.feature-card p{
  margin:0;
  color:var(--muted);
  font-size:15px;
  line-height:1.72;
  font-weight:300;
}

/* Horizontal service marquee band */

.band{
  overflow:hidden;
  border-top:1px solid rgba(241,245,248,.10);
  border-bottom:1px solid rgba(241,245,248,.10);
  background:linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.025));
  backdrop-filter:blur(8px);
}

:root[data-theme="light"] .band{
  border-top:1px solid rgba(11,20,26,.08);
  border-bottom:1px solid rgba(11,20,26,.08);
  background:linear-gradient(180deg, rgba(255,255,255,.35), rgba(255,255,255,.15));
}

.band-track{
  display:flex;
  width:max-content;
  animation:marquee 30s linear infinite;
}

.band span{
  display:inline-flex;
  align-items:center;
  gap:18px;
  padding:16px 20px;
  color:rgba(241,245,248,.60);
  font-weight:700;
  white-space:nowrap;
}

:root[data-theme="light"] .band span{
  color:rgba(11,20,26,.55);
}

.band b{
  color:var(--accent);
}

@keyframes marquee{
  to{
    transform:translateX(-50%);
  }
}

/* How-it-works cards */

.work-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:18px;
}

.work-card{
  min-height:240px;
  padding:28px;
  border-radius:30px;
  border:1px solid rgba(255,255,255,.105);
  background:
    radial-gradient(circle at 80% 10%, rgba(255,122,26,.075), transparent 32%),
    linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.032));
  box-shadow:
    0 24px 70px rgba(0,0,0,.22),
    inset 0 1px 0 rgba(255,255,255,.04);
}

.work-num{
  margin-bottom:28px;
  color:var(--accent);
  font-size:13px;
  font-weight:800;
  letter-spacing:.16em;
}

.work-card h3{
  margin:0 0 14px;
  font-size:clamp(25px,3vw,38px);
  line-height:1.05;
  letter-spacing:-.055em;
  font-weight:650;
}

.work-card p{
  margin:0;
  color:var(--muted);
  font-size:15px;
  line-height:1.72;
  font-weight:300;
}

/* Mid-page quote panel */

:root[data-theme="dark"] .quote-panel{
  box-shadow:0 32px 90px rgba(0,0,0,.32);
}

.quote-panel{
  max-width:960px;
  margin:0 auto;
  padding:54px;
  text-align:center;
  border-radius:36px;
  border:1px solid rgba(255,255,255,.14);
  background:
    radial-gradient(circle at 50% 0%, rgba(255,122,26,.22), transparent 42%),
    linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.03));
  box-shadow:0 28px 90px rgba(16,35,50,.15);
}

.quote-panel p{
  margin:0;
  font-size:clamp(27px,4vw,52px);
  line-height:1.08;
  letter-spacing:-.06em;
  font-weight:600;
}

.quote-panel span{
  display:block;
  margin-top:22px;
  color:var(--muted);
  font-size:15px;
  line-height:1.7;
  letter-spacing:0;
  font-weight:300;
}

.quote-section{
  padding-top:15px !important;
  padding-bottom:15px !important;
}

/* Final call-to-action panel */

.cta-panel{
  padding:78px 34px;
  text-align:center;
  border-radius:38px;
  border:1px solid var(--line);
  background:
    radial-gradient(circle at 24% 20%, rgba(255,122,26,.07), transparent 30%),
    radial-gradient(circle at 80% 78%, rgba(255,122,26,.045), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.032));
  box-shadow:var(--shadow);
}

.cta-panel h2{
  max-width:820px;
  margin:0 auto;
}

.cta-panel p{
  max-width:760px;
  margin:24px auto 32px;
  color:var(--muted);
  font-size:17px;
  line-height:1.75;
  font-weight:300;
}

/* =========================================================
   11. Footer
   Bottom logo, copyright and divider.
   ========================================================= */

.footer{
  padding:40px 0 28px;
  color:rgba(241,245,248,.45);
  font-size:12px;
}

:root[data-theme="light"] .footer{
  color:rgba(11,20,26,.45);
}

.footer-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding-top:24px;
  border-top:1px solid var(--line);
}

.footer .logo img{
  width:150px;
}

/* =========================================================
   12. Scroll reveal animation
   JS adds .visible when items enter the viewport.
   ========================================================= */

.reveal{
  opacity:0;
  transform:translateY(18px);
  transition:opacity .72s ease, transform .72s ease;
}

.reveal.visible{
  opacity:1;
  transform:translateY(0);
}

/* =========================================================
   13. Contact page + form
   Contact page heading, form panel, fields, validation and status text.
   ========================================================= */

.contact-page{
  min-height:calc(100vh - 180px);
  padding-top:56px;
}

.contact-title{
  margin:0;
  font-size:clamp(42px,6vw,76px);
  line-height:1.08;
  letter-spacing:-.065em;
  font-weight:650;
}

.contact-form{
  max-width:720px;
  margin:42px auto 0;
  padding:32px;
  border:1px solid var(--line);
  border-radius:34px;
  background:
    radial-gradient(circle at 78% 8%, rgba(255,122,26,.08), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.032));
  box-shadow:
    0 24px 70px rgba(0,0,0,.22),
    inset 0 1px 0 rgba(255,255,255,.04);
}

:root[data-theme="light"] .contact-form{
  background:
    radial-gradient(circle at 86% 10%, rgba(255,122,26,.10), transparent 32%),
    linear-gradient(180deg, rgba(255,255,255,.90), rgba(255,255,255,.62));
  box-shadow:var(--shadow);
}

/* Form fields */

.form-row{
  margin-bottom:20px;
  text-align:left;
}

.form-row label{
  display:block;
  margin-bottom:8px;
  color:var(--white);
  font-size:13px;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.form-row input,
.form-row textarea{
  width:100%;
  padding:15px 16px;
  border:1px solid var(--line);
  border-radius:18px;
  font:inherit;
  color:var(--white);
  background:rgba(255,255,255,.68);
  outline:none;
  transition:.2s ease;
}

:root[data-theme="dark"] .form-row input,
:root[data-theme="dark"] .form-row textarea{
  background:rgba(9,10,11,.72);
  border-color:rgba(255,255,255,.13);
}

.form-row textarea{
  resize:vertical;
  min-height:170px;
}

.form-row input:focus,
.form-row textarea:focus{
  border-color:rgba(255,122,26,.65);
  box-shadow:0 0 0 4px rgba(255,122,26,.12);
}

.form-row input.has-error,
.form-row textarea.has-error{
  border-color:#d64545;
}

.field-error{
  display:block;
  min-height:18px;
  margin-top:7px;
  color:#d64545;
  font-size:12px;
}

/* Inline validation / submit status */

.form-status{
  min-height:22px;
  margin-top:18px;
  color:var(--muted);
  font-size:14px;
}

.form-status.success{
  color:#1f8a5b;
}

.form-status.error{
  color:#d64545;
}

/* =========================================================
   14. Contact success state
   Fade-swap replacement panel shown after successful async submit.
   ========================================================= */

.quote-panel p,
.cta-panel h2{
  letter-spacing:-.035em;
  line-height:1.12;
}

h2,
.contact-title{
  letter-spacing:-.04em;
}

.contact-shell{
  max-width:720px;
  margin:42px auto 0;
  display:grid;
  position:relative;
}

.contact-shell .contact-form,
.contact-shell .success-panel{
  grid-area:1 / 1;
}

.contact-shell .contact-form{
  margin:0;
  z-index:2;
}

.contact-form,
.success-panel{
  transition:
    opacity .42s ease,
    transform .42s ease,
    filter .42s ease,
    visibility .42s ease;
}

.contact-shell.is-sent .contact-form{
  opacity:0;
  transform:translateY(-12px);
  filter:blur(4px);
  pointer-events:none;
  visibility:hidden;
}

.contact-shell.is-swapped .contact-form{
  display:none;
}

.success-panel{
  z-index:1;
  padding:60px 40px;
  text-align:center;
  border:1px solid var(--line);
  border-radius:34px;
  background:
    radial-gradient(circle at 50% 0%, rgba(255,122,26,.16), transparent 42%),
    linear-gradient(180deg, rgba(255,255,255,.90), rgba(255,255,255,.62));
  box-shadow:var(--shadow);
  opacity:0;
  transform:translateY(12px);
  pointer-events:none;
  visibility:hidden;
}

:root[data-theme="dark"] .success-panel{
  background:
    radial-gradient(circle at 50% 0%, rgba(255,122,26,.22), transparent 42%),
    linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.02));
  border:1px solid rgba(255,255,255,.12);
}

.contact-shell.is-sent .success-panel{
  opacity:1;
  transform:translateY(0);
  pointer-events:auto;
  visibility:visible;
}

.success-icon{
  width:58px;
  height:58px;
  display:grid;
  place-items:center;
  margin:0 auto 20px;
  border-radius:999px;
  color:#F1F5F8;
  background:linear-gradient(135deg,var(--accent),var(--accent-deep));
  box-shadow:0 18px 48px rgba(255,122,26,.34);
  font-size:28px;
  font-weight:800;
}

.success-panel h2{
  margin:0;
  font-size:clamp(34px,5vw,54px);
}

.success-panel p{
  max-width:500px;
  margin:18px auto 28px;
  color:var(--muted);
  font-size:16px;
  line-height:1.7;
}

/* =========================================================
   15. Honeypot anti-spam field
   Off-screen field for bots; real users should never see or interact with it.
   ========================================================= */

.hp-field{
  position:absolute!important;
  left:-9999px!important;
  width:1px!important;
  height:1px!important;
  opacity:0!important;
  pointer-events:none!important;
}

/* =========================================================
   16. Responsive rules
   Tablet and mobile layout adjustments.
   ========================================================= */

@media(max-width:1050px){
  .hero-stage{
    min-height:auto;
  }
  .float-card{
    position:relative;
    left:auto!important;
    right:auto!important;
    top:auto!important;
    bottom:auto!important;
    width:auto!important;
    max-width:760px;
    margin:14px auto 0;
  }
  .pipeline{
    grid-template-columns:1fr 1fr;
  }
  .feature-grid{
    grid-template-columns:1fr;
  }
  .work-grid{
    grid-template-columns:1fr;
  }
}

@media(max-width:720px){
  .wrap{
    width:min(100% - 28px, 1180px);
  }
  .header{
    padding:10px 0;
  }
  .nav{
    min-height:66px;
    padding:0 12px;
  }
  .logo img{
    width:150px;
  }
  .nav-right{
    gap:10px;
  }
  .theme-toggle{
    width:40px;
    height:40px;
    font-size:17px;
  }
  .hero{
    min-height:auto;
    padding:54px 0 72px;
  }
  .line-1,
  .line-2{
    font-size:clamp(45px,15vw,78px);
  }
  .line-3{
    font-size:clamp(49px,16vw,84px);
  }
  .hero-copy{
    font-size:16px;
  }
  .main-product{
    border-radius:26px;
  }
  .product-body{
    padding:16px;
  }
  .pipeline,
  .signal-row{
    grid-template-columns:1fr;
  }
  .section{
    padding:68px 0;
  }
  h2{
    font-size:clamp(34px,11vw,54px);
  }
  .quote-panel{
    padding:34px 22px;
    border-radius:28px;
  }
  .cta-panel{
    padding:52px 22px;
    border-radius:28px;
  }
  .footer-inner{
    flex-direction:column;
    align-items:flex-start;
  }
  .product-status-brand img{
    width:98px;
  }
  .product-status-brand span{
    font-size:10px;
  }
  .contact-form,
  .success-panel{
    padding:22px;
    border-radius:26px;
  }
}

/* =========================================================
   17. Reduced motion
   Respect OS-level reduced motion preferences by disabling animation.
   ========================================================= */

@media(prefers-reduced-motion:reduce){
  *{
    animation:none!important;
    transition:none!important;
    scroll-behavior:auto!important;
  }
  .hero-title .line,
  .hero-copy,
  .hero-actions,
  .hero-stage,
  .hero-stage.motion-ready .main-product,
  .hero-stage.motion-ready .float-card,
  .reveal{
    opacity:1!important;
    transform:none!important;
  }
}

/* =========================================================
   18. Mobile refinement overrides
   Safe layer — no structural changes.
   ========================================================= */

@media(max-width:720px){
  .nav{
    min-height:58px;
    padding:0 10px;
    border-radius:22px;
    position:relative;
    overflow:visible;
  }
  .logo img{
    width:135px;
  }
  .nav-right{
    display:flex;
    align-items:center;
    gap:8px;
    flex-shrink:0;
  }
  .hero{
    padding:72px 0 64px;
  }
  .hero-title{
    gap:8px;
  }
  .line-1,
  .line-2{
    font-size:clamp(40px, 11vw, 64px);
    line-height:.98;
  }
  .line-3{
    font-size:clamp(44px, 12vw, 68px);
    line-height:.96;
  }
  .hero-copy{
    margin-top:24px;
    font-size:15px;
    line-height:1.65;
  }
  .hero-actions{
    gap:12px;
    margin-top:28px;
  }
  .button,
  .nav-cta{
    min-height:48px;
    padding:0 18px;
    font-size:13px;
  }
  .hero-stage{
    margin-top:48px;
  }
  .hero-stage .float-card.three{
    margin-bottom:22px;
  }
  .hero-stage .main-product{
    margin-top:22px;
  }
  .main-product{
    border-radius:22px;
  }
  .product-body{
    padding:14px;
  }
  .float-card{
    padding:14px;
    border-radius:18px;
  }
  .feature-card,
  .work-card{
    padding:22px;
    border-radius:24px;
  }
  .work-card{
    min-height:auto;
  }
  .section{
    padding:64px 0;
  }
  .section-head{
    margin:0 auto 48px;
  }
  .quote-panel{
    padding:32px 20px;
    border-radius:26px;
  }
  .quote-panel p{
    font-size:clamp(22px, 6vw, 32px);
    line-height:1.15;
  }
  .cta-panel{
    padding:48px 20px;
    border-radius:26px;
  }
  .form-row input,
  .form-row textarea{
    padding:14px;
  }
  :root[data-theme="light"] .form-row input,
  :root[data-theme="light"] .form-row textarea{
    background:rgba(255,255,255,.9);
  }
  .footer{
    padding:48px 0 36px;
  }
}

/* =========================================================
   19. Mobile nav menu
   Proper mobile dropdown menu.
   - Desktop nav remains unchanged.
   - Mobile hides nav links until .nav.open is toggled by JS.
   - Uses fixed positioning so it cannot be clipped by the nav/header.
   ========================================================= */

.menu-toggle{
  display:none;
  width:40px;
  height:40px;
  flex:0 0 40px;
  border-radius:999px;
  border:1px solid var(--line);
  background:var(--glass);
  color:var(--white);
  font-size:18px;
  line-height:1;
  cursor:pointer;
  transition:
    transform .24s ease,
    border-color .24s ease,
    background .24s ease;
}

.menu-toggle:hover{
  transform:translateY(-2px);
  border-color:rgba(255,122,26,.42);
}

@media(max-width:720px){
  .header{
    overflow:visible;
  }
  .menu-toggle{
    display:grid;
    place-items:center;
    position:relative;
    z-index:10001;
  }
  .theme-toggle{
    position:relative;
    z-index:10001;
  }
  .nav-links{
    position:fixed;
    top:76px;
    left:14px;
    right:14px;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:10px;
    padding:16px;
    border-radius:22px;
    border:1px solid var(--line);
    background:rgba(22,35,44,.96);
    backdrop-filter:blur(22px);
    -webkit-backdrop-filter:blur(22px);
    box-shadow:
      0 24px 70px rgba(0,0,0,.32),
      inset 0 1px 0 rgba(255,255,255,.08);
    z-index:10000;
    opacity:0;
    transform:translateY(-10px) scale(.985);
    pointer-events:none;
    visibility:hidden;
    transition:
      opacity .24s ease,
      transform .24s ease,
      visibility .24s ease;
  }
  :root[data-theme="light"] .nav-links{
    background:rgba(255,255,255,.96);
    box-shadow:
      0 24px 70px rgba(16,35,50,.16),
      inset 0 1px 0 rgba(255,255,255,.9);
  }
  .nav.open .nav-links{
    opacity:1;
    transform:translateY(0) scale(1);
    pointer-events:auto;
    visibility:visible;
  }
  .nav-links a{
    width:100%;
    display:flex;
    align-items:center;
    justify-content:flex-start;
    padding:13px 14px;
    border-radius:14px;
    color:var(--white);
    font-size:13px;
    font-weight:800;
    letter-spacing:.02em;
  }
  .nav-links a:hover{
    color:var(--white);
    background:rgba(255,122,26,.10);
  }
  .nav-links .nav-cta{
    justify-content:center;
    margin-top:4px;
    min-height:48px;
    padding:0 18px;
    color:#EAF2F8;
    background:linear-gradient(135deg,var(--accent),var(--accent-deep));
    box-shadow:
      0 16px 34px rgba(255,122,26,.32),
      0 6px 16px rgba(0,0,0,.16),
      inset 0 1px 0 rgba(255,255,255,.18);
  }
}