@charset "UTF-8";
:root{--yellow:#f2d600;--ink:#222521;--muted:#72766e;--line:#e2e5dc;--bg:#f5f6f0;--green:#236443;--red:#b84238;--radius:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,"Segoe UI",Arial,sans-serif;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}button,input,textarea,select{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #d9dcd2;border-radius:9px;padding:10px 15px;background:white;color:var(--ink);cursor:pointer;font-weight:600;white-space:nowrap;min-height:42px}button:hover,.button:hover{background:#eeeee7;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #ae9700;outline-offset:2px}button:disabled{opacity:.38;cursor:not-allowed}.primary{background:var(--yellow);border-color:var(--yellow)}.primary:hover{background:#dfc600}.secondary{background:transparent}.danger{color:var(--red);border-color:#dfb9b6}.quiet{background:transparent;color:inherit;border:0}.full{width:100%}.small{font-size:12px}.muted{color:var(--muted)}.required{color:var(--red)}.sidebar{position:fixed;inset:0 auto 0 0;width:228px;background:#20231f;color:#f5f5ef;padding:30px 20px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;gap:10px;align-items:center;font-weight:800;font-size:16px;letter-spacing:.03em}.brand small{display:block;font-weight:500;letter-spacing:.17em;font-size:9px;color:#b0b4a7;margin-top:3px}.brand-icon{display:inline-flex;justify-content:center;align-items:center;background:var(--yellow);color:#222521;border-radius:11px;width:44px;height:44px;font-weight:800;font-size:19px;flex-shrink:0}.sidebar nav{margin-top:32px;display:flex;flex-direction:column;gap:4px}.sidebar nav a{padding:11px 14px;border-radius:8px;color:#d0d4c9}.sidebar nav a:hover{background:#30362c;text-decoration:none}.sidebar nav a.active{background:var(--yellow);color:#1f241d;font-weight:700}.nav-label{font-size:9px;letter-spacing:.13em;color:#919787;padding:19px 14px 5px}.sidebar-bottom{margin-top:auto;border-top:1px solid #3c4234;padding-top:18px;display:flex;justify-content:space-between;align-items:center}.sidebar-bottom small{display:block;color:#a0a797;font-size:11px}.main{margin-left:228px}.public{min-height:100vh}.topbar{height:68px;border-bottom:1px solid var(--line);padding:0 36px;display:flex;align-items:center;justify-content:space-between;font-size:12px;background:#fafbf7}.content{padding:30px 36px 24px;max-width:1800px;margin:auto}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:25px}.eyebrow{font-size:10px;letter-spacing:.16em;font-weight:700;color:#797e6c;margin:0 0 8px}h1{font-size:32px;line-height:1.2;letter-spacing:-.035em;margin:0 0 10px;font-weight:750}h2{font-size:18px;letter-spacing:-.015em;margin:0 0 18px}h3{font-size:16px}p{margin:6px 0 16px}small{font-size:11px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:25px}.stat{border:1px solid var(--line);border-radius:var(--radius);background:white;padding:22px}.stat>span,.stat>small{display:block;color:var(--muted);font-size:12px}.stat strong{display:block;font-size:36px;font-weight:650;line-height:1.3;margin:7px 0}.stat.accent{background:#faf5c7;border-color:#eae19e}.columns{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:22px;align-items:start}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px;margin-bottom:22px;min-width:0}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.section-heading a{font-size:12px;font-weight:600}.section-heading h2{margin:0 0 12px}.day-entry{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:17px 0;border-top:1px solid #eceee6}.day-entry p{font-size:12px;margin:4px 0;color:#5c6156}.day-entry small{color:var(--muted)}.metric-row{display:flex;justify-content:space-between;gap:15px;padding:12px 0;border-top:1px solid #eff1e9}.metric-row strong{background:#f1f3e8;border-radius:5px;padding:0 8px}.renewal-row,.document-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-top:1px solid var(--line);gap:15px}.renewal-row small,.document-row small{display:block;color:var(--muted);margin-top:4px}.badge{display:inline-flex;border-radius:5px;padding:4px 8px;font-size:10px;font-weight:650;background:#f1f2e8;white-space:nowrap}.badge.green{color:var(--green);background:#e7f2e8}.notice{padding:15px 18px;border:1px solid #e7d986;background:#fff9d9;border-radius:10px;margin-bottom:20px;overflow-wrap:anywhere}.notice.success{background:#ecf5e9;border-color:#b8d6ab}.notice.error{background:#fff0ed;border-color:#e3b5ab}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid var(--line);padding:14px;border-radius:12px;margin-bottom:20px}.toolbar input,.toolbar select{width:auto;min-width:130px;margin:0;flex:1}.toolbar label{margin:0}.toolbar .checkbox input{min-width:auto;flex:none;width:auto}.inline-form,.button-group{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.inline-form{margin:0}.inline-form input,.inline-form select{width:auto;max-width:230px;margin:0}.button-group form{margin:0}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left}th{font-size:10px;text-transform:uppercase;letter-spacing:.055em;background:#fafbf6;color:#727868;font-weight:700}th,td{padding:14px;border-bottom:1px solid #e8ebe2;vertical-align:top}td{font-size:12px}td strong,td small{display:block}td small{color:var(--muted);margin-top:4px}td a{font-weight:600}.table-wrap.panel{padding:0}.empty{padding:30px 18px;text-align:center;color:var(--muted)}.pagination{display:flex;gap:24px;justify-content:center;margin:20px}.agenda-scroll{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff;max-height:76vh}.agenda-grid{min-width:1650px;table-layout:fixed}.agenda-grid th,.agenda-grid td{border-right:1px solid var(--line)}.agenda-grid th{position:sticky;top:0;z-index:3;background:#f3f5ec;text-align:center;padding:17px 8px;color:#484e3f;font-size:11px}.agenda-grid th small{display:block;font-size:10px;color:#7d8275;font-weight:500;margin-top:5px;letter-spacing:0}.agenda-grid .time-col{width:128px;position:sticky;left:0;background:#f9faf4;z-index:2}.agenda-grid thead .time-col{z-index:4}.agenda-grid .today{background:#f2d600;color:#292d1f}.agenda-grid td{padding:7px;min-height:130px;vertical-align:top}.agenda-grid .unavailable{background:#f2f3ee}.agenda-grid .today-col{background:#fffef5}.slot-heading{display:flex;justify-content:space-between;align-items:center;font-size:9px;color:#858b7b;margin:1px 4px 8px}.slot-heading a{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:#eff2e6;border-radius:6px;font-size:18px;color:#555e46}.slot-empty{display:block;padding:22px 0;text-align:center;font-size:10px;color:#a2a895}.student-card{background:white;border:1px solid #e0e5d5;border-left:3px solid #b4c694;border-radius:9px;padding:10px;margin-bottom:7px;box-shadow:0 2px 3px #29311c04}.student-card.experimental{border-left-color:#dab143;background:#fffdf3}.student-card.reposicao{border-left-color:#87afc0}.student-card.aula_extra{border-left-color:#b69bc2}.student-name{display:block;font-size:11px;font-weight:650;line-height:1.35;overflow-wrap:anywhere}.student-card>small{display:block;font-size:9px;color:#777f6c;margin:5px 0 8px}.card-bottom{display:flex;justify-content:space-between;gap:4px;align-items:center}.type-label{font-size:7px;letter-spacing:.04em;font-weight:700;color:#8c937f}.presence-form{display:flex;gap:3px;flex-shrink:0}.presence{padding:0;width:27px;height:27px;min-height:27px;border-radius:5px;font-size:10px;background:#f8f9f5;color:#858d79;border:1px solid #e1e6d7}.presence.p.selected{background:#deecd4;border-color:#8eaf75;color:#35641e}.presence.f.selected{background:#ffe3dd;border-color:#d99183;color:#a43425}.presence.clear{width:21px;border-color:transparent;background:transparent;color:#9da690}.presence-form.busy{opacity:.45;pointer-events:none}.slot-heading+ .student-card{margin-top:2px}label{display:block;font-size:12px;font-weight:600;margin-bottom:15px;color:#535b48}input,textarea,select{display:block;width:100%;padding:10px 12px;background:#fff;border:1px solid #dce1d3;border-radius:8px;color:var(--ink);margin-top:6px;min-height:42px}textarea{resize:vertical;line-height:1.6}input[readonly]{background:#f2f3ee}select{max-width:100%}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.form-layout{display:grid;grid-template-columns:minmax(0,2.5fr) minmax(260px,1fr);gap:24px;align-items:start}.form-summary{position:sticky;top:24px}.step{display:inline-flex;width:26px;height:26px;border-radius:50%;background:#f3eaa5;font-size:12px;align-items:center;justify-content:center;margin-right:10px}.hours-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.hours-grid textarea{font-size:12px}.section-nav{display:flex;gap:20px;flex-wrap:wrap;margin:0 0 24px;border-bottom:1px solid var(--line);padding:0 0 15px;font-size:12px;font-weight:600}.import-panel{border-top:4px solid #e4cb12}.upload-form{display:flex;gap:18px;align-items:end;flex-wrap:wrap}.upload-form label{flex:1;min-width:200px;margin:0}.upload-form input[type=file]{background:#f8faf3}.import-history{padding:16px 0;border-top:1px solid var(--line)}details>summary{cursor:pointer;font-weight:650;padding:4px 0;list-style-position:inside}details[open]>summary{margin-bottom:18px}details pre{font-size:11px;line-height:1.6;background:#f6f8f0;border-radius:8px;padding:16px;overflow:auto;max-height:450px;white-space:pre-wrap;word-break:break-word}dl{display:grid;grid-template-columns:1fr 1.5fr;margin:0;gap:0 12px}dt,dd{border-bottom:1px solid #edf0e5;margin:0;padding:12px 0;overflow-wrap:anywhere}dt{font-size:12px;color:var(--muted)}dd{font-size:13px}.login-card{max-width:450px;background:white;border:1px solid var(--line);border-radius:22px;padding:38px;margin:45px auto;box-shadow:0 15px 55px #48552a0a}.login-card .brand-icon{margin-bottom:24px}.login-card h1{font-size:28px}.login-card form{margin-top:28px}.narrow{max-width:660px;margin:30px auto}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}#toast{position:fixed;right:22px;bottom:22px;max-width:420px;padding:16px 22px;border-radius:10px;background:#252b20;color:white;z-index:100;box-shadow:0 6px 25px #0003}footer{color:#9ca291;text-align:center;font-size:10px;padding:24px}.checkbox{display:flex;align-items:center;gap:8px;white-space:nowrap}.checkbox input{width:auto;margin:0;min-height:0}
@media(max-width:1150px){.sidebar{width:190px;padding:24px 14px}.brand{font-size:13px}.brand-icon{width:35px;height:35px}.main{margin-left:190px}.content{padding:25px 20px}.topbar{padding:0 22px}.stats{gap:10px}.stat{padding:17px}.hours-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-layout{grid-template-columns:minmax(0,2fr) minmax(220px,1fr)}}
@media(max-width:800px){.sidebar{position:relative;inset:auto;width:100%;padding:16px 18px;display:block}.sidebar .brand{margin-bottom:14px}.sidebar nav{flex-direction:row;overflow-x:auto;white-space:nowrap;margin:0;gap:5px}.sidebar nav a{padding:8px 12px;font-size:12px}.nav-label{display:none}.sidebar-bottom{position:absolute;right:16px;top:13px;border:0;margin:0;padding:0;font-size:11px}.sidebar-bottom small{display:none}.main{margin:0}.topbar{height:46px;padding:0 18px;font-size:10px}.content{padding:22px 16px}.page-heading{align-items:flex-start}.page-heading .button-group{justify-content:flex-end}.page-heading h1{font-size:27px}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat strong{font-size:29px}.columns,.form-layout{grid-template-columns:1fr;gap:0}.form-summary{position:static}.panel{padding:20px}.form-grid{gap:0 12px}.toolbar{gap:8px}.toolbar form{width:100%}.toolbar input,.toolbar select{min-width:110px;width:100%}.toolbar .inline-form select{flex:1}.agenda-scroll{max-height:75vh}.agenda-grid{min-width:1520px}.form-summary{order:-1}.form-summary button{margin-top:12px}.section-nav{gap:12px;font-size:11px}.login-card{padding:28px;margin:24px auto}.public .topbar .muted{display:none}}
@media(max-width:450px){.form-grid{grid-template-columns:1fr}.page-heading{flex-direction:column}.hours-grid{grid-template-columns:1fr}.upload-form{display:block}.upload-form button{margin-top:14px}.panel{padding:17px}dl{grid-template-columns:1fr}dt{padding-bottom:0;border-bottom:0}dd{padding-top:3px}.stat>span{font-size:11px}.agenda-grid .time-col{width:110px}.sidebar-bottom{font-size:10px}.sidebar-bottom button{padding:7px}}
@media print{.sidebar,.topbar,footer,.toolbar,button,.button,.section-nav{display:none!important}.main{margin:0}.content{padding:0}.panel{break-inside:avoid;border:1px solid #aaa;box-shadow:none}.columns{display:block}.table-wrap{overflow:visible}.stats{grid-template-columns:repeat(4,1fr)}body{background:white;color:black}a{color:black}.agenda-scroll{max-height:none;overflow:visible}.agenda-grid{min-width:0;font-size:8px}}
/* ============================================================
   AGENDA SEMANAL COMPACTA
   ============================================================ */

.agenda-page-heading {
  margin-bottom: 12px;
}

.agenda-page-heading h1 {
  margin-bottom: 4px;
}

.agenda-page-heading p {
  margin-bottom: 0;
}

.agenda-toolbar {
  padding: 9px 10px;
  margin-bottom: 12px;
  justify-content: space-between;
}

.agenda-toolbar button,
.agenda-toolbar .button,
.agenda-toolbar input,
.agenda-toolbar select {
  min-height: 34px;
  padding: 6px 9px;
  font-size: 11px;
}


/* ------------------------------------------------------------
   GRADE PRINCIPAL
   6 colunas: segunda até sábado
   ------------------------------------------------------------ */

.compact-agenda {
  display: grid;
  grid-template-columns: repeat(6, minmax(150px, 1fr));
  gap: 7px;
  width: 100%;
  align-items: start;
}


/* ------------------------------------------------------------
   DIA
   ------------------------------------------------------------ */

.agenda-day {
  min-width: 0;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
}

.agenda-day-header {
  min-height: 45px;
  padding: 7px 8px;
  background: #f3f5ec;
  border-bottom: 1px solid var(--line);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.agenda-day-header strong {
  display: block;
  font-size: 11px;
  line-height: 1.1;
  text-transform: uppercase;
  letter-spacing: .05em;
}

.agenda-day-header span {
  display: block;
  margin-top: 3px;
  font-size: 9px;
  color: var(--muted);
}

.agenda-day-today {
  border-color: #d4bd00;
}

.agenda-day-today .agenda-day-header {
  background: var(--yellow);
  color: #292d1f;
}

.agenda-day-today .agenda-day-header span {
  color: #5d571e;
}

.agenda-day-content {
  padding: 5px;
}


/* ------------------------------------------------------------
   SALAS
   ------------------------------------------------------------ */

.agenda-room + .agenda-room {
  margin-top: 7px;
}

.agenda-room-title {
  padding: 4px 6px;
  margin-bottom: 4px;
  border-radius: 5px;
  background: #252a22;
  color: #fff;
  font-size: 9px;
  font-weight: 750;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: .06em;
}


/* ------------------------------------------------------------
   HORÁRIO
   ------------------------------------------------------------ */

.compact-slot {
  margin-bottom: 5px;
  border: 1px solid #e2e6da;
  border-radius: 7px;
  background: #fafbf7;
  overflow: hidden;
}

.compact-slot:last-child {
  margin-bottom: 0;
}

.compact-slot-header {
  min-height: 27px;
  padding: 3px 4px 3px 6px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 3px;
  background: #f0f2e9;
  border-bottom: 1px solid #e5e8de;
}

.compact-slot-header > strong {
  font-size: 9px;
  line-height: 1;
  white-space: nowrap;
}

.compact-slot-actions {
  display: flex;
  align-items: center;
  gap: 3px;
}

.compact-capacity {
  font-size: 8px;
  color: #777e6e;
  white-space: nowrap;
}

.experimental-add {
  width: 19px;
  height: 19px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border-radius: 5px;
  background: var(--yellow);
  color: #292d1f;
  font-size: 15px;
  font-weight: 700;
  line-height: 1;
}

.experimental-add:hover {
  background: #dfc600;
  text-decoration: none;
}


/* ------------------------------------------------------------
   ALUNOS
   ------------------------------------------------------------ */

.compact-students {
  padding: 3px;
}

.compact-student {
  min-width: 0;
  padding: 4px 4px 4px 6px;
  margin-bottom: 3px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 3px;
  background: #fff;
  border: 1px solid #e2e6dc;
  border-left: 3px solid #b4c694;
  border-radius: 5px;
}

.compact-student:last-child {
  margin-bottom: 0;
}

.compact-student.experimental {
  border-left-color: #dab143;
  background: #fffdf3;
}

.compact-student.reposicao {
  border-left-color: #87afc0;
}

.compact-student.aula_extra {
  border-left-color: #b69bc2;
}

.compact-student-info {
  min-width: 0;
  flex: 1;
}

.compact-student-name {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 9px;
  line-height: 1.25;
  font-weight: 700;
}

a.compact-student-name:hover {
  text-decoration: underline;
}

.compact-student-meta {
  min-width: 0;
  margin-top: 1px;
  display: flex;
  align-items: center;
  gap: 3px;
  overflow: hidden;
  color: #858b7d;
  font-size: 7px;
  line-height: 1.2;
}

.compact-student-meta > span:first-child {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.compact-type {
  flex-shrink: 0;
  padding: 1px 3px;
  border-radius: 3px;
  background: #f0f1e9;
  font-size: 6px;
  font-weight: 700;
  text-transform: uppercase;
}


/* ------------------------------------------------------------
   PRESENÇA
   Mantém a mesma estrutura do sistema atual
   ------------------------------------------------------------ */

.compact-attendance {
  flex-shrink: 0;
}

.compact-attendance .presence-form {
  gap: 2px;
}

.compact-attendance .presence {
  width: 21px;
  height: 21px;
  min-height: 21px;
  padding: 0;
  border-radius: 4px;
  font-size: 8px;
}

.compact-attendance .presence.clear {
  width: 14px;
}

.public-attendance {
  display: flex;
  gap: 2px;
}

.public-attendance .presence {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  cursor: default;
}


/* ------------------------------------------------------------
   HORÁRIO VAZIO
   ------------------------------------------------------------ */

.compact-empty {
  min-height: 28px;
  padding: 4px 3px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  flex-wrap: wrap;
  text-align: center;
  color: #9aa18e;
  font-size: 8px;
}

.compact-empty a {
  color: #726500;
  font-size: 8px;
  font-weight: 700;
}

.compact-empty a:hover {
  text-decoration: underline;
}


/* ------------------------------------------------------------
   TEXTO ABAIXO DA AGENDA
   ------------------------------------------------------------ */

.agenda-help {
  margin: 8px 2px 0;
  font-size: 9px;
}


/* ------------------------------------------------------------
   APROVEITAR MELHOR A TELA NA PÁGINA DA AGENDA
   ------------------------------------------------------------ */

@media (min-width: 1400px) {

  .compact-agenda {
    gap: 8px;
  }

  .agenda-day-content {
    padding: 6px;
  }

}


/* ------------------------------------------------------------
   NOTEBOOK / TELAS MENORES
   ------------------------------------------------------------ */

@media (max-width: 1350px) {

  .compact-agenda {
    grid-template-columns: repeat(6, minmax(145px, 1fr));
    overflow-x: auto;
    padding-bottom: 5px;
  }

}


/* ------------------------------------------------------------
   TABLET
   ------------------------------------------------------------ */

@media (max-width: 900px) {

  .compact-agenda {
    display: flex;
    overflow-x: auto;
    gap: 8px;
    scroll-snap-type: x proximity;
    padding-bottom: 8px;
  }

  .agenda-day {
    flex: 0 0 240px;
    scroll-snap-align: start;
  }

}


/* ------------------------------------------------------------
   CELULAR
   ------------------------------------------------------------ */

@media (max-width: 500px) {

  .agenda-day {
    flex-basis: 88vw;
  }

  .agenda-toolbar {
    display: block;
  }

  .agenda-toolbar .button-group {
    margin-bottom: 7px;
  }

}

/* ============================================================
   LOGO CÓDIGO KID
   ============================================================ */

.brand-logo {
  display: block;
  width: 44px;
  height: 44px;
  object-fit: contain;
  flex-shrink: 0;
}

@media (max-width: 1150px) {
  .brand-logo {
    width: 35px;
    height: 35px;
  }
}
