/* =====================================================================
   I.V. PASI LAW - design system v3
   Black / White / Red · editorial · Playfair Display + Inter

   v3 CHANGE: pages are now built from NATIVE DIVI MODULES (Text, Button,
   Blurb, Person, Accordion, Blog) instead of fullwidth code modules.
   The global .et_pb_section / .et_pb_row resets from v2 have been removed
   so that Divi's own spacing + width controls work in the Visual Builder.
   Section padding now lives in each module's settings, where it is editable.
   ===================================================================== */

:root{
  --red:#C8102E;
  --red-dark:#A00D24;
  --black:#0B0B0C;
  --ink:#17181A;
  --body-c:#50535A;
  --paper:#FFFFFF;
  --stone:#F6F5F2;
  --line:rgba(11,11,12,.12);
  --line-light:rgba(255,255,255,.14);
  --serif:'Playfair Display',Georgia,'Times New Roman',serif;
  --sans:'Inter',-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;
}

/* ---------- base ---------- */
body{ font-family:var(--sans); color:var(--body-c); font-size:16px; line-height:1.75; -webkit-font-smoothing:antialiased; }
h1,h2,h3{ font-family:var(--serif); color:var(--ink); font-weight:600; line-height:1.12; letter-spacing:-.01em; }
h4,h5,h6{ font-family:var(--sans); color:var(--ink); font-weight:600; }
#main-content{ background:var(--paper); }

/* Divi container: match the old .ivp2-wrap content measure */
.et_pb_row{ width:88%; max-width:1032px; }
/* modules sit flush unless a section says otherwise */
.et_pb_module{ margin-bottom:0; }

/* ---------- shared type helpers (applied as module CSS classes) ---------- */
.ivp2-wrap{ max-width:1200px; margin:0 auto; padding:0 6vw; }

.ivp2-eyebrow .et_pb_text_inner,
.ivp2-eyebrow p{
  font-family:var(--sans); font-size:11px; font-weight:600; letter-spacing:.42em;
  text-transform:uppercase; color:var(--red); margin:0;
}
.ivp2-eyebrow .et_pb_text_inner:before{
  content:""; display:inline-block; width:34px; height:1px; background:var(--red);
  vertical-align:middle; margin-right:16px;
}
/* larger eyebrow variant - used for "Harare · Ontario" on the hero */
.ivp2-eyebrow-lg .et_pb_text_inner,
.ivp2-eyebrow-lg p{ font-size:16px; letter-spacing:.36em; }
.ivp2-eyebrow-lg .et_pb_text_inner:before{ width:44px; margin-right:20px; }

.ivp2-lede .et_pb_text_inner,
.ivp2-lede p{ font-size:19px; line-height:1.85; color:var(--body-c); max-width:640px; margin:0; }
.ivp2-dark .ivp2-lede .et_pb_text_inner,
.ivp2-dark .ivp2-lede p{ color:rgba(255,255,255,.72); }

/* ---------- header ---------- */
#page-container{ background:var(--black); }
#main-header{ background:var(--black)!important; box-shadow:none!important; border-bottom:1px solid var(--line-light); }
#main-header .container{ width:92%; max-width:1280px; }
/* The wordmark is a wide 5.8:1 lockup - cap its height and let the container
   shrink to fit so it never runs into the first menu item. */
#main-header .logo_container{ width:auto!important; max-width:250px; }
#main-header .logo_container img,
#main-header #logo{ max-height:34px!important; width:auto!important; height:auto!important; }
@media (max-width:980px){
  #main-header .logo_container{ max-width:200px; }
  #main-header .logo_container img,
  #main-header #logo{ max-height:28px!important; }
}
#et-top-navigation{ padding-top:22px!important; }
#top-menu > li > a{
  font-family:var(--sans); color:rgba(255,255,255,.85); font-weight:500; font-size:12px;
  letter-spacing:.22em; text-transform:uppercase; padding-bottom:26px!important;
}
#top-menu > li > a:hover{ color:#fff; opacity:1; }
#top-menu > li.current-menu-item > a{ color:#fff; }
#top-menu > li.current-menu-item > a:after{
  content:""; display:block; height:2px; background:var(--red); margin-top:6px;
}
#top-menu li.ivp-btn-book > a{
  border:1px solid var(--red); background:var(--red); color:#fff!important;
  padding:12px 26px!important; margin-left:14px; transition:background .25s,border-color .25s;
}
#top-menu li.ivp-btn-book > a:hover{ background:transparent; border-color:#fff; }
.et_fixed_nav #main-header{ background:var(--black)!important; }

