.somi-stamps { --stamp-ground:#f2ede5; --stamp-ink:#2b2b26; --stamp-sage:#526347; --stamp-bronze:linear-gradient(118deg,#60402d,#8d6541 34%,#795335 60%,#573a29); font:14px/1.4 Nunito,system-ui,sans-serif; color:var(--stamp-ink); letter-spacing:0; }
.somi-stamps [hidden],.november-stamp-host[hidden] { display:none !important; }
.somi-stamps * { box-sizing:border-box; letter-spacing:0; }
.somi-stamps button { font:inherit; color:inherit; cursor:pointer; outline:none; -webkit-tap-highlight-color:transparent; }
.somi-stamps button:focus-visible { outline:2px solid var(--stamp-sage); outline-offset:4px; }
body.november-stamp-pointer .somi-stamps button:focus { outline:none; }
.november-stamp-host { margin-bottom:16px; }
.customer-pilates-shell-active .november-stamp-host + .customer-calendar-section-today { margin-top:0; }
.november-stamp-host h2 { margin:0 0 10px; font:500 26px/1.15 "Cormorant Garamond",Georgia,serif; }
.somi-stamps .stamp-trigger { display:grid; grid-template-rows:28px auto; gap:7px; width:100%; min-height:76px; padding:10px 13px; border:1px solid #cdbca0; border-radius:8px; background:linear-gradient(180deg,#fffcf6,#f4ecdd); box-shadow:inset 0 1px 0 #fff,0 3px 0 #cdbda0,0 6px 10px #6b543b18; text-align:center; appearance:none; transition:border-color 150ms,box-shadow 150ms,transform 150ms; }
.somi-stamps .stamp-trigger:active { box-shadow:inset 0 1px 0 #fff,0 1px 0 #cdbda0,0 3px 5px #6b543b18; }
.somi-stamps .stamp-trigger.is-earned,.somi-stamps .stamp-compact-face.is-earned { position:relative; overflow:hidden; grid-template-rows:1fr; place-items:center; border-color:#a17a50; background:var(--stamp-bronze); color:#fffaf0; box-shadow:inset 0 1px 0 #f6d9a580,inset 0 -1px 0 #3e271a66,0 3px 0 #68462e,0 6px 10px #67452c24; }
.somi-stamps .stamp-compact-face.is-earned { position:absolute; }
.somi-stamps .compact-reward { position:relative; z-index:1; font-size:16px; font-weight:700; line-height:24px; text-align:center; }
.somi-stamps .stamp-trigger.is-earned .reward-shine { display:block; }
.somi-stamps .stamp-trigger.is-earned .reward-shine::before { animation:stamp-reward-shine 1300ms ease-in-out 150ms both; }
.somi-stamps .compact-progress { display:block; color:#8b714e; font-size:12px; line-height:18px; text-align:center; }
.somi-stamps .compact-stamps { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.somi-stamps .mini-stamp { display:grid; place-items:center; flex:none; width:28px; height:28px; border:1px dashed #c9b48f; border-radius:50%; background:#fffcf6; box-shadow:inset 0 1px 2px #8d6c4612,0 1px 0 #ffffffa6; color:#c1a782; font-size:12px; }
.somi-stamps .mini-stamp.is-complete,.somi-stamps .stamp-cell.is-complete .stamp { border-style:solid; border-color:#8d6c46; background:#8d6c46; box-shadow:inset 0 1px 3px #4f341c38,0 1px 0 #ffffffa6; color:#fffdf9; }
.somi-stamps .mini-stamp svg { width:16px; height:16px; stroke-width:1.8; }
.somi-stamps .mini-stamp.reward,.somi-stamps .stamp-cell.reward .stamp { color:#a88656; }
.somi-stamps .is-earned .mini-stamp.reward,.somi-stamps .stamp-cell.reward.is-complete .stamp { border-style:solid; border-color:var(--stamp-sage); color:var(--stamp-sage); background:#edf1e7; }
body.november-stamp-open { overflow:hidden; }
body.november-stamp-open .november-stamp-host .stamp-trigger { visibility:hidden; }
.stamp-layer { position:fixed; inset:0; z-index:115; overflow:hidden; }
.somi-stamps .stamp-scrim { position:absolute; inset:0; background:#262a351f; -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); opacity:0; transition:opacity 420ms; }
.somi-stamps .stamp-scroll { position:absolute; inset:0; overflow:auto; overscroll-behavior:contain; scrollbar-width:none; }
.somi-stamps .stamp-scroll::-webkit-scrollbar { display:none; }
.somi-stamps .stamp-detail { position:relative; width:min(430px,100%); min-height:100%; margin:0 auto; padding:calc(64px + env(safe-area-inset-top,0px)) 20px calc(26px + env(safe-area-inset-bottom,0px)); }
.somi-stamps.is-closing .stamp-scroll { overflow:hidden; }
.somi-stamps.is-open .stamp-scrim { opacity:1; }
.somi-stamps .stamp-close { position:fixed; z-index:2; top:calc(10px + env(safe-area-inset-top,0px)); right:max(10px,calc((100vw - 430px)/2 + 10px)); display:grid; place-items:center; width:44px; height:44px; border:0; border-radius:6px; background:transparent; color:#777163; opacity:0; transition:opacity 180ms; }
.somi-stamps.is-open .stamp-close { opacity:1; transition-delay:140ms; }
.somi-stamps .stamp-close:hover { background:#eee9de; }
.somi-stamps .stamp-close svg { width:20px; height:20px; }
.somi-stamps .stamp-card-stage { position:relative; width:100%; aspect-ratio:1.586; }
.somi-stamps .full-card { position:absolute; inset:0; width:100%; height:100%; color:#755a38; }
.somi-stamps .stamp-card-frame { position:absolute; inset:0; border:1px solid #d5c6ad; border-radius:8px; background:linear-gradient(155deg,#faf5e9,#f2e8d7); box-shadow:inset 0 1px 0 #fffdf6,0 2px 0 #d4c6ad,0 9px 18px #6b543b1c; transform-origin:top left; transform:translate3d(var(--card-x,0px),var(--card-y,0px),0) scale(var(--card-scale-x,1),var(--card-scale-y,1)); transition:transform 520ms cubic-bezier(.22,1,.36,1),opacity 180ms; pointer-events:none; }
.somi-stamps.is-open .stamp-card-frame { transform:translate3d(0,0,0) scale(1); }
.somi-stamps.is-closing.is-redeemed .stamp-card-frame { transform:translate3d(0,0,0) scale(1); opacity:0; }
.somi-stamps.is-closing.is-redeemed .stamp-compact-face { opacity:0; }
.somi-stamps.is-moving .stamp-card-frame { will-change:transform; }
.somi-stamps.is-moving .full-card-content,.somi-stamps.is-moving .stamp-content { will-change:opacity; }
.somi-stamps.is-moving .stamp-compact-face { will-change:transform,opacity; }
.somi-stamps .stamp-compact-face { position:absolute; left:0; top:0; display:grid; grid-template-rows:28px auto; align-content:center; gap:7px; padding:10px 13px; border:1px solid transparent; border-radius:8px; transform:translate3d(var(--card-x,0px),var(--card-y,0px),0); transition:opacity 120ms,transform 520ms cubic-bezier(.22,1,.36,1); pointer-events:none; }
.somi-stamps.is-open .stamp-compact-face { opacity:0; transform:translate3d(var(--compact-open-x,0px),var(--compact-open-y,0px),0); }
.somi-stamps .full-card-content { position:relative; display:flex; flex-direction:column; justify-content:space-between; height:100%; padding:20px; border:1px solid transparent; border-radius:8px; overflow:hidden; opacity:0; visibility:hidden; transition:opacity 180ms,visibility 180ms; }
.somi-stamps.is-open .full-card-content { opacity:1; visibility:visible; transition-delay:140ms; }
.somi-stamps .full-card-top { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.somi-stamps .full-card-title { flex:1; min-width:0; margin-top:8px; }
.somi-stamps .full-card-validity { margin:4px 0 0; color:#9a8569; font-size:11px; line-height:1.4; }
.somi-stamps .full-card-logo { position:relative; flex:none; width:64px; height:64px; filter:url('#stamp-paper-engrave'); }
.somi-stamps .full-card-logo::before,.somi-stamps .coupon-logo::before { content:""; position:absolute; inset:0; background:#c8b394; -webkit-mask:url('/assets/crm-monogram-mask.svg') center/contain no-repeat; mask:url('/assets/crm-monogram-mask.svg') center/contain no-repeat; }
.somi-stamps .engrave-filters { position:absolute; width:0; height:0; overflow:hidden; pointer-events:none; }
.somi-stamps h3 { min-width:0; margin:0; color:#927a59; font:500 22px/1.2 "Cormorant Garamond",Georgia,serif; text-align:left; text-shadow:0 1px 0 #fffdf6,0 -.5px 0 #6a4b282b; white-space:nowrap; }
.somi-stamps .full-card-progress { align-self:stretch; color:#8b714e; font-size:12px; line-height:18px; text-align:center; }
.somi-stamps .stamps { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:9px; }
.somi-stamps .stamp-cell { min-width:0; }
.somi-stamps .stamp { display:grid; place-items:center; width:100%; max-width:46px; aspect-ratio:1; border:1px dashed #c7b491; border-radius:50%; color:#b7a181; font-size:16px; background:#fffdf7; }
.somi-stamps .stamp svg { width:20px; height:20px; stroke-width:1.7; }
.somi-stamps .stamp-content { isolation:isolate; opacity:0; visibility:hidden; transition:opacity 180ms,visibility 180ms; }
.somi-stamps.is-open .stamp-content { opacity:1; visibility:visible; transition-delay:240ms; }
.somi-stamps .stamp-instruction { margin:16px 0 0; color:#827968; font-size:12px; line-height:18px; text-align:center; }
.somi-stamps .reward-content { padding-top:24px; }
.somi-stamps .reward-heading { margin:0 0 14px; font:500 26px/1.15 "Cormorant Garamond",Georgia,serif; }
.somi-stamps .reward-details { --coupon-border:#d3c4a9; position:relative; display:flex; flex-direction:column; align-items:stretch; justify-content:flex-start; width:100%; min-height:148px; padding:18px; border:1px solid var(--coupon-border); border-radius:8px; background:#fffcf6; box-shadow:0 2px 4px #6b543b08; text-align:left; appearance:none; }
.somi-stamps .reward-details:disabled { cursor:default; opacity:1; }
.somi-stamps .reward-details[aria-busy="true"] { cursor:progress; }
.somi-stamps .reward-details::before,.somi-stamps .reward-details::after { content:""; position:absolute; z-index:2; top:50%; width:14px; height:14px; border:1px solid var(--coupon-border); border-radius:50%; background:var(--stamp-ground); transform:translateY(-50%); }
.somi-stamps .reward-details::before { left:-8px; clip-path:inset(0 0 0 7px); }
.somi-stamps .reward-details::after { right:-8px; clip-path:inset(0 7px 0 0); }
.somi-stamps .reward-details.is-unlocked { --coupon-border:#a17a50; background:var(--stamp-bronze); box-shadow:inset 0 1px 0 #f6d9a580,inset 0 -1px 0 #3e271a66,0 5px 12px #67452c24; }
.somi-stamps .reward-details.is-used { filter:grayscale(.9); opacity:.78; }
.somi-stamps .reward-value { position:relative; z-index:1; display:block; padding-right:46px; color:var(--stamp-ink); font-size:18px; font-weight:600; line-height:1.4; }
.somi-stamps .reward-price { position:relative; z-index:1; display:block; width:fit-content; max-width:calc(100% - 46px); margin-top:4px; color:#8a8070; font-size:13px; }
.somi-stamps .reward-icon { position:absolute; z-index:1; top:14px; right:12px; bottom:14px; display:grid; place-items:center; width:42px; padding-left:10px; border-left:1px dashed var(--coupon-border); color:#a89b85; }
.somi-stamps .reward-icon svg { width:23px; height:23px; stroke-width:1.5; }
.somi-stamps .is-unlocked .reward-value { color:#fffaf0; text-shadow:0 1px 1px #3a241a66; }
.somi-stamps .is-unlocked .reward-price,.somi-stamps .is-unlocked .reward-expiry { color:#fff2df; }
.somi-stamps .is-unlocked .reward-icon { color:#ffe7b5; border-left-color:#ead0a48c; }
.somi-stamps .reward-expiry { position:relative; z-index:1; display:block; margin-top:48px; color:var(--stamp-sage); font-size:12px; }
.somi-stamps .coupon-logo { position:absolute; z-index:0; top:50%; left:50%; width:60px; height:60px; transform:translate(-50%,-50%); filter:url('#coupon-paper-groove'); pointer-events:none; }
.somi-stamps .coupon-logo::before { background:#d9c7a8; }
.somi-stamps .is-unlocked .coupon-logo { filter:url('#coupon-bronze-groove'); }
.somi-stamps .is-unlocked .coupon-logo::before { background:#69452e; }
.somi-stamps .reward-shine { display:none; position:absolute; z-index:0; inset:0; overflow:hidden; border-radius:inherit; pointer-events:none; }
.somi-stamps .is-unlocked:not(.is-used) .reward-shine { display:block; }
.somi-stamps .reward-shine::before { content:""; position:absolute; top:-100%; bottom:-100%; left:0; width:45%; background:linear-gradient(90deg,transparent,#fff3 45%,#fff6 52%,#fff1 66%,transparent); transform:translateX(-180%) skewX(-18deg); }
.somi-stamps.is-open:not(.is-moving) .is-unlocked:not(.is-used) .reward-shine::before { animation:stamp-reward-shine 1300ms ease-in-out both; }
@keyframes stamp-reward-shine { from { transform:translateX(-180%) skewX(-18deg); } to { transform:translateX(450%) skewX(-18deg); } }
.somi-stamps .coupon-used-overlay { position:absolute; z-index:3; inset:0; overflow:hidden; border-radius:inherit; pointer-events:none; }
.somi-stamps .coupon-used-banner { position:absolute; top:50%; left:50%; width:118%; padding:7px 0; border-top:1px solid #e8dbc4a6; border-bottom:1px solid #e8dbc4a6; background:#514638; color:#fff7e8; box-shadow:0 2px 5px #21180d33; transform:translate(-50%,-50%) rotate(-22deg); text-align:center; font-size:12px; font-weight:700; line-height:18px; }
.somi-stamps .redemption-overlay { position:absolute; z-index:8; inset:0; display:grid; place-items:center; padding:20px; background:#2c2b2640; }
.somi-stamps .redemption-overlay { opacity:1; transition:opacity 180ms; }
.somi-stamps.is-closing .redemption-overlay { opacity:0; pointer-events:none; }
.somi-stamps .redemption-dialog { position:relative; width:100%; max-width:340px; padding:28px 18px 30px; border:1px solid #d9d0c0; border-radius:8px; background:#fffdf9; box-shadow:0 12px 32px #2b251c26; text-align:center; }
.somi-stamps .redemption-close { position:absolute; top:5px; right:5px; display:grid; place-items:center; width:44px; height:44px; border:0; border-radius:6px; background:transparent; color:#817969; }
.somi-stamps .redemption-close svg { width:19px; height:19px; }
.somi-stamps .redemption-close:hover { background:#f2ede5; }
.somi-stamps .redemption-check { display:grid; place-items:center; width:48px; height:48px; margin:0 auto 16px; border:1px solid #bec9b4; border-radius:50%; background:#edf2e6; color:var(--stamp-sage); }
.somi-stamps .redemption-check svg { width:25px; height:25px; }
.somi-stamps .redemption-dialog h4 { margin:0 0 12px; font:500 29px/1.15 "Cormorant Garamond",Georgia,serif; }
.somi-stamps .redemption-dialog p { margin:0; font-size:16px; line-height:1.5; }
.somi-stamps .stamp-error { margin:12px 0 0; color:#9e4035; font-size:13px; }
@media (max-width:350px) {
  .somi-stamps .stamp-trigger { padding-inline:10px; }
  .somi-stamps .stamp-detail { padding-inline:16px; }
  .somi-stamps .stamps { gap:6px; }
  .somi-stamps .full-card-content { padding:16px; }
  .somi-stamps .full-card-logo { width:52px; height:52px; }
  .somi-stamps .coupon-logo { width:44px; height:44px; }
  .somi-stamps .reward-price { font-size:12px; }
  .somi-stamps h3 { font-size:18px; }
}
@media (prefers-reduced-motion:reduce) { .somi-stamps *,.somi-stamps *::before { transition:none !important; animation:none !important; } }

.november-starter-backdrop .customer-service-notice-modal { width:min(380px,100%); }
.november-starter-backdrop .customer-service-notice-content { padding:24px 24px 10px; text-align:center; }
.november-starter-backdrop .customer-service-notice-content h2 { margin:10px 0 12px; font-size:32px; }
.november-starter-backdrop .customer-service-notice-message { max-width:240px; margin:auto; color:#595b48; font-size:19px; line-height:1.45; }
.november-starter-backdrop .customer-service-notice-actions { padding:20px 24px 24px; }
.november-starter-art { position:relative; height:156px; isolation:isolate; }
.november-starter-seal { position:absolute; top:24px; left:50%; display:flex; flex-direction:column; align-items:center; justify-content:center; width:104px; height:104px; transform:translateX(-50%) rotate(-8deg); border:2px dashed #a38966; border-radius:50%; outline:1px solid #e4d7bf; outline-offset:6px; background:#f6efdf; box-shadow:inset 0 2px 6px #81694018,0 5px 12px #81694012; color:#8a6943; }
.november-starter-seal>span { font:600 52px/1 "Nunito",Arial,sans-serif; }
.november-starter-seal small { margin-top:3px; font-size:10px; line-height:1.3; }
.november-starter-popper { position:absolute; z-index:2; top:90px; color:#8b9a75; }
.november-starter-popper svg { display:block; width:40px; height:40px; stroke-width:1.4; }
.november-starter-popper.is-left { left:8px; transform:rotate(8deg); }
.november-starter-popper.is-right { right:8px; transform:scaleX(-1) rotate(8deg); }
.november-starter-confetti { position:absolute; inset:0; overflow:hidden; pointer-events:none; }
.november-starter-confetti>span { position:absolute; top:10px; left:var(--x); width:5px; height:10px; border-radius:1px; background:#b39a70; opacity:0; animation:november-starter-confetti 1600ms ease-out both; animation-delay:calc(var(--i) * 30ms); }
.november-starter-confetti>span:nth-child(3n) { background:#8b9a75; }
.november-starter-confetti>span:nth-child(3n+1) { background:#cb9186; width:6px; height:6px; border-radius:50%; }
@keyframes november-starter-confetti { 0% { opacity:0; transform:translateY(0) rotate(var(--r)); } 15% { opacity:.9; } 75% { opacity:.8; } 100% { opacity:0; transform:translateY(128px) rotate(calc(var(--r) + 150deg)); } }
@media (prefers-reduced-motion:reduce) { .november-starter-confetti>span { animation:none; opacity:.7; transform:translateY(calc(var(--i) * 7px)) rotate(var(--r)); } }
