:root{
    --blue:#2563eb;
    --green:#16a34a;
    --yellow:#f59e0b;
    --red:#dc2626;
    --gray:#64748b;
    --purple:#7c3aed;
    --bg:#f1f5f9;
    --card:#ffffff;
    --border:#e2e8f0;
    --text:#0f172a;
}

*{box-sizing:border-box}

html,body{min-height:100%}

body{
    margin:0;
    font-family:Inter,Segoe UI,Arial,sans-serif;
    background:var(--bg);
    color:var(--text);
}

.guest-layout{
    background:linear-gradient(180deg,#eff6ff 0%,#f8fafc 100%);
}

.sidebar{
    position:fixed;
    inset:0 auto 0 0;
    width:260px;
    overflow-y:auto;
    background:#0f172a;
    color:#fff;
    padding:22px;
}

.sidebar h2{margin:0}
.sidebar small{color:#cbd5e1}

.sidebar nav{
    display:grid;
    gap:8px;
    margin-top:24px;
}

.sidebar a{
    color:#e2e8f0;
    text-decoration:none;
    padding:11px 12px;
    border-radius:10px;
}

.sidebar a:hover{background:#1e293b}

.main{min-height:100vh}
.main--with-sidebar{margin-left:260px}
.main--guest{margin-left:0}

.top{
    min-height:72px;
    background:#fff;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    padding:16px 28px;
    border-bottom:1px solid var(--border);
}

.top h1{
    margin:0;
    font-size:24px;
}

.content{padding:24px}

.content--guest{
    min-height:100vh;
    display:grid;
    place-items:center;
    padding:24px;
}

.card{
    background:var(--card);
    border-radius:18px;
    padding:20px;
    box-shadow:0 8px 25px rgba(15,23,42,.07);
    margin-bottom:18px;
}

.grid{display:grid;gap:16px}
.cards{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}

.page-head{
    display:flex;
    gap:16px;
    justify-content:space-between;
    align-items:flex-start;
    margin-bottom:16px;
}

.hint{
    color:#64748b;
    margin:4px 0 0;
}

.nested-card{
    border:1px solid var(--border);
    box-shadow:none;
}

.form-grid{
    display:grid;
    gap:16px;
}

.form-grid.cols-3{
    grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
}

.check-grid{
    display:flex;
    flex-wrap:wrap;
    gap:16px;
    margin:16px 0;
}

.check-inline{
    display:flex;
    align-items:center;
    gap:8px;
    margin:0;
    font-weight:600;
}

.check-inline input{
    width:auto;
    margin:0;
}

.form-actions{
    display:flex;
    gap:10px;
    flex-wrap:wrap;
    margin-top:16px;
}

.table-actions{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
}

.table-actions form{
    margin:0;
}

.manual-search-box{
    border:1px solid var(--border);
    border-radius:16px;
    padding:16px;
    margin:16px 0 22px;
    background:#f8fafc;
}

.manual-send-check{
    align-self:end;
    padding:11px 0;
}

.student-picker{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
    gap:10px;
    margin-top:16px;
    max-height:360px;
    overflow:auto;
    padding-right:6px;
}

.student-option{
    display:flex;
    gap:10px;
    align-items:flex-start;
    border:1px solid var(--border);
    border-radius:12px;
    padding:10px;
    margin:0;
    background:#fff;
}

.student-option input{
    width:auto;
    margin-top:3px;
}

.student-option small{
    display:block;
    color:#64748b;
    margin-top:3px;
}

.card h1,.card h2{margin:.25rem 0}

label{
    display:block;
    margin:12px 0;
    font-weight:600;
}

input,select{
    width:100%;
    padding:11px;
    border:1px solid #cbd5e1;
    border-radius:10px;
    margin-top:6px;
    background:#fff;
}

textarea{
    width:100%;
    padding:11px;
    border:1px solid #cbd5e1;
    border-radius:10px;
    margin-top:6px;
    background:#fff;
    resize:vertical;
}

.btn,button{
    border:0;
    border-radius:10px;
    padding:10px 14px;
    background:var(--blue);
    color:#fff;
    text-decoration:none;
    display:inline-block;
    cursor:pointer;
}

.btn.small{padding:6px 10px;font-size:13px}
.primary{background:var(--blue)}
.success{background:var(--green)}
.gray{background:var(--gray)}
.purple{background:var(--purple)}

table{
    width:100%;
    border-collapse:collapse;
}

th,td{
    padding:11px;
    border-bottom:1px solid var(--border);
    text-align:left;
    vertical-align:top;
}

th{background:#f8fafc}

.badge{
    display:inline-block;
    border-radius:999px;
    padding:4px 9px;
    font-size:12px;
    background:#e2e8f0;
    color:#0f172a;
}

.badge.azul{background:#dbeafe;color:#1d4ed8}
.badge.rascunho{background:#e5e7eb}
.badge.aguardando,
.badge.aguardando-conferência-do-inspetor{background:#fef3c7;color:#92400e}
.badge.liberado-para-envio,
.badge.mensagem-enviada,
.badge.respondido,
.badge.conferido-pelo-inspetor,
.badge.resolvido{background:#dcfce7;color:#166534}
.badge.erro-de-envio,
.badge.sem-resposta,
.badge.não-justificado{background:#fee2e2;color:#991b1b}

.call-row{
    display:grid;
    grid-template-columns:1.3fr 180px 1fr;
    gap:12px;
    align-items:center;
    border-bottom:1px solid var(--border);
    padding:12px 0;
}

.login{
    width:100%;
    display:grid;
    place-items:center;
}

.login-card{
    width:min(100%,430px);
}

.alert{
    background:#fef2f2;
    color:#991b1b;
    border-radius:10px;
    padding:12px;
    margin:10px 0;
}

.success-box{
    background:#dcfce7;
    color:#166534;
}

.inline{
    display:flex;
    gap:8px;
    align-items:center;
}

.inline-form{
    display:grid;
    grid-template-columns:minmax(160px,1fr) minmax(120px,1fr) minmax(120px,1fr) minmax(140px,1fr) auto;
    gap:8px;
    align-items:end;
    min-width:720px;
}

.inline-form input,
.inline-form select{
    margin-top:0;
}

/* ---- Stats cards ---- */
.stats-row{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
    gap:14px;
    margin-bottom:20px;
}

.stat-card{
    background:#fff;
    border:1px solid #e2e8f0;
    border-radius:16px;
    padding:20px;
    text-align:center;
    box-shadow:0 2px 6px rgba(0,0,0,.03);
}

.stat-label{
    display:block;
    font-size:13px;
    font-weight:600;
    color:#64748b;
    text-transform:uppercase;
    letter-spacing:.04em;
    margin-bottom:6px;
}

.stat-value{
    display:block;
    font-size:36px;
    font-weight:800;
    color:#0f172a;
    line-height:1;
}

.stat-warning .stat-value{color:#d97706}
.stat-success .stat-value{color:#16a34a}
.stat-danger .stat-value{color:#dc2626}

/* ---- Card header ---- */
.card-header{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:16px;
    margin-bottom:16px;
    flex-wrap:wrap;
}

.card-header h2{
    margin:0;
    font-size:20px;
}

.card-desc{
    color:#64748b;
    margin:4px 0 0;
    font-size:14px;
}

/* ---- Form row ---- */
.form-row{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
    gap:14px;
    align-items:end;
}

.form-group{
    margin:0;
    font-weight:600;
}

.form-group label{
    margin:0 0 4px;
    font-size:13px;
}

.form-group input,
.form-group select{
    margin-top:0;
}

.check-label{
    display:flex;
    align-items:center;
    gap:8px;
    margin:0;
    padding:10px 0;
    font-weight:600;
    cursor:pointer;
}

.check-label input{
    width:auto;
    margin:0;
}

/* ---- Student grid ---- */
.student-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
    gap:10px;
    margin-top:16px;
    max-height:380px;
    overflow-y:auto;
    padding:4px;
}

.student-card{
    display:flex;
    align-items:flex-start;
    gap:10px;
    border:1px solid #e2e8f0;
    border-radius:12px;
    padding:12px;
    margin:0;
    background:#fafbfc;
    cursor:pointer;
    transition:border-color .12s,background .12s;
}

.student-card:hover{
    border-color:#93c5fd;
    background:#eff6ff;
}

.student-card input{
    width:auto;
    margin-top:3px;
    flex:0 0 auto;
}

.student-info{
    display:block;
}

.student-info strong{
    display:block;
    font-size:14px;
}

.student-info small{
    display:block;
    color:#64748b;
    font-size:12px;
    margin-top:2px;
}

.student-info .resp-name{
    font-size:11px;
    color:#94a3b8;
    margin-top:4px;
}

/* ---- Empty box ---- */
.empty-box{
    text-align:center;
    border:1px dashed #cbd5e1;
    border-radius:14px;
    padding:32px 16px;
    color:#64748b;
    margin:16px 0;
}

.empty-box p{
    margin:4px 0;
}

/* ---- Form footer ---- */
.form-footer{
    display:flex;
    gap:10px;
    margin-top:18px;
    flex-wrap:wrap;
}

/* ---- Table wrap ---- */
.table-wrap{
    width:100%;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
}

.table-wrap table{
    min-width:600px;
}

/* ---- Inline update ---- */
.inline-update{
    display:flex;
    gap:6px;
    flex-wrap:wrap;
    align-items:center;
}

.inline-update input,.inline-update select{
    margin:0;
    font-size:12px;
}

.s-small{
    font-size:12px!important;
    padding:4px 8px!important;
    min-height:30px;
}

/* ---- Hint extend ---- */
.hint{
    color:#64748b;
    font-size:13px;
    margin:2px 0;
}

/* ---- Responsivo ---- */
@media (max-width:800px){
    .sidebar{
        position:static;
        width:auto;
    }

    .main--with-sidebar,
    .main--guest{
        margin-left:0;
    }

    .top{
        min-height:auto;
        padding:16px;
        display:block;
    }

    .content,
    .content--guest{
        padding:14px;
    }

    .page-head{
        flex-direction:column;
    }

    .stats-row{
        grid-template-columns:repeat(2,1fr);
    }

    .card-header{
        flex-direction:column;
        align-items:flex-start;
    }

    .student-grid{
        grid-template-columns:1fr;
    }

    .call-row{
        grid-template-columns:1fr;
    }

    .inline-form{
        min-width:0;
        grid-template-columns:1fr;
    }

    .inline-update{
        flex-direction:column;
        align-items:stretch;
    }

    table{
        display:block;
        overflow:auto;
    }
}
