/* ==============================
   CSS específico da ferramenta Comparador Diff de Texto e Código
   Prefixo: fj-diff-*
   Design moderno, responsivo e interativo
   ============================== */
/* Variáveis de cores para tema claro */
:root {
--fj-diff-bg-white:#ffffff;
--fj-diff-bg-light:#f8f9fa;
--fj-diff-border:#e9ecef;
--fj-diff-text-primary:#343a40;
--fj-diff-text-secondary:#6c757d;
--fj-diff-add-bg:#f0fff4;
--fj-diff-add-border:#28a745;
--fj-diff-add-lno-bg:#d4edda;
--fj-diff-add-lno-text:#155724;
--fj-diff-del-bg:#fff5f5;
--fj-diff-del-border:#dc3545;
--fj-diff-del-lno-bg:#f8d7da;
--fj-diff-del-lno-text:#721c24;
--fj-diff-changed-bg:#fff3cd;
--fj-diff-changed-border:#ffc107;
--fj-diff-changed-lno-bg:#ffeaa7;
--fj-diff-changed-lno-text:#856404;
--fj-diff-intra-bg:rgba(255,193,7,0.4);
--fj-diff-intra-border:rgba(255,193,7,0.6);
--fj-diff-char-bg:rgba(220,53,69,0.3);
--fj-diff-char-underline:#dc3545;
--fj-diff-hover-bg:#f8f9fa;
--fj-diff-gradient-start:#f8f9fa;
--fj-diff-gradient-end:#e9ecef;
--fj-diff-shadow:rgba(0,0,0,0.08);
--fj-diff-shadow-hover:rgba(0,0,0,0.12);
--fj-diff-shadow-btn:rgba(0,114,188,0.3);
--fj-diff-pulse-bg:#ffc107;
}
/* Variáveis de cores para tema escuro */
[data-theme="dark"] {
--fj-diff-bg-white:#2d2d2d;
--fj-diff-bg-light:#1a1a1a;
--fj-diff-border:#495057;
--fj-diff-text-primary:#e9ecef;
--fj-diff-text-secondary:#adb5bd;
--fj-diff-add-bg:#1a3a1a;
--fj-diff-add-border:#28a745;
--fj-diff-add-lno-bg:#2d4a2d;
--fj-diff-add-lno-text:#a3d9a5;
--fj-diff-del-bg:#3a1a1a;
--fj-diff-del-border:#dc3545;
--fj-diff-del-lno-bg:#4a2d2d;
--fj-diff-del-lno-text:#f5a5a8;
--fj-diff-changed-bg:#3a3a1a;
--fj-diff-changed-border:#ffc107;
--fj-diff-changed-lno-bg:#4a4a2d;
--fj-diff-changed-lno-text:#f5d976;
--fj-diff-intra-bg:rgba(255,193,7,0.25);
--fj-diff-intra-border:rgba(255,193,7,0.4);
--fj-diff-char-bg:rgba(220,53,69,0.25);
--fj-diff-char-underline:#f5a5a8;
--fj-diff-hover-bg:#212121;
--fj-diff-gradient-start:#1a1a1a;
--fj-diff-gradient-end:#2d2d2d;
--fj-diff-shadow:rgba(0,0,0,0.4);
--fj-diff-shadow-hover:rgba(0,0,0,0.6);
--fj-diff-shadow-btn:rgba(0,114,188,0.5);
--fj-diff-pulse-bg:#ffc107;
}
.fj-diff-root{max-width:1200px;margin:0 auto;display:flex;flex-direction:column;gap:24px;}
.fj-diff-container{display:grid;gap:20px;grid-template-columns:1fr;}
@media (min-width:900px){
.fj-diff-container{grid-template-columns:1fr 1fr;}
}
.fj-diff-pane{background:var(--fj-diff-bg-white);border:1px solid var(--fj-diff-border);border-radius:16px;padding:0;box-shadow:0 4px 12px var(--fj-diff-shadow);transition:all 0.3s ease;position:relative;overflow:hidden;}
.fj-diff-pane:hover{transform:translateY(-2px);box-shadow:0 8px 25px var(--fj-diff-shadow-hover);}
.fj-diff-label-row{padding:16px 20px;background:linear-gradient(135deg,var(--fj-diff-gradient-start) 0%,var(--fj-diff-gradient-end) 100%);border-bottom:1px solid var(--fj-diff-border);display:flex;align-items:center;justify-content:space-between;font-weight:600;color:var(--fj-diff-text-primary);}
.fj-diff-label-row label{font-size:1rem;font-weight:600;color:var(--fj-diff-text-primary);display:flex;align-items:center;gap:8px;}
.fj-diff-label-row span{font-size:0.85rem;color:var(--fj-diff-text-secondary);background:var(--fj-diff-bg-white);padding:4px 8px;border-radius:8px;font-weight:500;}
.fj-diff-textarea{width:100%;min-height:240px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;line-height:1.5;padding:16px 20px;border:none;border-radius:0;font-size:0.9rem;background:var(--fj-diff-bg-white);transition:all 0.3s ease;color:var(--fj-diff-text-primary);}
.fj-diff-textarea:focus{outline:none;background:var(--fj-diff-bg-white);}
.fj-diff-textarea::placeholder{color:var(--fj-diff-text-secondary);font-style:italic;}
.fj-diff-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:16px;}
.fj-diff-actions .tool-btn{padding:12px 20px;font-size:0.95rem;display:inline-flex;align-items:center;gap:8px;position:relative;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;}
.fj-diff-status{margin-left:auto;font-style:italic;color:var(--fj-diff-text-secondary);font-size:0.9rem;}
.fj-diff-options{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start;flex-direction:column;padding:16px;background:var(--fj-diff-bg-light);border:1px solid var(--fj-diff-border);border-radius:12px;margin-top:8px;}
.fj-diff-options label{display:flex;align-items:center;gap:8px;font-size:0.9rem;color:var(--fj-diff-text-primary);font-weight:500;cursor:pointer;user-select:none;}
.fj-diff-options select{margin-left:8px;padding:6px 10px;border:1px solid var(--fj-diff-border);border-radius:6px;background:var(--fj-diff-bg-white);color:var(--fj-diff-text-primary);font-size:0.9rem;}
.fj-diff-options select:focus{outline:none;border-color:var(--primary-green);box-shadow:0 0 0 2px rgba(0,166,81,0.1);}
.fj-diff-results{display:grid;gap:20px;grid-template-columns:1fr;margin-top:20px;}
@media (min-width:900px){
.fj-diff-results{grid-template-columns:1fr 1fr;}
}
.fj-diff-result-pane{background:var(--fj-diff-bg-white);border:1px solid var(--fj-diff-border);border-radius:16px;overflow:hidden;box-shadow:0 4px 12px var(--fj-diff-shadow);transition:all 0.3s ease;position:relative;}
.fj-diff-result-pane:hover{transform:translateY(-2px);box-shadow:0 8px 25px var(--fj-diff-shadow-hover);}
.fj-diff-result-header{padding:16px 20px;background:linear-gradient(135deg,var(--fj-diff-gradient-start) 0%,var(--fj-diff-gradient-end) 100%);border-bottom:1px solid var(--fj-diff-border);display:flex;align-items:center;justify-content:space-between;font-weight:600;color:var(--fj-diff-text-primary);}
.fj-diff-result-header span{font-size:0.85rem;color:var(--fj-diff-text-secondary);background:var(--fj-diff-bg-white);padding:4px 8px;border-radius:8px;font-weight:500;}
.fj-diff-result-body{padding:0;max-height:480px;overflow:auto;background:var(--fj-diff-bg-white);}
.fj-diff-result-body::-webkit-scrollbar{width:8px;height:8px;}
.fj-diff-result-body::-webkit-scrollbar-track{background:var(--fj-diff-bg-light);}
.fj-diff-result-body::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--primary-green),var(--primary-blue));border-radius:4px;}
.fj-diff-result-body::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,var(--dark-green),var(--dark-blue));}
/* Sincronização de altura das linhas para alinhamento perfeito */
.fj-diff-line{display:grid;grid-template-columns:auto 1fr;column-gap:12px;padding:8px 12px;border-bottom:1px solid var(--fj-diff-bg-light);align-items:stretch;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;font-size:0.9rem;line-height:1.5;transition:all 0.2s ease;min-height:24px;}
.fj-diff-line .fj-diff-lno{display:flex;align-items:center;justify-content:center;min-height:24px;}
.fj-diff-line .fj-diff-lcontent{display:block;min-height:24px;}
.fj-diff-line:last-child{border-bottom:none;}
.fj-diff-line:hover{background:var(--fj-diff-hover-bg);}
.fj-diff-lno{min-width:3ch;text-align:right;font-variant-numeric:tabular-nums;opacity:0.6;font-weight:500;color:var(--fj-diff-text-secondary);background:var(--fj-diff-bg-light);padding:2px 6px;border-radius:4px;font-size:0.8rem;}
.fj-diff-lcontent{min-width:0;color:var(--fj-diff-text-primary);}
.fj-diff-line-eq{background:var(--fj-diff-bg-white);}
.fj-diff-line-add{background:var(--fj-diff-add-bg);border-left:4px solid var(--fj-diff-add-border);}
.fj-diff-line-add .fj-diff-lno{background:var(--fj-diff-add-lno-bg);color:var(--fj-diff-add-lno-text);}
.fj-diff-line-del{background:var(--fj-diff-del-bg);border-left:4px solid var(--fj-diff-del-border);}
.fj-diff-line-del .fj-diff-lno{background:var(--fj-diff-del-lno-bg);color:var(--fj-diff-del-lno-text);}
.fj-diff-line-changed{background:var(--fj-diff-changed-bg);border-left:4px solid var(--fj-diff-changed-border);}
.fj-diff-line-changed .fj-diff-lno{background:var(--fj-diff-changed-lno-bg);color:var(--fj-diff-changed-lno-text);}
/* Estilo de marca-texto para destaque intra-linha */
.fj-diff-intra{background:rgba(255,193,7,0.6);padding:1px 2px;border-radius:0px;font-weight:normal;border:none;display:inline;margin:0;box-shadow:0 1px 2px rgba(255,235,59,0.2);position:relative;}
.fj-diff-char{background:rgba(255,193,7,0.6);padding:1px 2px;border-radius:0px;font-weight:normal;text-decoration:none;display:inline;margin:0;box-shadow:0 1px 2px rgba(255,193,7,0.3);}
/* Quando há múltiplos destaques contíguos (sem conteúdo entre eles),
   removemos a emenda visual aplicando sobreposição leve e raio ajustado. */
