/**
 * Fontify — public styles
 * Editorial-light, theme-agnostic via CSS variables with sensible fallbacks.
 * Uses :where() to keep specificity low so theme styles still apply.
 */

:root {
        --fontify-bg: #ffffff;
        --fontify-fg: #1a1a1a;
        --fontify-muted: #6b6b6b;
        --fontify-accent: #2c5cff;
        --fontify-accent-fg: #ffffff;
        --fontify-border: #e8e8ec;
        --fontify-card-bg: #ffffff;
        --fontify-card-shadow: 0 1px 2px rgba(0,0,0,.04), 0 4px 12px rgba(0,0,0,.04);
        --fontify-radius: 10px;
        --fontify-radius-sm: 6px;
        --fontify-font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
        --fontify-font-heading: Georgia, "Times New Roman", serif;
        --fontify-spacing: 16px;
        --fontify-max-width: 1280px;
}

/* Let themes override */
:root:has(body) {
        --fontify-bg: var(--fontify-bg, #ffffff);
}

/* ---------- Layout wrappers ---------- */
.fontify-archive-main,
.fontify-single-main {
        max-width: var(--fontify-max-width);
        margin: 0 auto;
        padding: var(--fontify-spacing);
        font-family: var(--fontify-font-ui);
        color: var(--fontify-fg);
}

.fontify-archive-header,
.fontify-single-header {
        margin-bottom: 32px;
        padding-bottom: 24px;
        border-bottom: 1px solid var(--fontify-border);
}

.fontify-archive-title,
.fontify-single-title,
.fontify-identify-title,
.fontify-submit-title,
.fontify-auth-title {
        font-family: var(--fontify-font-heading);
        font-size: clamp(1.75rem, 4vw, 2.5rem);
        font-weight: 700;
        margin: 0 0 8px 0;
        letter-spacing: -0.02em;
        color: var(--fontify-fg);
}

.fontify-archive-description {
        color: var(--fontify-muted);
        font-size: 1rem;
        line-height: 1.6;
        margin-bottom: 16px;
}

/* ---------- Search bar ---------- */
.fontify-search-bar {
        display: flex;
        gap: 8px;
        margin: 16px 0;
}
.fontify-search-bar input[type="search"] {
        flex: 1;
        padding: 12px 16px;
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius-sm);
        font-size: 1rem;
        font-family: var(--fontify-font-ui);
        background: var(--fontify-bg);
        color: var(--fontify-fg);
}
.fontify-search-bar input[type="search"]:focus {
        outline: 2px solid var(--fontify-accent);
        outline-offset: -1px;
        border-color: var(--fontify-accent);
}
.fontify-search-bar button {
        padding: 12px 24px;
        background: var(--fontify-accent);
        color: var(--fontify-accent-fg);
        border: none;
        border-radius: var(--fontify-radius-sm);
        font-size: 1rem;
        font-weight: 600;
        cursor: pointer;
        transition: opacity .15s;
}
.fontify-search-bar button:hover { opacity: .9; }

/* ---------- Filters ---------- */
.fontify-archive-filters {
        margin: 20px 0;
}
.fontify-filter-form {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;
        align-items: end;
}
.fontify-filter-form label {
        display: flex;
        flex-direction: column;
        gap: 4px;
        font-size: .875rem;
        color: var(--fontify-muted);
        font-weight: 500;
}
.fontify-filter-form select,
.fontify-filter-form button {
        padding: 8px 12px;
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius-sm);
        background: var(--fontify-bg);
        color: var(--fontify-fg);
        font-size: .875rem;
        font-family: var(--fontify-font-ui);
}

/* ---------- Grid ---------- */
.fontify-grid-items {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
        gap: 20px;
}

.fontify-card {
        background: var(--fontify-card-bg);
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
        overflow: hidden;
        transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
        display: flex;
        flex-direction: column;
}
.fontify-card:hover {
        transform: translateY(-3px);
        box-shadow: var(--fontify-card-shadow);
        border-color: var(--fontify-accent);
}

