/*
==========================================================
CryptixGen
style.css
Versão 3.0 — layout compacto + suporte completo a temas
==========================================================
*/

/* ==========================================================
   RESET
========================================================== */

*,
*::before,
*::after{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

html{
    scroll-behavior:smooth;
}

body{
    font-family:Inter,"Segoe UI",sans-serif;
    min-height:100vh;
    background:var(--bg-gradient);
    color:var(--text);
    display:flex;
    justify-content:center;
    align-items:flex-start;
    padding:28px 16px;
}

/* ==========================================================
   SCROLLBAR
========================================================== */

::-webkit-scrollbar{
    width:10px;
}

::-webkit-scrollbar-track{
    background:transparent;
}

::-webkit-scrollbar-thumb{
    background:var(--border);
    border-radius:20px;
}

::-webkit-scrollbar-thumb:hover{
    background:var(--primary);
}

/* ==========================================================
   VARIÁVEIS BASE (o tema real é definido em dark.css/light.css)
========================================================== */

:root{
    --radius:16px;
    --radius-sm:12px;
    --transition:.2s ease;
}

/* ==========================================================
   CONTAINER
========================================================== */

.container{
    width:100%;
    max-width:600px;
    background:var(--card);
    border-radius:24px;
    border:1px solid var(--border);
    padding:28px;
    box-shadow:var(--shadow);
    animation:fadeIn .4s ease;
}

/* ==========================================================
   HEADER
========================================================== */

.header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    margin-bottom:22px;
}

.header-brand{
    display:flex;
    align-items:center;
    gap:12px;
}

.logo{
    width:44px;
    height:44px;
    flex-shrink:0;
}

.header h1{
    font-size:1.4rem;
    font-weight:800;
    color:var(--primary);
    line-height:1.1;
}

.header p{
    margin-top:2px;
    color:var(--text-secondary);
    font-size:.8rem;
}

.theme-toggle-btn{
    width:42px;
    height:42px;
    flex-shrink:0;
    border:1px solid var(--border);
    border-radius:50%;
    background:var(--card-2);
    color:var(--text);
    font-size:1.1rem;
    cursor:pointer;
    transition:var(--transition);
    display:flex;
    align-items:center;
    justify-content:center;
}

.theme-toggle-btn:hover{
    border-color:var(--primary);
    transform:translateY(-1px);
}

/* ==========================================================
   TÍTULOS DE SEÇÃO
========================================================== */

.section-title{
    display:block;
    font-size:.72rem;
    font-weight:700;
    letter-spacing:.08em;
    text-transform:uppercase;
    color:var(--text-secondary);
    margin-bottom:10px;
}

h2, h3{
    color:var(--text);
}

/* ==========================================================
   PASSWORD SECTION
========================================================== */

.password-section{
    margin-top:6px;
}

.password-container{
    display:flex;
    gap:10px;
    align-items:center;
}

#password-display{
    flex:1;
    width:100%;
    border:1px solid var(--border);
    outline:none;
    background:var(--card-2);
    color:var(--text);
    padding:16px 18px;
    border-radius:var(--radius-sm);
    font-size:1.05rem;
    font-family:"JetBrains Mono",Consolas,monospace;
    transition:var(--transition);
}

#password-display::placeholder{
    color:var(--text-secondary);
}

#password-display:focus{
    border-color:var(--primary);
}

#copy-btn{
    width:52px;
    height:52px;
    flex-shrink:0;
    border:none;
    border-radius:var(--radius-sm);
    background:var(--primary);
    color:#fff;
    font-size:1.05rem;
    cursor:pointer;
    transition:var(--transition);
}

#copy-btn:hover{
    background:var(--primary-dark);
    transform:translateY(-2px);
}

/* ==========================================================
   STRENGTH + ENTROPIA (compacto)
========================================================== */

.strength-wrapper{
    margin-top:16px;
}

.strength-header{
    display:flex;
    justify-content:space-between;
    align-items:center;
    margin-bottom:8px;
    font-size:.85rem;
}

.strength-header span:first-child{
    font-weight:600;
    color:var(--text-secondary);
}

#strength-text{
    font-weight:700;
    color:var(--text-secondary);
}

