*{
  margin:0;
  padding:0;
  box-sizing:border-box;
}

:root{
  --bg:#f5f5f7;
  --bg-soft:#ffffff;
  --surface:#ffffff;
  --surface-soft:rgba(255,255,255,0.78);
  --text:#111111;
  --text-soft:rgba(17,17,17,0.72);
  --text-muted:rgba(17,17,17,0.54);
  --line:rgba(17,17,17,0.08);
  --line-strong:rgba(17,17,17,0.12);
  --shadow:0 18px 40px rgba(0,0,0,0.08);
  --shadow-soft:0 8px 24px rgba(0,0,0,0.05);
  --purple:#8d6bcb;
  --purple-strong:#a56cff;
  --hero-text:#f5f5f7;
  --hero-muted:rgba(255,255,255,0.82);
}

html{
  width:100%;
  min-height:100%;
  scroll-behavior:smooth;
}

body{
  width:100%;
  min-height:100%;
  background:var(--bg);
  color:var(--text);
  font-family:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", Arial, sans-serif;
  overflow-x:hidden;
  position:relative;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img{
  max-width:100%;
  display:block;
}

a{
  color:inherit;
  text-decoration:none;
}

button,
input,
select,
textarea{
  font:inherit;
}

.container{
  width:min(1280px, calc(100% - 64px));
  margin:0 auto;
}

/* =========================
   NAV
   ========================= */

.navbar{
  position:absolute;
  top:24px;
  left:50%;
  transform:translateX(-50%);
  width:min(1320px, calc(100% - 60px));
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  z-index:30;
}

.nav-group{
  display:flex;
  align-items:center;
  gap:44px;
}

.nav-left{
  justify-content:flex-end;
  padding-right:42px;
}

.nav-right{
  justify-content:flex-start;
  padding-left:42px;
}

.nav-group a{
  position:relative;
  color:rgba(255,255,255,0.94);
  font-size:16px;
  transition:opacity .2s ease, transform .25s ease, color .25s ease;
}

.nav-group a:hover{
  opacity:.78;
  transform:translateY(-1px);
}

.nav-group a::after{
  content:"";
  position:absolute;
  left:0;
  bottom:-8px;
  width:100%;
  height:1px;
  background:linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.95) 50%, transparent 100%);
  transform:scaleX(0);
  transform-origin:center;
  transition:transform .35s cubic-bezier(.22,.61,.36,1), opacity .35s ease;
  opacity:.8;
}

.nav-group a:hover::after{
  transform:scaleX(1);
}

.nav-logo{
  width:88px;
  height:88px;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  filter:drop-shadow(0 0 10px rgba(140,90,255,0.28));
  animation:logoGlow 6s ease-in-out infinite alternate;
}

.nav-logo img{
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  transition:transform .6s cubic-bezier(.22,.61,.36,1), filter .6s ease;
}

.nav-logo:hover img{
  transform:scale(1.04);
  filter:drop-shadow(0 10px 24px rgba(141,107,203,.18));
}

@keyframes logoGlow{
  0%{
    filter:drop-shadow(0 0 6px rgba(140,90,255,0.18));
  }
  100%{
    filter:drop-shadow(0 0 14px rgba(140,90,255,0.4));
  }
}

/* =========================
   HERO BASE
   ========================= */

.hero,
.page-hero,
.hero-video{
  position:relative;
  min-height:100vh;
  height:100vh;
  background:#000;
  overflow:hidden;
  isolation:isolate;
}

.hero-background{
  position:absolute;
  inset:0;
  background:#000 url("../assets/images/studio-bg.jpg") center center / cover no-repeat;
  filter:brightness(0.28) saturate(0.96);
  transform:scale(1.04);
  z-index:0;
}

.hero-video-bg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  filter:brightness(0.16) contrast(1.04) saturate(0.84);
  transform:scale(1.04);
  z-index:0;
}

.page-hero-bg{
  position:absolute;
  inset:0;
  background-position:center;
  background-size:cover;
  background-repeat:no-repeat;
  filter:brightness(0.2) saturate(0.9);
  transform:scale(1.03);
  z-index:0;
}

.page-hero-studio .page-hero-bg{
  background-image:url("../assets/images/studio-page.jpg");
}

.page-hero-services .page-hero-bg{
  background-image:url("../assets/images/services-page.jpg");
}

.page-hero-portfolio .page-hero-bg{
  background-image:url("../assets/images/portfolio-page.jpg");
}

.page-hero-contact .page-hero-bg{
  background-image:url("../assets/images/contact-page.jpg");
}

.hero-ambient,
.glow,
.grid-light,
.noise{
  display:none !important;
}

.hero-overlay,
.page-hero .hero-overlay{
  position:absolute;
  inset:0;
  z-index:2;
  background:
    linear-gradient(to bottom, rgba(0,0,0,0.12), rgba(0,0,0,0.48)),
    radial-gradient(circle at center, rgba(255,255,255,0.015), rgba(0,0,0,0.24));
}

/* =========================
   HERO CONTENT SYSTEM
   ========================= */

.hero-content,
.page-hero-content{
  position:relative;
  z-index:10;
  min-height:100vh;
  height:100vh;
  width:min(1040px, calc(100% - 48px));
  margin:0 auto;
  padding:0;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  text-align:center;
  transform:translateY(18px);
}

.hero-kicker{
  display:inline-block;
  margin-bottom:18px;
  font-size:13px;
  letter-spacing:.24em;
  color:rgba(255,255,255,0.72);
}

.hero-content h1,
.page-hero-content h1{
  font-weight:800;
  font-style:italic;
  text-transform:uppercase;
  color:var(--hero-text);
  margin-bottom:22px;
}

