/* =========================================================
   Visionor Studio - main stylesheet
   Tokens ported from the React/Tailwind design system.
   Methodology: BEM-ish for components, utility tokens for layout.
   ========================================================= */
:root{
  --radius:.75rem;
  --background:oklch(0.985 0.005 95);
  --foreground:oklch(0.16 0.005 95);
  --card:oklch(1 0 0);
  --card-foreground:oklch(0.16 0.005 95);
  --muted:oklch(0.955 0.006 95);
  --muted-foreground:oklch(0.48 0.008 95);
  --accent:oklch(0.93 0.22 122);
  --accent-foreground:oklch(0.16 0.005 95);
  --border:oklch(0.91 0.006 95);
  --ring:oklch(0.16 0.005 95);
  --ink:oklch(0.16 0.005 95);
  --ink-foreground:oklch(0.985 0.005 95);
  --container:1600px;
  --font-sans:"Inter",ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  --font-display:"Satoshi","Inter",ui-sans-serif,system-ui,sans-serif;
}
*,*::before,*::after{box-sizing:border-box;border-color:var(--border)}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--background);color:var(--foreground);font-family:var(--font-sans);font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;line-height:1.5}
img,svg,video{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer}
h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:-.02em;margin:0}
p{margin:0}
ul,ol{margin:0;padding:0;list-style:none}

/* ---- utilities ---- */
.container{max-width:var(--container);margin-inline:auto;padding-inline:1.5rem}
@media(min-width:1024px){.container{padding-inline:3rem}}
@media(min-width:1280px){.container{padding-inline:4rem}}
.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:.72rem;font-weight:500;color:var(--muted-foreground)}
.display-xl{font-family:var(--font-display);font-weight:700;font-size:clamp(2.75rem,6vw + 1rem,5.5rem);line-height:.98;letter-spacing:-.035em}
.display-lg{font-family:var(--font-display);font-weight:700;font-size:clamp(2rem,3.5vw + 1rem,3.75rem);line-height:1.02;letter-spacing:-.03em}
.muted{color:var(--muted-foreground)}
.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mt-14{margin-top:3.5rem}.mt-16{margin-top:4rem}
.section{padding-block:7rem}
@media(min-width:1024px){.section{padding-block:9rem}}
.section--muted{background:color-mix(in oklab,var(--muted) 50%,var(--background))}

.skip-link{position:absolute;left:-9999px;top:0;background:var(--ink);color:var(--ink-foreground);padding:.75rem 1rem;z-index:1000;border-radius:0 0 .5rem 0}
.skip-link:focus{left:0}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;gap:.5rem;height:3rem;padding:0 1.5rem;border-radius:999px;font-weight:500;font-size:.95rem;transition:background .2s,color .2s,transform .2s;border:1px solid transparent;white-space:nowrap}
.btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.btn--primary{background:var(--foreground);color:var(--background)}
.btn--primary:hover{background:color-mix(in oklab,var(--foreground) 88%,transparent)}
.btn--outline{border-color:color-mix(in oklab,var(--foreground) 15%,transparent);background:transparent;color:var(--foreground)}
.btn--outline:hover{background:var(--foreground);color:var(--background)}
.btn--accent{background:var(--accent);color:var(--accent-foreground)}
.btn--accent:hover{background:color-mix(in oklab,var(--accent) 90%,transparent)}

/* ---- header ---- */
.site-header{position:fixed;inset:0 0 auto 0;z-index:50;transition:background .3s,border-color .3s,backdrop-filter .3s}
.site-header.is-scrolled{background:color-mix(in oklab,var(--background) 80%,transparent);backdrop-filter:saturate(1.5) blur(16px);border-bottom:1px solid color-mix(in oklab,var(--border) 60%,transparent)}
.site-header__inner{display:flex;align-items:center;justify-content:space-between;height:4rem}
@media(min-width:1024px){.site-header__inner{height:5rem}}
.site-header__brand{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-display);font-weight:700;font-size:1.15rem}
.site-header__brand img{height:2rem;width:auto}
@media(min-width:1024px){.site-header__brand img{height:2.25rem}}
.site-nav{display:none;align-items:center;gap:2.25rem}
@media(min-width:768px){.site-nav{display:flex}}
.site-nav a{font-size:.875rem;color:color-mix(in oklab,var(--foreground) 70%,transparent);transition:color .2s}
.site-nav a:hover,.site-nav .current-menu-item > a,.site-nav .current_page_item > a{color:var(--foreground);font-weight:500}
.site-header__cta{display:none}
@media(min-width:640px){.site-header__cta{display:inline-flex}}
.site-header__cta.btn{height:2.5rem;padding:0 1.25rem;font-size:.85rem;background:var(--foreground);color:var(--background)}

