/* ── RESET & VARS ── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --moss:#1a2e1a;--moss2:#2d4a2d;--moss3:#3d5c3d;
  --amber:#d4a843;--amber2:#e8c06a;
  --cream:#f5f0e8;--paper:#faf8f4;
  --ink:#1c1c1c;--muted:#6b6b5e;--border:#ddd8cc;
  --red:#c0392b;--blue:#2b5fc0;--green:#1e7a3c;--orange:#c06a2b;--purple:#7b2bc0;
  --shadow:rgba(26,46,26,.13);
  --danger:#e74c3c;--warn:#f39c12;--ok:#27ae60;
}
body{font-family:'Inter',sans-serif;background:var(--paper);color:var(--ink);min-height:100vh}

/* ── SCREENS ── */
.screen{display:none;min-height:100vh}
#loginScreen.active{display:flex;align-items:center;justify-content:center}
#appScreen.active{display:block}
#adminScreen.active{display:flex;flex-direction:column}
#docViewScreen.active{display:block}
#registerScreen.active{display:flex;align-items:center;justify-content:center}
#joinScreen.active{display:flex;align-items:center;justify-content:center}

/* ── LOGIN / REGISTER ── */
#loginScreen,#registerScreen,#joinScreen{
  background:linear-gradient(135deg,var(--moss) 0%,var(--moss3) 60%,#4a6e4a 100%);
  min-height:100vh;padding:2rem;
}
.auth-box{
  background:#fff;border-radius:20px;padding:2.8rem 2.4rem;
  width:min(440px,100%);box-shadow:0 24px 80px rgba(0,0,0,.3);text-align:center;
}
.login-logo{font-family:'Playfair Display',serif;font-size:2rem;font-weight:700;color:var(--moss);margin-bottom:.2rem}
.login-logo span{color:var(--amber)}
.login-sub{color:var(--muted);font-size:.88rem;margin-bottom:1.8rem}
.auth-links{margin-top:1.2rem;font-size:.82rem;color:var(--muted)}
.auth-links a{color:var(--moss);font-weight:600;cursor:pointer;text-decoration:none}
.auth-links a:hover{text-decoration:underline}
.inp{width:100%;border:1.5px solid var(--border);border-radius:8px;padding:.65rem .9rem;font-family:'Inter',sans-serif;font-size:.9rem;color:var(--ink);background:var(--paper);outline:none;transition:border-color .15s;margin-bottom:.8rem}
.inp:focus{border-color:var(--moss)}
.btn-primary{width:100%;background:var(--moss);color:#fff;border:none;border-radius:10px;padding:.8rem;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .2s,transform .15s}
.btn-primary:hover{background:var(--moss2);transform:translateY(-1px)}
.inp-label{display:block;text-align:left;font-size:.78rem;font-weight:600;color:var(--moss);margin-bottom:.3rem;text-transform:uppercase;letter-spacing:.4px}
.inp-wrap{margin-bottom:.9rem;text-align:left}
.pending-badge{background:#fff3cd;border:1px solid #ffc107;border-radius:10px;padding:.9rem 1rem;font-size:.85rem;color:#856404;margin-bottom:1.2rem;text-align:left}
.pending-badge strong{display:block;margin-bottom:.2rem}

/* ── CODE JOIN BOX ── */
.code-display{background:var(--cream);border:2px dashed var(--border);border-radius:12px;padding:1.2rem;margin-bottom:1rem;text-align:center}
.code-display .code-val{font-size:2rem;font-weight:700;letter-spacing:.5rem;color:var(--moss);font-family:monospace}
.code-display small{font-size:.75rem;color:var(--muted);display:block;margin-top:.3rem}

/* ── HEADER ── */
.app-header{background:var(--moss);height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 1.8rem;position:sticky;top:0;z-index:100;box-shadow:0 2px 16px var(--shadow)}
.logo{font-family:'Playfair Display',serif;font-size:1.45rem;font-weight:700;color:var(--amber);text-decoration:none;cursor:pointer}
.logo span{color:#fff;font-weight:400}
.header-right{display:flex;align-items:center;gap:.8rem}
.user-pill{background:rgba(255,255,255,.12);border-radius:99px;padding:.35rem .9rem;font-size:.8rem;color:#ccc;display:flex;align-items:center;gap:.5rem}
.role-badge{background:var(--amber);color:var(--moss);border-radius:99px;padding:.1rem .55rem;font-size:.7rem;font-weight:700;text-transform:uppercase}
.btn-sm{background:var(--amber);color:var(--moss);border:none;border-radius:7px;padding:.4rem .9rem;font-size:.82rem;font-weight:600;cursor:pointer;transition:background .15s,transform .15s;display:flex;align-items:center;gap:.4rem}
.btn-sm:hover{background:var(--amber2);transform:translateY(-1px)}
.btn-ghost{background:rgba(255,255,255,.1);color:#ddd}
.btn-ghost:hover{background:rgba(255,255,255,.2);transform:none}

/* ── APP LAYOUT ── */
.app-body{max-width:1280px;margin:0 auto;padding:1.8rem 1.5rem;display:grid;grid-template-columns:260px 1fr;gap:1.8rem}
@media(max-width:900px){.app-body{grid-template-columns:1fr}.sidebar{display:none}}

/* ── SIDEBAR ── */
.sidebar{display:flex;flex-direction:column;gap:1rem}
.side-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:1.2rem;overflow:hidden}
.side-card h3{font-family:'Playfair Display',serif;font-size:.95rem;color:var(--moss);margin-bottom:.9rem;padding-bottom:.5rem;border-bottom:2px solid var(--amber);display:inline-block}
.turma-list{display:flex;flex-direction:column;gap:.2rem}
.turma-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem .7rem;border-radius:8px;cursor:pointer;color:var(--ink);font-size:.875rem;transition:background .15s}
.turma-item:hover{background:var(--cream)}
.turma-item.active-turma{background:var(--moss);color:#fff}
.turma-item.active-turma .t-count{background:var(--amber);color:var(--moss)}
.t-dot{width:10px;height:10px;border-radius:50%;background:var(--amber);flex-shrink:0}
.t-name{flex:1;margin-left:.55rem;font-weight:500}
.t-count{background:var(--moss);color:#fff;font-size:.7rem;font-weight:600;border-radius:99px;padding:.1rem .5rem}
.t-del{opacity:0;border:none;background:#e74c3c;color:#fff;cursor:pointer;font-size:.72rem;padding:.2rem .4rem;border-radius:5px;line-height:1;flex-shrink:0;transition:opacity .15s,background .15s}
.turma-item:hover .t-del{opacity:1}
.t-del:hover{background:#c0392b !important}
.btn-add-turma{width:100%;margin-top:.7rem;background:none;border:1.5px dashed var(--border);border-radius:8px;padding:.5rem;font-size:.82rem;color:var(--muted);cursor:pointer;transition:all .15s}
.btn-add-turma:hover{border-color:var(--moss);color:var(--moss)}
.chip{display:inline-block;background:var(--cream);border:1px solid var(--border);color:var(--muted);font-size:.75rem;padding:.2rem .6rem;border-radius:99px;cursor:pointer;transition:all .15s}
.chip:hover{background:var(--moss);color:#fff;border-color:var(--moss)}
.chip.active-chip{background:var(--moss);color:#fff;border-color:var(--moss)}
.flex-row{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.4rem}

/* ── TURMA HERO ── */
.turma-header{background:linear-gradient(135deg,var(--moss),var(--moss3));border-radius:14px;padding:1.6rem 1.8rem;color:#fff;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;position:relative;overflow:hidden}
.turma-header::before{content:'';position:absolute;right:-30px;top:-30px;width:160px;height:160px;border-radius:50%;background:rgba(255,255,255,.05);pointer-events:none}
.th-left h2{font-family:'Playfair Display',serif;font-size:1.6rem;font-weight:700;color:#fff}
.th-left p{color:#a8c0a8;font-size:.88rem;margin-top:.2rem}
.th-stats{display:flex;gap:1.5rem}
.th-stat{text-align:center}
.th-stat strong{display:block;font-size:1.4rem;font-weight:700;color:var(--amber)}
.th-stat span{font-size:.72rem;color:#a8c0a8;text-transform:uppercase;letter-spacing:.4px}
.turma-code-pill{background:rgba(255,255,255,.15);border-radius:99px;padding:.3rem .9rem;font-size:.82rem;display:flex;align-items:center;gap:.5rem;cursor:pointer;transition:background .15s}
.turma-code-pill:hover{background:rgba(255,255,255,.25)}
.turma-code-pill .code{font-weight:700;letter-spacing:.15rem;font-family:monospace;color:var(--amber)}

/* ── SEARCH ── */
.search-row{display:flex;gap:.7rem;align-items:center;flex-wrap:wrap}
.search-wrap{flex:1;position:relative;min-width:200px}
.search-wrap input{width:100%;border:1.5px solid var(--border);border-radius:9px;padding:.6rem .9rem .6rem 2.4rem;font-family:'Inter',sans-serif;font-size:.875rem;outline:none;transition:border-color .15s;background:#fff}
.search-wrap input:focus{border-color:var(--moss)}
.search-wrap .si{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--muted);font-size:.9rem;pointer-events:none}
.filter-sel{border:1.5px solid var(--border);border-radius:9px;padding:.6rem .9rem;font-family:'Inter',sans-serif;font-size:.875rem;background:#fff;outline:none;cursor:pointer}

/* ── DOC GRID ── */
.sec-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:.9rem}
.sec-title h3{font-family:'Playfair Display',serif;font-size:1.15rem;color:var(--ink)}
.doc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem}
.doc-card{background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden;cursor:pointer;transition:box-shadow .2s,transform .2s;position:relative}
.doc-card:hover{box-shadow:0 8px 28px var(--shadow);transform:translateY(-3px)}
.doc-thumb{height:96px;display:flex;align-items:center;justify-content:center;font-size:2.6rem;position:relative}
.doc-thumb.pdf{background:linear-gradient(135deg,#fde8e8,#fac5c5)}
.doc-thumb.docx{background:linear-gradient(135deg,#e8f0fe,#bcd1fa)}
.doc-thumb.pptx{background:linear-gradient(135deg,#fff0e8,#fdd0b0)}
.doc-thumb.xlsx{background:linear-gradient(135deg,#e8fdf0,#b0f0c8)}
.doc-thumb.txt{background:linear-gradient(135deg,#f5f5f5,#e0e0e0)}
.doc-thumb.img{background:linear-gradient(135deg,#fef0fa,#f5c8ef)}
.doc-thumb.other{background:linear-gradient(135deg,#f0f0ff,#d8d8fa)}
.ext-badge{position:absolute;top:7px;right:7px;background:rgba(255,255,255,.88);border-radius:4px;font-size:.62rem;font-weight:700;padding:2px 6px;text-transform:uppercase;letter-spacing:.5px}
.ext-badge.pdf{color:var(--red)}.ext-badge.docx{color:var(--blue)}.ext-badge.pptx{color:var(--orange)}.ext-badge.xlsx{color:var(--green)}.ext-badge.txt{color:#555}.ext-badge.img{color:var(--purple)}
.deadline-ribbon{position:absolute;top:7px;left:7px;border-radius:5px;font-size:.65rem;font-weight:700;padding:2px 8px}
.deadline-ribbon.late{background:#e74c3c;color:#fff}
.deadline-ribbon.soon{background:#f39c12;color:#fff}
.deadline-ribbon.ok{background:#27ae60;color:#fff}
.doc-info{padding:.85rem}
.doc-info h4{font-size:.875rem;font-weight:600;margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-meta{font-size:.74rem;color:var(--muted);display:flex;justify-content:space-between;margin-bottom:.45rem}
.deadline-label{font-size:.72rem;font-weight:500;display:block;margin-bottom:.4rem}
.deadline-label.late{color:var(--danger)}.deadline-label.soon{color:var(--warn)}.deadline-label.ok{color:var(--ok)}
.doc-cat{display:inline-block;background:var(--cream);color:var(--moss);font-size:.68rem;font-weight:600;padding:.15rem .6rem;border-radius:99px;text-transform:uppercase;letter-spacing:.4px}
.doc-actions{display:flex;gap:.35rem;padding:.6rem .85rem .7rem;border-top:1px solid var(--border);justify-content:flex-end}
.act-btn{background:var(--moss);color:#fff;border:none;border-radius:6px;padding:.3rem .75rem;cursor:pointer;font-size:.75rem;font-weight:600;transition:background .15s;display:flex;align-items:center;gap:.3rem}
.act-btn:hover{background:var(--moss2)}
.act-btn.del{background:#e74c3c}.act-btn.del:hover{background:#c0392b}
.act-btn.view{background:var(--blue)}.act-btn.view:hover{background:#1a4da8}
.act-btn.edit-dl{background:var(--orange)}.act-btn.edit-dl:hover{background:#a0521a}
.empty-state{text-align:center;padding:3rem 1rem;color:var(--muted);grid-column:1/-1}
.empty-state .ei{font-size:3.2rem;margin-bottom:.8rem}

/* ── DOC VIEW SCREEN ── */
#docViewScreen{background:var(--paper)}
.docview-header{background:var(--moss);padding:1rem 1.8rem;display:flex;align-items:center;gap:1rem;position:sticky;top:0;z-index:50}
.docview-back{background:rgba(255,255,255,.15);border:none;color:#fff;border-radius:7px;padding:.4rem .9rem;cursor:pointer;font-size:.85rem;font-weight:600;transition:background .15s}
.docview-back:hover{background:rgba(255,255,255,.25)}
.docview-title{font-family:'Playfair Display',serif;color:#fff;font-size:1.2rem;font-weight:600}
.docview-body{max-width:800px;margin:2rem auto;padding:0 1.5rem 3rem}
.docview-card{background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 4px 24px var(--shadow)}
.docview-thumb{height:160px;display:flex;align-items:center;justify-content:center;font-size:4rem;position:relative}
.docview-content{padding:2rem}
.docview-content h2{font-family:'Playfair Display',serif;font-size:1.6rem;margin-bottom:1rem;color:var(--ink)}
.meta-row{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1.2rem}
.meta-chip{background:var(--cream);border:1px solid var(--border);border-radius:8px;padding:.4rem .8rem;font-size:.8rem;color:var(--muted);display:flex;flex-direction:column;gap:.1rem}
.meta-chip strong{color:var(--ink);font-size:.85rem}
.deadline-box{border-radius:10px;padding:1rem 1.2rem;margin-bottom:1.2rem;display:flex;align-items:center;gap:.8rem}
.deadline-box.late{background:#fde8e8;border:1px solid #fac5c5}
.deadline-box.soon{background:#fff8e1;border:1px solid #ffe082}
.deadline-box.ok{background:#e8fdf0;border:1px solid #b0f0c8}
.deadline-box.none{background:var(--cream);border:1px solid var(--border)}
.deadline-box .di{font-size:1.6rem}
.deadline-box .dt{font-size:.9rem;font-weight:600}
.deadline-box .dt.late{color:var(--danger)}.deadline-box .dt.soon{color:#b8860b}.deadline-box .dt.ok{color:var(--green)}
.desc-block{background:var(--paper);border-radius:10px;padding:1rem 1.2rem;font-size:.9rem;color:var(--muted);line-height:1.6;margin-bottom:1.4rem}
.docview-actions{display:flex;gap:.8rem;flex-wrap:wrap}
.btn-download{background:var(--moss);color:#fff;border:none;border-radius:10px;padding:.75rem 1.4rem;font-size:.9rem;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:background .15s}
.btn-download:hover{background:var(--moss2)}
.btn-download.sec{background:var(--blue)}.btn-download.sec:hover{background:#1a4da8}
.btn-download.warn{background:var(--orange)}.btn-download.warn:hover{background:#a0521a}

/* ── ADMIN ── */
.admin-header{background:var(--moss);height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 1.8rem;box-shadow:0 2px 16px var(--shadow)}
.admin-body{max-width:1150px;margin:0 auto;padding:2rem 1.5rem;flex:1}
.admin-tabs{display:flex;gap:.5rem;margin-bottom:1.8rem;border-bottom:2px solid var(--border)}
.admin-tab{padding:.6rem 1.2rem;border:none;background:none;font-family:'Inter',sans-serif;font-size:.88rem;font-weight:500;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;transition:all .15s}
.admin-tab.active{color:var(--moss);border-bottom-color:var(--amber);font-weight:600}
.admin-panel{display:none}.admin-panel.active{display:block}
.admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.2rem;margin-top:1rem}
.a-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:1.3rem}
.a-card h4{font-weight:600;margin-bottom:.3rem;display:flex;align-items:center;gap:.5rem}
.a-card p{font-size:.82rem;color:var(--muted);margin-bottom:.9rem}
.a-card-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.table-wrap{background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-top:1rem}
table{width:100%;border-collapse:collapse}
th{background:var(--cream);padding:.7rem 1rem;text-align:left;font-size:.78rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
td{padding:.75rem 1rem;border-top:1px solid var(--border);font-size:.875rem;vertical-align:middle}
tr:hover td{background:#fdfcfa}
.badge{display:inline-flex;align-items:center;gap:.3rem;border-radius:99px;padding:.2rem .7rem;font-size:.72rem;font-weight:600}
.badge.admin{background:#fde8e8;color:var(--red)}
.badge.professor{background:#e8f4fd;color:var(--blue)}
.badge.aluno{background:#e8fdf0;color:var(--green)}
.badge.pendente{background:#fff8e1;color:#b8860b}

/* ── MODALS ── */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.52);z-index:200;align-items:center;justify-content:center;padding:1rem}
.modal-overlay.open{display:flex}
.modal{background:#fff;border-radius:16px;width:min(560px,100%);max-height:90vh;overflow-y:auto;padding:2rem;box-shadow:0 20px 60px rgba(0,0,0,.28);animation:slideUp .2s ease}
@keyframes slideUp{from{transform:translateY(24px);opacity:0}to{transform:translateY(0);opacity:1}}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.4rem}
.modal-head h2{font-family:'Playfair Display',serif;font-size:1.3rem;color:var(--moss)}
.x-btn{background:none;border:none;font-size:1.3rem;cursor:pointer;color:var(--muted);padding:.2rem}
.x-btn:hover{color:var(--ink)}
.form-group{margin-bottom:1rem}
.form-group label{display:block;font-size:.78rem;font-weight:600;color:var(--moss);margin-bottom:.35rem;text-transform:uppercase;letter-spacing:.4px}
.drop-zone{border:2px dashed var(--border);border-radius:10px;padding:1.8rem;text-align:center;cursor:pointer;transition:all .2s;background:var(--paper)}
.drop-zone:hover,.drop-zone.drag{border-color:var(--moss);background:var(--cream)}
.drop-zone p{color:var(--muted);font-size:.85rem;margin-top:.4rem}
.modal-actions{display:flex;gap:.7rem;justify-content:flex-end;margin-top:1.4rem}
.btn-cancel{background:none;border:1.5px solid var(--border);border-radius:8px;padding:.55rem 1.2rem;cursor:pointer;font-size:.875rem;color:var(--muted);transition:all .15s}
.btn-cancel:hover{border-color:var(--moss);color:var(--moss)}
.btn-save{background:var(--moss);color:#fff;border:none;border-radius:8px;padding:.55rem 1.4rem;font-size:.875rem;font-weight:600;cursor:pointer;transition:background .15s}
.btn-save:hover{background:var(--moss2)}

/* ── TOAST ── */
.toast{position:fixed;bottom:1.5rem;right:1.5rem;background:var(--moss);color:#fff;padding:.8rem 1.4rem;border-radius:10px;font-size:.875rem;box-shadow:0 4px 20px rgba(0,0,0,.22);transform:translateY(80px);opacity:0;transition:all .3s;z-index:400}
.toast.show{transform:translateY(0);opacity:1}
.toast.warn{background:#e67e22}.toast.err{background:#c0392b}

/* ── MISC ── */
.text-muted{color:var(--muted);font-size:.85rem}
hr.sep{border:none;border-top:1px solid var(--border);margin:1rem 0}
.join-turma-banner{background:linear-gradient(135deg,var(--moss),var(--moss3));border-radius:14px;padding:2rem;color:#fff;text-align:center;margin-bottom:1rem}
.join-turma-banner h3{font-family:'Playfair Display',serif;font-size:1.3rem;margin-bottom:.5rem}
.join-turma-banner p{color:#a8c0a8;font-size:.88rem;margin-bottom:1.2rem}
.btn-join-turma{background:var(--amber);color:var(--moss);border:none;border-radius:10px;padding:.7rem 1.6rem;font-size:.92rem;font-weight:700;cursor:pointer;transition:background .15s}
.btn-join-turma:hover{background:var(--amber2)}

/* ── ESQUECI A SENHA ── */
#forgotScreen.active{display:flex;align-items:center;justify-content:center}
#forgotScreen{background:linear-gradient(135deg,var(--moss) 0%,var(--moss3) 60%,#4a6e4a 100%);min-height:100vh;padding:2rem}

/* ── BOTÃO DE TEMA ── */
#themeToggle{position:fixed;bottom:18px;right:18px;z-index:999;background:var(--moss);color:#fff;border:2px solid rgba(255,255,255,.25);border-radius:50%;width:48px;height:48px;font-size:1.25rem;cursor:pointer;box-shadow:0 4px 18px rgba(0,0,0,.3);transition:transform .15s}
#themeToggle:hover{transform:scale(1.1)}

/* ── TEMA ESCURO ── */
body.dark{
  --paper:#151915;--cream:#222922;--ink:#e9e7de;--muted:#a9a99b;
  --border:#3a4036;--shadow:rgba(0,0,0,.45);
}
body.dark .auth-box,
body.dark .side-card,
body.dark .doc-card,
body.dark .docview-card,
body.dark .a-card,
body.dark .table-wrap,
body.dark .modal{background:#1e241e;color:var(--ink)}
body.dark .search-wrap input,
body.dark .filter-sel,
body.dark .inp{background:#181d18;color:var(--ink)}
body.dark .login-logo{color:#cfe3cf}
body.dark .inp-label{color:#9fbf9f}
body.dark .auth-links a{color:var(--amber)}
body.dark .doc-info h4,body.dark .modal h2,body.dark th,body.dark td{color:var(--ink)}
body.dark .btn-cancel{background:#2a322a;color:var(--ink)}
body.dark #themeToggle{background:var(--amber);color:var(--moss);border-color:rgba(0,0,0,.2)}

/* Modo escuro: textos que usavam o verde escuro (--moss) sobre fundo escuro
   ficavam ilegíveis. Aqui eles viram um verde claro legível. (Os casos em que
   o verde é FUNDO — botões, chip ativo, turma ativa — continuam com texto
   branco e não são afetados.) */
body.dark .side-card h3,
body.dark .doc-cat,
body.dark .form-group label,
body.dark .admin-tab.active{color:#a8d8a8}
body.dark .code-display .code-val{color:#bce8bc}
body.dark .btn-add-turma:hover{color:#a8d8a8;border-color:#a8d8a8}
body.dark .btn-cancel:hover{color:#a8d8a8;border-color:#a8d8a8}
/* Verdes médios (--green) usados como texto sobre cartões escuros */
body.dark .ext-badge.xlsx,
body.dark .deadline-box .dt.ok,
body.dark .deadline-label.ok{color:#5fcf8f}

/* ════════════════════════════════════════════════════════════════════
   NOVOS COMPONENTES + POLIMENTO (moderno e clean)
   ════════════════════════════════════════════════════════════════════ */

/* Stat de atividades vencidas (número em destaque vermelho) */
.th-stat strong.stat-late{color:#ff8b7a}

/* Aba "Personalizar" do painel admin */
.perso-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.2rem;margin-top:.6rem}
.perso-card{background:var(--paper);border:1px solid var(--border);border-radius:14px;padding:1.2rem;box-shadow:0 2px 10px var(--shadow)}
.perso-card h4{font-family:'Playfair Display',serif;color:var(--moss);margin-bottom:.4rem}
.perso-hint{font-size:.8rem;color:var(--muted);line-height:1.5;margin-bottom:.9rem}
.fav-preview{width:64px;height:64px;border-radius:12px;object-fit:cover;border:1px solid var(--border);background:var(--cream);display:block;margin-bottom:.8rem}
body.dark .perso-card{background:#1e241e}
body.dark .perso-card h4{color:#a8d8a8}

/* ── Polimento geral: transições + leve elevação em cards ── */
.doc-card,.a-card,.side-card,.perso-card,.meta-chip,.btn-sm,.act-btn,.btn-primary,.btn-join-turma,.turma-item,.chip{
  transition:transform .15s ease, box-shadow .15s ease, background .15s ease, border-color .15s ease, color .15s ease;
}
.doc-card:hover{transform:translateY(-4px);box-shadow:0 10px 26px var(--shadow)}
.a-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px var(--shadow)}
.btn-primary:hover,.btn-join-turma:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(26,46,26,.25)}
.btn-sm:active,.act-btn:active,.btn-primary:active{transform:translateY(0)}

/* Inputs com foco mais suave e acessível */
.inp:focus,.search-wrap input:focus,.filter-sel:focus{box-shadow:0 0 0 3px rgba(212,168,67,.25)}

/* Barra de rolagem discreta */
*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px;border:2px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:var(--moss);background-clip:content-box}

/* Toast um pouco mais "card" */
#toast{box-shadow:0 8px 28px rgba(0,0,0,.25)}

/* Respeita quem prefere menos animação */
@media (prefers-reduced-motion: reduce){
  *{transition:none !important;animation:none !important}
}
