/* =========================
   Roux Systems — style.css (CLEANED)
   Same visuals/behavior, duplicates removed, selectors fixed.
========================= */

/* Reset & variables */
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --color-bg:#0a0a0a; --color-text:#fff; --color-accent:#fff; --color-primary:#fefefe; --color-muted:#444;
  --container-width:1200px; --transition-fast:.3s ease; --transition-slow:.6s ease;
  font-size:16px;
}

/* Base */
body{font-family:'Roboto Mono',monospace;background:var(--color-bg);color:var(--color-text);line-height:1.6;overflow-x:hidden}
.container{width:90%;max-width:var(--container-width);margin:0 auto;padding:0 1rem}
h2{font-size:2rem;text-transform:uppercase;font-weight:700;margin-bottom:2rem;letter-spacing:.05em}

/* Header / Nav */
header{position:sticky;top:0;z-index:1000;background:var(--color-bg);border-bottom:px solid var(--color-muted)}
.nav{display:flex;align-items:center;justify-content:space-between;padding:1rem 0}
.logo{font-weight:800;font-size:1.3rem;letter-spacing:.1em;text-transform:uppercase}
.nav-links{list-style:none;display:flex;gap:1.5rem;margin-right:auto;margin-left:2rem}
.nav-links a{color:var(--color-text);text-decoration:none;font-size:.9rem;position:relative;transition:color var(--transition-fast)}
.nav-links a::after{content:'';position:absolute;left:0;bottom:-4px;width:0;height:2px;background:var(--color-text);transition:width var(--transition-fast)}
.nav-links a:hover{color:var(--color-muted)}
.nav-links a:hover::after{width:100%}
.nav-toggle{display:none}
.nav-toggle-label{display:none;flex-direction:column;width:30px;height:22px;justify-content:space-between;cursor:pointer}
.nav-toggle-label span,
.nav-toggle-label span::before,
.nav-toggle-label span::after{content:'';display:block;height:3px;width:100%;background:var(--color-text);border-radius:2px;transition:transform var(--transition-fast)}
.nav-toggle-label span::before{transform:translateY(-8px)}
.nav-toggle-label span::after{transform:translateY(8px)}

/* Buttons */
.btn{display:inline-block;padding:.6rem 1rem;border:1px solid var(--color-text);text-decoration:none;font-size:.9rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text);background:transparent;transition:all var(--transition-fast);cursor:pointer}
.btn-primary{background:var(--color-text);color:var(--color-bg);box-shadow:0 0 10px rgba(255,255,255,.2)}
.btn-primary:hover{background:var(--color-muted);color:var(--color-text)}
.btn-outline:hover{background:var(--color-text);color:var(--color-bg)}
.hero-cta{padding:.8rem 2rem;font-size:1rem}