.hero-content p,
.page-hero-content p{
  font-size:18px;
  line-height:1.58;
  color:var(--hero-muted);
  margin-top:0;
}

/* HOME */

.page-home .hero-content{
  width:min(1040px, calc(100% - 48px));
  transform:translateY(18px);
}

.page-home .hero-content h1{
  max-width:900px;
  font-size:clamp(50px, 5.2vw, 82px);
  line-height:0.95;
  letter-spacing:-0.045em;
}

.page-home .hero-content p{
  max-width:980px;
  margin-bottom:34px;
}

/* STUDIO */

.page-studio .page-hero-content{
  width:min(980px, calc(100% - 48px));
  transform:translateY(4px);
}

.page-studio .page-hero-content h1{
  max-width:860px;
  font-size:clamp(44px, 4.6vw, 72px);
  line-height:0.97;
  letter-spacing:-0.04em;
}

.page-studio .page-hero-content p{
  max-width:920px;
}

/* SERVICES */

.page-services .page-hero-content{
  width:min(1120px, calc(100% - 48px));
  transform:translateY(8px);
}

.page-services .page-hero-content h1{
  max-width:1080px;
  font-size:clamp(42px, 4.5vw, 70px);
  line-height:0.98;
  letter-spacing:-0.038em;
}

.page-services .page-hero-content p{
  max-width:980px;
}

/* PORTFOLIO */

.page-portfolio .page-hero-content{
  width:min(1060px, calc(100% - 48px));
  transform:translateY(10px);
}

.page-portfolio .page-hero-content h1{
  max-width:980px;
  font-size:clamp(42px, 4.5vw, 70px);
  line-height:0.98;
  letter-spacing:-0.038em;
}

.page-portfolio .page-hero-content p{
  max-width:920px;
}

/* CONTACT */

.page-contact .page-hero-content{
  width:min(1040px, calc(100% - 48px));
  transform:translateY(6px);
}

.page-contact .page-hero-content h1{
  max-width:880px;
  font-size:clamp(44px, 4.8vw, 74px);
  line-height:0.96;
  letter-spacing:-0.04em;
  margin-bottom:24px;
}

.page-contact .page-hero-content p{
  max-width:760px;
}

/* CLIPS */

.page-clips .page-hero-content{
  width:min(1100px, calc(100% - 48px));
  transform:translateY(10px);
}

.page-clips .page-hero-content h1{
  max-width:1000px;
  font-size:clamp(48px, 5.4vw, 86px);
  line-height:0.96;
  letter-spacing:-0.046em;
  margin-bottom:24px;
}

.page-clips .page-hero-content p{
  max-width:920px;
  font-size:20px;
}

/* =========================
   CTA
   ========================= */

.hero-actions{
  display:flex;
  gap:16px;
  flex-wrap:wrap;
  justify-content:center;
}

.cta{
  position:relative;
  overflow:hidden;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:220px;
  padding:16px 28px;
  border-radius:999px;
  font-size:16px;
  font-weight:500;
  transition:
    transform .45s cubic-bezier(.22,.61,.36,1),
    opacity .35s ease,
    box-shadow .45s cubic-bezier(.22,.61,.36,1),
    border-color .35s ease,
    background-color .35s ease,
    filter .45s ease;
}

.cta::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(120deg, transparent 0%, rgba(255,255,255,.12) 50%, transparent 100%);
  transform:translateX(-120%);
  transition:transform .9s cubic-bezier(.22,.61,.36,1);
}

.cta:hover{
  transform:translateY(-2px);
}

.cta:hover::before{
  transform:translateX(120%);
}