/* dropdown sub-menu (Practice Areas) */
#top-menu li ul.sub-menu{
  background:var(--black); border:1px solid var(--line-light); border-top:2px solid var(--red);
  padding:10px 0; width:280px;
}
#top-menu li ul.sub-menu li a{
  font-family:var(--sans); font-size:11px; font-weight:500; letter-spacing:.16em;
  text-transform:uppercase; color:rgba(255,255,255,.78); width:240px; padding:11px 20px!important;
}
#top-menu li ul.sub-menu li a:hover{ color:#fff; background:rgba(255,255,255,.05); opacity:1; }

/* ---------- buttons ---------- */
/* legacy anchor buttons (kept for the pre-footer, which is PHP-rendered) */
.ivp2-btn{
  display:inline-block; font-family:var(--sans); font-size:12px; font-weight:600;
  letter-spacing:.24em; text-transform:uppercase; text-decoration:none!important;
  padding:18px 40px; transition:all .3s ease; line-height:1;
}
.ivp2-btn-red{ background:var(--red); color:#fff!important; border:1px solid var(--red); }
.ivp2-btn-red:hover{ background:var(--black); border-color:var(--black); }
.ivp2-btn-ghost{ background:transparent; color:#fff!important; border:1px solid rgba(255,255,255,.4); }
.ivp2-btn-ghost:hover{ border-color:#fff; }
.ivp2-btn-dark{ background:var(--black); color:#fff!important; border:1px solid var(--black); }
.ivp2-btn-dark:hover{ background:var(--red); border-color:var(--red); }

/* NATIVE Divi Button modules, styled to match.
   NOTE: Divi puts a button module's CSS class on the <a class="et_pb_button">
   element itself, so these must be compound selectors, not descendant ones. */
.et_pb_button.ivp2-b{
  font-family:var(--sans)!important; font-size:12px!important; font-weight:600!important;
  letter-spacing:.24em!important; text-transform:uppercase; line-height:1!important;
  padding:18px 40px!important; border-radius:0!important; border-width:1px!important;
  border-style:solid!important; transition:all .3s ease!important;
}
.et_pb_button.ivp2-b:after,
.et_pb_button.ivp2-b:before{ display:none!important; content:none!important; }
.et_pb_button.ivp2-b-red{ background:var(--red)!important; color:#fff!important; border-color:var(--red)!important; }
.et_pb_button.ivp2-b-red:hover{ background:var(--black)!important; border-color:var(--black)!important; color:#fff!important; padding:18px 40px!important; }
.ivp2-dark .et_pb_button.ivp2-b-red:hover{ background:#fff!important; border-color:#fff!important; color:var(--black)!important; }
.et_pb_button.ivp2-b-ghost{ background:transparent!important; color:#fff!important; border-color:rgba(255,255,255,.4)!important; }
.et_pb_button.ivp2-b-ghost:hover{ border-color:#fff!important; background:transparent!important; color:#fff!important; padding:18px 40px!important; }
.et_pb_button.ivp2-b-dark{ background:var(--black)!important; color:#fff!important; border-color:var(--black)!important; }
.et_pb_button.ivp2-b-dark:hover{ background:var(--red)!important; border-color:var(--red)!important; color:#fff!important; padding:18px 40px!important; }

/* two Divi Button modules sitting side by side */
.ivp2-btnrow .et_pb_button_module_wrapper{ display:inline-block; margin:0 18px 14px 0; }
.ivp2-btnrow .et_pb_button_module_wrapper:last-child{ margin-right:0; }

.ivp2-link{
  display:inline-block; margin-top:10px;
  font-family:var(--sans); font-size:12px; font-weight:600; letter-spacing:.22em;
  text-transform:uppercase; color:var(--ink)!important; text-decoration:none!important;
  border-bottom:1px solid var(--red); padding-bottom:6px; transition:color .25s;
}
.ivp2-link:hover{ color:var(--red)!important; }
.ivp2-dark .ivp2-link{ color:#fff!important; }

/* ---------- hero (home) - native Divi section ----------
   The background image and its dark gradient overlay are set in the SECTION's
   own Background settings (Divi's "gradient overlays image" option), so both
   are editable in the Visual Builder. No CSS pseudo-elements needed here. */
.ivp2-hero-sec{ position:relative; overflow:hidden; }
.ivp2-hero-title h1{
  color:#fff; font-size:clamp(40px, 5.2vw, 74px); font-weight:500; margin:0; max-width:13em;
}
.ivp2-hero-title h1 em{ font-style:italic; color:var(--red); }
.ivp2-hero-sec .ivp2-lede .et_pb_text_inner,
.ivp2-hero-sec .ivp2-lede p{ color:rgba(255,255,255,.75); }

/* hero credential strip */
.ivp2-hero-meta-row{ border-top:1px solid var(--line-light); }
.ivp2-hero-meta .et_pb_text_inner{
  font-size:11px; letter-spacing:.3em; text-transform:uppercase; color:rgba(255,255,255,.55);
}
.ivp2-hero-meta .et_pb_text_inner strong{ color:#fff; font-weight:600; }
.ivp2-hero-meta p{ margin:0; }

/* ---------- ticker ---------- */
.ivp-ticker-wrap{
  background:var(--black); border-top:1px solid var(--line-light); overflow:hidden;
  white-space:nowrap; padding:0; position:relative;
}
.ivp-ticker-label{
  display:inline-flex; align-items:center; background:var(--red); color:#fff;
  font-family:var(--sans); font-weight:600; font-size:10px; letter-spacing:.34em; text-transform:uppercase;
  padding:0 26px; position:absolute; left:0; top:0; bottom:0; z-index:2;
}
.ivp-ticker{ display:inline-block; padding:17px 0 17px 170px; animation:ivp-scroll 40s linear infinite; }
.ivp-ticker-wrap:hover .ivp-ticker{ animation-play-state:paused; }
.ivp-ticker a{
  color:rgba(255,255,255,.85); font-family:var(--sans); font-weight:500; font-size:13px;
  letter-spacing:.04em; margin-right:72px; text-decoration:none;
}
.ivp-ticker a:before{ content:"-"; margin-right:18px; color:var(--red); }
.ivp-ticker a:hover{ color:#fff; }
@keyframes ivp-scroll{ 0%{transform:translateX(0)} 100%{transform:translateX(-50%)} }
/* the ticker sits in a full-bleed row */
.ivp2-ticker-row{ width:100%!important; max-width:none!important; padding:0!important; }
.ivp2-ticker-row .et_pb_module{ margin-bottom:0!important; }

/* ---------- section tone helpers ---------- */
.ivp2-stone{ background-color:var(--stone)!important; }
.ivp2-dark{ background-color:var(--black)!important; }
.ivp2-dark h1,.ivp2-dark h2,.ivp2-dark h3{ color:#fff; }
.ivp2-dark .et_pb_text_inner p{ color:rgba(255,255,255,.68); }

/* split heading column */
.ivp2-split-h h2{ font-size:clamp(34px,3.6vw,52px); margin:0; }
.ivp2-body .et_pb_text_inner p{ font-size:17px; line-height:1.9; margin-bottom:1.4em; }
.ivp2-body .et_pb_text_inner p:last-child{ margin-bottom:0; }

/* section heading used above grids */
.ivp2-h2 h2{ font-size:clamp(34px,3.6vw,52px); margin:0; }

/* ---------- stats (native Text modules in a 4-col row) ---------- */
.ivp2-stats-row{ border-top:1px solid var(--line); }
.ivp2-dark .ivp2-stats-row{ border-top-color:var(--line-light); }
.ivp2-stat .et_pb_text_inner{ padding:44px 34px 0 0; border-right:1px solid var(--line); }
.ivp2-dark .ivp2-stat .et_pb_text_inner{ border-right-color:var(--line-light); }
.ivp2-stat-last .et_pb_text_inner{ border-right:none; }
.ivp2-stat b{
  display:block; font-family:var(--serif); font-weight:500; font-size:clamp(34px,3vw,46px);
  color:var(--ink); margin-bottom:10px; line-height:1;
}
.ivp2-dark .ivp2-stat b{ color:#fff; }
.ivp2-stat b i{ font-style:normal; color:var(--red); }
.ivp2-stat span{ font-size:12px; letter-spacing:.2em; text-transform:uppercase; color:var(--body-c); }
.ivp2-dark .ivp2-stat span{ color:rgba(255,255,255,.55); }
.ivp2-stat p{ margin:0; }

/* ---------- numbered practice list (native Blurb modules) ---------- */
.ivp2-plist-row{ border-top:1px solid var(--line); }
.ivp2-pitem{ border-bottom:1px solid var(--line); transition:padding-left .3s ease; }
.ivp2-pitem:hover{ padding-left:16px; }
.ivp2-pitem .et_pb_blurb_content{ max-width:none; display:grid; grid-template-columns:110px 1fr 90px;
  align-items:baseline; gap:30px; padding:40px 0; }
.ivp2-pitem .et_pb_main_blurb_image{ margin-bottom:0; }
.ivp2-pitem .et_pb_blurb_content .et_pb_image_wrap{ display:none; }
/* the number is rendered through the blurb's image slot replacement */
.ivp2-pitem .et_pb_blurb_container{ padding-left:0; }
.ivp2-pitem .et_pb_module_header{
  font-family:var(--serif); font-size:clamp(22px,2.4vw,32px); margin:0 0 6px;
  font-weight:500; transition:color .25s; padding-bottom:0;
}
.ivp2-pitem .et_pb_module_header a{ color:var(--ink); }
.ivp2-pitem:hover .et_pb_module_header,
.ivp2-pitem:hover .et_pb_module_header a{ color:var(--red); }
.ivp2-pitem .et_pb_blurb_description p{ margin:0; font-size:15px; color:var(--body-c); max-width:560px; }
.ivp2-pitem .et_pb_blurb_description{ font-size:15px; }

/* number + arrow, generated with a CSS counter so no markup is needed */
.ivp2-plist-row{ counter-reset:ivppl; }
.ivp2-pitem{ position:relative; counter-increment:ivppl; }
.ivp2-pitem:before{
  content:counter(ivppl,decimal-leading-zero); position:absolute; left:0; top:40px;
  font-family:var(--sans); font-size:13px; font-weight:600; letter-spacing:.2em; color:var(--red);
}
.ivp2-pitem:after{
  content:"→"; position:absolute; right:0; top:40px;
  font-family:var(--serif); font-size:26px; color:var(--ink);
  transition:transform .3s ease, color .25s;
}
.ivp2-pitem:hover:after{ transform:translateX(8px); color:var(--red); }
.ivp2-pitem .et_pb_blurb_content{ padding-left:110px; padding-right:90px; grid-template-columns:1fr; gap:0; }

/* ---------- quote / statement band ---------- */
.ivp2-statement h2{
  font-size:clamp(30px,3.4vw,48px); font-weight:500; line-height:1.3; color:#fff; margin:0; max-width:900px;
}
.ivp2-statement h2 em{ color:var(--red); font-style:italic; }

/* ---------- cards (native Blurb modules in multi-column rows) ---------- */
.ivp2-cellrow{ border:1px solid var(--line); background:var(--line); }
.ivp2-cellrow.et_pb_row{ padding:0!important; }
.ivp2-cellrow .et_pb_column{ background:var(--paper); padding:44px 40px; margin-bottom:0!important; }
.ivp2-stone .ivp2-cellrow .et_pb_column{ background:var(--stone); }
.ivp2-dark .ivp2-cellrow{ border-color:var(--line-light); background:var(--line-light); }
.ivp2-dark .ivp2-cellrow .et_pb_column{ background:var(--black); }
.ivp2-cell .et_pb_module_header,
.ivp2-cell h4{ font-family:var(--sans); font-size:17px; letter-spacing:.02em; margin:0 0 14px; padding-bottom:0; font-weight:600; }
.ivp2-dark .ivp2-cell .et_pb_module_header{ color:#fff; }
.ivp2-cell .et_pb_module_header:before{
  content:""; display:block; width:26px; height:2px; background:var(--red); margin-bottom:18px;
}
.ivp2-cell .et_pb_blurb_description p,
.ivp2-cell .et_pb_blurb_description{ font-size:15px; line-height:1.8; margin:0; }
.ivp2-cell .et_pb_blurb_content{ max-width:none; }
.ivp2-cell .et_pb_blurb_container{ padding-left:0; }
.ivp2-cell .et_pb_main_blurb_image{ display:none; }

/* ---------- page hero (inner pages) - native section ----------
   Same approach as the home hero: image + gradient overlay live in the
   section's Background settings and stay editable in the Visual Builder. */
.ivp2-phero-sec{ position:relative; overflow:hidden; }
.ivp2-phero-title h1{ color:#fff; font-size:clamp(42px,5vw,72px); font-weight:500; margin:0; }

/* ---------- accordion (Practice Areas dropdowns) ---------- */
.ivp2-acc .et_pb_toggle{
  background:transparent; border:none; border-bottom:1px solid var(--line);
  padding:0; margin:0; border-radius:0;
}
.ivp2-acc .et_pb_toggle_title{
  font-family:var(--serif)!important; font-size:clamp(21px,2.2vw,29px)!important; font-weight:500!important;
  color:var(--ink)!important; padding:34px 60px 34px 62px!important; cursor:pointer;
  transition:color .25s, padding-left .3s ease; line-height:1.3;
}
.ivp2-acc .et_pb_toggle_title:hover{ color:var(--red)!important; padding-left:74px!important; }
.ivp2-acc .et_pb_toggle_open .et_pb_toggle_title{ color:var(--red)!important; }
/* number chip */
.ivp2-acc .et_pb_toggle{ position:relative; counter-increment:ivpacc; }
.ivp2-acc{ counter-reset:ivpacc; }
.ivp2-acc .et_pb_toggle:before{
  content:counter(ivpacc,decimal-leading-zero); position:absolute; left:0; top:42px; z-index:2;
  font-family:var(--sans); font-size:13px; font-weight:600; letter-spacing:.2em; color:var(--red);
}
/* replace Divi's heavy filled-circle glyph with a light +/− mark */
.ivp2-acc .et_pb_toggle_title:before,
.ivp2-acc .et_pb_toggle_open .et_pb_toggle_title:before{
  content:"+"!important; display:block!important;
  font-family:var(--sans)!important; font-weight:300; font-size:30px; line-height:1;
  right:0; left:auto; top:50%; transform:translateY(-50%);
  margin-top:0; width:auto; height:auto; color:var(--ink); transition:color .25s;
}
.ivp2-acc .et_pb_toggle_open .et_pb_toggle_title:before{ content:"\2013"!important; color:var(--red); }
.ivp2-acc .et_pb_toggle_title:hover:before{ color:var(--red); }
.ivp2-acc .et_pb_toggle_content{
  padding:0 60px 40px 62px; font-size:15.5px; line-height:1.85; color:var(--body-c);
}
.ivp2-acc .et_pb_toggle_content p{ margin-bottom:1.1em; }
.ivp2-acc .et_pb_toggle_content ul{ list-style:none; padding:0; margin:14px 0 0; }
.ivp2-acc .et_pb_toggle_content ul li{
  padding:12px 0; border-bottom:1px solid var(--line); font-size:15px; color:var(--body-c);
}
.ivp2-acc .et_pb_toggle_content ul li:first-child{ border-top:1px solid var(--line); }
.ivp2-acc .et_pb_toggle_content ul li:before{
  content:""; display:inline-block; width:14px; height:1px; background:var(--red);
  vertical-align:middle; margin-right:14px;
}

/* ---------- people grid (native Person modules) ---------- */
.ivp2-people-row .et_pb_column{ margin-bottom:60px!important; }
.ivp2-person{ cursor:pointer; }
.ivp2-person .et_pb_team_member_image{
  margin-bottom:26px; position:relative; overflow:hidden; background:var(--stone);
  aspect-ratio:4/5; display:block;
}
.ivp2-person .et_pb_team_member_image img{
  width:100%; height:100%; object-fit:cover; object-position:center 20%;
  filter:grayscale(100%); transition:filter .45s ease, transform .6s ease; display:block;
}
.ivp2-person:hover .et_pb_team_member_image img{ filter:grayscale(0%); transform:scale(1.04); }
.ivp2-person .et_pb_module_header{
  font-family:var(--serif); font-size:clamp(21px,2vw,27px); font-weight:500; color:var(--ink);
  margin:0 0 8px; padding-bottom:0; transition:color .25s;
}
.ivp2-person:hover .et_pb_module_header{ color:var(--red); }
.ivp2-person .et_pb_member_position{
  font-family:var(--sans); font-size:11px; font-weight:600; letter-spacing:.28em;
  text-transform:uppercase; color:var(--red); display:block; margin-bottom:16px;
}
.ivp2-person .et_pb_team_member_description > p{ font-size:15px; line-height:1.8; margin:0; }
.ivp2-person-more{
  display:inline-block; margin-top:16px; font-family:var(--sans); font-size:11px; font-weight:600;
  letter-spacing:.22em; text-transform:uppercase; color:var(--ink);
  border-bottom:1px solid var(--red); padding-bottom:5px;
}
.ivp2-person:hover .ivp2-person-more{ color:var(--red); }
/* full bio travels with the module but is only shown in the modal */
.ivp2-bio{ display:none; }

/* ---------- profile modal ---------- */
.ivp2-modal{
  position:fixed; inset:0; z-index:99999; display:none;
  background:rgba(11,11,12,.82); overflow-y:auto; padding:6vh 4vw;
}
.ivp2-modal.open{ display:block; }
.ivp2-modal-box{
  background:var(--paper); max-width:900px; margin:0 auto; position:relative;
  border-top:3px solid var(--red); padding:70px 70px 80px;
}
.ivp2-modal-close{
  position:absolute; top:22px; right:26px; background:none; border:none; cursor:pointer;
  font-size:30px; line-height:1; color:var(--ink); padding:6px 10px; font-family:var(--sans);
}
.ivp2-modal-close:hover{ color:var(--red); }
.ivp2-modal-box h3{ font-family:var(--serif); font-size:clamp(28px,2.6vw,38px); font-weight:500; margin:0 0 10px; }
.ivp2-modal-role{
  font-family:var(--sans); font-size:11px; font-weight:600; letter-spacing:.34em;
  text-transform:uppercase; color:var(--red); display:block; margin-bottom:34px;
}
.ivp2-modal-role:after{ content:""; display:block; width:40px; height:1px; background:var(--line); margin-top:30px; }
.ivp2-modal-box p{ font-size:16.5px; line-height:1.9; margin-bottom:1.4em; color:var(--body-c); }
.ivp2-modal-box h5{
  font-family:var(--sans); font-size:11px; font-weight:600; letter-spacing:.3em; text-transform:uppercase;
  color:var(--red); margin:44px 0 18px;
}
.ivp2-modal-box ul{ list-style:none; padding:0; margin:0; }
.ivp2-modal-box ul li{
  padding:13px 0; border-bottom:1px solid var(--line); font-size:15px; color:var(--body-c);
}
.ivp2-modal-box ul li:first-child{ border-top:1px solid var(--line); }
body.ivp2-modal-lock{ overflow:hidden; }

/* ---------- booking form ---------- */
.ivp-booking{
  max-width:860px; margin:0 auto; background:var(--paper); padding:70px;
  border:1px solid var(--line); border-top:3px solid var(--red);
}
.ivp-booking .ivp-intro{
  padding:0 0 34px; margin-bottom:20px; border-bottom:1px solid var(--line);
  font-family:var(--serif); font-size:22px; line-height:1.5; color:var(--ink);
}
.ivp-booking .ivp-intro small{
  display:block; margin-top:12px; font-family:var(--sans); font-size:12px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--body-c);
}
.ivp-grid2{ display:grid; grid-template-columns:1fr 1fr; gap:0 40px; }
.ivp-booking label{
  display:block; font-size:11px; font-weight:600; letter-spacing:.26em; text-transform:uppercase;
  color:var(--ink); margin:26px 0 10px;
}
.ivp-booking input, .ivp-booking select, .ivp-booking textarea{
  width:100%; padding:14px 2px; border:none; border-bottom:1px solid var(--line);
  border-radius:0; font-size:16px; font-family:var(--sans); background:transparent; color:var(--ink);
  transition:border-color .25s;
}
.ivp-booking textarea{ resize:vertical; min-height:96px; line-height:1.7; }
.ivp-booking input:focus, .ivp-booking select:focus, .ivp-booking textarea:focus{
  outline:none; border-bottom:2px solid var(--red);
}
.ivp-slot-note{ font-size:13px; color:#9a9da3; margin-top:10px; }
.ivp-booking button{
  margin-top:48px; width:100%; background:var(--black); color:#fff; border:1px solid var(--black);
  padding:20px; font-size:12px; font-weight:600; letter-spacing:.28em; text-transform:uppercase;
  cursor:pointer; transition:all .3s; font-family:var(--sans);
}
.ivp-booking button:hover{ background:var(--red); border-color:var(--red); }
.ivp-booking button:disabled{ background:#b9bbbf; border-color:#b9bbbf; cursor:not-allowed; }
.ivp-msg-ok{ background:var(--black); color:#fff; padding:26px 30px; margin-top:28px; font-size:15px; line-height:1.7; }
.ivp-msg-ok strong{ color:var(--red); display:block; font-family:var(--serif); font-size:19px; margin-bottom:6px; }
.ivp-msg-err{ background:none; color:var(--red-dark); padding:16px 0 0; margin-top:14px; border-top:2px solid var(--red); font-size:14.5px; }

/* ---------- pre-footer ---------- */
.ivp2-prefooter{ background:var(--black); border-top:1px solid var(--line-light); padding:100px 0 70px; }
.ivp2-prefooter .cols{ display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:5vw; }
.ivp2-prefooter h4{
  color:#fff; font-family:var(--serif); font-weight:500; font-size:26px; margin:0 0 10px; line-height:1.35;
}
.ivp2-prefooter h4 em{ color:var(--red); font-style:italic; }
.ivp2-prefooter h6{
  color:rgba(255,255,255,.45); font-size:10px; font-weight:600; letter-spacing:.34em;
  text-transform:uppercase; margin:0 0 22px;
}
.ivp2-prefooter p, .ivp2-prefooter a{ color:rgba(255,255,255,.72); font-size:14px; line-height:2; text-decoration:none; }
.ivp2-prefooter a:hover{ color:#fff; }
.ivp2-prefooter .ln a{ color:#fff; border-bottom:1px solid var(--red); padding-bottom:4px; font-size:13px; letter-spacing:.14em; text-transform:uppercase; }
#main-footer{ background:var(--black)!important; }
#footer-bottom{ background:var(--black)!important; border-top:1px solid var(--line-light); padding:26px 0!important; }
#footer-info{ float:none!important; text-align:center; font-size:12px!important; letter-spacing:.08em; color:rgba(255,255,255,.4)!important; }
#footer-info a{ color:rgba(255,255,255,.7)!important; }
#footer-info a:hover{ color:#fff!important; }
.et-social-icons{ display:none; }

/* ---------- reveal animation ---------- */
.ivp2-reveal{ opacity:0; transform:translateY(28px); transition:opacity .8s ease, transform .8s ease; }
.ivp2-reveal.in-view{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){ .ivp2-reveal{ opacity:1; transform:none; transition:none; } .ivp-ticker{ animation:none; } }
/* never hide content inside the Visual Builder */
body.et-fb .ivp2-reveal{ opacity:1!important; transform:none!important; }

/* ---------- articles (Divi blog) ---------- */
.ivp2-blogwrap .et_pb_post{
  border:1px solid var(--line); box-shadow:none!important; padding:40px; margin-bottom:30px!important; background:#fff;
}
.ivp2-blogwrap .entry-title{ font-family:var(--serif)!important; font-size:24px!important; font-weight:500!important; }
.ivp2-blogwrap .entry-title a{ color:var(--ink)!important; }
.ivp2-blogwrap .entry-title a:hover{ color:var(--red)!important; }
.ivp2-blogwrap .post-meta{ font-size:11px!important; letter-spacing:.22em; text-transform:uppercase; color:var(--red)!important; }
.ivp2-blogwrap .post-meta a{ color:var(--red)!important; }
.ivp2-blogwrap .more-link{ font-size:12px; font-weight:600; letter-spacing:.22em; text-transform:uppercase; color:var(--ink)!important; border-bottom:1px solid var(--red); padding-bottom:4px; }

/* category filter chips on the Articles page */
.ivp2-cats .et_pb_text_inner{ display:flex; flex-wrap:wrap; gap:10px; }
.ivp2-cats a{
  font-family:var(--sans); font-size:11px; font-weight:600; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink); border:1px solid var(--line); padding:11px 20px; text-decoration:none; transition:all .25s;
}
.ivp2-cats a:hover, .ivp2-cats a.active{ background:var(--black); border-color:var(--black); color:#fff; }

/* ---------- responsive ---------- */
@media (max-width:1024px){
  .ivp2-stat .et_pb_text_inner{ border-right:none; padding-right:0; }
  .ivp2-prefooter .cols{ grid-template-columns:1fr 1fr; gap:44px; }
  .ivp2-modal-box{ padding:54px 40px 60px; }
}
@media (max-width:980px){
  /* Divi stacks columns here - restore card borders between stacked cells */
  .ivp2-cellrow .et_pb_column{ border-bottom:1px solid var(--line); }
  .ivp2-cellrow .et_pb_column:last-child{ border-bottom:none; }
  .ivp2-people-row .et_pb_column{ margin-bottom:44px!important; }
}
@media (max-width:720px){
  .ivp2-pitem .et_pb_blurb_content{ padding-left:56px; padding-right:0; }
  .ivp2-pitem:after{ display:none; }
  .ivp2-acc .et_pb_toggle_title{ padding:28px 44px 28px 46px!important; }
  .ivp2-acc .et_pb_toggle_title:hover{ padding-left:46px!important; }
  .ivp2-acc .et_pb_toggle:before{ top:34px; }
  .ivp2-acc .et_pb_toggle_content{ padding:0 0 32px 46px; }
  .ivp-grid2{ grid-template-columns:1fr; }
  .ivp-booking{ padding:44px 26px; }
  .ivp2-prefooter .cols{ grid-template-columns:1fr; }
  .ivp2-modal{ padding:0; }
  .ivp2-modal-box{ padding:56px 24px 50px; }
  .ivp2-cellrow .et_pb_column{ padding:36px 28px; }
}
