/*
Theme Name: DP Quality Consulting
Theme URI: https://dpquality.us
Author: DP Quality Consulting
Description: Custom theme for DP Quality Consulting, a pharmaceutical drug product quality and regulatory consulting firm. Built from the approved "Chartwell" design.
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: dpquality
*/

  :root{
    --navy:#0B2A4A; --navy-deep:#081E38; --white:#FFFFFF; --paper:#F6F8FA;
    --slate:#55677A; --slate-soft:#8996A5; --hair:#DCE3EA; --brass:#A8823C; --brass-deep:#8A6A2E;
    --focus:#2E6DA4; --shadow:0 22px 46px -28px rgba(11,42,74,0.4);
    --font-display:'Spectral',ui-serif,Georgia,serif; --font-body:'Public Sans',ui-sans-serif,system-ui,sans-serif;
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --navy:#DCE6F0; --navy-deep:#0B1521; --white:#0F1720; --paper:#131C27;
      --slate:#AEBBC8; --slate-soft:#7A8794; --hair:#28333F; --brass:#D8B571; --brass-deep:#EAC988;
      --focus:#8FB6DE; --shadow:0 22px 46px -28px rgba(0,0,0,0.6);
    }
  }
  :root[data-theme="dark"]{
    --navy:#DCE6F0; --navy-deep:#0B1521; --white:#0F1720; --paper:#131C27;
    --slate:#AEBBC8; --slate-soft:#7A8794; --hair:#28333F; --brass:#D8B571; --brass-deep:#EAC988;
    --focus:#8FB6DE; --shadow:0 22px 46px -28px rgba(0,0,0,0.6);
  }

  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  @media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto;} *{animation-duration:0.001ms !important; transition-duration:0.001ms !important;} }
  body{margin:0;background:var(--white);color:var(--navy);font-family:var(--font-body);line-height:1.6;-webkit-font-smoothing:antialiased;}
  a{color:inherit;}
  .wrap{max-width:1180px;margin:0 auto;padding-inline:clamp(20px,4vw,48px);}
  section{scroll-margin-top:118px;}
  h1,h2,h3{font-family:var(--font-display);font-weight:600;text-wrap:balance;margin:0;color:var(--navy);}
  h1{font-size:clamp(2.2rem,4.6vw,3.3rem);line-height:1.12;}
  h2{font-size:clamp(1.6rem,3vw,2.1rem);line-height:1.2;}
  p{max-width:64ch;}
  .lede{color:var(--slate);font-size:1.05rem;max-width:54ch;}
  .eyebrow{font-size:0.76rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--brass-deep);font-weight:700;}

  .reveal{opacity:0;transform:translateY(14px);transition:opacity .6s ease, transform .6s ease;}
  .reveal.is-visible{opacity:1;transform:none;}

  .util-bar{background:var(--navy-deep);color:#CBD8E4;font-size:0.82rem;}
  .util-row{display:flex;justify-content:space-between;align-items:center;height:38px;gap:16px;}
  .util-row a{text-decoration:none;color:#CBD8E4;}
  .util-row .badge{border:1px solid #35506C;padding:3px 10px;border-radius:99px;font-size:0.72rem;letter-spacing:0.04em;}
  @media (max-width:700px){ .util-row .hide-sm{display:none;} }

  header.site{position:sticky;top:0;z-index:50;background:var(--white);border-bottom:1px solid var(--hair);}
  .nav-row{display:flex;align-items:center;justify-content:space-between;height:80px;gap:20px;}
  .brand{display:flex;align-items:center;gap:13px;}
  .brand-mark{width:40px;height:40px;border-radius:50%;border:2px solid var(--brass);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;color:var(--navy);font-size:1.05rem;}
  .brand .wordmark{font-family:var(--font-display);font-weight:700;font-size:1.12rem;letter-spacing:-0.01em;}
  .brand .wordmark small{display:block;font-family:var(--font-body);font-weight:500;font-size:0.66rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--slate);margin-top:2px;}
  nav.primary{display:flex;align-items:center;gap:clamp(14px,2vw,26px);}
  nav.primary a{font-size:0.92rem;font-weight:600;text-decoration:none;color:var(--navy);}
  nav.primary a:hover, nav.primary a:focus-visible{color:var(--brass-deep);}
  nav.primary a.cta-btn{background:#0B2A4A;color:#fff;padding:12px 20px;border-radius:3px;font-size:0.9rem;border:1px solid #0B2A4A;white-space:nowrap;}
  nav.primary a.cta-btn:hover{filter:brightness(1.2);}
  a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible{outline:2px solid var(--focus);outline-offset:2px;}

  .theme-toggle{width:38px;height:38px;border-radius:50%;border:1px solid var(--hair);background:var(--paper);display:flex;align-items:center;justify-content:center;color:var(--navy);cursor:pointer;flex:0 0 auto;}
  .theme-toggle:hover{border-color:var(--brass);color:var(--brass-deep);}
  .theme-toggle .icon-moon{display:none;}
  .theme-toggle[data-effective="light"] .icon-sun{display:none;}
  .theme-toggle[data-effective="light"] .icon-moon{display:block;}

  .menu-btn{display:none;background:none;border:1px solid var(--hair);border-radius:3px;width:42px;height:42px;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto;}
  .menu-btn span, .menu-btn span::before, .menu-btn span::after{content:"";display:block;width:18px;height:1.5px;background:var(--navy);position:relative;transition:transform .2s ease, opacity .2s ease;}
  .menu-btn span::before{position:absolute;top:-6px;}
  .menu-btn span::after{position:absolute;top:6px;}

  .mobile-drawer{position:fixed;inset:80px 0 0 0;z-index:49;background:var(--white);display:none;flex-direction:column;padding:30px clamp(20px,4vw,48px);gap:22px;border-top:1px solid var(--hair);overflow-y:auto;}
  .mobile-drawer a{font-size:1.2rem;text-decoration:none;color:var(--navy);}
  .mobile-drawer a.cta-btn{background:#0B2A4A;color:#fff;padding:15px 18px;border-radius:3px;text-align:center;font-weight:600;}
  body.menu-open .mobile-drawer{display:flex;}

  @media (max-width:860px){
    .menu-btn{display:flex;}
    nav.primary{display:none;}
    body.menu-open .menu-btn span{transform:rotate(45deg);}
    body.menu-open .menu-btn span::before{transform:rotate(90deg);top:0;}
    body.menu-open .menu-btn span::after{opacity:0;}
  }

  .hero{padding:clamp(44px,6vw,68px) 0 clamp(20px,3vw,32px);background:var(--paper);position:relative;overflow:hidden;}
  .hero::before{
    content:"";position:absolute;right:-120px;top:-120px;width:420px;height:420px;border-radius:50%;
    border:1px solid var(--hair);opacity:0.7;
  }
  .hero::after{
    content:"";position:absolute;right:-40px;top:-40px;width:280px;height:280px;border-radius:50%;
    border:1px solid var(--hair);opacity:0.7;
  }
  .hero-grid{display:grid;grid-template-columns:1.25fr 0.85fr;gap:clamp(28px,5vw,56px);align-items:center;position:relative;}
  .hero h1{margin-top:16px;}
  .hero .lede{margin-top:18px;}
  .hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px;}
  .btn-primary{background:#0B2A4A;color:#fff;text-decoration:none;padding:14px 24px;border-radius:3px;font-weight:600;font-size:0.95rem;border:1px solid #0B2A4A;display:inline-block;transition:transform .15s ease, background .15s ease;}
  .btn-primary:hover{filter:brightness(1.2);transform:translateY(-2px);}
  .btn-ghost{text-decoration:none;color:var(--navy);padding:14px 24px;border:1px solid var(--hair);border-radius:3px;font-size:0.95rem;font-weight:600;display:inline-block;}
  .btn-ghost:hover{border-color:var(--navy);}

  .trust-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px;}
  .trust-row span{font-size:0.78rem;font-weight:600;color:var(--navy);background:var(--white);border:1px solid var(--hair);padding:6px 13px;border-radius:99px;}

  .stat-card{background:var(--white);border:1px solid var(--hair);border-radius:10px;padding:26px;box-shadow:var(--shadow);position:relative;}
  .stat-card::before{content:"";position:absolute;inset:0;border-radius:10px;padding:1px;background:linear-gradient(160deg,var(--brass),transparent 40%);-webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:0.55;}
  .stat-card .stat-row{display:flex;justify-content:space-between;align-items:baseline;padding:14px 0;border-top:1px solid var(--hair);}
  .stat-card .stat-row:first-child{border-top:none;padding-top:0;}
  .stat-num{font-family:var(--font-display);font-weight:700;font-size:1.5rem;color:var(--navy);}
  .stat-label{font-size:0.82rem;color:var(--slate);max-width:16ch;text-align:right;}
  @media (max-width:900px){ .hero-grid{grid-template-columns:1fr;} }

  .start{padding:clamp(20px,3vw,28px) 0 clamp(28px,4vw,40px);background:var(--paper);border-bottom:1px solid var(--hair);}
  .start-grid{display:grid;grid-template-columns:1.1fr 0.9fr;gap:clamp(24px,5vw,56px);align-items:start;}
  .start h2{margin-top:10px;}
  .start-form{display:grid;gap:14px;background:var(--white);border:1px solid var(--hair);border-top:3px solid var(--brass);border-radius:6px;padding:22px;box-shadow:var(--shadow);}
  .confid-note{font-size:0.8rem;color:var(--slate-soft);margin:2px 0 0;}
  @media (max-width:820px){ .start-grid{grid-template-columns:1fr;} }

  select{font:inherit;background:var(--white);border:1px solid var(--hair);border-radius:3px;padding:12px 13px;color:var(--navy);}

  .about{padding:clamp(36px,5vw,56px) 0;}
  .about-grid{display:grid;grid-template-columns:0.5fr 1fr;gap:clamp(24px,5vw,60px);}
  .about-grid .eyebrow{margin-bottom:12px;}
  @media (max-width:780px){ .about-grid{grid-template-columns:1fr;} }

  .serve{padding:clamp(36px,5vw,56px) 0;}
  .serve h2{margin-top:10px;max-width:36ch;}
  .serve-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:28px;}
  .serve-card{border:1px solid var(--hair);border-radius:4px;padding:16px 18px;background:var(--white);font-weight:600;font-size:0.95rem;color:var(--navy);}
  @media (max-width:820px){ .serve-grid{grid-template-columns:1fr 1fr;} }
  @media (max-width:520px){ .serve-grid{grid-template-columns:1fr;} }

  .mission{padding:clamp(28px,4vw,40px) 0;border-top:1px solid var(--hair);}
  .mission-grid{display:grid;grid-template-columns:1.3fr 0.9fr;gap:clamp(24px,5vw,56px);align-items:start;}
  .mission h2{margin-top:10px;font-size:clamp(1.3rem,2.4vw,1.7rem);}
  .values-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
  .values-tags span{font-size:0.82rem;border:1px solid var(--hair);border-radius:99px;padding:7px 14px;color:var(--slate);}
  @media (max-width:820px){ .mission-grid{grid-template-columns:1fr;} }

  .process{padding:clamp(36px,5vw,56px) 0;}
  .process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:36px;}
  .step{border-top:2px solid var(--brass);padding-top:16px;}
  .step .num{font-family:var(--font-display);font-weight:700;color:var(--brass-deep);font-size:0.85rem;}
  .step h3{font-size:1.05rem;margin:8px 0 8px;}
  .step p{color:var(--slate);font-size:0.9rem;max-width:32ch;}
  @media (max-width:880px){ .process-grid{grid-template-columns:1fr 1fr;} }
  @media (max-width:520px){ .process-grid{grid-template-columns:1fr;} }

  .why{padding:clamp(36px,5vw,56px) 0;background:var(--paper);border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);}
  .why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:32px;}
  .why-card{background:var(--white);border:1px solid var(--hair);border-radius:4px;padding:24px;}
  .why-card h3{font-size:1.1rem;margin:0 0 10px;}
  .why-card p{color:var(--slate);font-size:0.94rem;margin:0;}
  .why-card .mark{font-family:var(--font-display);font-weight:700;color:var(--brass-deep);font-size:0.85rem;display:block;margin-bottom:10px;}
  @media (max-width:820px){ .why-grid{grid-template-columns:1fr;} }

  .insights{padding:clamp(36px,5vw,56px) 0;}
  .insights-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:32px;}
  .insight-card{border-top:2px solid var(--hair);padding-top:16px;}
  .insight-card h3{font-family:var(--font-display);font-size:1.05rem;margin:0 0 8px;line-height:1.3;font-weight:600;color:var(--navy);}
  .insight-card p{color:var(--slate);font-size:0.88rem;margin:0;}
  @media (max-width:820px){ .insights-grid{grid-template-columns:1fr;} }

  .services{padding:clamp(36px,5vw,56px) 0;background:var(--paper);border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);}
  .services-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:34px;}
  .svc-panel{background:var(--white);border:1px solid var(--hair);border-top:3px solid var(--brass);padding:26px 24px;border-radius:4px;box-shadow:var(--shadow);transition:transform .2s ease;}
  .svc-panel:hover{transform:translateY(-4px);}
  .svc-panel .svc-icon{width:42px;height:42px;border-radius:50%;background:var(--paper);border:1px solid var(--hair);display:flex;align-items:center;justify-content:center;color:var(--brass-deep);margin-bottom:14px;}
  .svc-panel .svc-icon svg{width:21px;height:21px;}
  .svc-panel .svc-num{font-family:var(--font-display);font-weight:700;color:var(--brass-deep);font-size:0.85rem;letter-spacing:0.04em;}
  .svc-panel h3{font-size:1.15rem;margin:10px 0 8px;}
  .svc-panel p{color:var(--slate);font-size:0.95rem;margin:0;}
  .svc-panel.full{grid-column:1 / -1;}
  @media (max-width:760px){ .services-grid{grid-template-columns:1fr;} .svc-panel.full{grid-column:auto;} }

  .quote-banner{background:var(--navy-deep);color:#EAF0F6;padding:clamp(36px,5vw,56px) 0;position:relative;overflow:hidden;}
  .quote-banner .qmark{position:absolute;left:clamp(8px,3vw,40px);top:-30px;font-family:var(--font-display);font-size:11rem;color:rgba(255,255,255,0.06);line-height:1;pointer-events:none;}
  .quote-banner blockquote{margin:0;font-family:var(--font-display);font-style:italic;font-weight:500;font-size:clamp(1.3rem,2.6vw,1.75rem);line-height:1.4;max-width:44ch;position:relative;}
  .quote-banner cite{display:block;margin-top:20px;font-style:normal;font-size:0.85rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--brass);}

  .contact{padding:clamp(36px,5vw,56px) 0;}
  .contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,64px);}
  .info-list{list-style:none;padding:0;margin:22px 0 0;display:grid;gap:16px;}
  .info-list dt{font-size:0.72rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--slate-soft);font-weight:700;}
  .info-list dd{margin:3px 0 0;font-size:1.02rem;}
  form{display:grid;gap:14px;background:var(--paper);border:1px solid var(--hair);padding:26px;border-radius:8px;}
  .field{display:grid;gap:6px;}
  label{font-size:0.8rem;font-weight:600;color:var(--navy);}
  input,textarea{font:inherit;background:var(--white);border:1px solid var(--hair);border-radius:3px;padding:12px 13px;color:var(--navy);}
  textarea{min-height:110px;resize:vertical;}
  .submit-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:4px;}
  .form-note{font-size:0.82rem;color:var(--slate-soft);display:none;}
  .form-note.show{display:block;}
  @media (max-width:820px){ .contact-grid{grid-template-columns:1fr;} }

  footer{background:var(--navy-deep);color:#B9C7D6;padding:40px 0;}
  .foot-row{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-size:0.84rem;}
  .foot-row nav{display:flex;gap:20px;flex-wrap:wrap;}
  .foot-row a{text-decoration:none;color:#B9C7D6;}
  .foot-row a:hover{color:#fff;}

/* WordPress admin bar offset */
body.admin-bar header.site{top:32px;}
body.admin-bar .mobile-drawer{top:32px;}
@media screen and (max-width:782px){
  body.admin-bar header.site{top:46px;}
  body.admin-bar .mobile-drawer{top:46px;}
}

/* Editable content areas (WYSIWYG output inside custom sections) */
.entry-content > *:first-child{margin-top:0;}
.entry-content ul, .entry-content ol{color:var(--slate);}
.screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap;}

/* Fluent Forms visual alignment with the site design system.
   Selectors are scoped under .fluentform so they reliably beat the
   plugin's own same-specificity rules, which load after this file. */
.contact-form-card{background:var(--paper);border:1px solid var(--hair);padding:26px;border-radius:8px;}
.fluentform form.frm-fluent-form{display:grid;gap:14px;}
.fluentform .ff-el-group{display:grid;gap:6px;margin:0!important;}
.fluentform .ff-el-input--label label{font-size:0.8rem;font-weight:600;color:var(--navy);}
.fluentform .ff-el-form-control{font:inherit;width:100%;box-sizing:border-box;background:var(--white);border:1px solid var(--hair);border-radius:3px;padding:12px 13px;color:var(--navy);}
.fluentform .ff-el-form-control:focus{outline:2px solid var(--focus);outline-offset:1px;}
.fluentform textarea.ff-el-form-control{min-height:110px;resize:vertical;}
.fluentform .ff_submit_btn_wrapper{margin-top:4px;}
.fluentform .ff-btn.ff-btn-submit{background:var(--navy-deep);color:#fff;border:1px solid var(--navy-deep);border-radius:3px;padding:14px 24px;font-weight:600;font-size:0.95rem;cursor:pointer;transition:transform .15s ease, filter .15s ease;}
.fluentform .ff-btn.ff-btn-submit:hover{filter:brightness(1.2);transform:translateY(-2px);}
.fluentform .ff-el-form-control[aria-invalid="true"]{border-color:#b3413a;}
.fluentform .error.text-danger,.fluentform .ff-el-form-control-error{color:#b3413a;font-size:0.82rem;margin-top:4px;}
