
/* LABA v49.6 — asset-based FIRE contest theme.
   The default LABA layout remains intact; this file only activates under body.contest-theme-fire. */

body.contest-theme-fire{
  --fire-hot:#ff6a16;
  --fire-core:#ffb33f;
  --fire-red:#9f2109;
  --fire-dark:#130603;
  --fire-bottom:url("assets/contest-themes/fire/fire-bottom.webp");
  --fire-top:url("assets/contest-themes/fire/fire-top-small.webp");
  --fire-corner-left:url("assets/contest-themes/fire/fire-corner-left.webp");
  --fire-corner-right:url("assets/contest-themes/fire/fire-corner-right.webp");
  --fire-embers:url("assets/contest-themes/fire/embers.webp");
  --fire-smoke:url("assets/contest-themes/fire/smoke.webp");
  --fire-cracks:url("assets/contest-themes/fire/cracks.webp");
}

@keyframes fireFlicker{
  0%,100%{filter:saturate(1.05) brightness(.92);opacity:.78}
  35%{filter:saturate(1.22) brightness(1.08);opacity:.95}
  70%{filter:saturate(1.12) brightness(.98);opacity:.86}
}
@keyframes fireBreath{
  0%,100%{transform:scaleY(.97) translateY(3px)}
  45%{transform:scaleY(1.035) translateY(-2px)}
  72%{transform:scaleY(.99) translateY(1px)}
}
@keyframes emberRise{
  0%{transform:translate3d(0,22px,0) scale(1.02);opacity:.18}
  50%{opacity:.44}
  100%{transform:translate3d(-12px,-34px,0) scale(1.08);opacity:.12}
}
@keyframes smokeDrift{
  0%{transform:translate3d(-1.5%,2%,0) scale(1.03);opacity:.22}
  50%{transform:translate3d(1.2%,-1%,0) scale(1.07);opacity:.34}
  100%{transform:translate3d(-.4%,1%,0) scale(1.04);opacity:.24}
}
@keyframes crackPulse{
  0%,100%{filter:brightness(.78) saturate(1.05);opacity:.11}
  50%{filter:brightness(1.18) saturate(1.35);opacity:.20}
}

/* Reusable asset container injected by the theme engine. */
body.contest-theme-fire .contest-fire-host{position:relative;isolation:isolate}
body.contest-theme-fire .contest-fire-decor{
  position:absolute;
  inset:0;
  z-index:1;
  overflow:hidden;
  border-radius:inherit;
  pointer-events:none;
}
body.contest-theme-fire .contest-fire-layer{position:absolute;display:block;pointer-events:none;background-repeat:no-repeat}
body.contest-theme-fire .fire-layer-bottom{
  left:-4%;right:-4%;bottom:-7%;
  height:44%;
  background-image:var(--fire-bottom);
  background-position:center bottom;
  background-size:100% auto;
  opacity:.82;
  transform-origin:50% 100%;
  animation:fireBreath 2.7s ease-in-out infinite,fireFlicker 2.15s ease-in-out infinite;
  filter:drop-shadow(0 -7px 17px rgba(255,70,8,.28));
}
body.contest-theme-fire .fire-layer-top{
  left:-2%;right:-2%;top:-7%;
  height:30%;
  background-image:var(--fire-top);
  background-position:center top;
  background-size:100% auto;
  opacity:.53;
  transform-origin:50% 0;
  animation:fireFlicker 2.8s ease-in-out infinite reverse;
}
body.contest-theme-fire .fire-layer-corner-left{
  width:min(46%,430px);aspect-ratio:1;left:-4%;top:-5%;
  background-image:var(--fire-corner-left);
  background-size:contain;background-position:left top;
  opacity:.78;
  animation:fireFlicker 3.25s ease-in-out infinite;
}
body.contest-theme-fire .fire-layer-corner-right{
  width:min(46%,430px);aspect-ratio:1;right:-4%;top:-5%;
  background-image:var(--fire-corner-right);
  background-size:contain;background-position:right top;
  opacity:.72;
  animation:fireFlicker 2.75s ease-in-out infinite reverse;
}
body.contest-theme-fire .fire-layer-embers{
  inset:-6%;
  background-image:var(--fire-embers);
  background-size:cover;background-position:center;
  mix-blend-mode:screen;
  opacity:.30;
  animation:emberRise 8s linear infinite;
}
body.contest-theme-fire .fire-layer-smoke{
  left:-8%;right:-8%;bottom:-2%;height:72%;
  background-image:var(--fire-smoke);
  background-size:cover;background-position:center bottom;
  opacity:.25;
  animation:smokeDrift 11s ease-in-out infinite alternate;
}
body.contest-theme-fire .fire-layer-cracks{
  inset:8% -6% -16% 34%;
  background-image:var(--fire-cracks);
  background-size:68% auto;background-position:right bottom;
  mix-blend-mode:screen;
  opacity:.14;
  animation:crackPulse 4.4s ease-in-out infinite;
}

/* ===== HOME ===== */
.home-body.contest-theme-fire{
  background:
    radial-gradient(ellipse at 50% 88%,rgba(167,31,6,.20),transparent 52%),
    radial-gradient(circle at 50% 12%,rgba(255,115,24,.035),transparent 25%),
    #070504;
}
.home-body.contest-theme-fire .landing-shell{
  filter:drop-shadow(0 36px 78px rgba(0,0,0,.56)) drop-shadow(0 0 28px rgba(178,38,7,.13));
}
.home-body.contest-theme-fire .landing-card{
  border-color:rgba(202,107,47,.58);
  box-shadow:
    0 34px 100px rgba(0,0,0,.64),
    0 0 0 1px rgba(255,126,51,.08),
    0 0 58px rgba(172,35,7,.16),
    inset 0 0 52px rgba(104,20,5,.08);
}
.home-body.contest-theme-fire .landing-bg{
  background:
    linear-gradient(90deg,rgba(8,10,11,.985) 0%,rgba(8,10,11,.95) 42%,rgba(8,10,11,.47) 64%,rgba(8,10,11,.12) 100%),
    url("assets/fon.webp") 61% center/cover no-repeat!important;
}
.home-body.contest-theme-fire .landing-card>.contest-fire-decor{z-index:-1}
.home-body.contest-theme-fire .landing-content{z-index:2}
.home-body.contest-theme-fire .landing-card .fire-layer-bottom{
  height:40%;bottom:-10%;opacity:.74;
}
.home-body.contest-theme-fire .landing-card .fire-layer-top{display:none}
.home-body.contest-theme-fire .landing-card .fire-layer-corner-left{
  width:42%;left:-13%;top:55%;opacity:.36;transform:rotate(-88deg);
}
.home-body.contest-theme-fire .landing-card .fire-layer-corner-right{
  width:38%;right:-12%;top:2%;opacity:.32;
}
.home-body.contest-theme-fire .landing-card .fire-layer-smoke{
  bottom:-1%;height:58%;opacity:.22;
}
.home-body.contest-theme-fire .landing-card .fire-layer-embers{opacity:.24}
.home-body.contest-theme-fire .landing-card .fire-layer-cracks{
  inset:48% -13% -22% 42%;opacity:.11;
}
.home-body.contest-theme-fire .tile-contest{
  border-color:rgba(231,115,42,.52)!important;
  background:radial-gradient(circle at 50% 100%,rgba(154,36,8,.17),rgba(255,255,255,.012) 68%)!important;
  box-shadow:0 0 20px rgba(255,65,9,.11),inset 0 -12px 24px rgba(128,26,5,.08)!important;
}
.home-body.contest-theme-fire .tile-contest:hover{
  border-color:rgba(255,145,59,.78)!important;
  box-shadow:0 0 29px rgba(255,71,10,.21),inset 0 -12px 29px rgba(185,40,7,.10)!important;
}

