/* Shared stylesheet moved out of inline <style> blocks so browsers cache it.
   Used by: /about/, /adus/camas-wa/, /adus/, /adus/lake-oswego-or/, /adus/portland-or/, /adus/vancouver-wa/, /bathrooms/camas-wa/, /bathrooms/, /bathrooms/lake-oswego-or/, /bathrooms/portland-or/, /bathrooms/vancouver-wa/, /contact/, /exterior-remodeling/camas-wa/, /exterior-remodeling/, /exterior-remodeling/lake-oswego-or/, /exterior-remodeling/portland-or/, /exterior-remodeling/vancouver-wa/, /full-home/camas-wa/, /full-home/, /full-home/lake-oswego-or/, /full-home/portland-or/, /full-home/vancouver-wa/, /home-additions/camas-wa/, /home-additions/, /home-additions/lake-oswego-or/, /home-additions/portland-or/, /home-additions/vancouver-wa/, /interiors/camas-wa/, /interiors/, /interiors/lake-oswego-or/, /interiors/portland-or/, /interiors/vancouver-wa/, /kitchens/camas-wa/, /kitchens/, /kitchens/lake-oswego-or/, /kitchens/portland-or/, /kitchens/vancouver-wa/, /services/, /shower-remodeling/camas-wa/, /shower-remodeling/, /shower-remodeling/lake-oswego-or/, /shower-remodeling/portland-or/, /shower-remodeling/vancouver-wa/ */

  .promo-overlay { position:fixed; inset:0; z-index:4000; display:flex; align-items:center; justify-content:center; padding:24px;
    background:rgba(10,8,6,0.72); opacity:0; visibility:hidden; transition:opacity .35s ease, visibility .35s ease; }
  .promo-overlay.open { opacity:1; visibility:visible; }
  .promo-modal { position:relative; width:100%; max-width:960px; display:grid; grid-template-columns:1fr 1fr;
    background:var(--cream); border-radius:14px; overflow:hidden; box-shadow:0 40px 120px rgba(0,0,0,0.55);
    transform:translateY(16px) scale(.98); transition:transform .35s var(--ease-out-expo); }
  .promo-overlay.open .promo-modal { transform:none; }
  .promo-figure { position:relative; min-height:380px; background:#111; }
  .promo-figure img { width:100%; height:100%; object-fit:cover; display:block; }
  .promo-body { position:relative; padding:40px 44px; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; }
  .promo-brand { position:absolute; top:34px; left:44px; display:flex; align-items:center; gap:10px; margin:0; }
  .promo-logo-img { height:30px; width:auto; display:block; }
  .promo-brand-mark span { color:var(--red); }
  .promo-eyebrow { font-family:var(--sans); font-size:14px; font-weight:600; letter-spacing:0.14em; text-transform:uppercase; color:var(--stone-lt); margin:0 0 2px; }
  .promo-amount { font-family:'Roslindale','Poppins',serif; font-weight:700; font-size:clamp(4rem,9vw,6.5rem); line-height:0.95; color:var(--charcoal); letter-spacing:-0.02em; }
  .promo-amount .promo-cur { color:var(--charcoal); margin-right:0.1em; }
  .promo-sub { font-family:var(--sans); font-size:15px; color:var(--stone); margin:6px 0 26px; }
  .promo-call { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; padding:18px 20px;
    background:var(--red); color:#fff; font-family:var(--sans); font-weight:700; font-size:16px; letter-spacing:0.02em;
    text-transform:uppercase; text-decoration:none; border-radius:8px; transition:background .2s ease, transform .2s ease; }
  .promo-call:hover { background:#C02020; transform:translateY(-1px); }
  .promo-decline { background:none; border:none; cursor:pointer; margin-top:16px; font-family:var(--sans); font-size:14px; color:var(--stone-lt); text-decoration:underline; text-underline-offset:3px; }
  .promo-decline:hover { color:var(--charcoal); }
  .promo-terms { font-family:var(--sans); font-size:11px; color:var(--stone-lt); margin-top:22px; line-height:1.4; }
  .promo-close { position:absolute; top:10px; right:14px; z-index:2; width:40px; height:40px; border:none; cursor:pointer;
    background:none; color:var(--charcoal); font-size:34px; line-height:1; display:none; align-items:center; justify-content:center;
    opacity:0.85; transition:opacity .2s ease, transform .2s ease; }
  .promo-close:hover { opacity:1; transform:scale(1.08); }
  @media(max-width:760px){
    .promo-modal { grid-template-columns:1fr; max-width:420px; }
    .promo-figure { display:none; }
    .promo-body { padding:30px 28px 32px; }
    /* Un-pin the logo so it stacks ABOVE the text instead of overlapping it */
    .promo-brand { position:static; align-self:center; justify-content:center; margin:0 0 20px; }
    .promo-logo-img { height:26px; }
    .promo-eyebrow { font-size:13px; }
    .promo-sub { margin-bottom:22px; }
    .promo-close { top:8px; right:8px; }
  }
  .promo-badge { position:fixed; right:24px; bottom:24px; z-index:3500; display:inline-flex; align-items:center; gap:8px;
    padding:10px 16px; background:var(--red); color:#fff; border:none; cursor:pointer; border-radius:8px;
    font-family:var(--sans); font-weight:700; font-size:13px; letter-spacing:0.04em; text-transform:uppercase;
    box-shadow:0 8px 22px rgba(224,48,48,0.40); transition:background .2s ease, transform .2s ease, box-shadow .2s ease;
    animation:promoBadgeFloat 2.6s ease-in-out infinite; }
  .promo-badge:hover { background:#C02020; transform:translateY(-4px); box-shadow:0 20px 40px rgba(224,48,48,0.55); animation-play-state:paused; }
  .promo-badge.promo-badge--at-footer { opacity:0; visibility:hidden; pointer-events:none; transform:translateY(24px); animation:none; transition:opacity .3s ease, transform .3s ease, visibility .3s ease; }
  .promo-badge svg { width:16px; height:16px; }
  @keyframes promoBadgeFloat {
    0%,100% { transform:translateY(0); box-shadow:0 8px 22px rgba(224,48,48,0.40); }
    50%     { transform:translateY(-6px); box-shadow:0 18px 38px rgba(224,48,48,0.55); }
  }
  @media (prefers-reduced-motion: reduce) { .promo-badge { animation:none; } }
  /* Hide the floating badge while the multi-step quote overlay is open
     (the badge's z-index sits above the overlay, so it must be hidden) */
  body:has(#msOverlay.open) .promo-badge { display:none !important; }
  body:has(.mobile-menu.open) .promo-badge { display:none !important; }
  @media(max-width:560px){ .promo-badge { right:14px; bottom:14px; padding:12px 18px; font-size:13px; } }
  /* Mobile: Save $2500 becomes a vertical sticky tab pinned to the right edge, vertically centered */
  @media(max-width:960px){
    .promo-badge {
      top:50%; bottom:auto !important; right:0 !important; left:auto;
      transform:translateY(-50%) rotate(180deg);
      writing-mode:vertical-rl;
      border-radius:10px 0 0 10px;
      padding:16px 9px !important;
      gap:7px;
      font-size:13px !important;
      animation:none;
    }
    .promo-badge svg { transform:rotate(90deg); }
    .promo-badge:hover { transform:translateY(-50%) rotate(180deg); background:#C02020; }
    .promo-badge.promo-badge--at-footer { transform:translateY(-50%) rotate(180deg) translateX(120%); }
    /* Hide the tab while the step form is on screen */
    .promo-badge.promo-badge--on-stepform { opacity:0; visibility:hidden; pointer-events:none; transform:translateY(-50%) rotate(180deg) translateX(120%); }
  }

  /* Mobile sticky bottom CTA bar (Figma node 1007:7095) */
  .mobile-cta-bar { display:none; }
  @media(max-width:960px){
    .mobile-cta-bar {
      position:fixed; left:0; right:0; bottom:0; z-index:3450;
      display:flex; gap:16px; padding:16px;
      background:rgba(15,15,15,0.7);
      -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px);
      transform:translateY(110%); transition:transform .35s ease;
      will-change:transform;
    }
    .mobile-cta-bar.mcb-show { transform:translateY(0); }
    /* When the burger menu is open, always show the CTA bar (even on hero) so the open-menu view matches the post-scroll state. */
    body:has(.mobile-menu.open) .mobile-cta-bar { transform:translateY(0); }
    /* Hidden while the quote form overlay is open */
    .mobile-cta-bar.mcb-form-open { transform:translateY(110%); }
    /* Robust: hide the bottom CTA bar whenever the quote-form overlay is open (JS-independent, wins over all other rules) */
    body:has(#msOverlay.open) .mobile-cta-bar { transform:translateY(110%) !important; }
    .mcb-btn {
      flex:1; height:44px;
      display:inline-flex; align-items:center; justify-content:center;
      font-family:var(--sans); font-weight:700; font-size:12px;
      letter-spacing:0.52px; text-transform:uppercase; color:#fff;
      border-radius:0; white-space:nowrap; transition:opacity .2s ease, background .2s ease;
    }
    .mcb-estimate { background:var(--red); }
    .mcb-estimate:active { background:#C02020; }
    .mcb-call { border:1px solid #656565; background:transparent; }
    .mcb-call:active { background:rgba(255,255,255,0.08); }
    /* keep page content clear of the fixed bar */
    body { padding-bottom:76px; }
  }
