/* Mortuarius School — style.css */
/* ══════════════════════════════════════════════════════════════
   VARIÁVEIS & RESET
══════════════════════════════════════════════════════════════ */
:root {
  --bg-void:     #06080c;
  --bg-deep:     #090c14;
  --bg-surface:  #0f1520;
  --bg-raised:   #161d2c;
  --bg-card:     #1c2538;
  --bg-modal:    #111827;
  --border-dim:  #21304a;
  --border-mid:  #2e4260;
  --border-glow: #3d5a7a;
  --gold:        #c49a6c;
  --gold-dim:    rgba(196,154,108,.15);
  --silver:      #92adc6;
  --bone:        #d8ccba;
  --ash:         #6e88a0;
  --red:         #d03a52;
  --red-dim:     rgba(208,58,82,.12);
  --crimson:     #7a2030;
  --success:     #58b878;
  --warning:     #d4a03a;
  --info:        #5a8fc0;
  --text-1:      #e4dbd0;
  --text-2:      #90a8be;
  --text-3:      #506070;
  --text-4:      #2c3e52;
  --font-d:      'Outfit', sans-serif;
  --font-b:      'DM Sans', sans-serif;
  --font-m:      'DM Mono', monospace;
  --hh:          64px;
  --sw:          248px;
  --r:           8px;
  --r-sm:        5px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:16px}
body{
  background:var(--bg-void);
  color:var(--text-1);
  font-family:var(--font-b);
  font-size:1rem;
  line-height:1.65;
  min-height:100vh;
  display:flex;
  flex-direction:column;
  overflow-x:hidden;
}
body::before{
  content:'';
  position:fixed;inset:0;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.022'/%3E%3C/svg%3E");
  pointer-events:none;z-index:9999;
}

/* ══════════════════════════════════════════════════════════════
   UTILITÁRIOS
══════════════════════════════════════════════════════════════ */
.badge{display:inline-block;padding:.18rem .55rem;font-size:.72rem;font-weight:600;border-radius:20px;border:1px solid}
.badge-green {color:var(--success);border-color:rgba(88,184,120,.35);background:rgba(88,184,120,.08)}
.badge-yellow{color:var(--warning);border-color:rgba(212,160,58,.35);background:rgba(212,160,58,.08)}
.badge-red   {color:var(--red);border-color:rgba(208,58,82,.35);background:var(--red-dim)}
.badge-blue  {color:var(--info);border-color:rgba(90,143,192,.35);background:rgba(90,143,192,.08)}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.45rem;
  padding:.55rem 1.1rem;
  border-radius:var(--r-sm);
  font-family:var(--font-d);font-size:.88rem;font-weight:600;letter-spacing:.02em;
  cursor:pointer;transition:all .2s;border:1px solid transparent;white-space:nowrap;
}
.btn-primary{background:var(--bg-raised);border-color:var(--border-glow);color:var(--bone)}
.btn-primary:hover{background:var(--bg-card);border-color:var(--silver);box-shadow:0 0 14px rgba(61,90,122,.3)}
.btn-ghost{background:transparent;border-color:var(--border-mid);color:var(--text-2)}
.btn-ghost:hover{background:var(--bg-raised);color:var(--text-1)}
.btn-danger{background:transparent;border-color:rgba(208,58,82,.45);color:var(--red)}
.btn-danger:hover{background:var(--crimson);color:#fff;border-color:var(--crimson)}
.btn-success{background:rgba(88,184,120,.12);border-color:rgba(88,184,120,.45);color:var(--success)}
.btn-success:hover{background:rgba(88,184,120,.22);box-shadow:0 0 12px rgba(88,184,120,.2)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn svg{width:15px;height:15px;flex-shrink:0}

@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeSlide{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:translateX(0)}}
@keyframes dropDown{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
@keyframes spin{to{transform:rotate(360deg)}}

.spin{animation:spin .8s linear infinite;display:inline-block}

/* ══════════════════════════════════════════════════════════════
   HEADER
══════════════════════════════════════════════════════════════ */
header{
  position:sticky;top:0;z-index:200;
  height:var(--hh);
  background:#0a0b0e;
  border-bottom:1px solid var(--border-dim);
  box-shadow:0 2px 20px rgba(0,0,0,.55);
}
.hdr{
  max-width:1440px;
  margin:0 auto;
  padding:0 1.25rem;
  height:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  flex-wrap:nowrap;
  box-sizing:border-box;
  width:100%;
  overflow:hidden;
}
.logo-a{
  display:flex;
  align-items:center;
  gap:.7rem;
  text-decoration:none;
  flex-shrink:0;
}
.hdr-r{
  display:flex;
  align-items:center;
  gap:.6rem;
  margin-left:auto;
  flex-shrink:0;
  flex-wrap:nowrap;
}
.logo-icon{width:142px;height:42px;flex-shrink:0}
.logo-icon svg{width:100%;height:100%;filter:drop-shadow(0 0 6px rgba(196,154,108,.45))}
.logo-img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 6px rgba(196,154,108,.45))}
.logo-text{display:flex;flex-direction:column;line-height:1.2}
.logo-name{font-family:var(--font-d);font-size:1.05rem;font-weight:700;letter-spacing:.04em;color:var(--bone)}
.logo-sub{font-family:var(--font-m);font-size:.65rem;letter-spacing:.07em;color:var(--ash)}
.hdr-r{display:flex;align-items:center;gap:.6rem}

/* Saudação */
#greeting-bar{
  display:none;font-size:.9rem;color:var(--text-2);
  white-space:nowrap;animation:fadeSlide .5s ease;
  max-width:220px;overflow:hidden;text-overflow:ellipsis;
}
#greeting-bar strong{font-weight:600;color:var(--bone)}