/* Hero */
.hero{position:relative;min-height:90vh;display:flex;align-items:center;justify-content:center;text-align:center;background:#000 center/cover no-repeat}
.hero{background-image:url("/assets/img/hero.jpg")}
@supports (background-image: image-set(url("x") type("image/webp"))){
  .hero{background-image:image-set(url("/assets/img/hero.webp") type("image/webp"), url("/assets/img/hero.jpg") type("image/jpeg"))}
}
.hero::after{content:'';position:absolute;inset:0;background:rgba(0,0,0,.4);z-index:0}
.hero-content{position:relative;z-index:1}
.hero-title{font-size:3rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;margin-bottom:1rem}

/* Typewriter caret */
.typewriter{position:relative;white-space:nowrap;overflow:hidden}
.typewriter::after{content:"";position:absolute;width:2px;right:-2px;top:0;bottom:0;background:currentColor;animation:caret .8s steps(1) infinite}
@keyframes caret{50%{opacity:0}}

/* Sections */
.section{padding:4rem 0}

/* Portfolio */
.portfolio{padding:4rem 0}
.portfolio-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem}
.portfolio-item{display:flex;flex-direction:column;background:var(--color-bg);border:1px solid var(--color-muted);box-shadow:0 0 10px rgba(0,0,0,.5);overflow:hidden}
.portfolio-image img{width:100%;display:block}
.portfolio-info{padding:1.5rem}
.portfolio-info h3{font-size:1.2rem;margin-bottom:.5rem;font-weight:700;text-transform:uppercase}
.portfolio-info p{font-size:.9rem;margin-bottom:1rem;color:#ccc}

/* Services */
.services{background:#111;padding:4rem 0}
.services-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:2rem}
.service-card{background:#181818;padding:2rem;text-align:center;border:1px solid #222;transition:background var(--transition-fast)}
.service-card i{margin-bottom:1rem;color:var(--color-text)}
.service-card h3{font-size:1.1rem;margin-bottom:.5rem;text-transform:uppercase;font-weight:700}
.service-card p{font-size:.9rem;color:#ccc}
.service-card:hover{background:#222}

/* Process */
.process{padding:4rem 0}
.process-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:2rem}
.process-step{background:#181818;padding:2rem 1.5rem;border:1px solid #222;position:relative;overflow:hidden}
.process-step .step-number{font-size:1.5rem;font-weight:700;color:#666;margin-bottom:1rem}
.process-step h3{font-size:1.1rem;margin-bottom:.5rem;text-transform:uppercase}
.process-step p{font-size:.9rem;color:#ccc;margin-bottom:1rem}
.process-step .progress{height:3px;background:#333;width:100%;position:absolute;bottom:0;left:0}

/* About */
.about{padding:4rem 0}
.about-wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;align-items:center}
.about-text p{font-size:1rem;color:#ccc;line-height:1.5}
.about-media img{width:100%;border:0}

/* Contact section + form (black/white theme) */
#contact{scroll-margin-top:80px;background:#111;padding:4rem 0}
.contact-title{text-align:center;margin:0 0 1rem;color:#fff;font-weight:700;text-transform:uppercase}

/* layout */
#contactForm{--fg:#fff;--muted:#bdbdbd;--line:#3a3a3a;--line-2:#5a5a5a;--focus:#fff;
  width:40%;max-width:720px;min-width:320px;margin:0 auto}
#contactForm .grid{display:grid;gap:1rem;grid-template-columns:1fr 1fr}
#contactForm .full{grid-column:1 / -1}

/* fields */
#contactForm .field input,
#contactForm .field select,
#contactForm textarea{width:100%;padding:.75rem .9rem;color:var(--fg);background:#000;border:1px solid var(--line);border-radius:.5rem;outline:none}
#contactForm ::placeholder{color:#8a8a8a}
#contactForm input:focus,#contactForm select:focus,#contactForm textarea:focus{border-color:var(--focus);box-shadow:0 0 0 2px rgba(255,255,255,.15)}
#contactForm textarea{resize:none;overflow:auto;min-height:140px;max-height:140px}

/* consent row (right-aligned, one line) */
#contactForm label.custom-checkbox{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:.5rem;width:100%}
#contactForm .grid label.custom-checkbox{grid-column:1 / -1}
#contactForm label.custom-checkbox > span{display:inline;white-space:nowrap}

/* submit CTA (matches hero button; includes disabled state) */
#contactForm .btn.btn-primary,
#contactForm .btn.btn-primary:disabled{appearance:none;-webkit-appearance:none;background:#fff;color:#000;border:1px solid #fff;border-radius:0;padding:.8rem 2rem;font-size:1rem;letter-spacing:.2em;text-transform:uppercase;box-shadow:0 0 10px rgba(255,255,255,.2);cursor:pointer}
#contactForm .btn.btn-primary:hover:not(:disabled){background:#ddd;color:#000}
.btn.btn-primary:disabled{opacity:.55;cursor:not-allowed;filter:grayscale(20%)}

/* consent small text */
#contactForm .smallprint{display:flex;align-items:center;gap:.5rem;justify-content:flex-end;text-align:right;width:100%;color:var(--muted)}
#contactForm .smallprint span{font-size:.75rem;opacity:.75;letter-spacing:.02em}

/* Custom checkbox core (kept) */
.custom-checkbox{display:inline-flex;align-items:center;cursor:pointer;user-select:none;font-size:16px;color:#333;transition:color .3s}
.custom-checkbox input[type="checkbox"]{display:none}
.custom-checkbox .checkmark{width:24px;height:24px;border:2px solid #333;border-radius:4px;display:flex;align-items:center;justify-content:center;margin-right:10px;transition:background-color .3s,border-color .3s,transform .3s;transform-style:preserve-3d}
.custom-checkbox .checkmark::before{content:"\2713";font-size:16px;color:transparent;transition:color .3s,transform .3s}
.custom-checkbox input[type="checkbox"]:checked + .checkmark{background-color:#333;border-color:#333;transform:scale(1.1) rotateZ(360deg) rotateY(360deg)}
.custom-checkbox input[type="checkbox"]:checked + .checkmark::before{color:#fff}
.custom-checkbox:hover{color:#666}
.custom-checkbox:hover .checkmark{border-color:#666;background-color:#f0f0f0;transform:scale(1.05)}
.custom-checkbox input[type="checkbox"]:focus + .checkmark{box-shadow:0 0 3px 2px rgba(0,0,0,.2);outline:none}
.custom-checkbox .checkmark,
.custom-checkbox input[type="checkbox"]:checked + .checkmark{transition:background-color 1.3s,border-color 1.3s,color 1.3s,transform .3s}

/* ensure checkmark is perfectly centered */
#contactForm label.custom-checkbox .checkmark{position:relative;display:inline-flex;align-items:center;justify-content:center;line-height:0;margin-right:0}
#contactForm label.custom-checkbox .checkmark::before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:1}

/* Footer */
.footer{padding:2rem 0;text-align:center;border-top:1px solid #222;background:#0a0a0a;color:#666;font-size:.8rem}
.footer-links{margin-top:.5rem;display:flex;gap:1.5rem;justify-content:center}
.footer-links a{color:#666;text-decoration:none;font-size:.8rem;transition:color var(--transition-fast)}
.footer-links a:hover{color:var(--color-text);text-decoration:underline}

/* Reveal on scroll */
.reveal{opacity:0;transform:translateY(40px);transition:opacity var(--transition-slow),transform var(--transition-slow)}
.reveal.active{opacity:1;transform:none}

/* Responsive */
@media (max-width:1200px){ #contactForm{width:60%} }
@media (max-width:720px){
  #contactForm{width:100%;padding-inline:1rem}
  #contactForm .grid{grid-template-columns:1fr}
}
@media (max-width:768px){
  .nav-links{position:fixed;top:0;right:0;height:100vh;width:70%;max-width:300px;background:var(--color-bg);flex-direction:column;justify-content:flex-start;align-items:flex-start;padding-top:80px;padding-left:1.5rem;gap:1.5rem;transform:translateX(100%);transition:transform var(--transition-fast);z-index:998}
  .nav-links li{width:100%}
  .nav-links a{display:block;padding:.5rem 0;border:none}
  .nav-toggle-label{display:flex;z-index:999;margin-left:auto}
  .nav-toggle:checked ~ .nav-links{transform:translateX(0)}
  .nav-toggle:checked + .nav-toggle-label span{transform:rotate(45deg)}
  .nav-toggle:checked + .nav-toggle-label span::before{transform:rotate(90deg) translateX(0)}
  .nav-toggle:checked + .nav-toggle-label span::after{transform:rotate(90deg) translateX(0)}
  nav .btn-primary{display:none}
  header + .hero{padding-top:56px}
  .hero{min-height:100svh}
  .hero-content{padding:0 1rem}
  .hero-title{font-size:clamp(1.4rem,7vw,2.2rem);letter-spacing:.08em;line-height:1.1;white-space:normal;word-break:keep-all}
}

/* Smaller consent checkbox + text */
#contactForm label.custom-checkbox{
  gap: .35rem;                 /* tighter spacing */
}

#contactForm label.custom-checkbox .checkmark{
  width: 16px;
  height: 16px;
  border-width: 2px;           /* keep crisp border */
}

#contactForm label.custom-checkbox .checkmark::before{
  font-size: 12px;             /* smaller ✓ */
}

#contactForm label.custom-checkbox > span{
  font-size: 0.72rem;          /* smaller text */
  opacity: .78;
  letter-spacing: .02em;
}
@media (max-width: 480px){
  #contactForm label.custom-checkbox > span{ font-size: 0.68rem; }
}
/* Center "Request Quote" button regardless of parent alignment */
#contactForm button[type="submit"]{
  display: block !important;
  margin: .75rem auto 0 !important;  /* left & right auto centers it */
  float: none !important;
  text-align: center;
}
#contactForm { text-align: initial; }
/* Force-center the "Request Quote" button */
#contactForm button[type="submit"]{
  display: block;
  width: fit-content;
  margin: .75rem auto 0;   /* centers in normal/block flow */
  float: none;
  align-self: center;      /* if parent is flex */
  justify-self: center;    /* if parent is grid */
}
/* center submit when it's a grid item */
#contactForm .grid button[type="submit"]{
  grid-column: 1 / -1;
  justify-self: center;
}
/* Contact section full-bleed background image */
#contact{
  position: relative;
  /* full size image behind the form */
  background: #000 url("/assets/img/contact.webp") center / cover no-repeat;
  padding: 4rem 0;          /* keep your spacing; tweak if needed */
}

/* dark overlay for readability */
#contact::before{
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.55);   /* adjust opacity to taste */
}

/* keep content above the overlay */
#contact > *{ position: relative; z-index: 1; }

/* optional: subtle parallax on large screens */
@media (min-width: 1024px){
  #contact{ background-attachment: fixed; }
}
/* Stronger overlay behind the contact section */
#contact::before{
  background: rgba(0,0,0,.65);
}

/* Glassy panel behind the form */
#contactForm{
  position: relative;                /* anchor pseudo panel */
}
#contactForm::before{
  content:"";
  position:absolute;
  inset:-16px;                       /* padding around form */
  border-radius:12px;
  background: rgba(0,0,0,.55);       /* dark glass */
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border:1px solid rgba(255,255,255,.08);
  box-shadow: 0 20px 50px rgba(0,0,0,.45);
  z-index:-1;                        /* sits behind fields */
}

/* Higher-contrast fields on image */
#contactForm .field input,
#contactForm .field select,
#contactForm textarea{
  background: rgba(0,0,0,.88);
  border-color: rgba(255,255,255,.12);
}
#contactForm ::placeholder{ color: rgba(255,255,255,.65); }

/* Title readability */
.contact-title{ text-shadow: 0 2px 12px rgba(0,0,0,.6); }

/* Mobile: even darker panel for busy images */
@media (max-width:720px){
  #contactForm::before{ background: rgba(0,0,0,.68); }
}
/* Panel now wraps title + form */
.contact-panel{
  position: relative;
  width: 40%;
  max-width: 720px;
  min-width: 320px;
  margin: 0 auto;
  padding: 16px;                 /* some breathing room inside */
}
@media (max-width:1200px){ .contact-panel{ width:60%; } }
@media (max-width:720px){  .contact-panel{ width:100%; padding-inline:1rem; } }

/* Move the glass panel to the wrapper */
.contact-panel::before{
  content:"";
  position:absolute;
  inset:-16px;                   /* panel extends around title + form */
  border-radius:0px;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border:0px solid rgba(255,255,255,.08);
  box-shadow: 0 20px 50px rgba(0,0,0,.45);
  z-index:0;
}

/* Keep content above the glass */
.contact-panel > *{ position: relative; z-index:1; }

/* Title readability inside the panel */
.contact-title{ text-shadow: 0 2px 12px rgba(0,0,0,.6); }

/* Since wrapper controls width, let the form fill it */
#contactForm{ width:100%; max-width:none; min-width:0; }

/* Disable the old form-only panel (if present) */
#contactForm::before{ content:none !important; }

/* Single composite tech image */
.coding-logos{
  display:flex; justify-content:center; align-items:center;
  margin: 14px 0 18px;
}
.coding-logos img{
  width: min(720px, 92vw);   /* responsive, capped */
  height: auto;
  object-fit: contain;
  filter: drop-shadow(0 2px 10px rgba(0,0,0,.35));
  opacity: .50;
}
/* Make the coding.webp image ~50% of the intro width */
.coding-logos img{
  width: 15%;
  height: auto;
}
/* Page intro: each line sized to its sentence length */
#page-intro { text-align: center; }

#page-intro .intro-title,
#page-intro .intro-sub{
  display: inline-block;      /* shrink to content */
  max-width: 100%;
  margin-inline: auto;
  white-space: nowrap;        /* keep each on one line */
}

/* allow wrapping on narrow screens so it doesn't overflow */
@media (max-width: 560px){
  #page-intro .intro-title,
  #page-intro .intro-sub{ white-space: normal; }
}
/* Intro layout + per-sentence lines */
.intro{ padding:2rem 1rem 0; text-align:center; }
.intro-title{ margin:0 0 .5rem; font-size:clamp(20px,4vw,32px); line-height:1.2; }
.intro-sub{ opacity:.9; }

.intro .intro-line{
  display:block;
  width:fit-content;       /* line width equals sentence length */
  max-width:100%;
  margin:0 auto .2rem;     /* small vertical gap */
  white-space:nowrap;      /* keep each sentence on one line (desktop) */
}

/* Allow wrapping on narrow screens */
@media (max-width:560px){
  .intro .intro-line{ white-space:normal; }
}

/* Make the coding.webp image ~50% */
.coding-logos{ display:flex; justify-content:center; margin:14px 0 18px; }
.coding-logos img{ width:15%; height:auto; filter:drop-shadow(0 2px 10px rgba(0,0,0,.35)); }
/* Page-intro: increase spacing between each sentence */
#page-intro .intro-line{
  line-height: 2;      /* 1.5x line spacing */
  margin: .25rem auto;   /* slight extra gap */
}
/* Hide-only utility for captions (keeps for screen readers/SEO) */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Overlay CTA centered on image */
.portfolio-item{position:relative; overflow:hidden;}
.portfolio-image img{display:block; width:100%; transition:transform .35s ease, filter .35s ease;}
.portfolio-cta{
  position:absolute; inset:0; display:grid; place-items:center;
  background: rgba(0,0,0,.0); opacity:0; transition:opacity .25s ease, background .25s ease;
}
.portfolio-cta .btn{ pointer-events:auto; }            /* ensure button is clickable */
.portfolio-item:hover .portfolio-cta,
.portfolio-item:focus-within .portfolio-cta{ opacity:1; background: rgba(0,0,0,.35); }
.portfolio-item:hover .portfolio-image img{ transform:scale(1.03); filter:brightness(.92); }

