/* RF homepage visual pass. Scoped so other game and administration pages retain their styles. */
body.rfRefresh:before,body.rfRefresh:after{display:none!important;content:none!important}
.rfRefresh .rfCards{padding:0 30px 35px!important}
.rfRefresh .rfCard h2,.rfRefresh .rfCard h2.displayFont{font:600 23px/1.2 Rajdhani,sans-serif!important;letter-spacing:0!important;margin:0 0 10px!important;color:#f4efe7!important;-webkit-text-fill-color:currentColor!important;text-shadow:0 2px 6px #000!important;background:none!important}
body.rfRefresh{margin:0;background:#07131e url('assets/rf/scene.webp') center top/auto 780px no-repeat!important;color:#eef4f7;font-family:'DM Sans',sans-serif;overflow-x:hidden}
.rfRefresh .topScene{background:transparent!important;min-height:0!important;padding:0!important}
.rfRefresh .topScene:before,.rfRefresh .topScene:after,.rfRefresh .scrollGlow,.rfRefresh .exactHeroBg,.rfRefresh .embers{display:none!important}
.rfRefresh .guildSiteHeader{background:linear-gradient(105deg,#06131ee8,#19303b99 65%,#06131ee6)!important;border-bottom:0!important}
.rfRefresh .guildHeaderRow{position:relative;max-width:1440px;padding:15px 30px;min-height:142px;background:transparent!important;gap:24px}
.rfRefresh .guildHeaderRow:after{content:'';position:absolute;bottom:0;left:6%;right:6%;height:1px;background:linear-gradient(90deg,transparent,#bddbeb,#bd9555,#bddbeb,transparent);box-shadow:0 0 14px #96d5f4}
.rfRefresh .guildHeaderBrand{flex:1;min-width:0}
.rfRefresh .guildHeaderBrand img{width:390px;height:112px;max-width:100%;object-fit:contain;object-position:left center;filter:drop-shadow(0 3px 10px #0009)}
.rfRefresh .guildHeaderBrand strong{display:none}
.rfRefresh .guildSiteHeader .guildAccountToggle{position:relative;flex:0 0 300px;width:300px!important;height:98px!important;aspect-ratio:auto;min-height:98px;padding:12px 18px 12px 12px!important;background:linear-gradient(145deg,#496575 0%,#223b4a 12%,#102432 48%,#08131e 49%,#193343)!important;border:1px solid #abc6d3!important;clip-path:polygon(14px 0,calc(100% - 26px) 0,100% 26px,100% calc(100% - 14px),calc(100% - 14px) 100%,14px 100%,0 calc(100% - 14px),0 14px);box-shadow:inset 0 0 0 4px #05111c,inset 0 0 0 5px #84abc64a;overflow:hidden}
.rfRefresh .guildAccountArtwork{display:none!important}
.rfRefresh .guildSiteHeader .guildAccountPortrait{display:block!important;position:absolute;left:12px;top:12px;width:72px!important;height:72px!important;object-fit:cover;object-position:center;transform:none;border:2px solid #91b5c8;clip-path:polygon(8px 0,calc(100% - 8px) 0,100% 8px,100% calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px),0 8px)}
.rfRefresh .guildSiteHeader .guildAccountName{position:absolute;left:99px;right:24px;top:27px;width:auto;height:auto;clip-path:none;color:#eef5f8;font:600 23px/1.2 Rajdhani,sans-serif;text-shadow:0 2px 3px #000;letter-spacing:.02em;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rfRefresh .guildSiteHeader .guildAccountRole{display:block;position:absolute;left:99px;right:22px;top:59px;color:#9dbbcb;font:600 10px/1.2 Rajdhani,sans-serif;letter-spacing:.11em;text-align:left;text-transform:uppercase}
.rfRefresh .guildSiteHeader .guildAccountToggle:before{content:'';position:absolute;top:7px;left:25px;right:35px;height:2px;background:linear-gradient(90deg,#81b5ce,transparent);box-shadow:0 0 8px #7dcaf377}
.rfRefresh .guildSiteHeader .guildAccountToggle:after{content:'';position:absolute;top:auto;bottom:8px;right:22px;width:44px;height:3px;background:linear-gradient(90deg,#9dcbe4 0 28%,transparent 28% 36%,#9dcbe4 36% 64%,transparent 64% 72%,#9dcbe4 72%);opacity:.7}
.rfRefresh .guildSiteHeader .guildAccountDropdown{top:calc(100% - 55px);background:#081520fa;border-color:#789eb2;z-index:50}
.rfRefresh .guildHeaderSignIn{max-width:none;padding:12px 20px;border:1px solid #789eb2;color:#d4effb;background:#0a202c;font:600 14px Rajdhani,sans-serif;letter-spacing:.08em}
.rfRefresh .guildSiteHeader .guildHeaderNav{position:relative;inset:auto;display:flex!important;flex-wrap:wrap;align-items:center;justify-content:center;gap:0;margin:0!important;padding:0 24px!important;min-height:58px;background:#081520ed!important;border:0;border-top:1px solid #aacddd22;border-bottom:1px solid #8bbdd044;box-shadow:0 8px 24px #0005;overflow:visible}
.rfRefresh .guildSiteHeader .guildHeaderNav :is(a,button){flex:1 1 auto;position:relative;isolation:isolate;overflow:hidden;min-width:0;min-height:58px;height:auto;padding:18px 14px;border:0;border-radius:0;clip-path:none;background:transparent!important;background-image:none!important;box-shadow:none;color:#a9becd!important;font:600 14px/1.2 Rajdhani,sans-serif!important;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;transition:color .2s,background .2s,text-shadow .2s}
.rfRefresh .guildSiteHeader .guildHeaderNav :is(a,button):before{display:block;content:'';position:absolute;z-index:-1;inset:0;mask:none;background:linear-gradient(110deg,transparent 30%,#9ee6ff08 43%,#bdefff44 50%,#9ee6ff08 57%,transparent 70%);transform:translateX(-120%);pointer-events:none}
.rfRefresh .guildHeaderNav :is(a,button):after{position:absolute;content:'';height:2px;bottom:0;left:20%;right:20%;background:transparent;transition:background .2s,left .2s,right .2s,box-shadow .2s}
.rfRefresh .guildSiteHeader .guildHeaderNav :is(a,button):is(:hover,:focus-visible){color:#effbff!important;background:radial-gradient(ellipse at bottom,#72d6ff24,transparent 75%)!important;text-shadow:0 0 12px #8de0ff88}
.rfRefresh .guildHeaderNav :is(a,button):is(:hover,:focus-visible):before{animation:rf-nav-sweep 1.8s ease-in-out infinite}
.rfRefresh .guildHeaderNav :is(a,button):is(:hover,:focus-visible):after{left:9%;right:9%;background:#b6edff;animation:rf-nav-pulse 1.8s ease-in-out infinite}
.rfRefresh .guildSiteHeader .guildHeaderNav [aria-current=page]{color:#d4f2ff!important;background:linear-gradient(0deg,#79c9ef16,transparent 80%)!important}
.rfRefresh .guildHeaderNav [aria-current=page]:after{left:15%;right:15%;background:#8bd8f5;box-shadow:0 0 10px #67c9ef55}
.rfRefresh .guildSiteHeader :is(a,button):focus-visible{outline-color:#a9e5ff}
.rfRefresh .exactHero{position:relative;isolation:isolate;display:flex!important;align-items:flex-end;min-height:540px!important;height:auto!important;padding:50px 34px 45px!important;background:linear-gradient(90deg,#04111aa6,transparent 65%)!important;border-bottom:1px solid #678593;overflow:hidden}
.rfRefresh .exactHero:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 82% 22%,#79c9fc25,transparent 45%),radial-gradient(ellipse at 42% 95%,#edbd7e12,transparent 38%)}
.rfRefresh .exactHero:after{content:'';position:absolute;pointer-events:none;inset:0;background:radial-gradient(circle at 72% 25%,#e2f6ff 0 1px,transparent 2px),radial-gradient(circle at 83% 65%,#bbebff 0 1px,transparent 2px),radial-gradient(circle at 56% 46%,#b9ddf8 0 1px,transparent 2px),radial-gradient(circle at 92% 37%,#ffe1a8 0 1px,transparent 2px);animation:rf-light-drift 9s ease-in-out infinite alternate;opacity:.7}
.rfRefresh .exactHeroLeft{position:relative!important;inset:auto!important;width:46%!important;max-width:470px!important;margin:0!important;padding:0!important;text-shadow:0 3px 12px #000}
.rfRefresh .exactHero .eyebrow{display:inline-block;padding:8px 12px;background:#091b24a8;border-left:2px solid #86bfd8;color:#e9bd81;font:700 12px/1.3 Rajdhani,sans-serif;letter-spacing:.16em}
.rfRefresh .exactHero h1{font:400 58px/1.04 Marcellus,Georgia,serif!important;letter-spacing:-.04em;margin:18px 0 23px!important;text-transform:none!important}
.rfRefresh .exactHero h1 i{font-style:normal;color:#edbd7e}
.rfRefresh .exactHero p{font:400 13px/1.6 'DM Sans',sans-serif!important;color:#cbd8df;max-width:350px}
.rfRefresh .rfEmblem{position:absolute;right:24px;bottom:24px;width:65px;height:65px;object-fit:contain;filter:drop-shadow(0 0 12px #a8d5e366)}
.rfActions{display:flex;flex-wrap:wrap;gap:10px;margin-top:25px}
.rfActions a{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:13px 20px;border-radius:3px;border:1px solid #7daac066;background:#0a202cdc;color:#c8e4f2;font:600 14px/1.2 Rajdhani,sans-serif;letter-spacing:.09em;text-decoration:none}
.rfActions a:first-child{color:#061520;background:#add7e8;border-color:#c4e6f3;box-shadow:0 0 24px #86ccef1a}
.rfActions a:hover{border-color:#c4e6f3;filter:brightness(1.12)}
.rfRefresh main{position:relative;background:transparent!important;width:100%!important;max-width:1440px;margin:auto;padding:0!important}
.rfCards{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:-25px;padding:0 30px 35px;z-index:2}
.rfCard{position:relative;isolation:isolate;overflow:hidden;min-height:235px;display:flex;flex-direction:column;justify-content:flex-end;padding:22px;border:1px solid #789eb2;color:#eef4f7;text-decoration:none;background:#102b3a;box-shadow:inset 0 0 0 3px #081725,0 15px 30px #0007,0 -1px 12px #8ad7ff20}
.rfCard:before{content:'';position:absolute;inset:0;z-index:-2;background:var(--rf-card-image) 60% 8%/110% auto no-repeat;transition:transform .4s}
.rfCard:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,#05111cf2 0%,#05111c66 55%,transparent)}
.rfCard:hover:before{transform:scale(1.04)}
.rfCard h2{margin:0 0 10px;padding:0 0 10px;border-bottom:1px solid #8cb0c175;color:#f4efe7;text-shadow:0 2px 6px #000;font:600 23px/1.2 Rajdhani,sans-serif}
.rfCard p{margin:0;color:#d1dce2;text-shadow:0 1px 4px #000;font:400 12px/1.6 'DM Sans',sans-serif}
.rfRefresh .exactUpcoming{position:relative!important;inset:auto!important;width:auto!important;max-width:none!important;min-height:0!important;margin:0 30px 30px!important;background:#0b1d2bcc!important;border:1px solid #789eb266;backdrop-filter:none!important;box-shadow:none!important}
.rfRefresh .exactLowerGrid{background:transparent!important;margin:0 30px 30px!important}
.rfRefresh .assetPanelLink{display:flex!important;align-items:flex-end;min-height:235px;padding:22px;background:linear-gradient(0deg,#05111cf2,#05111c22),url('assets/rf/warrior.webp') center 12%/cover no-repeat #102b3a!important;border:1px solid #789eb2;clip-path:none!important;color:#f4efe7;text-decoration:none;font:600 23px/1.2 Rajdhani,sans-serif}
.rfRefresh .discordAssetPanel{background-image:linear-gradient(0deg,#05111cf2,#05111c22),url('assets/rf/demolisher.webp')!important}
.rfRefresh .featuredGallery{background:#0b1d2b!important;border-color:#789eb2!important}
.rfRefresh footer{background:#071521a3!important;color:#aebfcd;border-top:1px solid #344f61;font-family:Rajdhani,sans-serif}
@keyframes rf-nav-sweep{0%{transform:translateX(-120%);opacity:0}12%{opacity:1}65%{transform:translateX(120%);opacity:1}75%,100%{transform:translateX(120%);opacity:0}}
@keyframes rf-nav-pulse{0%,100%{opacity:.65;box-shadow:0 0 5px #91e1ff,0 -3px 10px #5cccff44}50%{opacity:1;box-shadow:0 0 12px #91e1ff,0 -3px 23px #5cccff99}}
@keyframes rf-light-drift{from{transform:translateY(5px);opacity:.35}to{transform:translateY(-12px);opacity:.85}}
@media(max-width:800px),(orientation:landscape) and (max-height:600px){
 body.rfRefresh{background-size:auto 700px;background-position:53% top}
 .rfRefresh .guildHeaderRow{padding:12px;gap:10px;min-height:104px}
 .rfRefresh .guildHeaderBrand img{width:250px;height:80px}
 .rfRefresh .guildSiteHeader .guildAccountToggle{flex-basis:58px;width:58px!important;height:58px!important;min-height:58px;padding:0!important;clip-path:none;border-radius:3px}
 .rfRefresh .guildSiteHeader .guildAccountPortrait{inset:3px;width:50px!important;height:50px!important}
 .rfRefresh .guildSiteHeader .guildAccountName,.rfRefresh .guildSiteHeader .guildAccountRole,.rfRefresh .guildSiteHeader .guildAccountToggle:before,.rfRefresh .guildSiteHeader .guildAccountToggle:after{display:none}
 .rfRefresh .guildMenuToggle{background:#0a202c!important;border-color:#789eb2!important;color:#c8e4f2!important;clip-path:none;border-radius:3px}
 .rfRefresh .guildSiteHeader .guildHeaderNav{position:relative;inset:auto;display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));padding:0 8px!important;gap:0;max-height:none}
 .rfRefresh .guildSiteHeader .guildHeaderNav :is(a,button){min-height:48px;padding:14px 3px;font-size:12px!important;letter-spacing:.04em}
 .rfRefresh .guildSiteHeader .guildHeaderNav[hidden]{display:none!important}
 .rfRefresh .guildSiteHeader .guildAccountDropdown{top:calc(100% + 6px)}
 .rfRefresh .exactHero{min-height:580px!important;padding:300px 24px 40px!important;background:linear-gradient(0deg,#07131ef2,transparent 85%)!important}
 .rfRefresh .exactHeroLeft{width:100%!important;max-width:none!important}
 .rfRefresh .exactHero h1{font-size:44px!important}
 .rfRefresh .rfEmblem{top:20px;bottom:auto;right:15px;width:52px;height:52px}
 .rfRefresh .rfCards{grid-template-columns:1fr;margin-top:0;padding:0 20px 25px!important}
 .rfRefresh .exactUpcoming{margin:0 20px 25px!important}
 .rfRefresh .exactLowerGrid{margin:0 20px 25px!important;display:grid!important;grid-template-columns:1fr!important}
}
@media(prefers-reduced-motion:reduce){.rfRefresh .guildHeaderNav :is(a,button):is(:hover,:focus-visible):before{animation:none;transform:none;opacity:.35}.rfRefresh .guildHeaderNav :is(a,button):is(:hover,:focus-visible):after,.rfRefresh .exactHero:after{animation:none}.rfCard:before,.rfRefresh .guildHeaderNav :is(a,button),.rfRefresh .guildHeaderNav :is(a,button):after{transition:none}.rfCard:hover:before{transform:none}}

/* Keep the scene and content aligned at large desktop widths. */
body.rfRefresh{background:#07131e!important}
.rfRefresh .topScene{background: url('assets/rf/scene.webp') center center/cover no-repeat!important}
.rfRefresh .guildHeaderRow{max-width:none;padding-left:34px;padding-right:34px}
.rfRefresh main{max-width:none!important}
.rfRefresh .rfCards{padding-left:34px!important;padding-right:34px!important}
.rfRefresh .exactUpcoming{margin-left:34px!important;margin-right:34px!important}
.rfRefresh .exactLowerGrid{margin-left:34px!important;margin-right:34px!important}
.rfRefresh .exactHeroLeft{max-width:600px!important}
.rfRefresh .exactHero h1{font-size:clamp(58px,4.2vw,88px)!important}
.rfRefresh .exactHero p{font-size:clamp(14px,1vw,18px)!important;max-width:460px}
.rfRefresh .guildSiteHeader .guildHeaderNav :is(a,button){font-size:clamp(14px,.9vw,18px)!important}
.rfRefresh .rfCard h2,.rfRefresh .rfCard h2.displayFont{font-size:clamp(23px,1.5vw,30px)!important}
.rfRefresh .rfCard p{font-size:clamp(12px,.85vw,16px)}
.rfRefresh .rfCard{min-height:clamp(235px,18vw,360px)}
@media(max-width:800px),(orientation:landscape) and (max-height:600px){
 .rfRefresh .topScene{background-position:53% top;background-size:auto 700px}
 .rfRefresh .guildHeaderRow{padding-left:12px;padding-right:12px}
 .rfRefresh .rfCards{padding-left:20px!important;padding-right:20px!important}
 .rfRefresh .exactUpcoming,.rfRefresh .exactLowerGrid{margin-left:20px!important;margin-right:20px!important}
 .rfRefresh .exactHeroLeft{max-width:none!important}
 .rfRefresh .exactHero h1{font-size:44px!important}
 .rfRefresh .exactHero p{font-size:14px!important}
 .rfRefresh .guildSiteHeader .guildHeaderNav :is(a,button){font-size:12px!important}
}

/* One proportional scene behind the entire RF page, from header to footer. */
body.rfRefresh{isolation:isolate;background:#07131e!important}
body.rfRefresh:before{content:''!important;display:block!important;position:fixed!important;inset:0!important;z-index:-1!important;pointer-events:none;background:url('assets/rf/scene.webp') center center/cover no-repeat!important;opacity:1!important}
body.rfRefresh:after{display:none!important;content:none!important}
.rfRefresh .topScene{background:transparent!important}
.rfRefresh .guildSiteHeader{background:linear-gradient(105deg,#06131e88,#19303b33 65%,#06131e88)!important}
.rfRefresh .guildSiteHeader .guildHeaderNav{background:#08152066!important}
.rfRefresh .exactHero{background:linear-gradient(90deg,#04111a77,transparent 65%)!important}
.rfRefresh main{background:transparent!important}
.rfRefresh .exactUpcoming{background:#0b1d2b66!important}
.rfRefresh .featuredGallery{background:#0b1d2b66!important}
.rfRefresh .exactAnnouncement{background:#0b1d2b66!important}
.rfRefresh footer{background:#07152166!important}
@media(max-width:800px),(orientation:landscape) and (max-height:600px){body.rfRefresh:before{background-position:53% center!important}.rfRefresh .exactHero{background:linear-gradient(0deg,#07131e99,transparent 85%)!important}}

/* Different official RF portraits with a restrained view through to the scene. */
.rfRefresh .rfCard{background-color:#102b3a55!important}
.rfRefresh .rfCard:before{opacity:.82}
.rfRefresh .rfCard:after{background:linear-gradient(0deg,#05111ce6 0%,#05111c55 55%,#05111c11)!important}
.rfRefresh .rfCard:nth-child(3):before{background-image:url('assets/rf/arbiter.webp');background-position:60% 8%}

/* Compact event and announcement area on RF homepage. */
.rfRefresh .exactUpcoming{width:calc(100% - 68px)!important;max-width:1320px!important;margin:0 auto 22px!important;padding:12px!important;box-sizing:border-box}
.rfRefresh .exactUpcoming .exactPanelHead{padding:0 4px 10px!important;min-height:0!important}
.rfRefresh .exactUpcoming .exactPanelHead>span{font:600 22px/1.2 Rajdhani,sans-serif!important}
.rfRefresh #upcomingEventList{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.rfRefresh #upcomingEventList .managedEventCard{margin:0!important;min-height:0!important;grid-template-columns:52px minmax(0,1fr)!important;gap:8px!important;padding:10px!important;align-items:start}
.rfRefresh #upcomingEventList .eventThumb{width:52px!important;height:52px!important;grid-row:1 / span 2}
.rfRefresh #upcomingEventList .eventCopy strong{font:600 17px/1.2 Rajdhani,sans-serif!important;margin:3px 0 4px!important}
.rfRefresh #upcomingEventList .eventCopy small{font-size:10px!important}
.rfRefresh #upcomingEventList .eventCopy span{font-size:11px!important;line-height:1.35!important}
.rfRefresh #upcomingEventList .eventWhen{grid-column:2!important;text-align:left!important;margin:0!important}
.rfRefresh #upcomingEventList .eventWhen b{font:600 16px/1.2 Rajdhani,sans-serif!important}
.rfRefresh #upcomingEventList .eventWhen span{margin-top:3px!important}
.rfRefresh .exactAnnouncement{width:calc(100% - 68px)!important;max-width:1320px!important;margin:0 auto 22px!important;padding:14px 18px!important;min-height:0!important}
.rfRefresh .exactAnnouncement p{margin:6px 0 0!important;font-size:14px!important;line-height:1.5!important}
@media(max-width:1000px){.rfRefresh #upcomingEventList{grid-template-columns:1fr}.rfRefresh #upcomingEventList .managedEventCard{grid-template-columns:52px minmax(0,1fr) 130px!important;align-items:center}.rfRefresh #upcomingEventList .eventThumb{grid-row:auto}.rfRefresh #upcomingEventList .eventWhen{grid-column:3!important}}
@media(max-width:600px){.rfRefresh .exactUpcoming,.rfRefresh .exactAnnouncement{width:calc(100% - 40px)!important}.rfRefresh #upcomingEventList .managedEventCard{grid-template-columns:44px minmax(0,1fr)!important}.rfRefresh #upcomingEventList .eventThumb{width:44px!important;height:44px!important;grid-row:1 / span 2}.rfRefresh #upcomingEventList .eventWhen{grid-column:2!important}}

/* Quiet footer, retaining the community banner at a smaller size. */
.rfRefresh footer:before,.rfRefresh footer:after{content:none!important;display:none!important;animation:none!important;filter:none!important}
.rfRefresh footer{display:flex!important;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:18px!important;padding:18px 34px!important;min-height:0!important;background:#07152188!important;border-top:1px solid #8bbdd044;box-shadow:none!important;overflow:hidden;letter-spacing:.06em;font:500 12px/1.5 Rajdhani,sans-serif!important}
.rfRefresh .rfFooterBrand{display:block;flex:0 0 220px;max-width:100%}
.rfRefresh .rfFooterBrand img{display:block;width:220px!important;max-width:100%!important;height:auto!important;object-fit:contain}
.rfRefresh footer .rfFooterMeta{color:#b6cbd7;font:500 12px/1.5 Rajdhani,sans-serif!important}
.rfRefresh footer .privacyFooterLink{color:#c5dbe6;font:500 12px/1.5 Rajdhani,sans-serif!important}
@media(max-width:650px){.rfRefresh footer{padding:18px 20px!important;justify-content:center;text-align:center;gap:12px!important}.rfRefresh .rfFooterBrand{flex:0 0 100%;display:flex;justify-content:center}.rfRefresh .rfFooterBrand img{width:190px!important}}

/* Smaller footer and utility controls that clear its visible portion. */
.rfRefresh footer{padding:8px 24px!important;gap:12px!important}
.rfRefresh .rfFooterBrand{flex-basis:150px}
.rfRefresh .rfFooterBrand img{width:150px!important}
.rfRefresh .guildUtilityDock,.rfRefresh .onlineToggle{bottom:calc(12px + env(safe-area-inset-bottom) + var(--rf-footer-overlap,0px))!important}
.rfRefresh .messageChatWidget,.rfRefresh .messageToast{bottom:calc(78px + env(safe-area-inset-bottom) + var(--rf-footer-overlap,0px))!important}
.rfRefresh .messageChatWidget{max-height:calc(100dvh - 92px - env(safe-area-inset-bottom) - var(--rf-footer-overlap,0px))!important}
@media(max-width:650px){.rfRefresh footer{padding:8px 16px!important;gap:8px!important}.rfRefresh .rfFooterBrand{flex-basis:130px}.rfRefresh .rfFooterBrand img{width:130px!important}}

/* Equal community panels and a full-width feed over one shared translucent surface. */
.rfRefresh{--rf-panel-surface:rgba(8,25,38,.45)}
.rfRefresh .exactLowerGrid.assetLowerGrid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:16px!important;align-items:stretch!important}
.rfRefresh .exactLowerGrid.assetLowerGrid>*,.rfRefresh #discordCommunity.discordLiveFeed{
 box-sizing:border-box!important;width:100%!important;max-width:none!important;height:clamp(420px,32vw,600px)!important;min-height:0!important;margin:0!important;
 border:1px solid #789eb280!important;clip-path:none!important;background:var(--rf-panel-surface)!important;
 box-shadow:inset 0 1px #b5eaff22!important;overflow:hidden!important;backdrop-filter:none!important
}
.rfRefresh .exactUpcoming,.rfRefresh .exactAnnouncement{background:var(--rf-panel-surface)!important;backdrop-filter:none!important}
.rfRefresh .rfCard{background-color:var(--rf-panel-surface)!important}
.rfRefresh .exactLowerGrid .newsAssetPanel{position:relative!important;padding:18px!important;isolation:isolate}
.rfRefresh .exactLowerGrid .newsAssetPanel:before{content:""!important;position:absolute!important;inset:0!important;z-index:-1!important;background:url('assets/rf/warrior.webp') center top/auto 100% no-repeat!important;opacity:.82!important;pointer-events:none}
.rfRefresh .exactLowerGrid .newsAssetPanel:after{content:""!important;position:absolute!important;inset:0!important;z-index:-1!important;background:linear-gradient(0deg,#05111c99,transparent 55%)!important;pointer-events:none}
.rfRefresh .exactLowerGrid .featuredGallery{display:flex!important;flex-direction:column!important;padding:14px!important}
.rfRefresh .featuredGallery:before,.rfRefresh .featuredGallery:after,.rfRefresh #discordCommunity.discordLiveFeed:before,.rfRefresh #discordCommunity.discordLiveFeed:after{content:none!important}
.rfRefresh .featuredGallery .galleryHead{flex:0 0 auto!important;margin:0!important;padding:0 0 12px!important;background:transparent!important}
.rfRefresh .featuredGallery .galleryStage{flex:1 1 0!important;width:100%!important;min-height:0!important;height:auto!important;max-height:none!important;margin:0!important;background:transparent!important}
.rfRefresh .featuredGallery .galleryOpen{display:block!important;width:100%!important;height:100%!important;min-height:0!important;padding:0!important;background:transparent!important}
.rfRefresh .featuredGallery [data-gallery-image]{display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:none!important;object-fit:contain!important}
.rfRefresh .featuredGallery .galleryCaption{flex:0 0 auto!important;margin:10px 0 0!important}
.rfRefresh .featuredGallery .galleryDots{flex:0 0 auto!important;margin:8px 0 0!important;padding:0!important}
.rfRefresh #discordCommunity.discordLiveFeed{display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;padding:14px!important;gap:0!important}
.rfRefresh #discordCommunity.discordLiveFeed>*{box-sizing:border-box!important;width:100%!important;max-width:none!important;align-self:stretch!important;grid-column:auto!important;float:none!important}
.rfRefresh #discordCommunity .discordFeedHead{flex:0 0 auto!important;min-height:0!important;padding:0 0 10px!important}
.rfRefresh #discordCommunity .discordFeedChannel{flex:0 0 auto!important;margin:8px 0!important;text-align:left!important}
.rfRefresh #discordCommunity .discordFeedPosts{display:flex!important;flex-direction:column!important;flex:1 1 0!important;min-height:0!important;height:auto!important;max-height:none!important;padding:0!important;overflow-y:auto!important;overflow-x:hidden!important;gap:10px!important}
.rfRefresh #discordCommunity .discordPost{flex:0 0 auto!important;width:100%!important;background:rgba(8,25,38,.45)!important}
.rfRefresh #discordCommunity .discordPostEmbed{background:rgba(8,25,38,.45)!important}
.rfRefresh #discordCommunity .discordFeedAll{flex:0 0 auto!important;margin-top:8px!important}
.rfRefresh #discordCommunity .discordFeedState{flex:0 0 auto!important;margin:8px 0 0!important;padding-top:8px!important;text-align:left!important}
@media(max-width:1000px){.rfRefresh .exactLowerGrid.assetLowerGrid{grid-template-columns:1fr!important}.rfRefresh .exactLowerGrid.assetLowerGrid>*,.rfRefresh #discordCommunity.discordLiveFeed{height:440px!important}}

body.rfRefresh .exactLowerGrid.assetLowerGrid #gallery.featuredGallery{background:var(--rf-panel-surface)!important}

/* Consistent panel headings and Discord actions below the feed. */
body.rfRefresh .exactLowerGrid #gallery .galleryHead,body.rfRefresh #discordCommunity .discordFeedHead{display:flex!important;align-items:center!important;justify-content:space-between!important;min-height:44px!important;padding:0 0 12px!important;margin:0!important;border-bottom:1px solid #789eb244!important}
body.rfRefresh .exactLowerGrid #gallery .galleryHead h2,body.rfRefresh #discordCommunity .discordFeedHead h2{font:600 24px/1.25 Rajdhani,sans-serif!important;letter-spacing:.08em!important;margin:0!important;color:#e5f2f8!important;text-align:left!important}
body.rfRefresh .exactLowerGrid #gallery .galleryHead>a{font:600 14px/1.3 Rajdhani,sans-serif!important;letter-spacing:.04em!important;color:#a7d9ec!important}
body.rfRefresh #discordCommunity .discordFeedActions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px!important;flex:0 0 auto!important;margin:12px 0 0!important}
body.rfRefresh #discordCommunity .discordFeedActions>a{display:flex!important;justify-content:center!important;align-items:center!important;box-sizing:border-box!important;width:100%!important;min-height:42px!important;margin:0!important;padding:10px 12px!important;border:1px solid #648ca288!important;border-radius:4px!important;background:linear-gradient(110deg,#152f4288,#0b1d2a88)!important;box-shadow:inset 0 1px #b8eaff22!important;clip-path:none!important;color:#d5edf7!important;text-decoration:none!important;font:600 14px/1.3 Rajdhani,sans-serif!important;letter-spacing:.06em!important;transition:background .2s,border-color .2s,box-shadow .2s}
body.rfRefresh #discordCommunity .discordFeedActions .discordFeedJoin{border-color:#6bcce5aa!important;background:linear-gradient(110deg,#1d516677,#102c4388)!important}
body.rfRefresh #discordCommunity .discordFeedActions>a:hover{border-color:#89def5!important;background:#24557099!important;box-shadow:inset 0 1px #d0f5ff44,0 0 16px #5fd3f52b!important}
body.rfRefresh #discordCommunity .discordFeedActions>a:focus-visible{outline:2px solid #89def5!important;outline-offset:3px}
body.rfRefresh .exactUpcoming{padding:18px!important}
body.rfRefresh #upcomingEventList .managedEventCard{min-height:180px!important;padding:16px!important;row-gap:12px!important}
body.rfRefresh #upcomingEventList .eventCopy small{font-size:12px!important;line-height:1.5!important}
body.rfRefresh #upcomingEventList .eventCopy strong{font-size:21px!important;line-height:1.35!important;margin:5px 0 8px!important}
body.rfRefresh #upcomingEventList .eventCopy span{font-size:14px!important;line-height:1.6!important}
body.rfRefresh #upcomingEventList .eventWhen b{font-size:19px!important;line-height:1.4!important}
body.rfRefresh #upcomingEventList .eventWhen span{font-size:12px!important;line-height:1.5!important;margin-top:5px!important}
@media(max-width:1000px){body.rfRefresh #upcomingEventList .managedEventCard{min-height:140px!important}}
@media(max-width:600px){body.rfRefresh #upcomingEventList .managedEventCard{min-height:160px!important;padding:14px!important}body.rfRefresh .exactUpcoming{padding:14px!important}body.rfRefresh .exactLowerGrid #gallery .galleryHead h2,body.rfRefresh #discordCommunity .discordFeedHead h2{font-size:22px!important}}

body.rfRefresh .guildSiteHeader .guildAccountPortraitFrame{display:block!important;position:absolute;left:12px;top:12px;width:72px;height:72px;box-sizing:border-box;overflow:hidden;border:2px solid #91b5c8;background:#102432;clip-path:polygon(9px 0,calc(100% - 9px) 0,100% 9px,100% calc(100% - 9px),calc(100% - 9px) 100%,9px 100%,0 calc(100% - 9px),0 9px)}
body.rfRefresh .guildSiteHeader .guildAccountPortraitFrame .guildAccountPortrait{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;object-fit:cover!important;object-position:center!important;transform:scale(1.65)!important;border:0!important;clip-path:none!important}
@media(max-width:800px),(orientation:landscape) and (max-height:600px){body.rfRefresh .guildSiteHeader .guildAccountPortraitFrame{inset:4px;width:48px;height:48px;border-width:1px}}

/* Shared column lines: feature cards, full-width announcement, then events/gallery/Discord. */
body.rfRefresh main .rfCards,body.rfRefresh main .exactLowerGrid.assetLowerGrid{
 box-sizing:border-box!important;display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:16px!important;
 width:calc(100% - 68px)!important;max-width:none!important;margin:0 34px 20px!important;padding:0!important
}
body.rfRefresh main #announcement.exactAnnouncement{box-sizing:border-box!important;width:calc(100% - 68px)!important;max-width:none!important;margin:0 34px 20px!important;padding:16px 20px!important}
body.rfRefresh main .exactLowerGrid.assetLowerGrid>*,
body.rfRefresh main #discordCommunity.discordLiveFeed{height:clamp(560px,38vw,680px)!important}
body.rfRefresh main .exactLowerGrid.assetLowerGrid #events.exactUpcoming{
 display:flex!important;flex-direction:column!important;box-sizing:border-box!important;width:100%!important;max-width:none!important;
 margin:0!important;padding:14px!important;min-width:0!important;min-height:0!important;overflow:hidden!important
}
body.rfRefresh main #events .exactPanelHead{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;flex:0 0 auto!important;min-height:44px!important;padding:0 0 12px!important;margin:0 0 12px!important;border-bottom:1px solid #789eb244!important}
body.rfRefresh main #events .exactPanelHead>span{font:600 24px/1.25 Rajdhani,sans-serif!important;letter-spacing:.06em!important;min-width:0}
body.rfRefresh main #events .exactPanelHead>a{font:600 14px/1.3 Rajdhani,sans-serif!important;white-space:nowrap;color:#a7d9ec!important}
body.rfRefresh main #events #upcomingEventList{display:flex!important;flex-direction:column!important;flex:1 1 0!important;min-height:0!important;gap:12px!important;overflow:auto!important;scrollbar-width:thin;scrollbar-color:#547f94 #10243255}
body.rfRefresh main #events #upcomingEventList .managedEventCard{flex:0 0 auto!important;grid-template-columns:48px minmax(0,1fr)!important;min-height:140px!important;gap:8px 12px!important;padding:12px!important}
body.rfRefresh main #events #upcomingEventList .eventThumb{width:48px!important;height:48px!important;grid-row:1 / span 2!important}
body.rfRefresh main #events #upcomingEventList .eventWhen{grid-column:2!important;text-align:left!important}
body.rfRefresh main #events #upcomingEventList .eventCopy strong{font-size:20px!important}
body.rfRefresh main #events #upcomingEventList .eventCopy span{font-size:13px!important;line-height:1.6!important}
@media(max-width:1000px){
 body.rfRefresh main .rfCards,body.rfRefresh main .exactLowerGrid.assetLowerGrid{grid-template-columns:1fr!important}
}
@media(max-width:600px){
 body.rfRefresh main .rfCards,body.rfRefresh main .exactLowerGrid.assetLowerGrid,body.rfRefresh main #announcement.exactAnnouncement{width:calc(100% - 40px)!important;margin-left:20px!important;margin-right:20px!important}
 body.rfRefresh main .exactLowerGrid.assetLowerGrid>*,body.rfRefresh main #discordCommunity.discordLiveFeed{height:560px!important}
 body.rfRefresh main #events .exactPanelHead>span{font-size:22px!important}
}

body.rfRefresh #discordCommunity .discordFeedHead .discordFeedServerLink{display:inline-block!important;min-height:0!important;padding:0!important;margin:0!important;border:0!important;background:none!important;box-shadow:none!important;clip-path:none!important;font:inherit!important;letter-spacing:inherit!important;color:inherit!important;text-decoration:none!important;transition:color .2s,text-shadow .2s}
body.rfRefresh #discordCommunity .discordFeedHead .discordFeedServerLink:hover{color:#9ce5fb!important;text-shadow:0 0 14px #63cff555}
body.rfRefresh #discordCommunity .discordFeedHead .discordFeedServerLink:focus-visible{outline:2px solid #94e3fa!important;outline-offset:4px}
body.rfRefresh #discordCommunity .discordFeedActions{grid-template-columns:1fr!important}


/* A single shared outline clips the panel surface and contents beneath the frame. */
body.rfRefresh main .exactLowerGrid.assetLowerGrid :is(#events.exactUpcoming,#gallery.featuredGallery,#discordCommunity){
 --rf-panel-outline:polygon(10% 0,90% 0,100% 10%,100% 90%,90% 100%,10% 100%,0 90%,0 10%);
 position:relative!important;isolation:isolate!important;box-sizing:border-box!important;padding:20px!important;
 border:0!important;border-radius:0!important;outline:0!important;box-shadow:none!important;
 background:transparent!important;overflow:hidden!important;clip-path:var(--rf-panel-outline)!important
}
body.rfRefresh main .exactLowerGrid.assetLowerGrid :is(#events,#gallery,#discordCommunity)::before{
 content:""!important;display:block!important;position:absolute!important;inset:0!important;
 width:auto!important;height:auto!important;border:0!important;border-image:none!important;box-sizing:border-box!important;
 background:url('assets/ui/rf-panel-outline.v2.svg') center/100% 100% no-repeat!important;
 box-shadow:none!important;transform:none!important;opacity:1!important;z-index:20!important;pointer-events:none!important;clip-path:none!important
}
body.rfRefresh main .exactLowerGrid.assetLowerGrid :is(#events,#gallery,#discordCommunity)::after{
 content:""!important;display:block!important;position:absolute!important;inset:1px!important;
 width:auto!important;height:auto!important;border:0!important;box-shadow:none!important;transform:none!important;
 background:var(--rf-panel-surface)!important;opacity:1!important;clip-path:var(--rf-panel-outline)!important;
 z-index:0!important;pointer-events:none!important
}
body.rfRefresh main .exactLowerGrid.assetLowerGrid :is(#events,#gallery,#discordCommunity)>*{position:relative;z-index:1;min-width:0}
body.rfRefresh main .exactLowerGrid.assetLowerGrid #gallery .galleryStage{isolation:isolate}
body.rfRefresh main .exactLowerGrid.assetLowerGrid #events .exactPanelHead,
body.rfRefresh main .exactLowerGrid.assetLowerGrid #gallery .galleryHead,
body.rfRefresh main .exactLowerGrid.assetLowerGrid #discordCommunity .discordFeedHead{
 padding:0 24px 12px!important;box-sizing:border-box!important;background:none!important;box-shadow:none!important;
 border-left:0!important;border-right:0!important;border-top:0!important
}
body.rfRefresh main .exactLowerGrid.assetLowerGrid #discordCommunity .discordFeedChannel{padding:0 24px!important}
@media(max-width:600px){body.rfRefresh main .exactLowerGrid.assetLowerGrid :is(#events.exactUpcoming,#gallery.featuredGallery,#discordCommunity){padding:20px 16px!important}}

/* Keep headings and footer actions within the beveled panel's safe area. */
body.rfRefresh main .exactLowerGrid.assetLowerGrid :is(#events.exactUpcoming,#gallery.featuredGallery,#discordCommunity){padding-top:28px!important;padding-bottom:32px!important}
body.rfRefresh main .exactLowerGrid.assetLowerGrid #events .exactPanelHead,
body.rfRefresh main .exactLowerGrid.assetLowerGrid #gallery .galleryHead,
body.rfRefresh main .exactLowerGrid.assetLowerGrid #discordCommunity .discordFeedHead{
 padding:0 calc(10% + 4px) 14px!important;gap:12px!important;min-height:46px!important;align-items:center!important
}
body.rfRefresh main .exactLowerGrid.assetLowerGrid #events .exactPanelHead>span,
body.rfRefresh main .exactLowerGrid.assetLowerGrid #gallery .galleryHead h2,
body.rfRefresh main .exactLowerGrid.assetLowerGrid #discordCommunity .discordFeedHead h2{
 font:600 clamp(18px,1.2vw,24px)/1.25 Rajdhani,sans-serif!important;letter-spacing:.06em!important;min-width:0!important
}
body.rfRefresh main .exactLowerGrid.assetLowerGrid :is(.exactPanelHead,.galleryHead)>a{flex:0 0 auto!important;white-space:nowrap!important;font-size:14px!important}
body.rfRefresh main .exactLowerGrid.assetLowerGrid #discordCommunity .discordFeedChannel{padding:0 calc(10% + 4px)!important}
body.rfRefresh main .exactLowerGrid.assetLowerGrid #discordCommunity :is(.discordFeedActions,.discordFeedState){
 width:calc(80% - 8px)!important;margin-left:auto!important;margin-right:auto!important;align-self:center!important
}
body.rfRefresh main .exactLowerGrid.assetLowerGrid #discordCommunity .discordFeedActions{margin-top:14px!important}
body.rfRefresh main .exactLowerGrid.assetLowerGrid #discordCommunity .discordFeedState{padding-top:8px!important;font:400 12px/1.5 Rajdhani,sans-serif!important;letter-spacing:.02em!important}
@media(max-width:400px){body.rfRefresh main .exactLowerGrid.assetLowerGrid :is(#events .exactPanelHead,#gallery .galleryHead){flex-wrap:wrap!important;gap:6px!important}}
