Files
Jonathan Miller f649858fcd feat: add SEO content scoring panel to article editor
JavaScript-based SEO analysis with 7 checks (OG title, description,
image, SEO title, meta description, title length, description
length). Shows pass/fail dots and overall score. Closes #68
2026-06-23 12:53:58 -05:00

256 lines
4.8 KiB
CSS

/**
* @package MokoJoomOpenGraph
* @subpackage plg_content_mokoog
* @copyright Copyright (C) 2026 Moko Consulting. All rights reserved.
* @license GPL-3.0-or-later
*/
.mokoog-preview-wrapper {
margin: 15px 0;
padding: 15px;
background: #f8f9fa;
border-radius: 8px;
border: 1px solid #dee2e6;
}
.mokoog-preview-heading {
margin: 0 0 12px;
font-size: 14px;
color: #666;
}
.mokoog-platform-label {
display: block;
color: #999;
text-transform: uppercase;
font-size: 11px;
font-weight: 600;
margin-top: 16px;
margin-bottom: 4px;
}
.mokoog-platform-label:first-of-type {
margin-top: 0;
}
.mokoog-card {
overflow: hidden;
max-width: 500px;
background: #fff;
}
.mokoog-card-fb {
border: 1px solid #ddd;
border-radius: 3px;
}
.mokoog-card-tw {
border: 1px solid #cfd9de;
border-radius: 16px;
}
.mokoog-card-img {
height: 260px;
background: #e4e6eb center / cover no-repeat;
}
.mokoog-card-body {
padding: 10px 12px;
border-top: 1px solid #ddd;
}
.mokoog-card-tw .mokoog-card-body {
border-top-color: #cfd9de;
}
.mokoog-card-domain {
font-size: 11px;
color: #65676b;
text-transform: uppercase;
}
.mokoog-card-tw .mokoog-card-domain {
font-size: 13px;
text-transform: none;
margin-top: 4px;
}
.mokoog-card-title {
font-size: 16px;
font-weight: 600;
color: #1d2129;
margin: 3px 0 2px;
line-height: 1.3;
}
.mokoog-card-tw .mokoog-card-title {
font-size: 15px;
font-weight: 700;
color: #0f1419;
}
.mokoog-card-desc {
font-size: 14px;
color: #65676b;
line-height: 1.4;
max-height: 2.8em;
overflow: hidden;
}
.mokoog-card-tw .mokoog-card-desc {
font-size: 15px;
color: #536471;
margin-top: 2px;
}
/* LinkedIn card */
.mokoog-card-li {
border: 1px solid #e0dfdc;
border-radius: 2px;
}
.mokoog-card-li .mokoog-card-body {
border-top-color: #e0dfdc;
}
.mokoog-card-li .mokoog-card-title {
font-size: 14px;
font-weight: 600;
color: rgba(0, 0, 0, 0.9);
}
.mokoog-card-li .mokoog-card-domain {
font-size: 12px;
color: rgba(0, 0, 0, 0.6);
text-transform: none;
}
/* Discord card */
.mokoog-card-dc {
background: #2b2d31;
border-left: 4px solid #5865f2;
border-radius: 4px;
}
.mokoog-card-dc .mokoog-card-body {
border-top: none;
}
.mokoog-card-dc .mokoog-card-img {
height: 200px;
margin: 0 12px 12px;
border-radius: 4px;
}
.mokoog-card-dc .mokoog-card-title {
font-size: 16px;
font-weight: 700;
color: #00a8fc;
}
.mokoog-card-dc .mokoog-card-desc {
font-size: 14px;
color: #dbdee1;
}
.mokoog-card-dc .mokoog-card-domain {
font-size: 12px;
color: #b5bac1;
text-transform: none;
}
/* Mastodon card */
.mokoog-card-ma {
border: 1px solid #c8ccd0;
border-radius: 8px;
}
.mokoog-card-ma .mokoog-card-img {
border-radius: 8px 8px 0 0;
}
.mokoog-card-ma .mokoog-card-body {
border-top-color: #c8ccd0;
}
.mokoog-card-ma .mokoog-card-title {
font-size: 14px;
font-weight: 600;
color: #1a1a2e;
}
.mokoog-card-ma .mokoog-card-desc {
font-size: 13px;
color: #606984;
}
.mokoog-card-ma .mokoog-card-domain {
font-size: 12px;
color: #606984;
text-transform: none;
}
/* Slack card */
.mokoog-card-sl {
border-left: 4px solid #36c5f0;
border-radius: 0;
background: #fff;
}
.mokoog-card-sl .mokoog-card-body {
border-top: none;
padding: 8px 12px;
}
.mokoog-card-sl .mokoog-card-title {
font-size: 15px;
font-weight: 700;
color: #1264a3;
}
.mokoog-card-sl .mokoog-card-desc {
font-size: 14px;
color: #1d1c1d;
}
.mokoog-card-sl .mokoog-card-domain {
font-size: 12px;
color: #616061;
text-transform: none;
margin-top: 4px;
}
/* Character count indicators */
.mokoog-char-count {
display: block;
font-size: 12px;
margin-top: 4px;
font-variant-numeric: tabular-nums;
}
.mokoog-char-ok {
color: #2e7d32;
}
.mokoog-char-warn {
color: #f57c00;
}
.mokoog-char-over {
color: #d32f2f;
font-weight: 600;
}
/* SEO scoring panel */
.mokoog-seo-score { margin: 15px 0; padding: 15px; background: #f8f9fa; border-radius: 8px; border: 1px solid #dee2e6; }
.mokoog-seo-heading { margin: 0 0 10px; font-size: 14px; color: #666; }
.mokoog-seo-list { list-style: none; padding: 0; margin: 0 0 10px; }
.mokoog-seo-item { padding: 4px 0; font-size: 13px; display: flex; align-items: center; gap: 8px; }
.mokoog-seo-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.mokoog-seo-pass { background: #2e7d32; }
.mokoog-seo-fail { background: #d32f2f; }
.mokoog-seo-total { font-size: 14px; font-weight: 600; padding-top: 8px; border-top: 1px solid #dee2e6; }
.mokoog-seo-total-good { color: #2e7d32; }
.mokoog-seo-total-ok { color: #f57c00; }
.mokoog-seo-total-bad { color: #d32f2f; }