/* =============================================================================
   Fancy Text Generator / Instagram Font Generator
   All classes prefixed: ftg-
   ============================================================================= */

/* =============================================================================
   1. Page Wrapper
   ============================================================================= */

.ftg-wrap {
    max-width: 1200px;
    margin: 0 auto;
    padding: var(--space-4);
}

/* =============================================================================
   2. Input Section
   ============================================================================= */

.ftg-input-section {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: var(--space-4);
    margin-bottom: var(--space-4);
}

.ftg-input-header {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--space-2);
}

.ftg-input-label {
    font-size: var(--text-sm);
    color: var(--color-text-muted);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.ftg-input-meta {
    display: flex;
    gap: var(--space-3);
    align-items: center;
}

#ftg-char-count {
    font-size: var(--text-sm);
    color: var(--color-text-muted);
}

.ftg-platform-wrap {
    display: flex;
    gap: var(--space-2);
    align-items: center;
}

#ftg-platform-sel {
    font-size: var(--text-xs);
    padding: 2px 6px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background: var(--color-surface-alt);
    color: var(--color-text);
    cursor: pointer;
}

#ftg-platform-counter {
    font-size: var(--text-sm);
    font-weight: 600;
    color: var(--color-text-muted);
    transition: color 150ms ease;
}

#ftg-platform-counter.ftg-counter--warn {
    color: var(--color-warning);
}

#ftg-platform-counter.ftg-counter--danger {
    color: var(--color-error);
}

#ftg-input {
    width: 100%;
    min-height: 100px;
    font-size: var(--text-lg);
    font-family: inherit;
    border: 2px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: var(--space-3);
    background: var(--color-surface);
    color: var(--color-text);
    resize: vertical;
    box-sizing: border-box;
    transition: border-color 150ms ease, box-shadow 150ms ease;
}

#ftg-input:focus {
    border-color: var(--color-accent);
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}

.ftg-input-footer {
    display: flex;
    gap: var(--space-2);
    justify-content: flex-end;
    margin-top: var(--space-2);
}

#ftg-clear-btn {
    font-size: var(--text-xs);
    padding: 4px 12px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--color-text-muted);
    cursor: pointer;
    transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
}

#ftg-clear-btn:hover {
    background: var(--color-surface-alt);
    color: var(--color-text);
    border-color: var(--color-text-muted);
}

/* =============================================================================
   3. Toolbar
   ============================================================================= */

.ftg-toolbar {
    display: flex;
    flex-direction: row;
    gap: var(--space-2);
    align-items: center;
    flex-wrap: wrap;
    margin-bottom: var(--space-3);
}

#ftg-search {
    flex-grow: 1;
    padding: var(--space-2) var(--space-3);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-surface);
    color: var(--color-text);
    font-size: var(--text-sm);
    font-family: inherit;
    transition: border-color 150ms ease, box-shadow 150ms ease;
}

#ftg-search:focus {
    border-color: var(--color-accent);
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}

.ftg-category-btn {
    font-size: var(--text-xs);
    padding: 4px 12px;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    background: transparent;
    color: var(--color-text-muted);
    cursor: pointer;
    transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
    white-space: nowrap;
}

.ftg-category-btn.active,
.ftg-category-btn:hover {
    background: var(--color-accent);
    border-color: var(--color-accent);
    color: #fff;
}

/* =============================================================================
   4. Font Cards Grid
   ============================================================================= */

#ftg-results {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: var(--space-3);
}

.ftg-card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: var(--space-3);
    transition: border-color 150ms ease, box-shadow 150ms ease;
    cursor: default;
}

.ftg-card:hover {
    border-color: var(--color-accent);
    box-shadow: var(--shadow-sm);
}

.ftg-card--hidden {
    display: none;
}

.ftg-card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--space-2);
}

.ftg-card-name {
    font-size: var(--text-xs);
    font-weight: 600;
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.ftg-card-actions {
    display: flex;
    gap: var(--space-1);
    align-items: center;
}

.ftg-fav-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: none;
    background: transparent;
    color: var(--color-text-muted);
    cursor: pointer;
    border-radius: var(--radius-sm);
    transition: color 150ms ease;
    padding: 0;
}

