.elementor-kit-5{--e-global-color-primary:#632323;--e-global-color-secondary:#A8813E;--e-global-color-text:#141110;--e-global-color-accent:#632323;--e-global-color-burgdeep:#4A1919;--e-global-color-inktwo:#221A17;--e-global-color-parchmt:#EFE9DE;--e-global-color-parchlt:#F7F3EC;--e-global-color-stoneco:#D9D0C2;--e-global-color-mutedco:#6B625B;--e-global-color-paperco:#FFFDF9;--e-global-color-watermk:#B9A98C;--e-global-typography-primary-font-family:"Cormorant Garamond";--e-global-typography-primary-font-weight:500;--e-global-typography-primary-line-height:1.08em;--e-global-typography-primary-letter-spacing:-0.012em;--e-global-typography-secondary-font-family:"Archivo";--e-global-typography-secondary-font-size:11px;--e-global-typography-secondary-font-weight:500;--e-global-typography-secondary-text-transform:uppercase;--e-global-typography-secondary-letter-spacing:0.22em;--e-global-typography-text-font-family:"Archivo";--e-global-typography-text-font-size:17px;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.65em;--e-global-typography-accent-font-family:"Archivo";--e-global-typography-accent-font-size:12px;--e-global-typography-accent-font-weight:500;--e-global-typography-accent-text-transform:uppercase;--e-global-typography-accent-font-style:normal;--e-global-typography-accent-letter-spacing:0.2em;--e-global-typography-eyebrow-font-family:"Archivo";--e-global-typography-eyebrow-font-size:11px;--e-global-typography-eyebrow-font-weight:500;--e-global-typography-eyebrow-text-transform:uppercase;--e-global-typography-eyebrow-letter-spacing:0.26em;--e-global-typography-btnlabl-font-family:"Archivo";--e-global-typography-btnlabl-font-size:12px;--e-global-typography-btnlabl-font-weight:500;--e-global-typography-btnlabl-text-transform:uppercase;--e-global-typography-btnlabl-letter-spacing:0.2em;--e-global-typography-txtlink-font-family:"Archivo";--e-global-typography-txtlink-font-size:11.5px;--e-global-typography-txtlink-font-weight:500;--e-global-typography-txtlink-text-transform:uppercase;--e-global-typography-txtlink-letter-spacing:0.2em;--e-global-typography-ledecpy-font-family:"Archivo";--e-global-typography-ledecpy-font-size:clamp(1.02rem, 1.25vw, 1.14rem);--e-global-typography-ledecpy-font-weight:300;--e-global-typography-ledecpy-line-height:1.72em;--e-global-typography-smldata-font-family:"Archivo";--e-global-typography-smldata-font-size:10.5px;--e-global-typography-smldata-font-weight:500;--e-global-typography-smldata-text-transform:uppercase;--e-global-typography-smldata-letter-spacing:0.24em;color:#141110;font-family:"Archivo", Georgia, serif;font-size:17px;font-weight:400;line-height:1.65em;}.elementor-kit-5 e-page-transition{background-color:#FFBC7D;}.elementor-kit-5 a{color:#632323;}body{overflow-x:inherit !important;}.elementor a, .elementor a:link, .elementor a:focus, .elementor a:active, .elementor a:hover{text-decoration:inherit !important;}.elementor a:link, .elementor .smooth-hover a:link, {transition:inherit;}.elementor-kit-5 h1{font-family:"Cormorant Garamond", Georgia, serif;font-size:clamp(3.13rem, 6.03vw, 5.45rem);font-weight:500;line-height:1.04em;letter-spacing:-0.012em;}.elementor-kit-5 h2{font-family:"Cormorant Garamond", Georgia, serif;font-size:clamp(2.44rem, 4.18vw, 3.94rem);font-weight:500;line-height:1.08em;letter-spacing:-0.012em;}.elementor-kit-5 h3{font-family:"Cormorant Garamond", Georgia, serif;font-size:clamp(1.53rem, 2.2vw, 2.09rem);font-weight:500;line-height:1.16em;letter-spacing:-0.012em;}.elementor-kit-5 h4{font-family:"Cormorant Garamond", Georgia, serif;font-size:clamp(1.2rem, 1.6vw, 1.5rem);font-weight:500;line-height:1.16em;letter-spacing:-0.012em;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1680px;}.e-con{--container-max-width:1680px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:600px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start custom CSS *//* ============================================================
   FOUR SEASONS AUCTION GALLERY - DESIGN SYSTEM
   Single source of truth. Lives here (Site Settings > Custom CSS) so the
   Elementor editor renders with the real colours, not just the front end.
   Rules beat Elementor's own output on SPECIFICITY (widget-class .elementor-kit-5s
   such as .elementor-widget-button.btn--solid, or !important where Elementor
   writes per-element colour) rather than on load order - do not rely on this
   file loading last, because it does not.
   ============================================================ */



/* ============================================================
   FOUR SEASONS AUCTION GALLERY
   Only what Elementor Pro / Crocoblock cannot do natively (notes 1.3).
   Class names match the mockup so the two stay traceable (notes 7).
   ============================================================ */
:root{
  --burgundy:#632323; --burgundy-dk:#4A1919;
  --ink:#141110; --ink-2:#221A17;
  --brass:#A8813E; --brass-lt:#C9A567;
  --watermark:#B9A98C;
  --parchment:#EFE9DE; --parchment-lt:#F7F3EC;
  --stone:#D9D0C2; --muted:#6B625B; --paper:#FFFDF9;
  --display:'Cormorant Garamond', Georgia, serif;
  --body:'Archivo', system-ui, sans-serif;
  --gutter:clamp(22px, 4.2vw, 72px);
  --band-overlap:72px;
}
@media (max-width:1080px){ :root{ --band-overlap:60px } }

/* ---------- Type primitives ---------- */
.ital{ font-style:italic; color:var(--burgundy) }
.sec--dark .ital, .sec--burg .ital, .close .ital{ color:var(--brass-lt) }

.eyebrow, .eyebrow p{
  font-family:var(--body); font-size:11px; font-weight:500;
  letter-spacing:.26em; text-transform:uppercase;
  color:var(--brass); margin:0 0 22px; line-height:1.5;
}
.eyebrow--onDark, .eyebrow--onDark p{ color:var(--brass-lt) }
.lede, .lede p{
  font-size:clamp(1.02rem,1.25vw,1.14rem); color:var(--muted);
  line-height:1.72; font-weight:300;
}
.lede--onDark, .lede--onDark p{ color:rgba(239,233,222,.72) }
.meta, .meta p{
  font-size:11px; letter-spacing:.22em; text-transform:uppercase;
  font-weight:500; color:var(--muted); margin:0;
}

/* ---------- Buttons (notes 5.1) ---------- */
.btn--solid .elementor-button, .btn--line .elementor-button,
.btn--brass .elementor-button, .btn--ghostLight .elementor-button{
  font-family:var(--body); font-size:12px; font-weight:500;
  letter-spacing:.2em; text-transform:uppercase;
  padding:15px 28px; border:1px solid transparent; border-radius:2px;
  display:inline-flex; align-items:center; gap:.7em;
  transition:background .25s ease,color .25s ease,border-color .25s ease;
}
.btn--solid .elementor-button{ background:var(--burgundy); color:var(--paper); border-color:var(--burgundy) }
.btn--solid .elementor-button:hover{ background:var(--ink); border-color:var(--ink); color:var(--paper) }
.btn--line .elementor-button{ background:transparent; color:var(--ink); border-color:var(--ink) }
.btn--line .elementor-button:hover{ background:var(--ink); color:var(--paper) }
.btn--brass .elementor-button{ background:var(--brass); color:var(--ink); border-color:var(--brass) }
.btn--brass .elementor-button:hover{ background:var(--brass-lt); border-color:var(--brass-lt); color:var(--ink) }
.btn--ghostLight .elementor-button{ background:transparent; color:var(--parchment); border-color:rgba(239,233,222,.42) }
.btn--ghostLight .elementor-button:hover{ background:var(--parchment); color:var(--ink); border-color:var(--parchment) }
.elementor-button .elementor-button-icon{ transition:transform .25s ease }
.elementor-button:hover .elementor-button-icon{ transform:translateX(4px) }

/* ---------- Text link (notes 5.2) ---------- */
.txtlink a, a.txtlink, .txtlink .elementor-button{
  display:inline-flex; align-items:center; gap:.6em;
  font-family:var(--body); font-size:11.5px; font-weight:500;
  letter-spacing:.2em; text-transform:uppercase;
  border-bottom:1px solid var(--brass); padding-bottom:5px;
  color:var(--ink); background:none; border-radius:0;
}
.txtlink--light a, a.txtlink--light, .txtlink--light .elementor-button{ color:var(--parchment) }

/* ---------- Section backgrounds (notes 4) ---------- */
.sec--paper{ background:var(--paper) }
.sec--parch{ background:var(--parchment) }
.sec--dark{ background:var(--ink); color:var(--parchment) }
.sec--burg{ background:var(--burgundy); color:var(--parchment) }
.sec--dark h1,.sec--dark h2,.sec--dark h3,.sec--dark h4,
.sec--burg h1,.sec--burg h2,.sec--burg h3,.sec--burg h4{ color:var(--parchment) }

/* ---------- Hairline rules (notes 5.8) ---------- */
.rule-top{ border-top:1px solid var(--stone) }
.sec--dark .rule-top{ border-top-color:rgba(239,233,222,.2) }
.rule-brass{ border-top:1px solid rgba(168,129,62,.34) }

/* ---------- Hero catalogue plate (notes 5.4) ---------- */
.plate{ position:relative }
.plate::before{
  content:''; position:absolute;
  top:26px; left:26px; right:26px;
  bottom:calc(var(--band-overlap) + 26px);
  border:1px solid rgba(168,129,62,.34);
  pointer-events:none; z-index:2;
}
.plate img{ filter:drop-shadow(0 40px 60px rgba(0,0,0,.55)) }

/* ---------- Auction band (notes 6.1) ---------- */
/* Negative margin lives here, tied to the same token as the plate frame. */
.band{ margin-top:calc(var(--band-overlap) * -1); position:relative; z-index:5 }
.band .dot{
  width:7px; height:7px; border-radius:50%;
  background:var(--brass-lt); position:relative; display:inline-block;
}
.band .dot::after{
  content:''; position:absolute; inset:-5px; border-radius:50%;
  border:1px solid var(--brass-lt); opacity:.5;
  animation:fsPulse 2.6s ease-out infinite;
}
@keyframes fsPulse{ 0%{transform:scale(.6);opacity:.7} 100%{transform:scale(1.5);opacity:0} }
.clock{ border-left:1px solid rgba(239,233,222,.2); border-right:1px solid rgba(239,233,222,.2) }
.clock b, .clock .fs-cd-num{
  font-family:var(--display); font-weight:400; line-height:1;
  font-variant-numeric:tabular-nums;
  font-size:calc(clamp(1.6rem,2.6vw,2.3rem) * 1.16);
}
.clock span, .clock .fs-cd-lbl{
  font-family:var(--body); font-size:9.5px; letter-spacing:.24em;
  text-transform:uppercase; color:rgba(239,233,222,.55);
  display:block; margin-top:9px;
}
@media (max-width:1080px){
  .clock{ border-left:0; border-right:0;
    border-top:1px solid rgba(239,233,222,.2);
    border-bottom:1px solid rgba(239,233,222,.2) }
}

/* ---------- Services bento (notes 5.3) ---------- */
.card{ position:relative; overflow:hidden; border-radius:2px; isolation:isolate }
.card::after{
  content:''; position:absolute; inset:0; z-index:0; pointer-events:none;
  background:linear-gradient(175deg,rgba(20,17,16,.24) 0%,rgba(20,17,16,.62) 46%,rgba(35,17,17,.93) 100%);
}
.card > *{ position:relative; z-index:1 }
.card{ transition:none }
.card .fs-card-img{
  position:absolute; inset:0; z-index:-1;
  background-size:cover; background-position:center;
  transition:transform 1.1s cubic-bezier(.2,.7,.2,1);
}
.card:hover .fs-card-img{ transform:scale(1.045) }
.card__k, .card__k p{
  font-family:var(--body); font-size:10px; letter-spacing:.28em;
  text-transform:uppercase; color:var(--brass-lt); margin:0 0 14px;
}
.card p{ color:rgba(239,233,222,.74); font-weight:300 }
.card--lg{ min-height:560px }
.card--sm{ min-height:271px }
@media (max-width:900px){ .card--lg{min-height:430px} .card--sm{min-height:300px} }

/* ---------- Process steps (notes 6.4) ---------- */
.steps{ border-top:1px solid var(--stone) }
.step{ position:relative }
.step::before{
  content:''; position:absolute; top:-1px; left:0; width:0; height:2px;
  background:var(--burgundy); transition:width .7s cubic-bezier(.2,.7,.2,1);
}
.step.is-in::before{ width:100% }
.step:nth-child(2)::before{ transition-delay:.12s }
.step:nth-child(3)::before{ transition-delay:.24s }
.step:nth-child(4)::before{ transition-delay:.36s }
.step__n, .step__n p{
  font-family:var(--body); font-size:11px; font-weight:500;
  letter-spacing:.2em; color:var(--brass); margin:0 0 20px;
}

/* ---------- Category tiles ---------- */
.cat{ position:relative; overflow:hidden; border-radius:2px; aspect-ratio:3/4 }
/* Scrim + image now live on the container itself (Elementor background image +
   background overlay on .cat). Stacking is set once, further down. */
.cat h4{
  font-family:var(--body); font-size:12px; letter-spacing:.16em;
  text-transform:uppercase; font-weight:500;
  color:var(--parchment); line-height:1.5; margin:0;
}

/* ---------- Lots rail (notes 5.5) ---------- */
.rail{
  display:flex; gap:20px; overflow-x:auto;
  scroll-snap-type:x mandatory; padding-bottom:20px;
  scrollbar-width:thin; scrollbar-color:rgba(168,129,62,.5) transparent;
}
.rail::-webkit-scrollbar{ height:3px }
.rail::-webkit-scrollbar-thumb{ background:rgba(168,129,62,.5) }
.rail::-webkit-scrollbar-track{ background:rgba(239,233,222,.12) }
.lot{ flex:0 0 clamp(230px,25vw,282px); scroll-snap-align:start }
.lot__frame{
  background:var(--ink-2); border:1px solid rgba(168,129,62,.24);
  height:300px; display:flex; align-items:center; justify-content:center;
  padding:26px; margin-bottom:18px; transition:border-color .35s ease;
}
.lot:hover .lot__frame{ border-color:rgba(168,129,62,.6) }
.lot__frame img{
  max-height:100%; width:auto; object-fit:contain;
  filter:drop-shadow(0 24px 34px rgba(0,0,0,.5));
  transition:transform .6s cubic-bezier(.2,.7,.2,1);
}
.lot:hover .lot__frame img{ transform:scale(1.05) }
.lot__n, .lot__n p{
  font-family:var(--body); font-size:10.5px; font-weight:500;
  letter-spacing:.22em; color:var(--brass); margin:0 0 9px;
}

/* ---------- Appraisal authority ---------- */
.seal__badge{
  width:66px; height:66px; flex:none; border-radius:50%;
  border:1px solid var(--brass); display:grid; place-items:center;
  background:var(--parchment-lt); font-family:var(--display);
  font-size:18.5px; letter-spacing:.06em; color:var(--burgundy); font-weight:600;
}
.uses{ border-top:1px solid var(--stone) }
.uses .uses__row{
  border-bottom:1px solid var(--stone); padding:22px 0;
  display:grid; grid-template-columns:190px 1fr; gap:24px; align-items:baseline;
}
@media (max-width:980px){ .uses .uses__row{ grid-template-columns:1fr; gap:7px } }

/* ---------- Reach / platforms / towns ---------- */
.platforms .fs-chip{
  border:1px solid var(--stone); border-radius:2px; padding:9px 16px;
  font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted);
}
.towns{ border-top:1px solid var(--stone) }
.towns .fs-town{
  font-family:var(--display); font-size:calc(clamp(1.05rem,1.5vw,1.3rem) * 1.16);
  color:var(--muted); padding-right:16px; margin-right:16px;
  border-right:1px solid var(--stone);
}
.towns .fs-town:last-child{ border-right:0 }

/* ---------- Testimonial ---------- */
.quote__mark{
  font-family:var(--display); font-size:4.2rem; line-height:.5;
  color:var(--brass-lt); display:block; margin-bottom:26px;
}
.quote blockquote, .quote__body{
  font-family:var(--display); font-style:italic; font-weight:500;
  font-size:calc(clamp(1.35rem,2.5vw,2.1rem) * 1.16);
  line-height:1.42; margin:0 0 32px; color:var(--parchment);
}
.quote cite, .quote__cite{
  font-style:normal; font-size:11px; letter-spacing:.24em;
  text-transform:uppercase; color:var(--brass-lt);
}

/* ---------- Bidding options ---------- */
.bids{ border:1px solid var(--stone); border-radius:2px; background:var(--paper) }
.bid{ border-right:1px solid var(--stone); transition:background .3s }
.bid:last-child{ border-right:0 }
.bid:hover{ background:var(--parchment-lt) }
.bid svg{ width:26px; height:26px; stroke:var(--burgundy); fill:none; stroke-width:1.3 }
@media (max-width:1100px){ .bid{ border-bottom:1px solid var(--stone) } }
@media (max-width:600px){ .bid{ border-right:0 } }

/* ---------- Signup ---------- */
.signup input[type=email], .signup input[type=text]{
  background:transparent; border:1px solid rgba(239,233,222,.3); border-radius:2px;
  padding:15px 16px; color:var(--parchment); font-family:var(--body); font-size:14px;
}
.signup input::placeholder{ color:rgba(239,233,222,.4) }
.signup input:focus{ outline:2px solid var(--brass); outline-offset:2px; border-color:transparent }

/* ---------- Footer ---------- */
.ftr__socials a{
  width:42px; height:42px; border:1px solid rgba(239,233,222,.22);
  border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  transition:.25s;
}
.ftr__socials svg{ width:16px; height:16px; display:block }
/* Yelp glyph is stroke-based; a blanket fill floods it solid (notes 5.7) */
.ftr__socials svg[stroke], .util__socials svg[stroke]{ fill:none }
.ftr__socials a:hover svg[stroke], .util__socials a:hover svg[stroke]{ fill:none }
.ftr__partner{ border:1px solid rgba(239,233,222,.16); border-radius:2px }

/* ---------- Watermark (notes 5.6) ---------- */
.sec--mark{ position:relative; overflow:hidden }
.sec--mark > .e-con-inner, .sec--mark > .elementor-widget-wrap{ position:relative; z-index:1 }
.sec__mark{
  position:absolute; z-index:0; pointer-events:none;
  top:clamp(28px,3.4vw,64px); left:clamp(28px,3.4vw,64px);
  height:clamp(220px,41vw,540px); width:auto;
  aspect-ratio:1392/1542; color:var(--watermark); opacity:.10;
}
.sec__mark svg{ height:100%; width:auto; display:block }
@media (max-width:760px){
  .sec__mark{ opacity:.08; height:clamp(190px,55vw,320px) }
}

/* ---------- Scroll reveal (notes 6.3) ---------- */
.rv{
  opacity:0; transform:translateY(22px);
  transition:opacity .85s cubic-bezier(.2,.7,.2,1), transform .85s cubic-bezier(.2,.7,.2,1);
}
.rv.is-in{ opacity:1; transform:none }
.rv-d1{ transition-delay:.09s } .rv-d2{ transition-delay:.18s } .rv-d3{ transition-delay:.27s }

/* ---------- Reduced motion (notes 6.5 — non-negotiable) ---------- */
@media (prefers-reduced-motion:reduce){
  *{ animation:none !important; transition-duration:.01ms !important }
  .rv{ opacity:1; transform:none }
  .step::before{ width:100% }
  html{ scroll-behavior:auto }
}

/* ---------- Focus (notes 6.6 — do not remove outlines) ---------- */
:focus-visible{ outline:2px solid var(--brass); outline-offset:3px }

/* ---------- Header (notes 6.2) ---------- */
.hdr{ border-bottom:1px solid var(--stone) }
.hdr.elementor-sticky--effects{ box-shadow:0 10px 34px -20px rgba(20,17,16,.5) }
/* ============================================================
   HEADER / FOOTER  (Theme Builder templates)
   ============================================================ */

/* ---------- Utility bar ---------- */
.util{ font-size:11.5px; letter-spacing:.09em; color:rgba(239,233,222,.7) }
.util p{ margin:0; font-size:11.5px; line-height:1.4 }
.util a{ color:inherit; text-decoration:none }
.util a:hover{ color:var(--brass-lt) }
.util__cred p{ color:var(--brass-lt) }
@media (max-width:1080px){ .util__cred{ display:none } }
.util__socials .elementor-social-icon{
  background:transparent !important; width:auto; height:auto;
  padding:0; margin:0 0 0 13px; font-size:13px;
}
.util__socials .elementor-social-icon i{ color:rgba(239,233,222,.65); transition:color .2s }
.util__socials .elementor-social-icon:hover i{ color:var(--brass-lt) }

/* ---------- Header (notes 6.2). Elementor native sticky + CSS shrink;
   Sticky Header Effects registers no controls on Flexbox Containers. ---------- */
.hdr{ transition:box-shadow .3s ease }
.hdr__bar{ transition:min-height .3s ease }
.hdr.elementor-sticky--effects .hdr__bar{ min-height:108px !important }
.brand img{ height:clamp(46px,4.6vw,74px); width:auto; transition:height .3s ease }
.hdr.elementor-sticky--effects .brand img{ height:clamp(38px,3.4vw,54px) }
.hdr__phone p{
  margin:0; font-size:13px; letter-spacing:.06em;
  font-weight:500; white-space:nowrap;
}
.hdr__phone a{ color:var(--ink); text-decoration:none }
.nav .elementor-nav-menu a{
  font-family:var(--body); font-size:11.5px; font-weight:500;
  letter-spacing:.17em; text-transform:uppercase; color:var(--ink);
}
.nav .elementor-nav-menu--dropdown a{
  font-size:13px; letter-spacing:.02em; text-transform:none; color:var(--muted);
}
/* Dropdown states. Elementor Pro paints every sub-item #3f444b on #fff at
   (0,2,0) for :hover, :focus, .highlighted AND .elementor-item-active. The
   dropdown colour rule above already beat the text half of that, which left
   the CURRENT item as grey on slate - so set both halves, for both states. */
.nav .elementor-nav-menu--dropdown a:hover,
.nav .elementor-nav-menu--dropdown a:focus,
.nav .elementor-nav-menu--dropdown a.highlighted,
.nav .elementor-nav-menu--dropdown a.elementor-item-active{
  background:var(--ink); color:var(--brass-lt);
}


/* ---------- Footer ---------- */
.ftr{ color:rgba(239,233,222,.66); font-size:14px }
.ftr__logo .elementor-icon{ display:block; color:var(--parchment) }
.ftr__logo svg{ height:clamp(66px,6vw,92px); width:auto; display:block; overflow:visible }
.ftr__blurb p{
  font-size:13.5px; line-height:1.72; font-weight:300;
  color:rgba(239,233,222,.55); max-width:38ch; margin:26px 0 0;
}
/* Elementor's widget defaults land ON the inner element
   (.elementor-widget-heading .elementor-heading-title = 0,2,0;
    .elementor-widget-icon-list .elementor-icon-list-text = 0,2,0) and TIE with a bare
   class .elementor-kit-5, so they win on load order. Anything that must beat them is qualified
   with the widget class. Without this the footer headings inherit the blanket Ink and
   go invisible on the Ink ground. */
.ftr__h{ margin:0 0 20px }
/* The 20px above is (0,1,0) and loses to Elementor's own
   `.elementor-widget.elementor-widget{margin-block-end:0}`, so the gold column
   headings sat almost on top of their first link. Restate at (0,4,0) with the
   same logical property, and open it up. Gotcha 17. */
.ftr .elementor-widget.elementor-widget.ftr__h{ margin-block-end:26px }
.ftr .elementor-widget.elementor-widget.ftr__partner-t{ margin-block-end:10px }
/* Breathing room between the contact list and the Aardvark box. (0,2,0) beats
   Elementor's own .e-con margin var. */
.ftr__partner.e-con{ margin-block-start:34px }
.ftr .elementor-widget-heading.ftr__h .elementor-heading-title{
  font-family:var(--body) !important; font-size:10.5px !important;
  font-weight:500 !important; letter-spacing:.24em !important; text-transform:uppercase;
  color:var(--brass-lt) !important; line-height:1.4 !important;
}
.ftr__list .elementor-icon-list-item{ margin-bottom:11px }
.elementor-widget-icon-list.ftr__list .elementor-icon-list-text{
  font-size:13.5px; font-weight:300; color:rgba(239,233,222,.66); transition:color .2s;
}
.elementor-widget-icon-list.ftr__list a:hover .elementor-icon-list-text{ color:var(--brass-lt) }
.ftr__contact .elementor-icon-list-item{ align-items:flex-start; margin-bottom:15px }
.ftr__contact .elementor-icon-list-icon{ margin-top:4px }
/* The two rules above are (0,2,0) and tie with Elementor's own
   `.elementor-widget-icon-list .elementor-icon-list-item{align-items:center}`,
   which loads later - so the map pin centred itself against the two-line
   address. Restate at (0,4,0). The 5px nudges the icon optically onto the
   FIRST line's cap height rather than its box top. */
.ftr .elementor-widget-icon-list.ftr__contact .elementor-icon-list-item{ align-items:flex-start }
.ftr .elementor-widget-icon-list.ftr__contact .elementor-icon-list-icon{ margin-top:5px }
.elementor-widget-icon-list.ftr__contact .elementor-icon-list-icon i{ color:var(--brass); font-size:13px }
.elementor-widget-icon-list.ftr__contact .elementor-icon-list-icon svg{ fill:var(--brass); width:13px; height:13px }
.ftr__socials{ margin-top:24px }
/* Font Awesome runs in inline-SVG mode on this install, so the glyph is an
   <svg fill:...>, not an <i color:...>. Driving Elementor's own
   --e-social-icon-icon-color colours both without fighting either rule. */
.elementor-widget-social-icons.ftr__socials .elementor-social-icon{
  --e-social-icon-icon-color:rgba(239,233,222,.62);
  width:42px; height:42px; background:transparent !important;
  border:1px solid rgba(239,233,222,.22); border-radius:50%;
  transition:.25s; margin:0 10px 0 0;
}
.elementor-widget-social-icons.ftr__socials .elementor-social-icon i{ font-size:16px; transition:.25s }
.elementor-widget-social-icons.ftr__socials .elementor-social-icon svg{ width:16px; height:16px; transition:.25s }
.elementor-widget-social-icons.ftr__socials .elementor-social-icon:hover{
  --e-social-icon-icon-color:var(--ink);
  border-color:var(--brass); background:var(--brass) !important;
}
.ftr__partner{ border:1px solid rgba(239,233,222,.16); border-radius:2px }
.ftr__partner-t{ margin:0 0 8px }
.ftr .elementor-widget-heading.ftr__partner-t .elementor-heading-title{
  font-family:var(--display) !important; font-size:calc(1.14rem * 1.16) !important;
  font-weight:500 !important; color:var(--parchment) !important;
  letter-spacing:normal !important; line-height:1.3 !important;
}
.ftr__partner-p p{
  font-size:12.5px; margin:0 0 14px; color:rgba(239,233,222,.5);
  font-weight:300; line-height:1.6;
}
.ftr__bar{ border-top:1px solid rgba(239,233,222,.14) }
.ftr__copy p{ margin:0; font-size:12px; color:rgba(239,233,222,.4) }
.ftr__legal .elementor-icon-list-items{ gap:24px }
.ftr__legal .elementor-icon-list-item{ margin:0 }
.elementor-widget-icon-list.ftr__legal .elementor-icon-list-text{ font-size:12px; color:rgba(239,233,222,.4) }
.elementor-widget-icon-list.ftr__legal a:hover .elementor-icon-list-text{ color:var(--brass-lt) }
/* ============================================================
   HOMEPAGE COMPONENTS
   ============================================================ */
.sec__head{ max-width:760px }
.sec__head--split{ max-width:none }
.sec__head-lede{ margin-top:20px }

/* ---------- Hero ---------- */
.hero__h1{ margin-bottom:26px }
.hero__lede{ max-width:47ch; margin:0 0 38px }
.hero__actions{ margin-bottom:44px }
.hero__proof{ border-top:1px solid var(--stone) }
.proof__item{ padding:18px 26px 0 0; margin-right:26px; border-right:1px solid var(--stone) }
.proof__item:last-child{ border-right:0; margin-right:0; padding-right:0 }
.proof__item p{ margin:0 }
.proof__item b{
  display:block; font-family:var(--display); font-weight:500;
  font-size:calc(1.6rem * 1.16); line-height:1;
}
.proof__item span{
  display:block; font-family:var(--body); font-size:10.5px; letter-spacing:.2em;
  text-transform:uppercase; color:var(--muted); margin-top:8px;
}