.cta-primary{
  background:rgba(255,255,255,0.1);
  border:1px solid rgba(255,255,255,0.16);
  color:#fff;
  box-shadow:0 10px 30px rgba(0,0,0,.14);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.cta-primary:hover{
  background:rgba(255,255,255,0.16);
}

.cta-secondary{
  background:rgba(255,255,255,0.03);
  border:1px solid rgba(255,255,255,0.16);
  color:#fff;
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.cta-secondary:hover{
  background:rgba(255,255,255,0.08);
}

.brand-strip{
  position:relative;
  width:100%;
  overflow:hidden;
  background:linear-gradient(90deg, #8d6bcb 0%, #9f79f0 50%, #8d6bcb 100%);
  border-top:1px solid rgba(255,255,255,0.08);
  border-bottom:1px solid rgba(0,0,0,0.08);
  z-index:2;
}

.brand-strip-inner{
  width:100%;
  overflow:hidden;
}

.brand-strip-track{
  display:flex;
  align-items:center;
  width:max-content;
  min-width:max-content;
  will-change:transform;
  animation:brandStripScroll 10s linear infinite;
}

.brand-strip-set{
  display:flex;
  align-items:center;
  flex:0 0 auto;
  gap:54px;
  padding:14px 27px;
  white-space:nowrap;
}

.brand-strip-set span{
  position:relative;
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  color:#ffffff;
  font-size:15px;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  line-height:1;
  white-space:nowrap;
}

.brand-strip-set span:not(:last-child)::after{
  content:"";
  display:inline-block;
  width:6px;
  height:6px;
  margin-left:54px;
  border-radius:999px;
  background:rgba(255,255,255,0.45);
}

@keyframes brandStripScroll{
  from{
    transform:translate3d(0,0,0);
  }
  to{
    transform:translate3d(-50%,0,0);
  }
}

@media (max-width:980px){
  .brand-strip-track{
    animation-duration:8s;
  }

  .brand-strip-set{
    gap:34px;
    padding:12px 17px;
  }

  .brand-strip-set span{
    font-size:13px;
    letter-spacing:.12em;
  }

  .brand-strip-set span:not(:last-child)::after{
    margin-left:34px;
  }
}


/* =========================
   CONTENT BASE
   ========================= */

.page-content,
.home-preview,
.studio-visual-section,
.studio-features-section,
.studio-process-section,
.studio-cta-section{
  position:relative;
  overflow:hidden;
  isolation:isolate;
  background:linear-gradient(180deg, #ffffff 0%, #f5f5f7 100%);
  color:var(--text);
}

.page-content{
  padding:90px 0 110px;
}

.home-preview{
  padding:90px 0 110px;
}

.studio-visual-section{
  padding:0 0 110px;
}

.studio-features-section{
  padding:0 0 110px;
}

.studio-process-section{
  padding:0 0 110px;
}

.studio-cta-section{
  padding:0 0 110px;
}

.page-content::before,
.page-content::after,
.home-preview::before,
.home-preview::after,
.studio-visual-section::before,
.studio-visual-section::after,
.studio-features-section::before,
.studio-features-section::after,
.studio-process-section::before,
.studio-process-section::after,
.studio-cta-section::before,
.studio-cta-section::after{
  display:none !important;
}

.page-content > .container,
.home-preview > .container,
.studio-visual-section > .container,
.studio-features-section > .container,
.studio-process-section > .container,
.studio-cta-section > .container{
  position:relative;
  z-index:1;
}

/* =========================
   GRID / CARDS
   ========================= */

.preview-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:24px;
}

.preview-card{
  border:1px solid var(--line);
  background:var(--surface-soft);
  border-radius:28px;
  padding:32px;
  box-shadow:var(--shadow-soft);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  will-change:transform, box-shadow;
  transition:
    transform .45s cubic-bezier(.22,.61,.36,1),
    opacity .35s ease,
    box-shadow .45s cubic-bezier(.22,.61,.36,1),
    border-color .35s ease,
    background-color .35s ease,
    filter .45s ease;
}

.preview-card:hover{
  transform:translateY(-6px);
  border-color:var(--line-strong);
  box-shadow:var(--shadow);
}

.preview-card span{
  display:inline-block;
  font-size:12px;
  letter-spacing:.18em;
  color:var(--text-muted);
  margin-bottom:18px;
}

.preview-card h2{
  font-size:28px;
  line-height:1.1;
  margin-bottom:16px;
  color:var(--text);
}

.preview-card p{
  color:var(--text-soft);
  line-height:1.6;
  margin-bottom:24px;
}

.preview-card a{
  color:var(--text);
}

.two-col{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:48px;
}

.two-col h2,
.services-list h2,
.contact-layout h2,
.portfolio-tile h2{
  font-size:34px;
  line-height:1.1;
  margin-bottom:16px;
  color:var(--text);
}

.two-col p,
.service-line p,
.contact-layout p,
.portfolio-tile p{
  color:var(--text-soft);
  line-height:1.7;
  font-size:17px;
}

.services-list{
  display:flex;
  flex-direction:column;
  gap:30px;
}

.service-line{
  display:grid;
  grid-template-columns:90px 1fr;
  gap:28px;
  padding:30px 0;
  border-bottom:1px solid var(--line);
  transform-origin:left center;
  transition:
    transform .45s cubic-bezier(.22,.61,.36,1),
    opacity .35s ease,
    box-shadow .45s cubic-bezier(.22,.61,.36,1),
    border-color .35s ease,
    background-color .35s ease,
    filter .45s ease;
}

.service-line:hover{
  transform:translateX(8px);
  border-color:var(--line-strong);
}

.service-line span{
  font-size:28px;
  color:rgba(17,17,17,0.34);
  font-weight:700;
}

.portfolio-grid-page{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:24px;
}

.portfolio-tile{
  min-height:280px;
  border:1px solid var(--line);
  border-radius:28px;
  padding:28px;
  background:var(--surface-soft);
  box-shadow:var(--shadow-soft);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  will-change:transform, box-shadow;
  transition:
    transform .45s cubic-bezier(.22,.61,.36,1),
    opacity .35s ease,
    box-shadow .45s cubic-bezier(.22,.61,.36,1),
    border-color .35s ease,
    background-color .35s ease,
    filter .45s ease;
}

.portfolio-tile:hover{
  transform:translateY(-8px);
  box-shadow:var(--shadow);
  border-color:var(--line-strong);
}

.contact-layout{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:48px;
}

/* =========================
   STUDIO SPECIFIC
   ========================= */

.section-mini-title{
  display:inline-block;
  margin-bottom:16px;
  font-size:12px;
  letter-spacing:.18em;
  color:var(--text-muted);
}

.section-heading{
  margin-bottom:34px;
}

.section-heading h2{
  font-size:clamp(34px, 4vw, 58px);
  line-height:1;
  font-weight:700;
  letter-spacing:-0.04em;
  color:var(--text);
}

.studio-intro-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:56px;
  align-items:start;
}

.studio-intro-left h2{
  font-size:clamp(34px, 4vw, 62px);
  line-height:0.98;
  letter-spacing:-0.05em;
  font-weight:700;
  color:var(--text);
}

.studio-intro-right p{
  font-size:18px;
  line-height:1.7;
  color:var(--text-soft);
  margin-bottom:18px;
}

.studio-visual-grid{
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr;
  gap:22px;
  min-height:520px;
}

.studio-visual-card{
  position:relative;
  min-height:520px;
  border-radius:30px;
  overflow:hidden;
  background-size:cover;
  background-position:center;
  border:1px solid rgba(17,17,17,0.06);
  will-change:transform, box-shadow;
  transition:
    transform .45s cubic-bezier(.22,.61,.36,1),
    opacity .35s ease,
    box-shadow .45s cubic-bezier(.22,.61,.36,1),
    border-color .35s ease,
    background-color .35s ease,
    filter .45s ease;
}

.studio-visual-card::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(to top right, rgba(141,107,203,.10), transparent 45%);
  opacity:0;
  transition:opacity .45s ease;
  pointer-events:none;
}

.studio-visual-card:hover{
  transform:translateY(-10px) scale(1.01);
  box-shadow:var(--shadow);
}

.studio-visual-card:hover::after{
  opacity:1;
}

.studio-card-overlay{
  position:absolute;
  inset:0;
  background:
    linear-gradient(to top, rgba(0,0,0,0.7), rgba(0,0,0,0.08)),
    linear-gradient(to bottom, rgba(0,0,0,0.04), rgba(0,0,0,0.16));
}

.studio-card-content{
  position:absolute;
  left:24px;
  right:24px;
  bottom:24px;
  z-index:2;
  transition:transform .45s cubic-bezier(.22,.61,.36,1), opacity .35s ease;
}

.studio-visual-card:hover .studio-card-content{
  transform:translateY(-4px);
}

.studio-card-content span{
  display:inline-block;
  margin-bottom:8px;
  font-size:12px;
  letter-spacing:.16em;
  color:rgba(255,255,255,0.7);
}

.studio-card-content h3{
  font-size:28px;
  line-height:1.05;
  letter-spacing:-0.03em;
  color:#fff;
}

.studio-features-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:22px;
}

