/* Colchis frame: every selector is fenced off [data-cf] (gen-css.mjs --fence). */
/* Painted hollow frames and alpha-character presentation. */
:root:where(:not([data-cf],[data-cf] *)){--monster-frame:url(./assets/runtime-mummies/frames/cabinet.webp);--monster-dialog-frame:url(./assets/runtime-mummies/frames/dialog.webp)}
.frame:where(:not([data-cf],[data-cf] *)){border:12px solid transparent;border-image:var(--monster-frame) 18% / 24px / 5px stretch;outline:0;border-radius:0;padding:5px;background:radial-gradient(ellipse at center,#352139,#110b1a);box-shadow:0 10px 30px #000a}.frame>.bolt:where(:not([data-cf],[data-cf] *)){display:none}
.tile:where(:not([data-cf],[data-cf] *)),.tile:not(.locked):where(:not([data-cf],[data-cf] *)){background:radial-gradient(ellipse at 50% 65%,#432338,#180f23 82%)!important}
.tile .art:where(:not([data-cf],[data-cf] *)),.tile:is([data-tier],[data-symbol]) .art:where(:not([data-cf],[data-cf] *)){inset:3%;width:94%;height:94%;translate:none;background-size:contain!important;background-position:center bottom!important;filter:drop-shadow(0 3px 3px #08031088)}
.tile:not(.locked):where(:not([data-cf],[data-cf] *))::after,.tile[data-symbol=zombie]:where(:not([data-cf],[data-cf] *))::after{border:0;border-image:var(--cell-frame) 18% / 10px / 0 stretch;border-radius:0;inset:-1px;background:none!important;box-shadow:none}
.tile[data-tier=low]:where(:not([data-cf],[data-cf] *)){--cell-frame:url(./assets/runtime-mummies/frames/steel.webp)}.tile[data-tier=mid]:where(:not([data-cf],[data-cf] *)){--cell-frame:url(./assets/runtime-mummies/frames/green.webp)}.tile[data-tier=high]:where(:not([data-cf],[data-cf] *)),.tile[data-tier=special]:where(:not([data-cf],[data-cf] *)){--cell-frame:url(./assets/runtime-mummies/frames/purple.webp)}.tile[data-tier=elite]:where(:not([data-cf],[data-cf] *)),.tile[data-tier=wild]:where(:not([data-cf],[data-cf] *)){--cell-frame:url(./assets/runtime-mummies/frames/gold.webp)}
.merged-zombie:where(:not([data-cf],[data-cf] *)){border:6px solid transparent!important;border-image:var(--cell-frame,var(--monster-frame)) 18% / 14px / 0 stretch!important;border-radius:0;background:radial-gradient(#3d203b,#120b1b);overflow:hidden}.merged-zombie[data-tier=elite]:where(:not([data-cf],[data-cf] *)),.merged-zombie[data-tier=wild]:where(:not([data-cf],[data-cf] *)){--cell-frame:url(./assets/runtime-mummies/frames/gold.webp)}.merged-portrait:where(:not([data-cf],[data-cf] *)){background-size:contain!important;background-position:center bottom!important}
.outcome .round-summary:where(:not([data-cf],[data-cf] *)){border:4px solid transparent;border-image:var(--monster-dialog-frame) 18% / 9px / 0 stretch;border-radius:0;background:#190f24;padding:3px 14px}
dialog:where(:not([data-cf],[data-cf] *)),dialog:has(.game-guide):where(:not([data-cf],[data-cf] *)){border:12px solid transparent!important;border-image:var(--monster-dialog-frame) 18% / 25px / 0 stretch!important;border-radius:0;outline:0}
.bonus-offer:where(:not([data-cf],[data-cf] *)),.bonus-offer.overdrive:where(:not([data-cf],[data-cf] *)),.guide-character:where(:not([data-cf],[data-cf] *)),.guide-specials article:where(:not([data-cf],[data-cf] *)),.guide-example:where(:not([data-cf],[data-cf] *)),.guide-hero:where(:not([data-cf],[data-cf] *)),.guide-bonuses article:where(:not([data-cf],[data-cf] *)),.guide-steps article:where(:not([data-cf],[data-cf] *)){border:7px solid transparent!important;border-image:var(--monster-dialog-frame) 18% / 15px / 0 stretch!important;border-radius:0}
.bonus-offer.overdrive:where(:not([data-cf],[data-cf] *)),.guide-character.purple:where(:not([data-cf],[data-cf] *)){border-image-source:url(./assets/runtime-mummies/frames/purple.webp)!important}.guide-character:where(:not([data-cf],[data-cf] *)){border-image-source:url(./assets/runtime-mummies/frames/steel.webp)!important}.guide-character.green:where(:not([data-cf],[data-cf] *)){border-image-source:url(./assets/runtime-mummies/frames/green.webp)!important}.guide-character.gold:where(:not([data-cf],[data-cf] *)){border-image-source:url(./assets/runtime-mummies/frames/gold.webp)!important}
.win-medallion:where(:not([data-cf],[data-cf] *)),.win-compact:where(:not([data-cf],[data-cf] *)){border:8px solid transparent!important;border-image:url(./assets/runtime-mummies/frames/gold.webp) 18% / 20px / 0 stretch!important;border-radius:0}
.merged-size:where(:not([data-cf],[data-cf] *)),.merged-charge:where(:not([data-cf],[data-cf] *)),.neutralized-stamp:where(:not([data-cf],[data-cf] *)),.formula:where(:not([data-cf],[data-cf] *)),.shape-card:where(:not([data-cf],[data-cf] *)),.intro-visual:where(:not([data-cf],[data-cf] *)){border:3px solid transparent!important;border-image:var(--monster-dialog-frame) 18% / 7px / 0 stretch!important;border-radius:0}
.outpost-light-plane:where(:not([data-cf],[data-cf] *)){position:absolute;transform-origin:0 0;pointer-events:none}.outpost-candle:where(:not([data-cf],[data-cf] *)){position:absolute;pointer-events:none}.candle-relight:where(:not([data-cf],[data-cf] *)),.candle-halo:where(:not([data-cf],[data-cf] *)){position:absolute;inset:0;display:block}
/* Static: the plate patch rasterises once. All flicker lives in .candle-halo. */
.candle-relight:where(:not([data-cf],[data-cf] *)){background-size:var(--outpost-image-size);background-repeat:no-repeat;mask-image:radial-gradient(ellipse,#000 8%,#000b 25%,transparent 68%);filter:brightness(2.5) saturate(1.15);opacity:.52;contain:layout paint}
.candle-halo:where(:not([data-cf],[data-cf] *)){background:radial-gradient(ellipse at center,#ffd9ad66 0%,#ff6a3f44 20%,#d8262622 42%,transparent 68%);animation:outpost-halo var(--flame-duration) var(--ease-soft,ease-in-out) var(--flame-delay) infinite;contain:layout paint}
/* outpost-flame removed: the plate patch is static, the halo carries the flicker. */
@keyframes outpost-halo{0%,100%{opacity:.45;transform:scale(.92)}21%{opacity:.8;transform:scale(1.04)}45%{opacity:.5;transform:scale(.95)}72%{opacity:.95;transform:scale(1.1)}}
.scenery>.monster-rex:where(:not([data-cf],[data-cf] *)){position:absolute;left:clamp(8px,2vw,44px);top:auto;bottom:20%;width:clamp(210px,24vw,380px);height:auto;aspect-ratio:1;mask-image:none;filter:drop-shadow(0 9px 9px #05020bc0);transform-origin:50% 95%;animation:none}
.monster-rex>img:where(:not([data-cf],[data-cf] *)){position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain}.monster-rex .rex-open:where(:not([data-cf],[data-cf] *)){animation:rex-open-eyes 6.7s step-end infinite}.monster-rex .rex-closed:where(:not([data-cf],[data-cf] *)){animation:rex-close-eyes 6.7s step-end infinite;opacity:0}
@keyframes rex-open-eyes{0%,35%,39%,79%,82%,100%{opacity:1}36%,80%{opacity:0}}@keyframes rex-close-eyes{0%,35%,39%,79%,82%,100%{opacity:0}36%,80%{opacity:1}}
.rex-heart-glow:where(:not([data-cf],[data-cf] *)),.rex-lantern-glow:where(:not([data-cf],[data-cf] *)){display:block;position:absolute;pointer-events:none;contain:layout paint}
.rex-heart-glow:where(:not([data-cf],[data-cf] *)){left:43%;top:32%;width:20%;height:20%;background:radial-gradient(ellipse,#ffc3cd9e 0%,#ff2f52a0 22%,#ed09333d 46%,transparent 70%);animation:rex-heartbeat 2.8s ease-in-out infinite}
.rex-lantern-glow:where(:not([data-cf],[data-cf] *)){left:70%;top:55%;width:25%;height:27%;background:radial-gradient(ellipse,#e6ffff9e 0%,#6fecff9e 17%,#16a4e95c 36%,transparent 68%);animation:rex-lantern 1.85s ease-in-out infinite}
@keyframes rex-heartbeat{0%,100%{opacity:.15;transform:scale(.88)}18%{opacity:.9;transform:scale(1.08)}32%{opacity:.3}48%{opacity:.72;transform:scale(1.03)}72%{opacity:.18;transform:scale(.9)}}
@keyframes rex-lantern{0%,100%{opacity:.32;transform:scale(.96)}24%{opacity:.8;transform:scale(1.04)}48%{opacity:.52}76%{opacity:.93;transform:scale(1.09)}}
.effects-paused .outpost-candle i:where(:not([data-cf],[data-cf] *)),.effects-paused .outpost-fog .fog-wave:where(:not([data-cf],[data-cf] *)),.effects-paused .monster-rex img:where(:not([data-cf],[data-cf] *)),.effects-paused .monster-rex i:where(:not([data-cf],[data-cf] *)){animation-play-state:paused!important}.rex-win-mascot:where(:not([data-cf],[data-cf] *)),.rex-canonical-strike:where(:not([data-cf],[data-cf] *)){mask-image:none}
@media(max-width:760px){.scenery>.monster-rex:where(:not([data-cf],[data-cf] *)){display:none}.frame:where(:not([data-cf],[data-cf] *)){border-width:8px;border-image-width:18px;padding:4px}.tile:not(.locked):where(:not([data-cf],[data-cf] *))::after{border-image-width:8px}dialog:where(:not([data-cf],[data-cf] *)),dialog:has(.game-guide):where(:not([data-cf],[data-cf] *)){border-width:8px!important;border-image-width:18px!important}}
@media(prefers-reduced-motion:reduce){.outpost-candle i:where(:not([data-cf],[data-cf] *)),.monster-rex>img:where(:not([data-cf],[data-cf] *)),.monster-rex>i:where(:not([data-cf],[data-cf] *)){animation:none!important}.monster-rex .rex-closed:where(:not([data-cf],[data-cf] *)){opacity:0!important}.monster-rex .rex-open:where(:not([data-cf],[data-cf] *)){opacity:1!important}.candle-relight:where(:not([data-cf],[data-cf] *)){opacity:.3}.candle-halo:where(:not([data-cf],[data-cf] *)){opacity:.35}.rex-heart-glow:where(:not([data-cf],[data-cf] *)),.rex-lantern-glow:where(:not([data-cf],[data-cf] *)){opacity:.3}}
@media(max-width:760px) and (min-height:820px){.scenery>.monster-rex:where(:not([data-cf],[data-cf] *)){display:block;width:105px;left:calc(50% - 52.5px);bottom:178px}}
.monster-rex .rex-open:where(:not([data-cf],[data-cf] *)){animation:none}
.rex-eye-lid:where(:not([data-cf],[data-cf] *)){position:absolute;display:block;width:9%;height:9%;top:13.5%;border-radius:50%;background:#03090e;transform:scaleY(0);transform-origin:center;animation:rex-eyelid 6.7s linear infinite;pointer-events:none}
.rex-eye-lid.left:where(:not([data-cf],[data-cf] *)){left:39%}.rex-eye-lid.right:where(:not([data-cf],[data-cf] *)){left:52.5%;top:15.5%}
.rex-eye-lid:where(:not([data-cf],[data-cf] *))::after{content:"";position:absolute;left:8%;right:8%;top:48%;height:8%;background:#66efff;border-radius:50%;box-shadow:0 0 3px #3bdffb}
@keyframes rex-eyelid{0%,35%,38%,79%,82%,100%{transform:scaleY(0)}36%,37%,80%,81%{transform:scaleY(1)}}
@media(prefers-reduced-motion:reduce){.rex-eye-lid:where(:not([data-cf],[data-cf] *)){transform:scaleY(0)!important}}


/* Header utilities and board controls share consistent horizontal rows. */
header:where(:not([data-cf],[data-cf] *)){gap:18px;justify-content:center;align-items:center;padding:0 12px}
header .board-controls:where(:not([data-cf],[data-cf] *)){position:relative;display:flex;flex:0 0 auto;flex-direction:row;gap:10px;margin:0;align-self:center}
header .board-controls button:is(#fullscreen,#sound,#music):where(:not([data-cf],[data-cf] *)){flex:0 0 48px;width:48px;height:48px}
@media(max-width:760px){
 header:where(:not([data-cf],[data-cf] *)),.expanded-view header:where(:not([data-cf],[data-cf] *)){display:flex;height:88px;padding:4px 52px 4px 8px;gap:5px}
 header .logo:where(:not([data-cf],[data-cf] *)){flex:1 1 auto;width:180px;min-width:0;max-width:220px;height:76px;background-size:contain}
 header .board-controls:where(:not([data-cf],[data-cf] *)){gap:2px}
 header .board-controls button:is(#fullscreen,#sound,#music):where(:not([data-cf],[data-cf] *)){flex:0 0 38px;width:38px;height:44px}
 header button#menu:where(:not([data-cf],[data-cf] *)){width:40px;height:44px;right:5px}
}