/* ---------- Catalogue plate ---------- */
.plate__img{ margin-bottom:30px; max-width:430px; width:100% }
.plate__img img{ height:clamp(320px,36vw,432px); object-fit:contain; width:100% }
.plate__cap{
  border-top:1px solid rgba(168,129,62,.4); padding-top:20px;
  text-align:center; max-width:430px;
}
.plate__cap .k{
  font-family:var(--body); font-size:10px; letter-spacing:.28em; text-transform:uppercase;
  color:var(--brass-lt); display:block; margin:0 0 12px;
}
.plate__cap h4{
  font-family:var(--display); font-size:calc(1.1rem * 1.16); font-style:italic;
  color:var(--parchment); line-height:1.4; font-weight:400; margin:0 0 10px;
}
.plate__cap p{ margin:0; font-size:12.5px; color:rgba(239,233,222,.5); letter-spacing:.04em }

/* ---------- Auction band ---------- */
.band__k p{
  font-family:var(--body); font-size:10.5px; letter-spacing:.28em;
  text-transform:uppercase; color:var(--brass-lt); margin:0 0 12px;
  display:flex; align-items:center; gap:11px;
}
.band__live p::before{
  content:''; width:7px; height:7px; border-radius:50%;
  background:var(--brass-lt); flex:none; position:relative;
  box-shadow:0 0 0 0 rgba(201,165,103,.5); animation:fsPulse 2.6s ease-out infinite;
}
@keyframes fsPulse{
  0%{ box-shadow:0 0 0 0 rgba(201,165,103,.5) }
  100%{ box-shadow:0 0 0 9px rgba(201,165,103,0) }
}
.band__date{
  font-family:var(--display); color:var(--parchment);
  font-size:calc(clamp(1.35rem,2.1vw,1.85rem) * 1.16);
  line-height:1.15; margin:0 0 8px;
}
.band__sub{ font-size:12.5px; color:rgba(239,233,222,.66); margin:0; letter-spacing:.03em }
.fs-auction-ts{
  position:absolute !important; width:1px; height:1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap;
}
.clock{ justify-content:center; flex-wrap:wrap }
.fs-cd-cell{ text-align:center; min-width:52px }
.band__catalog .elementor-button,
.band__catalog a{
  background:var(--brass); color:var(--ink); border:1px solid var(--brass);
  font-family:var(--body); font-size:12px; font-weight:500; letter-spacing:.2em;
  text-transform:uppercase; padding:15px 28px; border-radius:2px;
  display:inline-flex; align-items:center; text-decoration:none;
  transition:background .25s ease,border-color .25s ease;
}
.band__catalog a:hover{ background:var(--brass-lt); border-color:var(--brass-lt) }
@media (max-width:1080px){ .clock{ justify-content:flex-start; padding-block:20px } }

/* ---------- Services bento ---------- */
.card__img{ position:absolute; inset:0; z-index:0; margin:0 }
.card__img img{
  width:100%; height:100%; object-fit:cover; display:block;
  transition:transform 1.1s cubic-bezier(.2,.7,.2,1);
}
.card:hover .card__img img{ transform:scale(1.045) }
.card::after{ z-index:1 }
.card > *:not(.card__img){ position:relative; z-index:2 }
.card__t, .card__t a{ color:var(--parchment) !important; margin-bottom:12px }
.card__t--lg{ font-size:calc(clamp(1.9rem,2.7vw,2.5rem) * 1.16) !important }
.card__p p{
  margin:0 0 22px; font-size:14.5px; line-height:1.68;
  color:rgba(239,233,222,.74); max-width:44ch; font-weight:300;
}

/* ---------- Process ---------- */
.step{ border-right:1px solid var(--stone) }
.step:last-child{ border-right:0 }
.step__t{ font-size:calc(1.34rem * 1.16) !important; margin-bottom:12px }
.step__p p{ margin:0; font-size:14.5px; line-height:1.7; color:var(--muted); font-weight:300 }
.steps__foot{ border-top:1px solid var(--stone) }
.steps__foot-p p{ margin:0; font-size:14.5px; color:var(--muted); font-weight:300; max-width:56ch }
@media (max-width:1024px){
  .step:nth-child(2){ border-right:0 }
  .step:nth-child(3), .step:nth-child(4){ border-top:1px solid var(--stone) }
  .step:nth-child(3){ padding-left:0 !important }
}
@media (max-width:600px){
  .step{ border-right:0; padding-left:0 !important; padding-right:0 !important;
    border-top:1px solid var(--stone) }
}

/* ---------- Categories ---------- */
.cat__t{
  font-family:var(--body) !important; font-size:12px !important; letter-spacing:.16em;
  text-transform:uppercase; font-weight:500 !important;
  color:var(--parchment) !important; line-height:1.5; margin:0;
}

/* ---------- Lots rail ---------- */
.lot{ flex:0 0 clamp(230px,25vw,282px) !important; width:auto !important }
.lot__img{ margin:0; max-height:100%; display:flex; align-items:center; justify-content:center }
.lot__img img{
  max-height:248px; width:auto; object-fit:contain;
  filter:drop-shadow(0 24px 34px rgba(0,0,0,.5));
  transition:transform .6s cubic-bezier(.2,.7,.2,1);
}
.lot:hover .lot__img img{ transform:scale(1.05) }
.lot__t{
  font-family:var(--display) !important; font-size:calc(1.06rem * 1.16) !important;
  font-weight:500 !important; line-height:1.4; color:var(--parchment) !important; margin:0 0 8px;
}
.lot__cat p{
  margin:0; font-size:11px; letter-spacing:.18em; text-transform:uppercase;
  color:rgba(239,233,222,.42);
}
.rail__prev .elementor-button, .rail__next .elementor-button{
  width:44px; height:44px; padding:0; border:1px solid rgba(239,233,222,.28);
  background:transparent; color:var(--parchment); border-radius:2px;
  display:grid; place-items:center; transition:.25s;
}
.rail__prev .elementor-button:hover, .rail__next .elementor-button:hover{
  background:var(--parchment); color:var(--ink); border-color:var(--parchment);
}

/* ---------- Appraisal ---------- */
.appr__card{ border:1px solid var(--stone); border-radius:2px }
.seal{ border-bottom:1px solid var(--stone) }
.seal__badge p{
  width:66px; height:66px; margin:0; border-radius:50%; border:1px solid var(--brass);
  display:grid; place-items:center; background:var(--parchment-lt);
  font-family:var(--display); font-size:18.5px; letter-spacing:.06em;
  color:var(--burgundy); font-weight:600;
}
.seal__t p{ margin:0 }
.seal__t b{
  display:block; font-family:var(--display); font-size:calc(1.26rem * 1.16);
  font-weight:500; line-height:1.25;
}
.seal__t span{
  display:block; font-size:11px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--muted); margin-top:7px;
}
.appr__bio p{ font-size:14.8px; line-height:1.75; color:var(--muted); font-weight:300; margin:0 }
.appr__stat{ margin-top:28px; padding-top:24px; border-top:1px solid var(--stone) }
.appr__stat p{ margin:0 }
.appr__stat b{
  font-family:var(--display); font-size:calc(2.7rem * 1.16); font-weight:500;
  line-height:1; color:var(--burgundy); display:block;
}
.appr__stat span{
  font-size:12.5px; color:var(--muted); display:block; margin-top:10px;
  font-weight:300; line-height:1.6;
}
.uses .uses__row b{ font-family:var(--display); font-size:calc(1.2rem * 1.16); font-weight:500 }
.uses .uses__row span{ font-size:14.5px; color:var(--muted); font-weight:300; line-height:1.65 }
.uses__note-t p{ margin:0; font-size:13px; color:var(--muted); font-weight:300 }

/* ---------- Reach ---------- */
.reach__h{ margin-bottom:22px }
.reach__img{ position:relative; border-radius:2px; overflow:hidden }
.reach__photo{ margin:0; width:100% }
.reach__photo img{ width:100%; height:clamp(340px,42vw,540px); object-fit:cover; opacity:.92; display:block }
.reach__tag{
  position:absolute; left:0; bottom:0; background:var(--burgundy);
  color:var(--parchment); padding:20px 26px; max-width:78%; margin:0;
}
.reach__tag p{ margin:0 }
.reach__tag b{
  font-family:var(--display); font-size:calc(1.45rem * 1.16);
  font-weight:500; display:block; line-height:1;
}
.reach__tag span{
  font-size:10.5px; letter-spacing:.2em; text-transform:uppercase;
  color:rgba(239,233,222,.7); display:block; margin-top:8px;
}
.platforms{ border-top:1px solid var(--stone) }
.platforms__k p{ margin:0 0 16px }
.fs-chip p{ margin:0 }

/* ---------- Testimonial ---------- */
.quote{ max-width:920px; margin:0 auto; text-align:center }
.quote__mark p{ margin:0 0 26px; font-family:var(--display); font-size:4.2rem; line-height:.5; color:var(--brass-lt) }
.quote__body p{
  font-family:var(--display); font-style:italic; font-weight:500;
  font-size:calc(clamp(1.35rem,2.5vw,2.1rem) * 1.16);
  line-height:1.42; margin:0 0 32px; color:var(--parchment);
}
.quote__cite p{
  margin:0; font-size:11px; letter-spacing:.24em; text-transform:uppercase; color:var(--brass-lt);
}
.quote__cite span{ display:block; color:rgba(239,233,222,.45); margin-top:8px; letter-spacing:.16em }

/* ---------- Bidding ---------- */
.bid__icon{ margin-bottom:20px }
.bid__icon .elementor-icon{ color:var(--burgundy); font-size:26px }
.bid__t{ font-size:calc(1.2rem * 1.16) !important; margin-bottom:9px }
.bid__p p{ margin:0 0 16px; font-size:13.5px; line-height:1.62; color:var(--muted); font-weight:300 }
.bid__link p{ margin:0; display:flex; flex-direction:column; align-items:flex-start; gap:10px }
.bid__link a{
  font-size:10.5px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--burgundy); border-bottom:1px solid var(--brass);
  padding-bottom:3px; text-decoration:none;
}

/* ---------- Area + alerts ---------- */
.area__h{ margin-bottom:20px }
.fs-town p{ margin:0 }
.signup{ border-radius:2px }
.signup__h{ color:var(--parchment) !important; margin-bottom:14px }
.signup__p p{ font-size:14px; color:rgba(239,233,222,.62); font-weight:300; margin:0 0 26px; line-height:1.68 }
.signup__note p{ margin:16px 0 0; font-size:11.5px; color:rgba(239,233,222,.4) }
/* Formidable: FIELD styling is custom-property driven, so redefine its own tokens.
   The SUBMIT button is not - its resting state is hardcoded blue at
   .frm_style_formidable-style.with_frm_style .frm_submit button (0,3,1), and the
   variables only kick in on hover/focus. So the button rules below are written at
   0,4,1 to outrank it rather than reach for !important. */
.signup__form .with_frm_style{
  --font:var(--body);
  --field-font-size:14px; --field-height:auto; --line-height:1.3;
  --field-pad:15px 16px; --field-width:100%; --field-margin:0; --field-weight:400;
  --field-border-width:1px; --field-border-style:solid; --border-radius:2px;
  --bg-color:transparent; --bg-color-active:transparent;
  --text-color:var(--parchment);
  --border-color:rgba(239,233,222,.3); --border-color-active:var(--brass);
  --error-font-size:12px;
}
.signup__form .frm_forms{ margin:0 }

/* One row: input flexes, button hugs (mockup .signup__row). Formidable pins every
   child to a 12-column grid with `grid-column:1/span 12 !important`, so switch the
   container to flex - grid-column is inert there and no !important war is needed. */
.signup__form .frm_form_fields .frm_fields_container{
  display:flex; flex-wrap:wrap; align-items:flex-start; gap:10px;
}
.signup__form .frm_form_fields .frm_fields_container > .frm_form_field{
  flex:1 1 220px; min-width:0; margin:0;
}
.signup__form .frm_form_fields .frm_fields_container > .frm_submit{
  flex:0 0 auto; margin:0;
}
/* The honeypot wrapper is only hidden by Formidable's JS; until that runs it sits in
   the row and eats a gap. Hide the wrapper outright. */
.signup__form .frm_fields_container > div:has(.frm_verify){ display:none }

.signup__form input[type=email]::placeholder{ color:rgba(239,233,222,.4) }
/* Formidable's focus rule carries a blue glow and outranks anything reasonable
   (0,7,1 via three :not() clauses), so the shadow is the one !important here. */
.signup__form .frm_forms.with_frm_style .form-field input:focus{
  box-shadow:none !important; outline:2px solid var(--brass); outline-offset:2px;
}

/* ---------- Signup: typed text + success message ----------
   Formidable colours the input at .frm_style_*.with_frm_style input (0,3,1),
   which beat our .signup input rule and painted the typed email Ink on Ink.
   (0,5,1) here, same qualifier idiom as the Consign form. Chrome autofill paints
   its own text + background, so that needs -webkit-text-fill-color and an inset
   shadow to hold the dark field. */
.signup__form [class*="frm_style_"].with_frm_style .form-field input{
  color:var(--parchment); -webkit-text-fill-color:var(--parchment); caret-color:var(--brass);
  background:transparent;
}
.signup__form [class*="frm_style_"].with_frm_style .form-field input:-webkit-autofill,
.signup__form [class*="frm_style_"].with_frm_style .form-field input:-webkit-autofill:hover,
.signup__form [class*="frm_style_"].with_frm_style .form-field input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--parchment);
  box-shadow:0 0 0 1000px var(--ink) inset !important;
  transition:background-color 9999s ease-out 0s;
}
/* Success message on the dark panel: brass hairline, parchment text, no green. */
.signup__form [class*="frm_style_"].with_frm_style .frm_message,
.signup__form .frm_message{
  margin:0; padding:18px 22px; border:1px solid rgba(168,129,62,.55); border-left:3px solid var(--brass);
  border-radius:2px; background:rgba(168,129,62,.08); box-shadow:none;
  color:rgba(239,233,222,.78); font-family:var(--body); font-size:14px; font-weight:300; line-height:1.65;
}
.signup__form .frm_message p{ margin:0; color:inherit }
.signup__form .frm_message p + p{ margin-top:6px }
.signup__form .frm_message strong{
  display:block; margin-bottom:4px; font-family:var(--display); font-weight:500;
  font-size:calc(1.15rem * 1.16); line-height:1.25; color:var(--parchment);
}
.signup__form .frm_forms.with_frm_style .frm_submit button{
  background:var(--brass); border:1px solid var(--brass); color:var(--ink);
  font-family:var(--body); font-size:12px; font-weight:500; letter-spacing:.2em;
  text-transform:uppercase; padding:15px 28px; border-radius:2px;
  height:auto; line-height:1.3; margin:0; box-shadow:none; text-shadow:none;
  cursor:pointer; transition:background .25s ease, border-color .25s ease;
}
.signup__form .frm_forms.with_frm_style .frm_submit button:hover,
.signup__form .frm_forms.with_frm_style .frm_submit button:focus{
  background:var(--brass-lt); border-color:var(--brass-lt); color:var(--ink);
}

/* ---------- Closing CTA ---------- */
.close__h{ max-width:16ch; margin:0 auto 22px; color:var(--parchment) !important }
.close__p p{ max-width:52ch; margin:0 auto 36px; color:rgba(239,233,222,.74); font-weight:300 }
/* ============================================================
   FIXES
   ============================================================ */

/* Utility widgets that must not render as boxes */
.fsag-js-marker, .fsag-behaviour{ display:none !important }

/* ---------- Reveal: progressive enhancement ----------
   Content is VISIBLE by default. It is only hidden once the marker script in the
   header confirms JS is running, so a JS failure can never blank the page.
   (The first build hid it unconditionally - that blanked every section.) */
.rv{ opacity:1; transform:none }
.fs-js .rv{
  opacity:0; transform:translateY(22px);
  transition:opacity .85s cubic-bezier(.2,.7,.2,1), transform .85s cubic-bezier(.2,.7,.2,1);
}
.fs-js .rv.is-in{ opacity:1; transform:none }
.step::before{ width:100% }
.fs-js .step::before{ width:0 }
.fs-js .step.is-in::before{ width:100% }
@media (prefers-reduced-motion:reduce){
  .fs-js .rv{ opacity:1 !important; transform:none !important }
  .fs-js .step::before{ width:100% !important }
}

/* ---------- Elementor sizing defaults ----------
   Elementor gives child containers and widgets width:100%, which stacks anything
   meant to sit inline (nav vs CTA, chips, town list, proof stats, buttons). */
.elementor-widget-button{ width:auto !important; flex:0 0 auto; align-self:flex-start }
.close__actions .elementor-widget-button{ align-self:center }

.util__right, .hdr__cta, .util__item, .util__socials,
.fs-chip, .fs-town, .proof__item, .seal__badge,
.rail__prev, .rail__next, .hdr__phone{
  width:auto !important; flex:0 0 auto;
}
.seal__t{ width:auto !important; flex:1 1 auto }
.steps__foot-p{ flex:1 1 320px }
.uses__note-t{ width:auto !important; flex:1 1 240px }

/* ---------- Header layout ---------- */
.hdr__bar{ flex-wrap:nowrap }
.brand{ width:auto !important; flex:0 0 auto }
.brand img{ width:auto; max-width:none; display:block }
.nav{ width:auto !important; flex:1 1 auto; min-width:0; display:flex; justify-content:flex-end }
.nav .elementor-nav-menu{ flex-wrap:nowrap }
.nav .elementor-nav-menu > li > a.elementor-item{
  padding-left:0; padding-right:0; margin-inline:15px; white-space:nowrap;
}
.nav .elementor-nav-menu--dropdown a.elementor-item{ margin-inline:0; white-space:normal }
@media (max-width:1080px){ .hdr__bar{ flex-wrap:wrap } }

/* ---------- Utility bar ---------- */
.util .e-con-inner{ flex-wrap:nowrap }
.util__socials .elementor-social-icons-wrapper{ flex-wrap:nowrap }

/* ---------- Hero proof row ---------- */
.hero__proof{ align-items:flex-start }

/* ---------- Bento / cards: keep text above the scrim ---------- */
.card__t, .card__k, .card__p, .card .elementor-widget-button{ position:relative; z-index:2 }
.cat__t{ position:relative; z-index:2 }

/* ---------- Lots rail ---------- */
.rail{ flex-wrap:nowrap !important }
.rail__nav{ width:auto !important; flex:0 0 auto }

/* ---------- Band ---------- */
.band__actions{ flex-direction:column; align-items:flex-start }
@media (max-width:1080px){ .band__actions{ flex-direction:row; flex-wrap:wrap } }
/* ============================================================
   LATE-CASCADE OVERRIDES
   Elementor emits .elementor-widget-button .elementor-button (0,2,0) and
   .elementor-widget (0,1,0) from post-11/40/41.css, which load AFTER the kit
   stylesheet - so equal-specificity rules there beat ours. This whole sheet is
   therefore injected at the top of <body> (Header template > HTML widget).
   The rules below additionally out-specify Elementor's per-element output.
   ============================================================ */

/* ---------- Nav ---------- */
.elementor-widget-nav-menu.nav .elementor-nav-menu--main .elementor-item{
  font-family:var(--body); font-size:12.5px; font-weight:500;
  letter-spacing:.17em; text-transform:uppercase; color:var(--ink);
  padding:12px 0; margin-inline:16px; font-style:normal;
}
.elementor-widget-nav-menu.nav .elementor-nav-menu--dropdown .elementor-item{
  font-family:var(--body); font-size:13px; letter-spacing:.02em;
  text-transform:none; color:var(--muted); margin-inline:0; padding:9px 18px;
}

/* ---------- Buttons ---------- */
.elementor-widget-button.btn--solid .elementor-button,
.elementor-widget-button.btn--line .elementor-button,
.elementor-widget-button.btn--brass .elementor-button,
.elementor-widget-button.btn--ghostLight .elementor-button{
  font-family:var(--body); font-size:12px; font-weight:500; font-style:normal;
  letter-spacing:.2em; text-transform:uppercase;
  padding:15px 28px; border-radius:2px; border-width:1px; border-style:solid;
}
.elementor-widget-button.btn--solid .elementor-button{ background-color:var(--burgundy); color:var(--paper); border-color:var(--burgundy) }
.elementor-widget-button.btn--solid .elementor-button:hover{ background-color:var(--ink); border-color:var(--ink); color:var(--paper) }
.elementor-widget-button.btn--line .elementor-button{ background-color:transparent; color:var(--ink); border-color:var(--ink) }
.elementor-widget-button.btn--line .elementor-button:hover{ background-color:var(--ink); color:var(--paper) }
.elementor-widget-button.btn--brass .elementor-button{ background-color:var(--brass); color:var(--ink); border-color:var(--brass) }
.elementor-widget-button.btn--brass .elementor-button:hover{ background-color:var(--brass-lt); border-color:var(--brass-lt); color:var(--ink) }
.elementor-widget-button.btn--ghostLight .elementor-button{ background-color:transparent; color:var(--parchment); border-color:rgba(239,233,222,.42) }
.elementor-widget-button.btn--ghostLight .elementor-button:hover{ background-color:var(--parchment); color:var(--ink); border-color:var(--parchment) }

/* ---------- Text links ---------- */
.elementor-widget-button.txtlink .elementor-button{
  background-color:transparent; border:0; border-bottom:1px solid var(--brass);
  border-radius:0; padding:0 0 5px; font-family:var(--body); font-style:normal;
  font-size:11.5px; font-weight:500; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink);
}
.elementor-widget-button.txtlink--light .elementor-button{ color:var(--parchment) }
.elementor-widget-button.txtlink .elementor-button:hover{ background-color:transparent }

/* ---------- Rail arrows ---------- */
.elementor-widget-button.rail__prev .elementor-button,
.elementor-widget-button.rail__next .elementor-button{
  width:44px; height:44px; padding:0; background-color:transparent;
  border:1px solid rgba(239,233,222,.28); color:var(--parchment);
  border-radius:2px; letter-spacing:0;
}
.elementor-widget-button.rail__prev .elementor-button:hover,
.elementor-widget-button.rail__next .elementor-button:hover{
  background-color:var(--parchment); color:var(--ink); border-color:var(--parchment);
}

/* ---------- Watermark: must not sit in normal flow ---------- */
.elementor-widget-icon.sec__mark{
  position:absolute; z-index:0; pointer-events:none;
  top:clamp(28px,3.4vw,64px); left:clamp(28px,3.4vw,64px);
  height:clamp(220px,41vw,540px); width:auto; margin:0;
  aspect-ratio:1392/1542; color:var(--watermark); opacity:.10;
}
.elementor-widget-icon.sec__mark .elementor-icon,
.elementor-widget-icon.sec__mark svg{ height:100%; width:auto; display:block }

/* ---------- Icons / socials ---------- */
.elementor-widget-icon.bid__icon .elementor-icon{ color:var(--burgundy); font-size:26px }
.elementor-widget-social-icons.util__socials .elementor-social-icon,
.elementor-widget-social-icons.ftr__socials .elementor-social-icon{ background-color:transparent }

/* ---------- Category tiles: hold the 3:4 plate ---------- */
.cats > .e-con.cat{ aspect-ratio:3/4; min-height:0 }

/* ---------- Logo ---------- */
.elementor-widget-image.brand img{
  height:clamp(46px,4.6vw,74px); width:auto; max-width:none; display:block;
}
.hdr.elementor-sticky--effects .elementor-widget-image.brand img{ height:clamp(38px,3.4vw,54px) }

/* ============================================================
   AUCTION BAND - colour + desktop layout
   Everything in the band sits on burgundy, so it must be parchment.
   Elementor's .elementor-widget-heading .elementor-heading-title (0,2,0)
   outranks a bare .band__sub, hence the widget-qualified .elementor-kit-5s.
   ============================================================ */
.band{ color:var(--parchment) }
.band .e-con{ color:inherit }

.elementor-widget-text-editor.band__k p{
  color:var(--brass-lt); font-family:var(--body); font-size:10.5px;
  letter-spacing:.28em; text-transform:uppercase; margin:0 0 12px;
}
.elementor-widget-text-editor.band__date,
.elementor-widget-text-editor.band__date p{
  font-family:var(--display); font-weight:500; color:var(--parchment);
  font-size:calc(clamp(1.35rem,2.1vw,1.85rem) * 1.16);
  line-height:1.15; margin:0 0 8px;
}
.elementor-widget-heading.band__sub .elementor-heading-title{
  font-family:var(--body); font-size:12.5px; font-weight:400;
  letter-spacing:.03em; text-transform:none; line-height:1.6;
  color:rgba(239,233,222,.66);
}
.clock .fs-cd-num{ color:var(--parchment) }
.clock .fs-cd-lbl{ color:rgba(239,233,222,.62) }

/* Desktop: info | clock | actions on one row (mockup grid: auto 1fr auto).
   36% + 34% + 24% plus two clamp(...,64px) gaps overflowed 1680 and wrapped. */
.band__inner{ flex-wrap:nowrap; align-items:center }
.band__inner > .e-con{ width:auto !important }
.band__inner > .band__info{ flex:0 1 auto }
.band__inner > .clock-wrap{ flex:1 1 auto }
.band__inner > .band__actions{ flex:0 0 auto; align-items:flex-start }
@media (max-width:1080px){
  .band__inner{ flex-wrap:wrap }
  .band__inner > .e-con{ width:100% !important; flex:1 1 100% }
  .band__actions{ flex-direction:row; flex-wrap:wrap; align-items:center }
}

/* ============================================================
   HEADINGS - default Ink, not the Primary global
   Elementor colours headings with the Primary global colour, which is Burgundy,
   so every H1-H4 came out burgundy. Per 3.4 only the .ital accent is burgundy.
   ============================================================ */
.elementor-widget-heading .elementor-heading-title{ color:var(--ink) }
.sec--dark .elementor-widget-heading .elementor-heading-title,
.sec--burg .elementor-widget-heading .elementor-heading-title,
.close .elementor-widget-heading .elementor-heading-title,
.card .elementor-widget-heading .elementor-heading-title,
.cat .elementor-widget-heading .elementor-heading-title,
.ftr .elementor-widget-heading .elementor-heading-title,
.lot .elementor-widget-heading .elementor-heading-title,
.signup .elementor-widget-heading .elementor-heading-title,
.band .elementor-widget-heading .elementor-heading-title{ color:var(--parchment) }
.elementor-heading-title .ital{ color:var(--burgundy) }
.sec--dark .elementor-heading-title .ital,
.sec--burg .elementor-heading-title .ital,
.close .elementor-heading-title .ital,
.card .elementor-heading-title .ital{ color:var(--brass-lt) }

/* ============================================================
   HERO - optical grid + rhythm (mockup .hero__copy)
   The copy block is capped and pushed right so its left edge lines up with the
   1680 content column instead of hugging the viewport gutter on wide screens.
   ============================================================ */
.hero__copy{ max-width:calc(1680px / 2 + 60px); margin-left:auto }
@media (max-width:1024px){ .hero__copy{ max-width:none; margin-left:0 } }

.elementor-widget-text-editor.eyebrow{ margin-bottom:22px }
.elementor-widget-heading.hero__h1{ margin-bottom:26px }
.elementor-widget-heading.hero__h1 .elementor-heading-title{ margin:0 }
.elementor-widget-text-editor.hero__lede{ max-width:47ch; margin-bottom:38px }
.elementor-widget-text-editor.hero__lede p{ margin:0 }
.hero__actions{ margin-bottom:44px }

/* Section heads: same measure discipline as the mockup */
.elementor-widget-text-editor.lede{ max-width:60ch }
.sec__head--split .elementor-widget-text-editor.lede{ max-width:none }

/* ============================================================
   CATALOGUE PLATE FRAME (5.4)
   top/left/right 26px; bottom must clear the band overlap, driven by the
   SAME token as the band's negative margin so the frame always closes.
   ============================================================ */
.plate{ position:relative }
.plate::before{
  content:''; position:absolute; z-index:3; pointer-events:none;
  top:26px; left:26px; right:26px;
  bottom:calc(var(--band-overlap) + 26px);
  border:1px solid rgba(168,129,62,.34);
}
.plate > *{ position:relative; z-index:1 }
@media (max-width:1024px){
  .plate::before{ bottom:calc(var(--band-overlap) + 26px) }
}


/* ============================================================
   HORIZONTAL OVERFLOW GUARD
   Flex items default to min-width:auto, so a flex child refuses to shrink below
   its content width. The lots rail (8 x ~282px = ~2400px) therefore forced the
   whole page wider instead of scrolling inside itself - which pushed the hero
   plate (and its brass frame) off-screen to the right.
   min-width:0 lets these containers shrink so overflow-x:auto can do its job.
   ============================================================ */