.fontify-card-img {
        display: block;
        aspect-ratio: 4 / 3;
        background: #fafafa;
        overflow: hidden;
        text-align: center;
}
.fontify-card-img img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        display: block;
        transition: transform .3s ease;
}
.fontify-card:hover .fontify-card-img img { transform: scale(1.03); }
.fontify-card-name {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 100%;
        padding: 24px;
        font-family: var(--fontify-font-heading);
        font-size: 1.5rem;
        font-weight: 700;
        color: var(--fontify-fg);
}

.fontify-card-body { padding: 14px 16px; flex: 1; display: flex; flex-direction: column; }
.fontify-card-title {
        font-size: 1rem;
        margin: 0 0 6px;
        font-weight: 600;
        color: var(--fontify-fg);
        line-height: 1.3;
}
.fontify-card-title a { color: inherit; text-decoration: none; }
.fontify-card-title a:hover { color: var(--fontify-accent); }

.fontify-card-meta {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        font-size: .8125rem;
        color: var(--fontify-muted);
        margin-bottom: 8px;
}
.fontify-card-meta > span:not(:last-child)::after { content: "·"; margin-left: 8px; color: var(--fontify-border); }

.fontify-card-foot {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-top: auto;
        padding-top: 8px;
        border-top: 1px solid var(--fontify-border);
        font-size: .75rem;
        color: var(--fontify-muted);
}
.fontify-card-license {
        padding: 2px 8px;
        background: #f0f4ff;
        color: var(--fontify-accent);
        border-radius: 100px;
        font-weight: 500;
}

/* ---------- Pagination ---------- */
.fontify-pagination {
        display: flex;
        justify-content: center;
        gap: 6px;
        margin-top: 40px;
        flex-wrap: wrap;
}
.fontify-pagination a,
.fontify-pagination span {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 36px;
        height: 36px;
        padding: 0 10px;
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius-sm);
        color: var(--fontify-fg);
        text-decoration: none;
        font-size: .875rem;
        font-weight: 500;
        background: var(--fontify-bg);
}
.fontify-pagination a:hover { border-color: var(--fontify-accent); color: var(--fontify-accent); }
.fontify-pagination .fontify-page-current,
.fontify-pagination .current {
        background: var(--fontify-accent);
        color: var(--fontify-accent-fg);
        border-color: var(--fontify-accent);
}

/* ---------- Single font ---------- */
.fontify-single-meta {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        margin-top: 8px;
}
.fontify-meta-pill {
        display: inline-flex;
        align-items: center;
        padding: 4px 12px;
        background: #f4f4f6;
        border-radius: 100px;
        font-size: .8125rem;
        color: var(--fontify-fg);
}
.fontify-meta-pill a { color: inherit; text-decoration: none; }
.fontify-meta-pill a:hover { text-decoration: underline; }
.fontify-license-pill { background: #e6f7e8; color: #1c7d34; }

.fontify-single-layout {
        display: grid;
        grid-template-columns: 1fr 320px;
        gap: 40px;
        margin-top: 32px;
}
@media (max-width: 900px) {
        .fontify-single-layout { grid-template-columns: 1fr; }
}

.fontify-single-preview-img {
        background: #fafafa;
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
        padding: 24px;
        text-align: center;
        margin-bottom: 32px;
}
.fontify-single-preview-img img { max-width: 100%; height: auto; display: inline-block; }

.fontify-single-section {
        margin-bottom: 40px;
}
.fontify-single-section > h2 {
        font-family: var(--fontify-font-heading);
        font-size: 1.5rem;
        font-weight: 700;
        margin: 0 0 16px;
        padding-bottom: 8px;
        border-bottom: 2px solid var(--fontify-accent);
        display: flex;
        align-items: center;
        justify-content: space-between;
}
.fontify-glyph-count {
        font-family: var(--fontify-font-ui);
        font-size: .875rem;
        font-weight: 500;
        color: var(--fontify-muted);
        background: #f4f4f6;
        padding: 4px 12px;
        border-radius: 100px;
}

.fontify-glyph-sheet-wrap {
        background: #fafafa;
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
        padding: 16px;
        overflow: auto;
}
.fontify-glyph-sheet { max-width: 100%; height: auto; display: block; }

.fontify-description { line-height: 1.7; }

/* ---------- Custom preview block ---------- */
.fontify-preview-block {
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
        padding: 16px;
        background: #fafafa;
}
.fontify-preview-controls {
        display: flex;
        flex-wrap: wrap;
        gap: 12px;
        margin-bottom: 12px;
        align-items: center;
}
.fontify-preview-controls label {
        display: flex;
        align-items: center;
        gap: 6px;
        font-size: .8125rem;
        color: var(--fontify-muted);
        font-weight: 500;
}
.fontify-preview-controls input[type="color"] { width: 40px; height: 32px; padding: 0; border: 1px solid var(--fontify-border); border-radius: 4px; cursor: pointer; }
.fontify-preview-controls input[type="range"] { width: 120px; }
.fontify-preview-controls select { padding: 6px 10px; border-radius: var(--fontify-radius-sm); border: 1px solid var(--fontify-border); background: var(--fontify-bg); color: var(--fontify-fg); }
.fontify-preview-reset { padding: 6px 12px; border-radius: var(--fontify-radius-sm); border: 1px solid var(--fontify-border); background: var(--fontify-bg); cursor: pointer; }
.fontify-preview-text {
        width: 100%;
        padding: 12px;
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius-sm);
        font-family: var(--fontify-font-ui);
        font-size: 1rem;
        resize: vertical;
        background: var(--fontify-bg);
        color: var(--fontify-fg);
}
.fontify-preview-output {
        margin-top: 12px;
        line-height: 1.4;
        word-break: break-word;
        overflow-wrap: anywhere;
}