.feature-card{
  background:var(--surface-soft);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border:1px solid var(--line);
  position:relative;
  border-radius:28px;
  padding:32px;
  overflow:hidden;
  will-change:transform, box-shadow;
  box-shadow:var(--shadow-soft);
  transition:
    transform .45s cubic-bezier(.22,.61,.36,1),
    opacity .35s ease,
    box-shadow .45s cubic-bezier(.22,.61,.36,1),
    border-color .35s ease,
    background-color .35s ease,
    filter .45s ease;
}

.feature-card::before{
  content:"";
  position:absolute;
  inset:-1px;
  background:linear-gradient(120deg, transparent, rgba(150,100,255,0.14), transparent);
  opacity:0;
  transition:opacity .4s ease;
  border-radius:inherit;
  filter:blur(10px);
  pointer-events:none;
}

.feature-card:hover{
  transform:translateY(-6px);
  box-shadow:var(--shadow);
}

.feature-card:hover::before{
  opacity:1;
}

.feature-number{
  display:inline-block;
  margin-bottom:18px;
  font-size:28px;
  font-weight:700;
  color:rgba(17,17,17,0.34);
}

.feature-card h3{
  font-size:28px;
  line-height:1.04;
  margin-bottom:14px;
  letter-spacing:-0.03em;
  color:var(--text);
}

.feature-card p{
  color:var(--text-soft);
  line-height:1.7;
  font-size:17px;
}

.process-grid{
  display:grid;
  grid-template-columns:0.9fr 1.1fr;
  gap:56px;
  align-items:start;
}

.process-left h2{
  font-size:clamp(34px, 4vw, 58px);
  line-height:1;
  letter-spacing:-0.04em;
  color:var(--text);
}

.process-step{
  display:grid;
  grid-template-columns:70px 1fr;
  gap:24px;
  padding:24px 0;
  border-bottom:1px solid var(--line);
  transition:
    transform .45s cubic-bezier(.22,.61,.36,1),
    opacity .35s ease,
    box-shadow .45s cubic-bezier(.22,.61,.36,1),
    border-color .35s ease,
    background-color .35s ease,
    filter .45s ease;
}

.process-step:hover{
  transform:translateX(8px);
}

.process-step span{
  font-size:28px;
  font-weight:700;
  color:rgba(17,17,17,0.34);
}

.process-step h3{
  font-size:26px;
  line-height:1.08;
  margin-bottom:10px;
  letter-spacing:-0.03em;
  color:var(--text);
}

.process-step p{
  color:var(--text-soft);
  line-height:1.7;
  font-size:17px;
}

.studio-cta-box{
  display:grid;
  grid-template-columns:1.2fr 0.8fr;
  gap:40px;
  align-items:center;
  padding:38px;
  border:1px solid var(--line);
  background:var(--surface-soft);
  border-radius:32px;
  box-shadow:var(--shadow-soft);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  will-change:transform, box-shadow;
  transition:
    transform .45s cubic-bezier(.22,.61,.36,1),
    opacity .35s ease,
    box-shadow .45s cubic-bezier(.22,.61,.36,1),
    border-color .35s ease,
    background-color .35s ease,
    filter .45s ease;
}

.studio-cta-box:hover{
  transform:translateY(-8px);
  box-shadow:var(--shadow);
  border-color:var(--line-strong);
}

.studio-cta-left h2{
  font-size:clamp(34px, 4vw, 56px);
  line-height:0.98;
  letter-spacing:-0.05em;
  margin-bottom:14px;
  color:var(--text);
}

.studio-cta-left p{
  font-size:18px;
  line-height:1.7;
  color:var(--text-soft);
}

.studio-cta-right{
  display:flex;
  gap:16px;
  flex-wrap:wrap;
  justify-content:flex-end;
}

.studio-cta-section .cta-primary,
.page-content .cta-primary,
.home-preview .cta-primary{
  background:var(--text);
  color:#fff;
  border:1px solid rgba(17,17,17,0.08);
  box-shadow:none;
}

.studio-cta-section .cta-primary:hover,
.page-content .cta-primary:hover,
.home-preview .cta-primary:hover{
  background:#1b1b1d;
}

.studio-cta-section .cta-secondary,
.page-content .cta-secondary,
.home-preview .cta-secondary{
  background:#fff;
  color:var(--text);
  border:1px solid var(--line);
  box-shadow:none;
}

.studio-cta-section .cta-secondary:hover,
.page-content .cta-secondary:hover,
.home-preview .cta-secondary:hover{
  background:#f0f0f2;
}

