/* beta19.1: festival banner moves into the empty band above the HUD badges: one compact line, long text truncates */
.s-map .fstrip,.s-map.hud2 .fstrip{top:calc(9px + var(--sat));height:28px;align-items:center;z-index:6}
.s-map .fc,html.lg .s-map .fc{height:26px;font-size:11.5px;padding:0 9px 0 3px;gap:5px;box-shadow:0 1px 3px rgba(80,40,10,.12)}
.s-map .fc .fbadge,html.lg .s-map .fc .fbadge{height:18px;font-size:10px;padding:0 6px}
.s-map .fc small,html.lg .s-map .fc small{font-size:10.5px}
@media (display-mode:standalone){#app>.scr.s-map .fstrip,#app>.scr.s-map.hud2 .fstrip{top:calc(6px + var(--sat))}#app>.scr.s-map:has(.fstrip .fc) .ov{top:calc(40px + var(--sat))}}
/* beta19.1: collapsible "Choose your next pin" sheet */
.s-map .sheet{transition:top .25s ease,height .25s ease}
.s-map .grab{touch-action:none;cursor:grab;position:relative;width:56px;height:6px;margin-bottom:10px}
.s-map .grab::before{content:"";position:absolute;inset:-14px -24px}
.s-map .peek{display:none}
.s-map .sheet.collapsed{top:auto!important;height:calc(var(--end-pad) + 30px);overflow:hidden;touch-action:none;overscroll-behavior:none}
.s-map .sheet.collapsed>:not(.grab):not(.peek){display:none!important}
.s-map .sheet.collapsed .grab{margin-bottom:4px}
.s-map .sheet.collapsed .peek{display:block;width:100%;border:0;background:none;padding:4px 0 10px;font:800 15px var(--f-b);color:var(--maroon);cursor:pointer;touch-action:none;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html.hc .s-map .sheet.collapsed .peek{color:#000}
@media (prefers-reduced-motion:reduce){.s-map .sheet{transition:none}}
.s-map:has(.sheet.collapsed) .mapw{height:calc(100% - var(--nav-h) - var(--sab))}
@media (orientation:portrait),(min-height:501px){.s-map:has(.sheet.collapsed) .mapw svg{height:calc(clamp(150px,46dvh,372px) + 28px);overflow:visible}}
.s-map #nav-rand{right:max(12px,var(--sar))}
.s-map:has(.sheet.collapsed) .mapw{touch-action:none}

/* beta19.1 alignment audit (768–1920 px, chromium/firefox/webkit) */
/* A1: the floating Back button hugs the 560 px app column instead of the far viewport edge on wide screens */
@media (min-width:600px){.kot-back{left:max(calc(env(safe-area-inset-left,0px) + 8px),calc(50% - 280px + 8px))}}
/* A2: quiz lifeline row lines up with the question card and answers (18 px inset like its siblings) */
.s-quiz .ll{margin:0 18px 10px}
/* A3: results stamp text stays inside the stamp circle for long temple names */
.s-res .stamp>div{max-width:88px;line-height:1.1}
.s-res .stamp b{font-size:17px;line-height:1.02;display:inline-block;max-width:100%;overflow-wrap:anywhere}
.s-res .stamp span{font-size:7.5px;letter-spacing:.6px;line-height:1.2;display:inline-block}

/* beta19.1 stamp press + ink ring (MOTION-EXPLORATION idea 1). Transform/opacity only; ring takes the stamp's own colour so it suits every theme. */
.s-res .stamp{animation:stp191 520ms cubic-bezier(.3,.7,.4,1) both;transform:rotate(-6deg)}
.s-res .stamp .ink{position:absolute;inset:-8px;border-radius:50%;border:3px solid currentColor;opacity:0;pointer-events:none;animation:ink191 700ms ease-out 260ms both}
.s-res .stamp.kids{animation-duration:624ms}.s-res .stamp.kids .ink{animation-duration:840ms;animation-delay:312ms}
@keyframes stp191{0%{opacity:0;transform:scale(1.6) rotate(-14deg)}55%{opacity:1;transform:scale(.94) rotate(-6deg)}100%{opacity:1;transform:scale(1) rotate(-6deg)}}
@keyframes ink191{0%{opacity:0;transform:scale(1)}50%{opacity:.6;transform:scale(1)}100%{opacity:0;transform:scale(1.35)}}
@keyframes fade191{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.s-res .stamp,.s-res .stamp.kids{animation:fade191 200ms linear both;animation-duration:200ms!important;animation-delay:0s!important}.s-res .stamp .ink{display:none;animation:none}}
/* beta19.1 darshan image: static, never animated/filtered/overlaid; fallback colours are fixed across all themes */
.s-res .dslot{margin:0 18px 12px}
.s-res .darshan{position:relative;z-index:1;isolation:isolate;margin:0;max-width:560px;margin-inline:auto}
.s-res .darshan img,.s-res .darshan .dfb{display:block;width:100%;aspect-ratio:16/10;height:auto;object-fit:cover;border-radius:14px;background:#ECE7DF;animation:none!important;transition:none!important;transform:none!important;filter:none!important;mix-blend-mode:normal!important;opacity:1!important}
.s-res .darshan .dfb{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#5B4A3A;background:#EFE9E0;border:1px solid #D9CFC2}
.s-res .darshan .dfb svg{width:64px;height:40px;opacity:.55}
.s-res .darshan .dfb b{font:600 22px/1.2 Georgia,serif;color:#4A3B2E}
.s-res .darshan .dfb span{font-size:12px;color:#7A6A5A}
.s-res .dcredit{font-size:11px;line-height:1.35;color:#6B6B6B;text-align:center;margin-top:6px;overflow-wrap:anywhere}
.s-res .dcredit a{color:inherit}
/* beta19.1 set detail page */
.s-set .sact .btn{display:flex;align-items:center;justify-content:center;min-height:40px;margin-top:4px;color:#fff!important;font-size:14px}
.s-set .sethead{padding:56px 20px 6px}.s-set .h1{overflow-wrap:anywhere}
.s-set .card{margin:10px 18px;padding:14px;border-radius:16px;background:var(--card,#fff)}
.s-set .setprog{display:flex;gap:14px;align-items:center}.s-set .ring.big{width:72px;height:72px;flex:none}
.s-set .sect{margin:18px 20px 0}
.s-set .srow{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px;padding:10px 0;border-bottom:1px solid rgba(0,0,0,.08);cursor:pointer}.s-set .srow:last-child{border:0}
.s-set .sn{min-width:0;flex:1 1 150px}.s-set .sn b{display:block;overflow-wrap:anywhere}.s-set .sn span,.s-set .sm{font-size:12px;color:var(--ink-3)}
.s-set .ss{display:flex;flex-direction:column;align-items:flex-end;gap:3px}.s-set .sact{flex-basis:100%}
.s-set .setorder{padding-left:34px}.s-set .setorder li{margin:4px 0}
.s-set .setmap{margin:10px 18px;border-radius:16px;overflow:hidden;background:#C9E3DD}.s-set .setmap svg{display:block;width:100%;height:180px}
.s-set .setsrc a,.s-set p{overflow-wrap:anywhere}
.s-sets [data-set]{cursor:pointer}
.s-set .setsrc ul{margin:6px 0 0;padding-left:20px}