.mobile-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:.5rem;border:1px solid var(--border);background:transparent}
@media(min-width:768px){.mobile-toggle{display:none}}
.mobile-toggle svg{width:1.25rem;height:1.25rem}
.mobile-nav{display:none;position:fixed;inset:4rem 0 0 0;background:var(--background);padding:1.5rem;border-top:1px solid var(--border);z-index:49}
.mobile-nav.is-open{display:block}
.mobile-nav ul{display:flex;flex-direction:column;gap:1rem}
.mobile-nav a{display:block;font-size:1.25rem;font-family:var(--font-display);font-weight:600}

/* ---- hero ---- */
.hero{position:relative;overflow:hidden;padding-top:8rem}
@media(min-width:1024px){.hero{padding-top:10rem}}
.hero__glow,.hero__glow--alt{position:absolute;pointer-events:none;border-radius:999px;filter:blur(72px)}
.hero__glow{top:-10rem;right:-10%;width:520px;height:520px;background:color-mix(in oklab,var(--accent) 40%,transparent)}
.hero__glow--alt{top:10rem;left:-8rem;width:380px;height:380px;background:color-mix(in oklab,var(--foreground) 4%,transparent)}
.hero__badges{display:flex;flex-wrap:wrap;gap:.75rem;position:relative}
.badge{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .75rem;border-radius:999px;font-size:.75rem;font-weight:500;color:var(--muted-foreground);background:color-mix(in oklab,var(--background) 60%,transparent);border:1px solid var(--border);backdrop-filter:blur(8px)}
.badge__dot{width:.5rem;height:.5rem;background:var(--accent);border-radius:999px;display:inline-block;position:relative}
.badge__dot::before{content:"";position:absolute;inset:0;border-radius:999px;background:var(--accent);opacity:.6;animation:ping 1.6s cubic-bezier(0,0,.2,1) infinite}
@keyframes ping{75%,100%{transform:scale(2);opacity:0}}
.hero__title{margin-top:1.5rem;max-width:60rem}
.hero__title-mark{position:relative;display:inline-block}
.hero__title-mark svg{position:absolute;left:0;bottom:-.5rem;width:100%;height:.75rem;color:var(--accent)}
.hero__row{margin-top:2.5rem;display:grid;gap:2.5rem;align-items:end}
@media(min-width:1024px){.hero__row{grid-template-columns:1.1fr 1fr}}
.hero__lead{max-width:40rem;font-size:1.125rem;color:var(--muted-foreground)}
@media(min-width:640px){.hero__lead{font-size:1.25rem}}
.hero__ctas{display:flex;flex-wrap:wrap;gap:.75rem}
@media(min-width:1024px){.hero__ctas{justify-content:flex-end}}
.hero__stats{margin-top:3rem;display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem 1.5rem;padding:1.5rem;border:1px solid var(--border);border-radius:1rem;background:color-mix(in oklab,var(--card) 40%,transparent);backdrop-filter:blur(8px)}
@media(min-width:640px){.hero__stats{grid-template-columns:repeat(4,1fr);padding:2rem}}
@media(min-width:1024px){.hero__stats{margin-top:4rem}}
.hero__stat-value{font-family:var(--font-display);font-weight:700;font-size:1.875rem;letter-spacing:-.02em}
@media(min-width:640px){.hero__stat-value{font-size:2.25rem}}
.hero__stat-label{margin-top:.25rem;font-size:.85rem;color:var(--muted-foreground)}

/* ---- problem grid ---- */
.problem__grid{margin-top:3.5rem;display:grid;gap:1px;overflow:hidden;border-radius:1.5rem;border:1px solid var(--border);background:var(--border)}
@media(min-width:640px){.problem__grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.problem__grid{grid-template-columns:repeat(4,1fr)}}
.problem__cell{position:relative;background:var(--background);padding:2rem;transition:background .2s}
.problem__cell:hover{background:color-mix(in oklab,var(--muted) 60%,transparent)}
.problem__cell::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--accent);transition:width .5s}
.problem__cell:hover::after{width:100%}
.problem__cell h3{margin-top:2rem;font-size:1.25rem;font-weight:700}
.problem__cell p{margin-top:.75rem;font-size:.875rem;color:var(--muted-foreground);line-height:1.6}