/* Tag matrícula ativa */
#tag-matricula{
  display:none;align-items:center;gap:.35rem;
  padding:.25rem .7rem;
  background:var(--gold-dim);border:1px solid rgba(196,154,108,.3);
  border-radius:20px;
  font-family:var(--font-m);font-size:.7rem;color:var(--gold);
  white-space:nowrap;animation:fadeIn .4s ease;cursor:pointer;
}
#tag-matricula:hover{background:rgba(196,154,108,.22)}
#tag-matricula svg{width:12px;height:12px}

/* Hambúrguer */
#btn-menu{
  display:none;width:40px;height:40px;
  align-items:center;justify-content:center;
  background:transparent;border:1px solid var(--border-mid);
  border-radius:var(--r-sm);cursor:pointer;color:var(--silver);
  transition:all .2s;flex-shrink:0;
}
#btn-menu:hover{background:var(--bg-raised);border-color:var(--border-glow)}

/* Btn login/logout */
#btn-login{padding:.45rem .9rem;font-size:.88rem}
#btn-logout{display:none}

/* Dropdown login */
.login-wrap{position:relative}
#login-dropdown{
  display:none;position:fixed;
  width:min(330px,94vw);
  background:var(--bg-modal);
  border:1px solid var(--border-mid);border-radius:var(--r);
  box-shadow:0 20px 50px rgba(0,0,0,.7),0 0 0 1px rgba(61,90,122,.1);
  padding:1.35rem;z-index:9999;
  animation:dropDown .2s ease;
  max-height:calc(100vh - var(--hh) - 1rem);
  overflow-y:auto;
}
#login-dropdown::before{
  content:'';position:absolute;top:-6px;right:18px;
  width:10px;height:10px;
  background:var(--bg-modal);
  border-left:1px solid var(--border-mid);border-top:1px solid var(--border-mid);
  transform:rotate(45deg);
}
/* Mobile: login vira modal centralizado */
.login-overlay{display:none!important}

.dd-title{
  font-family:var(--font-d);font-size:.85rem;font-weight:700;
  color:var(--ash);letter-spacing:.06em;text-transform:uppercase;
  margin-bottom:1rem;padding-bottom:.6rem;border-bottom:1px solid var(--border-dim);
}

/* Passo matrícula dentro do dropdown */
#step-matricula{display:none}
.mat-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}
.mat-item{
  display:flex;align-items:center;justify-content:space-between;
  padding:.7rem .9rem;
  background:var(--bg-surface);border:1px solid var(--border-dim);
  border-radius:var(--r-sm);cursor:pointer;transition:all .2s;
}
.mat-item:hover,.mat-item.selected{border-color:var(--gold);background:var(--gold-dim)}
.mat-item-info strong{display:block;font-size:.9rem;font-weight:600;color:var(--bone)}
.mat-item-info span{font-size:.78rem;color:var(--text-3);font-family:var(--font-m)}
.mat-item-badge{}


/* ══════════════════════════════════════════════════════════════
   FORMULÁRIOS GENÉRICOS
══════════════════════════════════════════════════════════════ */
.form-group{margin-bottom:.9rem}
.form-group label{
  display:block;font-size:.82rem;font-weight:500;
  color:var(--text-2);margin-bottom:.35rem;
}
.form-group input,.form-group select,.form-group textarea{
  width:100%;
  background:var(--bg-surface);
  border:1px solid var(--border-dim);border-radius:var(--r-sm);
  color:var(--text-1);
  font-family:var(--font-b);font-size:.95rem;
  padding:.6rem .85rem;outline:none;
  transition:border-color .2s,box-shadow .2s;
}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{
  border-color:var(--border-glow);
  box-shadow:0 0 0 3px rgba(61,90,122,.18);
}
.form-group input::placeholder{color:var(--text-4)}
.form-group input.error{border-color:var(--red);box-shadow:0 0 0 3px var(--red-dim)}
.form-group input.ok{border-color:rgba(88,184,120,.5)}
.field-err{font-size:.75rem;color:var(--red);margin-top:.25rem;display:none}
.field-err.show{display:block}
.form-hint{font-size:.75rem;color:var(--text-3);margin-top:.25rem}

.form-row{display:grid;gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}

#login-msg{
  font-size:.82rem;font-weight:500;
  text-align:center;min-height:1.3em;
  margin-bottom:.7rem;color:var(--red);
}
#login-msg.ok{color:var(--success)}

/* ══════════════════════════════════════════════════════════════
   MODAL GENÉRICO
══════════════════════════════════════════════════════════════ */
.modal-backdrop{
  display:none;position:fixed;inset:0;
  background:rgba(0,0,0,.6);z-index:500;
  align-items:center;justify-content:center;padding:1rem;
}
.modal-backdrop.open{display:flex;animation:fadeIn .2s ease}
@media(max-width:940px){
  .modal-backdrop.open{z-index:9990}
}
.modal{
  background:var(--bg-modal);
  border:1px solid var(--border-mid);border-radius:var(--r);
  width:100%;max-width:560px;max-height:90vh;
  display:flex;flex-direction:column;
  box-shadow:0 30px 80px rgba(0,0,0,.8);
  animation:dropDown .25s ease;
}
.modal-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:1.1rem 1.35rem;
  border-bottom:1px solid var(--border-dim);flex-shrink:0;
}
.modal-title{font-family:var(--font-d);font-size:1.05rem;font-weight:700;color:var(--bone)}
.modal-close{
  width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  background:transparent;border:1px solid var(--border-dim);border-radius:var(--r-sm);
  cursor:pointer;color:var(--text-3);transition:all .2s;
}
.modal-close:hover{color:var(--text-1);border-color:var(--border-mid)}
.modal-body{padding:1.35rem;overflow-y:auto}
.modal-footer{
  display:flex;justify-content:flex-end;gap:.6rem;
  padding:1rem 1.35rem;
  border-top:1px solid var(--border-dim);flex-shrink:0;
}

