/*
Theme Name: Central Park French
Theme URI: https://centralparkfrench.com
Author: Central Park French
Description: A custom one-page WordPress theme for Central Park French — French tutoring, immersion camps, and baking classes for kids and adults, serving the Central Park neighborhood of Denver, CO. Blue and gold Provence-inspired palette, fleur-de-lis section dividers, scroll animations, and parallax effects.
Version: 1.0
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: central-park-french
*/

  :root{
    --blue-deep:#2F5D8A;
    --blue-line:#3E76A8;
    --blue-ink:#16324A;
    --stone:#F7F1DA;
    --stone-soft:#FCF8EA;
    --sunflower:#E0A72A;
    --sunflower-light:#F4C752;
    --lavender:#9B87C4;
    --ink:#1B2A3D;
    --max-w:1160px;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0; background:var(--stone-soft); color:var(--ink);
    font-family:'Work Sans', sans-serif; font-size:16px; line-height:1.6;
  }
  h1,h2,h3,.display{font-family:'Fraunces', serif; color:var(--blue-deep); margin:0;}
  .script{font-family:'Caveat', cursive; color:var(--sunflower);}
  a{color:inherit;}
  img{max-width:100%; display:block;}
  .wrap{max-width:var(--max-w); margin:0 auto; padding:0 24px;}
  .eyebrow{
    font-family:'Work Sans', sans-serif; font-size:0.75rem; letter-spacing:0.18em;
    text-transform:uppercase; color:var(--sunflower); font-weight:700;
    display:flex; align-items:center; gap:8px;
  }
  .eyebrow svg{width:16px; height:16px; flex:none;}
  .icon{width:1em; height:1em; display:inline-block; vertical-align:-0.15em;}

  /* Fleur-de-lis divider */
  .fence{height:34px; width:100%; background-repeat:repeat-x; background-size:48px 26px; background-position:center; opacity:0.9;}
  .fence-dark{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><g fill='%232F5D8A'><path d='m142.581 412.037c-5.156 2.704-5.89 9.807-1.394 13.52 12.045 9.946 31.724 19.937 62.868 21.629 3.865-9.195 5.946-19.178 5.946-29.404v-47.264h-16.311c-7.489 9.763-23.423 26.997-51.109 41.519z'/><path d='m172.545 271.119c3.079-.655 6.269-1.006 9.538-1.006h27.614c-1.443-36.456-7.874-68.283-15.092-97.122-3.648-4.173-12.79-13.753-26.724-22.534-23.987-15.114-50.395-20.943-78.491-17.33-34.927 4.494-67.785 30.589-81.763 64.936-10.006 24.585-10.095 51.267-.688 77.983 2.624 7.452 12.715 8.672 17.084 2.087 33.943-51.163 111.891-56.164 148.522-7.014z'/><path d='m239.909 270.114h32.614c3.156-91.504 36.146-153.471 37.487-204.56 0-26.62-26.457-50.104-46.204-63.167-4.836-3.199-11.07-3.182-15.885.049-19.485 13.078-45.499 36.525-45.499 63.118-.193 25.434 12.734 64.943 20.558 96.418 7.731 30.363 15.421 67.224 16.929 108.142z'/><path d='m369.769 412.111c-27.193-14.322-43.388-31.834-50.979-41.593h-16.358v47.264c0 10.225 2.081 20.209 5.946 29.403 31.063-1.687 50.72-11.63 62.772-21.549 4.504-3.707 3.773-10.81-1.381-13.525z'/><path d='m286.175 470.451c-.168-.284-.33-.571-.48-.866-8.695-15.633-13.464-33.441-13.464-51.803v-47.264h-32.031v47.264c0 18.362-4.77 36.169-13.464 51.802-.152.3-.317.592-.488.88-3.381 5.946-7.333 11.569-11.811 16.778-3.144 3.656-2.433 9.249 1.514 12.001 11.357 7.919 25.37 12.549 39.833 12.749 15.097.199 29.051-4.235 40.794-12.773 3.862-2.807 4.566-8.317 1.447-11.943-4.495-5.221-8.46-10.861-11.85-16.825z'/><path d='m166.158 320.316c0 10.911 8.774 19.756 19.596 19.756h.35.015 139.377c10.823 0 19.596-8.845 19.596-19.756 0-10.911-8.774-19.756-19.596-19.756h-139.741c-10.823-.001-19.597 8.845-19.597 19.756z'/><path d='m504.373 198.09c-13.978-34.347-46.837-60.443-81.763-64.936-28.096-3.613-54.504 2.216-78.491 17.33-13.935 8.78-23.076 18.36-26.724 22.534-7.219 28.839-13.649 60.666-15.092 97.122h27.614c3.27 0 6.459.35 9.538 1.006 36.631-49.15 114.579-44.149 148.522 7.016 4.368 6.584 14.459 5.365 17.083-2.087 9.409-26.718 9.319-53.4-.687-77.985z'/></g></svg>");}
  .fence-light{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><g fill='%23F4C752'><path d='m142.581 412.037c-5.156 2.704-5.89 9.807-1.394 13.52 12.045 9.946 31.724 19.937 62.868 21.629 3.865-9.195 5.946-19.178 5.946-29.404v-47.264h-16.311c-7.489 9.763-23.423 26.997-51.109 41.519z'/><path d='m172.545 271.119c3.079-.655 6.269-1.006 9.538-1.006h27.614c-1.443-36.456-7.874-68.283-15.092-97.122-3.648-4.173-12.79-13.753-26.724-22.534-23.987-15.114-50.395-20.943-78.491-17.33-34.927 4.494-67.785 30.589-81.763 64.936-10.006 24.585-10.095 51.267-.688 77.983 2.624 7.452 12.715 8.672 17.084 2.087 33.943-51.163 111.891-56.164 148.522-7.014z'/><path d='m239.909 270.114h32.614c3.156-91.504 36.146-153.471 37.487-204.56 0-26.62-26.457-50.104-46.204-63.167-4.836-3.199-11.07-3.182-15.885.049-19.485 13.078-45.499 36.525-45.499 63.118-.193 25.434 12.734 64.943 20.558 96.418 7.731 30.363 15.421 67.224 16.929 108.142z'/><path d='m369.769 412.111c-27.193-14.322-43.388-31.834-50.979-41.593h-16.358v47.264c0 10.225 2.081 20.209 5.946 29.403 31.063-1.687 50.72-11.63 62.772-21.549 4.504-3.707 3.773-10.81-1.381-13.525z'/><path d='m286.175 470.451c-.168-.284-.33-.571-.48-.866-8.695-15.633-13.464-33.441-13.464-51.803v-47.264h-32.031v47.264c0 18.362-4.77 36.169-13.464 51.802-.152.3-.317.592-.488.88-3.381 5.946-7.333 11.569-11.811 16.778-3.144 3.656-2.433 9.249 1.514 12.001 11.357 7.919 25.37 12.549 39.833 12.749 15.097.199 29.051-4.235 40.794-12.773 3.862-2.807 4.566-8.317 1.447-11.943-4.495-5.221-8.46-10.861-11.85-16.825z'/><path d='m166.158 320.316c0 10.911 8.774 19.756 19.596 19.756h.35.015 139.377c10.823 0 19.596-8.845 19.596-19.756 0-10.911-8.774-19.756-19.596-19.756h-139.741c-10.823-.001-19.597 8.845-19.597 19.756z'/><path d='m504.373 198.09c-13.978-34.347-46.837-60.443-81.763-64.936-28.096-3.613-54.504 2.216-78.491 17.33-13.935 8.78-23.076 18.36-26.724 22.534-7.219 28.839-13.649 60.666-15.092 97.122h27.614c3.27 0 6.459.35 9.538 1.006 36.631-49.15 114.579-44.149 148.522 7.016 4.368 6.584 14.459 5.365 17.083-2.087 9.409-26.718 9.319-53.4-.687-77.985z'/></g></svg>");}

  /* Nav */
  header{position:sticky; top:0; z-index:50; background:var(--stone-soft); border-bottom:1px solid rgba(47,93,138,0.15);}
  .navbar{display:flex; align-items:center; justify-content:space-between; padding:14px 24px; max-width:var(--max-w); margin:0 auto;}
  .brand{display:flex; align-items:center; gap:10px; text-decoration:none;}
  .brand img{height:44px; width:auto;}
  nav ul{list-style:none; display:flex; gap:26px; margin:0; padding:0;}
  nav a{text-decoration:none; font-size:0.92rem; font-weight:500; color:var(--ink); padding:4px 0;}
  nav a:hover{color:var(--blue-deep);}
  nav a:focus-visible, a:focus-visible, button:focus-visible{outline:2px solid var(--sunflower); outline-offset:3px; border-radius:2px;}
  .nav-cta{background:var(--blue-deep); color:var(--stone) !important; padding:9px 18px; border-radius:3px; font-weight:600 !important;}
  .nav-cta:hover{background:var(--blue-line);}
  .menu-toggle{display:none; background:none; border:none; cursor:pointer; padding:6px;}
  .menu-toggle svg{stroke:var(--blue-deep);}

  /* Hero — photo placeholder background */
  .hero{position:relative; overflow:hidden; min-height:560px; display:flex; align-items:center;}
  .hero-bg{position:absolute; inset:0; z-index:0;}
  .hero-bg img{width:100%; height:100%; object-fit:cover;}
  .hero-bg::after{content:""; position:absolute; inset:0;
    background:linear-gradient(100deg, rgba(22,50,74,0.92) 0%, rgba(22,50,74,0.82) 42%, rgba(47,93,138,0.55) 75%, rgba(47,93,138,0.35) 100%);
  }
  .hero-inner{position:relative; z-index:1; max-width:var(--max-w); margin:0 auto; padding:90px 24px 70px; width:100%;}
  .hero h1{font-size:clamp(2.3rem, 4.8vw, 3.4rem); color:var(--stone); line-height:1.08; font-weight:600; max-width:14ch;}
  .hero h1 em{font-style:italic; color:var(--sunflower-light);}
  .hero .tagline-script{font-size:1.6rem; display:block; margin-top:6px;}
  .hero .lede{margin-top:16px; font-size:1.06rem; max-width:44ch; color:#DCE6ED;}
  .hero-ctas{display:flex; gap:14px; margin-top:28px; flex-wrap:wrap;}
  .btn{display:inline-flex; align-items:center; gap:8px; padding:13px 26px; border-radius:3px; text-decoration:none; font-weight:600; font-size:0.95rem; border:1.5px solid transparent; cursor:pointer;}
  .btn svg{width:18px; height:18px;}
  .btn-primary{background:var(--sunflower-light); color:var(--blue-ink);}
  .btn-primary:hover{background:#f7d685;}
  .btn-ghost{border-color:rgba(247,241,218,0.5); color:var(--stone);}
  .btn-ghost:hover{border-color:var(--stone);}

  /* Trust strip */
  .trust{background:var(--blue-deep); padding:26px 0;}
  .trust-row{display:grid; grid-template-columns:repeat(4,1fr); gap:20px;}
  .trust-item{display:flex; align-items:center; gap:12px; color:var(--stone);}
  .trust-item svg{width:30px; height:30px; flex:none; color:var(--sunflower-light);}
  .trust-item .num{font-family:'Fraunces'; font-size:1.15rem; color:var(--stone); display:block; font-weight:600;}
  .trust-item .label{font-size:0.78rem; color:#C7D2DA;}

  section{padding:76px 0;}
  .section-head{max-width:640px; margin-bottom:44px;}
  .section-head h2{font-size:clamp(1.8rem, 3.2vw, 2.35rem); margin-top:8px;}
  .section-head p{margin-top:12px; color:#47586B; font-size:1.02rem;}
  .section-head.centered{margin-left:auto; margin-right:auto; text-align:center;}

  /* About */
  .about{background:var(--stone-soft);}
  .about-grid{display:grid; grid-template-columns:0.9fr 1.1fr; gap:56px; align-items:center;}
  .about-photo{position:relative; border-radius:6px; overflow:hidden; aspect-ratio:4/5; box-shadow:0 18px 40px rgba(22,50,74,0.18);}
  .about-photo img{width:100%; height:100%; object-fit:cover;}
  .about-photo .tag{
    position:absolute; bottom:14px; left:14px; background:rgba(22,50,74,0.85); color:var(--stone);
    font-size:0.72rem; padding:6px 12px; border-radius:20px; font-weight:600;
  }
  .about h3{font-size:1.5rem; margin-bottom:14px;}
  .about p{color:#3A4A5C; margin-bottom:14px;}
  .credentials{list-style:none; padding:0; margin:22px 0 0; display:grid; grid-template-columns:1fr 1fr; gap:14px;}
  .credentials li{display:flex; gap:10px; align-items:flex-start; font-size:0.92rem; color:var(--blue-deep); font-weight:500;}
  .credentials li svg{width:20px; height:20px; flex:none; color:var(--sunflower); margin-top:1px;}

  /* Services */
  .services{background:var(--stone);}
  .service-grid{display:grid; grid-template-columns:repeat(3, 1fr); gap:26px;}
  .card{background:var(--stone-soft); border:1px solid rgba(47,93,138,0.15); border-radius:8px; overflow:hidden; position:relative; display:flex; flex-direction:column; transition:transform 0.15s ease, box-shadow 0.15s ease;}
  .card:hover{transform:translateY(-3px); box-shadow:0 14px 28px rgba(22,50,74,0.15);}
  .card-photo{position:relative; aspect-ratio:16/10;}
  .card-photo img{width:100%; height:100%; object-fit:cover;}
  .card-photo .icon-badge{
    position:absolute; bottom:-20px; left:20px; width:44px; height:44px; border-radius:50%;
    background:var(--blue-deep); display:flex; align-items:center; justify-content:center;
    box-shadow:0 4px 10px rgba(22,50,74,0.3); border:3px solid var(--stone-soft);
  }
  .card-photo .icon-badge svg{width:22px; height:22px; color:var(--sunflower-light);}
  .card .badge{position:absolute; top:14px; right:14px; background:var(--lavender); color:#fff; font-size:0.65rem; font-weight:700; text-transform:uppercase; letter-spacing:0.05em; padding:4px 9px; border-radius:20px; z-index:2;}
  .card-body{padding:30px 22px 22px;}
  .card h3{font-size:1.12rem; margin-bottom:8px;}
  .card p{font-size:0.92rem; color:#47586B; margin:0 0 14px;}
  .card .meta{margin-top:auto; font-size:0.78rem; color:var(--sunflower); font-weight:700; display:flex; gap:8px; flex-wrap:wrap;}
  .card .meta span{background:rgba(224,167,42,0.14); padding:3px 9px; border-radius:20px;}

  /* Formats */
  .formats{background:var(--blue-deep); color:var(--stone);}
  .formats .section-head p{color:#C7D2DA;}
  .formats .section-head h2{color:var(--stone);}
  .format-row{display:grid; grid-template-columns:repeat(4,1fr); gap:20px;}
  .format-item{border:1px solid rgba(247,241,218,0.25); border-radius:6px; padding:24px 20px; text-align:center;}
  .format-item .icon-circle{width:52px; height:52px; border-radius:50%; background:rgba(244,199,82,0.15); display:flex; align-items:center; justify-content:center; margin:0 auto 14px;}
  .format-item .icon-circle svg{width:26px; height:26px; color:var(--sunflower-light);}
  .format-item h4{font-size:1rem; margin-bottom:6px; color:var(--stone); font-family:'Work Sans'; font-weight:600;}
  .format-item p{font-size:0.85rem; color:#C7D2DA; margin:0;}

  /* Gallery */
  .gallery{background:var(--stone-soft);}
  .gallery-grid{display:grid; grid-template-columns:repeat(4, 1fr); grid-auto-rows:150px; gap:14px;}
  .gallery-grid a{display:block; position:relative; border-radius:6px; overflow:hidden;}
  .gallery-grid img{width:100%; height:100%; object-fit:cover; transition:transform 0.25s ease;}
  .gallery-grid a:hover img{transform:scale(1.05);}
  .gallery-grid .g-wide{grid-column:span 2;}
  .gallery-grid .g-tall{grid-row:span 2;}
  .gallery-cap{position:absolute; left:10px; bottom:8px; color:#fff; font-size:0.72rem; font-weight:600; text-shadow:0 1px 4px rgba(0,0,0,0.6);}
  .gallery-grid a::before{content:""; position:absolute; inset:0; background:linear-gradient(to top, rgba(22,50,74,0.55), transparent 55%); z-index:1;}
  .gallery-cap{z-index:2;}

  /* Testimonials */
  .testimonials{background:var(--stone);}
  .testi-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
  .testi{background:var(--stone-soft); border-radius:8px; padding:24px; border-top:3px solid var(--lavender); position:relative;}
  .testi .stars{display:flex; gap:2px; margin-bottom:12px; color:var(--sunflower);}
  .testi .stars svg{width:16px; height:16px;}
  .testi p{color:var(--ink); font-size:0.96rem;}
  .testi .who{margin-top:16px; display:flex; align-items:center; gap:10px;}
  .testi .who img{width:38px; height:38px; border-radius:50%; object-fit:cover;}
  .testi .who-name{font-size:0.85rem; font-weight:700; color:var(--blue-deep);}
  .testi .who-loc{font-size:0.75rem; color:#5D6E7C;}

  /* Contact */
  .contact{background:var(--stone-soft);}
  .contact-grid{display:grid; grid-template-columns:1fr 1fr; gap:56px;}
  .contact-info h3{font-size:1.3rem; margin-bottom:12px;}
  .contact-info p{color:#3A4A5C;}
  .info-list{list-style:none; padding:0; margin-top:22px; display:flex; flex-direction:column; gap:16px;}
  .info-list li{display:flex; gap:12px; align-items:center; font-size:0.95rem;}
  .info-list .icon-dot{width:38px; height:38px; border-radius:50%; background:rgba(47,93,138,0.1); display:flex; align-items:center; justify-content:center; flex:none;}
  .info-list .icon-dot svg{width:18px; height:18px; color:var(--blue-deep);}
  form{display:flex; flex-direction:column; gap:16px;}
  label{font-size:0.85rem; font-weight:600; color:var(--blue-deep); margin-bottom:6px; display:block;}
  input, select, textarea{width:100%; padding:11px 13px; border:1.5px solid rgba(47,93,138,0.25); border-radius:3px; font-family:'Work Sans'; font-size:0.95rem; background:#fff; color:var(--ink);}
  input:focus, select:focus, textarea:focus{outline:none; border-color:var(--sunflower);}
  textarea{resize:vertical; min-height:100px;}
  .form-note{font-size:0.8rem; color:#5D6E7C; margin-top:-4px;}

  footer{background:var(--blue-ink); color:#B7C2CC; padding:44px 0 26px; text-align:center;}
  footer .brand-row{display:flex; align-items:center; justify-content:center; gap:10px;}
  footer .brand-text{font-family:'Fraunces', serif; font-weight:600; font-size:1.1rem; color:var(--stone); line-height:1.1; text-align:left;}
  footer .brand-text small{display:block; font-family:'Work Sans'; font-weight:500; font-size:0.65rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--sunflower-light);}
  footer .foot-nav{display:flex; justify-content:center; gap:24px; margin:20px 0; flex-wrap:wrap;}
  footer .foot-nav a{color:#D8E0E5; text-decoration:none; font-size:0.9rem;}
  footer .foot-nav a:hover{color:var(--sunflower-light);}
  footer .foot-social{display:flex; justify-content:center; gap:14px; margin-bottom:18px;}
  footer .foot-social a{width:36px; height:36px; border-radius:50%; border:1px solid rgba(247,241,218,0.25); display:flex; align-items:center; justify-content:center;}
  footer .foot-social svg{width:16px; height:16px; color:var(--stone);}
  footer .copyright{font-size:0.78rem; color:#5D6E7C; margin-top:18px;}

  @media (max-width: 900px){
    .hero-inner{padding:70px 24px 50px;}
    .about-grid, .contact-grid{grid-template-columns:1fr;}
    .service-grid{grid-template-columns:repeat(2,1fr);}
    .trust-row{grid-template-columns:repeat(2,1fr); row-gap:20px;}
    .format-row{grid-template-columns:repeat(2,1fr);}
    .testi-grid{grid-template-columns:1fr;}
    .gallery-grid{grid-template-columns:repeat(2,1fr); grid-auto-rows:130px;}
    .credentials{grid-template-columns:1fr;}
    nav ul{position:fixed; top:73px; left:0; right:0; background:var(--stone-soft); flex-direction:column; padding:20px 24px; gap:16px; border-bottom:1px solid rgba(47,93,138,0.15); transform:translateY(-150%); transition:transform 0.2s ease; z-index:40;}
    nav ul.open{transform:translateY(0);}
    .menu-toggle{display:block;}
  }
  @media (max-width: 560px){
    .service-grid, .format-row{grid-template-columns:1fr;}
    .gallery-grid{grid-template-columns:1fr 1fr;}
  }
  @media (prefers-reduced-motion: reduce){html{scroll-behavior:auto;} .card, .gallery-grid img{transition:none;}}

  /* Scroll-reveal animations */
  .reveal{opacity:0; transform:translateY(30px); transition:opacity 0.7s cubic-bezier(.25,.7,.3,1), transform 0.7s cubic-bezier(.25,.7,.3,1);}
  .reveal.reveal-left{transform:translateX(-40px);}
  .reveal.reveal-right{transform:translateX(40px);}
  .reveal.is-visible{opacity:1; transform:none;}

  /* Hero entrance */
  .hero-inner > *{opacity:0; transform:translateY(20px); animation:heroIn 0.8s ease forwards;}
  .hero-inner > p.eyebrow{animation-delay:0.05s;}
  .hero-inner > h1{animation-delay:0.18s;}
  .hero-inner > span.tagline-script{animation-delay:0.32s;}
  .hero-inner > p.lede{animation-delay:0.46s;}
  .hero-inner > div.hero-ctas{animation-delay:0.6s;}
  @keyframes heroIn{to{opacity:1; transform:translateY(0);}}

  /* Header shrink-on-scroll */
  header{transition:box-shadow 0.25s ease, padding 0.25s ease;}
  header.is-scrolled{box-shadow:0 6px 18px rgba(22,50,74,0.12);}

  /* Parallax layers */
  .hero-bg img{will-change:transform;}
  .about-photo img{will-change:transform;}

  /* Animated fleur-de-lis border drift */
  .fence{animation:fenceDrift 14s linear infinite;}
  @keyframes fenceDrift{from{background-position:0 center;} to{background-position:480px center;}}

  /* Gentle float for trust icons and format icons */
  .trust-item svg, .format-item .icon-circle{animation:floatY 4s ease-in-out infinite;}
  .trust-item:nth-child(2) svg, .format-item:nth-child(2) .icon-circle{animation-delay:0.3s;}
  .trust-item:nth-child(3) svg, .format-item:nth-child(3) .icon-circle{animation-delay:0.6s;}
  .trust-item:nth-child(4) svg, .format-item:nth-child(4) .icon-circle{animation-delay:0.9s;}
  @keyframes floatY{0%,100%{transform:translateY(0);} 50%{transform:translateY(-5px);}}

  /* Button micro-interaction */
  .btn{transition:background 0.2s ease, transform 0.2s ease, border-color 0.2s ease;}
  .btn:active{transform:scale(0.97);}
  .btn-primary:hover{transform:translateY(-2px);}

  @media (prefers-reduced-motion: reduce){
    .reveal{opacity:1 !important; transform:none !important; transition:none !important;}
    .hero-inner > *{animation:none !important; opacity:1 !important; transform:none !important;}
    .fence{animation:none !important;}
    .trust-item svg, .format-item .icon-circle{animation:none !important;}
    .btn-primary:hover{transform:none;}
  }