/* ===== HOME CONTEST MODAL ===== */
.home-body.contest-theme-fire #contestModal .modal-backdrop{
  background:rgba(4,2,1,.90);
  backdrop-filter:blur(10px) saturate(1.12);
}
.home-body.contest-theme-fire #contestModal .contest-modal{
  overflow:visible;
  border:1px solid rgba(173,75,32,.62);
  background:
    radial-gradient(circle at 80% 0%,rgba(149,31,6,.13),transparent 31%),
    linear-gradient(145deg,#160907 0%,#0d0d0c 52%,#080808 100%);
  box-shadow:
    0 42px 130px rgba(0,0,0,.80),
    0 0 0 1px rgba(255,137,59,.05),
    0 0 50px rgba(201,45,7,.19),
    inset 0 0 60px rgba(110,23,5,.09);
}
.home-body.contest-theme-fire #contestModal .contest-modal>.contest-fire-decor{z-index:1;overflow:visible}
.home-body.contest-theme-fire #contestModal .contest-visual,
.home-body.contest-theme-fire #contestModal .contest-content,
.home-body.contest-theme-fire #contestModal .modal-close{position:relative;z-index:2}
.home-body.contest-theme-fire #contestModal .fire-layer-bottom{height:42%;bottom:-13%;opacity:.92}
.home-body.contest-theme-fire #contestModal .fire-layer-top{height:29%;top:-12%;opacity:.45}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-left{left:-10%;top:-14%;opacity:.86}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-right{right:-10%;top:-14%;opacity:.80}
.home-body.contest-theme-fire #contestModal .fire-layer-smoke{height:82%;opacity:.31}
.home-body.contest-theme-fire #contestModal .fire-layer-embers{opacity:.38}
.home-body.contest-theme-fire #contestModal .fire-layer-cracks{opacity:.17;inset:8% 0 -8% 32%}
.home-body.contest-theme-fire #contestModal .contest-visual{
  border-right-color:rgba(191,74,28,.27);
  background:
    radial-gradient(circle at 50% 38%,rgba(235,91,18,.13),transparent 29%),
    linear-gradient(180deg,rgba(36,14,7,.80),rgba(8,9,9,.95));
}
.home-body.contest-theme-fire #contestModal .contest-glow{
  background:radial-gradient(circle,rgba(255,173,52,.56),rgba(255,68,9,.22) 38%,transparent 70%);
}
.home-body.contest-theme-fire #contestModal .contest-emblem{
  color:#e99a43;
  filter:drop-shadow(0 0 8px rgba(255,144,49,.44)) drop-shadow(0 0 22px rgba(202,43,7,.34));
}
.home-body.contest-theme-fire #contestModal .contest-status,
.home-body.contest-theme-fire #contestModal .contest-primary{
  border-color:rgba(230,109,38,.58);
  color:#edbd7a;
  background:linear-gradient(100deg,rgba(122,26,6,.42),rgba(228,78,12,.09));
  box-shadow:0 0 16px rgba(231,57,7,.10),inset 0 0 12px rgba(255,151,58,.035);
}
.home-body.contest-theme-fire #contestModal .contest-primary:hover{
  border-color:rgba(255,145,55,.82);
  box-shadow:0 0 26px rgba(255,67,8,.22),inset 0 0 18px rgba(255,134,39,.07);
}
.home-body.contest-theme-fire #contestModal .contest-meta-card,
.home-body.contest-theme-fire #contestModal .contest-rules-wrap{
  border-color:rgba(161,69,28,.25);
  background:linear-gradient(145deg,rgba(26,11,7,.82),rgba(12,11,10,.78));
}

/* ===== INNER PAGE HEADER ===== */
.contests-body.contest-theme-fire .site-header,
.submit-body.contest-theme-fire .site-header{
  position:relative;
  isolation:isolate;
  border-bottom-color:rgba(176,73,27,.34);
  box-shadow:0 11px 30px rgba(96,18,4,.09);
}
.contests-body.contest-theme-fire .site-header::after,
.submit-body.contest-theme-fire .site-header::after{
  content:"";
  position:absolute;
  z-index:-1;
  left:7%;right:7%;bottom:-39px;height:84px;
  background-image:var(--fire-top);
  background-size:100% auto;
  background-position:center top;
  background-repeat:no-repeat;
  opacity:.42;
  filter:drop-shadow(0 0 10px rgba(255,72,9,.22));
  animation:fireFlicker 3.6s ease-in-out infinite;
}
.contests-body.contest-theme-fire .header-logo-only img,
.submit-body.contest-theme-fire .header-logo-only img{
  filter:brightness(1.07) contrast(1.08) drop-shadow(0 7px 18px rgba(0,0,0,.34)) drop-shadow(0 0 9px rgba(212,70,12,.12));
}