/* ---------- Sidebar ---------- */
.fontify-side-block {
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
        padding: 20px;
        margin-bottom: 20px;
        background: var(--fontify-bg);
}
.fontify-side-block h3 {
        font-size: 1rem;
        font-weight: 700;
        margin: 0 0 12px;
        color: var(--fontify-fg);
}

.fontify-side-download .fontify-download-button {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        width: 100%;
        padding: 14px 20px;
        background: var(--fontify-accent);
        color: var(--fontify-accent-fg);
        border: none;
        border-radius: var(--fontify-radius-sm);
        font-size: 1rem;
        font-weight: 600;
        text-decoration: none;
        cursor: pointer;
        transition: opacity .15s;
}
.fontify-side-download .fontify-download-button:hover { opacity: .9; }
.fontify-side-download .fontify-dl-count { font-size: .875rem; opacity: .9; }
.fontify-filesize { margin: 12px 0 4px; font-size: .8125rem; color: var(--fontify-muted); }
.fontify-source-link { font-size: .8125rem; margin: 4px 0 0; }
.fontify-source-link a { color: var(--fontify-accent); }

.fontify-side-info dl { margin: 0; font-size: .875rem; }
.fontify-side-info dt { color: var(--fontify-muted); margin-top: 8px; font-weight: 500; }
.fontify-side-info dt:first-child { margin-top: 0; }
.fontify-side-info dd { margin: 2px 0 0; font-weight: 600; color: var(--fontify-fg); }

.fontify-side-related ul { list-style: none; padding: 0; margin: 0; }
.fontify-side-related li { margin-bottom: 12px; }
.fontify-related-item { display: flex; gap: 12px; align-items: center; text-decoration: none; color: var(--fontify-fg); }
.fontify-related-item:hover { color: var(--fontify-accent); }
.fontify-related-item img { width: 48px; height: 48px; object-fit: cover; border-radius: var(--fontify-radius-sm); border: 1px solid var(--fontify-border); }
.fontify-related-title { font-size: .875rem; font-weight: 500; }

/* ---------- Download button (shortcode variant) ---------- */
.fontify-download-button.button,
.fontify-download-button {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 10px 18px;
        background: var(--fontify-accent);
        color: var(--fontify-accent-fg);
        border: none;
        border-radius: var(--fontify-radius-sm);
        font-size: .875rem;
        font-weight: 600;
        text-decoration: none;
        cursor: pointer;
}

/* ---------- Top fonts list ---------- */
.fontify-top-list { list-style: decimal inside; padding: 0; margin: 0; font-size: .9375rem; }
.fontify-top-list li { padding: 8px 0; border-bottom: 1px solid var(--fontify-border); display: flex; justify-content: space-between; }
.fontify-top-list a { color: var(--fontify-fg); text-decoration: none; }
.fontify-top-list a:hover { color: var(--fontify-accent); }
.fontify-top-count { color: var(--fontify-muted); font-size: .8125rem; }