/* ---- services ---- */
.services__grid{margin-top:4rem;display:grid;gap:1.25rem}
@media(min-width:640px){.services__grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.services__grid{grid-template-columns:repeat(4,1fr)}}
.service-card{display:flex;flex-direction:column;height:100%;padding:1.75rem;border:1px solid var(--border);border-radius:1.5rem;background:var(--card);transition:transform .25s,border-color .25s,box-shadow .25s}
.service-card:hover{transform:translateY(-4px);border-color:color-mix(in oklab,var(--foreground) 40%,transparent);box-shadow:0 24px 50px -30px rgba(0,0,0,.2)}
.service-card__head{display:flex;align-items:center;justify-content:space-between}
.service-card__icon{display:grid;place-items:center;width:2.75rem;height:2.75rem;border-radius:.75rem;background:var(--muted);color:var(--foreground);transition:background .2s,color .2s}
.service-card:hover .service-card__icon{background:var(--accent);color:var(--accent-foreground)}
.service-card__num{font-family:var(--font-display);font-size:.75rem;color:var(--muted-foreground)}
.service-card h3{margin-top:1.75rem;font-size:1.25rem;font-weight:700;line-height:1.2}
.service-card p{margin-top:.75rem;font-size:.875rem;color:var(--muted-foreground);line-height:1.55}
.service-card__list{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.5rem;font-size:.75rem;color:var(--muted-foreground)}
.service-card__list li{display:flex;align-items:flex-start;gap:.5rem}
.service-card__list li::before{content:"";width:.25rem;height:.25rem;border-radius:999px;background:color-mix(in oklab,var(--foreground) 40%,transparent);margin-top:.5rem;flex-shrink:0}
.service-card__cta{margin-top:auto;padding-top:1.5rem;display:inline-flex;align-items:center;gap:.4rem;font-size:.875rem;font-weight:600}

/* ---- portfolio ---- */
.portfolio__grid{margin-top:3.5rem;display:grid;gap:1.5rem}
@media(min-width:768px){.portfolio__grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.portfolio__grid{grid-template-columns:repeat(3,1fr)}}
.project-card{display:block;color:inherit}
.project-card__media{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:1rem;border:1px solid var(--border);background:var(--muted)}
.project-card__media img{width:100%;height:100%;object-fit:cover;transition:transform .7s}
.project-card:hover .project-card__media img{transform:scale(1.04)}
.project-card__media::after{content:"";position:absolute;inset:0;background:color-mix(in oklab,var(--foreground) 0%,transparent);transition:background .5s}
.project-card:hover .project-card__media::after{background:color-mix(in oklab,var(--foreground) 40%,transparent)}
.project-card__chip{position:absolute;right:1rem;bottom:1rem;z-index:1;display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;border-radius:999px;background:var(--accent);color:var(--accent-foreground);font-size:.75rem;font-weight:500;opacity:0;transform:translateY(.5rem);transition:.3s}
.project-card:hover .project-card__chip{opacity:1;transform:translateY(0)}
.project-card__meta{margin-top:1.25rem;display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}
.project-card__title{font-family:var(--font-display);font-weight:700;font-size:1.125rem}
.project-card__industry{font-size:.875rem;color:var(--muted-foreground)}
.project-card__result{flex-shrink:0;border:1px solid var(--border);border-radius:999px;padding:.25rem .75rem;font-size:.75rem}

/* ---- why us ---- */
.whyus__grid{display:grid;gap:3.5rem}
@media(min-width:1024px){.whyus__grid{grid-template-columns:5fr 7fr;gap:4rem}}
.whyus__stats{margin-top:2.5rem;display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;padding-top:2rem;border-top:1px solid var(--border)}
.whyus__stat-value{font-family:var(--font-display);font-weight:700;font-size:2.25rem}
.whyus__benefits{display:grid;gap:1.25rem}
@media(min-width:640px){.whyus__benefits{grid-template-columns:repeat(2,1fr)}}
.benefit-card{padding:1.75rem;border:1px solid var(--border);border-radius:1rem;background:var(--card);transition:box-shadow .2s}
.benefit-card:hover{box-shadow:0 20px 50px -20px rgba(0,0,0,.15)}
.benefit-card__icon{display:grid;place-items:center;width:2.75rem;height:2.75rem;border-radius:.75rem;background:var(--muted);font-size:1.1rem}
.benefit-card h3{margin-top:1.5rem;font-size:1.125rem;font-weight:700}
.benefit-card p{margin-top:.5rem;font-size:.875rem;color:var(--muted-foreground);line-height:1.55}