.ftg-fav-btn:hover {
    color: #EC4899;
}

.ftg-fav-btn.active {
    color: #EC4899;
}

.ftg-copy-btn {
    font-size: var(--text-xs);
    padding: 3px 10px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--color-text-muted);
    cursor: pointer;
    transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
}

.ftg-copy-btn:hover {
    background: var(--color-accent);
    color: #fff;
    border-color: var(--color-accent);
}

.ftg-card-text {
    font-size: var(--text-lg);
    line-height: 1.4;
    min-height: 2em;
    word-break: break-all;
    color: var(--color-text);
    margin-bottom: var(--space-2);
}

.ftg-card-compat {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
}

.ftg-compat-ig,
.ftg-compat-tw,
.ftg-compat-dc {
    font-size: 10px;
    padding: 1px 6px;
    border-radius: 999px;
    font-weight: 700;
}

/* Compat badge states — light mode defaults */
.ftg-compat-ig.compat-ok,
.ftg-compat-tw.compat-ok,
.ftg-compat-dc.compat-ok {
    background: #DCFCE7;
    color: #166534;
}

.ftg-compat-ig.compat-warn,
.ftg-compat-tw.compat-warn,
.ftg-compat-dc.compat-warn {
    background: #FEF9C3;
    color: #854D0E;
}

.ftg-compat-ig.compat-bad,
.ftg-compat-tw.compat-bad,
.ftg-compat-dc.compat-bad {
    background: #FEE2E2;
    color: #991B1B;
}

.ftg-load-more {
    display: block;
    margin: var(--space-4) auto 0;
    padding: var(--space-2) var(--space-6);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-surface);
    color: var(--color-text);
    cursor: pointer;
    font-size: var(--text-sm);
    font-family: inherit;
    transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
}

.ftg-load-more:hover {
    background: var(--color-accent);
    color: #fff;
    border-color: var(--color-accent);
}

/* =============================================================================
   5. Empty State
   ============================================================================= */

.ftg-empty-state {
    text-align: center;
    padding: var(--space-8);
    color: var(--color-text-muted);
}

.ftg-empty-icon {
    font-size: 3rem;
    display: block;
    margin-bottom: var(--space-3);
}

.ftg-empty-title {
    font-size: var(--text-lg);
    font-weight: 600;
    margin-bottom: var(--space-2);
    margin-top: 0;
}

/* =============================================================================
   6. Tab System
   ============================================================================= */

.ftg-tabs {
    /* Container for tab nav + panels */
}

.ftg-tab-nav {
    display: flex;
    border-bottom: 1px solid var(--color-border);
    gap: 0;
    margin-bottom: var(--space-4);
    overflow-x: auto;
    scrollbar-width: thin;
}

.ftg-tab-btn {
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-sm);
    font-family: inherit;
    border: none;
    border-bottom: 2px solid transparent;
    background: transparent;
    color: var(--color-text-muted);
    cursor: pointer;
    white-space: nowrap;
    transition: color 150ms ease, border-bottom-color 150ms ease;
    flex-shrink: 0;
}

.ftg-tab-btn:hover {
    color: var(--color-text);
}

.ftg-tab-btn.active {
    color: var(--color-accent);
    border-bottom-color: var(--color-accent);
}

.ftg-tab-panel {
    display: none;
}

.ftg-tab-panel.active {
    display: block;
}

/* =============================================================================
   7. Social Media Preview Tab
   ============================================================================= */

.ftg-preview-controls {
    display: flex;
    flex-direction: row;
    gap: var(--space-3);
    align-items: center;
    flex-wrap: wrap;
    margin-bottom: var(--space-4);
}

#ftg-preview-platform,
#ftg-preview-font-sel {
    font-size: var(--text-xs);
    padding: 2px 6px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background: var(--color-surface-alt);
    color: var(--color-text);
    cursor: pointer;
}

/* iPhone-style mockup frame */
.ftg-mockup {
    max-width: 360px;
    margin: 0 auto;
    border-radius: 36px;
    border: 8px solid #94A3B8;
    background: var(--color-surface);
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
}