/* ---------- Auth pages ---------- */
.fontify-auth-card,
.fontify-submit-card {
        max-width: 480px;
        margin: 40px auto;
        padding: 32px;
        background: var(--fontify-bg);
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
        box-shadow: var(--fontify-card-shadow);
}
.fontify-auth-form .fontify-field,
.fontify-submit-form .fontify-field { margin-bottom: 16px; }
.fontify-auth-form label,
.fontify-submit-form label {
        display: block;
        font-size: .875rem;
        font-weight: 500;
        margin-bottom: 6px;
        color: var(--fontify-fg);
}
.fontify-auth-form input[type="text"],
.fontify-auth-form input[type="email"],
.fontify-auth-form input[type="password"],
.fontify-submit-form input[type="text"],
.fontify-submit-form input[type="email"],
.fontify-submit-form input[type="url"],
.fontify-submit-form select,
.fontify-submit-form textarea {
        width: 100%;
        padding: 12px 14px;
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius-sm);
        font-size: .9375rem;
        background: var(--fontify-bg);
        color: var(--fontify-fg);
        font-family: var(--fontify-font-ui);
}
.fontify-auth-form input:focus,
.fontify-submit-form input:focus,
.fontify-submit-form select:focus,
.fontify-submit-form textarea:focus {
        outline: 2px solid var(--fontify-accent);
        outline-offset: -1px;
        border-color: var(--fontify-accent);
}
.fontify-field-row { display: flex; justify-content: space-between; align-items: center; }
.fontify-forgot { font-size: .8125rem; color: var(--fontify-accent); text-decoration: none; }
.fontify-auth-submit,
.fontify-submit-btn {
        width: 100%;
        padding: 12px 20px;
        background: var(--fontify-accent);
        color: var(--fontify-accent-fg);
        border: none;
        border-radius: var(--fontify-radius-sm);
        font-size: 1rem;
        font-weight: 600;
        cursor: pointer;
        transition: opacity .15s;
}
.fontify-auth-submit:hover,
.fontify-submit-btn:hover { opacity: .9; }
.fontify-auth-alt, .fontify-submit-help { text-align: center; font-size: .875rem; color: var(--fontify-muted); margin-top: 16px; }
.fontify-auth-alt a, .fontify-submit-help a { color: var(--fontify-accent); }
.fontify-auth-error,
.fontify-submit-error {
        background: #fef2f2;
        color: #b91c1c;
        padding: 10px 14px;
        border-radius: var(--fontify-radius-sm);
        font-size: .875rem;
        margin-bottom: 12px;
}
.fontify-auth-success,
.fontify-submit-success {
        background: #f0fdf4;
        color: #166534;
        padding: 10px 14px;
        border-radius: var(--fontify-radius-sm);
        font-size: .875rem;
        margin-bottom: 12px;
}
.fontify-submit-auth-required {
        max-width: 480px;
        margin: 40px auto;
        text-align: center;
        padding: 32px;
        background: var(--fontify-bg);
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
}

/* ---------- Identify widget ---------- */
.fontify-identify-wrap { max-width: 900px; margin: 0 auto; }
.fontify-identify-help { color: var(--fontify-muted); margin-bottom: 24px; line-height: 1.6; }
.fontify-identify-input {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 20px;
        margin-bottom: 24px;
}
@media (max-width: 700px) {
        .fontify-identify-input { grid-template-columns: 1fr; }
}
.fontify-identify-dropzone {
        border: 2px dashed var(--fontify-border);
        border-radius: var(--fontify-radius);
        padding: 40px 20px;
        text-align: center;
        cursor: pointer;
        transition: border-color .2s, background .2s;
        color: var(--fontify-muted);
}
.fontify-identify-dropzone:hover,
.fontify-identify-dropzone.is-dragging {
        border-color: var(--fontify-accent);
        background: #f8faff;
}
.fontify-identify-dropzone-inner p { margin: 8px 0; }
.fontify-identify-dz-text { font-weight: 600; color: var(--fontify-fg); }
.fontify-identify-dz-sub { font-size: .8125rem; }
.fontify-identify-url label { display: block; font-size: .875rem; font-weight: 500; margin-bottom: 8px; color: var(--fontify-fg); }
.fontify-identify-url-row { display: flex; gap: 8px; }
.fontify-identify-url-row input { flex: 1; padding: 12px 14px; border: 1px solid var(--fontify-border); border-radius: var(--fontify-radius-sm); }
.fontify-identify-url-row input:focus { outline: 2px solid var(--fontify-accent); border-color: var(--fontify-accent); }
.fontify-identify-url-row button { padding: 12px 20px; background: var(--fontify-accent); color: var(--fontify-accent-fg); border: none; border-radius: var(--fontify-radius-sm); font-weight: 600; cursor: pointer; }

