/* New components only; approved homepage and commerce geometry remain inherited. */
/* Long service copy must not scroll through the persistent navigation. */
dialog[data-scene=info] .overlay-header{background:var(--ug-deep,#24113b)}
dialog[data-scene=info]:has(.contact-scene,.care-scene) .overlay-header{background:#fff;color:#211036}
dialog[data-scene=info]:has(.contact-scene,.care-scene) .overlay-brand{filter:brightness(0)}
/* Saved and suggested pieces use the same catalogue caption hierarchy. */
.saved-page .browse-card h3{font:600 12px/1.2 Arial,sans-serif;text-transform:uppercase;color:inherit}
dialog[data-scene=saved] .browse-card .category{font:10px/1.4 Arial,sans-serif;color:#d5c5e7}
dialog[data-scene=saved] .product-price{font-family:Arial,sans-serif;line-height:1.4}
.bag-review-link{display:block;text-align:center;padding:16px 0;font:18px var(--display)}
.cart-scene :focus-visible{outline:2px solid #6135bb;outline-offset:4px}
.collection-help{position:fixed;right:24px;bottom:max(20px,env(safe-area-inset-bottom));z-index:55;color:#211036;font-family:Arial,sans-serif}
.collection-help[hidden],.collection-help-panel[hidden]{display:none}
.collection-help-toggle{display:flex;align-items:center;gap:25px;min-height:44px;padding:0 16px;background:white;color:#211036;border:1px solid #211036;font:700 10px/1 Arial;letter-spacing:.03em;transition:background .2s,color .2s}
.collection-help-toggle:hover,.collection-help-toggle[aria-expanded=true]{background:#211036;color:white}
.collection-help-toggle:focus-visible,.collection-help-panel :focus-visible{outline:2px solid #6135bb;outline-offset:4px}
.collection-help-panel{position:absolute;bottom:56px;right:0;width:320px;background:white;border:1px solid #211036;padding:23px;box-shadow:0 8px 30px #00000012;transform-origin:bottom right}
.help-caption{display:flex;align-items:center;justify-content:space-between;font:11px var(--display)}
.help-caption button{font:26px Arial;width:32px;height:32px;color:inherit}
.collection-help-panel h2{font:800 64px/.95 var(--display);margin:24px 0 18px;letter-spacing:-.02em}
.collection-help-panel p{font:13px/1.5 Arial;margin:0 0 24px;max-width:25ch}
.collection-help-panel>a{display:flex;align-items:center;justify-content:space-between;min-height:46px;font:700 11px Arial;border-top:1px solid #21103633;color:inherit}
.collection-help-panel>a:hover{color:#6135bb}
.collection-help-panel small{display:block;font:10px/1.5 Arial;margin-top:18px;color:#655d6d}
@media(max-width:760px){.collection-help{right:16px;bottom:max(16px,env(safe-area-inset-bottom))}.collection-help-toggle{min-height:44px;padding:0 12px;gap:18px;font-size:9px}.collection-help-panel{width:min(320px,calc(100vw - 32px))}}
@media(prefers-reduced-motion:reduce){.collection-help *{transition:none!important}}
@media(max-width:760px){.collection-help-toggle{font-size:0}.collection-help-toggle:before{content:'HELP';font-size:9px}.collection-help-toggle>span{font-size:12px}}
.contact-scene{background:white;color:#211036;padding:48px 2.5vw 100px}
.contact-scene>header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:70px}
.contact-scene>header>p{font:14px var(--display);padding-top:10px}
.contact-scene h2{font:800 clamp(80px,12vw,180px)/.9 var(--display);letter-spacing:-.025em;margin:0}
.contact-composition{display:grid;grid-template-columns:38% 1fr;gap:12%}
.contact-composition figure{margin:0;align-self:start}
.contact-composition img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 35%}
.contact-composition figcaption{margin-top:12px;font:11px/1.4 Arial}
.contact-intro{font:15px/1.5 Arial;margin:0 0 54px}
.contact-directory>a{display:grid;grid-template-columns:1fr 28px;gap:18px;border-top:1px solid #21103655;padding:24px 0 30px;color:inherit}
.contact-directory small{font:14px var(--display);color:#6135bb;grid-column:1/-1}
.contact-directory>a>span{font:clamp(16px,1.6vw,24px)/1.2 Arial;overflow-wrap:anywhere}
.contact-directory>a>b{font:24px Arial;font-weight:400;transition:transform .25s}
.contact-directory>a:hover>b{transform:translate(3px,-3px)}
.contact-directory a:focus-visible{outline:2px solid #6135bb;outline-offset:5px}
.contact-hours{border-top:1px solid #21103655;padding:24px 0}
.contact-hours p{font:14px/1.7 Arial;margin-top:20px}
.contact-directory nav{display:flex;gap:30px;border-top:1px solid #21103655;padding:24px 0;font:12px Arial}
@media(max-width:760px){.contact-scene{padding:30px 16px 60px}.contact-scene>header{display:block;margin-bottom:32px}.contact-scene>header>p{margin:0 0 24px}.contact-scene h2{font-size:25vw}.contact-composition{grid-template-columns:1fr;gap:30px}.contact-composition figure{order:2}.contact-composition img{aspect-ratio:4/3;object-position:50% 30%}.contact-intro{margin-bottom:28px}.contact-directory>a{padding:20px 0;gap:12px}.contact-directory>a>span{font-size:17px}.contact-directory nav{gap:20px;font-size:10px}}
.care-scene{background:white;color:#211036;padding:48px 2.5vw 100px}
.care-scene>header{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:5vw;align-items:end;margin-bottom:80px}
.care-scene>header>p:first-child{align-self:start;font:14px var(--display)}
.care-scene h2{font:800 clamp(70px,8vw,125px)/.9 var(--display);margin:0}
.care-scene p{font:14px/1.7 Arial;max-width:48ch}
.care-materials{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4vw}
.care-materials figure{margin:0}.care-materials img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;object-position:50% 55%}
.care-materials figcaption{font:12px var(--display);margin-top:12px;color:#6135bb}
.care-materials h3{font:800 50px/1 var(--display);text-transform:uppercase;margin:30px 0 18px}
.care-fit{display:grid;grid-template-columns:1fr 1fr;gap:8vw;border-top:1px dashed #21103670;padding-top:45px;margin-top:90px}
.care-fit h3{font:800 58px/1 var(--display);text-transform:uppercase;max-width:12ch}
.care-fit a{display:inline-block;margin-top:28px;font:16px var(--display);color:#6135bb}
@media(max-width:760px){.care-scene{padding:30px 16px 70px}.care-scene>header{display:block;margin-bottom:40px}.care-scene>header>p:first-child{margin-bottom:30px}.care-scene h2{font-size:24vw;margin-bottom:28px}.care-materials{grid-template-columns:1fr;gap:50px}.care-materials img{aspect-ratio:4/3}.care-materials h3{margin:22px 0 14px}.care-fit{grid-template-columns:1fr;gap:26px;margin-top:60px;padding-top:30px}.care-fit h3{font-size:48px}}
dialog[data-scene=cart]{background:white;color:#211036}.cart-scene{padding:35px 2.5vw 80px;max-width:1440px;margin:auto}
.cart-scene>header{display:flex;align-items:center;justify-content:space-between;padding:0 0 40px}.cart-scene>header h2{font:26px var(--display);color:#6135bb}.cart-scene>header span{font:18px var(--display)}.cart-scene>header a{font:11px Arial}
.cart-layout{display:grid;grid-template-columns:1.6fr 1fr;gap:8vw}.cart-line{display:grid;grid-template-columns:130px 1fr auto;gap:26px;padding:24px 0;border-top:1px solid #21103644;font:12px Arial}.cart-photo img{display:block;width:100%;height:auto}.cart-line h3{font:700 13px/1.3 Arial;text-transform:uppercase;margin-bottom:20px}.cart-line p{font:12px/1.5 Arial;margin:8px 0}.cart-line del{color:#77658d;margin-right:6px}.cart-line-actions{display:flex;gap:30px;align-items:center;margin-top:25px}.cart-line-actions label{position:static;display:flex;align-items:center;gap:10px;font:11px Arial}.cart-line-actions input{width:50px;min-height:36px;background:white;border:1px solid #21103655;padding:4px;color:#211036}.cart-line-actions button{font:14px var(--display);text-decoration:underline;min-height:36px}.cart-summary{border-top:1px dashed #21103666;padding-top:24px;align-self:start}.cart-summary h3{font:22px var(--display);margin-bottom:35px}.cart-summary dl>div{display:flex;justify-content:space-between;font:13px Arial;padding:12px 0}.cart-summary .cart-total{border-top:1px solid #21103655;font-size:18px;margin-top:22px;padding:22px 0}.cart-checkout{display:block;text-align:center;color:white;background:#211036;padding:18px;font:22px var(--display);margin:10px 0 20px}.cart-checkout:hover{background:#6135bb}.cart-summary p{font:11px/1.5 Arial;max-width:40ch}.cart-information{display:block;font:12px Arial;margin-top:28px}.cart-update{font:12px/1.5 Arial;min-height:20px;margin-top:20px;color:#6135bb}.cart-empty{min-height:320px;display:flex;flex-direction:column;justify-content:space-between;padding:20px 0}.cart-empty p{font:12px Arial}.cart-empty h3{font:800 64px/.95 var(--display)}.cart-empty a{font:20px var(--display);color:#6135bb}.cart-recommendations{border-top:1px solid #21103644;margin-top:55px;padding-top:26px}.cart-recommendations h3{font:22px var(--display);color:#6135bb;margin-bottom:24px}.cart-recommendations>div{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.cart-recommendations img{width:100%;height:auto;display:block}.cart-recommendations span,.cart-recommendations small{display:block;font:700 12px/1.4 Arial;text-transform:uppercase;margin-top:7px}.cart-recommendations small{color:#6135bb;margin-top:0}
@media(max-width:760px){.cart-scene{padding:25px 16px 60px}.cart-scene>header{flex-wrap:wrap;gap:20px;padding-bottom:24px}.cart-scene>header a{width:100%;font-size:10px}.cart-layout{grid-template-columns:1fr;gap:35px}.cart-line{grid-template-columns:90px minmax(0,1fr);gap:16px}.cart-line>strong{grid-column:2}.cart-line h3{font-size:12px;margin-bottom:12px}.cart-line-actions{gap:16px;flex-wrap:wrap;margin-top:18px}.cart-line-actions label{gap:8px;font-size:10px}.cart-line-actions input{min-height:44px}.cart-line-actions button{min-height:44px}.cart-empty h3{font-size:52px}.cart-recommendations>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 12px}.cart-summary h3{margin-bottom:20px}}

/* Consent on phones: put the card in the page flow, above the content.
 * The approved card is bottom-anchored on desktop. On a phone the bottom of the
 * viewport is where ADD TO BAG, the cart summary and PLACE ORDER live. Rather
 * than move one occlusion to another, the card becomes the first block in the
 * page/dialog on small screens: it pushes the header and content down, so no
 * action or heading sits underneath it. The choices, the no-tracking-before-
 * consent behaviour and the single-tag contract do not change. */
@media (max-width: 760px) {
  .consent-card {
    position: relative;
    inset: auto;
    width: auto;
    max-width: none;
    margin: 12px 16px 0;
    max-height: none;
    overflow: visible;
    transform-origin: top center;
  }

  /* The home header is fixed so it can sit over the hero. While the consent
   * card is in the page flow above it, a fixed header would be painted under
   * the card. Put it back in flow for that state only: card, header, content.
   * The header keeps its type, blend and height, and returns to fixed as soon
   * as the card is dismissed. */
  body.udg-consent-open .site-header {
    position: static;
  }

  .consent-thread {
    display: none;
  }
}

.cart-remove-fallback {
  font: 14px var(--display);
  text-decoration: underline;
  min-height: 36px;
  display: inline-flex;
  align-items: center;
}

/* Product gallery controls on phones.
 * The floating chat button is fixed to the bottom-right corner and the product
 * gallery put its zoom control and gallery bar underneath it. Move the zoom
 * control to the empty top-left of the photograph, keep it there in the
 * state, and stop the gallery bar before the chat button. The photograph,
 * thumbnails, counter and arrow controls all stay reachable. */
@media (max-width: 760px) {
  dialog[data-scene="product"] .zoom-button {
    top: 14px;
    right: auto;
    left: 14px;
    bottom: auto;
  }

  dialog[data-scene="product"] .gallery-main.is-zoomed .zoom-button {
    position: fixed;
    top: 82px;
    right: auto;
    left: 14px;
    bottom: auto;
    float: none;
    margin-top: 0;
    z-index: 6;
  }

  dialog[data-scene="product"] .gallery-bar {
    right: 82px;
  }
}


/* Astra ownership pass: suppress only the retired visual control, not its plugin. */
#udg-wa-fab{display:none!important}
/* The homepage retains the approved bottom card without moving its composition. */
@media(max-width:760px){
 body:has(.hero) .consent-card{position:fixed;inset:auto 16px 20px;width:calc(100% - 32px);margin:0;max-height:calc(100dvh - 40px);overflow:auto;transform-origin:bottom center}
 body.udg-consent-open:has(.hero) .site-header{position:fixed}
}
/* Opaque service chrome keeps scrolling copy behind the header. */
dialog[data-scene=info] .overlay-header{background:var(--ug-deep,#24113b)}
dialog[data-scene=info]:has(.contact-scene,.care-scene) .overlay-header{background:#fff;color:#211036}
dialog[data-scene=info]:has(.contact-scene,.care-scene) .overlay-brand{filter:brightness(0)}
/* Remove the gallery compromises made to accommodate the retired floating button. */
@media(max-width:760px){
 dialog[data-scene=product] .gallery-bar{right:16px}
 dialog[data-scene=product] .zoom-button{top:auto;left:auto;right:14px;bottom:14px}
 dialog[data-scene=product] .gallery-main.is-zoomed .zoom-button{position:sticky;top:auto;left:auto;right:14px;bottom:14px;float:right;margin-top:-58px}
}

/* Restore authored cutout width; WordPress global img max-width clips its composition. */
body.udgoon-home .brand-story > img { max-width: none; }