/* Keyboard focus */
.portfolio-cta:focus-visible .btn{ outline:2px solid #fff; outline-offset:3px; }
/* Remove link underline on portfolio overlay button */
.portfolio-cta,
.portfolio-cta:link,
.portfolio-cta:visited,
.portfolio-cta:hover,
.portfolio-cta:focus,
.portfolio-cta:active {
  text-decoration: none !important;
  color: inherit;
}

/* Also safeguard the inner .btn */
.portfolio-cta .btn {
  text-decoration: none !important;
  border-bottom: 0; /* just in case a global rule adds it */
}
/* Bigger portfolio tiles + spacing */
.portfolio.container{ max-width: 1400px; } /* give the grid more room on wide screens */

.portfolio-grid{
  grid-template-columns: repeat(auto-fill, minmax(380px, 1fr)); /* larger tiles */
  gap: 24px;                                                    /* space between tiles */
}

/* Uniform tile shape and full-cover images */
.portfolio-item{ border-radius: 12px; overflow: hidden; }
.portfolio-image{ aspect-ratio: 16 / 10; }   /* adjust to taste (e.g., 4/3) */
.portfolio-image img{ width:100%; height:100%; object-fit: cover; }

/* On very large screens, make them even bigger */
@media (min-width: 1400px){
  .portfolio-grid{ grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: 28px; }
}
/* Full-bleed portfolio section (edge-to-edge) */
.portfolio.container{
  width: 100vw;
  max-width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  padding-left: 0;
  padding-right: 0;
}

/* 3-across grid spanning full width */
.portfolio-grid{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;               /* space between tiles */
  padding: 0 24px;         /* small page gutter */
}

/* Large tiles, square edges */
.portfolio-item{ border-radius: 0; overflow: hidden; }
.portfolio-image{ aspect-ratio: 16 / 9; }      /* big, cinematic tiles */
.portfolio-image img{ width:100%; height:100%; object-fit: cover; display:block; }

/* Responsive fallbacks */
@media (max-width: 1024px){
  .portfolio-grid{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px){
  .portfolio-grid{ grid-template-columns: 1fr; }
}
/* Fix "Portfolio" heading being cut off on full-bleed section */
.portfolio.container > h2{
  padding: 0 24px;   /* match the grid side-gutters */
}

.service-lede{margin:-.5rem 0 1rem; text-align:center; opacity:.9;}


/* === MVP cards: 3-up grid, black/white theme === */
#mvp-services { padding: 2rem 0; background: transparent; }
#mvp-services .cards{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap:1rem;
  max-width:1100px; margin:0 auto;
}

/* neutral palette */
:root{
  --bw-bg:#0a0a0a;        /* page */
  --bw-card:#111;         /* outer card */
  --bw-inner:#141414;     /* inner surface */
  --bw-text:#f5f5f5;      /* headings */
  --bw-muted:#c7c7c7;     /* body */
  --bw-pill:#1e1e1e;      /* price pill */
  --bw-pillTxt:#e6e6e6;
  --bw-border:rgba(255,255,255,.08);
}

/* card */
#mvp-services .plan{
  background:var(--bw-card);
  color:var(--bw-muted);
  border:1px solid var(--bw-border);
  border-radius:16px;
  box-shadow: 0 12px 24px rgba(0,0,0,.35);
  padding:10px;
}
#mvp-services .plan .inner{
  position:relative;
  background:var(--bw-inner);
  border-radius:12px;
  padding:20px;
  padding-top:40px;
}