/* =========================
   RESERVATION
   ========================= */

#service-options .service-option,
#hour-options .hour-option{
  cursor:pointer;
}

#summary-card p{
  margin-bottom:12px;
}

#summary-card p:last-child{
  margin-bottom:0;
}

#summary-card span{
  color:var(--text);
}

#reservation-form{
  display:flex;
  flex-direction:column;
  gap:0;
}

#reservation-form input,
#reservation-form select,
#reservation-form textarea,
.page-contact input[type="date"],
.page-contact select{
  width:100%;
  border:none;
  border-radius:14px;
  padding:14px 16px;
  background:#fff;
  color:var(--text);
  outline:none;
  border:1px solid var(--line);
  transition:border-color .25s ease, background-color .25s ease, box-shadow .25s ease;
}

#reservation-form input::placeholder,
#reservation-form textarea::placeholder{
  color:rgba(17,17,17,0.42);
}

#reservation-form input:focus,
#reservation-form select:focus,
#reservation-form textarea:focus,
.page-contact input[type="date"]:focus,
.page-contact select:focus{
  border-color:rgba(141,107,203,0.55);
  background:#fff;
  box-shadow:0 0 0 4px rgba(141,107,203,0.10);
}

.page-contact label{
  color:var(--text-soft);
  font-size:15px;
}

.page-contact select option{
  color:#111;
}

/* =========================
   GLOBAL LIGHT TRANSITIONS
   ========================= */

a,
button,
.preview-card,
.feature-card,
.portfolio-tile,
.studio-visual-card,
.studio-cta-box,
.service-line,
.process-step{
  transition:
    transform .45s cubic-bezier(.22,.61,.36,1),
    opacity .35s ease,
    box-shadow .45s cubic-bezier(.22,.61,.36,1),
    border-color .35s ease,
    background-color .35s ease,
    filter .45s ease;
}

/* =========================
   FORCE PAGES CLAIRES
   SERVICES + RÉSERVATION
   ========================= */

body.page-services,
body.page-contact{
  background:#f5f5f7 !important;
  color:#111111 !important;
}

body.page-services::before,
body.page-services::after,
body.page-contact::before,
body.page-contact::after{
  display:none !important;
}

body.page-services .brand-strip + .page-content,
body.page-services .page-content,
body.page-services .studio-features-section,
body.page-services .studio-process-section,
body.page-services .studio-cta-section,
body.page-contact .brand-strip + .page-content,
body.page-contact .page-content,
body.page-contact .studio-features-section,
body.page-contact .studio-process-section,
body.page-contact .studio-cta-section{
  background:linear-gradient(180deg, #ffffff 0%, #f5f5f7 100%) !important;
  color:#111111 !important;
}

body.page-services .page-content::before,
body.page-services .page-content::after,
body.page-services .studio-features-section::before,
body.page-services .studio-features-section::after,
body.page-services .studio-process-section::before,
body.page-services .studio-process-section::after,
body.page-services .studio-cta-section::before,
body.page-services .studio-cta-section::after,
body.page-contact .page-content::before,
body.page-contact .page-content::after,
body.page-contact .studio-features-section::before,
body.page-contact .studio-features-section::after,
body.page-contact .studio-process-section::before,
body.page-contact .studio-process-section::after,
body.page-contact .studio-cta-section::before,
body.page-contact .studio-cta-section::after{
  display:none !important;
  content:none !important;
}

body.page-services .section-mini-title,
body.page-contact .section-mini-title{
  color:rgba(17,17,17,0.55) !important;
}

body.page-services .section-heading h2,
body.page-services h2,
body.page-services h3,
body.page-contact .section-heading h2,
body.page-contact h2,
body.page-contact h3{
  color:#111111 !important;
}

body.page-services p,
body.page-contact p,
body.page-services .feature-card p,
body.page-contact .feature-card p,
body.page-services .process-step p,
body.page-contact .process-step p,
body.page-services .studio-cta-left p,
body.page-contact .studio-cta-left p{
  color:rgba(17,17,17,0.72) !important;
}

body.page-services .feature-card,
body.page-services .studio-cta-box,
body.page-contact .feature-card,
body.page-contact .studio-cta-box,
body.page-contact #summary-card{
  background:rgba(255,255,255,0.82) !important;
  border:1px solid rgba(17,17,17,0.08) !important;
  box-shadow:0 12px 30px rgba(0,0,0,0.06) !important;
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}

body.page-services .feature-number,
body.page-contact .feature-number,
body.page-services .process-step span,
body.page-contact .process-step span{
  color:rgba(17,17,17,0.34) !important;
}

body.page-services .cta-primary,
body.page-contact .cta-primary{
  background:#111111 !important;
  color:#ffffff !important;
  border:1px solid rgba(17,17,17,0.08) !important;
  box-shadow:none !important;
}

body.page-services .cta-primary:hover,
body.page-contact .cta-primary:hover{
  background:#1c1c1e !important;
}

body.page-services .cta-secondary,
body.page-contact .cta-secondary{
  background:#ffffff !important;
  color:#111111 !important;
  border:1px solid rgba(17,17,17,0.10) !important;
  box-shadow:none !important;
}

body.page-services .cta-secondary:hover,
body.page-contact .cta-secondary:hover{
  background:#f0f0f2 !important;
}

body.page-contact input,
body.page-contact select,
body.page-contact textarea{
  background:#ffffff !important;
  color:#111111 !important;
  border:1px solid rgba(17,17,17,0.10) !important;
}

body.page-contact input::placeholder,
body.page-contact textarea::placeholder{
  color:rgba(17,17,17,0.42) !important;
}

body.page-contact label{
  color:rgba(17,17,17,0.72) !important;
}