/* ---- process ---- */
.process__grid{position:relative;margin-top:4rem;display:grid;gap:2.5rem}
@media(min-width:1024px){.process__grid{grid-template-columns:repeat(3,1fr);gap:2rem}}
.process__step{position:relative}
@media(min-width:1024px){.process__step{padding-top:3.5rem}}
.process__step::before{content:"";position:absolute;left:0;top:0;width:.875rem;height:.875rem;border-radius:999px;border:4px solid var(--muted);background:var(--foreground);transform:translateY(-50%);display:none}
@media(min-width:1024px){.process__step::before{display:block}}
.process__step-num{font-family:var(--font-display);font-size:.875rem;color:var(--muted-foreground)}
.process__step-line{display:inline-block;flex:1;height:1px;background:var(--border);margin-left:1rem;vertical-align:middle}
.process__step h3{margin-top:1.25rem;font-size:1.5rem;font-weight:700}
.process__step p{margin-top:.75rem;max-width:24rem;font-size:.875rem;color:var(--muted-foreground);line-height:1.6}

/* ---- testimonials ---- */
.testimonials__grid{margin-top:3.5rem;display:grid;gap:1.5rem}
@media(min-width:768px){.testimonials__grid{grid-template-columns:repeat(3,1fr)}}
.testimonial-card{display:flex;flex-direction:column;height:100%;padding:2rem;border:1px solid var(--border);border-radius:1.5rem;background:var(--card);transition:transform .2s}
.testimonial-card:hover{transform:translateY(-4px)}
.stars{color:var(--accent);font-size:.95rem;letter-spacing:.1em}
.testimonial-card blockquote{margin:1.5rem 0 0;font-family:var(--font-display);font-size:1.125rem;font-weight:500;line-height:1.35}
.testimonial-card figcaption{margin-top:auto;padding-top:2rem;display:flex;align-items:center;gap:.75rem}
.testimonial-card figcaption img{width:3rem;height:3rem;border-radius:999px;object-fit:cover}
.testimonial-card figcaption .name{font-size:.875rem;font-weight:600}
.testimonial-card figcaption .role{font-size:.75rem;color:var(--muted-foreground)}

/* ---- faq ---- */
.faq__layout{display:grid;gap:3.5rem}
@media(min-width:1024px){.faq__layout{grid-template-columns:5fr 7fr}}
.faq__list{display:flex;flex-direction:column;border-top:1px solid var(--border)}
.faq__item{border-bottom:1px solid var(--border)}
.faq__item summary{list-style:none;cursor:pointer;padding-block:1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;font-family:var(--font-display);font-weight:600;font-size:1.1rem}
.faq__item summary::-webkit-details-marker{display:none}
.faq__item summary::after{content:"+";font-weight:400;font-size:1.5rem;transition:transform .25s}
.faq__item[open] summary::after{transform:rotate(45deg)}
.faq__item p{padding-bottom:1.5rem;color:var(--muted-foreground);line-height:1.6}

/* ---- final cta ---- */
.final-cta{padding-inline:1.5rem;padding-bottom:6rem}
@media(min-width:1024px){.final-cta{padding-inline:3rem}}
.final-cta__inner{position:relative;overflow:hidden;max-width:var(--container);margin-inline:auto;border-radius:2.5rem;background:var(--ink);color:var(--ink-foreground);padding:5rem 2rem}
@media(min-width:640px){.final-cta__inner{padding:7rem 4rem}}
.final-cta__glow,.final-cta__glow--alt{position:absolute;border-radius:999px;filter:blur(72px);pointer-events:none}
.final-cta__glow{top:-8rem;right:-8rem;width:480px;height:480px;background:color-mix(in oklab,var(--accent) 40%,transparent)}
.final-cta__glow--alt{bottom:-10rem;left:-5rem;width:400px;height:400px;background:color-mix(in oklab,var(--accent) 20%,transparent)}
.final-cta__title{font-family:var(--font-display);font-weight:700;font-size:clamp(2.5rem,5vw,4.5rem);line-height:1.02;letter-spacing:-.03em;margin-top:1rem;max-width:42rem}
.final-cta__lead{margin-top:1.5rem;max-width:34rem;font-size:1.125rem;color:color-mix(in oklab,var(--ink-foreground) 70%,transparent)}
.final-cta__row{margin-top:2.5rem;display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}
.final-cta .btn--outline{border-color:color-mix(in oklab,var(--ink-foreground) 20%,transparent);color:var(--ink-foreground)}
.final-cta .btn--outline:hover{background:var(--ink-foreground);color:var(--ink)}
.final-cta__email{margin-top:2rem;font-size:.875rem;color:color-mix(in oklab,var(--ink-foreground) 50%,transparent)}
.final-cta__email a{text-decoration:underline;color:var(--ink-foreground)}