/* price pill */
#mvp-services .plan .pricing{
  position:absolute; top:0; right:0;
  background:var(--bw-pill); color:var(--bw-pillTxt);
  border-radius:99em 0 0 99em;
  display:flex; align-items:center;
  padding:.55em .7em; font-weight:700; font-size:1.05rem;
}
#mvp-services .plan .pricing small{ color:#bdbdbd; font-size:.75em; margin-left:.25em }

/* text */
#mvp-services .plan .title{ color:var(--bw-text); font-weight:700; font-size:1.1rem }
#mvp-services .plan .info{ color:var(--bw-muted) }
#mvp-services .plan strong{ color:var(--bw-text) }

/* features */
#mvp-services .plan .features{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column }
#mvp-services .plan .features li{ display:flex; align-items:center; gap:.5rem }
#mvp-services .plan .features li + *{ margin-top:.65rem }
#mvp-services .plan .features .icon{
  background:#e5e5e5; color:#0a0a0a;
  width:20px; height:20px; border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center;
}
#mvp-services .plan .features .icon svg{ width:14px; height:14px }

/* CTA — no full width */
#mvp-services .plan .action{ display:flex; justify-content:flex-end; }
#mvp-services .plan .button{
  background:#fff; color:#000; border-radius:6px;
  font-weight:600; font-size:1rem;
  padding:.55em .9em; text-decoration:none;
  border:1px solid #e5e5e5; width:auto; display:inline-block;
}
#mvp-services .plan .button:hover{ background:#e5e5e5 }