/* ===== CONTEST DETAILS ===== */
.contests-body.contest-theme-fire{background:#070403}
.contests-body.contest-theme-fire .contests-page-bg{
  opacity:1;
  background:
    linear-gradient(180deg,rgba(7,4,2,.50),rgba(7,5,4,.84) 62%,#070504 100%),
    var(--fire-smoke) center 86%/cover fixed no-repeat,
    var(--fire-embers) center 34%/900px 900px fixed repeat,
    url("assets/fon.webp") 64% center/cover fixed no-repeat;
  filter:saturate(1.12);
}
.contests-body.contest-theme-fire .contests-main{position:relative}
.contests-body.contest-theme-fire .contest-page-hero{
  overflow:hidden;
  padding:48px 32px 72px;
  margin:10px -24px 30px;
  border:1px solid rgba(172,73,30,.52);
  border-radius:26px;
  background:
    radial-gradient(circle at 85% 10%,rgba(151,31,6,.14),transparent 31%),
    linear-gradient(112deg,rgba(20,8,4,.95),rgba(10,9,8,.88));
  box-shadow:
    0 24px 72px rgba(0,0,0,.45),
    0 0 40px rgba(177,35,6,.14),
    inset 0 0 55px rgba(102,21,4,.08);
}
.contests-body.contest-theme-fire .contest-page-hero>.contest-fire-decor{z-index:1}
.contests-body.contest-theme-fire .contest-page-hero>:not(.contest-fire-decor){position:relative;z-index:2}
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-bottom{height:47%;bottom:-14%;opacity:.88}
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-top{height:26%;top:-10%;opacity:.34}
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-corner-left{left:-10%;top:-14%;opacity:.60}
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-corner-right{right:-10%;top:-14%;opacity:.58}
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-smoke{height:75%;opacity:.25}
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-embers{opacity:.32}
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-cracks{opacity:.14}
.contests-body.contest-theme-fire .contest-page-hero h1{
  color:#f0e3d5;
  text-shadow:0 2px 24px rgba(190,41,7,.20);
}
.contests-body.contest-theme-fire .contest-page-status{
  border-color:rgba(222,102,35,.50);
  color:#e7af68;
  background:rgba(95,20,5,.28);
  box-shadow:0 0 16px rgba(208,48,7,.10);
}

/* Small cards should look forged/charred, not literally be on fire. */
.contests-body.contest-theme-fire .contest-page-summary article,
.contests-body.contest-theme-fire .contest-page-panel,
.contests-body.contest-theme-fire .contest-archive-card{
  position:relative;
  overflow:hidden;
  border-color:rgba(146,65,31,.31);
  background:
    linear-gradient(145deg,rgba(19,10,7,.93),rgba(11,11,10,.93));
  box-shadow:inset 0 0 28px rgba(86,19,5,.05),0 10px 28px rgba(0,0,0,.14);
}
.contests-body.contest-theme-fire .contest-page-panel::before{
  content:"";
  position:absolute;
  width:180px;height:180px;right:-70px;bottom:-82px;
  background:var(--fire-cracks) center/contain no-repeat;
  mix-blend-mode:screen;
  opacity:.065;
  pointer-events:none;
}
.contests-body.contest-theme-fire .contest-page-summary article::before{
  content:"";
  position:absolute;left:14px;right:14px;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(242,92,18,.34),transparent);
  box-shadow:0 0 10px rgba(255,69,10,.12);
}
.contests-body.contest-theme-fire .contest-page-summary strong{color:#dfaa6d}
.contests-body.contest-theme-fire .contest-chip{
  border-color:rgba(193,78,29,.36);
  color:#d7a66e;
  background:rgba(114,25,6,.13);
}
.contests-body.contest-theme-fire .contest-page-cta{
  position:relative;
  overflow:hidden;
  border-color:rgba(232,104,35,.58);
  color:#f0bd79;
  background:linear-gradient(180deg,rgba(123,28,7,.42),rgba(44,14,7,.38));
  box-shadow:0 0 18px rgba(222,51,7,.12),inset 0 0 16px rgba(255,136,44,.04);
}
.contests-body.contest-theme-fire .contest-page-cta:hover{
  border-color:rgba(255,145,55,.78);
  box-shadow:0 0 26px rgba(255,64,8,.22),inset 0 0 18px rgba(255,143,48,.07);
}

/* ===== CONTEST SUBMISSION ===== */
.submit-body.contest-theme-fire{background:#070403}
.submit-body.contest-theme-fire .submit-page-bg{
  opacity:1;
  background:
    linear-gradient(90deg,rgba(8,6,5,.94) 0%,rgba(8,7,6,.90) 52%,rgba(8,5,3,.58) 80%,rgba(8,4,2,.36)),
    var(--fire-smoke) center 90%/cover fixed no-repeat,
    var(--fire-embers) center/900px 900px fixed repeat,
    url("assets/fon.webp") center right/cover fixed no-repeat;
}
.submit-body.contest-theme-fire .submit-page-bg::after{
  background:
    radial-gradient(circle at 82% 30%,rgba(200,51,8,.11),transparent 31%),
    radial-gradient(ellipse at 50% 100%,rgba(193,39,7,.12),transparent 48%),
    linear-gradient(180deg,rgba(0,0,0,.12),rgba(0,0,0,.60));
}
.submit-body.contest-theme-fire .submit-intro{
  position:relative;
  max-width:820px;
  padding:20px 20px 10px;
  text-shadow:0 2px 24px rgba(174,35,6,.15);
}
.submit-body.contest-theme-fire .submit-intro h1{color:#f0e2d1}
.submit-body.contest-theme-fire .contest-submit-identity{
  border-color:rgba(190,75,28,.35);
  background:rgba(89,20,6,.13);
}
.submit-body.contest-theme-fire .contest-submit-badge{color:#e6a865}
.submit-body.contest-theme-fire .submit-form{
  overflow:hidden;
  border-color:rgba(170,70,28,.48);
  background:
    radial-gradient(circle at 70% 0%,rgba(126,27,6,.08),transparent 32%),
    rgba(12,11,10,.92);
  box-shadow:
    0 28px 94px rgba(0,0,0,.50),
    0 0 40px rgba(165,33,6,.12),
    inset 0 0 46px rgba(86,18,4,.07);
  padding-bottom:78px;
}
.submit-body.contest-theme-fire .submit-form>.contest-fire-decor{z-index:1}
.submit-body.contest-theme-fire .submit-form>:not(.contest-fire-decor){position:relative;z-index:2}
.submit-body.contest-theme-fire .submit-form .fire-layer-bottom{height:36%;bottom:-13%;opacity:.82}
.submit-body.contest-theme-fire .submit-form .fire-layer-top{height:20%;top:-10%;opacity:.24}
.submit-body.contest-theme-fire .submit-form .fire-layer-corner-left{left:-10%;top:-15%;width:min(36%,350px);opacity:.48}
.submit-body.contest-theme-fire .submit-form .fire-layer-corner-right{right:-10%;top:-15%;width:min(36%,350px);opacity:.44}
.submit-body.contest-theme-fire .submit-form .fire-layer-smoke{height:56%;opacity:.18}
.submit-body.contest-theme-fire .submit-form .fire-layer-embers{opacity:.20}
.submit-body.contest-theme-fire .submit-form .fire-layer-cracks{opacity:.075}
.submit-body.contest-theme-fire .form-field input,
.submit-body.contest-theme-fire .form-field select,
.submit-body.contest-theme-fire .form-field textarea{
  border-color:rgba(126,67,42,.30);
  background:rgba(255,255,255,.021);
}
.submit-body.contest-theme-fire .form-field input:focus,
.submit-body.contest-theme-fire .form-field select:focus,
.submit-body.contest-theme-fire .form-field textarea:focus{
  border-color:rgba(224,101,34,.58);
  background:rgba(90,22,7,.07);
  box-shadow:0 0 0 3px rgba(221,78,20,.05),0 0 19px rgba(210,47,7,.07);
}
.submit-body.contest-theme-fire .upload-box{
  border-color:rgba(182,76,29,.40);
  background:linear-gradient(180deg,rgba(116,26,6,.045),rgba(255,255,255,.008));
}
.submit-body.contest-theme-fire .upload-box:hover,
.submit-body.contest-theme-fire .upload-box.is-dragging{
  border-color:rgba(235,112,38,.65);
  background:rgba(115,26,6,.07);
}
.submit-body.contest-theme-fire .upload-icon{color:#d88a47}
.submit-body.contest-theme-fire .submit-send{
  border-color:rgba(238,108,35,.60);
  color:#f0c181;
  background:linear-gradient(180deg,rgba(132,30,7,.50),rgba(51,15,7,.44));
  box-shadow:0 0 19px rgba(225,54,7,.13),inset 0 0 16px rgba(255,139,44,.045);
}
.submit-body.contest-theme-fire .submit-send:hover{
  border-color:rgba(255,148,58,.82);
  box-shadow:0 0 28px rgba(255,63,8,.22),inset 0 0 19px rgba(255,145,51,.07);
}

/* Mobile restraint: retain atmosphere but keep text/forms readable. */
@media(max-width:760px){
  body.contest-theme-fire .fire-layer-corner-left,
  body.contest-theme-fire .fire-layer-corner-right{width:58%;opacity:.48}
  body.contest-theme-fire .fire-layer-embers{opacity:.18}
  body.contest-theme-fire .fire-layer-smoke{opacity:.16}
  .home-body.contest-theme-fire .landing-card .fire-layer-bottom{height:31%;opacity:.62}
  .home-body.contest-theme-fire #contestModal .fire-layer-corner-left,
  .home-body.contest-theme-fire #contestModal .fire-layer-corner-right{opacity:.56}
  .home-body.contest-theme-fire #contestModal .fire-layer-bottom{height:28%;opacity:.78}
  .contests-body.contest-theme-fire .contest-page-hero{margin:0;padding:34px 18px 58px}
  .contests-body.contest-theme-fire .contest-page-hero .fire-layer-bottom{height:35%;opacity:.72}
  .contests-body.contest-theme-fire .site-header::after,
  .submit-body.contest-theme-fire .site-header::after{left:2%;right:2%;opacity:.30}
  .submit-body.contest-theme-fire .submit-form{padding-bottom:64px}
  .submit-body.contest-theme-fire .submit-form .fire-layer-bottom{height:24%;opacity:.64}
}

@media(prefers-reduced-motion:reduce){
  body.contest-theme-fire .contest-fire-layer,
  body.contest-theme-fire .site-header::after{animation:none!important}
}

/* ===== LABA v49.7 — calmer asset composition, seamless particles ===== */

/* The previous particle animation zoomed a single raster layer and visibly snapped
   back to frame zero. v49.7 cross-fades two independently moving copies; each copy
   resets only while fully transparent, so no jump is visible. */
@keyframes emberStreamV497{
  0%{transform:translate3d(1.2%,8%,0);opacity:0}
  12%{opacity:.24}
  68%{opacity:.22}
  88%{opacity:.10}
  100%{transform:translate3d(-1.8%,-12%,0);opacity:0}
}
@keyframes smokeDriftV497{
  0%{transform:translate3d(-1.4%,1.4%,0);opacity:.16}
  50%{transform:translate3d(.9%,-.8%,0);opacity:.24}
  100%{transform:translate3d(-.5%,.6%,0);opacity:.18}
}

body.contest-theme-fire .fire-layer-embers{
  inset:-9%;
  background:none!important;
  mix-blend-mode:screen;
  opacity:1!important;
  animation:none!important;
  overflow:hidden;
}
body.contest-theme-fire .fire-layer-embers::before,
body.contest-theme-fire .fire-layer-embers::after{
  content:"";
  position:absolute;
  inset:-8%;
  background-image:var(--fire-embers);
  background-repeat:repeat;
  background-position:center;
  background-size:620px 620px;
  mix-blend-mode:screen;
  opacity:0;
  will-change:transform,opacity;
  animation:emberStreamV497 20s linear infinite;
}
body.contest-theme-fire .fire-layer-embers::after{animation-delay:-10s}
body.contest-theme-fire .fire-layer-smoke{
  animation:smokeDriftV497 15s ease-in-out infinite alternate!important;
  will-change:transform,opacity;
}

/* HOME — no literal flames. Keep the original mimic background and only add
   heat haze, smoke and moving embers. */
.home-body.contest-theme-fire .landing-card .fire-layer-bottom,
.home-body.contest-theme-fire .landing-card .fire-layer-top,
.home-body.contest-theme-fire .landing-card .fire-layer-corner-left,
.home-body.contest-theme-fire .landing-card .fire-layer-corner-right,
.home-body.contest-theme-fire .landing-card .fire-layer-cracks{display:none!important}
.home-body.contest-theme-fire .landing-card .fire-layer-smoke{
  left:-5%;right:-5%;bottom:-2%;height:56%;opacity:.15;
}
.home-body.contest-theme-fire .landing-card .fire-layer-embers::before,
.home-body.contest-theme-fire .landing-card .fire-layer-embers::after{
  background-size:560px 560px;
}
.home-body.contest-theme-fire .landing-card{
  border-color:rgba(178,79,37,.46);
  box-shadow:0 34px 100px rgba(0,0,0,.64),0 0 0 1px rgba(255,128,54,.045),0 0 38px rgba(152,36,8,.10),inset 0 -28px 70px rgba(118,25,5,.055);
}
.home-body.contest-theme-fire .landing-footer{
  position:relative;z-index:3;
  text-shadow:0 1px 18px rgba(221,86,24,.15);
}

/* CONTEST MODAL — compact, readable and atmospheric. No flame strips/corners. */
.home-body.contest-theme-fire #contestModal .contest-modal{
  width:min(900px,calc(100vw - 34px));
  min-height:460px;
  max-height:min(760px,90svh);
  grid-template-columns:34% 66%;
  overflow:hidden;
  border-radius:26px;
  border:1px solid rgba(183,81,34,.50);
  background:
    radial-gradient(circle at 18% 28%,rgba(154,39,10,.12),transparent 29%),
    radial-gradient(circle at 82% 8%,rgba(222,86,23,.055),transparent 24%),
    linear-gradient(145deg,rgba(22,9,6,.985),rgba(12,11,10,.985) 58%,rgba(8,8,8,.99));
  box-shadow:0 38px 120px rgba(0,0,0,.78),0 0 44px rgba(179,43,9,.13),inset 0 0 58px rgba(109,23,5,.065);
}
.home-body.contest-theme-fire #contestModal .contest-modal::after{
  content:"";position:absolute;z-index:1;left:24px;right:24px;top:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,126,50,.64),rgba(255,183,93,.28),transparent);
  box-shadow:0 0 17px rgba(246,83,18,.24);pointer-events:none;
}
.home-body.contest-theme-fire #contestModal .fire-layer-bottom,
.home-body.contest-theme-fire #contestModal .fire-layer-top,
.home-body.contest-theme-fire #contestModal .fire-layer-corner-left,
.home-body.contest-theme-fire #contestModal .fire-layer-corner-right{display:none!important}
.home-body.contest-theme-fire #contestModal .fire-layer-smoke{
  left:-8%;right:-8%;bottom:-8%;height:82%;opacity:.18;
}
.home-body.contest-theme-fire #contestModal .fire-layer-embers::before,
.home-body.contest-theme-fire #contestModal .fire-layer-embers::after{background-size:520px 520px}
.home-body.contest-theme-fire #contestModal .fire-layer-cracks{
  inset:42% -3% -19% 42%;background-size:64% auto;opacity:.08;
}
.home-body.contest-theme-fire #contestModal .contest-visual{
  min-height:460px;
  border-right:1px solid rgba(174,72,30,.20);
  background:
    radial-gradient(circle at 50% 40%,rgba(237,105,28,.14),transparent 28%),
    linear-gradient(180deg,rgba(35,14,8,.64),rgba(8,9,9,.94));
}
.home-body.contest-theme-fire #contestModal .contest-content{
  padding:40px 42px 34px;
}
.home-body.contest-theme-fire #contestModal .contest-content h2{font-size:42px}
.home-body.contest-theme-fire #contestModal .contest-lead{margin-bottom:20px;font-size:16px;line-height:1.52}
.home-body.contest-theme-fire #contestModal .contest-meta{margin-bottom:20px}
.home-body.contest-theme-fire #contestModal .contest-rules-wrap{margin-bottom:22px}
.home-body.contest-theme-fire #contestModal .contest-emblem{
  width:118px;height:118px;border-color:rgba(232,119,50,.36);
  background:radial-gradient(circle at 50% 36%,rgba(229,109,34,.18),rgba(12,10,9,.78) 69%);
  box-shadow:inset 0 0 30px rgba(236,99,25,.07),0 0 40px rgba(222,68,13,.12);
}
.home-body.contest-theme-fire #contestModal .contest-ring{border-color:rgba(221,93,28,.12)}
.home-body.contest-theme-fire #contestModal .ring-b{border-color:rgba(221,93,28,.055)}

