/* SOMAGON — presentation only. Loaded after legacy component styles.
   Geometry, photograph dimensions, placement handles and business states remain owned by the app. */
@font-face{font-family:Inter;src:url('./assets/fonts/InterVariable.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
:root,html[data-theme="light"]{
 --sg-bg:#f2f1f6;--sg-surface:#faf9fc;--sg-text:#24232a;--sg-muted:#65636f;--sg-line:#dddce5;
 --sg-accent:#7159a5;--sg-control:#b7b3c3;--sg-soft:#e9e6f0;--sg-danger:#b12c29;
 /* Over photos, in both themes: the solid « Vérification en cours » tag and an event's photo-less backdrop. */
 --sg-alert-solid:#c4302b;--sg-on-alert:#ffffff;--sg-cover-top:#2a2438;--sg-cover-bottom:#15131c;
 --sg-font:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
html[data-theme="dark"]{
 --sg-bg:#16161a;--sg-surface:#222228;--sg-text:#f3f2f7;--sg-muted:#afadba;--sg-line:#32323b;
 --sg-accent:#c0acf0;--sg-control:#6d687b;--sg-soft:#2c2935;--sg-danger:#ffaca5;
}
html:root{
 --elan-ui-font:var(--sg-font);--fw-font:var(--sg-font);
 --es-bg:var(--sg-bg);--es-panel:var(--sg-surface);--es-soft:var(--sg-soft);--es-ink:var(--sg-text);
 --es-muted:var(--sg-muted);--es-line:var(--sg-line);--es-accent:var(--sg-accent);--es-accent-ink:var(--sg-accent);
 --es-accent-soft:var(--sg-soft);--es-focus:var(--sg-accent);--es-danger:var(--sg-danger);
 --bg:var(--sg-bg);--bg2:var(--sg-soft);--card:var(--sg-surface);--solid:var(--sg-surface);--card2:var(--sg-soft);
 --text:var(--sg-text);--muted:var(--sg-muted);--muted2:var(--sg-muted);--line:var(--sg-line);--line2:var(--sg-control);--ice:var(--sg-accent);
 --studio-bg:var(--sg-bg);--studio-panel:var(--sg-surface);--studio-border:var(--sg-line);--studio-muted:var(--sg-muted);--studio-lime:var(--sg-accent);
 --elan-pill-height:48px;--elan-pill-radius:11px;--elan-pill-font:calc(.875rem * var(--elan-ui-scale,1));
 --elan-pill-fill:var(--sg-text);--elan-pill-fill-ink:var(--sg-bg);--elan-pill-fill-hover:color-mix(in srgb,var(--sg-text) 88%,var(--sg-bg));
 --elan-pill-soft:var(--sg-soft);--elan-pill-soft-ink:var(--sg-text);--elan-pill-line:var(--sg-control);
 --elan-pill-surface:var(--sg-surface);--elan-pill-ink:var(--sg-text);--elan-pill-muted:var(--sg-muted);
 --elan-pill-hover:color-mix(in srgb,var(--sg-soft) 82%,var(--sg-accent));--elan-pill-focus:var(--sg-accent);
 --eu-primary:var(--sg-text);--eu-primary-ink:var(--sg-bg);--eu-primary-press:var(--elan-pill-fill-hover);
 --eu-secondary:var(--sg-soft);--eu-stroke:var(--sg-control);--eu-focus:var(--sg-accent);
 --shadow:0 8px 24px #00000008;
}
html[data-theme] :is(body,#app,.v29-app,.brand-workspace,.form-welcome){
 --v29-bg:var(--sg-bg);--v29-line:var(--sg-line);--v29-line-strong:var(--sg-control);--v29-accent:var(--sg-accent);
 --bw-bg:var(--sg-bg);--bw-panel:var(--sg-surface);--bw-line:var(--sg-line);--bw-muted:var(--sg-muted);--bw-accent:var(--sg-accent);
 --fw-bg:var(--sg-bg);--fw-panel:var(--sg-surface);--fw-line:var(--sg-line);--fw-text:var(--sg-text);--fw-muted:var(--sg-muted);--fw-accent:var(--sg-accent);--fw-font:var(--sg-font);
 background-color:var(--sg-bg)!important;color:var(--sg-text);font-family:var(--sg-font)!important;
}
html[data-theme="light"] :is(body,.form-welcome,.brand-workspace){color-scheme:light}
html[data-theme="dark"] :is(body,.form-welcome,.brand-workspace){color-scheme:dark}
/* One type family, including inline legacy settings CSS. Excludes artwork and editable user content. */
html[data-theme] #app :is(h1,h2,h3,h4,p,small,label,input,select,textarea,button,summary,nav,a,legend,table,.ea-settings){font-family:var(--sg-font)!important}
html[data-theme] #app :is(h1,h2,h3){font-weight:550!important;letter-spacing:-.025em;text-transform:none!important}
html[data-theme] #app :is(.v29-page-head,.bw-head,.ae-page-heading)>h1{font-size:calc(1.75rem * var(--elan-ui-scale,1))!important;line-height:1.2!important}
html[data-theme] #app :is(.v29-app-top,.v29-bottom-nav,.bw-header,.bw-bottom-nav,.bw-sidebar){background:var(--sg-surface)!important;color:var(--sg-text)!important;border-color:var(--sg-line)!important;box-shadow:none!important}
html[data-theme] #app :is(.v29-form-card,.v30-profile-card,.bw-card,.bw-panel,.bw-section,.partnership-summary,.partnership-row,.partnership-correspondence,.ff-card,.dm-card,.modal-card,.ag-dialog,.bg-dialog,.elan-photo-card){background-color:var(--sg-surface)!important;color:var(--sg-text)!important;border-color:var(--sg-line)!important;box-shadow:none}
html[data-theme] #app :is(.ag-dialog,.bg-dialog) :is(p,small,.ag-note,.bg-note,.bg-intro){color:var(--sg-muted)}
html[data-theme] #app :is(.ag-top,.ag-footer,.bg-top,.bg-footer,.ag-example-options,.bg-example,.bg-menu li){background-color:var(--sg-surface)!important;border-color:var(--sg-line)!important;color:var(--sg-text)!important}
html[data-theme] #app :is(.ag-kicker,.bg-progress strong,.bg-menu strong){color:var(--sg-accent)!important}
html[data-theme] #app .bg-progress span.is-reached{background:var(--sg-accent)!important}
html[data-theme] :is(#app,body) :is(button,label,a)[data-elan-control]{font-weight:500!important;letter-spacing:0!important;text-transform:none!important}
/* Remove only the adapter's decorative CTA arrows, not Back, zoom or crop commands. */
html[data-theme] :is(#app,body) :is(button,label,a)[data-elan-next]{padding-inline:18px!important}
html[data-theme] :is(#app,body) :is(button,label,a)[data-elan-next]::before,
html[data-theme] :is(#app,body) :is(button,label,a)[data-elan-next]::after{content:none!important;display:none!important}
html[data-theme] #app :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="hidden"]),select,textarea){border-radius:10px!important;border-color:var(--sg-control)!important;background-color:var(--sg-surface);color:var(--sg-text);font-size:calc(1rem * var(--elan-ui-scale,1))!important}
html[data-theme] #app :is(button,a,input,select,textarea,summary):focus-visible{outline:2px solid var(--sg-accent)!important;outline-offset:3px}
/* Approved entry: official emblem, wordmark, existing actions. No hero photo or slogan. */
html[data-theme] #app .form-welcome.fw-entry-page{background:var(--sg-bg)!important;align-items:start;padding-block:max(32px,env(safe-area-inset-top)) max(32px,env(safe-area-inset-bottom))}
html[data-theme] #app .fw-entry{width:100%;max-width:380px;margin-inline:auto;text-align:center}
html[data-theme] #app .fw-entry-identity{display:flex;flex-direction:column;align-items:center;gap:18px;padding:40px 24px 36px;margin:0}
html[data-theme] #app .somagon-emblem{display:grid;place-items:center;width:164px;height:112px;flex:none}
html[data-theme] #app .somagon-emblem img{display:block;width:210px;height:210px;max-width:none;object-fit:contain}
html[data-theme] #app .fw-entry h1{margin:0;font-size:21px!important;font-weight:550!important;line-height:1.3!important;letter-spacing:3.5px!important}
.somagon-wordmark{font-family:var(--sg-font);font-weight:550;letter-spacing:.16em;white-space:nowrap}
html[data-theme] #app .fw-role-actions{display:grid;gap:10px;margin:30px 0 12px}
html[data-theme] #app .fw-role-choice{width:100%;min-height:48px!important;border-radius:11px!important;font-size:14px!important;font-weight:500!important;justify-content:center!important;padding:12px 18px!important}
html[data-theme] #app .fw-role-choice:first-child{background:var(--sg-text)!important;color:var(--sg-bg)!important;border-color:var(--sg-text)!important}
html[data-theme] #app .fw-role-choice:last-child{background:var(--sg-soft)!important;color:var(--sg-text)!important;border-color:var(--sg-line)!important}
html[data-theme] #app :is(.fw-signin,.fw-demo-options summary){font-size:14px!important;font-weight:400!important;background:transparent!important;color:var(--sg-muted)!important;border:0!important}
html[data-theme] #app .fw-demo-options{margin-top:16px;border-color:var(--sg-line)}
html[data-theme] #app .fw-demo-options summary{min-height:44px;display:flex;justify-content:center;align-items:center;list-style:none;cursor:pointer}
html[data-theme] #app .fw-demo-options summary::-webkit-details-marker{display:none}
html[data-theme] #app .fw-demo-options summary::after{content:none}
html[data-theme] #app .fw-auth-name{width:auto;color:var(--sg-text);font-size:16px}
html[data-theme] #app .fw-auth-card{background:transparent;border:0;box-shadow:none}
html[data-theme] .form-intro{background:var(--sg-bg)!important;color:var(--sg-text)!important;font-family:var(--sg-font)}
html[data-theme] .form-intro-orbit{display:none}
@media(min-width:768px){html[data-theme] #app .fw-entry-identity{padding-top:70px}}
@media(prefers-reduced-motion:reduce){html[data-theme] #app :is(button,a,input,select,textarea){transition:none!important}}
/* The transparent logo has wide intrinsic margins. Center it within a fixed visual slot. */
html[data-theme] .somagon-emblem{position:relative;display:block;width:164px;height:112px}
html[data-theme] #app .somagon-emblem img,html[data-theme] .form-intro .somagon-emblem img{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:210px;height:210px;max-width:none}
html[data-theme] #app .fw-demo-options summary::before{content:none!important;display:none!important}
html[data-theme] #app .form-app-header .ep-wordmark{width:auto!important;color:var(--sg-text)!important}
html[data-theme] #app .form-app-header .ep-wordmark .somagon-wordmark{display:block!important;font:550 15px/1.4 var(--sg-font)!important;letter-spacing:.12em!important;color:var(--sg-text)!important}
html[data-theme] #app :is(.ag-example-options,.ag-tabs) button[aria-pressed="true"]{background:var(--sg-soft)!important;color:var(--sg-accent)!important;border-color:var(--sg-accent)!important}
html[data-theme] #app :is(.elan-photo-category__head>div>span,.ep-avatar-add){background-color:var(--sg-soft)!important;color:var(--sg-accent)!important}
html[data-theme] #app .fin-page{--fin-paid:var(--sg-accent);--fin-due:color-mix(in srgb,var(--sg-accent) 45%,var(--sg-soft));--fin-over:var(--sg-danger);--fin-over-ink:var(--sg-danger)}
html[data-theme="light"] #app .fin-count.is-over{background:#f3e5e7!important}
html[data-theme="dark"] #app .fin-count.is-over{background:#38303a!important}
html[data-theme] #app :is(.elan-photo-card__heading small,.elan-photo-card__heading>span){color:var(--sg-muted)!important}
/* Selected and primary states filled with the lavender accent: in dark mode the accent is light, so its text is dark. */
html[data-theme="dark"] :is(#app,body) :is(.ae-button-primary,.ag-dialog .ag-footer>.ag-primary,.sg-welcome .sg-footer>.sg-primary,.bg-dialog .bg-primary,.brand-workspace .v29-main-btn,.sf-primary,.elan-photo-card__primary,.p32-mode-row button[aria-pressed=true],.v29-bottom-nav button[aria-current=page],.p31-skip,.sp-done,.v29-main-btn,.v29-public-top .v29-register,.v29-hero-copy button:first-child,.v29-buy-cta button,.v29-zone-grid article.active>button b,.v29-app .primary-action,.v29-app .v27-logo-add,.v29-app .es-shipping-body form>button){color:var(--sg-bg)!important}
html[data-theme] #app .fw-entry-actions .fw-btn{min-height:48px!important;border-radius:11px!important;font-size:14px!important;font-weight:500!important}
/* Partnership file: one clear way back, always visible at the top. */
html[data-theme] #app .sf-file-dialog>.form-dialog-header{position:sticky;top:0;z-index:3;justify-content:flex-start;align-items:center;gap:14px;background:var(--sg-surface)!important;border-color:var(--sg-line)!important}
html[data-theme] #app .sf-file-dialog .sf-back{display:none}
/* Compact top of pages: the demo line sits right under the header and the page title follows it closely. */
html[data-theme] .v29-app .touch-demo-menu{margin:0 16px!important}
html[data-theme] .v29-app .touch-demo-menu>summary{min-height:44px;padding:0;display:flex;align-items:center}
html[data-theme] #app :is(main.bw-page,main.v29-page){padding-top:8px!important}
/* A photo that could not load shows its neutral frame, never the browser's broken-image icon. */
html[data-theme] #app img.is-broken{visibility:hidden}
/* One button shape everywhere: 44–48 px high, 11 px corners. */
html[data-theme] #app .fw-auth-card .v29-main-btn{min-height:48px!important;height:auto!important;border-radius:11px!important;font-size:14px!important}
html[data-theme] #app :is(.selection-group>header>button,.selection-actions>button,.selection-more button,.partnership-quick>button,.dm-brief .dm-secondary){min-height:44px!important;border-radius:11px!important;font-size:14px}
html[data-theme] #app .partnership-composer .partnership-quick{align-items:center;gap:4px}
html[data-theme] #app .partnership-request-help{display:inline-flex;flex:none;align-items:center}
html[data-theme] #app .partnership-request-help>.help-tip{margin:0!important;top:0}
html[data-theme] #app .sp-primary{border-radius:11px!important}
html[data-theme] #app .v27-clean-deal-top{gap:6px 12px!important}
/* Tablets and larger screens: the top bar (logo, notifications, settings) stays in view while scrolling.
   The page is clipped horizontally by <html> only; a clipped <body> would become its own scroll box and stop the sticky bar. */
@media (min-width:700px){html body{overflow-x:visible}html[data-theme] #app .v29-app-top{position:sticky;top:0;z-index:40}}
/* Opening screens: content centred vertically in the window (falls back to the top when it does not fit). */
html[data-theme] #app .form-welcome.fw-entry-page{align-content:safe center;align-items:center;min-height:100svh;box-sizing:border-box}
html[data-theme] #app .form-welcome.fw-auth{display:flex;flex-direction:column;min-height:100svh;box-sizing:border-box}
html[data-theme] #app .form-welcome.fw-auth>.fw-auth-grid{flex:1 0 auto;display:flex;flex-direction:column;justify-content:safe center;padding-bottom:76px;box-sizing:border-box}
/* Ma marque: sports picker and public-page heading */
html[data-theme] #app .bw-sports-picker{display:grid;gap:10px;margin:0;padding:0;border:0;min-width:0}
html[data-theme] #app .bw-sports-picker legend{padding:0;margin-bottom:8px;font-weight:600}
html[data-theme] #app .bw-sport-chips{display:flex;flex-wrap:wrap;gap:8px}
html[data-theme] #app .bw-sports-picker small{opacity:.7}
html[data-theme] #app .bv-profile-head p{margin:4px 0 14px;font-size:14px;line-height:1.45;opacity:.75}
html[data-theme] #app main.bv-brand>.soc-panel.ps-host{margin:-10px 0 0}
/* Keep size and rotation beside one another, immediately below the photo. */
html[data-theme] #app .bt-precise .bt-sliders{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:6px 0}
html[data-theme] #app .bt-slider{display:grid;gap:8px;font-size:14px;font-weight:600}
html[data-theme] #app .bt-slider>span{display:flex;justify-content:space-between;align-items:baseline}
html[data-theme] #app .bt-slider output{font-variant-numeric:tabular-nums;font-weight:600;color:#7657FF}
html[data-theme="light"] #app .bt-slider output{color:#4B2FD6}
html[data-theme] #app .bt-precise [data-reset-fit]{margin-top:4px}

/* ===== SOMAGON — one button system =====
   Every text control is 40px high on screen inside a 44px touch area, in four families:
   · Action: rounded rectangle (11px corners), 14px text. Primary = filled ink, secondary = outline.
   · Choice / filter chip: pill, 13px text. Selected = soft accent fill, accent outline and text.
   · Tabs that switch a section of the page: text with an accent underline, no box.
   · Icon: round, outline, the same 40px disc (magnifier, add, export, bell, settings, close).
   Back buttons are a chevron and a label in the secondary outline. */
/* Selected: 13% (light) / 20% (dark) of the accent over the page, written out so every reader gets plain colours. */
:root,html[data-theme="light"]{--sg-sel-bg:#ede9f3;--sg-sel-ink:#5b4691;--sg-chip-line:var(--sg-control)}
html[data-theme="dark"]{--sg-sel-bg:#383445;--sg-sel-ink:var(--sg-accent);--sg-chip-line:var(--sg-control)}
html:root{--elan-pill-height:44px}
/* Actions: 2px transparent borders above and below leave the 40px visible button in the 44px touch area. */
html[data-theme][lang] :is(#app,body) :is(button,label,a)[data-elan-control]:not([data-elan-control="icon"]):not([data-elan-control="chip"]):where(:not(.form-welcome *)){min-height:44px!important;border-width:2px 0!important}
html[data-theme][lang] :is(#app,body) :is(button,label,a)[data-elan-control]:where(.fin-actions>*,.ac-empty-action){height:auto!important}
/* Chips. */
html[data-theme][lang] :is(#app,body) :is(.ac-deals .ac-filters>button,.fin-chips>button,.bv-sports>button,.cal-premium-sports>button,.bd-filters>.bd-filter,.fv-filters>button,.bw-backdrops>button,.bw-sport-chips>button){
 position:relative!important;isolation:isolate;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:6px!important;flex:0 0 auto!important;
 box-sizing:border-box!important;width:auto!important;min-width:44px!important;max-width:100%!important;min-height:44px!important;height:auto!important;
 margin:0!important;padding:4px 12px!important;border:0!important;border-radius:999px!important;background:transparent!important;box-shadow:none!important;
 color:var(--sg-text)!important;font:500 calc(.8125rem * var(--elan-ui-scale,1))/1.3 var(--elan-ui-font,system-ui)!important;
 letter-spacing:0!important;text-transform:none!important;text-decoration:none!important;white-space:nowrap!important;cursor:pointer;transform:none!important}
html[data-theme][lang] :is(#app,body) :is(.ac-deals .ac-filters>button,.fin-chips>button,.bv-sports>button,.cal-premium-sports>button,.bd-filters>.bd-filter,.fv-filters>button,.bw-backdrops>button,.bw-sport-chips>button)::before{
 content:""!important;position:absolute!important;z-index:-1!important;inset:2px 0!important;display:block!important;width:auto!important;height:auto!important;box-sizing:border-box;
 border:1px solid var(--sg-chip-line)!important;border-radius:999px!important;background:var(--sg-surface)!important;pointer-events:none!important}
html[data-theme][lang] :is(#app,body) :is(.ac-deals .ac-filters>button,.fin-chips>button,.bv-sports>button,.cal-premium-sports>button,.bd-filters>.bd-filter,.fv-filters>button,.bw-backdrops>button,.bw-sport-chips>button):is([aria-pressed="true"],.active){color:var(--sg-sel-ink)!important}
html[data-theme][lang] :is(#app,body) :is(.ac-deals .ac-filters>button,.fin-chips>button,.bv-sports>button,.cal-premium-sports>button,.bd-filters>.bd-filter,.fv-filters>button,.bw-backdrops>button,.bw-sport-chips>button):is([aria-pressed="true"],.active)::before{background:var(--sg-sel-bg)!important;border-color:var(--sg-accent)!important}
html[data-theme][lang] :is(#app,body) :is(.ac-deals .ac-filters>button,.fin-chips>button,.bv-sports>button,.cal-premium-sports>button,.bd-filters>.bd-filter,.fv-filters>button,.bw-backdrops>button,.bw-sport-chips>button)>:is(b,span){color:inherit!important;font:inherit!important}
html[data-theme][lang] :is(#app,body) :is(.ac-deals .ac-filters>button,.fin-chips>button)>b{display:inline-grid!important;place-items:center;min-width:19px;height:19px;margin:0!important;padding:0 4px!important;box-sizing:border-box;border-radius:999px;background:var(--sg-soft)!important;color:var(--sg-muted)!important;font:600 calc(.75rem * var(--elan-ui-scale,1))/1 var(--elan-ui-font,system-ui)!important;font-variant-numeric:tabular-nums;opacity:1!important}
html[data-theme][lang] :is(#app,body) :is(.ac-deals .ac-filters>button,.fin-chips>button)[aria-pressed="true"]>b{background:transparent!important;color:var(--sg-sel-ink)!important}
html[data-theme][lang] #app .ac-deals .ac-filters>button{padding-inline:9px!important}
/* In a row that scrolls sideways a chip keeps its whole label, even at very large text sizes. */
html[data-theme][lang] :is(#app,body) :is(.fin-chips,.bv-sports,.cal-premium-sports,.bd-filters,.fv-filters)[role="group"]>button{max-width:none!important}
@media(hover:hover){html[data-theme][lang] :is(#app,body) :is(.ac-deals .ac-filters>button,.fin-chips>button,.bv-sports>button,.cal-premium-sports>button,.bd-filters>.bd-filter,.fv-filters>button,.bw-backdrops>button,.bw-sport-chips>button):hover::before{border-color:var(--sg-text)!important}}
html[data-theme][lang] :is(#app,body) :is(.ac-deals .ac-filters>button,.fin-chips>button,.bv-sports>button,.cal-premium-sports>button,.bd-filters>.bd-filter,.fv-filters>button,.bw-backdrops>button,.bw-sport-chips>button):focus-visible{outline:2px solid var(--sg-accent)!important;outline-offset:1px!important}
/* Choices made of radio buttons (period of the Bilan financier, status of a cost): the label is the touch area, the text is the chip. */
html[data-theme][lang] :is(#app,body) :is(.fin-status-field label,.cr-period-options label){display:inline-flex;padding:2px 0;margin:0}
html[data-theme][lang] :is(#app,body) :is(.fin-status-field,.cr-period-options) input+span{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;min-height:40px;padding:0 14px;border:1px solid var(--sg-chip-line);border-radius:999px;background:var(--sg-surface);color:var(--sg-text);font:500 calc(.8125rem * var(--elan-ui-scale,1))/1.3 var(--elan-ui-font,system-ui);cursor:pointer}
html[data-theme][lang] :is(#app,body) :is(.fin-status-field,.cr-period-options) input:checked+span{border-color:var(--sg-accent);background:var(--sg-sel-bg);color:var(--sg-sel-ink)}
/* Rows of chips stay on one line and scroll sideways instead of stacking. */
html[data-theme][lang] #app .fin-toolbar{display:flex;flex-wrap:nowrap!important;align-items:center;gap:8px;margin:0 0 14px}
html[data-theme][lang] #app .fin-chips{display:flex;flex:1 1 auto;flex-wrap:nowrap!important;gap:6px;min-width:0;overflow-x:auto;scrollbar-width:none;margin:0;padding:0}
html[data-theme][lang] #app .fin-chips::-webkit-scrollbar{display:none}
/* Tabs that switch a section (Finances, Événements, partnership file, suppliers, athlete Photos | Emplacements): a soft 40px track, the chosen tab
   lifted on a light pill — clearly something to tap, without the weight of a filled button. */
html[data-theme][lang] :is(#app,body) :is(.fin-tabs,.cal-view-tabs,.sf-tabs,.fv-segments,.elan-space-tabs){display:flex!important;grid-template-columns:none!important;gap:2px!important;max-width:none!important;min-height:44px;box-sizing:border-box!important;padding:0 3px!important;border:2px solid transparent!important;border-width:2px 0!important;border-radius:13px!important;background:var(--sg-soft)!important;background-clip:padding-box!important;box-shadow:none!important}
html[data-theme][lang] :is(#app,body) .sf-tabs{background:linear-gradient(var(--sg-soft),var(--sg-soft)) padding-box,linear-gradient(var(--sg-surface),var(--sg-surface)) border-box!important}
html[data-theme][lang] #app :is(.fin-tabs,.cal-view-tabs){margin:0 0 16px!important}
html[data-theme][lang] :is(#app,body) :is(.fin-tabs,.cal-view-tabs,.sf-tabs,.fv-segments,.elan-space-tabs)>button{
 position:relative!important;isolation:isolate;flex:1 1 auto!important;min-width:0!important;min-height:44px!important;height:auto!important;margin:-2px 0!important;padding:4px 6px!important;
 border:0!important;border-radius:9px!important;background:transparent!important;box-shadow:none!important;color:var(--sg-muted)!important;
 font:600 min(calc(.875rem * var(--elan-ui-scale,1)),4.1vw)/1.25 var(--elan-ui-font,system-ui)!important;letter-spacing:0!important;text-transform:none!important;
 white-space:normal!important;overflow-wrap:normal!important;word-break:keep-all!important;hyphens:none!important;transform:none!important;cursor:pointer}
html[data-theme][lang] :is(#app,body) :is(.fin-tabs,.cal-view-tabs,.sf-tabs,.fv-segments,.elan-space-tabs)>button:is([aria-selected="true"],[aria-pressed="true"],[aria-current="page"]){color:var(--sg-text)!important}
html[data-theme][lang] :is(#app,body) :is(.fin-tabs,.cal-view-tabs,.sf-tabs,.fv-segments,.elan-space-tabs)>button:is([aria-selected="true"],[aria-pressed="true"],[aria-current="page"])::before{content:"";position:absolute;z-index:-1;inset:5px 0;border-radius:9px;background:var(--sg-surface);box-shadow:0 1px 3px rgba(0,0,0,.16),inset 0 0 0 1px var(--sg-line)}
@media(hover:hover){html[data-theme][lang] :is(#app,body) :is(.fin-tabs,.cal-view-tabs,.sf-tabs,.fv-segments,.elan-space-tabs)>button:hover{color:var(--sg-text)!important}}
html[data-theme][lang] :is(#app,body) :is(.fin-tabs,.cal-view-tabs,.sf-tabs,.fv-segments,.elan-space-tabs)>button:focus-visible{outline:2px solid var(--sg-accent)!important;outline-offset:-3px!important}
/* Athlete « Emplacements » tab: Photos | Emplacements, each with a red badge for what is left to do
   (essential photos to add, zones to place). One line on a 320px phone, even with larger text. */
html[data-theme][lang] #app .elan-space-tabs{margin:0 0 14px!important}
html[data-theme][lang] #app .elan-space-tabs>button{display:inline-flex!important;flex:1 1 0!important;align-items:center;justify-content:center;gap:6px;white-space:nowrap!important}
html[data-theme] #app .elan-space-badge{display:inline-grid;place-items:center;flex:none;min-width:20px;height:20px;box-sizing:border-box;padding:0 7px;border-radius:999px;background:#C8102E;color:#FFFFFF;font:700 min(calc(.72rem * var(--elan-ui-scale,1)),3.4vw)/1 var(--elan-ui-font,system-ui);letter-spacing:0}
html[data-theme="dark"] #app .elan-space-badge{background:#D42A43}
/* Icons: one 40px disc in a 44px touch area. Buttons drawn over a photo and the × inside a search field keep their own look. */
html[data-theme][lang] :is(#app,body) :is(.fn-bell,.form-settings-button,.bd-search-toggle,.cal-search-toggle,.bv-search-toggle,.fin-icon-action,.fn-close,.modal-close,dialog.help-sheet .help-sheet-close,dialog.proof-help-dialog .proof-help-close){
 display:inline-grid!important;place-items:center!important;flex:none!important;box-sizing:border-box!important;width:44px!important;min-width:44px!important;max-width:44px!important;height:44px!important;min-height:44px!important;
 margin:0!important;padding:0!important;border:2px solid transparent!important;border-radius:50%!important;background:var(--sg-soft)!important;background-clip:padding-box!important;
 box-shadow:inset 0 0 0 1px var(--sg-line)!important;color:var(--sg-text)!important;font-size:18px!important;line-height:1!important;cursor:pointer;transform:none!important}
html[data-theme][lang] :is(#app,body) :is(.fn-bell,.form-settings-button,.bd-search-toggle,.cal-search-toggle,.bv-search-toggle,.fin-icon-action,.fn-close,.modal-close,dialog.help-sheet .help-sheet-close,dialog.proof-help-dialog .proof-help-close)>svg{width:19px!important;height:19px!important;flex:none}
html[data-theme][lang] :is(#app,body) .fin-icon-action:disabled{opacity:.45;cursor:not-allowed}
html[data-theme][lang] :is(#app,body) :is(.fn-bell,.form-settings-button,.bd-search-toggle,.cal-search-toggle,.bv-search-toggle,.fin-icon-action,.fn-close,.modal-close,dialog.help-sheet .help-sheet-close,dialog.proof-help-dialog .proof-help-close):focus-visible{outline:2px solid var(--sg-accent)!important;outline-offset:1px!important}
/* Back buttons (« Précédent », « Ma marque », « Toutes les campagnes »…): a chevron and the label in the same 40px outline as every secondary action. */
html[data-theme][lang]:root :is(#app,body) :is(.bv-back>button,.fin-back,.bp-return,[data-back-detail],.sf-previous,.dc-back,.ae-back,.bt-back){
 display:inline-flex!important;align-items:center!important;justify-content:flex-start!important;gap:4px!important;width:auto!important;min-width:44px!important;min-height:44px!important;height:auto!important;
 margin:0!important;padding:0 14px 0 10px!important;border:2px solid transparent!important;border-width:2px 0!important;border-radius:11px!important;background:transparent!important;background-clip:padding-box!important;box-shadow:inset 0 0 0 1px var(--elan-pill-line)!important;
 color:var(--sg-text)!important;font:600 calc(.875rem * var(--elan-ui-scale,1))/1.25 var(--elan-ui-font,system-ui)!important;letter-spacing:0!important;text-transform:none!important;text-decoration:none!important;cursor:pointer}
html[data-theme][lang]:root :is(#app,body) :is(.bv-back>button,.fin-back,.bp-return,[data-back-detail],.sf-previous,.dc-back,.ae-back,.bt-back)::before{content:"";flex:none;width:18px;height:18px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 5-7 7 7 7'/%3E%3C/svg%3E") center/18px 18px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 5-7 7 7 7'/%3E%3C/svg%3E") center/18px 18px no-repeat}
html[data-theme][lang]:root :is(#app,body) :is(.bv-back>button,.fin-back,.bp-return,[data-back-detail],.sf-previous,.dc-back,.ae-back,.bt-back)>svg{display:none!important}
html[data-theme][lang]:root :is(#app,body) :is(.bv-back>button,.fin-back,.bp-return,[data-back-detail],.sf-previous,.dc-back,.ae-back,.bt-back):focus-visible{outline:2px solid var(--sg-accent)!important;outline-offset:2px!important}
html[data-theme] #app .bv-back{margin:12px 0 6px}
html[data-theme] #app .bw-content>.bv-back{margin:20px 16px 14px}
/* Actions drawn over a photo (event cards, brand covers): same size and shape as every action, on a dark glass. */
/* Partnership file: the section tabs stick right under the « Précédent » bar, with no strip where the page shows through. */
html[data-theme][lang] #app .sf-file-dialog>.form-dialog-body{padding-top:0!important}
html[data-theme][lang] #app .sf-file-dialog>.form-dialog-body>:first-child{margin-top:16px}
/* « Ma marque »: the public page under the header, as athletes read it (its logo and name are already in the header). */
html[data-theme] #app .bv-public .bp-masthead,html[data-theme] #app .bv-public .bp-identity{display:none!important}
html[data-theme] #app .bv-public .bp-brand{margin:0;padding:0;border:0;background:transparent;box-shadow:none}
html[data-theme] #app .bv-public .bp-content{padding:0}
html[data-theme] #app .bv-identity-text .bv-tagline{margin-top:6px;color:var(--sg-text);font-style:italic}
html[data-theme] #app .bv-identity-logo,html[data-theme] #app .bv-logo{background:transparent!important}
/* Dark theme: a dark logo on a transparent background would vanish; it sits on a light plate, as athletes see it. */
html[data-theme="dark"] #app .bv-identity-logo:has(img),html[data-theme="dark"] #app .bv-logo:has(img){background:#F4F2F8!important}
/* Logos have one entry point on the profile, with a compact lavender management action. */
html[data-theme][lang] #app .bv-logos-head>.bv-logos-manage{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:7px!important;flex:none;box-sizing:border-box;width:auto!important;max-width:100%;min-width:44px!important;min-height:44px!important;height:auto!important;margin:0!important;padding:9px 14px!important;border:1px solid var(--sg-accent)!important;border-radius:11px!important;background:var(--sg-accent)!important;color:var(--sg-bg)!important;font:600 calc(.875rem * var(--elan-ui-scale,1))/1.3 var(--elan-ui-font,system-ui)!important;letter-spacing:0!important;text-transform:none!important;cursor:pointer;transition:background-color .15s,border-color .15s}
html[data-theme][lang] #app .bv-logos-manage>svg{display:block;flex:none;width:16px;height:16px;color:inherit}
html[data-theme][lang] #app .bv-logos-manage>span{min-width:0;margin:0;color:inherit!important;font:inherit!important;overflow-wrap:anywhere}
@media(hover:hover){html[data-theme][lang] #app .bv-logos-head>.bv-logos-manage:hover{background:color-mix(in srgb,var(--sg-accent) 88%,var(--sg-text))!important;border-color:color-mix(in srgb,var(--sg-accent) 88%,var(--sg-text))!important}}
html[data-theme][lang] #app .bv-logos-head>.bv-logos-manage:active{background:color-mix(in srgb,var(--sg-accent) 88%,var(--sg-text))!important;border-color:color-mix(in srgb,var(--sg-accent) 88%,var(--sg-text))!important}
html[data-theme] #app .bv-edit-title h1{margin:0 0 4px}
html[data-theme] #app .bv-edit-title p{margin:0 0 14px;color:var(--sg-muted);font-size:14px;line-height:1.45}
html[data-theme] #app .bv-public{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important;color:var(--sg-text)}
html[data-theme] #app .bv-public .bp-content>.bp-section:first-of-type,html[data-theme] #app .bv-public .bp-content>.bp-quick-links:first-child{margin-top:0;padding-top:0;border-top:0}
/* Compact placement cards keep the name, price and physical dimensions readable without square-height padding. */
html[data-theme][lang] #app .athlete-brand-card .abc-zones{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0 0;padding:0;list-style:none}
@media(min-width:600px){html[data-theme][lang] #app .athlete-brand-card .abc-zones{grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}}
html[data-theme][lang] #app .athlete-brand-card .abc-zones li{display:flex!important;flex-direction:column!important;flex-wrap:nowrap!important;align-items:flex-start!important;justify-content:center;gap:2px;min-width:0;min-height:84px;box-sizing:border-box;margin:0;padding:8px 9px;border:1px solid var(--sg-line)!important;border-radius:12px;background:var(--sg-soft)}
html[data-theme][lang] #app .athlete-brand-card .abc-zones :is(li,.abc-zone-pick)>span{font:600 min(calc(.8125rem * var(--elan-ui-scale,1)),3.6vw)/1.25 var(--elan-ui-font,system-ui);color:var(--sg-text);overflow-wrap:anywhere;word-break:normal}
html[data-theme][lang] #app .athlete-brand-card .abc-zones :is(li,.abc-zone-pick)>strong{max-width:none;margin:2px 0 0!important;align-self:flex-start!important;text-align:left!important;font:700 min(calc(.9375rem * var(--elan-ui-scale,1)),4.4vw)/1.2 var(--elan-ui-font,system-ui);color:var(--sg-text)}
html[data-theme][lang] #app .athlete-brand-card .abc-zones :is(li,.abc-zone-pick)>small{margin:0;font-size:min(calc(.75rem * var(--elan-ui-scale,1)),3.4vw)!important;white-space:nowrap;color:var(--sg-muted)!important}
html[data-theme][lang] #app .athlete-brand-card .abc-zones li.is-unavailable{opacity:.55}
html[data-theme][lang] #app .athlete-brand-card.abc-compact .abc-zones li:nth-child(n+4){display:none!important}
/* A back button at the top of a page keeps clear space before the photo or title that follows. */
html[data-theme][lang]:root :is(#app,body) :is(button[data-back-detail],button.fin-back,button.ae-back){margin:0 0 14px!important}
/* Partnership file: the tip is folded behind a small « ! Conseil » that opens it. */
html[data-theme] #app .sf-tip-fold{margin:12px 0}
html[data-theme] #app .sf-tip-fold>summary{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 4px 0 0;list-style:none;cursor:pointer;color:var(--sg-text);font:600 calc(.875rem * var(--elan-ui-scale,1))/1.3 var(--elan-ui-font,system-ui)}
html[data-theme] #app .sf-tip-fold>summary::-webkit-details-marker{display:none}
html[data-theme] #app .sf-tip-mark{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;border:1.5px solid currentColor;font:700 12px/1 var(--elan-ui-font,system-ui);color:var(--sg-accent)}
html[data-theme] #app .sf-tip-fold>summary:focus-visible{outline:2px solid var(--sg-accent);outline-offset:2px;border-radius:8px}
html[data-theme] #app .sf-tip-fold>.sf-tip{margin:2px 0 0;padding:10px 12px;border-radius:12px;background:var(--sg-soft);color:var(--sg-text);font-size:calc(.875rem * var(--elan-ui-scale,1));line-height:1.5}
html[data-theme] #app .sf-tip-fold>summary::before,html[data-theme] #app .sf-tip-fold>summary::after{content:none!important;display:none!important}
html[data-theme][lang] #app .bv-hub-actions>button[data-elan-control]{padding-inline:8px!important;font-size:min(calc(.875rem * var(--elan-ui-scale,1)),4vw)!important;white-space:nowrap!important}
/* Athlete page seen by a brand: each available card opens placement on that spot. */
html[data-theme][lang] #app .athlete-brand-card .abc-zones-title{margin:18px 0 0;font:700 calc(.9375rem * var(--elan-ui-scale,1))/1.3 var(--elan-ui-font,system-ui);color:var(--sg-text)}
html[data-theme][lang] #app .athlete-brand-card .abc-zones-pick li:not(.is-unavailable){display:block!important;padding:0!important;border-color:var(--sg-control)!important}
html[data-theme][lang] #app .athlete-brand-card .abc-zone-pick{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;box-sizing:border-box;width:100%;height:100%;min-height:84px;margin:0;padding:8px 9px;border:0;border-radius:12px;background:transparent;color:inherit;text-align:left;font:inherit;cursor:pointer}
@media(hover:hover){html[data-theme][lang] #app .athlete-brand-card .abc-zones-pick li:not(.is-unavailable):hover{border-color:var(--sg-accent)!important}}
html[data-theme][lang] #app .athlete-brand-card .abc-zone-pick:focus-visible{outline:2px solid var(--sg-accent);outline-offset:2px}
html[data-theme][lang] #app .athlete-brand-card .abc-zone-pick:disabled{cursor:progress;opacity:.6}
/* A back button that opens a page keeps clear space under the top bar. */
html[data-theme][lang]:root :is(#app,body) main>button[data-back-detail]{margin:10px 0 14px!important}
html[data-theme][lang]:root :is(#app,body) main>button.ae-back{margin:12px 0 14px!important}
/* Logo choice in the placement editor: the logo on the app background, its name on two lines at most. */
html[data-theme] #app .bt-logos>button>span{background:transparent!important}
html[data-theme] #app .bt-logos small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* After a tap or a click, focus moved by the app draws no ring (Safari treats it as keyboard focus). Keyboard users keep every ring. */
html[data-input="pointer"][data-input]:root:root:root:root :is(#app,body) :is(button,a,summary,label,[role="button"],[role="tab"],[tabindex],input[type="radio"],input[type="checkbox"],input[type="range"]):focus-visible,
html[data-input="pointer"][data-input]:root:root:root:root :is(#app,body) label:has(input:is([type="radio"],[type="checkbox"],[type="range"]):focus-visible){outline:none!important}
/* Request steps: « Précédent », the step count, a plain title, the athlete, then a two-part bar (as in the guides). No tabs to decode. */
html[data-theme][lang] #app main.bt-editor>.bt-heading{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:0!important;margin:0 0 18px!important;padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important;position:static!important}
html[data-theme][lang]:root :is(#app,body) main.bt-editor>.bt-heading>.bt-back{margin:0 0 14px!important}
html[data-theme][lang] #app .bt-heading>.bt-step-count{margin:0;font:600 calc(.75rem * var(--elan-ui-scale,1))/1.4 var(--elan-ui-font,system-ui);letter-spacing:.06em;text-transform:uppercase;color:var(--sg-muted)}
html[data-theme][lang] #app .bt-heading>.bt-step-title{margin:2px 0 0;font:700 calc(1.375rem * var(--elan-ui-scale,1))/1.2 var(--elan-ui-font,system-ui)!important;letter-spacing:-.01em;color:var(--sg-text);overflow-wrap:break-word}
html[data-theme][lang] #app .bt-heading>.bt-step-title:focus{outline:none!important}
html[data-theme][lang] #app .bt-heading>.bt-step-athlete{margin:2px 0 0;font:500 calc(.875rem * var(--elan-ui-scale,1))/1.4 var(--elan-ui-font,system-ui);color:var(--sg-muted)}
html[data-theme][lang] #app .bt-heading>.bt-progress{display:flex;gap:6px;width:100%;margin:12px 0 0}
html[data-theme][lang] #app .bt-progress>span{flex:1;height:4px;border-radius:4px;background:var(--sg-line)}
html[data-theme][lang] #app .bt-progress>span.is-reached{background:var(--sg-accent)}
/* Two neutral tones keep dark and light transparent logos visible without changing their artwork. */
html[data-theme][lang] #app :is(.selection-badge,.bt-logos>button>span){background:linear-gradient(135deg,#F4F3F6 50%,#4B4654 50%)!important;border:1px solid var(--sg-line);box-sizing:border-box}
html[data-theme][lang] #app [data-selection-count]{color:var(--sg-muted)!important}
html[data-theme][lang] #app .selection-more>summary{display:flex;align-items:center;gap:9px;min-height:44px;list-style:none;cursor:pointer;color:var(--sg-text)!important;font-size:calc(.875rem * var(--elan-ui-scale,1))}
html[data-theme][lang] #app .selection-more>summary::-webkit-details-marker{display:none}
html[data-theme][lang] #app .selection-more>summary::before{content:'＋';font-size:17px;color:var(--sg-muted)}
/* Photo arrows (placement editor, athlete photos): the same disc as every round button (soft fill, hairline), not a separate outline. */
html[data-theme][lang] :is(#app,body) :is(.bt-pager,.athlete-photo-pager,.ae-photo-pager)>button{border:2px solid transparent!important;border-radius:50%!important;background:var(--sg-soft)!important;background-clip:padding-box!important;box-shadow:inset 0 0 0 1px var(--sg-line)!important;color:var(--sg-text)!important}
html[data-theme][lang] :is(#app,body) :is(.bt-pager,.athlete-photo-pager,.ae-photo-pager)>button:disabled{opacity:.4!important}
/* Public social profiles have a visible network name and a generous touch target. */
html[data-theme][lang] #app .athlete-brand-card .abc-socials>:is(a,button){display:flex!important;align-items:center!important;justify-content:center!important;gap:10px;border:1px solid var(--sg-accent)!important;background:var(--sg-accent-soft)!important;color:var(--sg-text)!important;width:100%!important;height:auto!important;min-width:0!important;min-height:56px!important;padding:12px!important;border-radius:12px!important}
html[data-theme][lang] #app .athlete-brand-card .abc-socials>span{color:var(--sg-muted)!important}
/* Profile identity: photo, readable details, then a separate edit action that fills the mobile card. */
html[data-theme][lang] #app .ep-identity>.ep-identity-action{min-height:48px!important;padding:11px 16px!important;font-weight:600!important;justify-content:center!important}
@media(max-width:600px){html[data-theme] #app .ep-identity{grid-template-columns:96px minmax(0,1fr);grid-template-areas:"avatar copy" "action action";gap:16px}html[data-theme] #app .ep-identity .ep-avatar{width:96px;height:112px}html[data-theme] #app .ep-identity-copy h2{font-size:calc(1.5rem * var(--elan-ui-scale,1))}html[data-theme] #app .ep-identity-copy p{font-size:calc(.875rem * var(--elan-ui-scale,1))}html[data-theme][lang] #app .ep-identity>.ep-identity-action{width:100%!important;justify-self:stretch}}
@media(max-width:350px){html[data-theme] #app .ep-identity{grid-template-columns:80px minmax(0,1fr);column-gap:12px}html[data-theme] #app .ep-identity .ep-avatar{width:80px;height:96px}html[data-theme] #app .ep-identity-copy h2{font-size:calc(1.375rem * var(--elan-ui-scale,1))}}
/* Light mode: the legacy tokens re-set to dark values on .v29-app (product.css) follow the theme, so no dark hairline or panel shows on a light page. */
html[data-theme="light"] .v29-app{--text:var(--sg-text);--muted:var(--sg-muted);--panel:var(--sg-surface);--soft:var(--sg-soft);--line:var(--sg-line)}
/* Light mode: the photo editor's disclosures and the patch-making panel use the theme hairline, not their dark-mode greys. */
html[data-theme="light"] #app .athlete-touch-editor details{border-top-color:var(--sg-line)}
html[data-theme="light"] .ff-panel{--ff-ink:var(--sg-text);--ff-muted:var(--sg-muted);--ff-line:var(--sg-line);--ff-bg:var(--sg-surface);--ff-accent:var(--sg-accent)}
html[data-theme="light"] .ff-panel .ff-disclaimer{color:var(--sg-muted)}
html[data-theme][lang] #app .ae-photo-zones>span{border-color:var(--sg-line)!important}
/* Hints in the request (supply choice, demo notice) used a fixed pale grey: they take the theme's muted ink (readable in light mode). */
html[data-theme][lang] #app :is(.p36-offer-help,.partnership-supply small,.partnership-supply>small){color:var(--sg-muted)!important}

/* SOMAGON — approved agreement layout. Statuses stay vertical on the left;
   the existing cards, empty states and financial summary keep their handlers. */
html[data-theme][lang] #app .ac-deals .ac-workspace{display:grid;grid-template-columns:min(34%,156px) minmax(0,1fr);gap:24px;align-items:start;min-width:0;margin:0}
html[data-theme][lang] #app .ac-deals .ac-status-nav{min-width:0;background:transparent}
html[data-theme][lang] #app .ac-deals .ac-status-label{margin:0 0 10px;padding:0 12px;font:500 calc(.6875rem * var(--elan-ui-scale,1))/1.4 var(--elan-ui-font,system-ui);letter-spacing:.07em;text-transform:uppercase;color:var(--sg-muted)}
html[data-theme][lang] #app .ac-deals .ac-status-nav .ac-filters{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:4px!important;min-width:0;margin:0!important;padding:0!important;overflow:visible!important;border:0!important;border-radius:0!important;background:transparent!important}
html[data-theme][lang] #app .ac-deals .ac-status-nav .ac-filters>button{
 display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;flex:none!important;
 width:100%!important;inline-size:100%!important;min-width:0!important;min-inline-size:0!important;min-height:44px!important;
 margin:0!important;padding:10px 12px!important;border:0!important;border-radius:10px!important;background:transparent!important;
 font:500 calc(.8125rem * var(--elan-ui-scale,1))/1.35 var(--elan-ui-font,system-ui)!important;
 color:var(--sg-muted)!important;text-align:left!important;white-space:normal!important;overflow-wrap:anywhere!important;
}
html[data-theme][lang] #app .ac-deals .ac-status-nav .ac-filters>button::before{inset:2px 0!important;border:0!important;border-radius:10px!important;background:transparent!important}
html[data-theme][lang] #app .ac-deals .ac-status-nav .ac-filters>button[aria-pressed="true"]{color:var(--sg-sel-ink)!important;font-weight:600!important}
html[data-theme][lang] #app .ac-deals .ac-status-nav .ac-filters>button[aria-pressed="true"]::before{background:var(--sg-sel-bg)!important}
html[data-theme][lang] #app .ac-deals .ac-status-nav .ac-filters>button[aria-pressed="true"]::after{content:"";position:absolute;left:0;top:13px;bottom:13px;width:3px;border-radius:3px;background:var(--sg-accent);pointer-events:none}
html[data-theme][lang] #app .ac-deals .ac-status-nav .ac-filters>button>.ac-chip-label{flex:1 1 auto!important;min-width:0;white-space:normal!important;overflow-wrap:anywhere!important;line-height:1.35!important}
html[data-theme][lang] #app .ac-deals .ac-status-nav .ac-filters>button>b{display:block!important;flex:0 0 auto!important;min-width:0!important;width:auto!important;height:auto!important;margin:0!important;padding:0!important;border-radius:0!important;background:transparent!important;color:inherit!important;font:500 calc(.75rem * var(--elan-ui-scale,1))/1.35 var(--elan-ui-font,system-ui)!important;font-variant-numeric:tabular-nums}
@media(hover:hover){html[data-theme][lang] #app .ac-deals .ac-status-nav .ac-filters>button:not([aria-pressed="true"]):hover::before{background:var(--sg-soft)!important}}
html[data-theme][lang] #app .ac-deals .ac-results{min-width:0}
html[data-theme][lang] #app .ac-deals .ac-results-head{display:flex;justify-content:flex-end;align-items:baseline;gap:12px;min-width:0;margin:0 0 12px}
html[data-theme][lang] #app .ac-deals .ac-results-count{min-width:0;color:var(--sg-muted);font:400 calc(.75rem * var(--elan-ui-scale,1))/1.4 var(--elan-ui-font,system-ui);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;text-align:right}
html[data-theme][lang] #app .ac-deals .ac-results>.v27-clean-deal-list{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-width:0;margin:0;padding:0}
html[data-theme][lang] #app .ac-deals .ac-results .dc-card{grid-template-columns:86px minmax(0,1fr) 16px;gap:18px;padding:20px;border-radius:16px}
html[data-theme][lang] #app .ac-deals .ac-results .dc-thumb{width:86px;max-height:116px;background:var(--sg-soft)}
html[data-theme][lang] #app .ac-deals .ac-results .dc-body{display:grid;gap:4px;min-width:0}
html[data-theme][lang] #app .ac-deals .ac-results .dc-top{flex-wrap:wrap;gap:8px}
html[data-theme][lang] #app .ac-deals .ac-results .dc-amount{max-width:100%;font-size:calc(1.3125rem * var(--elan-ui-scale,1));font-weight:600;white-space:normal;overflow-wrap:anywhere}
html[data-theme][lang] #app .ac-deals .ac-results .dc-details{min-width:0}
html[data-theme][lang] #app .ac-deals .ac-results .dc-name{margin:8px 0 0;font-size:calc(1.0625rem * var(--elan-ui-scale,1));font-weight:600;line-height:1.3}
html[data-theme][lang] #app .ac-deals .ac-results .dc-partner{margin:5px 0 0;font-size:calc(.8125rem * var(--elan-ui-scale,1));font-weight:500}
html[data-theme][lang] #app .ac-deals .ac-results .dc-meta{margin:6px 0 0;font-size:calc(.75rem * var(--elan-ui-scale,1))}
html[data-theme][lang] #app .ac-deals .ac-results .dc-follow-up{min-width:0;margin-top:12px;padding-top:12px;border-top:1px solid var(--sg-line)}
html[data-theme][lang] #app .ac-deals .ac-results .dc-progress{margin-top:0}
html[data-theme][lang] #app .ac-deals .ac-results .dc-next{display:block;margin:8px 0 0;overflow:visible;-webkit-line-clamp:unset;font-size:calc(.75rem * var(--elan-ui-scale,1));color:var(--sg-muted);overflow-wrap:anywhere}
html[data-theme][lang] #app .ac-deals .ac-results .dc-demo{margin-top:8px;font-size:calc(.6875rem * var(--elan-ui-scale,1));overflow-wrap:anywhere}
html[data-theme][lang] #app .ac-deals .ac-results .ac-empty{display:grid;justify-items:center;gap:12px;min-width:0;min-height:242px!important;margin:0;padding:22px 18px!important}
html[data-theme][lang] #app .ac-deals .ac-results .ac-empty-icon{width:40px;height:40px;background:transparent}
html[data-theme][lang] #app .ac-deals .ac-results .ac-empty-icon svg{width:24px;height:24px}
html[data-theme][lang] #app .ac-deals .ac-results .ac-empty-icon i{display:none}
html[data-theme][lang] #app .ac-deals .ac-results .ac-empty h2{max-width:100%;margin:0;font-size:calc(1.0625rem * var(--elan-ui-scale,1))!important;line-height:1.3!important;overflow-wrap:anywhere}
html[data-theme][lang] #app .ac-deals .ac-results .ac-empty p{max-width:100%;margin:0;font-size:calc(.8125rem * var(--elan-ui-scale,1))!important;line-height:1.45!important;overflow-wrap:anywhere}
html[data-theme][lang] #app .ac-deals .ac-results .ac-empty-action{max-width:100%;min-width:0!important;overflow-wrap:anywhere!important}
@media(max-width:700px){
 html[data-theme][lang] #app .ac-deals .ac-workspace{gap:16px}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-card{grid-template-columns:60px minmax(0,1fr) 14px;gap:14px;padding:16px}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-thumb{width:60px;max-height:84px}
}
@media(max-width:520px){
 html[data-theme][lang] #app .ac-deals .ac-workspace{grid-template-columns:min(34%,104px) minmax(0,1fr);gap:12px}
 html[data-theme][lang] #app .ac-deals .ac-status-label{padding-inline:10px}
 html[data-theme][lang] #app .ac-deals .ac-status-nav .ac-filters>button{gap:6px!important;padding-inline:10px!important;font-size:calc(.75rem * var(--elan-ui-scale,1))!important}
 html[data-theme][lang] #app .ac-deals .ac-results-head{gap:6px}
 html[data-theme][lang] #app .ac-deals .ac-results-count{font-size:calc(.6875rem * var(--elan-ui-scale,1))!important}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-card{grid-template-columns:40px minmax(0,1fr);gap:12px 10px;padding:12px}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-thumb{grid-column:1;grid-row:1;width:40px;max-height:56px;border-radius:8px}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-body{display:contents}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-top{grid-column:2;flex-direction:column;align-items:flex-end;gap:4px;min-width:0}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-top .v27-status-pill{max-width:100%;white-space:normal;overflow-wrap:anywhere;text-overflow:clip}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-amount{font-size:calc(1.125rem * var(--elan-ui-scale,1));text-align:right}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-details,html[data-theme][lang] #app .ac-deals .ac-results .dc-activity,html[data-theme][lang] #app .ac-deals .ac-results .dc-follow-up,html[data-theme][lang] #app .ac-deals .ac-results .dc-demo{grid-column:1/-1;min-width:0}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-name{margin-top:0;font-size:calc(.9375rem * var(--elan-ui-scale,1))}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-meta,html[data-theme][lang] #app .ac-deals .ac-results .dc-next{font-size:calc(.6875rem * var(--elan-ui-scale,1))}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-follow-up{margin-top:0}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-demo{margin-top:0}
 html[data-theme][lang] #app .ac-deals .ac-results .dc-chevron{display:none}
 html[data-theme][lang] #app .ac-deals .ac-results .ac-empty{padding:18px 12px!important}
 html[data-theme][lang] #app .ac-deals .ac-results .ac-empty-action{padding-inline:10px!important}
}

/* Event presentation pages, independent event cover uploads and compact participation controls. */
html[data-theme][lang] #app .cal-event-presentation{width:min(760px,100%);margin:0 auto;padding:24px 24px calc(var(--form-nav-height,64px) + 32px);box-sizing:border-box;color:var(--es-ink)}
html[data-theme][lang] #app .cal-event-presentation .ae-back{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin:0 0 12px;padding:8px 0!important;border:0;background:transparent;color:var(--es-muted);font-size:calc(.875rem * var(--elan-ui-scale,1))}
.cal-event-presentation .ae-back svg{width:17px;height:17px}
.cal-event-presentation .cal-detail-layout{border:1px solid var(--es-line);border-radius:20px;background:var(--es-panel);overflow:hidden}
.cal-event-presentation figure{position:relative;aspect-ratio:16/9;margin:0;background:var(--es-soft);overflow:hidden}
.cal-event-presentation figure img{display:block;width:100%;height:100%;object-fit:cover}
.cal-event-presentation figure figcaption{position:absolute;right:10px;bottom:10px;max-width:calc(100% - 20px);padding:4px 7px;border-radius:6px;background:var(--es-panel);color:var(--es-muted);font-size:11px}
.cal-event-placeholder{display:grid;place-items:center;min-height:112px;background:var(--es-soft);color:var(--es-muted)}
.cal-event-placeholder svg{width:32px;height:32px}
html[data-theme][lang] #app .cal-event-presentation .cal-detail-body{padding:22px}
html[data-theme][lang] #app .cal-event-presentation #cal-event-detail-title{margin:0 0 14px;font-size:calc(1.65rem * var(--elan-ui-scale,1));font-weight:650;line-height:1.2;letter-spacing:-.035em;overflow-wrap:anywhere}
.cal-event-presentation .cal-detail-badges span{font-size:11px}
.cal-participation{margin:18px 0 22px;padding:16px 0;border-block:1px solid var(--es-line)}
html[data-theme][lang] #app .cal-participation h2{margin:0 0 12px;font-size:calc(.875rem * var(--elan-ui-scale,1));font-weight:600;line-height:1.35;letter-spacing:0}
.cal-participation-controls{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px}
.cal-participation-state{display:inline-flex;align-items:center;gap:7px;color:var(--es-muted);font-size:calc(.8125rem * var(--elan-ui-scale,1))}
.cal-participation-state svg{width:16px;height:16px;color:var(--es-accent-ink)}
html[data-theme][lang] #app .cal-participation-button{width:auto;max-width:100%;min-height:38px!important;padding:8px 14px!important;border:1px solid var(--es-line)!important;border-radius:10px!important;background:var(--es-panel)!important;color:var(--es-ink)!important;font-size:calc(.875rem * var(--elan-ui-scale,1))!important;line-height:1.3!important}
html[data-theme][lang] #app .cal-participation-button.is-primary{background:var(--es-ink)!important;color:var(--es-panel)!important;border-color:var(--es-ink)!important}
.cal-presentation-title{margin:22px 0 8px;font-size:calc(1rem * var(--elan-ui-scale,1));font-weight:600}
.cal-event-presentation .cal-detail-description{margin:0 0 16px;font-size:calc(.875rem * var(--elan-ui-scale,1))}
.cal-event-presentation .cal-detail-meta{align-items:flex-start;font-size:calc(.8125rem * var(--elan-ui-scale,1))}
.cal-event-presentation .cal-detail-meta svg{flex:none;margin-top:1px}
.cal-profile-options{margin:12px 0 18px;font-size:14px;color:var(--es-muted)}
.cal-profile-options>summary{min-height:44px;padding:10px 0}
:is(.cal-profile-options,.patch-pricing-settings>details)>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;list-style:none;cursor:pointer;color:var(--sg-text);font-weight:600}
:is(.cal-profile-options,.patch-pricing-settings>details)>summary::-webkit-details-marker{display:none}
:is(.cal-profile-options,.patch-pricing-settings>details)>summary::after{content:"";flex:none;width:8px;height:8px;margin-right:4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .15s}
:is(.cal-profile-options,.patch-pricing-settings>details)[open]>summary::after{transform:rotate(-135deg) translateY(-2px)}
.cal-community-events{margin-top:14px}
html[data-theme][lang] #app .cal-other-open{flex:1;min-width:0;text-align:left;border:0;background:transparent;color:var(--es-ink);padding:0!important;border-radius:6px}
.cal-other-open small{color:var(--es-accent-ink)}
.cal-cover-field{display:grid;gap:10px;min-width:0;margin:0 0 20px;padding:0;border:0}
.cal-cover-field legend{margin:0 0 10px;font-size:14px;font-weight:600}
.cal-cover-field small{font-size:12px;line-height:1.45;color:var(--es-muted)}
.cal-cover-preview{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:12px;background:var(--es-soft)}
.cal-cover-upload{position:relative;display:flex!important;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;border:1px solid var(--es-line);border-radius:10px;background:var(--es-panel);color:var(--es-ink);font-size:14px}
.cal-cover-upload input{position:absolute;inset:0;width:100%;height:100%;opacity:0}
.cal-cover-upload:focus-within{outline:2px solid var(--es-focus);outline-offset:3px}
.cal-cover-upload:has(input:disabled){opacity:.6}
.ea-profile-visibility{margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid var(--es-line)}
@media(pointer:coarse){html[data-theme][lang] #app .cal-participation-button{min-height:44px!important}}
@media(max-width:600px){
 html[data-theme][lang] #app .cal-event-presentation{padding:18px 16px calc(var(--form-nav-height,64px) + 24px)}
 html[data-theme][lang] #app .cal-event-presentation .cal-detail-body{padding:18px 16px}
 .cal-premium-head{flex-wrap:wrap}
 .cal-premium-other{align-items:flex-start;flex-wrap:wrap}
 .cal-premium-other-actions{justify-content:flex-start}
}
/* Events under validation: a small framed label, seen only by their author, in the event's place in the list. */
html[data-theme][lang] :is(#app,body) .cal-review-badge{display:inline-flex;align-items:center;gap:6px;width:max-content;max-width:100%;min-height:26px;margin:0;padding:3px 9px;border:1px solid var(--sg-accent);border-radius:7px;background:var(--sg-surface);color:var(--sg-accent);font:600 calc(.75rem * var(--elan-ui-scale,1))/1.3 var(--elan-ui-font,system-ui);letter-spacing:0;text-transform:none;white-space:normal}
html[data-theme][lang] :is(#app,body) .cal-review-badge::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:currentColor}
html[data-theme][lang] :is(#app,body) .cal-review-badge[data-review="rejected"]{border-color:var(--sg-danger);color:var(--sg-danger)}
html[data-theme][lang] #app .cal-premium-review{position:absolute;z-index:3;left:12px;top:52px;pointer-events:none}
html[data-theme][lang] #app .cal-premium-other .cal-review-badge{margin:6px 0 2px}
html[data-theme][lang] #app .cal-premium-other[data-review]{border-style:dashed;border-color:var(--sg-accent)}
html[data-theme][lang] #app .cal-premium-other[data-review="rejected"]{border-color:var(--sg-danger)}
html[data-theme][lang] #app .cal-review-notice{display:grid;gap:8px;margin:14px 0;padding:14px 16px;border:1px dashed var(--sg-accent);border-radius:12px;background:var(--sg-soft);color:var(--sg-text);font-size:calc(.875rem * var(--elan-ui-scale,1));line-height:1.5}
html[data-theme][lang] #app .cal-review-notice[data-review="rejected"]{border-color:var(--sg-danger)}
html[data-theme][lang] #app .cal-review-notice p{margin:0}
html[data-theme][lang] #app .cal-review-notice>button{justify-self:start}
/* « Mon événement » list: each joined event, and under it « Changer de profil » with the athlete's other profiles. */
html[data-theme] .ep-event-row{display:grid;gap:6px;min-width:0}
html[data-theme] .ep-profile-toggle{justify-self:end;display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:2px solid transparent;border-radius:11px;background:var(--sg-soft);background-clip:padding-box;box-shadow:inset 0 0 0 1px var(--sg-line);color:var(--sg-text);font:600 calc(.8125rem * var(--elan-ui-scale,1))/1.2 var(--elan-ui-font,system-ui);cursor:pointer;white-space:nowrap}
html[data-theme] .ep-profile-toggle[aria-expanded="true"]{background:var(--sg-surface);box-shadow:inset 0 0 0 1px var(--sg-accent)}
html[data-theme] .ep-profile-options{display:grid;gap:8px;min-width:0;padding:12px;border:1px solid var(--sg-line);border-radius:14px;background:var(--sg-soft)}
html[data-theme] .ep-profile-options[hidden]{display:none}
html[data-theme] .ep-profile-current,html[data-theme] .ep-profile-help{margin:0;font:400 calc(.8125rem * var(--elan-ui-scale,1))/1.45 var(--elan-ui-font,system-ui);color:var(--sg-muted)}
html[data-theme] .ep-profile-option{display:grid;gap:2px;width:100%;min-width:0;min-height:44px;padding:10px 12px;border:1px solid var(--sg-line);border-radius:12px;background:var(--sg-surface);color:var(--sg-text);text-align:left;cursor:pointer}
html[data-theme] .ep-profile-option strong{font:600 calc(.875rem * var(--elan-ui-scale,1))/1.35 var(--elan-ui-font,system-ui);overflow-wrap:anywhere}
html[data-theme] .ep-profile-option small{font:400 calc(.75rem * var(--elan-ui-scale,1))/1.4 var(--elan-ui-font,system-ui);color:var(--sg-muted)}
@media(hover:hover){html[data-theme] .ep-profile-option:hover{border-color:var(--sg-accent)}}
html[data-theme] :is(.ep-profile-toggle,.ep-profile-option):focus-visible{outline:2px solid var(--sg-accent);outline-offset:2px}
/* Event creation: a compact lavender action, not the heading's muted subtitle.
   Keep a 44px touch target; wrap the header when larger text needs more room. */
html[data-theme][lang] #app .cal-premium-head{display:flex!important;flex-wrap:wrap!important;align-items:center;justify-content:space-between;gap:12px}
html[data-theme][lang] #app .cal-premium-head>div{flex:1 1 180px;min-width:0}
html[data-theme][lang] #app .cal-premium-head>.cal-add-event{
 display:inline-flex!important;align-items:center;justify-content:center;gap:7px;flex:0 0 auto;box-sizing:border-box;
 width:auto!important;min-width:44px;min-height:44px!important;max-width:100%;margin:0;padding:10px 14px!important;
 border:1px solid var(--sg-accent)!important;border-radius:999px!important;background:var(--sg-accent)!important;color:var(--sg-bg)!important;
 font:600 calc(.875rem * var(--elan-ui-scale,1))/1.25 var(--sg-font)!important;letter-spacing:0;text-transform:none;text-decoration:none;white-space:nowrap;box-shadow:none;cursor:pointer;touch-action:manipulation;
}
html[data-theme][lang] #app .cal-add-event>svg{display:block;flex:none;width:18px;height:18px;margin:0;stroke-width:2}
html[data-theme][lang] #app .cal-add-event>span{margin:0!important;color:inherit!important;font:inherit!important;max-width:none;white-space:inherit}
html[data-theme][lang] #app .cal-add-event .cal-add-short{display:none}
@media(max-width:560px){html[data-theme][lang] #app .cal-add-event .cal-add-long{display:none}html[data-theme][lang] #app .cal-add-event .cal-add-short{display:inline}}
/* « Vérification en cours » under the event in « Mon événement », its list and « Ma participation ». */
html[data-theme][lang] :is(#app,body) .ep-event-copy>.cal-review-badge{justify-self:start;width:auto;max-width:100%;box-sizing:border-box;margin-top:6px;overflow-wrap:anywhere}
html[data-theme][lang] #app .cal-participation-state>.cal-review-badge{margin-left:6px;vertical-align:middle}
@media(max-width:360px){
 html[data-theme][lang] #app .cal-premium-head>.cal-add-event{width:44px!important;height:44px;padding:0!important;margin-left:auto}
 html[data-theme][lang] #app .cal-add-event>.cal-add-short{display:none}
}
html[data-theme][lang] #app .cal-premium-head>.cal-add-event:active{background:color-mix(in srgb,var(--sg-accent) 88%,var(--sg-text))!important}
@media(hover:hover) and (pointer:fine){html[data-theme][lang] #app .cal-premium-head>.cal-add-event:hover{background:color-mix(in srgb,var(--sg-accent) 88%,var(--sg-text))!important}}
html[data-theme][lang] :is(#app,body) .cal-review-badge[data-review="removed"]{border-color:var(--sg-danger);color:var(--sg-danger)}

/* Partenariats: the status menu stays in view while the list scrolls (under the sticky app header from 700px).
   Under 700px the body clips horizontally with « hidden », which makes it a scroll container that never
   scrolls and freezes every sticky element: on this page it clips with « clip » instead; the header keeps
   scrolling away as on the other pages, and the menu sticks to the top. */
html[data-theme][lang] #app .ac-deals .ac-status-nav{position:sticky;top:80px;z-index:1;align-self:start}
@media(max-width:699px){
 html[data-theme] body:has(.ac-deals){overflow-x:clip}
 html[data-theme][lang] body:has(.ac-deals) #app .v29-app-top{position:relative}
 html[data-theme][lang] #app .ac-deals .ac-status-nav{top:12px}
}

/* « Vérification en cours » is red everywhere; on an event card it is a solid red tag over the photo, beside the sport. */
html[data-theme][lang] :is(#app,body) .cal-review-badge[data-review="pending"]{border-color:var(--sg-danger);background:color-mix(in srgb,var(--sg-danger) 12%,var(--sg-surface));color:var(--sg-danger)}
html[data-theme][lang] #app .cal-premium-card-tags>.cal-review-badge{min-height:30px;padding:5px 10px;border:1px solid var(--sg-alert-solid);border-radius:999px;background:var(--sg-alert-solid);color:var(--sg-on-alert);font:600 calc(.6875rem * var(--elan-ui-scale,1))/1.2 var(--sg-font);letter-spacing:0;text-transform:none}
/* An event without its own photo keeps the same card, on a quiet SOMAGON backdrop. */
html[data-theme][lang] #app .cal-premium-cover-fallback{position:absolute;inset:0;background:radial-gradient(120% 90% at 85% 0%,color-mix(in srgb,var(--sg-accent) 55%,transparent),transparent 60%),linear-gradient(160deg,var(--sg-cover-top),var(--sg-cover-bottom))}
/* Event dialog: a period (start and end) and actions that stay visible at the bottom while the form scrolls. */
html[data-theme][lang] :is(#app,body) .cal-dialog .cal-dialog-actions{position:sticky;bottom:-22px;z-index:2;display:grid;gap:10px;margin:4px -22px -22px;padding:14px 22px calc(18px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--sg-line);background:var(--sg-surface)}
@media(min-width:701px){html[data-theme][lang] :is(#app,body) .cal-dialog .cal-dialog-actions{bottom:-30px;margin:4px -30px -30px;padding:16px 30px 24px}}
html[data-theme][lang] :is(#app,body) .cal-dialog .cal-form-period{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,132px),1fr));gap:12px}
/* « Ajouter / Changer la photo » is a real button, like « Enlever la photo » under it (soft family). */
html[data-theme][lang] :is(#app,body) .cal-dialog .cal-cover-upload{min-height:44px;padding:10px 14px!important;border:2px solid transparent!important;border-radius:11px!important;background:var(--sg-soft)!important;color:var(--sg-text)!important;font:600 calc(.875rem * var(--elan-ui-scale,1))/1.25 var(--sg-font)!important;cursor:pointer}
/* « Ajouter » (Événements): a smaller pill, 36px painted, inside the same 44px touch target. */
html[data-theme][lang] #app .cal-premium-head>.cal-add-event{border:4px solid transparent!important;background-clip:padding-box!important;padding:4px 12px!important;gap:6px;font-size:calc(.8125rem * var(--elan-ui-scale,1))!important}
html[data-theme][lang] #app .cal-premium-head>.cal-add-event>svg{width:16px;height:16px}
@media(max-width:360px){html[data-theme][lang] #app .cal-premium-head>.cal-add-event{padding:0!important}}
/* Proof help: a round × to close, and « J’ai compris » as the one filled action (like the other help sheets). */
html[data-theme][lang] body dialog.proof-help-dialog>footer .proof-help-ok{width:100%}
/* Deal detail: the six step names under the bars, done ones ticked, the current one in the accent colour. */
html[data-theme][lang] #app .dc-step-names{display:flex;flex-wrap:wrap;gap:4px 12px;margin:8px 0 0;padding:0;list-style:none;font:500 calc(.75rem * var(--elan-ui-scale,1))/1.4 var(--sg-font);color:var(--sg-muted)}
html[data-theme][lang] #app .dc-step-names>li{margin:0;padding:0}
html[data-theme][lang] #app .dc-step-names>li.is-done{color:var(--sg-text)}
html[data-theme][lang] #app .dc-step-names>li.is-current{color:var(--sg-accent);font-weight:700}
/* Ma marque: the athletes supported (concluded partnerships), by name, instead of a logo count. */
html[data-theme][lang] #app .bv-supported{display:grid;gap:10px;min-width:0}
html[data-theme][lang] #app .bv-supported>h2{margin:0;color:var(--sg-text)}
html[data-theme][lang] #app .bv-supported-list{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
html[data-theme][lang] #app .bv-supported-list>li{display:inline-flex;align-items:center;gap:8px;min-width:0;max-width:100%;min-height:40px;margin:0;padding:4px 12px 4px 4px;border:1px solid var(--sg-line);border-radius:999px;background:var(--sg-surface);color:var(--sg-text);font:600 calc(.8125rem * var(--elan-ui-scale,1))/1.3 var(--sg-font)}
html[data-theme][lang] #app .bv-supported-avatar{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:50%;background:var(--sg-sel-bg,var(--sg-soft));color:var(--sg-sel-ink,var(--sg-accent));font:700 calc(.6875rem * var(--elan-ui-scale,1))/1 var(--sg-font)}
html[data-theme][lang] #app .bv-supported-name{min-width:0;overflow-wrap:anywhere}
html[data-theme][lang] #app .bv-supported-empty{margin:0;color:var(--sg-muted);font-size:calc(.875rem * var(--elan-ui-scale,1));line-height:1.4}
/* Finances > Campagnes: the same 14px between the campaign list and « Hors campagne » as between the other cards. */
html[data-theme][lang] #app .fin-campaigns{margin-bottom:14px}
html[data-theme][lang] #app .dc-step-names>li>span{margin-right:3px}
/* Partenariats with very large text (200 %): the « Statut » eyebrow no longer fits its column, so it is hidden
   there (the menu keeps its accessible name); the status rows themselves wrap. */
html[data-theme][lang] #app .ac-deals .ac-status-nav{container-type:inline-size}
@container (max-width:5rem){html[data-theme][lang] #app .ac-deals .ac-status-label{display:none}}
/* Emplacements › prix conseillés: « Ajuster le calcul des prix » was light grey on the light panel (1.2:1). */
html[data-theme][lang] #app .patch-pricing-settings summary{color:var(--sg-text)}

/* Prix conseillés: the fold is the whole box (no leftover gap or rule above « Ajuster le calcul des prix »). */
html[data-theme][lang] #app .patch-pricing-settings{padding-block:0}
html[data-theme][lang] #app .patch-pricing-settings>details{margin:0!important;padding:0!important;border:0!important;background:transparent!important}
/* Campaign toolbar: the scope chips never shrink under « Créer une campagne »; the button wraps below when space runs out. */
html[data-theme][lang] #app .fin-toolbar:has(>.fin-create-campaign){flex-wrap:wrap!important;row-gap:10px}
html[data-theme][lang] #app .fin-toolbar:has(>.fin-create-campaign)>.fin-chips{flex:0 1 auto;max-width:100%;min-width:0}
html[data-theme][lang] #app .fin-toolbar>.fin-create-campaign{margin-left:auto}
/* Public brand page: the athletes it supported, same chips as on the brand's own profile. */
html[data-theme][lang] :is(#app,body) .bp-supported-list{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
html[data-theme][lang] :is(#app,body) .bp-supported-list>li{display:inline-flex;align-items:center;gap:8px;min-width:0;max-width:100%;min-height:40px;margin:0;padding:4px 12px 4px 4px;border:1px solid var(--sg-line);border-radius:999px;color:var(--sg-text);font-weight:600;overflow-wrap:anywhere}
html[data-theme][lang] :is(#app,body) .bp-supported-avatar{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:50%;background:var(--sg-sel-bg,var(--sg-soft));color:var(--sg-sel-ink,var(--sg-accent));font:700 calc(.6875rem * var(--elan-ui-scale,1))/1 var(--elan-ui-font,system-ui)}
/* Logo card: one action per row at every width (as on mobile); labels never break mid-button. */
html[data-theme][lang] #app .bw-asset-actions{grid-template-columns:minmax(0,1fr)!important}
/* Campaign detail header: one card — status, name, period and objective on the left, the three actions grouped on the right
   (a row of three equal buttons on phones). Breathing room between every line. */
html[data-theme][lang] #app .fin-detail-notice{margin:0 0 14px}
html[data-theme][lang] #app .fin-card.fin-detail-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:20px 24px;justify-items:stretch;margin:0 0 14px;padding:22px 24px}
html[data-theme][lang] #app .fin-detail-id{display:grid;justify-items:start;gap:0;min-width:0}
html[data-theme][lang] #app .fin-detail-id>.fin-pill{margin:0 0 14px}
html[data-theme][lang] #app .fin-detail-id>h2{margin:0;font:650 calc(1.625rem * var(--elan-ui-scale,1))/1.15 var(--elan-ui-font,system-ui);letter-spacing:-.02em;color:var(--sg-text);overflow-wrap:anywhere}
html[data-theme][lang] #app .fin-detail-meta{display:inline-flex;align-items:center;gap:8px;margin:10px 0 0;color:var(--sg-muted);font-size:calc(.9375rem * var(--elan-ui-scale,1));line-height:1.4}
html[data-theme][lang] #app .fin-detail-meta>svg{flex:none;width:18px;height:18px}
html[data-theme][lang] #app .fin-detail-objective{display:grid;gap:2px;margin:14px 0 0;padding-top:14px;border-top:1px solid var(--sg-line);justify-self:stretch;color:var(--sg-text);font-size:calc(.9375rem * var(--elan-ui-scale,1));line-height:1.5;overflow-wrap:anywhere}
html[data-theme][lang] #app .fin-detail-objective>small{color:var(--sg-muted);font-size:calc(.8125rem * var(--elan-ui-scale,1));font-weight:500}
html[data-theme][lang] #app .fin-actions.fin-detail-actions{display:flex;flex-wrap:nowrap;gap:8px;margin:0;align-self:start}
html[data-theme][lang] #app .fin-detail-actions>button[data-elan-control]{min-width:96px;min-height:44px;justify-content:center}
@media(max-width:699px){
 html[data-theme][lang] #app .fin-card.fin-detail-head{grid-template-columns:minmax(0,1fr);padding:18px 16px}
 html[data-theme][lang] #app .fin-actions.fin-detail-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;padding-top:16px;border-top:1px solid var(--sg-line)}
 html[data-theme][lang] #app .fin-detail-actions>button[data-elan-control]{min-width:0;padding-inline:8px!important}
}
/* Text at 200 %: the three actions stack instead of squeezing. */
html[data-app-text="large"][data-theme][lang] #app .fin-actions.fin-detail-actions{flex-wrap:wrap}
/* Four finance tabs on a 320 px phone: slightly smaller label and padding so no word touches its neighbour. */
@media(max-width:380px){html[data-theme][lang] #app .fin-tabs>button{padding:4px 2px!important;font-size:min(calc(.875rem * var(--elan-ui-scale,1)),3.75vw)!important}}
/* Phones: « Créer une campagne » is the page's main action, full width above the filters. */
@media(max-width:699px){html[data-theme][lang] #app .fin-toolbar:has(>.fin-create-campaign)>.fin-create-campaign{order:-1;flex:1 1 100%;width:100%;margin-left:0}}
/* Settings: a navigation row (athlete « Mes finances ») drawn exactly like the folding rows around it. */
html[data-theme] .v29-app .ea-settings .ea-link-row{display:grid;grid-template-areas:"icon label value chevron";grid-template-columns:22px minmax(0,1fr) max-content 12px;align-items:center;gap:4px 12px;width:100%;min-width:0;min-height:64px;margin:0;padding:16px!important;border:0;border-radius:0;background:transparent!important;box-shadow:none!important;color:var(--es-ink)!important;font:500 calc(1rem * var(--elan-ui-scale))/1.45 var(--elan-ui-font)!important;text-align:left;cursor:pointer;transition:background-color var(--elan-motion-fast) ease}
html[data-theme] .v29-app .ea-settings .ea-link-row:not(:last-child){border-bottom:1px solid var(--sg-line,var(--es-line))!important}
html[data-theme] .v29-app .ea-settings .ea-link-row>svg{grid-area:icon;width:22px;height:22px;color:var(--es-muted)}
html[data-theme] .v29-app .ea-settings .ea-link-row>.ea-row-label{grid-area:label;min-width:0}
html[data-theme] .v29-app .ea-settings .ea-link-row>.ea-row-value{grid-area:value;justify-self:end;color:var(--es-muted);font:400 calc(.875rem * var(--elan-ui-scale))/1.45 var(--elan-ui-font)}
html[data-theme] .v29-app .ea-settings .ea-link-row>.ea-chevron{grid-area:chevron;justify-self:center;width:7px;height:7px;border-right:1.5px solid var(--es-muted);border-bottom:1.5px solid var(--es-muted);transform:rotate(-45deg)}
html[data-theme] .v29-app .ea-settings .ea-link-row:focus-visible{outline:2px solid var(--es-focus);outline-offset:-4px}
@media(hover:hover){html[data-theme] .v29-app .ea-settings .ea-link-row:hover{background:var(--es-soft)!important}}
@media(max-width:420px){html[data-theme] .v29-app .ea-settings .ea-link-row{grid-template-areas:"icon label chevron" "icon value chevron";grid-template-columns:22px minmax(0,1fr) 12px}html[data-theme] .v29-app .ea-settings .ea-link-row>.ea-row-value{justify-self:start}}
html[data-app-text="large"] .v29-app .ea-settings .ea-link-row{grid-template-areas:"icon label chevron" "icon value chevron"!important;grid-template-columns:22px minmax(0,1fr) 12px!important}

/* A single page-end gap for both roles. Legacy page, brand-content and shell
   paddings used to accumulate, leaving several hundred empty pixels to scroll.
   Let the shell grow with its editors: the old composer’s 100dvh height made
   children overflow after this gap, leaving their last controls behind the menu.
   Keep normal document scrolling (including editors, save rows and the keyboard).
   The measured menu height already includes its safe area; the CSS fallback does too. */
html:has(#app .v29-app nav.en-tabbar),body:has(#app .v29-app nav.en-tabbar){min-height:100dvh;overflow-x:clip}
html[data-theme][lang] #app .v29-app:has(nav.en-tabbar){box-sizing:border-box;height:auto;min-height:100dvh;padding-bottom:calc(var(--sg-nav-clearance,calc(var(--form-nav-height,56px) + env(safe-area-inset-bottom,0px))) + 24px)}
html[data-theme][lang] #app .v29-app:has(nav.en-tabbar)>.v29-content{display:flow-root;padding-bottom:0}
html[data-theme][lang] #app .v29-app:has(nav.en-tabbar)>.v29-content>main{min-height:0;padding-bottom:0!important}
html[data-theme][lang] #app .v29-app:has(nav.en-tabbar)>.v29-content>main>:last-child{margin-bottom:0}
html[data-theme] #app .ps2-feedback:empty{display:none}
html[data-theme] #app .ps2-editor>.ps2-panel:has(+ .ps2-feedback:empty){margin-bottom:0}

/* Login: « Remettre les démos à zéro » under the two demo entries, separated by a rule, with one line of explanation. */
html[data-theme] #app .fw-demo-reset{display:grid;justify-items:center;gap:8px;margin:14px 0 0;padding-top:14px;border-top:1px solid var(--sg-line);text-align:center}
html[data-theme] #app .fw-demo-reset-button[data-elan-control]{min-height:44px;padding:0 16px!important;font-size:14px!important}
html[data-theme] #app .fw-demo-reset>small{max-width:34ch;color:var(--sg-muted);font-size:12.5px;line-height:1.45}
html[data-theme] #app .fw-entry .fw-demo-reset{width:min(100%,22rem);margin-inline:auto}
html[data-theme] #app .fw-demo-reset-done{display:flex;align-items:center;justify-content:center;gap:8px;margin:0;padding:10px 14px;border-radius:12px;background:var(--sg-sel-bg,var(--sg-soft));color:var(--sg-text);font-size:13.5px;font-weight:600;line-height:1.4}
html[data-theme] #app .fw-demo-reset-done>span{color:var(--sg-accent);font-weight:700}

/* ===== Range sliders: one look everywhere (crop studio, logo size, photo zoom) =====
   The coloured part of the track stops exactly under the centre of the thumb:
   ui-controls.js keeps --range-ratio (0 to 1) in step with the value, and the fill ends at
   half a thumb + the ratio of the remaining width. Same geometry in Safari, Chrome and Firefox. */
html[data-theme] :is(#app,body) input[type="range"]{--range-thumb:26px;--range-track:6px;--range-fill:var(--es-accent);--range-rest:var(--es-line);--range-at:calc(var(--range-thumb) / 2 + (100% - var(--range-thumb)) * var(--range-ratio,0));-webkit-appearance:none;appearance:none;box-sizing:border-box;display:block;width:100%;min-width:0;height:44px;min-height:44px;margin:0;padding:0;border:0!important;border-radius:0;background:transparent!important;box-shadow:none!important;accent-color:var(--range-fill);cursor:pointer;touch-action:pan-y}
html[data-theme="light"] :is(#app,body) input[type="range"]{--range-fill:var(--es-accent-ink)}
html[data-theme] :is(#app,body) input[type="range"]::-webkit-slider-runnable-track{height:var(--range-track);border:0;border-radius:999px;background:linear-gradient(to right,var(--range-fill) 0 var(--range-at),var(--range-rest) var(--range-at) 100%)}
html[data-theme] :is(#app,body) input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;box-sizing:border-box;width:var(--range-thumb);height:var(--range-thumb);margin-top:calc((var(--range-track) - var(--range-thumb)) / 2);border:3px solid var(--range-fill);border-radius:50%;background:white;box-shadow:0 1px 4px rgba(0,0,0,.35)}
html[data-theme] :is(#app,body) input[type="range"]::-moz-range-track{height:var(--range-track);border:0;border-radius:999px;background:linear-gradient(to right,var(--range-fill) 0 var(--range-at),var(--range-rest) var(--range-at) 100%)}
html[data-theme] :is(#app,body) input[type="range"]::-moz-range-thumb{box-sizing:border-box;width:var(--range-thumb);height:var(--range-thumb);border:3px solid var(--range-fill);border-radius:50%;background:white;box-shadow:0 1px 4px rgba(0,0,0,.35)}
html[data-theme] :is(#app,body) input[type="range"]:disabled{cursor:not-allowed;opacity:.45}
html[data-theme] :is(#app,body) input[type="range"]:focus-visible{outline:2px solid var(--range-fill);outline-offset:2px;border-radius:999px}

/* ===== Crop studio: photo, help, format, sliders, effect on placements, actions ===== */
html[data-theme] #app .v30-crop-modal .v30-crop-stage{height:min(46vh,440px);margin:0}
html[data-theme] #app .v30-crop-modal header h2{margin:6px 0 18px}
html[data-theme] #app .v30-crop-modal header>button{color:var(--es-ink)!important;border-radius:50%}
html[data-theme] #app .v30-crop-modal :is(.v30-crop-help,.v30-crop-note){margin:12px 0 0;font-size:14px;line-height:1.5;color:var(--es-muted)}
html[data-theme] #app .v30-crop-modal .v30-crop-note{margin-top:10px;font-size:13px}
html[data-theme] #app .v30-crop-modal .v30-crop-controls{display:grid;grid-template-columns:1fr;gap:6px;margin-top:18px}
html[data-theme] #app .v30-crop-modal .v30-crop-controls label{display:flex;flex-direction:column;gap:2px;margin:0;color:var(--es-ink);font-size:15px;font-weight:600}
html[data-theme] #app .v30-crop-modal .v30-crop-controls label>span{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
html[data-theme] #app .v30-crop-modal .v30-crop-controls output{white-space:nowrap;font-weight:500;font-size:14px;color:var(--es-muted);font-variant-numeric:tabular-nums}
html[data-theme] #app .v30-crop-modal .v30-crop-format{gap:8px!important;margin-bottom:8px!important}
html[data-theme] #app .v30-crop-modal .p32-crop-impact{margin:14px 0 0}
html[data-theme] #app .v30-crop-modal footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:20px}
html[data-theme] #app .v30-crop-modal .v30-crop-actions{display:flex;flex-wrap:wrap;gap:10px;margin-left:auto}
html[data-theme] #app .v30-crop-modal footer button{min-height:44px}
@media (min-width:700px){html[data-theme] #app .v30-crop-modal .v30-crop-format{max-width:320px}}
@media (max-width:520px){html[data-theme] #app .v30-crop-modal{padding:20px!important}html[data-theme] #app .v30-crop-modal .v30-crop-stage{height:min(38vh,360px)}html[data-theme] #app .v30-crop-modal footer>.v30-crop-reset{order:2;flex:1 1 100%}html[data-theme] #app .v30-crop-modal .v30-crop-actions{flex:1 1 100%;margin:0}html[data-theme] #app .v30-crop-modal .v30-crop-actions>button{flex:1 1 0}}

/* ===== Counter-offer editor: one level of framing =====
   The form sits flat inside « À faire maintenant »: each part is a section separated by a line (no box in a box
   in a box), the choices are plain rows, a placement takes the full width with its two dimensions below,
   and the quick-add deliverables share two columns. */
html[data-theme][lang] #app .counter-complete>form{margin:4px 0 0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
html[data-theme][lang] #app .counter-complete .counter-content{gap:0!important}
html[data-theme][lang] #app .counter-complete .counter-content>p:first-child{margin:0 0 14px!important;color:var(--sg-muted)}
html[data-theme][lang] #app .counter-complete .counter-content>label{margin:0 0 16px!important}
html[data-theme][lang] #app .counter-complete .counter-section{gap:12px!important;margin:0!important;padding:16px 0!important;border:0!important;border-top:1px solid var(--sg-line)!important;border-radius:0!important;background:transparent!important}
html[data-theme][lang] #app .counter-complete .counter-section label{margin:0!important}
html[data-theme][lang] #app .counter-complete .partnership-supply{margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important}
html[data-theme][lang] #app .counter-complete .partnership-supply>legend{margin:0 0 8px!important;padding:0!important;font-weight:600}
html[data-theme][lang] #app .counter-complete .counter-placements .partnership-row{grid-template-columns:minmax(0,1fr)!important;gap:12px!important}
html[data-theme][lang] #app .counter-complete .counter-placements .partnership-row>legend{padding:0 4px!important}
/* Prestation buttons: grid columns come from partnership.css (2, then 4 from 900px); they fill their cell. */
html[data-theme][lang] #app .counter-complete .partnership-quick>button{width:100%!important;margin:0!important}
html[data-theme][lang] #app .counter-complete .counter-consent{margin:4px 0 12px!important}
html[data-theme][lang] #app .counter-complete .partnership-vendors{margin:4px 0 0!important;padding-inline:0!important;text-align:left}
/* Counter-offer: prestations and placements are listed under their section, not boxed again.
   The « À faire maintenant » card stays the only frame; each prestation is separated by a rule. */
html[data-theme][lang] #app .counter-complete .partnership-row{margin:0!important;padding:16px 0 4px!important;border:0!important;border-top:1px solid var(--sg-line)!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
html[data-theme][lang] #app .counter-complete .counter-placements .partnership-row{padding-top:0!important;border-top:0!important}
html[data-theme][lang] #app .counter-complete .counter-placements .partnership-row+.partnership-row{padding-top:16px!important;border-top:1px solid var(--sg-line)!important}
html[data-theme][lang] #app .counter-complete .counter-placements .partnership-row>legend{float:left;width:100%;margin:0 0 4px!important;padding:0!important;font-weight:600}
/* « Plus d’informations »: the fold title already frames its content, so its first card is flattened. */
html[data-theme][lang] #app :is(details.dc-fold,details.bv-fold) :is(.partnership-summary,.ff-panel){margin:0!important;padding:4px 0 8px!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
html[data-theme][lang] #app details.bv-fold .dm-panel p.dm-blocked{padding:0!important;border:0!important;background:transparent!important;color:var(--sg-muted)!important}
html[data-theme][lang] #app details.bv-fold .dm-panel{margin-inline:0!important}