/* Abas no modal Meus Dados */
.tabs{display:flex;gap:2px;margin-bottom:1.25rem;background:var(--bg-surface);border-radius:var(--r-sm);padding:3px}
.tab-btn{
  flex:1;padding:.5rem;
  background:transparent;border:none;border-radius:4px;
  color:var(--text-3);font-family:var(--font-d);font-size:.85rem;font-weight:500;
  cursor:pointer;transition:all .2s;
}
.tab-btn.active{background:var(--bg-raised);color:var(--bone);font-weight:600}

.tab-panel{display:none}
.tab-panel.active{display:block}

.msg-inline{
  padding:.65rem .9rem;border-radius:var(--r-sm);
  font-size:.85rem;font-weight:500;margin-bottom:1rem;display:none;
}
.msg-inline.show{display:block}
.msg-inline.error{background:var(--red-dim);border:1px solid rgba(208,58,82,.3);color:var(--red)}
.msg-inline.success{background:rgba(88,184,120,.1);border:1px solid rgba(88,184,120,.3);color:var(--success)}

/* ══════════════════════════════════════════════════════════════
   LAYOUT PRINCIPAL
══════════════════════════════════════════════════════════════ */
.page-wrap{
  flex:1;max-width:1440px;width:100%;
  margin:0 auto;padding:1.75rem 1.25rem;
  display:grid;grid-template-columns:var(--sw) 1fr;gap:1.75rem;
  position:relative;z-index:2;
}

/* ══════════════════════════════════════════════════════════════
   SIDEBAR
══════════════════════════════════════════════════════════════ */
#sidebar-overlay{
  display:none;position:fixed;inset:0;
  background:rgba(0,0,0,.72);z-index:249;
}
aside.sidebar{
  position:sticky;top:calc(var(--hh) + 1rem);align-self:start;
  max-height:calc(100vh - var(--hh) - 2rem);
  overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border-mid) transparent;
}
.sidebar-section{margin-bottom:1.5rem}
/* ── BOTÃO LOJA VIRTUAL ──────────────────────────────── */
.btn-loja{
  display:flex;align-items:center;gap:.7rem;
  margin:0 .5rem 1.25rem;
  padding:.75rem 1rem;
  background:linear-gradient(135deg,rgba(196,154,108,.18) 0%,rgba(196,154,108,.08) 100%);
  border:1px solid rgba(196,154,108,.45);
  border-radius:var(--r);
  color:var(--gold);
  font-family:var(--font-d);font-size:.88rem;font-weight:700;letter-spacing:.03em;
  text-decoration:none;
  cursor:pointer;
  position:relative;overflow:hidden;
  transition:all .25s;
}
.btn-loja:hover{
  background:linear-gradient(135deg,rgba(196,154,108,.28) 0%,rgba(196,154,108,.14) 100%);
  border-color:rgba(196,154,108,.75);
  box-shadow:0 0 18px rgba(196,154,108,.25),inset 0 0 12px rgba(196,154,108,.06);
  color:var(--bone);
  transform:translateY(-1px);
}
.btn-loja::before{
  content:'';position:absolute;top:0;left:-100%;width:60%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(196,154,108,.15),transparent);
  transition:left .5s ease;
}
.btn-loja:hover::before{left:150%}
.btn-loja-icon{
  width:34px;height:34px;flex-shrink:0;
  background:rgba(196,154,108,.15);border:1px solid rgba(196,154,108,.3);
  border-radius:var(--r-sm);
  display:flex;align-items:center;justify-content:center;
}
.btn-loja-icon svg{width:17px;height:17px}
.btn-loja-text{display:flex;flex-direction:column;line-height:1.2}
.btn-loja-text span{font-size:.66rem;font-weight:400;color:var(--ash);letter-spacing:.04em;text-transform:uppercase;font-family:var(--font-m)}
.btn-loja-arrow{margin-left:auto;opacity:.5;font-size:.9rem;transition:transform .2s}
.btn-loja:hover .btn-loja-arrow{transform:translateX(3px);opacity:1}
#btn-loja-wrap{display:none}

.sidebar-label{
  font-family:var(--font-m);font-size:.65rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--text-3);
  padding:0 .75rem .45rem;
  border-bottom:1px solid var(--border-dim);margin-bottom:.3rem;
}
nav ul{list-style:none}
nav ul li{margin:1px 0}
nav ul li a{
  display:flex;align-items:center;gap:.65rem;
  padding:.62rem .75rem;
  text-decoration:none;color:var(--text-2);
  font-size:.93rem;font-weight:400;
  border-radius:var(--r-sm);border-left:2px solid transparent;
  transition:all .18s;
}
nav ul li a:hover{color:var(--text-1);background:rgba(255,255,255,.04);border-left-color:var(--border-glow)}
nav ul li a.active{color:var(--bone);background:rgba(196,154,108,.09);border-left-color:var(--gold);font-weight:500}
nav ul li a svg{width:16px;height:16px;opacity:.75;flex-shrink:0;transition:opacity .18s}
@media(max-width:940px){nav ul li a svg{opacity:.85}}
nav ul li a:hover svg,nav ul li a.active svg{opacity:1}

/* ══════════════════════════════════════════════════════════════
   MAIN / SEÇÕES
══════════════════════════════════════════════════════════════ */
main{min-width:0}
.page-section{display:none}
.page-section.active{display:block;animation:fadeIn .35s ease}