/* Headers retain LABA's default geometry. Fire theme is represented by a thin heat line,
   not a literal strip of flames. */
.contests-body.contest-theme-fire .site-header::after,
.submit-body.contest-theme-fire .site-header::after{
  content:"";left:9%;right:9%;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(148,44,13,.28),rgba(245,100,28,.50),rgba(255,169,74,.24),rgba(148,44,13,.28),transparent);
  opacity:.72;filter:drop-shadow(0 0 8px rgba(239,76,17,.20));animation:none;
}

/* CONTEST DETAILS — no tongues of flame. The hero feels hot through smoke,
   moving embers, local magma cracks and a restrained heated edge. */
.contests-body.contest-theme-fire .contests-page-bg{
  background:
    linear-gradient(180deg,rgba(7,4,2,.58),rgba(7,5,4,.90) 64%,#070504 100%),
    url("assets/fon.webp") 64% center/cover fixed no-repeat;
  filter:saturate(1.04) contrast(1.02);
}
.contests-body.contest-theme-fire .contest-page-hero{
  padding:40px 30px 38px;
  margin:8px 0 24px;
  border-radius:24px;
  border:1px solid rgba(163,70,31,.40);
  background:
    radial-gradient(circle at 82% 10%,rgba(164,42,10,.11),transparent 29%),
    radial-gradient(circle at 16% 88%,rgba(106,25,8,.08),transparent 34%),
    linear-gradient(112deg,rgba(18,9,6,.94),rgba(10,9,8,.91));
  box-shadow:0 22px 65px rgba(0,0,0,.42),0 0 34px rgba(149,32,7,.085),inset 0 0 52px rgba(91,19,5,.045);
}
.contests-body.contest-theme-fire .contest-page-hero::after{
  content:"";position:absolute;z-index:2;left:28px;right:28px;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(239,87,20,.40),rgba(255,156,66,.20),transparent);
  box-shadow:0 0 12px rgba(233,65,13,.12);pointer-events:none;
}
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-bottom,
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-top,
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-corner-left,
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-corner-right{display:none!important}
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-smoke{
  left:-8%;right:-8%;bottom:-18%;height:92%;opacity:.13;
}
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-embers::before,
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-embers::after{background-size:560px 560px}
.contests-body.contest-theme-fire .contest-page-hero .fire-layer-cracks{
  inset:2% -9% -26% 56%;background-size:58% auto;opacity:.075;
}
.contests-body.contest-theme-fire .contest-page-hero h1{
  max-width:790px;margin-bottom:13px;color:#efe5da;text-shadow:0 2px 22px rgba(163,37,9,.13);
}
.contests-body.contest-theme-fire .contest-page-hero p{max-width:760px;color:#b9aa9b}
.contests-body.contest-theme-fire .contest-page-summary{gap:14px;margin:18px 0 14px}
.contests-body.contest-theme-fire .contest-page-summary article{
  padding:19px 20px;border-color:rgba(141,63,31,.27);
  background:linear-gradient(145deg,rgba(18,10,7,.90),rgba(11,11,10,.91));
}
.contests-body.contest-theme-fire .contest-page-summary article::before{opacity:.7}
.contests-body.contest-theme-fire .contest-page-grid{gap:14px}
.contests-body.contest-theme-fire .contest-page-panel{
  padding:25px 26px;border-color:rgba(137,61,30,.25);
  background:linear-gradient(145deg,rgba(17,10,7,.91),rgba(11,11,10,.93));
}
.contests-body.contest-theme-fire .contest-page-panel::before{
  width:150px;height:150px;right:-62px;bottom:-65px;opacity:.045;
}
.contests-body.contest-theme-fire .contest-page-panel h2{color:#e8ddd1}
.contests-body.contest-theme-fire .contest-page-panel li{color:#b1a497}
.contests-body.contest-theme-fire .contest-archive-section{margin-top:42px}

/* SUBMISSION — keep a small top heat accent; remove all bottom/corner flames. */
.submit-body.contest-theme-fire .submit-page-bg{
  background:
    linear-gradient(90deg,rgba(8,6,5,.95) 0%,rgba(8,7,6,.92) 54%,rgba(8,5,3,.63) 82%,rgba(8,4,2,.42)),
    url("assets/fon.webp") center right/cover fixed no-repeat;
}
.submit-body.contest-theme-fire .submit-form{
  padding-bottom:30px;
  border-color:rgba(153,67,31,.37);
  background:radial-gradient(circle at 70% 0%,rgba(125,28,7,.055),transparent 31%),rgba(12,11,10,.94);
  box-shadow:0 28px 90px rgba(0,0,0,.48),0 0 32px rgba(145,31,7,.075),inset 0 0 42px rgba(83,18,4,.045);
}
.submit-body.contest-theme-fire .submit-form .fire-layer-bottom,
.submit-body.contest-theme-fire .submit-form .fire-layer-corner-left,
.submit-body.contest-theme-fire .submit-form .fire-layer-corner-right{display:none!important}
.submit-body.contest-theme-fire .submit-form .fire-layer-top{
  left:0;right:0;top:-6px;height:74px;opacity:.33;background-size:100% auto;background-position:center top;
  filter:drop-shadow(0 5px 12px rgba(216,56,11,.12));
}
.submit-body.contest-theme-fire .submit-form .fire-layer-smoke{
  left:-6%;right:-6%;bottom:-7%;height:55%;opacity:.12;
}
.submit-body.contest-theme-fire .submit-form .fire-layer-embers::before,
.submit-body.contest-theme-fire .submit-form .fire-layer-embers::after{background-size:540px 540px}
.submit-body.contest-theme-fire .submit-form .fire-layer-cracks{
  inset:58% -8% -12% 62%;background-size:60% auto;opacity:.052;
}
.submit-body.contest-theme-fire .submit-actions{position:relative;z-index:3;margin-top:8px}

/* Mobile: compact modal, calmer particles and no accidental giant empty visual zone. */
@media(max-width:760px){
  body.contest-theme-fire .fire-layer-embers::before,
  body.contest-theme-fire .fire-layer-embers::after{background-size:430px 430px}
  .home-body.contest-theme-fire #contestModal .contest-modal{
    width:min(560px,calc(100vw - 18px));max-height:92svh;grid-template-columns:1fr;overflow:auto;border-radius:22px;
  }
  .home-body.contest-theme-fire #contestModal .contest-visual{
    min-height:132px;border-right:0;border-bottom:1px solid rgba(174,72,30,.18);
  }
  .home-body.contest-theme-fire #contestModal .contest-glow{width:160px;height:160px}
  .home-body.contest-theme-fire #contestModal .contest-emblem{width:78px;height:78px}
  .home-body.contest-theme-fire #contestModal .contest-emblem svg{width:43px;height:43px}
  .home-body.contest-theme-fire #contestModal .ring-a{width:112px;height:112px}
  .home-body.contest-theme-fire #contestModal .ring-b{display:none}
  .home-body.contest-theme-fire #contestModal .contest-content{padding:24px 20px 22px}
  .home-body.contest-theme-fire #contestModal .contest-content h2{font-size:32px}
  .home-body.contest-theme-fire #contestModal .contest-lead{font-size:15px;margin-bottom:17px}
  .home-body.contest-theme-fire #contestModal .contest-meta{margin-bottom:17px}
  .home-body.contest-theme-fire #contestModal .contest-rules-wrap{margin-bottom:18px}
  .contests-body.contest-theme-fire .contest-page-hero{margin:0 0 18px;padding:30px 20px 28px}
  .contests-body.contest-theme-fire .contest-page-hero::after{left:18px;right:18px}
  .submit-body.contest-theme-fire .submit-form{padding-bottom:20px}
  .submit-body.contest-theme-fire .submit-form .fire-layer-top{height:54px;opacity:.25}
}

@media(prefers-reduced-motion:reduce){
  body.contest-theme-fire .fire-layer-embers::before,
  body.contest-theme-fire .fire-layer-embers::after{animation:none!important;opacity:.12!important}
}

/* ===== LABA v49.8 — contest modal layout lock =====
   Keep decorative/close elements out of the grid flow. */
.home-body.contest-theme-fire #contestModal .contest-modal{
  display:grid;
  grid-template-columns:minmax(240px,34%) minmax(0,66%);
  grid-template-rows:minmax(0,1fr);
  align-items:stretch;
}
.home-body.contest-theme-fire #contestModal .modal-close{
  position:absolute!important;
  top:15px!important;
  right:17px!important;
  left:auto!important;
  z-index:8!important;
  grid-column:auto!important;
  grid-row:auto!important;
}
.home-body.contest-theme-fire #contestModal .contest-visual{
  grid-column:1!important;
  grid-row:1!important;
  min-width:0;
  min-height:460px;
}
.home-body.contest-theme-fire #contestModal .contest-content{
  grid-column:2!important;
  grid-row:1!important;
  min-width:0;
  min-height:0;
  overflow-y:auto;
  scrollbar-width:thin;
  scrollbar-color:rgba(191,84,35,.30) transparent;
}