.ftg-mockup-statusbar {
    height: 24px;
    background: #0F172A;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 4px 16px;
    font-size: 10px;
    color: #94A3B8;
}

.ftg-mockup-content {
    padding: var(--space-4);
}

/* --- Instagram bio mockup --- */

.ftg-ig-header {
    display: flex;
    gap: var(--space-3);
    align-items: center;
    margin-bottom: var(--space-3);
}

.ftg-ig-avatar {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: linear-gradient(45deg, #F59E0B, #EC4899, #8B5CF6);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 1.5rem;
    font-weight: 700;
    flex-shrink: 0;
}

.ftg-ig-username {
    font-weight: 700;
    font-size: var(--text-sm);
    color: var(--color-text);
}

.ftg-ig-handle {
    color: var(--color-text-muted);
    font-size: var(--text-xs);
}

.ftg-ig-stats {
    display: flex;
    gap: var(--space-4);
    margin-bottom: var(--space-3);
}

.ftg-ig-stat {
    text-align: center;
}

.ftg-ig-stat-num {
    font-weight: 700;
    font-size: var(--text-sm);
    color: var(--color-text);
    display: block;
}

.ftg-ig-stat-label {
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    display: block;
}

.ftg-ig-bio {
    font-size: var(--text-sm);
    line-height: 1.6;
    word-break: break-word;
    white-space: pre-wrap;
    min-height: 2em;
    color: var(--color-text);
}

/* --- Twitter/X mockup --- */

.ftg-tw-header {
    display: flex;
    gap: var(--space-2);
    align-items: center;
    margin-bottom: var(--space-2);
}

.ftg-tw-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: #1D4ED8;
    flex-shrink: 0;
}

.ftg-tw-name {
    font-weight: 700;
    font-size: var(--text-sm);
    color: var(--color-text);
}

.ftg-tw-handle {
    color: var(--color-text-muted);
    font-size: var(--text-xs);
}

.ftg-tw-text {
    font-size: var(--text-sm);
    line-height: 1.6;
    margin-bottom: var(--space-3);
    color: var(--color-text);
    word-break: break-word;
    white-space: pre-wrap;
}

.ftg-tw-actions {
    display: flex;
    gap: var(--space-4);
    color: var(--color-text-muted);
    font-size: var(--text-xs);
}

/* --- WhatsApp mockup --- */

.ftg-wa-bubble {
    background: #005C4B;
    border-radius: 8px 8px 0 8px;
    padding: var(--space-2) var(--space-3);
    max-width: 80%;
    margin-left: auto;
    font-size: var(--text-sm);
    line-height: 1.5;
    color: #fff;
    word-break: break-word;
    white-space: pre-wrap;
}

.ftg-wa-time {
    font-size: 10px;
    color: rgba(255, 255, 255, 0.6);
    text-align: right;
    margin-top: 2px;
}

/* =============================================================================
   8. Mix & Match Tab
   ============================================================================= */

.ftg-mm-input {
    width: 100%;
    min-height: 80px;
    font-size: var(--text-base);
    font-family: inherit;
    border: 2px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: var(--space-3);
    background: var(--color-surface);
    color: var(--color-text);
    resize: vertical;
    box-sizing: border-box;
    margin-bottom: var(--space-3);
    transition: border-color 150ms ease, box-shadow 150ms ease;
}

.ftg-mm-input:focus {
    border-color: var(--color-accent);
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}

.ftg-mm-words {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    padding: var(--space-3);
    min-height: 60px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    margin-bottom: var(--space-3);
    background: var(--color-surface);
}

.ftg-mm-word {
    position: relative;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    padding: 4px 12px;
    border-radius: 999px;
    background: var(--color-surface-alt);
    border: 1px solid var(--color-border);
    cursor: pointer;
    font-size: var(--text-sm);
    color: var(--color-text);
    transition: border-color 150ms ease, background 150ms ease;
    user-select: none;
}

.ftg-mm-word:hover {
    border-color: var(--color-accent);
}

.ftg-mm-word.assigned {
    border-color: var(--color-accent);
    background: rgba(59, 130, 246, 0.1);
}

.ftg-mm-word-font {
    font-size: 9px;
    color: var(--color-accent);
    line-height: 1;
    margin-top: 1px;
}

