/* Carte cadeau Elena Yoga Massages : composant partagé (aperçu en direct du site, page de la carte) */
.gcard{--rx:5deg;--ry:-9deg;--mx:30%;--my:18%;--g-front:#4E5B45;--g-front-2:#617058;--g-front-3:#3C4635;--g-ink:#F6F1EA;--g-accent:#E2C48F;position:relative;width:100%;aspect-ratio:85/55;perspective:1600px;container-type:inline-size;cursor:pointer;-webkit-tap-highlight-color:transparent}
.gcard[data-theme="sable"]{--g-front:#E9DFD1;--g-front-2:#F5EEE4;--g-front-3:#D8C8B1;--g-ink:#4E5B45;--g-accent:#B88A4E}
.gcard[data-theme="terre"]{--g-front:#2F2A25;--g-front-2:#453C33;--g-front-3:#1F1B17;--g-ink:#F0E6D6;--g-accent:#D9A99A}
.gcard[data-theme="rose"]{--g-front:#B4506A;--g-front-2:#CF7187;--g-front-3:#8E3A52;--g-ink:#FFF3F2;--g-accent:#F9D3C0}
.gcard-tilt{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(var(--rx)) rotateY(var(--ry));transition:transform .6s cubic-bezier(.2,.75,.2,1)}
.gcard.tilting .gcard-tilt{transition:transform .12s linear}
.gcard-in{position:absolute;inset:0;transform-style:preserve-3d;transition:transform 1s cubic-bezier(.2,.75,.2,1)}
.gcard.flipped .gcard-in{transform:rotateY(180deg)}
.gface{position:absolute;inset:0;overflow:hidden;border-radius:4.6cqw;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-shadow:0 2.6cqw 6cqw -2.6cqw rgba(47,42,37,.55),0 .3cqw .9cqw rgba(47,42,37,.14)}
.gface::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(70% 90% at var(--mx) var(--my),rgba(255,255,255,.32),rgba(255,255,255,0) 62%);mix-blend-mode:soft-light}
.gface p{margin:0}

/* Recto */
.gfront{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5cqw 7cqw 9cqw;text-align:center;color:var(--g-ink);background:radial-gradient(130% 110% at 15% 0%,var(--g-front-2) 0%,var(--g-front) 50%,var(--g-front-3) 100%)}
.g-lotus{width:19cqw;height:auto;color:var(--g-ink)}
.g-dot{fill:var(--g-accent)}
.g-kicker{margin-top:2.4cqw!important;font:500 max(2.2cqw,8px)/1 "DM Sans",Arial,sans-serif;letter-spacing:.34em;text-transform:uppercase;color:var(--g-accent)}
.g-title{margin-top:2.2cqw!important;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:400 italic max(7.4cqw,22px)/1.12 "EB Garamond",Georgia,serif}
.g-sub{margin-top:1.6cqw!important;min-height:1.3em;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:400 max(2.9cqw,11px)/1.3 "DM Sans",Arial,sans-serif;opacity:.86}
.g-brand{position:absolute;left:0;right:0;bottom:4.8cqw;font:500 max(1.8cqw,7px)/1 "DM Sans",Arial,sans-serif;letter-spacing:.3em;text-transform:uppercase;opacity:.62}

/* Verso */
.gback{transform:rotateY(180deg);display:flex;flex-direction:column;padding:5cqw 6.4cqw 4.6cqw;color:#2F2A25;background:#FBF8F3;border-top:1.6cqw solid var(--g-front)}
.g-back-top{display:flex;justify-content:space-between;align-items:flex-start;gap:4cqw}
.g-logo{width:21cqw;height:auto;flex:none;margin-top:.6cqw}
.g-lbl{display:block;font:500 max(1.9cqw,7.5px)/1.2 "DM Sans",Arial,sans-serif;letter-spacing:.24em;text-transform:uppercase;color:#958A7B}
.g-val{display:block;margin-top:.7cqw;font:400 max(4.6cqw,14px)/1.12 "EB Garamond",Georgia,serif;color:#4E5B45}
.g-back-top .g-val{font-size:max(5.2cqw,15px)}
.g-from{margin-top:2.6cqw}
.g-msg{margin-top:2.4cqw!important;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font:400 italic max(3.3cqw,11.5px)/1.35 "EB Garamond",Georgia,serif;color:#5A5249}
.g-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:3cqw;margin-top:auto;padding-top:2.4cqw;border-top:1px solid rgba(78,91,69,.18)}
.g-gift .g-val{font-size:max(3.5cqw,12px);line-height:1.2}
.g-valid{display:block;margin-top:.9cqw;font:400 max(1.95cqw,8px)/1.3 "DM Sans",Arial,sans-serif;color:#7A7166}
.g-code-box{text-align:right;flex:none}
.g-code{display:block;margin-top:.8cqw;font:600 max(2.8cqw,10px)/1 "DM Sans",Arial,sans-serif;letter-spacing:.14em;color:#4E5B45}
.g-stamp{position:absolute;right:7cqw;top:34%;padding:1.6cqw 3cqw;border:.5cqw solid #A4493B;border-radius:1.4cqw;transform:rotate(-12deg);font:600 max(3.2cqw,11px)/1 "DM Sans",Arial,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:#A4493B;opacity:.88;background:rgba(251,248,243,.7)}

/* Champs vides et mise à jour en direct */
.g-empty{opacity:.42}
.g-pop{animation:g-pop .55s cubic-bezier(.2,.75,.2,1)}
@keyframes g-pop{from{opacity:.3;transform:translateY(.7cqw)}to{opacity:1;transform:none}}

/* Version à plat, pour l'impression */
.gcard.flat{perspective:none;cursor:default}
.gcard.flat .gcard-tilt,.gcard.flat .gcard-in{transform:none;transition:none}
.gcard.flat .gface{box-shadow:none;outline:1px solid #ddd5c8}
.gcard.flat .gface::after{display:none}
.gcard.flat:not(.show-back) .gback,.gcard.flat.show-back .gfront{display:none}
.gcard.flat.show-back .gback{transform:none}

@media (prefers-reduced-motion:reduce){.gcard-tilt,.gcard-in{transition:none}.g-pop{animation:none}}