/* MVP cards — black/white theme */
#mvp-services .mvp-plan{background:#111;border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:10px;color:#c7c7c7;box-shadow:0 12px 24px rgba(0,0,0,.35)}
#mvp-services .mvp-plan .inner{position:relative;background:#141414;border-radius:12px;padding:20px;padding-top:40px}
#mvp-services .mvp-plan .pricing{position:absolute;top:0;right:0;background:#1e1e1e;color:#e6e6e6;border-radius:99em 0 0 99em;padding:.55em .7em;font-weight:700;font-size:1.05rem}
#mvp-services .mvp-plan .pricing small{color:#bdbdbd;font-size:.75em;margin-left:.25em}
#mvp-services .mvp-plan .title{color:#f5f5f5;font-weight:700;font-size:1.1rem}
#mvp-services .mvp-plan .info{color:#c7c7c7}
#mvp-services .mvp-plan .features{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
#mvp-services .mvp-plan .features li{display:flex;gap:.5rem;align-items:center}
#mvp-services .mvp-plan .features li+*{margin-top:.65rem}
#mvp-services .mvp-plan .features .icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#e5e5e5;color:#0a0a0a;font-weight:700;font-size:.9rem}
#mvp-services .mvp-plan .action{display:flex;justify-content:flex-end}
#mvp-services .mvp-plan .button{background:#fff;color:#000;border:1px solid #e5e5e5;border-radius:6px;font-weight:600;font-size:1rem;padding:.55em .9em;text-decoration:none;width:auto}
#mvp-services .mvp-plan .button:hover{background:#e5e5e5}

/* Safety: kill legacy widths/floats */
#mvp-services .mvp-plan, 
#mvp-services .mvp-plan .button{max-width:none;width:auto;float:none}

