/* ==========================================================================
   COURSE SPOTLIGHT
   1) Inline highlights   .spot-band  .spot-mini  .ccard--spot
   2) Corner pop-ups      .spot-n--corner  --tab  --bubble  --tag
   Never a centred modal: every pop-up slides in from an edge or corner,
   is dismissible, and stays out of the WhatsApp button / tab bar.
   ========================================================================== */

/* ---------- 1a. Highlighted band ---------- */
.spot-band{ position:relative; overflow:hidden; display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,1fr); grid-template-areas:"head head" "lead alts"; gap:18px 22px; padding:24px; border-radius:var(--r-lg);
  background:linear-gradient(135deg,#FFFBF2 0%,#FBF1DA 55%,#F6E7C1 100%); border:1px solid #E9D3A0; box-shadow:0 24px 60px -30px rgba(143,108,42,.55); isolation:isolate; }
.spot-band::before{ content:''; position:absolute; inset:0; border-radius:inherit; padding:1.5px; background:conic-gradient(from var(--spot-a,0deg),transparent 0 70%,rgba(201,164,92,.95) 80%,transparent 90%); -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0); -webkit-mask-composite:xor; mask-composite:exclude; animation:spot-orbit 6s linear infinite; pointer-events:none; z-index:2; }
@property --spot-a{ syntax:'<angle>'; inherits:false; initial-value:0deg; }
@keyframes spot-orbit{ to{ --spot-a:360deg; } }
.spot-band__glow{ position:absolute; width:340px; height:340px; right:-90px; top:-140px; border-radius:50%; background:radial-gradient(circle,rgba(230,201,131,.55),transparent 65%); z-index:-1; }
.spot-band__head{ grid-area:head; }
.spot-band__eyebrow{ display:inline-flex; align-items:center; gap:6px; font-size:11.5px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--gold-deep); background:rgba(255,255,255,.7); border:1px solid #EBD39F; padding:5px 11px; border-radius:var(--r-pill); }
.spot-band__eyebrow span{ color:var(--gold); animation:spot-twinkle 2.4s ease-in-out infinite; }
@keyframes spot-twinkle{ 0%,100%{ opacity:1; transform:scale(1) } 50%{ opacity:.45; transform:scale(.8) rotate(20deg) } }
.spot-band__title{ font-family:var(--f-display); font-weight:600; font-size:clamp(1.3rem,2.4vw,1.75rem); line-height:1.2; color:var(--ink); margin-top:10px; letter-spacing:-.01em; }