/* ---- footer ---- */
.site-footer{border-top:1px solid var(--border);padding-block:4rem}
.site-footer__grid{display:grid;gap:3rem}
@media(min-width:1024px){.site-footer__grid{grid-template-columns:6fr 3fr 3fr}}
.site-footer__brand img{height:2.5rem;width:auto}
.site-footer__tagline{margin-top:1rem;max-width:22rem;font-size:.875rem;color:var(--muted-foreground)}
.site-footer__email{display:inline-block;margin-top:2rem;font-family:var(--font-display);font-weight:700;font-size:1.75rem;letter-spacing:-.02em}
.site-footer__email:hover{text-decoration:underline;text-underline-offset:4px}
@media(min-width:1024px){.site-footer__email{font-size:2.25rem}}
.site-footer h4{font-size:.72rem;text-transform:uppercase;letter-spacing:.18em;font-weight:500;color:var(--muted-foreground)}
.site-footer ul{margin-top:1.25rem;display:flex;flex-direction:column;gap:.75rem;font-size:.875rem}
.site-footer ul a{color:color-mix(in oklab,var(--foreground) 80%,transparent)}
.site-footer ul a:hover{color:var(--foreground)}
.site-footer__socials{margin-top:1.25rem;display:flex;gap:.5rem}
.site-footer__socials a{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:999px;border:1px solid var(--border);transition:background .2s,color .2s}
.site-footer__socials a:hover{background:var(--foreground);color:var(--background)}
.site-footer__bottom{margin-top:4rem;padding-top:2rem;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:1rem;font-size:.75rem;color:var(--muted-foreground)}
@media(min-width:640px){.site-footer__bottom{flex-direction:row;justify-content:space-between;align-items:center}}

/* ---- single / archive content ---- */
.page-hero{padding:9rem 0 4rem}
.page-hero p.eyebrow{margin-bottom:1rem}
.entry{padding-block:4rem}
.entry__content{max-width:48rem;margin-inline:auto;font-size:1.05rem;line-height:1.7}
.entry__content h2{margin-top:2.5rem;font-size:1.75rem}
.entry__content h3{margin-top:2rem;font-size:1.35rem}
.entry__content p,.entry__content ul,.entry__content ol{margin-top:1.25rem}
.entry__content ul,.entry__content ol{padding-left:1.25rem;list-style:disc}
.entry__content blockquote{margin:2rem 0;padding-left:1.5rem;border-left:3px solid var(--accent);font-family:var(--font-display);font-size:1.25rem}
.entry__content a{text-decoration:underline;text-underline-offset:3px}
.entry__content img{border-radius:1rem;margin-block:1.5rem}

/* ---- reveal animation ---- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}
.reveal.is-visible{opacity:1;transform:none}

/* ---- forms ---- */
.form-row{display:grid;gap:1rem;margin-bottom:1rem}
@media(min-width:640px){.form-row--2{grid-template-columns:repeat(2,1fr)}}
.form-control,input[type=text],input[type=email],input[type=tel],input[type=url],textarea,select{width:100%;padding:.85rem 1rem;border:1px solid var(--border);border-radius:.75rem;background:var(--card);font:inherit;color:inherit;transition:border-color .2s,box-shadow .2s}
.form-control:focus,input:focus,textarea:focus,select:focus{outline:none;border-color:var(--foreground);box-shadow:0 0 0 3px color-mix(in oklab,var(--foreground) 10%,transparent)}
label{display:block;font-size:.85rem;font-weight:500;margin-bottom:.4rem}

/* ---- accessibility ---- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none}
}
