/* LF STUDIO V13: additive effects only; original layout/colors stay intact. */
.rf-section, .restored-section{--lf-fx-color:#9867ff;--lf-fx-glow:.65;--lf-glow-soft:10px;--lf-glow-outer:25px;--lf-fx-speed:9s;--lf-fx-shine-speed:5s;--lf-fx-size:1;--lf-fx-title-color:#fff;--lf-fx-title-glow:#ad83ff;--lf-fx-title-glow-strength:.35}
/* Interactive 3D logo in the original character card. */
.rf-character{perspective:1000px}
.rf-character.lf-logo-only{min-height:230px}
.lf-home-brand{position:absolute;left:2%;top:2%;width:94%;height:94%;display:grid;place-items:center;z-index:0;perspective:1200px;pointer-events:none;isolation:isolate}
.lf-home-brand:before{content:"";position:absolute;inset:21%;border-radius:50%;background:radial-gradient(circle,var(--lf-fx-color),transparent 72%);filter:blur(44px);opacity:calc(.18 + .32 * var(--lf-fx-glow))}
.lf-home-logo-3d{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d;transform:rotateY(-24deg) rotateX(10deg)}
.lf-home-logo-depth,.lf-home-logo-front{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transform-style:preserve-3d}
.lf-home-logo-depth{transform:translateZ(-18px) translate(8px,10px) scale(1.01);filter:brightness(.28) saturate(1.25);opacity:.95}
.lf-home-logo-depth img{width:100%;height:100%;object-fit:contain;display:block}
.lf-home-logo-front{transform:translateZ(16px);image-rendering:auto;filter:drop-shadow(0 8px 6px #0009)}
.lf-home-logo-shine{position:absolute;inset:0;pointer-events:none;transform:translateZ(22px);opacity:0;-webkit-mask-image:var(--lf-mask-image);mask-image:var(--lf-mask-image);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}
.lf-home-logo-shine::before{content:"";position:absolute;top:-25%;bottom:-25%;left:-40%;width:30%;transform:skewX(-23deg);background:linear-gradient(90deg,transparent 0,#ffffff00 18%,#ffffff70 42%,#ffffff 50%,#ffffff70 58%,#ffffff00 82%,transparent 100%);filter:blur(2px)}
/* Character always renders in front of the mark. */
.rf-character>.lf-mc3d,.rf-character>img,.rf-character>.rf-orbit{z-index:2}
.rf-character>.rf-orbit{z-index:1}
/* Object-level motion modes; controls use validated values from the CMS. */
[data-lf-asset-motion=turn] .lf-home-logo-3d{animation:lf-fx-turn var(--lf-fx-speed) linear infinite}
[data-lf-asset-motion=sway] .lf-home-logo-3d{animation:lf-fx-sway var(--lf-fx-speed) ease-in-out infinite}
[data-lf-asset-motion=float] .lf-home-logo-3d{animation:lf-fx-float var(--lf-fx-speed) ease-in-out infinite}
[data-lf-asset-motion=pulse] .lf-home-logo-3d{animation:lf-fx-pulse var(--lf-fx-speed) ease-in-out infinite}
/* Section image when an editor picks a different picture. */
[data-lf-asset-motion=turn] .rf-section-image{animation:lf-fx-img-turn var(--lf-fx-speed) linear infinite}
[data-lf-asset-motion=sway] .rf-section-image{animation:lf-fx-sway var(--lf-fx-speed) ease-in-out infinite}
[data-lf-asset-motion=float] .rf-section-image{animation:lf-fx-float var(--lf-fx-speed) ease-in-out infinite}
[data-lf-asset-motion=pulse] .rf-section-image{animation:lf-fx-pulse var(--lf-fx-speed) ease-in-out infinite}
[data-lf-asset-glow=true] .lf-home-logo-front,[data-lf-asset-glow=true] .rf-section-image{filter:drop-shadow(0 0 var(--lf-glow-soft) color-mix(in srgb,var(--lf-fx-color) 92%,white 8%)) drop-shadow(0 0 var(--lf-glow-soft) var(--lf-fx-color)) drop-shadow(0 0 var(--lf-glow-outer) color-mix(in srgb,var(--lf-fx-color) 80%,#6fd8ff 20%)) drop-shadow(0 16px 24px #0007)}
[data-lf-asset-shine=true] .lf-home-logo-shine{opacity:.96}
[data-lf-asset-shine=true] .lf-home-logo-shine::before{animation:lf-fx-shine var(--lf-fx-shine-speed) ease-in-out infinite}
/* Per-project carousel / preview banners with their own effects. */
.lf-banner-fx{--lf-fx-speed:9s;--lf-fx-color:#9867ff;--lf-fx-glow:.65;--lf-fx-shine-speed:5s}
.lf-banner-fx .rf-slide-art img,.lf-banner-fx .rf-project-image img{transform-style:preserve-3d;transform-origin:50% 50%}
.lf-banner-fx[data-lf-asset-motion=turn] .rf-slide-art img,.lf-banner-fx[data-lf-asset-motion=turn] .rf-project-image img{animation:lf-fx-img-turn var(--lf-fx-speed) linear infinite}
.lf-banner-fx[data-lf-asset-motion=sway] .rf-slide-art img,.lf-banner-fx[data-lf-asset-motion=sway] .rf-project-image img{animation:lf-fx-sway var(--lf-fx-speed) ease-in-out infinite}
.lf-banner-fx[data-lf-asset-motion=float] .rf-slide-art img,.lf-banner-fx[data-lf-asset-motion=float] .rf-project-image img{animation:lf-fx-float var(--lf-fx-speed) ease-in-out infinite}
.lf-banner-fx[data-lf-asset-motion=pulse] .rf-slide-art img,.lf-banner-fx[data-lf-asset-motion=pulse] .rf-project-image img{animation:lf-fx-pulse var(--lf-fx-speed) ease-in-out infinite}
.lf-banner-fx[data-lf-asset-glow=true] .rf-slide-art img,.lf-banner-fx[data-lf-asset-glow=true] .rf-project-image img{filter:drop-shadow(0 0 var(--lf-glow-soft) color-mix(in srgb,var(--lf-fx-color) 90%,white 10%)) drop-shadow(0 0 var(--lf-glow-soft) var(--lf-fx-color)) drop-shadow(0 0 var(--lf-glow-outer) color-mix(in srgb,var(--lf-fx-color) 70%,#73d9ff 30%))}
.lf-banner-fx[data-lf-asset-shine=true] .rf-slide-art::after,.lf-banner-fx[data-lf-asset-shine=true] .rf-project-image::after{content:"";position:absolute;inset:-18%;z-index:1;pointer-events:none;background:linear-gradient(110deg,transparent 0,#ffffff00 28%,#ffffff75 47%,#ffffff 50%,#ffffff75 53%,#ffffff00 72%,transparent 100%);transform:translateX(-165%) skewX(-18deg);animation:lf-fx-banner-shine var(--lf-fx-shine-speed) ease-in-out infinite;-webkit-mask-image:var(--lf-mask-image);mask-image:var(--lf-mask-image);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;mix-blend-mode:screen}
.lf-banner-fx .rf-project-image{position:relative;overflow:hidden}
/* Section headings: adjustable without modifying the rest of the typography. */
.rf-section .rf-section-head h2,.rf-section .rf-welcome h1{color:var(--lf-fx-title-color);font-size:calc(2.3rem * var(--lf-fx-size))}
.rf-section .rf-section-head h2{font-size:clamp(1.9rem,calc(3.1vw * var(--lf-fx-size)),calc(3.6rem * var(--lf-fx-size)))}
.rf-section .rf-welcome h1{font-size:clamp(1.5rem,calc(2.4vw * var(--lf-fx-size)),calc(2.4rem * var(--lf-fx-size)))}
.rf-section[data-lf-title-glow=true] .rf-section-head h2,.rf-section[data-lf-title-glow=true] .rf-welcome h1{ text-shadow:0 0 calc(25px * var(--lf-fx-title-glow-strength)) var(--lf-fx-title-glow), 0 0 calc(48px * var(--lf-fx-title-glow-strength)) var(--lf-fx-title-glow)}
.rf-article-hero[data-lf-title-glow=true] h2{color:var(--lf-fx-title-color);text-shadow:0 0 calc(26px * var(--lf-fx-title-glow-strength)) var(--lf-fx-title-glow)}
.rf-section[data-lf-bg-motion=zoom][style*=background-image],.rf-article-hero[data-lf-bg-motion=zoom][style*=background-image]{animation:lf-fx-bg-zoom 18s ease-in-out infinite alternate}
.rf-section[data-lf-bg-motion=pan][style*=background-image],.rf-article-hero[data-lf-bg-motion=pan][style*=background-image]{animation:lf-fx-bg-pan 22s linear infinite alternate}
.rf-section[data-lf-bg-shine=true],.rf-article-hero[data-lf-bg-shine=true]{position:relative;isolation:isolate}
.rf-section[data-lf-bg-shine=true]::after,.rf-article-hero[data-lf-bg-shine=true]::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;background:linear-gradient(110deg,transparent 32%,#ffffff04 43%,#ffffff13 48%,transparent 60%);background-size:250% 100%;animation:lf-fx-bg-shine 10s linear infinite}
.rf-section[data-lf-bg-shine=true]>.rf-container,.rf-article-hero[data-lf-bg-shine=true]>*{position:relative;z-index:1}
@keyframes lf-fx-turn{0%{transform:perspective(1200px) rotateX(10deg) rotateY(-28deg) translateY(0)}25%{transform:perspective(1200px) rotateX(4deg) rotateY(58deg) translateY(-5px)}50%{transform:perspective(1200px) rotateX(-4deg) rotateY(152deg) translateY(0)}75%{transform:perspective(1200px) rotateX(5deg) rotateY(250deg) translateY(5px)}100%{transform:perspective(1200px) rotateX(10deg) rotateY(332deg) translateY(0)}}
@keyframes lf-fx-img-turn{0%{transform:perspective(1000px) rotateX(3deg) rotateY(0)}50%{transform:perspective(1000px) rotateX(-2deg) rotateY(180deg)}100%{transform:perspective(1000px) rotateX(3deg) rotateY(360deg)}}
@keyframes lf-fx-sway{0%,100%{transform:perspective(850px) rotateY(-22deg) rotateX(5deg)}50%{transform:perspective(850px) rotateY(22deg) rotateX(-3deg)}}
@keyframes lf-fx-float{0%,100%{transform:translateY(0) rotateY(-12deg)}50%{transform:translateY(-11px) rotateY(12deg)}}
@keyframes lf-fx-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.055)}}
@keyframes lf-fx-shine{0%,16%{left:-52%}60%,100%{left:125%}}
@keyframes lf-fx-banner-shine{0%,14%{transform:translateX(-165%) skewX(-18deg)}68%,100%{transform:translateX(165%) skewX(-18deg)}}
@keyframes lf-fx-bg-zoom{from{background-size:100% auto}to{background-size:115% auto}}
@keyframes lf-fx-bg-pan{from{background-position:0 40%}to{background-position:100% 70%}}
@keyframes lf-fx-bg-shine{from{background-position:160% 0}to{background-position:-70% 0}}
@media(min-width:801px) and (max-width:1100px){.lf-home-brand{left:0;width:88%;height:88%}}
@media(max-width:800px){.lf-home-brand{left:3%;top:10%;width:82%;height:74%}.rf-section .rf-welcome h1{font-size:calc(1.9rem * var(--lf-fx-size))}}
@media(max-width:520px){.lf-home-brand{left:-2%;width:88%;top:16%;height:66%}.rf-section .rf-welcome h1{font-size:calc(1.58rem * var(--lf-fx-size))}}
@media(prefers-reduced-motion:reduce){.lf-home-logo-3d,.lf-home-logo-shine::before,.lf-banner-fx img,.lf-banner-fx::after,.rf-section-image,.rf-section[data-lf-bg-motion],.rf-section[data-lf-bg-shine]::after,.rf-article-hero[data-lf-bg-motion],.rf-article-hero[data-lf-bg-shine]::after{animation:none!important}}

.lf-banner-fx[data-lf-asset-motion=still] .rf-slide-art img,.lf-banner-fx[data-lf-asset-motion=still] .rf-project-image img{animation:none}

/* LF STUDIO: staggered Redragon-inspired card deck. Only rendered for >=2 images. */
.lf-slide-deck {position:relative}
.lf-deck-enabled{perspective:1000px}
.rf-slide-art.lf-deck-enabled{background:radial-gradient(ellipse at 74% 45%,color-mix(in srgb,var(--lf-fx-color) 26%,#171a2b),#121725 70%)}
.lf-deck-stage{position:absolute;inset:0;display:block;pointer-events:none;perspective:1100px;transform-style:preserve-3d;isolation:isolate}
.lf-deck-card{position:absolute;left:27%;top:12%;width:51%;height:67%;display:grid;place-items:center;transform-style:preserve-3d;backface-visibility:hidden;transition:transform .95s cubic-bezier(.2,.82,.15,1),opacity .78s ease,filter .78s ease;will-change:transform,opacity;filter:drop-shadow(0 20px 14px #0008);background:linear-gradient(130deg,#ffffff13,#ffffff03);border:1px solid #ffffff2b;border-radius:16px;box-shadow:0 24px 40px #0005;overflow:hidden}
.lf-deck-card img{width:100%;height:100%;object-fit:contain!important;margin:0!important;animation:none!important;filter:none!important;padding:8px}
.lf-deck-card[data-deck-pos="0"]{opacity:1;transform:translate3d(-27%,4%,75px) rotateY(-14deg) rotateZ(-7deg) scale(1);filter:drop-shadow(0 23px 16px #0009)}
.lf-deck-card[data-deck-pos="1"]{opacity:.93;transform:translate3d(42%,-7%,12px) rotateY(20deg) rotateZ(9deg) scale(.88);filter:drop-shadow(0 16px 14px #0006)}
.lf-deck-card[data-deck-pos="2"]{opacity:.64;transform:translate3d(62%,5%,-30px) rotateY(29deg) rotateZ(15deg) scale(.72);filter:blur(.2px)}
.lf-deck-card[data-deck-pos="3"]{opacity:0;transform:translate3d(80%,-1%,-75px) rotateY(44deg) rotateZ(22deg) scale(.5)}
.rf-project-image.lf-deck-enabled .lf-deck-card{left:17%;top:15%;width:65%;height:73%;border-radius:12px}
.rf-project-image.lf-deck-enabled .lf-deck-card img{padding:6px}
.rf-project-image.lf-deck-enabled .lf-deck-stage{z-index:0}
.rf-slide-art.lf-deck-enabled .lf-deck-stage{z-index:0}
.lf-deck-enabled .lf-deck-card img{transform:none!important}
@media (max-width:600px){.lf-deck-card{left:16%;top:17%;width:64%;height:60%}.rf-project-image.lf-deck-enabled .lf-deck-card{width:70%;left:15%;top:15%;height:70%}}
@media(prefers-reduced-motion:reduce){.lf-deck-card{transition:none!important}.lf-deck-card:not([data-deck-pos="0"]){opacity:0!important}}

.lf-banner-fx[data-lf-asset-glow="true"] .lf-deck-card{filter:drop-shadow(0 0 var(--lf-glow-soft) var(--lf-fx-color)) drop-shadow(0 0 var(--lf-glow-outer) color-mix(in srgb,var(--lf-fx-color) 50%,#77d9ff 50%))}