.section-header{
  margin-bottom:1.4rem;padding-bottom:.8rem;
  border-bottom:1px solid var(--border-dim);
  display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;
}
.section-header-left{}
.section-title{font-family:var(--font-d);font-size:1.45rem;font-weight:700;color:var(--bone)}
.section-sub{font-size:.875rem;color:var(--text-2);margin-top:.15rem}

/* ── Cards ── */
.cards-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
  gap:1rem;margin-bottom:1.5rem;
}
.cards-grid-contato{
  grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
}
.card{
  background:var(--bg-surface);border:1px solid var(--border-dim);
  border-radius:var(--r);padding:1.1rem 1.15rem;
  position:relative;overflow:hidden;transition:border-color .2s,transform .2s;
}
.card::after{
  content:'';position:absolute;bottom:0;left:0;
  width:100%;height:2px;background:var(--gold);
  transform:scaleX(0);transform-origin:left;transition:transform .25s;
}
.card:hover{border-color:var(--border-glow);transform:translateY(-2px)}
.card:hover::after{transform:scaleX(1)}
.card-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-2);margin-bottom:.3rem}
.card-value{font-family:var(--font-d);font-size:2rem;font-weight:800;color:var(--bone);line-height:1}
.card-detail{font-size:.8rem;color:var(--text-3);margin-top:.3rem}

/* ── Tabela ── */
.table-wrap{
  overflow-x:auto;border:1px solid var(--border-dim);
  border-radius:var(--r);background:var(--bg-surface);
  -webkit-overflow-scrolling:touch;
}
table{width:100%;border-collapse:collapse;font-size:.9rem;min-width:460px}
thead tr{background:var(--bg-raised);border-bottom:1px solid var(--border-mid)}
th{
  font-size:.73rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;
  color:var(--ash);padding:.8rem 1rem;text-align:left;white-space:nowrap;
}
td{padding:.72rem 1rem;color:var(--text-2);border-bottom:1px solid var(--border-dim);font-size:.9rem}
tr:last-child td{border-bottom:none}
tr:hover td{background:rgba(255,255,255,.02);color:var(--text-1)}

/* ── Locked ── */
.locked-msg{
  display:flex;flex-direction:column;align-items:center;
  justify-content:center;padding:4rem 2rem;text-align:center;gap:.85rem;
}
.locked-msg svg{width:42px;height:42px;opacity:.22;color:var(--text-3)}
.locked-msg p{font-size:.9rem;color:var(--text-3)}

/* ── Comunicados ── */
.announce{
  background:var(--bg-surface);border:1px solid var(--border-dim);
  border-left:3px solid var(--gold);border-radius:var(--r);
  padding:.95rem 1.1rem;margin-bottom:.8rem;transition:border-color .2s;
}
.announce:hover{border-color:var(--border-glow);border-left-color:var(--gold)}
.announce-date{font-family:var(--font-m);font-size:.7rem;color:var(--gold);margin-bottom:.18rem;letter-spacing:.04em}
.announce-title{font-family:var(--font-d);font-size:1rem;font-weight:600;color:var(--bone)}
.announce-body{font-size:.87rem;color:var(--text-2);margin-top:.18rem;line-height:1.55}

/* ── Hero ── */
.hero{text-align:center;padding:2.5rem 1rem 2rem}
.hero-icon{width:68px;height:68px;margin:0 auto 1.1rem;opacity:.2;filter:drop-shadow(0 0 14px rgba(196,154,108,.5))}
.hero-logo-img{display:block;width:100%;max-width:min(220px,55%);height:auto;margin:0 auto 1.1rem;filter:drop-shadow(0 0 14px rgba(196,154,108,.35))}
.hero-title{font-family:var(--font-d);font-size:clamp(1.55rem,5vw,2.4rem);font-weight:800;letter-spacing:.02em;color:var(--bone);margin-bottom:.35rem}
.hero-tagline{font-size:.97rem;color:var(--text-2);margin-bottom:1.25rem}
.hero-desc{font-size:.93rem;color:var(--text-2);max-width:460px;margin:0 auto;line-height:1.6}
.divider{
  display:flex;align-items:center;gap:.75rem;
  margin:1.4rem 0;color:var(--text-4);
  font-family:var(--font-m);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;
}
.divider::before,.divider::after{content:'';flex:1;height:1px;background:var(--border-dim)}

/* ══════════════════════════════════════════════════════════════
   DADOS DO ALUNO (seção)
══════════════════════════════════════════════════════════════ */
.dados-grid{display:grid;grid-template-columns:1fr 1fr;gap:.85rem}
.dados-col-full{grid-column:1/-1}

/* ══════════════════════════════════════════════════════════════
   FOOTER
══════════════════════════════════════════════════════════════ */
footer{
  background:var(--bg-deep);border-top:1px solid var(--border-dim);
  position:relative;z-index:2;margin-top:auto;
}
.footer-inner{
  max-width:1440px;margin:0 auto;
  padding:2rem 1.25rem 1.4rem;
  display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2rem;
}
.footer-brand p{font-size:.85rem;color:var(--text-3);margin-top:.4rem;line-height:1.6}
.footer-col h4{
  font-size:.72rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;
  color:var(--ash);margin-bottom:.6rem;padding-bottom:.4rem;border-bottom:1px solid var(--border-dim);
}
.footer-col p,.footer-col address{font-size:.85rem;color:var(--text-3);font-style:normal;line-height:1.8}
.footer-col a{color:var(--text-3);text-decoration:none;transition:color .2s}
.footer-col a:hover{color:var(--bone)}
.footer-bottom{
  max-width:1440px;margin:0 auto;
  padding:.9rem 1.25rem;border-top:1px solid var(--border-dim);
  display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;
}
.footer-bottom p{font-family:var(--font-m);font-size:.67rem;color:var(--text-4)}