/* =========================
   PAGE LOAD ANIMATIONS
   SANS CLASSES SPECIALES
   ========================= */

.page-home .hero-kicker,
.page-home .hero-content h1,
.page-home .hero-content p,
.page-home .hero-actions,
.page-studio .hero-kicker,
.page-studio .page-hero-content h1,
.page-studio .page-hero-content p,
.page-services .hero-kicker,
.page-services .page-hero-content h1,
.page-services .page-hero-content p,
.page-clips .hero-kicker,
.page-clips .page-hero-content h1,
.page-clips .page-hero-content p,
.page-contact .hero-kicker,
.page-contact .page-hero-content h1,
.page-contact .page-hero-content p,
.page-portfolio .hero-kicker,
.page-portfolio .page-hero-content h1,
.page-portfolio .page-hero-content p{
  opacity:0;
  animation-fill-mode:both;
  animation-timing-function:cubic-bezier(.22,.61,.36,1);
}

.page-home .hero-kicker,
.page-studio .hero-kicker,
.page-services .hero-kicker,
.page-clips .hero-kicker,
.page-contact .hero-kicker,
.page-portfolio .hero-kicker{
  animation:fadeUp .9s .05s both;
}

.page-home .hero-content h1,
.page-studio .page-hero-content h1,
.page-services .page-hero-content h1,
.page-clips .page-hero-content h1,
.page-contact .page-hero-content h1,
.page-portfolio .page-hero-content h1{
  animation:heroTitleIn 1s .12s both;
}

.page-home .hero-content p,
.page-studio .page-hero-content p,
.page-services .page-hero-content p,
.page-clips .page-hero-content p,
.page-contact .page-hero-content p,
.page-portfolio .page-hero-content p{
  animation:fadeUp 1s .22s both;
}

.page-home .hero-actions{
  animation:fadeUp 1s .32s both;
}

.page-home .preview-card,
.page-services .feature-card,
.page-services .studio-cta-box,
.page-services .process-step,
.page-clips .portfolio-tile,
.page-studio .studio-visual-card,
.page-studio .feature-card,
.page-studio .process-step,
.page-studio .studio-cta-box,
.page-contact .feature-card,
.page-contact #summary-card,
.page-contact #reservation-form{
  opacity:0;
  animation:cardIn .95s cubic-bezier(.22,.61,.36,1) both;
}

.page-home .preview-card:nth-child(1),
.page-services .feature-card:nth-child(1),
.page-clips .portfolio-tile:nth-child(1),
.page-studio .studio-visual-card:nth-child(1),
.page-studio .feature-card:nth-child(1),
.page-studio .process-step:nth-child(1),
.page-contact .feature-card:nth-child(1){
  animation-delay:.18s;
}

.page-home .preview-card:nth-child(2),
.page-services .feature-card:nth-child(2),
.page-clips .portfolio-tile:nth-child(2),
.page-studio .studio-visual-card:nth-child(2),
.page-studio .feature-card:nth-child(2),
.page-studio .process-step:nth-child(2),
.page-contact .feature-card:nth-child(2){
  animation-delay:.28s;
}

.page-home .preview-card:nth-child(3),
.page-services .feature-card:nth-child(3),
.page-clips .portfolio-tile:nth-child(3),
.page-studio .studio-visual-card:nth-child(3),
.page-studio .feature-card:nth-child(3),
.page-studio .process-step:nth-child(3),
.page-contact .feature-card:nth-child(3){
  animation-delay:.38s;
}

.page-services .feature-card:nth-child(4),
.page-studio .process-step:nth-child(4),
.page-contact .feature-card:nth-child(4){
  animation-delay:.48s;
}

.page-services .studio-cta-box,
.page-studio .studio-cta-box,
.page-contact #summary-card,
.page-contact #reservation-form{
  animation-delay:.35s;
}

.page-home .hero-content{
  animation:heroFloat 6s ease-in-out 1.2s infinite;
}

.page-home .hero-video-bg,
.page-studio .hero-video-bg{
  animation:videoBreath 10s ease-in-out infinite;
}

@keyframes fadeUp{
  from{
    opacity:0;
    transform:translateY(28px);
  }
  to{
    opacity:1;
    transform:translateY(0);
  }
}

@keyframes heroTitleIn{
  from{
    opacity:0;
    transform:translateY(42px) scale(.98);
    filter:blur(8px);
  }
  to{
    opacity:1;
    transform:translateY(0) scale(1);
    filter:blur(0);
  }
}

@keyframes cardIn{
  from{
    opacity:0;
    transform:translateY(36px) scale(.985);
    filter:blur(8px);
  }
  to{
    opacity:1;
    transform:translateY(0) scale(1);
    filter:blur(0);
  }
}

@keyframes heroFloat{
  0%{
    transform:translateY(18px);
  }
  50%{
    transform:translateY(10px);
  }
  100%{
    transform:translateY(18px);
  }
}

@keyframes videoBreath{
  0%{
    transform:scale(1.04);
  }
  50%{
    transform:scale(1.07);
  }
  100%{
    transform:scale(1.04);
  }
}

/* =========================
   MOBILE
   ========================= */