.fontify-identify-preview {
        text-align: center;
        margin-bottom: 24px;
        padding: 20px;
        background: #fafafa;
        border-radius: var(--fontify-radius);
        border: 1px solid var(--fontify-border);
}
.fontify-identify-preview img { max-width: 100%; height: auto; border-radius: var(--fontify-radius-sm); margin-bottom: 12px; }
.fontify-identify-loading {
        text-align: center;
        padding: 40px;
        color: var(--fontify-muted);
}
.fontify-spinner {
        width: 40px;
        height: 40px;
        border: 3px solid var(--fontify-border);
        border-top-color: var(--fontify-accent);
        border-radius: 50%;
        animation: fontify-spin .8s linear infinite;
        margin: 0 auto 16px;
}
@keyframes fontify-spin { to { transform: rotate(360deg); } }

.fontify-identify-section {
        margin-top: 32px;
        padding-top: 24px;
        border-top: 1px solid var(--fontify-border);
}
.fontify-identify-section > h4 {
        font-family: var(--fontify-font-heading);
        font-size: 1.125rem;
        font-weight: 700;
        margin: 0 0 16px;
        color: var(--fontify-fg);
}
.fontify-identify-grid {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
        gap: 16px;
}
.fontify-identify-card {
        background: var(--fontify-bg);
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
        padding: 16px;
        display: flex;
        flex-direction: column;
        gap: 8px;
}
.fontify-identify-card img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: var(--fontify-radius-sm); background: #fafafa; }
.fontify-identify-card .fic-title { font-weight: 600; color: var(--fontify-fg); font-size: .9375rem; }
.fontify-identify-card .fic-sub { font-size: .8125rem; color: var(--fontify-muted); }
.fontify-identify-card .fic-mini { font-size: .75rem; color: var(--fontify-muted); margin-top: 4px; line-height: 1.4; }
.fontify-identify-card .fic-conf {
        display: inline-block;
        padding: 2px 10px;
        background: #e6f7e8;
        color: #1c7d34;
        border-radius: 100px;
        font-size: .75rem;
        font-weight: 600;
}

