/* ============================================================
   RHONDA STARK DESIGNS - HOMEPAGE STYLING
   Copy EVERYTHING in this file (Ctrl+A then Ctrl+C)
   and paste it into: Appearance > Customize > Additional CSS
   ============================================================ */

/* Google Fonts (Cinzel/Cormorant Garamond/Montserrat) used to be loaded via
   a CSS @import right here -- moved to a proper <link> tag output in
   <head> via rsd-site-footer.php instead. An @import sitting inside the
   Additional CSS file (itself already render-blocking) forces the browser
   to fully download and parse this whole file before it even discovers it
   needs to fetch fonts -- a needless sequential chain. A <link> tag in the
   raw HTML is discoverable immediately, so it loads in parallel with the
   custom-css request instead of stacked behind it. Confirmed 2026-08-02
   via PageSpeed's render-blocking-requests audit. */

  /* ============================================================
     RHONDA STARK DESIGNS — Homepage
     Self-contained. Palette + type tuned to the supplied mockup.
     ============================================================ */
  :root{
    --cream:#f4efe6;
    --cream-2:#efe8db;
    --paper:#faf7f1;
    --brick:#9b3327;      /* primary red */
    --brick-dark:#822a20;
    --brick-deep:#6f211a;
    --navy:#20395a;
    --ink:#2c2823;
    --muted:#5a4d40;
    --charcoal:#2a2825;
    --line:#d8cebd;
    --gold:#b98a4b;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--cream);
    color:var(--ink);
    font-family:'Montserrat',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
    font-weight:400;
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  img{max-width:100%;display:block;}
  a{color:inherit;text-decoration:none;}
  h1,h2,h3,h4{font-family:'Cinzel',serif;font-weight:600;margin:0;letter-spacing:.02em;color:var(--ink);}
  .serif-italic{font-family:'Cormorant Garamond',serif;font-style:italic;}
  .container{max-width:1200px;margin:0 auto;padding:0 24px;}
  /* Porto's theme CSS wins the cascade over our plain .container class specifically
     inside the brand-transition section (confirmed via Computed panel: it was
     rendering max-width:100%, padding:20px -- Porto's own grid gutter value --
     instead of ours). Forcing it here rather than guessing at their selector. */
  .transition .container{max-width:1200px !important;margin:0 auto !important;padding:0 24px !important;}
  .trust .container{max-width:1200px !important;margin:0 auto !important;}
  /* Full-width experiment for the product sections (owner review) */
  .collections .container,.best .container{max-width:100%;padding:0 44px;}

  /* Porto's Bootstrap grid wrapping the main content on Elementor "Full Width"
     pages uses the standard 3-layer trick: a padded .container-fluid, a .row
     with negative margins that cancel it, then a padded .col-lg-12 inside that.
     Zeroing only the column left a residual gap because the container/row
     values didn't fully cancel -- zeroing the whole chain here instead, scoped
     to this page template only so other pages' grids aren't affected. */
  /* Matches #main regardless of Porto's boxed/wide class -- some pages don't
     expose a per-page toggle for it (confirmed 2026-07-31 on the Show Schedule
     page, whose Porto Page Options had no Layout field at all), so relying on
     "#main.wide" specifically left those pages still boxed. */
  body.elementor-template-full-width #main{padding-left:0;padding-right:0;background:transparent;}
  body.elementor-template-full-width #main .container-fluid{padding-left:0;padding-right:0;}
  body.elementor-template-full-width #main .row.main-content-wrap{margin-left:0;margin-right:0;}
  body.elementor-template-full-width #main .main-content.col-lg-12{padding-left:0;padding-right:0;}
  .btn{
    display:inline-block;font-family:'Montserrat',sans-serif;font-size:13px;font-weight:600;
    letter-spacing:.14em;text-transform:uppercase;padding:15px 30px;cursor:pointer;
    border:1.5px solid transparent;transition:.2s ease;
  }
  .btn-primary{background:var(--brick);color:#fff;}
  .btn-primary:hover{background:var(--brick-dark);}
  .btn-outline{background:transparent;color:#fff;border-color:#fff;}
  .btn-outline:hover{background:#fff;color:var(--ink);}
  .btn-dark{background:var(--brick);color:#fff;}
  .btn-dark:hover{background:var(--brick-dark);}
  .eyebrow{font-family:'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.22em;
    font-size:12px;font-weight:600;color:var(--brick);}
  .section-title{text-align:center;font-size:26px;text-transform:uppercase;letter-spacing:.14em;margin-bottom:8px;}
  .section-rule{width:60px;height:2px;background:var(--gold);margin:0 auto 46px;}

  /* ---------- Header ---------- */
  header{background:var(--cream);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50;}
  .nav{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;max-width:1280px;margin:0 auto;gap:24px;}
  .brand{font-family:'Cinzel',serif;font-weight:700;font-size:22px;color:var(--brick);letter-spacing:.06em;line-height:1;white-space:nowrap;}
  .brand small{display:block;font-size:9px;letter-spacing:.5em;color:var(--navy);font-weight:600;margin-top:3px;}
  .menu{display:flex;gap:30px;list-style:none;margin:0;padding:0;}
  .menu a{font-size:13px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);padding:6px 0;border-bottom:2px solid transparent;transition:.2s;}
  .menu a:hover{color:var(--brick);border-color:var(--brick);}
  .nav-icons{display:flex;gap:20px;color:var(--ink);}
  .nav-icons svg{width:20px;height:20px;cursor:pointer;}
  .hamburger{display:none;background:none;border:0;cursor:pointer;color:var(--ink);}

  /* ---------- Hero ---------- */
  .hero{position:relative;min-height:clamp(560px,64vh,760px);display:flex;align-items:center;
    background:linear-gradient(90deg,rgba(30,22,16,.10) 0%,rgba(30,22,16,.30) 40%,rgba(30,22,16,.65) 100%),
      #2a1e14 url('https://i0.wp.com/rhondastarkdesigns.com/wp-content/uploads/2026/08/hero-image.jpg?w=3800&quality=85&ssl=1') center 8%/cover no-repeat;}
  /* On very wide screens, keep the photo from over-zooming by capping how wide the
     background image scales, while the gradient/section still spans full width. */
  @media(min-width:1700px){
    .hero{background-position:center 6%;}
  }
  /* Mobile LCP fix: the base rule above hardcodes w=3800 (a ~2MB file) for
     every device, phones included -- confirmed 2026-08-02 this is loaded
     from i0.wp.com (Photon), a cross-origin request the mobile PageSpeed
     report's 8s LCP almost certainly includes. No phone viewport needs a
     3800px-wide image; serving a phone-appropriate size here cuts that
     download dramatically. Must match the imagesrcset breakpoint in the
     wp_head preload hint (rsd-site-footer.php) -- if the preloaded URL and
     the CSS background-image URL don't match exactly, the browser preloads
     one file then fetches a different one for paint, which is worse than
     no preload at all. */
  @media(max-width:768px){
    .hero{background-image:linear-gradient(90deg,rgba(30,22,16,.10) 0%,rgba(30,22,16,.30) 40%,rgba(30,22,16,.65) 100%),
      url('https://i0.wp.com/rhondastarkdesigns.com/wp-content/uploads/2026/08/hero-image.jpg?w=900&quality=85&ssl=1');}
  }
  @media(min-width:769px) and (max-width:1400px){
    .hero{background-image:linear-gradient(90deg,rgba(30,22,16,.10) 0%,rgba(30,22,16,.30) 40%,rgba(30,22,16,.65) 100%),
      url('https://i0.wp.com/rhondastarkdesigns.com/wp-content/uploads/2026/08/hero-image.jpg?w=1800&quality=85&ssl=1');}
  }
  .hero-inner{max-width:1200px;margin:0 auto;padding:70px 24px;width:100%;}
  .hero-copy{max-width:560px;color:#fff;margin-left:auto;text-align:left;}
  .hero h1{color:#fff;font-size:46px;line-height:1.12;text-shadow:0 2px 16px rgba(0,0,0,.35);}
  .hero p{font-family:'Montserrat',sans-serif;font-size:15px;letter-spacing:.16em;text-transform:uppercase;font-weight:400;margin:22px 0 30px;
    text-shadow:0 1px 8px rgba(0,0,0,.4);line-height:1.9;}
  .hero .btn-row{display:flex;gap:16px;flex-wrap:wrap;}

  /* ---------- Brand transition ---------- */
  .transition{background:var(--paper);padding:54px 0;}
  .transition-grid{display:grid;grid-template-columns:1fr auto 1.15fr 1.1fr;gap:34px;align-items:center;}
  .arrow{font-size:30px;color:var(--gold);display:flex;flex-direction:column;align-items:center;gap:6px;}
  .arrow-dba{font-family:'Montserrat',sans-serif;font-size:10px;font-weight:600;letter-spacing:.25em;color:var(--muted);}

  /* Old wordmark (left) */
  .mark-old{text-align:center;color:var(--brick);}
  .mark-old .mo-name{font-family:'Cinzel',serif;font-weight:600;font-size:27px;letter-spacing:.05em;line-height:1;}
  .mark-old .mo-designs{font-family:'Cinzel',serif;font-size:13px;letter-spacing:.5em;padding-left:.5em;margin-top:7px;}
  .mark-old .mo-rule{width:210px;max-width:78%;height:1px;background:var(--brick);opacity:.45;margin:15px auto;}
  .mark-old .mo-est{font-family:'Cinzel',serif;font-size:12px;letter-spacing:.32em;color:var(--muted);}

  /* New emblem — recreated in type to match the mockup */
  .mark-new{text-align:center;}
  /* Both marks sized to read at a similar visual weight (B2BF is squarer, RSD is wider). */
  .b2bf-mark{max-height:200px;max-width:min(260px,100%);width:auto;margin:0 auto;aspect-ratio:335/268;}
  .rsd-logo-img{max-height:200px;max-width:min(340px,100%);width:auto;margin:0 auto;aspect-ratio:456/229;}
  .rsd-emblem{color:var(--ink);}
  .rsd-monogram{width:62px;height:62px;border:1.5px solid var(--ink);border-radius:50%;
    display:flex;align-items:center;justify-content:center;margin:0 auto 14px;font-family:'Cinzel',serif;line-height:1;}
  .rsd-monogram span{font-size:15px;}
  .rsd-monogram .mono-s{font-size:27px;margin:0 2px;}
  .rsd-name{font-family:'Cinzel',serif;font-weight:600;font-size:30px;letter-spacing:.04em;line-height:1;}
  .rsd-designs{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:9px;
    font-family:'Cinzel',serif;font-size:14px;letter-spacing:.42em;padding-left:.42em;color:var(--ink);}
  .rsd-designs .ln{width:46px;height:1px;background:var(--ink);opacity:.55;}
  .rsd-fo{font-family:'Cinzel',serif;font-size:11px;letter-spacing:.34em;color:var(--muted);margin-top:14px;}

  .transition-copy h3{color:var(--brick);font-size:20px;line-height:1.5;margin-bottom:14px;text-transform:uppercase;letter-spacing:.03em;}
  .transition-copy p{font-family:'Montserrat',sans-serif;font-size:14px;color:var(--muted);margin:0;}

  /* ---------- Trust bar ---------- */
  .trust{background:var(--cream-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
  .trust-grid{display:grid;grid-template-columns:repeat(4,1fr);}
  .trust-item{display:flex;align-items:center;gap:14px;padding:26px 20px;border-right:1px solid var(--line);}
  .trust-item:last-child{border-right:0;}
  .trust-item svg{width:34px;height:34px;color:var(--brick);flex:none;}
  .trust-item .t{font-family:'Cinzel',serif;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);}
  .trust-item .s{font-size:12px;color:var(--muted);}

  /* ---------- Collections ---------- */
  .collections{padding:70px 0;}
  .col-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;}
  .col-card{position:relative;aspect-ratio:3/4;overflow:hidden;background:#ccc;}
  .col-card img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease;}
  .col-card:hover img{transform:scale(1.05);}
  .col-card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 45%,rgba(0,0,0,.6) 100%);}
  .col-card .label{position:absolute;left:0;right:0;bottom:24px;z-index:2;text-align:center;color:#fff;
    font-family:'Cinzel',serif;font-size:18px;letter-spacing:.08em;text-shadow:0 1px 10px rgba(0,0,0,.5);}

  /* ---------- Shows ---------- */
  .shows{display:grid;grid-template-columns:1fr 1fr;min-height:480px;}
  .shows-panel{background:var(--brick-dark);color:#fff;padding:36px 54px;display:flex;flex-direction:column;justify-content:center;}
  .shows-panel > *{max-width:560px;width:100%;}
  .shows-panel .eyebrow{color:#f4d9c9;}
  .shows-panel h2{color:#fff;font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:500;
    font-size:30px;letter-spacing:.02em;margin:6px 0 16px;}
  /* Two columns: shortens the panel and uses the empty red space. Chronological down
     the left column, then down the right. */
  .shows-panel > .show-list{max-width:900px;}
  .show-list{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,auto);
    grid-auto-flow:column;gap:0 46px;}
  /* Compacted 2026-07-31 to fit the shortened panel: venue/location/booth now
     run inline on one line instead of each being its own block line, roughly
     halving each row's height. */
  .show-row{display:grid;grid-template-columns:112px 1fr;gap:14px;padding:7px 0;border-top:1px solid rgba(255,255,255,.22);}
  .show-row .date{white-space:nowrap;}
  .show-row .date{font-family:'Cinzel',serif;font-size:12px;letter-spacing:.05em;}
  .show-row .name{font-size:13px;line-height:1.3;}
  .show-row .name b{display:block;font-family:'Cinzel',serif;font-weight:500;letter-spacing:.04em;margin-bottom:1px;}
  /* Booth kept as its own block line rather than inline with venue/location --
     confirmed 2026-07-31 that inlining it caused the number to wrap onto its
     own line anyway once venue+location got long, leaving an orphaned
     middot at the start of that wrapped line. A dedicated line is
     consistent regardless of how long the venue/location text is. */
  .show-row .venue,.show-row .loc{display:inline;color:#f2cdbe;font-size:11px;}
  .show-row .venue::after{content:", ";}
  .show-row .booth{display:block;color:#f2cdbe;font-size:11px;margin-top:2px;}
  .shows-panel .btn{margin-top:18px;}
  .shows-photo{background:#2a2725 url('https://i0.wp.com/rhondastarkdesigns.com/wp-content/uploads/2026/07/IMG_20260723_164157.jpg?resize=1277%2C643&quality=85&ssl=1') 75% center/cover no-repeat;min-height:360px;}
  /* Mobile PageSpeed flagged this at 173.9KiB with 40.3KiB of easy savings --
     the 1277px width above is reasonable for its desktop 2-column layout
     (see .shows below, ~640-720px column at 2x retina) but .shows collapses
     to a single full-width column under 960px (see @media(max-width:960px)
     further down), so phones were loading the same desktop-sized file for a
     much narrower display area. */
  @media(max-width:960px){
    .shows-photo{background-image:url('https://i0.wp.com/rhondastarkdesigns.com/wp-content/uploads/2026/07/IMG_20260723_164157.jpg?resize=900%2C453&quality=80&ssl=1');}
  }

  /* ---------- Story ---------- */
  .story{display:grid;grid-template-columns:1fr 1fr;background:var(--paper);min-height:480px;}
  .story-photo{background:#e9e0d2 url('https://i0.wp.com/rhondastarkdesigns.com/wp-content/uploads/2026/07/Untitled-design-7.png?resize=1277%2C643&quality=85&ssl=1') center 30%/cover no-repeat;min-height:480px;}
  .story-copy{padding:52px 54px;align-self:center;}
  .story-copy h2{font-size:32px;line-height:1.25;margin:10px 0 20px;text-transform:none;}
  .story-copy p{font-family:'Montserrat',sans-serif;color:var(--muted);font-size:15px;margin:0 0 28px;max-width:480px;}

  /* ---------- Best sellers ---------- */
  .best{padding:70px 0;}
  .best-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;}
  .product{display:block;text-align:center;color:inherit;}
  .product .ph{aspect-ratio:3/4;overflow:hidden;background:var(--cream-2);margin-bottom:16px;}
  /* Anchor to the top so tall/narrow product shots keep the model's head and the garment.
     Images wider than the 3:4 card already fill the height, so this leaves them unchanged. */
  .product .ph img{width:100%;height:100%;object-fit:cover;object-position:center top;transition:transform .5s;}
  .product:hover .ph img{transform:scale(1.04);}
  .product .name{font-family:'Cinzel',serif;font-size:13px;letter-spacing:.1em;text-transform:uppercase;}
  .product .price{color:var(--muted);font-size:14px;margin-top:4px;}
  .best .center{text-align:center;margin-top:40px;}
  .best .center a{font-family:'Cinzel',serif;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--brick);border-bottom:1px solid var(--brick);padding-bottom:3px;}

  /* ---------- Testimonials ---------- */
  .testimonials{background:var(--cream-2);padding:58px 0;border-top:1px solid var(--line);}
  .quote-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;}
  .quote{text-align:center;padding:0 12px;}
  .quote .quote-mark{display:block;font-family:'Cormorant Garamond',serif;color:var(--gold);font-size:56px;line-height:.6;margin-bottom:10px;}
  .quote p{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:19px;color:var(--ink);margin:0 auto 16px;line-height:1.5;max-width:340px;}
  .quote .who{font-family:'Cinzel',serif;font-size:12px;letter-spacing:.14em;color:var(--muted);}

  /* ---------- Newsletter ---------- */
  .news{background:var(--brick-dark);color:#fff;}
  .news-inner{display:flex;align-items:center;gap:40px;padding:34px 24px;max-width:1200px;margin:0 auto;flex-wrap:wrap;}
  .news-icon svg{width:44px;height:44px;color:#f4d9c9;}
  .news-txt{flex:1;min-width:220px;}
  .news-txt h3{color:#fff;font-size:20px;letter-spacing:.06em;}
  .news-txt p{font-family:'Montserrat',sans-serif;margin:4px 0 0;font-size:13px;color:#f4d9c9;}
  .news-form{display:flex;flex:1;min-width:280px;}
  .news-form input{flex:1;border:0;padding:15px 18px;font-family:'Montserrat',sans-serif;font-size:14px;}
  .news-form button{background:var(--charcoal);color:#fff;border:0;padding:0 30px;font-family:'Montserrat',sans-serif;
    font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;}
  .news-form button:hover{background:#000;}

  /* Styling for the REAL newsletter widget (the same Contact Form 7 +
     MailPoet form used in the footer). Targets .news .wpcf7-form directly
     (not scoped through .news-form-slot) since that wrapper div may have
     been replaced rather than kept as a parent when the form was pasted in --
     this way it works either way. Matches the .news-form look above: inline
     layout, plain white input, dark charcoal button. */
  .news .wpcf7-form{flex:1;min-width:280px;}
  /* Confirmed 2026-07-31: the input and button aren't direct children of
     <form> -- they're each wrapped a level deeper inside .widget_wysija_cont
     (input in .wysija-paragraph, button in .d-table-cell), which is the
     actual element that needs to be the flex row. Flexing the form itself
     did nothing since its own direct children were already laid out fine. */
  .news .widget_wysija_cont{display:flex !important;flex-wrap:nowrap;align-items:stretch;gap:0;width:100%;}
  .news .wysija-paragraph{flex:1;min-width:0;}
  .news .wpcf7-form-control-wrap{display:block;width:100%;}
  .news .wpcf7-form-control{
    width:100% !important;border:0 !important;padding:15px 18px !important;
    font-family:'Montserrat',sans-serif;font-size:14px;box-sizing:border-box;
    background:#fff !important;color:var(--ink) !important;
  }
  .news .wpcf7-submit{
    display:inline-block !important;background:var(--charcoal) !important;color:#fff !important;
    border:0 !important;padding:0 30px !important;flex:none !important;white-space:nowrap;
    font-family:'Montserrat',sans-serif;font-size:12px;font-weight:600;letter-spacing:.14em;
    text-transform:uppercase;cursor:pointer;height:auto !important;min-height:52px;width:auto !important;
  }
  .news .wpcf7-submit:hover{background:#000 !important;}
  /* Response message (CF7's own built-in "Thank you for subscribing!" /
     error text) made much more visible than its plain default styling so
     it actually reads as a confirmation instead of easy-to-miss small text. */
  .news .wpcf7-response-output{display:none;width:100%;}
  .news .wpcf7-response-output:not(:empty){
    display:block !important;margin:14px 0 0 !important;padding:12px 16px !important;
    background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.35) !important;
    border-radius:2px;color:#fff !important;font-size:13px;font-family:'Montserrat',sans-serif;
  }
  .news form.sent .wpcf7-response-output{border-color:#8fd19e !important;background:rgba(143,209,158,.18);}
  .news form.invalid .wpcf7-response-output,
  .news form.failed .wpcf7-response-output{border-color:#e8a2a2 !important;background:rgba(232,162,162,.15);}

  /* ---------- Footer ---------- */
  footer{background:var(--charcoal);color:#cfc6ba;padding:56px 0 26px;}
  .foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr 1fr;gap:34px;}
  .foot-brand .brand{color:#fff;font-size:20px;}
  .foot-brand .brand small{color:#b98a4b;}
  .foot-brand p{font-size:12px;color:#9a9084;margin-top:14px;letter-spacing:.24em;}
  footer h4{font-family:'Cinzel',serif;color:#fff;font-size:13px;letter-spacing:.1em;margin-bottom:16px;}
  footer ul{list-style:none;margin:0;padding:0;}
  footer li{margin-bottom:9px;}
  footer li a{font-size:13px;color:#cfc6ba;}
  footer li a:hover{color:#fff;}
  .socials{display:flex;gap:14px;}
  .socials svg{width:20px;height:20px;color:#cfc6ba;}
  .socials a:hover svg{color:#fff;}
  .foot-bottom{border-top:1px solid #3d3a35;margin-top:40px;padding-top:20px;text-align:center;font-size:12px;color:#8b8175;}

  /* ---------- Responsive ---------- */
  @media(max-width:960px){
    .menu,.nav-icons{display:none;}
    .hamburger{display:block;}
    .transition-grid{grid-template-columns:1fr;text-align:center;gap:24px;}
    .arrow{transform:rotate(90deg);}
    .trust-grid{grid-template-columns:1fr 1fr;}
    .trust-item:nth-child(2){border-right:0;}
    .col-grid{grid-template-columns:1fr 1fr;}
    .shows,.story{grid-template-columns:1fr;min-height:0;}
    .show-list{grid-template-columns:1fr;grid-template-rows:none;grid-auto-flow:row;}
    .story-photo{min-height:300px;order:-1;}
    .best-grid{grid-template-columns:1fr 1fr;}
    .quote-grid{grid-template-columns:1fr;gap:34px;}
    .foot-grid{grid-template-columns:1fr 1fr;}
    .hero h1{font-size:34px;}
    .hero-copy{text-align:left;}
    /* On narrow screens "cover" zooms in tight -- recenter on the couple (left third of
       the photo) instead of the image's true center, so both people stay in frame. */
    .hero{background-position:32% 8%;}
  }
  @media(max-width:560px){
    .trust-grid,.col-grid,.best-grid,.foot-grid{grid-template-columns:1fr;}
    .trust-item{border-right:0;border-bottom:1px solid var(--line);}
    .hero h1{font-size:28px;}
  }

  /* ---------- PDP: variation Add to Cart spacing ----------
     Folded in from an older, separate block that used to sit above this one
     in the Additional CSS box -- confirmed 2026-08-01 this is the only rule
     from that legacy block still matching anything live on the site. Adds
     breathing room between the fabric/size selectors and the Add to Cart
     button once a variation is selected. */
  .woocommerce-variation-add-to-cart.variations_button{margin-top:40px;}

/* ============================================================
   RHONDA STARK DESIGNS - ABOUT US PAGE STYLING
   Copy EVERYTHING in this file (Ctrl+A then Ctrl+C) and paste it
   into: Appearance > Customize > Additional CSS
   ADD THIS AFTER the homepage styling already in that box --
   don't delete what's already there, scroll to the bottom and
   paste after it, same as we did for the homepage originally.
   ============================================================ */

.ab-page{background:var(--cream);}
.ab-wrap{max-width:1200px;margin:0 auto;padding:0 24px;}
.ab-page h1,.ab-page h2,.ab-page h3{font-family:'Cormorant Garamond',serif;font-weight:500;color:var(--ink);margin:0;line-height:1.15;}
.ab-page p{font-family:'Cormorant Garamond',serif;font-size:17px;color:var(--muted);line-height:1.7;margin:0 0 16px;}
.ab-eyebrow{font-family:'Montserrat',sans-serif;font-size:12px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin-bottom:14px;}
.ab-hero .ab-eyebrow{color:#e0a83c;}
.ab-btn{display:inline-block;font-family:'Montserrat',sans-serif;font-size:12.5px;font-weight:600;letter-spacing:.15em;text-transform:uppercase;padding:15px 32px;text-decoration:none;transition:.2s ease;}
.ab-btn-dark{background:var(--ink);border:1.5px solid var(--ink);color:#fff;margin-top:20px;}
.ab-btn-dark:hover{background:var(--brick);border-color:var(--brick);color:#fff;}
.ab-rule{display:block;width:44px;height:1px;background:var(--gold);margin-bottom:14px;}
.ab-heading{margin-bottom:20px;}
.ab-heading h2{font-size:32px;}
.ab-heading-sm h3{font-size:24px;}

/* Hero */
.ab-hero{position:relative;min-height:clamp(480px,58vh,640px);display:flex;align-items:flex-end;
  background:linear-gradient(0deg,rgba(20,15,11,.72) 0%,rgba(20,15,11,.15) 60%),
    #241c15 url('https://i0.wp.com/rhondastarkdesigns.com/wp-content/uploads/2026/07/GROUP-OUR-FAMILY.jpg?w=2200&quality=85&ssl=1') center 20%/cover no-repeat;}
.ab-hero-inner{max-width:640px;padding:60px 40px 64px;color:#fff;}
.ab-hero h1{color:#fff;font-size:44px;text-shadow:0 2px 14px rgba(0,0,0,.35);}
.ab-hero p{color:#f0e6da;font-size:16px;margin-top:18px;max-width:480px;}

/* Our Story */
.ab-story{padding:70px 0;}
.ab-story-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;}
.ab-story-grid p{font-size:15.5px;}

/* Banner */
.ab-banner{background:var(--cream-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:64px 24px;text-align:center;}
.ab-banner h2{font-size:44px;line-height:1.3;}
.ab-flourish{display:block;width:140px;height:22px;margin:22px auto 0;}

/* Meet the Family */
.ab-family{padding:70px 0;}
.ab-family-grid{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center;}
.ab-family-photo{margin:0;border:6px solid #fff;box-shadow:0 3px 18px rgba(0,0,0,.12);}
.ab-family-photo img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;}
.ab-family-photo figcaption{text-align:center;font-family:'Cormorant Garamond',serif;font-style:italic;
  font-size:14px;color:var(--muted);padding:10px 0 2px;}

/* Profile cards */
.ab-profiles{padding-bottom:70px;}
.ab-profiles-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
.ab-profile{display:flex;align-items:stretch;min-height:260px;
  background:var(--paper);border:1px solid var(--line);overflow:hidden;}
.ab-profile-photo{width:42%;flex:none;background:var(--cream-2);overflow:hidden;}
.ab-profile-photo img{width:100%;height:100%;object-fit:cover;display:block;}
.ab-profile-photo.ab-placeholder{display:flex;align-items:center;justify-content:center;
  font-family:'Montserrat',sans-serif;font-size:12px;letter-spacing:.05em;color:var(--muted);
  text-align:center;padding:8px;}
.ab-profile-copy{flex:1;padding:28px 30px;display:flex;flex-direction:column;justify-content:center;}
.ab-profile-copy p{font-size:15px;margin:0;}

/* Closing CTA */
.ab-closing{background:var(--cream-2);border-top:1px solid var(--line);padding:64px 24px;text-align:center;}
.ab-closing h2{font-size:30px;margin-bottom:18px;}
.ab-closing p{max-width:640px;margin:0 auto 8px;font-size:16px;}
.ab-accent{color:var(--brick);font-style:italic;}

/* Responsive */
@media(max-width:900px){
  .ab-story-grid{grid-template-columns:1fr;gap:26px;}
  .ab-family-grid{grid-template-columns:1fr;gap:30px;}
  .ab-family-photo{order:-1;}
  .ab-profiles-grid{grid-template-columns:1fr;}
}
@media(max-width:560px){
  .ab-hero h1{font-size:32px;}
  .ab-profile{flex-direction:column;min-height:0;}
  .ab-profile-photo{width:100%;height:220px;}
  .ab-profile-copy{padding:22px;}
}
/* ============================================================
   RHONDA STARK DESIGNS - PRODUCT ARCHIVE (PLP) STYLING
   Copy EVERYTHING in this file (Ctrl+A then Ctrl+C) and paste it
   into: Appearance > Customize > Additional CSS
   ADD THIS AFTER the homepage + About Us styling already in that
   box -- don't delete what's there, paste after it.
   ============================================================ */

/* ---------- Page background, matching the cream used across the rest of the
   site -- scoped to the Shop page and category/tag archives specifically, not
   cart/checkout/my-account (which are also "woocommerce-page" but shouldn't
   necessarily follow). ---------- */
body.archive.woocommerce-page,
body.post-type-archive-product{
  background:var(--cream);
}
/* Porto's #main element has its own explicit white background sitting on top of
   <body>, which covers the rule above completely -- targeting #main directly,
   confirmed from the background-color:#fff rule visible in Porto's own CSS. */
body.archive.woocommerce-page #main,
body.post-type-archive-product #main{
  background:var(--cream) !important;
}

/* ---------- Archive header ---------- */
.woocommerce-products-header__title.page-title,
.archive .page-title{
  font-family:'Cinzel',serif;font-size:34px;text-transform:uppercase;letter-spacing:.08em;
  text-align:center;color:var(--ink);margin:26px 0 16px;
}
.term-description{max-width:620px;margin:0 auto 40px;text-align:center;color:var(--muted);font-size:14.5px;}

/* ---------- Toolbar: result count + sort ---------- */
.woocommerce-result-count{font-size:13px;color:var(--muted);margin:0;}
.woocommerce-ordering select.orderby{
  appearance:none !important;-webkit-appearance:none !important;-moz-appearance:none !important;
  background:var(--paper) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%236f6255" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg>') no-repeat right 12px center/12px !important;
  border:1.5px solid var(--line) !important;padding:10px 34px 10px 14px !important;
  font-family:'Montserrat',sans-serif !important;font-size:12.5px !important;
  letter-spacing:.06em;color:var(--ink) !important;cursor:pointer;height:auto !important;
  width:auto !important;border-radius:0 !important;box-shadow:none !important;
}

/* ---------- Product grid ---------- */
ul.products{display:grid !important;grid-template-columns:repeat(4,1fr);gap:30px 24px;
  list-style:none;margin:0 !important;padding:0 !important;}
ul.products li.product{width:100% !important;margin:0 !important;float:none !important;
  position:relative;text-align:center !important;}
ul.products li.product a{text-decoration:none;}

/* Porto's own hover-only wishlist + Quick View cluster (built into the theme, not
   something we added) reveals itself right next to our always-visible "View
   Details" link and expands sideways into the neighboring card. Hide Quick View
   entirely (not part of this design) and make the wishlist icon static/always
   visible instead of hover-triggered, repositioned over the photo to match the
   mockup, stripped of Porto's button/circle styling. */
ul.products li.product .add-links .quickview{display:none !important;}
/* .add-links has its own position:relative from Porto, which is closer than the
   card itself -- without overriding it, our absolute-positioned wishlist icon
   anchors to that small button wrapper instead of the card/photo. */
ul.products li.product .add-links{position:static !important;text-align:center !important;}
ul.products li.product .add-links-wrap{text-align:center !important;display:block !important;width:100% !important;}
ul.products li.product .add-links .yith-wcwl-add-to-wishlist{
  position:absolute !important;top:14px;right:14px;margin:0 !important;
  opacity:1 !important;visibility:visible !important;z-index:3;
}
ul.products li.product .add-links .yith-wcwl-add-to-wishlist a,
ul.products li.product .add-links .yith-wcwl-add-to-wishlist span:not(.yith-wcwl-tooltip){
  background:none !important;border:0 !important;box-shadow:none !important;
  width:20px !important;height:20px !important;min-width:0 !important;
  color:#fff !important;
  filter:drop-shadow(0 1px 3px rgba(0,0,0,.4));
}
/* Forcing the wishlist icon to stay visible also force-revealed its hover-only
   tooltip label ("Add to wishlist") -- keep that hidden at all times. */
ul.products li.product .add-links .yith-wcwl-tooltip{display:none !important;}

/* ---------- Thumbnail / media wrapper (added by rsd-plp-enhancements.php) ---------- */
.rsd-media{position:relative;aspect-ratio:3/4;overflow:hidden;background:var(--cream-2);}
/* Confirmed via Inspect Element: the real nesting is .rsd-media > div.inner.img-effect
   > img. Our img's height:100% only resolves if every parent in that chain also has
   a real height -- Porto's .inner wrapper doesn't, so without this the percentage
   chain breaks and the image falls back to its natural size, leaving empty space
   in our (correctly-sized) box. */
.rsd-media,
.rsd-media .inner{height:100%;}
.rsd-media img{width:100% !important;height:100% !important;object-fit:cover !important;
  object-position:center top;margin:0 !important;}

/* Native WooCommerce "Sale" badge -- restyled to exactly match the Best Seller
   badge's look (top-right instead of bottom-left, so the two never collide).
   Porto has its own elaborate default "ribbon" styling for .onsale (larger,
   shaped corner, its own color) that otherwise wins -- !important across the
   board plus explicitly resetting shape/sizing properties Porto's ribbon
   effect relies on (clip-path, shadow, rounded corners, min sizing). */
.rsd-media span.onsale{
  position:absolute !important;top:10px !important;right:10px !important;left:auto !important;
  bottom:auto !important;background:var(--gold) !important;color:#fff !important;
  font-family:'Montserrat',sans-serif !important;font-size:11px !important;font-weight:700 !important;
  letter-spacing:.06em;text-transform:uppercase !important;padding:4px 8px !important;
  border-radius:0 !important;min-height:0 !important;min-width:0 !important;height:auto !important;
  width:auto !important;line-height:1.4 !important;z-index:2;margin:0 !important;
  clip-path:none !important;box-shadow:none !important;transform:none !important;
  text-shadow:none !important;
}

/* Our custom Best Seller badge -- bottom-left, confirmed in the mockup review to
   avoid landing on models' faces. */
.rsd-badge{position:absolute;bottom:10px;left:10px;background:var(--gold);color:#fff;
  font-family:'Montserrat',sans-serif;font-size:11px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;padding:4px 8px;z-index:2;}

/* ---------- Title / price / availability: entirely custom block, output by
   rsd-plp-enhancements.php in place of WooCommerce's own title+price (which
   we confirmed, after extensive Inspect Element / View Source / live testing,
   were being placed side-by-side by something in Porto's markup or JS that
   ignored their own display:block -- rather than keep fighting that, these
   are fresh classes Porto's CSS has never seen, so there's nothing left for
   it to grab onto. Text-align is set !important below because Porto's own
   Custom CSS panel (a separate box from this one) has
   `ul.products .product-content{text-align:left!important}` left over from
   however the site was originally set up, which otherwise wins here. ---------- */
.rsd-card-info{margin-top:11px;text-align:center !important;}
.rsd-card-title{
  font-family:'Cinzel',serif;font-size:15px;font-weight:500;letter-spacing:.05em;
  text-transform:uppercase;color:var(--ink);margin:0;text-align:center !important;
}
.rsd-card-title a{color:inherit;text-decoration:none;}
.rsd-card-price{
  font-family:'Cinzel',serif;font-size:14px;font-weight:400;color:var(--brick);margin-top:6px;
  text-align:center !important;
}
.rsd-card-price del{color:var(--muted);font-size:11.5px;margin-right:7px;opacity:1;}
.rsd-card-price ins{text-decoration:none;}

/* Porto has some other, still-unidentified mechanism that also renders WooCommerce's
   native title (removed for the price/label via remove_action, but apparently not
   fully removed for the title -- it showed up a second time, underneath our new one).
   Hiding it outright rather than guessing at the unknown function name. */
.woocommerce-loop-product__title{display:none !important;}
.rsd-card-mto{
  font-family:'Montserrat',sans-serif;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);margin-top:6px;text-align:center !important;
}

/* Loop button, relabeled "View Details" by rsd-plp-enhancements.php */
a.button.rsd-view-details{
  /* inline-flex doesn't respond to margin:auto centering -- only block-level
     boxes do. flex (not inline-flex) makes this a block-level flex container,
     which margin:auto can then center regardless of the parent's text-align. */
  display:flex !important;align-items:center;justify-content:center;gap:6px;
  margin:10px auto 0 !important;
  background:none !important;box-shadow:none !important;
  font-family:'Montserrat',sans-serif;font-size:11.5px;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink) !important;
  border:none !important;border-bottom:1px solid var(--ink) !important;
  padding:0 0 2px !important;border-radius:0;width:-moz-fit-content;width:fit-content;height:auto;
}
a.button.rsd-view-details:hover{color:var(--brick) !important;border-color:var(--brick) !important;}

/* Star ratings aren't part of this design -- hide them if the theme renders them */
ul.products .star-rating{display:none;}

/* ---------- Pagination ---------- */
.woocommerce-pagination ul.page-numbers{display:flex;align-items:center;justify-content:center;
  gap:8px;list-style:none;padding:40px 0 70px;margin:0;}
.woocommerce-pagination .page-numbers li{list-style:none;}
.woocommerce-pagination .page-numbers a,
.woocommerce-pagination .page-numbers span{
  display:flex;align-items:center;justify-content:center;width:38px;height:38px;
  font-family:'Cinzel',serif;font-size:13px;color:var(--ink);text-decoration:none;
  border:1.5px solid transparent;
}
.woocommerce-pagination .page-numbers a:hover{border-color:var(--line);}
.woocommerce-pagination .page-numbers .current{background:var(--brick);color:#fff;}
.woocommerce-pagination .page-numbers .next{
  width:auto;padding:0 16px;font-family:'Montserrat',sans-serif;font-size:11.5px;
  letter-spacing:.1em;text-transform:uppercase;font-weight:600;border:1.5px solid var(--line);
}

/* ---------- Responsive ---------- */
@media(max-width:1000px){ ul.products{grid-template-columns:repeat(3,1fr);} }
@media(max-width:700px){
  ul.products{grid-template-columns:repeat(2,1fr);gap:22px 14px;}
  .woocommerce-products-header__title.page-title,.archive .page-title{font-size:26px;}
}
/* ============================================================
   RHONDA STARK DESIGNS - PRODUCT DETAIL PAGE (PDP) STYLING
   Copy EVERYTHING in this file (Ctrl+A then Ctrl+C) and paste it
   into: Appearance > Customize > Additional CSS
   ADD THIS AFTER the Home + About Us + PLP styling already in
   that box -- don't delete what's there, paste after it.

   NOTE: the fabric panel itself (.rsd-fabric-panel / .fabpanel)
   is already styled -- that CSS is enqueued directly by
   rsd-fabric-panel.php, not part of this file. Nothing here
   should need to touch those classes.

   BEFORE TESTING: Porto's own separate "Custom CSS" panel
   (Theme Options, not this Additional CSS box -- see
   docs/PRODUCT-PAGE-GUIDE.md) has TWO leftover rules that will
   fight this page specifically:
     1. .woocommerce-notices-wrapper{display:none;} -- hides the
        WooCommerce Notices widget entirely no matter how
        correctly it's added. Remove/scope this before testing
        the "please choose an option" behavior.
     2. .product-summary-wrap .single_add_to_cart_button
        {font-family:'Marcellus'!important;} -- overrides the Add
        to Cart button's font regardless of anything below.
   Check for both before assuming a style here isn't working.
   ============================================================ */

/* ---------- Page background, matching the cream used across the rest of the site --
   scoped to single product pages specifically (same pattern as the PLP archive fix:
   Porto's #main element has its own explicit white background sitting on top of
   <body>, so #main needs the override too, not just body). ---------- */
body.single-product{
  background:var(--cream);
}
body.single-product #main{
  background:var(--cream) !important;
}

/* Right-column info Flexbox (Title/Price/Headings/Add-to-Cart/Wishlist/Accordion) --
   confirmed 2026-07-31 this Elementor container defaults to flex-direction:row with
   no saved override anywhere, stacking all of those side by side instead of down.
   Element ID is specific to this template's saved widget. */
.elementor-element-b10f38a{
  flex-direction:column !important;
}

/* ---------- Gallery column ---------- */
.woocommerce-product-gallery{position:relative;}
.woocommerce-product-gallery__image{aspect-ratio:1/1.12;overflow:hidden;background:var(--cream-2);}
.woocommerce-product-gallery__image img{width:100%;height:100%;object-fit:cover;object-position:center top;}
.woocommerce-product-gallery__wrap{margin:0;}

/* Confirmed 2026-08-01: the site doesn't actually render the gallery through the
   classes above at all -- the real markup comes from the "Additional Variation
   Images Gallery" plugin's own Slick-carousel markup (.woo-variation-gallery-slider
   etc, ending in .wvg-post-image), which was overlapping straight into the info
   column on every product, at every screen width -- not a per-product bug.
   Root cause: Slick.js sets inline pixel widths on .slick-slide/.slick-track via JS
   at init time (confirmed 1152px in one test, i.e. some wrong/stale measurement),
   and separately .woo-variation-gallery-wrapper carries its own hardcoded
   min-width:1152px. Neither responds to CSS width overrides -- .slick-slide's width
   gets reasserted by Slick's own JS even with !important, and removing the
   min-width instead collapses the gallery to 0 (Slick depends on that number
   internally and doesn't recalculate on a synthetic resize event). Rather than
   fight Slick's internal sizing, clip the visual overflow one level up at
   .woo-variation-product-gallery -- confirmed via elementFromPoint() (checking
   what's actually painted at the boundary, not just each element's own unclipped
   getBoundingClientRect(), which stays misleadingly large regardless of any
   ancestor's overflow:hidden) that this genuinely stops the bleed while the photo
   itself still renders fine, just cropped to the correct column width instead of
   its internally-miscalculated one.
   Follow-up, same day: clipping overflow alone fixed the horizontal bleed but left
   the box very tall/narrow ("long and skinny") -- Slick's own height calculation is
   apparently *also* derived from its bad internal width measurement, so it didn't
   self-correct just because the overflow was hidden. Forcing an explicit square
   aspect-ratio (matching how this gallery has always looked when working normally)
   sidesteps needing to fix Slick's internal math at all -- confirmed live this
   produces a clean, undistorted square photo. The rendered width still doesn't
   scale up to fill the column at wider screens (stuck around 309px regardless of
   1440px vs 1920px viewport, the same underlying Slick quirk) -- smaller than ideal,
   but a correctly-proportioned smaller photo beats a distorted or overlapping one;
   revisit if a real fix for Slick's own sizing surfaces later.
   Follow-up, same day: a plain 1/1 square combined with object-fit:cover was cropping
   hard into the middle of these (portrait-oriented garment) source photos, reading as
   "zoomed in" since only a narrow horizontal slice of the actual image was visible.
   Switched to 1/1.12, the same portrait-ish ratio already used elsewhere in this file
   for .woocommerce-product-gallery__image (the class this site's real gallery markup
   turned out not to use, but the ratio itself was already the right choice for this
   site's garment photography) -- shows much more of the actual photo. */
.woo-variation-product-gallery{
  overflow:visible !important;width:100% !important;height:auto !important;
}
/* Confirmed 2026-08-02: the aspect-ratio above used to sit directly on THIS element,
   which also wraps the thumbnail strip (.woo-variation-gallery-thumbnail-wrapper),
   not just the main photo. A fixed aspect-ratio based on width alone gave this
   element a height sized for the main photo ALONE (e.g. 567px at 506px wide), but
   main photo + thumbnail row actually need ~677px combined -- the extra ~110px was
   being silently clipped by overflow:hidden, so every thumbnail was a genuine
   square underneath (confirmed via Inspect Element showing a true square box) with
   only its top sliver actually visible on screen, reading as a squashed rectangle.
   Moving the aspect-ratio + overflow-clipping down to ONLY the main slider wrapper
   (a same-size sibling of the thumbnail wrapper, not their shared parent) fixes the
   main photo's shape/overlap exactly as before, without stealing the thumbnail
   row's own vertical space. */
.woo-variation-gallery-slider-wrapper{
  overflow:hidden !important;width:100% !important;aspect-ratio:1/1.12 !important;
}
/* Found 2026-08-02, corrected three times same day. Jess confirmed via a
   direct mockup screenshot (not product-page-mockup-3col.html, which
   turned out to be a different/outdated reference) that the 3-column row
   is meant to fill the FULL page width edge-to-edge, with all three
   columns -- fabric panel, gallery, info -- scaling together
   proportionally, not two fixed-width columns with only the gallery
   growing (attempt 2) and not the whole row capped to a fixed max-width
   (attempt 3, which made it look "small and constrained" per her direct
   feedback). This version: no cap on the row at all, and all three
   columns given percentage flex-basis (24% / 42% / 24%, measured off the
   mockup image) instead of fixed pixels, so they grow and shrink together
   as the row itself fills whatever width is available. Verified live at
   1920px: 1865px row, columns at 484px / 816px / 484px (~26/44/26%,
   close to the mockup's measured ratio -- screenshots aren't pixel-exact
   so treat this as an approximation, confirm visually after pasting. */
.elementor-element-c19746c{max-width:none !important;}
.elementor-element-e5dd4da{flex:1 1 24% !important;}
.elementor-element-7eeb6e9{flex:1 1 42% !important;}
.elementor-element-b10f38a{flex:1 1 24% !important;}
.wvg-post-image{width:100% !important;height:100% !important;object-fit:cover !important;}
/* Confirmed 2026-08-02: .wvg-gallery-image is used by BOTH the thumbnail strip
   (already fixed below, scoped to .woo-variation-gallery-thumbnail-wrapper) and the
   main slider -- the plugin's own default CSS sets object-fit:fill on it, which
   distorts/stretches any image whose proportions don't match its slot exactly. The
   thumbnail-scoped fix never reached the main slider's use of the same class. */
.wvg-gallery-image,
.wvg-gallery-image img{object-fit:cover !important;}
.flex-control-thumbs{display:grid !important;grid-template-columns:repeat(3,1fr);gap:13px;
  margin:13px 0 0 !important;padding:0 !important;list-style:none;}
.flex-control-thumbs li{list-style:none;}
.flex-control-thumbs img{aspect-ratio:1/1;object-fit:cover;border:1px solid transparent;}
.flex-control-thumbs img.flex-active{border-color:var(--brick);}

/* The thumbnail strip below the main gallery photo is a separate Slick
   carousel (.woo-variation-gallery-thumbnail-slider, confirmed via its
   data-slick config referencing asNavFor the main slider) -- its images
   render tall/portrait matching the source photo instead of square,
   because nothing constrains their aspect ratio. This carousel injects
   its own markup client-side via JS, so scoping to any <img> inside the
   stable wrapper class instead of a specific auto-generated class name.

   2026-08-02: confirmed via raw server response that this carousel is
   completely empty until JS builds it, and it clones the SAME nested
   markup the main image uses (.wvg-single-gallery-image-container wrapping
   a .wvg-post-image img). The existing .wvg-post-image rule below already
   forces height:100% on any such image sitewide, but that only works if
   ITS PARENT has a real height/aspect-ratio to be 100% of -- same
   requirement as the main gallery image, which is why that one needed
   aspect-ratio on .woo-variation-product-gallery rather than just the img.
   Applying the identical pattern to the thumbnail's container class.

   2026-08-02, widened: the targeted version above still didn't work and
   this carousel never populates in automated testing (confirmed empty
   even after a 4s wait), so the exact live nesting can't be verified
   directly. Raw HTML shows the main image nested three levels deep
   (.wvg-gallery-image > div > .wvg-single-gallery-image-container > img)
   -- covering every level defensively instead of guessing one, plus
   setting height:auto !important to override any inline height Slick's
   own JS may set (Slick is known to set inline pixel heights on init,
   same root cause documented in the original gallery-overlap fix above,
   which could otherwise beat aspect-ratio regardless of specificity). */
.woo-variation-gallery-thumbnail-wrapper .slick-slide,
.woo-variation-gallery-thumbnail-wrapper .wvg-gallery-image,
.woo-variation-gallery-thumbnail-wrapper .wvg-gallery-image > div,
.woo-variation-gallery-thumbnail-wrapper .wvg-single-gallery-image-container{
  aspect-ratio:1/1 !important;overflow:hidden !important;height:auto !important;
}
.woo-variation-gallery-thumbnail-wrapper img{
  aspect-ratio:1/1 !important;object-fit:cover !important;
  width:100% !important;height:100% !important;max-width:none !important;
}

/* ---------- Product title / price / short description ---------- */
.product_title.entry-title{
  font-family:'Cinzel',serif;font-size:27px;line-height:1.15;color:var(--ink);
  margin:0 0 10px;font-weight:600;
}
/* Top price range (shown before any variation is selected) -- gold, distinct from
   the resolved variation price below (which stays brick) per Jess's request
   2026-08-02, so the two visually read as "starting price" vs. "your price". */
.elementor-widget-woocommerce-product-price .price,
p.price{
  font-family:'Cinzel',serif !important;font-size:26px !important;font-weight:700 !important;
  color:var(--gold) !important;margin:0 0 16px;display:block;text-align:center !important;
}
/* Resolved variation price (shown once fabric/size/options are selected) -- stays
   brick. More specific than the bare p.price rule above (two classes vs. one),
   so this wins the cascade regardless of source order. */
.woocommerce-variation-price .price{
  font-family:'Cinzel',serif !important;font-size:26px !important;font-weight:700 !important;
  color:var(--brick) !important;margin:0 0 16px;display:block;text-align:center !important;
}
/* Hidden entirely 2026-08-02 -- confirmed via Teton Toggle Coat that this widget
   was always capable of showing here, just empty/invisible on most products
   until their Short Description field got filled in. It belongs only in the
   "Description" accordion tab further down (a separate element/data source,
   unaffected by this rule), not duplicated up here too. */
.woocommerce-product-details__short-description{
  display:none !important;
}
.woocommerce-product-details__short-description p{margin:0;}

/* Decorative step headings ("1. Select Your Signature Fabric" is the fabric panel's
   own heading, already styled -- these two are the plain Heading widgets added
   directly in Elementor for "2. Choose Your Size" / "3. Select Quantity"). Give them
   a CSS class in Elementor's Advanced tab (Custom CSS Class field) of "rsd-step" to
   pick up this styling -- or style directly per-widget in Elementor if that's easier.
   Matched to the fabric panel's own .step styling 2026-08-02 (was 14px/left-aligned,
   looked visually inconsistent next to "Select Your Signature Fabric") so both
   "steps" read as the same design language site-wide.
   Corrected same day: styling .rsd-step itself only reaches the outer Elementor
   widget div -- the actual visible text lives in a nested h2.elementor-heading-title,
   which carries its OWN more specific color/size rule that was winning regardless of
   what .rsd-step said (same "wrapper class doesn't reach the real heading" pattern as
   the "Italian-Loomed Wool" / "Why Rhonda Stark Designs" eyebrows earlier in this
   file). Targeting the nested title directly, plus adding the same gold underline
   dot the fabric panel's own .dot element uses, so the two headings match exactly. */
.rsd-step .elementor-heading-title{
  font-family:'Cinzel',serif !important;font-size:21px !important;font-weight:700 !important;
  color:var(--brick) !important;text-align:center !important;line-height:1.35;letter-spacing:.01em;
  margin-bottom:0 !important;
}
.rsd-step{position:relative;margin-bottom:25px;}
.rsd-step::after{
  content:"";display:block;width:64px;height:1px;background:var(--gold);margin:10px auto 0;
}

/* Price/fabric-note repositioning: NOT done here. A flex/order-based CSS reorder
   was tried first but only had two blocks to work with (.single_variation for
   price, .woocommerce-variation-add-to-cart for the buttons+Add to Cart button
   together) -- putting price "after" the second block put it after Add to Cart
   too, not what Jess wanted (price directly above Add to Cart specifically). That
   needs actually moving the price element to a specific spot next to Add to Cart,
   which CSS can't do -- see the JS in rsd_option_buttons_assets() in
   rsd-fabric-panel.php instead, which physically repositions both the price and
   the "Fabric: NAME" confirmation text via insertBefore(). */

/* ---------- Variation form (fabric row hidden by rsd-fabric-panel.php's own JS/CSS
   once it confirms the custom panel found it -- nothing needed here for that part) ---------- */
/* Hide the native "Fabric Color : VALUE" label row entirely (redundant with the
   custom fabric panel on the left, which already shows the selection). */
label[for="pa_fabric-color"]{
  display:none !important;
}
/* Every OTHER attribute (Men's Sizes, Regular/Tall, etc.) still shows its native
   label + swatches/buttons, which is correct -- but the Variation Swatches plugin
   also appends a ": VALUE" span after the label showing the current selection,
   which reads as a double colon ("MEN'S SIZES: : 3X") since the label already has
   its own colon. The selected swatch/button is already visually highlighted, so
   this span is a redundant duplicate everywhere, not just for fabric -- hide it
   site-wide. */
.woo-selected-variation-item-name{
  display:none !important;
}
.variations select{
  height:2.625rem;font-size:.8571em;font-weight:600;text-transform:uppercase;
  box-shadow:none;width:100%;
}

/* Size/option button swatches (Variation Swatches for WooCommerce's own markup) --
   confirmed 2026-08-01 these had ZERO custom styling anywhere, relying entirely on
   the plugin's own defaults, which vary inconsistently product-to-product (some
   showed tan/brown borders, others gray) and gave selection only a barely-visible
   plain border. One consistent, decorative treatment site-wide, matching the same
   selected-state language as the fabric panel's own .sw.on chip (brick border +
   checkmark badge) so the whole PDP selection experience reads as one system. */
.variable-items-wrapper .button-variable-item{
  border:1.5px solid var(--line) !important;background:#fff !important;color:var(--ink) !important;
  font-family:'Montserrat',sans-serif !important;font-weight:600 !important;font-size:12.5px !important;
  letter-spacing:.04em;border-radius:0 !important;position:relative;transition:border-color .2s,color .2s;
  height:40px !important;min-height:40px !important;box-sizing:border-box !important;
  display:flex !important;align-items:center;justify-content:center;
}
/* Confirmed 2026-08-01: Trail Coat's Men's Sizes row rendered at 70px tall instead of
   the normal 40px square (every other attribute row on the same page, and every other
   product checked, was 40px) -- not caused by anything in our own CSS, most likely a
   per-attribute "swatch size" override somewhere in the swatches plugin's per-product
   settings panel (see [[unresolved_size_selector_bug]]). Forcing height explicitly
   here so this can't recur regardless of that setting. */
.variable-items-wrapper .button-variable-item:hover{border-color:var(--gold) !important;}
.variable-items-wrapper .button-variable-item.selected{
  border-color:var(--brick) !important;border-width:2px !important;color:var(--brick) !important;
  background:var(--paper) !important;font-weight:700 !important;
}
.variable-items-wrapper .button-variable-item.selected::after{
  content:'\2713';position:absolute;top:-8px;right:-8px;width:17px;height:17px;
  background:var(--brick);color:#fff;border-radius:50%;font-size:9px;line-height:17px;
  font-weight:700;text-align:center;
}
.variable-items-wrapper .button-variable-item.disabled,
.variable-items-wrapper .button-variable-item[aria-disabled="true"]{
  opacity:.4 !important;border-style:dashed !important;
}

/* Trail Coat (Men's Sizes) renders size attributes as "image" swatches instead of
   honoring the attribute's actual "Button" display type, for reasons still not
   understood (not variation count -- Men's Vest has more variations, 1180 vs 684, and
   renders fine; see [[unresolved_size_selector_bug]]) -- Men's Sizes ends up trying to
   load a real photo per size (mostly broken, two coincidentally showing an unrelated
   fabric swatch photo). Rather than wait on a root cause, force these to LOOK like the
   normal text-label buttons: hide the broken/wrong image and render the size text from
   the item's own data-title attribute instead, styled identically to
   .button-variable-item above. Confirmed 2026-08-01 the text must go on
   the outer <li> itself (the only element that actually carries the data-title
   attribute CSS attr() can read -- attr() can't reach a parent's attribute from a
   child's pseudo-element, so the text has to live here, not on the inner wrapper).
   The inner .variable-item-contents/<img> wrapper is neutralized with
   display:contents so its own (now childless-looking) box doesn't sit alongside the
   li's centered pseudo-element text and throw off centering the way the first
   attempt did. */
.variable-items-wrapper .image-variable-item{
  border:1.5px solid var(--line) !important;background:#fff !important;
  width:40px !important;height:40px !important;min-width:40px !important;
  display:flex !important;align-items:center;justify-content:center;position:relative;
  transition:border-color .2s;
}
.variable-items-wrapper .image-variable-item .variable-item-contents{display:contents;}
.variable-items-wrapper .image-variable-item img{display:none !important;}
.variable-items-wrapper .image-variable-item::before{
  content:attr(data-title);font-family:'Montserrat',sans-serif;font-weight:600;
  font-size:12.5px;color:var(--ink);letter-spacing:.04em;
}
.variable-items-wrapper .image-variable-item:hover{border-color:var(--gold) !important;}
.variable-items-wrapper .image-variable-item.selected{
  border-color:var(--brick) !important;border-width:2px !important;background:var(--paper) !important;
}
.variable-items-wrapper .image-variable-item.selected::before{color:var(--brick) !important;font-weight:700;}
.variable-items-wrapper .image-variable-item.selected::after{
  content:'\2713';position:absolute;top:-8px;right:-8px;width:17px;height:17px;
  background:var(--brick);color:#fff;border-radius:50%;font-size:9px;line-height:17px;
  font-weight:700;text-align:center;
}
.quantity{margin-bottom:26px;}

/* Add to Cart stacked below the quantity selector instead of beside it -- this
   wrapper (WooCommerce's own markup) defaults to flex-direction:row. */
.woocommerce-variation-add-to-cart.variations_button{
  flex-direction:column !important;
  align-items:stretch !important;
}
.single_add_to_cart_button.button{
  background:var(--brick-deep) !important;color:#fff !important;
  font-family:'Montserrat',sans-serif !important;font-size:12.5px !important;font-weight:600 !important;
  letter-spacing:.15em !important;text-transform:uppercase !important;line-height:normal !important;
  padding:16px 18px !important;border:0 !important;border-radius:0 !important;width:100%;
}
.single_add_to_cart_button.button:hover{background:#5c1a14 !important;}

/* Add to Wishlist shortcode button */
.yith-wcwl-add-to-wishlist{margin-top:11px;width:100%;}
.yith-wcwl-add-to-wishlist a.add_to_wishlist{
  display:flex !important;align-items:center;justify-content:center;gap:8px;width:100% !important;
  background:#fff !important;color:var(--ink) !important;border:1.5px solid var(--line) !important;
  font-family:'Montserrat',sans-serif !important;font-size:12.5px !important;font-weight:600 !important;
  letter-spacing:.15em !important;text-transform:uppercase !important;padding:16px 18px !important;
  height:auto !important;text-indent:0 !important;
}
.yith-wcwl-add-to-wishlist a.add_to_wishlist:hover{border-color:var(--brick) !important;color:var(--brick) !important;}

/* ---------- Accordion ----------
   Confirmed 2026-07-31 on a live product page: this site's Elementor renders the newer
   "Nested Accordion" widget (data-widget_type="nested-accordion.default"), NOT the older
   Accordion widget the .elementor-accordion/.elementor-tab-title classes below used to
   target -- those never matched anything on this site. Real markup is <div class="e-n-accordion">
   > <details class="e-n-accordion-item"> > <summary class="e-n-accordion-item-title"> (with a
   nested .e-n-accordion-item-title-text and .e-n-accordion-item-title-icon) and a sibling
   <div role="region"> holding the body content. */
.e-n-accordion{margin-top:28px;}
.e-n-accordion-item{border-top:1px solid var(--line);}
.e-n-accordion-item:last-child{border-bottom:1px solid var(--line);}
.e-n-accordion-item summary{list-style:none;cursor:pointer;}
.e-n-accordion-item summary::-webkit-details-marker{display:none;}
.e-n-accordion-item-title{
  padding:16px 0 !important;font-family:'Montserrat',sans-serif;font-size:12.5px;
  letter-spacing:.09em;text-transform:uppercase;font-weight:500;color:var(--ink);
}
.e-n-accordion-item-title-icon{color:var(--muted);}
.e-n-accordion-item [role="region"]{padding:0 0 18px;font-size:13.5px;color:var(--muted);}
.e-n-accordion-item [role="region"] p{margin:0;}

/* ---------- Static bands (Italian-Loomed Wool / Why RSD / closing banner) --
   these use generic Elementor widgets (Heading, Text Editor, Icon Box, Button), so
   most of their look can be set directly per-widget in Elementor's own Style tab
   rather than needing CSS here. The one thing worth doing in CSS is the closing
   banner's dark overlay, since a background image alone won't keep the text
   readable -- add the class "rsd-closer" to that Container in Elementor's
   Advanced > Custom CSS Class field to pick this up. ---------- */
.rsd-closer{
  position:relative !important;min-height:310px;display:flex !important;flex-direction:column !important;
  align-items:center !important;justify-content:center !important;
  background:#2a1e14 url('https://i0.wp.com/rhondastarkdesigns.com/wp-content/uploads/2025/11/happy-fourth-july-celebration-background-usa-celebration-usa-flag-wooden-background-usa-day-e1762472926669.jpg?w=1600&quality=80&ssl=1') center 30%/cover no-repeat !important;
}
.rsd-closer::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(30,22,16,.55) 0%,rgba(30,22,16,.15) 55%,rgba(30,22,16,.05) 100%);
  pointer-events:none;
}
.rsd-closer > .elementor-container{position:relative;z-index:1;}
.rsd-closer h2{color:#fff !important;font-size:32px !important;}
.rsd-closer p{color:#fff !important;font-size:16px !important;}

/* "Italian-Loomed Wool" / "Why Rhonda Stark Designs" 2-column band -- confirmed
   2026-07-31 this isn't actually built as 2 columns at all: the outer row has
   FOUR flat sibling widgets (Italian heading, paragraphs, Why-RSD heading, icon
   row), not two containers each holding their own heading+content. Forcing a CSS
   grid on the outer row and explicitly placing each sibling into the right
   grid cell reproduces the mockup's 2-column look without needing to physically
   restructure the widgets in Elementor. Element IDs are specific to this
   template's saved widgets. */
.elementor-element-1222411{
  display:grid !important;
  grid-template-columns:0.85fr 1.15fr;
  column-gap:0;
  row-gap:10px;
  max-width:1400px !important;margin:0 auto !important;
}
/* Symmetric divider gutter: equal padding on both sides of the border-left
   line (47px each) instead of relying on the grid's column-gap, which put
   more space on one side of the divider than the other.

   Placement is by DOM position (nth-child), not Elementor's auto-generated
   element ID -- IDs change whenever a widget is deleted/recreated (bit us once
   already with the old icon widget). But nth-child itself isn't immune to a
   different kind of drift: confirmed 2026-08-01 that the outer row now has only
   3 direct children, not 4 -- at some point "Why Rhonda Stark Designs" and the
   icon-row widget got nested together inside one shared container
   (.elementor-element-1384ce9, still happens to land on nth-child(3)) instead of
   staying flat siblings. That container defaults to flex-direction:row, so the
   heading and icons were sitting side by side instead of stacked, AND because it
   only occupied grid-row:1, that row's height/content needs no longer matched
   what column 1 needed there -- part of what was reading as a gap under
   "Italian-Loomed Wool". Fixed by forcing the shared container to stack its own
   two children vertically, and letting it span both grid rows (1/3) so its
   height doesn't get treated as row 1's alone. If the widget structure changes
   again, re-check this against the live DOM rather than assuming nth-child still
   lines up the same way. */
.elementor-element-1222411 > div:nth-child(1){grid-column:1;grid-row:1;padding-right:47px;}
.elementor-element-1222411 > div:nth-child(2){grid-column:1;grid-row:2;padding-right:47px;}
.elementor-element-1222411 > div:nth-child(2) p{text-align:left !important;line-height:1.7;margin:0 0 18px !important;
  font-size:14px !important;font-weight:400 !important;color:var(--muted) !important;
  font-family:'Montserrat',sans-serif !important;}
.elementor-element-1222411 > div:nth-child(3){
  grid-column:2;grid-row:1/3;border-left:1px solid var(--line);padding-left:47px;
  display:flex !important;flex-direction:column !important;gap:22px;
  width:100% !important;
}
/* Found 2026-08-02: an Elementor-auto-generated hash class on this element
   (.e-31ac745{width:50%}, confirmed via document.styleSheets) was capping
   it to half its own grid cell, so the "Why Rhonda Stark Designs" icon row
   below it (which itself correctly asks for width:100%) was only ever
   getting 100% of an already-halved container -- each of the 4 icons was
   squeezed into ~84px, causing "Crafted to Order" etc to wrap onto 6+
   lines. Verified live: with this override each icon column gets ~184px
   instead. */
.elementor-element-1222411 > div:nth-child(3) .rsd-why{width:100%;}

/* Replaces the 4 Icon Box widgets (deleted -- their Font Awesome icons
   weren't in this site's loaded icon subset, confirmed via inspecting the
   actual CSS, not just a caching issue) with one custom-HTML block using
   inline SVG icons instead, same technique already working for the
   homepage's trust badges. */
.rsd-why{display:flex;justify-content:center;width:100%;}
.rsd-why-item{text-align:center;padding:0 22px;}
.rsd-why-item:not(:first-child){border-left:1px solid var(--line);}
.rsd-why-item svg{width:28px;height:28px;color:var(--brick);margin:0 auto 12px;display:block;}
.rsd-why-item .t{font-family:'Cinzel',serif;font-weight:600;font-size:13px;color:var(--ink);margin-bottom:8px;}
.rsd-why-item .s{font-family:'Montserrat',sans-serif;font-size:12.5px;color:var(--muted);line-height:1.55;max-width:150px;margin:0 auto;}

/* Confirmed 2026-07-31 against the original mockup: "Italian-Loomed Wool" and
   "Why Rhonda Stark Designs" are meant to be small brick-red eyebrow-style
   labels with a short underline rule, NOT full-size headings -- these were
   built as plain large Heading widgets, so restyled down to match. */
.elementor-element-002cf01 .elementor-heading-title,
.elementor-element-6da93a8 .elementor-heading-title{
  font-size:13px !important;font-family:'Montserrat',sans-serif !important;
  color:var(--gold) !important;text-transform:uppercase;letter-spacing:.14em;
  font-weight:600 !important;text-align:left;position:relative;padding-bottom:14px;
}
.elementor-element-002cf01 .elementor-heading-title::after,
.elementor-element-6da93a8 .elementor-heading-title::after{
  content:"";position:absolute;left:0;bottom:0;width:44px;height:1px;background:var(--brick);
}

/* ---------- Standard product template tabs (Description/Reviews) -- for products that
   don't go through the custom 3-column Elementor build at all (throws, tumblers, barware,
   sale items, etc. -- anything without the fabric panel). Confirmed live 2026-08-27 via
   americana-minky-cuddle-throw: Porto's own responsive-tabs plugin hardcodes
   #tab-description/#tab-reviews to a plain white background and a near-white gray
   border-top (rgb(231,231,231)) regardless of the rest of the page -- body/#main/.summary
   on this same template are already correctly cream via the body.single-product #main rule
   at the top of this file, so the tab panel read as a stray unstyled white box. Scoped to
   body.single-product broadly (not any Elementor element ID) since #tab-description simply
   doesn't exist on the 3-column template, which uses .e-n-accordion instead -- no risk of
   this double-applying. Padding/layout left untouched (30px 0 15px, confirmed via computed
   styles), only background/text/border swapped to the site's own tokens. */
body.single-product .woocommerce-tabs .tab-content,
body.single-product #tab-description,
body.single-product #tab-reviews{
  background:var(--paper) !important;color:var(--ink) !important;
  font-family:'Montserrat',sans-serif;font-size:13.5px;line-height:1.7;
  border-top:1px solid var(--line) !important;
}
body.single-product #tab-description p,
body.single-product #tab-reviews p{color:var(--ink) !important;}

/* ---------- Responsive: 3-column reflow (mirrors the mockup's breakpoints) ----------
   The column widths/order themselves were set directly in Elementor's own responsive
   controls per docs/PRODUCT-PAGE-GUIDE.md Step 3 -- this is just typography scaling. */
@media(max-width:820px){
  .product_title.entry-title{font-size:23px;}

  /* "Italian-Loomed Wool" / "Why Rhonda Stark Designs" band -- confirmed 2026-08-01
     on a live phone screenshot: the desktop 2-column grid (see rule above, no
     max-width guard on it) was still forcing both columns side by side on a narrow
     screen. Below this width the whole band stacks into one column, in reading
     order (heading, paragraph, heading+icon-row container), and the icon row
     itself becomes a plain 2x2 grid instead of a 4-across flex row. Only 3
     nth-child rules here now, matching the live 3-child DOM -- see the long
     comment on the base (non-mobile) nth-child(3) rule above for why. */
  .elementor-element-1222411{
    grid-template-columns:1fr !important;
    row-gap:8px;
  }
  .elementor-element-1222411 > div:nth-child(1){grid-column:1;grid-row:1;padding-right:0;}
  .elementor-element-1222411 > div:nth-child(2){grid-column:1;grid-row:2;padding-right:0;margin-bottom:28px;}
  .elementor-element-1222411 > div:nth-child(3){grid-column:1;grid-row:3;border-left:0;padding-left:0;}

  .rsd-why{display:grid !important;grid-template-columns:1fr 1fr;column-gap:18px;row-gap:26px;width:100%;}
  .rsd-why-item{border-left:0 !important;padding:0;}

  /* Main 3-column PDP layout (fabric panel | gallery | purchase info) -- confirmed
     2026-08-01 on a live phone screenshot: this Elementor container never had a
     mobile breakpoint set, so it stayed flex-direction:row at every screen size,
     cramming all 3 columns into ~90-140px slivers each. That's what made "1. Select
     Your Signature Fabric" wrap onto 5 lines (a 21px heading in a 90px-wide column)
     and made the fabric swatch grid look like one narrow stacked column instead of
     the intended 2-across grid. Stacked full-width below this size, reordered so the
     product photo shows before the fabric choices (better mobile reading order than
     the desktop left-to-right DOM order). */
  .elementor-element-c19746c{flex-direction:column !important;}
  .elementor-element-e5dd4da,
  .elementor-element-7eeb6e9,
  .elementor-element-b10f38a{
    width:100% !important;flex-basis:100% !important;max-width:100% !important;
  }
  .elementor-element-7eeb6e9{order:1;}
  .elementor-element-e5dd4da{order:2;margin:28px 0;}
  .elementor-element-b10f38a{order:3;}
}
/* ============================================================
   RHONDA STARK DESIGNS - CART PAGE STYLING
   Copy EVERYTHING in this file and paste it into:
   Appearance > Customize > Additional CSS
   ADD THIS AFTER everything else already in that box.

   Confirmed 2026-08-02 live on the Cart page: the underlying markup is
   standard WooCommerce cart classes (table.cart, .product-thumbnail,
   .product-name, .product-price, .product-quantity, .product-subtotal,
   .cart_totals, .coupon) with Porto's own Bootstrap-derived layer on top
   (.card, .card-sub-title, .wc-action-btn, .porto-radio) -- NOT the
   variation-swatches plugin's own markup like the PDP fights, so this page
   is much more predictable to style. Body class is body.woocommerce-cart.
   ============================================================ */

/* Same recurring #main white-background bug found on every other page this
   project -- Porto's #main has its own explicit white background sitting on
   top of the cream body background. */
body.woocommerce-cart #main{
  background:var(--cream) !important;
}

/* ---------- Page title ---------- */
body.woocommerce-cart .page-title,
body.woocommerce-cart h1.entry-title{
  font-family:'Cinzel',serif !important;font-size:32px !important;color:var(--ink) !important;
  font-weight:600 !important;text-transform:none !important;
}

/* ---------- Free-shipping progress bar ("Add $X to cart and get free shipping!") ---------- */
body.woocommerce-cart .woocommerce-message,
body.woocommerce-cart .wc-block-cart__free-shipping-bar,
body.woocommerce-cart .cart-free-shipping-message{
  background:var(--paper) !important;border:1px solid var(--line) !important;color:var(--ink) !important;
  font-family:'Montserrat',sans-serif !important;font-size:13px;border-radius:0 !important;
  padding:14px 18px !important;
}

/* ---------- Cart table ---------- */
body.woocommerce-cart table.cart{
  border:1px solid var(--line) !important;border-collapse:collapse;width:100%;
}
body.woocommerce-cart table.cart thead th{
  background:var(--paper) !important;border-bottom:1px solid var(--line) !important;
  font-family:'Montserrat',sans-serif !important;font-size:11.5px !important;font-weight:600 !important;
  letter-spacing:.1em;text-transform:uppercase !important;color:var(--muted) !important;
  padding:14px 12px !important;
}
body.woocommerce-cart table.cart td{
  border-bottom:1px solid var(--line) !important;padding:16px 12px !important;vertical-align:middle;
}
body.woocommerce-cart table.cart tr.cart_item:last-child td{border-bottom:none !important;}

body.woocommerce-cart td.product-thumbnail img{
  width:80px !important;height:80px !important;object-fit:cover;border:1px solid var(--line);
}

body.woocommerce-cart td.product-name a{
  font-family:'Cinzel',serif !important;font-size:15px !important;color:var(--ink) !important;
  font-weight:600 !important;text-decoration:none;
}
body.woocommerce-cart td.product-name a:hover{color:var(--brick) !important;}
/* Fabric/Size selection lines under the product name */
body.woocommerce-cart td.product-name dl,
body.woocommerce-cart td.product-name .variation{
  font-family:'Montserrat',sans-serif !important;font-size:12px !important;color:var(--muted) !important;
  margin:6px 0 0 !important;
}
body.woocommerce-cart td.product-name dl dt{
  font-weight:600;text-transform:uppercase;letter-spacing:.05em;font-size:11px;
  display:inline;color:var(--ink) !important;
}
body.woocommerce-cart td.product-name dl dd{display:inline;margin:0;}
body.woocommerce-cart td.product-name dl dd p{margin:0;display:inline;}

body.woocommerce-cart td.product-price .amount,
body.woocommerce-cart td.product-subtotal .amount{
  font-family:'Cinzel',serif !important;font-size:15px !important;font-weight:700 !important;
  color:var(--brick) !important;
}

body.woocommerce-cart .quantity input.qty{
  border:1.5px solid var(--line) !important;border-radius:0 !important;height:38px;width:60px;
  font-family:'Montserrat',sans-serif !important;font-size:13px;color:var(--ink) !important;
  text-align:center;background:#fff !important;
}

/* Remove ("x") link -- native icon font from Porto, just recolor it */
body.woocommerce-cart .remove.remove-product{
  color:var(--muted) !important;font-size:18px !important;
}
body.woocommerce-cart .remove.remove-product:hover{color:var(--brick) !important;}

/* ---------- Coupon field + button ---------- */
body.woocommerce-cart .coupon{
  display:flex;gap:10px;flex-wrap:wrap;margin-top:20px;
}
body.woocommerce-cart .coupon .input-text{
  border:1.5px solid var(--line) !important;border-radius:0 !important;padding:12px 14px;
  font-family:'Montserrat',sans-serif !important;font-size:13px;background:#fff !important;
  color:var(--ink) !important;min-width:200px;
}
body.woocommerce-cart .coupon button[name="apply_coupon"]{
  background:#fff !important;color:var(--ink) !important;border:1.5px solid var(--line) !important;
  border-radius:0 !important;font-family:'Montserrat',sans-serif !important;font-size:11.5px !important;
  font-weight:600 !important;letter-spacing:.1em;text-transform:uppercase;padding:0 22px;
}
body.woocommerce-cart .coupon button[name="apply_coupon"]:hover{
  border-color:var(--brick) !important;color:var(--brick) !important;
}

/* "Update cart" button (native WooCommerce, next to coupon on some layouts) */
body.woocommerce-cart button[name="update_cart"]{
  background:var(--brick) !important;color:#fff !important;border:0 !important;border-radius:0 !important;
  font-family:'Montserrat',sans-serif !important;font-size:11.5px !important;font-weight:600 !important;
  letter-spacing:.1em;text-transform:uppercase;padding:0 24px;height:42px;
}
body.woocommerce-cart button[name="update_cart"]:hover{background:var(--brick-dark) !important;}

/* ---------- Cart totals card ---------- */
body.woocommerce-cart .cart_totals .card,
body.woocommerce-cart .cart-collaterals{
  background:var(--paper) !important;border:1px solid var(--line) !important;border-radius:0 !important;
  box-shadow:none !important;padding:26px !important;
}
body.woocommerce-cart .cart_totals .card-sub-title{
  font-family:'Cinzel',serif !important;font-size:16px !important;color:var(--ink) !important;
  font-weight:600 !important;letter-spacing:.04em;text-transform:none !important;
  border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:16px !important;
}
body.woocommerce-cart table.cart-total{width:100%;}
body.woocommerce-cart table.cart-total th,
body.woocommerce-cart table.cart-total td{
  border:0 !important;padding:9px 0 !important;font-family:'Montserrat',sans-serif !important;
  font-size:13.5px;color:var(--ink) !important;
}
body.woocommerce-cart table.cart-total th h4{
  font-family:'Montserrat',sans-serif !important;font-size:13.5px !important;font-weight:600 !important;
  margin:0 !important;color:var(--ink) !important;
}
body.woocommerce-cart table.cart-total tr.order-total th h4,
body.woocommerce-cart table.cart-total tr.order-total .amount{
  font-family:'Cinzel',serif !important;font-size:19px !important;font-weight:700 !important;
  color:var(--brick) !important;
}
body.woocommerce-cart table.cart-total tr.order-total{border-top:1px solid var(--line);}
body.woocommerce-cart table.cart-total tr.order-total th,
body.woocommerce-cart table.cart-total tr.order-total td{padding-top:14px !important;}

/* ---------- Proceed to Checkout button -- same treatment as the PDP's Add to Cart ----------
   Confirmed 2026-08-02: this site's real button here is NOT WooCommerce's default
   .checkout-button class at all -- Porto overrides the markup with its own
   .btn.btn-v-dark ("dark button variant") instead, which is why it was rendering
   plain black regardless of the .checkout-button rule below (that class simply
   never matched anything). Kept the old selector too in case a future WooCommerce/
   Porto update reverts to the standard markup -- harmless if it never matches. */
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,
body.woocommerce-cart .wc-proceed-to-checkout .btn{
  background:var(--brick) !important;color:#fff !important;border:0 !important;border-radius:0 !important;
  font-family:'Montserrat',sans-serif !important;font-size:12.5px !important;font-weight:600 !important;
  letter-spacing:.15em !important;text-transform:uppercase !important;padding:16px 18px !important;
  width:100%;display:block;text-align:center;text-decoration:none;box-sizing:border-box;
}
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover,
body.woocommerce-cart .wc-proceed-to-checkout .btn:hover{background:var(--brick-dark) !important;color:#fff !important;}

/* ============================================================
   HEADER MINI-CART DROPDOWN
   Confirmed 2026-08-02: this is a completely separate component from the
   /cart/ page above -- it renders via the header cart icon on EVERY page
   (not just /cart/), so none of the body.woocommerce-cart-scoped rules above
   ever reached it. Real structure: .cart-popup.widget_shopping_cart >
   .widget_shopping_cart_content > .total-count (item count + View Cart) +
   ul.cart_list.product_list_widget (li.mini_cart_item per product, each with
   .product-image/.product-details/dl.variation) + .porto-free-shipping
   (Porto's own progress-bar widget) + .woocommerce-mini-cart__total +
   .woocommerce-mini-cart__buttons (View Cart + Checkout links). Not scoped to
   any body class since it can appear anywhere.
   ============================================================ */
.cart-popup.widget_shopping_cart{
  background:#fff !important;border:1px solid var(--line) !important;box-shadow:0 8px 24px rgba(0,0,0,.12) !important;
}
.total-count{
  font-family:'Montserrat',sans-serif !important;font-size:11.5px !important;font-weight:600 !important;
  letter-spacing:.1em;color:var(--ink) !important;border-bottom:1px solid var(--line) !important;
  padding-bottom:12px !important;
}
.total-count a{color:var(--brick) !important;text-decoration:none;font-weight:600 !important;}
.total-count a:hover{color:var(--brick-dark) !important;}

.cart_list.product_list_widget li.mini_cart_item{
  border-bottom:1px solid var(--line) !important;padding:14px 0 !important;
}
.cart_list .product-image img{
  width:64px !important;height:64px !important;object-fit:cover;border:1px solid var(--line);
}
.cart_list .remove.remove-product{color:var(--muted) !important;}
.cart_list .remove.remove-product:hover{color:var(--brick) !important;}

.cart_list .product-details{
  font-family:'Cinzel',serif !important;font-size:13px !important;color:var(--ink) !important;
  font-weight:600 !important;
}
.cart_list .product-details .variation{
  font-family:'Montserrat',sans-serif !important;font-size:11px !important;color:var(--muted) !important;
  margin:6px 0 !important;
}
.cart_list .product-details .variation dt{
  font-weight:600;text-transform:uppercase;letter-spacing:.04em;display:inline;color:var(--ink) !important;
}
.cart_list .product-details .variation dd{display:inline;margin:0;}
.cart_list .product-details .variation dd p{display:inline;margin:0;}
.cart_list .product-details .quantity{
  font-family:'Montserrat',sans-serif !important;font-size:12px !important;color:var(--brick) !important;
  font-weight:600 !important;
}

.porto-free-shipping{
  background:var(--paper) !important;border:1px solid var(--line);padding:12px 14px !important;margin:10px 0 !important;
}
.porto-free-shipping-notice label{
  font-family:'Montserrat',sans-serif !important;font-size:11.5px !important;color:var(--ink) !important;
}
.porto-free-shipping-notice i{color:var(--brick) !important;}
.porto-free-shipping-bar{accent-color:var(--brick) !important;width:100%;}
.porto-free-shipping-bar::-webkit-progress-value{background:var(--brick) !important;}
.porto-free-shipping-bar::-moz-progress-bar{background:var(--brick) !important;}

.woocommerce-mini-cart__total.total{
  font-family:'Montserrat',sans-serif !important;font-size:13.5px !important;color:var(--ink) !important;
  border-top:1px solid var(--line);padding-top:12px !important;
}
.woocommerce-mini-cart__total .amount{
  font-family:'Cinzel',serif !important;font-weight:700 !important;color:var(--brick) !important;
}

.woocommerce-mini-cart__buttons.buttons{display:flex !important;gap:10px;}
.woocommerce-mini-cart__buttons a.button{
  flex:1;text-align:center;font-family:'Montserrat',sans-serif !important;font-size:11px !important;
  font-weight:600 !important;letter-spacing:.1em;text-transform:uppercase;padding:12px 10px !important;
  border-radius:0 !important;text-decoration:none;box-sizing:border-box;
}
.woocommerce-mini-cart__buttons a.button:not(.checkout){
  background:#fff !important;color:var(--ink) !important;border:1.5px solid var(--line) !important;
}
.woocommerce-mini-cart__buttons a.button:not(.checkout):hover{border-color:var(--brick) !important;color:var(--brick) !important;}
.woocommerce-mini-cart__buttons a.button.checkout{
  background:var(--brick) !important;color:#fff !important;border:0 !important;
}
.woocommerce-mini-cart__buttons a.button.checkout:hover{background:var(--brick-dark) !important;}

/* ---------- Empty cart state ---------- */
body.woocommerce-cart .cart-empty,
body.woocommerce-cart .woocommerce-info{
  font-family:'Montserrat',sans-serif !important;font-size:15px;color:var(--muted) !important;
  text-align:center;background:none !important;border:0 !important;padding:40px 0 20px !important;
}
body.woocommerce-cart .return-to-shop .button,
body.woocommerce-cart a.wc-backward{
  background:var(--brick) !important;color:#fff !important;border:0 !important;border-radius:0 !important;
  font-family:'Montserrat',sans-serif !important;font-size:12px !important;font-weight:600 !important;
  letter-spacing:.12em;text-transform:uppercase;padding:14px 30px !important;display:inline-block;
  text-decoration:none;
}
body.woocommerce-cart .return-to-shop .button:hover,
body.woocommerce-cart a.wc-backward:hover{background:var(--brick-dark) !important;}

/* ---------- Cross-sells ("You may be interested in...") -- match PLP card typography ---------- */
body.woocommerce-cart .cross-sells h2{
  font-family:'Cinzel',serif !important;font-size:20px !important;color:var(--ink) !important;
  font-weight:600 !important;margin-bottom:20px;
}
/* ============================================================
   RHONDA STARK DESIGNS - CHECKOUT PAGE STYLING
   Copy EVERYTHING in this file and paste it into:
   Appearance > Customize > Additional CSS
   ADD THIS AFTER everything else already in that box.

   NOT LIVE-VERIFIED like the other page CSS files in this project -- WooCommerce
   redirects /checkout/ to /cart/ whenever the cart is empty, and every attempt to
   add a real item to cart through automation failed on a security nonce tied to a
   real logged-in browser session. Written from WooCommerce's standard, well-known
   checkout template classes (#customer_details, .woocommerce-billing-fields,
   #order_review, table.woocommerce-checkout-review-order-table, #place_order) plus
   the same Porto Bootstrap-derived layer already confirmed on the Cart page
   (.card, .card-sub-title, .btn-v-dark) -- but this file needs a real live check
   with an item actually in cart before trusting it fully. Body class should be
   body.woocommerce-checkout (standard WooCommerce), scoped the same way as
   body.woocommerce-cart in rsd-cart-styling.txt.
   ============================================================ */

body.woocommerce-checkout #main{
  background:var(--cream) !important;
}

body.woocommerce-checkout .page-title,
body.woocommerce-checkout h1.entry-title{
  font-family:'Cinzel',serif !important;font-size:32px !important;color:var(--ink) !important;
  font-weight:600 !important;text-transform:none !important;
}

/* ---------- Section headings (Billing details / Order notes / Your order) ---------- */
body.woocommerce-checkout #customer_details h3,
body.woocommerce-checkout .woocommerce-billing-fields h3,
body.woocommerce-checkout #order_review_heading,
body.woocommerce-checkout .card-sub-title{
  font-family:'Cinzel',serif !important;font-size:16px !important;color:var(--ink) !important;
  font-weight:600 !important;letter-spacing:.04em;text-transform:none !important;
  border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:16px !important;
}

/* ---------- Form fields (billing/shipping address, order notes) ---------- */
body.woocommerce-checkout .woocommerce-input-wrapper input.input-text,
body.woocommerce-checkout .woocommerce-input-wrapper textarea,
body.woocommerce-checkout .woocommerce-input-wrapper select,
body.woocommerce-checkout input.input-text,
body.woocommerce-checkout select,
body.woocommerce-checkout textarea{
  border:1.5px solid var(--line) !important;border-radius:0 !important;padding:12px 14px !important;
  font-family:'Montserrat',sans-serif !important;font-size:13.5px;background:#fff !important;
  color:var(--ink) !important;width:100%;box-sizing:border-box;height:auto !important;
}
body.woocommerce-checkout .woocommerce-input-wrapper input.input-text:focus,
body.woocommerce-checkout input.input-text:focus,
body.woocommerce-checkout select:focus,
body.woocommerce-checkout textarea:focus{
  border-color:var(--gold) !important;outline:0 !important;box-shadow:none !important;
}
body.woocommerce-checkout label{
  font-family:'Montserrat',sans-serif !important;font-size:12px !important;font-weight:600 !important;
  letter-spacing:.05em;text-transform:uppercase;color:var(--muted) !important;margin-bottom:6px !important;
}

/* ---------- Order review table (line items + totals) ---------- */
body.woocommerce-checkout table.woocommerce-checkout-review-order-table{
  border:1px solid var(--line) !important;border-collapse:collapse;width:100%;background:var(--paper) !important;
}
body.woocommerce-checkout table.woocommerce-checkout-review-order-table thead th{
  font-family:'Montserrat',sans-serif !important;font-size:11.5px !important;font-weight:600 !important;
  letter-spacing:.1em;text-transform:uppercase !important;color:var(--muted) !important;
  border-bottom:1px solid var(--line) !important;padding:12px !important;
}
body.woocommerce-checkout table.woocommerce-checkout-review-order-table td,
body.woocommerce-checkout table.woocommerce-checkout-review-order-table th{
  border-bottom:1px solid var(--line) !important;padding:12px !important;
  font-family:'Montserrat',sans-serif !important;font-size:13px;color:var(--ink) !important;
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table .product-name{
  font-family:'Cinzel',serif !important;font-size:13.5px !important;color:var(--ink) !important;font-weight:600 !important;
}
/* Fabric/Size/Lined-Options line under the product name -- confirmed 2026-08-02 via
   live screenshot this needed its own explicit styling, not just inherited from
   .product-name above (was rendering low-contrast/hard to read). */
body.woocommerce-checkout .woocommerce-checkout-review-order-table .product-name dl.variation{
  font-family:'Montserrat',sans-serif !important;font-size:11.5px !important;color:var(--muted) !important;
  margin:6px 0 0 !important;line-height:1.7;
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table .product-name dl.variation dt{
  font-weight:600 !important;text-transform:uppercase;letter-spacing:.04em;display:inline;
  color:var(--ink) !important;
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table .product-name dl.variation dd{
  display:inline;margin:0 12px 0 0 !important;
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table .product-name dl.variation dd p{
  display:inline;margin:0;
}

/* Per-item price -- explicitly smaller than the order-total below (19px), confirmed
   2026-08-02 via live screenshot these were rendering oddly large/inconsistent with
   the Subtotal/Shipping/Total summary rows without an explicit size here. */
body.woocommerce-checkout .woocommerce-checkout-review-order-table .amount{
  font-family:'Cinzel',serif !important;font-weight:700 !important;color:var(--brick) !important;
  font-size:14px !important;
}
/* Shipping row -- NOT live-verified (same caveat as the rest of this file), written
   from the HTML structure confirmed on the Cart page's own shipping method (the
   same porto-radio/porto-control-label markup very likely renders here too, since
   both pull from the same WooCommerce shipping method template). The short
   underline Jess saw only under "Flat Rate: $19.95" specifically (not spanning the
   full row like Subtotal/Tax) is almost certainly a small default border/underline
   on Porto's own .porto-control-label element, separate from this row's actual
   bottom border -- reset directly rather than guessed away. */
body.woocommerce-checkout tr:has(#shipping_method) th,
body.woocommerce-checkout tr:has(.woocommerce-shipping-methods) th{
  border-bottom:1px solid var(--line) !important;
}
body.woocommerce-checkout tr:has(#shipping_method) h4,
body.woocommerce-checkout tr:has(.woocommerce-shipping-methods) h4{
  font-family:'Montserrat',sans-serif !important;font-size:12px !important;font-weight:600 !important;
  letter-spacing:.08em;text-transform:uppercase;color:var(--ink) !important;margin-bottom:10px !important;
}
body.woocommerce-checkout .woocommerce-shipping-methods .porto-control-label{
  border:0 !important;text-decoration:none !important;box-shadow:none !important;
  font-family:'Montserrat',sans-serif !important;font-size:13px;color:var(--ink) !important;
}
body.woocommerce-checkout .woocommerce-shipping-methods .amount{
  color:var(--brick) !important;font-weight:700 !important;
}
body.woocommerce-checkout .woocommerce-shipping-destination{
  font-family:'Montserrat',sans-serif !important;font-size:12px;color:var(--muted) !important;margin:8px 0 0 !important;
}

body.woocommerce-checkout table.woocommerce-checkout-review-order-table tr.order-total{border-top:1px solid var(--line);}
body.woocommerce-checkout table.woocommerce-checkout-review-order-table tr.order-total th,
body.woocommerce-checkout table.woocommerce-checkout-review-order-table tr.order-total td{
  border-bottom:0 !important;
}
body.woocommerce-checkout table.woocommerce-checkout-review-order-table tr.order-total .amount{
  font-size:19px !important;
}

/* ---------- Payment methods ---------- */
body.woocommerce-checkout ul.wc_payment_methods{
  border:1px solid var(--line) !important;background:var(--paper) !important;padding:16px !important;
}
body.woocommerce-checkout ul.wc_payment_methods li.wc_payment_method label{
  font-family:'Montserrat',sans-serif !important;font-size:13.5px !important;color:var(--ink) !important;
  text-transform:none;font-weight:600 !important;letter-spacing:0;
}
body.woocommerce-checkout .payment_box{
  background:#fff !important;border:1px solid var(--line) !important;font-family:'Montserrat',sans-serif;
  font-size:12.5px;color:var(--muted) !important;
}

/* ---------- Place Order button -- same treatment as Add to Cart / Proceed to Checkout.
   Kept BOTH the standard #place_order class and Porto's likely .btn-v-dark override
   (confirmed on the Cart page's Proceed to Checkout button) since which one actually
   renders here hasn't been verified live yet. */
body.woocommerce-checkout #place_order,
body.woocommerce-checkout button#place_order,
body.woocommerce-checkout .place-order .btn{
  background:var(--brick) !important;color:#fff !important;border:0 !important;border-radius:0 !important;
  font-family:'Montserrat',sans-serif !important;font-size:12.5px !important;font-weight:600 !important;
  letter-spacing:.15em !important;text-transform:uppercase !important;padding:16px 18px !important;
  width:100%;box-sizing:border-box;
}
body.woocommerce-checkout #place_order:hover,
body.woocommerce-checkout .place-order .btn:hover{background:var(--brick-dark) !important;color:#fff !important;}

/* ---------- Coupon toggle link (if shown above billing fields) ---------- */
body.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info{
  background:var(--paper) !important;border:1px solid var(--line) !important;color:var(--ink) !important;
  font-family:'Montserrat',sans-serif;font-size:13px;border-radius:0 !important;
}
body.woocommerce-checkout .woocommerce-form-coupon-toggle a{color:var(--brick) !important;font-weight:600;}
/* ============================================================
   RHONDA STARK DESIGNS - VISIT US PAGE STYLING
   Copy EVERYTHING in this file and paste it into:
   Appearance > Customize > Additional CSS
   ADD THIS AFTER everything else already in that box.

   Reuses existing site-wide classes/variables (--cream, --paper, --brick,
   --gold, --ink, --muted, --line, .eyebrow, .container, .btn, .trust*) --
   nothing here should need to touch those.
   ============================================================ */

/* ---------- Page background ---------- */
.vs-hero, .vs-main{background:var(--cream);}

/* ---------- Hero ---------- */
.vs-hero{padding:64px 24px 46px;text-align:center;}
.vs-hero-in{max-width:640px;margin:0 auto;}
.vs-hero .eyebrow{display:block;margin-bottom:10px;color:var(--gold);}
.vs-hero h1{font-family:'Cinzel',serif;font-size:52px;color:var(--ink);margin:6px 0 18px;font-weight:600;}
.vs-hero p{font-size:15px;color:var(--muted);line-height:1.7;max-width:520px;margin:0 auto;}

/* ---------- Two-column layout ---------- */
.vs-main{padding:50px 0 0;}
.vs-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start;}
/* Temporary: hide a column (add "vs-hidden" to it in Elementor's Advanced > CSS
   Classes) and add "vs-solo" to the .vs-grid container itself to collapse to a
   single centered column instead of leaving an empty gap. Remove both classes
   once the Retail Partners content is ready. */
.vs-hidden{display:none !important;}
.vs-grid.vs-solo{grid-template-columns:1fr;max-width:640px;margin:0 auto;}
.vs-col-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:6px;}
.vs-col-head svg{width:30px;height:30px;color:var(--gold);flex:none;margin-top:2px;}
.vs-col-head .eyebrow{color:var(--gold);}
.vs-col-head h2{font-family:'Cinzel',serif;font-size:26px;color:var(--ink);margin:4px 0 0;font-weight:600;}
.vs-col-sub{font-size:13.5px;color:var(--muted);margin:14px 0 30px;line-height:1.6;}

/* ---------- Shows timeline ---------- */
.vs-timeline{position:relative;}
.vs-tl-row{display:grid;grid-template-columns:80px 20px 1fr;column-gap:16px;position:relative;padding-bottom:26px;}
.vs-tl-row.vs-tl-last{padding-bottom:0;}
.vs-tl-date{display:flex;flex-direction:column;line-height:1.15;}
.vs-tl-date .mon{font-family:'Montserrat',sans-serif;font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--gold);text-transform:uppercase;}
.vs-tl-date .d{font-family:'Cinzel',serif;font-size:19px;color:var(--ink);margin-top:2px;}
.vs-tl-dot{position:relative;display:flex;justify-content:center;}
.vs-tl-dot::before{content:"";position:absolute;top:6px;width:9px;height:9px;border-radius:50%;background:var(--gold);border:2px solid var(--cream);box-shadow:0 0 0 1px var(--gold);}
.vs-tl-row:not(.vs-tl-last) .vs-tl-dot::after{content:"";position:absolute;top:18px;bottom:-26px;width:1px;background:var(--line);}
.vs-tl-info{border-bottom:1px solid var(--line);padding-bottom:22px;}
.vs-tl-row.vs-tl-last .vs-tl-info{border-bottom:0;padding-bottom:0;}
.vs-tl-info .nm{font-family:'Cinzel',serif;font-size:16px;color:var(--ink);margin-bottom:4px;}
.vs-tl-info .venue,.vs-tl-info .loc{font-size:12.5px;color:var(--muted);}
.vs-tl-info .booth{display:inline-block;margin-top:6px;font-family:'Montserrat',sans-serif;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);}

.vs-tl-year{display:flex;align-items:center;gap:10px;margin:2px 0 18px;padding-left:116px;}
.vs-tl-year::after{content:"";flex:1;height:1px;background:var(--line);}
.vs-tl-year span{font-family:'Montserrat',sans-serif;font-size:11px;font-weight:700;letter-spacing:.12em;color:var(--gold);text-transform:uppercase;white-space:nowrap;}
.vs-tl-year-first{margin-top:-4px;}

/* ---------- Retail partners panel ---------- */
.vs-partners-panel{background:var(--paper);border:1px solid var(--line);border-radius:3px;padding:26px;}
.vs-stat{text-align:center;font-size:14px;color:var(--muted);line-height:1.6;margin-bottom:18px;}
.vs-stat .num{font-family:'Cinzel',serif;font-size:24px;color:var(--gold);font-weight:700;padding:0 2px;}
.vs-states{border-top:1px solid var(--line);}
.vs-state{border-bottom:1px solid var(--line);}
.vs-state summary{list-style:none;cursor:pointer;padding:14px 4px;font-family:'Montserrat',sans-serif;font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);display:flex;justify-content:space-between;align-items:center;}
.vs-state summary::-webkit-details-marker{display:none;}
.vs-state summary::after{content:"+";font-size:17px;color:var(--muted);font-weight:400;}
.vs-state[open] summary::after{content:"\2212";}
.vs-state-body{padding:0 4px 18px;}
.vs-soon{font-size:12.5px;color:var(--muted);font-style:italic;margin:0;}
.vs-partner{display:grid;grid-template-columns:90px 1fr;gap:14px;background:#fff;border:1px solid var(--line);border-radius:3px;padding:16px;}
.vs-partner + .vs-partner{margin-top:12px;}
.vs-partner-city{font-family:'Cinzel',serif;font-size:12px;font-style:italic;color:var(--gold);}
.vs-partner-info .nm{font-family:'Cinzel',serif;font-size:15px;color:var(--ink);margin-bottom:4px;}

/* ---------- Wholesale banner ---------- */
.vs-wholesale{display:grid;grid-template-columns:220px 1fr auto;align-items:center;gap:28px;
  background:var(--paper);border:1px solid var(--line);border-radius:3px;padding:20px;margin:50px 0 0;}
.vs-wholesale-photo{aspect-ratio:16/10;background:var(--cream-2);border-radius:3px;overflow:hidden;}
.vs-wholesale-photo img{width:100%;height:100%;object-fit:cover;display:block;}
.vs-wholesale-copy h3{font-family:'Cinzel',serif;font-size:21px;color:var(--ink);line-height:1.3;margin:0 0 8px;font-weight:600;}
.vs-wholesale-copy p{font-size:13px;color:var(--muted);margin:0;line-height:1.6;}
.vs-wholesale-btn{background:#fff;color:var(--gold);border:1.5px solid var(--gold);white-space:nowrap;}
.vs-wholesale-btn:hover{background:var(--gold);color:#fff;}

/* ---------- Responsive ---------- */
@media(max-width:900px){
  .vs-hero h1{font-size:38px;}
  .vs-grid{grid-template-columns:1fr;gap:46px;}
  .vs-wholesale{grid-template-columns:1fr;text-align:center;}
  .vs-wholesale-photo{max-width:280px;margin:0 auto;}
}
@media(max-width:520px){
  .vs-tl-row{grid-template-columns:64px 16px 1fr;column-gap:10px;}
  .vs-tl-year{padding-left:90px;}
  .vs-partner{grid-template-columns:1fr;}
}
/* ============================================================
   RHONDA STARK DESIGNS - CONTACT US PAGE STYLING
   Copy EVERYTHING in this file and paste it into:
   Appearance > Customize > Additional CSS
   ADD THIS AFTER everything else already in that box.

   Reuses existing site-wide classes/variables (--cream, --paper, --brick,
   --gold, --ink, --muted, --line, .eyebrow, .container) -- nothing here
   should need to touch those.
   ============================================================ */

/* ---------- Page background (same full-width fix as the other pages) ---------- */
body.elementor-template-full-width #main{background:transparent;}
.ct-hero,.ct-main{background:var(--cream);}

/* ---------- Decorative rule (gold line + small rotated diamond) --
   reused under the hero heading and each column heading for a bit of visual
   flourish, matching the diamond-accent style used in the original design
   mockups but not yet ported to any live page. ---------- */
.ct-rule{width:52px;height:1px;background:var(--gold);margin:16px auto 0;position:relative;}
.ct-rule::after{content:"";position:absolute;left:50%;top:-2px;width:5px;height:5px;
  background:var(--brick);transform:translateX(-50%) rotate(45deg);}
.ct-col .ct-rule,
.ct-form-panel .ct-rule{margin:16px 0 0;}
.ct-col .ct-rule::after,
.ct-form-panel .ct-rule::after{left:0;transform:rotate(45deg);}

/* ---------- Hero ---------- */
.ct-hero{padding:64px 24px 46px;text-align:center;position:relative;}
.ct-hero::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:120px;height:2px;background:linear-gradient(90deg,transparent,var(--gold),transparent);}
.ct-hero-in{max-width:600px;margin:0 auto;}
.ct-hero .eyebrow{display:block;margin-bottom:10px;color:var(--gold);}
.ct-hero h1{font-family:'Cinzel',serif;font-size:52px;color:var(--ink);margin:6px 0 0;font-weight:600;}
.ct-hero .ct-rule{margin:18px auto 22px;}
.ct-hero p{font-size:15px;color:var(--muted);line-height:1.7;max-width:480px;margin:0 auto;}

/* ---------- Two-column layout ---------- */
.ct-main{padding:20px 0 70px;}
.ct-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start;}
/* Shared card box for BOTH columns -- add class "ct-card" directly to each
   Elementor Column itself (Advanced tab > CSS Classes), same way "ct-form-panel"
   was added to the form column. Confirmed 2026-07-31 the two columns are
   actually equal width (600px each) at the Elementor Column level; the visual
   mismatch was double-padding on the left (Elementor's own column padding PLUS
   ct-col's own padding stacking, since ct-col sits one level deeper inside an
   HTML widget wrapper) vs single padding on the right (ct-form-panel applied
   straight to the column). Putting the box styling on the column itself for
   both sides removes the extra nested layer. */
.ct-card{
  background:var(--paper);border:1px solid var(--line);border-top:3px solid var(--gold);
  border-radius:3px;padding:34px;height:100%;box-sizing:border-box;
  box-shadow:0 4px 18px rgba(44,40,35,.05);
}
.ct-col .eyebrow,
.ct-form-panel .eyebrow{color:var(--gold);}
.ct-col h2{font-family:'Cinzel',serif;font-size:28px;color:var(--ink);margin:6px 0 0;font-weight:600;}
.ct-intro{font-size:13.5px;color:var(--muted);line-height:1.7;margin:22px 0 30px;}

/* ---------- Contact details ---------- */
.ct-details{display:flex;flex-direction:column;gap:22px;}
.ct-detail{display:flex;align-items:flex-start;gap:16px;min-height:54px;}
.ct-detail svg{width:26px;height:26px;color:var(--brick);flex:none;margin-top:2px;}
.ct-detail .t{font-family:'Montserrat',sans-serif;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);margin-bottom:4px;}
.ct-detail .s{font-size:14px;color:var(--muted);line-height:1.5;}
.ct-detail .s a{color:var(--muted);text-decoration:none;}
.ct-detail .s a:hover{color:var(--brick);}

/* ---------- Form panel ---------- */
.ct-form-panel{
  background:var(--paper);border:1px solid var(--line);border-top:3px solid var(--gold);
  border-radius:3px;padding:34px;height:100%;box-sizing:border-box;
  box-shadow:0 4px 18px rgba(44,40,35,.05);
}
.ct-form-panel h2{margin-top:0;}

/* Contact Form 7 on this site renders through Porto's own Bootstrap-style
   markup (<div class="row"><div class="form-group col-lg-6"><label
   class="form-label...">...<span class="wpcf7-form-control-wrap"><input
   class="wpcf7-form-control..."></span></div></div>), not the plain default
   CF7 output -- confirmed 2026-07-31 by inspecting the live form. The
   .form-group.col-lg-6 columns need their Bootstrap width neutralized since
   this narrower sidebar panel isn't the wide layout Bootstrap's grid assumes;
   otherwise fields render far narrower than the panel (confirmed ~220px). */
.ct-form-panel .wpcf7-form{margin-top:8px;}
.ct-form-panel .wpcf7-form .row{display:block !important;margin:0 !important;}
.ct-form-panel .wpcf7-form .form-group{
  width:100% !important;flex:0 0 100% !important;max-width:100% !important;
  margin:0 0 18px !important;padding:0 !important;
}
.ct-form-panel .wpcf7-form label,
.ct-form-panel .wpcf7-form .form-label{
  display:block !important;font-family:'Montserrat',sans-serif !important;font-size:11px !important;
  font-weight:700 !important;letter-spacing:.08em;text-transform:uppercase;color:var(--ink) !important;
  margin-bottom:8px !important;
}
.ct-form-panel .wpcf7-form-control-wrap{display:block;width:100%;}
.ct-form-panel .wpcf7-form-control{
  display:block !important;width:100% !important;box-sizing:border-box;
  font-family:'Montserrat',sans-serif;font-size:13.5px;color:var(--ink);
  background:#fff;border:1.5px solid var(--line) !important;border-radius:0;padding:12px 14px;
}
.ct-form-panel .wpcf7-form-control:focus{outline:none;border-color:var(--brick) !important;}
.ct-form-panel textarea.wpcf7-form-control{min-height:130px;resize:vertical;}
.ct-form-panel .wpcf7-submit{
  display:inline-block;background:var(--brick) !important;color:#fff !important;
  font-family:'Montserrat',sans-serif;font-size:12.5px;font-weight:600;letter-spacing:.15em;
  text-transform:uppercase;padding:15px 34px;border:0 !important;border-radius:0;cursor:pointer;width:auto !important;
}
.ct-form-panel .wpcf7-submit:hover{background:var(--brick-dark,#822a20) !important;}
.ct-form-panel .wpcf7-spinner{margin-left:12px;}
.ct-form-panel .wpcf7-response-output{
  margin:18px 0 0 !important;border-radius:0;font-size:12.5px;padding:12px 14px !important;
}

/* ---------- Responsive ---------- */
@media(max-width:900px){
  .ct-hero h1{font-size:38px;}
  .ct-grid{grid-template-columns:1fr;gap:46px;}
}
/* ============================================================
   RHONDA STARK DESIGNS - FABRICS PAGE STYLING
   Copy EVERYTHING in this file and paste it into:
   Appearance > Customize > Additional CSS
   ADD THIS AFTER everything else already in that box.

   Reuses existing site-wide classes/variables (--cream, --paper, --brick,
   --gold, --ink, --muted, --line, .eyebrow, .container, .ct-rule) --
   nothing here should need to touch those.
   ============================================================ */

/* ---------- Page background (same full-width fix as the other pages) ---------- */
body.elementor-template-full-width #main{background:transparent;}
.fb-hero,.fb-main{background:var(--cream);}

/* ---------- Hero ---------- */
.fb-hero{padding:64px 24px 46px;text-align:center;}
.fb-hero-in{max-width:640px;margin:0 auto;}
.fb-hero .eyebrow{display:block;margin-bottom:10px;color:var(--gold);}
.fb-hero h1{font-family:'Cinzel',serif;font-size:52px;color:var(--ink);margin:6px 0 0;font-weight:600;}
.fb-hero .ct-rule{margin:18px auto 22px;}
.fb-hero p{font-size:15px;color:var(--muted);line-height:1.7;max-width:520px;margin:0 auto;}

/* ---------- Main ---------- */
.fb-main{padding:10px 0 70px;}
.fb-disclaimer{font-size:12px;font-style:italic;color:var(--muted);text-align:center;
  max-width:720px;margin:0 auto 50px;line-height:1.6;}

.fb-section-head{text-align:center;margin-bottom:30px;}
.fb-section-head-2{margin-top:64px;}
.fb-section-head .eyebrow{color:var(--gold);}
.fb-section-head h2{font-family:'Cinzel',serif;font-size:28px;color:var(--ink);margin:6px 0 0;font-weight:600;}

/* ---------- Swatch grid (same visual language as the PDP fabric panel's
   swatches, scaled up for a standalone reference gallery) ---------- */
.fb-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:22px 16px;}
.fb-sw{text-align:center;}
.fb-chip{aspect-ratio:1/1;border:1.5px solid var(--line);border-radius:2px;overflow:hidden;
  background:var(--cream-2);box-shadow:0 1px 5px rgba(0,0,0,.04);transition:border-color .2s ease;
  position:relative;}
.fb-chip img{width:100%;height:100%;object-fit:cover;display:block;}
.fb-sw:hover .fb-chip{border-color:var(--gold);}
.fb-nm{font-family:'Cinzel',serif;font-size:11.5px;font-weight:600;letter-spacing:.03em;
  color:var(--ink);margin-top:9px;line-height:1.3;}

/* ---------- Sold Out stamp -- rsd_sold_out_fabrics() in rsd-fabric-swatches.php
   drives which fabrics get this; visual only, doesn't touch the product-page
   fabric selector. Photo desaturated + dimmed rather than fully hidden, so the
   pattern is still visible for reference -- consistent with the rest of the site's
   restrained, non-sticker-like badge language (.rsd-badge on the PLP). ---------- */
.fb-sw-soldout .fb-chip img{filter:grayscale(1) brightness(.75);}
.fb-stamp{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(20,15,11,.35);
  font-family:'Montserrat',sans-serif;font-size:11px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:#fff;text-align:center;}
.fb-stamp span{border:1px solid rgba(255,255,255,.7);padding:6px 14px;}
.fb-sw-soldout:hover .fb-chip{border-color:var(--line);}

/* ---------- Zoom lightbox ---------- */
.fb-lb{position:fixed;inset:0;background:rgba(20,15,11,.93);display:none;
  align-items:center;justify-content:center;flex-direction:column;z-index:9999;padding:40px;}
.fb-lb.open{display:flex;}
.fb-lb img{max-width:min(90vw,520px);max-height:70vh;object-fit:contain;
  box-shadow:0 10px 46px rgba(0,0,0,.55);border-radius:2px;}
.fb-lb-caption{margin-top:18px;font-family:'Cinzel',serif;font-size:15px;color:#fff;letter-spacing:.04em;}
.fb-lb-close{position:absolute;top:20px;right:26px;width:42px;height:42px;border:0;border-radius:50%;
  background:rgba(255,255,255,.15);color:#fff;font-size:18px;line-height:1;cursor:pointer;}
.fb-lb-close:hover{background:rgba(255,255,255,.28);}

/* ---------- Responsive ---------- */
@media(max-width:1100px){ .fb-grid{grid-template-columns:repeat(5,1fr);} }
@media(max-width:900px){
  .fb-hero h1{font-size:38px;}
  .fb-grid{grid-template-columns:repeat(4,1fr);}
}
@media(max-width:640px){ .fb-grid{grid-template-columns:repeat(3,1fr);gap:16px 12px;} }
@media(max-width:420px){ .fb-grid{grid-template-columns:repeat(2,1fr);} }
/* ============================================================
   RHONDA STARK DESIGNS - SITE HEADER & FOOTER STYLING
   Copy EVERYTHING in this file and paste it into:
   Appearance > Customize > Additional CSS
   ADD THIS AFTER everything else already in that box.

   Both the header and footer are Elementor Theme Builder templates (not
   page-pasted content like the other sections), confirmed 2026-07-31 by
   inspecting the live site:
     - Header background is already the site's cream (#f4efe6), but the nav
       links are white -- nearly invisible against it.
     - Footer background is already close to the site's charcoal, but the
       heading text ("Let's Get Social:", "Quick Links", "Join Our
       Newsletter") is dark gray (#444) on that dark background -- also very
       low contrast -- and uses the site's default Kaisei Tokumin font
       instead of Cinzel like every other heading on the site.
   ============================================================ */

/* ---------- Mobile speed: Font Awesome font-display ----------
   PageSpeed Insights flagged Porto's own Font Awesome @font-face
   (fa-solid-900.woff2) as using font-display:block, confirmed live via
   document.styleSheets -- that's a ~100ms LCP-adjacent cost from Chrome
   hiding text using this font until the file loads, worth avoiding for a
   handful of small UI icons. Re-declaring the exact same
   family/weight/style/src with font-display:swap -- browsers use the
   last-declared @font-face matching a given family/weight/style, so this
   wins without needing to touch Porto's own theme files. */
@font-face{
  font-family:"Font Awesome 6 Free";font-weight:900;font-style:normal;font-display:swap;
  src:url("/wp-content/themes/porto/fonts/fontawesome_optimized/fa-solid-900.woff2") format("woff2"),
      url("/wp-content/themes/porto/fonts/fontawesome_optimized/fa-solid-900.ttf") format("truetype");
}

/* ---------- Accessibility: breadcrumb contrast ----------
   Porto's default breadcrumb ("Home > Shop" under the page title) uses a
   flat theme gray (#777) never overridden by us -- confirmed live via
   computed style it only hits 3.9:1 contrast against the cream background,
   short of the 4.5:1 AA minimum. Swapped for --muted, the same warm brown
   already used for secondary text everywhere else on the site (passes
   ~7:1 against cream/paper), so it both fixes contrast and stops looking
   like an unstyled theme leftover. */
.breadcrumb,
.breadcrumb a,
.breadcrumb li{color:var(--muted) !important;}

/* ---------- Accessibility: gold text on light backgrounds ----------
   Every place var(--gold) is used as TEXT color on the cream/paper
   background -- eyebrow kicker labels (Home, About, Contact, Fabrics,
   Visit Us), Visit Us's timeline month/booth/year labels and stat numbers,
   the wholesale partner-city credit, the wholesale button, and the PDP's
   "Product Details/Care" section labels -- confirmed only ~2.9:1 contrast,
   short of the 4.5:1 AA minimum (the stat numbers are large/bold enough to
   only need 3:1, and still barely fail that). Deliberately NOT changing
   the --gold variable itself, since that would also dull every purely
   decorative gold accent (hero arrow, section-rule divider bars, the
   oversized quote-mark, hover-state colors) that isn't subject to text
   contrast rules and looks better staying bright. This override only
   touches actual persistent label/link text, using a deeper bronze-gold
   from the same hue family (passes ~6.6:1) so it still reads as "gold,"
   just legible. */
.eyebrow,
.ab-eyebrow,
.vs-tl-date .mon,
.vs-tl-info .booth,
.vs-tl-year span,
.vs-stat .num,
.vs-partner-city,
.vs-wholesale-btn,
.elementor-element-002cf01 .elementor-heading-title,
.elementor-element-6da93a8 .elementor-heading-title{
  color:#6e5430 !important;
}
.vs-wholesale-btn{border-color:#6e5430 !important;}
/* Exception: .shows-panel .eyebrow ("WHERE YOU CAN FIND US" on the
   homepage's dark brick-red "Upcoming Shows" panel) got swept up by the
   !important rule above even though it was never the problem -- it's
   already a light color (#f4d9c9) chosen for a DARK background, not gold
   text on a light one. The dark bronze made it nearly invisible against
   the dark red panel. Restoring its original light color. */
.shows-panel .eyebrow{color:#f4d9c9 !important;}
.breadcrumb a:hover{color:var(--brick) !important;}

/* ---------- Accessibility utility: visually-hidden text ----------
   Used to give the two newsletter forms (footer + homepage banner) real,
   unique <label>/<legend> text for screen readers without changing how
   they look -- fixes the accessibility scan's "Unclear Form Labels" /
   "Duplicate Fieldset Label" findings, which were caused by both forms
   being identical copies of the same Contact Form 7 form (id 1546). */
.sr-only{
  position:absolute !important;width:1px !important;height:1px !important;
  padding:0 !important;margin:-1px !important;overflow:hidden !important;
  clip:rect(0,0,0,0) !important;white-space:nowrap !important;border:0 !important;
}

/* ---------- Free shipping banner (the thin bar above the header) ----------
   Soft slate navy -- a muted cool blue-gray, deliberately less saturated
   than the site's own --navy variable ("not too bold" per feedback), used
   as a calm complement to the warm cream/brick/gold palette everywhere
   else. Font-size is scoped to the text only, not "*" -- an earlier version
   applied 12px to every descendant including the shipping icon, which
   overrode its intended larger inline font-size:2em and shrank it down to
   match the text. */
.header-top{background:#5c7080 !important;}
.header-top,
.header-top b,
.header-top a,
.header-top i[class*="porto-icon-"]{
  font-family:'Montserrat',sans-serif !important;color:#fff !important;
}
.header-top b{font-size:12px !important;letter-spacing:.08em;text-transform:uppercase;}

/* ---------- Header background ----------
   Confirmed 2026-07-31 this is already the exact --cream value, but reads
   as plain white next to the rest of the page -- forcing it explicitly and
   adding a subtle bottom border so it reads as a deliberate warm cream tone
   instead of blending into a generic white. */
.header-builder,
.header-main{background:var(--cream) !important;}
.header-builder{border-bottom:1px solid var(--line);}

/* ---------- Header ----------
   Confirmed 2026-07-31 the real nav markup is <ul class="main-menu ..."> (no
   <nav> wrapper, and no ".menu" class despite that being a common Porto
   pattern elsewhere). The actual visible links use font "Marcellus" (not
   this site's Montserrat) in navy blue (#1f194b) and bright red (#a5002c)
   for the active item -- neither matches the site's ink/brick/gold palette,
   so this isn't a contrast bug, just an unmatched leftover theme default. */
.header-builder .main-menu > li > a{
  color:var(--ink) !important;font-family:'Cinzel',serif !important;font-size:15px;
  font-weight:600 !important;letter-spacing:.07em;text-transform:uppercase;
}
/* Confirmed live via document.styleSheets: Porto's own Header Builder
   customizer output includes an ID-scoped inline rule,
   "#header .main-menu > li.menu-item > a { font-family: Marcellus !important; }",
   which beats the class-only rule above on specificity (ID always outranks
   classes, even !important vs !important) -- the top nav has actually been
   rendering in Marcellus this whole time despite the rule above. Matching
   that exact selector to win the tiebreak, same approach already used for
   the active/hover color rules below. */
#header .main-menu > li.menu-item > a{font-family:'Cinzel',serif !important;}
.header-builder .main-menu > li > a:hover,
.header-builder .main-menu > li.current > a{color:var(--brick) !important;}
/* The theme's own leftover rule for the active/hover nav item uses an
   #header ID selector + !important, which beats a class-only selector even
   when both are !important -- matching that specificity here instead of
   losing the tiebreak. Confirmed 2026-07-31 this is what was still showing
   red (#a5002c) for the current page's nav item despite the rule above. */
#header .main-menu > li.menu-item.active > a,
#header .main-menu > li.menu-item:hover > a{color:var(--brick) !important;}
.header-builder i[class*="porto-icon-"]{color:var(--ink) !important;}

/* ---------- Desktop dropdown submenu (hover "Shop" > Ladies/Men's etc.) ----------
   Same problem as the mobile menu originally had: this is Porto's own
   unmatched leftover styling, confirmed live via computed style --
   Marcellus font, navy blue (rgb(31,25,75)/#1f194b) link text on a white
   background, brick-red (#a5002c, Porto's own --porto-primary-light-5) on
   hover. None of that matches this site's palette. */
#header .porto-narrow-sub-menu,
#header .porto-wide-sub-menu{background:var(--paper) !important;}
#header .porto-narrow-sub-menu li.menu-item > a,
#header .porto-wide-sub-menu li.menu-item > a{
  color:var(--ink) !important;font-family:'Cormorant Garamond',serif !important;font-size:17px;
  font-weight:500 !important;text-transform:none !important;
  -webkit-text-stroke:0.3px var(--ink);
  border-left:3px solid transparent;transition:.2s;
}
#header .porto-narrow-sub-menu li.menu-item:hover > a,
#header .porto-wide-sub-menu li.menu-item:hover > a,
#header .porto-narrow-sub-menu li.menu-item.active > a,
#header .porto-wide-sub-menu li.menu-item.active > a{
  color:var(--brick-dark) !important;background:transparent !important;
  border-left-color:var(--gold) !important;
}
.header-builder i[class*="porto-icon-"]:hover{color:var(--brick) !important;}

/* ---------- Mobile menu (Porto's classic accordion menu, #nav-panel) ----------
   Confirmed 2026-08-01 this is a completely separate DOM/markup from the desktop
   Elementor header nav above (#menu-main-menu-1.mobile-menu.accordion-menu), so the
   .header-builder .main-menu rules never reached it -- it was still showing Porto's
   unmatched leftover defaults: navy blue (#1f194b) link text, and a dusty-rose
   (#c47373) background on the current/active item. Matching the site's own palette.
   Follow-up, same day: the plain-link color fix worked, but the current-page
   highlight didn't -- confirmed live the "current" class actually lives on the <a>
   itself (class=" current "), not on the parent <li> as originally assumed (the <li>
   carries current-menu-item/current_page_item/active instead, none of which are
   literally "current"). Fixed to target a.current directly -- still didn't apply.
   Confirmed live via document.styleSheets inspection that this exact rule DOES
   carry !important and DOES match the element (verified with .matches()), yet the
   computed background still showed Porto's own color, contradicting normal
   !important-always-wins cascade behavior -- genuinely unresolved why. Rather than
   keep guessing blind, matched/exceeded Porto's own actual winning selector
   specificity directly: `#nav-panel .accordion-menu li.menu-item.active > a,
   #nav-panel .accordion-menu li.menu-item:hover > a, #nav-panel .accordion-menu
   .sub-menu li:not(.active):hover > a` (found via live inspection to be the rule
   actually producing the dusty-rose color) -- targeting that same
   li.menu-item.active > a pattern (not just a.current) alongside the original
   selector, both with !important, as a more defensive fix. Verify live after
   pasting -- this specific rule proved stubborn enough that automated verification
   in this environment wasn't conclusive. */
#nav-panel .mobile-menu a{
  color:var(--ink) !important;font-family:'Montserrat',sans-serif !important;
}
/* Porto's own theme CSS actually defines two distinct highlight colors here
   (confirmed live via document.styleSheets) -- a dark one (#8c1f33) for the
   active/current-page item and a light one (#c47373) for hover -- though a
   quirk in Porto's own cascade lets the light one leak into the active
   state too in practice. Recreating that same dark-for-current /
   light-for-hover split intentionally, using this site's own palette
   instead of Porto's wine/dusty-rose. */
#nav-panel .mobile-menu a.current,
#nav-panel .accordion-menu li.menu-item.active > a{
  color:#fff !important;background:var(--brick-dark) !important;
}
#nav-panel .mobile-menu a:hover,
#nav-panel .mobile-menu a:active,
#nav-panel .accordion-menu li.menu-item:hover > a{
  color:var(--ink) !important;background:#d9bb8a !important;
}

/* Depth hierarchy is Porto's own native behavior, left alone on purpose:
   .accordion-menu > li > a is uppercase, nested .sub-menu a is normal
   case, both bold(700) -- confirmed live via computed style. An earlier
   version of this file added a color/weight difference on top of that,
   which wasn't wanted; removed so it matches Porto's real approach,
   just recolored to --ink instead of Porto's original navy. */

/* ---------- Hide Porto's built-in default footer entirely ----------
   Confirmed 2026-07-31: with both the Elementor footer template (id 1628)
   and the Porto Templates Builder footer disabled, Porto falls back to its
   own hardcoded theme footer (#footer.footer-1), which was never actually
   customized -- it's still showing 2022 demo content (Account/About/
   Newsletter columns, "Porto eCommerce" wordmark). Rather than keep hunting
   through Theme Options/Widgets/Templates Builder for the one setting that
   controls it, just hide the whole thing -- the real footer is the separate
   rsd-site-footer.php snippet (.sf-footer), which renders independently via
   wp_footer regardless of this. */
#footer.footer-1,
.footer-wrapper .footer-top{display:none !important;}

/* ---------- Footer ---------- */
#colophon{background:var(--charcoal) !important;}
#colophon .elementor-heading-title{
  font-family:'Cinzel',serif !important;color:#fff !important;font-size:14px !important;
  letter-spacing:.1em;text-transform:uppercase;font-weight:600 !important;
}
#colophon p,
#colophon .elementor-widget-text-editor{
  color:#a89f92 !important;font-family:'Montserrat',sans-serif;font-size:12.5px;
}
/* Confirmed 2026-07-31: this nav menu is rendered by the "Header Footer
   Elementor" (HFE) plugin's widget, not Elementor's own native Nav Menu --
   real link class is .hfe-menu-item, not .elementor-item as that widget
   would use. */
#colophon .hfe-menu-item{
  color:#cfc6ba !important;font-family:'Montserrat',sans-serif;font-size:13px;
  text-transform:none;padding:4px 0 !important;
}
#colophon .hfe-menu-item:hover{color:var(--gold) !important;}
#colophon .elementor-social-icons-wrapper a{
  color:#cfc6ba !important;background:transparent !important;
}
#colophon .elementor-social-icons-wrapper a:hover{color:var(--gold) !important;}

/* Newsletter signup form -- confirmed 2026-07-31 this is actually a Contact
   Form 7 + Wysija (MailPoet) form embedded in Porto's widget, not a native
   Porto form -- targeting the real .wpcf7-form-control / .wysija-* classes. */
#colophon .wpcf7-form-control.wysija-input{
  background:#fff !important;border:0 !important;color:var(--ink) !important;
  font-family:'Montserrat',sans-serif;font-size:13px;padding:12px 14px;
}
#colophon .wpcf7-submit.wysija-submit{
  background:var(--brick-dark) !important;color:#fff !important;border:0 !important;
  font-family:'Montserrat',sans-serif;font-size:12px;font-weight:600 !important;
  letter-spacing:.12em;text-transform:uppercase;padding:12px 26px;
}
#colophon .wpcf7-submit.wysija-submit:hover{background:var(--brick-deep) !important;}

/* Copyright line + divider */
#colophon .elementor-divider-separator{border-color:#3d3a35 !important;}
/* ============================================================
   RHONDA STARK DESIGNS - POLICY PAGES STYLING
   (Terms of Service, Privacy Policy, Return Policy)
   Copy EVERYTHING in this file and paste it into:
   Appearance > Customize > Additional CSS
   ADD THIS AFTER everything else already in that box.

   These are plain WordPress pages (not custom-built like the other pages),
   so nothing here touches their actual legal text content -- only typography
   and layout. Scoped by page ID (confirmed 2026-07-31):
     21993 = Terms of Service
     21986 = Privacy Policy
     2826  = Return Policy
   ============================================================ */

body.page-id-21993,
body.page-id-21986,
body.page-id-2826{
  background:var(--cream);
}
/* Same recurring issue as every other page in this project: Porto's #main
   element has its own explicit white background sitting on top of <body>. */
body.page-id-21993 #main,
body.page-id-21986 #main,
body.page-id-2826 #main{
  background:var(--cream) !important;
}

body.page-id-21993 .page-title,
body.page-id-21986 .page-title,
body.page-id-2826 .page-title{
  font-family:'Cinzel',serif !important;color:var(--ink) !important;
  text-align:center;font-size:32px !important;text-transform:uppercase;letter-spacing:.06em;
  margin:20px 0 30px !important;
}

/* Narrower reading column -- confirmed 2026-07-31 the content area was
   rendering the full 1225px page width, which makes long paragraphs of
   legal text hard to read. */
body.page-id-21993 .page-content,
body.page-id-21986 .page-content,
body.page-id-2826 .page-content{
  max-width:760px !important;margin:0 auto !important;padding-bottom:60px;
}

body.page-id-21993 .page-content h2,
body.page-id-21986 .page-content h2,
body.page-id-2826 .page-content h2{
  font-family:'Cinzel',serif;color:var(--brick);font-size:19px;
  margin:34px 0 14px;letter-spacing:.02em;
}
body.page-id-21993 .page-content h2:first-child,
body.page-id-21986 .page-content h2:first-child,
body.page-id-2826 .page-content h2:first-child{margin-top:0;}

body.page-id-21993 .page-content p,
body.page-id-21986 .page-content p,
body.page-id-2826 .page-content p,
body.page-id-21993 .page-content li,
body.page-id-21986 .page-content li,
body.page-id-2826 .page-content li{
  font-family:'Montserrat',sans-serif !important;font-size:14px;color:var(--ink);
  line-height:1.75;
}

body.page-id-21993 .page-content ul,
body.page-id-21986 .page-content ul,
body.page-id-2826 .page-content ul{
  padding-left:22px;margin:0 0 20px;
}
body.page-id-21993 .page-content li,
body.page-id-21986 .page-content li,
body.page-id-2826 .page-content li{
  margin-bottom:6px;
}

body.page-id-21993 .page-content a,
body.page-id-21986 .page-content a,
body.page-id-2826 .page-content a{
  color:var(--brick);text-decoration:underline;
}
/* ============================================================
   RHONDA STARK DESIGNS - ACCOUNT / ORDER-LOOKUP PAGES STYLING
   Covers: /my-account/ (login form + logged-in dashboard),
   /my-orders/, /order-tracking/, and the 404 "Page not found" page.

   LIVE-VERIFIED 2026-08-27 for the #main background fix and the
   logged-OUT /my-account/ login form (confirmed via Inspect/computed
   styles on all four URLs). NOT verified for the logged-IN My Account
   dashboard (nav sidebar, order history table, address boxes) --
   couldn't log in to check without real customer credentials, so
   that section is written from WooCommerce's standard, well-known
   My Account template classes the same way rsd-checkout-styling.txt
   was before it got checked live -- confirm with a real screenshot
   after logging in before trusting that section fully.

   /my-orders/ ALSO has a non-CSS bug: the page currently shows the
   literal unrendered text "[dokan-my-orders]" instead of any content
   -- that shortcode isn't being processed (plugin not active, or the
   wrong shortcode for whatever's actually installed). This file can't
   fix that; flagging it so it doesn't get mistaken for solved once
   the background color is right.
   ============================================================ */

/* ---------- #main white-background bug -- same recurring issue as every other
   page in this project (Cart, Checkout, PLP, policy pages): Porto's #main
   element has its own explicit white background sitting on top of <body>,
   which is already correctly cream everywhere. ---------- */
body.woocommerce-account #main,
body.page-id-2154 #main,   /* /my-orders/ */
body.page-id-327 #main,    /* /order-tracking/ */
body.error404 #main{
  background:var(--cream) !important;
}

/* ---------- My Account login form (logged-out /my-account/) -- confirmed live:
   username/password borders were a near-invisible rgba(0,0,0,.08) instead of the
   site's own hairline, and the LOGIN button (Porto's .btn-special) rendered as
   pale gray text on a transparent background -- low contrast, same "hard to
   read" issue as the shipping-method/description-tab fixes elsewhere. Brought in
   line with every other button on the site (Add to Cart, Place Order, etc). ---------- */
body.woocommerce-account .woocommerce-form-login .woocommerce-form-row input.input-text{
  border:1.5px solid var(--line) !important;border-radius:0 !important;padding:12px 14px !important;
  font-family:'Montserrat',sans-serif !important;font-size:13.5px;background:#fff !important;
  color:var(--ink) !important;width:100%;box-sizing:border-box;
}
body.woocommerce-account .woocommerce-form-login label{
  font-family:'Montserrat',sans-serif !important;font-size:12px !important;font-weight:600 !important;
  letter-spacing:.05em;text-transform:uppercase;color:var(--muted) !important;margin-bottom:6px !important;
}
body.woocommerce-account .woocommerce-form-login button[type="submit"]{
  background:var(--brick-deep) !important;color:#fff !important;border:0 !important;border-radius:0 !important;
  font-family:'Montserrat',sans-serif !important;font-size:12.5px !important;font-weight:600 !important;
  letter-spacing:.15em !important;text-transform:uppercase !important;padding:14px 24px !important;
}
body.woocommerce-account .woocommerce-form-login button[type="submit"]:hover{background:#5c1a14 !important;}
body.woocommerce-account .lost_password a{color:var(--brick) !important;}

/* ---------- Order Tracking page form (/order-tracking/) -- confirmed live via
   page-id-327: Order ID / Billing email inputs already render on a plain white
   panel inherited from the theme's default form styling, which reads fine against
   the now-corrected cream #main -- brought the TRACK button in line with the same
   button language as everything else on the site instead of Porto's default. ---------- */
body.page-id-327 form input[type="text"],
body.page-id-327 form input[type="email"]{
  border:1.5px solid var(--line) !important;border-radius:0 !important;padding:12px 14px !important;
  font-family:'Montserrat',sans-serif !important;font-size:13.5px;background:#fff !important;
  color:var(--ink) !important;
}
body.page-id-327 form button[type="submit"],
body.page-id-327 form input[type="submit"]{
  background:var(--brick-deep) !important;color:#fff !important;border:0 !important;border-radius:0 !important;
  font-family:'Montserrat',sans-serif !important;font-size:12.5px !important;font-weight:600 !important;
  letter-spacing:.15em !important;text-transform:uppercase !important;padding:14px 24px !important;
}
body.page-id-327 form button[type="submit"]:hover,
body.page-id-327 form input[type="submit"]:hover{background:#5c1a14 !important;}

/* ---------- Logged-in My Account dashboard -- nav sidebar confirmed live 2026-08-27
   via a real logged-in screenshot: standard WooCommerce classes, and the guessed
   styling below already happened to match (brick-red active "DASHBOARD" state,
   uppercase tracked labels, hairline dividers). ---------- */
body.woocommerce-account .woocommerce-MyAccount-navigation ul{list-style:none;margin:0;padding:0;}
body.woocommerce-account .woocommerce-MyAccount-navigation li{border-bottom:1px solid var(--line);}
body.woocommerce-account .woocommerce-MyAccount-navigation li a{
  display:block;padding:12px 4px;font-family:'Montserrat',sans-serif;font-size:12.5px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;color:var(--muted);
}
body.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a{color:var(--brick);}

/* Dashboard icon cards (Orders/Downloads/Addresses/Account Details/Wishlist/Logout) --
   confirmed live 2026-08-27 via Inspect Element (class="featured-box", icon
   class="icon-featured", inner text in .box-content h4) plus the Porto theme's own
   compiled CSS (fetched and searched directly): this is Porto's "Featured Box" widget,
   variant style-5/6/7, which strips the box down to background:none;border:0 and
   colors both border and heading text via Porto's OWN CSS variables
   (--porto-gray-2:#e7e7e7 for the icon circle's border, --porto-heading-color for the
   label). The REAL bug, not just a style preference: .icon-featured's base rule sets
   color:#fff (a white glyph, meant to sit on a colored circle) while this variant's
   icon circle background is var(--porto-normal-bg) = plain white -- so the icons were
   rendering literally white-on-white, only visible as a faint antialiasing ghost.
   Overriding hard with the site's own tokens instead of fighting Porto's variable
   cascade (same approach as every other stubborn Porto-default fix in this project). */
body.woocommerce-account .featured-box{
  background:var(--paper) !important;border:1.5px solid var(--line) !important;
  border-radius:0 !important;box-shadow:none !important;transition:border-color .2s;
}
body.woocommerce-account .featured-box:hover{border-color:var(--gold) !important;}
body.woocommerce-account .featured-box .icon-featured{
  background:var(--brick) !important;border:0 !important;color:#fff !important;
}
body.woocommerce-account .featured-box .box-content h4{
  color:var(--ink) !important;font-family:'Montserrat',sans-serif !important;font-weight:700 !important;
  font-size:12.5px !important;letter-spacing:.1em !important;text-transform:uppercase !important;
  margin-top:14px !important;
}
body.woocommerce-account .featured-box:hover .box-content h4{color:var(--brick) !important;}

body.woocommerce-account .woocommerce-MyAccount-content{
  background:var(--paper) !important;border:1px solid var(--line);padding:24px;
  font-family:'Montserrat',sans-serif;font-size:13.5px;color:var(--ink);
}
body.woocommerce-account .woocommerce-orders-table{border:1px solid var(--line) !important;width:100%;border-collapse:collapse;}
body.woocommerce-account .woocommerce-orders-table th,
body.woocommerce-account .woocommerce-orders-table td{
  border-bottom:1px solid var(--line) !important;padding:12px !important;
  font-family:'Montserrat',sans-serif !important;font-size:13px;color:var(--ink) !important;
}
body.woocommerce-account .woocommerce-Address{
  background:var(--paper) !important;border:1px solid var(--line);padding:20px;
}
body.woocommerce-account .woocommerce-Address-title h3{
  font-family:'Cinzel',serif !important;font-size:15px !important;color:var(--ink) !important;font-weight:600 !important;
}
body.woocommerce-account .woocommerce-MyAccount-content .button,
body.woocommerce-account a.button{
  background:var(--brick-deep) !important;color:#fff !important;border:0 !important;border-radius:0 !important;
  font-family:'Montserrat',sans-serif !important;font-size:12.5px !important;font-weight:600 !important;
  letter-spacing:.15em !important;text-transform:uppercase !important;padding:12px 20px !important;
  display:inline-block;
}
body.woocommerce-account .woocommerce-MyAccount-content .button:hover,
body.woocommerce-account a.button:hover{background:#5c1a14 !important;color:#fff !important;}