.rail{ min-width:0; max-width:100%; overflow-x:auto; overflow-y:hidden }
.sec .fs-wrap,
.sec > .e-con,
.hero__copy,
.plate,
.band__inner,
.band__inner > .e-con,
.bento, .bento > .e-con,
.cats, .cats > .e-con,
.steps, .steps > .e-con,
.appr, .appr > .e-con,
.reach, .reach > .e-con,
.area, .area > .e-con,
.bids, .bids > .e-con,
.ftr__grid, .ftr__grid > .e-con{ min-width:0 }

/* Net: clip (not hidden) so position:sticky on the header still works. */
body{ overflow-x:clip }

/* ============================================================
   RESPONSIVE GRID - pinned to the mockup's own breakpoints (notes 4)
   Elementor's breakpoints now serve the NAV COLLAPSE (tablet_extra = 1400,
   because the dropdown control caps at tablet_extra and the full nav needs
   ~1650px). Section grids are therefore pinned here with !important so they
   keep the mockup's 1100 / 1024 / 1000 / 980 / 900 / 620 / 600 steps instead
   of following Elementor's now-repurposed breakpoints.
   ============================================================ */
.hero__copy{ width:51% !important }
.plate{ width:49% !important }
@media (max-width:1024px){ .hero > .e-con{ width:100% !important } }

.bento > .card--lg{ width:56% !important }
.bento > .bento__col{ width:42% !important }
@media (max-width:900px){ .bento > .e-con{ width:100% !important } }

.cats > .e-con{ width:15.4% !important }
@media (max-width:1100px){ .cats > .e-con{ width:31.8% !important } }
@media (max-width:600px){ .cats > .e-con{ width:48.5% !important } }

.bids > .e-con{ width:25% !important }
@media (max-width:1100px){ .bids > .e-con{ width:50% !important } }
@media (max-width:600px){ .bids > .e-con{ width:100% !important } }

.steps > .e-con{ width:25% !important }
@media (max-width:1000px){ .steps > .e-con{ width:50% !important } }
@media (max-width:620px){ .steps > .e-con{ width:100% !important } }

.appr > .appr__card{ width:40% !important }
.appr > .appr__uses{ width:52% !important }
@media (max-width:980px){ .appr > .e-con{ width:100% !important } }

.reach > .e-con{ width:46% !important }
.area > .area__copy{ width:48% !important }
.area > .signup{ width:44% !important }
@media (max-width:900px){
  .reach > .e-con, .area > .e-con{ width:100% !important }
}

/* Flex widths must subtract their share of the column gap, or the 4th column wraps.
   Ratios follow the mockup's 1.35 / 1 / 1 / 1.25 fr grid (total 4.6). */
.ftr__grid{ --ftr-gap:clamp(28px,4vw,60px) }
.ftr__grid > .ftr__brand{ width:calc(29.35% - .75 * var(--ftr-gap)) !important }
.ftr__grid > .ftr__col{ width:calc(21.74% - .75 * var(--ftr-gap)) !important }
.ftr__grid > .ftr__contact-col{ width:calc(27.17% - .75 * var(--ftr-gap)) !important }
@media (max-width:1000px){ .ftr__grid > .e-con{ width:calc(50% - var(--ftr-gap) / 2) !important } }
@media (max-width:600px){ .ftr__grid > .e-con{ width:100% !important } }

/* ---------- Header: keep it inside the viewport ---------- */
.elementor-widget-nav-menu.nav .elementor-nav-menu--main .elementor-item{ margin-inline:12px }
.hdr__bar{ flex-wrap:nowrap }
.nav{ min-width:0 }



/* ============================================================
   PLATE FRAME - defeat OoohBoi's overlay pseudo-element
   OoohBoi Steroids puts ob-has-background-overlay on every Elementor element and
   declares  .ob-has-background-overlay:before { width:100%; height:100% }.
   Because our frame sized itself with right/bottom and never declared
   width/height, those two survived: the frame overhung the plate by 26px on the
   right and 26px below (hidden behind the band). Hence "top and left fine,
   right and bottom cut off". Declaring width/height:auto hands geometry back to
   the inset values.
   ============================================================ */
.plate{ position:relative }
.plate::before,
.plate.ob-has-background-overlay::before{
  content:'';
  position:absolute;
  width:auto; height:auto;
  top:26px; left:26px; right:26px;
  bottom:calc(var(--band-overlap, 72px) + 26px);
  border:1px solid rgba(168,129,62,.34);
  background:none;
  z-index:3;
  pointer-events:none;
}
.plate.ob-has-background-overlay::after{ content:none }

/* ============================================================
   HEADER BALANCE - logo flush left / menu centred / CTA flush right
   Phone widget removed from the header (it still lives in the utility bar
   and the footer contact block).
   ============================================================ */
.hdr__bar{ justify-content:space-between; flex-wrap:nowrap; gap:24px }
.brand{ flex:0 0 auto; width:auto !important }
.hdr__cta{ flex:0 0 auto; width:auto !important }
.nav{
  flex:1 1 auto; min-width:0; width:auto !important;
  display:flex; justify-content:center;
}
.nav .elementor-nav-menu{ flex-wrap:nowrap; justify-content:center }
/* tighten tracking-heavy items just enough to hold one row on mid-size screens */
@media (max-width:1600px){
  .elementor-widget-nav-menu.nav .elementor-nav-menu--main .elementor-item{ margin-inline:10px }
}
/* keep the primary CTA visible once the nav collapses to the burger */
.hdr__btn{ display:block !important }

/* ============================================================
   UTILITY BAR - explicit colour
   Elementor sets colour directly on .elementor-widget-text-editor, and a direct
   declaration always beats a colour inherited from .util - so the address and
   phone were rendering in Ink on the black bar (invisible). Colour them here.
   ============================================================ */
.elementor-widget-text-editor.util__item,
.elementor-widget-text-editor.util__item p{ color:rgba(239,233,222,.72) }
.elementor-widget-text-editor.util__cred,
.elementor-widget-text-editor.util__cred p{ color:var(--brass-lt) }
.util__item a{ color:inherit; text-decoration:none }
.util__item a:hover{ color:var(--brass-lt) }

/* ============================================================
   HEADER - menu optically centred on the page
   brand and CTA each take an equal share of the leftover space (flex:1 1 0) and
   pin their contents to the outer edges, so the nav lands on true page centre
   rather than merely centred between two unequal-width neighbours.
   ============================================================ */
.hdr__bar{ justify-content:space-between; flex-wrap:nowrap; gap:24px }
.brand{
  flex:1 1 0 !important; width:auto !important; min-width:0;
  display:flex; justify-content:flex-start; align-items:center;
}
.nav{
  flex:0 0 auto !important; width:auto !important; min-width:0;
  display:flex; justify-content:center;
}
.nav .elementor-nav-menu{ flex-wrap:nowrap; justify-content:center }
.hdr__cta{
  flex:1 1 0 !important; width:auto !important; min-width:0;
  display:flex; justify-content:flex-end; align-items:center;
}

/* ---------- Utility bar socials: Parchment Light (#F7F3EC) ---------- */
.elementor-widget-social-icons.util__socials .elementor-social-icon{
  background-color:transparent;
}
.elementor-widget-social-icons.util__socials .elementor-social-icon i,
.elementor-widget-social-icons.util__socials .elementor-social-icon svg{
  color:var(--parchment-lt);
  fill:var(--parchment-lt);
  transition:color .2s ease, fill .2s ease;
}
.elementor-widget-social-icons.util__socials .elementor-social-icon:hover i,
.elementor-widget-social-icons.util__socials .elementor-social-icon:hover svg{
  color:var(--brass-lt);
  fill:var(--brass-lt);
}
/* stroke-based glyphs (Yelp) must never be flooded with a fill (notes 5.7) */
.elementor-widget-social-icons.util__socials svg[stroke]{ fill:none }
.elementor-widget-social-icons.util__socials a:hover svg[stroke]{ fill:none }

/* ---------- Hero: breathing room above the buttons ---------- */
.elementor-widget-text-editor.hero__lede{ margin-bottom:48px !important }
.elementor-widget-text-editor.hero__lede p:last-child{ margin-bottom:0 }
.hero__actions{ margin-bottom:52px !important }

/* ---------- Hero proof row ----------
   The hairline rule should end where the three stats end, rather than running on
   to the full column width past "Monthly". */
.hero__proof{
  width:fit-content !important;
  max-width:100%;
  align-self:flex-start;
}
.proof__item:last-child{ border-right:0; margin-right:0; padding-right:0 }

/* ---------- Hero proof row: rule spans the stats only ----------
   width:fit-content on the container kept losing to Elementor's container width,
   so the hairline is drawn on the three stats themselves instead. Margins are
   removed and replaced with symmetric padding so the rule stays unbroken across
   the items and simply stops after the last one. */
.hero__proof{
  border-top:0 !important;
  width:auto !important;
  align-self:flex-start;
  flex-wrap:nowrap;
}
.proof__item{
  border-top:1px solid var(--stone);
  border-right:1px solid var(--stone);
  padding:18px 26px 0 26px !important;
  margin-right:0 !important;
}
.proof__item:first-child{ padding-left:0 !important }
.proof__item:last-child{
  border-right:0 !important;
  padding-right:0 !important;
  margin-right:0 !important;
}

/* ---------- Hero copy: vertically centred ----------
   The band overlaps the bottom of the hero by --band-overlap, so that strip of
   the column is hidden behind burgundy. Bottom padding therefore carries the
   overlap on top of the base padding - otherwise "centred" would sit low by
   half the overlap. Same token as the plate frame and the band's negative
   margin, so the three stay in step (notes 5.4). */
.hero__copy{
  justify-content:center !important;
  padding-top:clamp(56px, 6vw, 110px) !important;
  padding-bottom:calc(clamp(56px, 6vw, 110px) + var(--band-overlap, 72px)) !important;
}
.plate{ justify-content:center }

/* ============================================================
   PER-ELEMENT COLOUR OVERRIDES
   Elementor writes a colour for EVERY heading and button as a per-element rule:
     .elementor-11 .elementor-element.elementor-element-XXXX .elementor-heading-title
   That is 0,3,0 and outranks any class .elementor-kit-5, so !important is the only lever
   short of setting the colour control on all ~40 widgets by hand.
   Per 3.4: headings are Ink; only the .ital accent is Burgundy (Brass Light on dark).
   ============================================================ */
.elementor-widget-heading .elementor-heading-title{ color:var(--ink) !important }
.sec--dark .elementor-widget-heading .elementor-heading-title,
.sec--burg .elementor-widget-heading .elementor-heading-title,
.close .elementor-widget-heading .elementor-heading-title,
.card .elementor-widget-heading .elementor-heading-title,
.cat .elementor-widget-heading .elementor-heading-title,
.ftr .elementor-widget-heading .elementor-heading-title,
.lot .elementor-widget-heading .elementor-heading-title,
.signup .elementor-widget-heading .elementor-heading-title,
.band .elementor-widget-heading .elementor-heading-title{ color:var(--parchment) !important }
.elementor-heading-title .ital{ color:var(--burgundy) !important }
.sec--dark .elementor-heading-title .ital,
.sec--burg .elementor-heading-title .ital,
.close .elementor-heading-title .ital,
.card .elementor-heading-title .ital{ color:var(--brass-lt) !important }

/* Buttons: text colour and the arrow glyph (Elementor renders FA icons as inline
   SVG, so the fill must follow currentColor or it keeps the inherited tone). */
.elementor-widget-button.btn--solid .elementor-button{ color:var(--paper) !important }
.elementor-widget-button.btn--line .elementor-button{ color:var(--ink) !important }
.elementor-widget-button.btn--line .elementor-button:hover{ color:var(--paper) !important }
.elementor-widget-button.btn--brass .elementor-button{ color:var(--ink) !important }
.elementor-widget-button.btn--ghostLight .elementor-button{ color:var(--parchment) !important }
.elementor-widget-button.btn--ghostLight .elementor-button:hover{ color:var(--ink) !important }
.elementor-widget-button.txtlink .elementor-button{ color:var(--ink) !important }
.elementor-widget-button.txtlink--light .elementor-button{ color:var(--parchment) !important }
.elementor-button svg,
.elementor-button .e-font-icon-svg{ fill:currentColor !important; color:inherit }

/* ---------- Services bento: deeper scrim for legibility ----------
   Baseline from notes 5.3 was
     rgba(20,17,16,.24) 0% / rgba(20,17,16,.62) 46% / rgba(35,17,17,.93) 100%
   The lower two stops are deepened so the eyebrow, heading, body copy and text
   link clear the photography. The top stop is unchanged so the image still
   reads at the top of the card. */
.card::after,
.card.ob-has-background-overlay::after{
  content:'';
  position:absolute;
  inset:0;
  width:auto; height:auto;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(
    175deg,
    rgba(20,17,16,.26) 0%,
    rgba(20,17,16,.74) 46%,
    rgba(35,17,17,.97) 100%
  );
}

/* ---------- Services bento: layered scrim ----------
   The bento photography is shot on white studio backgrounds, so cover-fill makes
   the whole card bright and one top-to-bottom gradient has to fight that the
   entire height. Two layers instead:
     1. a dedicated bottom scrim that ramps hard behind the text block only
     2. the notes-5.3 gradient underneath, for overall depth
   Top of the card stays open so the object still reads. */
.card::after,
.card.ob-has-background-overlay::after{
  content:'';
  position:absolute;
  inset:0;
  width:auto; height:auto;
  z-index:1;
  pointer-events:none;
  background:
    linear-gradient(
      to top,
      rgba(20,17,16,.97) 0%,
      rgba(20,17,16,.90) 22%,
      rgba(20,17,16,.55) 45%,
      rgba(20,17,16,0)   68%
    ),
    linear-gradient(
      175deg,
      rgba(20,17,16,.30) 0%,
      rgba(20,17,16,.58) 46%,
      rgba(35,17,17,.88) 100%
    );
}

/* ============================================================
   DARK-SECTION TEXT COLOUR - specificity, not load order
   Elementor writes .elementor-widget-text-editor{color:var(--e-global-color-text)}
   (Ink) at 0,1,0. Any bare .class{color} rule of ours only TIES with that, so it
   wins or loses depending on which stylesheet loads last - which is exactly how
   Ink text ended up on the Ink sections. Everything below is qualified so it
   beats Elementor on specificity and is order-independent.
   1) blanket: anything inside a dark surface is Parchment
   2) then the specific tones per component
   ============================================================ */
.sec--dark .elementor-widget-text-editor,
.sec--dark .elementor-widget-text-editor p,
.sec--burg .elementor-widget-text-editor,
.sec--burg .elementor-widget-text-editor p,
.close .elementor-widget-text-editor,
.close .elementor-widget-text-editor p,
.card .elementor-widget-text-editor,
.card .elementor-widget-text-editor p,
.cat .elementor-widget-text-editor,
.cat .elementor-widget-text-editor p,
.plate .elementor-widget-text-editor,
.plate .elementor-widget-text-editor p,
.signup .elementor-widget-text-editor,
.signup .elementor-widget-text-editor p,
.band .elementor-widget-text-editor,
.band .elementor-widget-text-editor p,
.reach__tag,
.reach__tag p,
.ftr .elementor-widget-text-editor,
.ftr .elementor-widget-text-editor p{ color:var(--parchment) }

/* --- specific tones --- */
.elementor-widget-text-editor.eyebrow,
.elementor-widget-text-editor.eyebrow p{ color:var(--brass) }
.elementor-widget-text-editor.eyebrow--onDark,
.elementor-widget-text-editor.eyebrow--onDark p{ color:var(--brass-lt) }
.elementor-widget-text-editor.lede,
.elementor-widget-text-editor.lede p{ color:var(--muted) }
.elementor-widget-text-editor.lede--onDark,
.elementor-widget-text-editor.lede--onDark p{ color:rgba(239,233,222,.72) }
.elementor-widget-text-editor.card__k,
.elementor-widget-text-editor.card__k p{ color:var(--brass-lt) }
.elementor-widget-text-editor.card__p,
.elementor-widget-text-editor.card__p p{ color:rgba(239,233,222,.74) }
.elementor-widget-text-editor.lot__n,
.elementor-widget-text-editor.lot__n p{ color:var(--brass) }
.elementor-widget-text-editor.lot__cat,
.elementor-widget-text-editor.lot__cat p{ color:rgba(239,233,222,.42) }
.elementor-widget-text-editor.quote__mark,
.elementor-widget-text-editor.quote__mark p{ color:var(--brass-lt) }
.elementor-widget-text-editor.quote__body,
.elementor-widget-text-editor.quote__body p{ color:var(--parchment) }
.elementor-widget-text-editor.quote__cite,
.elementor-widget-text-editor.quote__cite p{ color:var(--brass-lt) }
.elementor-widget-text-editor.signup__p,
.elementor-widget-text-editor.signup__p p{ color:rgba(239,233,222,.62) }
.elementor-widget-text-editor.signup__note,
.elementor-widget-text-editor.signup__note p{ color:rgba(239,233,222,.4) }
.elementor-widget-text-editor.close__p,
.elementor-widget-text-editor.close__p p{ color:rgba(239,233,222,.74) }
.elementor-widget-text-editor.step__n,
.elementor-widget-text-editor.step__n p{ color:var(--brass) }
.elementor-widget-text-editor.step__p,
.elementor-widget-text-editor.step__p p{ color:var(--muted) }
.elementor-widget-text-editor.bid__p,
.elementor-widget-text-editor.bid__p p{ color:var(--muted) }
.elementor-widget-text-editor.appr__bio,
.elementor-widget-text-editor.appr__bio p{ color:var(--muted) }
.elementor-widget-text-editor.uses,
.elementor-widget-text-editor.uses p{ color:var(--ink) }
.elementor-widget-text-editor.uses span{ color:var(--muted) }
.elementor-widget-text-editor.uses__note-t,
.elementor-widget-text-editor.uses__note-t p{ color:var(--muted) }
.elementor-widget-text-editor.steps__foot-p,
.elementor-widget-text-editor.steps__foot-p p{ color:var(--muted) }
.elementor-widget-text-editor.meta,
.elementor-widget-text-editor.meta p{ color:var(--muted) }
.elementor-widget-text-editor.fs-chip,
.elementor-widget-text-editor.fs-chip p{ color:var(--muted) }
.elementor-widget-text-editor.fs-town,
.elementor-widget-text-editor.fs-town p{ color:var(--muted) }
.elementor-widget-text-editor.proof__item,
.elementor-widget-text-editor.proof__item p{ color:var(--ink) }
.elementor-widget-text-editor.proof__item span{ color:var(--muted) }

/* ---------- Hero proof row: fit the column ----------
   The shared `width:auto !important; flex:0 0 auto` rule stops these three
   stats shrinking, and the row is nowrap, so when the third label grew to
   "Online Bidder Reach" the row ran past the 51% copy column and under the
   plate. Let them shrink (labels wrap to two lines) and, failing that, let the
   row wrap. Tighter gutters below 1200px buy the width back first. */
.hero__proof{ flex-wrap:nowrap !important; width:100% !important }
/* Equal thirds: content-sized cells left ragged gaps before each divider when
   one caption ran to two uneven lines. flex-basis 0 + grow makes the three
   cells identical, so the hairlines sit at even intervals across the column. */
.hero__proof > .elementor-widget.proof__item{ flex:1 1 0; min-width:0 }
/* wrap wins over shrink in flexbox, so the row must stay nowrap - the stats
   then narrow and their captions run to two lines instead of a stat dropping
   to its own row. */
.hero__proof .proof__item span{
  overflow-wrap:break-word;
  line-height:1.45;   /* was the inherited body 1.65 - too loose once these run to two lines */
}
@media (max-width:1200px){
  .hero__proof > .elementor-widget.proof__item{ padding-inline:16px !important }
  .hero__proof > .elementor-widget.proof__item:first-child{ padding-left:0 !important }
  .hero__proof > .elementor-widget.proof__item:last-child{ padding-right:0 !important }
}
.elementor-widget-text-editor.plate__cap,
.elementor-widget-text-editor.plate__cap p{ color:rgba(239,233,222,.5) }
.elementor-widget-text-editor.plate__cap .k{ color:var(--brass-lt) }
.elementor-widget-text-editor.plate__cap h4{ color:var(--parchment) }
.elementor-widget-text-editor.seal__badge,
.elementor-widget-text-editor.seal__badge p{ color:var(--burgundy) }
.elementor-widget-text-editor.seal__t,
.elementor-widget-text-editor.seal__t p{ color:var(--ink) }
.elementor-widget-text-editor.seal__t span{ color:var(--muted) }
.elementor-widget-text-editor.appr__stat,
.elementor-widget-text-editor.appr__stat p{ color:var(--burgundy) }
.elementor-widget-text-editor.appr__stat span{ color:var(--muted) }
.elementor-widget-text-editor.ftr__blurb,
.elementor-widget-text-editor.ftr__blurb p{ color:rgba(239,233,222,.55) }
.elementor-widget-text-editor.ftr__copy,
.elementor-widget-text-editor.ftr__copy p{ color:rgba(239,233,222,.4) }
.elementor-widget-text-editor.ftr__partner-p,
.elementor-widget-text-editor.ftr__partner-p p{ color:rgba(239,233,222,.5) }

/* NOTE: never use :nth-child() for layout here. Elementor injects extra sibling
   nodes inside the editor (element overlays, empty-view placeholders), which
   shifts the indices and mis-assigns column widths in the backend preview even
   though the front end looks correct. Always target an explicit class. */

/* ============================================================
   BENTO SCRIM - single ramp (supersedes the layered version)
   Two stacked gradients compounded to ~0.99 at the base and ~0.81 mid-card,
   which flattened the photography. One ramp is predictable: the value you read
   is the value you get.
   ============================================================ */
.card::after,
.card.ob-has-background-overlay::after{
  content:'';
  position:absolute;
  inset:0;
  width:auto; height:auto;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(
    180deg,
    rgba(20,17,16,.20) 0%,
    rgba(20,17,16,.36) 40%,
    rgba(20,17,16,.72) 66%,
    rgba(28,17,17,.94) 100%
  );
}

/* ============================================================
   STACKING ORDER - image / scrim / content
   Elementor renders container children directly on the front end but can nest
   them under .e-con-inner elsewhere (and injects overlay nodes in the editor).
   Both shapes are covered so copy is never trapped beneath the scrim.
   ============================================================ */
.card__img{ position:absolute; inset:0; z-index:0 !important; margin:0 }
.card::after{ z-index:1 }
.cat::before{ z-index:1 }
.card > *:not(.card__img),
.cat > *,
.card > .e-con-inner > *:not(.card__img),
.cat > .e-con-inner > *{
  position:relative;
  z-index:2;
}

/* ---------- Reveal must never run in the Elementor editor ----------
   Belt-and-braces alongside the guard in the marker script. */
body.elementor-editor-active .rv,
body.elementor-editor-preview .rv,
body.elementor-editor-active .fs-js .rv,
.fs-js body.elementor-editor-active .rv{
  opacity:1 !important; transform:none !important; transition:none !important;
}
body.elementor-editor-active .step::before{ width:100% !important }

/* ============================================================
   BENTO HEIGHTS
   Mockup 5.3 builds the right column as grid-template-rows: 1fr 1fr, so the two
   small cards each take exactly half of it. Built here as a column flex, the
   cards defaulted to their natural height - so as soon as the large card set a
   taller row, the right column came up short and the pair fell out of alignment.
   flex:1 1 0 makes them split the column evenly, with 271px still the floor.
   ============================================================ */
.bento{ align-items:stretch }
.bento > .card--lg{ align-self:stretch }
.bento > .bento__col{
  align-self:stretch;
  display:flex;
  flex-direction:column;
  gap:18px;
}
.bento > .bento__col > .card--sm{
  flex:1 1 0;
  min-height:271px;
  width:100% !important;
}
@media (max-width:900px){
  .bento > .bento__col > .card--sm{ flex:0 0 auto; min-height:300px }
}
/* ============================================================
   IMAGE FILL - widget-qualified
   Bare .card__img img is 0,1,1 - identical to Elementor's .elementor-widget-image
   img - so it only won while this sheet was injected last. Loading from the kit
   it loses that tie and images revert to natural sizing. Qualifying with the
   widget class (0,2,1) makes these order-independent.
   ============================================================ */
.elementor-widget-image.card__img img{
  width:100%; height:100%; object-fit:cover; display:block; max-width:none;
  transition:transform 1.1s cubic-bezier(.2,.7,.2,1);
}
.card:hover .elementor-widget-image.card__img img{ transform:scale(1.045) }

.elementor-widget-image.plate__img img{
  width:100%; height:clamp(320px,36vw,432px); object-fit:contain; display:block;
  filter:drop-shadow(0 40px 60px rgba(0,0,0,.55));
}
.elementor-widget-image.lot__img img{
  max-height:248px; width:auto; object-fit:contain; display:block;
  filter:drop-shadow(0 24px 34px rgba(0,0,0,.5));
  transition:transform .6s cubic-bezier(.2,.7,.2,1);
}
.lot:hover .elementor-widget-image.lot__img img{ transform:scale(1.05) }

.elementor-widget-image.reach__photo img{
  width:100%; height:clamp(340px,42vw,540px); object-fit:cover;
  display:block; opacity:.92; max-width:none;
}
.elementor-widget-icon.ftr__logo svg{
  height:clamp(66px,6vw,92px); width:auto; display:block; overflow:visible;
}
/* ============================================================
   AUCTION CARDS (.acard) - Past auctions listing
   JetEngine renders each field inside .jet-listing-dynamic-*__content and
   Elementor widget defaults land on those inner nodes, so every rule that
   must beat them is qualified with .elementor-widget-<type>.
   ============================================================ */

.acards .jet-listing-grid__item{ display:flex }

.acard.e-con{
  background:var(--paper); border:1px solid var(--stone); border-radius:2px;
  overflow:hidden; width:100%;
  transition:border-color .3s, transform .5s cubic-bezier(.2,.7,.2,1);
}
.acard.e-con:hover{ border-color:var(--brass); transform:translateY(-3px) }

/* Fixed 236px image well is what keeps a ragged grid tidy (spec 5) */
.acard__img.e-con{
  position:relative; background:var(--ink);
  height:236px; min-height:236px; flex:0 0 236px;
  align-items:center; justify-content:center; padding:26px; overflow:hidden;
}
.elementor-widget-jet-listing-dynamic-image.acard__photo{ max-width:100%; line-height:0 }
.elementor-widget-jet-listing-dynamic-image.acard__photo img{
  max-width:100%; max-height:184px; width:auto; object-fit:contain; display:block;
  filter:drop-shadow(0 22px 30px rgba(0,0,0,.5));
  transition:transform .8s cubic-bezier(.2,.7,.2,1);
}
.acard.e-con:hover .elementor-widget-jet-listing-dynamic-image.acard__photo img{ transform:scale(1.05) }

/* Burgundy date badge, flush to the corner */
.acard__date.e-con{
  position:absolute; top:0; left:0; z-index:2;
  --width:auto; width:auto; min-width:70px;
  background:var(--burgundy); padding:11px 15px; text-align:center;
}
.elementor-widget-jet-listing-dynamic-field.acard__d .jet-listing-dynamic-field__content{
  font-family:var(--display); font-size:calc(1.5rem * 1.16); font-weight:500;
  line-height:1; font-variant-numeric:oldstyle-nums; color:var(--parchment);
}
.elementor-widget-jet-listing-dynamic-field.acard__m .jet-listing-dynamic-field__content{
  font-size:9px; letter-spacing:.2em; text-transform:uppercase;
  color:rgba(239,233,222,.72); margin-top:5px;
}

/* Card body: link pinned to the bottom so uneven cards still align */
.acard__body.e-con{ padding:26px 26px 28px; flex:1 1 auto; align-items:flex-start }


.elementor-widget-jet-listing-dynamic-terms.acard__k .jet-listing-dynamic-terms{
  font-size:9.5px; letter-spacing:.24em; text-transform:uppercase; color:var(--brass);
}


.elementor-widget-jet-listing-dynamic-field.acard__t .jet-listing-dynamic-field__content{
  font-family:var(--display); font-size:calc(1.22rem * 1.16); line-height:1.22;
  font-weight:500; color:var(--ink); margin:0;
}

/* Card stack spacing. Elementor ships `.elementor-widget.elementor-widget{
   margin-block-end:0}` at (0,2,0) and it loads AFTER the kit, so a plain
   `margin-bottom` here ties and LOSES - the earlier 14/18/20/26 values never
   applied at all. Match its own doubled-class pattern at (0,4,0) and use the
   same logical property it sets. Gotcha 17. */
.e-con .elementor-widget.elementor-widget.acard__k{ margin-block-end:14px }
.e-con .elementor-widget.elementor-widget.acard__t{ margin-block-end:22px }
.e-con .elementor-widget.elementor-widget.acard__p{ margin-block-end:28px }
.elementor-widget-jet-listing-dynamic-field.acard__p .jet-listing-dynamic-field__content{
  font-size:13.8px; line-height:1.68; color:var(--muted); font-weight:300; margin:0;
}

