wp-multisite-dashboard/assets/dashboard.css
2025-06-24 11:50:33 +08:00

1901 lines
35 KiB
CSS

:root {
--msd-primary: #2271b1;
--msd-primary-hover: #135e96;
--msd-success: #00a32a;
--msd-warning: #dba617;
--msd-danger: #d63638;
--msd-text: #1d2327;
--msd-text-light: #646970;
--msd-border: #c3c4c7;
--msd-bg: #f6f7f7;
--msd-bg-light: #ffffff;
--msd-shadow: rgba(0, 0, 0, 0.1);
--msd-radius: 8px;
--msd-radius-small: 4px;
--msd-spacing: 16px;
--msd-spacing-small: 8px;
}
div#network_dashboard_right_now .inside {
margin: 0;
padding: 28px;
}
#search-sites, #search-users {
border: 1px solid #e7e7e7;
background-color: #f6f7f7;
color: #2c3338;
}
.msd-enhanced-right-now {
margin: 0;
padding: 0;
}
.msd-actions-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 12px;
margin: 0;
}
.msd-action-item {
display: flex;
align-items: center;
gap: 10px;
padding: 12px 16px;
background: var(--msd-bg-light);
border: 1px solid var(--msd-border);
border-radius: var(--msd-radius-small);
text-decoration: none;
color: var(--msd-text);
transition: all 0.2s ease;
font-weight: 400;
}
.msd-action-item:hover {
color: var(--msd-primary);
border-color: var(--msd-primary);
background: #f0f6fc;
transform: translateY(-1px);
box-shadow: 0 2px 8px var(--msd-shadow);
}
.msd-action-item .dashicons {
font-size: 18px;
opacity: 0.8;
width: 18px;
height: 18px;
}
.msd-widget-content {
margin: 0;
padding: var(--msd-spacing);
position: relative;
min-height: 120px;
}
.msd-loading {
display: flex;
align-items: center;
justify-content: center;
padding: 40px;
color: var(--msd-text-light);
font-size: 14px;
gap: var(--msd-spacing-small);
}
.msd-spinner {
width: 20px;
height: 20px;
border: 2px solid var(--msd-bg);
border-top: 2px solid var(--msd-primary);
border-radius: 50%;
animation: msd-spin 1s linear infinite;
}
@keyframes msd-spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.msd-overview-simple {
padding: 0;
}
.msd-overview-row {
display: flex;
gap: var(--msd-spacing);
margin-bottom: var(--msd-spacing-small);
}
.msd-overview-item {
flex: 1;
text-align: center;
padding: 12px 8px;
background: var(--msd-bg);
border-radius: var(--msd-radius-small);
}
.msd-overview-number {
display: block;
font-size: 20px;
font-weight: 700;
color: var(--msd-text);
margin-bottom: 2px;
}
.msd-overview-label {
font-size: 11px;
color: var(--msd-text-light);
text-transform: uppercase;
letter-spacing: 0.5px;
}
.msd-overview-alerts {
padding: 8px 12px;
background: #fff3cd;
border: 1px solid #ffeaa7;
border-radius: var(--msd-radius-small);
color: #856404;
font-size: 12px;
text-align: center;
}
.msd-overview-config {
margin-top: var(--msd-spacing);
border-radius: var(--msd-radius-small);
}
.msd-config-header {
font-size: 13px;
font-weight: 400;
color: var(--msd-text);
margin-bottom: 16px;
display: flex;
align-items: center;
gap: 6px;
}
.msd-config-list {
display: grid;
gap: 4px;
padding: 12px;
background: var(--msd-bg);
border-radius: var(--msd-radius-small);
transition: all 0.2s ease;
}
.msd-config-item {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 12px;
padding: 8px 0;
border-bottom: 1px solid var(--msd-bg);
}
.msd-config-item:last-child {
border-bottom: none;
}
.msd-config-key {
color: var(--msd-text);
font-weight: 400;
}
.msd-config-value {
color: var(--msd-text-light);
text-align: right;
}
.msd-settings-simple {
padding: 0;
}
.msd-settings-info {
margin-bottom: var(--msd-spacing);
}
.msd-setting-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 0;
border-bottom: 1px solid var(--msd-bg);
font-size: 13px;
}
.msd-setting-row:last-child {
border-bottom: none;
}
.msd-setting-key {
font-weight: 400;
color: var(--msd-text);
}
.msd-setting-val {
color: var(--msd-text-light);
}
.msd-settings-actions {
display: flex;
gap: 8px;
flex-wrap: wrap;
}
.msd-settings-link {
display: flex;
align-items: center;
gap: 4px;
padding: 6px 10px;
background: var(--msd-bg);
border: 1px solid var(--msd-border);
border-radius: var(--msd-radius-small);
color: var(--msd-text);
text-decoration: none;
font-size: 12px;
transition: all 0.2s ease;
}
.msd-settings-link:hover {
background: var(--msd-primary);
color: white;
border-color: var(--msd-primary);
}
.msd-settings-link i {
font-size: 14px;
}
.msd-contact-card {
padding: 0;
}
.msd-contact-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: var(--msd-spacing);
padding-bottom: var(--msd-spacing);
border-bottom: 1px solid var(--msd-border);
}
.msd-contact-header h3 {
margin: 0;
display: flex;
align-items: center;
gap: 8px;
color: var(--msd-text);
font-size: 16px;
}
.msd-contact-header .dashicons {
font-size: 20px;
}
.msd-contact-description {
font-size: 13px;
color: var(--msd-text-light);
margin: 0 0 var(--msd-spacing) 0;
line-height: 1.4;
}
.msd-contact-details {
margin-bottom: var(--msd-spacing);
}
.msd-contact-item {
display: flex;
align-items: center;
gap: 10px;
font-size: 14px;
padding: 8px 0;
}
.msd-contact-item:last-child {
border-bottom: none;
}
.msd-contact-item .dashicons {
color: var(--msd-primary);
font-size: 16px;
width: 16px;
line-height: 1.5;
flex-shrink: 0;
}
.msd-contact-item a {
color: var(--msd-text);
text-decoration: none;
font-size: 14px;
}
.msd-contact-item a:hover {
color: var(--msd-primary);
}
.msd-contact-qr {
text-align: center;
margin-top: 16px;
padding-top: 16px;
border-top: 1px solid var(--msd-bg);
}
.msd-qr-image {
max-width: 100px;
max-height: 100px;
border-radius: var(--msd-radius-small);
border: 1px solid var(--msd-border);
}
.msd-contact-actions {
text-align: center;
padding-top: var(--msd-spacing);
border-top: 1px solid var(--msd-bg);
}
.msd-form-field {
margin-bottom: var(--msd-spacing);
}
.msd-form-field label {
display: block;
margin-bottom: 4px;
font-weight: 400;
color: var(--msd-text);
font-size: 13px;
}
.msd-form-field input,
.msd-form-field textarea {
width: 100%;
padding: 4px 8px;
border: 1px solid var(--msd-border);
border-radius: var(--msd-radius-small);
font-size: 14px;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.msd-form-field input:focus,
.msd-form-field textarea:focus {
outline: none;
border-color: var(--msd-primary);
box-shadow: 0 0 0 2px rgba(34, 113, 177, 0.1);
}
.msd-form-field textarea {
min-height: 80px;
resize: vertical;
}
.msd-last-edits {
padding: 0;
}
.msd-activity-list {
display: grid;
gap: var(--msd-spacing-small);
max-height: 400px;
overflow-y: auto;
}
.msd-activity-item {
padding: 12px;
background: var(--msd-bg);
border-radius: var(--msd-radius-small);
border: 1px solid transparent;
transition: all 0.2s ease;
}
.msd-activity-item:hover {
background: var(--msd-bg-light);
border-color: var(--msd-border);
box-shadow: 0 2px 8px var(--msd-shadow);
}
.msd-activity-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 6px;
}
.msd-activity-title {
font-size: 14px;
font-weight: 400;
color: var(--msd-text);
margin: 0;
line-height: 1.3;
flex: 1;
}
.msd-activity-title a {
color: var(--msd-text);
text-decoration: none;
}
.msd-activity-title a:hover {
color: var(--msd-primary);
}
.msd-activity-type {
font-size: 10px;
padding: 2px 6px;
border-radius: 3px;
font-weight: 400;
text-transform: uppercase;
margin-left: 8px;
flex-shrink: 0;
}
.msd-activity-type.post {
background: #e1f5fe;
color: #01579b;
}
.msd-activity-type.page {
background: #f3e5f5;
color: #4a148c;
}
.msd-activity-meta {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 11px;
color: var(--msd-text-light);
margin-bottom: 6px;
}
.msd-activity-site {
font-weight: 400;
color: var(--msd-primary);
}
.msd-activity-date {
opacity: 0.8;
}
.msd-activity-content {
font-size: 12px;
color: var(--msd-text-light);
line-height: 1.4;
margin: 0;
}
.msd-activity-actions {
margin-top: 8px;
display: flex;
gap: 8px;
}
.msd-activity-action {
font-size: 11px;
color: var(--msd-primary);
text-decoration: none;
padding: 2px 6px;
border: 1px solid var(--msd-primary);
border-radius: var(--msd-radius-small);
transition: all 0.2s ease;
}
.msd-activity-action:hover {
background: var(--msd-primary);
color: white;
}
.msd-user-simple {
padding: 0;
}
.msd-user-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 0;
border-bottom: 1px solid var(--msd-bg);
margin-bottom: var(--msd-spacing);
}
.msd-user-count {
font-weight: 400;
color: var(--msd-text);
font-size: 14px;
}
.msd-user-registration {
font-size: 12px;
color: var(--msd-text-light);
}
.msd-user-recent {
margin-bottom: var(--msd-spacing);
}
.msd-user-row {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 0;
border-bottom: 1px solid var(--msd-bg);
}
.msd-user-row:last-child {
border-bottom: none;
}
.msd-user-avatar {
width: 32px;
height: 32px;
border-radius: 50%;
object-fit: cover;
border: 1px solid var(--msd-border);
flex-shrink: 0;
}
.msd-user-data {
flex: 1;
min-width: 0;
}
.msd-user-name {
font-size: 13px;
font-weight: 400;
color: var(--msd-text);
margin-bottom: 2px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.msd-user-info {
font-size: 11px;
color: var(--msd-text-light);
}
.msd-user-actions {
display: flex;
align-items: center;
gap: 8px;
}
.msd-user-status {
padding: 2px 6px;
border-radius: 3px;
font-size: 9px;
font-weight: 400;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.msd-user-edit {
font-size: 11px;
color: var(--msd-primary);
text-decoration: none;
padding: 2px 6px;
border: 1px solid var(--msd-primary);
border-radius: var(--msd-radius-small);
transition: all 0.2s ease;
}
.msd-user-edit:hover {
background: var(--msd-primary);
color: white;
}
.msd-user-empty {
text-align: center;
padding: 20px;
color: var(--msd-text-light);
font-style: italic;
}
.msd-user-pending {
background: var(--msd-bg);
border-radius: var(--msd-radius-small);
padding: 12px;
}
.msd-pending-header {
font-size: 12px;
font-weight: 400;
color: var(--msd-text);
margin-bottom: 8px;
padding-bottom: 6px;
border-bottom: 1px solid var(--msd-border);
}
.msd-pending-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 6px 0;
border-bottom: 1px solid var(--msd-bg);
}
.msd-pending-row:last-child {
border-bottom: none;
}
.msd-pending-email {
font-size: 12px;
color: var(--msd-text);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1;
margin-right: 8px;
}
.msd-pending-activate {
font-size: 10px;
color: var(--msd-primary);
text-decoration: none;
padding: 3px 8px;
border: 1px solid var(--msd-primary);
border-radius: var(--msd-radius-small);
transition: all 0.2s ease;
}
.msd-pending-activate:hover {
background: var(--msd-primary);
color: white;
}
.msd-sites-grid {
display: grid;
gap: var(--msd-spacing-small);
}
.msd-site-card {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px;
background: var(--msd-bg);
border-radius: var(--msd-radius-small);
transition: all 0.2s ease;
border: 1px solid transparent;
}
.msd-site-card:hover {
background: var(--msd-bg-light);
border-color: var(--msd-border);
transform: translateY(-1px);
box-shadow: 0 2px 8px var(--msd-shadow);
}
.msd-site-info {
flex: 1;
min-width: 0;
display: flex;
align-items: center;
gap: 12px;
}
.msd-site-favicon {
width: 28px;
height: 28px;
border-radius: var(--msd-radius-small);
object-fit: cover;
flex-shrink: 0;
border: 1px solid var(--msd-border);
background: var(--msd-bg-light);
padding: 2%;
}
.msd-site-details {
flex: 1;
min-width: 0;
}
.msd-site-name {
font-size: 14px;
font-weight: 400;
color: var(--msd-text);
margin: 0 0 4px 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.msd-site-meta {
font-size: 12px;
color: var(--msd-text-light);
margin: 0;
}
.msd-site-actions {
display: flex;
gap: 6px;
margin-left: var(--msd-spacing);
}
.msd-btn-small {
padding: 4px 8px;
font-size: 11px;
border-radius: var(--msd-radius-small);
text-decoration: none;
font-weight: 400;
transition: all 0.2s ease;
border: 1px solid transparent;
}
.msd-btn-primary {
background: var(--msd-primary);
color: white;
}
.msd-btn-primary:hover {
background: var(--msd-primary-hover);
color: white;
}
.msd-btn-secondary {
background: transparent;
color: var(--msd-text-light);
border-color: var(--msd-border);
}
.msd-btn-secondary:hover {
background: var(--msd-bg);
color: var(--msd-text);
}
.msd-storage-summary {
margin-bottom: var(--msd-spacing);
padding: 12px;
border-radius: var(--msd-radius-small);
border: 1px solid var(--msd-border);
}
.msd-storage-total {
font-size: 16px;
font-weight: 400;
color: var(--msd-text);
margin-bottom: 4px;
}
.msd-storage-info {
font-size: 12px;
color: var(--msd-text-light);
}
.msd-storage-list {
display: grid;
gap: var(--msd-spacing-small);
}
.msd-storage-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px;
background: var(--msd-bg);
border-radius: var(--msd-radius-small);
}
.msd-storage-info {
flex: 1;
min-width: 0;
}
.msd-storage-site {
font-size: 14px;
font-weight: 400;
color: var(--msd-text);
margin: 0 0 4px 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.msd-storage-details {
font-size: 12px;
color: var(--msd-text-light);
margin: 0;
}
.msd-storage-usage {
text-align: right;
margin-left: var(--msd-spacing);
min-width: 80px;
}
.msd-storage-amount {
font-size: 12px;
font-weight: 400;
color: var(--msd-text);
display: block;
margin-bottom: 2px;
}
.msd-storage-percentage {
font-size: 10px;
color: var(--msd-text-light);
margin-bottom: 4px;
}
.msd-storage-bar {
width: 60px;
height: 6px;
background: #cfcfcf;
border-radius: 3px;
overflow: hidden;
position: relative;
}
.msd-storage-fill {
height: 100%;
background: var(--msd-success);
border-radius: 3px;
transition: width 0.3s ease;
}
.msd-storage-fill.warning {
background: var(--msd-warning);
}
.msd-storage-fill.critical {
background: var(--msd-danger);
}
.msd-server-specs {
display: grid;
gap: var(--msd-spacing-small);
}
.msd-spec-item {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 0;
border-bottom: 1px solid var(--msd-bg);
}
.msd-spec-item:last-child {
border-bottom: none;
}
.msd-spec-icon {
font-size: 16px;
width: 20px;
line-height: 1.5;
flex-shrink: 0;
}
.msd-spec-label {
font-size: 13px;
font-weight: 400;
color: var(--msd-text);
flex: 1;
}
.msd-spec-value {
font-size: 13px;
color: var(--msd-text-light);
text-align: right;
}
.msd-version-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: var(--msd-spacing);
padding-bottom: var(--msd-spacing);
border-bottom: 1px solid var(--msd-border);
}
.msd-version-header h3 {
margin: 0;
display: flex;
align-items: center;
gap: 8px;
color: var(--msd-text);
font-size: 16px;
}
.msd-version-header .dashicons {
font-size: 20px;
}
.msd-version-actions {
display: flex;
gap: 8px;
}
.msd-help-btn {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
border-radius: var(--msd-radius-small);
text-decoration: none;
transition: all 0.2s ease;
border: 1px solid transparent;
}
.msd-help-btn:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px var(--msd-shadow);
}
.msd-help-docs {
background: #e3f2fd;
color: #1976d2;
border-color: #bbdefb;
}
.msd-help-docs:hover {
background: #1976d2;
color: white;
border-color: #1976d2;
}
.msd-version-specs {
display: grid;
gap: var(--msd-spacing-small);
}
.msd-version-item {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 0;
border-bottom: 1px solid var(--msd-bg);
}
.msd-version-item:last-child {
border-bottom: none;
}
.msd-version-icon {
color: var(--msd-primary);
font-size: 16px;
width: 20px;
line-height: 1.5;
flex-shrink: 0;
}
.msd-version-label {
font-size: 13px;
font-weight: 400;
color: var(--msd-text);
flex: 1;
}
.msd-version-value {
font-size: 13px;
color: var(--msd-text-light);
text-align: right;
}
.msd-version-value a {
color: var(--msd-primary);
text-decoration: none;
}
.msd-version-value a:hover {
text-decoration: underline;
}
.msd-version-value.msd-status-good {
color: var(--msd-success);
font-weight: 500;
}
.msd-db-status-good {
background: #d1eddb;
color: #155724;
padding: 4px 8px;
border-radius: var(--msd-radius-small);
font-size: 11px;
font-weight: 500;
}
.msd-db-status-warning {
background: #fff3cd;
color: #856404;
padding: 4px 8px;
border-radius: var(--msd-radius-small);
font-size: 11px;
font-weight: 500;
}
.msd-version-description {
margin-top: var(--msd-spacing);
padding-top: var(--msd-spacing);
border-top: 1px solid var(--msd-border);
font-size: 13px;
color: var(--msd-text-light);
line-height: 1.4;
}
.msd-news-list {
display: grid;
gap: var(--msd-spacing-small);
max-height: 400px;
overflow-y: auto;
}
.msd-news-item {
padding: 12px;
background: var(--msd-bg);
border-radius: var(--msd-radius-small);
border: 1px solid transparent;
transition: all 0.2s ease;
}
.msd-news-item:hover {
background: var(--msd-bg-light);
border-color: var(--msd-border);
box-shadow: 0 2px 8px var(--msd-shadow);
}
.msd-news-title {
font-size: 14px;
font-weight: 400;
color: var(--msd-text);
margin: 0 0 6px 0;
line-height: 1.3;
}
.msd-news-title a {
color: var(--msd-text);
text-decoration: none;
}
.msd-news-title a:hover {
color: var(--msd-primary);
}
.msd-news-meta {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 11px;
color: var(--msd-text-light);
margin-bottom: 6px;
}
.msd-news-source {
font-weight: 400;
color: var(--msd-primary);
}
.msd-news-date {
opacity: 0.8;
}
.msd-news-description {
font-size: 13px;
color: var(--msd-text-light);
line-height: 1.4;
margin: 0;
}
.msd-news-empty {
text-align: center;
padding: 40px 20px;
color: var(--msd-text-light);
}
.msd-news-settings {
text-align: center;
margin-top: var(--msd-spacing);
padding-top: var(--msd-spacing);
border-top: 1px solid var(--msd-bg);
}
.msd-news-source-item {
margin-bottom: var(--msd-spacing);
padding: var(--msd-spacing);
background: var(--msd-bg);
border: 1px solid var(--msd-border);
border-radius: var(--msd-radius);
}
.msd-news-name,
.msd-news-url {
width: 100%;
margin-bottom: var(--msd-spacing-small);
padding: 8px 12px;
border: 1px solid var(--msd-border);
border-radius: var(--msd-radius-small);
font-size: 14px;
}
.msd-news-enabled {
margin-right: 6px;
}
.msd-remove-source {
font-size: 12px;
padding: 4px 8px;
color: var(--msd-danger);
border: 1px solid var(--msd-danger);
background: none;
border-radius: var(--msd-radius-small);
cursor: pointer;
transition: all 0.2s ease;
margin-left: 12px;
}
.msd-remove-source:hover {
background: var(--msd-danger);
color: white;
}
.msd-quick-links-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
gap: var(--msd-spacing-small);
margin-bottom: var(--msd-spacing);
}
#msd-sortable-links {
cursor: move;
}
#msd-sortable-links .msd-quick-link-item {
cursor: pointer;
position: relative;
}
#msd-sortable-links .msd-quick-link-item.ui-sortable-helper {
transform: rotate(5deg);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3);
z-index: 1000;
}
#msd-sortable-links .msd-quick-link-item.ui-sortable-placeholder {
border: 2px dashed var(--msd-primary);
background: rgba(34, 113, 177, 0.1);
visibility: visible !important;
}
.msd-quick-link-item {
display: flex;
flex-direction: column;
align-items: center;
padding: var(--msd-spacing);
text-decoration: none;
color: var(--msd-text);
background: var(--msd-bg);
border-radius: var(--msd-radius);
transition: all 0.2s ease;
border: 1px solid transparent;
gap: var(--msd-spacing-small);
}
.msd-quick-link-item:hover {
color: var(--msd-primary);
background: var(--msd-bg-light);
border-color: var(--msd-primary);
transform: translateY(-2px);
box-shadow: 0 4px 12px var(--msd-shadow);
}
.msd-quick-link-item i {
font-size: 18px;
opacity: 0.8;
}
.msd-quick-link-item span {
font-size: 12px;
font-weight: 400;
text-align: center;
line-height: 1.3;
}
.msd-quick-link-item span.dashicons {
font-size: 18px;
}
.msd-empty-state {
text-align: center;
padding: 40px 20px;
color: var(--msd-text-light);
}
.msd-empty-state p {
margin: 0 0 var(--msd-spacing) 0;
font-style: italic;
}
.msd-widget-footer {
text-align: center;
margin-top: var(--msd-spacing);
padding-top: var(--msd-spacing);
border-top: 1px solid var(--msd-bg);
}
.msd-todo-container {
padding: 0;
}
.msd-todo-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: var(--msd-spacing);
padding-bottom: var(--msd-spacing);
border-bottom: 1px solid var(--msd-border);
}
.msd-todo-stats {
display: flex;
gap: 16px;
font-size: 12px;
color: var(--msd-text-light);
}
.msd-todo-stat {
display: flex;
align-items: center;
gap: 4px;
}
.msd-todo-add-btn {
padding: 6px 12px;
font-size: 12px;
background: var(--msd-primary);
color: white;
border: none;
border-radius: var(--msd-radius-small);
cursor: pointer;
transition: all 0.2s ease;
}
.msd-todo-add-btn:hover {
background: var(--msd-primary-hover);
}
.msd-todo-list {
display: grid;
gap: var(--msd-spacing-small);
max-height: 350px;
overflow-y: auto;
}
.msd-todo-item {
display: flex;
align-items: flex-start;
gap: 12px;
padding: 12px;
background: var(--msd-bg);
border-radius: var(--msd-radius-small);
border: 1px solid transparent;
transition: all 0.2s ease;
}
.msd-todo-item:hover {
background: var(--msd-bg-light);
border-color: var(--msd-border);
}
.msd-todo-item.completed {
opacity: 0.6;
}
.msd-todo-item.completed .msd-todo-title {
text-decoration: line-through;
}
.msd-todo-checkbox {
width: 18px;
height: 18px;
margin: 0;
flex-shrink: 0;
cursor: pointer;
margin-top: 2px;
}
.msd-todo-content {
flex: 1;
min-width: 0;
}
.msd-todo-title {
font-size: 14px;
font-weight: 400;
color: var(--msd-text);
margin: 0 0 4px 0;
line-height: 1.3;
}
.msd-todo-description {
font-size: 12px;
color: var(--msd-text-light);
line-height: 1.4;
margin: 0 0 6px 0;
}
.msd-todo-meta {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 11px;
color: var(--msd-text-light);
}
.msd-todo-priority {
padding: 2px 6px;
border-radius: 3px;
font-size: 9px;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.msd-todo-priority.high {
background: #ffebee;
color: #c62828;
}
.msd-todo-priority.medium {
background: #fff3e0;
color: #ef6c00;
}
.msd-todo-priority.low {
background: #e8f5e8;
color: #2e7d32;
}
.msd-todo-date {
opacity: 0.8;
}
.msd-todo-actions {
display: flex;
gap: 6px;
margin-left: 8px;
flex-shrink: 0;
}
.msd-todo-btn {
width: 24px;
height: 24px;
border: none;
background: none;
cursor: pointer;
border-radius: var(--msd-radius-small);
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
transition: all 0.2s ease;
}
.msd-todo-edit:hover {
background: var(--msd-primary);
color: white;
}
.msd-todo-delete:hover {
background: var(--msd-danger);
color: white;
}
.msd-todo-form {
margin-top: var(--msd-spacing);
padding: 16px;
background: var(--msd-bg);
border-radius: var(--msd-radius);
border: 1px solid var(--msd-border);
display: none;
}
.msd-todo-form.active {
display: block;
}
.msd-todo-form .msd-form-field {
margin-bottom: 12px;
}
.msd-todo-form .msd-form-field:last-child {
margin-bottom: 0;
}
.msd-todo-form label {
font-size: 12px;
font-weight: 500;
color: var(--msd-text);
margin-bottom: 4px;
display: block;
}
.msd-todo-form input,
.msd-todo-form textarea,
.msd-todo-form select {
width: 100%;
padding: 4px 8px;
border: 1px solid var(--msd-border);
border-radius: var(--msd-radius-small);
font-size: 13px;
}
.msd-todo-form textarea {
min-height: 60px;
resize: vertical;
}
.msd-todo-form-actions {
display: flex;
gap: 8px;
margin-top: 12px;
}
.msd-todo-form-actions .button {
font-size: 12px;
padding: 0px 12px;
}
.msd-refresh-btn {
position: absolute;
top: 12px;
right: 12px;
background: none;
border: none;
color: var(--msd-text-light);
font-size: 14px;
cursor: pointer;
padding: 4px;
border-radius: var(--msd-radius-small);
transition: all 0.2s ease;
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
}
.msd-refresh-btn:hover {
color: var(--msd-primary);
background: var(--msd-bg);
}
.msd-refresh-btn .dashicons {
font-size: 16px;
}
.msd-modal {
position: fixed;
z-index: 160000;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.7);
display: flex;
align-items: center;
justify-content: center;
backdrop-filter: blur(2px);
}
.msd-modal-content {
background: var(--msd-bg-light);
border-radius: var(--msd-radius);
width: 90%;
max-width: 600px;
max-height: 80vh;
overflow-y: auto;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
animation: msd-modal-in 0.2s ease-out;
}
@keyframes msd-modal-in {
from {
opacity: 0;
transform: scale(0.9) translateY(-20px);
}
to {
opacity: 1;
transform: scale(1) translateY(0);
}
}
.msd-modal-header {
padding: 20px 24px;
border-bottom: 1px solid var(--msd-border);
display: flex;
justify-content: space-between;
align-items: center;
}
.msd-modal-header h3 {
margin: 0;
font-size: 18px;
font-weight: 400;
color: var(--msd-text);
}
.msd-modal-close {
background: none;
border: none;
font-size: 24px;
cursor: pointer;
color: var(--msd-text-light);
padding: 0;
width: 28px;
height: 28px;
border-radius: var(--msd-radius-small);
display: flex;
align-items: center;
justify-content: center;
transition: all 0.2s ease;
}
.msd-modal-close:hover {
background: var(--msd-bg);
color: var(--msd-text);
}
.msd-modal-body {
padding: 24px;
}
.msd-modal-footer {
padding: 20px 24px;
border-top: 1px solid var(--msd-border);
display: flex;
gap: 12px;
justify-content: flex-end;
}
.msd-link-item {
margin-bottom: var(--msd-spacing);
padding: var(--msd-spacing);
background: var(--msd-bg);
border: 1px solid var(--msd-border);
border-radius: var(--msd-radius);
}
.msd-link-item input[type="text"],
.msd-link-item input[type="url"] {
width: 100%;
margin-bottom: var(--msd-spacing-small);
padding: 4px 12px;
border: 1px solid var(--msd-border);
border-radius: var(--msd-radius-small);
font-size: 14px;
transition: border-color 0.2s ease;
}
.msd-link-item input[type="text"]:focus,
.msd-link-item input[type="url"]:focus {
outline: none;
border-color: var(--msd-primary);
box-shadow: 0 0 0 2px rgba(34, 113, 177, 0.1);
}
.msd-link-item label {
display: flex;
align-items: center;
gap: var(--msd-spacing-small);
margin: var(--msd-spacing-small) 0;
font-size: 13px;
color: var(--msd-text);
cursor: pointer;
}
.msd-remove-link {
font-size: 12px;
padding: 4px 8px;
color: var(--msd-danger);
border: 1px solid var(--msd-danger);
background: none;
border-radius: var(--msd-radius-small);
cursor: pointer;
transition: all 0.2s ease;
}
.msd-remove-link:hover {
background: var(--msd-danger);
color: white;
}
.msd-settings-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px;
margin-top: 20px;
}
.msd-widget-toggle {
background: var(--msd-bg-light);
border: 1px solid var(--msd-border);
border-radius: var(--msd-radius);
padding: 20px;
transition: all 0.2s ease;
}
.msd-widget-toggle:hover {
border-color: var(--msd-primary);
}
.msd-widget-toggle label {
font-weight: 400;
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 8px;
cursor: pointer;
}
.msd-widget-toggle input[type="checkbox"] {
margin: 0;
width: 18px;
height: 18px;
}
.msd-widget-toggle .description {
margin: 0;
font-size: 11px;
color: #8c8c8c;
line-height: 1.4;
}
.msd-card {
background: #fff;
border: 1px solid #ccd0d4;
border-radius: 4px;
max-width: unset;
margin-top: 20px;
padding: 20px;
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
overflow: hidden;
}
.msd-notice {
padding: 8px 12px;
border-radius: 4px;
margin: 5px 0 15px;
border-left: 4px solid #ddd;
animation: msd-notice-in 0.3s ease-out;
}
@keyframes msd-notice-in {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.msd-notice.success {
border-left-color: var(--msd-success);
background: #d1eddb;
}
.msd-notice.error {
border-left-color: var(--msd-danger);
background: #f8d7da;
}
.msd-notice.warning {
border-left-color: var(--msd-warning);
background: #fff3cd;
}
@media screen and (max-width: 782px) {
.msd-actions-grid {
grid-template-columns: 1fr;
}
.msd-overview-stats {
grid-template-columns: repeat(2, 1fr);
}
.msd-user-stats {
grid-template-columns: 1fr;
}
.msd-site-card,
.msd-storage-item,
.msd-user-item,
.msd-pending-item,
.msd-activity-item {
flex-direction: column;
align-items: flex-start;
gap: 12px;
}
.msd-site-info {
width: 100%;
flex-direction: row;
}
.msd-site-actions,
.msd-user-actions,
.msd-pending-actions,
.msd-activity-actions {
width: 100%;
margin-left: 0;
justify-content: flex-start;
}
.msd-storage-usage {
width: 100%;
text-align: left;
margin-left: 0;
}
.msd-quick-links-grid {
grid-template-columns: repeat(2, 1fr);
}
.msd-quick-actions {
grid-template-columns: repeat(2, 1fr);
}
.msd-settings-grid {
grid-template-columns: 1fr;
}
.msd-news-list,
.msd-activity-list {
max-height: 300px;
}
.msd-user-buttons {
flex-direction: column;
gap: 4px;
}
.msd-activity-header {
flex-direction: column;
align-items: flex-start;
gap: 4px;
}
.msd-activity-type {
margin-left: 0;
}
.msd-version-actions {
flex-direction: column;
gap: 4px;
}
.msd-todo-actions {
flex-direction: column;
gap: 4px;
}
}
@media screen and (max-width: 480px) {
.msd-overview-stats,
.msd-user-stats {
grid-template-columns: 1fr;
}
.msd-quick-links-grid,
.msd-quick-actions {
grid-template-columns: 1fr;
}
.msd-modal-content {
width: 95%;
margin: 20px;
}
.msd-modal-header,
.msd-modal-body,
.msd-modal-footer {
padding: 16px;
}
.msd-site-info {
flex-direction: column;
align-items: flex-start;
}
}
.fade-in {
animation: msd-fade-in 0.3s ease-out;
}
@keyframes msd-fade-in {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.msd-user-status.good {
background: #d1eddb;
color: #155724;
}
.msd-user-status.warning {
background: #fff3cd;
color: #856404;
}
.msd-user-status.critical {
background: #f8d7da;
color: #721c24;
}
.msd-user-status.neutral {
background: #e2e3e5;
color: #6c757d;
}
body.modal-open {
overflow: hidden;
}
.msd-link-item.error {
border-color: var(--msd-danger);
}
.msd-link-url.error {
border-color: var(--msd-danger);
}
.msd-news-source-item.error {
border-color: var(--msd-danger);
}
.msd-news-url.error {
border-color: var(--msd-danger);
}
.msd-refresh-btn.refreshing {
opacity: 0.6;
pointer-events: none;
}
.msd-error-state {
text-align: center;
padding: 20px;
color: var(--msd-text-light);
}
.msd-emoji-icon {
font-size: 18px !important;
display: inline-block;
filter: grayscale(55%);
}
.msd-update-notice {
display: flex;
align-items: center;
gap: 8px;
padding: 8px;
margin-bottom: var(--msd-spacing);
background: #fff3cd;
border: 1px solid #ffeaa7;
border-radius: var(--msd-radius-small);
color: #856404;
font-size: 13px;
font-weight: 500;
}
.msd-update-notice .dashicons {
color: #dba617;
font-size: 16px;
line-height: 1.2;
}
.msd-update-link {
color: var(--msd-primary);
text-decoration: none;
font-weight: 500;
}
.msd-update-link:hover {
text-decoration: underline;
}