/* Square cards + equal heights */
#mvp-services .mvp-cards{align-items:stretch}
#mvp-services .mvp-plan{border-radius:0 !important}
#mvp-services .mvp-plan .inner{
  border-radius:0 !important;
  display:flex; flex-direction:column; height:100%;
}
#mvp-services .mvp-plan .features{margin-top:.75rem}
#mvp-services .mvp-plan .action{
  margin-top:auto;           /* push CTA to bottom */
  display:flex; justify-content:center;  /* center CTA */
}

/* CTA: centered, all caps, not bold */
#mvp-services .mvp-plan .button{
  text-transform:uppercase;
  font-weight:400 !important;   /* no bold */
  letter-spacing:.04em;
  padding:.65em 1.1em;
  width:auto;                   /* not full width */
  margin:0 auto;                /* center fallback */
}
/* center CTA and keep square cards */
#mvp-services .mvp-plan .inner{display:flex;flex-direction:column;height:100%}
#mvp-services .mvp-plan .action{margin-top:auto;display:flex;justify-content:center}

/* align with your site CTA, only minor overrides */
#mvp-services .mvp-cta{
  text-transform:uppercase;
  font-weight:400;        /* no bold */
  letter-spacing:.04em;
  width:auto;
}
/* Toggle styling (matches black/white card theme) */
#offer-section .offer-toggle{
  display:flex; gap:8px; justify-content:center; align-items:center;
  margin:1rem auto 0; max-width:1100px;
}
#offer-section .offer-tab{
  appearance:none; border:1px solid rgba(255,255,255,.08);
  background:#111; color:#eaeaea;
  padding:.9rem 1.4rem; border-radius:12px; cursor:pointer;
  font-size:1.05rem; letter-spacing:.02em;
}
#offer-section .offer-tab[aria-selected="true"]{
  background:#141414; box-shadow:0 8px 18px rgba(0,0,0,.35);
}

/* Panels */
#offer-section .offer-panels{max-width:1100px;margin:1rem auto 0}
#offer-section .mvp-cards{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:16px; align-items:stretch;
}
/* Square cards + centered CTA (reuse your existing card theme) */
#offer-section .mvp-plan{border-radius:0}
#offer-section .mvp-plan .inner{border-radius:0; display:flex; flex-direction:column; height:100%}
#offer-section .mvp-plan .action{margin-top:auto; display:flex; justify-content:center}
#offer-section .mvp-cta{text-transform:uppercase; font-weight:400; letter-spacing:.04em}
/* ===== Scoped styles ===== */
#offer-section{padding:1.5rem 0}
#offer-section .offer-head{max-width:1100px;margin:0 auto 0.75rem;text-align:center}
#offer-section .offer-head h2{margin:0 0 .5rem 0;font-size:1.6rem}

#offer-section .offer-toggle{display:flex;gap:10px;justify-content:center}
#offer-section .offer-tab{
  border:1px solid rgba(255,255,255,.08); background:#111; color:#eee;
  padding:.9rem 1.4rem; border-radius:0; cursor:pointer; letter-spacing:.02em;
}
#offer-section .offer-tab[aria-selected="true"]{background:#141414; box-shadow:0 8px 18px rgba(0,0,0,.35)}

#offer-section .offer-panels{max-width:1100px;margin:1rem auto 0}
#offer-section .cards-grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:16px; align-items:stretch;
}

/* Cards (square) */
#offer-section .card{background:#111;border:1px solid rgba(255,255,255,.08);border-radius:0;box-shadow:0 12px 24px rgba(0,0,0,.35);padding:10px}
#offer-section .card .inner{position:relative;background:#141414;border-radius:0;padding:20px 20px 22px;padding-top:40px;display:flex;flex-direction:column;height:100%}
#offer-section .card .pricing{position:absolute;top:0;right:0;background:#1e1e1e;color:#e6e6e6;border-radius:99em 0 0 99em;padding:.55em .7em;font-weight:700;font-size:1.05rem}
#offer-section .card .pricing small{color:#bdbdbd;font-size:.75em;margin-left:.25em}
#offer-section .card .title{color:#f5f5f5;font-weight:700;font-size:1.1rem}
#offer-section .card .info{color:#c7c7c7}
#offer-section .card .features{list-style:none;margin:.6rem 0 0;padding:0;display:flex;flex-direction:column}
#offer-section .card .features li{display:flex;gap:.5rem;align-items:center}
#offer-section .card .features li+*{margin-top:.6rem}
#offer-section .card .icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#e5e5e5;color:#0a0a0a;font-weight:700;font-size:.9rem}
#offer-section .card .action{margin-top:auto;display:flex;justify-content:center}

/* CTA: rectangular, all caps; piggybacks site button */
#offer-section .path-cta{text-transform:uppercase;font-weight:400;letter-spacing:.04em;border-radius:0}

/* Fade-in animation */
#offer-section .offer-panel[hidden]{display:none}
#offer-section .offer-panel.fade-in{animation:offerFade .35s ease both}
@keyframes offerFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* More space around CTAs and between cards */
#offer-section .cards-grid{ gap: 28px; }