/* Preserve the two-column desktop modal on narrower desktop windows.
   Stack only when it is genuinely phone-sized. */
@media (min-width:621px) and (max-width:760px){
  .home-body.contest-theme-fire #contestModal .contest-modal{
    width:min(900px,calc(100vw - 24px));
    grid-template-columns:minmax(210px,33%) minmax(0,67%);
    grid-template-rows:minmax(0,1fr);
    max-height:92svh;
    overflow:hidden;
  }
  .home-body.contest-theme-fire #contestModal .contest-visual{
    grid-column:1!important;
    grid-row:1!important;
    min-height:430px;
    border-right:1px solid rgba(174,72,30,.18);
    border-bottom:0;
  }
  .home-body.contest-theme-fire #contestModal .contest-content{
    grid-column:2!important;
    grid-row:1!important;
    padding:28px 28px 24px;
  }
  .home-body.contest-theme-fire #contestModal .contest-content h2{font-size:36px}
}

@media (max-width:620px){
  .home-body.contest-theme-fire #contestModal .contest-modal{
    grid-template-columns:1fr;
    grid-template-rows:auto auto;
    width:min(560px,calc(100vw - 18px));
    max-height:92svh;
    overflow:auto;
  }
  .home-body.contest-theme-fire #contestModal .contest-visual{
    grid-column:1!important;
    grid-row:1!important;
    min-height:132px;
    border-right:0;
    border-bottom:1px solid rgba(174,72,30,.18);
  }
  .home-body.contest-theme-fire #contestModal .contest-content{
    grid-column:1!important;
    grid-row:2!important;
    overflow:visible;
  }
}

