.village-event-launcher {
  position: fixed; right: 14px; top: calc(max(10px, env(safe-area-inset-top)) + var(--top-h, 80px) + var(--online-h, 36px) + var(--alerts-h, 0px) + 16px); z-index: var(--z-alerts, 7);
  max-width: calc(100vw - 28px); min-height: var(--touch-target); padding: var(--space-2) var(--space-4);
  color: var(--ink); background: var(--surface-inset); border: 1px solid var(--border);
  border-radius: var(--radius-pill); box-shadow: var(--shadow-sm); font-weight: 700;
}
#quick-dock .village-event-launcher {
  position: relative; top: auto; right: auto; bottom: auto; width: auto; min-width: 44px;
  height: 44px; min-height: 44px; padding: 0 11px; max-width: none; font-size: 13px;
  border-radius: var(--radius-pill); background: var(--warning-surface); border-color: var(--even);
  display: flex; align-items: center; gap: 6px; flex: none;
}
#quick-dock .village-event-launcher[hidden] { display: none; }
#quick-dock .village-event-label { white-space: nowrap; font: 700 12px/1.2 var(--font-body); }
body:has(#quick-dock .is-open) #quick-dock .village-event-launcher { width: 44px; padding: 0; justify-content: center; font-size: 20px; }
body:has(#quick-dock .is-open) #quick-dock .village-event-label { display: none; }
/* An open map/district card starts at x≈70, right of the dock column: the wide "Köyde bir haber var" pill would cover the card's own buttons (%25), so it folds to its icon. */
body:has(#nav:not([hidden])) #quick-dock .village-event-launcher { width: 44px; padding: 0; justify-content: center; font-size: 20px; }
body:has(#nav:not([hidden])) #quick-dock .village-event-label { display: none; }
@media (max-height: 500px), (max-width: 760px) { /* on a phone the wide pill would cover the map card's left chips */
  #quick-dock .village-event-launcher { width: 44px; padding: 0; justify-content: center; font-size: 20px; }
  #quick-dock .village-event-label { display: none; }
}
/* Skin (surface, border, radius, shadow) is the shared dialog contract in style.css. */
.village-event-dialog {
  padding: 0; width: min(520px, calc(100vw - 24px));
  overflow-y: auto; overscroll-behavior: contain; font-family: var(--font-body);
}
/* The ✕ gets its own top row (touch-target tall): it used to sit on the scene band and hid its corner icon. */
.village-event-dialog .village-event-paper { position: relative; padding-top: calc(var(--touch-target) + 4px); }
.village-event-paper { padding: var(--space-5); background: radial-gradient(ellipse at top, var(--surface-raised), transparent 65%); }
.village-event-close { position: absolute; right: 8px; top: 4px; min-width: var(--touch-target); min-height: var(--touch-target); color: var(--muted); }
.village-event-kicker { margin: 0 36px var(--space-3) 0; color: var(--muted); font-size: var(--text-xs); letter-spacing: .1em; text-transform: uppercase; font-weight: 700; }
.village-event-emblem { display: inline-block; font-size: 44px; line-height: 1.3; } /* inline box: its celebration scale never widens the card */
.village-event-dialog h2 { margin: var(--space-2) 0 var(--space-3); font-family: var(--font-display); font-size: var(--text-xl); line-height: 1.25; color: var(--ink); }
.village-event-choices .village-event-shortage { color: var(--bad); font-weight: 700; }
.village-event-story, .village-event-result { font-size: var(--text-md); line-height: 1.6; }
.village-event-clock { color: var(--muted); font-size: var(--text-sm); font-weight: 600; }
.village-event-choices { display: grid; gap: var(--space-2); }
.village-event-choices button { display: grid; gap: var(--space-2); width: 100%; text-align: left; }
.village-event-choices strong { font-size: var(--text-md); }
.village-event-choices span { font-size: var(--text-sm); line-height: 1.5; }
.village-event-choices .village-event-cost { color: var(--muted); font-weight: 600; }
.village-event-shortage, .village-event-feedback { color: var(--bad); }
/* Olay etkileri (public/random-events-ui.js): seçeneğin altında ve "Süren etkiler" listesinde. Renk yalnız temadan gelen --good/--bad; yön ayrıca ▲/▼ ile de okunur. */
.village-event-choices .village-event-effects { display: grid; gap: 2px; }
.ev-fx { display: block; overflow-wrap: anywhere; font-weight: 600; }
.ev-fx.is-good { color: var(--good); }
.ev-fx.is-bad { color: var(--bad); }
.olay-etkileri { margin-top: var(--space-3); }
.olay-etkileri h4 { margin: 0 0 var(--space-2); font-size: var(--text-sm); color: var(--muted); }
.olay-etkileri ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-1); }
.olay-etkileri li { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px var(--space-3); min-width: 0; font-size: var(--text-sm); }
.olay-etkileri li small { color: var(--muted); }
.village-event-active:empty { display: none; }
.village-event-feedback:empty { display: none; }
.village-event-footnote { font-size: var(--text-xs); color: var(--muted); margin-bottom: 0; line-height: 1.5; }
.village-event-history { list-style: none; padding: 0; }
.village-event-history li { border-left: 2px solid var(--border-soft); padding: var(--space-1) var(--space-3); margin: var(--space-3) 0; }
.village-event-history time { font-size: var(--text-xs); color: var(--muted); }
.village-event-history p { font-size: var(--text-sm); line-height: 1.6; margin: var(--space-1) 0; }
/* Keep aligned with SHEET_QUERY in mobile-ui.js. */
@media (max-width: 1100px) {
  .sheet-open .village-event-launcher { visibility: hidden; }
  .village-event-paper { padding: var(--space-4) var(--space-4); }
  .village-event-emblem { font-size: 32px; }
  .village-event-launcher { top: auto; bottom: calc(var(--bar-h, 80px) + env(safe-area-inset-bottom) + 12px); font-size: var(--text-sm); }
}

/* --- Launcher: dikkat çeker (sallanma + nabız halkası), hover/odakta durur ------------------------- */
.village-event-launcher:not([hidden]) { animation: ev-wiggle 6s ease-in-out infinite; }
/* The ring is the launcher's ::before (opacity + scale only, compositor; the box-shadow animation repainted on the main thread). Same box as the
   touch hit area ui-modern-a.css grows on the dock launcher (inset -3px), so both agree; ::after stays the caption. 2026-11-06 */
.village-event-launcher:not([hidden])::before { content: ''; position: absolute; inset: -3px; border-radius: inherit;
  box-shadow: 0 0 0 14px #e2b24a; opacity: 0; animation: ev-ring 6s ease-out infinite; }
/* While it pulses, the launcher keeps the shadow the old box-shadow animation imposed (the theme's inset accent stripe shows on hover/focus only, as before). */
@media (prefers-reduced-motion: no-preference) and (hover: none) { .village-event-launcher:not([hidden]):not(:focus-visible) { box-shadow: var(--shadow-sm); } }
@media (prefers-reduced-motion: no-preference) and (hover: hover) { .village-event-launcher:not([hidden]):not(:focus-visible):not(:hover) { box-shadow: var(--shadow-sm); } }
.village-event-launcher:focus-visible, .village-event-launcher:focus-visible::before { animation: none; }
@media (hover: hover) { .village-event-launcher:hover, .village-event-launcher:hover::before { animation: none; } }
@keyframes ev-wiggle { 0%, 70%, 90%, 100% { rotate: 0deg; } 73% { rotate: -7deg; } 77% { rotate: 7deg; } 81% { rotate: -5deg; } 85% { rotate: 4deg; } }
@keyframes ev-ring { 0%, 70% { opacity: 0; transform: scale(.97); } 72% { opacity: .6; } 100% { opacity: 0; transform: scale(1.06); } }

/* --- Sahne bandı: 10 kodlu sahne (event-scenes.js), aria-hidden, görsel dosya yok -------------------- */
.ev-scene { position: relative; max-width: 100%; height: 120px; margin: 0 0 var(--space-3); border-radius: var(--radius-lg); overflow: hidden; isolation: isolate;
  border: 1px solid var(--border-soft); box-shadow: inset 0 -10px 18px #2e201322; user-select: none; }
:where(.ev-scene i) { position: absolute; display: block; font-style: normal; }
:where(.ev-scene > span:not(.ev-fig)) { position: absolute; inset: 0; display: flex; }
:where(.ev-scene > span:not(.ev-fig) > i) { position: relative; }
.ev-fig { position: absolute; inset: 0; display: grid; place-items: center; padding-bottom: 14px; font-size: 52px; z-index: 3; pointer-events: none;
  filter: drop-shadow(0 4px 6px #16100b66); animation: ev-bob 3.4s ease-in-out infinite; }
@keyframes ev-bob { 50% { transform: translateY(-5px) scale(1.04); } }
.village-event-close { background: #fffaf0cc; border-radius: 50%; z-index: 4; }

/* caravan */
.ev-scene-caravan { background: linear-gradient(#fbe3b0, #eec27a); }
.ev-scene-caravan .ev-sun { right: 16px; top: 10px; width: 34px; height: 34px; border-radius: 50%; background: #fff6cf; box-shadow: 0 0 18px 8px #fff1b88c; }
.ev-scene-caravan .ev-dune { left: -10%; bottom: -26px; width: 120%; height: 56px; border-radius: 50% 50% 0 0; background: #d9a458; }
.ev-scene-caravan .ev-herd { inset: auto auto 10px -110px; gap: 4px; animation: ev-trek 11s linear infinite; }
.ev-scene-caravan .ev-camel { font-size: 28px; animation: ev-step .7s ease-in-out infinite alternate; }
.ev-scene-caravan .ev-camel:nth-child(2) { animation-delay: .2s; }
.ev-scene-caravan .ev-camel:nth-child(3) { animation-delay: .4s; }
.ev-scene-caravan .ev-dust { bottom: 10px; width: 14px; height: 14px; border-radius: 50%; background: #fff0d2b3; filter: blur(2px); animation: ev-puff 2.4s ease-out infinite; }
.ev-scene-caravan .ev-dust.ev-n1 { left: 22%; }
.ev-scene-caravan .ev-dust.ev-n2 { left: 52%; animation-delay: .8s; }
.ev-scene-caravan .ev-dust.ev-n3 { left: 78%; animation-delay: 1.6s; }
@keyframes ev-trek { to { transform: translateX(calc(520px + 110px)); } }
@keyframes ev-step { from { transform: translateY(0) rotate(-3deg); } to { transform: translateY(-4px) rotate(3deg); } }
@keyframes ev-puff { 0% { transform: translate(0, 0) scale(.5); opacity: .9; } 100% { transform: translate(-26px, -18px) scale(2.2); opacity: 0; } }

/* drought */
.ev-scene-drought { background: linear-gradient(#ffe6a8, #f0a553); }
.ev-scene-drought .ev-sun { right: 20px; top: 6px; font-size: 42px; animation: ev-sun 3.2s ease-in-out infinite; }
.ev-scene-drought .ev-heat { left: 16%; width: 68%; height: 3px; border-radius: 3px; background: #fff7;
  animation: ev-shimmer 2.2s ease-in-out infinite; }
.ev-scene-drought .ev-heat.ev-n1 { bottom: 38px; }
.ev-scene-drought .ev-heat.ev-n2 { bottom: 50px; animation-delay: .5s; }
.ev-scene-drought .ev-heat.ev-n3 { bottom: 62px; animation-delay: 1s; }
.ev-scene-drought .ev-cracks { left: 0; right: 0; bottom: 0; height: 30px; background:
  repeating-linear-gradient(115deg, transparent 0 22px, #5a341888 22px 24px), repeating-linear-gradient(65deg, transparent 0 34px, #5a341866 34px 36px), #c48444;
  border-top: 2px solid #9c6230; }
@keyframes ev-sun { 50% { transform: scale(1.16) rotate(8deg); filter: drop-shadow(0 0 12px #ffd24a); } }
@keyframes ev-shimmer { 0%, 100% { transform: translateX(-10px) scaleX(.8); opacity: .2; } 50% { transform: translateX(10px) scaleX(1.1); opacity: .65; } }

/* storm */
.ev-scene-storm { background: linear-gradient(#66788f, #2f3d52); }
.ev-scene-storm .ev-cloud { left: 8%; top: 8px; width: 96px; height: 26px; border-radius: 20px; background: #9aa6b6; box-shadow: 22px -12px 0 4px #9aa6b6, 52px -4px 0 0 #9aa6b6; animation: ev-drift 6s ease-in-out infinite alternate; }
.ev-scene-storm .ev-cloud-b { left: auto; right: 8%; top: 16px; scale: .8; background: #7f8b9c; box-shadow: 22px -12px 0 4px #7f8b9c, 52px -4px 0 0 #7f8b9c; animation-duration: 8s; }
.ev-scene-storm .ev-drop { top: -18px; width: 2px; height: 16px; border-radius: 2px; background: #c2defff0; animation: ev-rain .85s linear infinite; }
.ev-scene-storm .ev-drop.ev-n1 { left: 6%; } .ev-scene-storm .ev-drop.ev-n2 { left: 17%; animation-delay: .3s; }
.ev-scene-storm .ev-drop.ev-n3 { left: 27%; animation-delay: .6s; } .ev-scene-storm .ev-drop.ev-n4 { left: 38%; animation-delay: .15s; }
.ev-scene-storm .ev-drop.ev-n5 { left: 49%; animation-delay: .45s; } .ev-scene-storm .ev-drop.ev-n6 { left: 60%; animation-delay: .7s; }
.ev-scene-storm .ev-drop.ev-n7 { left: 71%; animation-delay: .1s; } .ev-scene-storm .ev-drop.ev-n8 { left: 82%; animation-delay: .5s; }
.ev-scene-storm .ev-drop.ev-n9 { left: 93%; animation-delay: .25s; }
.ev-scene-storm .ev-flash { inset: 0; background: #fff; opacity: 0; z-index: 2; animation: ev-lightning 5s linear infinite; }
.ev-scene-storm .ev-wave { left: -10%; bottom: -4px; width: 120%; height: 20px; background: radial-gradient(circle at 20px 22px, #3f7fb8 17px, transparent 18px) repeat-x 0 0 / 40px 20px; animation: ev-wave 2.6s linear infinite; }
.ev-scene-storm .ev-wave-b { bottom: -10px; opacity: .7; animation-duration: 3.4s; animation-direction: reverse; }
@keyframes ev-drift { to { transform: translateX(26px); } }
@keyframes ev-rain { from { transform: translate(0, 0) rotate(12deg); } to { transform: translate(-14px, 150px) rotate(12deg); } }
@keyframes ev-lightning { 0%, 58%, 64%, 100% { opacity: 0; } 60% { opacity: .85; } 62% { opacity: .15; } 63% { opacity: .55; } }
@keyframes ev-wave { to { transform: translateX(-40px); } }

/* fire */
.ev-scene-fire { background: linear-gradient(#3a2018, #86301a); }
.ev-scene-fire .ev-flames { inset: auto 0 0 0; justify-content: space-around; align-items: flex-end; }
.ev-scene-fire .ev-flame { font-size: 34px; transform-origin: 50% 100%; animation: ev-flicker .5s ease-in-out infinite alternate; }
.ev-scene-fire .ev-flame:nth-child(2) { font-size: 42px; animation-duration: .38s; animation-delay: .1s; }
.ev-scene-fire .ev-flame:nth-child(3) { animation-duration: .45s; animation-delay: .2s; }
.ev-scene-fire .ev-smoke { bottom: 44px; width: 18px; height: 18px; border-radius: 50%; background: #d8d2cc66; filter: blur(3px); animation: ev-rise 3s ease-out infinite; }
.ev-scene-fire .ev-smoke.ev-n1 { left: 24%; } .ev-scene-fire .ev-smoke.ev-n2 { left: 50%; animation-delay: 1s; } .ev-scene-fire .ev-smoke.ev-n3 { left: 74%; animation-delay: 2s; }
@keyframes ev-flicker { from { transform: scale(1, .92) rotate(-4deg); } to { transform: scale(1.06, 1.16) rotate(4deg); filter: brightness(1.25); } }
@keyframes ev-rise { 0% { transform: translate(0, 0) scale(.6); opacity: 0; } 20% { opacity: .8; } 100% { transform: translate(14px, -70px) scale(2.4); opacity: 0; } }

/* sickness */
.ev-scene-sickness { background: linear-gradient(#d4e8c8, #8db386); }
.ev-scene-sickness .ev-fog { width: 140px; height: 46px; border-radius: 50%; background: radial-gradient(#f2ffe8b3, #f2ffe800 70%); filter: blur(4px); animation: ev-fogdrift 7s ease-in-out infinite alternate; }
.ev-scene-sickness .ev-fog.ev-n1 { left: -20px; top: 14px; } .ev-scene-sickness .ev-fog.ev-n2 { right: -20px; top: 50px; animation-delay: -3s; }
.ev-scene-sickness .ev-fog.ev-n3 { left: 30%; bottom: -8px; animation-delay: -5s; }
.ev-scene-sickness .ev-leaf { top: -20px; font-size: 18px; filter: hue-rotate(-20deg) saturate(.8); animation: ev-leaf 6s linear infinite; }
.ev-scene-sickness .ev-leaf.ev-n1 { left: 12%; } .ev-scene-sickness .ev-leaf.ev-n2 { left: 36%; animation-delay: -2s; }
.ev-scene-sickness .ev-leaf.ev-n3 { left: 64%; animation-delay: -4s; } .ev-scene-sickness .ev-leaf.ev-n4 { left: 86%; animation-delay: -1s; }
@keyframes ev-fogdrift { to { transform: translateX(60px); opacity: .6; } }
@keyframes ev-leaf { 0% { transform: translate(0, 0) rotate(0); } 50% { transform: translate(26px, 70px) rotate(180deg); } 100% { transform: translate(-10px, 150px) rotate(360deg); } }

/* feast */
.ev-scene-feast { background: linear-gradient(#5b3a72, #d98a5c); }
.ev-scene-feast .ev-lanterns { inset: 0 0 auto 0; justify-content: space-around; height: 50px; }
.ev-scene-feast .ev-lantern { font-size: 26px; padding-top: 12px; transform-origin: 50% 0; animation: ev-swing 2.4s ease-in-out infinite alternate; }
.ev-scene-feast .ev-lantern::before { content: ''; position: absolute; left: 50%; top: 0; width: 1px; height: 14px; background: #ffe0a0; }
.ev-scene-feast .ev-lantern:nth-child(2) { animation-delay: -1.2s; margin-top: 8px; } .ev-scene-feast .ev-lantern:nth-child(3) { animation-delay: -.6s; }
.ev-scene-feast .ev-confetti { top: -12px; width: 6px; height: 10px; border-radius: 1px; animation: ev-confetti 3.2s linear infinite; }
.ev-scene-feast .ev-confetti.ev-n1 { left: 8%; background: #ffd24a; } .ev-scene-feast .ev-confetti.ev-n2 { left: 20%; background: #ff6b6b; animation-delay: -.8s; }
.ev-scene-feast .ev-confetti.ev-n3 { left: 33%; background: #4fd1c5; animation-delay: -1.6s; } .ev-scene-feast .ev-confetti.ev-n4 { left: 46%; background: #ff9ecb; animation-delay: -2.4s; }
.ev-scene-feast .ev-confetti.ev-n5 { left: 58%; background: #ffd24a; animation-delay: -.4s; } .ev-scene-feast .ev-confetti.ev-n6 { left: 70%; background: #ff6b6b; animation-delay: -1.2s; }
.ev-scene-feast .ev-confetti.ev-n7 { left: 82%; background: #4fd1c5; animation-delay: -2s; } .ev-scene-feast .ev-confetti.ev-n8 { left: 92%; background: #ff9ecb; animation-delay: -2.8s; }
.ev-scene-feast .ev-confetti.ev-n9 { left: 40%; background: #fff; animation-delay: -.2s; }
@keyframes ev-swing { from { transform: rotate(-13deg); } to { transform: rotate(13deg); } }
@keyframes ev-confetti { 0% { transform: translate(0, 0) rotate(0); } 100% { transform: translate(18px, 140px) rotate(540deg); } }

/* night */
.ev-scene-night { background: linear-gradient(#0e1838, #2e3d78); }
.ev-scene-night::after { content: ''; position: absolute; left: -10%; bottom: -26px; width: 120%; height: 48px; border-radius: 50% 50% 0 0; background: #0a0f24; z-index: 1; }
.ev-scene-night .ev-moon { left: 14%; top: 10px; font-size: 32px; filter: drop-shadow(0 0 10px #fff3b0); animation: ev-float 5s ease-in-out infinite; }
.ev-scene-night .ev-star { width: 4px; height: 4px; border-radius: 50%; background: #fff; box-shadow: 0 0 6px 2px #fff8; animation: ev-twinkle 2.2s ease-in-out infinite; }
.ev-scene-night .ev-star.ev-n1 { left: 36%; top: 16px; } .ev-scene-night .ev-star.ev-n2 { left: 58%; top: 34px; animation-delay: .5s; }
.ev-scene-night .ev-star.ev-n3 { left: 76%; top: 12px; animation-delay: 1s; } .ev-scene-night .ev-star.ev-n4 { left: 90%; top: 40px; animation-delay: 1.5s; }
.ev-scene-night .ev-star.ev-n5 { left: 6%; top: 48px; animation-delay: .8s; }
.ev-scene-night .ev-eyes { inset: auto 12% 12px auto; width: 26px; height: 6px; z-index: 2; animation: ev-blink 4s infinite; }
.ev-scene-night .ev-eyes i { position: absolute; top: 0; width: 8px; height: 5px; border-radius: 50%; background: #ffd84a; box-shadow: 0 0 8px 2px #ffd84acc; }
.ev-scene-night .ev-eyes i:last-child { left: 16px; }
@keyframes ev-float { 50% { transform: translateY(5px) rotate(-6deg); } }
@keyframes ev-twinkle { 0%, 100% { opacity: .25; transform: scale(.6); } 50% { opacity: 1; transform: scale(1.4); } }
@keyframes ev-blink { 0%, 44%, 52%, 100% { transform: scaleY(1); opacity: 1; } 48% { transform: scaleY(.1); } 70% { opacity: .15; } 80% { opacity: 1; } }

/* treasure */
.ev-scene-treasure { background: linear-gradient(#3f2c1b, #7b5a2b); }
.ev-scene-treasure .ev-glow { left: 50%; top: 52%; width: 150px; height: 150px; margin: -75px 0 0 -75px; border-radius: 50%; background: radial-gradient(#ffe38aaa, #ffe38a00 68%); animation: ev-glow 2.4s ease-in-out infinite; }
.ev-scene-treasure .ev-fig { animation: ev-shine 2.4s ease-in-out infinite; }
.ev-scene-treasure .ev-spark { font-size: 18px; z-index: 4; animation: ev-twinkle 1.8s ease-in-out infinite; }
.ev-scene-treasure .ev-spark.ev-n1 { left: 24%; top: 22px; } .ev-scene-treasure .ev-spark.ev-n2 { left: 38%; top: 74px; animation-delay: .4s; }
.ev-scene-treasure .ev-spark.ev-n3 { left: 62%; top: 20px; animation-delay: .8s; } .ev-scene-treasure .ev-spark.ev-n4 { left: 72%; top: 70px; animation-delay: 1.2s; }
.ev-scene-treasure .ev-spark.ev-n5 { left: 50%; top: 6px; animation-delay: 1.5s; }
@keyframes ev-glow { 50% { transform: scale(1.25); opacity: .7; } }
@keyframes ev-shine { 50% { transform: scale(1.06); filter: drop-shadow(0 0 14px #ffd24a) brightness(1.2); } }

/* harvest */
.ev-scene-harvest { background: linear-gradient(#fdeeb0, #f1c765); }
.ev-scene-harvest .ev-field { left: 0; right: 0; bottom: 0; height: 24px; background: repeating-linear-gradient(90deg, #c99a3c 0 14px, #b88a30 14px 28px); border-top: 2px solid #a8791f; }
.ev-scene-harvest .ev-wheat { inset: auto 0 6px 0; justify-content: space-around; align-items: flex-end; }
.ev-scene-harvest .ev-ear { font-size: 36px; transform-origin: 50% 100%; animation: ev-sway 2.2s ease-in-out infinite alternate; }
.ev-scene-harvest .ev-ear:nth-child(even) { animation-delay: -1.1s; }
.ev-scene-harvest .ev-bee { font-size: 16px; z-index: 4; animation: ev-fly 7s ease-in-out infinite; }
.ev-scene-harvest .ev-bee.ev-n1 { left: 14%; top: 24px; } .ev-scene-harvest .ev-bee.ev-n2 { left: 60%; top: 52px; animation-delay: -3.5s; animation-direction: reverse; }
@keyframes ev-sway { from { transform: rotate(-9deg); } to { transform: rotate(9deg); } }
@keyframes ev-fly { 0%, 100% { transform: translate(0, 0); } 25% { transform: translate(40px, -12px) rotate(8deg); } 50% { transform: translate(80px, 6px); } 75% { transform: translate(36px, 14px) rotate(-8deg); } }

/* visitor */
.ev-scene-visitor { background: linear-gradient(#f3e6c8, #d8bf8c); }
.ev-scene-visitor .ev-road { left: -5%; bottom: -14px; width: 110%; height: 40px; border-radius: 50% 50% 0 0; background: #b99560; }
.ev-scene-visitor .ev-traveler { left: -12%; bottom: 14px; font-size: 26px; animation: ev-wander 9s linear infinite; }
.ev-scene-visitor .ev-lamp { left: -12%; bottom: 28px; margin-left: 20px; font-size: 14px; animation: ev-wander 9s linear infinite, ev-flick .6s ease-in-out infinite alternate; }
.ev-scene-visitor .ev-scroll { right: 14px; top: 10px; font-size: 28px; transform-origin: 0 50%; animation: ev-unroll 4s ease-in-out infinite; }
@keyframes ev-wander { to { left: 108%; } }
@keyframes ev-flick { to { filter: brightness(1.4) drop-shadow(0 0 6px #ffc24a); } }
@keyframes ev-unroll { 0%, 100% { transform: scaleX(.25) rotate(-8deg); } 40%, 70% { transform: scaleX(1) rotate(0); } }

/* --- Kart açılışı: sahne açılır, başlık ve seçenekler kademeli gelir; seçim "basılır" ----------------- */
dialog.village-event-dialog[open] .ev-scene { animation: ev-scene-in 650ms var(--ease-out) both; }
@keyframes ev-scene-in { from { clip-path: inset(0 50% 0 50% round var(--radius-lg)); opacity: 0; transform: translateY(-10px) scale(.96); } to { clip-path: inset(0 0 0 0 round var(--radius-lg)); opacity: 1; transform: none; } }
dialog.village-event-dialog[open] :is(.village-event-kicker, .village-event-story, .village-event-clock, h2) { animation: ev-rise 420ms var(--ease-out) both; animation-delay: 300ms; }
dialog.village-event-dialog[open] h2 { animation-delay: 380ms; }
dialog.village-event-dialog[open] .village-event-story { animation-delay: 460ms; }
dialog.village-event-dialog[open] .village-event-clock { animation-delay: 520ms; }
@keyframes ev-rise { from { opacity: 0; transform: translateY(12px); } }
.village-event-choices button:active:not(:disabled) { transform: scale(.97); }
dialog.village-event-dialog[open] .village-event-choices > button.is-picked { animation: ev-picked 420ms var(--ease-back) both; opacity: 1; border-color: #e2b24a; background: #fff1c4; color: var(--ink); }
@keyframes ev-picked { 0% { transform: scale(1); } 35% { transform: scale(.95); } 70% { transform: scale(1.03); box-shadow: 0 0 0 8px #e2b24a55; } 100% { transform: scale(1); box-shadow: 0 0 0 0 #e2b24a00; } }

/* --- Karar sonucu: mühür + kazanç parıltısı / kayıp sarsıntısı --------------------------------------- */
.village-event-seal { margin: 0 auto var(--space-2); }
.village-event-result { position: relative; }
.village-event-result.is-gain { background: linear-gradient(100deg, transparent 30%, #ffe68c99 50%, transparent 70%) no-repeat 120% 0 / 250% 100%;
  animation: fx-result 700ms var(--ease-back) both, ev-glint 1.4s ease-out .6s both; }
.village-event-result.is-gain::after { content: '✨'; position: absolute; right: 6px; top: -10px; font-size: 20px; animation: ev-twinkle 1.6s ease-in-out 1s infinite; }
.village-event-result.is-loss { animation: fx-result 700ms var(--ease-back) both, ev-shake 480ms ease-in-out .7s both; }
@keyframes ev-glint { from { background-position: 120% 0; } to { background-position: -20% 0; } }
@keyframes ev-shake { 0%, 100% { translate: 0 0; } 20% { translate: -5px 0; } 40% { translate: 5px 0; } 60% { translate: -3px 0; } 80% { translate: 3px 0; } }

/* Mobil: daha alçak bant */
@media (max-width: 1100px) {
  .ev-scene { height: 90px; }
  .ev-fig { font-size: 40px; padding-bottom: 10px; }
  .ev-scene-caravan .ev-herd { animation-duration: 9s; }
  @keyframes ev-trek { to { transform: translateX(calc(100vw + 110px)); } }
}
@media (prefers-reduced-motion: reduce) {
  .ev-scene, .ev-scene *, .ev-scene::after, .village-event-launcher, .village-event-launcher::before, .village-event-result, .village-event-result::after, .village-event-seal { animation: none !important; }
}