.strength-bar{
    width:100%;
    height:9px;
    background:var(--card-2);
    border-radius:999px;
    overflow:hidden;
    border:1px solid var(--border);
}

#strength-bar{
    width:0%;
    height:100%;
    background:var(--danger);
    border-radius:999px;
    transition:width .4s ease, background .4s ease;
}

.entropy-inline{
    margin-top:8px;
    font-size:.78rem;
    color:var(--text-secondary);
    display:flex;
    gap:6px;
    flex-wrap:wrap;
}

.entropy-dot{
    opacity:.5;
}

/* ==========================================================
   BOTÕES DE AÇÃO
========================================================== */

.button-area{
    display:flex;
    gap:10px;
    margin-top:18px;
}

.button-area button{
    flex:1;
}

.primary-button,
.secondary-button,
.danger-button{
    border:none;
    border-radius:var(--radius-sm);
    padding:14px;
    font-size:.92rem;
    font-weight:700;
    cursor:pointer;
    transition:var(--transition);
}

.primary-button{
    background:var(--primary);
    color:#fff;
}

.primary-button:hover{
    background:var(--primary-dark);
    transform:translateY(-2px);
}

.secondary-button{
    background:var(--card-2);
    color:var(--text);
    border:1px solid var(--border);
}

.secondary-button:hover{
    border-color:var(--primary);
    transform:translateY(-2px);
}

.danger-button{
    background:transparent;
    color:var(--danger);
    border:1px solid var(--danger);
    padding:10px 16px;
    font-size:.8rem;
}

.danger-button:hover{
    background:var(--danger);
    color:#fff;
}

/* ==========================================================
   PAINÉIS RECOLHÍVEIS (details/summary)
========================================================== */

.panel{
    margin-top:12px;
    border:1px solid var(--border);
    border-radius:var(--radius-sm);
    background:var(--card-2);
    overflow:hidden;
}

.panel summary{
    list-style:none;
    cursor:pointer;
    padding:14px 16px;
    font-size:.88rem;
    font-weight:600;
    color:var(--text);
    display:flex;
    align-items:center;
    justify-content:space-between;
    transition:var(--transition);
}

.panel summary::-webkit-details-marker{
    display:none;
}

.panel summary::after{
    content:"▾";
    color:var(--text-secondary);
    transition:transform .2s ease;
    margin-left:8px;
}

.panel[open] summary::after{
    transform:rotate(180deg);
}

.panel summary:hover{
    color:var(--primary);
}

.panel[open] summary{
    border-bottom:1px solid var(--border);
}

.panel-content{
    padding:16px;
    animation:fadeIn .25s ease;
}

/* ==========================================================
   CONFIGURAÇÕES (slider, inputs)
========================================================== */

.setting{
    margin-bottom:14px;
}

.setting label{
    display:flex;
    justify-content:space-between;
    font-size:.82rem;
    font-weight:600;
    color:var(--text-secondary);
    margin-bottom:8px;
}

.setting label span{
    color:var(--primary);
    font-weight:700;
}

input[type="range"]{
    width:100%;
    accent-color:var(--primary);
    cursor:pointer;
}

input[type="text"],
input[type="number"]{
    width:100%;
    padding:10px 12px;
    border-radius:10px;
    border:1px solid var(--border);
    background:var(--card);
    color:var(--text);
    font-size:.9rem;
}

input[type="text"]:focus,
input[type="number"]:focus{
    outline:none;
    border-color:var(--primary);
}

.passphrase-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:14px;
    margin-bottom:14px;
}

/* ==========================================================
   OPÇÕES (checkboxes)
========================================================== */

.options-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
}

.option-card{
    display:flex;
    align-items:center;
    gap:9px;
    padding:10px 12px;
    border-radius:10px;
    border:1px solid var(--border);
    background:var(--card);
    font-size:.8rem;
    color:var(--text);
    cursor:pointer;
    transition:var(--transition);
}

.option-card:hover{
    border-color:var(--primary);
}

.option-card input{
    accent-color:var(--primary);
    width:16px;
    height:16px;
    flex-shrink:0;
    cursor:pointer;
}

/* ==========================================================
   CHECKLIST
========================================================== */

