/* ===================================================================
   PracticeRank enhancement layer v2 — modernizes the cloned Elementor
   site + restores interactivity broken by static export. Brand preserved.
   =================================================================== */
:root{--pr-gold:#c18d15;--pr-gold-bright:#ffb400;--pr-navy:#27314f;--pr-charcoal:#32373c;--pr-ease:cubic-bezier(.22,1,.36,1);}

/* ---- global polish & fixes ---- */
html{scroll-behavior:smooth;}
*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
body{overflow-x:hidden;text-rendering:optimizeLegibility;}
img,video,svg,iframe{max-width:100%;height:auto;}
a,button,.elementor-button,input,select,textarea{transition:color .2s var(--pr-ease),background-color .25s var(--pr-ease),border-color .2s var(--pr-ease),box-shadow .25s var(--pr-ease),transform .2s var(--pr-ease)!important;}
a:focus-visible,button:focus-visible,.elementor-button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--pr-gold) 60%,transparent);outline-offset:2px;}
.elementor-button,button[type=submit],.wp-block-button__link{border-radius:10px!important;box-shadow:0 1px 2px rgba(0,0,0,.08);}
.elementor-button:hover,button[type=submit]:hover{transform:translateY(-2px);box-shadow:0 8px 22px color-mix(in srgb,var(--pr-gold) 35%,transparent);}
h1,h2,h3,.elementor-heading-title{line-height:1.18;letter-spacing:-.01em;}
p,li{line-height:1.7;}
header.scrolled,.elementor-sticky--effects{box-shadow:0 4px 24px rgba(0,0,0,.10)!important;}

/* logo is clickable */
a[href="/"] img, .site-logo img, .elementor-widget-theme-site-logo img{cursor:pointer;}

/* ===== working nav dropdowns (Elementor nav menu, static export) =====
   CLICK-based (enhance.js toggles .pr-open) — robust, no hover-gap chasing.
   Elementor's own reveal JS doesn't run in a static export. */
.elementor-nav-menu--main .menu-item-has-children{position:relative;}
.elementor-nav-menu--main .menu-item-has-children > .sub-menu,
.elementor-nav-menu--main .menu-item-has-children > .elementor-nav-menu--dropdown{
  display:none!important;position:absolute!important;top:100%;left:0;min-width:248px;background:#fff;list-style:none;margin:0;padding:8px 0;
  box-shadow:0 18px 44px rgba(16,24,40,.20);border-radius:12px;border-top:3px solid var(--pr-gold);z-index:99999;}