@media (max-width:980px){
  .navbar{
    grid-template-columns:1fr;
    gap:18px;
    top:18px;
  }

  .nav-logo{
    order:-1;
    margin:0 auto;
    width:72px;
    height:72px;
  }

  .nav-left,
  .nav-right{
    justify-content:center;
    padding:0;
  }

  .nav-group{
    gap:18px;
    flex-wrap:wrap;
    justify-content:center;
  }

  .hero,
  .page-hero,
  .hero-video{
    min-height:100svh;
    height:auto;
  }

  .hero-content,
  .page-hero-content{
    min-height:100svh;
    height:auto;
    width:calc(100% - 32px);
    padding:140px 0 80px;
    max-width:100%;
    transform:none;
  }

  .page-home .hero-content,
  .page-studio .page-hero-content,
  .page-services .page-hero-content,
  .page-portfolio .page-hero-content,
  .page-contact .page-hero-content,
  .page-clips .page-hero-content{
    width:calc(100% - 32px);
    transform:none;
  }

  .hero-content h1,
  .page-hero-content h1,
  .page-home .hero-content h1,
  .page-studio .page-hero-content h1,
  .page-services .page-hero-content h1,
  .page-portfolio .page-hero-content h1,
  .page-contact .page-hero-content h1,
  .page-clips .page-hero-content h1{
    max-width:100%;
    font-size:clamp(34px, 10vw, 58px);
    line-height:0.98;
    letter-spacing:-0.035em;
  }

  .hero-content p,
  .page-hero-content p,
  .page-clips .page-hero-content p{
    max-width:100%;
    font-size:16px;
    line-height:1.55;
  }

  .preview-grid,
  .two-col,
  .portfolio-grid-page,
  .contact-layout,
  .studio-intro-grid,
  .studio-features-grid,
  .process-grid,
  .studio-cta-box,
  .studio-visual-grid{
    grid-template-columns:1fr;
  }

  .studio-visual-grid{
    min-height:auto;
  }

  .studio-visual-card{
    min-height:360px;
  }

  .service-line,
  .process-step{
    grid-template-columns:1fr;
    gap:12px;
  }

  .studio-cta-right{
    justify-content:flex-start;
  }

  .brand-strip-track{
    gap:34px;
    padding:12px 0;
    animation-duration:18s;
  }

  .brand-strip-track span{
    font-size:13px;
    letter-spacing:.12em;
  }

  .page-home .hero-content{
    animation:none;
  }

  .preview-card:hover,
  .feature-card:hover,
  .portfolio-tile:hover,
  .studio-cta-box:hover,
  .studio-visual-card:hover,
  .service-line:hover,
  .process-step:hover,
  .cta:hover{
    transform:none;
  }
}

/* =========================
   ACCESSIBILITY
   ========================= */

@media (prefers-reduced-motion: reduce){
  html{
    scroll-behavior:auto;
  }

  .page-home .hero-kicker,
  .page-home .hero-content h1,
  .page-home .hero-content p,
  .page-home .hero-actions,
  .page-home .preview-card,
  .page-home .hero-content,
  .page-home .hero-video-bg,
  .page-studio .hero-kicker,
  .page-studio .page-hero-content h1,
  .page-studio .page-hero-content p,
  .page-studio .hero-video-bg,
  .page-studio .studio-visual-card,
  .page-studio .feature-card,
  .page-studio .process-step,
  .page-studio .studio-cta-box,
  .page-services .hero-kicker,
  .page-services .page-hero-content h1,
  .page-services .page-hero-content p,
  .page-services .feature-card,
  .page-services .studio-cta-box,
  .page-services .process-step,
  .page-clips .hero-kicker,
  .page-clips .page-hero-content h1,
  .page-clips .page-hero-content p,
  .page-clips .portfolio-tile,
  .page-contact .hero-kicker,
  .page-contact .page-hero-content h1,
  .page-contact .page-hero-content p,
  .page-contact .feature-card,
  .page-contact #summary-card,
  .page-contact #reservation-form{
    animation:none !important;
    transition:none !important;
    opacity:1 !important;
    transform:none !important;
    filter:none !important;
  }
}

.account-actions{
  position:absolute;
  top:28px;
  right:40px;
  display:flex;
  gap:14px;
  z-index:1000;
}

.account-login,
.account-dashboard{
  font-size:14px;
  padding:10px 16px;
  border-radius:999px;
  text-decoration:none;
  font-weight:600;
  transition:all .25s ease;
}

.account-login{
  color:#fff;
  border:1px solid rgba(255,255,255,0.25);
  background:rgba(255,255,255,0.06);
}

.account-login:hover{
  background:rgba(255,255,255,0.12);
}

.account-dashboard{
  background:#8d6bcb;
  color:#fff;
}

.account-dashboard:hover{
  background:#a56cff;
}

.auth-shell{
  padding:90px 0 110px;
  background:linear-gradient(180deg, #ffffff 0%, #f5f5f7 100%);
}

.auth-wrap{
  display:grid;
  grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);
  gap:24px;
  align-items:stretch;
}

.auth-panel,
.auth-card{
  border:1px solid var(--line);
  background:var(--surface-soft);
  border-radius:28px;
  box-shadow:var(--shadow-soft);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}

.auth-panel{
  padding:36px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  min-height:560px;
}

.auth-panel .section-mini-title{
  margin-bottom:18px;
}

.auth-panel h2{
  font-size:clamp(34px, 4vw, 56px);
  line-height:0.98;
  letter-spacing:-0.05em;
  margin-bottom:18px;
  color:var(--text);
}

.auth-panel p{
  color:var(--text-soft);
  font-size:18px;
  line-height:1.7;
  max-width:520px;
}

.auth-points{
  display:flex;
  flex-direction:column;
  gap:14px;
  margin-top:28px;
}

.auth-point{
  padding:18px 20px;
  border-radius:20px;
  background:#fff;
  border:1px solid var(--line);
}

.auth-point strong{
  display:block;
  font-size:16px;
  margin-bottom:6px;
  color:var(--text);
}

.auth-point span{
  color:var(--text-soft);
  line-height:1.55;
  font-size:15px;
}

.auth-card{
  padding:36px;
  min-height:560px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}

.auth-card h1{
  font-size:42px;
  line-height:1;
  letter-spacing:-0.04em;
  margin-bottom:14px;
  color:var(--text);
}