.checklist{
    list-style:none;
    display:flex;
    flex-direction:column;
    gap:8px;
}

.checklist li{
    font-size:.85rem;
    color:var(--text-secondary);
    padding:8px 10px;
    border-radius:8px;
    background:var(--card);
    border:1px solid var(--border);
}

.checklist li.check-ok{
    color:var(--success);
    border-color:var(--success);
}

.checklist li.check-error{
    color:var(--danger);
    border-color:var(--danger);
}

/* ==========================================================
   HISTÓRICO
========================================================== */

.history-header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    flex-wrap:wrap;
    margin-bottom:10px;
}

.stats-inline{
    display:flex;
    gap:14px;
    font-size:.78rem;
    color:var(--text-secondary);
}

.stats-inline strong{
    color:var(--primary);
}

.history-description{
    font-size:.75rem;
    color:var(--text-secondary);
    margin-bottom:12px;
}

.history-list{
    list-style:none;
    display:flex;
    flex-direction:column;
    gap:8px;
    max-height:260px;
    overflow-y:auto;
}

.history-empty{
    text-align:center;
    color:var(--text-secondary);
    font-size:.82rem;
    padding:16px 0;
}

.history-item{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:10px 12px;
    border-radius:10px;
    border:1px solid var(--border);
    background:var(--card);
}

.history-content{
    display:flex;
    flex-direction:column;
    gap:2px;
    min-width:0;
}

.history-password{
    font-family:"JetBrains Mono",Consolas,monospace;
    font-size:.82rem;
    color:var(--text);
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}

.history-content small{
    color:var(--text-secondary);
    font-size:.68rem;
    text-transform:uppercase;
    letter-spacing:.04em;
}

.history-actions{
    display:flex;
    gap:6px;
    flex-shrink:0;
}

.history-actions button{
    width:30px;
    height:30px;
    border:1px solid var(--border);
    border-radius:8px;
    background:var(--card-2);
    cursor:pointer;
    font-size:.85rem;
    color:var(--text);
    transition:var(--transition);
}

.history-actions button:hover{
    border-color:var(--primary);
}

/* ==========================================================
   FOOTER
========================================================== */

.footer{
    margin-top:20px;
    text-align:center;
    color:var(--text-secondary);
    font-size:.75rem;
}

/* ==========================================================
   TOAST
========================================================== */

.toast{
    position:fixed;
    top:-100px;
    left:50%;
    transform:translateX(-50%);
    background:var(--success);
    color:#fff;
    padding:14px 26px;
    border-radius:50px;
    font-weight:600;
    font-size:.9rem;
    box-shadow:0 15px 35px rgba(0,0,0,.35);
    transition:top .4s ease;
    z-index:99999;
}

.toast.show{
    top:20px;
}

/* ==========================================================
   ANIMAÇÕES
========================================================== */

@keyframes fadeIn{
    from{ opacity:0; transform:translateY(12px); }
    to{ opacity:1; transform:none; }
}

@keyframes fadeOut{
    from{ opacity:1; }
    to{ opacity:0; }
}

@keyframes pulse{
    0%{ transform:scale(.99); }
    50%{ transform:scale(1.01); }
    100%{ transform:scale(1); }
}

@keyframes shake{
    0%, 100%{ transform:translateX(0); }
    20%, 60%{ transform:translateX(-6px); }
    40%, 80%{ transform:translateX(6px); }
}

@keyframes bounce{
    0%, 100%{ transform:translateY(0); }
    50%{ transform:translateY(-6px); }
}

.pulse{
    animation:pulse .3s ease;
}

.shake{
    animation:shake .35s ease;
}

.fade-in{
    animation:fadeIn .3s ease;
}

.fade-out{
    animation:fadeOut .3s ease;
}

.bounce{
    animation:bounce .4s ease;
}

.highlight{
    outline:2px solid var(--primary);
    outline-offset:2px;
}

/* ==========================================================
   RESPONSIVO
========================================================== */

@media (max-width:480px){

    body{
        padding:14px 10px;
    }

    .container{
        padding:20px;
        border-radius:18px;
    }

    .options-grid,
    .passphrase-grid{
        grid-template-columns:1fr;
    }

    .header h1{
        font-size:1.2rem;
    }

}