.ftg-mm-result {
    font-size: var(--text-xl);
    min-height: 3em;
    padding: var(--space-3);
    background: var(--color-surface-alt);
    border-radius: var(--radius-md);
    word-break: break-all;
    margin-bottom: var(--space-3);
    color: var(--color-text);
    line-height: 1.4;
}

.ftg-mm-font-picker {
    position: absolute;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);
    max-height: 200px;
    overflow-y: auto;
    z-index: 100;
    min-width: 200px;
}

.ftg-mm-font-option {
    padding: var(--space-2);
    cursor: pointer;
    font-size: var(--text-sm);
    color: var(--color-text);
    transition: background 100ms ease;
}

.ftg-mm-font-option:hover {
    background: var(--color-surface-alt);
}

/* =============================================================================
   9. Decorator Tab
   ============================================================================= */

.ftg-dec-preview {
    font-size: var(--text-2xl);
    text-align: center;
    padding: var(--space-4);
    background: var(--color-surface-alt);
    border-radius: var(--radius-md);
    min-height: 80px;
    word-break: break-all;
    margin-bottom: var(--space-3);
    color: var(--color-text);
    line-height: 1.3;
    display: flex;
    align-items: center;
    justify-content: center;
}

.ftg-dec-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: var(--space-2);
    margin-bottom: var(--space-4);
}

.ftg-dec-btn {
    padding: var(--space-2);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-surface);
    cursor: pointer;
    font-size: var(--text-sm);
    font-family: inherit;
    color: var(--color-text);
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: border-color 150ms ease, background 150ms ease;
}

.ftg-dec-btn:hover,
.ftg-dec-btn:active {
    border-color: var(--color-accent);
    background: rgba(59, 130, 246, 0.08);
}

.ftg-dec-btn.selected {
    border-color: var(--color-accent);
    background: rgba(59, 130, 246, 0.12);
}

.ftg-dec-custom {
    display: flex;
    gap: var(--space-2);
    align-items: center;
    margin-bottom: var(--space-3);
}

.ftg-dec-custom input {
    flex-grow: 1;
    font-size: var(--text-sm);
    font-family: inherit;
    padding: var(--space-2);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background: var(--color-surface);
    color: var(--color-text);
    transition: border-color 150ms ease;
}

.ftg-dec-custom input:focus {
    border-color: var(--color-accent);
    outline: none;
}

/* =============================================================================
   10. Effects Tab
   ============================================================================= */

.ftg-fx-controls {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3);
    margin-bottom: var(--space-4);
    align-items: center;
}

/* Toggle switch */
.ftg-fx-toggle {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    cursor: pointer;
    font-size: var(--text-sm);
    color: var(--color-text);
    user-select: none;
}

.ftg-fx-toggle input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}

.ftg-fx-toggle .ftg-toggle-track {
    display: inline-block;
    width: 36px;
    height: 20px;
    border-radius: 999px;
    background: var(--color-border);
    position: relative;
    transition: background 150ms ease;
    flex-shrink: 0;
}

.ftg-fx-toggle .ftg-toggle-track::after {
    content: '';
    position: absolute;
    top: 2px;
    left: 2px;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #fff;
    transition: transform 150ms ease;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}

.ftg-fx-toggle input[type="checkbox"]:checked + .ftg-toggle-track {
    background: var(--color-accent);
}

.ftg-fx-toggle input[type="checkbox"]:checked + .ftg-toggle-track::after {
    transform: translateX(16px);
}

.ftg-fx-preview {
    font-size: var(--text-2xl);
    text-align: center;
    padding: var(--space-4);
    background: var(--color-surface-alt);
    border-radius: var(--radius-md);
    min-height: 80px;
    word-break: break-all;
    margin-bottom: var(--space-3);
    color: var(--color-text);
    line-height: 1.3;
    display: flex;
    align-items: center;
    justify-content: center;
}

.ftg-zalgo-ctrl {
    display: flex;
    gap: var(--space-2);
    align-items: center;
    font-size: var(--text-sm);
    color: var(--color-text);
}