/* ---------- Translation widget ---------- */
.fontify-translate-widget {
        position: fixed;
        bottom: 20px;
        right: 20px;
        z-index: 9999;
        font-family: var(--fontify-font-ui);
}
.fontify-translate-btn {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 10px 14px;
        background: var(--fontify-fg);
        color: var(--fontify-bg);
        border: none;
        border-radius: 100px;
        cursor: pointer;
        font-size: .875rem;
        font-weight: 500;
        box-shadow: 0 4px 16px rgba(0,0,0,.16);
        transition: transform .15s;
}
.fontify-translate-btn:hover { transform: translateY(-1px); }
.fontify-translate-dropdown {
        position: absolute;
        bottom: 50px;
        right: 0;
        background: var(--fontify-bg);
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
        box-shadow: 0 8px 24px rgba(0,0,0,.16);
        width: 240px;
        max-height: 320px;
        overflow: hidden;
        display: flex;
        flex-direction: column;
}
.fontify-translate-dropdown[hidden] { display: none; }
.fontify-translate-search { padding: 8px; border-bottom: 1px solid var(--fontify-border); }
.fontify-translate-search input {
        width: 100%;
        padding: 8px 10px;
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius-sm);
        font-size: .8125rem;
}
.fontify-translate-list {
        margin: 0;
        padding: 0;
        list-style: none;
        overflow-y: auto;
        max-height: 240px;
}
.fontify-translate-list li a {
        display: block;
        padding: 8px 14px;
        color: var(--fontify-fg);
        text-decoration: none;
        font-size: .875rem;
}
.fontify-translate-list li a:hover { background: #f4f4f6; }
.fontify-translate-list li.fontify-lang-active a { background: var(--fontify-accent); color: var(--fontify-accent-fg); }

/* ---------- Misc ---------- */
.fontify-empty { text-align: center; padding: 40px; color: var(--fontify-muted); }

.fontify-auth-logged-in { text-align: center; padding: 24px; background: var(--fontify-bg); border-radius: var(--fontify-radius); border: 1px solid var(--fontify-border); max-width: 480px; margin: 32px auto; }
.fontify-auth-logged-in .button { margin: 0 4px; }

/* ---------- Responsive tweaks ---------- */
@media (max-width: 640px) {
        .fontify-grid-items { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; }
        .fontify-archive-main,
        .fontify-single-main { padding: 12px; }
        .fontify-auth-card,
        .fontify-submit-card { padding: 20px; margin: 16px auto; }
        .fontify-translate-widget { bottom: 12px; right: 12px; }
        .fontify-filter-form { gap: 8px; }
}

/* ============================================================
 * RATINGS
 * ============================================================ */
.fontify-rating {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 12px;
        margin-top: 12px;
}
.fontify-rating-stars { display: inline-flex; gap: 2px; }
.fontify-star {
        background: none;
        border: none;
        padding: 0;
        cursor: pointer;
        color: #e6e6e6;
        transition: color .15s, transform .15s;
        line-height: 1;
}
.fontify-star:hover { transform: scale(1.15); }
.fontify-star.is-on { color: #f5a623; }
.fontify-star.is-mine { color: #f5a623; }
.fontify-star[disabled] { cursor: not-allowed; }
.fontify-rating-meta { font-size: .875rem; color: var(--fontify-muted); }
.fontify-rating-avg { font-weight: 700; color: var(--fontify-fg); font-size: 1rem; }
.fontify-rating-sep { margin: 0 4px; }
.fontify-rating-login-note { font-size: .8125rem; color: var(--fontify-muted); margin: 0; flex-basis: 100%; }
.fontify-rating-login-note a { color: var(--fontify-accent); }

.fontify-rating-dist { flex-basis: 100%; margin-top: 8px; }
.fontify-rating-dist > summary {
        cursor: pointer;
        font-size: .8125rem;
        color: var(--fontify-muted);
        font-weight: 500;
}
.fontify-rating-dist ul { list-style: none; padding: 8px 0 0; margin: 0; }
.fontify-rating-dist li {
        display: grid;
        grid-template-columns: 50px 1fr 40px;
        gap: 10px;
        align-items: center;
        font-size: .8125rem;
        margin-bottom: 4px;
}
.fontify-dist-stars { color: #f5a623; }
.fontify-dist-bar {
        background: #f0f0f1;
        border-radius: 100px;
        height: 8px;
        overflow: hidden;
}
.fontify-dist-bar > span {
        display: block;
        height: 100%;
        background: linear-gradient(90deg, #f5a623, #f7c948);
}
.fontify-dist-count { color: var(--fontify-muted); text-align: right; }

/* ============================================================
 * DISPLAY MODES (specimen / waterfall / banner)
 * ============================================================ */
.fontify-displays { margin-top: 16px; }
.fontify-displays-tabs {
        display: flex;
        gap: 4px;
        border-bottom: 2px solid var(--fontify-border);
        margin-bottom: 24px;
        overflow-x: auto;
}
.fontify-displays-tab {
        background: none;
        border: none;
        padding: 10px 18px;
        font-size: .9375rem;
        font-weight: 600;
        color: var(--fontify-muted);
        cursor: pointer;
        border-bottom: 2px solid transparent;
        margin-bottom: -2px;
        transition: color .15s, border-color .15s;
        white-space: nowrap;
        font-family: var(--fontify-font-ui);
}
.fontify-displays-tab:hover { color: var(--fontify-fg); }
.fontify-displays-tab.is-active {
        color: var(--fontify-accent);
        border-bottom-color: var(--fontify-accent);
}
.fontify-display-panel { display: none; }
.fontify-display-panel.is-active { display: block; }

.fontify-display-help {
        font-size: .875rem;
        color: var(--fontify-muted);
        margin: 0 0 16px;
        line-height: 1.6;
}

/* Specimen sheet */
.fontify-specimen-hero {
        background: #fafafa;
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
        padding: 48px 24px;
        text-align: center;
        margin-bottom: 24px;
}
.fontify-specimen-hero-text {
        font-size: clamp(2.5rem, 8vw, 5rem);
        line-height: 1.1;
        color: var(--fontify-fg);
        word-break: break-word;
        overflow-wrap: anywhere;
}
.fontify-specimen-hero-meta {
        margin-top: 16px;
        color: var(--fontify-muted);
        font-size: .9375rem;
        display: flex;
        justify-content: center;
        gap: 16px;
        flex-wrap: wrap;
}
.fontify-specimen-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
        gap: 20px;
        margin-bottom: 24px;
}
.fontify-specimen-block {
        background: var(--fontify-bg);
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
        padding: 16px;
}
.fontify-specimen-block-wide { grid-column: 1 / -1; }
.fontify-specimen-block > h4 {
        font-size: .75rem;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: .05em;
        margin: 0 0 8px;
        color: var(--fontify-muted);
}
.fontify-specimen-alphabet {
        font-size: 1.5rem;
        line-height: 1.5;
        color: var(--fontify-fg);
        word-break: break-all;
}
.fontify-specimen-paragraph {
        font-size: 1.0625rem;
        line-height: 1.6;
        margin: 0;
        color: var(--fontify-fg);
}
.fontify-specimen-details {
        margin-top: 32px;
        padding-top: 24px;
        border-top: 2px solid var(--fontify-accent);
}
.fontify-specimen-details > h3 {
        font-family: var(--fontify-font-heading);
        font-size: 1.25rem;
        margin: 0 0 16px;
}
.fontify-details-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
        gap: 12px 24px;
        margin: 0 0 24px;
        font-size: .875rem;
}
.fontify-details-grid dt {
        color: var(--fontify-muted);
        font-weight: 500;
}
.fontify-details-grid dd {
        margin: 2px 0 0;
        font-weight: 600;
        color: var(--fontify-fg);
        word-break: break-word;
}
.fontify-details-grid dd a { color: var(--fontify-accent); }
.fontify-specimen-blocks > h4 {
        font-size: .75rem;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: .05em;
        margin: 16px 0 8px;
        color: var(--fontify-muted);
}
.fontify-specimen-blocks ul {
        list-style: none;
        padding: 0;
        margin: 0;
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
}
.fontify-specimen-blocks li {
        font-size: .75rem;
        padding: 4px 10px;
        background: #f4f4f6;
        border-radius: 100px;
        color: var(--fontify-fg);
}

/* Waterfall */
.fontify-waterfall-list {
        display: flex;
        flex-direction: column;
        gap: 0;
}
.fontify-waterfall-item {
        display: grid;
        grid-template-columns: 60px 1fr;
        gap: 16px;
        align-items: baseline;
        padding: 12px 0;
        border-bottom: 1px solid var(--fontify-border);
}
.fontify-waterfall-item:last-child { border-bottom: none; }
.fontify-waterfall-size {
        font-size: .75rem;
        font-weight: 600;
        color: var(--fontify-muted);
        font-family: var(--fontify-font-ui);
}
.fontify-waterfall-text {
        line-height: 1.2;
        color: var(--fontify-fg);
        word-break: break-word;
        overflow-wrap: anywhere;
}

/* Big banner */
.fontify-banner-controls {
        display: flex;
        flex-wrap: wrap;
        gap: 12px;
        margin-bottom: 16px;
        align-items: center;
}
.fontify-banner-controls label {
        display: flex;
        align-items: center;
        gap: 6px;
        font-size: .8125rem;
        color: var(--fontify-muted);
}
.fontify-banner-controls input[type="color"] { width: 40px; height: 32px; padding: 0; border: 1px solid var(--fontify-border); border-radius: 4px; cursor: pointer; }
.fontify-banner-controls select { padding: 6px 10px; border-radius: var(--fontify-radius-sm); border: 1px solid var(--fontify-border); background: var(--fontify-bg); color: var(--fontify-fg); font-size: .875rem; }
.fontify-banner-input {
        width: 100%;
        padding: 12px;
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius-sm);
        font-family: var(--fontify-font-ui);
        font-size: 1rem;
        resize: vertical;
        margin-bottom: 16px;
}
.fontify-banner-output {
        padding: 32px 24px;
        border: 1px solid var(--fontify-border);
        border-radius: var(--fontify-radius);
        line-height: 1;
        overflow: hidden;
        word-break: break-word;
        overflow-wrap: anywhere;
}
.fontify-banner-credit {
        text-align: center;
        margin-top: 16px;
        font-size: .8125rem;
        color: var(--fontify-muted);
}

/* ============================================================
 * DOWNLOAD BUTTONS (with Web Font variant)
 * ============================================================ */
.fontify-download-buttons {
        display: flex;
        gap: 8px;
        flex-wrap: wrap;
}
.fontify-download-buttons .fontify-download-button { flex: 1; }
.fontify-download-button.fontify-download-web {
        background: var(--fontify-bg);
        color: var(--fontify-accent);
        border: 1px solid var(--fontify-accent);
}
.fontify-download-button.fontify-download-web:hover {
        background: var(--fontify-accent);
        color: var(--fontify-accent-fg);
}

/* ============================================================
 * IDENTIFY RESULTS — font details panel
 * ============================================================ */
.fontify-identify-card-hero {
        display: block;
}
.fontify-identify-card-hero-inner {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 16px;
        align-items: start;
}
@media (max-width: 700px) {
        .fontify-identify-card-hero-inner { grid-template-columns: 1fr; }
}
.fontify-identify-card-hero .fic-preview {
        width: 100%;
        aspect-ratio: 4 / 3;
        background: #fafafa;
        border-radius: var(--fontify-radius-sm);
        border: 1px solid var(--fontify-border);
        object-fit: cover;
}
.fontify-identify-card-hero .fic-actions {
        margin-top: 8px;
        display: flex;
        gap: 6px;
        flex-wrap: wrap;
}
.fontify-identify-card-hero .fic-actions .button {
        font-size: .8125rem;
        padding: 4px 12px;
}
.fontify-identify-details {
        font-size: .8125rem;
        margin-top: 12px;
}
.fontify-identify-details dl {
        display: grid;
        grid-template-columns: auto 1fr;
        gap: 4px 12px;
        margin: 0;
}
.fontify-identify-details dt {
        color: var(--fontify-muted);
        font-weight: 500;
}
.fontify-identify-details dd {
        margin: 0;
        font-weight: 600;
        color: var(--fontify-fg);
}
.fontify-identify-card .fic-conf {
        display: inline-block;
        padding: 2px 10px;
        background: #e6f7e8;
        color: #1c7d34;
        border-radius: 100px;
        font-size: .75rem;
        font-weight: 600;
        margin-top: 4px;
}
.fontify-identify-loading-text { font-weight: 500; color: var(--fontify-fg); }

/* Sidebar technical details */
.fontify-side-details dl { margin: 0; font-size: .8125rem; }
.fontify-side-details dt { color: var(--fontify-muted); margin-top: 8px; font-weight: 500; }
.fontify-side-details dt:first-child { margin-top: 0; }
.fontify-side-details dd { margin: 2px 0 0; font-weight: 600; color: var(--fontify-fg); }
.fontify-side-blocks-toggle { margin-top: 16px; }
.fontify-side-blocks-toggle > summary {
        cursor: pointer;
        font-size: .75rem;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: .05em;
        color: var(--fontify-muted);
}
.fontify-side-blocks {
        list-style: none;
        padding: 8px 0 0;
        margin: 0;
        display: flex;
        flex-wrap: wrap;
        gap: 4px;
}
.fontify-side-blocks li {
        font-size: .6875rem;
        padding: 2px 8px;
        background: #f4f4f6;
        border-radius: 100px;
        color: var(--fontify-fg);
}

