ui/unlockrevealoverlay.razor.scss
// Designed in 1080-reference space (ScreenPanel AutoScreenScale = ConsistentHeight).
@import "Theme.scss";
UnlockRevealOverlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
// The overlay only exists while a reveal is up, but the root must never eat input on the frames
// it draws nothing — only .backdrop takes pointer events.
pointer-events: none;
font-family: $font;
font-smooth: never;
// Fullscreen scrim + centred panel. Both fade together off the inline opacity the reveal drives,
// so they can't be split into separate fades. pointer-events:all makes the whole screen a dismiss
// target and stops the stage underneath being clicked blind.
.backdrop {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
align-items: center;
justify-content: center;
pointer-events: all;
cursor: blank-hand;
// The score tally's backdrop is already $black, so the panel would be invisible on its own —
// darken everything behind it (and give the panel a border) to lift it off the screen.
background-color: rgba( #000000, 0.55 );
// Deliberately compact. The generous padding is load-bearing: the character's baked glow
// spreads 60.5% of the icon height past each edge of its box (more for an oversized
// character), and this keeps that soft tail inside the border instead of bleeding over it.
.panel {
flex-direction: column;
align-items: center;
// Width otherwise hugs the heading, which is narrower than the icon's glow at a large
// PreviewScale; the floor keeps the glow off the side borders. Height stays content-sized.
min-width: 420px;
padding: 40px 64px 36px 64px;
background-color: $black;
border: 5px solid #59626e;
box-shadow: 0 12px 40px rgba( #000000, 0.55 );
.heading {
font-size: 34px;
color: #8a8f9c;
letter-spacing: 3px;
margin-bottom: 18px;
}
// Same construction as the character-picker grid entry: a viewport box (sized inline
// from the character's preview scale) with the pre-baked glow behind the sprite layers.
.character {
position: relative;
margin-top: 24px;
.icon-glow {
position: absolute;
left: -61%;
top: -60.5%;
width: 222%;
height: 221%;
z-index: 0;
pointer-events: none;
opacity: 0.3;
background-image: url( "sprites/ui/icon_glow.png" );
background-repeat: no-repeat;
background-size: 100% 100%;
}
.sprite-layer {
position: absolute;
z-index: 1;
background-repeat: no-repeat;
background-size: contain;
background-position: center;
image-rendering: pixelated;
}
&.paired {
.rear {
transform: translate( 11%, -9% ) scale( 0.94 );
}
.front {
transform: translate( -11%, 9% );
}
}
}
.name {
font-size: 40px;
color: $white;
margin-top: 40px;
}
}
}
}