/*
 * Davet modulleri (0.8.0): kayan bant, kose susleri, muzik dugmesi ve
 * kazi-kazan. Her temada calisir; renkler temanin degiskenlerinden gelir,
 * tema dosyasi `--bant-*`, `--kose-*`, `--kazi-*` ile ince ayar yapar.
 * Azaltilmis hareket tercihinde bant ve susler durur. Harici kaynak yok.
 */

/* --- Kayan bant ----------------------------------------------------------
   Iki ozdes ray yan yana; ic kutu yarisi kadar kayinca dongu kusursuz
   birlesir. Ikinci ray ekran okuyucudan gizli. Uzerine gelince durur. */
.rsvp-bant{--bant-zemin:var(--vurgu);--bant-metin:var(--vurgu-ustu);position:relative;z-index:1;overflow:hidden;direction:ltr;
  background:var(--bant-zemin);color:var(--bant-metin);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.rsvp-bant__ic{display:flex;width:max-content;direction:ltr;animation:rsvp-bant var(--bant-sure,32s) linear infinite}
.rsvp-bant__ray{display:flex;flex:none;margin:0;padding:0;list-style:none}
.rsvp-bant__ray li{display:flex;align-items:center;white-space:nowrap;padding:11px 0;font-size:14px;font-weight:600;letter-spacing:.06em;unicode-bidi:plaintext}
.rsvp-bant__ray li::after{content:"";width:6px;height:6px;margin:0 26px;transform:rotate(45deg);background:currentColor;opacity:.55}
@keyframes rsvp-bant{to{transform:translateX(-50%)}}

/* --- Kose susleri --------------------------------------------------------
   Sabit iki kose; renk maskeyle temadan. Hafif ruzgar salinimi, kaydirdikca
   (destekleyen tarayicida) birkac piksel yukselir. Icerik ustte kalir. */
.rsvp-kose{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.rsvp-kose span{position:absolute;width:clamp(96px,26vw,210px);aspect-ratio:1;background:var(--kose-renk,var(--vurgu));
  opacity:var(--kose-opaklik,.42);-webkit-mask:var(--kose-url) center/contain no-repeat;mask:var(--kose-url) center/contain no-repeat;
  animation:rsvp-kose-ruzgar 7s ease-in-out infinite alternate}
.rsvp-kose__ust{top:-8px;left:-8px;transform-origin:8% 8%}
.rsvp-kose__alt{right:-8px;bottom:-8px;transform-origin:50% 50%;animation-name:rsvp-kose-ruzgar-alt !important;animation-delay:-3.5s !important}
@keyframes rsvp-kose-ruzgar{from{transform:rotate(-2deg) scale(1)}to{transform:rotate(2.5deg) scale(1.04)}}
@keyframes rsvp-kose-ruzgar-alt{from{transform:rotate(178deg) scale(1)}to{transform:rotate(182.5deg) scale(1.04)}}
@supports (animation-timeline: scroll()){
  .rsvp-kose span{animation:rsvp-kose-ruzgar 7s ease-in-out infinite alternate,rsvp-kose-kay linear both;animation-timeline:auto,scroll(root)}
  .rsvp-kose__alt{animation:rsvp-kose-ruzgar-alt 7s ease-in-out -3.5s infinite alternate,rsvp-kose-kay linear both !important;animation-timeline:auto,scroll(root) !important}
}
@keyframes rsvp-kose-kay{to{translate:0 -28px}}
.rsvp--kose .rsvp-kapak,.rsvp--kose .rsvp-wrap,.rsvp--kose .rsvp-bant{position:relative;z-index:1}

/* --- Muzik dugmesi ------------------------------------------------------
   Sol ust kosede (sagda dil secici, altta gonder cubugu var). Betik
   yoksa gizli; calarken plak doner ve cubuklar oynar. */
/* 0.14.0: kucuk daire yerine belirgin kapsul: dolu vurgu zemini, "Sesi ac"
   yazisi ve yumusak isima (brif 28: nokta gibi gorunuyordu). */
.rsvp-muzik{position:fixed;top:calc(env(safe-area-inset-top,0px) + 12px);inset-inline-start:12px;z-index:40;
  display:inline-flex;align-items:center;gap:8px;height:46px;padding:0 16px 0 10px;border:1px solid color-mix(in srgb,#fff 35%,transparent);border-radius:999px;
  background:var(--vurgu);color:var(--vurgu-ustu);font:600 14px/1 var(--govde-font);letter-spacing:.01em;white-space:nowrap;
  box-shadow:0 8px 22px color-mix(in srgb,var(--vurgu) 38%,transparent),0 0 0 4px color-mix(in srgb,var(--vurgu) 14%,transparent);cursor:pointer;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.rsvp-muzik__yazi{display:inline-block}.rsvp-muzik__yazi[hidden]{display:none}
.rsvp-muzik[aria-pressed="true"]{background:color-mix(in srgb,var(--yuzey) 88%,transparent);color:var(--vurgu-koyu);border-color:var(--cizgi-koyu);box-shadow:0 6px 18px rgba(0,0,0,.14)}
.rsvp-muzik[hidden]{display:none}
/* Tema onizlemesinde ust seridin metnini ortmesin. */
body:has(.rsvp-tema-onizleme) .rsvp-muzik{top:auto;bottom:calc(env(safe-area-inset-bottom,0px) + 96px)}
.rsvp-muzik svg{width:26px;height:24px;flex:none;overflow:visible}
.rsvp-muzik:focus-visible{outline:3px solid var(--vurgu);outline-offset:3px}
.rsvp-muzik__plak{transform-origin:10.5px 12px}
.rsvp-muzik__cubuk{transform-origin:center bottom;transform-box:fill-box;opacity:0}
.rsvp-muzik[aria-pressed="true"] .rsvp-muzik__plak{animation:rsvp-plak 5s linear infinite}
.rsvp-muzik[aria-pressed="true"] .rsvp-muzik__cubuk{opacity:1;animation:rsvp-cubuk .9s ease-in-out infinite alternate}
.rsvp-muzik[aria-pressed="true"] .rsvp-muzik__cubuk:nth-of-type(2){animation-delay:-.3s}
.rsvp-muzik[aria-pressed="true"] .rsvp-muzik__cubuk:nth-of-type(3){animation-delay:-.6s}
.rsvp-muzik--davet{animation:rsvp-davet 1.6s ease-in-out 3}
@keyframes rsvp-plak{to{transform:rotate(360deg)}}
@keyframes rsvp-cubuk{from{transform:scaleY(.35)}to{transform:scaleY(1)}}
@keyframes rsvp-davet{50%{box-shadow:0 8px 22px color-mix(in srgb,var(--vurgu) 38%,transparent),0 0 0 12px color-mix(in srgb,var(--vurgu) 20%,transparent)}}

/* --- Kazi-kazan (Dolce Vita) --------------------------------------------
   Tarih her zaman metin; betik ustune metalik varakli tuval cizer. Varak
   renkleri `--kazi-varak-1..5` (betik okur); imlec bozuk para. %30
   kazininca kalan varak buyuyerek erir. */
.rsvp-kazi{--kazi-zemin:radial-gradient(circle at 50% 38%,var(--yuzey) 0%,var(--yuzey-2) 100%);--kazi-halka:var(--vurgu);
  --kazi-baslik:var(--ink-900);--kazi-ay:var(--vurgu-koyu);--kazi-gun:var(--ink-900);
  --kazi-varak-1:#E9D3A6;--kazi-varak-2:#D6B77A;--kazi-varak-3:#F3E2BC;--kazi-varak-4:#C9A565;--kazi-varak-5:#E2C893;
  margin:0 0 var(--aralik-md);padding-top:14px;text-align:center}
.rsvp-kazi__baslik{margin:0 0 4px;font-family:var(--baslik-font);font-weight:600;font-size:clamp(22px,6vw,28px);color:var(--kazi-baslik)}
.rsvp-kazi__ipucu{margin:0;font-size:14px;color:var(--ink-600)}
/* 0.14.0: kazima alani genis bilet (daire yerine): gun solda buyuk, ay ve
   uzun tarih sagda; kenarlarda bilet kesikleri. */
.rsvp-kazi__alan{position:relative;width:min(90vw,460px);aspect-ratio:2.35/1;margin:14px auto 8px;border-radius:18px;overflow:hidden;
  background:var(--kazi-zemin);
  box-shadow:0 14px 32px rgba(0,0,0,.14),inset 0 0 0 1px var(--cizgi-koyu),inset 0 0 0 7px var(--yuzey),inset 0 0 0 8px var(--kazi-halka);
  -webkit-mask:radial-gradient(circle 11px at 0 50%,transparent 98%,#000) left/51% 100% no-repeat,radial-gradient(circle 11px at 100% 50%,transparent 98%,#000) right/51% 100% no-repeat;
  mask:radial-gradient(circle 11px at 0 50%,transparent 98%,#000) left/51% 100% no-repeat,radial-gradient(circle 11px at 100% 50%,transparent 98%,#000) right/51% 100% no-repeat}
.rsvp-kazi__tarih{position:absolute;inset:0;display:grid;grid-template-columns:auto 1px minmax(0,1fr);grid-template-rows:auto auto;column-gap:clamp(14px,4vw,24px);align-content:center;align-items:center;margin:0;padding:0 clamp(24px,7%,40px);text-align:start}
.rsvp-kazi__gun{grid-column:1;grid-row:1 / 3;font-family:var(--baslik-font);font-weight:600;font-size:clamp(62px,17vw,88px);line-height:.9;color:var(--kazi-gun)}
.rsvp-kazi__tarih::before{content:"";grid-column:2;grid-row:1 / 3;align-self:stretch;margin:18% 0;background:var(--kazi-halka);opacity:.45}
.rsvp-kazi__ay{grid-column:3;grid-row:1;align-self:end;font-size:clamp(13px,3.4vw,15px);font-weight:700;letter-spacing:.26em;text-transform:uppercase;color:var(--kazi-ay)}
.rsvp-kazi__uzun{grid-column:3;grid-row:2;align-self:start;margin-top:6px;font-size:clamp(13px,3.4vw,15px);line-height:1.35;color:var(--ink-700)}
.rsvp-kazi__alan canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;transition:all .8s ease;
  cursor:url("modul/kazi-para.svg") 16 16,grab}
.rsvp-kazi--acik .rsvp-kazi__alan canvas{opacity:0;transform:scale(1.1);pointer-events:none}
.rsvp-kazi--acik .rsvp-kazi__alan{animation:rsvp-kazi-parla 1.2s ease 1}
@keyframes rsvp-kazi-parla{from{outline:0 solid color-mix(in srgb,var(--kazi-varak-3) 70%,transparent);outline-offset:0}
  to{outline:26px solid transparent;outline-offset:6px}}
.rsvp-kazi__goster{min-height:44px;padding:0 14px;border:0;background:none;font:inherit;font-size:14px;color:var(--vurgu-koyu);
  text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.rsvp-kazi__goster:focus-visible{outline:3px solid var(--vurgu);outline-offset:2px;border-radius:6px}
.rsvp-kazi__yer{margin:4px 0 0;font-size:14px;color:var(--ink-700)}
.rsvp-kazi--acik .rsvp-kazi__goster,.rsvp-kazi--acik .rsvp-kazi__ipucu{display:none}

@media (prefers-reduced-motion:reduce){
  .rsvp-bant__ic{width:auto;animation:none;justify-content:center}
  .rsvp-bant__ray{flex-wrap:wrap;justify-content:center;padding:0 12px}
  .rsvp-bant__ray[aria-hidden]{display:none}
  .rsvp-kose span{animation:none !important}
  .rsvp-muzik__plak,.rsvp-muzik__cubuk,.rsvp-muzik--davet{animation:none !important}
  .rsvp-kazi__alan canvas{transition:opacity .2s linear}
  .rsvp-kazi--acik .rsvp-kazi__alan canvas{transform:none}
  .rsvp-kazi--acik .rsvp-kazi__alan{animation:none}
}