.elementor-widget-jet-listing-dynamic-terms.chips{ margin-bottom:20px }
.elementor-widget-jet-listing-dynamic-terms.chips .jet-listing-dynamic-terms{
  display:flex; flex-wrap:wrap; gap:6px;
}
.elementor-widget-jet-listing-dynamic-terms.chips .jet-listing-dynamic-terms__link{
  border:1px solid var(--stone); border-radius:2px; padding:5px 10px;
  font-size:10px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--muted); transition:.22s;
}
.elementor-widget-jet-listing-dynamic-terms.chips .jet-listing-dynamic-terms__link:hover{
  border-color:var(--brass); color:var(--ink);
}

.acard__body.e-con > .elementor-widget-jet-listing-dynamic-link.txtlink{ margin-top:auto }
.elementor-widget-jet-listing-dynamic-link.txtlink .jet-listing-dynamic-link__link{
  display:inline-flex; align-items:center; gap:8px; text-decoration:none;
  font-family:var(--body); font-size:11.5px; letter-spacing:.16em; text-transform:uppercase;
  font-weight:500; color:var(--ink); border-bottom:1px solid var(--brass); padding-bottom:4px;
}
.elementor-widget-jet-listing-dynamic-link.txtlink .jet-listing-dynamic-link__link:hover{ color:var(--burgundy) }

.elementor-widget-jet-listing-dynamic-link.outbound{ margin-top:14px }
.elementor-widget-jet-listing-dynamic-link.outbound .jet-listing-dynamic-link__link{
  display:inline-flex; align-items:baseline; gap:8px; text-decoration:none;
  font-size:11.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);
  border-bottom:1px solid var(--stone); padding-bottom:3px;
}
.elementor-widget-jet-listing-dynamic-link.outbound .jet-listing-dynamic-link__link:hover{
  color:var(--burgundy); border-color:var(--brass);
}

/* ============================================================
   FILTER BAR (JetSmartFilters) - Past auctions
   JSF nests the control two levels below the Elementor widget wrapper:
     .elementor-widget > .elementor-widget-container > .jet-filter > .jet-select > select
   so .jet-filter is NOT the flex child of .filters - bottom-aligning it does
   nothing. Row alignment is set on the container natively (flex-end); the
   rules here only make the select and the search input the same box, since
   JSF gives them different intrinsic heights and no shared padding.
   ============================================================ */
.filters.e-con{
  padding:20px 0; margin-bottom:clamp(30px,3.4vw,46px);
  border-top:1px solid var(--stone); border-bottom:1px solid var(--stone);
}

/* label sits above its control */
.filters .jet-filter-label{
  display:block; margin:0 0 8px; line-height:1;
  font-family:var(--body); font-size:10px; font-weight:500;
  letter-spacing:.24em; text-transform:uppercase; color:var(--muted);
}

/* one shared control box - fixed height is what actually lines the row up */
.filters .jet-select__control,
.filters .jet-search-filter__input{
  box-sizing:border-box; height:44px; margin:0;
  padding:11px 14px; width:100%;
  font-family:var(--body); font-size:13.5px; line-height:1.2;
  color:var(--ink); background:var(--paper);
  border:1px solid var(--stone); border-radius:2px;
  appearance:none; -webkit-appearance:none;
}
.filters .jet-smart-filters-select{ min-width:190px }
.filters .jet-smart-filters-search{ min-width:220px }
.filters .jet-select__control:focus,
.filters .jet-search-filter__input:focus{
  outline:2px solid var(--brass); outline-offset:2px; border-color:transparent;
}

/* appearance:none removes the native arrow, so draw the chevron */
.filters .jet-select{ position:relative; display:block }
.filters .jet-select__control{ padding-right:34px }
.filters .jet-select::after{
  content:""; position:absolute; pointer-events:none;
  right:15px; top:50%; margin-top:-6px;
  width:7px; height:7px; background:none; border-radius:0;
  border-right:1px solid var(--muted); border-bottom:1px solid var(--muted);
  transform:rotate(45deg);
}

/* search: JSF ships an 18px black glyph pinned 2px from the edge */
.filters .jet-search-filter__input{ padding-right:38px }
.filters .jet-search-filter__input-clear{
  right:12px; padding:0; height:auto; margin-top:-6px;
}
.filters .jet-search-filter__input-clear svg{
  width:11px; height:11px; fill:var(--muted); display:block;
}
.filters .jet-search-filter__input-clear:hover svg{ fill:var(--burgundy) }

/* Clear - a bare <button>, so it inherits the display face without this */
.filters .jet-remove-all-filters__button{
  font-family:var(--body) !important; font-size:11px; font-weight:500;
  letter-spacing:.16em; text-transform:uppercase; color:var(--muted);
  background:none; border:0; border-bottom:1px solid var(--stone);
  border-radius:0; padding:0 0 4px; margin:0 0 12px; cursor:pointer;
  height:auto; line-height:1;
}
.filters .jet-remove-all-filters__button:hover{ color:var(--burgundy); border-color:var(--brass) }
/* JetEngine wraps every card in an unsized .elementor-<id> div between the
   grid item wrapper and the card root - without this the card cannot stretch. */
.acards .jet-listing-grid__item > .elementor{ width:100%; display:flex }
.acards .jet-listing-grid__item > .elementor > .acard.e-con{ width:100% }

/* ============================================================
   AUCTIONS - LISTING PAGE HEADER, TABS, EMPTY STATE
   Shared by /auctions/ (Upcoming) and /past-auctions/ (Past).
   The mockup's tab pair becomes two real pages, so each tab is an
   Elementor button stripped back to plain tracked type. Elementor's own
   .elementor-button defaults land on the inner <a>, so the resets are
   qualified and forced rather than relying on load order.
   ============================================================ */

/* ---------- compact page header (mockup .phead) ---------- */
.phead__row.e-con{
  display:grid; grid-template-columns:1.1fr .9fr;
  gap:clamp(28px, 5vw, 72px); align-items:end;
}
@media (max-width:900px){
  .phead__row.e-con{ grid-template-columns:1fr; align-items:start }
}
.elementor-widget-heading.phead__h{ margin-bottom:20px }
.elementor-widget-heading.phead__h .elementor-heading-title{ margin:0 }

/* ---------- upcoming / past tabs (mockup .vtabs / .vtab) ---------- */
.vtabs.e-con{
  margin-top:clamp(34px, 4vw, 52px);
  border-bottom:1px solid var(--stone);
  align-items:flex-end;
}
.vtabs .vtab{ position:relative; margin-right:30px; --width:auto; width:auto }
.vtabs .vtab .elementor-button{
  background:none !important; border:0 !important; border-radius:0 !important;
  box-shadow:none !important;
  font-family:var(--body); font-size:11.5px; font-weight:500;
  letter-spacing:.2em; text-transform:uppercase;
  color:var(--muted) !important;
  padding:0 30px 18px 0 !important;
  transition:color .25s ease;
}
.vtabs .vtab:hover .elementor-button,
.vtabs .vtab--on .elementor-button{ color:var(--ink) !important }

/* Sliding burgundy underline. Every geometry property is declared because
   OoohBoi Steroids claims the pseudo-elements of every Elementor element
   and sizes them 100%/100% - see the PLATE FRAME note above. */
.vtabs .vtab::after{
  content:''; display:block; position:absolute;
  top:auto; left:0; right:100%; bottom:-1px;
  width:auto; height:2px;
  background:var(--burgundy); border:0; opacity:1;
  transition:right .3s ease; pointer-events:none;
}
.vtabs .vtab--on::after{ right:30px }

/* ---------- empty state (spec 3.5) ----------
   Required, not optional: this is the state the live site is in today. */
.empty.e-con{
  background:var(--paper); border:1px solid var(--stone); border-radius:2px;
  padding:clamp(40px, 5vw, 72px);
  text-align:center; align-items:center;
}
.elementor-widget-heading.empty__h{ margin-bottom:14px }
.elementor-widget-heading.empty__h .elementor-heading-title{ margin:0 }
.empty__p p{
  max-width:52ch; margin:0 auto 28px;
  color:var(--muted); font-weight:300;
}
.empty__actions.e-con{ justify-content:center }
/* ============================================================
   NEXT AUCTION FEATURE (.next) + DEADLINE BAND (.deadline)
   Rendered by JetEngine listing 213 through a Listing Grid, so every
   rule is qualified with .elementor-widget-<type> to beat Elementor's
   own defaults on the inner .jet-listing-dynamic-*__content nodes.
   --disp-scale is written out as 1.16 to match the rest of the kit.
   ============================================================ */

/* The grid wrapper must not impose card styling on a single full-width item */
.nextgrid .jet-listing-grid__items{ gap:18px }
.nextgrid .jet-listing-grid__item{ display:block; width:100% }
.nextgrid .jet-listing-grid__item > .elementor{ width:100% }

.next.e-con{
  display:grid; grid-template-columns:1.06fr .94fr;
  background:var(--ink); color:var(--parchment);
  border-radius:2px; overflow:hidden; position:relative; isolation:isolate;
}
@media (max-width:980px){
  .next.e-con{ grid-template-columns:1fr }
  .next__plate.e-con{ min-height:360px; order:-1 }
}
.next__body.e-con{ padding:clamp(34px, 3.6vw, 58px) }