/* ===== LABA v49.9 — extend smoke across the lower-left contest modal ===== */
.home-body.contest-theme-fire #contestModal .fire-layer-smoke{
  left:-10%;
  right:-10%;
  bottom:-10%;
  height:104%;
  opacity:.20;
  background-image:var(--fire-smoke),var(--fire-smoke);
  background-repeat:no-repeat,no-repeat;
  background-size:112% auto,76% auto;
  background-position:center bottom,-11% 112%;
}

/* ===== LABA v49.10 — modal left-column smoke fix =====
   The global smoke decor sits below .contest-visual, so its opaque background
   masked the lower-left smoke. Render a dedicated smoke pass inside the visual. */
.home-body.contest-theme-fire #contestModal .contest-visual::after{
  content:"";
  position:absolute;
  z-index:1;
  left:-22%;
  right:-24%;
  bottom:-13%;
  height:64%;
  pointer-events:none;
  background-image:var(--fire-smoke);
  background-repeat:no-repeat;
  background-position:center bottom;
  background-size:118% auto;
  opacity:.27;
  mix-blend-mode:screen;
  filter:saturate(.82) brightness(.78);
  transform:translate3d(0,0,0) scale(1.04);
  transform-origin:50% 100%;
  animation:modalVisualSmokeV4910 18s ease-in-out infinite alternate;
}
.home-body.contest-theme-fire #contestModal .contest-glow,
.home-body.contest-theme-fire #contestModal .contest-emblem,
.home-body.contest-theme-fire #contestModal .contest-ring{
  z-index:2;
}
@keyframes modalVisualSmokeV4910{
  0%{transform:translate3d(-2%,2%,0) scale(1.04);opacity:.22}
  50%{transform:translate3d(1%,-1%,0) scale(1.07);opacity:.30}
  100%{transform:translate3d(2%,1%,0) scale(1.05);opacity:.24}
}

/* ===== LABA v49.11 — fill the lower-left modal visual with smoke =====
   v49.10 placed the smoke pass below the clipped edge, so only its upper wisps
   remained visible. Keep the whole smoke body inside the visual and scale it by
   height so it actually occupies the empty lower-left sector. */
.home-body.contest-theme-fire #contestModal .contest-visual::after{
  left:-2%;
  right:-2%;
  bottom:0;
  height:56%;
  background-position:center bottom;
  background-size:cover;
  opacity:.34;
  mix-blend-mode:screen;
  filter:saturate(.78) brightness(.74) contrast(1.04);
  -webkit-mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.42) 12%,rgba(0,0,0,.88) 36%,#000 62%,#000 100%);
  mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.42) 12%,rgba(0,0,0,.88) 36%,#000 62%,#000 100%);
  transform-origin:50% 100%;
  animation:modalVisualSmokeV4911 20s ease-in-out infinite alternate;
}
@keyframes modalVisualSmokeV4911{
  0%{transform:translate3d(-1.2%,1%,0) scale(1.03);opacity:.30}
  50%{transform:translate3d(.8%,-.5%,0) scale(1.055);opacity:.36}
  100%{transform:translate3d(1.2%,.4%,0) scale(1.04);opacity:.32}
}

/* ===== LABA v49.12 — real smoke layer inside contest visual =====
   Stop relying on the pseudo-element: the 3:1 smoke asset became too faint
   after screen blending/cropping. A real child displays the dense left plume. */
.home-body.contest-theme-fire #contestModal .contest-visual::after{
  content:none!important;
  display:none!important;
}
.home-body.contest-theme-fire #contestModal .contest-visual-smoke{
  position:absolute;
  z-index:1;
  left:0;
  right:0;
  bottom:0;
  height:67%;
  pointer-events:none;
  background-image:var(--fire-smoke);
  background-repeat:no-repeat;
  /* Render by height, not by width: this intentionally crops the wide asset
     and keeps its dense left plume visible in the narrow modal column. */
  background-size:auto 112%;
  background-position:left bottom;
  opacity:.62;
  mix-blend-mode:normal;
  filter:brightness(1.04) contrast(.92) saturate(.72);
  -webkit-mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.50) 13%,#000 32%,#000 100%);
  mask-image:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.50) 13%,#000 32%,#000 100%);
  transform-origin:0 100%;
  animation:contestVisualSmokeFlowV4912 19s ease-in-out infinite alternate;
}
@keyframes contestVisualSmokeFlowV4912{
  0%{transform:translate3d(-2%,1%,0) scale(1.02);opacity:.56}
  50%{transform:translate3d(1%,-1.5%,0) scale(1.055);opacity:.68}
  100%{transform:translate3d(2.5%,.2%,0) scale(1.035);opacity:.60}
}
.home-body.contest-theme-fire #contestModal .contest-glow,
.home-body.contest-theme-fire #contestModal .contest-emblem,
.home-body.contest-theme-fire #contestModal .contest-ring{
  z-index:2;
}
@media(max-width:620px){
  .home-body.contest-theme-fire #contestModal .contest-visual-smoke{
    height:92%;
    background-size:130% auto;
    background-position:left bottom;
    opacity:.48;
  }
}

/* ===== LABA v49.13 — hide the hard vertical smoke cutoff in the contest modal =====
   Keep the existing smoke plume, but add a soft smoke bleed on the modal itself
   that crosses the column boundary and fades into the right side. This removes
   the hard vertical edge without changing the overall smoke look. */
