/* ═════════ Shivy v11 — couche « luxe sombre » : #0B0B0E, verre dépoli, filets champagne, halos ═════════ */
:root,:root[data-theme=dark],:root[data-theme=light]{
  --bg:#0B0B0E; --s1:rgba(255,255,255,.05); --s2:rgba(255,255,255,.08); --s3:rgba(255,255,255,.12);
  --line:rgba(232,213,183,.12); --line2:rgba(232,213,183,.18);
  --tx:#F6F2EC; --mut:#B3AAA2; --faint:#7E766F; --rose:#E8D5B7; --gold:#E8D5B7; --champ:#E8D5B7; --on-brand:#17120a;
  --glass:rgba(255,255,255,.05); --glass-bd:rgba(232,213,183,.18);
  --halo:radial-gradient(60% 50% at 50% 40%,rgba(232,213,183,.16),rgba(232,213,183,0) 70%);
  color-scheme:dark;
}
html,body,#app{background:#0B0B0E!important;color:var(--tx)}
:root[data-theme=light] .tabbar,:root[data-theme=light] .topbar{background:transparent}

/* barres de défilement : jamais visibles */
*{scrollbar-width:none!important}
*::-webkit-scrollbar{display:none!important;width:0;height:0}

/* safe-area Android / iOS */
#app{padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0)}
.topbar{padding-top:max(8px,env(safe-area-inset-top,0px))}
.tabbar{padding-bottom:max(8px,env(safe-area-inset-bottom,0px))}
.sheet{padding-bottom:calc(22px + env(safe-area-inset-bottom,0px))!important}