.auth-card p{
  color:var(--text-soft);
  line-height:1.65;
  margin-bottom:28px;
  font-size:17px;
}

.auth-form{
  display:flex;
  flex-direction:column;
  gap:16px;
}

.auth-form input:not([type="checkbox"]){
  width:100%;
  border:none;
  border-radius:14px;
  padding:15px 16px;
  background:#fff;
  color:var(--text);
  outline:none;
  border:1px solid var(--line);
  transition:border-color .25s ease, box-shadow .25s ease, background-color .25s ease;
}

.auth-form input:not([type="checkbox"])::placeholder{
  color:rgba(17,17,17,0.42);
}

.auth-form input:not([type="checkbox"]):focus{
  border-color:rgba(141,107,203,0.55);
  box-shadow:0 0 0 4px rgba(141,107,203,0.10);
}

.marketing-consent{
  display:grid;
  grid-template-columns:18px 1fr;
  align-items:start;
  column-gap:12px;
  margin-top:2px;
  color:var(--text-soft);
  font-size:14px;
  line-height:1.6;
  cursor:pointer;
}

.marketing-consent input[type="checkbox"]{
  width:18px;
  height:18px;
  margin:2px 0 0 0;
  padding:0;
  border:none;
  outline:none;
  box-shadow:none;
  accent-color:#8d6bcb;
}

.marketing-consent span{
  display:block;
  margin:0;
}

.auth-submit{
  margin-top:4px;
  width:100%;
  cursor:pointer;
}

.auth-meta{
  margin-top:18px;
  color:var(--text-soft);
  font-size:15px;
}

.auth-meta a{
  color:var(--purple);
  font-weight:600;
}

.auth-message{
  margin-top:16px;
  padding:14px 16px;
  border-radius:16px;
  display:none;
  font-size:14px;
  line-height:1.5;
  white-space:pre-wrap;
}

.auth-message.error{
  display:block;
  background:rgba(255,59,48,0.08);
  color:#b42318;
  border:1px solid rgba(255,59,48,0.16);
}

.auth-message.success{
  display:block;
  background:rgba(52,199,89,0.08);
  color:#18794e;
  border:1px solid rgba(52,199,89,0.16);
}

@media (max-width:980px){
  .auth-wrap{
    grid-template-columns:1fr;
  }

  .auth-panel,
  .auth-card{
    min-height:auto;
  }

  .auth-panel,
  .auth-card{
    padding:28px;
  }

  .auth-card h1{
    font-size:36px;
  }

  .auth-panel h2{
    font-size:clamp(30px, 8vw, 46px);
  }
}

@media (max-width:640px){
  .auth-shell{
    padding:72px 0 90px;
  }

  .auth-panel,
  .auth-card{
    border-radius:22px;
    padding:22px;
  }

  .auth-card h1{
    font-size:32px;
  }

  .auth-panel p,
  .auth-card p{
    font-size:16px;
  }

  .auth-form{
    gap:14px;
  }

  .auth-form input:not([type="checkbox"]){
    padding:14px 14px;
  }

  .marketing-consent{
    grid-template-columns:18px 1fr;
    column-gap:10px;
    font-size:13px;
  }

  .auth-meta{
    font-size:14px;
  }
}

.page-hero-services .page-hero-content .hero-kicker{
  color: rgba(255,255,255,0.78) !important;
}

.page-hero-services .page-hero-content h1{
  color: #ffffff !important;
}

.page-hero-services .page-hero-content p{
  color: rgba(255,255,255,0.78) !important;
}

.page-hero-contact .page-hero-content .hero-kicker,
.page-hero-services .page-hero-content .hero-kicker{
  color: rgba(255,255,255,0.78) !important;
}

.page-hero-contact .page-hero-content h1,
.page-hero-services .page-hero-content h1{
  color: #ffffff !important;
}

.page-hero-contact .page-hero-content p,
.page-hero-services .page-hero-content p{
  color: rgba(255,255,255,0.78) !important;
}

.resend-feedback{
  display:none;
  margin-top:10px;
  font-size:13px;
  line-height:1.5;
  color:var(--text-soft);
}

.resend-feedback.show{
  display:block;
}

.resend-feedback.success{
  color:#18794e;
}

.resend-feedback.error{
  color:#b42318;
}

.resend-countdown{
  margin-bottom:12px;
  font-size:14px;
  line-height:1.5;
  color:var(--text-soft);
}

.resend-countdown strong{
  color:var(--text);
}

.register-resend-zone{
  margin-top:18px;
  display:flex;
  flex-direction:column;
  gap:12px;
}

.seo-bottom{
  padding:40px 0 60px;
  font-size:12px;
  color:rgba(255,255,255,0.45);
  text-align:center;
}

.seo-bottom h2{
  font-size:14px;
  margin-bottom:8px;
  font-weight:500;
  color:rgba(255,255,255,0.55);
}

.seo-bottom p{
  max-width:700px;
  margin:0 auto 6px;
  line-height:1.6;
}

.navbar{
  position:relative;
}

/* bloc réseaux */
.nav-social{
  position:absolute;
  left:40px;
  top:50%;
  transform:translateY(-50%);
  display:flex;
  gap:14px;
  z-index:50;
}

/* cadre identique pour chaque icône */
.nav-social a{
  width:32px;
  height:32px;
  display:flex;
  align-items:center;
  justify-content:center;
}

/* icônes */
.nav-social img{
  width:24px;
  height:24px;
  object-fit:contain;
  transition:transform .25s ease, filter .25s ease, opacity .25s ease;
}

/* hover */
.nav-social a:hover img{
  transform:scale(1.15);
  filter:
    drop-shadow(0 0 6px rgba(141,107,203,0.6))
    drop-shadow(0 0 14px rgba(141,107,203,0.4));
}