.home-body.contest-theme-fire #contestModal .contest-modal::after{
  content:"";
  position:absolute;
  z-index:1;
  left:0;
  bottom:0;
  width:52%;
  height:38%;
  pointer-events:none;
  background-image:var(--fire-smoke);
  background-repeat:no-repeat;
  background-position:left bottom;
  background-size:auto 128%;
  opacity:.36;
  filter:brightness(1.02) contrast(.92) saturate(.74);
  -webkit-mask-image:
    linear-gradient(to right,#000 0%,#000 64%,rgba(0,0,0,.55) 82%,transparent 100%),
    linear-gradient(to top,#000 0%,#000 62%,rgba(0,0,0,.58) 84%,transparent 100%);
  -webkit-mask-composite:source-in;
  mask-image:
    linear-gradient(to right,#000 0%,#000 64%,rgba(0,0,0,.55) 82%,transparent 100%),
    linear-gradient(to top,#000 0%,#000 62%,rgba(0,0,0,.58) 84%,transparent 100%);
  mask-composite:intersect;
  transform-origin:0 100%;
  animation:contestModalSmokeBleedV4913 21s ease-in-out infinite alternate;
}
@keyframes contestModalSmokeBleedV4913{
  0%{transform:translate3d(-1%,1%,0) scale(1.01);opacity:.30}
  50%{transform:translate3d(1%,-1%,0) scale(1.04);opacity:.40}
  100%{transform:translate3d(2%,.2%,0) scale(1.02);opacity:.34}
}
.home-body.contest-theme-fire #contestModal .contest-visual,
.home-body.contest-theme-fire #contestModal .contest-content,
.home-body.contest-theme-fire #contestModal .modal-close{z-index:2;}

/* ===== LABA v49.14 — soften ONLY the left smoke boundary ===== */
.home-body.contest-theme-fire #contestModal .contest-modal::after{
  content:none!important;
  display:none!important;
}
.home-body.contest-theme-fire #contestModal .contest-visual{
  border-right:0!important;
}
.home-body.contest-theme-fire #contestModal .contest-visual-smoke{
  -webkit-mask-image:
    linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.50) 13%,#000 32%,#000 100%),
    linear-gradient(to right,#000 0%,#000 80%,rgba(0,0,0,.78) 87%,rgba(0,0,0,.34) 94%,transparent 100%);
  -webkit-mask-composite:source-in;
  mask-image:
    linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.50) 13%,#000 32%,#000 100%),
    linear-gradient(to right,#000 0%,#000 80%,rgba(0,0,0,.78) 87%,rgba(0,0,0,.34) 94%,transparent 100%);
  mask-composite:intersect;
}


/* ===== LABA v49.16 — contest modal corner fire, no smoke ===== */
.home-body.contest-theme-fire #contestModal .fire-layer-smoke,
.home-body.contest-theme-fire #contestModal .contest-visual-smoke{
  display:none!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-bottom,
.home-body.contest-theme-fire #contestModal .fire-layer-top{
  display:none!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-left,
.home-body.contest-theme-fire #contestModal .fire-layer-corner-right{
  display:block!important;
  position:absolute!important;
  z-index:1!important;
  width:min(31%,230px)!important;
  aspect-ratio:1!important;
  pointer-events:none!important;
  opacity:.88!important;
  background-image:var(--fire-corner-left)!important;
  background-repeat:no-repeat!important;
  background-size:contain!important;
  filter:drop-shadow(0 0 12px rgba(255,92,22,.24)) drop-shadow(0 0 30px rgba(176,35,6,.12))!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-left{
  left:-1px!important;
  top:-1px!important;
  right:auto!important;
  bottom:auto!important;
  background-position:left top!important;
  transform:none!important;
  transform-origin:0 0!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-right{
  right:-1px!important;
  bottom:-1px!important;
  left:auto!important;
  top:auto!important;
  background-position:left top!important;
  transform:rotate(180deg)!important;
  transform-origin:50% 50%!important;
}
/* keep decorative corner layers behind modal content */
.home-body.contest-theme-fire #contestModal .contest-modal>.contest-fire-decor{
  z-index:1!important;
  overflow:hidden!important;
}
.home-body.contest-theme-fire #contestModal .contest-visual,
.home-body.contest-theme-fire #contestModal .contest-content,
.home-body.contest-theme-fire #contestModal .modal-close{
  position:relative;
  z-index:2!important;
}

/* ===== LABA v49.17 — crisp left visual + corner fire as the modal frame ===== */
/* Remove the soft/blurred halo from the left visual block. */
.home-body.contest-theme-fire #contestModal .contest-glow{
  filter:none!important;
  animation:none!important;
  opacity:.72!important;
  background:radial-gradient(circle,
    rgba(255,168,61,.34) 0%,
    rgba(226,88,20,.15) 34%,
    rgba(117,28,7,.05) 55%,
    transparent 72%)!important;
}
.home-body.contest-theme-fire #contestModal .contest-visual::before{
  opacity:.09!important;
}

/* Corner fire sits ON the modal edge and protrudes outside like a frame. */
.home-body.contest-theme-fire #contestModal .contest-modal>.contest-fire-decor{
  z-index:4!important;
  overflow:visible!important;
  pointer-events:none!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-left,
.home-body.contest-theme-fire #contestModal .fire-layer-corner-right{
  z-index:4!important;
  width:min(34%,255px)!important;
  opacity:.96!important;
  filter:drop-shadow(0 0 10px rgba(255,111,30,.30)) drop-shadow(0 0 26px rgba(185,43,8,.18))!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-left{
  left:-22px!important;
  top:-22px!important;
  right:auto!important;
  bottom:auto!important;
  background-position:left top!important;
  transform:none!important;
  transform-origin:0 0!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-right{
  right:-22px!important;
  bottom:-22px!important;
  left:auto!important;
  top:auto!important;
  background-position:left top!important;
  transform:rotate(180deg)!important;
  transform-origin:50% 50%!important;
}
/* Content stays readable; the corner frame is allowed to overlap only the edges. */
.home-body.contest-theme-fire #contestModal .contest-visual,
.home-body.contest-theme-fire #contestModal .contest-content{
  z-index:2!important;
}
.home-body.contest-theme-fire #contestModal .modal-close{
  z-index:7!important;
}

/* ===== LABA v49.18 — modal corner fire overlaps the block like a frame ===== */
/* Remove the remaining hazy/soft layer in the left visual block. */
.home-body.contest-theme-fire #contestModal .contest-glow{
  display:none!important;
}
.home-body.contest-theme-fire #contestModal .contest-visual::before{
  display:none!important;
}
.home-body.contest-theme-fire #contestModal .contest-visual{
  background:
    radial-gradient(circle at 50% 38%,rgba(235,91,18,.08),transparent 28%),
    linear-gradient(180deg,rgba(28,12,8,.74),rgba(8,9,9,.96))!important;
}

/* Let the corner fire sit directly on the block edges and protrude outward. */
.home-body.contest-theme-fire #contestModal .contest-modal{
  overflow:visible!important;
}
.home-body.contest-theme-fire #contestModal .contest-content,
.home-body.contest-theme-fire #contestModal .contest-visual{
  overflow:hidden!important;
  border-radius:26px!important;
}
.home-body.contest-theme-fire #contestModal .contest-modal>.contest-fire-decor{
  z-index:5!important;
  overflow:visible!important;
  inset:0!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-left,
.home-body.contest-theme-fire #contestModal .fire-layer-corner-right{
  z-index:5!important;
  width:min(39%,300px)!important;
  opacity:1!important;
  filter:drop-shadow(0 0 8px rgba(255,120,40,.28)) drop-shadow(0 0 22px rgba(182,41,8,.16))!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-left{
  left:-46px!important;
  top:-32px!important;
  background-position:left top!important;
  transform:none!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-right{
  right:-46px!important;
  bottom:-32px!important;
  background-position:left top!important;
  transform:rotate(180deg)!important;
  transform-origin:50% 50%!important;
}
/* Keep controls above the decorative frame. */
.home-body.contest-theme-fire #contestModal .contest-content,
.home-body.contest-theme-fire #contestModal .contest-visual,
.home-body.contest-theme-fire #contestModal .modal-close{
  position:relative;
  z-index:2!important;
}
.home-body.contest-theme-fire #contestModal .modal-close{z-index:7!important;}