.ftg-zalgo-ctrl input[type="range"] {
    cursor: pointer;
    accent-color: var(--color-accent);
}

/* =============================================================================
   11. Font Detector Tab
   ============================================================================= */

.ftg-detect-wrap {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.ftg-detect-input {
    width: 100%;
    min-height: 80px;
    font-size: var(--text-base);
    font-family: inherit;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: var(--space-3);
    background: var(--color-surface);
    color: var(--color-text);
    resize: vertical;
    box-sizing: border-box;
    transition: border-color 150ms ease, box-shadow 150ms ease;
}

.ftg-detect-input:focus {
    border-color: var(--color-accent);
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}

.ftg-detect-result {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: var(--space-4);
    box-shadow: var(--shadow-sm);
}

.ftg-detect-name {
    font-size: var(--text-xl);
    font-weight: 700;
    color: var(--color-accent);
    margin-bottom: var(--space-2);
}

.ftg-detect-sample {
    font-size: var(--text-2xl);
    line-height: 1.3;
    margin-bottom: var(--space-2);
    color: var(--color-text);
    word-break: break-all;
}

.ftg-detect-orig {
    font-size: var(--text-xs);
    color: var(--color-text-muted);
}

/* =============================================================================
   12. Favorites Tab
   ============================================================================= */

.ftg-favs-list {
    display: flex;
    flex-direction: column;
}

.ftg-fav-item {
    display: flex;
    gap: var(--space-3);
    align-items: center;
    padding: var(--space-3);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-surface);
    margin-bottom: var(--space-2);
    transition: border-color 150ms ease;
}

.ftg-fav-item:hover {
    border-color: var(--color-accent);
}

.ftg-fav-text {
    font-size: var(--text-lg);
    flex-grow: 1;
    word-break: break-all;
    color: var(--color-text);
}

.ftg-fav-label {
    font-size: var(--text-xs);
    color: var(--color-text-muted);
    white-space: nowrap;
}

.ftg-fav-actions {
    display: flex;
    gap: var(--space-2);
    flex-shrink: 0;
}

/* =============================================================================
   13. Dark Mode Overrides
   ============================================================================= */

[data-theme="dark"] .ftg-mockup {
    border-color: #1E293B;
}

[data-theme="dark"] .ftg-mockup-statusbar {
    background: #0F172A;
}

[data-theme="dark"] .ftg-wa-bubble {
    background: #005C4B;
}

/* Compat badge colors — dark mode */
[data-theme="dark"] .ftg-compat-ig.compat-ok,
[data-theme="dark"] .ftg-compat-tw.compat-ok,
[data-theme="dark"] .ftg-compat-dc.compat-ok {
    background: #052E16;
    color: #4ADE80;
}

[data-theme="dark"] .ftg-compat-ig.compat-warn,
[data-theme="dark"] .ftg-compat-tw.compat-warn,
[data-theme="dark"] .ftg-compat-dc.compat-warn {
    background: #1C1209;
    color: #FBBF24;
}

[data-theme="dark"] .ftg-compat-ig.compat-bad,
[data-theme="dark"] .ftg-compat-tw.compat-bad,
[data-theme="dark"] .ftg-compat-dc.compat-bad {
    background: #450A0A;
    color: #F87171;
}

/* =============================================================================
   14. Responsive — max-width 768px
   ============================================================================= */

@media (max-width: 768px) {
    .ftg-wrap {
        padding: var(--space-3);
    }

    .ftg-input-section {
        padding: var(--space-3);
    }

    #ftg-results {
        grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    }

    .ftg-tab-nav {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }

    .ftg-tab-nav::-webkit-scrollbar {
        display: none;
    }

    .ftg-mockup {
        max-width: 100%;
        border-radius: 24px;
    }

    .ftg-mm-words {
        gap: var(--space-1);
    }

    .ftg-input-header {
        flex-wrap: wrap;
        gap: var(--space-2);
    }

    .ftg-input-meta {
        flex-wrap: wrap;
        gap: var(--space-2);
    }

    .ftg-preview-controls {
        gap: var(--space-2);
    }

    .ftg-dec-grid {
        grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    }

    .ftg-ig-stats {
        gap: var(--space-3);
    }
}