/* ══════════════════════════════════════════════════════════════
   SCROLLBAR
══════════════════════════════════════════════════════════════ */
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-mid);border-radius:3px}

/* ══════════════════════════════════════════════════════════════
   LOADING dots
══════════════════════════════════════════════════════════════ */
.loading-dots::after{content:'...';animation:dots 1.2s steps(4,end) infinite}
@keyframes dots{0%,25%{content:'.'}50%{content:'..'}75%,100%{content:'...'}}

/* ══════════════════════════════════════════════════════════════
   RESPONSIVO — TABLET ≤940px
══════════════════════════════════════════════════════════════ */
@media(max-width:940px){
  :root{--sw:240px}
  .page-wrap{grid-template-columns:1fr;padding:1.25rem 1rem;position:static}
  aside.sidebar{
    position:fixed;top:var(--hh);left:0;bottom:0;
    width:var(--sw);max-height:none;
    background:var(--bg-deep);border-right:1px solid var(--border-mid);
    z-index:250;padding:1.25rem .75rem;
    transform:translateX(-110%);transition:transform .28s ease;
    overflow-y:scroll;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;
  }
  aside.sidebar.open{transform:translateX(0)}
  #sidebar-overlay.open{display:block}
  #btn-menu{display:flex}
  .logo-sub{display:none}
  .footer-inner{grid-template-columns:1fr 1fr;gap:1.5rem}
}

