@layer tokens, base, components, responsive, overrides, utilities;
@layer tokens {
/* source: official-theme.css */
/**
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Identité visuelle officielle UFoundMe! : jetons de couleur, typographie et surfaces du thème de production.
 * @purpose-en Official UFoundMe! visual identity: colour, typography and surface tokens of the production theme.
 * @audit-scope asset
 * @inputs-fr Aucune entrée ; fichier statique, première feuille de la couche tokens du bundle marketing.
 * @inputs-en No input; static file, loaded in the tokens layer of the marketing bundle.
 * @effects-fr Définit les variables --ufm-* et --theme-* consommées par les composants ; aucune sortie dynamique.
 * @effects-en Defines the --ufm-* and --theme-* variables consumed by components; no dynamic output.
 *
 * @file Presentation layer for official theme.
 *
 * Mobile-first responsive styling only; preserve touch targets, fluid containment and the seven-breakpoint contract.
 */

/**
 * UFoundMe! official visual identity.
 * This is the single production theme. Components consume these tokens only.
 */
:root{
  --ufm-brand-primary:#4b3575;
  --ufm-brand-secondary:#251a3d;
  --ufm-brand-coral:#ff704d;
  --ufm-brand-apricot:#ffb36b;
  --ufm-ink:#171327;
  --ufm-icon-color:#333333;
  --ufm-cream:#faf8fc;
  --ufm-primary-soft:#eee9f6;
  --ufm-secondary-soft:#e2daf0;
  --ufm-brand-gradient:linear-gradient(135deg,#5b4388,#251a3d);
  --theme-a:#4b3575;
  --theme-b:#251a3d;
  --coral:#4b3575;
  --orange:#4b3575;
  --brand-primary:#4b3575;
  --earth-action:#251a3d;
  --ufm-weight-regular:400;
  --ufm-weight-medium:500;
  --ufm-weight-semibold:590;
  --ufm-weight-heading:620;
  --ufm-shadow-raised:0 6px 18px rgba(37,26,61,.07);
  --ufm-shadow-overlay:0 16px 42px rgba(37,26,61,.16);
}

/* One neutral icon contract across public, account and Studio surfaces.
   Brand marks, flags, photos and illustrations are intentionally excluded. */
:where(button,a,summary,[role="button"]) > :where(svg,i),
:where(.ufm-icon,.icon-glyph){
  color:var(--ufm-icon-color);
}

:where(button,a,summary,[role="button"]) > svg{
  fill:currentColor;
}

/* Professional editorial calibration — v1.32.
   UFoundMe! stays playful through colour, illustration and rounded geometry;
   hierarchy now comes from rhythm and contrast rather than heavy type/shadows. */
body{font-weight:var(--ufm-weight-regular)}
body :is(h1,h2,h3,h4){font-weight:var(--ufm-weight-heading)}
body :is(p,li,dd,dt,small,label,input,select,textarea){font-weight:var(--ufm-weight-regular)}
body strong{font-weight:var(--ufm-weight-semibold)}
body :is(button,.primary,.secondary,.outline,.nav-cta){font-weight:var(--ufm-weight-semibold)}

/* Marketing hierarchy: expressive, but no longer poster-sized. */
.hero :is(h1,.hero-promise){font-size:clamp(2.6rem,3.9vw,3.85rem);font-weight:600;line-height:1;letter-spacing:-.048em}
.principle-copy h1,.chat-principle-copy h1,.view-heading h1{font-size:clamp(2.35rem,3.4vw,3.4rem);font-weight:600;line-height:1.03;letter-spacing:-.044em}
.help-head h1{font-size:clamp(2.1rem,3vw,3rem);font-weight:600;letter-spacing:-.04em}
.kicker,.eyebrow,.view .kicker{font-weight:620;letter-spacing:.11em}
.hero-copy>p:not(.kicker),.principle-copy>p:not(.kicker),.chat-principle-copy>p:not(.kicker){font-weight:400}
.topbar>nav a,.account-actions>a,.account-actions>button{font-weight:560}

/* Quiet surfaces: borders and spacing carry structure; shadows are exceptional. */
:is(.hero-price,.principle-steps li,.chat-benefits article,.help-questions,.help-answer,.first-year-offer,
  .product-card,.summary,.pet-card,.empty,.account-card,.pet-form,.studio-shell,.studio-editor,
  .owner-office>section[data-panel],.auth-card,.story-points>span,.legal-page article,
  .legal-page aside>nav,.meo-tracker-promo,.security-card,.portal-shortcut){box-shadow:none}
:is(.primary,.secondary,.outline,.nav-cta,.auth-primary,.auth-secondary,.auth-provider,
  .topbar>nav a,.layout-filters button,.studio-themes>button,.tabs button){box-shadow:none}
:is(.photo-dialog,.qr-dialog,.cart,.ufm-bo-cart,.profile-menu>div,.mobile-menu-sheet)[open],
:is(.photo-dialog,.qr-dialog,.profile-menu>div,.mobile-menu-sheet){box-shadow:var(--ufm-shadow-overlay)}

/* Cards and controls use medium emphasis instead of visual shouting. */
.product-copy h3,.section-heading h2,.section-title h2,.owner-pet-card h3{font-weight:610}
.product-copy strong,.hero-price strong,.first-year-offer strong{font-weight:610}
.product-copy button,.cart-panel form button,.cart-trigger,.continue{font-weight:600}
.brand-chip,.service-pill,.status,.studio-card>span{font-weight:620}
.principle-steps strong,.chat-benefits strong,.help-list button,.legal-page aside>nav a{font-weight:580}

/* Authentication and Studio share the same calmer product language. */
.auth-page-ufoundme .auth-story h1,
.auth-page-ufoundme:has(.registration-shell) .registration-story h1{font-size:clamp(2.3rem,3.65vw,3.2rem);font-weight:600;line-height:1.05;letter-spacing:-.044em}
.auth-page-ufoundme .auth-card{box-shadow:none}
.auth-page-ufoundme .auth-login-tab{font-weight:560}
.auth-page-ufoundme .auth-login-tab.is-active{box-shadow:none}
.auth-page-ufoundme .auth-primary{box-shadow:none;font-weight:600}
.auth-page-ufoundme .story-points b,.auth-page-ufoundme .register-points b{font-weight:580}
.welcome h1,.studio-page .welcome h1{font-weight:610;letter-spacing:-.038em}
main :is(h1,h2,h3){font-weight:610;letter-spacing:-.03em}main h1{font-size:clamp(2rem,4vw,3.5rem)}main h2{font-size:clamp(1.35rem,2.4vw,2rem)}main h3{font-size:clamp(1.05rem,1.7vw,1.35rem)}
.tabs button,.studio-steps button,.studio-editor label,.pet-form label{font-weight:560}
.studio-steps button b,.studio-themes>button>span strong{font-weight:620}
.studio-phone{box-shadow:var(--ufm-shadow-raised)}

/* Legal content is editorial reading, not promotional display. */
.legal-page h1{font-size:clamp(2.1rem,2.9vw,3rem);font-weight:600;line-height:1.05;letter-spacing:-.04em}
.legal-page article h2{font-size:clamp(2rem,3vw,2.9rem);font-weight:600;line-height:1.07;letter-spacing:-.04em}
.legal-page article h3{font-weight:620}
.legal-page aside>p,.legal-page article>header p{font-weight:620}
.legal-page article section p{font-weight:400;line-height:1.72}
.legal-back,.contact{font-weight:600}

/* Hover uses colour and a crisp border, never a floating-card effect. */
:is(.primary,.nav-cta,.auth-primary,.product-copy button,.cart-panel form button,.contact):hover,
:is(.primary,.nav-cta,.auth-primary,.product-copy button,.cart-panel form button,.contact):focus-visible{transform:none;box-shadow:none}
:is(.secondary,.outline,.auth-secondary,.auth-provider):hover,
:is(.secondary,.outline,.auth-secondary,.auth-provider):focus-visible{transform:none;box-shadow:none;border-color:var(--ufm-brand-primary)}

@media(max-width:1279px){
  .hero :is(h1,.hero-promise){font-size:clamp(2.45rem,5.1vw,3.8rem)}
  .principle-copy h1,.chat-principle-copy h1,.view-heading h1{font-size:clamp(2.25rem,4.7vw,3.35rem)}
}
@media(max-width:767px){
  .hero :is(h1,.hero-promise){font-size:clamp(2.15rem,8.8vw,3rem);line-height:1.02}
  .principle-copy h1,.chat-principle-copy h1,.view-heading h1{font-size:clamp(2rem,8.2vw,2.8rem);line-height:1.04}
  .auth-page-ufoundme .auth-story h1,.auth-page-ufoundme:has(.registration-shell) .registration-story h1{font-size:clamp(2rem,8vw,2.7rem)}
}
@media(max-width:599px){
  .hero :is(h1,.hero-promise){font-size:clamp(1.95rem,9.7vw,2.55rem)}
  .hero .actions{width:100%;max-width:20rem;grid-template-columns:1fr}
  .hero .actions>*{width:100%;min-height:44px;white-space:normal;text-align:center}
  .hero .actions .primary{padding-inline:1rem}
  .legal-page h1{font-size:clamp(1.9rem,10vw,2.45rem)}
  .legal-page article h2{font-size:clamp(1.85rem,9vw,2.35rem)}
}

/* Font files are declared once by php-inter.css. */
html body{font-family:"Inter",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
button,input,select,textarea{font-family:inherit}

.hero{background:linear-gradient(135deg,#faf8fc,#fff 56%,#eee9f6)}
.hero h1 em{color:#fff;background:var(--ufm-brand-primary);padding:0 .08em;border-radius:.12em;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.kicker i,.steps button.active span,.cart-trigger b,.mobile-cart-trigger b{background:var(--ufm-brand-primary)}
.aura-one{background:#d9cdee}.aura-two{background:#b7a5d5}
.cart-product-icon,.layout-floating-menu>i,.pet-avatar,.account-card>span{background:var(--ufm-brand-gradient)}
.proof-privacy,.proof-eu,.scenario{background:var(--ufm-primary-soft)}
.proof-privacy:before,.proof-eu:before,.scenario h2 span,.reasons li:before{color:var(--ufm-brand-primary)}
.chat-principle,.help-view{background:linear-gradient(145deg,#faf8fc,#fff 52%,#eee9f6)}
.chat-suggestions button,.chat-demo-phone .primary,.scan-content>.primary,.chat-form button,.tabs b,.owner-chat form button{border-color:var(--ufm-brand-primary);color:#fff;background:var(--ufm-brand-primary)}
.chat-suggestions button:hover,.chat-suggestions button:focus-visible,.chat-suggestions button[aria-pressed="true"]{border-color:var(--ufm-brand-secondary);color:#fff;background:var(--ufm-brand-secondary)}
.chat-suggestions button:disabled{border-color:#d7d0df;color:#756e7d;background:#eeeaf2;cursor:not-allowed}
.bubble.owner,.messages .sent{background:var(--ufm-brand-secondary)}
.layout-filters button.active,.layout-floating-menu>b{background:var(--ufm-ink)}

.auth-page-ufoundme{
  --ufm-coral:var(--ufm-brand-coral);
  --ufm-pink:var(--ufm-brand-primary);
  --brand-primary:var(--ufm-brand-primary);
  --brand-primary-rgb:75 53 117;
  --earth-action:var(--ufm-brand-secondary);
  --forest:var(--ufm-brand-secondary);
  --ink:var(--ufm-ink);
  --paper:var(--ufm-cream);
  --line:#ded7e9;
  background:radial-gradient(circle at 8% 22%,#ffb36b2e 0 10%,transparent 30%),radial-gradient(circle at 91% 20%,#ff704d1c 0 9%,transparent 29%),linear-gradient(140deg,#faf8fc,#fff 50%,#eee9f6)
}
.auth-page-ufoundme::before{background:linear-gradient(120deg,transparent 32%,#4b357508 32% 61%,#ff704d08 61%)}
.auth-page-ufoundme .auth-nav{border-bottom:1px solid #251a3d12;background:#fffdfbd9;backdrop-filter:blur(18px)}
.auth-page-ufoundme .auth-shell{max-width:74rem;grid-template-columns:minmax(23rem,1.04fr) minmax(25rem,.96fr);gap:clamp(2.5rem,6vw,5.5rem)}
.auth-page-ufoundme .kicker,.auth-page-ufoundme .step-label{color:var(--ufm-brand-coral)}
.auth-page-ufoundme .auth-story h1::first-line{color:var(--ufm-brand-primary)}
.auth-page-ufoundme .story-points>span{border-color:#4b35751a;background:#ffffffd9;box-shadow:0 .6rem 1.8rem #251a3d0a}
.auth-page-ufoundme .auth-card{border:1px solid #4b35752b;background:#fffefced;box-shadow:0 2rem 5rem #251a3d1d}
.auth-page-ufoundme .auth-card::before{background:linear-gradient(90deg,var(--ufm-brand-coral),var(--ufm-brand-apricot),var(--ufm-brand-primary))}
.auth-page-ufoundme .auth-card h2{margin-top:0;color:var(--ufm-brand-secondary)}
.auth-page-ufoundme .auth-login-tabs{border-color:#4b357526;background:#f4f0f7}
.auth-page-ufoundme .auth-login-tab{color:#675e70}
.auth-page-ufoundme .auth-login-tab.is-active{color:var(--ufm-brand-secondary);border-color:transparent;background:linear-gradient(135deg,var(--ufm-brand-coral),var(--ufm-brand-apricot));box-shadow:0 .55rem 1.2rem #ff704d24}
.auth-page-ufoundme .auth-login-tab.is-active img{filter:none}
.auth-page-ufoundme .auth-login-tab.is-active .auth-tab-google,.auth-page-ufoundme .auth-login-tab.is-active .auth-tab-password{color:var(--ufm-brand-secondary)}
.auth-page-ufoundme .auth-login-panel{border-color:#4b357514;background:#fff}
/* Authentication panels size to their active content. The shared MEO base
   reserves a fixed provider area; UFoundMe! instead keeps the sign-in card
   compact so its primary action remains visually connected to the field. */
.auth-page-ufoundme .auth-login-panel{min-height:0}
.auth-page-ufoundme .auth-primary{color:#fff;background:var(--ufm-brand-secondary);box-shadow:0 .75rem 1.8rem #251a3d24}
.auth-page-ufoundme .auth-primary:hover{background:var(--ufm-brand-primary)}
.auth-page-ufoundme .auth-email-primary .auth-submit-with-help:has(>.auth-primary:only-child){grid-template-columns:minmax(0,1fr)}
.auth-page-ufoundme .auth-secondary,.auth-page-ufoundme .auth-provider{border-color:#4b357530;background:#fff}
.auth-page-ufoundme .auth-provider:hover{border-color:var(--ufm-brand-coral)}
.auth-page-ufoundme .auth-card input:focus{border-color:var(--ufm-brand-primary);box-shadow:0 0 0 4px #4b35752e}
.auth-page-ufoundme .ufm-registration-consent,.auth-page-ufoundme .auth-trust-note{background:var(--ufm-primary-soft)}
.auth-page-ufoundme .ufm-registration-consent a{background:var(--ufm-brand-primary)}
.auth-page-ufoundme .auth-switch a{color:var(--ufm-brand-secondary)}
.auth-page-ufoundme .ufm-auth-scene{background:linear-gradient(145deg,var(--ufm-brand-apricot),var(--ufm-brand-coral) 48%,var(--ufm-brand-primary))}
.auth-page-ufoundme .ufm-auth-scene::before{display:none;content:none}
.auth-page-ufoundme .ufm-auth-scene{height:18rem}
.auth-page-ufoundme .ufm-auth-phone{transition:transform .2s ease}
.auth-page-ufoundme .ufm-auth-phone-dog{left:39%;z-index:2;transform:translateX(-50%) rotate(-6deg)}
.auth-page-ufoundme .ufm-auth-phone-cat{left:66%;bottom:-2.5rem;z-index:1;background:#faf8fc;transform:translateX(-50%) rotate(7deg) scale(.91)}
.auth-page-ufoundme .ufm-auth-phone-cat>img{border-color:#e2daf0;object-position:center 24%}
.auth-page-ufoundme .ufm-auth-phone-cat b{background:var(--ufm-brand-primary)}
.auth-page-ufoundme .ufm-auth-badge{right:auto;left:9%;bottom:1.35rem;z-index:3;transform:rotate(-11deg)}
/* UFoundMe! authentication has its own restrained navigation. The shared MEO
   market/theme dock and its scroll control must never appear on this surface. */
.auth-page-ufoundme .auth-preferences-dock,.auth-page-ufoundme .auth-scroll-top{display:none}
html:has(.auth-page-ufoundme) .auth-shell{padding-bottom:clamp(2rem,5vw,4.5rem)}

@media(max-width:55.99rem){.auth-page-ufoundme .auth-shell{grid-template-columns:1fr}.auth-page-ufoundme .ufm-auth-phone-dog{left:40%}.auth-page-ufoundme .ufm-auth-phone-cat{left:65%}}
@media(max-width:35rem){.auth-page-ufoundme .ufm-auth-scene{height:11rem}.auth-page-ufoundme .ufm-auth-phone-dog{left:39%}.auth-page-ufoundme .ufm-auth-phone-cat{left:64%;bottom:-2.5rem}.auth-page-ufoundme .ufm-auth-badge{left:5%;bottom:.7rem}}

/* Register responsive contract — seven deliberate bands, fluid before fixed.
   Story and form remain separate chunks; the form always owns the available width. */
.auth-page-ufoundme:has(.registration-shell){overflow-x:hidden}
.auth-page-ufoundme:has(.registration-shell) .auth-nav{width:100%;min-width:0}
.auth-page-ufoundme:has(.registration-shell) .auth-brand-navigation{min-width:0}
.auth-page-ufoundme:has(.registration-shell) .registration-shell{width:min(74rem,calc(100% - 2.5rem));max-width:none;grid-template-columns:minmax(0,1fr) minmax(25rem,29rem);gap:clamp(2rem,5vw,5rem);align-items:start;margin-inline:auto;padding:clamp(1.5rem,4vh,3.5rem) 0 clamp(2.5rem,6vh,5rem)}
.auth-page-ufoundme:has(.registration-shell) :is(.registration-story,.registration-card,.registration-form,.registration-form>*,.story-points>span){min-width:0;max-width:100%}
.auth-page-ufoundme:has(.registration-shell) .registration-story{padding:clamp(.5rem,2vw,1.25rem) 0 0}
.auth-page-ufoundme:has(.registration-shell) .registration-story h1{max-width:12ch;font-size:clamp(2.65rem,4.4vw,4rem);line-height:1;overflow-wrap:anywhere}
.auth-page-ufoundme:has(.registration-shell) .registration-story>p{max-width:38rem}
.auth-page-ufoundme:has(.registration-shell) .register-points{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}
.auth-page-ufoundme:has(.registration-shell) .register-points>span{min-height:4.3rem;padding:.7rem;border:1px solid #4b35751a;border-radius:1rem;align-items:center}
.auth-page-ufoundme:has(.registration-shell) .register-points b{overflow-wrap:anywhere;font-size:.72rem;line-height:1.35}
.auth-page-ufoundme:has(.registration-shell) .ufm-auth-scene{width:100%;height:14rem;margin-top:1.1rem;overflow:hidden;border-radius:1.5rem}
.auth-page-ufoundme:has(.registration-shell) .registration-card{width:100%;padding:clamp(1.5rem,3vw,2.25rem);overflow:hidden}
.auth-page-ufoundme:has(.registration-shell) .ufm-registration-form{grid-template-columns:repeat(2,minmax(0,1fr))}
.auth-page-ufoundme:has(.registration-shell) .ufm-registration-form>*{grid-column:auto}
.auth-page-ufoundme:has(.registration-shell) .ufm-registration-form>:is(.ufm-registration-consent,.auth-trust-note,.auth-primary){grid-column:1/-1}
.auth-page-ufoundme:has(.registration-shell) .ufm-registration-form :is(input,select,textarea,button){max-width:100%}
.auth-page-ufoundme:has(.registration-shell) :is(.ufm-registration-consent,.auth-trust-note,.auth-switch){overflow-wrap:anywhere}

@media(min-width:1600px){
  .auth-page-ufoundme:has(.registration-shell) .registration-shell{width:min(78rem,calc(100% - 6rem));grid-template-columns:minmax(0,1fr) minmax(27rem,30rem);gap:5.5rem}
}
@media(min-width:1440px) and (max-width:1599px){
  .auth-page-ufoundme:has(.registration-shell) .registration-shell{width:min(74rem,calc(100% - 5rem));grid-template-columns:minmax(0,1fr) minmax(26rem,29rem);gap:4.5rem}
}
@media(min-width:1280px) and (max-width:1439px){
  .auth-page-ufoundme:has(.registration-shell) .registration-shell{width:min(70rem,calc(100% - 4rem));grid-template-columns:minmax(0,1fr) minmax(25rem,28rem);gap:3.25rem}
  .auth-page-ufoundme:has(.registration-shell) .registration-story h1{font-size:clamp(2.75rem,4.1vw,3.6rem)}
}
@media(min-width:1024px) and (max-width:1279px){
  .auth-page-ufoundme:has(.registration-shell) .registration-shell{width:min(62rem,calc(100% - 3rem));grid-template-columns:minmax(0,1fr) minmax(24rem,26rem);gap:2rem}
  .auth-page-ufoundme:has(.registration-shell) .registration-story h1{font-size:clamp(2.45rem,4.4vw,3.15rem)}
  .auth-page-ufoundme:has(.registration-shell) .register-points{grid-template-columns:1fr}
  .auth-page-ufoundme:has(.registration-shell) .register-points>span{min-height:0}
  .auth-page-ufoundme:has(.registration-shell) .ufm-auth-scene{height:12rem}
  .auth-page-ufoundme:has(.registration-shell) .ufm-registration-form{grid-template-columns:1fr}
  .auth-page-ufoundme:has(.registration-shell) .ufm-registration-form>*{grid-column:1}
}
@media(min-width:768px) and (max-width:1023px){
  .auth-page-ufoundme:has(.registration-shell) .registration-shell{width:min(44rem,calc(100% - 2.5rem));grid-template-columns:1fr;gap:1.5rem;padding-top:2rem}
  .auth-page-ufoundme:has(.registration-shell) .registration-story{text-align:center}
  .auth-page-ufoundme:has(.registration-shell) .registration-story h1,.auth-page-ufoundme:has(.registration-shell) .registration-story>p{margin-inline:auto}
  .auth-page-ufoundme:has(.registration-shell) .register-points{grid-template-columns:repeat(3,minmax(0,1fr))}
  .auth-page-ufoundme:has(.registration-shell) .ufm-auth-scene{height:12rem;margin-inline:auto}
  .auth-page-ufoundme:has(.registration-shell) .registration-card{margin:0}
}
@media(min-width:480px) and (max-width:767px){
  .auth-page-ufoundme:has(.registration-shell) .auth-nav{padding-inline:1rem}
  .auth-page-ufoundme:has(.registration-shell) .registration-shell{width:min(38rem,calc(100% - 2rem));grid-template-columns:1fr;gap:1rem;padding:1.25rem 0 2.5rem}
  .auth-page-ufoundme:has(.registration-shell) .registration-story{padding-inline:.25rem}
  .auth-page-ufoundme:has(.registration-shell) .registration-story h1{font-size:clamp(2.25rem,8vw,2.85rem)}
  .auth-page-ufoundme:has(.registration-shell) .register-points{grid-template-columns:1fr}
  .auth-page-ufoundme:has(.registration-shell) .register-points>span{min-height:0}
  .auth-page-ufoundme:has(.registration-shell) .ufm-auth-scene{display:none}
  .auth-page-ufoundme:has(.registration-shell) .registration-card{padding:1.5rem}
  .auth-page-ufoundme:has(.registration-shell) .ufm-registration-form{grid-template-columns:1fr}
  .auth-page-ufoundme:has(.registration-shell) .ufm-registration-form>*{grid-column:1}
}
@media(max-width:479px){
  .auth-page-ufoundme:has(.registration-shell) .auth-nav{height:auto;min-height:4rem;padding:.6rem .75rem;gap:.5rem}
  .auth-page-ufoundme:has(.registration-shell) .auth-brand-navigation{gap:.45rem}
  .auth-page-ufoundme:has(.registration-shell) .auth-logo.auth-logo-ufoundme{width:7.25rem;flex:0 0 auto}
  .auth-page-ufoundme:has(.registration-shell) .auth-back-to-site{min-width:0;padding:.45rem;font-size:.62rem;white-space:normal}
  .auth-page-ufoundme:has(.registration-shell) .auth-nav-help{width:2.5rem;min-width:2.5rem;padding:0}
  .auth-page-ufoundme:has(.registration-shell) .auth-nav-help span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .auth-page-ufoundme:has(.registration-shell) .registration-shell{width:calc(100% - 1.25rem);grid-template-columns:1fr;gap:.75rem;padding:1rem 0 2rem}
  .auth-page-ufoundme:has(.registration-shell) .registration-story{padding:.25rem}
  .auth-page-ufoundme:has(.registration-shell) .registration-story h1{font-size:clamp(2rem,11vw,2.45rem)}
  .auth-page-ufoundme:has(.registration-shell) .registration-story>p{font-size:.82rem;line-height:1.5}
  .auth-page-ufoundme:has(.registration-shell) .register-points,.auth-page-ufoundme:has(.registration-shell) .ufm-auth-scene{display:none}
  .auth-page-ufoundme:has(.registration-shell) .registration-card{padding:1.25rem;border-radius:1.25rem}
  .auth-page-ufoundme:has(.registration-shell) .ufm-registration-form{grid-template-columns:1fr}
  .auth-page-ufoundme:has(.registration-shell) .ufm-registration-form>*{grid-column:1}
  .auth-page-ufoundme:has(.registration-shell) .ufm-registration-consent{align-items:flex-start}
}

body:has(.summary),body:has(main>aside){background:var(--ufm-cream)}
.summary .kicker,main>aside>p,article>header>p{color:var(--ufm-brand-primary)}
.summary .secure{background:var(--ufm-primary-soft)}
.summary .actions .primary,.contact,.partner-head~.hero aside,.paw{background:var(--ufm-brand-gradient)}
.chat-page .mine,.chat-panel form button{background:var(--ufm-brand-primary)}
.chat-avatar{background:var(--ufm-primary-soft)}

@media(forced-colors:active){*{--ufm-brand-primary:CanvasText;--ufm-brand-secondary:Highlight}}

/* Authentication — official UFoundMe! identity: deep purple, never MEO teal
   and no decorative orange. A field owns one border in every interaction. */
.auth-page-ufoundme{background:radial-gradient(circle at 12% 18%,#8f76c21f,transparent 28%),radial-gradient(circle at 86% 82%,#d9ceec55,transparent 32%),linear-gradient(135deg,#fbf9fd,#f2eef8)}
.auth-page-ufoundme::before{background:linear-gradient(120deg,transparent 34%,#4b357508 34% 63%,#251a3d08 63%)}
.auth-page-ufoundme .kicker,.auth-page-ufoundme .step-label{color:var(--ufm-brand-primary)}
.auth-page-ufoundme .auth-card::before{display:none}
.auth-page-ufoundme .auth-card :is(input,select,textarea){border:1px solid #cbc2d6;outline:0;box-shadow:none;background:#fff}
.auth-page-ufoundme .auth-card :is(input,select,textarea):is(:focus,:focus-visible){border-color:#60439a;outline:0;box-shadow:none;background:#fbf9ff}
.auth-page-ufoundme .auth-login-tab.is-active{color:#fff;border-color:#4b3575;background:#4b3575;box-shadow:0 .5rem 1.15rem #251a3d2b}
.auth-page-ufoundme .auth-login-tab.is-active img{filter:brightness(0) invert(1)}
.auth-page-ufoundme .auth-login-tab.is-active :is(.auth-tab-google,.auth-tab-password){color:#fff}
.auth-page-ufoundme .auth-login-tab:not(.is-active):hover{color:#251a3d;background:#e8e0f1}
.auth-page-ufoundme .auth-primary{background:#251a3d;box-shadow:0 .7rem 1.6rem #251a3d25}
.auth-page-ufoundme .auth-primary:hover,
.auth-page-ufoundme .auth-primary:focus-visible{
  color:#fff;
  background:#60439a;
  box-shadow:0 .9rem 2rem #4b357538;
  transform:translateY(-2px)
}
.auth-page-ufoundme .auth-primary:active{
  color:#fff;
  background:#4b3575;
  box-shadow:0 .45rem 1.1rem #4b35752f;
  transform:translateY(0)
}
.auth-page-ufoundme :is(.auth-secondary,.auth-provider){border-color:#cfc6d9;color:#251a3d;background:#fff}
.auth-page-ufoundme :is(.auth-secondary,.auth-provider):hover{border-color:#60439a;background:#eee8f6;box-shadow:0 .55rem 1.15rem #251a3d16;transform:translateY(-1px)}
.auth-page-ufoundme :is(.auth-switch a,label a):hover{color:#60439a;text-decoration:underline;text-underline-offset:.2em}
.auth-page-ufoundme .ufm-auth-scene{background:linear-gradient(145deg,#b8a5d8,#60439a 52%,#251a3d)}

/* Operational shipping selector: inherits the official brand surface. */
.shipping-picker{margin:18px 0;padding:16px;border:1px solid #5135802b;border-radius:16px;background:#f8f5fc}
.shipping-picker>label{display:block;margin-bottom:9px;color:#513580;font-size:.72rem;font-weight:800}
.shipping-picker>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.shipping-picker select,.shipping-picker button{min-height:46px;border:1px solid #51358038;border-radius:12px;font:inherit}
.shipping-picker select{width:100%;padding:0 12px;background:#fff;color:#171327}
.shipping-picker button{padding:0 18px;background:#513580;color:#fff;font-size:.72rem;font-weight:850;cursor:pointer}
.shipping-picker button:hover{background:#21172f}
.summary dl .grand-total{margin-top:14px;padding-top:13px;border-top:1px solid #17132718;font-size:1.05rem;font-weight:900}
@media(max-width:479px){.shipping-picker>div{grid-template-columns:1fr}.shipping-picker button{width:100%}}
/* Form copy stays calm and readable; hierarchy belongs to headings/actions. */
:where(form label,form legend,form input,form select,form textarea,form option,form output){font-weight:400}:where(form input,form textarea)::placeholder{font-weight:400}

/* Login confirmation — one calm decision surface, without decorative noise. */
.auth-page-ufoundme .auth-shell:not(.registration-shell){
  width:min(72rem,calc(100% - 3rem));
  min-height:clamp(38rem,calc(100svh - 9rem),48rem);
  margin-inline:auto;
  padding:clamp(2rem,5vh,4.5rem) 0;
  align-items:center
}
.auth-page-ufoundme .auth-story h1{max-width:11ch;font-size:clamp(2.6rem,4.4vw,4.25rem);line-height:1.02;letter-spacing:-.045em}
.auth-page-ufoundme .auth-story>p{max-width:36rem;color:#625b69;font-size:1rem;line-height:1.65}
.auth-page-ufoundme .story-points{gap:.65rem;align-items:stretch}
.auth-page-ufoundme .story-points>span{
  min-height:3.9rem;height:100%;padding:.8rem 1rem;
  display:flex;align-items:flex-start;justify-content:flex-start;
  align-content:flex-start;align-self:stretch;
  border-radius:1rem;text-align:left;box-shadow:none
}
/* Registration benefits: the pictogram is a real reading anchor, not a faint
 * decoration. One shared rule covers every locale and existing breakpoint. */
.auth-page-ufoundme:has(.registration-shell) .register-points>span{
  gap:.75rem;border-color:#4b357536;background:#fff
}
.auth-page-ufoundme:has(.registration-shell) .register-points .story-point-icon{
  width:42px;height:42px;flex:0 0 42px;border-radius:12px;
  color:#3b2864;background:#eee9f6
}
.auth-page-ufoundme:has(.registration-shell) .register-points .story-point-icon svg{
  width:24px;height:24px;stroke-width:2.25
}
.auth-page-ufoundme .auth-card{width:100%;max-width:31rem;margin-inline:auto;padding:clamp(1.7rem,3vw,2.5rem);border-color:#d9d2e2;background:#fff;box-shadow:0 1rem 2.5rem #251a3d12}
.auth-page-ufoundme .auth-card>h2{font-size:clamp(1.45rem,2vw,1.85rem);line-height:1.15;letter-spacing:-.025em;color:#251a3d}
.auth-page-ufoundme .auth-card>h2+p{margin-top:.45rem;color:#68616f;line-height:1.55}
.auth-page-ufoundme .auth-alert.success{border:1px solid #6f56a538;border-left:3px solid #60439a;background:#f2eef8;color:#251a3d}
.auth-page-ufoundme .auth-alert{position:relative;margin-block:1rem;padding:var(--ufm-auth-alert-padding,1rem 1rem 1rem 2.85rem);border:1px solid transparent;border-left-width:3px;border-radius:.9rem;color:#251a3d;font-size:.9rem;line-height:1.5}
.auth-page-ufoundme .auth-alert::before{width:1.35rem;height:1.35rem;position:absolute;top:1rem;left:.9rem;display:grid;place-items:center;border-radius:50%;color:#fff;font-size:.76rem;font-weight:850;content:'i'}
.auth-page-ufoundme .auth-alert.success{border-color:#6f56a538;border-left-color:#60439a;background:#f2eef8}.auth-page-ufoundme .auth-alert.success::before{background:#60439a;content:'✓'}
.auth-page-ufoundme .auth-alert.warning{border-color:#d9952738;border-left-color:#bf7612;background:#fff7e8;color:#5b3b10}.auth-page-ufoundme .auth-alert.warning::before{background:#bf7612;content:'!'}
.auth-page-ufoundme .auth-alert.error{border-color:#c8475238;border-left-color:#b6323e;background:#fff0f1;color:#6b2028}.auth-page-ufoundme .auth-alert.error::before{background:#b6323e;content:'×'}
.auth-page-ufoundme .auth-magic-sent{width:min(50rem,calc(100% - 2rem));min-height:calc(100svh - 74px);grid-template-columns:1fr;align-content:center;padding-block:2rem}
.auth-page-ufoundme .auth-magic-sent .auth-story{display:none}
.auth-page-ufoundme .auth-magic-sent .auth-card{max-width:48rem;position:relative;overflow:hidden;padding:clamp(1.5rem,4vw,2.75rem)}
.auth-page-ufoundme .ufm-magic-sent-mark{display:grid;place-items:center;width:3rem;height:3rem;margin:0 0 1.25rem;border-radius:50%;color:#fff;background:#4b3575;font-size:1.25rem;line-height:1}
.auth-page-ufoundme .auth-magic-sent .auth-alert.success{--ufm-auth-alert-padding:1rem 1.1rem;margin-top:1.4rem;border-radius:.9rem;font-size:.92rem;line-height:1.55}
.auth-page-ufoundme .auth-magic-sent .auth-alert.success::before{content:none}
.auth-page-ufoundme .ufm-magic-destination{margin-top:1rem;padding:.85rem 1rem;border:1px solid #04313c24;border-radius:.9rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;background:#edf5f5;color:#04313c}
.auth-page-ufoundme .ufm-magic-destination span{font-size:.76rem;font-weight:750;letter-spacing:.04em;text-transform:uppercase}
.auth-page-ufoundme .ufm-magic-destination strong{min-width:0;font-size:.98rem;overflow-wrap:anywhere}
.auth-page-ufoundme .ufm-magic-guidance{margin-top:1rem;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);gap:.8rem}
.auth-page-ufoundme :is(.ufm-magic-next,.ufm-magic-recovery){padding:1rem;border:1px solid #ded7e6;border-radius:1rem}
.auth-page-ufoundme .ufm-magic-recovery{background:#faf8fc}
.auth-page-ufoundme :is(.ufm-magic-next,.ufm-magic-recovery) h3{margin:0 0 .65rem;color:#251a3d;font-size:.98rem;line-height:1.25}
.auth-page-ufoundme :is(.ufm-magic-next ol,.ufm-magic-recovery ul){margin:0;padding-left:1.3rem;display:grid;gap:.45rem;color:#625b69;font-size:.82rem;line-height:1.4}
.auth-page-ufoundme .ufm-magic-next li::marker{color:#04313c;font-weight:800}
.auth-page-ufoundme .ufm-magic-recovery>p{margin:.75rem 0 0;color:#6e6575;font-size:.76rem;line-height:1.4}
.auth-page-ufoundme .ufm-magic-actions{margin-top:.85rem;display:grid;grid-template-columns:1fr 1fr;gap:.55rem;align-items:stretch}
.auth-page-ufoundme .ufm-magic-actions form{display:flex;min-width:0}
.auth-page-ufoundme .ufm-magic-actions :is(.auth-secondary,.auth-text-action){width:100%;height:100%;min-height:44px;margin:0;padding:.65rem .75rem;border-radius:.75rem;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.78rem;line-height:1.2}
.auth-page-ufoundme .ufm-magic-support{padding-top:.7rem;border-top:1px solid #e6e0eb}
.auth-page-ufoundme .ufm-magic-support a{color:#04313c;font-weight:750}
.auth-page-ufoundme .auth-magic-sent .auth-login-tabs{margin-top:1.5rem}
.auth-page-ufoundme .auth-magic-sent .auth-login-panel{min-height:0}
@media(max-width:699px){.auth-page-ufoundme .ufm-magic-guidance{grid-template-columns:1fr}.auth-page-ufoundme .ufm-magic-destination{align-items:flex-start;flex-direction:column;gap:.25rem}.auth-page-ufoundme .ufm-magic-actions{grid-template-columns:1fr}}
.auth-page-ufoundme :is(.auth-primary,.auth-secondary,.auth-text-action,.auth-provider){min-height:48px}
.auth-page-ufoundme:has(.auth-code-input) .auth-card{max-width:30rem}
.auth-page-ufoundme:has(.auth-code-input) .auth-private-email{
  margin:0 0 1rem;padding:1rem;border-radius:.9rem;
  display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;
  background:#f2eef8;color:#45355f;line-height:1.45
}
.auth-page-ufoundme:has(.auth-code-input) .auth-private-email span{font-size:.82rem;color:#716783}
.auth-page-ufoundme:has(.auth-code-input) .auth-private-email strong{
  max-width:100%;color:#352650;font-size:1rem;font-weight:700;
  overflow-wrap:anywhere;word-break:normal
}
.auth-page-ufoundme:has(.auth-code-input) .auth-otp-form{grid-template-columns:1fr}
.auth-page-ufoundme:has(.auth-code-input) .auth-otp-form>*{grid-column:1/-1}
.auth-page-ufoundme:has(.auth-code-input) .auth-otp-form label{display:grid;gap:.45rem}
.auth-page-ufoundme:has(.auth-code-input) .auth-otp-form label small{max-width:34ch;line-height:1.45}
.auth-page-ufoundme:has(.auth-code-input) .auth-code-input{width:100%;height:60px;padding-inline:.65rem;border-color:#cfc4dc;font-size:clamp(1.35rem,5vw,1.75rem);letter-spacing:.2em}
.auth-page-ufoundme:has(.auth-code-input) .auth-otp-actions{margin-top:1rem;gap:.65rem;align-items:stretch}
.auth-page-ufoundme:has(.auth-code-input) .auth-otp-actions form{display:flex;min-width:0}
.auth-page-ufoundme:has(.auth-code-input) .auth-otp-actions .auth-secondary{
  width:100%;height:100%;margin:0;padding:.75rem 1rem;border-radius:.9rem;
  display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.25
}
.auth-page-ufoundme .ufm-otp-no-mail{margin:.85rem 0 0;padding:.8rem .9rem;border-radius:.8rem;background:#f7f4fa;color:#625b69;font-size:.78rem;line-height:1.45}
.auth-page-ufoundme .ufm-otp-no-mail a{color:#04313c;font-weight:750}
.auth-page-ufoundme .ufm-help-button{width:48px;min-width:48px;padding:0;right:18px}
.auth-page-ufoundme .ufm-help-button span{display:none}
.auth-page-ufoundme .ufm-readability-button{width:48px;min-width:48px;padding:0;right:76px}
.auth-page-ufoundme .ufm-readability-button span{display:none}
.auth-page-ufoundme .ufm-help-button{display:none}
.auth-page-ufoundme .ufm-readability-button{top:10px;right:66px;bottom:auto}
.auth-page-ufoundme .auth-magic-sent .ufm-auth-scene{filter:saturate(.78)}

/* Login method selector — one stable row at every width.  The three methods
 * are deliberately chunked as a segmented control; labels never wrap and
 * the tap target remains at least 48px high. */
.auth-page-ufoundme .auth-login-tabs.auth-login-tabs-three{
  grid-template-columns:minmax(7.2rem,1.2fr) minmax(5.8rem,.9fr) minmax(6.5rem,1fr);
  gap:.4rem;
  padding:.38rem;
  border-radius:1.15rem
}
.auth-page-ufoundme .auth-login-tabs-three .auth-login-tab{
  min-width:0;
  min-height:48px;
  padding:.65rem .55rem;
  border-radius:.85rem;
  font-size:clamp(.76rem,.72rem + .16vw,.88rem);
  line-height:1;
  white-space:nowrap
}
.auth-page-ufoundme .auth-login-tab>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.auth-page-ufoundme .auth-login-help-ticker{display:none}

/* Login/register do not use the fixed marketing bottom navigation. Keep the
 * shared footer comfortably separated from the form without reserving its
 * full mobile safe zone or reproducing the large empty ending. */
.auth-page-ufoundme:has(.auth-shell) .ufm-footer{
  --ufm-footer-safe-zone:20px;
  padding-top:clamp(30px,4vw,40px)
}
.auth-page-ufoundme:has(.auth-shell) .ufm-footer-trust,
.auth-page-ufoundme:has(.auth-shell) .ufm-footer-europe{margin-top:20px}
.auth-page-ufoundme:has(.auth-shell) .ufm-footer-bottom{margin-top:15px}
@media(max-width:767px){
  .auth-page-ufoundme:has(.auth-shell) .ufm-footer{
    --ufm-footer-safe-zone:calc(18px + env(safe-area-inset-bottom));
    padding-bottom:var(--ufm-footer-safe-zone)
  }
}

/* Mouse/trackpad users get progressive disclosure without adding another
 * permanent line to the sign-in card. Focus-visible mirrors hover for keyboard. */
@media(min-width:1024px) and (hover:hover) and (pointer:fine){
  /* Tooltips belong to the tab controls, but must be allowed to paint beyond
   * the rounded sign-in card. A high z-index alone cannot escape clipping. */
  .auth-page-ufoundme .auth-card:has(.auth-login-tabs){overflow:visible;position:relative;z-index:2}
  .auth-page-ufoundme .auth-login-tabs{position:relative;z-index:3;overflow:visible}
  .auth-page-ufoundme .auth-login-tab[data-login-help]::after{
    width:max-content;max-width:min(18rem,calc(100vw - 2rem));padding:.58rem .72rem;position:absolute;z-index:30;left:50%;bottom:calc(100% + .65rem);border-radius:.65rem;color:#fff;background:#251a3d;box-shadow:0 .65rem 1.5rem #251a3d2b;content:attr(data-login-help);font-size:.76rem;font-weight:520;line-height:1.35;white-space:normal;opacity:0;pointer-events:none;transform:translate(-50%,.25rem);transition:opacity .16s ease,transform .16s ease
  }
  .auth-page-ufoundme .auth-login-tab[data-login-help]::before{position:absolute;z-index:31;left:50%;bottom:calc(100% + .35rem);border:.34rem solid transparent;border-top-color:#251a3d;content:"";opacity:0;pointer-events:none;transform:translateX(-50%);transition:opacity .16s ease}
  .auth-page-ufoundme .auth-login-tab[data-login-help]:is(:hover,:focus-visible)::after{opacity:1;transform:translate(-50%,0)}
  .auth-page-ufoundme .auth-login-tab[data-login-help]:is(:hover,:focus-visible)::before{opacity:1}
  .auth-page-ufoundme .auth-login-tab[data-login-help]:first-child::after{left:0;transform:translateY(.25rem)}
  .auth-page-ufoundme .auth-login-tab[data-login-help]:first-child:is(:hover,:focus-visible)::after{transform:none}
  .auth-page-ufoundme .auth-login-tab[data-login-help]:first-child::before{left:2rem}
  .auth-page-ufoundme .auth-login-tab[data-login-help]:last-child::after{right:0;left:auto;transform:translateY(.25rem)}
  .auth-page-ufoundme .auth-login-tab[data-login-help]:last-child:is(:hover,:focus-visible)::after{transform:none}
  .auth-page-ufoundme .auth-login-tab[data-login-help]:last-child::before{right:2rem;left:auto;transform:none}
}

/* Authentication guidance must remain readable at a glance. */
@media(max-width:767px){
  .auth-page-ufoundme .auth-login-help-ticker{height:auto;margin:-.25rem 0 .75rem;display:block;overflow:visible;color:#716a78;font-size:.82rem;line-height:1.45;white-space:normal;mask-image:none}
  .auth-page-ufoundme .auth-login-help-ticker span{width:auto;display:block;padding-left:0;animation:none;transform:none}
}
@media(prefers-reduced-motion:reduce){
  .auth-page-ufoundme .auth-login-help-ticker{height:auto;white-space:normal;mask-image:none}
  .auth-page-ufoundme .auth-login-help-ticker span{width:auto;padding-left:0;animation:none;transform:none}
}

@media(min-width:1600px){.auth-page-ufoundme .auth-shell:not(.registration-shell){width:min(76rem,calc(100% - 6rem))}}
@media(min-width:1440px) and (max-width:1599px){.auth-page-ufoundme .auth-shell:not(.registration-shell){width:min(72rem,calc(100% - 5rem))}}
@media(min-width:1280px) and (max-width:1439px){.auth-page-ufoundme .auth-shell:not(.registration-shell){width:min(68rem,calc(100% - 4rem));gap:3.25rem}}
@media(min-width:1024px) and (max-width:1279px){.auth-page-ufoundme .auth-shell:not(.registration-shell){width:min(61rem,calc(100% - 3rem));grid-template-columns:minmax(0,1fr) minmax(23rem,26rem);gap:2rem}.auth-page-ufoundme .auth-story h1{font-size:clamp(2.45rem,4.3vw,3.3rem)}}
@media(min-width:768px) and (max-width:1023px){.auth-page-ufoundme .auth-shell:not(.registration-shell){width:min(42rem,calc(100% - 2.5rem));grid-template-columns:1fr;min-height:0;gap:1.5rem;align-items:start}.auth-page-ufoundme .auth-story{text-align:center}.auth-page-ufoundme .auth-story h1,.auth-page-ufoundme .auth-story>p{margin-inline:auto}.auth-page-ufoundme .story-points{grid-template-columns:repeat(3,minmax(0,1fr))}.auth-page-ufoundme .ufm-auth-scene{height:13rem}.auth-page-ufoundme .auth-card{max-width:34rem}}
@media(min-width:600px) and (max-width:767px){.auth-page-ufoundme .auth-shell:not(.registration-shell){width:min(36rem,calc(100% - 2rem));grid-template-columns:1fr;min-height:0;gap:1.25rem;padding:1.5rem 0 2.5rem}.auth-page-ufoundme .auth-story h1{font-size:clamp(2.2rem,8vw,2.8rem)}.auth-page-ufoundme .story-points{grid-template-columns:1fr}.auth-page-ufoundme .ufm-auth-scene{height:12rem}.auth-page-ufoundme .auth-card{padding:1.5rem}}
@media(max-width:479px){.auth-page-ufoundme .auth-shell:not(.registration-shell){width:calc(100% - 1.25rem);grid-template-columns:1fr;min-height:0;gap:1rem;padding:1.1rem 0 2rem}.auth-page-ufoundme .auth-story h1{font-size:clamp(2rem,10vw,2.45rem)}.auth-page-ufoundme .auth-story>p{font-size:.9rem}.auth-page-ufoundme .story-points,.auth-page-ufoundme .ufm-auth-scene{display:none}.auth-page-ufoundme .auth-card{padding:1.25rem;border-radius:1.25rem}.auth-page-ufoundme .auth-login-tabs.auth-login-tabs-three{grid-template-columns:minmax(0,1.18fr) minmax(0,.82fr) minmax(0,1fr);gap:.25rem;padding:.28rem}.auth-page-ufoundme .auth-login-tabs-three .auth-login-tab{min-width:0;padding:.65rem .2rem;font-size:clamp(.64rem,3vw,.72rem);white-space:nowrap}.auth-page-ufoundme .auth-login-tabs-three .auth-login-tab :is(img,.auth-tab-google,.auth-tab-password){display:none}.auth-page-ufoundme .ufm-magic-sent-mark{width:2.65rem;height:2.65rem}}
@media(max-width:359px){.auth-page-ufoundme .auth-login-tab :is(img,.auth-tab-google,.auth-tab-password){display:none}.auth-page-ufoundme .auth-login-tab{font-size:.67rem;line-height:1.15}.auth-page-ufoundme .auth-magic-sent .auth-card{padding-inline:1rem}.auth-page-ufoundme .auth-alert.success{font-size:.86rem}}
@media(max-width:479px){.auth-page-ufoundme:has(.auth-code-input) .auth-code-input{height:58px;font-size:1.35rem;letter-spacing:.16em}.auth-page-ufoundme:has(.auth-code-input) .auth-otp-actions{grid-template-columns:1fr}.auth-page-ufoundme:has(.auth-code-input) .auth-otp-actions button{width:100%}}

/* Login responsive: action first, illustration second, with no artificial empty panel. */
@media(max-width:1023px){
  .auth-page-ufoundme .ufm-auth-public-header{height:68px;min-height:68px;padding-inline:16px}
  .auth-page-ufoundme .ufm-auth-public-header .auth-logo{width:clamp(106px,24vw,140px)}
  .auth-page-ufoundme .ufm-auth-language,.auth-page-ufoundme .ufm-auth-account{display:none}
  .auth-page-ufoundme .ufm-auth-cart{margin-left:auto}
  .auth-page-ufoundme .ufm-auth-menu-sheet{top:76px;right:8px;left:max(8px,calc(100vw - 430px));max-height:calc(100dvh - 84px);overflow:auto}
  .auth-page-ufoundme .auth-shell:not(.registration-shell){align-content:start}
  .auth-page-ufoundme .auth-shell:not(.registration-shell)>.auth-card{order:1}
  .auth-page-ufoundme .auth-shell:not(.registration-shell)>.auth-story{order:2}
  .auth-page-ufoundme .auth-login-panel{min-height:0}
  .auth-page-ufoundme .auth-card{max-width:34rem}
  .auth-page-ufoundme .auth-login-tab{min-height:48px}
  .auth-page-ufoundme .auth-primary,.auth-page-ufoundme .auth-secondary,.auth-page-ufoundme .auth-provider{min-height:48px}
}
@media(min-width:768px) and (max-width:1023px){
  .auth-page-ufoundme .auth-shell:not(.registration-shell){padding:2rem 0 3rem;gap:2rem}
  .auth-page-ufoundme .auth-story{display:grid;grid-template-columns:minmax(0,1fr) minmax(16rem,.8fr);align-items:center;gap:1.5rem;text-align:left}
  .auth-page-ufoundme .auth-story>.kicker,.auth-page-ufoundme .auth-story>h1,.auth-page-ufoundme .auth-story>p,.auth-page-ufoundme .story-points{grid-column:1}
  .auth-page-ufoundme .auth-story h1,.auth-page-ufoundme .auth-story>p{margin-inline:0}
  .auth-page-ufoundme .story-points{grid-template-columns:1fr}
  .auth-page-ufoundme .ufm-auth-scene{grid-column:2;grid-row:1/5;width:100%;height:14rem;margin:0}
}
@media(max-width:767px){
  .auth-page-ufoundme .ufm-auth-public-header{height:64px;min-height:64px;padding-inline:10px}
  .auth-page-ufoundme .ufm-auth-cart{width:48px;padding:0}.auth-page-ufoundme .ufm-auth-cart span{display:none}
  .auth-page-ufoundme .ufm-auth-menu-sheet{top:70px;right:6px;left:6px;max-height:calc(100dvh - 78px)}
  .auth-page-ufoundme .auth-shell:not(.registration-shell){padding-top:1rem}
  .auth-page-ufoundme .auth-card{padding:1.25rem;border-radius:1.25rem}
  .auth-page-ufoundme .auth-card>h2{font-size:1.35rem}
  .auth-page-ufoundme .auth-login-tabs{margin-bottom:1rem}
  .auth-page-ufoundme .auth-switch{margin-top:1rem}
}
@media(max-width:479px){
  .auth-page-ufoundme .auth-story{padding:1rem .35rem 0;text-align:left}
  .auth-page-ufoundme .auth-story .kicker{display:none}
  .auth-page-ufoundme .auth-story h1{max-width:13ch;margin:0;font-size:1.85rem}
  .auth-page-ufoundme .auth-story>p{margin:.75rem 0 0;font-size:.88rem;line-height:1.55}
  .auth-page-ufoundme .auth-login-tab{padding-inline:.2rem;font-size:.72rem;white-space:nowrap}
  .auth-page-ufoundme .auth-login-tab :is(img,.auth-tab-google,.auth-tab-password){flex:0 0 auto}
}
/* Global professional finish: calmer hierarchy, fluid text and resilient layouts. */
:where(body.auth-page-ufoundme, body.eshop-page, body.catalog-page, body.public-card-body, body.chat-surface, body.legal-page, body:has(.owner-office), body:has(.studio-page), body:has(.view.active)) :is(h1, h2, h3, h4) {
  font-weight: 620;
}

:where(body.auth-page-ufoundme, body.eshop-page, body.catalog-page, body.public-card-body, body.chat-surface, body.legal-page, body:has(.owner-office), body:has(.studio-page), body:has(.view.active)) :is(strong, b) {
  font-weight: 600;
}

:where(body.auth-page-ufoundme, body.eshop-page, body.catalog-page, body.public-card-body, body.chat-surface, body.legal-page, body:has(.owner-office), body:has(.studio-page), body:has(.view.active)) :is(button, .button, .btn, .primary, .secondary, [role="button"]) {
  font-weight: 560;
}

:where(body.auth-page-ufoundme, body.eshop-page, body.catalog-page, body.public-card-body, body.chat-surface, body.legal-page, body:has(.owner-office), body:has(.studio-page), body:has(.view.active)) :is(label, legend) {
  font-weight: 520;
}

:where(body.auth-page-ufoundme, body.eshop-page, body.catalog-page, body.public-card-body, body.chat-surface, body.legal-page, body:has(.owner-office), body:has(.studio-page), body:has(.view.active)) :is(.kicker, .eyebrow, .step-label, .product-type) {
  font-weight: 600;
}

:where(body.auth-page-ufoundme, body.eshop-page, body.catalog-page, body.public-card-body, body.chat-surface, body.legal-page, body:has(.owner-office), body:has(.studio-page), body:has(.view.active)) :is(main, section, article, aside, header, footer, nav, form, fieldset, div, span, p, a, button, label) {
  min-width: 0;
}

:where(body.auth-page-ufoundme, body.eshop-page, body.catalog-page, body.public-card-body, body.chat-surface, body.legal-page, body:has(.owner-office), body:has(.studio-page), body:has(.view.active)) :is(h1, h2, h3, h4, p, a, button, label, legend, li, dt, dd, small, strong, b) {
  overflow-wrap: anywhere;
}

:where(body.eshop-page, body.catalog-page) :is(.product-price strong, .grand-total dd, .first-year-offer strong),
:where(body.public-card-body, body:has(.studio-page)) :is(.studio-card h1, .studio-card h3, .public-card h1),
:where(body.auth-page-ufoundme, body.legal-page) [aria-current="page"] {
  font-weight: 650;
}
/* Balanced landscape-tablet / compact-desktop hero.
   The copy remains the primary reading block while the product keeps enough
   room to look intentional instead of compressing either column. */
@media (min-width: 1024px) and (max-width: 1279px) {
  /* Canonical T6 footer: brand information above three stable link columns.
     This keeps long translations readable without a fourth compressed column. */
  .ufm-footer{padding-top:34px}
  .ufm-footer .ufm-footer-grid{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:clamp(24px,4vw,44px);row-gap:24px}
  .ufm-footer .ufm-footer-brand{grid-column:1/-1;display:grid;grid-template-columns:190px minmax(0,1fr) minmax(240px,.9fr);grid-template-rows:auto auto;column-gap:28px;row-gap:5px;align-items:start}
  .ufm-footer .ufm-footer-brand>a:first-child{grid-column:1;grid-row:1;margin:0}
  .ufm-footer .ufm-footer-brand>p{grid-column:2;grid-row:1}
  .ufm-footer .ufm-footer-brand>small{grid-column:2;grid-row:2}
  .ufm-footer .ufm-footer-brand>.ufm-footer-contact{grid-column:3;grid-row:1/3;margin:0}
  .ufm-footer .ufm-footer-brand>.ufm-footer-social{grid-column:1;grid-row:2;margin-top:2px}
  .ufm-footer .ufm-footer-grid>nav{gap:5px}
  .ufm-footer .ufm-footer-grid>nav a{display:flex;align-items:center;min-height:36px}
  .ufm-footer .ufm-footer-trust,.ufm-footer .ufm-footer-europe{margin-top:22px}
  .ufm-footer .ufm-footer-bottom{margin-top:14px;padding-top:13px}

  body:has(.hero.active) .hero {
    padding-inline: clamp(36px, 4.5vw, 58px);
    grid-template-columns: minmax(0, 1.05fr) minmax(410px, .95fr);
    column-gap: clamp(28px, 3.5vw, 46px);
  }

  body:has(.hero.active) .hero-copy {
    width: 100%;
    max-width: 590px;
    align-self: start;
  }

  body:has(.hero.active) .hero .hero-promise {
    max-width: 13.5ch;
    font-size: clamp(3rem, 4.7vw, 4.15rem);
    line-height: .96;
    letter-spacing: -.06em;
  }

  body:has(.hero.active) .hero-copy > p:not(.kicker) {
    max-width: 48ch;
    margin-block: 20px;
    font-size: .94rem;
    line-height: 1.62;
  }

  body:has(.hero.active) .hero-how {
    margin-block: 18px;
    padding-block: 14px;
  }

  body:has(.hero.active) .hero-how ol {
    gap: 10px;
  }

  body:has(.hero.active) .hero-how li {
    min-height: 74px;
    padding: 10px;
    align-content: center;
  }

  body:has(.hero.active) .hero .actions {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(142px, .65fr);
    gap: 10px;
  }

  body:has(.hero.active) .hero .actions > * {
    width: 100%;
    min-height: 48px;
    justify-content: center;
  }

  body:has(.hero.active) .hero .proof {
    margin-top: 18px;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, max-content));
    gap: 8px 16px;
  }

  body:has(.hero.active) .hero-product {
    width: 100%;
    min-width: 0;
    align-self: start;
  }

  body:has(.hero.active) .hero-visual {
    width: 100%;
    min-height: 500px;
  }
}
/* Accessible floors without visually inflating decorative content. */
.brand-pronunciation {
  font-size: max(0.75rem, 12px);
  font-weight: 400;
}

.mobile-app-nav > button :is(span, strong),
.mobile-app-nav > button {
  color: #5b5362;
  font-size: max(0.75rem, 12px);
}

.preview-intro {
  color: #6f234a;
}

@media (pointer: coarse) {
  :where(.language-switcher a, .ufm-universal-languages a, .action-world, .action-spanish-flag) {
    min-width: var(--ufm-touch-target);
    min-height: var(--ufm-touch-target);
  }

  .ufm-footer nav a {
    position: relative;
  }

  .ufm-footer nav a::before {
    position: absolute;
    inset: 50% -8px auto;
    min-height: var(--ufm-touch-target);
    content: "";
    transform: translateY(-50%);
  }
}
/* The QR journey belongs to the same calm visual family as the home view. */
.view.qr-principle {
  background:
    radial-gradient(circle at 82% 24%, rgba(217, 205, 238, .48), transparent 28%),
    linear-gradient(135deg, #faf8fc, #fff 56%, #eee9f6);
}

/* Registration actions keep a consistent 44 px target at every breakpoint. */
.auth-page-ufoundme:has(.registration-shell) .ufm-registration-consent-row {
  position: relative;
}

.auth-page-ufoundme:has(.registration-shell) .ufm-registration-consent-row > label {
  padding-right: 3.45rem;
}

.auth-page-ufoundme:has(.registration-shell) .ufm-registration-terms-help {
  width: 2.75rem;
  height: 2.75rem;
  min-width: 2.75rem;
  min-height: 2.75rem;
  position: absolute;
  top: 50%;
  right: .45rem;
  display: grid;
  place-items: center;
  transform: translateY(-50%);
}

.auth-page-ufoundme:has(.registration-shell) .auth-switch a {
  min-height: 2.75rem;
}

/* Keep the critical two-step registration free from overlapping global docks. */
.auth-page-ufoundme:has(.registration-shell) :is(.gdpr-alert, .ufm-readability-button, .ufm-back-to-top, .ufm-help-button) {
  display: none;
}

.auth-page-ufoundme .auth-alert.success{border-left:1px solid #6f56a538}

/* No multicoloured accent line above the login and registration card. */
.auth-page-ufoundme .auth-card::before{content:none;display:none}

/* source: php-inter.css */
/**
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Déclare la police Inter auto-hébergée (découpée par écriture) et la typographie par défaut du site.
 * @purpose-en Declares the self-hosted Inter font (split by script) and the site default typography.
 * @audit-scope asset
 * @inputs-fr Fichiers de police /ufoundme/assets/fonts/InterUFM-Latin-*.woff2.
 * @inputs-en Font files /ufoundme/assets/fonts/InterUFM-Latin-*.woff2.
 * @effects-fr Règles @font-face (font-display: optional) et variables --ufm-font-primary ; aucune sortie dynamique.
 * @effects-en @font-face rules (font-display: optional) and --ufm-font-primary variables; no dynamic output.
 *
 * @file Presentation layer for php inter.
 *
 * Mobile-first responsive styling only; preserve touch targets, fluid containment and the seven-breakpoint contract.
 */

/** UFoundMe! typography authority. Inter is self-hosted and split by script so
 * a Latin page never downloads the complete multilingual variable font. */
@font-face{font-family:"Inter";src:url("/ufoundme/assets/fonts/InterUFM-Latin-Regular.woff2") format("woff2");font-style:normal;font-weight:100 599;font-display:optional;unicode-range:U+0000-024F,U+1E00-1EFF,U+20AC,U+2122,U+2190-2199,U+2713,U+2715,U+2717,U+2718,U+271A,U+2753,U+2764,U+2B05-2B07,U+FFFD}
@font-face{font-family:"Inter";src:url("/ufoundme/assets/fonts/InterUFM-Latin-Bold.woff2") format("woff2");font-style:normal;font-weight:600 900;font-display:optional;unicode-range:U+0000-024F,U+1E00-1EFF,U+20AC,U+2122,U+2190-2199,U+2713,U+2715,U+2717,U+2718,U+271A,U+2753,U+2764,U+2B05-2B07,U+FFFD}
:root{--ufm-font-primary:"Inter",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-primary:var(--ufm-font-primary)}
html{font-family:var(--ufm-font-primary);font-synthesis:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:var(--ufm-font-primary);font-synthesis:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
button,input,select,textarea{font-family:inherit}

/* The first promise is visible before any interaction and must never wait for
   a font download. Platform UI fonts keep the same neutral grotesque voice. */
.hero .hero-promise{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}

/* Covers legacy UFoundMe! surfaces that previously declared Lexend or Arial. */
body.auth-page-ufoundme,body.eshop-page,body.catalog-page,body.public-card-body,body.chat-surface,body.legal-page,body.ufm-ulule,body:has(.owner-office),body:has(.studio-page),body:has(.ufm-contact-head){font-family:var(--ufm-font-primary)}
body.auth-page-ufoundme *,body:has(.owner-office) *{box-sizing:border-box}
body.auth-page-ufoundme :is(button,input,select,textarea),body.eshop-page :is(button,input,select,textarea),body.catalog-page :is(button,input,select,textarea),body.public-card-body :is(button,input,select,textarea),body.chat-surface :is(button,input,select,textarea),body.legal-page :is(button,input,select,textarea),body:has(.owner-office) :is(button,input,select,textarea),body:has(.studio-page) :is(button,input,select,textarea){font-family:inherit}
body.auth-page-ufoundme .auth-logo.auth-logo-ufoundme{display:block;min-width:0;flex:0 0 auto}
body.auth-page-ufoundme .auth-logo.auth-logo-ufoundme img{width:100%;max-width:100%;height:auto}
body.auth-page-ufoundme .auth-nav,body.auth-page-ufoundme .auth-brand-navigation{min-width:0;max-width:100%}
body.auth-page-ufoundme .auth-brand-navigation{flex:1 1 auto}
body.auth-page-ufoundme .auth-shell,body.auth-page-ufoundme .auth-card{min-width:0;max-width:100%;box-sizing:border-box}
body.auth-page-ufoundme .auth-card>*{min-width:0;max-width:100%}
body.auth-page-ufoundme .ufm-auth-scene{max-width:100%;overflow:clip;contain:paint}
@media(max-width:359px){body.auth-page-ufoundme .auth-logo.auth-logo-ufoundme{width:7rem}body.auth-page-ufoundme .auth-card{width:100%;padding-inline:1rem}body.auth-page-ufoundme .auth-nav{width:100%;padding-inline:.875rem}}

/* iOS zooms focused controls whose computed text size is below 16 px. Keep
   data entry stable on every public and authenticated UFoundMe! surface. */
@media(max-width:767px){
  body.auth-page-ufoundme :is(input,select,textarea),
  body.eshop-page :is(input,select,textarea),
  body.catalog-page :is(input,select,textarea),
  body.public-card-body :is(input,select,textarea),
  body.chat-surface :is(input,select,textarea),
  body.legal-page :is(input,select,textarea),
  body:has(.owner-office) :is(input,select,textarea),
  body:has(.studio-page) :is(input,select,textarea),
  body:has(.ufm-contact-head) :is(input,select,textarea){font-size:16px}
}

}
@layer base {
/* source: eshop.css */
/**
 * @file Presentation layer for eshop.
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Styles de la boutique : fiches produit, offre de première année, grille numérique, visuels de badge et lien d’évitement.
 * @purpose-en Shop styles: product cards, first-year offer, digital grid, badge visuals and skip link.
 * @audit-scope asset
 * @inputs-fr Aucune entrée dynamique ; feuille statique qui s’appuie sur les attributs data-theme et les propriétés personnalisées définis ailleurs.
 * @inputs-en No dynamic input; static stylesheet relying on data-theme attributes and custom properties defined elsewhere.
 * @effects-fr Mise en forme uniquement ; aucune écriture, aucun script.
 * @effects-en Styling only; no writes, no script.
 *
 *
 * Mobile-first responsive styling only; preserve touch targets, fluid containment and the seven-breakpoint contract.
 */
.eshop-page .skip-link:not(:focus):not(:focus-visible){position:fixed;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.eshop-page .skip-link:focus,.eshop-page .skip-link:focus-visible{position:fixed;z-index:13020;top:8px;left:8px;width:auto;height:auto;padding:12px 16px;overflow:visible;clip:auto;clip-path:none;border-radius:10px;color:#fff;background:#171327;font-weight:800}

@font-face{font-family:Inter;src:url('/ufoundme/assets/fonts/InterUFM-Latin-Regular.woff2') format('woff2');font-style:normal;font-weight:100 599;font-display:swap;unicode-range:U+0000-024F,U+1E00-1EFF,U+20AC,U+2122,U+2190-2199,U+2713,U+2715,U+2717,U+2718,U+271A,U+2753,U+2764,U+2B05-2B07,U+FFFD}@font-face{font-family:Inter;src:url('/ufoundme/assets/fonts/InterUFM-Latin-Bold.woff2') format('woff2');font-style:normal;font-weight:600 900;font-display:swap;unicode-range:U+0000-024F,U+1E00-1EFF,U+20AC,U+2122,U+2190-2199,U+2713,U+2715,U+2717,U+2718,U+271A,U+2753,U+2764,U+2B05-2B07,U+FFFD}*{box-sizing:border-box}html{font-family:Inter,system-ui;color:#1d1529;background:#faf8fb}body{margin:0;background:radial-gradient(circle at 80% 10%,#ffb08732,transparent 25%),#faf8fb}.shop-header{height:78px;padding:0 max(20px,5vw);display:flex;align-items:center;gap:24px;position:sticky;top:0;z-index:20;border-bottom:1px solid #26173716;background:#fffdfbea;backdrop-filter:blur(16px)}.shop-header>a{margin-right:auto}.shop-header>a img{width:160px;display:block}.shop-header nav{display:flex;gap:5px}.shop-header nav a{width:36px;height:36px;display:grid;place-items:center;border:1px solid #26173718;border-radius:50%;color:#6d6672;text-decoration:none;font-size:.68rem;font-weight:750}.shop-header nav a.active{color:#fff;background:#28183b}.cart-trigger{min-height:44px;padding:0 12px;border:1px solid #28183b22;border-radius:99px;display:flex;align-items:center;gap:8px;color:#28183b;background:#fff;font:700 .72rem Inter;cursor:pointer}.cart-trigger img{width:18px}.cart-trigger b{width:23px;height:23px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#5c3886}main{width:min(1280px,calc(100% - 40px));margin:auto;padding:clamp(48px,7vw,92px) 0}.hero{max-width:790px;margin-bottom:68px}.kicker{margin:0 0 10px;color:#ff7059;font-size:.68rem;font-weight:850;letter-spacing:.12em}.hero h1{margin:0;font-size:clamp(2.8rem,7vw,6.5rem);line-height:.96;letter-spacing:-.065em}.hero>p:last-child{max-width:660px;color:#6d6672;font-size:clamp(.95rem,1.4vw,1.15rem);line-height:1.65}.catalog{margin:56px 0}.section-heading{margin-bottom:22px}.section-heading h2{margin:0;font-size:clamp(1.7rem,3vw,2.7rem);letter-spacing:-.04em}.section-heading small{display:block;margin-top:8px;color:#756d7b}.product-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.digital-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:840px}.product-card{min-width:0;overflow:hidden;border:1px solid #28183b18;border-radius:26px;background:#fff;box-shadow:0 18px 48px #28183b0d}.product-visual{height:270px;padding:18px;display:grid;place-items:center;background:#f4eff8}.product-visual img{width:100%;height:100%;object-fit:contain}.service-visual img{width:105px;height:105px;padding:24px;border-radius:32px;background:#fff}.product-copy{padding:22px}.brand-chip{display:inline-block;padding:5px 9px;border-radius:99px;color:#fff;background:#28183b;font-size:.58rem;font-weight:800;letter-spacing:.1em}.product-copy h3{min-height:2.5em;margin:10px 0 6px;font-size:1.18rem}.product-copy p{min-height:3em;margin:0;color:#756d7b;font-size:.8rem;line-height:1.5}.product-copy footer{margin-top:20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.product-copy strong{font-size:1.22rem}.product-copy button,.cart-panel form button{min-height:44px;padding:0 17px;border:0;border-radius:99px;color:#fff;background:#28183b;font:750 .72rem Inter;cursor:pointer;transition:.2s}.product-copy button:hover,.cart-panel form button:hover{background:#ff7059;transform:translateY(-2px)}.back{display:inline-flex;margin-top:24px;color:#28183b;font-weight:750}.cart{width:min(500px,100%);height:100%;max-height:none;margin:0 0 0 auto;padding:0;border:0;background:transparent}.cart::backdrop{background:#20132a99;backdrop-filter:blur(5px)}.cart-panel{min-height:100%;padding:30px;display:flex;flex-direction:column;background:#fff}.cart-panel>header{display:flex;justify-content:space-between;align-items:start}.cart-panel h2{margin:0;font-size:2rem}.cart-panel>header button{width:42px;height:42px;border:0;border-radius:50%;font-size:1.5rem;cursor:pointer}.cart-empty{padding:22px;border-radius:16px;color:#756d7b;background:#f7f4f8}.cart-lines{display:grid;gap:10px}.cart-lines article{padding:15px;display:flex;justify-content:space-between;align-items:center;gap:15px;border:1px solid #28183b18;border-radius:16px}.cart-lines article>div:first-child{display:grid;gap:5px}.cart-lines small{color:#756d7b}.stepper{display:flex;align-items:center;gap:9px}.stepper button{width:30px;height:30px;border:0;border-radius:50%;cursor:pointer}.cart-panel>footer{margin-top:auto;padding-top:24px;border-top:1px solid #28183b18}.cart-panel>footer>div{display:flex;justify-content:space-between;font-size:1.15rem}.cart-panel>footer>small{display:block;margin:8px 0 18px;color:#756d7b}.cart-panel form button{width:100%}.cart-panel form button:disabled{opacity:.4;cursor:not-allowed}.continue{width:100%;margin-top:10px;padding:12px;border:0;color:#28183b;background:transparent;font:700 .72rem Inter;cursor:pointer}
@media(max-width:1023px){.product-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.product-grid .product-card:last-child{grid-column:1/-1}.digital-grid .product-card:last-child{grid-column:auto}.shop-header nav{display:none}.badge-transparency-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.badge-transparency-grid .payment-facts{grid-column:1/-1}}
@media(max-width:767px){.shop-header{height:68px;padding:0 14px;gap:8px}.shop-header>a img{width:126px}.cart-trigger span{display:none}main{width:min(100% - 24px,1280px);padding-top:38px}.hero{margin-bottom:42px}.hero h1{font-size:clamp(2.45rem,14vw,4rem)}.catalog{margin:42px 0}.product-grid,.digital-grid{grid-template-columns:1fr}.product-grid .product-card:last-child{grid-column:auto}.product-visual{height:230px}.product-copy h3,.product-copy p{min-height:0}.cart-panel{padding:20px 15px}}
.first-year-offer{max-width:760px;margin:24px 0 0;padding:16px 20px;display:grid;gap:4px;border:1px solid #d9d0e7;border-radius:18px;background:#fff;box-shadow:0 12px 30px #2b1d4610}.first-year-offer strong{color:#3f286d;font-size:1rem}.first-year-offer span{color:#6e6875;font-size:.9rem;line-height:1.45}
:where(form label,form legend,form input,form select,form textarea,form option,form output){font-weight:400}:where(form input,form textarea)::placeholder{font-weight:400}
.product-price{display:grid;gap:3px}.product-price small{color:#6f6877;font-size:.68rem;font-weight:500}.product-price strong{font-size:1.05rem;line-height:1.25}

/* Restored focused catalogue: two textual offers, no product illustrations. */
.digital-grid{max-width:840px;grid-template-columns:repeat(2,minmax(0,1fr))}
.product-card{overflow:visible;border-color:#dcd5e3;border-radius:20px;box-shadow:none}
.product-card-badge{display:grid;grid-template-columns:minmax(118px,.58fr) minmax(0,1.42fr);align-items:stretch}
.product-badge-visual{min-width:0;margin:0;padding:18px;display:grid;place-items:center;overflow:hidden;border-radius:19px 0 0 19px;background:linear-gradient(145deg,#f7f2fa,#fff)}
.product-badge-visual img{width:auto;max-width:100%;height:auto;max-height:214px;display:block;object-fit:contain}
.product-copy{min-height:230px;padding:28px;display:flex;flex-direction:column}
.product-type{min-height:0;margin:0 0 18px;color:#5c3886;font-size:.7rem;font-weight:650;letter-spacing:.1em;text-transform:uppercase}
.product-copy h3{min-height:0;margin:0 0 8px;font-size:1.3rem;font-weight:620}
.product-copy>p:not(.product-type){min-height:3em;margin:0;color:#756d7b;font-size:.88rem;line-height:1.55}
.product-copy footer{margin-top:auto;padding-top:28px;border-top:1px solid #eee9f1}
.product-copy button,.cart-panel form button{font-weight:650;transition:background .16s ease}
.product-copy button:hover,.cart-panel form button:hover{background:#5c3886;transform:none}
@media(max-width:767px){.digital-grid{grid-template-columns:1fr}.product-copy{min-height:210px;padding:22px}}
@media(max-width:767px){.product-card-badge{grid-template-columns:minmax(104px,.45fr) minmax(0,1.55fr)}.product-badge-visual{padding:14px}.product-badge-visual img{max-height:190px}}

/* Mobile-first catalogue finish: fluid width, calm hierarchy and tactile controls. */
main{width:calc(100% - clamp(24px,6vw,96px));max-width:1680px}
.hero{max-width:none;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);align-items:end;gap:clamp(28px,5vw,88px);margin-bottom:clamp(48px,6vw,84px)}
.hero-copy{max-width:760px}
.hero h1{max-width:14ch;font-size:clamp(2.45rem,5vw,4.8rem);line-height:1.02;letter-spacing:-.055em}
.hero-copy>p:last-child{margin:20px 0 0;max-width:62ch;font-size:clamp(1rem,1.25vw,1.16rem);line-height:1.65}
.first-year-offer{width:100%;max-width:none;margin:0;padding:clamp(20px,2.2vw,30px);grid-template-columns:minmax(0,1fr);align-items:start;gap:20px;border-radius:22px;box-shadow:none}
.first-year-offer>div{display:grid;gap:6px}.first-year-offer strong{font-size:clamp(1.05rem,1.5vw,1.3rem);line-height:1.35}
.first-year-offer a{width:100%;min-height:48px;padding:0 clamp(14px,3vw,20px);border:0;border-radius:999px;display:flex;align-items:center;justify-content:center;color:#fff;background:#28183b;font:650 .78rem/1.25 Inter;text-align:center;text-decoration:none;white-space:nowrap}.first-year-offer a:hover{background:#5c3886}
.digital-grid{width:100%;max-width:none;gap:clamp(16px,2vw,28px)}
.product-copy{min-height:250px;padding:clamp(22px,2.5vw,34px)}.product-copy h3{font-size:clamp(1.2rem,1.6vw,1.48rem);line-height:1.3}.product-copy>p:not(.product-type){font-size:clamp(.9rem,1vw,1rem);line-height:1.65}
.product-copy button,.cart-panel form button,.continue{min-height:48px}:where(button,a,input,select,textarea):focus-visible{outline:3px solid #ff7059;outline-offset:3px}
@media(max-width:1023px){.hero{grid-template-columns:1fr;align-items:start}.hero-copy,.first-year-offer{max-width:820px}.eshop-page .hero-copy{order:1;grid-row:auto}.eshop-page .first-year-offer{order:2;grid-row:auto}.eshop-page .hero>.ufm-purchase-assurance{order:3;grid-column:1;grid-row:auto}.eshop-page:has(.gdpr-alert:not([hidden])){--ufm-readability-bottom:calc(142px + env(safe-area-inset-bottom))}}
@media(max-width:767px){main{width:calc(100% - 28px);padding:40px 0 72px}.hero{gap:26px;margin-bottom:52px}.hero h1{font-size:clamp(2.2rem,9vw,3.8rem)}.first-year-offer{grid-template-columns:1fr;padding:20px}.first-year-offer a{width:100%}.digital-grid{grid-template-columns:1fr}.product-copy{min-height:0}.product-copy footer{align-items:flex-end;flex-wrap:wrap}.product-copy button{min-width:170px}}
@media(max-width:599px){.shop-header{padding-inline:12px}.shop-header>a img{width:116px}.shop-header nav a{width:44px;height:44px}.cart-trigger{min-width:46px;justify-content:center}main{width:calc(100% - 22px);padding-top:30px}.hero h1{font-size:clamp(2.05rem,11vw,3rem);letter-spacing:-.045em}.section-heading h2{font-size:1.65rem}.product-copy{padding:20px}.product-copy footer{display:grid;grid-template-columns:1fr}.product-copy button{width:100%}.cart-panel{padding:18px 12px}.cart-panel h2{font-size:1.55rem}.eshop-page .badge-transparency{padding:16px}.badge-transparency-grid{grid-template-columns:1fr}.badge-transparency-grid .payment-facts{grid-column:auto}.badge-transparency-grid article{padding:15px}}
@media(max-width:479px){.product-card-badge{grid-template-columns:1fr}.product-badge-visual{min-height:180px;border-radius:19px 19px 0 0}.product-badge-visual img{max-height:170px}.product-card-badge .product-copy{padding-top:18px}}
@media(max-width:389px){.shop-header>a img{width:105px}.hero h1{font-size:1.95rem}.first-year-offer,.product-copy{padding:17px}.badge-facts dl div{grid-template-columns:1fr;gap:2px}.badge-facts dd{text-align:left}}
@media(min-width:1024px) and (max-width:1279px){main{width:calc(100% - 56px)}.hero{grid-template-columns:minmax(0,1fr) minmax(330px,.8fr)}}
@media(min-width:1280px) and (max-width:1759px){main{width:calc(100% - 72px)}}
@media(min-width:1760px){main{width:calc(100% - 112px)}.digital-grid{gap:32px}}
@media(hover:none){.product-copy button:hover,.cart-panel form button:hover,.first-year-offer a:hover{background:#28183b}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto;transition:none}}

/* e-Shop header contract --------------------------------------------------
   The catalogue now consumes the same seven-band header and hamburger as the
   marketing surface. Cart remains the sole shop-specific immediate action. */
.eshop-page .shop-header{position:sticky;top:0;z-index:120;isolation:isolate}
.eshop-page .shop-brand{display:flex;align-items:center;min-height:48px}
.eshop-page .shop-brand img{height:auto}
.eshop-page .cart-trigger{position:relative;z-index:2;min-width:104px;min-height:48px;justify-content:center;font-family:Inter,sans-serif;font-size:.78rem}
.eshop-page .mobile-cart-trigger{margin-left:auto}
.eshop-page .desktop-cart-trigger{width:auto;min-width:92px;position:absolute;right:calc(clamp(28px,4vw,64px) + 410px);display:inline-flex}
.eshop-page>.ufm-global-controls{font-family:Inter,sans-serif}
.eshop-page .hero{align-items:start}
.eshop-page .hero h1{max-width:13ch;font-weight:640}
.eshop-page .first-year-offer,.eshop-page .product-card{background:#fffdfb}
.eshop-page .digital-grid{max-width:760px;grid-template-columns:minmax(0,1fr)}
.eshop-page .activation-information{max-width:760px;margin-top:18px;padding:20px 22px;display:grid;grid-template-columns:42px minmax(0,1fr);gap:16px;align-items:start;border:1px solid #dcd5e3;border-radius:18px;background:#f4f0f7;color:#3e3449}
.eshop-page .activation-information>span{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#04313c;font-weight:750}
.eshop-page .activation-information .product-type{margin:0 0 6px;color:#04313c}
.eshop-page .activation-information h3{margin:0 0 5px;font-size:1rem;line-height:1.35}
.eshop-page .activation-information p:last-child{margin:0;color:#6e6875;font-size:.82rem;line-height:1.55}
.eshop-page .product-copy strong{white-space:nowrap}
.eshop-page .ufm-readability-button{right:auto;left:18px}
.eshop-page .back{min-height:48px;margin-left:130px;align-items:center}
@media(max-width:1279px){.eshop-page .cart-trigger{min-width:44px}.eshop-page .cart-trigger span{display:none}.eshop-page .desktop-cart-trigger{display:none}}
@media(max-width:767px){.eshop-page main{padding-top:34px}.eshop-page .hero{gap:22px}.eshop-page .hero h1{max-width:16ch;font-weight:630}}
@media(max-width:599px){
  .eshop-page .hero h1{font-size:clamp(2rem,10.5vw,2.75rem)}
  .eshop-page .first-year-offer strong{font-size:1rem}
  .eshop-page .activation-information{padding:17px;grid-template-columns:36px minmax(0,1fr);gap:12px}
  .eshop-page .activation-information>span{width:36px;height:36px}
}
/* Font files are declared by php-inter.css, loaded after this sheet. */

/* Positioning: three familiar alternatives, then two service states. */
.eshop-page .positioning{width:min(1180px,calc(100% - 48px));margin:0 auto clamp(54px,7vw,92px);display:grid;gap:22px}
.positioning>header{max-width:760px}.positioning>header h2{margin:.25rem 0 .55rem;font-size:clamp(1.7rem,3vw,2.5rem);line-height:1.12;letter-spacing:-.035em}.positioning>header p:last-child{margin:0;color:#635c69;font-size:1.06rem;line-height:1.65}
.positioning-comparison{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.positioning-comparison article,.positioning-plans article{padding:clamp(22px,2.6vw,32px);border:1px solid #ded8e4;border-radius:22px;background:#fff}.positioning-comparison h3,.positioning-plans h3{margin:0 0 10px;color:#1d1529;font-size:1.16rem;line-height:1.35}.positioning-comparison p{margin:0;color:#625b69;font-size:1rem;line-height:1.65}
.positioning-plans-heading{margin-top:20px}.positioning-plans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.positioning-plans article.is-protection{color:#fff;border-color:#352052;background:linear-gradient(145deg,#241735,#513580)}.positioning-plans .is-protection :is(.product-type,h3){color:#fff}.positioning-plans ul{margin:16px 0 0;padding:0;display:grid;gap:10px;list-style:none}.positioning-plans li{position:relative;padding-left:1.55rem;font-size:1rem;line-height:1.5}.positioning-plans li::before{content:'✓';position:absolute;left:0;font-weight:900;color:#14876f}.positioning-plans .is-protection li::before{color:#baf2dc}
.cat-fit-note{padding:20px 24px;border-radius:18px;background:#fff4ec;color:#312839}.cat-fit-note strong{font-size:1.06rem}.cat-fit-note p{margin:.45rem 0 0;max-width:900px;font-size:1rem;line-height:1.65;color:#675e68}.cat-fit-note small{display:block;margin-top:.7rem;font-size:.94rem;line-height:1.55;color:#3d3542;font-weight:700}
@media(max-width:767px){.eshop-page .positioning{width:min(100% - 28px,1180px)}.positioning-comparison,.positioning-plans{grid-template-columns:1fr}}
@media(max-width:767px){
  .eshop-page .badge-transparency-grid{grid-template-columns:1fr}
  .eshop-page .badge-transparency-grid .payment-facts{grid-column:auto}
}
.sales-channel-note{width:100%;padding:clamp(18px,2vw,26px);border:1px solid #dcd5e3;border-radius:20px;display:flex;align-items:center;justify-content:space-between;gap:24px;background:#fff}.sales-channel-note>div{max-width:52rem}.sales-channel-note strong{font-size:1.05rem;color:#352052}.sales-channel-note p{margin:.35rem 0 0;color:#625a69;line-height:1.6}.sales-channel-note>a{flex:0 0 auto;min-height:44px;padding:0 18px;border-radius:999px;display:inline-flex;align-items:center;color:#fff;background:#513580;font-weight:800;text-decoration:none}@media(max-width:720px){.sales-channel-note{align-items:flex-start;flex-direction:column}.sales-channel-note>a{width:100%;justify-content:center}}
@media(max-width:479px){.eshop-page .back{margin-left:60px}}
@media(pointer:coarse){
  .eshop-page :where(.cart-trigger,.first-year-offer a,.product-copy button,.continue,.mobile-menu-sheet a,.mobile-menu-sheet button){min-height:48px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
}
.stepper button {
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
}

@media (pointer: coarse) {
  .stepper button {
    width: 48px;
    height: 48px;
    min-width: 48px;
    min-height: 48px;
  }
}

/* 1.45.85 — one UFoundMe! product, two material variants. */
.eshop-page .shop-intro{margin:0 0 clamp(38px,5vw,72px);padding:clamp(24px,4vw,56px);display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);align-items:end;gap:clamp(24px,5vw,76px);overflow:hidden;border:1px solid #e2dbe8;border-radius:clamp(24px,3vw,40px);background:linear-gradient(135deg,#fff 0 55%,#f4eef9 100%)}
.eshop-page .shop-intro h1{max-width:14ch;margin:0;color:#171327;font-size:clamp(2.45rem,5.4vw,5.7rem);font-weight:690;line-height:.98;letter-spacing:-.055em}.eshop-page .shop-intro>div>p:last-child{max-width:62ch;margin:20px 0 0;color:#625b69;font-size:clamp(1rem,1.2vw,1.14rem);line-height:1.65}
.eshop-page .shop-intro .first-year-offer{align-self:stretch;justify-content:center;padding:clamp(22px,3vw,34px);border-color:#ffffff80;color:#fff;background:linear-gradient(145deg,#241735,#513580)}.eshop-page .shop-intro .first-year-offer p{margin:0;color:#e9e0f1;font-size:.9rem;line-height:1.55}.eshop-page .shop-intro .first-year-offer strong{color:#fff;font-size:clamp(1.2rem,1.7vw,1.55rem)}.eshop-page .shop-intro .first-year-offer span{color:#d9cee3}
.eshop-page .badge-variant-catalog{margin-top:0}.eshop-page .badge-variant-catalog .section-heading{max-width:780px}.eshop-page .badge-variant-catalog .digital-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none}
.eshop-page .badge-variant-catalog .product-card-badge{grid-template-columns:1fr;align-content:start;overflow:hidden}.eshop-page .badge-variant-catalog .product-badge-visual{min-height:clamp(310px,33vw,510px);padding:clamp(20px,3vw,38px);border-radius:25px 25px 0 0;background:radial-gradient(circle at 50% 38%,#fff 0 24%,#f1ebf6 72%)}.eshop-page .badge-variant-catalog .product-badge-visual picture{height:100%;display:grid;place-items:center}.eshop-page .badge-variant-catalog .product-badge-visual img{width:auto;max-width:100%;height:clamp(270px,29vw,450px);max-height:none;filter:drop-shadow(0 22px 24px #1713272b)}
.eshop-page .badge-variant-catalog .product-card-badge.is-selected{border-color:#6d4aa0;box-shadow:0 0 0 4px #6d4aa024,0 24px 60px #251a3d1a}.eshop-page .variant-permalink{color:inherit;text-decoration-thickness:.08em;text-decoration-color:transparent;text-underline-offset:.18em}.eshop-page .variant-permalink:hover,.eshop-page .variant-permalink:focus-visible{text-decoration-color:currentColor}.eshop-page .variant-permalink[aria-current="page"]::after{content:' · sélectionné';color:#6d4aa0;font-size:.56em;font-weight:750;white-space:nowrap}
.eshop-page .badge-variant-catalog .product-copy{min-height:0}.eshop-page .badge-variant-catalog .product-copy>p:not(.product-type){min-height:2.8em}.eshop-page .product-details{margin:22px 0 0;border-top:1px solid #e7e0ea;border-bottom:1px solid #e7e0ea}.eshop-page .product-details summary{min-height:48px;padding:13px 2px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:#342148;font-size:.82rem;font-weight:780;cursor:pointer;list-style:none}.eshop-page .product-details summary::-webkit-details-marker{display:none}.eshop-page .product-details summary::after{content:'+';width:28px;height:28px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#513580;font-size:1.05rem}.eshop-page .product-details[open] summary::after{content:'−'}.eshop-page .product-details dl{margin:0;padding:4px 0 16px;display:grid;gap:9px}.eshop-page .product-details dl div{display:grid;grid-template-columns:minmax(95px,.42fr) minmax(0,1fr);gap:14px}.eshop-page .product-details dt{color:#786f80;font-size:.72rem}.eshop-page .product-details dd{margin:0;color:#2f2835;font-size:.74rem;line-height:1.45;text-align:right}
.eshop-page .ulule-shop-banner{width:100%;margin:clamp(52px,7vw,96px) 0;padding:clamp(18px,2.3vw,30px);display:grid;grid-template-columns:minmax(300px,.9fr) minmax(0,1.1fr);align-items:center;gap:clamp(26px,5vw,72px);overflow:hidden;border-radius:clamp(24px,3vw,38px);color:#fff;background:linear-gradient(135deg,#25143d,#6a3e99)}.eshop-page .ulule-shop-banner figure{min-height:300px;margin:0;overflow:hidden;border-radius:22px}.eshop-page .ulule-shop-banner img{width:100%;height:100%;min-height:300px;display:block;object-fit:cover}.eshop-page .ulule-shop-banner h2{max-width:15ch;margin:0;font-size:clamp(2rem,3.5vw,4rem);line-height:1.02;letter-spacing:-.04em}.eshop-page .ulule-shop-banner p:not(.kicker){max-width:58ch;color:#e7dced;line-height:1.65}.eshop-page .ulule-shop-banner a{min-height:50px;margin-top:8px;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;gap:14px;border-radius:999px;color:#25143d;background:#fff;font-size:.84rem;font-weight:800;text-decoration:none}.eshop-page .ulule-shop-banner a:focus-visible{outline-color:#fff}.eshop-page .ulule-shop-banner ul{margin:18px 0 0;padding:0;display:grid;gap:8px;list-style:none}.eshop-page .ulule-shop-banner li{position:relative;padding-left:22px;color:#f2eaf6;font-size:.9rem;line-height:1.45}.eshop-page .ulule-shop-banner li::before{content:'✓';position:absolute;left:0;color:#ffb29f;font-weight:900}.eshop-page .ulule-shop-actions{margin-top:20px;display:flex;flex-wrap:wrap;gap:10px}.eshop-page .ulule-shop-actions a{margin-top:0}.eshop-page .ulule-shop-actions a.secondary{border:1px solid rgb(255 255 255 / 45%);color:#fff;background:transparent}.eshop-page .ulule-shop-actions a.secondary:hover,.eshop-page .ulule-shop-actions a.secondary:focus-visible{background:rgb(255 255 255 / 12%)}
@media(max-width:1023px){.eshop-page .shop-intro{grid-template-columns:1fr}.eshop-page .shop-intro .first-year-offer{max-width:none}.eshop-page .badge-variant-catalog .product-badge-visual{min-height:360px}.eshop-page .badge-variant-catalog .product-badge-visual img{height:330px}}
@media(max-width:767px){.eshop-page .shop-intro{padding:26px}.eshop-page .badge-variant-catalog .digital-grid,.eshop-page .ulule-shop-banner{grid-template-columns:1fr}.eshop-page .badge-variant-catalog .product-badge-visual{min-height:330px}.eshop-page .badge-variant-catalog .product-badge-visual img{height:300px}.eshop-page .ulule-shop-banner figure{min-height:230px}.eshop-page .ulule-shop-banner img{min-height:230px}.eshop-page .ulule-shop-banner h2{max-width:18ch}}
@media(max-width:479px){.eshop-page .shop-intro{padding:22px;border-radius:24px}.eshop-page .shop-intro h1{font-size:2.25rem}.eshop-page .badge-variant-catalog .product-badge-visual{min-height:290px}.eshop-page .badge-variant-catalog .product-badge-visual img{height:255px}.eshop-page .product-details dl div{grid-template-columns:1fr;gap:3px}.eshop-page .product-details dd{text-align:left}.eshop-page .ulule-shop-banner{padding:14px}.eshop-page .ulule-shop-banner>div{padding:8px 8px 14px}.eshop-page .ulule-shop-actions{display:grid}.eshop-page .ulule-shop-actions a{width:100%}}
@media(max-width:389px){.eshop-page .shop-intro{padding:19px}.eshop-page .shop-intro h1{font-size:2rem}.eshop-page .badge-variant-catalog .product-badge-visual{min-height:250px}.eshop-page .badge-variant-catalog .product-badge-visual img{height:225px}}

/* Optional gift preparation stays a single, calm decision inside the Caddy. */
.cart-gift-option{margin:18px 0;padding:16px;border:1px solid #5135802b;border-radius:16px;display:grid;grid-template-columns:22px minmax(0,1fr);align-items:start;gap:12px;color:#1d1529;background:#f7f3fa;cursor:pointer}
.cart-gift-option input{width:20px;height:20px;margin:2px 0 0;accent-color:#513580}
.cart-gift-option span{min-width:0;display:grid;gap:5px}.cart-gift-option strong{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 12px;font-size:.9rem}.cart-gift-option strong b{color:#513580;font-size:.78rem}.cart-gift-option small{color:#6f6878;font-size:.76rem;line-height:1.45}
.cart-gift-option:has(input:disabled){opacity:.48;cursor:not-allowed}.cart-gift-option:has(input:checked){border-color:#51358066;background:#f0e9f7;box-shadow:0 8px 22px #35205212}
@media(max-width:359px){.cart-gift-option{padding:13px}.cart-gift-option strong{display:grid}}

/* Product transparency: facts first, then the purchase action. */
.eshop-page .badge-transparency{width:100%;margin:0 0 22px;padding:clamp(18px,2.4vw,28px);border:1px solid #dcd5e3;border-radius:22px;background:#fffdfb}
.badge-transparency>header{max-width:58rem;margin-bottom:18px}.badge-transparency>header h3{margin:0;font-size:clamp(1.2rem,2vw,1.65rem);line-height:1.25;letter-spacing:-.025em}
.badge-transparency-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.badge-transparency-grid article{min-width:0;padding:18px;border:1px solid #e7e1eb;border-radius:16px;background:#faf8fb}.badge-transparency-grid h4{margin:0 0 12px;color:#04313c;font-size:.92rem}.badge-transparency-grid strong{display:block;margin-bottom:8px;font-size:.84rem;line-height:1.4}.badge-transparency-grid :is(p,li,small,dt,dd){font-size:.76rem;line-height:1.48}.badge-transparency-grid p{margin:9px 0;color:#514b58}.badge-transparency-grid small{display:block;color:#756d7b}.badge-transparency-grid ul{margin:0;padding-left:1.05rem;color:#514b58}.badge-transparency-grid li+li{margin-top:5px}.badge-facts dl{margin:0}.badge-facts dl div{padding:7px 0;display:grid;grid-template-columns:minmax(7rem,.9fr) minmax(0,1.1fr);gap:10px;border-top:1px solid #e7e1eb}.badge-facts dl div:first-child{border-top:0}.badge-facts dt{color:#756d7b}.badge-facts dd{margin:0;color:#1d1529;font-weight:720;text-align:right}.badge-facts dl div:last-child dd{color:#04313c;font-weight:850}

/* Final-customer purchase facts: two materials first, then logistics. */
.eshop-page .badge-transparency.is-material-comparison{display:grid;gap:22px;background:linear-gradient(145deg,#fffdfb 0 60%,#f7f2fa 100%)}
.eshop-page .is-material-comparison>header{max-width:66rem;margin:0}.eshop-page .is-material-comparison>header p:last-child{max-width:68ch;margin:10px 0 0;color:#625b69;font-size:1rem;line-height:1.65}
.badge-material-grid,.badge-logistics-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.badge-material-card{min-width:0;padding:clamp(18px,2vw,26px);display:grid;grid-template-columns:clamp(104px,12vw,148px) minmax(0,1fr);align-items:center;gap:clamp(18px,2.4vw,30px);border:1px solid #dfd6e6;border-radius:20px;background:#fff;box-shadow:0 16px 36px #28183b0a}
.badge-material-card figure{height:clamp(150px,17vw,210px);margin:0;padding:12px;display:grid;place-items:center;overflow:hidden;border-radius:16px;background:radial-gradient(circle at 50% 40%,#fff 0 28%,#f2ecf6 78%)}
.badge-material-card picture{height:100%;display:grid;place-items:center}.badge-material-card img{width:auto;max-width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 14px 16px #17132724)}
.badge-material-card h4{margin:3px 0 14px;color:#171327;font-size:clamp(1.15rem,1.55vw,1.45rem);line-height:1.2}.badge-material-card dl{margin:0}.badge-material-card dl div{padding:8px 0;display:grid;grid-template-columns:minmax(6.5rem,.7fr) minmax(0,1.3fr);gap:12px;border-top:1px solid #eee8f1}.badge-material-card dt,.badge-material-card dd{font-size:.88rem;line-height:1.45}.badge-material-card dt{color:#756d7b}.badge-material-card dd{margin:0;color:#2d2238;font-weight:720;text-align:right}
.badge-logistics-grid{padding-top:2px}.badge-logistics-card{min-width:0;padding:clamp(20px,2.3vw,28px);border-radius:18px;background:#f5f0f8}.badge-logistics-card h4{margin:0 0 14px;color:#171327;font-size:1.15rem}.badge-logistics-card strong{display:block;margin-bottom:10px;font-size:1rem;line-height:1.5}.badge-logistics-card :is(p,li,small){font-size:1rem;line-height:1.65}.badge-logistics-card p{margin:12px 0;color:#514b58}.badge-logistics-card small{display:block;color:#6b6375}.badge-logistics-card ul{margin:0;padding-left:1.25rem;color:#514b58}.badge-logistics-card li+li{margin-top:7px}
@media(max-width:1023px){.badge-material-card{grid-template-columns:112px minmax(0,1fr)}.badge-material-card figure{height:170px}}
@media(max-width:899px){.badge-material-grid{grid-template-columns:1fr}.badge-material-card{grid-template-columns:140px minmax(0,1fr)}.badge-material-card figure{height:190px}}
@media(max-width:767px){.badge-material-grid,.badge-logistics-grid{grid-template-columns:1fr}.badge-material-card{grid-template-columns:120px minmax(0,1fr)}.badge-material-card figure{height:175px}}
@media(max-width:479px){.eshop-page .badge-transparency.is-material-comparison{gap:16px}.badge-material-card{padding:16px;grid-template-columns:88px minmax(0,1fr);gap:14px}.badge-material-card figure{height:132px;padding:8px}.badge-material-card .product-type{display:none}.badge-material-card h4{margin-top:0;font-size:1.08rem}.badge-material-card dl div{grid-template-columns:1fr;gap:2px}.badge-material-card dd{text-align:left}.badge-material-card dt,.badge-material-card dd{font-size:.82rem}.badge-logistics-card{padding:18px}}
@media(max-width:359px){.badge-material-card{grid-template-columns:76px minmax(0,1fr);padding:14px}.badge-material-card figure{height:116px}.badge-material-card dt,.badge-material-card dd{font-size:.78rem}}

/* Readable commercial information ---------------------------------------
   Buying facts are decision content, never fine print. Keep a 16 px floor
   and enough vertical rhythm for scanning at the 1200–1300 px breakpoint. */
.eshop-page{font-size:16px}
.eshop-page .kicker,.eshop-page .product-type{font-size:.8rem;line-height:1.45}
.eshop-page .hero-copy>p:last-child{font-size:clamp(1.08rem,1.3vw,1.22rem);line-height:1.7}
.eshop-page .first-year-offer span{font-size:1rem;line-height:1.6}
.eshop-page .first-year-offer a,.eshop-page .product-copy button,.eshop-page .cart-panel form button,.eshop-page .continue{font-size:.9rem;line-height:1.35}
.eshop-page .product-copy>p:not(.product-type){font-size:1rem;line-height:1.7}
.eshop-page .activation-information h3{font-size:1.12rem;line-height:1.4}
.eshop-page .activation-information p:last-child{font-size:1rem;line-height:1.65}
.eshop-page .badge-transparency{padding:clamp(24px,2.8vw,36px)}
.eshop-page .badge-transparency>header{margin-bottom:24px}
.eshop-page .badge-transparency>header h3{font-size:clamp(1.5rem,2vw,1.85rem);line-height:1.25}
.eshop-page .badge-transparency-grid{gap:16px}
.eshop-page .badge-transparency-grid article{padding:clamp(20px,2vw,26px)}
.eshop-page .badge-transparency-grid h4{margin-bottom:16px;font-size:1.12rem;line-height:1.35}
.eshop-page .badge-transparency-grid strong{margin-bottom:10px;font-size:1rem;line-height:1.5}
.eshop-page .badge-transparency-grid :is(p,li,small,dt,dd){font-size:1rem;line-height:1.65}
.eshop-page .badge-transparency-grid p{margin:12px 0}
.eshop-page .badge-transparency-grid ul{padding-left:1.25rem}
.eshop-page .badge-transparency-grid li+li{margin-top:8px}
.eshop-page .badge-facts dl div{padding:11px 0;gap:14px}
@media(max-width:599px){
  .eshop-page .badge-transparency{padding:20px}
  .eshop-page .badge-transparency-grid article{padding:20px}
  .eshop-page .badge-transparency-grid :is(p,li,small,dt,dd){font-size:1rem}
}
/* Three sold models side by side, to scale. */
.eshop-page .badge-trio{margin:0 auto clamp(16px,3vw,32px);max-width:960px;border-radius:24px;overflow:hidden;background:#fff}
.eshop-page .badge-trio img{display:block;width:100%;height:auto}
@media(min-width:900px){.eshop-page .badge-variant-catalog .digital-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* Three models side by side when there is room; one per row below. */
@media(min-width:1280px){.badge-material-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.badge-material-card{grid-template-columns:120px minmax(0,1fr)}}
@media(min-width:1280px){.badge-material-card dl>div{display:grid;grid-template-columns:1fr;gap:2px}.badge-material-card dl dd{text-align:left;margin:0}}

/* source: mobile-first.css */
/**
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Mise en page mobile-first de référence : base petit écran, enrichissements pour tablette et bureau, cibles tactiles et dock mobile.
 * @purpose-en Reference mobile-first layout: small-screen base, tablet and desktop enhancements, touch targets and mobile dock.
 * @audit-scope asset
 * @inputs-fr Aucune entrée ; fichier statique, chargé en dernier dans la couche responsive du bundle marketing.
 * @inputs-en No input; static file, loaded last in the responsive layer of the marketing bundle.
 * @effects-fr Règles de gabarit et variables --ufm-header-h, --ufm-dock-h, --ufm-safe-bottom ; aucune sortie dynamique.
 * @effects-en Layout rules and the --ufm-header-h, --ufm-dock-h, --ufm-safe-bottom variables; no dynamic output.
 *
 * @file Presentation layer for mobile first.
 *
 * Mobile-first responsive styling only; preserve touch targets, fluid containment and the seven-breakpoint contract.
 */

/* UFoundMe! mobile-first layout authority.
   Base = small touch screen. Enhancements are added progressively for
   tablets and desktops. This file must remain the last stylesheet loaded. */

:root{
  --ufm-header-h:60px;
  --ufm-dock-h:68px;
  --ufm-safe-bottom:calc(var(--ufm-dock-h) + env(safe-area-inset-bottom));
}

html,body{max-width:100%;overflow-x:clip}
[hidden]{display:none}
body *,body *::before,body *::after{min-width:0}
button,a,input,select,textarea{touch-action:manipulation}
button,a,[role="button"]{-webkit-tap-highlight-color:transparent}

/* Header: the logo, cart and black menu are the only persistent landmarks
   on mobile and tablet. Explicit positioning prevents injected account
   controls from pushing them outside the viewport. */
.topbar{
  width:100%;height:var(--ufm-header-h);min-height:var(--ufm-header-h);
  padding:0 8px;position:fixed;top:0;right:0;left:0;z-index:110;
  display:flex;align-items:center;background:#fffdfb;
}
main{padding-top:var(--ufm-header-h)}
/* The shop header is fixed too, but its opening hero needs a visible reading
   gap in addition to the header reserve. Keep that gap fluid so the kicker
   never touches or slips behind the header at any of the seven widths. */
.eshop-page main{
  padding-top:calc(var(--ufm-header-h) + clamp(30px,3.5vw,54px));
}
.view{scroll-margin-top:var(--ufm-header-h)}
.topbar>.logo{display:flex;align-items:center;margin:0;position:relative;z-index:2}
.topbar>.logo img{width:clamp(96px,31vw,126px);height:auto;display:block}
.topbar>nav,.topbar>.account-actions,.topbar>.compact-header-actions{display:none}
.topbar>.mobile-cart-trigger{
  width:64px;min-width:64px;height:44px;min-height:44px;
  padding:0 8px;position:absolute;right:60px;top:8px;
  display:inline-flex;align-items:center;justify-content:center;gap:5px;
  overflow:visible;border:1px solid #ddd5de;border-radius:999px;background:#fff;
}
.topbar>.mobile-cart-trigger>img{
  width:19px;min-width:19px;max-width:19px;height:19px;
  flex:0 0 19px;display:block;object-fit:contain;
  opacity:1;visibility:visible;filter:none;
}
.topbar>.mobile-cart-trigger>b{
  min-width:22px;width:auto;height:22px;padding:0 5px;
  flex:0 0 auto;position:relative;display:grid;place-items:center;
  border-radius:999px;color:#fff;background:#513580;font-size:.58rem;line-height:1;
}
.topbar>.mobile-cart-trigger span{display:none}
.topbar>.wide-menu-trigger{
  width:44px;min-width:44px;height:44px;min-height:44px;
  padding:0;position:absolute;right:8px;top:8px;
  display:inline-flex;align-items:center;justify-content:center;border:1px solid #000;
  border-radius:50%;color:#fff;background:#000;
}
.topbar>.wide-menu-trigger span{display:none}
.topbar>.wide-menu-trigger img{width:18px;height:18px;filter:invert(1)}

/* Mobile home: one calm reading path. Never place the product beside copy. */
.hero.active{
  width:100%;height:auto;min-height:0;max-height:none;
  padding:24px 16px calc(210px + env(safe-area-inset-bottom));
  display:grid;grid-template-columns:minmax(0,1fr);
  grid-template-rows:auto auto;gap:28px;
  align-items:start;align-content:start;overflow:visible;
}
.hero.active>.hero-copy{
  grid-column:1;grid-row:1;width:100%;max-width:680px;
  margin:0 auto;text-align:left;align-self:start;
}
.hero.active .kicker{margin:0 0 12px;font-size:.68rem;line-height:1.35;letter-spacing:.14em}
.hero.active .hero-promise{
  max-width:20ch;margin:0;font-size:clamp(2rem,10.5vw,2.75rem);
  line-height:1.08;letter-spacing:-.035em;
}
.hero.active .hero-copy>p:not(.kicker){max-width:58ch;margin:16px 0;font-size:1rem;line-height:1.58}
.hero.active .hero-how{margin:18px 0;padding:15px 0}
.hero.active .hero-how>strong{font-size:.72rem;letter-spacing:.1em}
.hero.active .hero-how ol{margin-top:10px;display:grid;grid-template-columns:1fr;gap:8px}
.hero.active .hero-how li{
  min-height:58px;padding:10px 12px;display:grid;
  grid-template-columns:32px minmax(0,1fr);align-items:center;gap:10px;
}
.hero.active .hero-how li::before{width:32px;height:32px}
.hero.active .hero-how span{font-size:.84rem;line-height:1.3}
.hero.active .hero-how small{font-size:.72rem;line-height:1.35}
.hero.active .actions{display:grid;grid-template-columns:1fr;gap:9px}
.hero.active .actions>*{width:100%;min-height:48px;justify-content:center}
.hero.active .actions .primary{height:auto;padding-block:12px;white-space:normal;text-align:center;line-height:1.2}
.hero.active .proof{gap:8px 12px;margin-top:16px}
.hero.active>.hero-product{
  grid-column:1;grid-row:2;width:100%;max-width:680px;
  margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr);
  gap:14px;align-items:start;
}
.hero.active .hero-visual{
  width:100%;min-height:455px;margin:0 auto;
  display:grid;place-items:center;overflow:visible;transform:none;
}
.hero.active .hero-visual .visual-phone{width:238px;min-height:430px}
.hero.active .hero-visual .pet-preview{min-height:410px}
.hero.active .hero-visual .real-badge{width:74px;left:calc(50% - 156px);bottom:52px}
.hero.active .hero-price{
  width:100%;max-width:680px;margin:0;padding:17px;
  display:grid;grid-template-columns:1fr 1px 1fr;gap:12px;
}
.hero.active .hero-price>header{grid-column:1/-1}
.hero.active .hero-price strong{overflow-wrap:anywhere}

/* Floating UI: one collision-free rail. Content gets an equivalent bottom
   reserve, so the privacy notice and app dock never conceal the last CTA. */
.mobile-app-nav{
  width:100%;max-width:none;height:var(--ufm-dock-h);
  right:0;bottom:0;left:0;border-radius:0;z-index:100;
  padding-bottom:env(safe-area-inset-bottom);
}
.mobile-app-nav>button{min-width:0;min-height:52px}
.mobile-app-nav img{filter:brightness(0) saturate(100%) invert(20%);opacity:1}
.mobile-app-nav>button.active img{filter:brightness(0) saturate(100%) invert(20%)}
.ufm-utility-toggle,.ufm-help-button{display:none}
.ufm-readability-button{
  width:auto;min-width:112px;height:48px;padding:0 14px 0 8px;
  right:auto;bottom:var(--ufm-readability-bottom,calc(var(--ufm-safe-bottom) + 12px));left:12px;
  display:flex;border:1px solid #ddd5de;border-radius:999px;z-index:88;
}
.layout-floating-menu{
  width:48px;min-width:48px;height:48px;right:12px;
  bottom:calc(var(--ufm-safe-bottom) + 12px);left:auto;padding:4px;
  display:grid;grid-template-columns:1fr;border-radius:50%;z-index:107;
}
.layout-floating-menu>i{width:38px;height:38px;border-radius:50%}
.layout-floating-menu>span,.layout-floating-menu>b{display:none}
body.ufm-utility-open .layout-floating-menu{opacity:0;visibility:hidden;pointer-events:none}
.site-footer{padding-bottom:calc(220px + env(safe-area-inset-bottom))}

/* Compact phones: keep labels readable and shorten the visual before adding
   a second column. */
@media(max-width:359px){
  .hero.active{padding-right:12px;padding-left:12px}
  .hero.active .hero-promise{font-size:1.92rem}
  .hero.active .hero-visual .visual-phone{width:218px}
  .hero.active .hero-visual .real-badge{left:calc(50% - 144px)}
  .hero.active .hero-price{grid-template-columns:1fr}
  .hero.active .hero-price>i{width:100%;height:1px}
}

.mobile-sheet-tools{padding-top:13px;border-top:1px solid #e6e1dc;display:grid;gap:9px}
.mobile-sheet-tools h2{margin:0;color:#665e70;font-size:.65rem;letter-spacing:.1em;text-transform:uppercase}
.mobile-sheet-tools>div{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mobile-sheet-tools :is(a,button){
  min-height:48px;padding:9px 11px;border:1px solid #e6e1dc;border-radius:14px;display:flex;align-items:center;gap:9px;
  color:#171327;background:#fff;text-align:left;text-decoration:none;font:750 .7rem/1.25 Lexend,system-ui,sans-serif;
}
.mobile-sheet-tools :is(a,button):hover,.mobile-sheet-tools :is(a,button):focus-visible{border-color:#513580;background:#f7f3fb;outline:0}
.mobile-sheet-tools img{width:19px;height:19px}.mobile-sheet-tools .menu-aa{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#513580;font-size:.58rem}
.mobile-sheet-account-priority{
  order:-1;padding:10px;border:1px solid #e4dce8;border-radius:18px;
  background:#f8f4fa;
}
.mobile-menu-sheet>header{order:-2}
.mobile-sheet-account-priority :is(a,button){min-height:48px;font-size:.72rem}
.mobile-sheet-account-priority .primary{background:#171327;color:#fff}

/* Optical alignment of the real five-cent coin with its daily-price label. */
.hero.active .hero-price>div:last-child>span{
  width:max-content;max-width:100%;display:inline-flex;
  align-items:center;justify-content:flex-start;gap:10px;
  line-height:1.35;
}
.hero.active .hero-price>div:last-child>span>.daily-price-coin{
  align-self:center;margin-block:0;vertical-align:middle;
}

/* Large phone. */
@media(min-width:360px){
  .hero.active{padding-right:20px;padding-left:20px}
}

/* Small tablet: remain one-column. This eliminates the old 600 px squeezed
   phone/price composition. */
@media(min-width:600px){
  :root{--ufm-header-h:64px}
  .topbar{padding:0 16px}.topbar>.logo img{width:140px}
  .topbar>.mobile-cart-trigger{right:68px;top:10px}
  .topbar>.wide-menu-trigger{right:16px;top:10px}
  .hero.active{padding:30px clamp(28px,6vw,56px) calc(88px + env(safe-area-inset-bottom));gap:30px}
  .hero.active .hero-promise{font-size:clamp(2.5rem,7vw,3.2rem)}
  .hero.active .hero-how ol{grid-template-columns:repeat(3,minmax(0,1fr))}
  .hero.active .hero-how li{grid-template-columns:30px minmax(0,1fr);padding:9px}
  .hero.active .hero-visual{min-height:500px}
  .hero.active .hero-visual .visual-phone{width:270px;min-height:480px}
  .hero.active .hero-visual .pet-preview{min-height:460px}
  .hero.active .hero-visual .real-badge{left:calc(50% - 190px)}
}

/* Portrait tablet: preserve the decision context before the product proof.
   The two regions stay full-width and the actions can use the available room. */
@media(min-width:768px) and (max-width:1023px){
  .hero.active{grid-template-rows:auto auto;gap:0}
  .hero.active>.hero-copy{grid-row:1}
  .hero.active>.hero-product{grid-row:2}
  .hero.active .actions{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hero.active .hero-visual{min-height:470px}
  .hero.active .hero-visual .visual-phone{width:270px;min-height:460px}
}

/* Landscape tablet: introduce the first two-column composition. */
@media(min-width:1024px){
  :root{--ufm-header-h:68px}
  .topbar{padding:0 20px}.topbar>.logo img{width:148px}
  .topbar>.mobile-cart-trigger{right:72px;top:12px}
  .topbar>.wide-menu-trigger{right:20px;top:12px}
  .hero.active{
    padding:clamp(34px,5vh,62px) clamp(32px,5vw,72px) calc(210px + env(safe-area-inset-bottom));
    grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);
    grid-template-rows:auto;gap:clamp(28px,5vw,70px);align-items:center;
  }
  .hero.active>.hero-copy{grid-column:1;grid-row:1;max-width:700px}
  .hero.active>.hero-product{grid-column:2;grid-row:1;max-width:560px}
  .hero.active .hero-promise{font-size:clamp(2.55rem,4vw,3.7rem)}
  .hero.active .hero-visual{min-height:500px}
  .hero.active .hero-price{max-width:520px}
  .site-footer{padding-bottom:calc(210px + env(safe-area-inset-bottom))}
}

/* Desktop: bottom navigation is removed and the document returns to normal
   flow. The compact black menu remains a visible, reliable entry point. */
@media(min-width:1024px){
  :root{--ufm-header-h:74px;--ufm-dock-h:0px}
  .topbar{height:var(--ufm-header-h);min-height:var(--ufm-header-h);padding:0 clamp(28px,4vw,64px)}
  .topbar>.logo img{width:158px}
  .topbar>.mobile-cart-trigger{display:none}
  .topbar>.wide-menu-trigger{right:clamp(28px,4vw,64px);top:15px}
  .mobile-app-nav{display:none}
  .hero.active{padding-bottom:56px}
  .ufm-readability-button{right:auto;bottom:18px;left:18px}
  .layout-floating-menu{right:18px;bottom:18px}
  .site-footer{padding-bottom:150px}
}

/* Wide desktop can expose the route navigation, but only after enough room
   exists for every label and account action. */
@media(min-width:1760px){
  .topbar{display:grid;grid-template-columns:180px 92px minmax(690px,1fr) minmax(320px,390px);gap:15px}
  .topbar>.logo{grid-column:1}.topbar>.wide-menu-trigger{grid-column:2;position:static;width:auto;min-width:88px;border-radius:999px}
  .topbar>.wide-menu-trigger span{display:inline}
  .topbar>nav{grid-column:3;display:flex;align-items:center;justify-content:center;gap:clamp(9px,.75vw,15px)}
  .topbar>nav a{min-height:44px;display:inline-flex;align-items:center;white-space:nowrap;font-size:.7rem}
}

/* The language/account capsule is injected independently from the header.
   Reserve its complete width so the black hamburger can never sit underneath
   it on compact and standard desktop widths. */
@media(min-width:1280px) and (max-width:1439px){
  .topbar>.wide-menu-trigger{right:calc(28px + 380px)}
}
@media(min-width:1440px) and (max-width:1759px){
  .topbar>.wide-menu-trigger{right:calc(clamp(28px,4vw,64px) + 400px)}
}
@media(min-width:1024px) and (max-width:1279px){
  /* Landscape tablets have three independent trailing controls. Keeping the
     account/language capsule before cart and menu prevents the 1 100 px
     collision without hiding authentication or reducing touch targets. */
  html body:has(>.topbar)>.ufm-global-controls{
    top:7px;right:168px;left:auto;transform:none;
  }
  .topbar>.mobile-cart-trigger{right:76px}
  .topbar>.wide-menu-trigger{right:20px}

  /* Keep one stable first-screen product scale throughout the official
     landscape-tablet range. The previous vw clamps made the same composition
     54 px taller at 1279 px than at 1024 px. */
  body:has(.hero.active) .hero.active .hero-visual .visual-phone{width:306px;min-height:558px}
  body:has(.hero.active) .hero.active .hero-visual .pet-preview{min-height:525px}
}
@media(min-width:768px) and (max-width:1023px){
  body:has(.ufm-global-controls:not(.ufm-guest-controls)) .ufm-global-controls{right:124px}
}
@media(max-width:767px){
  .ufm-readability-button{width:48px;min-width:48px;padding:0;justify-content:center}
  .ufm-readability-button>span{display:none}
  body:has(.ufm-global-controls:not(.ufm-guest-controls)) .ufm-global-controls{right:124px;left:auto;transform:translateY(-50%)}
}

/* SOME marks live on a dark surface. Force a single high-contrast white
   treatment regardless of the original SVG fill colour. */
html body .ufm-footer-social-actions button img{
  opacity:1;
  filter:brightness(0) saturate(100%) invert(100%);
}

@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto;transition-duration:.01ms;animation-duration:.01ms;animation-iteration-count:1}}

/* Badge route: one message, three short proofs and an explicit next action. */
.principle-view[data-view="badge"]{overflow:hidden}
.principle-view[data-view="badge"] .principle-copy{max-width:650px}
.principle-view[data-view="badge"] .badge-promise{max-width:13ch;font-size:clamp(2.1rem,5vw,3.65rem);line-height:1.02;text-wrap:balance}
.principle-view[data-view="badge"] .badge-promise span{display:block}
.principle-view[data-view="badge"] .principle-copy>p:not(.kicker){max-width:58ch;margin-block:18px 22px}
.principle-view[data-view="badge"] .principle-steps{gap:10px;margin-bottom:22px}
.principle-view[data-view="badge"] .principle-steps li{min-height:64px;padding:12px 16px;grid-template-columns:1fr}
.principle-view[data-view="badge"] .principle-steps strong{font-weight:650}
.badge-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;width:100%}
.badge-actions .primary{grid-column:1/-1}
.badge-actions>button{white-space:normal;text-align:center}
.badge-action-link{border-color:#4b2e83;color:#4b2e83}
.badge-stage .principle-badge{animation:ufmBadgePlay 5.5s ease-in-out infinite;transform-origin:50% 18%;will-change:transform,filter}
.badge-price-card{min-width:138px;gap:2px;border:1px solid #eadfe9;box-shadow:none}
.badge-price-card small{color:#4b2e83;font-size:.875rem;font-weight:650;letter-spacing:.06em}
.badge-price-card strong{line-height:1.1}
.badge-price-card span{font-size:.875rem;font-weight:500;color:#4b2e83}
@keyframes ufmBadgePlay{0%,100%{filter:drop-shadow(0 16px 18px rgba(23,19,39,.18));transform:rotate(-7deg) translateY(0) scale(1.3)}50%{filter:drop-shadow(0 24px 24px rgba(23,19,39,.27));transform:rotate(-3deg) translateY(-10px) scale(1.33)}}

@media(max-width:599px){
  .principle-view[data-view="badge"]{padding:26px 14px calc(var(--ufm-dock-h) + 28px);grid-template-columns:minmax(0,1fr);gap:20px}
  .principle-view[data-view="badge"] .principle-copy{display:contents}
  .principle-view[data-view="badge"] .principle-copy>.kicker{order:1;margin-bottom:-8px}
  .principle-view[data-view="badge"] .badge-promise{order:2}
  .principle-view[data-view="badge"] .principle-copy>p:not(.kicker){order:3;margin-block:-4px 0}
  .principle-view[data-view="badge"] .principle-visual{order:4;width:100%}
  .principle-view[data-view="badge"] .principle-steps{order:5;width:100%}
  .principle-view[data-view="badge"] .badge-actions{order:6;width:100%}
  .principle-view[data-view="badge"] .badge-promise{font-size:clamp(2rem,10vw,2.55rem)}
  .principle-view[data-view="badge"] .principle-steps li{min-height:58px}
  .badge-actions>button{width:100%;padding-inline:14px;font-size:1rem}
  .principle-view[data-view="badge"] .principle-visual{min-height:360px;transform:none}
  .badge-stage .principle-badge{width:180px}
  .badge-price-card{right:14px;bottom:14px}
}

/* QR route on small phones: show the scannable proof immediately after the
   promise, before the explanatory steps and purchase actions. */
@media(max-width:599px){
  .qr-principle{padding:26px 14px calc(var(--ufm-dock-h) + 28px);grid-template-columns:minmax(0,1fr);align-items:start;gap:20px}
  .qr-principle .principle-copy{display:contents}
  .qr-principle .principle-copy>.kicker{order:1;margin-bottom:-8px}
  .qr-principle .principle-copy>h1{order:2;font-size:clamp(2rem,10vw,2.55rem);line-height:1.02}
  .qr-principle .principle-copy>p:not(.kicker){order:3;margin-block:-4px 0}
  .qr-principle .qr-demo-stage{order:4;width:100%;min-height:0;padding:8px 0;transform:none}
  .qr-principle .demo-qr-card{width:min(250px,82vw)}
  .qr-principle .principle-steps{order:5;width:100%}
  .qr-principle .purchase-actions{order:6;width:100%}
}
@media(min-width:600px) and (max-width:767px){
  .principle-view[data-view="badge"]{padding:34px 24px calc(var(--ufm-dock-h) + 38px);gap:28px}
  .principle-view[data-view="badge"] .principle-visual{min-height:450px;transform:none}
}
@media(min-width:768px) and (max-width:1279px){
  .principle-view[data-view="badge"]{padding:36px clamp(30px,5vw,58px) calc(var(--ufm-dock-h) + 42px);grid-template-columns:minmax(0,1fr) minmax(330px,.9fr);gap:clamp(28px,4vw,54px)}
  .principle-view[data-view="badge"] .principle-visual{min-height:480px;transform:none}
}
@media(min-width:1280px){
  .principle-view[data-view="badge"]{grid-template-columns:minmax(420px,.95fr) minmax(520px,1.05fr);gap:clamp(54px,6vw,94px);padding-block:clamp(44px,6vh,70px)}
  .principle-view[data-view="badge"] .principle-visual{min-height:520px}
}
@media(prefers-reduced-motion:reduce){.badge-stage .principle-badge{animation:none;transform:rotate(-7deg) scale(1.3)}}

/* iPhone 14 and neighbouring 390 px phones. The owner row previously gave
   the name almost no inline space, which made it grow vertically and distorted
   the handset. The price components also need a single-column reading order. */
@media(min-width:360px) and (max-width:767px){
  .hero.active{padding-bottom:calc(var(--ufm-dock-h) + 20px + env(safe-area-inset-bottom))}
  .site-footer{padding-bottom:calc(var(--ufm-dock-h) + 28px + env(safe-area-inset-bottom))}
  .hero.active .hero-visual{min-height:500px}
  .hero.active .hero-visual .visual-phone{width:232px;min-height:422px;padding:10px;border-radius:38px}
  .hero.active .hero-visual .pet-preview{min-height:400px;padding:25px 12px 12px}
  .hero.active .hero-visual .pet-preview footer{min-height:58px;margin-top:auto;padding:8px;grid-template-columns:32px minmax(64px,1fr) auto;gap:6px;align-items:center}
  .hero.active .hero-visual .pet-preview footer .avatar{width:32px;height:32px}
  .hero.active .hero-visual .pet-preview footer span:nth-child(2){min-width:0}
  .hero.active .hero-visual .pet-preview footer small{font-size:.42rem;line-height:1.15;white-space:nowrap}
  .hero.active .hero-visual .pet-preview footer strong{font-size:.68rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hero.active .hero-visual .pet-preview footer button{padding:6px 0;font-size:.5rem;line-height:1.2;white-space:nowrap}
  .hero.active .hero-visual .real-badge{width:72px;left:calc(50% - 151px);bottom:46px}
  .hero.active .hero-price{grid-template-columns:minmax(0,1fr);gap:0;padding:16px}
  .hero.active .hero-price>header{grid-column:1;margin-bottom:2px}
  .hero.active .hero-price>i{display:none}
  .hero.active .hero-price>div{min-width:0;padding:13px 0;border:0;border-bottom:1px solid #e2dcd6}
  .hero.active .hero-price>div:last-child{padding:13px 0 0;border:0}
  .hero.active .hero-price small,.hero.active .hero-price strong,.hero.active .hero-price>div>span{justify-content:flex-start}
  .hero.active .hero-price>header strong{font-size:.88rem;line-height:1.4;overflow-wrap:normal;word-break:normal;white-space:normal}
  .hero.active .hero-price>div>strong{font-size:1.45rem;overflow-wrap:normal;word-break:normal;white-space:nowrap}
  .hero.active .hero-price>div>strong em{font-size:.72rem}
  .hero.active .hero-price>div>span{min-height:0;font-size:.68rem}
  .hero.active .daily-price-coin{width:44px;height:44px;flex-basis:44px}
}

/* Phones, including large 600-767 px handsets, read and can act on the promise
   before secondary proof. display:contents keeps one semantic card in the DOM
   while the visual order remains independent from the accessible source order.
   The tablet composition starts explicitly at 768 px. */
@media(max-width:767px){
  .hero.active{display:flex;align-items:stretch;flex-direction:column}
  .hero.active>.hero-copy,.hero.active>.hero-product{display:contents}
  .hero.active>.hero-copy>.kicker{order:1}
  .hero.active>.hero-copy>.hero-promise{order:2}
  .hero.active>.hero-copy>p:not(.kicker){order:3}
  .hero.active>.hero-copy>.actions{order:4;width:100%}
  .hero.active>.hero-copy>.hero-how{order:5;width:100%}
  .hero.active .hero-visual{order:6;width:100%;min-height:480px;margin:4px auto 8px}
  .hero.active>.hero-copy>.ufm-purchase-assurance.is-home{order:7;width:100%}
  .hero.active>.hero-copy>.proof{order:8;width:100%}
  .hero.active .hero-price{order:9;width:100%;margin:12px 0 0}
  .hero.active>.hero-meo-promo{order:10;width:100%}
  .hero.active .hero-visual .visual-phone{width:min(224px,calc(100vw - 72px));min-height:408px;padding:9px;border-width:7px;border-radius:36px;transform:rotate(-.6deg);box-shadow:0 24px 55px #40304d2b}
  .hero.active .hero-visual .visual-phone .visual-island{width:76px;height:17px}
  .hero.active .hero-visual .pet-preview{min-height:390px;padding-top:24px;border-radius:27px}
  .hero.active .hero-visual .pet-preview footer{min-height:58px;margin-top:auto;padding:8px;grid-template-columns:32px minmax(58px,1fr) auto;gap:6px;align-items:center}
  .hero.active .hero-visual .pet-preview footer .avatar{width:32px;height:32px}
  .hero.active .hero-visual .pet-preview footer span:nth-child(2){min-width:0}
  .hero.active .hero-visual .pet-preview footer small{font-size:.42rem;line-height:1.15;white-space:nowrap}
  .hero.active .hero-visual .pet-preview footer strong{font-size:.68rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hero.active .hero-visual .pet-preview footer button{padding:6px 0;font-size:.5rem;line-height:1.2;white-space:nowrap}

  /* The owner row must remain a three-part control inside the narrow phone.
     Explicit intrinsic sizing prevents WebKit/Chrome from shrinking the owner
     name to one character per line when text scaling or stale theme rules are
     present. */
  .hero.active .hero-visual .pet-preview footer{
    width:100%;box-sizing:border-box;overflow:hidden;
    grid-template-columns:32px minmax(0,1fr) max-content;
  }
  .hero.active .hero-visual .pet-preview footer>span:nth-of-type(2){
    width:auto;min-width:0;max-width:none;
    display:flex;align-items:flex-start;justify-content:center;
    flex-direction:column;overflow:hidden;
    word-break:keep-all;overflow-wrap:normal;
  }
  .hero.active .hero-visual .pet-preview footer>span:nth-of-type(2)>small,
  .hero.active .hero-visual .pet-preview footer>span:nth-of-type(2)>strong{
    width:100%;max-width:100%;display:block;
    word-break:keep-all;overflow-wrap:normal;white-space:nowrap;
  }
  .hero.active .hero-visual .pet-preview footer button{
    width:auto;min-width:max-content;max-width:none;
    word-break:keep-all;overflow-wrap:normal;
  }
  .hero.active .hero-visual .real-badge{width:68px;left:calc(50% - 145px);bottom:44px}
  .hero.active .hero-visual .aura-one{width:260px;height:260px}
  .hero.active .hero-visual .aura-two{width:116px;height:116px}
  .hero.active .hero-price{grid-template-columns:minmax(0,1fr);gap:0;padding:16px}
  .hero.active .hero-price>header{grid-column:1;margin-bottom:2px}
  .hero.active .hero-price>i{display:none}
  .hero.active .hero-price>div{min-width:0;padding:13px 0;border:0;border-bottom:1px solid #e2dcd6}
  .hero.active .hero-price>div:last-child{padding:13px 0 0;border:0}
  .hero.active .hero-price small,.hero.active .hero-price strong,.hero.active .hero-price>div>span{justify-content:flex-start}
  .hero.active .hero-price>header strong{font-size:.88rem;line-height:1.4;white-space:normal}
  .hero.active .hero-price>div>strong{font-size:1.45rem;overflow-wrap:normal;word-break:normal;white-space:nowrap}
  .hero.active .hero-price>div>strong em{font-size:.72rem}
  .hero.active .hero-price>div>span{min-height:0;font-size:.68rem}
  .hero.active .daily-price-coin{width:44px;height:44px;flex-basis:44px}
}
@media(max-width:359px){
  .hero.active{padding-bottom:calc(var(--ufm-dock-h) + 16px + env(safe-area-inset-bottom))}
  .site-footer{padding-bottom:calc(var(--ufm-dock-h) + 24px + env(safe-area-inset-bottom))}
  .hero.active .hero-visual{min-height:460px}
  .hero.active .hero-visual .visual-phone{width:min(214px,calc(100vw - 64px))}
  .hero.active .hero-visual .real-badge{left:calc(50% - 137px)}
}

/* Mobile home composition: promise, lead, action, explanation, product, proof.
   The explicit assurance order prevents its unclassified flex item from
   defaulting to order 0 and appearing above the main heading. */
@media(max-width:767px){
  .hero.active{grid-template-rows:auto auto auto auto auto auto auto auto;gap:0}
  .hero.active>.hero-copy,.hero.active>.hero-product{display:contents}
  .hero.active .kicker,.hero.active .hero-promise,.hero.active .hero-copy>p:not(.kicker),
  .hero.active .hero-visual,.hero.active .hero-how,.hero.active .actions,
  .hero.active .proof,.hero.active .hero-price{grid-column:1;width:100%;max-width:680px;margin-right:auto;margin-left:auto}
  .hero.active .kicker{grid-row:1}
  .hero.active .hero-promise{grid-row:2}
  .hero.active .hero-copy>p:not(.kicker){grid-row:3;margin-bottom:8px}
  .hero.active .actions{grid-row:4}
  .hero.active .hero-how{grid-row:5;margin-top:10px}
  .hero.active .hero-visual{
    grid-row:6;min-height:414px;margin-top:2px;margin-bottom:8px;
    position:relative;isolation:isolate;border:1px solid #e8dfeb;border-radius:32px;
    background:radial-gradient(circle at 50% 45%,#fff 0 28%,#f5eef9 62%,#fff7f2 100%);
    box-shadow:inset 0 1px #fff,0 18px 45px #34204412;
  }
  .hero.active .hero-visual::after{width:128px;height:20px;bottom:15px;left:50%;z-index:-1;position:absolute;border-radius:50%;background:#30203c24;filter:blur(10px);content:"";transform:translateX(-50%)}
  .hero.active .hero-visual .visual-phone{
    width:min(238px,calc(100vw - 82px));min-height:398px;padding:8px;
    border-width:7px;border-radius:34px;box-shadow:0 22px 44px #30203c31,0 4px 10px #30203c1f;
    transform:rotate(-1.2deg);transform-origin:center 72%;
  }
  .hero.active .hero-visual .visual-island{width:82px;height:18px;top:3px;border-radius:0 0 12px 12px}
  .hero.active .hero-visual .pet-preview{min-height:382px;padding:24px 12px 11px;border-radius:25px}
  .hero.active .hero-visual .pet-preview>img{width:104px;height:104px;margin:12px auto 7px;border-width:5px;box-shadow:0 8px 20px #30203c25}
  .hero.active .hero-visual .pet-preview h2{font-size:1.75rem;line-height:1}
  .hero.active .hero-visual .pet-preview footer{padding:8px;border-radius:14px}
  .hero.active .hero-visual .real-badge{width:70px;left:calc(50% - 150px);bottom:42px;z-index:4;filter:drop-shadow(0 12px 13px #30203c3b);transform:rotate(-8deg)}
  .hero.active .hero-visual .aura-one{width:260px;height:260px;opacity:.65}.hero.active .hero-visual .aura-two{width:116px;height:116px;opacity:.72}
  .hero.active .hero-visual .fub-illustrative-note{top:12px;z-index:6;max-width:calc(100% - 30px);white-space:normal;text-align:center}
  .hero.active .ufm-purchase-assurance.is-home{grid-row:7}
  .hero.active .proof{grid-row:8}
  .hero.active .hero-price{grid-row:9;margin-top:18px}
}
@media(max-width:359px){
  .hero.active .hero-visual{min-height:390px;border-radius:26px}
  .hero.active .hero-visual .visual-phone{width:min(216px,calc(100vw - 72px));min-height:374px}
  .hero.active .hero-visual .pet-preview{min-height:358px}
  .hero.active .hero-visual .real-badge{width:64px;left:calc(50% - 137px);bottom:38px}
}

/* Intrinsic owner-row safety at every width. The preview itself becomes narrow
   on some desktop and tablet compositions, so viewport-only rules are not
   sufficient: the component must protect its own readable columns. */
.hero.active .hero-visual .pet-preview footer{
  width:100%;box-sizing:border-box;overflow:hidden;
  grid-template-columns:34px minmax(48px,1fr) max-content;
}
.hero.active .hero-visual .pet-preview footer>span:nth-of-type(2){
  width:auto;min-width:0;max-width:none;
  display:flex;align-items:flex-start;justify-content:center;
  flex-direction:column;overflow:hidden;
  word-break:keep-all;overflow-wrap:normal;
}
.hero.active .hero-visual .pet-preview footer>span:nth-of-type(2)>small,
.hero.active .hero-visual .pet-preview footer>span:nth-of-type(2)>strong{
  width:100%;max-width:100%;display:block;
  overflow:hidden;text-overflow:ellipsis;
  word-break:keep-all;overflow-wrap:normal;white-space:nowrap;
}
.hero.active .hero-visual .pet-preview footer button{
  width:auto;min-width:max-content;max-width:none;padding-inline:2px;
  font-size:clamp(.45rem,1vw,.58rem);word-break:keep-all;
  overflow-wrap:normal;white-space:nowrap;
}

/* The DESIGN control belongs exclusively to the home illustration. It is no
   longer a global floating utility and therefore cannot cover page content. */
.hero.active .hero-visual>.layout-illustration-cta{
  width:156px;min-width:156px;max-width:156px;height:auto;
  padding:7px;position:absolute;z-index:9;
  right:0;top:auto;bottom:-124px;left:auto;
  display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:5px 7px;
  overflow:visible;border:1px solid #ddd6cf;border-radius:16px;
  color:#171327;background:#fffdfbf2;box-shadow:0 10px 26px #1713271c;
  text-align:left;transform:none;backdrop-filter:blur(10px);
}
.hero.active .hero-visual>.layout-illustration-cta>i{
  width:34px;height:34px;border-radius:10px;grid-column:1;grid-row:1;
}
.hero.active .hero-visual>.layout-illustration-cta>span{
  min-width:0;grid-column:2;grid-row:1;display:grid;gap:1px;
}
.hero.active .hero-visual>.layout-illustration-cta small{display:none}
.hero.active .hero-visual>.layout-illustration-cta strong{
  overflow:hidden;text-overflow:ellipsis;font-size:.65rem;line-height:1.2;white-space:nowrap;
}
.hero.active .hero-visual>.layout-illustration-cta>b{
  min-height:42px;padding:7px;grid-column:1/-1;grid-row:2;
  display:flex;align-items:center;justify-content:center;border-radius:11px;
  color:#fff;background:#171327;font-size:.64rem;line-height:1.2;text-align:center;
}
.hero.active .hero-visual>.layout-illustration-cta:hover{border-color:#513580;transform:none}
body.ufm-utility-open .hero.active .hero-visual>.layout-illustration-cta{opacity:1;visibility:visible;pointer-events:auto}
.hero.active .hero-visual:has(>.layout-illustration-cta:not([hidden])){margin-bottom:136px}

@media(max-width:359px){
  .hero.active .hero-visual>.layout-illustration-cta{
    width:146px;min-width:146px;max-width:146px;right:-2px;
  }
  .hero.active .hero-visual>.layout-illustration-cta>b{font-size:.6rem}
}

@media(min-width:600px){
  .hero.active .hero-visual>.layout-illustration-cta{
    width:188px;min-width:188px;max-width:188px;padding:9px;
    right:8px;grid-template-columns:40px minmax(0,1fr);gap:7px 9px;border-radius:18px;
  }
  .hero.active .hero-visual>.layout-illustration-cta>i{width:40px;height:40px;border-radius:11px}
  .hero.active .hero-visual>.layout-illustration-cta small{display:block;font-size:.48rem;line-height:1.2;letter-spacing:.08em}
  .hero.active .hero-visual>.layout-illustration-cta strong{font-size:.72rem}
  .hero.active .hero-visual>.layout-illustration-cta>b{min-height:44px;font-size:.68rem}
}

@media(min-width:768px){
  .hero.active .hero-visual:has(>.layout-illustration-cta:not([hidden])){margin-bottom:0}
  .hero.active .hero-visual>.layout-illustration-cta{right:-2px;top:50%;bottom:auto;transform:translateY(-50%)}
  .hero.active .hero-visual>.layout-illustration-cta:hover{transform:translateY(-50%)}
}

@media(min-width:1024px) and (max-width:1279px){
  .hero.active .hero-visual>.layout-illustration-cta{
    width:122px;min-width:122px;max-width:122px;right:-60px;
    grid-template-columns:34px minmax(0,1fr);padding:7px;
  }
  .hero.active .hero-visual>.layout-illustration-cta>i{width:34px;height:34px}
  .hero.active .hero-visual>.layout-illustration-cta small{display:none}
}

@media(min-width:1280px){
  .hero.active .hero-visual>.layout-illustration-cta{right:-70px}
}

/* The DESIGN selector is contextual, not a global utility. app.js mounts it
   inside the home illustration and marks it hidden on every other route. Keep
   that hidden state authoritative even though the compact control has its own
   display declaration above. */
.layout-illustration-cta[hidden]{display:none}
body:not(:has(.hero[data-view="accueil"].active)) .layout-illustration-cta{display:none}

/* Studio on a small phone: put the interactive proof immediately after the
   promise. The QR/NFC tabs are the two clear entry points; the animated phone
   then demonstrates the selected gesture before details and purchase. */
@media(max-width:599px){
  .studio[data-view="studio"]:has(.action-journey){
    width:100%;height:auto;min-height:0;
    padding:24px 14px calc(var(--ufm-dock-h) + 28px + env(safe-area-inset-bottom));
    display:grid;grid-template-columns:minmax(0,1fr);
    align-items:start;align-content:start;gap:16px;
    overflow:visible;text-align:left;
  }
  .studio[data-view="studio"]>.action-heading,
  .studio[data-view="studio"]>.action-heading>div,
  .studio[data-view="studio"]>.action-demo-shell,
  .studio[data-view="studio"] .action-journey{display:contents}
  .studio[data-view="studio"] .action-heading .kicker{order:1;margin:0 0 -7px}
  .studio[data-view="studio"] .action-heading h1{
    order:2;max-width:13ch;margin:0;
    font-size:clamp(2rem,10vw,2.55rem);line-height:1.04;
    letter-spacing:-.04em;text-align:left;text-wrap:balance;
  }
  .studio[data-view="studio"] .action-heading>div>p:last-child{
    order:4;max-width:58ch;margin:0;
    font-size:.96rem;line-height:1.55;text-align:left;
  }
  .studio[data-view="studio"] .action-method-tabs{
    order:3;width:100%;margin:2px 0 0;justify-self:stretch;
  }
  .studio[data-view="studio"] .action-video-panel{
    order:5;width:100%;min-width:0;margin:0;
  }
  .studio[data-view="studio"] .action-stage{
    order:6;width:100%;min-height:438px;margin:0;
    justify-self:center;overflow:hidden;border:1px solid #e7dfe9;
    border-radius:28px;background:linear-gradient(145deg,#fffdfb,#f2edf7);
  }
  .studio[data-view="studio"] .action-stage::before{width:310px;height:310px}
  .studio[data-view="studio"] .action-phone{width:228px;height:418px}
  .studio[data-view="studio"] .action-steps{
    order:5;width:100%;margin:0;
    grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;
  }
  .studio[data-view="studio"] .action-steps li{
    min-height:58px;padding:9px;grid-template-columns:1fr;
    text-align:left;
  }
  .studio[data-view="studio"] .action-steps li strong{font-size:.72rem}
  .studio[data-view="studio"] .action-heading>.primary{
    order:7;width:100%;min-height:50px;margin:0;
  }
}

@media(max-width:359px){
  .studio[data-view="studio"]:has(.action-journey){padding-inline:12px}
  .studio[data-view="studio"] .action-stage{min-height:406px;border-radius:24px}
  .studio[data-view="studio"] .action-phone{width:212px;height:390px}
  .studio[data-view="studio"] .action-steps{grid-template-columns:1fr}
}

/* Small-phone routing invariant.
   Highly specific presentation rules can assign `display` with.
   This final selector guarantees that a routed view marked hidden never leaks
   into another page. The router removes `hidden` and adds `.active` only to
   the requested view. */
html.js body main > section.view[hidden],
html.js body main > section.view:not(.active){
  display:none;
}
.no-js-notice{max-width:72rem;margin:1rem auto;padding:1rem 1.25rem;border:1px solid #ded6e7;border-radius:1rem;color:#251a3d;background:#fff;box-shadow:0 .5rem 1.5rem #251a3d12;font-weight:700}

/* Small-phone application dock.
   Reassert the complete fixed-position contract in the last-loaded stylesheet
   so no responsive override can put the dock back into normal document flow. */
@media(max-width:599px){
  :root{--ufm-small-dock-h:calc(68px + env(safe-area-inset-bottom))}
  html body .mobile-app-nav{
    width:100vw;max-width:100vw;
    height:var(--ufm-small-dock-h);min-height:var(--ufm-small-dock-h);
    margin:0;
    padding:6px max(4px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(4px,env(safe-area-inset-left));
    position:fixed;inset:auto 0 0 0;z-index:1000;
    display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
    border-radius:0;transform:translate3d(0,0,0);
    isolation:isolate;contain:layout paint style;
  }
  html body .mobile-app-nav[hidden]{display:none}
  html body main{padding-bottom:var(--ufm-small-dock-h)}
  html body .site-footer{padding-bottom:calc(var(--ufm-small-dock-h) + 28px)}
}

/* source: header-responsive-v3.css */
/**
 * @file Presentation layer for header responsive v3.
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Style de l’en-tête responsive : bandes de largeur sans chevauchement, actions compactes panier et menu.
 * @purpose-en Styles for the responsive header: non-overlapping width bands, compact cart and menu actions.
 * @audit-scope asset
 * @inputs-fr Aucune : feuille de style statique.
 * @inputs-en None: static stylesheet.
 * @effects-fr Fixe la géométrie de .topbar, .compact-cart-trigger et .compact-menu-trigger selon les breakpoints.
 * @effects-en Sets the geometry of .topbar, .compact-cart-trigger and .compact-menu-trigger per breakpoint.
 *
 * Mobile-first responsive styling only; preserve touch targets, fluid containment and the seven-breakpoint contract.
 */

/* UFoundMe! header v4 — seven non-overlapping viewport bands.
   Languages, owner profile and cart remain visible; routes collapse early. */
.topbar{width:100%;max-width:100vw}.topbar>*,.topbar>.logo img,.compact-header-actions{min-width:0}.topbar>.logo img{height:auto}.mobile-app-nav[hidden],.mobile-menu-sheet[hidden]{display:none}

/* Compact actions are shared by every collapsed desktop band. Their complete
   geometry lives here so no intermediate viewport can expose raw SVG sizes. */
.compact-cart-trigger,.compact-menu-trigger{height:46px;min-height:46px;max-height:46px;padding:0 14px;border:1px solid #ddd5de;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:8px;overflow:hidden;color:#171327;background:#fff;font:750 .72rem Lexend,system-ui,sans-serif;line-height:1;white-space:nowrap;cursor:pointer}
.compact-cart-trigger img,.compact-menu-trigger img{width:18px;height:18px;min-width:18px;max-width:18px;object-fit:contain}
.compact-cart-trigger b{min-width:21px;height:21px;padding:0 5px;border-radius:99px;display:grid;place-items:center;color:#fff;background:#513580;font-size:.55rem}
.compact-menu-trigger{min-width:96px;color:#fff;background:#171327;border-color:#171327}
.compact-menu-trigger img{filter:invert(1)}
.compact-cart-trigger:hover{border-color:#513580;background:#f7f3fb}.compact-menu-trigger:hover{background:#513580;border-color:#513580}
.wide-menu-trigger{display:none}

/* Shared progressive-enhancement shell. Page-specific styles must not be
   required for the hamburger to render or remain usable. */
.mobile-menu-sheet{width:440px;max-width:calc(100vw - 12px);max-height:calc(100svh - 104px);padding:20px;position:fixed;z-index:95;top:92px;right:clamp(34px,4vw,100px);bottom:auto;left:auto;overflow:auto;border:1px solid #17132718;border-radius:24px;display:grid;gap:16px;background:#fff;box-shadow:0 28px 80px #17132738}
.mobile-menu-sheet>header{display:flex;align-items:center;justify-content:space-between;gap:16px}.mobile-menu-sheet>header a{display:flex;align-items:center}.mobile-menu-sheet>header img{width:145px;height:auto}.mobile-menu-sheet>header button{width:44px;height:44px;flex:0 0 44px;border:0;border-radius:50%;display:grid;place-items:center;background:#f2efeb;font-size:1.25rem}
.mobile-sheet-routes{display:grid;grid-template-columns:1fr 1fr;gap:9px}.mobile-sheet-routes>*{min-height:62px;padding:11px;border:0;border-radius:16px;display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:9px;color:#171327;background:#f6f3ef;text-align:left;text-decoration:none;font:800 .7rem Lexend,sans-serif}.mobile-sheet-routes img{width:20px;height:20px}.mobile-sheet-routes b{font-size:.8rem}.compact-only-route{display:grid}
.mobile-sheet-account{display:grid;grid-template-columns:1fr 1fr;gap:9px}.mobile-sheet-account a,.mobile-sheet-account button{min-height:46px;padding:0 13px;border:1px solid #e6e1dc;border-radius:999px;display:flex;align-items:center;justify-content:center;color:#171327;background:#fff;text-align:center;text-decoration:none;font:800 .68rem Lexend,sans-serif}.mobile-sheet-account .primary{border:0;color:#fff;background:#171327}
.mobile-sheet-tools{min-width:0;padding-top:12px;border-top:1px solid #e6e1dc;display:grid;gap:9px}.mobile-sheet-tools h2{margin:0;color:#665e70;font:800 .65rem/1.2 Lexend,sans-serif;letter-spacing:.1em;text-transform:uppercase}.mobile-sheet-tools>div{min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mobile-sheet-tools :is(a,button){min-width:0;min-height:48px;padding:9px 11px;border:1px solid #e6e1dc;border-radius:14px;display:flex;align-items:center;gap:9px;color:#171327;background:#fff;text-align:left;text-decoration:none;font:750 .7rem/1.25 Lexend,sans-serif;overflow-wrap:anywhere}.mobile-sheet-tools :is(a,button):hover,.mobile-sheet-tools :is(a,button):focus-visible{border-color:#513580;background:#f7f3fb;outline:0}.mobile-sheet-tools img{width:19px;height:19px;flex:0 0 19px}.mobile-sheet-tools .menu-aa{width:25px;height:25px;flex:0 0 25px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#513580;font-size:.58rem}
.mobile-sheet-languages{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.mobile-sheet-languages a{min-height:42px;padding:0;border:1px solid #ddd5de;border-radius:999px;display:flex;align-items:center;justify-content:center;color:#171327;background:#fff;text-decoration:none;font-size:.64rem;font-weight:800}.mobile-sheet-languages a[aria-current]{color:#fff;background:#171327}
body.mobile-menu-open{overflow:hidden}

@media(min-width:1760px){
  .mobile-menu-sheet{width:440px;max-height:calc(100svh - 104px);padding:20px;position:fixed;z-index:95;top:92px;right:clamp(34px,4vw,100px);bottom:auto;left:auto;overflow:auto;border:1px solid #17132718;border-radius:24px;display:grid;gap:16px;background:#fff;box-shadow:0 28px 80px #17132738}
  .mobile-menu-sheet>header{display:flex;align-items:center;justify-content:space-between;gap:16px}.mobile-menu-sheet>header a{display:flex;align-items:center}.mobile-menu-sheet>header img{width:145px;height:auto}.mobile-menu-sheet>header button{width:44px;height:44px;flex:0 0 44px;border:0;border-radius:50%;display:grid;place-items:center;background:#f2efeb;font-size:1.25rem}
  .mobile-sheet-routes{display:grid;grid-template-columns:1fr 1fr;gap:9px}.mobile-sheet-routes>*{min-height:62px;padding:11px;border:0;border-radius:16px;display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:9px;color:#171327;background:#f6f3ef;text-align:left;text-decoration:none;font:800 .7rem Lexend,sans-serif}.mobile-sheet-routes img{width:20px;height:20px}.mobile-sheet-routes b{font-size:.8rem}.compact-only-route{display:grid}
  .mobile-sheet-account{display:grid;grid-template-columns:1fr 1fr;gap:9px}.mobile-sheet-account a,.mobile-sheet-account button{min-height:46px;padding:0 13px;border:1px solid #e6e1dc;border-radius:999px;display:flex;align-items:center;justify-content:center;color:#171327;background:#fff;text-align:center;text-decoration:none;font:800 .68rem Lexend,sans-serif}.mobile-sheet-account .primary{border:0;color:#fff;background:#171327}
  .mobile-sheet-languages{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.mobile-sheet-languages a{min-height:42px;padding:0;border:1px solid #ddd5de;border-radius:999px;display:flex;align-items:center;justify-content:center;color:#171327;background:#fff;text-decoration:none;font-size:.64rem;font-weight:800}.mobile-sheet-languages a[aria-current]{color:#fff;background:#171327}
  body.mobile-menu-open{overflow:hidden}
}

/* 1 — ultra-wide desktop. Full routes, with a real reserved column for the
   universal language/account controls injected at the right. */
@media(min-width:2000px){
  .topbar{height:82px;min-height:82px;padding:0 clamp(48px,5vw,100px);display:grid;grid-template-columns:190px 96px minmax(780px,1fr) minmax(360px,430px);align-items:center;gap:18px}
  .topbar>.logo{margin:0;grid-column:1;justify-self:start}.topbar>.logo img{width:165px}
  .wide-menu-trigger{grid-column:2;min-width:92px;min-height:46px;padding:0 14px;border:1px solid #171327;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:8px;color:#fff;background:#171327;font:750 .7rem/1 Lexend,system-ui,sans-serif;cursor:pointer}.wide-menu-trigger img{width:18px;height:18px;filter:invert(1)}.wide-menu-trigger:hover,.wide-menu-trigger:focus-visible{border-color:#513580;background:#513580;outline:3px solid #51358024;outline-offset:2px}
  .topbar>nav{grid-column:3;display:flex;align-self:stretch;align-items:center;justify-content:center;gap:clamp(12px,.9vw,20px)}
  .topbar>nav a{min-height:44px;padding:0 2px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font-size:var(--ufm-header-font-size);line-height:1.25}
  .topbar>.account-actions,.compact-header-actions,.mobile-cart-trigger,.mobile-app-nav{display:none}
}

/* 2 — wide desktop. Full routes remain readable, but spacing tightens. */
@media(min-width:1760px) and (max-width:1999px){
  .topbar{height:76px;min-height:76px;padding:0 clamp(34px,4vw,70px);display:grid;grid-template-columns:180px 92px minmax(690px,1fr) minmax(320px,390px);align-items:center;gap:15px}
  .topbar>.logo{margin:0;grid-column:1;justify-self:start}.topbar>.logo img{width:158px}
  .wide-menu-trigger{grid-column:2;min-width:88px;min-height:44px;padding:0 12px;border:1px solid #171327;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:7px;color:#fff;background:#171327;font:750 .66rem/1 Lexend,system-ui,sans-serif;cursor:pointer}.wide-menu-trigger img{width:17px;height:17px;filter:invert(1)}.wide-menu-trigger:hover,.wide-menu-trigger:focus-visible{border-color:#513580;background:#513580;outline:3px solid #51358024;outline-offset:2px}
  .topbar>nav{grid-column:3;display:flex;align-items:center;justify-content:center;gap:clamp(9px,.75vw,15px)}
  .topbar>nav a{min-height:44px;padding:0 1px;display:inline-flex;align-items:center;white-space:nowrap;font-size:var(--ufm-header-font-size)}
  .topbar>.account-actions,.compact-header-actions,.mobile-cart-trigger,.mobile-app-nav{display:none}
}

/* 3 — desktop. Routes collapse before they can squeeze or overlap. */
@media(min-width:1440px) and (max-width:1759px){
  .topbar{height:74px;min-height:74px;padding:0 clamp(28px,4vw,64px);display:grid;grid-template-columns:180px minmax(230px,1fr) minmax(330px,390px);align-items:center;gap:18px}
  .topbar>.logo{margin:0;grid-column:1;justify-self:start}.topbar>.logo img{width:158px}.topbar>nav,.topbar>.account-actions{display:none}
  .compact-header-actions{grid-column:2;display:flex;align-items:center;justify-content:flex-end;justify-self:end;gap:9px;margin:0}.mobile-cart-trigger,.mobile-app-nav{display:none}
  .mobile-menu-sheet{top:84px;right:clamp(28px,4vw,64px);bottom:auto;left:auto}
}

/* 4 — compact desktop, including the 1336 CSS-pixel viewport in the report. */
@media(min-width:1280px) and (max-width:1439px){
  .topbar{height:72px;min-height:72px;padding:0 28px;display:grid;grid-template-columns:170px minmax(220px,1fr) minmax(300px,340px);align-items:center;gap:16px}
  .topbar>.logo{margin:0;grid-column:1;justify-self:start}.topbar>.logo img{width:154px}.topbar>nav,.topbar>.account-actions{display:none}
  .compact-header-actions{grid-column:2;display:flex;align-items:center;justify-content:flex-end;justify-self:end;gap:8px;margin:0}.compact-cart-trigger,.compact-menu-trigger{font-size:.72rem}.mobile-cart-trigger,.mobile-app-nav{display:none}
  .mobile-menu-sheet{top:80px;right:28px;bottom:auto;left:auto}
}

/* 5 — landscape tablet. Bottom app navigation; cart sits to the left of the
   persistent language/profile cluster instead of underneath it. */
@media(min-width:1024px) and (max-width:1279px){
  .topbar{height:66px;min-height:66px;padding:0 18px;position:sticky;display:flex;align-items:center;justify-content:flex-start}
  .topbar>.logo{margin:0}.topbar>.logo img{width:145px}.topbar>nav,.topbar>.account-actions,.compact-header-actions{display:none}
  /* Reserve the complete 254 px account/language capsule and its gutter. */
  .wide-menu-trigger{width:44px;min-width:44px;height:44px;min-height:44px;padding:0;position:absolute;right:438px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #171327;border-radius:50%;color:#fff;background:#171327;cursor:pointer}.wide-menu-trigger img{width:18px;height:18px;filter:invert(1)}.wide-menu-trigger span{display:none}.wide-menu-trigger:hover,.wide-menu-trigger:focus-visible{border-color:#513580;background:#513580;outline:3px solid #51358024;outline-offset:2px}
  .mobile-cart-trigger{position:absolute;right:359px;display:inline-flex;align-items:center;min-width:44px;min-height:44px}.mobile-app-nav{display:none}
}

/* 6 — portrait tablet. The universal controls are compact at this threshold. */
@media(min-width:768px) and (max-width:1023px){
  .topbar{height:64px;min-height:64px;padding:0 16px;position:sticky;display:flex;align-items:center;justify-content:flex-start}
  .topbar>.logo{margin:0}.topbar>.logo img{width:140px}.topbar>nav,.topbar>.account-actions,.compact-header-actions{display:none}
  .wide-menu-trigger{width:44px;min-width:44px;height:44px;min-height:44px;padding:0;position:absolute;right:16px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #171327;border-radius:50%;color:#fff;background:#171327;cursor:pointer}.wide-menu-trigger img{width:18px;height:18px;filter:invert(1)}.wide-menu-trigger span{display:none}.wide-menu-trigger:hover,.wide-menu-trigger:focus-visible{border-color:#513580;background:#513580;outline:3px solid #51358024;outline-offset:2px}
  .mobile-cart-trigger{position:absolute;right:68px;display:inline-flex;align-items:center;min-width:44px;min-height:44px}.mobile-app-nav{display:grid;width:100%;right:0;left:0;border-radius:0}
}

/* 7 — phones. Logo, cart and language/profile remain separate touch targets. */
@media(max-width:767px){
  .topbar{height:60px;min-height:60px;padding:0 8px;display:flex;align-items:center;justify-content:flex-start}.topbar>.logo{margin:0}.topbar>.logo img{width:clamp(100px,27vw,126px)}
  .topbar>nav,.topbar>.account-actions,.compact-header-actions{display:none}.wide-menu-trigger{width:44px;min-width:44px;height:44px;min-height:44px;padding:0;position:absolute;right:8px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #171327;border-radius:50%;color:#fff;background:#171327}.wide-menu-trigger img{width:18px;height:18px;filter:invert(1)}.wide-menu-trigger span{display:none}.mobile-cart-trigger{position:absolute;right:60px;display:inline-flex;min-width:44px;min-height:44px;padding:0 8px}.mobile-cart-trigger span{display:none}.mobile-app-nav{display:grid;width:100%;right:0;left:0;border-radius:0}
  .mobile-app-nav>button{min-width:0;overflow:hidden}.mobile-app-nav>button>span{font-size:clamp(.6rem,2.1vw,.69rem);line-height:1.2}
}
@media(max-width:359px){.topbar>.logo img{width:96px}.mobile-cart-trigger{right:58px}.wide-menu-trigger{right:6px}}

/* Auth and contact shells inherit legacy document widths. Anchor their menu
   to the viewport explicitly so it cannot drift past the right edge. */
@media(min-width:768px) and (max-width:1023px){
  .auth-page-ufoundme .mobile-menu-sheet{width:min(520px,calc(100vw - 32px));max-width:calc(100vw - 32px);right:16px;left:auto}
}
@media(max-width:767px){
  .auth-page-ufoundme .mobile-menu-sheet{width:auto;max-width:none;right:12px;left:12px}
}
.mobile-wall-of-fame{display:none}

/* Shared collision guard. */
@media(max-width:1999px){.topbar>*{min-width:0}.compact-header-actions button,.mobile-cart-trigger{flex:0 0 auto}.mobile-menu-sheet{max-width:calc(100vw - 12px)}}

/* Brand contract: on every tablet and phone page the header menu is the
   stable black landmark. Hover must not recolour it or reduce contrast. */
@media(max-width:1279px){
  .wide-menu-trigger,
  .wide-menu-trigger:hover,
  .wide-menu-trigger:active,
  .wide-menu-trigger[aria-expanded="true"]{color:#fff;border-color:#000;background:#000}
  .wide-menu-trigger:focus-visible{color:#fff;border-color:#000;background:#000;outline:3px solid #51358038;outline-offset:2px}
}

/* Large phones: the navigation sheet belongs to the header, not to the
   bottom bar. It opens directly below the 60 px header and scrolls internally. */
@media(min-width:480px) and (max-width:767px){
  .mobile-menu-sheet{
    width:auto;max-width:none;max-height:calc(100svh - 148px - env(safe-area-inset-bottom));
    top:68px;right:12px;bottom:auto;left:12px;
    overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;
    border-radius:22px;transform:none;
  }
}
.mobile-sheet-tools-title{margin:0;color:#665e70;font:800 .65rem/1.2 Lexend,Inter,system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase}

}
@layer components {
/* source: title-overview.css */
/**
 * @file Presentation layer for title overview.
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Fixe la hiérarchie typographique des titres sur les surfaces publiques.
 * @purpose-en Sets the title typographic hierarchy across public surfaces.
 * @audit-scope asset
 * @inputs-fr Aucune entrée ; feuille de style statique chargée par les pages qui la référencent.
 * @inputs-en No inputs; static stylesheet loaded by the pages that reference it.
 * @effects-fr Règles de présentation uniquement ; aucun script ni requête réseau.
 * @effects-en Presentation rules only; no script and no network request.
 */

/* UFoundMe! title hierarchy: one idea per title, readable on every surface. */
:root{--ufm-title-xl:clamp(2.05rem,3.45vw,3.35rem);--ufm-title-lg:clamp(1.7rem,2.65vw,2.55rem);--ufm-title-md:clamp(1.25rem,1.75vw,1.7rem)}
:where(.hero,.principle-view,.chat-principle,.studio,.help-view,.test-studio,.layouts,.dashboard,.legal-page main,.catalog-page,.ufm-ulule) h1{max-width:15ch;text-wrap:balance;line-height:1.02;letter-spacing:-.045em}
.hero .hero-promise{max-width:13ch;font-size:var(--ufm-title-xl);line-height:1.04}
.hero .hero-promise-statement{max-width:22ch;font-size:clamp(2.15rem,3.25vw,3.35rem);line-height:1.08;letter-spacing:-.04em}
.principle-copy :is(h1,h2),.chat-principle-copy :is(h1,h2),.action-heading :is(h1,h2){max-width:13ch;font-size:var(--ufm-title-xl);line-height:1.02}
.view-heading :is(h1,h2),.test-studio-head :is(h1,h2),.help-head :is(h1,h2){max-width:15ch;font-size:var(--ufm-title-lg);line-height:1.04}
.dashboard .welcome h1,.studio-page .welcome h1,.legal-page h1,.catalog-page h1{font-size:var(--ufm-title-lg);line-height:1.05}
.legal-page article h2,.dashboard .section-title h2,.studio-editor h2{font-size:var(--ufm-title-md);line-height:1.08;text-wrap:balance}
.ufm-ulule .ulule-hero h1{max-width:14ch;font-size:var(--ufm-title-xl);line-height:1.02}
.ufm-ulule :is(.join-panel,.how,.truth,.community,.final-cta) h2{font-size:var(--ufm-title-lg);line-height:1.05;text-wrap:balance}
@media(max-width:1023px){:root{--ufm-title-xl:clamp(2.05rem,9vw,3rem);--ufm-title-lg:clamp(1.8rem,7.5vw,2.55rem);--ufm-title-md:clamp(1.4rem,5.5vw,1.9rem)}:where(.hero,.principle-view,.chat-principle,.studio,.help-view,.test-studio,.layouts,.dashboard,.legal-page main,.catalog-page,.ufm-ulule) h1{max-width:13ch;letter-spacing:-.035em}.hero .hero-promise-statement{max-width:19ch;font-size:clamp(1.9rem,7.2vw,2.7rem)}}
@media(max-width:800px){:root{--ufm-title-xl:clamp(1.85rem,7.8vw,2.65rem);--ufm-title-lg:clamp(1.55rem,6.4vw,2.15rem);--ufm-title-md:clamp(1.2rem,4.8vw,1.6rem)}:where(.principle-copy,.chat-principle-copy,.action-heading,.view-heading,.test-studio-head,.help-head) h2{letter-spacing:-.035em}}
@media(max-width:380px){:root{--ufm-title-xl:clamp(1.9rem,9.7vw,2.45rem);--ufm-title-lg:clamp(1.65rem,8.2vw,2.15rem)}:where(.hero,.principle-view,.chat-principle,.studio,.help-view,.test-studio,.layouts,.dashboard,.legal-page main,.catalog-page,.ufm-ulule) h1{max-width:12ch}}

/* source: footer.css */
/**
 * @file Presentation layer for footer.
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Styles du pied de page commun : grille, marque, colonnes de liens, contact et repère de version.
 * @purpose-en Styles for the shared footer: grid, brand, link columns, contact and release marker.
 * @audit-scope asset
 * @inputs-fr Attribut data-release du pied de page (affiché via content:attr) et attributs de thème.
 * @inputs-en Footer data-release attribute (rendered through content:attr) and theme attributes.
 * @effects-fr Mise en forme uniquement ; aucune écriture, aucun script.
 * @effects-en Styling only; no writes, no script.
 *
 *
 * Mobile-first responsive styling only; preserve touch targets, fluid containment and the seven-breakpoint contract.
 */

.ufm-footer{--ufm-footer-safe-zone:22px;position:relative;padding:40px max(24px,5vw) var(--ufm-footer-safe-zone);display:grid;grid-template-columns:minmax(0,1fr);column-gap:16px;color:#d9d4e3;background:#171327}
.ufm-footer::before{content:attr(data-release);position:absolute;top:18px;right:max(24px,5vw);color:#d9d4e3;font-size:.62rem;line-height:1;letter-spacing:.06em;opacity:.42;font-variant-numeric:tabular-nums}
.ufm-footer-grid{width:min(1320px,100%);margin:auto;display:grid;grid-template-columns:minmax(280px,1.45fr) repeat(3,minmax(150px,.72fr));gap:clamp(34px,5vw,78px)}
.ufm-footer-brand,.ufm-footer nav{display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-width:0}
.ufm-footer-brand>a:first-child{display:inline-flex;margin-bottom:7px}.ufm-footer-brand img{width:190px;max-width:100%;height:auto;display:block;filter:brightness(0) invert(1)}
.ufm-footer p{max-width:410px;margin:0;color:#b8b1c2;font-size:.9rem;line-height:1.65}.ufm-footer small{color:#938b9e;font-size:.78rem;line-height:1.5}.ufm-footer strong{margin-bottom:5px;color:#fff;font-size:.9rem;letter-spacing:.01em}
.ufm-footer a{max-width:100%;color:#d0c9d7;text-decoration:none;font-size:.86rem;line-height:1.45;overflow-wrap:anywhere}.ufm-footer a:hover,.ufm-footer a:focus-visible{color:#fff;text-decoration:underline;text-underline-offset:4px}.ufm-footer-mail{margin-top:7px;color:#ff8b73;font-weight:750}
.ufm-footer-contact{margin-top:7px;display:grid;gap:4px}.ufm-footer-contact .ufm-footer-mail{margin-top:0}.ufm-footer-contact span{color:#b8b1c2;font-size:.78rem;line-height:1.45}.ufm-footer-contact span b{margin:0;color:#d9d4e3;font-size:inherit;font-weight:600}.ufm-footer-contact span a{font-size:inherit}.ufm-footer-contact address{max-width:410px;color:#b8b1c2;font-size:.78rem;font-style:normal;line-height:1.45;overflow-wrap:anywhere}
.ufm-footer-social{display:grid;gap:7px;margin-top:8px}.ufm-footer-social>strong{margin:0;font-size:.78rem;color:#b8b1c2}.ufm-footer-social-actions{display:flex;flex-wrap:wrap;gap:7px}.ufm-footer-social button,.ufm-footer-social-actions>a{width:42px;height:42px;padding:0;display:grid;place-items:center;border:1px solid #ffffff24;border-radius:50%;color:#fff;background:#ffffff0d;cursor:pointer;transition:transform .18s ease,border-color .18s ease,background .18s ease}.ufm-footer-social button:hover,.ufm-footer-social button:focus-visible,.ufm-footer-social-actions>a:hover,.ufm-footer-social-actions>a:focus-visible{transform:translateY(-2px);border-color:#ff8b73;background:#5b3a8e;outline:3px solid #ff8b7333;outline-offset:2px;text-decoration:none}.ufm-footer-social button.is-done{background:#2bab79;border-color:#2bab79}.ufm-footer-social button img,.ufm-footer-social-actions>a img{width:17px;height:17px;filter:brightness(0) invert(1)}.ufm-footer-social output{min-height:1em;color:#7fe0b0;font-size:.72rem;font-weight:750}
.ufm-footer-trust{width:100%;max-width:652px;margin:28px 0 0;justify-self:end;padding:13px 15px;display:flex;align-items:center;gap:11px;border:1px solid #ffffff1a;border-radius:15px;background:#ffffff0a}.ufm-footer-trust img{width:22px;height:22px;filter:brightness(0) invert(1);opacity:.9}.ufm-footer-trust span{display:grid;gap:2px;min-width:0;flex:1;color:#a9a2b1;font-size:.76rem}.ufm-footer-trust span strong{margin:0;font-size:.8rem}.ufm-footer-trust>a{font-weight:750;white-space:nowrap}
.ufm-footer-europe{width:100%;max-width:652px;margin:28px 0 0;justify-self:start;padding:13px 15px;display:flex;align-items:center;justify-content:center;gap:12px;border:1px solid #ffffff18;border-radius:15px;background:#ffffff08}.ufm-footer-europe img{width:42px;height:28px;flex:0 0 auto;border-radius:4px;box-shadow:0 3px 12px #0005}.ufm-footer-europe p{max-width:920px;color:#c9c3d0;font-size:.76rem;line-height:1.4;text-align:left}
.ufm-footer-ai-disclosure{box-sizing:border-box;width:min(1320px,100%);margin:18px auto 0;padding:13px 16px;grid-column:1/-1;display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:13px;border:1px solid #ffffff18;border-radius:15px;color:#b8b1c2;background:#ffffff08}.ufm-footer-ai-mark{box-sizing:border-box;width:40px;height:40px;border:1px solid #ffffff40;border-radius:50%;display:grid;place-items:center;color:#fff;background:#563b88;font-size:.72rem;font-weight:800;letter-spacing:.05em}.ufm-footer-ai-disclosure p{max-width:none;font-size:.78rem;line-height:1.45}
.ufm-footer-bottom{width:min(1320px,100%);margin:18px auto 0;padding-top:15px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid #ffffff1b;color:#8d8593;font-size:.72rem}.ufm-footer-bottom>a{font-size:.72rem;font-weight:750}
.ufm-footer-copyright{display:inline-flex;align-items:baseline;gap:.5rem;white-space:nowrap}.ufm-footer-release{color:#d9d4e3;font:inherit;font-size:.66rem;letter-spacing:.04em;opacity:1;font-variant-numeric:tabular-nums}
.ufm-footer-seller{display:grid;gap:3px;text-align:center}.ufm-footer-seller b{font-weight:500}.ufm-footer-seller small{font:inherit}.ufm-footer-seller a{color:inherit;text-underline-offset:3px}
@media(max-width:1023px){.ufm-footer-grid{grid-template-columns:1.2fr repeat(2,.8fr)}.ufm-footer-grid>nav:last-child{grid-column:2/4}}
@media(max-width:1279px){.ufm-footer{--ufm-footer-safe-zone:calc(32px + env(safe-area-inset-bottom))}}
@media(max-width:767px){.ufm-footer{--ufm-footer-safe-zone:calc(32px + env(safe-area-inset-bottom));padding:36px 24px var(--ufm-footer-safe-zone)}.ufm-footer-grid{grid-template-columns:1fr 1fr;gap:28px 24px}.ufm-footer-brand{grid-column:1/-1}.ufm-footer-grid>nav:last-child{grid-column:auto}.ufm-footer-trust{align-items:flex-start;flex-wrap:wrap}.ufm-footer-trust span{min-width:calc(100% - 40px)}.ufm-footer-bottom{display:grid;gap:6px}}
@media(max-width:679px){.ufm-footer-grid{grid-template-columns:1fr}.ufm-footer-brand,.ufm-footer-grid>nav:last-child{grid-column:auto}.ufm-footer p,.ufm-footer a{font-size:.88rem}.ufm-footer-social button,.ufm-footer-social-actions>a{width:44px;height:44px}.ufm-footer-trust span{min-width:0;width:calc(100% - 40px)}.ufm-footer-trust>a{margin-left:36px}}
@media(max-width:679px){.ufm-footer-ai-disclosure{grid-template-columns:36px minmax(0,1fr);gap:11px;padding:12px 13px}.ufm-footer-ai-mark{width:36px;height:36px;font-size:.68rem}.ufm-footer-ai-disclosure p{font-size:.76rem}}
/* Large smartphones: keep the brand block full width, then expose the three
   navigation families side by side. Small phones remain deliberately stacked. */
@media(min-width:600px) and (max-width:767px){
  .ufm-footer-grid{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:16px;row-gap:34px}
  .ufm-footer-brand{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(240px,.85fr);grid-template-rows:auto auto auto;column-gap:32px;row-gap:7px;align-items:start;padding:18px;border:1px solid #ffffff14;border-radius:20px;background:#ffffff06}
  .ufm-footer-brand>a:first-child{grid-column:1;grid-row:1;margin:0;padding:0}
  .ufm-footer-brand>p{grid-column:1;grid-row:2}
  .ufm-footer-brand>small{grid-column:1;grid-row:3}
  .ufm-footer-brand>.ufm-footer-contact{grid-column:2;grid-row:1/3;margin:0}
  .ufm-footer-brand>.ufm-footer-social{grid-column:2;grid-row:3;margin:4px 0 0}
  .ufm-footer-grid>nav:last-child{grid-column:auto}
  .ufm-footer nav{gap:5px}
  .ufm-footer nav strong{font-size:.82rem;line-height:1.25}
  .ufm-footer nav a{display:flex;align-items:center;min-height:44px;font-size:.78rem;line-height:1.25}
}
@media(min-width:768px) and (max-width:1023px){
  .ufm-footer-grid{grid-template-columns:minmax(220px,1.2fr) repeat(3,minmax(0,.8fr));gap:clamp(14px,2vw,28px)}
  .ufm-footer-grid>nav:last-child{grid-column:auto}
}
@media(min-width:768px){
  .ufm-footer{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .ufm-footer-grid,.ufm-footer-bottom{grid-column:1/-1}
  .ufm-footer-trust{grid-column:1}
  .ufm-footer-europe{grid-column:2}
}
/* Small phones: compact, thumb-friendly navigation. Only the utility ellipsis
   remains above the bottom application bar, so no large floating-control moat
   is required below the legal content. */
@media(max-width:599px){
  .ufm-footer{--ufm-footer-safe-zone:calc(28px + env(safe-area-inset-bottom));padding:32px 18px var(--ufm-footer-safe-zone)}
  .ufm-footer-brand>a:first-child{margin-bottom:5px;padding:7px;border-radius:11px}
  .ufm-footer-brand img{width:164px}
  .ufm-footer-grid{grid-template-columns:1fr;gap:20px}
  .ufm-footer-grid>nav,.ufm-footer-grid>nav:last-child{grid-column:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 8px;padding:13px;border:1px solid #ffffff17;border-radius:16px;background:#ffffff08}
  .ufm-footer-grid>nav strong{grid-column:1/-1;margin:0 0 2px;font-size:.8rem}
  .ufm-footer-grid>nav a{min-width:0;min-height:44px;padding:8px 9px;display:flex;align-items:center;border:1px solid #ffffff12;border-radius:11px;background:#ffffff08;font-size:.72rem;line-height:1.25}
  .ufm-footer-grid>nav a:hover,.ufm-footer-grid>nav a:focus-visible{background:#ffffff14;text-decoration:none}
  .ufm-footer-europe{align-items:flex-start;justify-content:flex-start}
  .ufm-footer-europe p{text-align:left;font-size:.76rem}
  .ufm-footer-trust,.ufm-footer-europe{margin-top:18px}
  .ufm-footer-bottom{margin-top:14px;padding-top:13px}
}
.ufm-footer-brand>a:first-child{padding:8px;border-radius:12px;background:transparent}.ufm-footer-brand img{filter:brightness(0) invert(1)}

/* Same five navigation chunks as the Home. Links remain functional before JS. */
.ufm-public-bottom-nav{display:none}
@media(max-width:1279px){
  body:has(.ufm-public-bottom-nav){padding-bottom:calc(68px + env(safe-area-inset-bottom))}
  body:has(.ufm-public-bottom-nav) .mobile-menu-sheet{
    width:min(680px,calc(100% - 24px));max-width:680px;max-height:calc(100svh - 96px);
    margin:0;padding:18px;position:fixed;z-index:13010;right:12px;bottom:calc(76px + env(safe-area-inset-bottom));left:auto;top:auto;
    display:grid;grid-template-columns:minmax(0,1fr);gap:14px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;
    border:1px solid #ded7e2;border-radius:24px;color:#171327;background:#fffdfa;box-shadow:0 24px 70px #17132735;
    font-family:Inter,system-ui,sans-serif
  }
  body:has(.ufm-public-bottom-nav) .mobile-menu-sheet[hidden]{display:none}
  body:has(.ufm-public-bottom-nav) .mobile-menu-sheet>header{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:14px}
  body:has(.ufm-public-bottom-nav) .mobile-menu-sheet>header>a{min-width:0;max-width:calc(100% - 58px);display:inline-flex}
  body:has(.ufm-public-bottom-nav) .mobile-menu-sheet>header>a>img{width:145px;max-width:100%;height:auto;max-height:48px;display:block;object-fit:contain;object-position:left center}
  body:has(.ufm-public-bottom-nav) .mobile-menu-sheet>header>button{width:44px;min-width:44px;height:44px;min-height:44px;padding:0;display:grid;place-items:center;border:0;border-radius:50%;color:#171327;background:#f3efec;font:500 1.2rem/1 Inter,system-ui,sans-serif;cursor:pointer}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-account{min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:9px;border:1px solid #e5dfe7;border-radius:17px;background:#f8f4fa}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-account a{min-width:0;min-height:48px;padding:10px 12px;display:flex;align-items:center;justify-content:center;border:1px solid #ded7e2;border-radius:14px;color:#171327;background:#fff;text-align:center;text-decoration:none;font-size:.8rem;font-weight:700;line-height:1.25;overflow-wrap:anywhere}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-account a.primary{border-color:#171327;color:#fff;background:#171327}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-routes{min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-routes a{min-width:0;min-height:56px;padding:9px 11px;display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:9px;border:1px solid #e7e1de;border-radius:14px;color:#171327;background:#f7f4f1;text-decoration:none;font-size:.78rem;font-weight:700;line-height:1.25}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-routes img{width:22px;max-width:22px;height:22px;max-height:22px;display:block;object-fit:contain;opacity:.8}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-routes span{min-width:0;overflow-wrap:anywhere}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-routes b{font-size:1rem;font-weight:600}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-languages{min-width:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-languages a{min-width:0;min-height:44px;display:grid;place-items:center;border:1px solid #ded7e2;border-radius:12px;color:#514a59;background:#fff;text-decoration:none;font-size:.76rem;font-weight:750}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-languages a[aria-current=page]{border-color:#171327;color:#fff;background:#171327}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-tools{min-width:0;padding-top:12px;border-top:1px solid #e6e1dc;display:grid;gap:9px}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-tools h2{margin:0;color:#665e70;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-tools>div{min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-tools :is(a,button){min-width:0;min-height:48px;padding:9px 11px;display:flex;align-items:center;gap:9px;border:1px solid #e6e1dc;border-radius:14px;color:#171327;background:#fff;text-align:left;text-decoration:none;font:700 .74rem/1.25 Inter,system-ui,sans-serif;overflow-wrap:anywhere}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-tools img{width:20px;max-width:20px;height:20px;max-height:20px;display:block;object-fit:contain}
  body:has(.ufm-public-bottom-nav) .mobile-sheet-tools .menu-aa{width:26px;min-width:26px;height:26px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#513580;font-size:.6rem}
  .ufm-public-bottom-nav{width:100%;height:calc(68px + env(safe-area-inset-bottom));padding:6px max(6px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));position:fixed;z-index:10020;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:start;border:0;border-top:1px solid #17132714;border-radius:0;background:#fffdfaf2;box-shadow:0 -12px 34px #17132714;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
  .ufm-public-bottom-nav>a,.ufm-public-bottom-nav>button{width:100%;height:54px;min-width:0;min-height:54px;padding:5px 3px;border:0;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;overflow:hidden;color:#77717d;background:transparent;font:750 .69rem/1.1 Inter,system-ui,sans-serif;text-decoration:none}
  .ufm-public-bottom-nav img{width:19px;max-width:19px;height:19px;max-height:19px;display:block;object-fit:contain;opacity:.72;filter:brightness(0) saturate(100%) invert(20%)}
  .ufm-public-bottom-nav span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ufm-public-bottom-nav .active{color:#171327;background:#fbe5df}.ufm-public-bottom-nav .active img{opacity:1}
  .ufm-public-bottom-nav>a:focus-visible,.ufm-public-bottom-nav>button:focus-visible{outline:3px solid #ff806666;outline-offset:-3px}
}

/* Shared floating-utility contract.
   header-menu.js mounts this control on every public page that exposes the
   footer tools.  Its geometry must therefore live with the shared footer,
   not only in the marketing-page bundle.  Explicit maxima keep an unstyled
   SVG from participating in document flow as a full-width button. */
.ufm-utility-toggle{
  position:fixed;z-index:10023;right:18px;bottom:calc(92px + env(safe-area-inset-bottom));
  width:48px;min-width:48px;max-width:48px;height:48px;min-height:48px;max-height:48px;
  margin:0;padding:0;display:grid;place-items:center;overflow:hidden;
  border:1px solid rgba(255,255,255,.48);border-radius:50%;
  color:#fff;background:rgba(37,26,61,.66);box-shadow:0 5px 18px rgba(27,18,45,.16);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;
  transition:background-color .18s ease,transform .18s ease,opacity .18s ease;
}
.ufm-utility-toggle svg{width:19px;max-width:19px;height:19px;max-height:19px;display:block;fill:currentColor}
.ufm-utility-toggle:focus-visible{outline:3px solid #ff8066;outline-offset:3px}
.ufm-utility-toggle:active{transform:scale(.96)}
body.ufm-utility-ready .ufm-help-button,
body.ufm-utility-ready .ufm-readability-button{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(8px) scale(.94);transition:opacity .18s ease,transform .18s ease,visibility 0s linear .18s}
body.ufm-utility-ready.ufm-utility-open .ufm-help-button,
body.ufm-utility-ready.ufm-utility-open .ufm-readability-button{opacity:1;visibility:visible;pointer-events:auto;transform:none;transition-delay:0s}
body.ufm-utility-open .ufm-utility-toggle{background:rgba(37,26,61,.92)}
body.ufm-utility-ready.ufm-utility-open .ufm-help-button{right:18px;bottom:calc(150px + env(safe-area-inset-bottom))}
body.ufm-utility-ready.ufm-utility-open .ufm-readability-button{right:18px;bottom:calc(208px + env(safe-area-inset-bottom))}
@media(hover:hover){.ufm-utility-toggle:hover{background:rgba(37,26,61,.88);transform:translateY(-1px)}}
@media(max-width:1279px){
  .ufm-utility-toggle{right:16px;bottom:calc(84px + env(safe-area-inset-bottom))}
  body.ufm-utility-ready.ufm-utility-open .ufm-help-button{right:16px;bottom:calc(140px + env(safe-area-inset-bottom))}
  body.ufm-utility-ready.ufm-utility-open .ufm-readability-button{right:16px;bottom:calc(196px + env(safe-area-inset-bottom))}
}
@media(max-width:767px){
  .ufm-utility-toggle{right:12px}
  body.ufm-utility-ready.ufm-utility-open .ufm-help-button,
  body.ufm-utility-ready.ufm-utility-open .ufm-readability-button{right:12px}
}
@media(prefers-reduced-motion:reduce){.ufm-utility-toggle,body.ufm-utility-ready .ufm-help-button,body.ufm-utility-ready .ufm-readability-button{transition:none}}

/* Two stable edge actions: reading comfort belongs on the left; navigation
   back to the document start belongs on the right.  This replaces the
   ambiguous ellipsis tray without moving either action between pages. */
.ufm-utility-toggle{display:none}
.ufm-readability-button,
body.ufm-utility-ready .ufm-readability-button,
body.ufm-utility-ready.ufm-utility-open .ufm-readability-button{
  top:auto;right:auto;bottom:calc(14px + env(safe-area-inset-bottom));left:18px;
  opacity:1;visibility:visible;pointer-events:auto;transform:none;
}
.ufm-back-to-top{
  position:fixed;z-index:88;right:18px;bottom:calc(14px + env(safe-area-inset-bottom));
  min-width:48px;height:48px;padding:0 14px;display:flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid rgba(255,255,255,.48);border-radius:999px;color:#fff;
  background:rgba(37,26,61,.82);box-shadow:0 5px 18px rgba(27,18,45,.16);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  font:650 13px/1 Inter,system-ui,sans-serif;text-decoration:none;
}
.ufm-back-to-top span{font-size:22px;line-height:1}.ufm-back-to-top b{font:inherit;white-space:nowrap}
.ufm-back-to-top:hover,.ufm-back-to-top:focus-visible{color:#fff;background:#4b3575;outline:3px solid rgba(255,139,115,.34);outline-offset:3px}
.ufm-readability-button,.ufm-back-to-top,.gdpr-alert{translate:0 var(--ufm-footer-stop-shift,0px)}
@media(max-width:1279px){
  .ufm-readability-button,body.ufm-utility-ready .ufm-readability-button,body.ufm-utility-ready.ufm-utility-open .ufm-readability-button{left:12px;bottom:calc(82px + env(safe-area-inset-bottom))}
  .ufm-back-to-top{right:12px;bottom:calc(82px + env(safe-area-inset-bottom));width:48px;padding:0;border-radius:50%}
  .ufm-back-to-top b{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
}
@media(max-width:679px){
  .ufm-readability-button,body.ufm-utility-ready .ufm-readability-button,body.ufm-utility-ready.ufm-utility-open .ufm-readability-button{bottom:calc(72px + env(safe-area-inset-bottom))}
  .ufm-back-to-top{bottom:calc(72px + env(safe-area-inset-bottom))}
}
@media(prefers-reduced-motion:reduce){.ufm-back-to-top{scroll-behavior:auto}}
.ufm-footer-social-actions>a img,.ufm-footer-social-actions>a svg{width:17px;height:17px;display:block;opacity:1;filter:brightness(0) saturate(100%) invert(100%)}
.auth-page-ufoundme:has(.registration-shell) .ufm-back-to-top{display:none}

/* source: universal-controls.css */
/**
 * @file Presentation layer for universal controls.
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Style de la capsule fixe de contrôles partagés (langue, thème, compte).
 * @purpose-en Styles the fixed capsule of shared controls (language, theme, account).
 * @audit-scope asset
 * @inputs-fr Aucune entrée ; feuille de style statique chargée par les pages qui la référencent.
 * @inputs-en No inputs; static stylesheet loaded by the pages that reference it.
 * @effects-fr Règles de présentation uniquement ; aucun script ni requête réseau.
 * @effects-en Presentation rules only; no script and no network request.
 */

.ufm-global-controls{position:fixed;z-index:12000;top:10px;right:max(14px,calc((100vw - 1540px)/2));max-width:calc(100vw - 16px);min-height:54px;padding:5px;display:flex;align-items:center;gap:8px;border:1px solid #e4dce6;border-radius:999px;color:#171327;background:#fffdfbf2;box-shadow:0 12px 38px #17132718;backdrop-filter:blur(16px);font:750 13px/1.1 Arial,sans-serif}.ufm-global-controls *{box-sizing:border-box}.ufm-universal-languages{display:flex;align-items:center;gap:3px}.ufm-universal-languages a{width:36px;height:36px;display:grid;place-items:center;border:1px solid #e4dce6;border-radius:50%;color:#6f6978;text-decoration:none;font-size:11px}.ufm-universal-languages a[aria-current=page]{border-color:#251a3d;color:#fff;background:#251a3d;box-shadow:0 5px 14px #251a3d33}.ufm-login,.ufm-create,.ufm-studio-link{min-height:38px;padding:0 13px;display:flex;align-items:center;border-radius:999px;color:#251a3d;text-decoration:none;white-space:nowrap}.ufm-create,.ufm-studio-link{color:#fff;background:#251a3d}.ufm-owner-menu{position:relative}.ufm-owner-menu summary{min-height:42px;padding:2px 8px 2px 2px;display:flex;align-items:center;gap:7px;list-style:none;cursor:pointer}.ufm-owner-menu summary::-webkit-details-marker{display:none}.ufm-owner-menu summary>img,.ufm-owner-menu summary>span{width:38px;height:38px;min-width:38px;max-width:38px;max-height:38px;display:grid;place-items:center;border-radius:50%;object-fit:cover;color:#fff;background:linear-gradient(135deg,#ff704d,#ffb347);font-weight:900}.ufm-owner-menu summary b{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ufm-owner-menu summary i{font-style:normal}.ufm-owner-menu>div{position:absolute;right:0;top:calc(100% + 9px);width:min(250px,calc(100vw - 16px));max-height:min(520px,calc(100dvh - 86px));padding:8px;overflow:auto;overscroll-behavior:contain;border:1px solid #e4dce6;border-radius:17px;background:#fff;box-shadow:0 22px 60px #17132725}.ufm-owner-menu>div a{min-height:42px;padding:8px 11px;display:flex;align-items:center;gap:10px;border-radius:10px;color:#171327;text-decoration:none}.ufm-owner-menu>div a:hover,.ufm-owner-menu>div a:focus{background:#f5f0fa}.ufm-owner-menu>div img{width:18px;height:18px;object-fit:contain;opacity:.72}.ufm-owner-menu hr{margin:5px;border:0;border-top:1px solid #e4dce6}.ufm-owner-menu .ufm-logout{color:#a22a38}.topbar .language-switcher,.dash-head>.dash-languages,.dash-head .profile-menu,body>header:not(.topbar):not(.dash-head)>nav[aria-label=Language]{display:none}body:has(.ufm-global-controls) .topbar .account-actions>a[href*="login.php"],body:has(.ufm-global-controls) .topbar .account-actions>.nav-cta{display:none}@media(max-width:900px){.ufm-global-controls{top:7px;right:8px;min-height:48px}.ufm-global-controls .ufm-login,.ufm-global-controls .ufm-create,.ufm-studio-link,.ufm-owner-menu summary b,.ufm-owner-menu summary i{display:none}.ufm-universal-languages a{width:32px;height:32px}.ufm-owner-menu summary{padding:0}.ufm-owner-menu>div{position:fixed;top:62px;right:8px;width:min(290px,calc(100vw - 16px))}}@media(max-width:480px){.ufm-global-controls{left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 16px)}.ufm-universal-languages a{width:30px;height:30px}.ufm-owner-menu summary>img,.ufm-owner-menu summary>span{width:34px;height:34px;min-width:34px;max-width:34px;max-height:34px}.ufm-owner-menu>div{top:58px}}

/* EU24 selector: one compact decision in the header, full searchable list on demand. */
.ufm-language-menu{position:relative}.ufm-language-menu>summary{min-width:62px;min-height:42px;padding:0 9px;display:flex;align-items:center;justify-content:center;gap:7px;border-radius:999px;list-style:none;cursor:pointer}.ufm-language-menu>summary::-webkit-details-marker{display:none}.ufm-language-menu>summary img{width:17px;height:17px}.ufm-language-menu>summary b{font-size:11px}.ufm-language-menu>summary i{font-style:normal;color:#777080}.ufm-language-menu[open]>summary{color:#fff;background:#251a3d}.ufm-language-menu[open]>summary img{filter:brightness(0) invert(1)}
.ufm-language-menu>div{position:absolute;right:0;top:calc(100% + 10px);width:min(420px,calc(100vw - 20px));padding:16px;border:1px solid #ded6e7;border-radius:22px;background:#fff;box-shadow:0 28px 80px #1713272b}.ufm-language-menu header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.ufm-language-menu header strong{font-size:16px}.ufm-language-menu header small{padding:5px 8px;border-radius:999px;color:#51347f;background:#f0ebf7;font-size:10px}.ufm-language-menu label{height:42px;padding:0 12px;display:flex;align-items:center;gap:8px;border:1px solid #ded6e7;border-radius:12px;background:#faf9fb}.ufm-language-menu input{min-width:0;width:100%;border:0;outline:0;background:transparent;font:inherit}
.ufm-language-menu .ufm-universal-languages{max-height:min(55vh,430px);margin-top:12px;display:grid;grid-template-columns:1fr 1fr;gap:5px;overflow:auto;overscroll-behavior:contain}.ufm-language-menu .ufm-universal-languages>a,.ufm-language-menu .ufm-universal-languages>span{width:auto;height:42px;padding:0 10px;border:1px solid transparent;border-radius:11px;display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:5px;color:#171327;background:#fff;text-decoration:none;font-size:12px}.ufm-language-menu .ufm-universal-languages b{font-size:10px;color:#665e70}.ufm-language-menu .ufm-universal-languages a:hover,.ufm-language-menu .ufm-universal-languages a:focus-visible{border-color:#51347f;background:#f4eff9;outline:0}.ufm-language-menu .ufm-universal-languages a[aria-current=page]{border-color:#251a3d;color:#fff;background:#251a3d;box-shadow:none}.ufm-language-menu .ufm-universal-languages a[aria-current=page] b{color:#fff}.ufm-language-menu .ufm-universal-languages .is-pilot{opacity:.55}.ufm-language-menu .ufm-universal-languages .is-pilot i::after{content:'…';font-style:normal}.ufm-language-menu .ufm-universal-languages [hidden]{display:none}
@media(max-width:900px){.ufm-language-menu>summary{min-width:44px;padding:0 7px}.ufm-language-menu>summary i{display:none}.ufm-language-menu>div{position:fixed;top:62px;right:8px}}
@media(max-width:480px){.ufm-language-menu>div{top:58px;right:8px;left:8px;width:auto}.ufm-language-menu .ufm-universal-languages{grid-template-columns:1fr 1fr}}

/* Header-axis contract: the connected controls share the header's vertical
   centre and right gutter instead of being positioned from an arbitrary top. */
.ufm-global-controls{top:37px;right:clamp(28px,4vw,70px);transform:translateY(-50%)}
@media(min-width:2000px){.ufm-global-controls{top:41px;right:clamp(48px,5vw,100px)}}
@media(min-width:1024px) and (max-width:1279px){.ufm-global-controls{top:33px;right:80px}}
@media(max-width:1023px){.ufm-global-controls{top:33px;right:18px;min-height:48px}.ufm-global-controls .ufm-login,.ufm-global-controls .ufm-create,.ufm-global-controls .ufm-studio-link,.ufm-owner-menu summary b,.ufm-owner-menu summary i{display:none}.ufm-owner-menu summary{padding:0}.ufm-owner-menu>div{position:fixed;top:62px;right:8px;width:min(290px,calc(100vw - 16px))}}
@media(min-width:768px) and (max-width:1023px){
  /* On tablet the complete language catalogue is already available in the
     navigation sheet. A guest pill must not collapse into an empty 12px bar. */
  .ufm-global-controls.ufm-guest-controls{display:none}
  .ufm-global-controls:has(.ufm-owner-menu){right:120px;min-width:48px;width:auto}
}
@media(max-width:767px){.ufm-global-controls.ufm-guest-controls{display:none}}
@media(min-width:768px) and (max-width:1100px){.ufm-global-controls.ufm-guest-controls{display:none}}
@media(max-width:767px){.ufm-global-controls{top:7px;right:8px;transform:none}.ufm-owner-menu>div{position:absolute;top:calc(100% + 9px);right:0;left:auto;width:min(290px,calc(100vw - 16px))}}
@media(max-width:480px){.ufm-global-controls{left:auto;right:6px}}
/* Server-rendered navigation is the baseline, including script/network failure.
   Native details keeps keyboard/touch support without a second JS controller. */
.ufm-native-navigation{position:relative;z-index:1;box-sizing:border-box;width:min(960px,calc(100% - 32px));margin:16px auto;padding:0;border:1px solid #ded5e5;border-radius:18px;color:#21182f;background:#fff;font:500 1rem/1.5 Inter,system-ui,sans-serif}
.ufm-native-navigation>summary{min-height:48px;padding:12px 20px;box-sizing:border-box;cursor:pointer;font-weight:750}
.ufm-native-navigation>div{padding:0 16px 16px;max-height:60svh;overflow:auto;overscroll-behavior:contain}
.ufm-native-navigation nav{display:flex;flex-wrap:wrap;gap:8px;padding:12px 0;border-top:1px solid #e8e1ec}
.ufm-native-navigation .ufm-native-routes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%}
.ufm-native-navigation a{box-sizing:border-box;display:flex;align-items:center;min-height:44px;min-width:0;max-width:100%;padding:10px 12px;border-radius:10px;background:#f5f1f8;color:#302144;text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}
.ufm-native-navigation p{margin:8px 0 16px;overflow-wrap:anywhere}
.ufm-native-navigation p a{display:inline-flex;margin-top:8px}
.ufm-native-navigation :is(a,summary):focus-visible{outline:3px solid #634296;outline-offset:3px}
html:not(.ufm-navigation-ready) body:has(.ufm-native-navigation) :is([data-mobile-menu],.mobile-app-nav){display:none}
html.js:not(.ufm-views-ready) #main-content>.view:not([hidden]){display:grid;scroll-margin-top:110px}
html:has(.ufm-native-navigation:not([hidden])){scroll-behavior:auto}
/* A shared, in-flow desktop route row. Account/cart stay in the header;
   the six discovery/purchase destinations no longer require a hamburger. */
.ufm-desktop-navigation{display:none}
.skip-link{position:absolute;top:-200px;left:12px;z-index:14000;padding:12px 18px;border-radius:10px;background:#fff;color:#251a3d}
.skip-link:focus{top:8px;outline:3px solid #634296}
@media(min-width:1280px){
  html.ufm-navigation-ready{scroll-padding-top:calc(var(--ufm-public-header-height,74px) + 70px)}
  html.ufm-navigation-ready .ufm-desktop-navigation:not([hidden]){position:sticky;top:var(--ufm-public-header-height,74px);z-index:100;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:1280px;margin:0 auto;padding:10px 24px;background:#fffdfb;border-bottom:1px solid #e8e1ec;font:650 14px/1.25 Inter,system-ui,sans-serif}
  .ufm-desktop-navigation>a{display:flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border-radius:12px;color:#302144;text-decoration:none;white-space:normal;text-align:center}
  .ufm-desktop-navigation>a:last-child{color:#fff;background:#251a3d}
  .ufm-desktop-navigation>a:hover{background:#eee9f6;color:#251a3d}
  .ufm-desktop-navigation>a:focus-visible{outline:3px solid #634296;outline-offset:2px}
}
/* Reserve a separate row above the persistent notice/utilities for purchase.
   Complete unlayered geometry must win over deferred legacy layout bundles. */
body #layouts .sticky-action{bottom:calc(86px + env(safe-area-inset-bottom));max-width:calc(100vw - 24px)}
body #layouts{padding-bottom:180px}
@media(max-width:1279px){
  body #layouts .sticky-action{bottom:calc(158px + env(safe-area-inset-bottom))}
  body #layouts{padding-bottom:250px}
}
@media(max-width:599px){
  html.ufm-mobile-utility-active body #layouts .sticky-action{bottom:calc(var(--ufm-mobile-utility-dock-h) + 12px)}
  html.ufm-mobile-utility-active:has(.gdpr-alert:not([hidden])) body #layouts .sticky-action{bottom:calc(var(--ufm-mobile-utility-dock-h) + 76px)}
  html.ufm-mobile-utility-active body #layouts{padding-bottom:300px}
  html:not(.ufm-mobile-utility-active) body .gdpr-alert{bottom:calc(132px + env(safe-area-inset-bottom))}
  /* Keep purchase clear even when the optional mobile rail CSS fails. */
  html:not(.ufm-mobile-utility-active):has(.gdpr-alert:not([hidden])) body #layouts .sticky-action{bottom:calc(208px + env(safe-area-inset-bottom))}
}
html:not(.ufm-navigation-ready) body:has(.ufm-native-navigation)>:is(.topbar,.ufm-auth-public-header){position:relative;inset:auto}
html:not(.ufm-navigation-ready) body:has(.ufm-native-navigation)>.ufm-global-controls{position:absolute}
@media(pointer:coarse){.ufm-global-controls :where(a,summary,button){touch-action:manipulation;-webkit-tap-highlight-color:transparent}.ufm-universal-languages a{width:44px;height:44px;min-width:44px;min-height:44px}.ufm-login,.ufm-create,.ufm-studio-link,.ufm-owner-menu summary{min-height:44px}.ufm-owner-menu summary>img,.ufm-owner-menu summary>span{width:40px;height:40px}.ufm-owner-menu>div a{min-height:48px}.ufm-language-menu .ufm-universal-languages>a,.ufm-language-menu .ufm-universal-languages>span{height:48px;min-height:48px}}
/* Published menu hit-area correction, preserving desktop and native navigation. */
.mobile-menu-sheet .mobile-sheet-routes>a.mobile-wall-of-fame{display:grid}
.mobile-menu-sheet>header>a{display:flex;align-items:center;min-width:44px;min-height:44px}
.mobile-menu-sheet .mobile-sheet-languages>a{width:44px;height:44px;min-width:44px;min-height:44px;flex:0 0 44px}
/* Footer social icons: 44 px round targets (some rendered 42 x 42 or 42 x 44). */
.ufm-footer-social-actions>:is(a,button){width:44px;height:44px;min-width:44px;min-height:44px;aspect-ratio:1;flex:none}

/* source: public-header-contract.css */
/**
 * Marketing, shop and legal pages use different semantic wrappers, but they
 * must expose the same visual axis, gutters and touch geometry.  Keep this
 * file loaded after page-specific styles so a section cannot reintroduce a
 * competing header height or an arbitrary control offset.
 *
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Contrat d’en-tête public partagé : hauteur, gouttières, logo et cibles tactiles identiques sur les pages marketing, boutique et légales.
 * @purpose-en Shared public-header contract: same height, gutters, logo and touch targets on marketing, shop and legal pages.
 * @audit-scope page
 * @inputs-fr Aucune entrée ; sélecteurs de en-têtes des pages publiques et des pages d’authentification.
 * @inputs-en No input; header selectors of public and authentication pages.
 * @effects-fr Règles de style uniquement ; utilise pour l’emporter sur les styles propres à chaque page.
 * @effects-en Style rules only; uses to win over page-specific styles.
 */
:root{--ufm-public-header-height:74px;--ufm-public-gutter:clamp(16px,4vw,64px);--ufm-brand-lockup-width:clamp(132px,11vw,168px)}
:where(body>header,.topbar,.legal-header,.shop-header,.shop-checkout-header,.ufm-auth-public-header,.ufm-contact-head,.partner-head,.dash-head){
  height:var(--ufm-public-header-height);
  min-height:var(--ufm-public-header-height);
  padding-block:0;
  padding-inline:var(--ufm-public-gutter);
  align-items:center;
  border-bottom:1px solid #251a3d14;
  background:#fffdfbf2;
  backdrop-filter:blur(16px);
}
:where(body>header>a:first-child,.topbar .logo,.legal-brand,.shop-brand,.shop-checkout-header>a:first-child,.ufm-auth-public-header .auth-logo,.ufm-contact-head>a:first-child,.partner-head>a:first-child,.dash-head>a:first-child){
  width:var(--ufm-brand-lockup-width);
  min-width:var(--ufm-brand-lockup-width);
  max-width:var(--ufm-brand-lockup-width);
  min-height:48px;display:flex;
  flex:0 0 var(--ufm-brand-lockup-width);
  align-items:center;justify-content:center;
}
/* Canonical UFoundMe! brand lockup: every section reuses the Home logo and
   its discreet pronunciation instead of rebuilding a page-specific mark. */
.ufm-brand-lockup{
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  gap:2px;
  line-height:1;
  text-decoration:none;
}
.ufm-brand-lockup>.brand-pronunciation{
  display:block;
  width:100%;
  flex:0 0 auto;
  color:#77717d;
  font-family:Inter,system-ui,sans-serif;
  font-size:clamp(10px,.72vw,12px);
  font-weight:400;
  line-height:1;
  letter-spacing:.045em;
  text-align:center;
  white-space:nowrap;
  word-break:normal;
  overflow-wrap:normal;
}
/* Legacy section headers keep their semantic links, but receive the exact
   same visible lockup until their markup is migrated to the shared class. */
:where(.shop-brand,.legal-brand,.ufm-auth-public-header .auth-logo,.ufm-contact-head>a:first-child,.partner-head>a:first-child,.dash-head>a:first-child):not(.ufm-brand-lockup){
  flex-direction:column;
  align-items:flex-start;
  gap:2px;
  line-height:1;
  text-decoration:none;
}
:where(.shop-brand,.legal-brand,.ufm-auth-public-header .auth-logo,.ufm-contact-head>a:first-child,.partner-head>a:first-child,.dash-head>a:first-child):not(.ufm-brand-lockup)::after{
  content:"by MEO Safety";
  display:block;
  width:100%;
  color:#77717d;
  font-family:Inter,system-ui,sans-serif;
  font-size:clamp(10px,.72vw,12px);
  font-weight:650;
  line-height:1;
  letter-spacing:.045em;
  text-align:center;
  white-space:nowrap;
}
.ufm-brand-lockup>.ufm-brand-signature{
  display:block;width:100%;flex:0 0 auto;
  color:#625a69;font-family:Lexend,Inter,system-ui,sans-serif;
  font-size:clamp(9px,.66vw,11px);font-weight:650;
  line-height:1.05;letter-spacing:.035em;text-align:center;white-space:nowrap
}
:where(body>header>a:first-child,.topbar .logo,.legal-brand,.shop-brand,.shop-checkout-header>a:first-child,.ufm-auth-public-header .auth-logo,.ufm-contact-head>a:first-child,.partner-head>a:first-child,.dash-head>a:first-child)>img{
  width:100%;max-width:100%;height:auto;display:block;flex:0 0 auto;
}
body>.ufm-global-controls{
  top:calc(var(--ufm-public-header-height)/2);
  right:var(--ufm-public-gutter);
  transform:translateY(-50%);
}
/* Defence in depth for cached or partially upgraded PHP output: a canonical
   public header is the sole owner of language/account/menu controls. */
body:has(>.ufm-auth-public-header)>.ufm-global-controls{display:none}

/* Medium desktop/tablet-landscape header ownership.
   The shop legacy markup exposes both standalone controls and the compact
   cart/menu group.  Only the compact group may be visible in this band. */
@media(min-width:1280px) and (max-width:1759px){
  .shop-header>.wide-menu-trigger,
  .shop-header>.desktop-cart-trigger{display:none}
  .shop-header>.compact-header-actions{display:flex}
}
.mobile-menu-sheet{z-index:13010}
.mobile-menu-sheet>header{position:relative;z-index:1}

/* A 1 100 px viewport cannot safely hold logo, account capsule, cart and
   hamburger in one row.  Authentication remains the first group in the menu;
   the header keeps only its two immediate actions. */
@media(min-width:768px) and (max-width:1199px){
  body>.ufm-global-controls.ufm-guest-controls{display:none}
  body>.ufm-global-controls.ufm-owner-controls{right:164px}
  body:has(>.topbar)>.ufm-global-controls.ufm-owner-controls{top:calc(var(--ufm-public-header-height)/2)}
  .topbar>.mobile-cart-trigger{right:80px}
  .topbar>.wide-menu-trigger{right:20px}
  .legal-header .legal-back{margin-left:auto}
  .shop-header .cart-trigger{margin-left:auto}
}

@media(max-width:767px){
  :root{--ufm-public-header-height:68px;--ufm-public-gutter:12px;--ufm-brand-lockup-width:clamp(112px,34vw,138px)}
  :where(body>header,.topbar,.legal-header,.shop-header,.shop-checkout-header,.ufm-auth-public-header,.ufm-contact-head,.partner-head,.dash-head){gap:10px}
  .ufm-brand-lockup>.brand-pronunciation,.ufm-brand-lockup>.ufm-brand-signature{font-size:9px}
  body>.ufm-global-controls.ufm-guest-controls{display:none}
  body>.ufm-global-controls.ufm-owner-controls{top:7px;right:124px;transform:none}
  body>.ufm-global-controls.ufm-owner-controls .ufm-owner-menu>div{position:absolute;top:calc(100% + 9px);right:-117px;left:auto;width:min(290px,calc(100vw - 16px))}
  .legal-header .legal-back{margin-left:auto}
  .shop-header .cart-trigger{margin-left:auto}
  .legal-page main::before{inset:var(--ufm-public-header-height) 0 0}
}

@media(pointer:coarse){
  :where(body>header,.topbar,.legal-header,.shop-header,.shop-checkout-header,.ufm-auth-public-header,.ufm-contact-head,.partner-head,.dash-head) :where(a,button,summary){
    min-width:44px;min-height:44px;touch-action:manipulation;-webkit-tap-highlight-color:transparent;
  }
}

/* Final specificity fence: page styles may describe their internal header
   content, but cannot redefine the public shell height. */
body>:is(header.topbar,header.legal-header,header.shop-header,header.shop-checkout-header,header.ufm-auth-public-header,header.ufm-contact-head,header.partner-head,header.dash-head),
body>header:first-child{height:var(--ufm-public-header-height);min-height:var(--ufm-public-header-height);padding-block:0;align-items:center}
body.legal-page>header.legal-header{height:var(--ufm-public-header-height);min-height:var(--ufm-public-header-height);padding-block:0;align-items:center}

/* Open-menu contrast contract: navigation symbols, arrows and labels are
   rendered as true black on their light surfaces in every responsive range. */
.mobile-menu-sheet :is(.mobile-sheet-routes,.mobile-sheet-tools,.mobile-sheet-account,.mobile-sheet-languages) :is(a,button),
.mobile-menu-sheet :is(.mobile-sheet-routes,.mobile-sheet-tools,.mobile-sheet-account,.mobile-sheet-languages) :is(span,b),
.mobile-menu-sheet .mobile-sheet-tools h2{
  color:#000;
}
.mobile-menu-sheet :is(.mobile-sheet-routes,.mobile-sheet-tools) img{
  filter:brightness(0);
  opacity:1;
}
.mobile-menu-sheet .mobile-test-now{
  color:#000;
  background:#f6f3ef;
}
.mobile-menu-sheet .mobile-test-now img{filter:brightness(0)}
.mobile-menu-sheet .mobile-wall-of-fame{
  color:#000;
  background:color-mix(in srgb,#04313c 15%,#fff);
}
.mobile-menu-sheet .mobile-wall-of-fame img{filter:brightness(0)}
.mobile-menu-sheet .mobile-sheet-tools .menu-aa{
  color:#000;
  border:1px solid #000;
  background:#fff;
}
.mobile-menu-sheet .mobile-sheet-account .primary,
.mobile-menu-sheet .mobile-sheet-languages a[aria-current]{
  color:#000;
  border:1px solid #000;
  background:#fff;
}

/* source: gdpr-alert.css */
/**
 * @file Shared, mobile-first privacy notice.
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Style de l’avis de confidentialité flottant, centré et compact.
 * @purpose-en Styles for the floating, centred, compact privacy notice.
 * @audit-scope asset
 * @inputs-fr Aucune : feuille de style statique.
 * @inputs-en None: static stylesheet.
 * @effects-fr Positionne .gdpr-alert et réserve un espace en bas de main tant que l’avis est visible.
 * @effects-en Positions .gdpr-alert and reserves bottom space in main while the notice is visible.
 *
 * This file is loaded after page styles and therefore owns the complete visual
 * contract. Keep the notice compact, centred and clear of persistent navigation.
 */
.gdpr-alert {
  position: fixed;
  right: auto;
  bottom: calc(72px + env(safe-area-inset-bottom));
  left: 50%;
  z-index: 88;
  width: auto;
  max-width: calc(100vw - 20px);
  min-height: 52px;
  margin: 0;
  padding: 4px 5px 4px 11px;
  border: 1px solid #d9d2df;
  border-radius: 999px;
  display: grid;
  grid-template-columns: 20px auto 44px;
  align-items: center;
  gap: 8px;
  color: #251a3d;
  background: rgb(255 255 255 / 96%);
  box-shadow: 0 12px 34px rgb(37 26 61 / 18%);
  backdrop-filter: blur(16px);
  transform: translateX(-50%);
  font: 600 14px/1.3 Inter, system-ui, sans-serif;
}

.gdpr-alert[hidden] { display: none; }
/* Fixed notices need a matching document reserve: the last actionable band
   can therefore scroll completely above the notice instead of sitting under it. */
body:has(> .gdpr-alert:not([hidden])) main::after {
  width: 100%; height: calc(74px + env(safe-area-inset-bottom)); display: block; content: '';
}
.gdpr-alert > img { width: 20px; height: 20px; }
.gdpr-alert > span { display: none; }

.gdpr-alert > a {
  min-width: 0;
  color: inherit;
  font-size: 14px;
  font-weight: 650;
  line-height: 1.2;
  white-space: nowrap;
}

.gdpr-alert > button {
  position: static;
  width: 44px;
  height: 44px;
  min-width: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: #251a3d;
  background: #eee9f2;
  transform: none;
  cursor: pointer;
  touch-action: manipulation;
}

.gdpr-alert > button:hover,
.gdpr-alert > button:focus-visible {
  color: #fff;
  background: #4b3575;
  outline: 3px solid rgb(255 139 115 / 34%);
  outline-offset: 2px;
}

/* Tablet widths retain the compact centred form: the product price occupies
   the lower-right quadrant on landscape tablets and must stay unobscured. */
@media (min-width: 680px) {
  .gdpr-alert {
    bottom: calc(82px + env(safe-area-inset-bottom));
    width: auto;
    padding: 4px 5px 4px 11px;
    border-radius: 999px;
    grid-template-columns: 20px auto 44px;
    gap: 10px;
    left: 50%;
  }
  .finder-start form { padding:24px; }
}

/* Desktop has no persistent bottom navigation. */
@media (min-width: 1280px) {
  .gdpr-alert {
    bottom: 14px;
    left: 50%;
    width: min(620px, calc(100vw - 32px));
    padding: 7px 7px 7px 14px;
    border-radius: 16px;
    grid-template-columns: 20px minmax(0, 1fr) auto 44px;
  }
  .gdpr-alert > span { display:block;min-width:0;overflow:hidden;color:#4f465e;font-size:12px;font-weight:450;line-height:1.25;text-overflow:ellipsis;white-space:nowrap; }
  .gdpr-alert > span strong { color:#251a3d;font-weight:650; }
  body:has(> .gdpr-alert:not([hidden])) main::after { height: 72px; }
}

/* Authentication already explains privacy in the journey itself. Keep this
   notice available without masking the form or the brand story. */
.auth-page-ufoundme .gdpr-alert {
  right: auto;
  /* Share the same responsive baseline as readability and back-to-top.
     footer-share.js then applies one common stop shift to all three. */
  bottom: calc(82px + env(safe-area-inset-bottom));
  left: 50%;
  width: auto;
  max-width: calc(100vw - 20px);
  grid-template-columns: 20px auto 44px;
  transform: translateX(-50%);
}
.auth-page-ufoundme .gdpr-alert > span { display: none; }
.auth-page-ufoundme .gdpr-alert { min-height:48px;padding-left:9px;gap:6px; }
.auth-page-ufoundme .gdpr-alert > a { font-size:12px; }
.auth-page-ufoundme .gdpr-alert > button { width:44px;height:44px;min-width:44px; }
@media (min-width:480px) {
  .auth-page-ufoundme .gdpr-alert { min-height:52px;padding-left:11px;gap:8px; }
  .auth-page-ufoundme .gdpr-alert > a { font-size:14px; }
  .auth-page-ufoundme .gdpr-alert > button { width:44px;height:44px;min-width:44px; }
}
@media (max-width:679px) {
  .auth-page-ufoundme .gdpr-alert {
    bottom: calc(72px + env(safe-area-inset-bottom));
  }
}
@media (min-width:1280px) {
  .auth-page-ufoundme .gdpr-alert {
    bottom: calc(14px + env(safe-area-inset-bottom));
  }
}

/* Finder dialog styles share this small stylesheet but are independent from
   the notice above. */
.finder-start { width: min(460px, calc(100% - 28px)); padding: 0; border: 0; border-radius: 24px; color: #251a3d; }
.finder-start::backdrop { background: rgb(23 19 39 / 53%); backdrop-filter: blur(7px); }
.finder-start form { padding: 19px; display: grid; gap: 13px; }
.finder-start form > button:first-child { width: 44px; height: 44px; justify-self: end; border: 0; border-radius: 50%; }
.finder-start small { letter-spacing: .1em; }
.finder-start h2, .finder-start p { margin: 0; }
.finder-start label { display: grid; gap: 7px; font-weight: 650; }
.finder-start textarea { min-height: 110px; padding: 12px; border: 1px solid #d9d2df; border-radius: 14px; resize: vertical; }
.finder-start [data-error] { color: #a32635; }
/* P1: keep purchase in its own row. This shared component is also loaded on
   non-home surfaces: do not depend on a deferred marketing/navigation bundle
   to separate the notice from an actionable purchase bar. */
body #layouts .sticky-action {
  bottom: calc(86px + env(safe-area-inset-bottom));
  max-width: calc(100vw - 24px);
}
body #layouts { padding-bottom: 180px; }
/* The footer's last links must be scrollable above persistent controls. */
body:has(> .gdpr-alert) .ufm-footer {
  padding-bottom: calc(96px + env(safe-area-inset-bottom));
}
body:has(#layouts.active):has(> .gdpr-alert) .ufm-footer {
  padding-bottom: calc(208px + env(safe-area-inset-bottom));
}
@media (max-width:1279px) {
  /* Answers grow with their translated content. A viewport-height editor
     placed its last actions underneath the fixed mobile navigation. */
  body #aide.help-view {
    height: auto;
    min-height: calc(100svh - 68px);
    padding-bottom: 236px;
    grid-template-rows: auto auto;
    align-content: start;
    overflow: visible;
  }
  body #aide .help-shell { align-items: start; }
  body #aide .help-questions { max-height: 340px; }
  body #aide .help-answer { max-height: none; overflow: visible; }
  body #aide .help-answer>div { margin-top: 24px; }
  body #layouts .sticky-action { bottom: calc(158px + env(safe-area-inset-bottom)); }
  body #layouts { padding-bottom: 250px; }
  body:has(> .gdpr-alert) .ufm-footer {
    padding-bottom: calc(168px + env(safe-area-inset-bottom));
  }
  body:has(#layouts.active):has(> .gdpr-alert) .ufm-footer {
    padding-bottom: calc(280px + env(safe-area-inset-bottom));
  }
}
@media (max-width:767px) {
  body #aide .help-shell { grid-template-rows: minmax(130px,220px) auto; }
}
@media (max-width:1023px) {
  /* Choosing a design must never remove the purchase action on a phone.
     Keep the chosen design and the two actions as separate readable rows. */
  body #layouts .sticky-action {
    display: grid;
    grid-template-columns: minmax(0,1fr);
    gap: 8px;
    padding: 10px;
  }
  body #layouts .sticky-action>span,
  body #layouts .sticky-action>span>span { min-width: 0; }
  body #layouts .sticky-action strong { overflow-wrap: anywhere; }
  body #layouts .sticky-action>div {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 8px;
    width: 100%;
  }
  body #layouts .sticky-action>div :is(.primary,.secondary) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    min-height: 48px;
    height: auto;
    padding: 8px;
    font-size: .8rem;
    line-height: 1.25;
    white-space: normal;
    overflow-wrap: anywhere;
  }
  body #layouts { padding-bottom: 320px; }
  body:has(#layouts.active):has(> .gdpr-alert) .ufm-footer {
    padding-bottom: calc(320px + env(safe-area-inset-bottom));
  }
}
/* A contained reader is progressive enhancement only. Both scroll regions
   remain siblings; the answer's actions keep their native document order. */
@media (max-width:1279px) and (min-height:700px) {
  html.ufm-floating-layout-ready body #aide.help-view {
    height: var(--ufm-help-available,calc(100svh - 286px));
    min-height: 0;
    padding-bottom: 14px;
    grid-template-rows: auto minmax(0,1fr);
    overflow: hidden;
  }
  html.ufm-floating-layout-ready body #aide .help-shell {
    min-height: 0;
    align-items: stretch;
  }
  html.ufm-floating-layout-ready body #aide .help-questions {
    min-height: 0;
    max-height: none;
    overflow: hidden;
  }
  html.ufm-floating-layout-ready body #aide .help-answer {
    min-height: 0;
    max-height: none;
    overflow: auto;
    scroll-padding-block: 12px;
  }
  html.ufm-floating-layout-ready body #aide :is(a,button):focus-visible {
    outline: 2px solid #4b3575;
    outline-offset: 2px;
  }
}
@media (max-width:1023px) and (min-height:700px) {
  html.ufm-floating-layout-ready body #aide .help-shell {
    grid-template-rows: minmax(110px,.4fr) minmax(0,.6fr);
  }
}
@media (max-width:599px) {
  html:not(.ufm-mobile-utility-active) body .gdpr-alert {
    bottom: calc(132px + env(safe-area-inset-bottom));
  }
  html:not(.ufm-mobile-utility-active):has(.gdpr-alert:not([hidden])) body #layouts .sticky-action {
    bottom: calc(208px + env(safe-area-inset-bottom));
  }
  html.ufm-mobile-utility-active body #layouts .sticky-action {
    bottom: calc(var(--ufm-mobile-utility-dock-h) + 12px);
  }
  html.ufm-mobile-utility-active:has(.gdpr-alert:not([hidden])) body #layouts .sticky-action {
    bottom: calc(var(--ufm-mobile-utility-dock-h) + 76px);
  }
  body:has(> .gdpr-alert) .ufm-footer {
    padding-bottom: calc(224px + env(safe-area-inset-bottom));
  }
  body:has(#layouts.active):has(> .gdpr-alert) .ufm-footer {
    padding-bottom: calc(376px + env(safe-area-inset-bottom));
  }
  body #layouts { padding-bottom: 376px; }
}
/* P1b: no-JS marketing tools stay in flow. */
html[data-ufm-css-bundle="marketing"]:not(.js) body #layouts .sticky-action {
  position: static;
  inset: auto;
  width: calc(100% - 32px);
  max-width: 1240px;
  margin: 20px auto;
  transform: none;
  translate: none;
}
html[data-ufm-css-bundle="marketing"]:not(.js) body .gdpr-alert {
  position: static;
  inset: auto;
  width: fit-content;
  max-width: calc(100% - 32px);
  margin: 16px auto;
  transform: none;
  translate: none;
}
html[data-ufm-css-bundle="marketing"]:not(.js) body .ufm-back-to-top {
  position: static;
  inset: auto;
  width: max-content;
  max-width: calc(100% - 32px);
  margin: 16px auto;
  transform: none;
  translate: none;
}
/* End P1b no-JS marketing flow. */
/* End P1 floating clearance. */

/* Consent manager v1 ------------------------------------------------------ */
body > .gdpr-alert.ufm-cookie-banner {
  box-sizing: border-box;
  position: fixed;
  right: auto;
  bottom: calc(84px + env(safe-area-inset-bottom));
  left: 50%;
  /* Above both public mobile docks so consent actions remain clickable. */
  z-index: 1400;
  width: min(1180px, calc(100vw - 24px));
  max-width: none;
  min-height: 0;
  padding: 16px;
  border: 1px solid rgb(75 53 117 / 22%);
  border-radius: 22px;
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  align-items: center;
  gap: 16px;
  color: #1d1530;
  background: rgb(255 255 255 / 98%);
  box-shadow: 0 24px 70px rgb(29 21 48 / 24%);
  backdrop-filter: blur(18px);
  transform: translateX(-50%);
  font-family: Lexend, Inter, system-ui, sans-serif;
}
body > .gdpr-alert.ufm-cookie-banner[hidden] { display:none; }
.ufm-cookie-banner-brand { display:flex;align-items:center;flex:0 0 auto; }
.ufm-cookie-banner-brand img { display:block;width:clamp(132px,10vw,148px);height:auto;object-fit:contain; }
.ufm-cookie-banner-copy { min-width:0; }
.ufm-cookie-banner-copy strong { display:block;font-size:1rem;line-height:1.3; }
.ufm-cookie-banner-copy p { max-width:720px;margin:4px 0 0;color:#5b5269;font-size:.78rem;font-weight:450;line-height:1.45; }
.ufm-cookie-banner-actions { display:flex;align-items:center;gap:8px; }
.ufm-cookie-banner-actions button,
.ufm-cookie-dialog-actions button {
  min-height:46px;
  padding:8px 16px;
  border:1px solid #4b3575;
  border-radius:12px;
  color:#382659;
  background:#fff;
  font:700 .78rem/1.25 Lexend, Inter, system-ui, sans-serif;
  cursor:pointer;
}
.ufm-cookie-banner-actions button:hover,
.ufm-cookie-banner-actions button:focus-visible,
.ufm-cookie-dialog-actions button:hover,
.ufm-cookie-dialog-actions button:focus-visible { outline:3px solid rgb(255 113 82 / 35%);outline-offset:2px; }
.ufm-cookie-banner-actions .is-primary,
.ufm-cookie-dialog-actions .is-primary { border-color:#2f1c4e;color:#fff;background:#2f1c4e; }

.ufm-cookie-dialog {
  box-sizing:border-box;
  z-index:1500;
  width:min(760px,calc(100vw - 24px));
  max-width:none;
  max-height:min(900px,calc(100svh - 24px));
  padding:0;
  border:0;
  border-radius:24px;
  color:#1d1530;
  background:#fff;
  box-shadow:0 38px 110px rgb(16 10 27 / 40%);
  font-family:Lexend,Inter,system-ui,sans-serif;
  overflow:hidden;
}
.ufm-cookie-dialog::backdrop { background:rgb(22 15 38 / 68%);backdrop-filter:blur(7px); }
.ufm-cookie-dialog-shell { max-height:min(900px,calc(100svh - 24px));display:flex;flex-direction:column; }
.ufm-cookie-dialog-header { flex:0 0 auto;padding:18px 20px;border-bottom:1px solid #e7e1ea;display:flex;align-items:center;justify-content:space-between;gap:16px;background:#fff; }
.ufm-cookie-dialog-brand { display:flex;align-items:center;gap:12px; }
.ufm-cookie-dialog-brand img { width:142px;height:auto; }
.ufm-cookie-dialog-brand small { color:#6d6279;font-size:.65rem;font-weight:650; }
.ufm-cookie-dialog-header>button { width:44px;height:44px;min-width:44px;padding:0;border:1px solid #d8cfdf;border-radius:50%;display:grid;place-items:center;color:#382659;background:#f7f3f9;font:700 1.5rem/1 sans-serif;cursor:pointer; }
.ufm-cookie-dialog-header>button:focus-visible { outline:3px solid rgb(255 113 82 / 35%);outline-offset:2px; }
.ufm-cookie-dialog-content { min-height:0;padding:24px 24px 18px;overflow:auto;overscroll-behavior:contain; }
.ufm-cookie-eyebrow { margin:0 0 7px;color:#f36c4f;font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase; }
.ufm-cookie-dialog h2 { margin:0;color:#1d1530;font-size:clamp(1.4rem,3vw,2rem);line-height:1.12; }
#ufm-cookie-dialog-description { max-width:68ch;margin:12px 0 18px;color:#62586e;font-size:.88rem;line-height:1.55; }
.ufm-cookie-signal { margin:0 0 16px;padding:12px 14px;border-left:4px solid #0d7895;border-radius:10px;color:#063e4d;background:#e9f8fc;font-size:.78rem;line-height:1.45; }
.ufm-cookie-signal[hidden] { display:none; }
.ufm-cookie-categories { border:1px solid #ddd5e3;border-radius:16px;overflow:hidden; }
.ufm-cookie-category { min-height:74px;padding:0 15px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;background:#fff; }
.ufm-cookie-category+.ufm-cookie-category { border-top:1px solid #e6e0e9; }
.ufm-cookie-category details { min-width:0;padding:15px 0; }
.ufm-cookie-category summary { min-height:42px;display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none; }
.ufm-cookie-category summary::-webkit-details-marker { display:none; }
.ufm-cookie-category summary::before { width:28px;height:28px;min-width:28px;border-radius:50%;display:grid;place-items:center;color:#4b3575;background:#eee8f4;content:'+';font-size:1.1rem;font-weight:800; }
.ufm-cookie-category details[open] summary::before { content:'−'; }
.ufm-cookie-category summary span,.ufm-cookie-category summary b,.ufm-cookie-category summary small { display:block; }
.ufm-cookie-category summary b { color:#251a3d;font-size:.88rem;line-height:1.3; }
.ufm-cookie-category summary small { margin-top:2px;color:#756b80;font-size:.65rem;font-weight:500; }
.ufm-cookie-category details p { margin:8px 0 0 38px;color:#62586e;font-size:.76rem;line-height:1.5; }
.ufm-cookie-category>strong { color:#0b6b55;font-size:.72rem;text-align:right; }
.ufm-cookie-switch { position:relative;width:56px;height:32px;min-width:56px;display:block; }
.ufm-cookie-switch input { position:absolute;width:1px;height:1px;opacity:0; }
.ufm-cookie-switch i { position:absolute;inset:0;border:2px solid #aaa0b3;border-radius:999px;background:#cfc8d5;cursor:pointer;transition:background .15s ease,border-color .15s ease; }
.ufm-cookie-switch i::after { position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 2px 7px rgb(29 21 48 / 24%);content:'';transition:transform .15s ease; }
.ufm-cookie-switch input:checked+i { border-color:#237e62;background:#2f916f; }
.ufm-cookie-switch input:checked+i::after { transform:translateX(24px); }
.ufm-cookie-switch input:focus-visible+i { outline:3px solid rgb(255 113 82 / 40%);outline-offset:3px; }
.ufm-cookie-switch input:disabled+i { border-color:#d8d2dd;background:#e5e1e8;cursor:not-allowed;opacity:.72; }
.ufm-cookie-policy { width:max-content;max-width:100%;margin-top:16px;display:inline-block;color:#4b3575;font-size:.78rem;font-weight:750; }
.ufm-cookie-status { display:block;min-height:1.2em;margin-top:8px;color:#0b6b55;font-size:.74rem; }
.ufm-cookie-dialog-actions { flex:0 0 auto;padding:16px 20px calc(16px + env(safe-area-inset-bottom));border-top:1px solid #e2dce6;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;background:#fbf9fc; }
.ufm-footer-cookie-settings { width:max-content;max-width:100%;padding:0;border:0;color:inherit;background:transparent;font:inherit;text-align:left;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;cursor:pointer; }
.ufm-footer-cookie-settings:hover,.ufm-footer-cookie-settings:focus-visible { color:#fff; }

body:has(> .ufm-cookie-banner:not([hidden])) main::after { height:calc(170px + env(safe-area-inset-bottom)); }
body:has(> .ufm-cookie-banner:not([hidden])) .ufm-footer { padding-bottom:calc(184px + env(safe-area-inset-bottom)); }

@media (min-width:1280px) {
  body > .gdpr-alert.ufm-cookie-banner { bottom:18px; }
  body:has(> .ufm-cookie-banner:not([hidden])) main::after { height:110px; }
  body:has(> .ufm-cookie-banner:not([hidden])) .ufm-footer { padding-bottom:120px; }
}
@media (max-width:900px) {
  body > .gdpr-alert.ufm-cookie-banner { grid-template-columns:auto minmax(0,1fr); }
  .ufm-cookie-banner-actions { grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr)); }
  .ufm-cookie-banner-actions button { min-width:0;padding-inline:8px; }
}
@media (max-width:599px) {
  body > .gdpr-alert.ufm-cookie-banner { bottom:calc(82px + env(safe-area-inset-bottom));padding:13px;border-radius:18px;grid-template-columns:minmax(0,1fr);gap:10px; }
  .ufm-cookie-banner-brand { display:none; }
  .ufm-cookie-banner-copy p { font-size:.7rem;line-height:1.4; }
  .ufm-cookie-banner-actions { grid-column:auto;grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ufm-cookie-banner-actions .is-primary { grid-column:1/-1;grid-row:1; }
  .ufm-cookie-dialog { width:calc(100vw - 12px);max-height:calc(100svh - 12px);border-radius:20px; }
  .ufm-cookie-dialog-shell { max-height:calc(100svh - 12px); }
  .ufm-cookie-dialog-header { padding:12px 14px; }
  .ufm-cookie-dialog-brand { display:block; }
  .ufm-cookie-dialog-brand img { width:124px; }
  .ufm-cookie-dialog-brand small { margin-top:2px; }
  .ufm-cookie-dialog-content { padding:18px 14px 14px; }
  .ufm-cookie-category { padding-inline:11px;gap:8px; }
  .ufm-cookie-category details p { margin-left:0; }
  .ufm-cookie-category>strong { max-width:76px; }
  .ufm-cookie-dialog-actions { padding:10px 12px calc(10px + env(safe-area-inset-bottom));grid-template-columns:1fr 1fr; }
  .ufm-cookie-dialog-actions .is-primary { grid-column:1/-1;grid-row:1; }
  body:has(> .ufm-cookie-banner:not([hidden])) main::after { height:260px; }
  body:has(> .ufm-cookie-banner:not([hidden])) .ufm-footer { padding-bottom:calc(280px + env(safe-area-inset-bottom)); }
}
/* The marketing utility rail previously compressed the old one-line privacy
   notice to 64px. The preference manager remains a complete, readable card
   above that dock and owns its pointer layer. */
@media (max-width:599px) {
  html.ufm-mobile-utility-active body > .gdpr-alert.ufm-cookie-banner {
    left:6px;right:6px;bottom:var(--ufm-mobile-utility-dock-h);
    width:auto;max-width:none;height:auto;min-height:0;
    padding:13px;border:1px solid rgb(75 53 117 / 22%);border-radius:18px 18px 0 0;
    display:grid;grid-template-columns:minmax(0,1fr);gap:10px;
    background:rgb(255 255 255 / 98%);box-shadow:0 -14px 40px rgb(29 21 48 / 18%);
    backdrop-filter:blur(18px);transform:none;translate:none;z-index:1400;
  }
}
.auth-page-ufoundme:has(.registration-shell) > .gdpr-alert.ufm-cookie-banner:not([hidden]) { display:grid; }
.auth-page-ufoundme:has(.registration-shell) > .gdpr-alert.ufm-cookie-banner[hidden] { display:none; }
@media (prefers-reduced-motion:reduce) {
  .ufm-cookie-switch i,.ufm-cookie-switch i::after { transition:none; }
}

.ufm-cookie-signal{border-left:1px solid #cfe3e8}

/* source: readability.css */
/**
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Style du bouton flottant et de la boîte de dialogue de lisibilité, avec les trois profils d’affichage.
 * @purpose-en Style of the floating readability button and dialog, with the three display profiles.
 * @audit-scope asset
 * @inputs-fr Aucune entrée ; attribut data-ufm-readability posé sur <html> par readability.js.
 * @inputs-en No input; data-ufm-readability attribute set on <html> by readability.js.
 * @effects-fr Règles de style uniquement.
 * @effects-en Style rules only.
 */

.ufm-readability-button{box-sizing:border-box;width:max-content;max-width:calc(100vw - 24px);min-width:112px;height:48px;padding:0 14px 0 8px;position:fixed;z-index:88;top:auto;left:18px;right:auto;bottom:calc(14px + env(safe-area-inset-bottom));border:1px solid #e6e1dc;border-radius:999px;display:flex;align-items:center;justify-content:center;gap:8px;color:#251a3d;background:#fff;box-shadow:0 10px 28px #251a3d24;font:700 .7rem Lexend,system-ui;line-height:1}
.ufm-readability-button:hover,.ufm-readability-button:focus-visible{color:#fff;background:#4b3575;outline:0;transform:translateY(-2px)}.ufm-readability-button b{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#4b3575;font-size:.7rem}.ufm-readability-button:hover b{color:#251a3d;background:#fff}.ufm-readability-button span{white-space:nowrap}
.ufm-readability{width:min(580px,calc(100% - 28px));padding:0;border:0;border-radius:24px;color:#251a3d;background:#fff;font-family:Lexend,system-ui;box-shadow:0 30px 90px #251a3d55}.ufm-readability::backdrop{background:#17132799;backdrop-filter:blur(5px)}.ufm-readability form{padding:28px;position:relative}.ufm-readability .close{width:38px;height:38px;position:absolute;right:18px;top:18px;border:0;border-radius:50%;background:#f2eff4;font-size:1.3rem}.ufm-readability form>span{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#4b3575;font-weight:700}.ufm-readability h2{margin:14px 48px 22px 0;font-size:1.7rem}.ufm-readability [role="radiogroup"]{display:grid;gap:9px}.ufm-readability [data-profile]{min-height:70px;padding:13px 16px;border:1px solid #e6e1dc;border-radius:15px;display:grid;gap:3px;color:#251a3d;background:#fff;text-align:left}.ufm-readability [data-profile] span{color:#716b7a;font-size:.78rem}.ufm-readability [data-profile].selected{border-color:#4b3575;background:#f5f2f8;box-shadow:inset 4px 0 #4b3575}.ufm-readability form>small{margin-top:16px;display:block;color:#716b7a}
/* Complete edge geometry also applies when this component is loaded outside
   a CSS layer. Never inherit a left edge while supplying a competing right. */
@media(max-width:1279px){.ufm-readability-button{left:12px;right:auto;bottom:calc(82px + env(safe-area-inset-bottom))}}
@media(max-width:679px){.ufm-readability-button{bottom:calc(72px + env(safe-area-inset-bottom))}}
html[data-ufm-readability="comfort"] body{font-size:17px;line-height:1.65}html[data-ufm-readability="clear"] body{font-size:19px;line-height:1.72}html[data-ufm-readability="comfort"] :is(p,li,label,summary),html[data-ufm-readability="clear"] :is(p,li,label,summary){letter-spacing:.005em}html[data-ufm-readability="clear"]{filter:contrast(1.08)}
@media(max-width:520px){.ufm-readability-button{width:48px;min-width:48px;padding:0}.ufm-readability-button span{display:none}.ufm-readability form{padding:22px 18px}}
@media(prefers-reduced-motion:reduce){.ufm-readability-button{transition:none}}
.auth-page-ufoundme:has(.registration-shell) .ufm-readability-button{display:none}

/* source: local-help.css */
/**
 * @file Calm, mobile-first onboarding using the seven official width bands.
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Style du bouton d’aide et de la boîte de dialogue d’accueil en dix points.
 * @purpose-en Styles for the help button and the ten-point onboarding dialog.
 * @audit-scope asset
 * @inputs-fr Aucune : feuille de style statique.
 * @inputs-en None: static stylesheet.
 * @effects-fr Met en forme .ufm-help-button et .ufm-help, avec une couleur d’accent par phase (data-phase).
 * @effects-en Styles .ufm-help-button and .ufm-help, with one accent colour per phase (data-phase).
 */
.ufm-help-button{width:48px;min-width:48px;height:48px;min-height:48px;padding:0;position:fixed;z-index:88;right:12px;bottom:calc(80px + env(safe-area-inset-bottom));border:1px solid #ffffff2e;border-radius:999px;display:flex;align-items:center;justify-content:center;gap:9px;color:#fff;background:#251a3d;box-shadow:0 14px 38px #20173538;font:700 .78rem Inter,system-ui;line-height:1;transition:bottom .2s ease,transform .15s ease,background .15s ease}
.ufm-help-button:hover,.ufm-help-button:focus-visible{background:#513580;transform:translateY(-2px);outline:3px solid #8d72be42}
.ufm-help-button b{width:32px;height:32px;flex:0 0 32px;border-radius:50%;display:grid;place-items:center;color:#fff;background:#7556ad;font-size:.9rem}
.ufm-help-button span{display:none;white-space:nowrap}

.ufm-help{--guide:#60439a;--guide-soft:#f1ebfa;width:min(100% - 20px,920px);max-height:calc(100dvh - 20px);padding:0;border:0;border-radius:26px;color:#201735;background:#fff;font-family:Inter,system-ui;box-shadow:0 36px 110px #2017355c;overflow:auto}
.ufm-help[data-phase="1"]{--guide:#c85d48;--guide-soft:#fff0eb}
.ufm-help[data-phase="2"]{--guide:#187b90;--guide-soft:#e9f7fa}
.ufm-help[data-phase="3"]{--guide:#248665;--guide-soft:#eaf8f1}
.ufm-help::backdrop{background:#171327a8;backdrop-filter:blur(7px)}
.ufm-help form{min-height:min(690px,calc(100dvh - 20px));padding:24px 20px;position:relative;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;background:linear-gradient(145deg,#fff 0 58%,var(--guide-soft) 150%)}
.ufm-help .close{width:44px;height:44px;position:absolute;z-index:2;right:14px;top:14px;border:0;border-radius:50%;display:grid;place-items:center;color:#251a3d;background:#f2eff4;font-size:1.3rem;cursor:pointer}
.ufm-help .close:hover,.ufm-help .close:focus-visible{color:#fff;background:var(--guide);outline:3px solid color-mix(in srgb,var(--guide) 24%,transparent)}

.ufm-help header{padding-right:48px;display:grid;gap:16px}
.ufm-help header>div:first-child{min-width:0}
.ufm-help header small{color:var(--guide);font-size:.69rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.ufm-help h2{margin:8px 0 5px;font-size:clamp(1.7rem,7vw,2.35rem);line-height:1.05;letter-spacing:-.04em}
.ufm-help header p,.ufm-help article p{color:#675f70}
.ufm-help header p{margin:0;font-size:.94rem;line-height:1.55}
.ufm-help-chips{display:flex;flex-wrap:wrap;gap:8px;align-content:start}
.ufm-help-chips span{min-height:38px;padding:7px 11px;border:1px solid color-mix(in srgb,var(--guide) 18%,#e5dfea);border-radius:13px;display:grid;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:8px;color:#51485c;background:#fff;box-shadow:0 8px 24px #251a3d0a;font-size:.68rem;line-height:1.25}
.ufm-help-chips img{width:20px;height:20px;display:block;object-fit:contain;opacity:.82}
.ufm-help-chips strong{font-size:inherit;font-weight:750}

.ufm-help-progress{margin:20px 0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;color:var(--guide);font-size:.7rem;font-weight:800}
.ufm-help-progress>span{height:8px;border-radius:99px;display:block;background:#eae5ed;overflow:hidden}
.ufm-help-progress>span:after{width:var(--p);height:100%;border-radius:inherit;display:block;content:"";background:linear-gradient(90deg,var(--guide),color-mix(in srgb,var(--guide) 62%,#f7b25b));transition:width .25s ease}
.ufm-help-progress output{min-width:48px;font:800 .7rem Inter,system-ui;text-align:right}

.ufm-help-layout{min-height:0;display:grid;gap:14px}
.ufm-help-phases{margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;list-style:none}
.ufm-help-phases li{min-width:0;min-height:68px;padding:8px 4px;border:1px solid transparent;border-radius:14px;display:grid;place-items:center;gap:5px;color:#746d7b;background:#f5f2f6;text-align:center;transition:background .2s ease,color .2s ease,transform .2s ease}
.ufm-help-phases li b{width:27px;height:27px;border-radius:50%;display:grid;place-items:center;color:#655d6d;background:#fff;font-size:.68rem;box-shadow:0 4px 12px #251a3d0a}
.ufm-help-phases li span{max-width:100%;display:grid;gap:2px;font-size:.61rem;font-weight:750;line-height:1.2;overflow-wrap:anywhere}
.ufm-help-phases li em{color:inherit;font-size:.53rem;font-style:normal;font-weight:650;opacity:.68}
.ufm-help-phases li[data-state="done"]{color:#39735f;background:#edf7f2}
.ufm-help-phases li[data-state="done"] b{color:#fff;background:#4c9a7e}
.ufm-help-phases li[aria-current]{border-color:color-mix(in srgb,var(--guide) 24%,#fff);color:#fff;background:var(--guide);box-shadow:0 10px 24px color-mix(in srgb,var(--guide) 22%,transparent);transform:translateY(-1px)}
.ufm-help-phases li[aria-current] b{color:var(--guide)}

.ufm-help article{min-height:270px;padding:22px;border:1px solid color-mix(in srgb,var(--guide) 14%,#e8e2ed);border-radius:22px;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(145deg,#fff,var(--guide-soft));box-shadow:inset 0 1px #fff,0 18px 50px #251a3d0b}
.ufm-help-card-head{margin-bottom:18px;display:flex;align-items:center;justify-content:space-between;gap:14px}
.ufm-help-icon{width:58px;height:58px;flex:0 0 58px;border-radius:18px;display:grid;place-items:center;color:#fff;background:var(--guide);box-shadow:0 12px 26px color-mix(in srgb,var(--guide) 24%,transparent)}
.ufm-help-icon img{width:27px;height:27px;display:block;filter:brightness(0) invert(1)}
.ufm-help-step-number{color:color-mix(in srgb,var(--guide) 14%,#fff);font-size:clamp(3.4rem,9vw,5.8rem);font-weight:850;line-height:.8;letter-spacing:-.08em;user-select:none}
.ufm-help article>small{color:var(--guide);font-size:.7rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
.ufm-help article h3{max-width:24ch;margin:10px 0 8px;font-size:clamp(1.25rem,4vw,1.6rem);line-height:1.18;letter-spacing:-.02em}
.ufm-help article p{max-width:62ch;margin:0;font-size:.95rem;line-height:1.66}

.ufm-help footer{margin-top:16px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px}
.ufm-help footer button{min-width:108px;min-height:48px;padding:0 18px;border:1px solid #ddd5e2;border-radius:14px;color:#251a3d;background:#fff;font:750 .79rem Inter,system-ui;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}
.ufm-help footer button:hover:not(:disabled),.ufm-help footer button:focus-visible{transform:translateY(-1px);box-shadow:0 9px 22px #251a3d17}
.ufm-help footer button:disabled{opacity:.36;cursor:not-allowed}
.ufm-help footer .primary{min-width:120px;border-color:transparent;color:#fff;background:var(--guide)}
.ufm-help-footer-status{color:#746d7b;font-size:.68rem;font-weight:750;text-align:center}

body:has(.layout-floating-menu:not([hidden])) .ufm-help-button{bottom:calc(136px + env(safe-area-inset-bottom))}
body:has(.layouts:not([hidden])) .ufm-help-button{bottom:calc(138px + env(safe-area-inset-bottom))}

@media(min-width:360px){.ufm-help{width:min(100% - 28px,920px)}.ufm-help form{padding:25px 22px}.ufm-help-phases li span{font-size:.64rem}.ufm-help article{min-height:260px}}
@media(min-width:480px){.ufm-help-button{width:auto;min-width:112px;padding:0 15px 0 8px}.ufm-help-button span{display:block}.ufm-help form{padding:28px}.ufm-help header{grid-template-columns:minmax(0,1fr) minmax(210px,.7fr);align-items:end}.ufm-help-chips{justify-content:flex-end}.ufm-help-chips span{max-width:250px}.ufm-help article{padding:26px}.ufm-help-phases li{padding:10px 6px}.ufm-help-phases li span{font-size:.68rem}}
@media(min-width:680px){.ufm-help{width:min(920px,calc(100% - 40px));border-radius:30px}.ufm-help form{min-height:650px}.ufm-help-layout{grid-template-columns:220px minmax(0,1fr);gap:18px}.ufm-help-phases{grid-template-columns:1fr;align-content:start;gap:8px}.ufm-help-phases li{min-height:58px;padding:8px 12px;grid-template-columns:30px minmax(0,1fr);justify-items:start;text-align:left}.ufm-help-phases li span{width:100%;grid-template-columns:minmax(0,1fr) auto;align-items:center;font-size:.74rem;overflow-wrap:normal}.ufm-help-phases li em{font-size:.59rem}.ufm-help article{min-height:330px;padding:30px}.ufm-help article p{font-size:1rem}}
@media(min-width:768px){.ufm-help-button{right:18px}.ufm-help form{padding:34px}.ufm-help h2{font-size:2.4rem}.ufm-help-layout{grid-template-columns:232px minmax(0,1fr)}.ufm-help footer{margin-left:250px}}
@media(min-width:1024px){.ufm-help-button{bottom:18px}body:has(.layout-floating-menu:not([hidden])) .ufm-help-button{bottom:112px}body:has(.layouts:not([hidden])) .ufm-help-button{bottom:112px}.ufm-help{width:min(960px,calc(100% - 56px))}.ufm-help form{min-height:660px}}
@media(min-width:1280px){.ufm-help{width:960px}.ufm-help article p{font-size:1.02rem}.ufm-help footer button{font-size:.84rem}}
@media(max-width:679px){.ufm-help-footer-status{display:none}}
@media(max-width:479px){.ufm-help form{min-height:calc(100dvh - 20px)}.ufm-help header{padding-right:40px}.ufm-help-chips span{flex:1 1 140px}.ufm-help article{justify-content:flex-start}.ufm-help-step-number{font-size:3.6rem}.ufm-help footer{position:sticky;bottom:-25px;padding:12px 0 max(0px,env(safe-area-inset-bottom));background:linear-gradient(0deg,#fff 72%,transparent)}.ufm-help footer button{min-width:0}}
@media(max-width:1199px) and (min-width:521px){body:has(.layout-floating-menu:not([hidden])) .ufm-help-button{bottom:calc(176px + env(safe-area-inset-bottom))}}
@media(pointer:coarse){.ufm-help :is(button,[role="button"]){min-width:44px;min-height:44px;touch-action:manipulation}}
@media(prefers-reduced-motion:reduce){.ufm-help-progress>span:after,.ufm-help-button,.ufm-help-phases li,.ufm-help footer button{transition:none}}
@media(forced-colors:active){.ufm-help-phases li[aria-current],.ufm-help-icon,.ufm-help footer .primary{border:2px solid ButtonText}.ufm-help-icon img{filter:none}}
.auth-page-ufoundme:has(.registration-shell) .ufm-help-button{display:none}

/* source: bandeau-reassurance.css */
/**
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Bandeau compact de réassurance commun aux étapes d’achat.
 * @purpose-en Compact reassurance strip shared by all purchase steps.
 * @audit-scope asset
 * @inputs-fr Classes .ufm-purchase-assurance, .ufm-assurance-item et .is-eshop.
 * @inputs-en The .ufm-purchase-assurance, .ufm-assurance-item and .is-eshop classes.
 * @effects-fr Règles de présentation uniquement.
 * @effects-en Presentation rules only.
 *
 *  @file Compact proof strip shared by all purchase steps.
 */
.ufm-purchase-assurance>.ufm-assurance-item{min-width:0;min-height:52px;padding:9px 11px;border:1px solid #ded7e5;border-radius:14px;display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:8px;background:#fffdfb}
.ufm-purchase-assurance{width:100%;margin:14px 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:8px;color:#251a3d;font-family:Inter,system-ui,sans-serif}.ufm-purchase-assurance article{min-width:0;min-height:52px;padding:9px 11px;border:1px solid #ded7e5;border-radius:14px;display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:8px;background:#fffdfb}.ufm-purchase-assurance img{width:20px;height:20px;opacity:.75}.ufm-purchase-assurance span{min-width:0;display:grid;gap:1px}.ufm-purchase-assurance strong{font-size:14px;font-weight:650;line-height:1.2}.ufm-purchase-assurance small{color:#6b6472;font-size:12px;line-height:1.25}.ufm-purchase-assurance a{min-width:44px;min-height:44px;display:grid;place-items:center;color:#4b3575;text-decoration:none}.ufm-purchase-assurance time{padding:5px 7px;border-radius:999px;background:#04313c;color:#fff;font-size:12px;font-weight:750}.ufm-purchase-assurance .ufm-preorder-assurance{border-color:#f0b9a9;background:#fff2ed}.ufm-purchase-assurance .ufm-preorder-assurance img{opacity:1}.ufm-purchase-assurance.is-eshop{grid-column:1/-1}

}
@layer responsive {
}
@layer overrides {
/* source: experience.css */
/**
 * @file Presentation layer for experience.
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Couche d’expérience commune aux pages compte : fond, en-tête, onglets, parcours d’adoption, studio et écrans d’authentification.
 * @purpose-en Shared experience layer for account pages: background, header, tabs, adoption path, studio and authentication screens.
 * @audit-scope asset
 * @inputs-fr Aucune entrée dynamique ; feuille statique qui s’appuie sur les attributs data-theme et les propriétés personnalisées définis ailleurs.
 * @inputs-en No dynamic input; static stylesheet relying on data-theme attributes and custom properties defined elsewhere.
 * @effects-fr Mise en forme uniquement ; aucune écriture, aucun script.
 * @effects-en Styling only; no writes, no script.
 *
 *
 * Mobile-first responsive styling only; preserve touch targets, fluid containment and the seven-breakpoint contract.
 */

@font-face{font-family:Inter;src:url('/ufoundme/assets/fonts/InterVariable.woff2') format('woff2');font-display:swap}:root{--ufm-ink:#171327;--ufm-purple:#4b2e83;--ufm-coral:#ff704d;--ufm-apricot:#ffb347;--ufm-line:#e8dfda;--ufm-shadow:0 24px 70px #271b3b14;--ufm-radius:26px}
body:not(:has(>.topbar)){color:var(--ufm-ink);background:radial-gradient(circle at 8% 12%,#ff704d14,transparent 28%),radial-gradient(circle at 91% 76%,#d9c8ff36,transparent 31%),linear-gradient(135deg,#fffaf5,#f8f4ff);font-family:Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased}body:not(:has(>.topbar)) button,body:not(:has(>.topbar)) input,body:not(:has(>.topbar)) textarea,body:not(:has(>.topbar)) select{font:inherit}body:not(:has(>.topbar)) :focus-visible{outline:3px solid #ff704d55;outline-offset:3px}
body:not(:has(>.topbar)) .primary,body:not(:has(>.topbar)) .auth-primary{border:0;color:#fff;background:linear-gradient(120deg,var(--ufm-ink),#32234c);box-shadow:0 12px 28px #17132720;transition:transform .18s ease,box-shadow .18s ease}body:not(:has(>.topbar)) .primary:hover,body:not(:has(>.topbar)) .auth-primary:hover{transform:translateY(-2px);box-shadow:0 17px 34px #1713272b}body:not(:has(>.topbar)) .secondary,body:not(:has(>.topbar)) .auth-secondary{border-color:var(--ufm-line);background:#fff;transition:border-color .18s ease,transform .18s ease}body:not(:has(>.topbar)) .secondary:hover,body:not(:has(>.topbar)) .auth-secondary:hover{border-color:#ff704d88;transform:translateY(-1px)}
.dash-head{border-bottom-color:#1713270d;background:#fffdfbd9;backdrop-filter:blur(18px)}.dashboard.owner-office,.dashboard.studio-page{width:min(1240px,100%);min-height:calc(100svh - 76px);padding-top:clamp(38px,7vh,78px);padding-bottom:90px}.welcome{min-height:150px;padding:28px 31px;display:flex;justify-content:center;flex-direction:column;border:1px solid #ffffffb8;border-radius:var(--ufm-radius);overflow:hidden;background:radial-gradient(circle at 90% 20%,#ffb34745,transparent 24%),radial-gradient(circle at 75% 130%,#ff704d36,transparent 35%),linear-gradient(120deg,#fff,#fbf5ff);box-shadow:var(--ufm-shadow)}.welcome::before{width:8px;height:8px;margin-bottom:9px;border-radius:50%;background:var(--ufm-coral);content:''}.welcome p{color:var(--ufm-purple);font-size:.72rem}.welcome h1{max-width:800px;margin:4px 0 0;font-size:clamp(2.1rem,4.4vw,4rem);line-height:1;letter-spacing:-.055em}.service-pill{padding:9px 13px;border-radius:999px;font-size:.65rem;font-weight:850}.service-pill.is-active{color:#087250;background:#dcf5e9}.service-pill.is-locked{color:#92520c;background:#fff0d8}
.owner-office>.tabs{width:100%;margin:16px 0 22px;padding:7px;gap:4px;border:1px solid #e8e0ea;background:#f2edf6d9;box-shadow:0 9px 26px #1713270c}.owner-office>.tabs button{min-height:46px;justify-content:center;flex:1;padding:10px 14px}.owner-office>.tabs button.active{color:#fff;background:var(--ufm-purple);box-shadow:0 8px 20px #4b2e8330}.owner-office>.tabs button.active img{filter:brightness(0) invert(1)}.owner-office>section[data-panel]{min-height:360px;padding:clamp(20px,3vw,34px);border:1px solid #ffffffc9;border-radius:var(--ufm-radius);background:#ffffffd9;box-shadow:var(--ufm-shadow);backdrop-filter:blur(14px)}.section-title{align-items:center}.section-title h2{font-size:clamp(1.55rem,3vw,2.25rem);letter-spacing:-.04em}.section-title p{max-width:65ch;line-height:1.65}.owner-pet-card,.account-card,.security-card,.thread,.badge-claim{border-color:#eadfe6;box-shadow:0 11px 30px #1713270a}.owner-pet-card:hover,.thread:hover{border-color:#ff704d70;transform:translateY(-2px);box-shadow:0 17px 36px #17132712}.owner-pet-card,.thread{transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.status{width:max-content;padding:5px 8px;border-radius:999px;background:#fff0e8}.status.on{background:#dcf5e9}.empty{border:1px dashed #d7cadb;background:linear-gradient(135deg,#fff,#faf5ff)}
.adoption-path{margin:14px 0 0;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:18px;border:1px solid #eadfe4;border-radius:20px;background:#fffdfbd9;box-shadow:0 12px 32px #1713270b}.adoption-path>div>small{display:block;margin-bottom:8px;color:#746c79;font-size:.62rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.adoption-path ol{margin:0;padding:0;display:flex;align-items:center;gap:9px;list-style:none}.adoption-path li{display:flex;align-items:center;gap:7px;color:#918a95;font-size:.7rem;font-weight:750}.adoption-path li+li::before{width:25px;height:1px;margin-right:2px;background:#ddd4df;content:''}.adoption-path li b{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:#eee8ef}.adoption-path li.done{color:#087250}.adoption-path li.done b{color:#087250;background:#dcf5e9}.adoption-path li.done b::after{content:'✓';font-size:.7rem}.adoption-path li.done b{font-size:0}.adoption-path li.current{color:var(--ufm-purple)}.adoption-path li.current b{color:#fff;background:var(--ufm-coral);box-shadow:0 0 0 5px #ff704d14}.adoption-path>.primary{min-width:210px;min-height:52px;display:flex;align-items:flex-start;justify-content:center;flex-direction:column;text-decoration:none}.adoption-path>.primary small{font-size:.55rem;letter-spacing:.08em;text-transform:uppercase;opacity:.68}
.studio-shell{margin-top:18px;border:1px solid #e4d8df;border-radius:30px;box-shadow:0 30px 85px #271b3b1b;background:#fff}.studio-steps{padding:8px;background:#f5eff6}.studio-steps button{min-height:58px;border:0;border-radius:16px;background:transparent}.studio-steps button b{transition:background .18s,color .18s}.studio-steps button.active{color:var(--ufm-purple);background:#fff;box-shadow:0 8px 22px #271b3b10}.studio-steps button.active b{color:#fff;background:var(--ufm-coral)}.studio-editor{background:#fffdfb}.studio-editor h2{max-width:16ch;font-size:clamp(1.8rem,3vw,2.65rem);line-height:1.04;letter-spacing:-.05em}.studio-editor .eyebrow{color:var(--ufm-coral)}.studio-editor input,.studio-editor textarea,.studio-editor select{border-color:#ddd2d9;background:#fff}.studio-editor input:focus,.studio-editor textarea:focus,.studio-editor select:focus{border-color:var(--ufm-coral);box-shadow:0 0 0 4px #ff704d12}.studio-preview{background:radial-gradient(circle at 50% 45%,#fff 0,#f5edf7 45%,#eee7e2 100%)}.studio-phone{filter:drop-shadow(0 28px 32px #251a3d26)}.studio-actions{border-top-color:#ece3e7;background:#fffdfb}
.auth-shell{min-height:100svh;background:radial-gradient(circle at 12% 15%,#ff704d24,transparent 26%),radial-gradient(circle at 86% 80%,#d8c4ff45,transparent 31%),linear-gradient(135deg,#fffaf4,#f8f4ff)}.auth-story{align-self:center}.auth-story h1{max-width:13ch;line-height:.96;letter-spacing:-.055em}.auth-card{position:relative;overflow:hidden;border:1px solid #eadde4;border-radius:30px;background:#fffdfbf2;box-shadow:0 30px 85px #271b3b1c}.auth-card::before{height:6px;position:absolute;inset:0 0 auto;background:linear-gradient(90deg,var(--ufm-coral),var(--ufm-apricot),var(--ufm-purple));content:''}.auth-card input{border-color:#dfd4da;background:#fff}.auth-card input:focus{border-color:var(--ufm-coral);box-shadow:0 0 0 4px #ff704d12}.auth-login-tabs{padding:5px;border-radius:16px;background:#f3edf5}.auth-login-tab{border-radius:12px}.auth-login-tab.is-active{background:#fff;box-shadow:0 7px 18px #17132710}.auth-provider{border-radius:15px}
.summary,body>main>article{border-color:#eadfe4;background:#fffdfbea;box-shadow:var(--ufm-shadow)}.summary .lines article{transition:transform .18s,border-color .18s}.summary .lines article:hover{border-color:#ff704d70;transform:translateX(3px)}.chat-page{background:radial-gradient(circle at 12% 20%,#ff704d1f,transparent 26%),radial-gradient(circle at 85% 78%,#d8c4ff40,transparent 30%),#fffaf5}.chat-phone{box-shadow:0 30px 90px #251a3d22}
@media(max-width:1000px){.owner-office>.tabs button{flex:0 0 auto}.dashboard.owner-office,.dashboard.studio-page{padding-top:72px}.welcome{min-height:135px}.owner-office>section[data-panel]{padding:20px}.adoption-path{align-items:stretch;flex-direction:column}.adoption-path>.primary{width:100%}}@media(max-width:700px){.dashboard.owner-office,.dashboard.studio-page{padding:68px 12px 90px}.welcome{padding:22px;border-radius:22px}.welcome h1{font-size:2.15rem}.owner-office>.tabs{border-radius:15px}.owner-office>section[data-panel]{min-height:0;border-radius:22px}.section-title{align-items:flex-start}.studio-shell{border-radius:22px}.studio-steps{position:sticky;z-index:8;top:58px}.auth-card{border-radius:24px}.adoption-path ol{align-items:flex-start;flex-direction:column}.adoption-path li+li::before{width:1px;height:13px;margin:0 0 0 12px}.adoption-path li+li{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){.primary,.secondary,.owner-pet-card,.thread,.summary .lines article{transition:none}}
.welcome h1{font-size:clamp(1.7rem,2.65vw,2.55rem);font-weight:610;line-height:1.08;letter-spacing:-.035em}.studio-editor h2{max-width:22ch;font-size:clamp(1.15rem,1.6vw,1.45rem);font-weight:610;line-height:1.2;letter-spacing:-.025em}@media(max-width:700px){.welcome h1{font-size:1.7rem}}

/* source: professional-polish.css */
/**
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Finition commune des surfaces publiques et d’authentification : couleurs de texte, bordures, rayons, ombres et focus.
 * @purpose-en Shared finish for public and authentication surfaces: text colours, borders, radii, shadows and focus.
 * @audit-scope asset
 * @inputs-fr Aucune entrée ; fichier statique chargé dans la couche overrides du bundle marketing.
 * @inputs-en No input; static file loaded in the overrides layer of the marketing bundle.
 * @effects-fr Variables --ufm-pro-* et règles de finition ; aucune sortie dynamique.
 * @effects-en --ufm-pro-* variables and finishing rules; no dynamic output.
 */
/** UFoundMe! shared professional finish for public and authentication surfaces. */
:root{
  --ufm-pro-text:#1d1828;--ufm-pro-muted:#686270;
  --ufm-pro-line:rgba(37,26,61,.14);--ufm-pro-line-strong:rgba(37,26,61,.24);
  --ufm-pro-surface:#fff;--ufm-pro-surface-soft:#f7f4f9;
  --ufm-pro-radius-sm:.75rem;--ufm-pro-radius-md:1rem;--ufm-pro-radius-lg:1.5rem;
  --ufm-pro-shadow:0 1rem 2.75rem rgba(37,26,61,.09);
  --ufm-pro-focus:0 0 0 .22rem rgba(75,53,117,.22);
}
html{color:var(--ufm-pro-text);background:#fbfafc;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
body{color:var(--ufm-pro-text);line-height:1.55}
:where(h1,h2,h3){text-wrap:balance}
:where(p,li,dd,.lead){text-wrap:pretty}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:.125rem solid var(--ufm-brand-primary,#4b3575);outline-offset:.18rem;box-shadow:var(--ufm-pro-focus)}
:where(button,.button,.primary,.secondary,.outline,.nav-cta,.auth-primary,.auth-secondary,.auth-provider){min-height:2.875rem;border-radius:.8rem;font-weight:620;letter-spacing:-.006em;transition:border-color .16s ease,background-color .16s ease,color .16s ease,transform .16s ease}
:where(a.primary,a.secondary,a.button,a.nav-cta){display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
:where(.primary,.nav-cta,.auth-primary){border:1px solid var(--ufm-brand-secondary,#251a3d);color:#fff;background:var(--ufm-brand-secondary,#251a3d)}
:where(.primary,.nav-cta,.auth-primary):hover{border-color:var(--ufm-brand-primary,#4b3575);background:var(--ufm-brand-primary,#4b3575)}
:where(.secondary,.outline,.auth-secondary,.auth-provider){border:1px solid var(--ufm-pro-line-strong);color:var(--ufm-pro-text);background:rgba(255,255,255,.94)}
:where(.secondary,.outline,.auth-secondary,.auth-provider):hover{border-color:var(--ufm-brand-primary,#4b3575);background:var(--ufm-pro-surface-soft)}
:where(input,select,textarea){min-height:2.875rem;border:1px solid var(--ufm-pro-line-strong);border-radius:var(--ufm-pro-radius-sm);color:var(--ufm-pro-text);background:#fff}
:where(input,select,textarea)::placeholder{color:#8a8490;opacity:1}
:where(.topbar,.auth-nav,.legal-header,.shop-header){border-bottom:1px solid var(--ufm-pro-line);background:rgba(255,255,255,.92);box-shadow:0 .35rem 1.5rem rgba(37,26,61,.035);backdrop-filter:saturate(135%) blur(1rem)}
:where(.hero-copy,.principle-copy,.chat-principle-copy,.section-heading,.auth-story,.registration-story)>:where(p,.lead):not(.kicker,.eyebrow){max-width:42rem;color:var(--ufm-pro-muted);line-height:1.7}
:where(.product-card,.auth-card,.registration-card,.contact-form-wrap,.legal-page article,.wall-gallery,.wall-upload,.hero-price,.first-year-offer){border:1px solid var(--ufm-pro-line);background:rgba(255,255,255,.96);box-shadow:var(--ufm-pro-shadow)}
:where(.product-card,.auth-card,.registration-card,.contact-form-wrap,.wall-gallery,.wall-upload){border-radius:var(--ufm-pro-radius-lg)}
:where(.product-card,.auth-card,.registration-card,.wall-gallery,.wall-upload) :where(h2,h3){color:var(--ufm-pro-text)}
:where(.product-card,.auth-card,.registration-card,.wall-gallery,.wall-upload) :where(p,small){color:var(--ufm-pro-muted)}
.product-card{overflow:hidden;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.product-card:hover{border-color:var(--ufm-pro-line-strong);box-shadow:0 1.25rem 3.25rem rgba(37,26,61,.12);transform:translateY(-.125rem)}
:where(.proof,.story-points,.register-points,.credibility-grid,.chat-benefits){gap:clamp(.65rem,1.25vw,1rem)}
:where(.story-points>span,.register-points>span,.credibility-grid>article,.chat-benefits>article,.chat-benefits>.chat-benefit){border:1px solid var(--ufm-pro-line);border-radius:var(--ufm-pro-radius-md);background:rgba(255,255,255,.88)}
.legal-page article{max-width:54rem}
.legal-page article section+section{margin-top:1.75rem;padding-top:1.75rem;border-top:1px solid var(--ufm-pro-line)}
.legal-page article section p{max-width:72ch;color:#514b58}
.ufm-footer{border-top:1px solid rgba(255,255,255,.09)}
.ufm-footer :where(a,button){transition:color .16s ease,border-color .16s ease,background-color .16s ease}
.gdpr-alert{border:1px solid var(--ufm-pro-line);box-shadow:0 .8rem 2.5rem rgba(37,26,61,.14)}

/* Social actions form two readable chunks: official profiles, then sharing.
   Override the generic button radius so every icon keeps one circular shape. */
.ufm-footer-social-actions { gap:8px;align-items:center; }
.ufm-footer-social-actions>a,
.ufm-footer-social-actions>button {
  width:44px;
  height:44px;
  min-height:44px;
  border-radius:50%;
}
.ufm-footer-social-actions>a {
  border-color:rgba(255,139,115,.42);
  background:rgba(91,58,142,.38);
}
.ufm-footer-social-actions>a:nth-of-type(2) { margin-inline-end:8px; }
.ufm-footer-social-actions :is(img,svg) {
  width:18px;
  height:18px;
  object-fit:contain;
}
@media(max-width:63.99rem){:where(.hero,.auth-shell,.registration-shell){gap:clamp(1.75rem,5vw,3.5rem)}:where(.product-grid,.products){gap:1rem}}
@media(max-width:47.99rem){:root{--ufm-pro-radius-lg:1.2rem;--ufm-pro-shadow:0 .7rem 2rem rgba(37,26,61,.075)}:where(.hero,.principle,.chat-principle,.help-view,main){scroll-margin-top:4.5rem}:where(.actions,.purchase-actions,.auth-submit-with-help){align-items:stretch}:where(.actions,.purchase-actions)>:where(a,button){min-height:3rem}.product-card:hover{transform:none}}

/* Landscape tablet / compact desktop (from 1200 px): the help view otherwise
   combines a mobile dock with a desktop-sized two-column canvas. Give long
   translated questions enough measure and let the answer card size to content.
   Keep the same contract above this range to avoid breakpoint cliffs. */
@media (min-width:1200px) {
  .help-view {
    height:auto;
    min-height:calc(100svh - 64px - 68px);
    padding:28px clamp(28px,3.2vw,42px) 108px;
    align-content:start;
    overflow:visible;
  }
  .help-head {
    grid-template-columns:minmax(0,1fr) minmax(330px,390px);
    gap:24px;
  }
  .help-shell {
    grid-template-columns:minmax(430px,.92fr) minmax(0,1.08fr);
    align-items:start;
    gap:18px;
  }
  .help-questions {
    max-height:calc(100svh - 250px);
    padding:20px 18px;
  }
  .help-list button {
    min-height:52px;
    padding:10px 14px;
    font-size:clamp(.88rem,1.15vw,.96rem);
    line-height:1.28;
  }
  .help-answer {
    min-height:390px;
    max-height:calc(100svh - 250px);
    align-self:start;
    overflow:auto;
  }
  .help-answer>h2 { font-size:clamp(1.65rem,2.55vw,2rem); }
  .help-answer>div { margin-top:28px; }
}

@media (min-width:1280px) {
  .help-view {
    min-height:calc(100svh - 74px);
    padding-bottom:42px;
  }
}

@media (min-width:1200px) and (max-width:1279px) {
  .help-questions,
  .help-answer { max-height:calc(100svh - 300px); }
}
@media(prefers-reduced-motion:reduce){:where(*,::before,::after){scroll-behavior:auto;transition-duration:.01ms;animation-duration:.01ms;animation-iteration-count:1}}
@media(forced-colors:active){:where(.primary,.secondary,.outline,.auth-primary,.auth-secondary,.auth-provider,.product-card){border:1px solid CanvasText}}

/* Keep the participation links legible in the final public CSS override layer. */
.ufm-wall-page :is(.wall-guide-jump,.wall-studio-cta):focus-visible,
.wall-reward-card .wall-studio-gallery-link:focus-visible{outline:3px solid #4d3382;outline-offset:4px}

/* The help query is one search control. The final layer prevents the generic
   form-field treatment from drawing a misleading second input border. */
.help-view .help-search{min-height:56px;height:auto;padding:6px 9px 6px 10px;display:flex;align-items:center;gap:10px;border:1px solid #d8cfdf;border-radius:18px;background:#fff;box-shadow:0 14px 36px #17132712;transition:border-color .18s,box-shadow .18s}
.help-view .help-search-icon{width:40px;height:40px;flex:0 0 40px;display:grid;place-items:center;border-radius:12px;background:var(--ink)}
.help-view .help-search-icon img{width:18px;height:18px;display:block;filter:brightness(0) invert(1)}
.help-view .help-search input{min-width:0;width:100%;height:44px;min-height:44px;padding:0 10px;border:0;border-radius:10px;outline:0;color:var(--ink);background:transparent;box-shadow:none;font:inherit}
.help-view .help-search input::placeholder{color:#77707f;opacity:1}
.help-view .help-search:focus-within{border-color:var(--theme-a);box-shadow:0 0 0 4px color-mix(in srgb,var(--theme-a) 18%,transparent),0 16px 38px #17132716}
.help-view .help-search:focus-within .help-search-icon{background:var(--theme-a)}
@media(max-width:1023px){.help-view .help-search{min-height:52px}.help-view .help-search-icon{width:38px;height:38px;flex-basis:38px}}

/* source: footer-project.css */
/**
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Grille du pied de page avec la colonne « Le projet » : marque + 4 colonnes, puis 4, 2 et 1 colonne selon la largeur.
 * @purpose-en Footer grid with "The project" column: brand + 4 columns, then 4, 2 and 1 column depending on width.
 * @audit-scope asset
 * @inputs-fr Classes du pied de page rendu par footer.php (.has-project-nav).
 * @inputs-en Classes of the footer rendered by footer.php (.has-project-nav).
 * @effects-fr Mise en forme uniquement ; aucune écriture, aucun script.
 * @effects-en Styling only; no writes, no script.
 * Loaded after the other footer styles; the extra class outranks the 3-column rules of footer.css and official-theme.css.
 */
.ufm-footer .ufm-footer-grid.has-project-nav{grid-template-columns:minmax(240px,1.3fr) repeat(4,minmax(0,.72fr));column-gap:clamp(20px,3vw,48px)}
.ufm-footer .ufm-footer-grid.has-project-nav>nav:last-child{grid-column:auto}
@media(max-width:1179px){
  .ufm-footer .ufm-footer-grid.has-project-nav{grid-template-columns:repeat(4,minmax(0,1fr))}
  .ufm-footer .ufm-footer-grid.has-project-nav>.ufm-footer-brand{grid-column:1/-1}
}
@media(max-width:1023px){
  .ufm-footer .ufm-footer-grid.has-project-nav{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:679px){
  .ufm-footer .ufm-footer-grid.has-project-nav{grid-template-columns:1fr}
}
/* Contact and phone links in the brand block: 44 px touch targets like every other footer action. */
.ufm-footer .ufm-footer-contact a{min-height:44px;display:inline-flex;align-items:center}

/* source: eshop-purchase.css */
/**
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Ajustements de la boutique pour l’achat : lien panier, lignes du panier, boutons de quantité et cibles tactiles de 44 px.
 * @purpose-en Shop purchase adjustments: cart link, cart lines, quantity steppers and 44 px touch targets.
 * @audit-scope asset
 * @inputs-fr Aucune entrée dynamique ; feuille statique qui s’appuie sur les attributs data-theme et les propriétés personnalisées définis ailleurs.
 * @inputs-en No dynamic input; static stylesheet relying on data-theme attributes and custom properties defined elsewhere.
 * @effects-fr Mise en forme uniquement ; aucune écriture, aucun script.
 * @effects-en Styling only; no writes, no script.
 *
 * Start with the product and a real purchase action; comparisons stay below.
 */
.eshop-page .cart-trigger{text-decoration:none}
.eshop-page .product-copy footer form{margin:0;max-width:100%}
.eshop-page .cart-lines article{flex-wrap:wrap;gap:12px}
.eshop-page .cart-lines article>div:first-child{min-width:0;flex:1 1 140px;overflow-wrap:anywhere}
.eshop-page .cart-lines .stepper{flex:0 0 auto}
.eshop-page .cart-panel>header button{min-width:44px;min-height:44px}
.eshop-page .stepper button:disabled{opacity:.45;cursor:not-allowed}
.eshop-page .product-card:hover{transform:none}
@media(min-width:1024px) and (max-width:1279px){.eshop-page .shop-header>.mobile-cart-trigger{display:inline-flex;right:359px}}
@media(min-width:1024px) and (max-width:1199px){.eshop-page .shop-header>.mobile-cart-trigger{right:80px}}
.eshop-page main{padding-top:clamp(24px,3vw,48px)}
.eshop-page .hero{gap:24px clamp(24px,4vw,64px)}
.eshop-page .hero h1{max-width:23ch;font-size:clamp(2rem,3.5vw,3.65rem);line-height:1.1}
.eshop-page .shop-quick-buy{margin:22px 0 0;display:flex;align-items:center;flex-wrap:wrap;gap:12px 18px}
.eshop-page .shop-quick-price{flex-basis:100%;margin:0;color:#352052;font-size:1.1rem;line-height:1.5;font-weight:750}
.eshop-page .shop-quick-buy button{min-height:48px;padding:12px 22px;border:0;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:20px;background:#28183b;color:#fff;font:700 1rem/1.4 Inter,sans-serif;cursor:pointer}
.eshop-page .shop-quick-buy button:hover{background:#513580}
.eshop-page .shop-quick-buy a{min-height:44px;display:inline-flex;align-items:center;color:#513580;font-size:.95rem;line-height:1.4;text-underline-offset:4px}
.eshop-page .hero>.ufm-purchase-assurance,.eshop-page .hero>.sales-channel-note{grid-column:1/-1}
@media(max-width:1023px){.eshop-page .hero>.sales-channel-note{order:4}}
@media(max-width:767px){
 .eshop-page .hero h1{max-width:none;font-size:clamp(1.75rem,6.5vw,2.4rem);line-height:1.16}
 .eshop-page .shop-quick-buy{margin-top:18px}
 .eshop-page .shop-quick-buy button{width:100%;padding-inline:16px;justify-content:space-between}
 .eshop-page .shop-quick-buy a{max-width:100%;overflow-wrap:anywhere}
 .eshop-page .hero-copy>p:last-child{font-size:1rem;line-height:1.6}
}

/* source: pricing-grid.css */
/**
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Style de la grille tarifaire rendue par ufm_render_pricing_grid().
 * @purpose-en Styling of the pricing grid rendered by ufm_render_pricing_grid().
 * @audit-scope asset
 * @inputs-fr Aucune entrée ; fichier statique.
 * @inputs-en No input; static file.
 * @effects-fr Règles de grille, de cartes d’offre et d’impression sous .ufm-pricing-grid ; aucune sortie dynamique.
 * @effects-en Grid, offer card and print rules under .ufm-pricing-grid; no dynamic output.
 */
/* Five distinct offers; no fixed height, hidden overflow or JavaScript dependency. */
.ufm-pricing-grid{max-width:78rem;margin:2rem auto;padding:clamp(1rem,3vw,2rem);color:#251a3d;background:#fff;border:1px solid #ddd6e6;border-radius:1.25rem;text-align:start}
.ufm-pricing-grid,.ufm-pricing-grid *{box-sizing:border-box;min-width:0}
.ufm-pricing-grid h2{margin:0 0 1.25rem;font-size:clamp(1.35rem,2.4vw,2rem);line-height:1.25}
.ufm-direct-offer{display:grid;gap:.3rem;margin:0 0 1.5rem;padding:1rem 1.125rem;max-width:54rem;border:1px solid #ddd6e6;border-radius:1rem;background:#f7f2fb}
.ufm-direct-offer strong{font-size:clamp(1rem,2vw,1.2rem);line-height:1.4;color:#251a3d}
.ufm-direct-offer small{font-size:.9rem;line-height:1.45;color:#655d74}
.ufm-pricing-offers{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:1rem}
.ufm-pricing-offers article{padding:1.25rem;border:1px solid #ddd6e6;border-radius:1rem;background:#faf8fc}
.ufm-pricing-offers h3{margin:0 0 .75rem;font-size:1.1rem;line-height:1.4;overflow-wrap:break-word}
.ufm-pricing-grid p{font-size:1rem;line-height:1.55;max-width:75ch;overflow-wrap:break-word}
.ufm-pricing-offers p{margin:.5rem 0}
.ufm-pricing-offers strong{font-size:1.25rem;color:#251a3d}
@media (min-width:64rem){.ufm-pricing-offers{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media print{.ufm-pricing-grid{border:0;padding:0}.ufm-pricing-offers{display:block}.ufm-pricing-offers article{break-inside:avoid;background:white}}

/* source: eshop-ui-v2.css */
/**
 * @author Gilles Capelluto - MOLDEREZ-CONSULT
 * @purpose-fr Couche finale de la boutique : hiérarchie de décision à l’accueil et géométrie des utilitaires flottants partagés.
 * @purpose-en Final shop layer: landing decision hierarchy and geometry of the shared floating utilities.
 * @audit-scope asset
 * @inputs-fr Aucune entrée dynamique ; feuille statique qui s’appuie sur les attributs data-theme et les propriétés personnalisées définis ailleurs.
 * @inputs-en No dynamic input; static stylesheet relying on data-theme attributes and custom properties defined elsewhere.
 * @effects-fr Mise en forme uniquement ; aucune écriture, aucun script.
 * @effects-en Styling only; no writes, no script.
 *
 * e-Shop reception layer — v1.46.00.
 *
 * This final layer owns only the shop's decision hierarchy and the geometry of
 * shared floating utilities. It intentionally leaves commerce rules untouched.
 */
.eshop-page{
  --shop-ink:#171327;
  --shop-muted:#625b69;
  --shop-purple:#352052;
  --shop-purple-2:#654492;
  --shop-coral:#ff745b;
  --shop-line:#e2dbe8;
  background:
    radial-gradient(circle at 8% 8%,rgb(255 151 117 / 14%),transparent 24rem),
    radial-gradient(circle at 92% 16%,rgb(133 101 184 / 13%),transparent 28rem),
    #fbf9fc;
}

html:has(body.eshop-page){overflow-x:hidden;overflow-y:auto}
body.eshop-page{overflow:visible}

.eshop-page main{
  width:min(1480px,calc(100% - clamp(24px,5vw,96px)));
  padding:clamp(30px,4.5vw,68px) 0 clamp(64px,7vw,108px);
}

.eshop-page .shop-intro{
  min-height:0;
  margin:0 0 clamp(28px,3.5vw,48px);
  padding:clamp(26px,3.5vw,48px);
  grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);
  align-items:center;
  gap:clamp(24px,4vw,64px);
  border-color:var(--shop-line);
  background:linear-gradient(132deg,#fffdfb 0 58%,#f1eaf7 100%);
  box-shadow:0 28px 80px rgb(38 23 55 / 8%);
}

.eshop-page .shop-intro h1{
  max-width:12ch;
  font-size:clamp(2.55rem,5vw,5.35rem);
  line-height:.98;
}

.eshop-page .shop-intro>div>p:last-child{
  max-width:58ch;
  margin-top:18px;
  color:var(--shop-muted);
}

.eshop-page .shop-intro .first-year-offer{
  width:100%;
  min-height:230px;
  margin:0;
  padding:clamp(24px,3vw,38px);
  align-content:center;
  gap:12px;
  border:1px solid rgb(255 255 255 / 24%);
  border-radius:26px;
  color:#fff;
  background:linear-gradient(145deg,var(--shop-purple),var(--shop-purple-2));
  box-shadow:0 24px 55px rgb(53 32 82 / 24%);
}

.eshop-page .shop-intro .first-year-offer p{
  margin:0;
  color:#efe9f5;
  font-size:1rem;
  font-weight:650;
}

.eshop-page .shop-intro .first-year-offer strong{
  display:block;
  color:#fff;
  font-size:clamp(1.3rem,1.8vw,1.75rem);
  line-height:1.35;
}

.eshop-page .shop-intro .first-year-offer span{
  display:block;
  color:#efe9f5;
  font-size:1rem;
  line-height:1.55;
}

.eshop-page .badge-variant-catalog{margin:0 0 clamp(52px,6vw,84px)}
.eshop-page .badge-variant-catalog .section-heading{margin-bottom:24px}
.eshop-page .badge-variant-catalog .section-heading h2{font-size:clamp(2rem,3.2vw,3.2rem)}
.eshop-page .badge-variant-catalog .section-heading small{font-size:1rem;line-height:1.55}
.eshop-page .badge-variant-catalog .digital-grid{gap:clamp(18px,2.5vw,34px)}

.eshop-page .badge-variant-catalog .product-card-badge{
  border-color:var(--shop-line);
  border-radius:28px;
  background:#fff;
  box-shadow:0 24px 60px rgb(38 23 55 / 9%);
}

.eshop-page .badge-variant-catalog .product-badge-visual{
  min-height:clamp(280px,29vw,440px);
  background:
    radial-gradient(circle at 50% 42%,#fff 0 25%,transparent 26%),
    linear-gradient(145deg,#f8f4fa,#eee6f4);
}

.eshop-page .badge-variant-catalog .product-badge-visual img{
  height:clamp(250px,26vw,405px);
  filter:drop-shadow(0 24px 22px rgb(23 19 39 / 22%));
}

.eshop-page .badge-variant-catalog .product-copy{padding:clamp(24px,2.6vw,38px)}
.eshop-page .badge-variant-catalog .product-copy h3{font-size:clamp(1.35rem,1.8vw,1.7rem)}
.eshop-page .product-details summary{
  min-height:50px;
  color:var(--shop-purple);
  font-size:.92rem;
}
.eshop-page .product-details summary:hover{color:var(--shop-coral)}
.eshop-page .product-copy footer{gap:18px}
.eshop-page .product-copy footer>strong{font-size:clamp(1.22rem,1.6vw,1.5rem)}
.eshop-page .product-copy button{
  min-width:170px;
  min-height:50px;
  padding-inline:22px;
  background:var(--shop-purple);
}
.eshop-page .product-copy button:hover{background:var(--shop-purple-2)}

.eshop-page .activation-information{
  max-width:none;
  margin-top:20px;
  padding:22px 24px;
  border-color:#cfc2dd;
  background:linear-gradient(105deg,#eee7f5,#faf8fb);
}

.eshop-page .ulule-shop-banner{margin:clamp(52px,6vw,88px) 0}
.eshop-page .positioning{width:100%}
.eshop-page .badge-transparency{border-radius:26px;box-shadow:0 18px 48px rgb(38 23 55 / 6%)}

/* The server-rendered route row must remain professionally usable even when a
   previously cached universal-controls sheet is encountered on staging. */
.eshop-page .ufm-desktop-navigation{display:none}
@media(min-width:1280px){
  .eshop-page .ufm-desktop-navigation:not([hidden]){
    position:sticky;
    top:var(--ufm-public-header-height,74px);
    z-index:100;
    max-width:none;
    margin:0;
    padding:10px clamp(28px,4vw,70px);
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:8px;
    border-bottom:1px solid #e8e1ec;
    color:var(--shop-ink);
    background:rgb(255 253 251 / 96%);
    font:650 14px/1.25 Inter,system-ui,sans-serif;
    backdrop-filter:blur(16px);
  }
  .eshop-page .ufm-desktop-navigation>a{
    min-height:44px;
    padding:10px 16px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:12px;
    color:#302144;
    text-align:center;
    text-decoration:none;
  }
  .eshop-page .ufm-desktop-navigation>a:hover{color:var(--shop-purple);background:#eee9f6}
  .eshop-page .ufm-desktop-navigation>a:last-child{color:#fff;background:var(--shop-purple)}
}

/* Shared utilities are viewport controls. The former e-Shop-specific static
   fallback sent them below the footer and made the page appear broken. */
body.eshop-page>.gdpr-alert.ufm-cookie-banner{
  position:fixed;
  inset:auto auto calc(84px + env(safe-area-inset-bottom)) 50%;
  z-index:10022;
  width:min(1180px,calc(100vw - 24px));
  max-width:none;
  margin:0;
  transform:translateX(-50%);
}
body.eshop-page>.ufm-readability-button{
  position:fixed;
  inset:auto auto calc(82px + env(safe-area-inset-bottom)) 12px;
  z-index:10022;
  margin:0;
  transform:none;
}
body.eshop-page>.ufm-back-to-top{
  position:fixed;
  inset:auto 12px calc(82px + env(safe-area-inset-bottom)) auto;
  z-index:10022;
  margin:0;
  transform:none;
}
@media(max-width:1279px){
  body.eshop-page>nav.mobile-app-nav.ufm-public-bottom-nav{
    position:fixed;
    inset:auto 0 0 0;
    z-index:10020;
    margin:0;
    transform:none;
  }
}
@media(min-width:1280px){
  body.eshop-page>.gdpr-alert.ufm-cookie-banner{
    bottom:18px;
    width:min(1180px,calc(100vw - 24px));
  }
  body.eshop-page>.ufm-readability-button{bottom:14px;left:18px}
  body.eshop-page>.ufm-back-to-top{right:18px;bottom:14px}
  body.eshop-page>nav.mobile-app-nav.ufm-public-bottom-nav{display:none}
}

@media(max-width:1023px){
  .eshop-page .shop-intro{grid-template-columns:1fr;gap:22px}
  .eshop-page .shop-intro .first-year-offer{min-height:0}
}
@media(min-width:768px) and (max-width:899px){
  .eshop-page .badge-variant-catalog .product-copy footer{display:grid;grid-template-columns:minmax(0,1fr)}
  .eshop-page .badge-variant-catalog .product-copy button{width:100%;min-width:0}
}
@media(max-width:767px){
  .eshop-page main{width:calc(100% - 24px);padding-top:26px}
  .eshop-page .shop-intro{padding:24px;border-radius:26px}
  .eshop-page .badge-variant-catalog .digital-grid{grid-template-columns:1fr}
  .eshop-page .badge-variant-catalog .product-badge-visual{min-height:300px}
  .eshop-page .badge-variant-catalog .product-badge-visual img{height:275px}
}
@media(max-width:479px){
  .eshop-page main{width:calc(100% - 20px)}
  .eshop-page .shop-intro{padding:20px}
  .eshop-page .shop-intro h1{font-size:clamp(2rem,10.5vw,2.55rem)}
  .eshop-page .badge-variant-catalog .product-badge-visual{min-height:260px}
  .eshop-page .badge-variant-catalog .product-badge-visual img{height:235px}
  .eshop-page .product-copy footer{display:grid;grid-template-columns:1fr}
  .eshop-page .product-copy button{width:100%}
}
@media(max-width:359px){
  .eshop-page .shop-intro{padding:17px}
  .eshop-page .shop-intro .first-year-offer{padding:20px}
  body.eshop-page>.gdpr-alert{max-width:calc(100vw - 12px)}
}
@media(prefers-reduced-motion:reduce){
  .eshop-page *{scroll-behavior:auto;transition:none}
}

/* 1.46.47 — the launch offer remains readable from 320 px to wide desktop. */
.eshop-page .shop-intro .ufm-launch-offer{min-width:0;min-height:230px;padding:clamp(22px,2.8vw,34px);display:grid;grid-template-columns:clamp(86px,9vw,124px) minmax(0,1fr);align-items:center;gap:clamp(16px,2vw,26px);overflow:hidden;border:1px solid rgb(255 255 255 / 24%);border-radius:26px;color:#fff;background:linear-gradient(145deg,var(--shop-purple),var(--shop-purple-2));box-shadow:0 24px 55px rgb(53 32 82 / 24%)}
.eshop-page .ufm-launch-offer-visual{display:block}.eshop-page .ufm-launch-offer-visual img{width:100%;height:auto;display:block;filter:drop-shadow(0 16px 20px rgb(18 8 30 / 28%))}.eshop-page .ufm-launch-offer-copy{min-width:0;display:grid;gap:9px}.eshop-page .ufm-launch-offer-label{margin:0;color:#ffd6cb;font-size:.78rem;font-weight:850;line-height:1.25;letter-spacing:.09em;text-transform:uppercase}
.eshop-page .ufm-launch-offer-prices{display:flex;flex-wrap:wrap;align-items:end;gap:9px 15px}.eshop-page .ufm-launch-offer-prices>span{display:grid;gap:2px}.eshop-page .ufm-launch-offer-prices small{color:#d9cfe4;font-size:.68rem;line-height:1.25}.eshop-page .ufm-launch-offer-prices del{color:#d8cce2;font-size:1rem;font-weight:680;text-decoration-color:#ff8a70;text-decoration-thickness:2px}.eshop-page .ufm-launch-offer-prices strong{color:#fff;font-size:clamp(1.45rem,2vw,1.9rem);font-weight:850;line-height:1}.eshop-page .ufm-launch-offer-prices b{margin-left:auto;padding:7px 11px;border-radius:999px;color:#28173c;background:#ffd2c7;font-size:.72rem;line-height:1.2;white-space:nowrap}
.eshop-page .ufm-launch-offer-benefit{margin:0;color:#eee7f4;font-size:.82rem;line-height:1.5}.eshop-page .ufm-launch-offer-exact{color:#ffd6cb;font-size:.72rem;font-weight:780;line-height:1.35}.eshop-page .product-launch-price{min-width:0;display:grid;grid-template-columns:auto auto;align-items:baseline;gap:3px 9px}.eshop-page .product-launch-price del{color:#817787;font-size:.86rem;text-decoration-color:#d94a35;text-decoration-thickness:2px}.eshop-page .product-launch-price strong{color:#2d1a45;font-size:clamp(1.22rem,1.6vw,1.5rem);line-height:1.15}.eshop-page .product-launch-price b{grid-column:1/-1;color:#b93828;font-size:.72rem;line-height:1.3}
@media(max-width:1023px){.eshop-page .shop-intro .ufm-launch-offer{min-height:0;grid-template-columns:104px minmax(0,1fr)}}
@media(max-width:767px){.eshop-page .shop-intro .ufm-launch-offer{grid-template-columns:88px minmax(0,1fr);padding:20px}.eshop-page .ufm-launch-offer-prices b{margin-left:0}}
@media(max-width:479px){.eshop-page .shop-intro .ufm-launch-offer{grid-template-columns:68px minmax(0,1fr);gap:12px;padding:16px;border-radius:20px}.eshop-page .ufm-launch-offer-prices{gap:8px 10px}.eshop-page .ufm-launch-offer-prices strong{font-size:1.35rem}.eshop-page .ufm-launch-offer-prices b{padding:5px 8px;font-size:.64rem}.eshop-page .ufm-launch-offer-benefit{font-size:.74rem}}
@media(max-width:359px){.eshop-page .shop-intro .ufm-launch-offer{grid-template-columns:56px minmax(0,1fr);padding:14px}.eshop-page .ufm-launch-offer-prices b{width:100%;text-align:center}}
/* Offer details stay readable; mobile uses the full card width for text. */
.ufm-launch-offer{position:relative}
.ufm-launch-offer .ufm-launch-offer-copy p{margin:0;font-size:.875rem;line-height:1.5}
.ufm-launch-offer .ufm-launch-offer-copy .ufm-launch-offer-label{font-size:.78rem;line-height:1.3}
.ufm-launch-offer .ufm-launch-offer-prices small,.ufm-launch-offer .ufm-launch-offer-exact{font-size:.78rem;line-height:1.4}
.ufm-launch-offer .ufm-launch-offer-prices strong{line-height:1.25}
.ufm-launch-offer .ufm-launch-offer-prices em{font-size:.75rem;font-style:normal;font-weight:600}
.ufm-launch-offer .ufm-launch-offer-prices b{font-size:.78rem;white-space:normal}
.ufm-launch-offer .ufm-launch-offer-shipping{font-weight:650}
.ufm-launch-offer .ufm-launch-offer-renewal{font-weight:400}
@media(max-width:479px){
 .ufm-launch-offer,.eshop-page .shop-intro .ufm-launch-offer{display:block;padding:18px}
 .ufm-launch-offer .ufm-launch-offer-visual{position:absolute;top:12px;right:12px;width:48px}
 .ufm-launch-offer .ufm-launch-offer-label{padding-right:52px;min-height:42px;display:flex;align-items:center}
 .ufm-launch-offer .ufm-launch-offer-prices{gap:10px 18px}
 .ufm-launch-offer .ufm-launch-offer-prices strong{font-size:1.7rem}
 .ufm-launch-offer .ufm-launch-offer-prices b{width:auto;text-align:left}
}
.ufm-launch-offer .ufm-launch-offer-prices{display:grid;grid-template-columns:1fr 1fr;align-items:end;gap:10px 16px}.ufm-launch-offer .ufm-launch-offer-prices>span{width:auto;min-width:0}.ufm-launch-offer .ufm-launch-offer-prices b{grid-column:1/-1;margin:0;justify-self:start}

}
@layer utilities {
}
@layer utilities { [hidden] { display:none !important; } }
