ui/modeltuner.razor.scss
// MODEL TUNER — a dev panel, so it reads as one.
//
// ⚠️ MODELLED ON SightEditor.razor.scss, NOT SHARING IT. Razor components scope their own styles
// and a shared sheet would make either tuner's tweak silently change the other — the argument every
// other tuner in this project makes about its copy.
//
// ⛔ TOP LEFT AND NARROW. The thing being judged is a boss standing in front of the player, in the
// middle of the screen: a panel wide enough to be comfortable is a panel covering the only feedback
// the sliders have.
.mtune {
position: absolute;
width: 100%;
height: 100%;
pointer-events: none;
font-family: Inter;
&.hidden {
opacity: 0;
pointer-events: none;
}
}
.panel {
position: absolute;
left: 30px;
top: 24px;
flex-direction: column;
width: 330px;
max-height: 92%;
overflow-y: scroll;
background-color: rgba(8, 10, 12, 0.92);
border: 1px solid rgba(255, 255, 255, 0.10);
border-radius: 4px;
padding: 14px 16px 16px;
// The root is pointer-events:none so the game keeps the mouse everywhere else; the panel has to
// take its own clicks or no slider on it can be dragged.
pointer-events: all;
}
.head {
flex-direction: row;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
padding-bottom: 8px;
border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.title {
font-size: 13px;
font-weight: 600;
letter-spacing: 2px;
color: rgba(255, 255, 255, 0.92);
}
.close {
font-size: 17px;
color: rgba(255, 255, 255, 0.45);
cursor: pointer;
&:hover { color: rgba(255, 255, 255, 0.95); }
}
.state {
font-size: 11px;
color: rgba(150, 220, 170, 0.85);
margin-bottom: 10px;
padding: 5px 7px;
background-color: rgba(255, 255, 255, 0.04);
border-radius: 3px;
&.bad {
color: rgba(255, 170, 120, 0.95);
background-color: rgba(200, 80, 30, 0.16);
}
}
// ⛔ THE SPEED WARNING IS NOT A HINT. Resizing a model without resizing its ground speeds is a
// skate, and a skate looks like an animation bug rather than a number that was left behind.
.warn {
font-size: 11px;
color: rgba(255, 200, 120, 0.95);
background-color: rgba(200, 130, 30, 0.14);
border-radius: 3px;
padding: 6px 7px;
margin-top: 8px;
}
.group {
font-size: 10px;
font-weight: 600;
letter-spacing: 1px;
color: rgba(255, 255, 255, 0.40);
margin: 11px 0 5px;
}
.row {
flex-direction: row;
align-items: center;
margin-bottom: 3px;
}
.label {
width: 42px;
font-size: 11px;
color: rgba(255, 255, 255, 0.55);
}
.s {
flex-grow: 1;
margin-right: 8px;
}
.num {
width: 52px;
font-family: Consolas;
font-size: 11px;
color: rgba(255, 255, 255, 0.85);
text-align: right;
}
.out {
margin-top: 9px;
padding: 6px 7px;
background-color: rgba(255, 255, 255, 0.05);
border-radius: 3px;
font-family: Consolas;
font-size: 10px;
color: rgba(190, 220, 255, 0.85);
word-break: break-all;
}
.buttons {
flex-direction: row;
flex-wrap: wrap;
margin-top: 9px;
}
.btn {
flex-direction: row;
align-items: center;
padding: 5px 9px;
margin: 0 5px 5px 0;
border-radius: 3px;
border: 1px solid rgba(255, 255, 255, 0.16);
font-size: 11px;
color: rgba(255, 255, 255, 0.80);
cursor: pointer;
&:hover { border-color: rgba(255, 255, 255, 0.45); }
small {
margin-left: 5px;
font-size: 9.5px;
color: rgba(255, 255, 255, 0.40);
}
&.on {
background-color: rgba(255, 150, 40, 0.22);
border-color: rgba(255, 150, 40, 0.55);
color: rgba(255, 255, 255, 0.97);
small { color: rgba(255, 255, 255, 0.70); }
}
&.copy {
background-color: rgba(60, 180, 110, 0.20);
border-color: rgba(60, 180, 110, 0.50);
}
}