/* ══════════════════════════════════════════════════════════════
   RESPONSIVO — MOBILE ≤600px
══════════════════════════════════════════════════════════════ */
@media(max-width:600px){
  :root{--hh:58px}
  .logo-text{display:none}
  #greeting-bar{font-size:.82rem;max-width:100px}
  #tag-matricula{display:none!important}
  .hdr{display:flex;flex-wrap:nowrap;align-items:center;justify-content:space-between;padding:0 .75rem;gap:.5rem;width:100%;box-sizing:border-box}
  .logo-a{flex-shrink:0;max-width:120px}
  .logo-icon{width:120px;height:36px;flex-shrink:0}
  .hdr-r{display:flex;flex-wrap:nowrap;align-items:center;flex-shrink:0;gap:.4rem;margin-left:auto}
  .login-wrap{flex-shrink:0;display:flex;align-items:center}
  #btn-login{padding:.4rem .7rem;font-size:.82rem;flex-shrink:0;white-space:nowrap}
  #btn-login .btn-lbl{display:inline}
  #btn-logout{padding:.38rem .6rem;font-size:.78rem;flex-shrink:0}
  #btn-menu{flex-shrink:0}
  header{overflow:visible}
  .section-title{font-size:1.2rem}
  .cards-grid{grid-template-columns:1fr 1fr}
  .card-value{font-size:1.65rem}
  .dados-grid{grid-template-columns:1fr}
  .dados-col-full{grid-column:1}
  .hero{padding:1.8rem .5rem 1.4rem}
  .hero-title{font-size:1.45rem}
  .hero-tagline{font-size:.88rem}
  .form-row{grid-template-columns:1fr}
  .footer-inner{grid-template-columns:1fr}
  .footer-bottom{flex-direction:column;text-align:center;gap:.4rem}
  .modal{max-height:95vh}
  th,td{padding:.6rem .75rem;font-size:.82rem}
}
  /* ══════════════════════════════════════════════════════════════
   MODAL BUSCA ALUNO
══════════════════════════════════════════════════════════════ */
#modal-busca-aluno .modal{max-width:540px}
.busca-aluno-input-wrap{display:flex;gap:.5rem;margin-bottom:1rem}
.busca-aluno-input-wrap input{flex:1}
#busca-aluno-lista{max-height:320px;overflow-y:auto;display:flex;flex-direction:column;gap:.4rem}
.busca-aluno-item{
  display:flex;align-items:center;justify-content:space-between;
  padding:.65rem .9rem;
  background:var(--bg-surface);border:1px solid var(--border-dim);
  border-radius:var(--r-sm);cursor:pointer;transition:all .18s;
}
.busca-aluno-item:hover{border-color:var(--gold);background:var(--gold-dim)}
.busca-aluno-item-nome{font-size:.93rem;font-weight:500;color:var(--bone)}
.busca-aluno-item-ra{font-size:.75rem;color:var(--text-3);font-family:var(--font-m)}
#busca-aluno-vazio{font-size:.88rem;color:var(--text-3);text-align:center;padding:1.5rem 0;display:none}
#busca-aluno-loading{font-size:.88rem;color:var(--text-3);text-align:center;padding:1rem 0;display:none}
/* ── Calendário de Estágios ─────────────────────── */
.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem}
.cal-mes-titulo{font-size:1.15rem;font-weight:700;color:var(--bone);letter-spacing:.02em}
.cal-btn{background:none;border:1px solid var(--border-dim);color:var(--bone);border-radius:var(--r-sm);padding:.35rem .75rem;cursor:pointer;font-size:1rem;transition:all .18s}
.cal-btn:hover{border-color:var(--gold);color:var(--gold)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.cal-header-dia{text-align:center;font-size:.72rem;font-weight:700;color:var(--text-3);padding:.4rem 0;text-transform:uppercase;letter-spacing:.05em}
.cal-dia{min-height:90px;background:var(--bg-surface);border:1px solid var(--border-dim);border-radius:var(--r-sm);padding:.3rem .35rem;cursor:pointer;transition:all .18s;display:flex;flex-direction:column;gap:2px}
.cal-dia:hover{border-color:var(--gold);background:var(--bg-card)}
.cal-dia.outro-mes{opacity:.3;cursor:default;pointer-events:none}
.cal-dia.hoje{border-color:var(--gold)!important;background:rgba(197,160,71,.07)}
.cal-num{font-size:.78rem;font-weight:600;color:var(--text-2);margin-bottom:2px}
.cal-dia.hoje .cal-num{color:var(--gold)}

.cal-chip{font-size:.68rem;color:var(--bone,#e8e0d0);border-radius:3px;padding:2px 5px;white-space:nowrap;overflow:hidden;max-width:100%;line-height:1.4;display:flex;align-items:center;justify-content:space-between;gap:4px;position:relative;background:transparent;cursor:default;font-weight:500}
.cal-chip .chip-bg{position:absolute;top:0;bottom:0;border-radius:3px;z-index:0;pointer-events:none}
.cal-chip .chip-content{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%}
.cal-regia{position:relative;height:14px;margin-bottom:2px;flex-shrink:0}
.cal-regia-linha{position:absolute;bottom:0;left:0;right:0;height:0.5px;background:var(--border-dim,rgba(255,255,255,.1))}
.cal-regia-lbl{position:absolute;bottom:2px;font-size:9px;color:var(--text-3,rgba(255,255,255,.35));line-height:1;pointer-events:none}
.cal-regia-lbl.ini{left:0}
.cal-regia-lbl.mid{left:50%;transform:translateX(-50%)}
.cal-regia-lbl.fim{right:0}
.cal-regia-tick{position:absolute;bottom:-1px;width:0.5px;background:var(--border-dim,rgba(255,255,255,.15));height:4px}
.cal-regia-tick.ini{left:0}
.cal-regia-tick.mid{left:50%}
.cal-regia-tick.fim{right:0}
#modal-cal-dia .modal{max-width:540px}
.cal-aluno-item{background:var(--bg-surface);border:1px solid var(--border-dim);border-radius:var(--r-sm);padding:.65rem .9rem;margin-bottom:.5rem}
.cal-aluno-nome{font-weight:600;color:var(--bone);font-size:.93rem}
.cal-aluno-info{font-size:.78rem;color:var(--text-3);margin-top:.2rem;line-height:1.5}
.cal-aluno-btns{display:flex;gap:.5rem;margin-top:.5rem;flex-wrap:wrap}
.cal-aluno-email-status{font-size:.72rem;margin-top:.25rem}
.cal-aluno-email-status.ok{color:#4caf50}
.cal-aluno-email-status.pend{color:#ff9800}
@media(max-width:600px){
  .cal-dia{min-height:60px;padding:.25rem .25rem}
  .cal-chip{font-size:.62rem;padding:1px 3px}
  .cal-regia-lbl{font-size:8px}
  .cal-header-dia{font-size:.62rem;padding:.25rem 0}
  .cal-num{font-size:.72rem}
  .cal-aluno-btns{flex-direction:column;gap:.4rem}
  .cal-aluno-btns .btn{width:100%;justify-content:center;text-align:center}
  #sec-agendamento-estagio > div,#sec-meus-estagios > div,#sec-lista-chamada > div{max-width:100%!important}
  #sec-agendamento-estagio .btn,#sec-meus-estagios .btn,#sec-lista-chamada .btn{width:100%;justify-content:center}
  .modal{width:95vw!important;max-width:95vw!important;margin:auto}
  .modal-body{padding:.75rem}
  #sc-motivo{min-height:100px}
  #modal-solicitar-cancel .btn,#modal-confirma-cancel .btn,#modal-confirma-email .btn{width:100%;justify-content:center}
}
/* ── Leads CRM ──────────────────────────────────────────── */
.leads-toolbar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-bottom:1rem}
.leads-toolbar input,.leads-toolbar select{flex:1;min-width:120px;max-width:200px}
.leads-grid{display:grid;gap:.5rem}
.lead-card{background:var(--bg-surface);border:1px solid var(--border-dim);border-radius:var(--r-sm);
  padding:.75rem 1rem;cursor:pointer;transition:all .18s;display:grid;
  grid-template-columns:1fr auto;gap:.25rem .75rem;align-items:start}
.lead-card:hover{border-color:var(--gold);background:var(--bg-card)}
.lead-card.retorno-hoje{border-left:3px solid #c5a047}
.lead-card.status-matriculado{border-left:3px solid #4caf50}
.lead-card.status-descartado{opacity:.5}
.lead-nome{font-weight:600;color:var(--bone);font-size:.95rem}
.lead-info{font-size:.78rem;color:var(--text-3);margin-top:.15rem}
.lead-badge{font-size:.68rem;padding:2px 8px;border-radius:20px;font-weight:600;white-space:nowrap;align-self:start}
.badge-novo{background:rgba(100,149,237,.2);color:#6495ed}
.badge-retorno{background:rgba(255,100,100,.2);color:#ff6464}
.badge-negociando{background:rgba(197,160,71,.2);color:#c5a047}
.badge-matriculado{background:rgba(76,175,80,.2);color:#4caf50}
.badge-descartado{background:rgba(150,150,150,.2);color:#999}
.lead-retorno{font-size:.72rem;color:#ff9800;margin-top:.2rem}
.alerta-leads{background:rgba(197,160,71,.12);border:1px solid rgba(197,160,71,.4);
  border-radius:var(--r-sm);padding:.65rem 1rem;margin-bottom:1rem;
  display:flex;align-items:center;gap:.6rem;font-size:.85rem;color:var(--gold);cursor:pointer}
#modal-lead .modal{max-width:580px}
#modal-contatos .modal{max-width:560px}
.contato-item{background:var(--bg-surface);border-left:2px solid var(--border-mid);
  border-radius:0 var(--r-sm) var(--r-sm) 0;padding:.6rem .9rem;margin-bottom:.5rem}
.contato-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap}
.contato-data{font-size:.72rem;color:var(--text-3)}
.contato-user{font-size:.72rem;color:var(--gold)}
.contato-desc{font-size:.83rem;color:var(--bone);margin-top:.35rem;line-height:1.5}
.contato-status{font-size:.7rem;color:var(--text-3);margin-top:.25rem}
@media(max-width:600px){
  .leads-toolbar input,.leads-toolbar select{max-width:100%;min-width:100%}
  .lead-card{grid-template-columns:1fr}
}
/* ── Matrícula ───────────────────────────────────────────── */
.mat-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.mat-form-grid .full{grid-column:1/-1}
.mat-aluno-card{background:var(--bg-surface);border:1px solid var(--gold);
  border-radius:var(--r-sm);padding:.65rem .9rem;margin-bottom:.75rem;
  display:flex;align-items:center;gap:.75rem}
.mat-aluno-nome{font-weight:600;color:var(--bone);font-size:.93rem}
.mat-aluno-info{font-size:.78rem;color:var(--text-3)}
.mat-valores{background:var(--bg-surface);border:1px solid var(--border-dim);
  border-radius:var(--r-sm);padding:.75rem 1rem;margin-top:.5rem}
.mat-valores-titulo{font-size:.8rem;font-weight:600;color:var(--text-3);
  text-transform:uppercase;letter-spacing:.06em;margin-bottom:.6rem}
.mat-val-row{display:flex;justify-content:space-between;align-items:center;
  padding:.3rem 0;border-bottom:1px solid var(--border-dim);font-size:.85rem}
.mat-val-row:last-child{border-bottom:none;padding-top:.5rem;font-weight:700;
  color:var(--bone);font-size:.95rem}
.mat-val-label{color:var(--text-3)}
.mat-val-num{color:var(--bone);font-family:monospace}
.mat-val-num.destaque{color:var(--gold);font-size:1.05rem}
.mat-list-card{background:var(--bg-surface);border:1px solid var(--border-dim);
  border-radius:var(--r-sm);padding:.65rem 1rem;cursor:pointer;transition:all .18s;
  display:grid;grid-template-columns:auto 1fr auto;gap:.25rem .75rem;align-items:center}
.mat-list-card:hover{border-color:var(--gold)}
.mat-list-id{font-size:.72rem;color:var(--text-3);font-family:monospace}
.mat-list-nome{font-weight:600;color:var(--bone);font-size:.9rem}
.mat-list-info{font-size:.75rem;color:var(--text-3)}
.mat-list-valor{font-size:.88rem;color:var(--gold);font-weight:600;text-align:right}
#modal-busca-aluno-mat .modal{max-width:520px}
#modal-sel-curso .modal{max-width:560px}
.curso-item{padding:.6rem .9rem;border:1px solid var(--border-dim);border-radius:var(--r-sm);
  cursor:pointer;transition:all .18s;margin-bottom:.35rem}
.curso-item:hover{border-color:var(--gold);background:var(--bg-card)}
.curso-item.selected{border-color:var(--gold);background:rgba(197,160,71,.1)}
.curso-nome{font-weight:600;color:var(--bone);font-size:.9rem}
.curso-info{font-size:.75rem;color:var(--text-3);margin-top:.2rem}
@media(max-width:600px){
  .mat-form-grid{grid-template-columns:1fr}
  .mat-form-grid .full{grid-column:1}
  .mat-list-card{grid-template-columns:1fr auto}
  .mat-list-id{display:none}
}
/* ── Aulas / Chamada ─────────────────────────────────────── */
.aula-card{background:var(--bg-surface);border:1px solid var(--border-dim);
  border-radius:var(--r-sm);padding:.75rem 1rem;cursor:pointer;transition:all .18s;
  display:grid;grid-template-columns:1fr auto;gap:.35rem .75rem;align-items:start}
.aula-card:hover{border-color:var(--gold)}
.aula-card.aberta{border-left:3px solid #4caf50}
.aula-card.fechada{border-left:3px solid var(--border-mid);opacity:.75}
.aula-titulo{font-weight:600;color:var(--bone);font-size:.92rem}
.aula-info{font-size:.76rem;color:var(--text-3);margin-top:.15rem}
.aula-badge{font-size:.68rem;padding:2px 8px;border-radius:20px;font-weight:600;white-space:nowrap}
.aula-badge.aberta{background:rgba(76,175,80,.2);color:#4caf50}
.aula-badge.fechada{background:rgba(150,150,150,.15);color:#999}
.chamada-grid{display:grid;gap:.4rem}
.chamada-aluno-row{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;
  border-radius:var(--r-sm);background:var(--bg-surface);border:1px solid var(--border-dim);font-size:.85rem}
.chamada-aluno-row.presente{background:rgba(76,175,80,.1);border-color:rgba(76,175,80,.4)}
.chamada-aluno-nome{flex:1;color:var(--bone);font-weight:500}
.chamada-aluno-cod{font-family:monospace;font-size:.9rem;letter-spacing:.08em;
  color:var(--gold);font-weight:700;min-width:56px;text-align:center}
.chamada-aluno-status{font-size:.72rem;padding:2px 7px;border-radius:20px;white-space:nowrap}
.chamada-aluno-status.sim{background:rgba(76,175,80,.2);color:#4caf50}
.chamada-aluno-status.nao{background:rgba(150,150,150,.12);color:var(--text-3)}
.chamada-progress{height:5px;background:var(--border-dim);border-radius:3px;margin:.5rem 0}
.chamada-progress-bar{height:100%;border-radius:3px;background:#4caf50;transition:width .5s}
.chamada-stats{display:flex;gap:1.5rem;flex-wrap:wrap;margin:.5rem 0}
.chamada-stat{text-align:center}
.chamada-stat-num{font-size:1.6rem;font-weight:700;color:var(--gold)}
.chamada-stat-label{font-size:.72rem;color:var(--text-3)}
.cp-code-input{font-size:1.4rem;letter-spacing:.3em;text-align:center;
  text-transform:uppercase;font-family:monospace;font-weight:700;padding:.6rem;width:100%;box-sizing:border-box}
@media(max-width:600px){
  .aula-card{grid-template-columns:1fr}
  .chamada-aluno-cod{min-width:44px;font-size:.78rem}
}
/* ── Modo Meeting (janela compacta 25%) ──────────────────── */
body.modo-meeting #sidebar,
body.modo-meeting .sidebar-overlay,
body.modo-meeting .aulas-col-lista,
body.modo-meeting .section-header,
body.modo-meeting #au-p-info,
body.modo-meeting .au-meet-bar,
body.modo-meeting .form-group,
body.modo-meeting #au-p-msg,
body.modo-meeting .btn-ghost,
body.modo-meeting #au-p-btn-encerrar { display:none!important }
body.modo-meeting header { height:36px!important; min-height:36px }
body.modo-meeting .hdr .logo-icon { width:70px!important; height:22px!important }
body.modo-meeting #greeting-bar { font-size:.7rem!important }
body.modo-meeting .page-wrap { padding-top:36px }
body.modo-meeting .aulas-layout { grid-template-columns:1fr!important }
body.modo-meeting .au-painel-box { border-radius:0;border:none;padding:.6rem;background:var(--bg-base) }
body.modo-meeting .chamada-stat-num { font-size:1.2rem }
body.modo-meeting .chamada-stat-label { font-size:.65rem }
body.modo-meeting .chamada-aluno-row { padding:.3rem .5rem;font-size:.78rem }
body.modo-meeting .chamada-aluno-cod { min-width:44px;font-size:.78rem }
body.modo-meeting #au-p-titulo { font-size:.88rem;margin-bottom:.2rem }
body.modo-meeting .chamada-progress { margin:.3rem 0 }
body.modo-meeting #au-p-lista { max-height:calc(100vh - 200px)!important }
/* Botão sair do modo meeting */
#btn-sair-meeting {
  display:none;position:fixed;bottom:.75rem;left:50%;transform:translateX(-50%);
  background:#c62828;color:#fff;border:none;border-radius:var(--r-sm);
  padding:.45rem 1rem;font-size:.8rem;font-weight:600;cursor:pointer;
  z-index:9999;white-space:nowrap;box-shadow:0 2px 8px rgba(0,0,0,.4)
}
body.modo-meeting #btn-sair-meeting { display:block }
/* ── Troca de Senha ─────────────────────────────────────── */
.senha-strength{height:4px;border-radius:2px;margin-top:4px;transition:all .3s;background:var(--border-dim)}
.senha-strength.fraca{background:#f44336;width:33%}
.senha-strength.media{background:#ff9800;width:66%}
.senha-strength.forte{background:#4caf50;width:100%}
.senha-strength-label{font-size:.72rem;margin-top:2px}
/* ── Header mobile pós-login ────────────────────────────── */
@media(max-width:940px){
  /* Esconde elementos desnecessários no mobile logado */
  body.logado #greeting-bar { display:none !important; }
  body.logado #tag-matricula { display:none !important; }
  body.logado #btn-alterar-senha { display:none !important; }
  body.logado #btn-instalar-pwa { display:none !important; }
  /* btn-menu sempre visível */
  #btn-menu { display:flex !important; flex-shrink:0; }
  /* Nome mobile */
  #hdr-nome-mobile {
    display:none;
    font-size:.78rem;color:var(--text-2);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    max-width:90px;
  }
  body.logado #hdr-nome-mobile { display:block; }
}
/* ── Login dropdown mobile ──────────────────────────────── */
@media(max-width:600px){
  #login-dropdown{
    position:fixed !important;
    top:var(--hh) !important;
    left:0 !important;
    right:0 !important;
    transform:none !important;
    width:100% !important;
    max-width:100% !important;
    max-height:calc(100vh - var(--hh)) !important;
    overflow-y:auto !important;
    z-index:9999 !important;
    border-radius:0 !important;
    border-top:2px solid var(--gold) !important;
  }
  #login-dropdown::before{ display:none !important; }
}
/* ── Comunicados ────────────────────────────────────────── */
.com-check{display:flex;align-items:center;gap:.35rem;font-size:.85rem;color:var(--text-2);cursor:pointer;background:var(--bg-surface);border:1px solid var(--border-dim);border-radius:20px;padding:.3rem .7rem}
.com-check input{cursor:pointer}
.com-turma-item{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--text-2);cursor:pointer;padding:.2rem}
.com-card{background:var(--bg-surface);border:1px solid var(--border-dim);border-radius:var(--r-sm);padding:.75rem 1rem;cursor:pointer;transition:all .18s}
.com-card:hover{border-color:var(--gold)}
.com-card-titulo{font-weight:600;color:var(--bone);font-size:.92rem}
.com-card-info{font-size:.74rem;color:var(--text-3);margin-top:.15rem}
.com-card-badge{font-size:.66rem;padding:1px 7px;border-radius:20px;font-weight:600}
.com-card-badge.A{background:rgba(76,175,80,.2);color:#4caf50}
.com-card-badge.I{background:rgba(150,150,150,.15);color:#999}