/* ===== LABA v49.19 — modal embers stay inside; corner fire aligned to corners ===== */
/* Keep the ember field inside the modal block instead of floating outside it. */
.home-body.contest-theme-fire #contestModal .contest-modal>.contest-fire-decor{
  inset:0!important;
  z-index:1!important;
  overflow:visible!important;
  pointer-events:none!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-embers{
  inset:0!important;
  z-index:1!important;
  border-radius:26px!important;
  clip-path:inset(0 round 26px)!important;
  background-position:center!important;
  background-size:cover!important;
  opacity:.34!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-cracks{
  inset:44% 0 -10% 40%!important;
  clip-path:inset(0 round 26px)!important;
}
/* Put the fiery corner assets directly on the modal corners so they protrude from the block. */
.home-body.contest-theme-fire #contestModal .fire-layer-corner-left,
.home-body.contest-theme-fire #contestModal .fire-layer-corner-right{
  z-index:5!important;
  width:min(36%,270px)!important;
  aspect-ratio:1!important;
  border-radius:0!important;
  clip-path:none!important;
  opacity:1!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-left{
  left:-8px!important;
  top:-8px!important;
  right:auto!important;
  bottom:auto!important;
  background-position:left top!important;
  transform:none!important;
  transform-origin:0 0!important;
}
.home-body.contest-theme-fire #contestModal .fire-layer-corner-right{
  right:-8px!important;
  bottom:-8px!important;
  left:auto!important;
  top:auto!important;
  background-position:left top!important;
  transform:rotate(180deg)!important;
  transform-origin:50% 50%!important;
}
.home-body.contest-theme-fire #contestModal .contest-visual,
.home-body.contest-theme-fire #contestModal .contest-content,
.home-body.contest-theme-fire #contestModal .modal-close{
  position:relative;
  z-index:2!important;
}
.home-body.contest-theme-fire #contestModal .modal-close{z-index:7!important;}

/* ===== LABA v49.20 — proper split layers for the home contest modal ===== */
/* Hide ember field from the landing card while the contest modal is open,
   so only the modal's own particles stay visible. */
.home-body.contest-theme-fire.contest-modal-open .landing-card > .contest-fire-decor .fire-layer-embers,
.home-body.contest-theme-fire.contest-modal-open .landing-card > .contest-fire-decor .fire-layer-smoke,
.home-body.contest-theme-fire.contest-modal-open .landing-card > .contest-fire-decor .fire-layer-cracks{
  opacity:0!important;
}

/* Cancel older single-holder decoration inside the modal and use separate inner/outer layers. */
.home-body.contest-theme-fire #contestModal .contest-modal{
  overflow:visible!important;
}
.home-body.contest-theme-fire #contestModal .contest-modal > .contest-fire-decor:not(.contest-fire-inner):not(.contest-fire-outer){
  display:none!important;
}
.home-body.contest-theme-fire #contestModal .contest-fire-inner,
.home-body.contest-theme-fire #contestModal .contest-fire-outer{
  position:absolute;
  inset:0;
  display:block;
  pointer-events:none;
}
.home-body.contest-theme-fire #contestModal .contest-fire-inner{
  z-index:1!important;
  overflow:hidden!important;
  border-radius:26px!important;
}
.home-body.contest-theme-fire #contestModal .contest-fire-outer{
  z-index:5!important;
  overflow:visible!important;
}

/* Embers stay inside the block. No cover stretch, no spill outside the modal. */
.home-body.contest-theme-fire #contestModal .contest-fire-inner .fire-layer-embers{
  inset:0!important;
  opacity:.30!important;
  border-radius:inherit!important;
  overflow:hidden!important;
  clip-path:inset(0 round 26px)!important;
  mix-blend-mode:screen!important;
}
.home-body.contest-theme-fire #contestModal .contest-fire-inner .fire-layer-embers::before,
.home-body.contest-theme-fire #contestModal .contest-fire-inner .fire-layer-embers::after{
  inset:-4%!important;
  background-position:center!important;
  background-size:520px 520px!important;
}
.home-body.contest-theme-fire #contestModal .contest-fire-inner .fire-layer-cracks{
  inset:46% 0 -10% 42%!important;
  opacity:.18!important;
  clip-path:inset(0 round 26px)!important;
}
/* No smoke or flame strips in the modal. */
.home-body.contest-theme-fire #contestModal .contest-fire-inner .fire-layer-smoke,
.home-body.contest-theme-fire #contestModal .contest-fire-inner .fire-layer-top,
.home-body.contest-theme-fire #contestModal .contest-fire-inner .fire-layer-bottom,
.home-body.contest-theme-fire #contestModal .contest-fire-outer .fire-layer-top,
.home-body.contest-theme-fire #contestModal .contest-fire-outer .fire-layer-bottom,
.home-body.contest-theme-fire #contestModal .contest-fire-outer .fire-layer-smoke{
  display:none!important;
}

/* Fiery corners sit exactly on the modal corners and protrude outside like a frame. */
.home-body.contest-theme-fire #contestModal .contest-fire-outer .fire-layer-corner-left,
.home-body.contest-theme-fire #contestModal .contest-fire-outer .fire-layer-corner-right{
  position:absolute!important;
  display:block!important;
  z-index:5!important;
  width:min(34%,255px)!important;
  aspect-ratio:1!important;
  background-image:var(--fire-corner-left)!important;
  background-repeat:no-repeat!important;
  background-size:contain!important;
  opacity:.98!important;
  filter:drop-shadow(0 0 9px rgba(255,111,30,.26)) drop-shadow(0 0 22px rgba(185,43,8,.16))!important;
  clip-path:none!important;
  border-radius:0!important;
}
.home-body.contest-theme-fire #contestModal .contest-fire-outer .fire-layer-corner-left{
  left:-16px!important;
  top:-16px!important;
  right:auto!important;
  bottom:auto!important;
  background-position:left top!important;
  transform:none!important;
  transform-origin:0 0!important;
}
.home-body.contest-theme-fire #contestModal .contest-fire-outer .fire-layer-corner-right{
  right:-16px!important;
  bottom:-16px!important;
  left:auto!important;
  top:auto!important;
  background-position:left top!important;
  transform:rotate(180deg)!important;
  transform-origin:50% 50%!important;
}

/* Keep the modal content over the inner ember field but below the outer corner frame. */
.home-body.contest-theme-fire #contestModal .contest-visual,
.home-body.contest-theme-fire #contestModal .contest-content,
.home-body.contest-theme-fire #contestModal .modal-close{
  position:relative;
  z-index:2!important;
}
.home-body.contest-theme-fire #contestModal .modal-close{z-index:7!important;}

/* ===== LABA v49.21 — no modal corners, 2x ember density ===== */
.home-body.contest-theme-fire #contestModal .contest-fire-outer,
.home-body.contest-theme-fire #contestModal .fire-layer-corner-left,
.home-body.contest-theme-fire #contestModal .fire-layer-corner-right{
  display:none!important;
}

/* Roughly double the particle density by reducing tile size by sqrt(2).
   Keeps the same seamless two-copy motion, just with more embers visible. */
.home-body.contest-theme-fire #contestModal .contest-fire-inner .fire-layer-embers::before,
.home-body.contest-theme-fire #contestModal .contest-fire-inner .fire-layer-embers::after{
  background-size:368px 368px!important;
}
.home-body.contest-theme-fire #contestModal .contest-fire-inner .fire-layer-embers{
  opacity:.36!important;
}