.spot-lead{ grid-area:lead; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) auto; gap:16px; align-items:center; padding:12px; border-radius:var(--r); background:#fff; border:1px solid #EFDDB3; box-shadow:var(--sh-1); color:var(--ink); transition:transform .25s var(--ease), box-shadow .25s var(--ease); }
.spot-lead:hover{ transform:translateY(-3px); box-shadow:0 18px 40px -16px rgba(143,108,42,.5); }
.spot-lead__img{ position:relative; display:block; aspect-ratio:16/9; border-radius:12px; overflow:hidden; background:var(--night-2); }
.spot-lead__img img{ width:100%; height:100%; object-fit:cover; }
.spot-lead__tag{ position:absolute; left:8px; top:8px; background:var(--grad-gold); color:#1A1408; font-size:11px; font-weight:800; padding:4px 9px; border-radius:var(--r-pill); box-shadow:0 6px 16px rgba(0,0,0,.25); }
.spot-lead__body{ display:flex; flex-direction:column; gap:4px; min-width:0; }
.spot-lead__body > b{ font-size:1.05rem; line-height:1.3; }
.spot-lead__why{ font-size:13px; color:var(--gold-deep); font-weight:700; }
.spot-lead__meta{ font-size:12px; color:var(--muted); }
.spot-lead__price{ display:flex; align-items:baseline; gap:7px; flex-wrap:wrap; margin-top:4px; }
.spot-lead__price b{ font-size:1.2rem; font-weight:800; }
.spot-lead__price s{ color:var(--muted); font-size:13px; }
.spot-lead__price i{ font-style:normal; font-size:11px; font-weight:800; color:#B8322C; background:#FCEBEA; padding:2px 7px; border-radius:var(--r-pill); }
.spot-lead__price small{ font-size:11px; color:var(--muted); }
.spot-lead__go{ width:42px; height:42px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:var(--night); color:var(--gold-2); font-size:18px; font-weight:800; transition:transform .25s var(--ease); }
.spot-lead:hover .spot-lead__go{ transform:translateX(4px); }

.spot-alts{ grid-area:alts; display:flex; flex-direction:column; gap:10px; justify-content:center; }
.spot-alt{ display:flex; gap:12px; align-items:center; padding:9px; border-radius:14px; background:rgba(255,255,255,.65); border:1px solid #EFDDB3; color:var(--ink); transition:background .2s, transform .2s var(--ease); }
.spot-alt:hover{ background:#fff; transform:translateX(3px); }
.spot-alt img{ width:96px; aspect-ratio:16/9; object-fit:cover; border-radius:9px; flex-shrink:0; }
.spot-alt span{ display:flex; flex-direction:column; min-width:0; line-height:1.3; }
.spot-alt small{ font-size:10.5px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--gold-deep); }
.spot-alt b{ font-size:13.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.spot-alt em{ font-style:normal; font-size:12px; color:var(--muted); }

.spot-band--dark{ background:linear-gradient(130deg,#15121D 0%,#1F1828 55%,#2A1F14 100%); border-color:rgba(201,164,92,.35); }
.spot-band--dark .spot-band__title{ color:#fff; }
.spot-band--dark .spot-band__eyebrow{ background:rgba(201,164,92,.12); border-color:rgba(201,164,92,.35); color:var(--gold-2); }
.spot-band--dark .spot-lead{ background:var(--night-2); border-color:var(--night-line); color:#fff; }
.spot-band--dark .spot-lead__why{ color:var(--gold-2); }
.spot-band--dark .spot-lead__go{ background:var(--grad-gold); color:#1A1408; }
.spot-band--dark .spot-alt{ background:rgba(255,255,255,.04); border-color:var(--night-line); color:#fff; }
.spot-band--dark .spot-alt small{ color:var(--gold-2); }
.spot-band--dark .spot-lead__price i{ background:rgba(217,68,63,.18); color:#FFB4A8; }

@media (max-width:900px){
  .spot-band{ grid-template-columns:minmax(0,1fr); grid-template-areas:"head" "lead" "alts"; padding:18px; }
}
@media (max-width:560px){
  .spot-lead{ grid-template-columns:minmax(0,1fr); }
  .spot-band{ padding:14px; border-radius:var(--r); }
  .spot-lead__go{ display:none; }
}

/* ---------- 1b. Mini highlight (buy box) ---------- */
.spot-mini{ display:flex; align-items:center; gap:10px; padding:11px 12px; border-radius:14px; background:linear-gradient(120deg,#FFF8E8,#F6E7C1); border:1px dashed #D9B972; color:var(--ink); position:relative; overflow:hidden; transition:transform .2s var(--ease); }
.spot-mini:hover{ transform:translateY(-2px); }
.spot-mini::after{ content:''; position:absolute; top:0; bottom:0; width:40%; left:-60%; background:linear-gradient(100deg,transparent,rgba(255,255,255,.75),transparent); animation:spot-sheen 4.5s ease-in-out infinite; }
@keyframes spot-sheen{ 0%,55%{ left:-60% } 85%,100%{ left:130% } }
.spot-mini__spark{ width:30px; height:30px; flex-shrink:0; border-radius:50%; display:flex; align-items:center; justify-content:center; background:var(--night); color:var(--gold-2); font-size:14px; }
.spot-mini__txt{ display:flex; flex-direction:column; min-width:0; line-height:1.25; flex:1; }
.spot-mini__txt small{ font-size:10.5px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--gold-deep); }
.spot-mini__txt b{ font-size:13.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.spot-mini__txt em{ font-style:normal; font-size:11.5px; color:var(--ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.spot-mini__price{ font-weight:800; font-size:14px; text-align:right; white-space:nowrap; }
.spot-mini__price i{ display:block; font-style:normal; font-weight:600; font-size:10px; color:var(--muted); }

/* ---------- 1c. Highlighted course cards ---------- */
.ccard--spot{ border:1.5px solid var(--gold); box-shadow:0 0 0 4px rgba(201,164,92,.14), 0 22px 50px -24px rgba(143,108,42,.65); animation:spot-pulse 3.2s ease-out infinite; }
@keyframes spot-pulse{ 0%{ box-shadow:0 0 0 0 rgba(201,164,92,.55), 0 22px 50px -24px rgba(143,108,42,.65) } 70%,100%{ box-shadow:0 0 0 12px rgba(201,164,92,0), 0 22px 50px -24px rgba(143,108,42,.65) } }
.spot-flag{ position:absolute; top:10px; right:10px; z-index:3; display:inline-flex; align-items:center; gap:5px; padding:5px 10px; border-radius:var(--r-pill); background:var(--grad-gold); color:#1A1408; font-size:11px; font-weight:800; box-shadow:0 8px 20px -6px rgba(0,0,0,.4); }
.spot-why{ font-size:12px; font-weight:700; color:var(--gold-deep); display:flex; gap:6px; align-items:flex-start; }
.spot-why::before{ content:'✦'; color:var(--gold); }
.sec--dark .spot-why{ color:var(--gold-2); }

/* ==========================================================================
   2) POP-UPS — base
   ========================================================================== */
.spot-n{ position:fixed; z-index:175; font-family:var(--f-ui); color:var(--ink); }
.spot-n a{ color:inherit; }
.spot-x{ position:absolute; top:6px; right:6px; width:26px; height:26px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:17px; line-height:1; color:var(--muted); background:transparent; border:0; cursor:pointer; z-index:2; }
.spot-x:hover{ background:rgba(0,0,0,.06); color:var(--ink); }
.spot-cta{ display:inline-flex; align-items:center; gap:6px; padding:8px 13px; border-radius:var(--r-pill); background:var(--night); color:var(--gold-2) !important; font-size:12.5px; font-weight:800; white-space:nowrap; }
.spot-cta:hover{ background:#000; }
.spot-eyebrow{ display:inline-flex; align-items:center; gap:5px; font-size:10.5px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:var(--gold-deep); }
.spot-price{ font-weight:800; font-size:15px; }
.spot-price s{ font-weight:500; font-size:12px; color:var(--muted); margin-left:4px; }
.spot-price small{ font-weight:600; font-size:10.5px; color:var(--muted); margin-left:3px; }

/* ---------- 2a. Corner card: slides in from the top-right ---------- */
.spot-n--corner{ top:calc(var(--annbar-h) + var(--topbar-h) + 14px); right:18px; width:330px; background:#fff; border-radius:18px; border:1px solid var(--line); box-shadow:0 26px 60px -18px rgba(22,20,29,.4); overflow:hidden;
  transform:translateX(calc(100% + 40px)) rotate(2deg); opacity:0; transition:transform .6s var(--ease), opacity .4s; }
.spot-n--corner.is-in{ transform:none; opacity:1; }
.spot-n--corner .spot-corner__img{ position:relative; display:block; aspect-ratio:16/7; background:var(--night-2); overflow:hidden; }
.spot-n--corner .spot-corner__img img{ width:100%; height:100%; object-fit:cover; }
.spot-n--corner .spot-corner__img::after{ content:''; position:absolute; inset:0; background:linear-gradient(180deg,transparent 40%,rgba(11,10,16,.7)); }
.spot-n--corner .spot-corner__tag{ position:absolute; left:12px; bottom:10px; z-index:1; background:var(--grad-gold); color:#1A1408; font-size:11px; font-weight:800; padding:4px 10px; border-radius:var(--r-pill); }
.spot-n--corner .spot-x{ background:rgba(255,255,255,.9); }
.spot-corner__body{ padding:12px 14px 14px; display:flex; flex-direction:column; gap:4px; }
.spot-corner__body b{ font-size:14.5px; line-height:1.3; }
.spot-corner__body p{ font-size:12.5px; color:var(--ink-2); line-height:1.4; }
.spot-corner__row{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:6px; }
.spot-timer{ height:3px; background:var(--gold-3); }
.spot-timer span{ display:block; height:100%; width:100%; background:var(--grad-gold); transform-origin:left; animation:spot-timer linear forwards; }
.spot-n:hover .spot-timer span{ animation-play-state:paused; }
@keyframes spot-timer{ to{ transform:scaleX(0); } }

/* ---------- 2b. Edge tab: a ribbon on the left edge that opens a drawer ---------- */
.spot-n--tab{ left:0; top:42%; display:flex; align-items:flex-start; transform:translateX(-110%); transition:transform .55s var(--ease); }
.spot-n--tab.is-in{ transform:translateX(calc(-100% + 40px)); }
.spot-n--tab.is-open{ transform:none; }
.spot-tab__panel{ width:300px; background:var(--night); color:var(--t2); border-radius:0 18px 18px 0; padding:16px 16px 16px 18px; box-shadow:0 24px 60px -20px rgba(0,0,0,.6); border:1px solid rgba(201,164,92,.3); border-left:0; position:relative; }
.spot-tab__panel .spot-eyebrow{ color:var(--gold-2); }
.spot-tab__panel .spot-x{ color:var(--t2); }
.spot-tab__panel .spot-x:hover{ background:rgba(255,255,255,.08); color:#fff; }
.spot-tab__item{ display:flex; gap:12px; align-items:center; margin-top:10px; }
.spot-tab__item img{ width:96px; aspect-ratio:16/9; border-radius:10px; object-fit:cover; flex-shrink:0; }
.spot-tab__item b{ display:block; color:#fff; font-size:14px; line-height:1.3; }
.spot-tab__item p{ font-size:12px; color:var(--gold-2); margin-top:3px; line-height:1.35; }
.spot-tab__foot{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:12px; padding-top:12px; border-top:1px solid var(--night-line); }
.spot-tab__foot .spot-price{ color:#fff; }
.spot-tab__foot .spot-cta{ background:var(--grad-gold); color:#1A1408 !important; }
.spot-tab__handle{ width:40px; margin-top:22px; padding:14px 0; border-radius:0 12px 12px 0; background:var(--grad-gold); color:#1A1408; border:0; cursor:pointer; box-shadow:6px 10px 24px -8px rgba(0,0,0,.4); writing-mode:vertical-rl; transform:rotate(180deg); font-weight:800; font-size:12px; letter-spacing:.08em; text-transform:uppercase; display:flex; align-items:center; gap:8px; }
.spot-tab__handle i{ font-style:normal; display:inline-block; transform:rotate(90deg); }
.spot-n--tab.is-in:not(.is-open) .spot-tab__handle{ animation:spot-nudge 3.6s ease-in-out 1s infinite; }
@keyframes spot-nudge{ 0%,80%,100%{ transform:rotate(180deg) translateX(0) } 88%{ transform:rotate(180deg) translateX(-5px) } 94%{ transform:rotate(180deg) translateX(2px) } }

/* ---------- 2c. Bubble: pops out of the bottom-left corner ---------- */
.spot-n--bubble{ left:20px; bottom:22px; display:flex; align-items:flex-end; gap:10px; pointer-events:none; }
.spot-bubble__face{ pointer-events:auto; width:58px; height:58px; border-radius:50%; flex-shrink:0; overflow:hidden; border:3px solid #fff; box-shadow:0 0 0 2px var(--gold), 0 14px 30px -8px rgba(0,0,0,.45); transform:scale(0); transition:transform .5s cubic-bezier(.34,1.56,.64,1); background:var(--night-2); }
.spot-bubble__face img{ width:100%; height:100%; object-fit:cover; }
.spot-bubble__say{ pointer-events:auto; position:relative; max-width:290px; background:#fff; border:1px solid var(--line); border-radius:18px 18px 18px 4px; padding:11px 34px 11px 14px; box-shadow:0 20px 44px -16px rgba(22,20,29,.4); opacity:0; transform:translateY(10px) scale(.92); transform-origin:bottom left; transition:opacity .35s .25s, transform .45s .25s var(--ease); }
.spot-bubble__say b{ display:block; font-size:13.5px; line-height:1.3; margin-top:2px; }
.spot-bubble__say p{ font-size:12px; color:var(--ink-2); margin-top:2px; line-height:1.35; }
.spot-bubble__say .spot-bubble__go{ display:inline-flex; gap:6px; align-items:center; margin-top:7px; font-size:12.5px; font-weight:800; color:var(--gold-deep); }
.spot-n--bubble.is-in .spot-bubble__face{ transform:scale(1); }
.spot-n--bubble.is-in .spot-bubble__say{ opacity:1; transform:none; }
.spot-n--bubble .spot-bubble__face::after{ content:''; }
.spot-n--bubble.is-in .spot-bubble__face{ animation:spot-wobble 5s ease-in-out 1.2s infinite; }
@keyframes spot-wobble{ 0%,86%,100%{ transform:scale(1) rotate(0) } 90%{ transform:scale(1.06) rotate(-6deg) } 95%{ transform:scale(1.06) rotate(6deg) } }

/* ---------- 2d. Hang-tag: a jeweller's price tag that swings down from the header ---------- */
.spot-n--tag{ top:calc(var(--annbar-h) + var(--topbar-h)); left:max(24px, calc((100vw - var(--wrap)) / 2 + 12px)); width:200px; transform-origin:50% 0; transform:translateY(-140%) rotate(-12deg); transition:transform .9s cubic-bezier(.34,1.4,.64,1); }
.spot-n--tag.is-in{ transform:none; animation:spot-swing 2.8s ease-in-out .9s 1 both; }
@keyframes spot-swing{ 0%{ transform:rotate(0) } 15%{ transform:rotate(7deg) } 35%{ transform:rotate(-5deg) } 55%{ transform:rotate(3deg) } 75%{ transform:rotate(-1.5deg) } 100%{ transform:rotate(0) } }
.spot-tag__string{ display:block; width:2px; height:26px; margin:0 auto; background:linear-gradient(var(--gold-deep),var(--gold)); }
.spot-tag__card{ display:block; position:relative; padding:24px 14px 14px; text-align:center; background:linear-gradient(160deg,#FFFBF2,#F3DEAE); border:1px solid #D9B972; color:var(--ink);
  clip-path:polygon(22% 0,78% 0,100% 14%,100% 100%,0 100%,0 14%); border-radius:0 0 14px 14px; box-shadow:0 18px 30px -12px rgba(0,0,0,.35); filter:drop-shadow(0 14px 18px rgba(0,0,0,.18)); }
.spot-tag__card::before{ content:''; position:absolute; top:8px; left:50%; width:10px; height:10px; margin-left:-5px; border-radius:50%; background:var(--bg); box-shadow:inset 0 1px 2px rgba(0,0,0,.35); border:1.5px solid var(--gold-deep); }
.spot-tag__card small{ display:block; font-size:10px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--gold-deep); }
.spot-tag__card b{ display:block; font-family:var(--f-display); font-size:15px; line-height:1.25; margin:5px 0 7px; }
.spot-tag__card .spot-price{ font-size:17px; }
.spot-tag__card em{ display:block; font-style:normal; font-size:11.5px; font-weight:800; color:var(--gold-deep); margin-top:6px; }
.spot-n--tag .spot-x{ top:auto; bottom:-30px; right:50%; margin-right:-13px; background:#fff; box-shadow:var(--sh-1); }

/* ---------- placement around other fixed UI ---------- */
html.sheet-open .spot-n, html.wa-modal-open .spot-n{ opacity:0 !important; pointer-events:none !important; }
body.has-buybar .spot-n--bubble{ bottom:22px; }
@media (max-width:900px){
  .spot-n--corner{ left:12px; right:12px; width:auto; top:calc(var(--annbar-h) + var(--topbar-h) + 10px); transform:translateY(-130%); display:grid; grid-template-columns:110px 1fr; }
  .spot-n--corner.is-in{ transform:none; }
  .spot-n--corner .spot-corner__img{ aspect-ratio:auto; height:100%; }
  .spot-n--corner .spot-corner__body p{ display:none; }
  .spot-n--corner .spot-corner__body{ padding:10px 12px 12px; }
  .spot-n--corner .spot-corner__body b{ font-size:13.5px; padding-right:22px; }
  .spot-corner__row{ flex-wrap:wrap; gap:6px; }
  .spot-n--corner .spot-price s{ display:none; }
  .spot-n--corner .spot-cta{ padding:7px 11px; font-size:12px; }
  .spot-n--corner .spot-timer{ grid-column:1 / -1; }
  .spot-n--bubble{ left:12px; bottom:calc(var(--tabbar-h) + 14px + env(safe-area-inset-bottom)); }
  body.has-buybar .spot-n--bubble{ bottom:calc(var(--tabbar-h) + 82px + env(safe-area-inset-bottom)); }
  .spot-bubble__say{ max-width:calc(100vw - 172px); }
  .spot-n--tag{ left:auto; right:16px; width:170px; }
  .spot-tab__panel{ width:min(300px, calc(100vw - 60px)); }
}

/* ---------- reduced motion: fade only ---------- */
@media (prefers-reduced-motion: reduce){
  .spot-band::before,.spot-mini::after,.ccard--spot,.spot-band__eyebrow span{ animation:none !important; }
  .spot-n, .spot-n *{ animation:none !important; transition:opacity .2s !important; }
  .spot-n--corner,.spot-n--tag,.spot-n--tab{ transform:none !important; opacity:0; }
  .spot-n--tab.is-in{ opacity:1; transform:translateX(calc(-100% + 40px)) !important; }
  .spot-n--tab.is-open{ transform:none !important; }
  .spot-n.is-in{ opacity:1; }
  .spot-bubble__face,.spot-bubble__say{ transform:none !important; }
}
