Files
mochaisvibecoded 42f7f57b72 :3
2026-08-24 17:00:26 -04:00

2285 lines
42 KiB
CSS

.admin-migration-banner {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
padding: 16px 20px;
text-align: center;
margin-bottom: 20px;
border-radius: 8px;
}
.admin-migration-link {
color: white;
font-weight: 700;
text-decoration: underline;
font-size: 16px;
}
.admin-migration-link:hover {
color: #f0f0f0;
}
.admin-layout {
display: grid;
grid-template-columns: minmax(320px,.85fr) minmax(420px,1.15fr);
gap: 20px;
align-items: start;
}
.admin-panel {
padding: 22px;
border: 1px solid var(--line);
border-radius: var(--radius-md);
background: var(--card);
box-shadow: var(--shadow);
}
.admin-panel h2 {
margin: 0 0 5px;
font: 900 21px var(--futura-extra);
}
.admin-panel>p {
margin: 0 0 18px;
color: var(--muted);
}
.admin-check {
display: flex;
align-items: flex-start;
gap: 10px;
padding: 13px;
border: 1px solid #5c4669;
border-radius: var(--radius-sm);
background: #251c2d;
color: #ded4e5;
}
.admin-check input {
width: 18px;
height: 18px;
accent-color: var(--purple);
}
.admin-check small {
display: block;
color: var(--muted);
}
.admin-account-list {
display: grid;
gap: 9px;
max-height: 680px;
overflow: auto;
}
.admin-account {
display: flex;
align-items: center;
gap: 12px;
padding: 12px;
border: 1px solid var(--line);
border-radius: var(--radius-sm);
background: #151119;
}
.admin-account .avatar {
width: 43px;
height: 43px;
}
.admin-account-main {
min-width: 0;
flex: 1;
}
.admin-account-name {
font-weight: 800;
}
.admin-platform {
font-size: 12px;
color: var(--muted);
overflow-wrap: anywhere;
}
.admin-roles {
display: flex;
gap: 4px;
flex-wrap: wrap;
justify-content: flex-end;
}
.admin-role {
padding: 3px 6px;
border-radius: var(--radius-pill);
background: var(--purple-soft);
color: #d5bdff;
font-size: 10px;
}
.admin-result {
margin-top: 13px;
padding: 10px;
border-radius: var(--radius-sm);
background: #18271f;
color: #8ee4af;
}
.admin-error {
background: #321b22;
color: #ff9baa;
}
@media (max-width:900px) {
.admin-layout {
grid-template-columns: 1fr;
}
}
@media (max-width:620px) {
#adminNav[hidden] {
display: none !important;
}
}
#adminNav[hidden] {
display: none !important;
}
.admin-balance-summary {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 5px 8px;
border: 1px solid #7047a0;
border-radius: var(--radius-pill);
background: #2b1c3a;
color: #eadcff;
font: 900 11px var(--futura-extra);
white-space: nowrap;
}
.admin-balance-summary i {
color: #c68cff;
}
.admin-balance-editor {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.admin-token-balance {
min-width: 120px;
color: #d5bdff;
font: 900 15px var(--futura-extra);
}
.admin-balance-amount {
width: 145px;
}
.admin-balance-editor button {
white-space: nowrap;
}
.admin-users-panel {
min-width: 0;
}
.admin-account {
display: block;
padding: 0;
overflow: hidden;
}
.admin-account-summary {
display: flex;
align-items: center;
gap: 12px;
padding: 12px;
}
.admin-manage-button {
padding: 8px 11px;
border: 1px solid #7047a0;
border-radius: var(--radius-sm);
background: #2b1c3a;
color: #e5d4ff;
font-weight: 800;
cursor: pointer;
}
.admin-manage-button:hover {
background: #3a2450;
}
.admin-tools {
padding: 14px;
border-top: 1px solid var(--line);
background: #100d13;
}
.admin-tools[hidden] {
display: none;
}
.admin-tool-row,.admin-tool-actions,.admin-role-editor {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.admin-role-editor {
margin: 11px 0;
}
.admin-role-select,.admin-panel .field select {
min-width: 150px;
padding: 10px 12px;
border: 1px solid #453a50;
border-radius: var(--radius-sm);
background: #120e16;
color: #fff;
font: inherit;
}
.admin-role.removable {
border: 1px solid #604579;
cursor: pointer;
}
.admin-role.removable:hover {
background: #4a285e;
color: #fff;
}
.small-button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 8px 10px;
font-size: 12px;
text-decoration: none;
}
.secondary-button {
border: 1px solid #574b62;
border-radius: var(--radius-sm);
background: #211a27;
color: #eee6f5;
font-weight: 800;
cursor: pointer;
}
.secondary-button:hover {
background: #302638;
}
.admin-tool-actions .danger-button {
margin-left: auto;
}
.admin-result {
margin-top: 13px;
padding: 10px;
border-radius: var(--radius-sm);
background: #18271f;
color: #8ee4af;
}
.admin-error {
background: #321b22;
color: #ff9baa;
}
@media (max-width:620px) {
.admin-account-summary {
align-items: flex-start;
flex-wrap: wrap;
}
.admin-account-summary .admin-roles {
order: 4;
width: 100%;
justify-content: flex-start;
}
.admin-manage-button {
margin-left: auto;
}
.admin-tool-actions .danger-button {
margin-left: 0;
}
}
.admin-overview {
display: grid;
grid-template-columns: repeat(8,minmax(90px,1fr));
gap: 9px;
margin: 20px 0;
}
.admin-stat {
display: grid;
grid-template-columns: auto 1fr;
align-items: center;
gap: 2px 8px;
padding: 13px;
border: 1px solid var(--line);
border-radius: var(--radius-md);
background: var(--card);
}
.admin-stat i {
grid-row: 1/3;
color: #a65cff;
font-size: 18px;
}
.admin-stat strong {
font: 900 19px var(--futura-extra);
}
.admin-stat span {
color: var(--muted);
font-size: 10px;
}
.admin-tool-section {
padding: 12px 0;
border-bottom: 1px solid var(--line);
}
.admin-tool-section:first-child {
padding-top: 0;
}
.admin-tool-section h3 {
margin: 0 0 9px;
font-size: 13px;
color: #d9c6e7;
text-transform: uppercase;
letter-spacing: .05em;
}
.admin-profile-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
margin-bottom: 9px;
}
.admin-profile-grid .wide {
grid-column: 1/-1;
}
.admin-profile-grid label {
display: grid;
gap: 4px;
color: var(--muted);
font-size: 10px;
}
.admin-profile-grid input,.admin-profile-grid textarea,.admin-tool-row input {
min-width: 0;
padding: 9px 10px;
border: 1px solid #453a50;
border-radius: var(--radius-sm);
background: #120e16;
color: #fff;
font: 12px system-ui;
}
.admin-profile-grid textarea {
min-height: 55px;
resize: vertical;
}
.admin-platform-select {
min-width: 115px !important;
}
.admin-platform-id {
width: 145px;
}
.admin-platform-editor {
display: flex;
gap: 6px;
flex-wrap: wrap;
margin-bottom: 9px;
}
.admin-platform-chip {
padding: 5px 8px;
border: 1px solid #554268;
border-radius: var(--radius-pill);
background: #21172b;
color: #dbc5ef;
font-size: 10px;
cursor: pointer;
}
.admin-platform-chip:hover {
border-color: #c64f65;
color: #ff9baa;
}
.admin-mini-check {
display: flex;
align-items: center;
gap: 5px;
color: var(--muted);
font-size: 10px;
}
.admin-mini-check input {
accent-color: var(--purple);
}
@media (max-width:1100px) {
.admin-overview {
grid-template-columns: repeat(4,1fr);
}
}
@media (max-width:620px) {
.admin-overview {
grid-template-columns: repeat(2,1fr);
}
.admin-profile-grid {
grid-template-columns: 1fr;
}
.admin-profile-grid .wide {
grid-column: auto;
}
}
.admin-account.is-locked {
border-color: #8e3344;
box-shadow: inset 3px 0 #d34d64;
}
.moderation-lock-badge {
display: inline-flex;
align-items: center;
gap: 4px;
margin-left: 7px;
padding: 3px 7px;
border-radius: var(--radius-pill);
background: #8d2638;
color: #fff;
font-size: 9px;
vertical-align: middle;
}
.moderation-lock-section {
padding: 14px;
border: 1px solid #682d3a;
border-radius: var(--radius-sm);
background: #211319;
}
.moderation-lock-section h3 {
color: #ff9aab;
}
.admin-lock-reason-label {
display: grid;
gap: 6px;
color: #dcbcc3;
font-size: 11px;
}
.admin-lock-reason {
min-height: 70px;
padding: 10px;
border: 1px solid #653744;
border-radius: var(--radius-sm);
background: #130c0f;
color: #fff;
resize: vertical;
}
.link-ban-check {
margin: 9px 0;
border-color: #743b47;
background: #2c171d;
}
.moderation-lock-button {
display: inline-flex;
align-items: center;
gap: 7px;
padding: 10px 12px;
border: 1px solid #ed687d;
border-radius: var(--radius-sm);
background: #a3293d;
color: #fff;
font-weight: 900;
cursor: pointer;
}
.moderation-lock-button:hover {
background: #c3334b;
}
.active-lock {
display: grid;
gap: 8px;
}
.active-lock strong {
color: #ff8fa1;
}
.active-lock pre {
margin: 0;
padding: 10px;
border-radius: var(--radius-sm);
background: #130c0f;
color: #f4dce1;
white-space: pre-wrap;
font: 12px/1.45 system-ui;
}
.active-lock span {
color: var(--muted);
font-size: 10px;
}
.admin-account.is-banned {
border-color: #73552a;
box-shadow: inset 3px 0 #d29a3d;
}
.ban-badge {
display: inline-flex;
align-items: center;
gap: 4px;
margin-left: 7px;
padding: 3px 7px;
border-radius: var(--radius-pill);
background: #8c5d16;
color: #fff;
font-size: 9px;
vertical-align: middle;
}
.normal-ban-section {
border-color: #684d2d;
background: #211a13;
}
.normal-ban-section h3 {
color: #f3bd6e;
}
.admin-ban-reason {
min-height: 70px;
padding: 10px;
border: 1px solid #6e5330;
border-radius: var(--radius-sm);
background: #130f0b;
color: #fff;
resize: vertical;
}
.ban-button {
display: inline-flex;
align-items: center;
gap: 7px;
padding: 10px 12px;
border: 1px solid #e6a64a;
border-radius: var(--radius-sm);
background: #8c5c18;
color: #fff;
font-weight: 900;
cursor: pointer;
}
.ban-button:hover {
background: #ad7420;
}
.moderation-lock-option {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-top: 14px;
padding-top: 14px;
border-top: 1px solid #69404a;
}
.moderation-lock-option>div {
display: grid;
gap: 3px;
}
.moderation-lock-option small {
color: var(--muted);
font-size: 10px;
}
.admin-ban-duration {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 9px;
margin: 10px 0;
}
.admin-ban-duration label {
display: grid;
gap: 5px;
color: #dcbf91;
font-size: 11px;
}
.admin-ban-duration input,.admin-ban-duration select {
width: 100%;
padding: 10px;
border: 1px solid #6e5330;
border-radius: var(--radius-sm);
background: #130f0b;
color: #fff;
font: 12px system-ui;
}
.admin-ban-duration input:focus,.admin-ban-duration select:focus {
outline: 2px solid #a8732e;
}
.admin-account-summary {
display: grid;
grid-template-columns: 43px minmax(0,1fr) auto;
grid-template-areas: "avatar identity manage" "avatar balance manage" "roles roles roles";
align-items: center;
gap: 7px 12px;
}
.admin-account-summary>.avatar {
grid-area: avatar;
}
.admin-account-summary>.admin-account-main {
grid-area: identity;
width: 100%;
min-width: 0;
}
.admin-account-summary>.admin-balance-summary {
grid-area: balance;
justify-self: start;
}
.admin-account-summary>.admin-roles {
grid-area: roles;
justify-content: flex-start;
}
.admin-account-summary>.admin-manage-button {
grid-area: manage;
max-width: 170px;
}
.admin-account-summary .admin-platform {
overflow-wrap: anywhere;
word-break: normal;
line-height: 1.35;
}
.admin-token-section {
border: 1px solid #5f3b86;
border-radius: var(--radius-md);
background: #1a1222;
padding: 14px;
margin-bottom: 12px;
}
.admin-token-section h3 {
color: #d9b8ff;
}
.admin-quick-balance {
display: grid;
grid-template-columns: minmax(120px,1fr) minmax(110px,150px) auto auto;
align-items: center;
gap: 8px;
padding: 11px 12px;
border-top: 1px solid #5f3b86;
background: #1a1222;
}
.admin-quick-balance-title {
display: flex;
align-items: center;
gap: 7px;
color: #e2caff;
font: 900 14px var(--futura-extra);
}
.admin-quick-balance-title i {
color: #bd7dff;
}
.admin-quick-balance .admin-balance-amount {
width: 100%;
padding: 9px 10px;
border: 1px solid #65468a;
border-radius: var(--radius-sm);
background: #100b15;
color: #fff;
font: inherit;
}
.admin-quick-balance button {
white-space: nowrap;
}
@media (max-width:620px) {
.admin-account-summary {
grid-template-columns: 43px minmax(0,1fr);
grid-template-areas: "avatar identity" "avatar balance" "manage manage" "roles roles";
}
.admin-account-summary>.admin-manage-button {
width: 100%;
max-width: none;
}
.admin-balance-editor {
align-items: stretch;
}
.admin-balance-amount {
width: 100%;
}
}
@media (max-width:720px) {
.admin-quick-balance {
grid-template-columns: 1fr 1fr;
}
.admin-quick-balance-title {
grid-column: 1/-1;
}
.admin-quick-balance .admin-balance-amount {
grid-column: 1/-1;
}
.admin-quick-balance button {
width: 100%;
}
}
.admin-shop-panel {
margin: 0 0 20px;
}
.admin-shop-heading {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 18px;
}
.admin-shop-heading h2 {
display: flex;
align-items: center;
gap: 9px;
}
.admin-shop-heading h2 i {
color: #bd7dff;
}
.admin-shop-heading p {
margin: 0;
color: var(--muted);
}
.admin-shop-heading .primary-button {
flex: none;
display: inline-flex;
align-items: center;
gap: 8px;
}
.admin-shop-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 18px;
margin-top: 18px;
}
.admin-shop-grid>div {
min-width: 0;
}
.admin-shop-grid h3 {
margin: 0 0 9px;
color: #dfc9f2;
font-size: 13px;
text-transform: uppercase;
letter-spacing: .05em;
}
.admin-custom-shop-items,.admin-shop-search-results {
display: grid;
gap: 7px;
max-height: 320px;
overflow: auto;
padding-right: 4px;
}
.admin-shop-item,.admin-shop-result {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 10px 11px;
border: 1px solid #493657;
border-radius: var(--radius-sm);
background: #151019;
color: #f8f3fa;
text-align: left;
}
.admin-shop-item>div,.admin-shop-result>span {
display: grid;
min-width: 0;
}
.admin-shop-item strong,.admin-shop-result strong {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.admin-shop-item span,.admin-shop-result small {
color: var(--muted);
font-size: 10px;
}
.admin-shop-result {
width: 100%;
cursor: pointer;
font: inherit;
}
.admin-shop-result:hover {
border-color: #a65cff;
background: #21162b;
}
.admin-shop-result>i {
color: #bd7dff;
}
.admin-shop-empty {
padding: 14px;
font-size: 12px;
}
.admin-shop-panel>.form-status {
display: block;
min-height: 20px;
margin-top: 12px;
}
.admin-shop-panel>.admin-error {
padding: 9px 11px;
}
.admin-shop-search-results {
margin-top: 9px;
}
@media (max-width:760px) {
.admin-shop-heading {
display: grid;
}
.admin-shop-heading .primary-button {
width: 100%;
justify-content: center;
}
.admin-shop-grid {
grid-template-columns: 1fr;
}
.admin-custom-shop-items,.admin-shop-search-results {
max-height: 260px;
}
}
.admin-rooms-panel {
margin: 0 0 20px;
padding: 0;
overflow: hidden;
}
.admin-room-heading {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 18px;
padding: 22px;
border-bottom: 1px solid var(--line);
}
.admin-room-heading h2 {
display: flex;
align-items: center;
gap: 9px;
}
.admin-room-heading h2 i {
color: #bd7dff;
}
.admin-room-heading p {
margin: 0;
color: var(--muted);
}
.admin-room-browser {
display: grid;
grid-template-columns: minmax(280px,360px) minmax(0,1fr);
min-height: 560px;
}
.admin-room-sidebar {
padding: 14px;
border-right: 1px solid var(--line);
background: #100d13;
}
.admin-room-search-row {
display: grid;
gap: 8px;
margin-bottom: 10px;
}
.admin-room-dorm-toggle {
display: flex;
align-items: center;
gap: 7px;
color: var(--muted);
font-size: 11px;
}
.admin-room-dorm-toggle input {
accent-color: var(--purple);
}
.admin-room-list {
display: grid;
gap: 7px;
max-height: 760px;
overflow: auto;
padding-right: 4px;
}
.admin-room-list-item {
display: grid;
grid-template-columns: 56px minmax(0,1fr) auto;
align-items: center;
gap: 10px;
width: 100%;
padding: 8px;
border: 1px solid #403448;
border-radius: var(--radius-md);
background: #151119;
color: #f7f0fa;
text-align: left;
cursor: pointer;
}
.admin-room-list-item:hover,.admin-room-list-item.selected {
border-color: #9656cc;
background: #21162b;
}
.admin-room-list-item img {
width: 56px;
height: 42px;
border-radius: var(--radius-sm);
object-fit: cover;
background: #0e0b10;
}
.admin-room-list-main {
display: grid;
min-width: 0;
gap: 2px;
}
.admin-room-list-main strong {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.admin-room-list-main small,.admin-room-list-main span {
color: var(--muted);
font-size: 10px;
line-height: 1.3;
}
.admin-room-list-main b {
color: #bc8cff;
}
.admin-room-list-item>i {
color: #755a84;
}
.admin-room-editor {
min-width: 0;
padding: 18px;
max-height: 980px;
overflow: auto;
background: #0d0a10;
}
.admin-room-editor>.empty {
min-height: 450px;
display: grid;
place-content: center;
gap: 10px;
text-align: center;
}
.admin-room-editor-head {
display: grid;
grid-template-columns: 120px minmax(0,1fr) auto;
align-items: center;
gap: 14px;
margin-bottom: 10px;
padding: 12px;
border: 1px solid var(--line);
border-radius: var(--radius-md);
background: #151119;
}
.admin-room-editor-head>img {
width: 120px;
height: 82px;
border-radius: var(--radius-sm);
object-fit: cover;
}
.admin-room-editor-head h3 {
margin: 2px 0;
font: 900 24px var(--futura-extra);
}
.admin-room-editor-head p {
margin: 0;
color: var(--muted);
font-size: 11px;
}
.admin-room-editor>#adminRoomStatus {
display: block;
min-height: 20px;
margin: 8px 0;
}
.admin-room-editor>#adminRoomStatus.admin-error {
padding: 9px 11px;
border-radius: var(--radius-sm);
}
.admin-room-section {
display: block;
margin: 12px 0;
padding: 14px;
border: 1px solid #403448;
border-radius: var(--radius-md);
background: #151119;
}
.admin-room-section-head {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 12px;
margin-bottom: 12px;
}
.admin-room-section-head h3 {
margin: 0;
font: 900 17px var(--futura-extra);
}
.admin-room-section-head p {
margin: 3px 0 0;
color: var(--muted);
font-size: 11px;
}
.admin-room-count {
padding: 4px 8px;
border-radius: var(--radius-pill);
background: #2b1c3a;
color: #d9bfff;
font-size: 10px;
white-space: nowrap;
}
.admin-room-form-grid {
display: grid;
grid-template-columns: repeat(2,minmax(0,1fr));
gap: 9px;
}
.admin-room-form-grid label,.admin-room-stats-grid label,.admin-room-inline-form label,.admin-subroom-grid label {
display: grid;
gap: 5px;
color: var(--muted);
font-size: 10px;
}
.admin-room-form-grid .wide {
grid-column: 1/-1;
}
.admin-room-form-grid input,.admin-room-form-grid select,.admin-room-form-grid textarea,.admin-room-stats-grid input,.admin-room-inline-form input,.admin-room-inline-form select,.admin-subroom-grid input,.admin-subroom-grid select {
width: 100%;
min-width: 0;
padding: 9px 10px;
border: 1px solid #453a50;
border-radius: var(--radius-sm);
background: #100c13;
color: #fff;
font: 12px system-ui;
}
.admin-room-form-grid textarea {
min-height: 80px;
resize: vertical;
}
.admin-room-form-grid small {
color: #715f7b;
}
.admin-room-flags {
display: grid;
grid-template-columns: repeat(3,minmax(0,1fr));
gap: 7px;
margin-top: 12px;
}
.admin-room-flags .admin-check {
min-height: 46px;
padding: 9px;
}
.admin-room-flags .admin-check strong {
font-size: 11px;
}
.admin-room-stats-grid {
display: grid;
grid-template-columns: repeat(4,minmax(0,1fr));
gap: 9px;
}
.admin-room-inline-form {
display: grid;
grid-template-columns: repeat(3,minmax(120px,1fr)) auto auto;
align-items: end;
gap: 8px;
margin-bottom: 12px;
}
.admin-room-inline-form .grow {
grid-column: span 2;
}
.admin-room-members {
display: grid;
gap: 7px;
}
.admin-room-member-row {
display: grid;
grid-template-columns: 38px minmax(0,1fr) auto auto auto;
align-items: center;
gap: 9px;
padding: 9px;
border: 1px solid #3f3446;
border-radius: var(--radius-sm);
background: #100d13;
}
.admin-room-member-row>img {
width: 38px;
height: 38px;
border-radius: 50%;
object-fit: cover;
}
.admin-room-member-row>div:nth-child(2) {
display: grid;
min-width: 0;
}
.admin-room-member-row strong {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.admin-room-member-row small {
color: var(--muted);
font-size: 10px;
}
.admin-room-member-row p {
grid-column: 1/-1;
margin: 3px 0 0;
color: #d9cddd;
font-size: 11px;
}
.admin-room-role-badge,.admin-room-invite-badge {
padding: 4px 7px;
border-radius: var(--radius-pill);
background: #38214a;
color: #dbbaff;
font-size: 10px;
white-space: nowrap;
}
.admin-room-invite-badge {
background: #1d3541;
color: #9edcf4;
}
.admin-room-row-actions {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 6px;
flex-wrap: wrap;
}
.admin-subroom-list {
display: grid;
gap: 9px;
}
.admin-subroom-card {
padding: 11px;
border: 1px solid #403448;
border-radius: var(--radius-md);
background: #100d13;
}
.admin-subroom-title {
display: flex;
justify-content: space-between;
gap: 10px;
margin-bottom: 9px;
}
.admin-subroom-title>div {
display: grid;
}
.admin-subroom-title small {
color: var(--muted);
font-size: 10px;
}
.admin-subroom-title>span {
color: #c9a9df;
font-size: 10px;
}
.admin-subroom-grid {
display: grid;
grid-template-columns: 1.2fr .6fr .8fr 1.4fr;
gap: 8px;
margin-bottom: 9px;
}
.admin-subroom-grid .admin-mini-check {
align-content: end;
padding-bottom: 9px;
}
.admin-room-section .danger-button {
border: 1px solid #8b3c4b;
border-radius: var(--radius-sm);
background: #6f2635;
color: #fff;
font-weight: 800;
cursor: pointer;
}
.admin-room-section .danger-button:hover {
background: #913145;
}
@media (max-width:1100px) {
.admin-room-browser {
grid-template-columns: 300px minmax(0,1fr);
}
.admin-room-flags {
grid-template-columns: repeat(2,minmax(0,1fr));
}
.admin-subroom-grid {
grid-template-columns: repeat(2,minmax(0,1fr));
}
.admin-room-inline-form {
grid-template-columns: repeat(2,minmax(0,1fr));
}
.admin-room-inline-form button {
width: 100%;
}
}
@media (max-width:820px) {
.admin-room-browser {
grid-template-columns: 1fr;
}
.admin-room-sidebar {
border-right: 0;
border-bottom: 1px solid var(--line);
}
.admin-room-list {
max-height: 300px;
}
.admin-room-editor {
max-height: none;
}
.admin-room-editor-head {
grid-template-columns: 90px minmax(0,1fr);
}
.admin-room-editor-head>img {
width: 90px;
height: 62px;
}
.admin-room-editor-head>a {
grid-column: 1/-1;
}
.admin-room-member-row {
grid-template-columns: 38px minmax(0,1fr);
}
.admin-room-member-row>.admin-room-role-badge,.admin-room-member-row>.admin-room-invite-badge,.admin-room-member-row>.admin-room-row-actions {
grid-column: 2;
justify-self: start;
}
}
@media (max-width:580px) {
.admin-room-heading {
display: grid;
}
.admin-room-heading button {
width: 100%;
}
.admin-room-form-grid,.admin-room-stats-grid,.admin-room-flags,.admin-room-inline-form,.admin-subroom-grid {
grid-template-columns: 1fr;
}
.admin-room-form-grid .wide,.admin-room-inline-form .grow {
grid-column: auto;
}
.admin-room-section-head {
display: grid;
}
.admin-room-editor {
padding: 10px;
}
.admin-room-editor-head {
grid-template-columns: 1fr;
}
.admin-room-editor-head>img {
width: 100%;
height: 150px;
}
}
#moderatorNav[hidden] {
display: none !important;
}
.moderator-nav .nav-icon {
color: #ffd17b;
}
.moderator-layout {
display: grid;
grid-template-columns: minmax(400px,1fr) minmax(480px,1.15fr);
gap: 20px;
align-items: start;
}
.moderator-panel-heading {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 14px;
margin-bottom: 15px;
}
.moderator-panel-heading h2 {
display: flex;
align-items: center;
gap: 9px;
}
.moderator-panel-heading h2 i {
color: #f0b75c;
}
.moderator-panel-heading p {
margin: 0;
color: var(--muted);
}
.moderator-account-list {
max-height: 860px;
margin-top: 10px;
}
.moderator-protected {
display: flex;
align-items: center;
gap: 12px;
padding: 14px;
border: 1px solid #725b2d;
border-radius: var(--radius-sm);
background: #241d10;
color: #ffe0a4;
}
.moderator-protected i {
font-size: 22px;
}
.moderator-protected div {
display: grid;
gap: 3px;
}
.moderator-protected small {
color: #c6ae7e;
}
.moderator-room-browser {
display: grid;
grid-template-columns: minmax(230px,.8fr) minmax(300px,1.2fr);
gap: 12px;
margin-top: 10px;
}
.moderator-room-browser>.admin-room-list {
max-height: 720px;
}
.moderator-room-editor {
min-width: 0;
max-height: 820px;
overflow: auto;
}
.moderator-room-editor>.empty {
min-height: 360px;
display: grid;
place-content: center;
gap: 10px;
text-align: center;
}
.moderator-room-ban-form {
grid-template-columns: minmax(110px,.55fr) minmax(220px,1.45fr) auto;
}
.moderator-room-ban-form .grow {
grid-column: auto;
}
.moderator-users-panel,.moderator-rooms-panel {
min-width: 0;
}
@media (max-width:1200px) {
.moderator-layout {
grid-template-columns: 1fr;
}
.moderator-room-browser {
grid-template-columns: 320px minmax(0,1fr);
}
}
@media (max-width:760px) {
.moderator-room-browser {
grid-template-columns: 1fr;
}
.moderator-room-browser>.admin-room-list {
max-height: 280px;
}
.moderator-room-ban-form {
grid-template-columns: 1fr;
}
.moderator-layout {
display: block;
}
.moderator-users-panel {
margin-bottom: 20px;
}
}
.admin-room-heading-actions {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 8px;
flex-wrap: wrap;
}
.admin-room-import-status {
display: block;
min-height: 0;
margin: 0;
padding: 0 22px;
transition: .15s ease;
}
.admin-room-import-status:not(:empty) {
min-height: 20px;
padding: 10px 22px;
border-bottom: 1px solid var(--line);
background: #121016;
color: #d9cddd;
}
.admin-room-import-status.admin-error {
margin: 0;
border-radius: 0;
border-left: 0;
border-right: 0;
}
.admin-room-heading-actions .primary-button,.admin-room-heading-actions .secondary-button {
white-space: nowrap;
}
@media (max-width:580px) {
.admin-room-heading-actions {
display: grid;
grid-template-columns: 1fr;
width: 100%;
}
.admin-room-import-status:not(:empty) {
padding: 10px 14px;
}
}
.admin-announcements-panel {
margin: 0 0 20px;
}
.admin-announcement-layout {
display: grid;
grid-template-columns: minmax(320px,.9fr) minmax(360px,1.1fr);
gap: 18px;
align-items: start;
}
.admin-announcement-layout>div>h3,.admin-announcement-form>div>h3 {
margin: 0 0 9px;
color: #d9c6e7;
font-size: 12px;
text-transform: uppercase;
letter-spacing: .06em;
}
.admin-announcement-form {
display: grid;
gap: 13px;
}
.admin-announcement-form .settings-grid {
margin: 0;
}
.admin-announcement-form .field {
display: grid;
gap: 5px;
color: var(--muted);
font-size: 11px;
}
.admin-announcement-form .field.wide {
grid-column: 1/-1;
}
.admin-announcement-form input,.admin-announcement-form select,.admin-announcement-form textarea {
width: 100%;
min-width: 0;
padding: 10px 11px;
border: 1px solid #453a50;
border-radius: var(--radius-sm);
background: #120e16;
color: #fff;
font: 12px system-ui;
}
.admin-announcement-form textarea {
min-height: 230px;
resize: vertical;
font-family: ui-monospace,SFMono-Regular,Consolas,monospace;
line-height: 1.45;
}
.admin-announcement-options {
display: flex;
align-items: center;
gap: 15px;
flex-wrap: wrap;
}
.admin-announcement-options .admin-mini-check {
padding: 8px 10px;
border: 1px solid #453a50;
border-radius: var(--radius-sm);
background: #151119;
color: #d9cddd;
font-size: 11px;
}
.admin-announcement-preview {
min-height: 120px;
}
.admin-announcement-list {
display: grid;
gap: 10px;
max-height: 880px;
overflow: auto;
padding-right: 4px;
}
.admin-announcement-list .announcement-card {
box-shadow: none;
background: #151119;
}
.admin-announcement-list .announcement-card>h3 {
font-size: 17px;
}
.admin-announcement-list .markdown-body {
max-height: 230px;
overflow: auto;
font-size: 12px;
}
.admin-announcement-list .empty {
padding: 35px 18px;
}
@media (max-width:980px) {
.admin-announcement-layout {
grid-template-columns: 1fr;
}
.admin-announcement-list {
max-height: none;
}
}
@media (max-width:620px) {
.admin-announcement-form .settings-grid {
grid-template-columns: 1fr;
}
.admin-announcement-form .field.wide {
grid-column: auto;
}
}
.admin-blob-editor {
margin-top: 12px;
padding: 12px;
border: 1px solid #513a62;
border-radius: var(--radius-md);
background: #17101d;
}
.admin-blob-heading {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 12px;
margin-bottom: 10px;
}
.admin-blob-heading>div {
display: grid;
gap: 2px;
}
.admin-blob-heading strong {
font: 900 14px var(--futura-extra);
}
.admin-blob-heading small {
color: var(--muted);
font-size: 10px;
}
.admin-blob-heading code {
padding: 1px 4px;
border-radius: 4px;
background: #0f0b12;
color: #d9bfff;
}
.admin-blob-health,.admin-blob-file-status span {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 4px 7px;
border-radius: var(--radius-pill);
font-size: 10px;
white-space: nowrap;
}
.admin-blob-health.ok,.admin-blob-file-status .ok {
background: #173529;
color: #8fe3b5;
}
.admin-blob-health.missing,.admin-blob-file-status .missing {
background: #43222c;
color: #ffadb9;
}
.admin-blob-grid {
display: grid;
grid-template-columns: repeat(2,minmax(0,1fr));
gap: 9px;
}
.admin-blob-grid label {
display: grid;
gap: 5px;
color: var(--muted);
font-size: 10px;
}
.admin-blob-grid label small {
color: #846f8d;
}
.admin-blob-input {
width: 100%;
min-width: 0;
padding: 9px 10px;
border: 1px solid #5a4866;
border-radius: var(--radius-sm);
background: #0d0910;
color: #fff;
font: 11px ui-monospace,SFMono-Regular,Consolas,monospace;
}
.admin-blob-input:focus {
border-color: #ac6ddd;
outline: none;
box-shadow: 0 0 0 2px #8f50c326;
}
.admin-blob-file-status {
display: flex;
gap: 7px;
flex-wrap: wrap;
margin: 9px 0;
}
.admin-blob-editor>.admin-room-row-actions {
border-top: 1px solid #3c2c45;
padding-top: 9px;
}
@media (max-width:760px) {
.admin-blob-grid {
grid-template-columns: 1fr;
}
.admin-blob-heading {
display: grid;
}
.admin-blob-health {
justify-self: start;
}
}
.admin-security-panel {
position: relative;
overflow: hidden;
margin: 0 0 20px;
background: linear-gradient(145deg,#1b1224,#120e17 62%,#20102c);
border-color: #60417c;
}
.admin-security-panel:before {
content: "";
position: absolute;
inset: -90px -120px auto auto;
width: 270px;
height: 270px;
border-radius: 50%;
background: radial-gradient(circle,#9b5cff2c,transparent 68%);
pointer-events: none;
}
.admin-security-panel .admin-shop-heading {
position: relative;
}
.security-state {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 7px 10px;
border: 1px solid #68507a;
border-radius: var(--radius-pill);
background: #18111e;
color: #cbbcd5;
font: 900 10px var(--futura-extra);
text-transform: uppercase;
letter-spacing: .06em;
}
.security-state:before {
content: "";
width: 7px;
height: 7px;
border-radius: 50%;
background: #a99ab2;
box-shadow: 0 0 10px currentColor;
}
.security-state.enabled {
border-color: #2f7557;
background: #11251c;
color: #83e5ae;
}
.security-state.disabled {
border-color: #8d4154;
background: #2d151d;
color: #ff9daf;
}
.admin-security-toggles {
position: relative;
display: grid;
grid-template-columns: repeat(3,minmax(0,1fr));
gap: 10px;
margin: 15px 0;
}
.admin-security-toggles .admin-check {
min-height: 105px;
}
.admin-security-toggles .admin-check strong {
display: block;
margin-bottom: 3px;
color: #f4ebfa;
font: 900 13px var(--futura-extra);
}
.admin-ip-ban-layout {
position: relative;
display: grid;
grid-template-columns: minmax(320px,.9fr) minmax(360px,1.1fr);
gap: 16px;
margin-top: 17px;
padding-top: 17px;
border-top: 1px solid #4c365c;
}
.admin-ip-ban-layout .settings-grid {
align-content: start;
margin: 0;
}
.admin-ip-ban-layout .field>strong {
color: #eadcf4;
font: 900 15px var(--futura-extra);
}
.admin-ip-ban-layout .field>small {
display: block;
margin-top: 3px;
color: var(--muted);
font-size: 10px;
}
.admin-ip-ban-list {
display: grid;
gap: 8px;
max-height: 330px;
overflow: auto;
}
.admin-ip-ban {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 11px 12px;
border: 1px solid #51375f;
border-radius: var(--radius-md);
background: #100c14;
}
.admin-ip-ban>div {
display: grid;
min-width: 0;
gap: 2px;
}
.admin-ip-ban strong {
color: #f1dff9;
font: 900 13px var(--futura-extra);
overflow-wrap: anywhere;
}
.admin-ip-ban strong i {
margin-right: 5px;
color: #d85f78;
}
.admin-ip-ban span {
color: #cbbdce;
font-size: 11px;
overflow-wrap: anywhere;
}
.admin-ip-ban small {
color: var(--muted);
font-size: 9px;
}
@media (max-width:980px) {
.admin-security-toggles {
grid-template-columns: 1fr;
}
.admin-security-toggles .admin-check {
min-height: 0;
}
.admin-ip-ban-layout {
grid-template-columns: 1fr;
}
}
@media (max-width:580px) {
.admin-security-panel .admin-shop-heading {
display: grid;
}
.security-state {
justify-self: start;
}
.admin-ip-ban {
align-items: flex-start;
flex-direction: column;
}
.admin-ip-ban button {
width: 100%;
}
}
.admin-inventory-section {
display: grid;
gap: 12px;
}
.admin-inventory-search-row {
grid-template-columns: minmax(180px, 1fr) auto;
}
.admin-inventory-results {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
}
.admin-inventory-group {
min-width: 0;
border: 1px solid #4f3a5b;
border-radius: var(--radius-md);
background: #100c14;
overflow: hidden;
}
.admin-inventory-group-title {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 10px 12px;
border-bottom: 1px solid #44314f;
background: #18101d;
}
.admin-inventory-group-title strong {
color: #f0e1f7;
font: 900 13px var(--futura-extra);
}
.admin-inventory-group-title span {
color: var(--muted);
font-size: 10px;
}
.admin-inventory-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 9px 10px;
border-bottom: 1px solid #2f2335;
}
.admin-inventory-row:last-child {
border-bottom: 0;
}
.admin-inventory-item {
display: grid;
min-width: 0;
gap: 2px;
}
.admin-inventory-item strong {
color: #eadcf4;
font-size: 12px;
overflow-wrap: anywhere;
}
.admin-inventory-item small {
color: var(--muted);
font-size: 9px;
overflow-wrap: anywhere;
}
.admin-consumable-editor {
display: flex;
align-items: center;
gap: 6px;
flex: 0 0 auto;
}
.admin-consumable-quantity {
width: 82px;
}
.compact-empty {
min-height: 0;
padding: 14px;
}
@media (max-width: 900px) {
.admin-inventory-results {
grid-template-columns: 1fr;
}
}
@media (max-width: 580px) {
.admin-inventory-search-row {
grid-template-columns: 1fr;
}
.admin-inventory-row {
align-items: flex-start;
flex-direction: column;
}
.admin-consumable-editor {
width: 100%;
}
.admin-consumable-quantity {
flex: 1 1 auto;
width: auto;
}
}
.admin-gift-panel {
border-color: #745286;
background: radial-gradient(circle at top right, rgba(133, 78, 160, .18), transparent 38%), #17101c;
}
.admin-gift-from {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 9px 13px;
border: 1px solid #79548c;
border-radius: var(--radius-pill);
color: #f2dcff;
background: #281731;
font: 900 12px var(--futura-extra);
}
.admin-gift-layout {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 14px;
}
.admin-gift-column {
display: flex;
min-width: 0;
flex-direction: column;
gap: 10px;
padding: 14px;
border: 1px solid #483552;
border-radius: var(--radius-md);
background: rgba(14, 10, 17, .78);
}
.admin-gift-column h3 {
margin: 0;
color: #f2e2fa;
}
.admin-gift-all {
margin: 0;
}
.admin-gift-player-results,
.admin-gift-catalog-results {
display: grid;
max-height: 310px;
overflow: auto;
border-radius: var(--radius-md);
}
.admin-gift-player,
.admin-gift-catalog-item {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: 9px;
width: 100%;
padding: 9px;
border: 0;
border-bottom: 1px solid #34263b;
color: #eaddf1;
text-align: left;
background: #120d16;
cursor: pointer;
}
.admin-gift-player:hover,
.admin-gift-catalog-item:hover,
.admin-gift-catalog-item.selected {
background: #291a31;
}
.admin-gift-player img {
width: 34px;
height: 34px;
border-radius: 50%;
object-fit: cover;
}
.admin-gift-player span,
.admin-gift-catalog-item > span:not(.admin-gift-item-icon) {
display: grid;
min-width: 0;
}
.admin-gift-player small,
.admin-gift-catalog-item small,
.admin-gift-selected small,
.admin-gift-summary small {
color: var(--muted);
font-size: 10px;
}
.admin-gift-item-icon {
display: grid;
width: 34px;
height: 34px;
place-items: center;
border-radius: var(--radius-md);
color: #e5bbf8;
background: #3b2347;
}
.admin-gift-catalog-item > .fa-check {
color: transparent;
}
.admin-gift-catalog-item.selected > .fa-check {
color: #70e59b;
}
.admin-gift-selected,
.admin-gift-summary {
display: flex;
align-items: center;
gap: 9px;
padding: 11px;
border: 1px solid #5f426d;
border-radius: var(--radius-md);
color: #ebdaf3;
background: #211628;
}
.admin-gift-selected > span,
.admin-gift-summary {
flex-direction: column;
align-items: flex-start;
}
.admin-gift-selected.empty {
color: var(--muted);
border-style: dashed;
background: transparent;
}
.admin-gift-send {
width: 100%;
margin-top: auto;
}
.admin-gift-online-only {
margin: 0 0 4px;
}
.admin-gift-clear-outgoing {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 12px;
margin-top: 14px;
padding: 14px;
border: 1px dashed #6b4a5a;
border-radius: var(--radius-md);
background: rgba(157, 38, 56, .08);
}
.admin-gift-clear-outgoing > div:first-child {
flex: 1 1 260px;
display: grid;
gap: 3px;
color: #f2e2fa;
}
.admin-gift-clear-outgoing small {
color: var(--muted);
font-size: 11px;
}
.admin-gift-clear-outgoing .form-status {
flex-basis: 100%;
}
@media (max-width: 1050px) {
.admin-gift-layout {
grid-template-columns: 1fr;
}
}