.fj-diff-intra + .fj-diff-intra{margin-left:0px;padding-left:0;border-top-left-radius:0;border-bottom-left-radius:0;}
.fj-diff-intra + .fj-diff-intra .fj-diff-char{border-top-left-radius:0;border-bottom-left-radius:0;}
.fj-diff-line-add .fj-diff-intra + .fj-diff-intra{margin-left:-2px;}
.fj-diff-line-del .fj-diff-intra + .fj-diff-intra{margin-left:-2px;}
/* Cores específicas para linhas adicionadas (verde) */
.fj-diff-line-add .fj-diff-intra{background:linear-gradient(120deg,rgba(40,167,69,0.25) 0%,rgba(40,167,69,0.4) 50%,rgba(40,167,69,0.25) 100%);box-shadow:0 1px 2px rgba(40,167,69,0.2);}
.fj-diff-line-add .fj-diff-char{background:linear-gradient(120deg,rgba(40,167,69,0.3) 0%,rgba(40,167,69,0.5) 50%,rgba(40,167,69,0.3) 100%);box-shadow:0 1px 2px rgba(40,167,69,0.3);}
/* Cores específicas para linhas removidas (vermelho) */
.fj-diff-line-del .fj-diff-intra{background:linear-gradient(120deg,rgba(220,53,69,0.25) 0%,rgba(220,53,69,0.4) 50%,rgba(220,53,69,0.25) 100%);box-shadow:0 1px 2px rgba(220,53,69,0.2);}
.fj-diff-line-del .fj-diff-char{background:linear-gradient(120deg,rgba(220,53,69,0.3) 0%,rgba(220,53,69,0.5) 50%,rgba(220,53,69,0.3) 100%);box-shadow:0 1px 2px rgba(220,53,69,0.3);}
/* Tema escuro - ajustes para melhor contraste */
[data-theme="dark"] .fj-diff-intra{background:rgba(255,235,59,0.35);box-shadow:0 1px 2px rgba(255,235,59,0.15);}
[data-theme="dark"] .fj-diff-char{background:rgba(255,235,59,0.35);box-shadow:0 1px 2px rgba(255,193,7,0.2);}
[data-theme="dark"] .fj-diff-intra + .fj-diff-intra{margin-left:0px;padding-left:0;border-top-left-radius:0;border-bottom-left-radius:0;}
[data-theme="dark"] .fj-diff-line-add .fj-diff-intra{background:linear-gradient(120deg,rgba(40,167,69,0.2) 0%,rgba(40,167,69,0.3) 50%,rgba(40,167,69,0.2) 100%);box-shadow:0 1px 2px rgba(40,167,69,0.15);}
[data-theme="dark"] .fj-diff-line-del .fj-diff-intra{background:linear-gradient(120deg,rgba(220,53,69,0.2) 0%,rgba(220,53,69,0.3) 50%,rgba(220,53,69,0.2) 100%);box-shadow:0 1px 2px rgba(220,53,69,0.15);}
[data-theme="dark"] .fj-diff-line-add .fj-diff-char{background:linear-gradient(120deg,rgba(40,167,69,0.25) 0%,rgba(40,167,69,0.4) 50%,rgba(40,167,69,0.25) 100%);box-shadow:0 1px 2px rgba(40,167,69,0.2);}
[data-theme="dark"] .fj-diff-line-del .fj-diff-char{background:linear-gradient(120deg,rgba(220,53,69,0.25) 0%,rgba(220,53,69,0.4) 50%,rgba(220,53,69,0.25) 100%);box-shadow:0 1px 2px rgba(220,53,69,0.2);}
.fj-diff-navigation{background:linear-gradient(135deg,var(--fj-diff-gradient-start) 0%,var(--fj-diff-gradient-end) 100%);border:1px solid var(--fj-diff-border);border-radius:12px;padding:16px;display:flex;align-items:center;justify-content:center;}
.fj-diff-nav-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap;justify-content:center;}
.fj-diff-nav-controls .nav-btn{padding:10px 16px;border-radius:8px;font-size:0.9rem;display:inline-flex;align-items:center;gap:6px;min-width:120px;justify-content:center;}
.fj-diff-counter{font-weight:700;color:var(--fj-diff-text-primary);background:var(--fj-diff-bg-white);padding:8px 16px;border-radius:8px;border:2px solid var(--primary-blue);font-size:0.9rem;min-width:100px;text-align:center;}
.fj-diff-line-active{border-radius:6px;box-shadow:0 0 0 3px rgba(255,193,7,0.2);position:relative;z-index:10;border:2px solid var(--fj-diff-changed-border)!important;}
.fj-diff-line-eq.fj-diff-line-active{background:var(--fj-diff-changed-bg)!important;}
.fj-diff-line-add.fj-diff-line-active{background:var(--fj-diff-add-bg)!important;border-color:var(--fj-diff-add-border)!important;box-shadow:0 0 0 3px rgba(40,167,69,0.2);}
.fj-diff-line-del.fj-diff-line-active{background:var(--fj-diff-del-bg)!important;border-color:var(--fj-diff-del-border)!important;box-shadow:0 0 0 3px rgba(220,53,69,0.2);}
.fj-diff-line-changed.fj-diff-line-active{background:var(--fj-diff-changed-bg)!important;border-color:var(--fj-diff-changed-border)!important;}
.fj-diff-line-active::before{content:'';position:absolute;left:-8px;top:50%;transform:translateY(-50%);width:4px;height:20px;background:var(--fj-diff-pulse-bg);border-radius:2px;animation:pulse 1.5s ease-in-out infinite;}
.fj-diff-line-add.fj-diff-line-active::before{background:var(--fj-diff-add-border);}
.fj-diff-line-del.fj-diff-line-active::before{background:var(--fj-diff-del-border);}
.fj-diff-line-changed.fj-diff-line-active::before{background:var(--fj-diff-pulse-bg);}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:0.6;}}
.fj-diff-result-body.sync-scroll{overflow-y:auto;overflow-x:hidden;}
@media (max-width:768px){
.fj-diff-root{gap:20px;}
.fj-diff-pane{padding:0;border-radius:12px;}
.fj-diff-result-pane{padding:16px;border-radius:12px;}
.fj-diff-textarea{min-height:180px;padding:12px 16px;font-size:0.9rem;}
.fj-diff-actions{flex-direction:row;align-items:center;gap:12px;}
.fj-diff-actions .tool-btn{width:auto;flex:1;justify-content:center;}
.fj-diff-actions .fj-diff-status{margin-left:auto;width:100%;}
.fj-diff-options{flex-direction:column;align-items:flex-start;gap:12px;}
.fj-diff-line{padding:6px 8px;font-size:0.85rem;}
.fj-diff-lno{font-size:0.75rem;}
.fj-diff-result-header{padding:12px 16px;font-size:0.9rem;}
.fj-diff-result-body{max-height:320px;}
.fj-diff-navigation{padding:12px;}
.fj-diff-nav-controls{flex-direction:row;gap:12px;width:100%;}
.fj-diff-nav-controls .nav-btn{flex:1;width:auto;min-width:auto;}
.fj-diff-counter{order:initial;width:auto;}
}
@media (max-width:480px){
.fj-diff-pane,.fj-diff-result-pane{padding:0;}
.fj-diff-textarea{min-height:140px;padding:10px 12px;}
.fj-diff-actions .tool-btn{padding:10px 16px;font-size:0.9rem;}
.fj-diff-line{grid-template-columns:auto 1fr;column-gap:8px;padding:4px 6px;}
.fj-diff-nav-controls .nav-btn{padding:8px 12px;font-size:0.85rem;gap:4px;}
.fj-diff-counter{padding:6px 12px;font-size:0.85rem;}
}