/* verre dépoli : feuilles, modales, barre d’onglets, puces */
.sheet,.modal{background:rgba(20,19,24,.78)!important;-webkit-backdrop-filter:blur(20px) saturate(1.4);backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-bd)!important;border-bottom:0!important;box-shadow:0 -24px 70px -24px rgba(0,0,0,.9),inset 0 1px 0 rgba(232,213,183,.14)!important}
.modal{border-bottom:1px solid var(--glass-bd)!important}
.veil{background:rgba(5,5,8,.62);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.tabbar,#app.shell .tabbar{background:rgba(18,17,22,.72)!important;-webkit-backdrop-filter:blur(20px) saturate(1.4);backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-bd)!important}
.tab.on{background:rgba(232,213,183,.10)!important;color:var(--champ)!important}
.tab.on svg{fill:rgba(232,213,183,.18)!important}
.card,.plancard,.stat,.menu,.algo5,.qbar,.zero{background:var(--glass);border:1px solid var(--glass-bd);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}
.plancard{position:relative;overflow:hidden}
.plancard::before,.me-ring::before{content:"";position:absolute;inset:-40% -20% auto -20%;height:100%;background:var(--halo);pointer-events:none}
.chip{background:var(--glass)!important;color:var(--mut)!important;box-shadow:inset 0 0 0 1px var(--glass-bd)!important}
.chip.on{background:rgba(232,213,183,.14)!important;color:var(--champ)!important;box-shadow:inset 0 0 0 1px rgba(232,213,183,.55)!important}
.input,textarea.input,select.input{background:rgba(255,255,255,.05)!important;color:var(--tx)!important;box-shadow:inset 0 0 0 1px var(--glass-bd)!important;border-radius:16px}
.input:focus{box-shadow:inset 0 0 0 1px rgba(232,213,183,.6),0 0 0 4px rgba(232,213,183,.08)!important;outline:0}

/* boutons : champagne plat, texte foncé ; secondaires en verre */
.btn:not(.ghost):not(.danger){background:#E8D5B7!important;color:#17120a!important;font-weight:700;letter-spacing:-.01em}
.btn.gold{background:linear-gradient(180deg,#F0E0C4,#E8D5B7)!important;color:#17120a!important}
.btn.ghost,.iconbtn{background:var(--glass)!important;color:var(--tx)!important;box-shadow:inset 0 0 0 1px var(--glass-bd)!important;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}
.btn.danger{background:rgba(255,107,129,.08)!important;color:#ff8a9b!important;box-shadow:inset 0 0 0 1px rgba(255,107,129,.35)!important}

/* centrage pixel-perfect des icônes dans leurs cercles et pilules */
.iconbtn,.rbtn,.abtn,.actions button,.tab,.vbadge,.sticker,.chip,.dchip{display:inline-flex;align-items:center;justify-content:center}
.iconbtn svg,.actions button svg,.tab svg,.vbadge svg{display:block;flex:none;margin:0}
svg{stroke-width:1.5}
.tab{flex-direction:column;gap:2px}

/* halo champagne derrière les éléments clés : carte, avatar, J’aime */
.stage::before{content:"";position:absolute;inset:-10% -10% 20% -10%;background:var(--halo);pointer-events:none;z-index:0}
.stage .pcard{border:1px solid var(--glass-bd)}
.actions button:last-child,.actions .like{box-shadow:0 0 0 1px rgba(232,213,183,.4),0 14px 44px -8px rgba(232,213,183,.38)}
.me-head img,.ring,.avatar{box-shadow:0 0 60px -10px rgba(232,213,183,.35)}

/* titres forts, sous-titres fins, blocs qui respirent */
.h2{font-weight:800;letter-spacing:-.03em}
.hint{color:var(--mut);font-weight:400;line-height:1.5}
.sheet .field{margin:18px 0}
.sheet .field>label{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:600}
.menu button{padding-top:16px;padding-bottom:16px}

/* feuille : poignée visible */
.sheet .grab{background:rgba(232,213,183,.3);width:40px;height:4px;border-radius:4px}

/* pastille « Enregistré » (auto-save) */
.savedot{position:absolute;top:12px;right:16px;z-index:4;display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 11px;border-radius:13px;background:rgba(232,213,183,.12);color:var(--champ);font:600 12px/1 var(--ui);letter-spacing:.02em;box-shadow:inset 0 0 0 1px rgba(232,213,183,.3);opacity:0;transform:translateY(-4px);transition:opacity .25s,transform .25s;pointer-events:none}
.savedot::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--champ)}
.savedot.on{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.savedot,.sheet{transition:none!important;animation:none!important}}

/* ── v11.1 : écrans épurés (le profil d'abord, zéro gamification) ── */
.qbar{flex:none!important;display:flex!important;align-items:center;gap:10px;padding:8px 12px!important;margin:0 14px 6px!important;border-radius:18px!important;overflow:hidden}
.qbar .qq{flex:none;max-width:48%;font-size:13px!important;line-height:1.25;display:block;white-space:normal}
.qbar .qq .qs{display:inline;margin-left:6px;padding:0}
.qbar .qo{flex-wrap:nowrap!important;overflow-x:auto;gap:6px!important}
.qbar .qo .chip{flex:none;height:32px;font-size:12.5px}
.qbar .hint{display:none}
.topbar .goal{display:none!important}   /* compteur d'objectif du jour : retiré */
.dil5{display:none!important}           /* Dilemme du jour : retiré, les matchs passent d'abord */
.glass:has(> i.live){display:none!important} /* pastille « Actif·ve » retirée */
.vbadge{box-shadow:0 0 0 1px rgba(232,213,183,.5),0 0 18px rgba(232,213,183,.35)}

/* ── Boutique compacte : moins de défilement ── */
.unit5{padding:12px 8px 10px!important;gap:2px!important;border-radius:20px!important}
.unit5 .ub{font-size:24px!important}
.unit5 .up{margin-top:4px!important;padding:6px 14px!important;font-size:14px!important}
.ugrp{margin:14px 0 6px!important;font-size:11px!important;letter-spacing:.1em}
.faq5{border-radius:18px!important}.faq5 summary{padding:13px 16px!important;font-size:14.5px!important}

/* ── Audit v11.2 : texte jamais sous 11 px, zones de toucher élargies ── */
.tab span,.tab .badge,.sticker.main1,.turn,.tier5 i,.cd,.unit5 i{font-size:11px!important}
.qbar .qs{padding:14px 8px!important;margin:-14px -6px}
.dheart::before{content:"";position:absolute;inset:-7px}
.faq5 summary,.menu button{min-height:48px}

/* Likes : bouton collant sans cadre, pastille « Coup de cœur » décollée du bord */
.sticky-cta{background:linear-gradient(to top,#0B0B0E 60%,rgba(11,11,14,0))!important;border:0!important;box-shadow:none!important;border-radius:0!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
.lkc .sticker{left:10px!important;top:10px!important}

/* ═════ Carte « moment » : billet épuré (calendrier à gauche, infos à droite) ═════ */
.mt{flex-shrink:0;align-self:center;width:calc(100% - 28px);max-width:360px;margin:12px 0;padding:16px;border-radius:24px;display:grid;gap:14px;
  background:linear-gradient(160deg,rgba(232,213,183,.10),rgba(255,255,255,.04) 60%);border:1px solid rgba(232,213,183,.28);
  -webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 18px 50px -24px rgba(232,213,183,.35)}
.mt::before,.mt::after{display:none!important}
.mt-top{display:flex;align-items:center;gap:14px}
.mt-cal{flex:none;width:58px;height:64px;border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;
  background:#E8D5B7;color:#17120a;box-shadow:0 10px 24px -10px rgba(232,213,183,.55)}
.mt-cal span{font:700 11px/1 var(--ui);letter-spacing:.12em;text-transform:uppercase;opacity:.75}
.mt-cal b{font:800 28px/1.05 var(--ui);letter-spacing:-.03em}
.mt-info{display:grid;gap:3px;min-width:0}
.mt-k{font:600 11px/1.2 var(--ui);letter-spacing:.12em;text-transform:uppercase;color:#E8D5B7}
.mt-w{font:800 19px/1.2 var(--ui);letter-spacing:-.02em;color:var(--tx)}
.mt-n{display:flex;align-items:center;gap:6px;color:var(--mut);font-size:14px;line-height:1.3}
.mt-n svg{flex:none;width:15px;height:15px}
.mt-act{display:grid;grid-template-columns:1.25fr 1fr;gap:8px}
.mt-act .btn{height:46px;border-radius:14px;white-space:nowrap;font-size:14.5px}
.mt-wait{font:500 13px var(--ui);color:var(--mut);text-align:center;padding-top:12px;border-top:1px solid rgba(232,213,183,.16)}

/* Feuille « Proposer un moment » */
.plansheet .hint{margin:4px 0 16px}
.plansheet .seg2{display:grid!important;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:6px}
.plansheet .seg2 .chip{height:44px;justify-content:center;font-size:13.5px;border-radius:14px;padding:0 6px}
.plansheet input[type=datetime-local]{height:52px;font-size:16px}
.plansheet .field{margin:16px 0}
.plansheet .btn.block{height:54px;margin-top:6px}

/* APK Google Play : prix fixes de Google, pas de remise horaire ni de case de rétractation Stripe */
.native .flash5,.native .promo2,.native .offer,.native .waiverbox,.native .faq5{display:none!important}

.nobuy .planbar,.nobuy .plancard,.nobuy .promo2,.nobuy .flash5,.nobuy .sticky-cta,.nobuy .offer{display:none!important}

/* ── Offre des 100 premiers ── */
.founder{z-index:90;background:rgba(5,5,8,.78)!important}
.founder.bye{opacity:0;transition:opacity .3s}
.fnd{position:relative;width:min(88%,340px);padding:34px 22px 22px;border-radius:30px;text-align:center;background:rgba(20,19,24,.86);border:1px solid rgba(232,213,183,.35);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);box-shadow:0 30px 90px -20px rgba(232,213,183,.35);overflow:hidden;animation:fndin .6s cubic-bezier(.2,1.1,.3,1) both}
.fnd-halo{position:absolute;left:50%;top:-30px;width:300px;height:300px;margin-left:-150px;border-radius:50%;background:radial-gradient(closest-side,rgba(232,213,183,.38),rgba(232,213,183,0));animation:fndpulse 3.2s ease-in-out infinite;pointer-events:none}
.fnd-badge{position:relative;width:124px;height:124px;margin:0 auto 18px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#E8D5B7;color:#17120a;box-shadow:0 0 0 6px rgba(232,213,183,.16),0 0 0 14px rgba(232,213,183,.07),0 20px 50px -10px rgba(232,213,183,.6)}
.fnd-badge small{font:700 11px/1 var(--ui);letter-spacing:.14em;text-transform:uppercase;opacity:.7}
.fnd-n{font:800 46px/1.05 var(--ui);letter-spacing:-.04em}
.fnd h2{position:relative;margin:0 0 10px;font:800 24px/1.15 var(--ui);letter-spacing:-.03em;color:var(--tx)}
.fnd p{position:relative;margin:0 0 22px;color:var(--mut);font-size:15px;line-height:1.5}
.fnd .btn{position:relative}
@keyframes fndin{from{opacity:0;transform:translateY(24px) scale(.94)}to{opacity:1;transform:none}}
@keyframes fndpulse{50%{transform:scale(1.12);opacity:.8}}
@media (prefers-reduced-motion:reduce){.fnd,.fnd-halo{animation:none!important}}

/* Carte pub AdMob : emplacement réservé (300x250) */
.pcard.adc.nat .adbox{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}
.adslot{width:300px;height:250px;max-width:100%;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(232,213,183,.12)}

/* ═════════ En-tête de conversation : opaque, rien ne passe dessous, aucun élément ne se chevauche (mobile) ═════════ */
#app .chathead{position:relative;z-index:5;margin:calc(8px + var(--st,0px)) 10px 10px;padding:12px 12px 12px 8px;align-items:center;column-gap:12px;row-gap:10px;background:#16151b;-webkit-backdrop-filter:none;backdrop-filter:none;border:1px solid rgba(232,213,183,.16);border-radius:24px;box-shadow:0 14px 30px -18px rgba(0,0,0,.95),0 0 0 6px #0B0B0E}
#app .chathead .avw{margin-left:4px}
#app .chathead .avw::before{inset:-4px}
#app .chathead .avw .e2e{right:-6px;bottom:-6px;width:20px;height:20px}
#app .chathead .w b{font-size:18px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#app .chathead .w small{display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#app .chathead .iconbtn{flex:none}
#app .chathead .alch{margin-top:2px}
#app .chathead .alch .rib{height:34px}
.chatroot .msgs{padding-top:14px}

/* Page d'accueil : deux cartes photo */
.collage.two .cc{width:50%;background:#1a1820;box-shadow:0 26px 46px -22px rgba(0,0,0,.85),0 0 0 1px rgba(232,213,183,.16)}
.collage.two .cc img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.collage.two .cc.c1{left:3%;right:auto;transform:rotate(-6deg) translateY(-6px);bottom:8%;z-index:2}
.collage.two .cc.c2{right:3%;left:auto;transform:rotate(7deg) translateY(-18px);bottom:10%}
.collage.two .cc::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.55))}
.collage.two .cc .cn{z-index:2;background:rgba(22,21,27,.78);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:#F6F2EC;border:1px solid rgba(232,213,183,.18)}
.collage.two .cc .cn small{color:#B3AAA2}
.collage.two .cc>span{display:grid;place-items:end center;width:100%;height:100%}

/* Fiche / carte profil sur téléphone : la photo laisse voir le début des infos dessous (au lieu de tout prendre) */
@media(max-width:759px){
  #app .stage .pcard .vitrine{height:calc(100% - 118px);min-height:300px;border-radius:0 0 30px 30px}
  #app .stage .pcard .pbody{padding-top:16px}
  .veil.full .pvtop{justify-content:space-between;align-items:center}
}
.pvhint{color:var(--mut);font:600 12.5px var(--ui);padding-left:6px}

/* États vides (Découvrir, Explorer, Likes) : toujours au même endroit, quel que soit le menu */
#app .empty{min-height:0;flex:none;justify-content:flex-start;margin:clamp(40px,15vh,140px) auto 0}

/* Accueil sur ordinateur : la colonne de 640 px écrasait la mise en page en deux colonnes (cartes minuscules) */
@media(min-width:900px){#app:has(.hero.v9){max-width:1120px}.hero.v9 .collage.two{max-width:460px;height:440px}.collage.two .cc{width:48%}}

/* États vides avec icône (Découvrir, Explorer, Likes, Discussions) : même hauteur d'un menu à l'autre, ancrés à l'écran et non au contenu qui change */
#app .empty:has(>svg),#app .empty:has(>span>svg){position:absolute;left:0;right:0;top:30%;margin:0 auto;z-index:2;min-height:0;height:auto;width:100%}
@media(min-width:760px){#app.shell .empty:has(>svg),#app.shell .empty:has(>span>svg){left:var(--side);right:0;width:auto;max-width:440px;margin:0 auto}}

/* Infos discrètes sous le nom */
#app .vitrine .ovinfo{color:rgba(255,244,230,.82);font:600 13.5px var(--ui);letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#app .vitrine .ovq{margin:0;font:400 15px/1.4 var(--ui);color:rgba(255,244,230,.9);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* Photo éphémère : le doigt reste dessus sans que le navigateur prenne la main (défilement, menu, sélection) */
.snap5{touch-action:pan-y;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}

/* Visages : on garde le haut de la photo quand elle est recadrée (la tête ne doit jamais être coupée) */
.vitrine img,.pcard img,.lkc img,.av,.pepite img,.chathead img.av,.avw .av,.cc img,.pvph img,.mini img{object-position:50% 18%}

/* Recherche de morceau : suggestions sous le champ */
.tsug{display:grid;gap:6px;margin:-4px 0 12px}
.tsug[hidden]{display:none}
.tsi{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:11px 14px;border-radius:14px;background:rgba(255,255,255,.05);border:1px solid rgba(232,213,183,.14);text-align:left;color:var(--tx)}
.tsi b{font:700 14.5px var(--ui)}
.tsi small{font:500 12.5px var(--ui);color:var(--mut)}
.tsi:active{background:rgba(232,213,183,.14)}
.tsn{padding:10px 4px;color:var(--mut);font:500 13px var(--ui)}

/* Badge « profil vérifié » : bleu, partout */
.vbadge,#app .vitrine .pname .vbadge,#app .vbadge{background:#1D9BF0!important;border:0!important;color:#fff!important;box-shadow:0 0 0 1.5px rgba(255,255,255,.9),0 4px 14px -2px rgba(29,155,240,.55)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
.vbadge svg,#app .vbadge svg,#app .vitrine .pname .vbadge svg{stroke:#fff!important;fill:none!important}
.chipb.ok,.okchip{background:rgba(29,155,240,.16)!important;color:#7cc4ff!important;box-shadow:inset 0 0 0 1px rgba(29,155,240,.4)!important}
.chipb.ok svg,.okchip svg{stroke:#7cc4ff!important}

/* Mes critères : présentation propre */
.crit{display:grid;gap:22px;padding:6px 2px 8px}
.crow{display:grid;gap:12px}
.clab{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font:600 13px var(--ui);letter-spacing:.06em;text-transform:uppercase;color:var(--mut)}
.clab .crv{font:700 15px var(--ui);letter-spacing:0;text-transform:none;color:var(--champ,#E8D5B7)}
.crit .seg2{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.crit .chip{height:44px;border-radius:14px;justify-content:center;font-size:14.5px}
.crit .chip.on{position:relative}
.crit .dr{height:40px;margin:0 12px}
.crit .dr-t{top:17px;height:4px;border-radius:2px;background:rgba(255,255,255,.14)}
.crit .dr-f{background:linear-gradient(90deg,#d9be84,#f3e2b8)}
.crit .dr-h{top:8px;width:26px;height:26px;margin-left:-13px;background:#fff;box-shadow:0 3px 10px rgba(0,0,0,.5);box-shadow:0 3px 10px rgba(0,0,0,.5),0 0 0 4px rgba(232,213,183,.25)}
.crit .dr-h.on{transform:scale(1.12)}
.crit .dr-b{display:none}
.crit input.range{-webkit-appearance:none;appearance:none;width:100%;height:30px;background:transparent;margin:0;accent-color:auto}
.crit input.range::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(90deg,#d9be84,#f3e2b8)}
.crit input.range::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;margin-top:-11px;border-radius:50%;background:#fff;border:0;box-shadow:0 3px 10px rgba(0,0,0,.5),0 0 0 4px rgba(232,213,183,.25)}
.crit input.range::-moz-range-track{height:4px;border-radius:2px;background:rgba(255,255,255,.14)}
.crit input.range::-moz-range-progress{height:4px;border-radius:2px;background:linear-gradient(90deg,#d9be84,#f3e2b8)}
.crit input.range::-moz-range-thumb{width:26px;height:26px;border-radius:50%;background:#fff;border:0;box-shadow:0 3px 10px rgba(0,0,0,.5),0 0 0 4px rgba(232,213,183,.25)}

/* Mes envies du moment : capsules aérées, état choisi lisible */
.env5{padding:18px!important;gap:14px!important}
.env5 .eh b{font:700 17px var(--ui)}
.env5 .ecaps{display:flex;flex-wrap:wrap;gap:9px}
.env5 .qcap{height:42px;padding:0 17px;border-radius:999px;background:rgba(255,255,255,.04);border:1px solid rgba(232,213,183,.18);color:var(--mut);font:600 14px var(--ui);box-shadow:none;transition:background .2s,border-color .2s,color .2s}
.env5 .qcap.on{background:rgba(232,213,183,.16);border-color:rgba(232,213,183,.65);color:#F3E2C7}
.env5 .qcap.duo{flex-basis:100%;justify-content:flex-start;gap:10px;height:46px;border-radius:16px;margin-top:4px}
.env5 .qcap.duo .cico{display:inline-grid;place-items:center;width:22px;height:22px}
.env5 .qcap.duo .cico svg{width:20px;height:20px;stroke:currentColor}
.env5 .duoinv{width:100%}

/* Mes créneaux : un tableau jours x moments, une pastille par case */
.sgrid{display:grid;gap:8px;margin:10px 0 4px}
.sg-r{display:grid;grid-template-columns:44px repeat(3,1fr);gap:8px;align-items:center}
.sg-r b{font:700 13px var(--ui);letter-spacing:.04em;text-transform:uppercase;color:var(--mut)}
.sg-h span{font:600 11.5px var(--ui);letter-spacing:.05em;text-transform:uppercase;color:var(--faint);text-align:center}
.scell{height:42px;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(232,213,183,.14);display:grid;place-items:center;transition:background .18s,border-color .18s,transform .12s}
.scell:active{transform:scale(.94)}
.scell.on{background:linear-gradient(135deg,#e8d5b7,#d9be84);border-color:transparent}
.scell.on::after{content:"";width:12px;height:7px;border-left:2.5px solid #1a1408;border-bottom:2.5px solid #1a1408;transform:rotate(-45deg) translate(1px,-1px)}
.sg-n{display:block;margin-top:6px;text-align:center;color:var(--mut);font:600 13px var(--ui)}

/* Menu déroulant maison */
.selbtn{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;cursor:pointer}
.selbtn .sv{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selbtn .sv.ph{color:var(--faint)}
.selbtn .sc{flex:none;width:18px;height:18px;opacity:.6;transform:rotate(90deg)}
.selbtn .sc svg{width:18px;height:18px;stroke:currentColor}
.sellist{display:grid;gap:6px;max-height:56vh;overflow:auto;padding:2px 0 6px;scrollbar-width:none}
.sellist::-webkit-scrollbar{display:none}
.selopt{display:block;width:100%;text-align:left;padding:14px 16px;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(232,213,183,.12);color:var(--tx);font:600 15px var(--ui)}
.selopt.on{background:rgba(232,213,183,.14);border-color:rgba(232,213,183,.6);color:#F3E2C7}
.selopt:active{background:rgba(232,213,183,.2)}

/* Centres d'intérêt */
.ipick{display:grid;gap:12px}
.ip-sel{display:flex;flex-wrap:wrap;gap:8px}
.ip-sel:empty{display:none}
.ip-chip{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 8px 0 14px;border-radius:999px;background:rgba(232,213,183,.14);border:1px solid rgba(232,213,183,.5);color:#F3E2C7;font:600 14px var(--ui)}
.ip-chip .x{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.12);font-size:15px;line-height:1}
.ip-in{position:relative}
.ip-in .input{padding-right:64px}
.ip-n{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--mut);font:600 12.5px var(--ui);pointer-events:none}
.ip-t{font:600 12px var(--ui);letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin:2px 0 8px}
.ip-row{display:flex;flex-wrap:wrap;gap:8px}
.ip-s{height:36px;padding:0 14px;border-radius:999px;background:rgba(255,255,255,.04);border:1px solid rgba(232,213,183,.18);color:var(--mut);font:600 13.5px var(--ui)}
.ip-s.own{border-style:dashed;color:#F3E2C7}
.ip-s:active{background:rgba(232,213,183,.18)}

/* Photo éphémère : barre de progression du temps de vue, pause au doigt */
.snapview{touch-action:none;-webkit-user-select:none;user-select:none}
.snapview .sv-prog{position:absolute;left:16px;right:16px;top:calc(14px + env(safe-area-inset-top,0px));height:4px;border-radius:2px;background:rgba(255,255,255,.22);overflow:hidden;z-index:3}
.snapview .sv-fill{display:block;height:100%;width:100%;transform-origin:left center;background:linear-gradient(90deg,#d9be84,#f3e2b8);border-radius:2px}
.snapview .sv-x{position:absolute;right:14px;top:calc(26px + env(safe-area-inset-top,0px));width:40px;height:40px;border-radius:50%;background:rgba(20,19,24,.7);display:grid;place-items:center;color:#fff;z-index:3}
.snapview .sv-x svg{width:18px;height:18px;stroke:currentColor}
.snapview.paused img{transform:scale(1.01);transition:transform .2s}

/* ═════════ Discussion et fiche profil : présentation plus claire, façon appli de rencontre moderne ═════════ */
/* En-tête de discussion : retour, petite photo, prénom, menu. Rien d'autre. */
#app .chathead{margin:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:var(--bg)!important;padding:calc(10px + var(--st,0px)) 14px 8px 4px!important;row-gap:6px!important}
#app .chathead .w b{font-size:21px;font-weight:700}
#app .chathead .w small{display:none}
#app .chathead .alch{padding:0 10px 0 10px}
#app .chathead .alch .rib{height:30px}
/* Bulles : reçus sombres, envoyés champagne */
.bub{border-radius:24px;padding:11px 17px;font-size:16px;line-height:1.38}
.bub:not(.me){background:#1f1e24;color:var(--tx)}
.bub.me{background:#E8D5B7!important;color:#1a1408!important}
/* Zone de saisie : pastille arrondie */
.composer textarea,.composer .input{border-radius:999px!important;background:#17161b!important;padding:13px 20px!important;border:0!important}
/* Fiche : nom et âge en grand en haut */
.veil.full .pvtop{align-items:flex-end;padding-bottom:10px}
.pvname{display:grid;gap:2px;min-width:0}
.pvname b{font:800 32px/1.05 var(--ui);letter-spacing:-.03em;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pvname small{color:var(--faint);font:500 12px var(--ui)}
.veil.full .vitrine .pname{display:none}
/* Infos sous la photo : des cartes séparées */
.pbody>.tcard,.pbody>.quote,.pbody>.common,.pbody>.sec,.pbody>.facts,.pbody>.recos,.pbody>.tune,.pbody>.locked{background:#1b1a20;border-radius:24px;padding:18px 20px;margin:0 12px 10px}
.pbody>.facts{display:flex;flex-wrap:wrap;gap:8px}
.tcard.seek small{display:block;color:var(--mut);font:600 14px var(--ui);margin-bottom:8px}
.tcard.seek b{display:block;font:800 26px/1.15 var(--ui);letter-spacing:-.02em;color:var(--tx)}
.pbody>.common:has(.bio)::before{content:"À propos de moi";display:block;color:var(--mut);font:600 14px var(--ui);margin-bottom:8px}
.pbody>.common .bio{font:500 17px/1.45 var(--ui);color:var(--tx)}

/* Recherche de morceau : pochette à côté du titre, trois propositions */
.tsi{flex-direction:row;align-items:center;gap:12px}
.tsimg{flex:none;width:48px;height:48px;border-radius:10px;object-fit:cover;background:rgba(255,255,255,.08)}
.tst{display:flex;flex-direction:column;gap:2px;min-width:0;text-align:left}
.tst b,.tst small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Ligne « N personne s'intéresse à toi » dans Découvrir : discrète */
.likeline{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin:0;padding:2px 16px 8px;color:var(--mut);background:none;border:0}
.likeline .ll-t{font:500 15px var(--ui);letter-spacing:-.01em}
.likeline .ll-t b{font:700 15px var(--ui);color:var(--tx)}
.likeline .ll-t em{font:italic 400 17px var(--serif,"Fraunces",serif);color:#E3CA92}
.likeline .ll-c{display:grid;place-items:center;width:16px;height:16px;opacity:.6}
.likeline .ll-c svg{width:14px;height:14px;stroke:currentColor}

/* Photo éphémère : barre qui se remplit de gauche à droite + carte du chat retravaillée */
.snapview .sv-fill{transform:scaleX(0)}
#app .snap5{display:flex!important;align-items:center;gap:14px;width:min(80%,290px)!important;padding:14px 18px 14px 14px!important;margin:8px 14px!important;border-radius:24px!important;background:linear-gradient(135deg,rgba(232,213,183,.18),rgba(232,213,183,.06))!important;border:1px solid rgba(232,213,183,.4)!important;box-shadow:0 16px 32px -20px rgba(0,0,0,.95)!important;cursor:pointer}
#app .snap5.mine{margin-left:auto!important;background:rgba(255,255,255,.04)!important;border-color:rgba(232,213,183,.22)!important;cursor:default}
#app .snap5 .sn-ic{flex:none;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#ecdcbc,#d9be84)!important;box-shadow:0 0 0 5px rgba(232,213,183,.14)!important}
#app .snap5 .sn-ic svg{width:22px;height:22px;stroke:#1a1408!important}
#app .snap5:not(.mine):not(.gone) .sn-ic{animation:snp 2.4s ease-in-out infinite}
@keyframes snp{50%{box-shadow:0 0 0 10px rgba(232,213,183,.04)}}
#app .snap5.mine .sn-ic{background:rgba(232,213,183,.12)!important;box-shadow:none!important}
#app .snap5.mine .sn-ic svg{stroke:#E8D5B7!important}
#app .snap5 .sn-tx{display:grid;gap:3px;min-width:0}
#app .snap5 .sn-tx b{font:700 16px var(--ui);color:var(--tx)}
#app .snap5 .sn-tx small{font:500 13px/1.3 var(--ui);color:var(--mut)}
#app .snap5.gone{width:max-content!important;max-width:80%;padding:8px 16px!important;border-radius:999px!important;background:rgba(255,255,255,.04)!important;border:1px solid rgba(255,255,255,.08)!important;box-shadow:none!important}
#app .snap5.gone.mine{margin-left:auto!important}

/* Galerie : barre en 2 étapes + animation d'ouverture ; ligne « il reste X » ; fin des cartes lourdes */
#app .chathead .alch .segs.two{grid-template-columns:1fr 1fr}
#app .chathead .alch .segs i{height:5px}
#app .chathead .alch .at{font:600 12.5px var(--ui);color:var(--mut)}
#app .chathead .alch .at.ok{color:#F3E2C7;animation:alok .5s ease-out}
.alch.unlocking .segs i::after{animation:alsh 1.1s ease-out}
@keyframes alok{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes alsh{0%{filter:brightness(1)}40%{filter:brightness(1.9);box-shadow:0 0 18px rgba(243,226,184,.95)}100%{filter:brightness(1)}}
.expline{padding:0 20px 6px;color:var(--mut);font:500 13px var(--ui);text-align:center}
.expbar{display:none!important}
.menu button{width:100%}

/* États vides (Découvrir, Explorer, Likes, Discussions) : exactement au même endroit de l'écran, même animation */
#app .empty:has(>svg),#app .empty:has(>span>svg){position:fixed!important;top:30vh!important}
.empty>svg,.empty>span{animation:emfloat 4.5s ease-in-out infinite}
@keyframes emfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@media(prefers-reduced-motion:reduce){.empty>svg,.empty>span{animation:none}}

/* Modifier le profil : le contenu seul, sans cartes */
.pe .lcard,.pe .env5,.pe details.fold,.pe .voice-rec,.pe .grp>.lcard,.pe .lcard.pad{background:none!important;border:0!important;box-shadow:none!important;border-radius:0!important;padding:0!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
.pe .grp,.pe details.fold,.pe .env5,.pe .voice-rec{margin:0 0 26px!important;padding:0 2px!important;background:none!important;border:0!important;box-shadow:none!important}
.pe .grp>h4,.pe details.fold>summary .ft b{font:700 13px var(--ui);letter-spacing:.07em;text-transform:uppercase;color:var(--mut);margin:0 0 12px}
.pe details.fold>summary{list-style:none;padding:0;margin-bottom:10px;border:0}
.pe details.fold>summary::-webkit-details-marker{display:none}
.pe details.fold>summary .ft small{display:block;color:var(--faint);font:500 13px var(--ui);margin-top:2px;text-transform:none;letter-spacing:0}
.pe details.fold:not([open])>.lcard{display:none}
.pe .env5 .eh b{font:700 13px var(--ui);letter-spacing:.07em;text-transform:uppercase;color:var(--mut)}

/* Trois tuiles de l'onglet Moi (Coups de cœur, Projecteurs, Abonnement) */
.qrow{gap:10px!important;padding:0 16px 16px!important}
.qtile{min-height:104px;align-content:center;gap:6px!important;padding:14px 8px!important;border-radius:20px!important;background:rgba(255,255,255,.04)!important;border:1px solid rgba(232,213,183,.16)!important}
.qtile .qic{width:38px!important;height:38px!important;background:rgba(232,213,183,.12)!important;color:#E8D5B7!important}
.qtile b{font:800 18px var(--ui)!important;letter-spacing:-.01em}
.qtile small{font:600 11.5px var(--ui)!important;letter-spacing:.02em;color:var(--mut)!important;text-align:center}
/* Mot d'un proche */
.warm5{background:rgba(255,255,255,.04)!important;border:1px solid rgba(232,213,183,.16)!important;border-radius:22px!important;padding:18px 20px!important}
.warm5 p{font:500 16px/1.5 var(--ui);color:var(--tx);margin:6px 0 10px}
.warm5.blank b{font:700 17px var(--ui)}
.warm5 .qm{font:italic 400 38px/1 var(--serif,serif);color:#E8D5B7;opacity:.8}
.warm5 small{color:var(--mut);font:500 13px var(--ui)}

/* Son choisi : une vraie carte « en ce moment » */
.tprev{padding:12px 14px!important;border-radius:18px!important;gap:14px!important;background:rgba(255,255,255,.04)!important;border:1px solid rgba(232,213,183,.2)!important}
.tprev .cov{width:56px!important;height:56px!important;border-radius:12px!important;flex:none}
.tprev>div{min-width:0}
.tprev b{display:block;font:700 15.5px var(--ui);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tprev small{font:500 13px var(--ui)!important;opacity:.75!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Zone de saisie : grandit avec le texte (jusqu'à 5 lignes), défile ensuite, ne déborde jamais */
.composer{align-items:flex-end!important}
.composer textarea{box-sizing:border-box;min-height:44px!important;max-height:132px!important;line-height:22px!important;padding:11px 18px!important;border-radius:22px!important;overflow-y:auto;overflow-x:hidden;overflow-wrap:anywhere;word-break:break-word;white-space:pre-wrap;scrollbar-width:none}
.composer textarea::-webkit-scrollbar{display:none}
.composer .send,.composer button.send{align-self:flex-end;margin-bottom:1px}

/* Envoi d'une photo éphémère : petite carte avec une belle barre de progression */
.upl{margin:0 14px 8px;padding:12px 16px 14px;border-radius:20px;background:#1b1a20;border:1px solid rgba(232,213,183,.22);display:grid;gap:9px;animation:uplin .3s ease-out}
@keyframes uplin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.upl-h{display:flex;align-items:baseline;justify-content:space-between}
.upl-h b{font:700 14.5px var(--ui);color:var(--tx)}
.upl-p{font:700 13px var(--ui);color:#E8D5B7;font-variant-numeric:tabular-nums}
.upl-bar{position:relative;height:8px;border-radius:4px;background:rgba(255,255,255,.1);overflow:hidden}
.upl-bar i{display:block;height:100%;width:100%;transform-origin:left center;transform:scaleX(.02);border-radius:4px;background:linear-gradient(90deg,#d9be84,#f3e2b8);box-shadow:0 0 14px rgba(243,226,184,.6);transition:transform .25s ease-out}
.upl.busy .upl-bar::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);transform:translateX(-100%);animation:uplsh 1.1s linear infinite}
@keyframes uplsh{to{transform:translateX(100%)}}
.upl-s{font:500 12.5px var(--ui);color:var(--mut)}
.upl.ok .upl-s{color:#F3E2C7}
.upl.err{border-color:rgba(255,120,120,.5)}
.upl.err .upl-s{color:#ff9a9a}
.upl.err .upl-bar{display:none}
.planbtn .cico{display:grid;place-items:center;pointer-events:none}

/* Écouter le son d'un profil */
.tune{position:relative}
.tplay{flex:none;margin-left:auto;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#ecdcbc,#d9be84);color:#1a1408;box-shadow:0 0 0 5px rgba(232,213,183,.14)}
.tplay svg{width:20px;height:20px}
.tplay.on{box-shadow:0 0 0 6px rgba(232,213,183,.25);animation:tpl 1.6s ease-in-out infinite}
@keyframes tpl{50%{box-shadow:0 0 0 10px rgba(232,213,183,.06)}}
.tune .lt{min-width:0;flex:1}

/* ═════════ Fluidité : réponse au toucher immédiate, flous moins coûteux, mouvements plus doux ═════════ */
html{-webkit-tap-highlight-color:transparent;overscroll-behavior:none}
button,a,[role=button],.tab,.chip,.rbtn,.qcap,.ip-s,.selopt,.tsi{touch-action:manipulation}
button,.tab,.chip,.rbtn,.qcap,.btn,.tsi,.selopt,.ip-s,.scell,.qtile,.pepite,.likeline{transition:transform .12s cubic-bezier(.2,.8,.2,1),background-color .18s,border-color .18s,opacity .18s}
button:active:not(:disabled),.tab:active,.chip:active,.rbtn:active,.qcap:active,.btn:active,.qtile:active,.pepite:active{transform:scale(.965)}
/* Les flous de fond sont l'effet le plus lourd sur téléphone : on les garde, en plus léger */
@media(max-width:759px){
  :root{--blur:blur(12px) saturate(1.25)}
  .tabbar,.sheet,.veil,.modal,.topbar,.glass{-webkit-backdrop-filter:blur(12px) saturate(1.2)!important;backdrop-filter:blur(12px) saturate(1.2)!important}
}
/* Cartes, feuilles et listes : composées sur le GPU, défilement inertiel */
.pcard,.sheet,.msgs,.scroll{-webkit-overflow-scrolling:touch}
.msgs,.scroll{overscroll-behavior:contain}
.bub{animation-duration:.22s}

@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Bandeau d'offre limitée : petit, lisible, discret */
.promo{height:32px!important;margin:0 14px 8px!important;padding:0 12px!important;border-radius:999px!important;background:rgba(232,213,183,.08)!important;box-shadow:inset 0 0 0 1px rgba(232,213,183,.28)!important;font:600 12.5px var(--ui)!important;color:var(--mut)!important;gap:6px!important}
.promo.mine{background:rgba(232,213,183,.1)!important;box-shadow:inset 0 0 0 1px rgba(232,213,183,.34)!important}
.promo b{color:#F3E2C7!important;font-weight:700;font-variant-numeric:tabular-nums}
.promo span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.promo .sp{flex:1}

/* Police d'accent dans les titres */
.pghead h2 em,.secthead h2 em,.xhead h1 em,.nopane h3 em,.me-head h2 em{font:italic 400 1.08em/1 var(--serif,"Fraunces",serif);color:#E3CA92;letter-spacing:-.01em}

/* Galerie : une phrase, un seul trait qui se remplit */
#app .chathead .alch{flex-direction:column;align-items:stretch;gap:7px;padding:0 12px 4px}
#app .chathead .alch .at{flex:none;font:600 13px/1.3 var(--ui);color:var(--mut);white-space:normal}
#app .chathead .alch .at.ok{color:#F3E2C7}
.gbar{position:relative;height:5px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden}
.gbar i{display:block;height:100%;width:0;border-radius:3px;background:linear-gradient(90deg,#d9be84,#f3e2b8);box-shadow:0 0 12px rgba(243,226,184,.7);transition:width .7s cubic-bezier(.2,.9,.25,1)}
.alch.unlocking .gbar i{animation:gshine 1.2s ease-out}
@keyframes gshine{0%{filter:brightness(1)}40%{filter:brightness(1.8);box-shadow:0 0 20px rgba(243,226,184,1)}100%{filter:brightness(1)}}

/* Correctifs : l'icône des écrans vides redevient visible (l'animation de flottement écrasait l'apparition) ; bouton photo du chat recentré */
.empty>svg,.empty>span{animation:rise .6s var(--ease,ease) forwards,emfloat 4.5s ease-in-out .7s infinite!important}
.composer .planbtn,.composer .planbtn.filebtn{position:relative;display:grid!important;place-items:center;width:40px;height:40px;padding:0;margin:0 0 2px;flex:none;border-radius:50%}
.composer .planbtn .cico{display:grid;place-items:center;width:100%;height:100%;margin:0!important;pointer-events:none}
.composer .planbtn svg{width:20px;height:20px;display:block;margin:0}
.composer .planbtn .filein{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:0}

/* Un seul « lieu » : le fond ambiant est porté par l'appli (il ne change jamais d'onglet en onglet) ; seul le contenu glisse et apparaît */
:root[data-theme=dark] #app{background:radial-gradient(ellipse 60% 50% at 50% 40%,rgba(232,213,183,.16),rgba(232,213,183,0) 70%),radial-gradient(ellipse 80% 40% at 50% 108%,rgba(232,213,183,.05),transparent 70%),#0B0B0E!important}
:root[data-theme=dark] #app .main{background:transparent!important}
.main{animation:tabin .28s cubic-bezier(.2,.8,.2,1) both!important}
@keyframes tabin{from{opacity:0;transform:translateX(var(--dx,0))}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.main{animation:none!important}}

/* Compte à rebours du match : chiffres de largeur fixe, qui défilent sans faire bouger le texte */
.typing-hint .cdown{font-variant-numeric:tabular-nums;color:#F3E2C7;font-weight:700;letter-spacing:.02em}
.typing-hint .cdown.urgent{color:#ff9a7a}

/* Modifier le profil : sections séparées par de simples filets, sans cartes */
.pe{padding-bottom:40px}
.pe>.grp,.pe>details.fold,.pe>.dispo,.pe>.voice-rec{padding:26px 2px 8px!important;margin:0!important;border-top:1px solid rgba(255,255,255,.08)!important}
.pe>.pghead+.grp{border-top:0!important;padding-top:6px!important}
.pe .grp>h4{margin:0 0 14px!important}
.pe .pvgrid,.pe .pgrid{gap:10px!important}
.pe .pvgrid>*,.pe .pgrid>*,.pe .slot,.pe .pvph{border-radius:16px!important}
.dispo{display:flex!important;align-items:center;justify-content:space-between;gap:16px}
.dispo .dt{display:grid;gap:3px;min-width:0}
.dispo .dt b{font:700 17px var(--ui);color:var(--tx)}
.dispo .dt small{font:500 13.5px var(--ui);color:var(--mut)}

/* ═════════ Changement d'onglet : le contenu se fond sur place, sans glisser ni clignoter (comme la surbrillance de la barre du bas) ═════════ */
.main{animation:tabfade .22s ease-out both!important}
@keyframes tabfade{from{opacity:.55}to{opacity:1}}
.tab{transition:background-color .28s ease,color .28s ease}
.tab svg{transition:transform .28s cubic-bezier(.2,.8,.2,1)}
.tab.on svg{transform:scale(1.08)}
/* Apparition des contenus : douce et unique, plus de cascade pressée */
.rise>*{animation:riseS .5s cubic-bezier(.22,.8,.3,1) both!important;animation-delay:0s!important}
@keyframes riseS{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.empty>svg,.empty>span{animation:riseS .5s cubic-bezier(.22,.8,.3,1) both,emfloat 5s ease-in-out .6s infinite!important}
.xgrid>*,.grid2>*,.lkgrid>*{animation:fadeS .3s ease-out both}
@keyframes fadeS{from{opacity:0}to{opacity:1}}
/* Écrans vides : plus haut, pour être dans le champ de vision plutôt qu'en bas */
#app .empty:has(>svg),#app .empty:has(>span>svg){top:max(150px,17vh)!important}

/* ═════════ Rapport de test : correctifs de présentation ═════════ */
.btn[hidden],button[hidden]{display:none!important}
.menu button.danger,.btn.danger{color:#ff9a9a}
/* Écran vide : contenu défilant si l'écran est petit, jamais sous la barre du bas ; plus de boutons grisés Passer / J'aime */
#app .empty:has(>svg),#app .empty:has(>span>svg){top:max(110px,13vh)!important;max-height:calc(100dvh - max(110px,13vh) - 120px);overflow-y:auto;overflow-x:hidden;padding-bottom:16px;scrollbar-width:none}
.main:has(.stage .empty) .decide{display:none!important}
/* Lisibilité : textes et zones tactiles */
.tab span{font-size:11.5px!important}
.qtile small,.sg-h span,.hint,.compl{font-size:12.5px}
.iconbtn,.chip,.btn.sm,.linkb,.chipb,.ip-chip,.ip-s,.tsi{min-height:40px}
.slot .x,.slot .mv{width:40px!important;height:40px!important}
.qrow{grid-template-columns:repeat(auto-fit,minmax(0,1fr))!important}
.empty>*{flex-shrink:0}
@media(max-height:640px){
  #app .empty>svg,#app .empty>span{width:60px!important;height:60px!important;padding:16px!important;margin-bottom:0!important;box-shadow:0 0 0 6px rgba(227,202,146,.06)!important}
  #app .empty{gap:8px!important}
  #app .empty h3{font-size:20px!important}
  #app .empty .btn{min-height:44px;height:44px}
}

/* Transition d'onglet : fondu enchaîné sur le contenu seul */
@supports (view-transition-name:none){
  .main{view-transition-name:maincontent;animation:none!important}
  .topbar{view-transition-name:topbar}
  .tabbar{view-transition-name:tabbar}
  ::view-transition-group(topbar),::view-transition-group(tabbar){animation-duration:0s}
  ::view-transition-old(maincontent){animation:vtout .16s ease-out both}
  ::view-transition-new(maincontent){animation:vtin .26s cubic-bezier(.2,.8,.2,1) both}
  ::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
}
@keyframes vtout{to{opacity:0}}
@keyframes vtin{from{opacity:0}to{opacity:1}}
/* Écrans vides : un peu plus bas qu'avant */
#app .empty:has(>svg),#app .empty:has(>span>svg){top:max(130px,21vh)!important;max-height:calc(100dvh - max(130px,21vh) - 118px)}

/* Écrans vides : le même halo doux que sous Découvrir, centré sur l'icône */
#app .empty:has(>svg),#app .empty:has(>span>svg){isolation:isolate}
#app .empty:has(>svg)::before,#app .empty:has(>span>svg)::before{content:"";position:absolute;z-index:-1;left:50%;top:-20px;width:min(680px,150vw);height:520px;transform:translateX(-50%);background:radial-gradient(ellipse 50% 50% at 50% 24%,rgba(232,213,183,.2),rgba(232,213,183,.07) 45%,transparent 72%);pointer-events:none;animation:glowin .8s ease-out both}
@keyframes glowin{from{opacity:0}to{opacity:1}}
@media(min-width:760px){#app.shell .empty:has(>svg)::before,#app.shell .empty:has(>span>svg)::before{width:760px}}
/* Cartes et contenus : apparition douce quand ils arrivent */
.stage .pcard.cur{animation:fadeS .3s ease-out both}
.empty.rise{animation:none}

/* Bouton retour : icône centrée */
.iconbtn svg{display:block;margin:0}
#app .chathead .iconbtn:first-child,.pghead .iconbtn:first-child,.topbar .iconbtn:first-child{display:grid;place-items:center;padding:0;line-height:0}
#app .chathead .iconbtn:first-child{width:42px;height:42px}
#app .chathead .iconbtn:first-child svg,.pghead .iconbtn:first-child svg{width:24px;height:24px}

/* Cadenas : lisible sur n'importe quelle photo, et expliqué */
.avw .e2e{width:22px!important;height:22px!important;right:-5px!important;bottom:-5px!important;background:#0B0B0E!important;color:#F3E2C7!important;border:2px solid #F3E2C7!important;box-shadow:0 2px 8px rgba(0,0,0,.6);cursor:pointer}
.avw .e2e svg{width:12px!important;height:12px!important;stroke:#F3E2C7!important;stroke-width:2.6!important}
#app .chathead .w small:not(:empty){display:flex!important;align-items:center;gap:6px;margin-top:2px;color:var(--mut);font:600 12.5px var(--ui)}
#app .chathead .w small:not(:empty)::before{content:"";flex:none;width:11px;height:13px;background:#E8D5B7;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10V7a5 5 0 0 1 10 0v3h1a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h1zm2 0h6V7a3 3 0 0 0-6 0v3z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10V7a5 5 0 0 1 10 0v3h1a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h1zm2 0h6V7a3 3 0 0 0-6 0v3z'/%3E%3C/svg%3E") center/contain no-repeat}
/* Photos verrouillées du profil : cadenas sur pastille sombre */
.pvph .lk,.locked .lk,.lp .lk{display:grid!important;place-items:center;width:34px;height:34px;border-radius:50%;background:rgba(11,11,14,.78)!important;color:#F3E2C7!important}
.pvph .lk svg,.locked .lk svg{width:16px;height:16px;stroke:#F3E2C7!important}

/* Dispo ce soir sur la vue profil */
.scroll.me5>.dispo{margin:0 16px 14px!important;padding:16px 18px!important;border-radius:22px;background:rgba(255,255,255,.04)!important;border:1px solid rgba(232,213,183,.2)!important}

/* Photo de profil : jamais plus grande que son cadre, coins arrondis nets (plus de photo qui dépasse sur l'arrondi) */
.vitrine img{scale:1!important;translate:none!important;inset:0}
.vitrine{isolation:isolate;overflow:hidden}
.sheet .pcard,.veil:not(.full) .pcard{border-radius:28px;overflow:hidden;isolation:isolate}
.sheet .pcard .vitrine,.veil:not(.full) .pcard .vitrine{border-radius:28px 28px 0 0;clip-path:inset(0 round 28px 28px 0 0)}
#app .stage .pcard .vitrine{clip-path:inset(0 round 0 0 30px 30px)}
.veil.full .stage .pcard .vitrine{clip-path:inset(0 round 0 0 30px 30px)}

/* Le fond ne défile plus et le dégradé couvre toute la page, même quand la barre d'adresse du téléphone bouge ou qu'on tire l'écran */
:root[data-theme=dark]{height:100%;overflow:hidden;overscroll-behavior:none;background:radial-gradient(ellipse 60% 50% at 50% 40%,rgba(232,213,183,.16),rgba(232,213,183,0) 70%) fixed,radial-gradient(ellipse 80% 40% at 50% 108%,rgba(232,213,183,.05),transparent 70%) fixed,#0B0B0E!important}
body:not(.legal){height:100%;overflow:hidden;overscroll-behavior:none;background:transparent!important;touch-action:manipulation}
:root[data-theme=dark]:has(body.legal){overflow:auto;height:auto;background:#0B0B0E!important}
#app{min-height:100%;height:100dvh}

/* Écran vide : placé sous les bandeaux du haut (question, pépite, offre…), sans rogner le halo */
#app .empty:has(>svg),#app .empty:has(>span>svg){top:max(var(--et,0px),max(130px,21vh))!important;max-height:calc(100dvh - max(var(--et,0px),max(130px,21vh)) - 118px);overflow:visible!important;padding-bottom:0}
@media(max-height:680px){#app .empty:has(>svg),#app .empty:has(>span>svg){overflow-y:auto!important;overflow-x:hidden!important}}

/* Le halo de Découvrir est maintenant le fond de toute l'appli : identique sur tous les onglets, il ne change plus d'un écran à l'autre */
.stage::before{display:none!important}

/* En-tête : totalement transparent, sans flou (le flou + saturation faisait une bande plus claire/foncée en haut) : le dégradé va jusqu'en haut, comme sur Explorer */
#app .topbar{background:transparent!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;border:0!important;box-shadow:none!important}
#app .topbar::before,#app .topbar::after{display:none!important}