.elementor-nav-menu--main .menu-item-has-children.pr-open > .sub-menu{display:block!important;animation:prMega .16s ease;}
@keyframes prMega{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.elementor-nav-menu--main .sub-menu .menu-item{display:block!important;float:none!important;width:auto!important;}
.elementor-nav-menu--main .sub-menu .menu-item a{display:block!important;padding:9px 20px!important;white-space:nowrap;color:var(--pr-charcoal)!important;}
.elementor-nav-menu--main .sub-menu .menu-item a:hover{background:color-mix(in srgb,var(--pr-gold) 12%,transparent);color:var(--pr-gold)!important;}
/* nested sub-sub-menus open to the side, also click-toggled */
.elementor-nav-menu--main .sub-menu .menu-item-has-children > .sub-menu{top:-8px;left:100%;}
.elementor-nav-menu--main .menu-item-has-children > a{cursor:pointer;}

/* ===== modern hero (cloned .page-banner) =====
   Keyed on .page-banner (the original markup) NOT the JS-added .pr-hero, so the
   modern hero renders on FIRST PAINT with no flash of the old boxy hero/form. */
.pr-hide{display:none!important;}
.page-banner{position:relative;display:flex;align-items:center;min-height:clamp(400px,50vh,540px);background-size:cover!important;background-position:center!important;overflow:hidden;}
.page-banner::before{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(18,24,44,.93) 0%,rgba(18,24,44,.74) 40%,rgba(18,24,44,.32) 100%);z-index:1;}
.page-banner > .container{position:relative;z-index:2;}
.page-banner .attorneyimage{display:none!important;}
/* hide the dead inline form column on first paint; let the text column run full width */
.page-banner [class*="col-sm-4"]{display:none!important;}
.page-banner [class*="col-sm-8"]{width:100%!important;float:none!important;}
.page-banner .banner-content{margin:0!important;padding:0!important;width:auto!important;text-align:left!important;display:block!important;}
.page-banner .banner-content label,.page-banner .banner-content h1,.page-banner .banner-content h2{
  background:none!important;box-shadow:none!important;text-shadow:0 2px 20px rgba(0,0,0,.5)!important;padding:0!important;margin:0 0 .4rem 0!important;color:#fff!important;display:block!important;border:0!important;}
.page-banner .banner-content label{font:700 14px/1.2 'Inter',system-ui,sans-serif!important;text-transform:uppercase!important;letter-spacing:.16em!important;color:var(--pr-gold-bright)!important;}
.page-banner .banner-content h1,.page-banner .banner-content h2{font:800 clamp(33px,4.8vw,56px)/1.05 'Inter',system-ui,sans-serif!important;letter-spacing:-.02em!important;max-width:16ch;}
.pr-hero-cta{display:flex;align-items:center;gap:26px;margin-top:32px;flex-wrap:wrap;}
.pr-cta-btn{background:linear-gradient(135deg,#dcab27,#c18d15);color:#15203a;font:800 15px/1 'Inter',sans-serif;text-transform:uppercase;letter-spacing:.045em;border:0;border-radius:12px;padding:18px 32px;cursor:pointer;box-shadow:0 14px 34px rgba(193,141,21,.40);}
.pr-cta-btn:hover{transform:translateY(-3px);box-shadow:0 22px 46px rgba(193,141,21,.55);}
.pr-cta-call{display:flex;flex-direction:column;color:#fff;text-decoration:none;line-height:1.1;}
.pr-cta-call span{font:600 11px/1 'Inter';text-transform:uppercase;letter-spacing:.1em;color:var(--pr-gold-bright);margin-bottom:4px;}
.pr-cta-call strong{font:800 24px/1 'Inter';}

/* The "Personal Injury Lawyers" box (practice-areas) has white text over a theme
   background IMAGE with no color fallback — if that image is missing it renders
   white-on-white (invisible). Give it a navy fallback so it's always readable. */
.peronalinjury-lawer{background-color:#243257;}

/* ===== service-page enrichment (image + text break-ups, varied per page) ===== */
.pr-enriched > p { font-size: 16.5px; line-height: 1.8; color: #3a4250; }
.pr-lead { font-size: 20px !important; line-height: 1.6 !important; color: #232c4a !important; font-weight: 500; }
/* category figure — floats so the wall of text wraps around it */
.pr-figure { margin: 6px 0 22px; max-width: 46%; }
.pr-figure img { width: 100%; border-radius: 14px; box-shadow: 0 18px 44px rgba(16,24,40,.16); display: block; aspect-ratio: 3/2; object-fit: cover; }
.pr-figure--right { float: right; margin-left: 30px; }
.pr-figure--left  { float: left;  margin-right: 30px; }
/* heading accent flavors (3 variants for variety) */
.pr-enriched h2, .pr-enriched h3 { position: relative; color: #1a2238; font-weight: 800; letter-spacing: -.01em; margin-top: 1.6em; }
.pr-acc-0 h2, .pr-acc-0 h3 { padding-left: 16px; border-left: 4px solid #c18d15; }
.pr-acc-1 h2::after, .pr-acc-1 h3::after { content: ""; display: block; width: 54px; height: 3px; background: #c18d15; border-radius: 2px; margin-top: 12px; }
.pr-acc-2 h2, .pr-acc-2 h3 { }
.pr-acc-2 h2 > :first-child { }
.pr-acc-2 h2, .pr-acc-2 h3 { color: #1a2238; }
.pr-acc-2 h2 span, .pr-acc-2 h3 span { color: #c18d15; }
/* mid-content callout */
.pr-inline-cta {
  clear: both; display: flex; align-items: center; justify-content: space-between; gap: 22px; flex-wrap: wrap;
  background: linear-gradient(135deg, #f7f4ec, #fdfbf4); border: 1px solid #ece3cf;
  border-left: 4px solid #c18d15; border-radius: 14px; padding: 22px 26px; margin: 30px 0;
}
.pr-inline-cta strong { display: block; font: 800 18px/1.3 'Inter', sans-serif; color: #1a2238; }
.pr-inline-cta span { display: block; font: 400 14.5px/1.5 'Inter', sans-serif; color: #56607a; margin-top: 4px; }
.pr-inline-cta .pr-cta-btn { flex-shrink: 0; }
@media (max-width: 680px) {
  .pr-figure { float: none !important; max-width: 100%; margin: 18px 0 24px !important; }
  .pr-inline-cta { flex-direction: column; align-items: flex-start; }
}

/* ===== Google-review social proof ===== */
.pr-rev-stars{color:#ffc94d;letter-spacing:2px;font-size:16px;line-height:1;white-space:nowrap;}
.pr-rev-badge{display:flex;align-items:center;gap:11px;margin-top:20px;}
.pr-rev-badge .pr-rev-txt{color:#e7eaf2;font:500 14px/1 'Inter',sans-serif;}
.pr-rev-badge .pr-rev-txt strong{color:#fff;font-weight:800;}
.pr-rev-badge .fa-google{color:#fff;margin:0 1px 0 3px;}
/* pre-footer conversion band */
/* clear:both + full width — the band is appended after the clone's float:left
   content, so without clearing it sits beside a float (off-screen) and overflows. */
.pr-rev-band{clear:both;width:100%;box-sizing:border-box;background:linear-gradient(135deg,#161d33,#243057);padding:30px 24px;border-top:3px solid var(--pr-gold);}
.pr-rev-band-in{max-width:1120px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;}
.pr-rev-band-rate{display:flex;align-items:center;gap:13px;}
.pr-rev-band-rate .pr-rev-stars{font-size:22px;}
.pr-rev-band-rate span{color:#cdd4e6;font:500 15px/1.3 'Inter',sans-serif;}
.pr-rev-band-rate strong{color:#fff;font-weight:800;}
.pr-rev-band-rate .fa-google{color:#fff;margin:0 1px;}
.pr-rev-band-cta{display:flex;align-items:center;gap:20px;flex-wrap:wrap;}
.pr-rev-band-h{color:#fff;font:700 17px/1.3 'Inter',sans-serif;}
@media(max-width:720px){.pr-rev-band-in{flex-direction:column;align-items:flex-start;gap:18px;}}

/* ===== consultation modal ===== */
.pr-modal{position:fixed;inset:0;z-index:100001;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(12,16,28,.62);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;visibility:hidden;transition:opacity .25s var(--pr-ease),visibility .25s;}
.pr-modal.pr-show{opacity:1;visibility:visible;}
.pr-modal-card{background:#fff;width:min(520px,96vw);max-height:92vh;overflow:auto;border-radius:18px;padding:34px 34px 26px;position:relative;box-shadow:0 40px 100px rgba(0,0,0,.45);transform:translateY(18px) scale(.97);transition:transform .3s var(--pr-ease);}
.pr-modal.pr-show .pr-modal-card{transform:none;}
.pr-modal-x{position:absolute;top:13px;right:16px;background:none;border:0;font-size:30px;line-height:1;color:#9aa3b2;cursor:pointer;}
.pr-modal-x:hover{color:#1a2238;}
.pr-modal-card h3{font:800 26px/1.12 'Inter',sans-serif;color:var(--pr-navy);margin:0 0 8px;}
.pr-modal-sub{font:400 14.5px/1.6 'Inter';color:#56607a;margin:0 0 20px;}
.pr-modal-sub a{color:var(--pr-gold);font-weight:700;text-decoration:none;}
.pr-modal-form{display:flex;flex-direction:column;gap:13px;}
.pr-modal-row{display:flex;gap:13px;}
.pr-modal-row label{flex:1;}
.pr-modal-form label{font:600 12px/1 'Inter';color:var(--pr-navy);text-transform:uppercase;letter-spacing:.04em;display:flex;flex-direction:column;gap:6px;}
.pr-modal-form input,.pr-modal-form textarea{font:400 15px/1.4 'Inter';color:#15203a;border:1.5px solid #dde2ec;border-radius:10px;padding:12px 14px;background:#fff;width:100%;box-sizing:border-box;text-transform:none;}
.pr-modal-form textarea{resize:vertical;}
.pr-modal-form input:focus,.pr-modal-form textarea:focus{border-color:var(--pr-gold);outline:none;box-shadow:0 0 0 3px rgba(193,141,21,.16);}
.pr-modal-submit{margin-top:6px;width:100%;justify-content:center;}
.pr-modal-fine{font:400 12px/1.5 'Inter';color:#5f6b7e;margin:4px 0 0;text-align:center;}
/* skip-to-content link (a11y) — visible only on keyboard focus */
.pr-skip{position:absolute;left:12px;top:-60px;z-index:100002;background:#15203a;color:#fff;font:700 14px/1 'Inter',sans-serif;padding:12px 18px;border-radius:0 0 10px 10px;text-decoration:none;transition:top .18s var(--pr-ease);}
.pr-skip:focus{top:0;outline:3px solid var(--pr-gold);outline-offset:2px;}
@media(max-width:520px){.pr-modal-row{flex-direction:column;gap:13px;}}

/* ===== count-up numbers ===== */
.elementor-counter-number{font-variant-numeric:tabular-nums;}

/* ===== testimonials: stars + lift + alternating polish ===== */
.pr-stars{display:flex;gap:3px;margin-bottom:10px;color:var(--pr-gold-bright);font-size:16px;line-height:1;}
[class*="testimonial"] .elementor-widget-container,.elementor-testimonial{transition:transform .3s var(--pr-ease),box-shadow .3s var(--pr-ease);}
.pr-tcard{transition:transform .3s var(--pr-ease),box-shadow .3s var(--pr-ease)!important;border-radius:14px!important;}
.pr-tcard:hover{transform:translateY(-4px);box-shadow:0 18px 44px rgba(16,24,40,.16)!important;}

/* ===== video lightbox ===== */
.pr-vmodal{position:fixed;inset:0;background:rgba(8,8,13,.86);display:flex;align-items:center;justify-content:center;z-index:100000;opacity:0;transition:opacity .25s var(--pr-ease);padding:20px;}
.pr-vmodal.pr-show{opacity:1;}
.pr-vmodal-inner{width:min(960px,94vw);aspect-ratio:16/9;position:relative;}
.pr-vmodal iframe{width:100%;height:100%;border:0;border-radius:14px;box-shadow:0 30px 80px rgba(0,0,0,.5);}
.pr-vmodal-close{position:absolute;top:-44px;right:0;color:#fff;font-size:30px;cursor:pointer;background:none;border:0;line-height:1;}
.mvp-play-button,.elementor-custom-embed-play{cursor:pointer;}

/* ===== hero entrance + subtle motion =====
   Pure CSS, keyed on the static markup so it runs on FIRST PAINT (no JS class =
   no visible->invisible jump / flash). Children injected later (CTA, badge) just
   animate in when inserted. All gated behind prefers-reduced-motion. */
@media (prefers-reduced-motion: no-preference) {
  /* subtle vertical drift keeps the photo hero alive (cover preserved) */
  .page-banner { animation: prHeroPan 32s ease-in-out infinite alternate; }
  @keyframes prHeroPan { from { background-position: 50% 47%; } to { background-position: 50% 53%; } }
  /* staggered fade-up of hero content */
  .page-banner .banner-content > label,
  .page-banner .banner-content > h1,
  .page-banner .banner-content > h2,
  .page-banner .pr-hero-cta,
  .page-banner .pr-rev-badge,
  .bio__intro > *, .bio__photo, .sch__hero .sch__wrap > * {
    animation: prUp .7s cubic-bezier(.22,1,.36,1) both;
  }
  .page-banner .banner-content > label, .bio__intro > *:nth-child(1), .sch__hero .sch__wrap > *:nth-child(1) { animation-delay: .05s; }
  .page-banner .banner-content > h1, .page-banner .banner-content > h2, .bio__intro > *:nth-child(2), .sch__hero .sch__wrap > *:nth-child(2) { animation-delay: .14s; }
  .bio__intro > *:nth-child(3), .sch__hero .sch__wrap > *:nth-child(3) { animation-delay: .22s; }
  .page-banner .pr-hero-cta, .bio__intro > *:nth-child(4), .sch__hero .sch__wrap > *:nth-child(4) { animation-delay: .26s; }
  .page-banner .pr-rev-badge, .bio__intro > *:nth-child(5) { animation-delay: .36s; }
  .bio__photo { animation-delay: .18s; }
  @keyframes prUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
}
/* gold underline grows in as accented service headings reveal */
.pr-acc-1 h2::after, .pr-acc-1 h3::after { width: 0; transition: width .6s .15s var(--pr-ease); }
.pr-acc-1 h2.pr-in::after, .pr-acc-1 h3.pr-in::after { width: 54px; }
/* button sheen on hover */
.pr-cta-btn { position: relative; overflow: hidden; }
.pr-cta-btn::after { content: ""; position: absolute; top: 0; left: -130%; width: 60%; height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.45), transparent); transform: skewX(-18deg); transition: left .6s var(--pr-ease); }
.pr-cta-btn:hover::after { left: 130%; }

/* ===== scroll-reveal ===== */
.pr-reveal{opacity:0;transform:translateY(24px);will-change:opacity,transform;transition:opacity .7s var(--pr-ease),transform .7s var(--pr-ease);}
.pr-reveal.pr-in{opacity:1;transform:none;}
.pr-reveal-d1{transition-delay:.08s;}.pr-reveal-d2{transition-delay:.16s;}.pr-reveal-d3{transition-delay:.24s;}

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

/* Testimonials: true masonry via CSS multi-column so cards pack to their natural height
   with no row gaps (a plain grid leaves empty space under shorter cards). The theme already
   sets the active tab-pane to display block, which is what multi-column needs. pr-reveal is
   forced visible here so the first card can never stay hidden when its scroll-reveal is late. */
html body .testimonails-tabs .grid.row.tab-pane{display:block!important;column-count:3!important;column-gap:30px!important;height:auto!important;}
html body .testimonails-tabs .grid.row.tab-pane>.grid-item{width:auto!important;max-width:100%!important;float:none!important;position:static!important;display:inline-block!important;vertical-align:top;break-inside:avoid;-webkit-column-break-inside:avoid;page-break-inside:avoid;margin:0 0 30px!important;}
html body .testimonails-tabs .grid .testimonails-box.pr-reveal{opacity:1!important;transform:none!important;}
@media(max-width:991px){html body .testimonails-tabs .grid.row.tab-pane{column-count:2!important;}}
@media(max-width:600px){html body .testimonails-tabs .grid.row.tab-pane{column-count:1!important;}}