#offer-section .card .action{
  margin-top: 2rem;          /* space above button */
  padding-bottom: 1rem;      /* space below button */
}

#offer-section .card .inner{
  padding-bottom: 44px;      /* adds bottom breathing room */
}

#offer-section .path-cta{
  padding: .8em 1.2em;       /* larger button */
  margin-bottom: .25rem;     /* tiny buffer to edge */
}


/* Equal-height cards */
#offer-section .cards-grid{align-items:stretch}
#offer-section .card{display:flex}                 /* card becomes flex container */
#offer-section .card .inner{
  display:flex; flex-direction:column; flex:1;     /* fill height */
}

/* Bottom-center CTA on every card */
#offer-section .card .action{
  margin-top:auto;                                  /* push CTA to bottom */
  display:flex; justify-content:center; align-items:flex-end;
  padding-top:24px; padding-bottom:20px;            /* breathing room */
}

/* Optional: consistent button size */
#offer-section .path-cta{
  min-width:220px; height:44px; line-height:44px;   /* rectangle */
  display:inline-block; text-align:center;
}

/* Center CTA label vertically and horizontally */
#offer-section .path-cta{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;

  padding:.75em 1.2em !important;
  min-width:220px !important;

  height:auto !important;       /* remove fixed height */
  line-height:1.1 !important;   /* no baseline drift */
  vertical-align:middle !important;
}

/* Subtle fade */
#offer-section .offer-panel.fade-in{
  animation: offerFadeSoft .28s cubic-bezier(.22,.61,.36,1) both;
}

@keyframes offerFadeSoft{
  from{
    opacity: .0;
    transform: translateY(2px); /* tiny shift */
    filter: blur(0.6px);
  }
  to{
    opacity: 1;
    transform: translateY(0);
    filter: blur(0);
  }
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce){
  #offer-section .offer-panel.fade-in{ animation: none }
}

/* Slower, subtle fade */
#offer-section .offer-panel.fade-in{
  animation: offerFadeSoft 1.4s cubic-bezier(.22,.61,.36,1) both;
}
/* Make "Choose Your Path" match the PROCESS header size/style */
#offer-section .offer-head h2{
  font-size: clamp(2.2rem, 3.2vw, 3rem);  /* big like PROCESS */
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  margin: 0 0 .75rem;
}
/* restore card visuals if needed */
#offer-section .cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}
#offer-section .card{background:#111;border:1px solid rgba(255,255,255,.08);box-shadow:0 12px 24px rgba(0,0,0,.35);padding:10px;border-radius:0}
#offer-section .card .inner{position:relative;background:#141414;padding:20px 20px 44px;display:flex;flex-direction:column;height:100%}
#offer-section .card .action{margin-top:auto;display:flex;justify-content:center;padding-top:24px}

/* Set your nav height once */
:root{ --nav-h: 80px; }   /* change to your real navbar height */

/* Keep the section below the fixed/sticky nav */
#offer-section{
  position: relative;
  z-index: 0;                    /* stay under the nav */
  margin-top: calc(var(--nav-h) + 16px);
  scroll-margin-top: calc(var(--nav-h) + 16px); /* for anchor jumps */
}

/* Optional: ensure panels can't float above nav with effects */
#offer-section .offer-head,
#offer-section .offer-panels{ position: relative; z-index: 0; }

:root{ --nav-h: 80px; } /* adjust if your nav height differs */
#pricing{ display:block; height:0; scroll-margin-top: calc(var(--nav-h) + 16px); }

/* Tabs look like CTAs on hover and when active */
#offer-section .offer-toggle{gap:12px}

#offer-section .offer-tab{
  border:1px solid rgba(255,255,255,.12);
  background:#111; color:#eee;
  padding:.9rem 1.4rem; border-radius:0;
  letter-spacing:.03em; cursor:pointer;
  transition:background .2s ease,color .2s ease,
             border-color .2s ease,box-shadow .2s ease,
             transform .2s ease;
}

/* Hover = same style as .btn.btn-primary (white rectangular CTA) */
#offer-section .offer-tab:hover,
#offer-section .offer-tab:focus{
  background:#fff; color:#000;
  border-color:#e5e5e5;
  box-shadow:0 8px 18px rgba(0,0,0,.25);
  transform:translateY(-1px);
  outline:none;
}

/* Selected tab stays as CTA so state is obvious */
#offer-section .offer-tab[aria-selected="true"]{
  background:#fff; color:#000;
  border-color:#e5e5e5;
  box-shadow:0 8px 18px rgba(0,0,0,.25);
  transform:none;
}

/* Optional: reduce pointer events on active to avoid double clicks */
#offer-section .offer-tab[aria-selected="true"]{ pointer-events:none }

:root { --nav-h: 80px; } /* adjust to your nav height */
#top { display:block; height:0; scroll-margin-top: calc(var(--nav-h) + 16px); }

.footer .footer-links { display:flex; gap:12px; flex-wrap:wrap; align-items:center; }
.footer .back-to-top {
  text-transform: uppercase;
  font-weight: 400;
  letter-spacing: .04em;
  border-radius: 0;
  margin-left: auto; /* push to the right */
}