/* status line */
.next__status.e-con{ --width:auto; width:auto; margin-bottom:22px }
.next__status .dot{
  width:7px; height:7px; border-radius:50%; flex:0 0 7px;
  background:var(--brass-lt); position:relative;
}
.next__status .dot--live{ background:#E0483C }
.next__status .dot::after{
  content:''; position:absolute; inset:-5px; width:auto; height:auto;
  border-radius:50%; border:1px solid var(--brass-lt); opacity:.5;
  animation:fsPulse 2.6s ease-out infinite;
}
.next__status .dot--live::after{ border-color:#E0483C }
.elementor-widget-text-editor.band__k p{ margin:0 }
.elementor-widget-text-editor.band__k--live p{ color:#E8867C }

/* title */
.elementor-widget-jet-listing-dynamic-field.next__h{ margin-bottom:14px }
.elementor-widget-jet-listing-dynamic-field.next__h .jet-listing-dynamic-field__content{
  font-family:var(--display); font-weight:500; line-height:1.08;
  letter-spacing:-.012em; color:var(--parchment); margin:0;
  font-size:calc(clamp(1.9rem, 3vw, 2.7rem) * 1.16);
}

/* date / preview / location */
.next__when.e-con{ margin-bottom:26px }
.next__whenline .jet-listing-dynamic-field__content,
.next__whenline p{
  margin:0; font-size:13px; line-height:1.7; letter-spacing:.03em;
  color:rgba(239,233,222,.62);
}

/* facts row */
.next__facts.e-con{
  border-top:1px solid rgba(239,233,222,.18);
  border-bottom:1px solid rgba(239,233,222,.18);
  padding-block:20px; margin-bottom:26px;
}
.next__fact.e-con{
  --width:auto; width:auto;
  padding-right:26px; margin-right:26px;
  border-right:1px solid rgba(239,233,222,.18);
}
.next__fact.e-con:last-child{ border-right:0; margin-right:0; padding-right:0 }

/* The consign CTA rides in the facts row as a third cell, so it picks up the
   same hairline divider as the stats. Smaller than a standard button so the
   20px row padding still reads as a stats strip, not a button bar. */
.next__fact--cta.e-con{ justify-content:center }
/* Same type and height as the action row below it - 12px / .2em / 15px 28px
   come from the shared button rule, so this just stops overriding them. */
@media (max-width:760px){
  .next__facts.e-con{ flex-wrap:wrap; row-gap:18px }
  .next__fact--cta.e-con{ border-right:0; margin-right:0; padding-right:0; width:100% }
}
.next__factn .jet-listing-dynamic-field__content,
.next__factn p{
  margin:0; font-family:var(--display); font-weight:500; line-height:1;
  font-variant-numeric:oldstyle-nums; color:var(--parchment);
  font-size:calc(1.45rem * 1.16);
}
.next__factk p{
  margin:9px 0 0; font-size:9.5px; letter-spacing:.22em; text-transform:uppercase;
  color:rgba(239,233,222,.5);
}

/* countdown - Elementor Pro widget, restyled to the kit */
.elementor-widget-countdown.next__clock{ margin-bottom:30px; width:100% }
.next__clock .elementor-countdown-wrapper{ display:flex; gap:clamp(14px,1.8vw,26px) }
.next__clock .elementor-countdown-item{
  background:none; padding:0; min-width:52px; text-align:left;
}
.next__clock .elementor-countdown-digits{
  display:block; font-family:var(--display); font-weight:500; line-height:1;
  font-variant-numeric:tabular-nums; color:var(--parchment);
  font-size:calc(2rem * 1.16);
}
.next__clock .elementor-countdown-label{
  display:block; margin-top:8px; font-family:var(--body);
  font-size:9.5px; letter-spacing:.24em; text-transform:uppercase;
  color:rgba(239,233,222,.45);
}

/* actions - JetEngine dynamic links styled as the kit's buttons.
   The widget renders an <a class="jet-listing-dynamic-link__link">, which
   .btn--* (written against .elementor-button) never reaches - hence .fsbtn. */
.next__actions.e-con{ --width:100%; width:100% }
.elementor-widget-jet-listing-dynamic-link.fsbtn{ --width:auto; width:auto }
.elementor-widget-jet-listing-dynamic-link.fsbtn .jet-listing-dynamic-link__link{
  display:inline-flex; align-items:center;
  font-family:var(--body); font-size:12px; font-weight:500;
  letter-spacing:.2em; text-transform:uppercase; text-decoration:none;
  padding:15px 28px; border:1px solid transparent; border-radius:2px;
  transition:background .25s ease, color .25s ease, border-color .25s ease;
}
.elementor-widget-jet-listing-dynamic-link.fsbtn--brass .jet-listing-dynamic-link__link{
  background:var(--brass); color:var(--ink); border-color:var(--brass);
}
.elementor-widget-jet-listing-dynamic-link.fsbtn--brass .jet-listing-dynamic-link__link:hover{
  background:var(--brass-lt); border-color:var(--brass-lt); color:var(--ink);
}
.elementor-widget-jet-listing-dynamic-link.fsbtn--ghost .jet-listing-dynamic-link__link{
  background:transparent; color:var(--parchment); border-color:rgba(239,233,222,.42);
}
.elementor-widget-jet-listing-dynamic-link.fsbtn--ghost .jet-listing-dynamic-link__link:hover{
  background:var(--parchment); color:var(--ink); border-color:var(--parchment);
}

/* access note under the CTAs (spec 7.3) */
.elementor-widget-text-editor.accessnote{ margin-top:16px; width:100% }
.elementor-widget-text-editor.accessnote p{
  margin:0; max-width:56ch; font-size:12.5px; line-height:1.65; font-weight:300;
  color:rgba(239,233,222,.55);
}
.elementor-widget-text-editor.accessnote strong{ color:rgba(239,233,222,.82); font-weight:500 }

/* catalogue plate */
.next__plate.e-con{
  position:relative; background:var(--ink-2);
  padding:clamp(30px, 3.2vw, 52px); min-height:440px;
}
.next__plate.e-con::before{
  content:''; position:absolute;
  top:22px; left:22px; right:22px; bottom:22px;
  width:auto; height:auto;
  border:1px solid rgba(168,129,62,.3);
  pointer-events:none; z-index:2;
}
.next__platefig.e-con{ max-width:400px; text-align:center }
.elementor-widget-jet-listing-dynamic-image.next__img{ line-height:0; margin-bottom:24px }
.elementor-widget-jet-listing-dynamic-image.next__img img{
  width:auto; max-width:100%; height:clamp(240px, 26vw, 320px);
  object-fit:contain; display:block; margin:0 auto;
  filter:drop-shadow(0 36px 54px rgba(0,0,0,.55));
}
.elementor-widget-text-editor.next__capk{
  border-top:1px solid rgba(168,129,62,.4); padding-top:18px; width:100%;
}
.elementor-widget-text-editor.next__capk p{
  margin:0 0 11px; font-size:10px; letter-spacing:.28em;
  text-transform:uppercase; color:var(--brass-lt);
}
.elementor-widget-heading.next__capt .elementor-heading-title{
  margin:0; font-family:var(--display); font-style:italic; line-height:1.4;
  color:var(--parchment) !important; font-size:calc(1.04rem * 1.16);
}
/* an uncaptioned attachment must not leave a stranded empty line */
.elementor-widget-heading.next__capt .elementor-heading-title:empty{ display:none }

/* ---------- consignment deadline band (spec 3.3) ---------- */
.deadline.e-con{
  margin-top:18px; background:var(--burgundy); color:var(--parchment);
  border-radius:2px; justify-content:space-between;
  padding:clamp(24px, 2.6vw, 34px) clamp(28px, 3vw, 44px);
}
.deadline__copy.e-con{ --width:auto; width:auto; flex:1 1 420px }
.elementor-widget-text-editor.deadline__h p{
  margin:0 0 7px; font-family:var(--display); font-weight:500; line-height:1.2;
  color:var(--parchment); font-size:calc(1.3rem * 1.16);
}
.elementor-widget-jet-listing-dynamic-field.deadline__p .jet-listing-dynamic-field__content{
  margin:0; max-width:64ch; font-size:13.5px; font-weight:300;
  color:rgba(239,233,222,.72);
}
/* ============================================================
   NEXT AUCTION - SPECIFICITY FIXES
   widget-countdown.min.css declares
     .elementor-widget-countdown .elementor-countdown-item{color;padding;text-align}
   at 0,2,0 - identical to a bare .next__clock .elementor-countdown-item - and it
   loads AFTER the kit sheet, so the tie went to Elementor and the boxes kept their
   padding, centring and background. It also sets flex-basis:0;flex-grow:1 at 0,3,0
   via .elementor-countdown--label-block, which is what stretched them into blocks.
   Everything below is qualified with the widget class to win on specificity.
   Same trap, same fix, for the dynamic-field text nodes.
   ============================================================ */

.elementor-widget-countdown.next__clock .elementor-countdown-wrapper{
  display:flex; flex-wrap:wrap; justify-content:flex-start;
  gap:clamp(14px, 1.8vw, 26px);
}
.elementor-widget-countdown.next__clock .elementor-countdown-item{
  background:transparent; background-color:transparent;
  padding:0; margin:0; border:0; border-radius:0;
  text-align:left; color:inherit;
  flex:0 0 auto; min-width:52px;
}
.elementor-widget-countdown.next__clock .elementor-countdown-digits{
  display:block; font-family:var(--display); font-weight:500; line-height:1;
  font-variant-numeric:tabular-nums; color:var(--parchment);
  font-size:calc(2rem * 1.16);
}
.elementor-widget-countdown.next__clock .elementor-countdown-label{
  display:block; margin-top:8px; font-family:var(--body);
  font-size:9.5px; font-weight:500; letter-spacing:.24em; text-transform:uppercase;
  color:rgba(239,233,222,.45);
}

/* Date / preview / location. The date line carries a custom Format, which makes
   JetEngine wrap it in .display-inline > __inline-wrap - so cover both shapes. */
.elementor-widget-jet-listing-dynamic-field.next__whenline .jet-listing-dynamic-field__content,
.elementor-widget-jet-listing-dynamic-field.next__whenline .jet-listing-dynamic-field__inline-wrap,
.elementor-widget-text-editor.next__whenline p{
  margin:0; font-size:13px; line-height:1.7; letter-spacing:.03em;
  color:rgba(239,233,222,.62);
}

/* Facts row: beat the widget default on the inner node */
.elementor-widget-jet-listing-dynamic-field.next__factn .jet-listing-dynamic-field__content{
  margin:0; font-family:var(--display); font-weight:500; line-height:1;
  font-variant-numeric:oldstyle-nums; color:var(--parchment);
  font-size:calc(1.45rem * 1.16);
}

/* Plate caption: one line at desktop rather than breaking after "mantel" */
.next__platefig.e-con{ max-width:470px }

/* Deadline copy: the dynamic field needs its line-height set explicitly */
.elementor-widget-jet-listing-dynamic-field.deadline__p .jet-listing-dynamic-field__content{
  line-height:1.7;
}
/* Arrow on the JetEngine dynamic-link buttons (notes 5.1).
   Uses the widget's own icon control: JetEngine orders __icon before
   __label with order:1/2, so a ::after pseudo-element (order:0) lands on
   the WRONG SIDE. link_icon_position=3 puts it after the label properly.
   Font Awesome renders as inline SVG here, so size and fill the svg. */
.elementor-widget-jet-listing-dynamic-link.fsbtn .jet-listing-dynamic-link__icon{
  display:inline-flex; align-items:center;
  transition:transform .25s ease;
}
.elementor-widget-jet-listing-dynamic-link.fsbtn .jet-listing-dynamic-link__icon svg{
  width:11px; height:11px; fill:currentColor;
}
.elementor-widget-jet-listing-dynamic-link.fsbtn .jet-listing-dynamic-link__link:hover .jet-listing-dynamic-link__icon{
  transform:translateX(4px);
}

/* ============================================================
   ACARDS GRID - real CSS grid
   JetEngine lays .jet-listing-grid__items out as FLEX:
     display:flex; flex-wrap:wrap; margin:0 -10px; width:calc(100% + 20px)
   with each item on a percentage width and 10px side padding. Adding a
   gap to that is what broke the row: in flex, gap is added ON TOP of the
   percentages, so 3 x 33.33% + 2 x 18px overflows and the third card wraps
   - two per row with an empty third column. The mockup (spec 4.3) is a real
   grid, so declare one and undo JetEngine's flex sizing on the items.
   ============================================================ */
.acards .jet-listing-grid__items{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:18px; margin:0; width:100%;
}
.acards .jet-listing-grid__items > .jet-listing-grid__item{
  width:auto; max-width:none; flex:none; padding:0;
}
@media (max-width:1080px){
  .acards .jet-listing-grid__items{ grid-template-columns:repeat(2,1fr) }
}
@media (max-width:680px){
  .acards .jet-listing-grid__items{ grid-template-columns:1fr }
}
/* ============================================================
   SINGLE AUCTION - HERO (.ahero)  Theme Builder template 215
   Four states driven by auction_status through Dynamic Visibility.
   ============================================================ */
.ahero.e-con{
  display:grid; grid-template-columns:1.02fr .98fr; align-items:stretch;
}
@media (max-width:1024px){
  .ahero.e-con{ grid-template-columns:1fr }
  .ahero__plate.e-con{ min-height:420px; order:-1 }
  .ahero__copy.e-con{ max-width:none; padding-right:var(--gutter) }
}
.ahero__copy.e-con{
  padding:clamp(46px,5vw,84px) clamp(36px,4vw,72px) clamp(56px,6vw,92px) var(--gutter);
  max-width:calc(1680px / 2 + 60px); margin-left:auto; width:100%;
}

/* breadcrumb */
.elementor-widget-text-editor.crumb{ margin-bottom:26px }
.elementor-widget-text-editor.crumb p{
  margin:0; font-family:var(--body); font-size:11px; font-weight:500;
  letter-spacing:.18em; text-transform:uppercase; color:var(--muted);
}
.crumb a{ color:var(--muted); border-bottom:1px solid var(--stone); text-decoration:none }
.crumb a:hover{ color:var(--burgundy); border-color:var(--brass) }
.crumb span{ color:var(--stone); margin:0 9px }

/* status pill - one per state */
.statepill.e-con{
  --width:auto; width:auto; margin-bottom:22px;
  border:1px solid var(--stone); border-radius:2px; padding:8px 14px;
}
.statepill .dot{
  width:7px; height:7px; border-radius:50%; flex:0 0 7px; background:var(--burgundy);
}
.elementor-widget-text-editor.statepill__t p{
  margin:0; font-family:var(--body); font-size:10px; font-weight:500;
  letter-spacing:.22em; text-transform:uppercase; color:var(--muted);
}
.statepill--live.e-con{ border-color:var(--burgundy) }
.statepill--live .statepill__t p{ color:var(--burgundy) }
/* the live red is scoped to live status only - never a general accent */
.statepill--now.e-con{ border-color:#E0483C; background:rgba(224,72,60,.06) }
.statepill--now .statepill__t p{ color:#E0483C }
.statepill--now .dot{ background:#E0483C }
.statepill--now .dot::after{
  content:""; position:absolute; inset:-5px; width:auto; height:auto;
  border-radius:50%; border:1px solid #E0483C; opacity:.5;
  animation:fsPulse 2.6s ease-out infinite;
}
.statepill--now .dot{ position:relative }
.statepill--off.e-con{ border-color:var(--stone) }
.statepill--off .statepill__t p{ color:var(--muted); text-decoration:line-through }

/* cancelled notice */
.cancelbox.e-con{
  background:var(--paper); border:1px solid var(--stone); border-left:3px solid var(--burgundy);
  padding:20px 24px; margin-bottom:26px;
}
.elementor-widget-text-editor.cancelbox__h p{
  margin:0 0 6px; font-family:var(--display); font-weight:500; line-height:1.25;
  color:var(--ink); font-size:calc(1.16rem * 1.16);
}
.elementor-widget-text-editor.cancelbox__p p{
  margin:0; font-size:13.5px; font-weight:300; color:var(--muted); line-height:1.65;
}

/* title */
.elementor-widget-jet-listing-dynamic-field.ahero__h{ margin-bottom:22px }
.elementor-widget-jet-listing-dynamic-field.ahero__h .jet-listing-dynamic-field__content{
  margin:0; font-family:var(--display); font-weight:500; line-height:1.06;
  letter-spacing:-.012em; color:var(--ink);
  font-size:calc(clamp(2.1rem,4vw,3.5rem) * 1.16);
}

/* metadata definition list */
.ahero__meta.e-con{ margin-bottom:32px; border-top:1px solid var(--stone); width:100% }
.ameta__row.e-con{
  display:grid; grid-template-columns:132px 1fr; gap:20px; align-items:baseline;
  border-bottom:1px solid var(--stone); padding:15px 0;
}
@media (max-width:600px){ .ameta__row.e-con{ grid-template-columns:1fr; gap:6px } }
.elementor-widget-text-editor.ameta__k p{
  margin:0; font-family:var(--body); font-size:10px; font-weight:500;
  letter-spacing:.22em; text-transform:uppercase; color:var(--muted);
}
.ameta__main .jet-listing-dynamic-field__content,
.elementor-widget-text-editor.ameta__main p{
  margin:0; font-family:var(--display); font-weight:500; line-height:1.35;
  font-variant-numeric:oldstyle-nums; color:var(--ink);
  font-size:calc(1.1rem * 1.16);
}
.ameta__sub .jet-listing-dynamic-field__content,
.ameta__sub .jet-listing-dynamic-terms,
.elementor-widget-text-editor.ameta__sub p{
  margin:5px 0 0; font-family:var(--body); font-size:12.5px; font-weight:300;
  color:var(--muted); letter-spacing:.02em; font-variant-numeric:normal;
}

/* action rows */
.ahero__actions.e-con{ width:100%; margin-bottom:0 }
.elementor-widget-text-editor.accessnote--light{ margin-top:16px; width:100% }
.elementor-widget-text-editor.accessnote--light p{
  margin:0; max-width:60ch; font-size:12.5px; line-height:1.65; font-weight:300;
  color:var(--muted);
}
.elementor-widget-text-editor.accessnote--light strong{ color:var(--ink); font-weight:500 }

/* dynamic-link button variants for LIGHT backgrounds (notes 5.1) */
.elementor-widget-jet-listing-dynamic-link.fsbtn--solid .jet-listing-dynamic-link__link{
  background:var(--burgundy); color:var(--paper); border-color:var(--burgundy);
}
.elementor-widget-jet-listing-dynamic-link.fsbtn--solid .jet-listing-dynamic-link__link:hover{
  background:var(--ink); border-color:var(--ink); color:var(--paper);
}
.elementor-widget-jet-listing-dynamic-link.fsbtn--line .jet-listing-dynamic-link__link{
  background:transparent; color:var(--ink); border-color:var(--ink);
}
.elementor-widget-jet-listing-dynamic-link.fsbtn--line .jet-listing-dynamic-link__link:hover{
  background:var(--ink); color:var(--paper); border-color:var(--ink);
}

/* tertiary outbound link - past state only, labelled honestly (spec 7.4) */
.elementor-widget-jet-listing-dynamic-link.outbound{ margin-top:14px }
.elementor-widget-jet-listing-dynamic-link.outbound .jet-listing-dynamic-link__link{
  display:inline-flex; align-items:baseline; gap:8px; text-decoration:none;
  font-family:var(--body); font-size:11.5px; font-weight:500;
  letter-spacing:.14em; text-transform:uppercase; color:var(--muted);
  border-bottom:1px solid var(--stone); padding-bottom:3px;
}
.elementor-widget-jet-listing-dynamic-link.outbound .jet-listing-dynamic-link__link:hover{
  color:var(--burgundy); border-color:var(--brass);
}

/* catalogue plate - featured image fallback until the repeater slider lands */
.ahero__plate.e-con{
  position:relative; min-height:600px;
  padding:clamp(34px,3.6vw,60px) clamp(30px,3.4vw,56px);
}
.ahero__plate.e-con::before{
  content:""; position:absolute;
  top:24px; left:24px; right:24px; bottom:24px; width:auto; height:auto;
  border:1px solid rgba(168,129,62,.3); pointer-events:none; z-index:2;
}
.ahero__platefig.e-con{ max-width:470px; text-align:center }
.elementor-widget-jet-listing-dynamic-image.ahero__img{ line-height:0; margin-bottom:24px }
.elementor-widget-jet-listing-dynamic-image.ahero__img img{
  width:auto; max-width:100%; height:clamp(300px,32vw,410px);
  object-fit:contain; display:block; margin:0 auto;
  filter:drop-shadow(0 40px 60px rgba(0,0,0,.55));
}
.elementor-widget-text-editor.ahero__capk{
  border-top:1px solid rgba(168,129,62,.4); padding-top:20px; width:100%;
}
.elementor-widget-text-editor.ahero__capk p{
  margin:0 0 11px; font-family:var(--body); font-size:10px; font-weight:500;
  letter-spacing:.28em; text-transform:uppercase; color:var(--brass-lt);
}
.elementor-widget-heading.ahero__capt .elementor-heading-title{
  margin:0; font-family:var(--display); font-style:italic; line-height:1.4;
  color:var(--parchment) !important; font-size:calc(1.04rem * 1.16);
}
.elementor-widget-heading.ahero__capt .elementor-heading-title:empty{ display:none }
/* ============================================================
   SINGLE AUCTION - BODY  (strip, highlights, description, prev/next, CTA)
   JetEngine's gallery grid is FLEX with percentage items, exactly like the
   listing grid - so .hgrid is redeclared as a real grid, same fix as .acards.
   ============================================================ */

/* ---- countdown / live strip ---- */
.abar.e-con{ position:relative; z-index:5; padding-block:0 }
.abar__grid.e-con{
  display:grid; grid-template-columns:auto 1fr auto;
  gap:clamp(24px,4vw,60px); align-items:center; padding-block:26px; width:100%;
}
@media (max-width:1080px){
  .abar__grid.e-con{ grid-template-columns:1fr; gap:24px }
}
.band__live.e-con{ --width:auto; width:auto; margin-bottom:10px }
.elementor-widget-text-editor.band__k p{
  margin:0; font-family:var(--body); font-size:11px; font-weight:500;
  letter-spacing:.22em; text-transform:uppercase; color:var(--brass-lt);
}
.band__date .jet-listing-dynamic-field__content,
.elementor-widget-text-editor.band__date p{
  margin:0 0 6px; font-family:var(--display); font-weight:500; line-height:1.2;
  color:var(--parchment); font-size:calc(1.32rem * 1.16);
}
.band__sub .jet-listing-dynamic-field__content,
.elementor-widget-text-editor.band__sub p{
  margin:0; font-size:13px; font-weight:300; line-height:1.6;
  color:rgba(239,233,222,.72);
}
.elementor-widget-countdown.clock{
  border-left:1px solid rgba(239,233,222,.2); border-right:1px solid rgba(239,233,222,.2);
  padding-inline:clamp(20px,3vw,48px);
}
@media (max-width:1080px){
  .elementor-widget-countdown.clock{
    border-left:0; border-right:0; padding-inline:0;
    border-top:1px solid rgba(239,233,222,.2); border-bottom:1px solid rgba(239,233,222,.2);
    padding-block:18px;
  }
}
.elementor-widget-countdown.clock .elementor-countdown-wrapper{
  display:flex; flex-wrap:wrap; gap:clamp(14px,2vw,30px);
}
.elementor-widget-countdown.clock .elementor-countdown-item{
  background:transparent; background-color:transparent; padding:0; margin:0;
  border:0; border-radius:0; text-align:left; color:inherit; flex:0 0 auto; min-width:52px;
}
.elementor-widget-countdown.clock .elementor-countdown-digits{
  display:block; font-family:var(--display); font-weight:400; line-height:1;
  font-variant-numeric:tabular-nums; color:var(--parchment);
  font-size:calc(clamp(1.6rem,2.6vw,2.3rem) * 1.16);
}
.elementor-widget-countdown.clock .elementor-countdown-label{
  display:block; margin-top:8px; font-family:var(--body); font-size:9.5px; font-weight:500;
  letter-spacing:.24em; text-transform:uppercase; color:rgba(239,233,222,.45);
}
.livenow.e-con{ --width:auto; width:auto }
.elementor-widget-text-editor.livenow__t p{
  margin:0; font-family:var(--display); font-weight:500; line-height:1;
  color:#E8867C; font-size:calc(1.85rem * 1.16);
}
.band__actions.e-con{ --width:auto; width:auto }

/* ---- highlights ---- */
.hgrid .jet-engine-gallery-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin:0; width:100%;
}
@media (max-width:1000px){ .hgrid .jet-engine-gallery-grid{ grid-template-columns:repeat(2,1fr) } }
.hgrid .jet-engine-gallery-grid__item{
  width:auto; max-width:none; flex:none; padding:0; margin:0;
}
.hgrid .jet-engine-gallery-grid__item-wrap{
  display:flex; align-items:center; justify-content:center;
  height:250px; padding:22px; overflow:hidden;
  background:var(--ink); border:1px solid rgba(168,129,62,.2); border-radius:2px;
  transition:border-color .3s;
}
.hgrid .jet-engine-gallery-grid__item-wrap:hover{ border-color:var(--brass) }
.hgrid .jet-engine-gallery-grid__item-img{
  max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain;
  filter:drop-shadow(0 22px 30px rgba(0,0,0,.5));
  transition:transform .7s cubic-bezier(.2,.7,.2,1);
}
.hgrid .jet-engine-gallery-grid__item-wrap:hover .jet-engine-gallery-grid__item-img{ transform:scale(1.05) }
.sec__head--split.e-con{
  display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(30px,5vw,80px);
  align-items:end; max-width:none; margin-bottom:clamp(40px,4.5vw,64px); width:100%;
}
@media (max-width:900px){ .sec__head--split.e-con{ grid-template-columns:1fr } }

/* ---- description + sidebar ---- */
.adetail.e-con{
  display:grid; grid-template-columns:1.35fr .65fr;
  gap:clamp(36px,5vw,80px); align-items:start; width:100%;
}
@media (max-width:900px){ .adetail.e-con{ grid-template-columns:1fr } }
.prose .jet-listing-dynamic-field__content{ max-width:64ch }
.prose .jet-listing-dynamic-field__content p{
  color:var(--muted); font-weight:300; margin:0 0 20px; line-height:1.78;
}
/* one drop cap only - used twice it stops being an accent (notes 11.6) */
.prose .jet-listing-dynamic-field__content p:first-child::first-letter{
  font-family:var(--display); font-size:3.9em; line-height:.86; float:left;
  padding:.06em .12em 0 0; color:var(--burgundy); font-weight:500;
}
.tagset.e-con{ margin-top:26px; width:100% }
.elementor-widget-text-editor.tagset__k p{
  margin:0 0 12px; font-family:var(--body); font-size:10px; font-weight:500;
  letter-spacing:.24em; text-transform:uppercase; color:var(--muted);
}
.aside.e-con{
  background:var(--paper); border:1px solid var(--stone); border-radius:2px;
  padding:clamp(26px,2.6vw,34px);
}
.elementor-widget-heading.aside__h .elementor-heading-title{
  margin:0 0 18px; font-family:var(--body); font-size:10px; font-weight:500;
  letter-spacing:.24em; text-transform:uppercase; color:var(--brass) !important;
}
.elementor-widget-text-editor.aside__k p{
  margin:18px 0 0; font-family:var(--body); font-size:10px; font-weight:500;
  letter-spacing:.2em; text-transform:uppercase; color:var(--muted);
}
.aside__v .jet-listing-dynamic-field__content,
.elementor-widget-text-editor.aside__v p{
  margin:6px 0 0; font-size:14.5px; line-height:1.62; color:var(--ink); font-weight:300;
}
.aside__v a{ color:var(--ink); border-bottom:1px solid var(--stone); text-decoration:none }
.aside__v a:hover{ color:var(--burgundy); border-color:var(--brass) }
.elementor-widget-text-editor.aside__hr{ width:100%; margin:24px 0 0 }
.elementor-widget-text-editor.aside__hr p{ margin:0; border-top:1px solid var(--stone); height:0 }

/* ---- prev / next (Elementor Post Navigation) ---- */
.pn .elementor-post-navigation{ border-top:1px solid var(--stone); padding-top:30px }
.pn .elementor-post-navigation__links{ display:grid; grid-template-columns:1fr 1fr; gap:18px }
@media (max-width:700px){ .pn .elementor-post-navigation__links{ grid-template-columns:1fr } }
.pn .post-navigation__arrow-wrapper{ display:none }
.pn .elementor-post-navigation__link a{
  display:block; padding:24px 26px; border:1px solid var(--stone); border-radius:2px;
  background:var(--paper); transition:.3s; text-decoration:none;
}
.pn .elementor-post-navigation__link a:hover{ border-color:var(--brass) }
.pn .post-navigation__prev--label, .pn .post-navigation__next--label{
  display:block; font-family:var(--body); font-size:10px; font-weight:500;
  letter-spacing:.22em; text-transform:uppercase; color:var(--brass); margin-bottom:11px;
}
.pn .post-navigation__prev--title, .pn .post-navigation__next--title{
  display:block; font-family:var(--display); font-weight:500; line-height:1.28;
  color:var(--ink); font-size:calc(1.14rem * 1.16);
}
.pn .elementor-post-navigation__next{ text-align:right }
.pn .elementor-post-navigation__separator{ display:none }

/* ---- closing CTA ---- */
.close.e-con{ text-align:center }
.close.e-con .fs-wrap{ align-items:center }
.elementor-widget-heading.close__h .elementor-heading-title{
  margin:0 0 18px; color:var(--parchment) !important;
}
.elementor-widget-text-editor.close__p{ width:100% }
.elementor-widget-text-editor.close__p p{
  margin:0 auto 30px; max-width:56ch; color:rgba(239,233,222,.72);
  font-weight:300; line-height:1.72;
}
.close__actions.e-con{ justify-content:center; --width:auto; width:auto }
/* ============================================================
   FEATURED-LOTS SLIDER (spec 6.7) - listing 217 over the featured_lots
   repeater, rendered by the Listing Grid in carousel mode (Swiper).
   Arrows flank the IMAGE, not the whole slide, so they do not drop level
   with the caption (design notes 6.2).
   ============================================================ */
.plate__stage{ position:relative; width:100%; --plate-img-h:clamp(300px,32vw,410px) }
.plate__stage .jet-listing-grid__slider{ position:static }
.plate__stage .jet-listing-grid__items{ margin:0; width:100% }
.plate__stage .jet-listing-grid__item{ width:auto; max-width:none; padding:0 }

/* each slide - figure margins are why captions inset if left alone */
.pslide.e-con{ margin:0; text-align:center; max-width:470px; margin-inline:auto }
.elementor-widget-jet-listing-dynamic-image.plate__img{ line-height:0; margin-bottom:28px }
.elementor-widget-jet-listing-dynamic-image.plate__img img{
  width:auto; max-width:100%; height:var(--plate-img-h);
  object-fit:contain; display:block; margin:0 auto;
  filter:drop-shadow(0 40px 60px rgba(0,0,0,.55));
}
/* only ONE rule in this panel - the one above the caption */
.elementor-widget-text-editor.plate__capk{
  border-top:1px solid rgba(168,129,62,.4); padding-top:20px; width:100%;
}
.elementor-widget-text-editor.plate__capk p{
  margin:0 0 11px; font-family:var(--body); font-size:10px; font-weight:500;
  letter-spacing:.28em; text-transform:uppercase; color:var(--brass-lt);
}
/* fixed min-height stops the brass frame breathing as captions rotate */
.plate__capt .jet-listing-dynamic-field__content{
  margin:0; min-height:62px; font-family:var(--display); font-style:italic;
  line-height:1.4; color:var(--parchment); font-size:calc(1.04rem * 1.16);
}

/* arrows - 42x42, brass hairline, vertically centred on the IMAGE */
.plate__stage .jet-listing-grid__slider-icon{
  position:absolute; top:calc(var(--plate-img-h) / 2); translate:0 -50%;
  width:42px; height:42px; margin:0; padding:0; z-index:6; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  background:transparent; border:1px solid rgba(168,129,62,.42); border-radius:2px;
  transition:background .25s ease, border-color .25s ease;
}
.plate__stage .jet-listing-grid__slider-icon svg{ width:13px; height:13px; fill:var(--brass-lt) }
.plate__stage .jet-listing-grid__slider-icon:hover{ background:var(--brass); border-color:var(--brass) }
.plate__stage .jet-listing-grid__slider-icon:hover svg{ fill:var(--ink) }
/* a single featured lot must never show arrows (spec 6.7). Swiper disables
   both buttons when there is nothing to navigate, so hide the disabled state. */
.plate__stage .jet-listing-grid__slider-icon.swiper-button-disabled{ display:none }

@media (prefers-reduced-motion: reduce){
  .plate__stage .swiper-wrapper{ transition-duration:.01ms !important }
}
/* ============================================================
   BUTTON HEIGHT PARITY + PLATE SLIDER IN THE UPCOMING FEATURE
   A JetEngine dynamic-link and an Elementor button sat side by side at
   different heights: Elementor sets line-height:1 on .elementor-button, while
   the dynamic link inherited the 1.65 body line-height. Same padding, taller
   box. Pin both so any mix of the two lines up.
   ============================================================ */
.elementor-widget-jet-listing-dynamic-link.fsbtn .jet-listing-dynamic-link__link,
.btn--solid .elementor-button, .btn--line .elementor-button,
.btn--brass .elementor-button, .btn--ghostLight .elementor-button{
  line-height:1;
}

/* The Upcoming feature plate is shorter than the detail hero, so the shared
   slider gets the smaller image height there (mockup .next__plate img). */
.next__plate .plate__stage{ --plate-img-h:clamp(240px, 26vw, 320px) }
.next__plate .pslide.e-con{ max-width:400px }
@media (max-width:1240px){
  .next__plate .plate__stage .prev-arrow{ left:-4px }
  .next__plate .plate__stage .next-arrow{ right:-4px }
}
/* ============================================================
   PLATE SLIDER ARROWS - corrected placement and direction
   JetEngine injects BOTH arrows from the same SVG template (prevArrow and
   nextArrow in data-slider_options are byte-identical left chevrons) and
   appends them to the slider container, adding swiper-button-next-svg /
   swiper-button-prev-svg. So the next arrow only points right if CSS rotates
   it. Both .elementor-kit-5 spellings are covered in case the template class changes.
   Sits INSIDE the plate frame - the mockup 6.2 offset of -62px was written for
   the wide homepage plate and overhangs these narrower ones.
   ============================================================ */
.elementor-widget-jet-listing-grid.plate__stage .jet-listing-grid__slider-icon{
  position:absolute; z-index:6; margin:0; padding:0; cursor:pointer;
  top:calc(var(--plate-img-h) / 2); translate:0 -50%;
  width:42px; height:42px;
  display:flex; align-items:center; justify-content:center;
  background:transparent; border:1px solid rgba(168,129,62,.42); border-radius:2px;
  transition:background .25s ease, border-color .25s ease;
}
.elementor-widget-jet-listing-grid.plate__stage .prev-arrow,
.elementor-widget-jet-listing-grid.plate__stage .swiper-button-prev-svg{ left:6px; right:auto }
.elementor-widget-jet-listing-grid.plate__stage .next-arrow,
.elementor-widget-jet-listing-grid.plate__stage .swiper-button-next-svg{ right:6px; left:auto }

.elementor-widget-jet-listing-grid.plate__stage .jet-listing-grid__slider-icon svg{
  width:13px; height:13px; fill:var(--brass-lt); display:block;
}
.elementor-widget-jet-listing-grid.plate__stage .jet-listing-grid__slider-icon:hover{
  background:var(--brass); border-color:var(--brass);
}
.elementor-widget-jet-listing-grid.plate__stage .jet-listing-grid__slider-icon:hover svg{ fill:var(--ink) }

@media (max-width:520px){
  .elementor-widget-jet-listing-grid.plate__stage .jet-listing-grid__slider-icon{ width:38px; height:38px }
}
/* the Categories fact is a heading widget driven by a shortcode tag */
.elementor-widget-heading.next__factn .elementor-heading-title{
  margin:0; font-family:var(--display); font-weight:500; line-height:1;
  font-variant-numeric:oldstyle-nums; color:var(--parchment) !important;
  font-size:calc(1.45rem * 1.16);
}

/* FSAG arrow direction - JetEngine ships ONE left-pointing glyph for both arrows and
   flips the NEXT one at the wrapper with .jet-listing-grid__slider-icon.swiper-arrow.next-arrow
   {transform:scaleX(-1)}. Rotating the inner <svg> as well cancelled that out and both
   arrows pointed left. Flip the wrapper only, and pin the svg flat. `translate` is a
   separate property from `transform`, so the -50% centring still composes. */
.elementor-widget-jet-listing-grid.plate__stage .next-arrow,
.elementor-widget-jet-listing-grid.plate__stage .swiper-button-next-svg{
  transform:scaleX(-1) !important;
}
.elementor-widget-jet-listing-grid.plate__stage .prev-arrow,
.elementor-widget-jet-listing-grid.plate__stage .swiper-button-prev-svg{
  transform:none !important;
}
.elementor-widget-jet-listing-grid.plate__stage .jet-listing-grid__slider-icon svg{
  transform:none !important;
}

/* ============================================================
   FSAG year rail (spec 4.1) - JSF Radio filter 228, widget .years
   JSF nests the control as .elementor-widget-container > .jet-filter >
   .jet-radio-list > form > fieldset > .jet-radio-list__row > label, so the
   fieldset is the only sensible flex container. The real <input> stays in
   the DOM for keyboard and screen readers; the pill is the sibling
   .jet-radio-list__button, which is what :checked styles.
   ============================================================ */
.elementor-widget-jet-smart-filters-radio.years{ margin:0 0 clamp(26px,3vw,38px) }
.elementor-widget-jet-smart-filters-radio.years fieldset{
  display:flex; flex-wrap:wrap; gap:8px; border:0; padding:0; margin:0; min-width:0;
}
.elementor-widget-jet-smart-filters-radio.years .jet-radio-list__row{ margin:0 }
.elementor-widget-jet-smart-filters-radio.years .jet-radio-list__item{ margin:0; cursor:pointer }
/* keep the input operable but out of sight - display:none would drop it from the tab order */
.elementor-widget-jet-smart-filters-radio.years .jet-radio-list__input{
  position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; margin:0;
}
/* the tick SVG is JSF's own affordance; the pill's fill state replaces it */
.elementor-widget-jet-smart-filters-radio.years .jet-radio-list__decorator{ display:none }
.elementor-widget-jet-smart-filters-radio.years .jet-radio-list__button{
  display:inline-flex; align-items:center; background:none;
  border:1px solid var(--stone); border-radius:2px; cursor:pointer;
  font-family:var(--body); font-size:11px; letter-spacing:.18em;
  padding:9px 15px; color:var(--muted); transition:.22s;
}
.elementor-widget-jet-smart-filters-radio.years .jet-radio-list__label{
  font-size:inherit; letter-spacing:inherit; color:inherit; margin:0;
}
.elementor-widget-jet-smart-filters-radio.years .jet-radio-list__item:hover .jet-radio-list__button{
  border-color:var(--brass); color:var(--ink);
}
.elementor-widget-jet-smart-filters-radio.years .jet-radio-list__input:checked + .jet-radio-list__button{
  background:var(--burgundy); border-color:var(--burgundy); color:var(--parchment); font-weight:500;
}
.elementor-widget-jet-smart-filters-radio.years .jet-radio-list__input:focus-visible + .jet-radio-list__button{
  outline:2px solid var(--brass); outline-offset:2px;
}

/* sec__head--split grid children - the two columns carry Elementor widths of
   55% and 38%, which were written for a flex ROW. This block makes the head a
   GRID (1.15fr .85fr), so a percentage width resolves against the TRACK, not the
   row - shrinking the lede to ~38% of .85fr and wrapping it to six lines. The
   mockup puts no width on these columns at all; the tracks do the sizing.
   Neutralise the widths rather than editing page 11, which is frozen. */
.sec__head--split.e-con > .e-con{ --width:100%; width:100% }


/* Categories list on the dark feature panel (spec 3.2).
   These are metadata, not actions - a bordered pill reads as a button and invites
   a click that goes nowhere. Rendered as a plain list with a brass hairline
   between items instead. The divider uses the ADJACENT SIBLING .elementor-kit-5 rather
   than :first-child/:nth-child, so it cannot be thrown off if JetEngine ever
   injects a delimiter node between terms. */
/* no margin-top: .next__facts already contributes margin-bottom:26px, and the two
   stacked to 60px. The facts row's own margin is the separator. */
.tagset--onDark.e-con{ margin-top:0; margin-bottom:32px; width:100% }
.tagset--onDark .elementor-widget-text-editor.tagset__k p{
  margin:0 0 14px; color:var(--brass);
}

/* Categories and Notable names sit side by side on the dark panel. The two
   tagsets keep their own classes, so their type styles are untouched - this row
   only lays them out and moves the 32px gap from each block onto the row.
   (0,3,0) to beat .tagset--onDark.e-con's own margin/width. */
.tagrow.e-con{
  display:flex; flex-direction:row; flex-wrap:wrap; align-items:flex-start;
  column-gap:clamp(30px, 3.6vw, 64px); row-gap:24px;
  margin-bottom:32px; width:100%;
}
.tagrow > .tagset--onDark.e-con{ margin:0; width:auto; flex:0 1 auto }
/* A sale with no notable names: JetEngine drops the terms but the label would
   remain, so hide the whole block. Dynamic Visibility handles this server-side
   too - this is the belt-and-braces for anything it misses. */
.tagrow > .tagset--names:not(:has(.jet-listing-dynamic-terms__link)){ display:none }
.elementor-widget-jet-listing-dynamic-terms.chips--onDark{ margin-bottom:0 }
.elementor-widget-jet-listing-dynamic-terms.chips--onDark .jet-listing-dynamic-terms{
  display:flex; flex-wrap:wrap; align-items:center; gap:0 0;
}
.elementor-widget-jet-listing-dynamic-terms.chips--onDark .jet-listing-dynamic-terms__link{
  display:inline-flex; align-items:center;
  border:0; border-radius:0; background:none; padding:2px 0;
  font-size:11px; letter-spacing:.16em; text-transform:uppercase; line-height:1.3;
  color:rgba(239,233,222,.82); transition:color .22s ease;
}
.elementor-widget-jet-listing-dynamic-terms.chips--onDark .jet-listing-dynamic-terms__link + .jet-listing-dynamic-terms__link{
  border-left:1px solid rgba(168,129,62,.55); margin-left:15px; padding-left:15px;
}
.elementor-widget-jet-listing-dynamic-terms.chips--onDark .jet-listing-dynamic-terms__link:hover{
  color:var(--parchment);
}

/* ============================================================
   CONSIGN PAGE - Formidable form
   Formidable Pro form 3 (key `consign`). Design-system section 10 named
   JetFormBuilder; Chris moved this to Formidable on 2026-08-29.

   formidableforms.css is GENERATED and variable-driven: every token is
   declared once, on `.with_frm_style`. So we rebind those variables on
   `.cform .with_frm_style` (0,2,0 beats 0,1,0) and let the plugin's own
   stylesheet paint the form in Four Seasons colours. Only what the variable
   set cannot express is written as a rule below.
   Do NOT create a second Formidable style for this - the generated file
   would then need regenerating, which is one more silent cache trap.
   Heads-up: Formidable DECLARES --submit-width, --line-height and
   --section-border-loc but never USES them, so those need real rules.
   --disp-scale is written out as 1.16, matching the rest of the kit.
   ============================================================ */

/* ---------- card shell. Background and padding are native Elementor on the
     container; the two-tone border lives here because Elementor writes one
     border colour for all four sides. ---------- */
.cform.e-con{
  border:1px solid var(--stone);
  border-top:2px solid var(--burgundy);
  border-radius:2px;
}

/* ---------- "About a minute" chip ---------- */
.cform__time{
  display:inline-flex; align-items:center; gap:8px;
  font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--brass);
  border:1px solid var(--brass); border-radius:2px; padding:6px 11px;
}
.cform__time svg{ width:12px; height:12px; stroke:currentColor; fill:none; stroke-width:1.8 }

/* ---------- Formidable variable rebind ---------- */
.cform .with_frm_style{
  --form-width:100%;
  --fieldset:0px;
  --fieldset-padding:0;
  --fieldset-bg-color:transparent;

  --font-size:10.5px;
  --label-color:var(--muted);
  --weight:500;
  --label-padding:0 0 8px 0;
  --required-color:var(--burgundy);
  --required-weight:500;

  --description-font-size:12px;
  --description-color:var(--muted);
  --description-weight:300;
  --description-margin:7px 0 0 0;

  --field-font-size:15px;
  --field-height:auto;
  --field-pad:13px 14px;
  --field-margin:18px;
  --field-weight:400;
  --text-color:var(--ink);
  --border-color:var(--stone);
  --field-border-width:1px;
  --field-border-style:solid;
  --bg-color:var(--parchment-lt);
  --bg-color-active:var(--paper);
  --border-color-active:var(--brass);
  --border-radius:2px;

  --section-font-size:11px;
  --section-color:var(--muted);
  --section-weight:500;
  --section-pad:18px 0 0 0;
  --section-mar-top:6px;
  --section-mar-bottom:0px;
  --section-bg-color:transparent;
  --section-border-color:var(--stone);
  --section-border-width:1px;
  --section-border-style:solid;

  --submit-font-size:12px;
  --submit-height:auto;
  --submit-padding:15px 28px;
  --submit-margin:8px;
  --submit-weight:500;
  --submit-border-radius:2px;
  --submit-border-width:1px;
  --submit-bg-color:var(--burgundy);
  --submit-border-color:var(--burgundy);
  --submit-text-color:var(--paper);
  --submit-hover-bg-color:var(--ink);
  --submit-hover-border-color:var(--ink);
  --submit-hover-color:var(--paper);
  --submit-active-bg-color:var(--ink);
  --submit-active-border-color:var(--ink);
  --submit-active-color:var(--paper);

  --progress-bg-color:var(--stone);
  --progress-active-bg-color:var(--brass);

  --error-text:var(--burgundy);
  --error-bg:var(--parchment-lt);
  --error-border:var(--burgundy);
  --error-font-size:12.5px;
  --border-color-error:var(--burgundy);
  --text-color-error:var(--ink);
  --bg-color-error:var(--paper);
  --success-bg-color:var(--parchment-lt);
  --success-border-color:var(--brass);
  --success-text-color:var(--ink);
  --success-font-size:15px;
}

/* ---------- labels. The variable set carries size, colour and weight but not
     the uppercase letterspacing every label in the design system uses. ---------- */
.cform .frm_primary_label{
  font-family:var(--body); letter-spacing:.2em; line-height:1.4; text-transform:uppercase;
}
/* `required_indicator` is unset on the shared Formidable style, so the span
   renders empty. Supply the asterisk here rather than editing that style,
   which every other form on the site would inherit. */
.cform .frm_required_field .frm_required::after{ content:'*'; margin-left:3px }

/* ---------- inputs ---------- */
.cform .frm_form_field input[type=text],
.cform .frm_form_field input[type=email],
.cform .frm_form_field input[type=tel],
.cform .frm_form_field textarea{
  font-family:var(--body); line-height:1.5;
  transition:background .2s ease,border-color .2s ease;
}
.cform .frm_form_field textarea{ resize:vertical; min-height:96px; line-height:1.6 }
.cform .frm_form_field input[type=text]:focus,
.cform .frm_form_field input[type=email]:focus,
.cform .frm_form_field input[type=tel]:focus,
.cform .frm_form_field textarea:focus{
  outline:2px solid var(--brass); outline-offset:2px; border-color:transparent;
}
.cform .frm_form_field ::placeholder{ color:#A99F94; opacity:1 }

/* ---------- photo dropzone. Formidable renders Dropzone.js markup; this is
     the mockup's .drop--lead treatment mapped onto it. ---------- */
/* .frm_dropzone is the OUTER wrapper - it holds the drop target AND the list of
   previews. Formidable blanks its border on `.dz-clickable` at (0,3,0) and caps
   it at max-width:520px via `.frm_form_field:not(.frm_compact) .frm_dropzone`
   (also 0,3,0), so rather than fight both, strip it to a plain container and put
   the concept's .drop--lead treatment on `.dz-message`, which is the actual
   clickable target. Selectors carry .frm_form_field where needed to reach
   (0,3,0) and win on load order. */
.cform .frm_form_field .frm_dropzone{
  max-width:none; border:0; background:none; padding:0; margin:0;
}
.cform .frm_dropzone .dz-message{
  margin:0; padding:34px 22px; text-align:center; cursor:pointer;
  border:2px dashed var(--brass); border-radius:2px; background:var(--paper);
  transition:background .25s ease,border-color .25s ease;
}
.cform .frm_dropzone .dz-message:hover,
.cform .frm_dropzone.dz-drag-hover .dz-message{
  background:var(--parchment-lt); border-color:var(--burgundy);
}
.cform .frm_form_field .frm_dropzone .dz-message .frmsvg{
  width:30px; height:30px; fill:var(--brass); color:var(--brass);
  display:block; margin:0 auto 12px;
}
.cform .frm_dropzone .frm_upload_text button{
  display:block; width:100%; margin:0; padding:0; border:0; background:none; cursor:pointer;
  font-family:var(--display); font-size:1.39rem; font-weight:500; line-height:1.2;
  letter-spacing:-.012em; color:var(--ink);
}
.cform .frm_dropzone .frm_small_text,
.cform .frm_dropzone .frm_small_text p{
  margin:6px 0 0; font-family:var(--body); font-size:12.5px; font-weight:300; color:var(--muted);
}
/* preview rows */
.cform .frm_dropzone .dz-preview{
  border:1px solid var(--stone); border-radius:2px; background:var(--parchment-lt);
  margin-top:10px; padding:10px;
}
.cform .frm_dropzone .dz-filename,
.cform .frm_dropzone .dz-filename span{
  font-family:var(--body); font-size:13px; color:var(--ink); text-align:left;
}
.cform .frm_dropzone .dz-size,
.cform .frm_dropzone .dz-size span{
  font-family:var(--body); font-size:12px; font-weight:300; color:var(--muted);
}
.cform .frm_dropzone .dz-remove svg path{ stroke:var(--muted) }
.cform .frm_dropzone .dz-remove:hover svg path{ stroke:var(--burgundy) }
/* thumbnails - small squares, the way a phone gallery reads.
   Formidable caps the image at `max-height:32px` and `max-width:30%` on the
   box (.frm_dropzone .dz-preview .dz-image img = 0,3,1), which leaves the
   thumbnail floating in white space. Override at (0,4,1) and let object-fit
   crop to fill - Dropzone already generates a square 60x60 thumbnail because
   its default thumbnailMethod is 'crop'. */
.cform .frm_dropzone .dz-preview .dz-image{
  flex:0 0 62px; width:62px; height:62px; max-width:none; overflow:hidden;
  border:1px solid var(--stone); border-radius:2px; background:var(--parchment);
}
.cform .frm_dropzone .dz-preview .dz-image img{
  display:block; width:100%; height:100%;
  max-width:none; max-height:none;
  object-fit:cover; border-radius:0;
}

/* ---------- "Add more detail (optional)" section trigger ---------- */
.cform .frm_section_heading h3.frm_trigger{
  display:inline-flex; align-items:center; gap:9px; cursor:pointer;
  font-family:var(--body); letter-spacing:.16em; text-transform:uppercase;
  transition:color .2s ease;
}
.cform .frm_section_heading h3.frm_trigger:hover{ color:var(--burgundy) }
.cform .frm_section_heading h3.frm_trigger .frm-svg-icon{ fill:var(--brass) }

/* ---------- submit button + field descriptions.
     IMPORTANT: Formidable's generated stylesheet is a MIX. Inputs, labels,
     the required marker and errors read the CSS variables, so the rebind
     above reaches them. The submit button and the field descriptions do NOT -
     they are written with LITERAL values (blue #4199FD, 8px radius, width
     auto, 12px #667085) under
       .frm_style_formidable-style.with_frm_style ...   = (0,3,1)
     which outranks anything scoped only `.cform ...` (0,2,0). Load order does
     not help: the kit loads after formidableforms.css, but specificity is
     decided first. So these two blocks are qualified to (0,4,1) to win
     without !important.
     [class*="frm_style_"] rather than the literal style slug, so a renamed
     or duplicated Formidable style does not silently break the button. ---------- */
.cform .frm_submit{ margin:0 }
.cform [class*="frm_style_"].with_frm_style .frm_submit button,
.cform [class*="frm_style_"].with_frm_style .frm_submit input[type=submit]{
  width:100%; margin:8px 0 0; padding:15px 28px;
  background:var(--burgundy); border:1px solid var(--burgundy); border-radius:2px;
  box-shadow:none; text-shadow:none; color:var(--paper);
  font-family:var(--body); font-size:12px; font-weight:500;
  letter-spacing:.2em; text-transform:uppercase; line-height:1.2;
  display:inline-flex; align-items:center; justify-content:center; gap:.7em;
  cursor:pointer;
  transition:background .25s ease,color .25s ease,border-color .25s ease;
}
/* Formidable's own hover IS var-driven, but it sits at (0,4,1) - the same
   weight as the rule above - and the kit loads later, so it would lose.
   Restate hover at (0,5,1). */
.cform [class*="frm_style_"].with_frm_style .frm_submit button:hover,
.cform [class*="frm_style_"].with_frm_style .frm_submit input[type=submit]:hover{
  background:var(--ink); border-color:var(--ink); color:var(--paper);
}
.cform [class*="frm_style_"].with_frm_style .frm_submit button:focus-visible{
  outline:2px solid var(--brass); outline-offset:3px;
}
.cform [class*="frm_style_"].with_frm_style div.frm_description,
.cform [class*="frm_style_"].with_frm_style .frm_description{
  margin:7px 0 0; padding:0; font-family:var(--body); font-size:12px;
  font-weight:300; line-height:1.55; color:var(--muted); text-align:left;
}
.cform .frm_button_submit .arw{ transition:transform .25s ease }
.cform .frm_button_submit:hover .arw{ transform:translateX(4px) }

/* ---------- validation and confirmation ---------- */
.cform .frm_error{ font-family:var(--body); font-weight:400; letter-spacing:.01em; margin-top:7px }
.cform .frm_error_style,
.cform .frm_message{
  border-radius:2px; font-family:var(--body); font-weight:300; line-height:1.7;
}
.cform .frm_message p{ margin:0 0 10px }
.cform .frm_message p:last-child{ margin-bottom:0 }

/* ---------- honeypot. Formidable only hides this inline when its stylesheet
     is switched off (FrmFormsHelper::maybe_hide_inline), and load_style is
     `all` here while nothing in the generated CSS hides it. Hide the whole
     container, not just the input, or the label text shows. ---------- */
.cform .frm_verify{ position:absolute !important; left:-3000px !important }
.cform .frm_fields_container > div:has(> .frm_verify){
  position:absolute !important; left:-3000px !important;
}

/* ---------- phones: 16px inputs so iOS does not zoom the page on focus ---------- */
@media(max-width:640px){
  .cform .with_frm_style{ --field-font-size:16px; --field-pad:15px 14px }
  .cform .frm_form_field.frm6{ grid-column:1 / -1 }
}
/* ============================================================
   CONSIGN PAGE - hero and form-card chrome (page 231)
   Same idiom as .phead__row on the auctions page: the two-column
   layout is a grid declared on the container's own class, and every
   widget rule is qualified with .elementor-widget-<type> so it beats
   Elementor's default on the INNER node.
   ============================================================ */
.chero__grid.e-con{
  display:grid; grid-template-columns:1.02fr .98fr;
  gap:clamp(34px, 4.4vw, 80px); align-items:start;
}
/* Form first on phones - the copy can wait. This is the 60-second
   mobile funnel from the concept, not an accident of source order. */
@media (max-width:940px){
  .chero__grid.e-con{ grid-template-columns:1fr }
  .chero__copy.e-con{ order:2 }
  .cform.e-con{ order:1 }
}

/* Elementor zeroes widget bottom margins inside every container with
   `.e-con .elementor-widget.elementor-widget{margin-block-end:0}` - the doubled
   class is a deliberate specificity bump to (0,3,0). A plain
   `.elementor-widget-<type>.myclass{margin-bottom:...}` is only (0,2,0) and is
   silently discarded, so raising the value changes nothing. Match Elementor's
   own doubling to reach (0,4,0). Applies to EVERY widget margin on this page. */
.e-con .elementor-widget.elementor-widget.chero__h{ margin-block-end:26px }
.elementor-widget-heading.chero__h .elementor-heading-title{ margin:0 }
.e-con .elementor-widget.elementor-widget.chero__lede{ margin-block-end:32px }
.elementor-widget-text-editor.chero__lede p{ margin:0; max-width:46ch }

.chero__proof{ list-style:none; margin:0; padding:0; border-top:1px solid var(--stone) }
.chero__proof li{
  border-bottom:1px solid var(--stone); padding:16px 0;
  display:grid; grid-template-columns:26px 1fr; gap:14px; align-items:start;
}
.chero__proof svg{
  width:15px; height:15px; stroke:var(--brass); fill:none; stroke-width:1.7; margin-top:4px;
}
.chero__proof b{
  display:block; font-family:var(--display); font-size:1.25rem; font-weight:500;
  line-height:1.3; letter-spacing:-.012em;
}
.chero__proof span{
  display:block; margin-top:4px; font-size:13.5px; color:var(--muted);
  font-weight:300; line-height:1.6;
}

/* ---------- form card chrome ---------- */
.e-con .elementor-widget.elementor-widget.cform__timewrap{ margin-block-end:28px }
.e-con .elementor-widget.elementor-widget.cform__h{ margin-block-end:16px }
.elementor-widget-heading.cform__h .elementor-heading-title{
  margin:0; font-size:1.88rem; line-height:1.15;
}
.e-con .elementor-widget.elementor-widget.cform__intro{ margin-block-end:34px }
.elementor-widget-text-editor.cform__intro p{
  margin:0; font-size:13.8px; color:var(--muted); font-weight:300; line-height:1.65;
}
.elementor-widget-text-editor.cform__foot{ margin-top:16px }
.elementor-widget-text-editor.cform__foot p{
  margin:0; font-size:12px; color:var(--muted); font-weight:300;
  line-height:1.6; text-align:center;
}
/* ============================================================
   CONSIGN PAGE - sections 2 to 7 and the sticky mobile bar
   Everything the homepage already ships (.sec__head--split, .steps,
   .quote__*, .close__*, .btn--*, .txtlink, .meta) is REUSED, not
   redeclared. Only the five components unique to this page are here.
   Dividers use the ADJACENT SIBLING .elementor-kit-5, never :last-child, so an
   editor-injected node cannot shift them (gotcha 3).
   Elementor's mobile_extra breakpoint is 900px - the column widths flip
   to 100% there, so the stacking media queries have to match it.
   ============================================================ */

/* ---------- reach stats ---------- */
.reachrow.e-con{
  border-top:1px solid var(--stone); border-bottom:1px solid var(--stone);
}
.reachrow__i.e-con{ padding:32px 30px 32px 0 }
.reachrow__i.e-con + .reachrow__i.e-con{
  border-left:1px solid var(--stone); padding-left:30px;
}
.reachrow__n p{
  margin:0; font-family:var(--display); font-size:2.9rem; font-weight:500;
  line-height:1; letter-spacing:-.012em; color:var(--burgundy);
  font-variant-numeric:oldstyle-nums;
}
.elementor-widget-text-editor.reachrow__n,
.elementor-widget-text-editor.reachrow__n p{ color:var(--burgundy) }
.reachrow__t p{
  margin:14px 0 0; font-size:13.5px; font-weight:300; line-height:1.62; color:var(--muted);
}
.elementor-widget-text-editor.reachrow__t,
.elementor-widget-text-editor.reachrow__t p{ color:var(--muted) }
@media (max-width:900px){
  .reachrow__i.e-con{ padding:26px 0 }
  .reachrow__i.e-con + .reachrow__i.e-con{
    border-left:0; padding-left:0; border-top:1px solid var(--stone);
  }
}

/* ---------- what you get as a consignor ---------- */
.why{
  display:grid; grid-template-columns:repeat(3,1fr); gap:2px 34px;
  list-style:none; margin:0; padding:0;
}
.why li{
  display:grid; grid-template-columns:20px 1fr; gap:12px; align-items:baseline;
  padding:16px 0; border-bottom:1px solid var(--stone);
  font-size:14.5px; font-weight:300; line-height:1.55; color:var(--ink);
}
.why svg{
  width:13px; height:13px; stroke:var(--brass); fill:none; stroke-width:2; margin-top:3px;
}
@media (max-width:900px){ .why{ grid-template-columns:1fr 1fr } }
@media (max-width:600px){ .why{ grid-template-columns:1fr } }

/* ---------- on-site split ---------- */
.e-con .elementor-widget.elementor-widget.onsite__h{ margin-block-end:22px }
.elementor-widget-heading.onsite__h .elementor-heading-title{ margin:0 }
.elementor-widget-text-editor.onsite__lede p{ margin:0 }
.onsite__list{
  display:flex; flex-wrap:wrap; gap:8px; list-style:none; margin:26px 0 0; padding:0;
}
.onsite__list li{
  border:1px solid var(--stone); border-radius:2px; padding:9px 15px;
  font-size:11.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--muted);
}
.onsite .elementor-widget-button.txtlink{ margin-top:30px }
.onsite__img.e-con{ border-radius:2px; overflow:hidden }
.onsite__img .elementor-widget-image img{
  display:block; width:100%; height:clamp(300px, 36vw, 470px);
  object-fit:cover; opacity:.94;
}

/* ---------- FAQ. Native <details>, so it works with no JS and is
     keyboard accessible without any ARIA of our own. ---------- */
.faq{ border-top:1px solid var(--stone) }
.faq details{ border-bottom:1px solid var(--stone) }
.faq summary{
  position:relative; list-style:none; cursor:pointer; padding:24px 44px 24px 0;
  font-family:var(--display); font-size:1.37rem; font-weight:500;
  line-height:1.3; letter-spacing:-.012em; transition:color .2s ease;
}
.faq summary::-webkit-details-marker{ display:none }
.faq summary:hover{ color:var(--burgundy) }
/* width/height are explicit because OoohBoi declares 100% on every
   ::after it can reach (gotcha 4) */
.faq summary::after{
  content:''; position:absolute; right:8px; top:50%; width:11px; height:11px;
  border-right:1px solid var(--brass); border-bottom:1px solid var(--brass);
  transform:translateY(-70%) rotate(45deg); transition:transform .3s ease;
}
.faq details[open] summary::after{ transform:translateY(-30%) rotate(-135deg) }
.faq p{
  margin:0 0 24px; max-width:74ch; font-size:14.8px;
  line-height:1.75; font-weight:300; color:var(--muted);
}

/* ---------- sticky mobile action bar ---------- */
.stickybar.e-con{
  position:fixed; left:0; right:0; bottom:0; z-index:80;
  --width:auto; width:auto; max-width:none;
  background:var(--ink); border-top:1px solid rgba(168,129,62,.4);
  display:none; align-items:center;
  transform:translateY(100%); transition:transform .3s cubic-bezier(.2,.7,.2,1);
}
.stickybar.is-up{ transform:none }
.elementor-widget-text-editor.stickybar__p{ flex:1 1 auto }
.stickybar__p p{
  margin:0; font-size:12.5px; font-weight:300; line-height:1.4; color:rgba(239,233,222,.7);
}
.elementor-widget-text-editor.stickybar__p,
.elementor-widget-text-editor.stickybar__p p{ color:rgba(239,233,222,.7) }
.stickybar .elementor-widget-button{ flex:0 0 auto }
@media (max-width:940px){ .stickybar.e-con{ display:flex } }
/* never in the editor canvas - a fixed bar hides the controls */
body.elementor-editor-active .stickybar.e-con{ position:static; transform:none }
/* ============================================================
   APPRAISAL PAGE (page below) - two new components only.
   The credential band reuses the homepage's .appr / .appr__card / .seal /
   .seal__badge / .appr__bio / .appr__stat / .uses / .uses__row / .uses__note
   verbatim, and the hero + form card reuse the Consign page's .chero / .cform
   block above - including the whole Formidable variable rebind. Nothing there
   is redeclared.
   Widget margins use the .e-con .elementor-widget.elementor-widget pattern to
   clear Elementor's (0,3,0) margin reset - see gotcha 17 in the notes.
   ============================================================ */

/* ---------- service-type chooser (Formidable radio field, .fs-choose).
     Formidable emits .frm_opt_container > .frm_radio > label > input, and the
     option label is passed through esc_html, so each card carries ONE line of
     text - the concept's three-tier card (price / title / blurb) collapses to
     "Auction estimate - free". The blurb lives in the field description and in
     the comparison section below. ---------- */
.cform .fs-choose .frm_opt_container{
  display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:0;
}
.cform .fs-choose .frm_radio{ margin:0 }
.cform .fs-choose .frm_radio label{
  display:block; margin:0; cursor:pointer; padding:16px 15px;
  border:1px solid var(--stone); border-radius:2px; background:var(--parchment-lt);
  font-family:var(--display); font-size:1.22rem; font-weight:500;
  line-height:1.3; letter-spacing:-.012em; color:var(--ink); text-transform:none;
  transition:border-color .22s ease,background .22s ease,box-shadow .22s ease;
}
.cform .fs-choose .frm_radio label:hover{ border-color:var(--brass) }
.cform .fs-choose .frm_radio input[type=radio]{
  position:absolute; opacity:0; width:1px; height:1px;
}
.cform .fs-choose .frm_radio label:has(input:checked){
  border-color:var(--burgundy); background:var(--paper);
  box-shadow:inset 0 0 0 1px var(--burgundy);
}
/* the input is visually hidden, so the focus ring has to move to the card */
.cform .fs-choose .frm_radio label:has(input:focus-visible){
  outline:2px solid var(--brass); outline-offset:3px;
}
@media (max-width:520px){
  .cform .fs-choose .frm_opt_container{ grid-template-columns:1fr }
}

/* ---------- estimate vs appraisal comparison ---------- */
.compare__card.e-con{
  border:1px solid var(--stone); border-top:2px solid var(--stone); border-radius:2px;
}
.compare__card.is-paid.e-con{ border-top-color:var(--burgundy) }
.compare__k p{
  margin:0; font-size:10px; letter-spacing:.26em; text-transform:uppercase; color:var(--brass);
}
.elementor-widget-text-editor.compare__k,
.elementor-widget-text-editor.compare__k p{ color:var(--brass) }
.elementor-widget-heading.compare__h .elementor-heading-title{ margin:0 }
.compare__price p{
  margin:0; font-family:var(--display); font-size:1.74rem; font-weight:500;
  line-height:1; letter-spacing:-.012em; color:var(--burgundy);
  font-variant-numeric:oldstyle-nums;
}
.elementor-widget-text-editor.compare__price,
.elementor-widget-text-editor.compare__price p{ color:var(--burgundy) }
.compare__dl dl{ margin:0; border-top:1px solid var(--stone) }
.compare__dl dt{
  padding-top:16px; font-size:10px; letter-spacing:.2em;
  text-transform:uppercase; color:var(--muted);
}
.compare__dl dd{
  margin:6px 0 16px; padding-bottom:16px; border-bottom:1px solid var(--stone);
  font-size:14.2px; line-height:1.65; font-weight:300; color:var(--ink);
}
.compare__dl dd:last-of-type{ border-bottom:0; margin-bottom:0; padding-bottom:0 }

.e-con .elementor-widget.elementor-widget.compare__k{ margin-block-end:14px }
.e-con .elementor-widget.elementor-widget.compare__h{ margin-block-end:10px }
.e-con .elementor-widget.elementor-widget.compare__price{ margin-block-end:20px }
.e-con .elementor-widget.elementor-widget.acred__meta{ margin-block-end:18px }
.e-con .elementor-widget.elementor-widget.onsite__lede2{ margin-block-end:0 }
/* ---------- ISA credential mark (attachment 245, 460x141).
     Closes the appraisal card the way a certification seal closes a document:
     the claim first, the issuing body's mark underneath. Picks up the same
     rule-above rhythm the .appr__stat block already uses, so the card reads as
     three stacked bands rather than a picture bolted on the end.
     Used on the Appraisals page (244) and the matching homepage card. ---------- */
.appr__card .elementor-widget-image.appr__isa{
  margin-block-start:28px; padding-top:24px; border-top:1px solid var(--stone);
}
.appr__card .elementor-widget-image.appr__isa img{
  display:block; width:150px; max-width:60%; height:auto;
}
/* ---------- ISA badge inside the Appraisals hero proof list.
     The base .chero__proof li is a 26px + 1fr grid (tick + copy); the ISA row
     gets a third auto column for the badge. Centred against the two-line copy
     block rather than top-aligned with the tick.
     Below 600px the badge drops under the copy in column 2 rather than
     squeezing the headline. ---------- */
.chero__proof li.proof--isa{
  grid-template-columns:26px 1fr auto;
  column-gap:20px;
}
.chero__proof .proof__isa{
  display:block; width:145px; height:auto;
  align-self:center; justify-self:end;
}
@media (max-width:600px){
  .chero__proof li.proof--isa{ grid-template-columns:26px 1fr }
  .chero__proof .proof__isa{
    grid-column:2; justify-self:start; margin-top:12px; width:132px;
  }
}

/* ============================================================
   FORMS PAGE (249, /forms/)
   Three PDF cards, three return routes, and a short Formidable
   help form (form 5, key `help`) reusing the .cform card the
   Consign and Appraisals pages already ship.
   Elementor paints every container as flex; the two places that
   need equal-height columns override `display` at (0,2,0) with
   the doubled `.x.e-con` .elementor-kit-5 rather than !important.
   Widget spacing goes through the doubled-class pattern because
   `.e-con .elementor-widget.elementor-widget{margin-block-end:0}`
   sits at (0,3,0) and silently eats anything lighter.
   ============================================================ */

/* ---------- document grid. 3-up, then straight to 1-up: at two-up the
     third card is orphaned on a row of its own. ---------- */
.docgrid.e-con{
  --display:grid; display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:18px; align-items:stretch;
}
@media (max-width:1040px){ .docgrid.e-con{ grid-template-columns:1fr } }

.docgrid > .e-con.doc{
  border:1px solid var(--stone); border-radius:2px; position:relative;
  transition:border-color .3s ease, transform .5s cubic-bezier(.2,.7,.2,1);
}
.doc::before{
  content:''; position:absolute; top:0; left:0; right:0; height:2px;
  background:transparent; transition:background .3s ease; z-index:1;
}
.docgrid > .e-con.doc:hover{ border-color:var(--brass); transform:translateY(-3px) }
.doc:hover::before{ background:var(--burgundy) }

/* audience label - replaces the group headings the concept dropped */
.doc__for{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--body); font-size:9.5px; letter-spacing:.22em;
  text-transform:uppercase; color:var(--brass);
  border:1px solid var(--stone); border-radius:2px; padding:6px 10px;
}
.doc__for::before{ content:''; width:5px; height:5px; border-radius:50%; background:var(--brass) }
.doc--consignor .doc__for{ color:var(--burgundy) }
.doc--consignor .doc__for::before{ background:var(--burgundy) }

/* icon plate + title */
.doc__top{ display:flex; align-items:flex-start; gap:15px }
/* The band height must NOT come from inherited line-height - body sets 1.65,
     which turns 8px text into a ~19px band that eats into the glyph. Pin the
     band to 20px, reserve exactly that much with padding-bottom, and let
     place-items:center do the rest. No magic margin on the svg. */
.doc__icon{
  flex:none; width:46px; height:56px; position:relative; box-sizing:border-box;
  border:1px solid var(--stone); border-radius:2px;
  background:var(--parchment-lt); display:grid; place-items:center;
  padding-bottom:20px;
}
.doc__icon::after{
  content:'PDF'; position:absolute; bottom:-1px; left:-1px; right:-1px;
  height:20px; line-height:20px; padding:0;
  background:var(--burgundy); color:var(--parchment);
  font-family:var(--body); font-size:8px; letter-spacing:.14em;
  text-align:center; border-radius:0 0 2px 2px;
}
.doc__icon svg{
  display:block; width:20px; height:20px; margin:0; overflow:visible;
  stroke:var(--brass); fill:none; stroke-width:1.4;
}
.doc__top h3{
  margin:0 0 7px; font-family:var(--display); font-weight:500;
  font-size:calc(1.2rem * 1.16); line-height:1.18;
  letter-spacing:-.012em; color:var(--ink);
}
.doc__meta{
  font-family:var(--body); font-size:10px; letter-spacing:.2em;
  text-transform:uppercase; color:var(--muted);
}

.elementor-widget-text-editor.doc__p p{
  margin:0; font-size:14px; line-height:1.68; color:var(--muted); font-weight:300;
}
.doc__dl dl{ margin:0; border-top:1px solid var(--stone) }
.doc__dl dt{
  padding-top:14px; font-family:var(--body); font-size:9.5px;
  letter-spacing:.22em; text-transform:uppercase; color:var(--brass);
}
.doc__dl dd{
  margin:5px 0 13px; padding-bottom:13px; border-bottom:1px solid var(--stone);
  font-size:13.4px; line-height:1.58; color:var(--ink); font-weight:300;
}
.doc__dl dd:last-of-type{ border-bottom:0; margin-bottom:0; padding-bottom:0 }

/* actions pinned to the foot so three cards of unequal copy still line up */
.doc > .e-con.doc__actions{ margin-block-start:auto }
/* Not every card has a secondary link. Bottom-pinning alone then drops that
     card's button a whole link-row below its neighbours. Reserve the row when
     the link is absent: 13px is the arrow icon's rendered height (11.5px font
     x 512/448 viewBox), plus the .txtlink 5px padding and its 1px rule. The
     14px flex gap supplies the rest, exactly as it does for a real link. */
.doc__actions:not(:has(.txtlink))::after{
  content:''; display:block; width:100%; height:19px;
}
.doc__actions > .elementor-widget-button{ width:100% }
.doc__actions .btn--solid .elementor-button{ width:100%; justify-content:center }

.e-con .elementor-widget.elementor-widget.doc__forwrap{ margin-block-end:22px }
.e-con .elementor-widget.elementor-widget.doc__topwrap{ margin-block-end:16px }
.e-con .elementor-widget.elementor-widget.doc__p{ margin-block-end:18px }
.e-con .elementor-widget.elementor-widget.doc__dl{ margin-block-end:22px }

/* ---------- three ways to return it. One bordered box, hairline dividers,
     same construction as the homepage .bids row. ---------- */
.ways.e-con{
  --display:grid; display:grid; grid-template-columns:repeat(3,1fr); gap:0;
  border:1px solid var(--stone); border-radius:2px; background:var(--paper);
}
.ways > .e-con.ways__col{ border-right:1px solid var(--stone) }
.ways > .e-con.ways__col:last-child{ border-right:0 }
@media (max-width:840px){
  .ways.e-con{ grid-template-columns:1fr }
  .ways > .e-con.ways__col{ border-right:0; border-bottom:1px solid var(--stone) }
  .ways > .e-con.ways__col:last-child{ border-bottom:0 }
}
.ways__icon svg{ width:24px; height:24px; stroke:var(--burgundy); fill:none; stroke-width:1.3 }
.elementor-widget-heading.ways__t .elementor-heading-title{
  margin:0; font-family:var(--display); font-weight:500;
  font-size:calc(1.16rem * 1.16); line-height:1.2; letter-spacing:-.012em;
}
.elementor-widget-text-editor.ways__p p{
  margin:0; font-size:13.8px; line-height:1.65; color:var(--muted); font-weight:300;
}
.elementor-widget-text-editor.ways__link p{ margin:0 }
.ways__link a{
  display:inline-block; font-family:var(--body); font-size:10.5px;
  letter-spacing:.18em; text-transform:uppercase; color:var(--burgundy);
  border-bottom:1px solid var(--brass); padding-bottom:3px;
  transition:color .2s ease, border-color .2s ease;
}
.ways__link a:hover{ color:var(--ink); border-bottom-color:var(--ink) }
.e-con .elementor-widget.elementor-widget.ways__icon{ margin-block-end:18px }
.e-con .elementor-widget.elementor-widget.ways__t{ margin-block-end:9px }
.e-con .elementor-widget.elementor-widget.ways__p{ margin-block-end:14px }

/* ---------- deadline / recommendation notice ---------- */
.notice.e-con{
  border:1px solid var(--stone); border-left:3px solid var(--burgundy);
  border-radius:2px;
}
/* flex-basis runs along the MAIN axis: 420px is a width in the row-shaped
   deadline notice but a HEIGHT in the column-shaped .notice--flag, which left
   ~300px of dead space under it. Size on min-width instead - that is the cross
   axis in a column (harmless, already full width) and the intended wrap point
   in a row. */
.notice > .elementor-widget-html{ flex:1 1 auto; width:auto; min-width:min(420px,100%) }
/* Same trap as the deadline band: the row is align-items:center but Elementor's
   --container-widget-align-self lands on the widget and pulls it to the top. */
.notice > .elementor-widget-button{ align-self:center; flex:0 0 auto; width:auto }
.notice > .elementor-widget-button{ flex:0 0 auto; width:auto }
.notice__body p{ margin:0; max-width:70ch }
.notice__body b{
  display:block; margin-bottom:5px; font-family:var(--display); font-weight:500;
  font-size:calc(1.14rem * 1.16); line-height:1.25; letter-spacing:-.012em; color:var(--ink);
}
.notice__body span{
  display:block; font-size:13.5px; color:var(--muted);
  font-weight:300; line-height:1.6;
}
/* flags a build recommendation rather than client-facing copy */
.specnote{
  align-items:center; gap:9px;
  font-family:var(--body); font-size:10px; letter-spacing:.2em;
  text-transform:uppercase; color:var(--brass);
  border:1px dashed var(--brass); border-radius:2px; padding:7px 12px;
}
/* an inline-flex box cannot push the paragraph below it down - vertical
   margins do not apply to atomic inlines - so make it a block-level flex
   box sized to its content instead. */
.notice__body .specnote{ display:flex; width:max-content; max-width:100%; margin-bottom:12px }

/* ---------- Formidable dropdown. The generated stylesheet drives select
     colour, padding and radius off the same variables the text inputs use,
     so only the native arrow needs replacing. `.with_frm_style select` sets
     background-position-y at (0,1,1); this sits at (0,2,1) and wins. ---------- */
.cform .frm_form_field select{
  appearance:none; -webkit-appearance:none;
  font-family:var(--body); line-height:1.5; padding-right:38px;
  background-image:
    linear-gradient(45deg,transparent 50%,var(--brass) 50%),
    linear-gradient(135deg,var(--brass) 50%,transparent 50%);
  background-position:calc(100% - 19px) calc(50% + 1px), calc(100% - 14px) calc(50% + 1px);
  background-size:5px 5px, 5px 5px;
  background-repeat:no-repeat;
  transition:background-color .2s ease, border-color .2s ease;
}
.cform .frm_form_field select:focus{
  outline:2px solid var(--brass); outline-offset:2px; border-color:transparent;
}
/* grey the closed control while it still reads "Choose one..." */
.cform .frm_form_field select option.frm-select-placeholder{ color:#A99F94 }
.cform .frm_form_field select:has(option.frm-select-placeholder:checked){ color:#A99F94 }

/* ============================================================
   GALLERY PAGE (280, /gallery/)
   Sold Gallery CPT `sold_lot` -> JetEngine listing 278 -> Listing Grid
   driven by Query Builder query 6 (query_id `sold-gallery`), filtered by
   JetSmartFilters 279 on the `sold_category` taxonomy.
   Everything here is written against JSF/JetEngine's REAL markup, which
   nests two wrappers between the grid child and our card:
   .jet-listing-grid__item > .elementor-278 > .e-con.gitem
   ============================================================ */

/* ---------- filter row. JSF renders checkboxes as
     .jet-checkboxes-list > fieldset > .__row > label > input + .__button
     so the fieldset becomes the flex track and .__button becomes the pill. ---------- */
.gfilters.e-con{
  border-top:1px solid var(--stone); border-bottom:1px solid var(--stone);
  padding-block:18px; margin-block-end:clamp(28px, 3.4vw, 44px);
}
.gf-cats .jet-checkboxes-list-wrapper{
  display:flex; flex-wrap:wrap; gap:8px;
  border:0; margin:0; padding:0; min-width:0;
}
.gf-cats .jet-checkboxes-list__row{ margin:0 }
.gf-cats .jet-checkboxes-list__item{ margin:0; cursor:pointer }
/* the native box is replaced by the pill itself, not hidden with display:none -
   it must stay focusable for keyboard users */
.gf-cats .jet-checkboxes-list__input{
  position:absolute; width:1px; height:1px; opacity:0; pointer-events:none;
}
.gf-cats .jet-checkboxes-list__decorator{ display:none }

.gf-cats .jet-checkboxes-list__button,
.gf-all .jet-remove-all-filters__button{
  display:inline-flex; align-items:center; line-height:1;
  background:none; border:1px solid var(--stone); border-radius:2px; cursor:pointer;
  font-family:var(--body); font-size:11px; font-weight:400;
  letter-spacing:.18em; text-transform:uppercase;
  padding:10px 16px; color:var(--muted);
  transition:background .22s ease, border-color .22s ease, color .22s ease;
}
.gf-cats .jet-checkboxes-list__button:hover,
.gf-all .jet-remove-all-filters__button:hover{ border-color:var(--brass); color:var(--ink) }
.gf-cats .jet-checkboxes-list__input:focus-visible + .jet-checkboxes-list__button{
  outline:2px solid var(--brass); outline-offset:2px;
}
.gf-cats .jet-checkboxes-list__item:has(.jet-checkboxes-list__input:checked) .jet-checkboxes-list__button{
  background:var(--burgundy); border-color:var(--burgundy);
  color:var(--parchment); font-weight:500;
}
/* JSF adds .hide to the reset while nothing is filtered. Keep it on screen:
   with no category chosen "All" IS the current state, so it reads as the active
   pill; the moment a category is picked it becomes a live reset control. */
.gf-all .jet-remove-all-filters.hide{ display:block }
.gf-all .jet-remove-all-filters.hide .jet-remove-all-filters__button{
  background:var(--burgundy); border-color:var(--burgundy);
  color:var(--parchment); font-weight:500; cursor:default;
}
.gf-count{ margin-left:auto }
.gfilters__count{
  font-family:var(--body); font-size:11px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--muted); white-space:nowrap;
}
.gfilters__count b{ color:var(--ink); font-weight:500; font-variant-numeric:tabular-nums }

/* ---------- the grid. JetEngine ships its own column classes; replace them
     with a real CSS grid so the cards share a row height. ---------- */
.ggrid .jet-listing-grid__items{
  display:grid; grid-template-columns:repeat(4,1fr); gap:20px;
  margin:0; padding:0; width:100%; /* JetEngine pairs its -10px margins with calc(100% + 20px); margin:0 alone left a 20px overflow */
}
@media (max-width:1180px){ .ggrid .jet-listing-grid__items{ grid-template-columns:repeat(3,1fr) } }
@media (max-width:820px){ .ggrid .jet-listing-grid__items{ grid-template-columns:repeat(2,1fr) } }
.ggrid .jet-listing-grid__item{
  width:100%; max-width:none; margin:0; padding:0; display:flex;
}
.ggrid .jet-listing-grid__item > .elementor{ display:flex; width:100% }

/* ---------- the tile ---------- */
.ggrid .e-con.gitem{
  width:100%; flex-direction:column; cursor:pointer;
  background:var(--ink-2); border:1px solid rgba(168,129,62,.2);
  border-radius:2px; overflow:hidden;
  transition:border-color .3s ease, transform .5s cubic-bezier(.2,.7,.2,1);
}
.ggrid .e-con.gitem:hover{ border-color:var(--brass); transform:translateY(-3px) }
.ggrid .e-con.gitem:focus-visible{ outline:2px solid var(--brass); outline-offset:3px }

.gitem__frame.e-con{
  position:relative; flex:none; aspect-ratio:1/1;
  justify-content:center; align-items:center;
  padding:24px; overflow:hidden;
}
.elementor-widget-jet-listing-dynamic-image.gitem__img,
.gitem__img .jet-listing-dynamic-image{
  width:100%; height:100%; display:flex; align-items:center; justify-content:center;
}
.gitem__img img{
  max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain;
  filter:drop-shadow(0 22px 30px rgba(0,0,0,.5));
  transition:transform .7s cubic-bezier(.2,.7,.2,1);
}
.gitem:hover .gitem__img img{ transform:scale(1.05) }

.gitem__zoomwrap{ position:absolute; top:12px; right:12px; z-index:2; width:auto }
.gitem__zoom{
  width:32px; height:32px; border-radius:2px; display:grid; place-items:center;
  background:rgba(20,17,16,.7); border:1px solid rgba(168,129,62,.4);
  opacity:0; transform:translateY(-6px); transition:.28s ease;
}
.gitem:hover .gitem__zoom{ opacity:1; transform:none }
.gitem__zoom svg{ width:14px; height:14px; stroke:var(--brass-lt); fill:none; stroke-width:1.6 }

.gitem__cap.e-con{
  flex:1; padding:18px 20px 20px; border-top:1px solid rgba(168,129,62,.28);
}
.elementor-widget-jet-listing-dynamic-field.gitem__t h3{
  margin:0; font-family:var(--display); font-weight:500;
  font-size:calc(1.02rem * 1.16); line-height:1.32; letter-spacing:-.012em;
  color:var(--parchment);
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.e-con .elementor-widget.elementor-widget.gitem__t{ margin-block-end:10px }
.gitem__cat{ margin-block-start:auto }
.elementor-widget-jet-listing-dynamic-terms.gitem__cat,
.gitem__cat .jet-listing-dynamic-terms{
  font-family:var(--body); font-size:9.5px; letter-spacing:.22em;
  text-transform:uppercase; color:var(--brass-lt); line-height:1.5;
}
/* read by the lightbox, never rendered */
.gitem__desc{ display:none }

/* ============================================================
   LIGHTBOX - built in JS (footer template 41), markup mirrors the concept.
   JetPopup is not installed on this site; see the build notes.
   ============================================================ */
.lb{
  position:fixed; inset:0; z-index:200; background:rgba(10,8,8,.96);
  display:none; opacity:0; transition:opacity .3s ease;
}
.lb.is-open{ display:block }
.lb.is-vis{ opacity:1 }
body.lb-open{ overflow:hidden }
.lb__inner{
  position:absolute; inset:0; display:grid; grid-template-rows:1fr auto;
  padding:clamp(56px,7vh,88px) clamp(56px,7vw,110px) clamp(28px,4vh,48px);
}
.lb__stage{ position:relative; display:flex; align-items:center; justify-content:center; min-height:0 }
.lb__stage img{
  max-width:100%; max-height:100%; object-fit:contain;
  filter:drop-shadow(0 40px 70px rgba(0,0,0,.6));
}
.lb__cap{
  text-align:center; padding-top:26px; margin-top:22px;
  border-top:1px solid rgba(168,129,62,.3);
  max-width:760px; margin-inline:auto; width:100%;
}
.lb__cap .k{
  display:block; font-size:9.5px; letter-spacing:.28em; text-transform:uppercase;
  color:var(--brass-lt); margin-bottom:11px;
}
.lb__cap h3{
  margin:0 0 9px; font-family:var(--display); font-weight:500;
  font-size:calc(1.34rem * 1.16); line-height:1.3; color:var(--parchment);
}
.lb__desc{
  margin:0 auto 14px; max-width:56ch; font-size:14.5px; line-height:1.65;
  font-weight:300; color:rgba(239,233,222,.66);
}
.lb__cat{
  margin:0 0 20px; font-size:10.5px; letter-spacing:.22em;
  text-transform:uppercase; color:rgba(239,233,222,.45);
}
.lb__cta{ display:flex; flex-wrap:wrap; gap:12px; align-items:center; justify-content:center }
.lb__cta em{ font-style:normal; font-size:12.5px; color:rgba(239,233,222,.5); font-weight:300 }
.lb__cta .btn{
  display:inline-flex; align-items:center; gap:.7em;
  font-family:var(--body); font-size:12px; font-weight:500;
  letter-spacing:.2em; text-transform:uppercase;
  padding:15px 28px; border:1px solid var(--brass); border-radius:2px;
  background:var(--brass); color:var(--ink);
  transition:background .25s ease, border-color .25s ease;
}
.lb__cta .btn:hover{ background:var(--brass-lt); border-color:var(--brass-lt) }
.lb__x, .lb__nav{
  position:absolute; background:transparent; border:1px solid rgba(168,129,62,.4);
  color:var(--brass-lt); border-radius:2px; cursor:pointer;
  display:grid; place-items:center; transition:.25s ease; font-family:var(--body);
}
.lb__x{ top:20px; right:20px; width:44px; height:44px; font-size:20px; line-height:1 }
.lb__nav{ top:50%; translate:0 -50%; width:46px; height:46px; font-size:16px }
.lb__nav--prev{ left:14px }
.lb__nav--next{ right:14px }
/* .lb__inner is inset:0 and comes LAST in DOM order. Every control here is
   positioned with z-index:auto, so .lb__inner painted over them and ate all
   their clicks - the arrows looked fine and did nothing. Lift the controls. */
.lb__x, .lb__nav, .lb__count{ z-index:3 }
/* Hello Elementor reset.css paints  button:focus{background-color:#c36}  - a pink -
   at (0,1,1). These controls are <button>s appended to <body>, so after a mouse
   click they kept focus and turned pink. Restate both states at (0,2,0).
   Plain :focus (mouse) returns to rest; :focus-visible (keyboard) matches hover,
   and the global :focus-visible outline still marks it. */
.lb__x:focus, .lb__nav:focus{
  background:transparent; border-color:rgba(168,129,62,.4); color:var(--brass-lt);
}
.lb__x:hover, .lb__nav:hover,
.lb__x:focus-visible, .lb__nav:focus-visible{
  background:var(--brass); border-color:var(--brass); color:var(--ink);
}
.lb__count{
  position:absolute; top:28px; left:24px; font-size:11px; letter-spacing:.24em;
  color:rgba(239,233,222,.45); font-variant-numeric:tabular-nums;
}
.lb__count b{ color:var(--brass-lt); font-weight:500 }
@media (max-width:700px){
  .lb__inner{ padding:64px 14px 22px }
  .lb__nav{ width:40px; height:40px }
  .lb__nav--prev{ left:6px }
  .lb__nav--next{ right:6px }
}

/* ============================================================
   ABOUT PAGE (283, /about/)
   Reuses .chero, .reachrow, .adetail, .onsite, .quote, .deadline and
   .close from the Consign / Auctions / Appraisals blocks. Only the
   portrait plate, pull quote, awards list, tag lists and the 4-up
   variant of the stats row are new.
   ============================================================ */

/* ---------- portrait plate. Placeholder until a photograph is supplied;
     when one arrives, drop .portrait--todo and put an image widget in. ---------- */
.portrait.e-con{
  position:relative; overflow:hidden; border-radius:2px;
  min-height:clamp(400px, 46vw, 600px);
  padding:clamp(26px, 3vw, 44px);
}
/* OoohBoi declares width/height:100% on every ::before - reset both or the
   inset frame overhangs the plate (gotcha #4). */
.portrait.e-con::before{
  content:''; position:absolute; inset:20px; width:auto; height:auto;
  border:1px solid rgba(168,129,62,.3); pointer-events:none; z-index:2;
}
.portrait .elementor-widget-html{ position:relative; z-index:3 }
.portrait__inner{ max-width:300px; margin-inline:auto; text-align:center }
.portrait__inner svg.mark{
  display:block; width:110px; height:auto; margin:0 auto 26px;
  opacity:.13; color:var(--brass);
}
.portrait__inner b{
  display:block; margin-bottom:10px; font-family:var(--display); font-weight:500;
  font-size:calc(1.22rem * 1.16); line-height:1.25; color:var(--parchment);
}
.portrait__inner p{
  margin:0; font-size:13px; line-height:1.6; font-weight:300; color:rgba(239,233,222,.5);
}
.portrait__inner em{
  display:inline-flex; align-items:center; gap:8px; margin-top:20px; font-style:normal;
  font-family:var(--body); font-size:9.5px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--brass); border:1px dashed var(--brass); border-radius:2px; padding:7px 12px;
}

/* ---------- stats row, 4-up variant. The shared .reachrow keeps its 3-up
     sizing; this only tightens the gutters and the number for a fourth
     column. Stacks at the same mobile_extra breakpoint as the 3-up. ---------- */
.reachrow--4 > .e-con.reachrow__i{ padding:30px 24px 30px 0 }
.reachrow--4 > .e-con.reachrow__i + .reachrow__i{ padding-left:24px }
.reachrow--4 .reachrow__n p{ font-size:2.55rem }
.reachrow--4 .reachrow__t p{ margin-top:12px; font-size:13px }
@media (max-width:900px){
  .reachrow--4 > .e-con.reachrow__i{ padding:26px 0 }
  .reachrow--4 > .e-con.reachrow__i + .reachrow__i{ padding-left:0 }
}

/* ---------- the story ---------- */
.about__prose p{
  margin:0 0 22px; max-width:64ch;
  font-size:15.5px; line-height:1.8; font-weight:300; color:var(--muted);
}
.about__prose p:last-child{ margin-bottom:0 }

/* About (283): text fills its column instead of stopping at a reading measure,
   so paragraphs line up with the pull quote, proof list and heading. */
.elementor-283 .elementor-widget-text-editor.lede.chero__lede,
.elementor-283 .elementor-widget-text-editor.chero__lede p,
.elementor-283 .about__prose p{ max-width:none }
.elementor-283 .elementor-element-abstoryhd.sec__head{ max-width:none }
.pull{
  border-left:2px solid var(--burgundy);
  padding:6px 0 6px 28px; margin:34px 0;
}
.pull p{
  margin:0; max-width:none; font-family:var(--display); font-style:italic;
  font-weight:400; font-size:calc(1.4rem * 1.16); line-height:1.42; color:var(--ink);
}

.awards{ list-style:none; margin:0; padding:0; border-top:1px solid var(--stone) }
.awards li{
  border-bottom:1px solid var(--stone); padding:20px 0;
  display:grid; grid-template-columns:78px 1fr; gap:22px; align-items:baseline;
}
.awards b{
  font-family:var(--display); font-weight:500; font-size:calc(1.16rem * 1.16);
  color:var(--burgundy); font-variant-numeric:oldstyle-nums;
}
.awards span{ font-size:14.5px; line-height:1.6; font-weight:300; color:var(--ink) }
.awards em{
  display:block; margin-top:4px; font-style:normal; font-size:12.5px; color:var(--muted);
}
.e-con .elementor-widget.elementor-widget.about__meta{ margin-block-end:18px }

/* ---------- what / where we sell ---------- */
.taglist{ display:flex; flex-wrap:wrap; gap:8px; list-style:none; margin:0; padding:0 }
.taglist li{
  border:1px solid var(--stone); border-radius:2px; padding:10px 16px;
  font-family:var(--body); font-size:11.5px; letter-spacing:.13em;
  text-transform:uppercase; color:var(--muted);
}
.taglist li.is-lead{ border-color:var(--brass); color:var(--ink) }
/* secondary platforms sit after the two leads without competing with them */
.taglist li.taglist__also{ border-color:transparent; padding-inline:6px; font-size:10.5px; color:var(--muted); opacity:.85 }
.elementor-widget-heading.sell__h .elementor-heading-title{ margin:0 }
.elementor-widget-text-editor.sell__lede p{ margin:0 }
.e-con .elementor-widget.elementor-widget.sell__h{ margin-block-end:18px }
.e-con .elementor-widget.elementor-widget.sell__tags{ margin-block-start:22px }

/* ---------- staff. `.onsite__lede` carried no bottom margin, so the two
     paragraphs butted together here AND on the Appraisals page. ---------- */
.e-con .elementor-widget.elementor-widget.onsite__lede{ margin-block-end:18px }
.e-con .elementor-widget.elementor-widget.about__staffbtn{ margin-block-start:30px }

/* ---------- consigning band. `.deadline__h` is already a text-editor rule;
     the body copy on the auction pages is a JetEngine dynamic field, so the
     plain-text-editor twin needs its own rule. ---------- */
.elementor-widget-text-editor.deadline__p2 p{
  margin:0; max-width:64ch; font-size:13.5px; font-weight:300; color:rgba(239,233,222,.72);
}
.deadline > .elementor-widget-button{ flex:0 0 auto; width:auto }

/* ---------- Deadline band CTA ----------
   The row is align-items:center, but Elementor's own
   --container-widget-align-self lands on the widget and pulls it to the top,
   so centring has to be stated on the widget itself. Larger than the standard
   button too - this is the only action in the band. (0,4,0) beats the kit's
   own .elementor-widget-button.btn--brass .elementor-button at (0,3,0). */
.deadline > .elementor-widget-button{ align-self:center }
.deadline .elementor-widget-button.btn--brass .elementor-button{
  font-size:14px; padding:21px 40px;
}

/* ============================================================
   BLOG / NEWS  -  page 339 (/news/), single template 340, archive 341
   Cards come from JetEngine listings 336 (grid) and 337 (featured), which
   nest two wrappers before our container:
     .jet-listing-grid__item > .elementor-336 > .e-con.pcard
   Body copy is raw generated HTML from Soro, so .article below is a complete
   typographic stylesheet rather than a few overrides - build spec 1.1.
   ============================================================ */

/* ---------- unifying treatment for AI featured images (build spec 3).
     Brass, never burgundy: burgundy leans blue-red and multiplying it over a
     light photograph shifts the midtones mauve. Brass reads as sepia. The
     fixed aspect ratio matters as much as the tint - without it one portrait
     image breaks the whole grid rhythm. ---------- */
.pimg.e-con{ position:relative; overflow:hidden; border-radius:2px; background:var(--ink) }
.pimg .elementor-widget-jet-listing-dynamic-image,
.pimg .jet-listing-dynamic-image{ width:100%; height:100% }
.pimg img{
  width:100%; height:100%; object-fit:cover; display:block;
  filter:saturate(.94);
  transition:transform .8s cubic-bezier(.2,.7,.2,1), filter .5s ease;
}
/* OoohBoi puts width/height:100% on every ::after - harmless here, but the
   inset must still be explicit. */
.pimg.e-con::after{
  content:''; position:absolute; inset:0; width:auto; height:auto;
  pointer-events:none; z-index:2; mix-blend-mode:multiply;
  background:linear-gradient(150deg,
    rgba(168,129,62,.13) 0%,
    rgba(120,92,58,.10) 45%,
    rgba(20,17,16,.24) 100%);
}
.pcard:hover .pimg img, .feature:hover .pimg img{ filter:saturate(1) }

/* ---------- grid ---------- */
.postgrid .jet-listing-grid__items{
  display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin:0; padding:0; width:100%; /* undo JetEngine calc(100% + 20px) once its -10px margins are zeroed */
}
@media (max-width:1080px){ .postgrid .jet-listing-grid__items{ grid-template-columns:repeat(2,1fr) } }
@media (max-width:680px){ .postgrid .jet-listing-grid__items{ grid-template-columns:1fr } }
.postgrid .jet-listing-grid__item{ width:100%; max-width:none; margin:0; padding:0; display:flex }
.postgrid .jet-listing-grid__item > .elementor{ display:flex; width:100% }

/* ---------- article card ---------- */
.e-con.pcard{
  width:100%; flex-direction:column; background:var(--paper);
  border:1px solid var(--stone); border-radius:2px; overflow:hidden;
  transition:border-color .3s ease, transform .5s cubic-bezier(.2,.7,.2,1);
}
.e-con.pcard:hover{ border-color:var(--brass); transform:translateY(-3px) }
.pcard > .e-con.pimg{ flex:none; aspect-ratio:16/10; border-radius:0 }
.pcard__body.e-con{ flex:1; padding:24px 24px 26px }
.elementor-widget-jet-listing-dynamic-field.pcard__t h3{
  margin:0; font-family:var(--display); font-weight:500;
  font-size:calc(1.22rem * 1.16); line-height:1.24; letter-spacing:-.012em; color:var(--ink);
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.pcard__p{
  font-size:14px; line-height:1.68; color:var(--muted); font-weight:300;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.pcard__link{ margin-block-start:auto }
.e-con .elementor-widget.elementor-widget.pcard__meta{ margin-block-end:16px }
.e-con .elementor-widget.elementor-widget.pcard__t{ margin-block-end:12px }
.e-con .elementor-widget.elementor-widget.pcard__p{ margin-block-end:20px }

/* ---------- featured post: the newest article, rendered larger ---------- */
.featwrap .jet-listing-grid__items{ display:block; margin:0; padding:0; width:100% }
.featwrap .jet-listing-grid__item{ width:100%; max-width:none; margin:0; padding:0 }
.e-con.feature{
  display:grid; grid-template-columns:1.06fr .94fr; width:100%;
  background:var(--paper); border:1px solid var(--stone); border-radius:2px;
  overflow:hidden; transition:border-color .3s ease;
}
.e-con.feature:hover{ border-color:var(--brass) }
.feature:hover .pimg img{ transform:scale(1.03) }
.feature > .e-con.pimg{ height:100%; min-height:clamp(300px,34vw,440px); border-radius:0 }
.feature__body.e-con{ padding:clamp(30px,3.4vw,52px); justify-content:center }
.elementor-widget-jet-listing-dynamic-field.feature__t h2{
  margin:0; font-family:var(--display); font-weight:500; letter-spacing:-.012em;
  font-size:calc(clamp(1.6rem,2.5vw,2.3rem) * 1.16); line-height:1.16; color:var(--ink);
}
.feature__p{ font-size:15px; line-height:1.72; color:var(--muted); font-weight:300; max-width:52ch }
.e-con .elementor-widget.elementor-widget.feature__meta{ margin-block-end:16px }
.e-con .elementor-widget.elementor-widget.feature__t{ margin-block-end:16px }
.e-con .elementor-widget.elementor-widget.feature__p{ margin-block-end:24px }
@media (max-width:900px){
  .e-con.feature{ grid-template-columns:1fr }
  .feature > .e-con.pimg{ min-height:240px; aspect-ratio:16/10 }
}

/* ---------- post meta. Renamed from .cat/.dot - build spec 3.1: those are
     already the homepage category tile and the auction live indicator. ---------- */
.pmeta{
  display:flex; flex-wrap:wrap; gap:8px 16px; align-items:center;
  font-family:var(--body); font-size:10px; letter-spacing:.22em;
  text-transform:uppercase; color:var(--muted); line-height:1.4;
}
.pmeta__cat{ color:var(--brass) }
.pmeta__sep{
  width:3px; height:3px; border-radius:50%; background:var(--stone);
  flex:none; display:inline-block;
}

/* ---------- category chips ---------- */
.pfilters{
  display:flex; flex-wrap:wrap; gap:8px; align-items:center;
  border-top:1px solid var(--stone); border-bottom:1px solid var(--stone);
  padding-block:18px;
}
.pfilter{
  display:inline-flex; align-items:center; line-height:1;
  border:1px solid var(--stone); border-radius:2px; padding:10px 16px;
  font-family:var(--body); font-size:11px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--muted);
  transition:background .22s ease, border-color .22s ease, color .22s ease;
}
.pfilter:hover{ border-color:var(--brass); color:var(--ink) }
.pfilter.is-on{
  background:var(--burgundy); border-color:var(--burgundy);
  color:var(--parchment); font-weight:500;
}
.pfilters__count{
  margin-left:auto; font-family:var(--body); font-size:11px; letter-spacing:.2em;
  text-transform:uppercase; color:var(--muted); white-space:nowrap;
}
.pfilters__count b{ color:var(--burgundy); font-weight:500; font-variant-numeric:tabular-nums }
.e-con .elementor-widget.elementor-widget.newsfilters{ margin-block-end:clamp(26px,3.2vw,42px) }

/* ---------- pagination ---------- */
.newspager{ margin-block-start:clamp(34px,4vw,52px) }
.newspager .jet-filters-pagination{ display:flex; flex-wrap:wrap; gap:8px; justify-content:center }
.newspager .jet-filters-pagination__item{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:42px; height:42px; padding:0 12px;
  border:1px solid var(--stone); border-radius:2px; cursor:pointer;
  font-family:var(--body); font-size:11px; letter-spacing:.14em; color:var(--muted);
  transition:border-color .22s ease, background .22s ease, color .22s ease;
}
.newspager .jet-filters-pagination__item:hover{ border-color:var(--brass); color:var(--ink) }
.newspager .jet-filters-pagination__current{
  background:var(--burgundy); border-color:var(--burgundy); color:var(--parchment);
}

/* ============================================================
   SINGLE ARTICLE
   ============================================================ */
.crumb{
  margin:0; text-align:center; font-family:var(--body); font-size:11px;
  letter-spacing:.18em; text-transform:uppercase; color:var(--muted);
}
.crumb a{ border-bottom:1px solid var(--stone) }
.crumb a:hover{ border-bottom-color:var(--brass); color:var(--ink) }
.crumb__sep{ color:var(--stone); margin:0 9px }
.e-con .elementor-widget.elementor-widget.crumbwrap{ margin-block-end:26px }

.ahead.e-con{ max-width:840px; margin-inline:auto; text-align:center }
.ahead .pmeta{ justify-content:center }
.elementor-widget-jet-listing-dynamic-field.ahead__h h1{
  margin:0; font-family:var(--display); font-weight:500; letter-spacing:-.012em;
  font-size:calc(clamp(2rem,3.6vw,3.1rem) * 1.16); line-height:1.1; color:var(--ink);
}
.ahead__lede{
  font-size:clamp(1.05rem,1.35vw,1.2rem); color:var(--muted); font-weight:300;
  line-height:1.7; max-width:60ch; margin-inline:auto;
}
.ahead__by{
  display:flex; flex-wrap:wrap; gap:10px 18px; align-items:center; justify-content:center;
  padding-top:24px; border-top:1px solid var(--stone);
  font-family:var(--body); font-size:11px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--muted);
}
.ahead__by b{ color:var(--ink); font-weight:500 }
.e-con .elementor-widget.elementor-widget.ahead__meta{ margin-block-end:20px }
.e-con .elementor-widget.elementor-widget.ahead__h{ margin-block-end:22px }
.e-con .elementor-widget.elementor-widget.ahead__byline{ margin-block-start:30px }

/* half the earlier full-width treatment - build spec 2.2 item 3 */
.hero-img.e-con{ max-width:860px; margin-inline:auto; margin-block-start:clamp(30px,3.4vw,48px) }
.hero-img > .e-con.pimg{ aspect-ratio:21/9 }

/* ---------- the article body: a full stylesheet for raw generated HTML,
     because post_content arrives as headings/paragraphs/lists with no
     builder layout inside it - build spec 1.1. ---------- */
.article{ max-width:1300px; margin-inline:auto }
.article > .elementor-widget-container > *:first-child{ margin-top:0 }
.article p{ font-size:18px; line-height:1.85; color:var(--ink); font-weight:300; margin:0 0 28px }
.article p:first-of-type::first-letter{
  font-family:var(--display); font-size:3.7em; line-height:.86; float:left;
  padding:.06em .12em 0 0; color:var(--burgundy); font-weight:500;
}
.article h2{
  font-family:var(--display); font-weight:500; letter-spacing:-.012em; color:var(--ink);
  font-size:calc(1.72rem * 1.16); margin:46px 0 18px; line-height:1.2; max-width:1100px;
}
.article h3{
  font-family:var(--display); font-weight:500; letter-spacing:-.012em; color:var(--ink);
  font-size:calc(1.28rem * 1.16); margin:36px 0 14px; line-height:1.25; max-width:1100px;
}
.article h2 + p, .article h3 + p{ margin-top:0 }
.article ul, .article ol{ margin:0 0 26px; padding-left:22px }
.article li{
  font-size:18px; line-height:1.8; color:var(--ink); font-weight:300;
  margin-bottom:12px; padding-left:6px;
}
.article li::marker{ color:var(--brass) }
.article blockquote{
  margin:34px auto; padding:4px 0 4px 28px; border-left:2px solid var(--burgundy);
  max-width:960px;
}
.article blockquote p{
  margin:0; font-family:var(--display); font-style:italic; font-weight:400;
  font-size:calc(1.3rem * 1.16); line-height:1.45; color:var(--ink);
}
.article a{ color:var(--burgundy); border-bottom:1px solid var(--stone) }
.article a:hover{ border-bottom-color:var(--brass) }
.article strong, .article b{ font-weight:500; color:var(--ink) }
.article figure{ margin:36px auto; max-width:1000px }
.article figure img{ width:100%; border-radius:2px; display:block }
.article figcaption{
  margin-top:11px; font-size:12.5px; color:var(--muted); font-weight:300; text-align:center;
}
.article img{ max-width:100%; height:auto; border-radius:2px }
.article hr{ border:0; border-top:1px solid var(--stone); margin:40px 0 }
.article table{ width:100%; max-width:1000px; border-collapse:collapse; margin:0 0 26px; font-size:15px }
.article th{
  text-align:left; font-family:var(--body); font-size:10px; letter-spacing:.2em;
  text-transform:uppercase; color:var(--muted); font-weight:500;
  padding:0 14px 12px 0; border-bottom:1px solid var(--stone);
}
.article td{
  padding:14px 14px 14px 0; border-bottom:1px solid var(--stone);
  font-weight:300; color:var(--ink); line-height:1.6;
}

/* ---------- share + author ---------- */
.share{
  max-width:1300px; margin-inline:auto; padding-top:26px;
  border-top:1px solid var(--stone);
  display:flex; flex-wrap:wrap; gap:12px; align-items:center;
}
.share span{
  font-family:var(--body); font-size:10px; letter-spacing:.22em;
  text-transform:uppercase; color:var(--muted); margin-right:6px;
}
.share a{
  width:40px; height:40px; border:1px solid var(--stone); border-radius:2px;
  display:grid; place-items:center; transition:.25s ease; color:var(--muted);
}
.share a:hover{ border-color:var(--brass); background:var(--brass); color:var(--ink) }
.share svg{ width:15px; height:15px; fill:currentColor }
.share svg [stroke]{ fill:none }
.e-con .elementor-widget.elementor-widget.sharewrap{ margin-block-start:clamp(34px,4vw,52px) }

.authorbox{
  max-width:1300px; margin-inline:auto; background:var(--paper);
  border:1px solid var(--stone); border-radius:2px; padding:clamp(26px,3vw,36px);
  display:grid; grid-template-columns:auto 1fr; gap:24px; align-items:start;
}
.authorbox .seal__badge{
  width:72px; height:72px; flex:none; border-radius:50%;
  border:1px solid var(--brass); display:grid; place-items:center;
  background:var(--parchment-lt);
}
.authorbox .seal__badge span{
  font-family:var(--display); font-size:calc(16px * 1.16);
  letter-spacing:.06em; color:var(--burgundy); font-weight:600;
}
.authorbox b{
  display:block; margin-bottom:6px; font-family:var(--display); font-weight:500;
  font-size:calc(1.22rem * 1.16); color:var(--ink);
}
.authorbox .role{
  display:block; margin-bottom:14px; font-family:var(--body); font-size:10.5px;
  letter-spacing:.2em; text-transform:uppercase; color:var(--brass);
}
.authorbox p{ margin:0; font-size:14.2px; line-height:1.7; color:var(--muted); font-weight:300 }
.e-con .elementor-widget.elementor-widget.authorwrap{ margin-block-start:clamp(34px,4vw,52px) }
@media (max-width:620px){ .authorbox{ grid-template-columns:1fr } }

/* the 1300px measure runs wide - keep it inside the gutter on smaller screens */
@media (max-width:1360px){
  .article, .share, .authorbox{ max-width:calc(100vw - (var(--gutter) * 2)) }
}

/* ---------- archive title ---------- */
h1.arch__h{
  margin:0;
  font-family:var(--display); font-weight:500; letter-spacing:-.012em;
  font-size:calc(clamp(2.1rem,3.6vw,3.4rem) * 1.16); line-height:1.08; color:var(--ink);
}

/* ============================================================
   CONTACT PAGE (343, /contact/)
   The message form reuses the .cform component built for consign,
   so only the page-specific blocks are defined here.
   ============================================================ */
.chead__lede a{ color:var(--burgundy); border-bottom:1px solid var(--brass) }
.chead__lede a:hover{ border-bottom-color:var(--burgundy) }

/* ---------- quick paths: deflect people to the better form before
     they write prose into a general message box ---------- */
.qpaths.e-con{
  --display:grid; display:grid;
  grid-template-columns:repeat(3,1fr); gap:16px;
}
@media (max-width:900px){ .qpaths.e-con{ grid-template-columns:1fr } }

.e-con.qpath{
  width:100%; height:100%; flex-direction:column;
  background:var(--paper); border:1px solid var(--stone); border-radius:2px;
  padding:clamp(24px,2.6vw,32px); position:relative; overflow:hidden;
  transition:border-color .3s ease, transform .5s cubic-bezier(.2,.7,.2,1);
}
.e-con.qpath::before{
  content:''; position:absolute; top:0; left:0; right:0;
  width:auto; height:2px; background:transparent; transition:background .3s ease;
}
.e-con.qpath:hover{ border-color:var(--brass); transform:translateY(-3px) }
.e-con.qpath:hover::before{ background:var(--burgundy) }
.qpath__icon svg{
  display:block; width:24px; height:24px;
  stroke:var(--burgundy); fill:none; stroke-width:1.3;
}
.elementor-widget-heading.qpath__h .elementor-heading-title{
  font-family:var(--display); font-weight:var(--disp-w); letter-spacing:var(--disp-track);
  font-size:calc(1.18rem * var(--disp-scale)); line-height:1.22; color:var(--ink);
}
.elementor-widget-text-editor.qpath__p p{
  margin:0; font-size:13.8px; line-height:1.66; color:var(--muted); font-weight:300;
}
.qpath__link{ margin-block-start:auto }
/* the whole card is the target; the anchor itself stays a real link for
   keyboard and screen-reader users rather than a div with a click handler. */
.qpath__link a.txtlink::after{
  content:''; position:absolute; inset:0;
  width:auto; height:auto; z-index:2;
}
.e-con .elementor-widget.elementor-widget.qpath__icon{ margin-block-end:18px }
.e-con .elementor-widget.elementor-widget.qpath__h{ margin-block-end:9px }
.e-con .elementor-widget.elementor-widget.qpath__p{ margin-block-end:20px }

/* ---------- form + details row ---------- */
.crow.e-con{ align-items:stretch }

.cdetails.e-con{
  background:var(--ink); border-radius:2px;
  padding:clamp(28px,3vw,42px);
}
.elementor-widget-heading.cdetails__h .elementor-heading-title{
  font-family:var(--display); font-weight:var(--disp-w); letter-spacing:var(--disp-track);
  font-size:calc(1.32rem * var(--disp-scale)); line-height:1.2; color:var(--parchment);
}
.elementor-widget-text-editor.cdetails__p p{
  margin:0; font-size:14px; line-height:1.7; color:rgba(239,233,222,.62); font-weight:300;
}
.e-con .elementor-widget.elementor-widget.cdetails__h{ margin-block-end:8px }
.e-con .elementor-widget.elementor-widget.cdetails__p{ margin-block-end:28px }

.cblock{ padding:20px 0; border-top:1px solid rgba(239,233,222,.16) }
.cblockwrap:last-of-type .cblock{ padding-bottom:0 }
.cblock .k{
  display:block; font-family:var(--body); font-size:9.5px; letter-spacing:.24em;
  text-transform:uppercase; color:var(--brass-lt); margin-bottom:11px;
}
.cblock .k__flag{ font-style:normal; color:var(--brass); letter-spacing:.14em }
.cblock a, .cblock span.v{
  display:block; font-family:var(--display); font-weight:var(--disp-w);
  font-size:calc(1.2rem * var(--disp-scale)); line-height:1.35; color:var(--parchment);
}
.cblock a:hover{ color:var(--brass-lt) }
.cblock small{
  display:block; font-family:var(--body); font-size:12.5px; color:rgba(239,233,222,.5);
  font-weight:300; margin-top:7px; line-height:1.6;
}
.hours{ list-style:none; margin:0; padding:0 }
.hours li{
  display:flex; justify-content:space-between; gap:18px; padding:9px 0;
  border-bottom:1px solid rgba(239,233,222,.1);
  font-size:13.5px; font-weight:300; color:rgba(239,233,222,.66);
}
.hours li:last-child{ border-bottom:0 }
.hours b{ font-weight:400; color:var(--parchment) }
.hours span{ color:rgba(239,233,222,.55); text-align:right }

/* ---------- visiting ---------- */
.visit.e-con{
  --display:grid; display:grid; grid-template-columns:repeat(3,1fr);
  border:1px solid var(--stone); border-radius:2px; background:var(--paper); gap:0;
}
.visit > .e-con.visit__c{
  width:100%; padding:30px 28px; border-right:1px solid var(--stone);
}
.visit > .e-con.visit__c:last-child{ border-right:0 }
.visit__icon svg{
  display:block; width:22px; height:22px;
  stroke:var(--burgundy); fill:none; stroke-width:1.3;
}
.elementor-widget-heading.visit__h .elementor-heading-title{
  font-family:var(--display); font-weight:var(--disp-w); letter-spacing:var(--disp-track);
  font-size:calc(1.14rem * var(--disp-scale)); line-height:1.25; color:var(--ink);
}
.elementor-widget-text-editor.visit__p p{
  margin:0; font-size:13.8px; line-height:1.66; color:var(--muted); font-weight:300;
}
.e-con .elementor-widget.elementor-widget.visit__icon{ margin-block-end:16px }
.e-con .elementor-widget.elementor-widget.visit__h{ margin-block-end:9px }
@media (max-width:900px){
  .visit.e-con{ grid-template-columns:1fr }
  .visit > .e-con.visit__c{ border-right:0; border-bottom:1px solid var(--stone) }
  .visit > .e-con.visit__c:last-child{ border-bottom:0 }
}

/* ---------- map ---------- */
.mapwrap.e-con{ position:relative; overflow:hidden; background:var(--ink) }
.mapembed{ width:100% }
.mapembed iframe{
  display:block; width:100%; height:clamp(380px,42vw,560px);
  border:0; filter:saturate(.72) contrast(1.02);
}
.e-con.mapcard{
  position:absolute; top:50%; left:clamp(20px,5vw,90px); transform:translateY(-50%);
  width:min(370px, calc(100% - 40px)); z-index:2;
  background:var(--paper); border:1px solid var(--stone); border-radius:2px;
  padding:clamp(26px,2.8vw,36px);
  box-shadow:0 30px 60px -34px rgba(20,17,16,.5);
}
.elementor-widget-heading.mapcard__h .elementor-heading-title{
  font-family:var(--display); font-weight:var(--disp-w); letter-spacing:var(--disp-track);
  font-size:calc(1.36rem * var(--disp-scale)); line-height:1.2; color:var(--ink);
}
.elementor-widget-text-editor.mapcard__p p{
  margin:0 0 14px; font-size:14.2px; line-height:1.7; color:var(--muted); font-weight:300;
}
.elementor-widget-text-editor.mapcard__p p:last-child{ margin-bottom:0 }
.mapcard__btn .elementor-button{ width:100%; justify-content:center }
.e-con .elementor-widget.elementor-widget.mapcard__h{ margin-block-end:12px }
.e-con .elementor-widget.elementor-widget.mapcard__p{ margin-block-end:20px }
@media (max-width:820px){
  .e-con.mapcard{
    position:static; transform:none; width:100%;
    border-radius:0; border-left:0; border-right:0;
  }
}

/* ============================================================
   GALLERY TILE IMAGE FIT (280, /gallery/)
   The tile markup is  .gitem__img (widget) > .jet-listing-dynamic-image > img
   with no .elementor-widget-container between them, and Elementor pins widget
   height to var(--container-widget-height) = initial. So nothing in the chain
   had a DEFINITE height, `max-height:100%` on the img resolved against auto and
   was dropped, and portrait images sized by WIDTH alone - overflowing the square
   and reading as badly centred.
   Pin the image box to the frame's content area so object-fit gets a real box.
   ============================================================ */
.gitem__frame.e-con{ position:relative }
.elementor-widget-jet-listing-dynamic-image.gitem__img{
  position:absolute; inset:24px;
  width:auto; height:auto; display:block;
}
.gitem__img .jet-listing-dynamic-image{
  width:100%; height:100%; display:block;
}
.gitem__img img{
  width:100%; height:100%;
  max-width:none; max-height:none;
  object-fit:contain; object-position:center center;
}

/* ---------- PAST-AUCTION CARD ACTION STACK ----------
   A past card now carries two actions (PDF + consign funnel) where it used to
   carry one. Only the dynamic-link variant had margin-top:auto, so the button
   variant sat flush against it and, on cards with no PDF, failed to pin to the
   card foot at all - leaving the grid ragged.
   The FIRST action keeps auto (pins the block down and keeps cards aligned);
   any action after it gets a fixed gap, which also cancels its auto. */
.acard__body.e-con > .elementor-widget.txtlink{ margin-block-start:auto; padding-block-start:22px }
.acard__body.e-con > .elementor-widget.txtlink ~ .elementor-widget.txtlink,
.acard__body.e-con > .elementor-widget.txtlink ~ .elementor-widget.outbound{
  margin-block-start:16px;
  padding-block-start:0;
}

/* ============================================================
   HEADER CTA SIZE (client request) - bigger button, bigger type.
   Scoped to .hdr__btn so the shared .btn--solid sizing used by every other
   button on the site is untouched. Same specificity as that shared rule
   (0,2,0), so this wins on SOURCE ORDER only - it must stay appended after it.
   ============================================================ */
.elementor-widget-button.btn--solid.hdr__btn .elementor-button{
  font-size:15px;
  padding:20px 40px;
}
/* the nav and the CTA share one row; ease the CTA back before it starts
   squeezing the menu on laptop widths */
@media (max-width:1500px){
  .elementor-widget-button.btn--solid.hdr__btn .elementor-button{ font-size:13.5px; padding:17px 32px }
}

/* ---------- About portrait (283): the placeholder is now a real photograph.
   The plate stretches to the height of the hero copy beside it, so the photo
   fills it and crops from a point near the face rather than the centre.
   The inset brass rule (::before, z-index 2) stays drawn over the photo. ---------- */
/* The frame takes the photograph's own 3:4 shape, so nothing is cropped at any
   width - his head can never be cut. Capped at 640px so it runs down beside the
   copy instead of towering past it, and pushed to the right edge of its column.
   (0,3,0) so it beats .portrait.e-con min-height regardless of source order. */
.portrait.portrait--photo.e-con{
  padding:0; min-height:0; aspect-ratio:3 / 4;
  width:100%; max-width:640px; justify-self:end; align-self:start;
}
@media (max-width:940px){
  .portrait.portrait--photo.e-con{ justify-self:start }
}
.portrait--photo .elementor-widget-image.portrait__img{
  position:absolute; inset:0; width:auto; height:auto; margin:0; z-index:1;
}
.portrait--photo .portrait__img img{
  position:absolute; inset:0; width:100%; height:100%; max-width:none;
  object-fit:cover; object-position:50% 0; border-radius:0;
}

/* Over a photograph the 30% plate rule vanishes - solid brass, a touch heavier,
   with a faint dark halo so it still reads across light areas of the image. */
.portrait.portrait--photo.e-con::before{
  border:1.5px solid var(--brass);
  box-shadow:0 0 0 1px rgba(0,0,0,.22), inset 0 0 0 1px rgba(0,0,0,.22);
}

/* ============================================================
   HEADING BOTTOM MARGINS - specificity repair (2026-09-22)
   Every one of these was written as `.class{ margin-bottom:Npx }` = (0,1,0) on
   the WIDGET WRAPPER, and Elementor ships
   `.elementor-widget.elementor-widget{ margin-block-end:0 }` at (0,2,0) which
   loads after the kit - so none of them ever applied and the headings sat on
   top of their body copy. Restated at (0,4,0) with the same logical property.
   Values are the originals, except .bid__t which Charles asked to open up.
   These classes are shared with the inner pages, so the fix is site-wide.
   ============================================================ */
.e-con .elementor-widget.elementor-widget.bid__t{ margin-block-end:16px }
.e-con .elementor-widget.elementor-widget.card__t{ margin-block-end:14px }
.e-con .elementor-widget.elementor-widget.step__t{ margin-block-end:14px }
.e-con .elementor-widget.elementor-widget.lot__t{ margin-block-end:10px }
.e-con .elementor-widget.elementor-widget.reach__h{ margin-block-end:22px }
.e-con .elementor-widget.elementor-widget.area__h{ margin-block-end:20px }
.e-con .elementor-widget.elementor-widget.signup__h{ margin-block-end:14px }

/* ============================================================
   SPECIFICITY SWEEP - widget bottom margins (2026-09-22)
   Audited every kit rule that sets a bottom margin on a WIDGET class. Anything
   written at (0,1,0) or (0,2,0) is beaten by Elementor's
   `.elementor-widget.elementor-widget{margin-block-end:0}`, which loads after
   the kit - so the value never applied. These 19 are the ones that were meant
   to create a visible gap; restated at (0,4,0) with their ORIGINAL values.
   Rules that target text INSIDE a widget (.eyebrow p, .article p, .hero__lede p
   and the like) are untouched - the reset does not reach them.
   ============================================================ */
.e-con .elementor-widget.elementor-widget.eyebrow{ margin-block-end:22px }
.e-con .elementor-widget.elementor-widget.crumb{ margin-block-end:26px }
.e-con .elementor-widget.elementor-widget.hero__h1{ margin-block-end:26px }
.e-con .elementor-widget.elementor-widget.plate__img{ margin-block-end:28px }
.e-con .elementor-widget.elementor-widget.band__date{ margin-block-end:8px }
.e-con .elementor-widget.elementor-widget.step__n{ margin-block-end:20px }
.e-con .elementor-widget.elementor-widget.lot__n{ margin-block-end:9px }
.e-con .elementor-widget.elementor-widget.quote__mark{ margin-block-end:26px }
.e-con .elementor-widget.elementor-widget.quote__body{ margin-block-end:32px }
.e-con .elementor-widget.elementor-widget.bid__icon{ margin-block-end:20px }
.e-con .elementor-widget.elementor-widget.chips{ margin-block-end:20px }
.e-con .elementor-widget.elementor-widget.phead__h{ margin-block-end:20px }
.e-con .elementor-widget.elementor-widget.empty__h{ margin-block-end:14px }
.e-con .elementor-widget.elementor-widget.next__h{ margin-block-end:14px }
.e-con .elementor-widget.elementor-widget.next__clock{ margin-block-end:30px }
.e-con .elementor-widget.elementor-widget.next__img{ margin-block-end:24px }
.e-con .elementor-widget.elementor-widget.ahero__h{ margin-block-end:22px }
.e-con .elementor-widget.elementor-widget.ahero__img{ margin-block-end:24px }
.e-con .elementor-widget.elementor-widget.years{ margin-block-end:clamp(26px,3vw,38px) }

/* ============================================================
   MOBILE PASS 2026-09-22 - measured at a true 390px viewport (CDP emulation).
   ============================================================ */

/* Header CTA: at 13.5px / 32px padding it cannot sit beside the logo and the
   menu icon on a phone - it ran to 453px on a 390px screen and clipped. Shrink
   it, drop the arrow, tighten the bar gap. The hero repeats the same CTA anyway. */
@media (max-width:600px){
  /* Even shrunk, the CTA clipped at the right edge beside logo + menu icon on a
     390px screen. Hide it on phones - the hero shows the identical CTA one
     screen down, and the burger menu carries Consign. */
  .hdr__cta{ display:none !important }
  .hdr__bar{ gap:12px }
  .elementor-widget-button.btn--solid.hdr__btn .elementor-button{
    font-size:11px; letter-spacing:.14em; padding:12px 14px; white-space:nowrap;
  }
  .hdr__btn .elementor-button-icon{ display:none }
  .hdr__btn .elementor-button-content-wrapper{ gap:0 }
}

/* Hero stats: three equal cells were still forced side by side at phone width,
   so "Hundreds of Thousands" broke over three lines and "Worldwide" clipped.
   Stack them; each cell's existing border-top becomes the divider. */
@media (max-width:600px){
  .hero__proof{ flex-direction:column !important; width:100% !important }
  .hero__proof > .elementor-widget.proof__item{
    flex:0 0 auto; width:100% !important;
    border-right:0 !important; padding:16px 0 !important;
  }
  .hero__proof > .elementor-widget.proof__item:last-child{ border-bottom:1px solid var(--stone) }
  .proof__item b{ font-size:calc(1.35rem * 1.16) }
}

/* Category tiles: 48.5% + 48.5% + the 14px gap is over 100%, so at phone width
   they wrapped ONE per row at half width. Size them so two genuinely fit. */
@media (max-width:600px){
  .cats > .e-con{ width:calc(50% - 7px) !important }
}
/* MOBILE PASS part 2 */
/* Headings carry deliberate <br>s tuned for the desktop measure. On a phone they
   strand one word on its own line ("years of", "you might", "pay / it."). Let
   them wrap naturally below 600px. */
@media (max-width:600px){
  /* display:none glued the words either side together ("worth,and"). Turning the
     <br> into an inline element whose generated content is a space keeps the gap. */
  .elementor-heading-title br,
  .jet-listing-dynamic-field__content br{ display:inline; content:'' }
  .elementor-heading-title br::after,
  .jet-listing-dynamic-field__content br::after{ content:' ' }
}
/* Countdown: four cells were wrapping to 3 + 1 at phone width. Equal quarters. */
@media (max-width:600px){
  .elementor-widget-countdown.next__clock .elementor-countdown-wrapper{ gap:8px; flex-wrap:nowrap }
  .elementor-widget-countdown.next__clock .elementor-countdown-wrapper .elementor-countdown-item{ flex:1 1 0; min-width:0 }
  .elementor-widget-countdown.next__clock .elementor-countdown-digits{ font-size:calc(1.7rem * 1.16) }
}

/* ============================================================
   MOBILE HEADER 2026-09-22 (Chris): bigger logo in a shorter bar, a bigger
   burger flush right in the brand colours, and the menu as a FULL-WIDTH panel
   BELOW the bar. Before: the open menu was a 113px column inside the header
   row, so it pushed the logo down ~100px and the burger up to the top edge.
   Burger mode runs up to the tablet_extra breakpoint (1400); the panel rules
   key off Elementor's .elementor-nav-menu--toggle class so they apply exactly
   where the burger renders. Size/position rules are phone-only (<=600).
   ============================================================ */

/* burger skin: burgundy tile, parchment glyph. Elementor paints it
   rgba(0,0,0,.05) / #33373d at (0,1,0); .nav lifts us above that. */
.nav .elementor-menu-toggle{
  width:48px; height:48px; padding:0; border-radius:2px;
  background:var(--burgundy); color:var(--parchment);
  font-size:22px; transition:background .2s ease;
}
.nav .elementor-menu-toggle:hover,
.nav .elementor-menu-toggle:focus,
.nav .elementor-menu-toggle.elementor-active{ background:var(--burgundy-dk); color:var(--parchment-lt) }
.nav .elementor-menu-toggle svg,
.nav .elementor-menu-toggle .e-font-icon-svg{ fill:currentColor; width:1em; height:1em }

/* the open panel: take the nav widget out of the positioning chain so the
   dropdown's containing block becomes .hdr__bar (position:relative), then pin
   the panel to the bar's bottom edge across its full width. Elementor's
   max-height/scaleY open-close animation still runs on top of this. */
.hdr__bar .elementor-widget-nav-menu.nav.elementor-nav-menu--toggle{ position:static }
.nav.elementor-nav-menu--toggle .elementor-nav-menu--dropdown.elementor-nav-menu__container{
  position:absolute; left:0; right:0; top:100%; width:auto; margin-top:0; z-index:9997;
  background:var(--paper); border-top:1px solid var(--stone);
  box-shadow:0 18px 34px -20px rgba(20,17,16,.45);
}
/* panel items line up with the page gutter and get a finger-sized hit area.
   Scoped to .elementor-nav-menu__container (the burger panel): the desktop
   sub-menus are ALSO .elementor-nav-menu--dropdown and the --toggle class is
   on the widget at every width, so without it this leaked into desktop. */
.elementor-widget-nav-menu.nav.elementor-nav-menu--toggle .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item{
  padding:14px var(--gutter); font-size:14px;
}
.elementor-widget-nav-menu.nav.elementor-nav-menu--toggle .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-sub-item{
  padding-left:calc(var(--gutter) + 18px);
}

@media (max-width:600px){
  /* bar: Elementor sets --min-height:148px and the sticky rule 108px !important;
     both are overridden here so the header doesn't GROW when it goes sticky */
  .hdr .e-con.hdr__bar,
  .hdr.elementor-sticky--effects .e-con.hdr__bar{ min-height:88px !important }
  /* logo: 46px -> up to 60px, easing down on narrow Androids so logo + gap +
     burger (48) always fit inside the 22px gutters; same size when sticky */
  .elementor-widget-image.brand img,
  .hdr.elementor-sticky--effects .elementor-widget-image.brand img{ height:clamp(50px,15vw,60px) }
  /* burger flush to the right gutter. Elementor centres it with margin:0 auto
     at (0,4,0) from post-40.css, which loads after the kit - out-specify it. */
  .e-con.hdr__bar .elementor-widget-nav-menu.nav .elementor-menu-toggle{ margin:0 0 0 auto }
}

/* ============================================================
   PANEL LINK STATES 2026-09-22 (Chris): gold text on hover/active in the
   burger panel. The (0,3,1) state rule above lost to the four-class
   .elementor-widget-nav-menu.nav .elementor-nav-menu--dropdown .elementor-item
   colour (0,4,0), so top-level panel links stayed muted on ink while sub-items
   (.elementor-sub-item, which that rule does not match) were already gold.
   ============================================================ */
.elementor-widget-nav-menu.nav .elementor-nav-menu--dropdown .elementor-item:hover,
.elementor-widget-nav-menu.nav .elementor-nav-menu--dropdown .elementor-item:focus,
.elementor-widget-nav-menu.nav .elementor-nav-menu--dropdown .elementor-item.highlighted,
.elementor-widget-nav-menu.nav .elementor-nav-menu--dropdown .elementor-item.elementor-item-active{
  color:var(--brass-lt); background:var(--ink);
}

/* ============================================================
   BETWEEN-SALES BAND 2026-09-23 - shown on the homepage (page 11, bandbtw) when
   JetEngine query 2 'Auctions - Upcoming' is empty; the live band (c1a705f)
   shows when it has items. No clock cell, so info + actions share the row.
   ============================================================ */
.band--between .band__inner{ justify-content:space-between }
.band--between .band__inner > .band__info{ flex:1 1 auto; max-width:760px }
.band--between .elementor-widget-text-editor.band__k p{ color:var(--brass-lt) }
@media (max-width:1080px){
  .band--between .band__inner > .band__info{ max-width:none }
}/* End custom CSS */