/* subtle footer link */
.footer .footer-links{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.footer .back-to-top-link{
  display:inline-flex; align-items:center; gap:6px;
  font-size:.9rem; color:#cfcfcf; text-decoration:none;
  padding:.25rem .4rem; border-radius:4px;
  border:1px solid transparent; transition:color .15s ease, border-color .15s ease, background .15s ease;
}
.footer .back-to-top-link:hover,
.footer .back-to-top-link:focus{
  color:#fff; border-color:rgba(255,255,255,.15); background:rgba(255,255,255,.05);
  outline:none;
}
/* Solid nav */
.site-nav{
  position: sticky; /* or fixed */
  top: 0;
  z-index: 1000;
  background: #0a0a0a;          /* your dark bg */
  border-bottom: 1px solid rgba(255,255,255,.08);
  box-shadow: 0 4px 16px rgba(0,0,0,.25);
}

/* Ensure the top anchor doesn't hide it */
#top{ display:block; height:0; scroll-margin-top: calc(var(--nav-h, 80px) + 16px); }
header{position:sticky;top:0;z-index:1000;background:var(--color-bg);border-bottom:1px solid var(--color-muted)}

/* ===== Fix: contact form width + layout ===== */
#contact .contact-panel{
  max-width: 820px;          /* hard cap */
  width: min(92vw, 800px);   /* responsive */
  margin-inline: auto;       /* center */
}

/* keep the form filling only the panel, not the page */
#contactForm{ width: 100%; max-width: none; min-width: 0; }

/* two-column grid on desktop, one on mobile */
#contactForm .grid{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
#contactForm .full{ grid-column: 1 / -1; }

@media (max-width: 900px){
  #contactForm .grid{ grid-template-columns: 1fr; }
}

/* inputs stretch only inside the panel */
#contactForm .field input,
#contactForm .field select,
#contactForm textarea{
  width: 100%;
}

/* center the submit CTA */
#contactForm button[type="submit"]{
  display: block;
  margin: 1rem auto 0;
}

/* ===== Fix: contact form width + layout ===== */
#contact .contact-panel{
  max-width: 820px;          /* hard cap */
  width: min(92vw, 800px);   /* responsive */
  margin-inline: auto;       /* center */
}

/* keep the form filling only the panel, not the page */
#contactForm{ width: 100%; max-width: none; min-width: 0; }

/* two-column grid on desktop, one on mobile */
#contactForm .grid{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
#contactForm .full{ grid-column: 1 / -1; }

@media (max-width: 900px){
  #contactForm .grid{ grid-template-columns: 1fr; }
}

/* inputs stretch only inside the panel */
#contactForm .field input,
#contactForm .field select,
#contactForm textarea{
  width: 100%;
}

/* center the submit CTA */
#contactForm button[type="submit"]{
  display: block;
  margin: 1rem auto 0;
}

/* === Fix contact form width after JS removal === */
#contact > .contact-panel{
  width: min(820px, 92vw) !important;   /* constrain */
  max-width: 820px !important;
  margin: 0 auto !important;            /* center */
  position: relative;
}

/* form fills only the panel */
#contactForm{ width: 100% !important; max-width: none !important; min-width: 0 !important; }

/* two-column grid on desktop, single on mobile */
#contactForm .grid{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
#contactForm .full{ grid-column: 1 / -1; }

@media (max-width: 900px){
  #contactForm .grid{ grid-template-columns: 1fr; }
}

/* inputs stretch inside the panel only */
#contactForm .field input,
#contactForm .field select,
#contactForm textarea{ width:100%; }

/* center the submit */
#contactForm button[type="submit"]{
  display:block; margin:1rem auto 0;
}

/* Remove stray line under "Choose Your Path" toggle */
#offer-section .offer-head,
#offer-section .offer-panels,
#offer-section .offer-toggle{
  border: 0 !important;
}

#offer-section .offer-head::after,
#offer-section .offer-toggle::after,
#offer-section hr{
  display: none !important;
}

/* MVP demo tiles – uniform previews */
.mvp .portfolio-image{
  position: relative;
  aspect-ratio: 16/9;   /* change to 4/3 if you prefer */
  width: 100%;
  overflow: hidden;
  margin: 0;
}
.mvp .portfolio-image img{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;     /* fills box consistently */
  object-position: center;
}

/* Fallback for old browsers */
@supports not (aspect-ratio: 1) {
  .mvp .portfolio-image{ position: relative; }
  .mvp .portfolio-image::before{ content:""; display:block; padding-top:56.25%; }
  .mvp .portfolio-image img{ position:absolute; top:0; left:0; width:100%; height:100%; object-fit:cover; }
}

/* Fix: bottom border missing on portfolio overlay CTA */
.portfolio-cta .btn{
  border:0;                                     /* avoid double line */
  box-shadow: inset 0 0 0 1px var(--color-text);/* 1px border on all sides */
  transform: translateZ(0);                      /* avoid sub-pixel clipping */
  line-height:1.1;                               /* prevent text/border cutoffs */
}

